Troff
troff (), abreviatura de "typesetter roff", es el componente principal de un sistema de procesamiento de documentos desarrollado por Bell Labs para el sistema operativo Unix. troff y el nroff relacionado se desarrollaron a partir del roff original.
Mientras que nroff estaba destinado a producir resultados en terminales e impresoras de línea, troff estaba destinado a producir resultados en sistemas de composición tipográfica, específicamente el Graphic Systems CAT que se introdujo en 1972. Ambos usaban el mismo lenguaje de marcado subyacente y un único archivo fuente. normalmente podría ser utilizado por nroff o troff sin cambios.
troff presenta comandos para designar fuentes, espaciado, párrafos, márgenes, notas al pie y más. A diferencia de muchos otros formateadores de texto, troff puede colocar caracteres arbitrariamente en una página, incluso superponiéndolos, y tiene un lenguaje de entrada completamente programable. Se utilizan preprocesadores separados para una producción más conveniente de tablas, diagramas y matemáticas. Las entradas a troff son archivos de texto sin formato que pueden ser creados por cualquier editor de texto.
Se han creado extensos paquetes de macros para varios estilos de documentos. Una distribución típica de troff incluye las macros me para formatear documentos de investigación, man y mdoc macros para crear Unix man páginas, macros mv para crear transparencias montables y las macros ms y mm para cartas, libros, memorandos técnicos e informes.
Historia
Los orígenes de troff se remontan a un programa de formato de texto llamado RUNOFF, que fue escrito por Jerome H. Saltzer para el sistema operativo CTSS del MIT a mediados de la década de 1960.. (El nombre supuestamente proviene de la frase I'll run out a document).
Bob Morris lo portó a la arquitectura GE 635 y llamó al programa roff (una abreviatura de runoff). Fue reescrito como rf para el PDP-7 y, al mismo tiempo (1969), Doug McIlroy reescribió una versión extendida y simplificada de roff en el lenguaje de programación BCPL.
La primera versión de Unix se desarrolló en un PDP-7 que estaba en Bell Labs. En 1971, los desarrolladores querían obtener un PDP-11 para seguir trabajando en el sistema operativo. Para justificar el costo de este sistema, propusieron implementar un sistema de formateo de documentos para el departamento de patentes de Bell Labs. Este primer programa de formato fue una reimplementación del roff de McIllroy, escrito por Joe F. Ossanna.
Cuando necesitaban un lenguaje más flexible, se escribió una nueva versión de roff llamada nroff (nuevo "roff"), que proporcionó la base para todas las versiones futuras. Cuando obtuvieron una fotocomponedora CAT de Graphic Systems, Ossanna modificó nroff para admitir múltiples fuentes y espaciado proporcional. Apodado troff, por typesetter roff, su producción sofisticada asombró al fabricante de tipos y confundió a los revisores, quienes pensaron que los manuscritos que usaban troff se habían publicado antes.. Como tal, el nombre troff se pronuncia en lugar de *.
Con troff vino nroff (en realidad eran casi el mismo programa), que era para producir salida para impresoras de línea y terminales de caracteres. Comprendió todo lo que hizo troff e ignoró los comandos que no eran aplicables, por ejemplo, cambios de fuente.
El troff de Ossanna fue escrito en lenguaje ensamblador PDP-11 y produjo una salida específicamente para la fotocomponedora CAT. Lo reescribió en C, aunque ahora tenía 7000 líneas de código sin comentar y aún dependía del CAT. A medida que el CAT se volvió menos común y el fabricante ya no lo admitía, la necesidad de que sea compatible con otros dispositivos se convirtió en una prioridad. Ossanna murió antes de que se completara esta tarea, por lo que Brian Kernighan asumió la tarea de reescribir troff. La versión recién reescrita produjo un código independiente del dispositivo que fue muy fácil de leer y traducir a los códigos de impresora adecuados para los posprocesadores. Además, esta nueva versión de troff (a menudo llamado ditroff por troff independiente del dispositivo) tenía varias extensiones, que incluían funciones de dibujo. La documentación del programa define el formato de salida de ditroff, que es utilizado por muchos clones modernos de troff como GNU groff.
La colección de herramientas troff (incluidos los preprocesadores y los posprocesadores) finalmente se denominó Documenter's WorkBench (DWB), y estuvo en desarrollo continuo en Bell Labs y más tarde en el giro. -off Unix System Laboratories (USL) hasta 1994. En ese momento, SoftQuad se hizo cargo del mantenimiento, aunque Brian Kernighan continuó mejorando troff por su cuenta. Por lo tanto, existen al menos las siguientes variantes del troff original de Bell Labs en uso:
- dWB SoftQuad, basado en DWB 2.0 de la USL a partir de 1994;
- DWB 3.4 de Lucent Software Solutions (antes USL);
- Troff, edición del Plan 9.
Aunque troff ha sido suplantado por otros programas como Interleaf, FrameMaker y LaTeX, todavía se usa bastante. Sigue siendo el formateador predeterminado para la documentación de UNIX.
El software se volvió a implementar como groff para el sistema GNU a partir de 1990. Además, debido al código abierto de los antiguos sistemas UNIX, así como a los sucesores modernos, como las versiones de código abierto basadas en ditroff que se encuentran en OpenSolaris y Plan 9 de Bell Labs, hay varias versiones de AT&T troff (basadas en CAT y ditroff) disponibles bajo varias licencias de código abierto.
Macros
Troff incluye macros que se ejecutan antes de comenzar a procesar el documento. Estas macros incluyen la configuración de encabezados y pies de página, la definición de nuevos comandos y la influencia sobre cómo se formateará la salida. El argumento de la línea de comandos para incluir un conjunto de macros es -mnombre, lo que ha llevado a que muchos conjuntos de macros se conozcan como el nombre de archivo base con una m.
Los conjuntos de macros estándar, con m al principio, son:
- hombre para crear páginas manuales
- mdoc para páginas manuales anotadas semánticamente, que se adaptan mejor a la conversión de mandoc a otros formatos.
mandoc
es una fusión que soporta ambos conjuntos de comandos manuales. - me para crear documentos de investigación
- mm para la creación de memorandos
- ms para crear libros, informes y documentación técnica
Por lo general, se incluye una lista más completa de macros disponibles en una página de manual de tmac(5)
.
Preprocesadores
A medida que troff evolucionó, dado que hay varias cosas que no se pueden hacer fácilmente en troff, se desarrollaron varios preprocesadores. Estos programas transforman ciertas partes de un documento en entrada troff, encajando naturalmente en el uso de "tuberías" en Unix: enviar la salida de un programa como entrada a otro (ver tuberías y filtros). Por lo general, cada preprocesador traduce solo las secciones del archivo de entrada que están especialmente marcadas, pasando el resto del archivo sin cambios. Las instrucciones de preprocesamiento integradas están escritas en un lenguaje de programación simple y específico de la aplicación, que proporciona un alto grado de potencia y flexibilidad.
- eqn preprocessor permite que las fórmulas matemáticas se especifiquen de manera sencilla e intuitiva.
- tbl es un preprocesador para el formato de tablas.
- referencia (y el programa similar bb) procesa citaciones en un documento según una base de datos bibliográfica.
Tres preprocesadores proporcionan a troff capacidades de dibujo definiendo un lenguaje específico de dominio para describir la imagen.
- pic es un lenguaje de programación procesal que proporciona varias funciones de dibujo como círculo y caja.
- ideal permite el dibujo de imágenes declarativamente, conduciendo la imagen resolviendo un sistema de ecuaciones simultáneas basadas en vectores y transformaciones descritas por su entrada.
- Grin describe las imágenes a través de elementos gráficos dibujados en coordenadas absolutas, basado en formato de archivo gremlin definido por una estación de trabajo gráfica temprana.
Sin embargo, más preprocesadores permiten dibujar imágenes más complejas al generar resultados para pic.
- grap dibuja gráficos, como tramas de dispersión y histogramas.
- chem dibuja diagramas de estructura química.
- dformat dibuja estructuras de datos basadas en registros.
Contenido relacionado
KDE
Máquina virtual de Java
Caché (informática)