Cómo instalar Docbook en un sistema windows para generar documentos en html (una sóla página o varias páginas), chm, pdf y rtf (para Word).
Las presentes páginas las he creado para documentar mis progresos: cómo crear desde cero un sistema de procesado de documentos y también cómo conseguir el objetivo propuesto de obtener varios formatos. Además lo quiero en Windows y Linux y que me soporte Unicode (porque soportaré documentos en varios idiomas, no necesariamente Western European).
Resumen de pruebas en linux
El fichero Makefile funciona prácticamente sin ajustar en Ubuntu 11 64 bit, gracias a que gran parte de los comandos son linux-alike.
Es preciso tener la máquina virtual java, así que recomiendo que nos hagamos una descarga de http://java.sun.com y procedamos con la instalación.
Añadido recientemente, work in progress
He descubierto recientemen cygwin. Cygwin es un conjunto de utilidades Unix que funcionan en windows. Es una excelente idea instalarse cygwin para hacer funcionar docbook: todo resulta mucho más sencillo.
El sitio web de cygwin es http://www.cygwin.com.
Bueno, no sé muy bien lo que es, pero necesitamos un procesador de xslt. Hay varios disponibles 1), pero yo me he decantado por xsltproc.
Me he decantado por xsltproc. Puede descargarse para windows aquí. Es preciso descargar todos los paquetes, descomprimirlos y juntar todos los archivos en uno sólo: xsltproc usa iconv (que viene en otro de los paquetes) libxml (que viene en otro de los paquetes), etc. Así que me he descargado todo:
Para juntarlos todos, descomprimalos y el contenido de las carpetas “lib”, “bin”, “include” se ponen todos los archivos juntos.
Yo he creado un paquete xsltproc_todo.zip que ya lo contiene así. Hemos incluido la ruta al programa “xsltproc” en el path, de forma que al abrir una ventana de comandos, basta con escribir “xsltproc” para que se ejecute
c:\> xsltproc
Nos tiene que salir la ayuda del programa.
Esto es realmente DocBook: unas hojas de estilo que nos permiten procesar un documento DocBook (que está en xml) para obtenerlo en un formato “interesante”: pdf, chm, etc.
Las hojas de estilo se descargan del sitio web de Docbook en sourceforge, para el caso de xsltproc hay que descargar el fichero “docbook-xsl.1.74.0.zip” y descomprimirlo en el ordenador. Yo lo he extraido en c:\archivos de programa\docbook, con un par.
La primera prueba sencilla.
Hemos creado un libro muy sencillo:
<?xml version="1.0" encoding="utf-8"?> <book lang="es"> <bookinfo> <title>Mi primer documento DocBook</title> </bookinfo> <toc> </toc> <!-- Los comentarios tienen este aspecto --> <chapter> <title>Introducción</title> <para>La primera del documento y un párrafo.</para> <para>Otro párrafo de la introducción.</para> </chapter> </book>
Para generar la salida en formato html:
C:\>xsltproc --output minibook.html "C:\Archivos de programa\docbook\html\docbook.xsl" minibook.xml
Para generar la salida en formato html help de microsoft:
xsltproc --output prueba.html --stringparam use.extensions 0 /usr/share/xml/docbook/stylesheet/nwalsh5/1.73.1/htmlhelp/htmlhelp.xsl libro.xml
Obtendremos un fichero html único.
Hay que instalarse una utilidad que se llama FOP.
Esta utilidad, desarrollada por apache, puede descargarse del sitio web de apache en http://xmlgraphics.apache.org/fop/.
En concreto el fichero fop-0.95-bin.zip.
Lo he descomprimido en archivos de programa y he puesto la ruta al programa “fop.bat” en el PATH.
HACEMOS UN FICHERO BAT QUE HACE LA COMPILACION DE UN DOCUMENTO EN WINDOWS
rem rem compilar - genera el libro en varios formatos: chm, html_single, html_multi, pdf, rtf rem set document=minibook set docbook=C:\Archivos de programa\docbook set XML_CATALOG_FILES=%docbook%\catalog.xml rem rem HTML una sola pagina rem set dest_folder=html_single rem copiamos todo el contenido de la carpeta images a la carpeta rem de destino dest_folder xcopy images %dest_folder%\images /e /i /y xsltproc --output "%dest_folder%\%document%.html" "%docbook%\html\docbook.xsl" "%document%.xml" rem rem HTML multipágina rem set dest_folder=html_multi rem copiamos todo el contenido de la carpeta images a la carpeta rem de destino dest_folder xcopy images %dest_folder%\images /e /i /y xsltproc --output "%dest_folder%\%document%.html" "%docbook%\html\chunk.xsl" "%document%.xml" rem rem CHM (ayuda de microsoft) rem set dest_folder=chm rem copiamos todo el contenido de la carpeta images a la carpeta rem de destino dest_folder xcopy images %dest_folder%\images /e /i /y xsltproc --output "%dest_folder%\%document%" "%docbook%\htmlhelp\htmlhelp.xsl" "%document%.xml" REM rem REM rem RTF REM rem REM set dest_folder=rtf REM rem copiamos todo el contenido de la carpeta images a la carpeta REM rem de destino dest_folder REM xcopy images %dest_folder%\images /e /i /y REM xsltproc --output "%dest_folder%\%document%.fo" "%docbook%\fo\docbook.xsl" "%document%.xml" REM fop "%dest_folder%\%document%.fo" -rtf "%dest_folder%\%document%.rtf" rem rem PDF rem set dest_folder=pdf rem copiamos todo el contenido de la carpeta images a la carpeta rem de destino dest_folder xcopy images %dest_folder%\images /e /i /y xsltproc --output "%dest_folder%\%document%.fo" "%docbook%\fo\docbook.xsl" "%document%.xml" fop "%dest_folder%\%document%.fo" -pdf "%dest_folder%\%document%.pdf"
Al final le he dado otro cuarto de vuelta al asunto de docbook, y he hecho lo siguiente:
# # Makefile # # make clean : clean out all unnecesary, temporal files # # make book my_book=filename-without-extension: will construct the book "auditmap" # # # make book : generate all the documentation in various formats: # html single page, html multiple pages, chm, pdf # # make book_en : make the book in english # # make html_single # make html # make chm # make pdf # make rtf # : generate one specific document # # # my book's name (FILENAME WITHOUT EXTENSION) my_book ?= PUT_HERE_THE_FILENAME book_version = `cat version.txt` # options of the different programs xsltproc_options = --nonet # directories and programs tmp_dir = "tmp" xsltproc_dir = "/docbook-xsl-1.76.1" hhc = /htmlhelp/hhc.exe fop = /fop/fop.bat .PHONY: book book: chm html html_single pdf .PHONY: book_en book_en: make book my_book=PUT_HERE_THE_FILENAME_en .PHONY: chm chm: # make chm directory if don't exist if [ -d chm ] ; then true; else mkdir chm; fi; # copy the content of the gfx and images directory cp -R gfx chm cp -R images chm cp docbook.css chm xsltproc $(xsltproc_options) --output chm/ chm.xsl "$(my_book).xml" # to ignore errors, start the command with a hyphen -$(hhc) chm/htmlhelp.hhp # move the resulting file into the "version" directory if [ -d "$(book_version)" ] ; then true; else mkdir "$(book_version)"; fi; mv "chm/htmlhelp.chm" "$(book_version)/$(my_book).chm" .PHONY: pdf pdf: # make pdf directory if it don't exist if [ -d pdf ] ; then true; else mkdir pdf; fi; xsltproc $(xsltproc_options) --output "pdf/$(my_book).fo" fo.xsl "$(my_book).xml" $(fop) "pdf/$(my_book).fo" -pdf "pdf/$(my_book).pdf" # move the resulting file into the "version" directory if [ -d "$(book_version)" ] ; then true; else mkdir "$(book_version)"; fi; mv "pdf/$(my_book).pdf" "$(book_version)/$(my_book).pdf" .PHONY: rtf rtf: # make rtf directory if it don't exist if [ -d rtf ] ; then true; else mkdir rtf; fi; xsltproc $(xsltproc_options) --output "rtf/$(my_book).fo" fo.xsl "$(my_book).xml" $(fop) "rtf/$(my_book).fo" -rtf "rtf/$(my_book).rtf" # move the resulting file into the "version" directory if [ -d "$(book_version)" ] ; then true; else mkdir "$(book_version)"; fi; mv "rtf/$(my_book).rtf" "$(book_version)/$(my_book).rtf" .PHONY: html_single html_single: # make html_single directory if it don't exist if [ -d html_single ] ; then true; else mkdir html_single; fi; # copy the content of the gfx and images directory cp -R gfx html_single cp -R images html_single cp docbook.css html_single xsltproc $(xsltproc_options) --output "html_single/$(my_book).html" html_single.xsl "$(my_book).xml" # move the resulting file into the "version" directory if [ -d "$(book_version)" ] ; then true; else mkdir "$(book_version)"; fi; cp -R "html_single" "$(book_version)" .PHONY: html html: # make html directory if it don't exist if [ -d html ] ; then true; else mkdir html; fi; # copy the content of the gfx and images directory cp -R gfx html cp -R images html cp docbook.css html xsltproc $(xsltproc_options) --output "html/$(my_book).html" html.xsl "$(my_book).xml" # move the resulting file into the "version" directory if [ -d "$(book_version)" ] ; then true; else mkdir "$(book_version)"; fi; cp -R "html" "$(book_version)" clean: # to ignore errors, start the command with a hyphen -rm -f chm/* -rm -f html/* -rm -f html_single/* -rm -f pdf/* -rm -f rtf/*
xmlNotepad: bloc de notas xml de Microsoft. Puede descargarse del sitio web de descargas de microsoft http://downloads.microsoft.com
Microsoft HTML Help Compiler: compilador de ayudas de microsoft, para generar los archivos de ayuda de microsoft (*.chm).
Manual de referencia de docbook: puede descargarse de esta página web http://docbook.org/tdg5/index.html.
Hay dos ficheros: uno es el fichero “tdg5-en-0.0.20.chm” que viene en formato chm, y el otro viene en formato zip: tdg5-0.0.25.zip.
Para configurar el comportamiento de docbook es necesario definir algunos parámetros que afectan a las hojas de estilo xsl.
Yo he definido esos parámetors en varias hojas xsl que a continuación adjunto.
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl"/> <xsl:param name="generate.legalnotice.link" select="1"/> <xsl:param name="suppress.navigation" select="0"/> <xsl:param name="admon.graphics" select="1"/> <xsl:param name="admon.graphics.path">gfx/</xsl:param> <xsl:param name="html.stylesheet" select="docbook.css"/> <xsl:param name="toc.section.depth" select="4"/> <!-- Taken from http://ds9a.nl/docbook/minimal-page.html --> <xsl:param name="use.id.as.filename" select="'1'"/> <xsl:template name="system.head.content"> <link rel="stylesheet" href="docbook.css" type="text/css"/> </xsl:template> </xsl:stylesheet>
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="docbook-xsl-1.76.1/html/chunk.xsl"/> <xsl:param name="generate.legalnotice.link" select="1"/> <xsl:param name="suppress.navigation" select="0"/> <xsl:param name="admon.graphics" select="1"/> <xsl:param name="admon.graphics.path">gfx/</xsl:param> <xsl:param name="html.stylesheet" select="'docbook.css'"/> <xsl:param name="toc.section.depth" select="4"/> <!-- Taken from http://ds9a.nl/docbook/minimal-page.html --> <xsl:param name="use.id.as.filename" select="'1'"/> <xsl:template name="system.head.content"> <link rel="stylesheet" href="docbook.css" type="text/css"/> </xsl:template> </xsl:stylesheet>
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="docbook-xsl-1.76.1/html/docbook.xsl"/> <xsl:param name="html.stylesheet" select="/docbook/docbook.css"/> <xsl:param name="generate.legalnotice.link" select="1"/> <xsl:param name="suppress.navigation" select="0"/> <xsl:param name="admon.graphics" select="1"/> <xsl:param name="admon.graphics.path">gfx/</xsl:param> <xsl:param name="toc.section.depth" select="4"/> <!-- Taken from http://ds9a.nl/docbook/minimal-page.html --> <xsl:param name="use.id.as.filename" select="'1'"/> <xsl:template name="system.head.content"> <link rel="stylesheet" href="docbook.css" type="text/css"/> </xsl:template> </xsl:stylesheet>
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="docbook-xsl-1.76.1/fo/docbook.xsl"/> <xsl:param name="generate.legalnotice.link" select="1"/> <xsl:param name="suppress.navigation" select="1"/> <xsl:param name="admon.graphics" select="1"/> <xsl:param name="admon.graphics.path">gfx/</xsl:param> <xsl:param name="toc.section.depth" select="4"/> <!-- xsl:param name="ignore.image.scaling" select="0"/ --> <xsl:param name="paper.type" select="A4"/> <xsl:param name="paper.size.portrait" select="A4"/> <xsl:param name="default.image.width" select="640"/> </xsl:stylesheet>
Es muy importante ese <xsl:template name=“system.head.content”…. muchos sitios no lo indican, y sin eso, no se incluyen las hojas de estilo.
Ah!!! que no se nos olvide copiar el fichero docbook.css en el resultado html, ya que de lo contrario, los estilos no se aplicarán.
/* css 2.0 stylesheet for DocBook generated XHTML */ /* (c) 2002 e-novative GmbH. */ /* http://www.e-novative.de */ /* 01-02-2012 Changes : superman_ha_muerto at yahoo dot com - Minor changes and personalization 17-03-2003 - 21-03-2003 Changes : Bruno.Vernay at LaPoste dot net - Replaced the title background with underline (better distinguish from programlisting.) - distinguish the h2 (from chapter) and the h2 from section (div[class=section]) */ /* Note that due to different browser interpretation of the standards, the */ /* html pages still do not look exactly the same on every browser and system */ /* This css file formats the html generated by the eDE */ /* Please modify this file according to your personal preferences. */ /* In many spots, this file is not too well-documented currently. However, */ /* we will improve documentation over the time */ /* basic settings for the document body, some elements inherit from these */ body { /* foreground color = black */ color: #000; /* background-color = white */ background-color: #fff; /* center the body content in browser window */ /* Note: this is different from text-align */ /* margin depends on browser window width */ margin: auto; /* padding ("inner margin") leaves space between */ /* browser window border and html body content */ padding: 24px; /* width depends on browser window width */ width: auto; /* text-alignment */ /* alternative: left */ text-align: justify; } /* set font for most elements */ /* p: paragraphs (regular text, docbook <para>) */ /* (...) */ /* body: anything else */ body, p, td, li, dt, dd, .itemizedlist { /* set font size and line height */ /* list of fonts provides fallbacks if a font is not present */ font: 12px/18px Arial, Helvetica, Sans-Serif; } /* pararaphs (docbook: <para>) */ p { /* set font size and line height */ /* list of fonts provides fallbacks if a font is not present */ font: 12px/18px Arial, Helvetica, Sans-Serif; /* margin settings are top - right - bottom - left (think clockwise) */ margin: 0 15px 6px 15px; } /* images */ /* docbook: <imageobject> */ img { /* no margin */ margin: 0; /* no padding ("inner margin") */ padding: 0; /* no border */ border: 0; } /* emphasized text, can occur in most places */ /* docbook: <emphasis> */ em { /* bold face, higher number is more bold */ font-weight: 600; /* italic */ font-style: italic; } /* sect(ion)1 title */ h2 { /* list of fonts provides fallbacks if a font is not present */ font-family: Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */ font-size: 125%; /* bold face, higher number is more bold */ font-weight: 600; /* underlined text */ text-decoration: none; /* foreground color: dark blue */ color: #009; /* background color: gray */ /* background-color: #ddd; */ border-bottom: solid 2px; /* margin settings are top - right - bottom - left (think clockwise) */ margin: 15px 0 15px 0; /* padding ("inner margin") settings are top - right - bottom - left */ /* (think clockwise) */ padding: 12px 15px 12px 15px; } /* modif BV 14-03-2003 : permet de distinguer titre de chapitre et titre de section */ /* section title apr�s un chapitre */ div[class=section] * h2 { /* list of fonts provides fallbacks if a font is not present */ font-family: Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */ font-size: 110%; /* bold face, higher number is more bold */ font-weight: 600; /* underlined text */ text-decoration: none; /* foreground color: dark blue */ color: #00A; /* background color: gray */ /* background-color: #f0f0f0; */ border-bottom: solid 1px; /* padding ("inner margin") settings are top - right - bottom - left */ /* (think clockwise) */ padding: 0 0 0 15px; } /* sect(ion)2 title */ h3 { /* list of fonts provides fallbacks if a font is not present */ font-family: Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */ font-size: 110%; /* bold face, higher number is more bold */ font-weight: 600; /* underlined text */ text-decoration: underline; /* foreground color: dark blue */ color: #009; /* background-color is a very light grey */ /* alternative: #fff = white */ /* background-color: #fafafa; */ /* padding ("inner margin") settings are top - right - bottom - left */ /* (think clockwise) */ padding: 0 0 0 15px; } /* sect(ion)3 title */ h4 { /* list of fonts provides fallbacks if a font is not present */ font-family: Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */ font-size: 100%; /* bold face, higher number is more bold */ font-weight: 600; /* underlined text */ text-decoration: underline ; /* foreground color: dark blue */ color: #009; /* background-color is a very light grey */ /* alternative: #fff = white */ /* background-color: #fefefe; */ /* padding ("inner margin") settings are top - right - bottom - left */ /* (think clockwise) */ padding: 0 0 0 15px; } /* sect(ion)4 title */ h5 { /* list of fonts provides fallbacks if a font is not present */ font-family: Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */ font-size: 100%; /* bold face, higher number is more bold */ font-weight: 300; /* not underlined */ text-decoration: underline ; /* foreground color: dark blue */ color: #009; /* background-color is a very light grey */ /* alternative: #fff = white */ /* background-color: #fefefe; */ /* padding ("inner margin") settings are top - right - bottom - left */ /* (think clockwise) */ padding: 0 0 0 15px; } :link,:visited { text-decoration: none; } /* define special font for e-novative logo */ /* list of fonts provides fallbacks in case selected fonts are not present */ .logo { font-family: Arial, Sans-Serif; } /* the following formats refer to the docbook tags of the same name */ /* for more information, see the docbook reference at */ /* http://www.docbook.org/tdg/en/html/docbook.html */ .mediaobject { /* center */ text-align: center; } /* */ .calloutlist, .figure, .table { /* margin settings are top - right - bottom - left (think clockwise) */ margin: 15px 30px 15px 30px; } /* */ .itemizedlist, .variablelist { /* margin settings are top - right - bottom - left (think clockwise) */ margin: 15px 30px 15px 15px; } /* blockquote formatting is a little more complex */ /* because block quotes are rendered as a html table */ /* blockquote block */ .blockquote { /* override bottom margin, the other margins are inherited */ margin-bottom: 30px; } .blockquote p, .blockquote td { /* set font size and line height */ /* list of fonts provides fallbacks if a font is not present */ font: 12px/18px Arial, Helvetica, Sans-Serif; /* bold face, higher number is more bold */ font-weight: 450; } .epigraph { /* override bottom margin, the other margins are inherited */ margin-bottom: 30px; } .epigraph p, .epigraph td { /* set font size and line height */ /* list of fonts provides fallbacks if a font is not present */ font: 10px/14px Arial, Helvetica, Sans-Serif; /* bold face, higher number is more bold */ font-weight: 600; } /* custom e-novative header and footer that are displayed on all pages */ #customheader, #customfooter { /* list of fonts provides fallbacks if a font is not present */ font-family: Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */ font-size: 80%; /* line height, relative to body font size */ line-height: 200%; text-align: center; vertical-align: middle; color: #fff; background-color: #009; } /* leave more space between last paragraph and footer */ /* some browser do not add up the bottom margin of the prior element */ /* and the top margin of the footer */ #customfooter { margin-top: 15px; } /* table { margin: 0 15px 6px 15px; } */ /* title and navigation links in header and footer */ .navheader th, .navheader td, .navfooter th, .navfooter td { font-size: 11px; font-weight: 450; } /* table of contents, list of figures and list of tables */ .toc, .list-of-figures, .list-of-tables { /* margin settings are top - right - bottom - left (think clockwise) */ margin: 15px 30px 15px 15px; } /* the "headings" are rendered as paragraphs */ .toc p, .list-of-figures p, .list-of-tables p { /* no margin */ margin: 0; } .figure { /* margin settings are top - right - bottom - left (think clockwise) */ margin: 5px 5px 5px 5px; /* no padding ("inner border") */ padding: 0; /* no border */ border: 0; /* center text */ text-align: center; } /* figure title */ .figure p, .table p, .example p { font-size: 80%; } /* acronym { border-bottom: 1px dashed #00cc00; cursor: help; } */ /* admonition headings */ div.note, div.important, div.warning, div.caution, div.tip { padding: 0px 15px 0px 0px; } div.note th, div.important th, div.warning th, div.caution th, div.tip th { /* set font size and line height */ /* list of fonts provides fallbacks if a font is not present */ font: 12px/18px Arial, Helvetica, Sans-Serif; font-weight: 600; text-decoration: underline; /* left align */ text-align: left; } .note p, .important p, .warning p, .caution p, .tip p { margin: 0; } .note img, .important img, .warning img, .caution img, .tip img { margin: 0px 15px 0px 15px; } /* programlisting */ pre.programlisting { /* non-proportional font */ /* list of fonts provides fallbacks if a font is not present */ font-family: "Courier New", Courier, Monospace; /* color: black */ color: #000; /* background color: gray */ background-color: #eee; /* no margin */ margin: 0; /* gray dotted border, 1 px wide */ border: 1px dotted #ddd; /* padding ("inner margin") settings are top - right - bottom - left */ /* (think clockwise) */ padding: 6px 6px 6px 6px; } /* title page */ /* heading1 is used for document title */ h1 { /* list of fonts provides fallbacks if a font is not present */ font-family: Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */ font-size: 150%; /* bold face, higher number is more bold */ font-weight: 600; /* line height, relative to body line height */ line-height: 250%; /* center */ text-align: center; /* foreground color: dark blue */ color: #009; /* background color: gray */ background-color: #ddd; /* margin settings are top - right - bottom - left (think clockwise) */ margin: 15px 0 15px 0; /* no padding ("inner margin") */ padding: 0; } /* author on title page is formatted as h3 */ /* these settings overwrite the regular h3 settings */ h3.author { /* set font size and line height */ /* list of fonts provides fallbacks in case selected fonts are not present */ font: 12px/18px Arial, Helvetica, Sans-Serif; /* bold face, higher number is more bold */ font-weight: 600; /* do not underline */ text-decoration: none; /* center text */ text-align: center; /* color: black */ color: #000; /* background-color is a very light grey */ /* alternative: #fff = white */ background-color: #fefefe; /* margin settings are top - right - bottom - left (think clockwise) */ margin: 0 15px 15px 15px; /* no padding */ padding: 0; /* no border */ border: 0; } /* copyright and date */ .copyright, .pubdate { /* list of fonts provides fallbacks if a font is not present */ font-family: Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */ font-size: 90%; /* center */ text-align: center; /* margin settings are top - right - bottom - left (think clockwise) */ margin: 15px 15px 15px 15px; /* no padding ("inner margin") */ padding: 0; /* no border */ border: 0; } /* legal notice box */ div.legalnotice { /* list of fonts provides fallbacks if a font is not present */ font-family: Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */ font-size: 90%; /* color: black */ color: #000; /* background color: gray */ background-color: #ddd; /* margin settings are top - right - bottom - left (think clockwise) */ margin: 10px 45px 10px 45px; /* padding ("inner margin") settings are top - right - bottom - left */ /* (think clockwise) */ padding: 5px 5px 5px 5px; /* solid black border, 1px wide */ border: 1px solid #000; } /* Taken from http://ds9a.nl/docbook/minimal-page.html */ .screen { font-family: monospace; font-size: 1em; display: block; padding: 10px; border: 1px solid #bbb; background-color: #eee; color: #000; overflow: auto; border-radius: 2.5px; -moz-border-radius: 2.5px; margin: 0.5em 2em; } .programlisting { font-family: monospace; font-size: 1em; display: block; padding: 10px; border: 1px solid #bbb; background-color: #ddd; color: #000; overflow: auto; border-radius: 2.5px; -moz-border-radius: 2.5px; margin: 0.5em 2em; } .guimenu, .guimenuitem { font-family: Arial; color: #0000ff; background-color: #c3c3c3; } .guibutton, .guilabel, .guiicon { font-family: Arial; color: #0000ff; background-color: #c3c3c3; border-top: 1px solid #cfcfcf; border-left: 1px solid #cfcfcf; border-bottom: 1px solid #747474; border-right: 1px solid #747474; } .application { font-family: Arial, Helvetica, Sans-Serif; font-style: italic; } /* class="tip" */ .tip, .caution, .note, .important { outline:#c8c8c8 solid thin; margin: 20px; } .tip table, .caution table, .note table, .important table { padding: 20px; }
He compilado lo más esencial en un “starter kit” que contiene: