0
(0)

Troff es un procesador de texto de documentos mínimo pero potente para sistemas Linux. Le permite crear fácilmente documentos listos para imprimir compilando archivos de origen desde la línea de comandos. A diferencia de LaTeX, Troff es increíblemente liviano y está preinstalado en la mayoría de los sistemas Linux. Este tutorial le muestra cómo usar Troff para formatear documentos PDF en Ubuntu.

¿Qué es Troff y por qué usarlo?

En un sentido básico, Troff es un programa de procesamiento de texto que convierte secuencias de comandos similares a códigos en documentos imprimibles. A diferencia de los procesadores de texto, Troff no se basa en el paradigma «WYSIWYG». En cambio, requiere que use tipos específicos de código para manejar su formato.

La pantalla predeterminada de Libreoffice Writer.

Una de las mayores ventajas de este enfoque es la simplicidad. Una instalación básica de Troff tendrá todo lo que necesita para crear un documento. Además, la falta de una interfaz gráfica de usuario significa que puede crear un documento incluso a través de SSH.

Una sesión remota de OpenBSD ejecutando Troff.

Consejo: aprenda a reenviar aplicaciones GUI a través de SSH en Linux.

Instalando Troff

Troff a menudo se incluye de forma predeterminada en la mayoría de las distribuciones de Linux. Puede verificar si lo tiene en su sistema ejecutando su -h bandera. Esto mostrará una breve lista de todas las banderas que acepta su instalación de Troff.

troff -h

Una pantalla de terminal que ejecuta la bandera -h en Troff.

Hay casos en los que las distribuciones no incluyen Troff de forma predeterminada. En ese caso, puedes instalarlo buscando el paquete “groff”.

Una ventana de terminal que ejecuta el comando apt info para groff.

Esta es una reimplementación de los programas Troff y Nroff por parte del Proyecto GNU, que incluye una serie de funciones nuevas y modernas.

Puede instalar groff en Ubuntu usando el siguiente comando:

sudo apt install groff

Una ventana de terminal que muestra el comando apt install para groff.

Creando tu primer documento Troff

Similar al código fuente, cada documento de Troff es un archivo de texto que contiene instrucciones sobre cómo crear un documento. Estos incluyen el ancho de la página y el margen, así como el espaciado entre letras y páginas.

Una pantalla de ventana de terminal que muestra una macro compleja de Troff.

Este nivel de control le permite manipular el programa para crear cualquier tipo de documento. Para simplificar eso, los desarrolladores de Troff crearon «macros» que condensan estos comandos en una sintaxis más simple.

Una de las macros más comunes que usará en Troff es «ms». Creará un documento en un estilo de artículo. Puede crear un documento ms utilizando el touch dominio:

touch my-first-document.ms

Dado que todos los documentos de Troff son de texto, puede abrir su documento utilizando un editor de texto. En mi caso, estoy usando vim. Alternativamente, puede usar cualquiera de estos editores de texto para Linux.

vim my-first-document.ms

Una ventana de terminal que muestra un nuevo documento ms.

Comprender el formato Troff

Todos los documentos de Troff siguen una estructura similar. Cada comando de formato que realice debe estar en una línea separada en el contenido que está tratando de formatear. Como tal, un documento típico de Troff se verá así:

.COMMAND1
This is a piece of content in a Troff document.
 
.COMMAND2
This is a different piece of content in a Troff document.

Dos de los comandos más básicos que usará en ms son .TL y .PP. El primero convierte su texto en un título y lo centra en su documento, mientras que el segundo formatea su texto para seguir un estilo de párrafo.

Por ejemplo, el siguiente extracto utiliza tanto el .TL y .PP comandos:

.TL
My First Troff Document
 
.PP
This is content that I want to look like a paragraph in my final document. It is not a very long content but it is my first Troff document and it is something that I am proud of. It is about three sentences long and it should wrap around the document properly.

Una ventana de terminal que muestra un documento Troff básico.

