3. Acerca del estilo

Hasta el momento no nos hemos preocupado por la presentación de nuestro documento, solamente por el significado de las palabras en cada contexto. Sin embargo en algunas ocasiones uno desea formatear la salida impresa o en html de una determinada forma y en este momento es útil usar una hoja de estilo personalizada. Si quiere mayor información sobre este tipo de procedimiento lo remitimos a la página Customizing your stylesheet

La idea de la hoja de estilo es tener un archivo en el cual uno configura ciertos parámetros que afectan las diferentes salidas generadas a partir del archivo sgml. Supongamos que la salida html satisface las siguientes condiciones

En cuanto a la salida impresa, simplemente deseamos especificar las márgenes izquierda y derecha. A partir de dichas características creamos una hoja de estilo personalizada, a la que llamaremos custom.dsl y la cual presentamos a continuación.

<!DOCTYPE style-sheet PUBLIC
          "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!ENTITY % html "IGNORE">
<![%html;[
<!ENTITY % print "IGNORE">
<!ENTITY docbook.dsl PUBLIC
         "-//Norman Walsh//DOCUMENT DocBook HTML Stylesheet//EN"
	 CDATA dsssl>
]]>
<!ENTITY % print "INCLUDE">
<![%print;[
<!ENTITY docbook.dsl PUBLIC
         "-//Norman Walsh//DOCUMENT DocBook Print Stylesheet//EN"
	 CDATA dsssl>
]]>
]>
<style-sheet>
<style-specification id="print" use="docbook">
<style-specification-body> 

<!-- print stylesheet -->
(define %left-margin% 
  ;; Width of left margin
  4pi)

(define %left-margin% 
  ;; Width of left margin
  4pi)
</style-specification-body>
</style-specification>

<style-specification id="html" use="docbook">
<style-specification-body> 

<!-- html stylesheet-->
(define ($generate-book-lot-list$)
  ;; Which Lists of Titles should be produced for Books?
  (list (normalize "equation")))

(define %gentext-nav-use-ff%
  ;; Add "fast-forward" to the navigation links?
  #t)
(define %html-ext%
  ;; when producing HTML files, use this extension
  ".html")
(define %use-id-as-filename%
  ;; Use ID attributes as name for component HTML files?
  #t)
</style-specification-body>
</style-specification>
<external-specification id="docbook" document="docbook.dsl">
</style-sheet>

A continuación modificaremos nuestro Makefile para que la salida html se genere con la configuración que hemos pedido

#Location of the stylesheet for the html output
SINGLEDBSTYLESHEET = ldp.dsl\#html
DBSTYLESHEET = ldp.dsl\#html

por las líneas,

#Location of the stylesheet for the html output
SINGLEDBSTYLESHEET = custom.dsl\#html
DBSTYLESHEET = custom.dsl\#html

Si usamos el comando make multiple-html, y luego usamos galeon para vizualizar el html tendremos que luce de la siguiente forma.

Salida html de herramientas.sgml

Sugerencia

Si quiere generar la salida html sin necesidad de usar el Makefile basta que emplee un comando como el siguiente

openjade -t sgml -ihtml -d custom.dsl#html herramientas.sgml

Usando docbook2html basta que emplee un comando como el siguiente:

docbook2html -d custom.dsl#html herramientas.sgml

Para que la salida impresa utilice la hoja de estilo personalizada, es necesario que las variable SCRIPTPS y SCRIPTPDF dentro del Makefile sean iguales a docbook2ps -d custom.dsl#html o a docbook2pdf -d custom.dsl#html (en algunos casos esto no sirve y es necesario editar los archivo db2dvi y db2pdf).

Importante

Para una lista de los parámetros configurables en la salida impresa (ps, pdf) o la salida html recomendamos la lectura de The Modular DocBook Stylesheets, en especial las secciones DocBook Print Parameters y DocBook HTML Parameters