La Gaceta de Linux ...¡ haciendo a Linux un poco más divertido !

Procesamiento de Documentos con groff y mom

Por Peter Schaffter

Traducción al español por Gustavo Conturzo
el día 26 de Marzo de 2005, para La Gaceta de Linux

Procesamiento de Documentos con groff y mom

Veo a una profesora en el pizarrón garabateando el título de este artículo con tiza chirriante. Un murmullo crece desde los pupitres detrás de ella.

Billy, el ultra novato de Linux:
¿Procesamiento de documentos? ¿Eso es algo como el procesamiento de palabras?

Suzie, la novata relativa:
¿"groff"? ¿No es ese el programa que me permite leer páginas man?

Todd, el veterano:
¿mom? Nunca oí de esto.

De acuerdo, clase--tranquilícense. Una pregunta a la vez.

Procesamiento de Documentos

No, Billy, procesamiento de palabras y procesamiento de documentos no es lo mismo.

Cuando ustedes utilizan un procesador de palabras moderno, el monitor de la computadora les muestra una representación asidua de lo que están escribiendo en su forma impresa final. Siempre que quieran cambiar una fuente, o aumentar el tamaño del tipo, o ajustar una línea, típicamente resaltan una porción de texto, apuntan con su ratón a un elemento de menú, seleccionan el tipo de operación a ejecutar, luego concretan el cambio desde otro menú. La modificación inmediatamente es visible.

El procesamiento de texto difiere del procesamiento de palabras en que cuando ustedes escriben, disparan un editor de texto, un programa que provee herramientas poderosas para la edición del texto mismo--herramientas que van más allá del alcance de los procesadores de palabras--pero no les muestra una representación del documento impreso. El formateo y la tipografía se logra no por apuntar y hacer clic, sino por comandos escritos que se incrustan en el texto. Cuando terminan de escribir, ustedes ven previamente el documento con un pequeño programa (como gv, o ghostview) cuya única función es mostrarles cómo se ve la versión impresa.

groff

Muy bien, Suzie, groff es el programa que te permite leer páginas man. Pero hace mucho más que eso.

Para muchos Linuxeros--programadores y usuarios finales--groff comienza y termina con páginas man. Viene una sorpresa, entonces, al descubrir que groff actualmente es un poderoso motor de formateo y tipografía capaz de producir salida PostScript, TeX DVI y html además de copias formateadas del terminal (por ejemplo, páginas man).

Groff tiene una historia muy larga, que data hacia los primeros días de Unix. Por comparación, TeX--el otro gran jugador en el procesamiento de documentos de Linux--es un recién llegado relativo. TeX y groff son dos logros monumentales, con considerable coincidencia en lo que hacen, pero tienen una diferencia importante: el tamaño. Aun una instalación mínima de TeX es enorme en comparación a groff.

Muchas personas soportan pacientemente el tamaño de TeX porque creen erróneamente que TeX produce tipografía de una calidad superior a groff. Mientras que pudo haber sido cierto una vez, simplemente ahora no es el caso. Como motor de tipografía, groff es majestuoso.

Groff tiene una deuda, a pesar de que: es increíblemente geeky. Debido a su larga historia--y sus usuarios mecánicos--parece adherirse en un salto en el tiempo. Los conjuntos de macros clásicas de groff (los conjuntos de macros son la interfaz elemental del usuario final para groff) todavía se parecen a los que hicieron en aquellas décadas donde la memoria era exorbitantemente costosa, y cada byte era importante. Sus concisos comandos de dos letras tienden a espantar a las personas, igual que la cantidad de conocimiento acerca de groff mismo requerido para usarlos efectivamente.

Aquí es donde viene mom.

mom

¡Caramba!, Todd, ¿qué versión de groff estás ejecutando? ¿De hecho has consultado recientemente man groff_tmac?

Para ser justa con Todd, mom es la nueva chica de la cuadra. Solamente ha estado alrededor de casi dos años--la primera nueva macro importante establecida para bajar la lanza bastantes veces.

El comando mom es simple: para poner tipografía y procesamiento de documentos con groff al alance de la mando de cada uno, veteranos y novatos por igual. "Fácil" se ha cumplido -

Tutorial--creación de un documento con mom

mom es en realidad dos macros de groff ambientadas en una. Para el tipógrafo, provee un juego de herramientas inspiradas en los comandos usados por las máquinas tipográficas "dedicadas". Para el escritor, provee "etiquetas" de procesamiento de documentos que automáticamente genera hermosas cabeceras, subcabeceras, notas a pié de página, notas finales, tablas de contenidos formateadas y mucho más. En este tutorial, crearemos un ensayo universitario, de modo que el énfasis estará sobre el procesamiento del documento, no sobre la tipografía.

En primer lugar, las "reglas":

Comienzas un documento mom al ingresar alguna información de referencia: título, subtítulo, autor(es) y demás. mom  utiliza esta información para crear las páginas de las tapas (si las deseas), establecer los títulos del documento y generar los encabezados y pies de página.

.TITLE "Estirando al Punto de Desempate"
.SUBTITLE "Ambigüedad Cadencial en Wagner, Mahler y Strauss"
.AUTHOR "Jane Dearborne"

Luego, le dices a mom qué tipo de documento estás creando, si este es un borrador o una copia final, y si quieres el documento tipografiado o "escrito a máquina".

.DOCTYPE DEFAULT
.COPYSTYLE FINAL
.PRINTSTYLE TYPESET

