stringtranslate.com

troff

troff ( / ˈ t r ɒ f / ), abreviatura de "tipografista 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 fueron desarrollados 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 CAT de sistemas gráficos que se había introducido en 1972. Ambos usaban el mismo lenguaje de marcado subyacente y normalmente se podía crear un único archivo fuente. 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 totalmente 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 crearse con cualquier editor de texto.

Se han creado amplios paquetes de macros para varios 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 , 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 Voy a sacar un documento ).

Bob Morris lo portó a la arquitectura GE 635 y llamó al programa roff (abreviatura de runoff ). [ cita necesaria ] 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 se encontraba en los Laboratorios Bell . En 1971, los desarrolladores querían adquirir un PDP-11 para seguir trabajando en el sistema operativo. Para justificar el costo de este sistema, propusieron implementar un sistema de formato de documentos para el departamento de patentes de Bell Labs. [1] Este primer programa de formato fue una reimplementación del 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 ( más reciente "roff" ), que sirvió de base para todas las versiones futuras. Cuando adquirieron una fotocomponedora CAT de Graphic Systems , Ossanna modificó nroff para admitir múltiples fuentes y espaciado proporcional . Apodado troff , por el tipógrafo roff , su producción sofisticada asombró al fabricante del tipógrafo y confundió a los revisores , quienes pensaban que los manuscritos que usaban troff se habían publicado antes. [2] [3] Como tal, el nombre troff se pronuncia / ˈ t r ɒ f / en lugar de * / ˈ t r ɒ f / .

Con troff vino nroff (en realidad eran casi el mismo programa), que era para producir resultados para impresoras de líneas y terminales de caracteres . Entendió todo lo que hizo troff e ignoró los comandos que no eran aplicables, por ejemplo, cambios de fuente .

El troff de Ossanna se escribió en lenguaje ensamblador PDP-11 y se produjo específicamente para la fotocomponedora CAT . Lo reescribió en C , aunque ahora tenía 7000 líneas de código sin comentar y todavía dependía del CAT. A medida que el CAT se volvió menos común y ya no era compatible con el fabricante, la necesidad de hacerlo 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 era muy fácil de leer y traducir para los posprocesadores a los códigos de impresora apropiados. Además, esta nueva versión de troff (a menudo llamada ditroff para 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 de troff modernos como GNU groff .

En 1983, troff era una de varias herramientas UNIX disponibles para el sistema operativo UNOS de Charles River Data Systems bajo la licencia de Bell Laboratories . [5]

La colección de herramientas troff (incluidos los preprocesadores y posprocesadores) finalmente se llamó Documenter's WorkBench (DWB) y estuvo en desarrollo continuo en Bell Labs y más tarde en los Unix System Laboratories (USL) derivados hasta 1994. En ese momento , SoftQuad se hizo cargo del mantenimiento, aunque Brian Kernighan continuó mejorando troff por su cuenta. Por lo tanto, se utilizan al menos las siguientes variantes del troff original de Bell Labs:

Si bien troff ha sido reemplazado por otros programas como Interleaf , FrameMaker y LaTeX , todavía se usa ampliamente. 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 [6] ) disponibles bajo varias licencias de código abierto.

macros

En general, no se animaba a uno a utilizar troff directamente, sino a utilizar alguna 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 configurar encabezados y pies de página, definir nuevos comandos e influir en cómo se formateará la salida. El argumento de la línea de comandos para incluir un conjunto de macros es -m nombre , lo que ha llevado a que muchos conjuntos de macros se conozcan como el nombre de archivo base con una m inicial . [9]

Los conjuntos de macros estándar, con m inicial son:

Las macros ms fueron las primeras de ellas, desarrolladas en AT&T, antes de ser suplantadas por las macros mm. [18] Uno de los objetivos de las macros mm era que fueran utilizables por el grupo de mecanografía 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 puso las macros mm disponibles comercialmente para System V Unix. [18] Por el contrario, las macros me se desarrollaron en Berkeley. [18]