Desde aquí, cree su documento pasando su archivo al programa Troff.

groff -ms -Tpdf ./my-first-document.ms > output.pdf

Una salida en PDF de un documento Troff básico.

Consejo: si prefieres algo más sencillo, aprende a escribir en formato MLA en Google Docs.

Creación de texto en negrita, cursiva y subrayado

Al igual que un procesador de textos normal, la mayoría de las macros de Troff proporcionan una serie de comandos de estilo para personalizar su documento. Para ms, estos son .B, .I, .UL y .BX.

  • El .B El comando cambia el texto a negrita.
  • El .I El comando cambia el texto a cursiva.
  • .UL y .BX son comandos que dibujan un subrayado y un cuadro alrededor del texto, respectivamente.

Similar a los comandos anteriores, usar estos en su documento requiere que separe cada estilo en su propia línea:

.TL
My First Troff Document
 
.PP
This is
.B
content
.R
that I want to look like a paragraph in my final document. [...]

En este ejemplo, creé una nueva línea antes de la palabra «contenido» y agregué el .B comando para cambiarlo a negrita, luego creó una nueva línea y agregó el .R dominio. Esto le permite a Troff volver a su estilo anterior.

Una salida en PDF de un documento Troff que muestra una sola palabra en negrita.

Es importante tener en cuenta que siempre es necesario agregar el .R comando al cambiar de estilo. Por ejemplo, el siguiente extracto no terminará el .I comando ya que Troff no vio un .R después de:

.TL
My First Troff Document
 
.PP
This is
.I
content
that I want to look like a paragraph in my final document. [...]

Una salida en PDF de un documento Troff que muestra la mayor parte del cuerpo en cursiva.

Creación de nuevas secciones de documentos

Al igual que LaTeX, Troff también es compatible con la detección de secciones y jerarquías, por lo que no es necesario que organice y haga coincidir el nivel de cada encabezado cuando esté editando.

Para crear una nueva sección en su documento, use el .NH comando seguido del nombre de su encabezado.

.TL
My First Troff Document
 
.NH
My First Heading
.PP
This is content that I want to look like a paragraph in my final document.

Una salida en PDF de un documento Troff con un solo encabezado numerado.

De forma predeterminada, cada encabezado de Troff tiene un valor de nivel que dicta cómo el programa estructura y muestra su contenido en el documento final. Sabiendo eso, puede cambiar este valor para ajustar el nivel de un encabezado.

Por ejemplo, lo siguiente crea un encabezado de nivel 2 inmediatamente debajo de su padre:

.TL
My First Troff Document
 
.NH
My First Heading
.NH 2
My First Subheading
.PP
This is content that I want to look like a paragraph in my final document.

Una salida en PDF de un documento Troff que muestra una página con un encabezado anidado numerado.

Además de los encabezados numerados normales, Troff también puede crear encabezados en blanco que seguirán la jerarquía de niveles del documento.

Para hacer esto, reemplace .NH con el .SH dominio:

.TL
My First Troff Document
 
.SH
My First Heading
.SH 2
My First Subheading
.PP
This is content that I want to look like a paragraph in my final document.

Una salida en PDF de un documento Troff que muestra un encabezado anidado sin numerar.

Consejo: descubra cómo cambiar los márgenes en Google Docs.

Creando Listas en Troff

La simplicidad de Troff también le permite adaptar su comportamiento a lo que necesite. Por ejemplo, las listas no vienen por defecto en las macros Troff o ms. A pesar de eso, aún puede crear una lista combinando algunos comandos de ms.

Cada lista en Troff consta de tres partes: una sangría, una viñeta y el contenido. Para crear la sangría, utilice el .RS y .RE comandos Estos moverán el nivel de sangría actual de cualquier texto dentro de él por cuatro espacios.

.RS
This is my first item.
.RE

Una salida en PDF de un documento Troff que muestra un elemento de lista simple.

