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.
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.
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
Hay casos en los que las distribuciones no incluyen Troff de forma predeterminada. En ese caso, puedes instalarlo buscando el paquete “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
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.
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
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.
Desde aquí, cree su documento pasando su archivo al programa Troff.
groff -ms -Tpdf ./my-first-document.ms > output.pdf
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.
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. [...]
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.
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.
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.
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
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
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
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
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.
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.
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
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.
Danos tu opinión