troff (/ˈtiːrɒf/), short for "typesetter roff", is the major component of a document processing system developed by Bell Labs for the Unix operating system. troff and the related nroff were both developed from the original roff.
While nroff was intended to produce output on terminals and line printers, troff was intended to produce output on typesetting systems, specifically the Graphic Systems CAT, which had been introduced in 1972. Both used the same underlying markup language, and a single source file could normally be used by nroff or troff without change.
troff features commands to designate fonts, spacing, paragraphs, margins, footnotes and more. Unlike many other text formatters, troff can position characters arbitrarily on a page, even overlapping them, and has a fully programmable input language. Separate preprocessors are used for more convenient production of tables, diagrams, and mathematics. Inputs to troff are plain text files and can be created by any text editor.
Extensive macro packages have been created for various document styles. A typical distribution of troff includes the me macros for formatting research papers, man and mdoc macros for creating Unix man pages, mv macros for creating mountable transparencies, and the ms and mm macros for letters, books, technical memoranda, and reports.
History
troff's origins can be traced to a text-formattingprogram called RUNOFF, which was written by Jerome H. Saltzer for MIT's CTSSoperating system in the mid-1960s. (The name allegedly came from the phrase I'll run off a document.)
Bob Morris ported it to the GE 635 architecture and called the program roff (an abbreviation of runoff). It was rewritten as rf for the PDP-7, and at the same time (1969), Doug McIlroy rewrote an extended and simplified version of roff in the BCPLprogramming language.
La primera versión de Unix se desarrolló en un PDP-7 que estaba en los laboratorios Bell . En 1971, los desarrolladores quisieron conseguir un PDP-11 para seguir trabajando en el sistema operativo. Para justificar el coste de este sistema, propusieron implementar un sistema de formato de documentos para el departamento de patentes de los laboratorios Bell. [ 1 ] Este primer programa de formato fue una reimplementación de roff de McIllroy , escrito por Joe F. Ossanna .
Cuando necesitaron un lenguaje más flexible, se escribió una nueva versión de roff llamada nroff ( un "roff" más reciente ), que proporcionó la base para todas las versiones futuras. Cuando obtuvieron una fotocompositora CAT de Graphic Systems , Ossanna modificó nroff para admitir múltiples fuentes y espaciado proporcional . Bautizada como troff , por typesetter roff , su sofisticada salida asombró al fabricante de la fotocompositora y confundió a los revisores , quienes pensaron que los manuscritos que usaban troff ya se habían publicado antes. [ 2 ] [ 3 ] Por lo tanto, el nombre troff se pronuncia / ˈ t iː r ɒ f / en lugar de * / ˈ t r ɒ f / .
Con troff llegó nroff (en realidad eran casi el mismo programa), que servía para generar salida para impresoras de línea y terminales de caracteres . Entendía todo lo que hacía troff e ignoraba los comandos que no eran aplicables, por ejemplo, los cambios de fuente .
El troff de Ossanna fue escrito en lenguaje ensamblador PDP-11 y producía una salida específica para la fotocomponedora CAT . Lo reescribió en C , aunque ahora eran 7000 líneas de código sin comentarios y seguía dependiendo de la CAT. A medida que la CAT se volvió menos común y dejó de ser compatible con el fabricante, la necesidad de que fuera compatible con otros dispositivos se convirtió en una prioridad. Ossanna murió antes de completar esta tarea, por lo que Brian Kernighan asumió la tarea de reescribir troff . La nueva versión reescrita produjo un código independiente del dispositivo que era muy fácil de leer para los postprocesadores y traducir a los códigos de impresora apropiados. Además, esta nueva versión de troff (a menudo llamada ditroff por troff independiente del dispositivo ) tenía varias extensiones, que incluían funciones de dibujo. [ 4 ] La documentación del programa define el formato de salida de ditroff , que es utilizado por muchos clones modernos de troff como GNU groff .
En 1983, troff era una de las varias herramientas UNIX disponibles para el sistema operativo UNOS de Charles River Data Systems bajo licencia de Bell Laboratories . [ 5 ]
El conjunto de herramientas troff (que incluye preprocesadores y posprocesadores) se denominó posteriormente Documenter's WorkBench (DWB) y se desarrolló continuamente en Bell Labs y más tarde en la empresa derivada 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:
- El SoftQuad DWB, basado en el USL DWB 2.0 de 1994;
- el DWB 3.4 de Lucent Software Solutions (anteriormente USL);
- troff, edición Plan 9 .
Aunque troff ha sido reemplazado 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 reimplementó como groff para el sistema GNU a partir de 1990. Además, debido al código abierto de los sistemas Ancient 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 (CAT y basadas en ditroff [ 6 ] ) disponibles bajo diversas licencias de código abierto.
Macros
En general, no se recomendaba usar troff directamente, sino a través de una interfaz más fácil de usar. [ 7 ] [ 8 ] 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 en cómo se formateará la salida. El argumento de línea de comandos para incluir un conjunto de macros es , lo que ha llevado a que muchos conjuntos de macros se conozcan como el nombre de archivo base con una m al principio . [ 9 ]-mname
Los conjuntos de macros estándar, con la "m" al principio, son:
- hombre para crear páginas de manual [ 10 ] [ 11 ]
- mdoc para páginas de manual anotadas semánticamente , que se adaptan mejor a la conversión de mandoc a otros formatos. [ 12 ] [ 13 ]
mandoces una fusión que admite ambos conjuntos de comandos manuales. [ 14 ] - yo por crear artículos de investigación [ 15 ]
- mm para crear memorandos [ 16 ]
- ms para crear libros, informes y documentación técnica [ 17 ]
Las macros ms fueron las primeras de estas, desarrolladas en AT&T, antes de ser reemplazadas por las macros mm. [ 18 ] Uno de los objetivos de las macros mm era que pudieran ser utilizadas por el grupo de mecanógrafos de Bell Labs y, con el tiempo, esto sucedió y las macros mm se convirtieron en un estándar en Bell Labs. [ 19 ] AT&T comercializó las macros mm para System V Unix. [ 18 ] En contraste, las macros me fueron desarrolladas en Berkeley. [ 18 ]
Un ejemplo de una carta comercial sencilla preparada con las macros mm sería:
.TL.ND"January 10, 1993".AU"Ms. Jane Smith".AT"Upcoming appointment".MT5Referencia n.° A12345.sp4Señor Samuel Jones.sp0Director de campo, Oficina de Inspecciones.sp0Plaza del Gobierno 1010.sp0Capitoltown, ST.sp3Estimado Sr. Jones,.sp2.PHaciendo referencia a la mencionada obligación de someter a inspección estatal nuestro proceso de producción recientemente creado, solicitamos que considere la posible inadecuación de someter las tecnologías innovadoras del mañana a los requisitos en gran medida anticuados del pasado. Si nuestro gran estado ha de prosperar en el siglo XXI, debemos tomar medidas..Bahora , en.Ieste año de.Ieste Esta década, para preparar nuestra base industrial para la competencia interestatal e internacional que sin duda surgirá. Nuestro nuevo proceso hace precisamente eso. Por favor, no permitamos que se vea frustrado por un marco regulatorio que ya no es adecuado..PGracias por tener en cuenta nuestra postura..FCSincerely.SG
Una lista completa de las macros disponibles suele figurar en una tmac(5)página del manual . [ 14 ]
Preprocesadores
A medida que Troff evolucionó, y dado que existen varias tareas que no se pueden realizar fácilmente en Troff , se desarrollaron varios preprocesadores . Estos programas transforman ciertas partes de un documento en entrada para Troff , integrándose de forma natural en el uso de "pipelines" en Unix, que envían la salida de un programa como entrada a otro (véase pipes y filtros ). Normalmente, cada preprocesador traduce solo las secciones del archivo de entrada que están marcadas especialmente, dejando el resto del archivo sin cambios. Las instrucciones de preprocesamiento integradas están escritas en un lenguaje de programación sencillo y específico de la aplicación, lo que proporciona un alto grado de potencia y flexibilidad.
- El preprocesador eqn permite especificar fórmulas matemáticas de manera sencilla e intuitiva. [ 20 ]
- tbl es un preprocesador para dar formato a tablas.
- El programa refer (y el programa similar bib ) procesa las citas en un documento según una base de datos bibliográfica .
Tres preprocesadores dotan a troff de capacidades de dibujo mediante la definición de un lenguaje específico de dominio para describir la imagen.
- PIC es un lenguaje de programación procedimental que proporciona varias funciones de dibujo como círculo y caja . [ 21 ]
- Ideal permite dibujar imágenes de forma declarativa , derivando la imagen mediante la resolución de un sistema de ecuaciones simultáneas basado en vectores y transformaciones descritas por su entrada. [ 22 ]
- grn describe las imágenes a través de elementos gráficos dibujados en coordenadas absolutas, basándose en el formato de archivo gremlin definido por una antigua estación de trabajo gráfica. [ 23 ]
Además, existe un comando soelim que elimina .solas directivas de inclusión del texto de entrada. [ 24 ]
Una estructura típica del oleoducto podría ser:
soelim file | refer | ideal | pic | tbl | eqn | troff
Sin embargo, otros preprocesadores permiten dibujar imágenes más complejas generando una salida para pic .
- grap dibuja gráficos , como diagramas de dispersión e histogramas . [ 25 ]
- chem dibuja diagramas de estructuras químicas . [ 26 ]
- dformat dibuja estructuras de datos basadas en registros . [ 27 ]
Otros front-ends
Se han desarrollado otras interfaces de usuario que pretenden ser más fáciles de usar para troff.
Uno de ellos es Sanscribe , desarrollado originalmente en Berkeley y mejorado durante la década de 1980 por varios usuarios, entre ellos Intel e InterACT . Utilizado para escribir memorandos, informes y documentos, Sanscribe se basa en comandos básicos de troff, así como en las macros me y diversos preprocesadores y postprocesadores como soelim, eqn, tbl, grap y pic. Sin embargo, es un programa binario principal, no un preprocesador. Su capacidad de inclusión condicional lo hace especialmente útil para mantener manuales de referencia multiplataforma. No obstante, Sanscribe es frágil y propenso a generar errores crípticos o resultados con formatos extraños. [ 28 ]
Un front-end de propósito especial es vgrind , que genera listados de programas fuente con un formato atractivo, con características como comentarios en cursiva, palabras clave en negrita y nombres de funciones resaltados en los márgenes. Puede ejecutarse como filtro o como programa principal, y su salida se pasa a troff. Es compatible con los lenguajes utilizados en las instalaciones de Bell Labs, incluyendo no solo Fortran , C y C++ , sino también herramientas específicas del dominio como Bourne shell y yacc, así como otras más generales como Emacs Lisp e Icon . [ 24 ]
El conjunto de herramientas CADiZ emplea un enfoque diferente para la notación Z. En lugar de que el cadizprograma sea un preprocesador al inicio de la canalización, interactúa varias veces con troffcomo entrada y salida, utilizando archivos guardados en lugar de una tubería. CADiZ también contiene su propio conjunto de macros, llamadas .ZAa .ZZ. [ 29 ]
Véase también
- Autoedición
- Libro de documentos
- groff GNU troff/nroff reemplazo
- nroff
- SGML
- Texas
- Escriba (lenguaje de marcado)
Referencias
- ^ Kernighan, BW (octubre de 2019). Unix: una historia y una memoria . Publicación directa de Kindle. pag. 42.ISBN 9781695978553Archivado del original el 10 de febrero de 2021. Consultado el 20 de junio de 2020 .
- ↑ JF Ossanna. Manual de usuario de Nroff/Troff . CSTR n.° 54, Bell Labs, 1976. Revisado por BW Kernighan, 1992.
- ↑ McIlroy, MD (1987). Un lector de Research Unix: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139.
- ↑ BW Kernighan. A Typesetter-Independent TROFF . CSTR #97, Bell Labs, 1981, revisado en marzo de 1982.
- ↑ La guía del iniciado para el universo (PDF) . Charles River Data Systems, Inc. 1983. pág. 13. Archivado (PDF) del original el 25/02/2024 . Consultado el 10/02/2024 .
- ↑ Consulte la página de manual del convertidor ditroff -> postscript en OpenSolaris: – illumos y el manual de referencia de comandos de usuario de OpenSolaris de la última versión de OpenSolaris basada en Sun
- ↑ Emerson, Sandra L.; Paulsell, Karen (1987). Troff Typesetting for UNIX Systems · . Englewood Cliffs, Nueva Jersey: Prentice-Hall. pág. 9.
- ↑ Gehani, Narain (1992). Formato y composición tipográfica de documentos en el sistema UNIX (Segunda edición). Summit, Nueva Jersey: Silicon Press. págs. 11–12 . ISBN 978-0-9615336-2-5.
- ↑ Lindholm, Stephen. "macros groff/troff: ms, mm, me or mom" . ... Archivado del original el 14 de julio de 2024. Recuperado el 3 de junio de 2024 .
- ↑ "Cómo escribir y formatear páginas de manual de UNIX con macros -man" . home.fnal.gov . Archivado del original el 30 de julio de 2019. Consultado el 7 de mayo de 2019 .
- ↑ – Manual de Miscelánea de Linux de ManKier.com
- ↑ – Manual de información miscelánea de FreeBSD
- ↑ "Índice - Documentación extendida de Mandoc" . Mandoc . Archivado del original el 11 de febrero de 2021. Consultado el 7 de mayo de 2019 .
- 1 2 – Manual de formatos de archivo de Linux de ManKier.com
- ↑ – Manual de Miscelánea de Linux de ManKier.com
- ↑ – Manual de Miscelánea de Linux de ManKier.com
- ↑ – Manual de Miscelánea de Linux de ManKier.com
- 1 2 3 Srinivasan, B. (1993). Procesamiento y composición tipográfica de documentos UNIX . Singapur: World Scientific. págs. 11–12 . ISBN 978-981-02-0605-5.
- ↑ Mashey, John (18 de julio de 2018). Dag Spicer (ed.). «Historia oral de John Mashey» (PDF) (Entrevista). Entrevistado por John Markoff. Mountain View, California: Computer History Museum. págs. 27–29 , 37. Recuperado el 26 de mayo de 2024 .
- ↑ BW Kernighan y Lorinda L. Cherry. Un sistema para la composición tipográfica de matemáticas . CSTR #17, Bell Labs, mayo de 1974.
- ↑ BW Kernighan. PIC — Un lenguaje gráfico para composición tipográfica (Manual de usuario revisado) . CSTR n.º 116, Bell Labs, diciembre de 1984.
- ↑ CJ Van Wyk. Manual de usuario de IDEAL . CSTR n.° 103, Bell Labs, diciembre de 1981.
- ↑ grn — preprocesador groff para archivos gremlin.
- 1 2 Robbins, Arnold (1999). UNIX en pocas palabras: una guía de referencia rápida para System V Release 4 y Solaris 7 (Tercera ed.). Sebastopol, California: O'Reilly Media. págs. 151, 187–189 . ISBN 978-1-56592-427-7Archivado del original el 13 de julio de 2024. Consultado el 13 de julio de 2024 .
- ↑ JL Bentley y BW Kernighan. GRAP: un lenguaje para la composición tipográfica de gráficos (tutorial y manual de usuario) . CSTR n.° 114, Bell Labs, agosto de 1984.
- ↑ JL Bentley, LW Jelinski y BW Kernighan. CHEM: un programa para la composición tipográfica de diagramas de estructuras químicas . CSTR n.° 122, Computers and Chemistry, Bell Labs, abril de 1986.
- ↑ JL Bentley. DFORMAT — Un programa para la composición tipográfica de formatos de datos . CSTR #142, Bell Labs, abril de 1988.
- ↑ Sanscribe: Guía del usuario y referencia (Edición 3.0 ). ... 13 de enero de 1989. págs. 1–1 , 2–1 , 3–2 , 6–1 .
- ↑ Jordan, David; McDermid, John A.; Toyn, Ian (1991). Nicholls, JE (ed.). CADi– Diseño asistido por ordenador en Z. Taller de usuarios de Z, Oxford 1990: Actas de la quinta reunión anual de usuarios de Z, Oxford: 17-18dediciembre de 1990. Berlín, Heidelberg: Springer-Verlag. págs.93-104.
Enlaces externos
- El procesador de texto para tipógrafos
- La historia de troff
- Implementación gratuita de troff
- Versión adaptada de troff y programas relacionados, derivada de OpenSolaris.
- Manual de usuario para la edición Plan 9 de troff (en formato PostScript)
- La sección 3 de "Una historia de UNIX antes de Berkeley" describe la historia de roff, nroff, troff, ditroff, tbl, eqn y más.
- El código fuente original de nroff, troff y los preprocesadores de AT&T Bell Labs en forma de Documenter's Workbench (DWB) versión 3.3 (adaptado a los sistemas UNIX actuales desde http://www2.research.att.com/sw/download)
- Troff
- Software de composición tipográfica gratuito
- Idiomas de descripción de página
- Historia del software
- Órdenes del Plan 9
- utilidades de procesamiento de texto de Unix