A continuación, cree la viñeta para el elemento de su lista usando .IP. Este es el comando de «párrafo de sangría» que fija el margen izquierdo de su texto a un cierto ancho.

El .IP El comando también le permite establecer una viñeta personalizada y el espacio entre ella y su texto. En este caso, estoy configurando mi viñeta en «[1]” y le dará cuatro espacios.

.RS
.IP [1] 4
This is my first item.
.RE

Una salida en PDF de un documento Troff que muestra un solo elemento de lista con una viñeta.

Ahora copia y pega tu .IP Comando para crear elementos de lista adicionales.

.RS
.IP [1] 4
This is my first item.
.IP [2] 4
This is my second item.
.IP [3] 4
This is my third item.
.RE

Una salida en PDF de un documento Troff que muestra tres elementos básicos de la lista con viñetas.

Finalmente, automatice este proceso creando una macro personalizada. Por ejemplo, el siguiente extracto limita mi .IP comando a .QW:

.de QW
.IP [-] 4
..
 
.RS
.QW
This is my first item.
.QW
This is my second item.
.QW
This is my third item.
.RE

Una ventana de terminal que muestra el archivo de origen de un documento que utilizó macros para automatizar la creación de listas.

Creando Tablas con Preprocesadores en Troff

Una peculiaridad de Troff es que la mayoría de sus características existen como «preprocesadores». En su mayor parte, estos son binarios fuera del programa que funcionan mediante la creación de «scripts de contenedor de preprocesador» y los convierten en código Troff de bajo nivel.

Una ventana de terminal que muestra el código Troff convertido desde un preprocesador.

Tbl es un gran ejemplo de un preprocesador Troff. Es un programa que gestiona tablas en un documento. Un contenedor Tbl básico se parece a esto:

.TS
allbox ;
c c c.
item1 <Tab> item2 <Tab> item3
item4 <Tab> item5 <Tab> item6
 
.TE
  • El .TS y .TE commands le dice a Tbl que este es un entorno que puede leer.
  • La segunda línea le dice al programa cómo formatear esta tabla.
  • La tercera línea es un campo separado por espacios que dicta la cantidad de columnas y su alineación en la tabla.
  • Las líneas cuarta y quinta son campos separados por tabuladores que contienen el contenido de su tabla.

Una ventana de terminal que muestra la secuencia de comandos del preprocesador para Tbl.

Compilar un documento con Tbl es ligeramente diferente a un archivo Troff normal. Primero, carga tu archivo:

tbl my-first-document.ms > preprocessed.ms

A continuación, alimenta la salida del programa a Troff:

groff -ms -Tpdf ./preprocessed.ms > output.pdf

Por último, automatice este proceso utilizando tuberías UNIX:

tbl my-first-document.ms | groff -ms -Tpdf > output.pdf

Una salida en PDF de un documento Troff que muestra una tabla básica.

Bueno saber: Obtenga más información sobre las canalizaciones UNIX y la redirección de archivos con sed.

Preguntas frecuentes

¿Es posible usar Troff en Windows?

De forma predeterminada, ni Troff ni Groff están oficialmente portados a Windows. A pesar de eso, aún puede usar Groff junto con otras utilidades GNU instalando el Subsistema de Windows para Linux.

¿Troff tiene una función de seguimiento de bibliografía?

Sí. Refer es un preprocesador simple que utiliza un archivo de bibliografía externo para rastrear automáticamente las referencias en un documento Troff. Puede obtener más información sobre cómo funciona visitando su página de manual ejecutando man refer.

¿Cómo puedo corregir el error «falta DESC» al compilar Troff?

Lo más probable es que este problema se deba a que falta una dependencia en su sistema o a un archivo de versión que no coincide. Para solucionar esto, instale el paquete groff adecuado desde el repositorio de su distribución.

Credito de imagen: Simon Hattinga Verscheure a través de Unsplash. Todas las alteraciones y capturas de pantalla por Ramces Red.

¿Le ha parecido útil este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.