.DOCTYPE DEFAULT y .COPYSTYLE FINAL son opcionales (porque son por defecto de mom). Sin embargo, .PRINTSTYLE TYPESET no lo es. Todos los documentos de mom que van a ser formateados con las etiquetas de procesamiento de documento deben contener una directiva .PRINTSTYLE.

Luego, inicias el procesamiento de documento con una sola macro requerida

.START

Ahora está a tu manera. Comienza cada párrafo con .PP, en una línea sola, seguida por el texto del párrafo, como esto:

.PP
Lorem ipsum dolor sit amet...

Cuando necesites un encabezado principal, escribe .HEAD, seguido del texto del encabezado, sobre la misma línea y encerrado por comillas dobles.

.HEAD "Wagner: Lohengrin to The Ring"

Los subencabezados se realizan de modo parecido:

.SUBHEAD "The Pull Toward Flat Six"

Si necesitas insertar un pasaje citado del trabajo de otro autor, simplemente encierra el pasaje con la macro .BLOCKQUOTE.

.BLOCKQUOTE
At vero eos et accusam et justo duo dolores...
.BLOCKQUOTE OFF

Si requieres notas al pie de página, incrústalas en el cuerpo del documento, como esto:

In 1890, Alma\c
.FOOTNOTE
Mahler's wife; later married to Walter Gropius of Bauhaus fame,
then again to writer, Franz Werfel.
.FOOTNOTE OFF
is reported to have...

Observa el uso de  \c en la primera línea, arriba. Las notas al pie de página (y las notas finales) requieren \c a fin de adjuntar marcadores (asteriscos, cruces, números superíndices, etc.) al final de las palabras.

Continúa de esta forma hasta el final del documento, el cual, si utilizas notas finales, es terminado por la única macro

.ENDNOTES

mom está diseñado para producir salida PostScript (para enviar directamente a una impresora o guardarlo como un archivo .ps), y el "dispositivo" por defecto de groff es PostScript, de modo que procesarías el archivo, en la línea de comandos, con

groff -mom -l <nombre_de_archivo>

o

groff -mom <nombre_de_archivo> | lpr
para enviar el archivo a la impresora, o
groff -mom <nombre_de_archivo> > <nombre_de_archivo>.ps
para guardarlo en un archivo. De cualquier forma, terminas con un documento de apariencia profesional de 8.5x11 pulgadas, tipografiado justificado en Times Roman a 12.5 a 16 (por defecto de mom).

Lo que este tutorial no demuestra es el grado de control que mom permite sobre el diseño de documentos. Todas las etiquetas de procesamiento de documento tienen macros de "control" globales que te permite, como mínimo, cambiar la familia, fuente, tamaño del punto y color de cualquier etiqueta. Cuando sea apropiado, mom proveerá macros adicionales de control para cosas como dirección cuadrangular, espaciado de línea, subrayado, capitalización, sangrado, estilo de numeración, y demás. Usadas en conjunción con las macros de tipografía de mom, las macros de control te permiten diseñar vitualmente cada parte de un documento para precisar especificaciones y gusto.

OK, estoy intrigado: ¿Cómo le pongo manos a mom?

mom ha sido parte de groff por los pasados dos años, de modo que si tienes una versión reciente de groff (1.18 o posterior), ya tienes a mom. :-)

Sin embargo, mom está siendo desarrollado independientemente de groff, así que probablemente quieras una versión más madura que la que obtuviste la última vez que actualizaste groff.

Hay dos formas de obtener un mom actualizado: ir directamente a mom's homepage y descargar la última versión, o  verificar el groff más reciente del repositorio CVS de groff (instrucciones aquí) y compilar groff desde los fuentes. Los parches y mejoras para mom ya se aplicaron al repositorio de groff antes de una nueva versión, de modo que con cualquier método consigues la versión más reciente. Al momento de escribir, es la 1.2. Para verificar el número de versión de tu actual mom, has un locate para encontrar el archivo macro, om.tmac, luego recorre la página hasta la línea 26.

Por favor observa que mom actualmente requiere que estés ejecutando, en lo mínimo, la versión 1.18 de groff, y para uso óptimo, la versión 1.19.2 de groff o superior.

 


[BIO](las palabras "groff" o "mom" deben aparecer en la línea asunto de cualquier mail enviado a esta dirección, si no el email será bombardeado)

Peter Schaffter es un pianista clásico, compositor de canciones country y tipógrafo profesional que se hizo escritor cuya novela, The Schumann Proof (pub. RendezVous Press, Canadá), estuviera en las repisas a finales del 2004.

Un apasionado devensor del Software Libre, él también es el creador del conjunto de macros "mom" para groff. Mom el la forma de Peter de decir "gracias" a la comunidad de desarrolladores de código abierto que hizo posible, a pesar de su estado continuamente empobrecido, para echar manos sobre algunas de las más poderosas herramientas de computación del planeta. Mom también refleja su interés en la documentación de software, un tema que él considera de primordial importancia en el desarrollo de código abierto. En una inversión del procedimiento de desarrollo normal, él escribió mucha de la documentación para mom antes de implementar el código. "La primera exposición de un usuario a un programa usualmente es la documentación", dijo, "¿así que por qué no conseguirla primero? Además, hacer un programa conforme a la documentación escrita de antemano es una estupenda forma de asegurarle el comportamiento según lo anunciado."

Copyright © 2004, Peter Schaffter. Publicado bajo los términos de la Open Publication license

Publicado en el Número 107 de Gaceta de Linux, Octubre de 2004