Un ejemplo de carta comercial sencilla preparada con las macros mm sería:

.ND "10 de enero de 1993".AU "Sra. Jane Smith".AT "Próxima cita".MT 5.DSReferencia #A12345.sp 4Sr. Samuel JonesDirector de campo, Oficina de Inspecciones1010 Plaza del GobiernoCapitoltown, ST.sp 3Estimado Sr. Jones,.sp 2.PAGRefiriéndose a la obligación señalada de someter a inspección estatal nuestro nuevo proceso de producción, les pedimos que consideren la posible inconveniencia de someter las tecnologías innovadoras del mañana a las exigencias en gran medida anticuadas del ayer. Para que nuestro gran Estado prospere en el siglo XXI, debemos tomar medidas.B ahora,en.yo estoaño de.yo estodécada, para preparar nuestra base industrial para la competencia interestatal e internacional que seguramente aparecerá. Nuestro nuevo proceso hace precisamente eso. Por favor, no permitan que un entorno regulatorio que ya no sea adecuado lo deshaga..PAGGracias por considerar nuestra posición..FC Atentamente.SG

Una lista completa de macros disponibles generalmente aparece en una tmac(5) página de manual . [14]

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 entradas troff , encajando naturalmente en el uso de "canalizaciones" en Unix: enviando la salida de un programa como entrada a otro (ver tuberías y filtros ). Normalmente, cada preprocesador traduce sólo las secciones del archivo de entrada que están especialmente marcadas y pasa 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.

Tres preprocesadores proporcionan a troff capacidades de dibujo al definir un lenguaje de dominio específico para describir la imagen.

Además, hay un comando soelim que elimina .solas directivas de inclusión del texto de entrada. [24]

Una estructura típica de la tubería podría ser:

soelim file | refer | ideal | pic | tbl | eqn | troff

Aún más preprocesadores permiten dibujar imágenes más complejas generando resultados para pic .

Otros frontales

Se han desarrollado varias otras interfaces que pretenden ser interfaces más amigables para troff.

Uno de ellos es Sanscribe , desarrollado originalmente en Berkeley y luego mejorado durante la década de 1980 por varios usuarios, entre ellos Intel e InterACT . Utilizado para escribir notas, informes y documentos, Sanscribe se basa en comandos troff básicos, así como en las macros me y varios preprocesadores y posprocesadores como soelim, eqn, tbl, grap y pic. Sin embargo, es un programa binario principal, no un preprocesador. La capacidad de inclusión condicional la hace especialmente útil para mantener manuales de referencia multiplataforma. Sin embargo, Sanscribe es frágil y propenso a dar errores crípticos o producir resultados con formatos extraños. [28]

Un front-end de propósito especial es vgrind , que genera listados de programas fuente con un formato agradable, con características tales como poner 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. Tiene soporte para los lenguajes utilizados en las instalaciones de Bell Labs, incluidos no solo Fortran , C y C++ , sino también herramientas de dominio específico como Bourne Shell y yacc , así como otras más lejanas como Emacs Lisp e Icon . [24]

El conjunto de herramientas CADiZ para la notación Z emplea un enfoque diferente . En lugar de que el cadizprograma sea un preprocesador al frente de la canalización, interactúa varias veces troffcomo entrada y salida, utilizando archivos guardados en lugar de una canalización. CADiZ también contiene su propio conjunto de macros, llamadas .ZAmediante .ZZ. [29]

Ver también

