Articulo de referencia

troff

troff ( / ˈ t iː r ɒ f / ), abreviatura de "typesetter roff", es el componente principal de un sistema de procesamiento de documentos desarrollado por Bell Labs para el sistema ...

troff ( / ˈ t r ɒ f / ), abreviatura de "typesetter roff", es el componente principal de un sistema de procesamiento de documentos desarrollado por Bell Labs para el sistema operativo Unix . Tanto troff como el relacionado nroff se desarrollaron a partir del roff original .

Mientras que nroff estaba diseñado para generar salida en terminales e impresoras de línea, troff estaba diseñado para generar salida en sistemas de composición tipográfica , específicamente en el CAT de Graphic Systems , que se había introducido en 1972. Ambos utilizaban el mismo lenguaje de marcado subyacente , y normalmente un único archivo fuente podía ser utilizado por nroff o troff sin modificaciones.

troff incluye comandos para definir fuentes, espaciado, párrafos, márgenes, notas al pie y mucho más. A diferencia de otros formateadores de texto, troff permite posicionar caracteres arbitrariamente en una página, incluso superponiéndolos, y cuenta con un lenguaje de entrada totalmente programable. Se utilizan preprocesadores independientes para facilitar la creación de tablas, diagramas y fórmulas matemáticas. Los archivos de entrada de troff son archivos de texto plano y pueden crearse con cualquier editor de texto.

Se han creado extensos paquetes de macros para diversos estilos de documentos. Una distribución típica de troff incluye las macros me para formatear artículos de investigación, las macros man y mdoc para crear páginas man de Unix , las 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 , escrito por Jerome H. Saltzer para el sistema operativo CTSS del MIT a mediados de la década de 1960. (Se dice que el nombre proviene de la frase " I'll run off a document" o "I'll run off a document ").

Bob Morris lo adaptó 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 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 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:

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".MT5 Referencia n.° A12345 .sp4 Señor Samuel Jones .sp0 Director de campo, Oficina de Inspecciones .sp0 Plaza del Gobierno 1010 .sp0 Capitoltown, ST .sp3 Estimado Sr. Jones, .sp2.P Haciendo 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. .P Gracias 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.

Tres preprocesadores dotan a troff de capacidades de dibujo mediante la definición de un lenguaje específico de dominio para describir la imagen.

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 .

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

Referencias

  1. ^ 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 .
  2. JF Ossanna. Manual de usuario de Nroff/Troff . CSTR n.° 54, Bell Labs, 1976. Revisado por BW Kernighan, 1992.
  3. McIlroy, MD (1987). Un lector de Research Unix: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139.
  4. BW Kernighan. A Typesetter-Independent TROFF . CSTR #97, Bell Labs, 1981, revisado en marzo de 1982.
  5. 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 . 
  6. 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 Sundpost(1)  
  7. Emerson, Sandra L.; Paulsell, Karen (1987). Troff Typesetting for UNIX Systems · . Englewood Cliffs, Nueva Jersey: Prentice-Hall. pág. 9. 
  8. Gehani, Narain (1992). Document Formatting and Typesetting on the UNIX System (Segunda edición). Summit, Nueva Jersey: Silicon Press. págs. 11–12 . ISBN   978-0-9615336-2-5.
  9. 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 .
  10. "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 .
  11. Manual de Miscelánea de Linux de ManKier.comman(7)  
  12. Manual de información miscelánea de FreeBSDmdoc(7)  
  13. "Índice - Documentación extendida de Mandoc" . Mandoc . Archivado del original el 11 de febrero de 2021. Consultado el 7 de mayo de 2019 .
  14. 1 2Manual de formatos de archivo de Linux de ManKier.comgroff_tmac(5)  
  15. Manual de Miscelánea de Linux de ManKier.comgroff_me(7)  
  16. Manual de Miscelánea de Linux de ManKier.comgroff_mm(7)  
  17. Manual de Miscelánea de Linux de ManKier.comgroff_ms(7)  
  18. 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.
  19. 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 . 
  20. BW Kernighan y Lorinda L. Cherry. Un sistema para la composición tipográfica de matemáticas . CSTR #17, Bell Labs, mayo de 1974.
  21. BW Kernighan. PIC — Un lenguaje gráfico para composición tipográfica (Manual de usuario revisado) . CSTR n.º 116, Bell Labs, diciembre de 1984.
  22. CJ Van Wyk. Manual de usuario de IDEAL . CSTR n.° 103, Bell Labs, diciembre de 1981.
  23. grn — preprocesador groff para archivos gremlin.
  24. 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-7. Archivado del original el 13-07-2024 . Consultado el 13-07-2024 .
  25. 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.
  26. 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.
  27. JL Bentley. DFORMAT — Un programa para la composición tipográfica de formatos de datos . CSTR #142, Bell Labs, abril de 1988.
  28. 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 .  
  29. Jordan, David; McDermid, John A.; Toyn, Ian (1991). Nicholls, JE (ed.). CADiZ{\displaystyle \mathbb {Z} } 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. 
  • 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) Release 3.3 (adaptado a los sistemas UNIX actuales desde http://www2.research.att.com/sw/download )
Obtenido de " https://en.wikipedia.org/w/index.php?title=Troff&oldid=1336333444 "