Referencias

  1. ^ Kernighan, BW (octubre de 2019). Unix: una historia y una memoria. Publicación directa de Kindle. pag. 42.ISBN​ 9781695978553.
  2. ^ JF Ossanna. Manual de usuario de Nroff/Troff . CSTR #54, Bell Labs, 1976. Revisado por BW Kernighan, 1992.
  3. ^ McIlroy, Doctor en Medicina (1987). Un lector de Research Unix: extractos comentados del Manual del programador, 1971-1986 (PDF) (Informe técnico). CSTR. Laboratorios Bell. 139.
  4. ^ BW Kernighan. "Un TROFF independiente del tipógrafo" . CSTR #97, Bell Labs, 1981, revisado en marzo de 1982.
  5. ^ La guía privilegiada del universo (PDF) . Charles River Data Systems, Inc. 1983. pág. 13.
  6. ^ Consulte la página de manual de ditroff -> convertidor postscript en OpenSolaris: dpost(1) –  Manual de referencia de comandos de usuario de illusmos y OpenSolaris del último OpenSolaris basado en Sun
  7. ^ Emerson, Sandra L.; Paulsell, Karen (1987). Troff Composición tipográfica para sistemas UNIX · . Acantilados de Englewood, Nueva Jersey: Prentice-Hall. pag. 9.
  8. ^ Gehani, Narain (1992). Formato y composición tipográfica de documentos en el sistema UNIX (Segunda ed.). Summit, Nueva Jersey: Silicon Press. págs. 11-12.
  9. ^ Lindholm, Stephen. "Macros groff/troff: ms, mm, yo o mamá". ... . Consultado el 3 de junio de 2024 .
  10. ^ "Escribir y formatear páginas de manual de UNIX con macros -man". inicio.fnal.gov . Consultado el 7 de mayo de 2019 .
  11. ^ man(7)  -  Manual de miscelánea de Linux
  12. ^ mdoc(7)  -  Manual de información diversa de FreeBSD
  13. ^ "Índice: documentación ampliada de Mandoc". Mandoc . Consultado el 7 de mayo de 2019 .
  14. ^ ab groff_tmac(5) -  Manual de formatos de archivos de Linux
  15. ^ groff_me(7)  -  Manual de miscelánea de Linux
  16. ^ groff_mm(7)  -  Manual de miscelánea de Linux
  17. ^ groff_ms(7)  -  Manual de miscelánea de Linux
  18. ^ abc Srinivasan, B. (1993). Procesamiento y composición tipográfica de documentos UNIX. Singapur: World Scientific. págs. 11-12.
  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: Museo de Historia de la Computación. págs. 27-29, 37 . Consultado 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, Laboratorios Bell, mayo de 1974.
  21. ^ BW Kernighan. PIC: un lenguaje gráfico para composición tipográfica (manual del usuario revisado) . CSTR # 116, Bell Labs, diciembre de 1984.
  22. ^ CJ Van Wyk. IDEAL Manual de usuario . CSTR # 103, Bell Labs, diciembre de 1981.
  23. ^ grn: preprocesador groff para archivos gremlin [1].
  24. ^ ab Robbins, Arnold (1999). UNIX en pocas palabras: una referencia rápida de escritorio para System V versión 4 y Solaris 7 (tercera edición). Sebastopol, California: O'Reilly Media. págs. 151, 187-189.
  25. ^ JL Bentley y BW Kernighan. GRAP: un lenguaje para componer gráficos (tutorial y manual de usuario) . CSTR # 114, Laboratorios Bell, agosto de 1984.
  26. ^ JL Bentley, LW Jelinski y BW Kernighan. CHEM: un programa para componer diagramas de estructuras químicas . CSTR #122, Computadoras y Química, Bell Labs, abril de 1986.
  27. ^ JL Bentley. DFORMAT: un programa para componer formatos de datos . CSTR # 142, Laboratorios Bell, abril de 1988.
  28. ^ Sanscribe: Guía del usuario y referencia (Revisión 3.0 ed.). ... 13 de enero de 1989. págs. 1–1, 2–1, 3–2, 6–1.
  29. ^ Jordania, David; McDermid, John A.; Toyn, Ian (1991). Nicholls, JE (ed.). CADi Z {\displaystyle \mathbb {Z} } - Diseño asistido por computadora en Z. Z User Workshop, Oxford 1990: Actas de la Quinta Reunión Anual de Usuarios Z, Oxford: 17-18 de diciembre de 1990. Berlín, Heidelberg: Springer-Verlag. págs. 93-104.

Enlaces externos