troff - troff

troff
Autor (es) original (is) Joe Ossanna
Desenvolvedor (s) AT&T Bell Laboratories
Sistema operacional Unix , semelhante ao Unix , Plano 9
Plataforma Plataforma cruzada
Modelo Comando
Local na rede Internet troff .org Edite isso no Wikidata

troff ( / t i r ɒ f / ), abreviação de "roff tipógrafo", é o principal componente de um sistema de processamento de documentos desenvolvido pela AT & T Corporation para o Unix sistema operacional. troff e o nroff relacionado foram desenvolvidos a partir do roff original .

Enquanto nroff pretendia produzir saída em terminais e impressoras de linha, troff pretendia produzir saída em sistemas de composição , especificamente o CAT de Sistemas Gráficos que foi introduzido em 1972. Ambos usavam a mesma linguagem de marcação subjacente e um único arquivo de origem normalmente poderia ser usado por nroff ou troff sem alteração.

O troff possui comandos para designar fontes, espaçamento, parágrafos, margens, notas de rodapé e muito mais. Ao contrário de muitos outros formatadores de texto, o troff pode posicionar caracteres arbitrariamente em uma página, mesmo sobrepondo-os, e possui uma linguagem de entrada totalmente programável. Pré-processadores separados são usados ​​para uma produção mais conveniente de tabelas, diagramas e matemática. As entradas para o troff são arquivos de texto simples que podem ser criados por qualquer editor de texto.

Extensos pacotes de macros foram criados para vários estilos de documentos. Uma distribuição típica de troff inclui as macros me para formatar documentos de pesquisa, macros man e mdoc para criar páginas man Unix , macros mv para criar transparências montáveis e as macros ms e mm para cartas, livros, memorandos técnicos e relatórios.

História

troff ' origens s pode ser atribuída a um de formatação de texto programa chamado RUNOFF , que foi escrito por Jerome H. Saltzer para MIT ' s CTSS sistema operacional em meados de 1960. (O nome supostamente veio da frase Executarei um documento .)

Bob Morris o portou para a arquitetura GE 635 e chamou o programa de roff (uma abreviatura de runoff ). Ele foi reescrito como rf para o PDP-7 e, ao mesmo tempo (1969), Doug McIlroy reescreveu uma versão estendida e simplificada de roff na linguagem de programação BCPL .

A primeira versão do Unix foi desenvolvida em um PDP-7 que estava instalado na Bell Labs . Em 1971, os desenvolvedores queriam um PDP-11 para trabalhar no sistema operacional. Para justificar o custo desse sistema, eles propuseram a implementação de um sistema de formatação de documentos para o departamento de patentes da Bell Labs. Este primeiro programa de formatação foi uma reimplementação do roff de McIllroy , escrito por Joe F. Ossanna .

Quando eles precisaram de uma linguagem mais flexível, uma nova versão do roff chamada nroff ( mais novo "roff" ) foi escrita, que forneceu a base para todas as versões futuras. Quando eles obtiveram um fotocompositor CAT da Graphic Systems , Ossanna modificou o nroff para oferecer suporte a fontes múltiplas e espaçamento proporcional . Apelidado troff , por roff tipógrafo , sua saída sofisticado surpreender o fabricante tipógrafo e confuso revisores , que pensavam que os manuscritos usando troff tinha sido publicado antes. Como tal, o nome trof f é pronunciado / t i r ɒ f / em vez de * / t r ɒ f / .

Com o troff veio o nroff (eles eram quase o mesmo programa), que era para produzir saída para impressoras de linha e terminais de caracteres . Ele entendia tudo o que o troff fazia e ignorava os comandos que não eram aplicáveis, por exemplo, alterações de fonte .

O troff de Ossanna foi escrito em linguagem assembly PDP-11 e produziu saída especificamente para o fotocompositor CAT . Ele o reescreveu em C , embora agora tivesse 7.000 linhas de código não comentado e ainda dependesse do CAT. À medida que o CAT se tornou menos comum e não era mais suportado pelo fabricante, a necessidade de torná-lo compatível com outros dispositivos tornou-se uma prioridade. Ossanna morreu antes que essa tarefa fosse concluída, então Brian Kernighan assumiu a tarefa de reescrever troff . A versão reescrita recentemente produziu um código independente de dispositivo que foi muito fácil para os pós-processadores lerem e traduzirem para os códigos de impressora apropriados. Além disso, esta nova versão de troff (freqüentemente chamada de ditroff para troff independente de dispositivo ) tinha várias extensões, que incluíam funções de desenho. A documentação do programa define o formato de saída do ditroff , que é usado por muitos clones troff modernos como GNU groff .

A coleção troff de ferramentas (incluindo pré e pós-processadores) foi eventualmente chamada de Documenter's WorkBench (DWB) , e estava em desenvolvimento contínuo no Bell Labs e, posteriormente, no spin-off Unix System Laboratories (USL) em 1994. Naquela época , A SoftQuad assumiu a manutenção, embora Brian Kernighan continuasse a melhorar o troff por conta própria. Assim, existem pelo menos as seguintes variantes do troff original do Bell Labs em uso:

  • o SoftQuad DWB, baseado no USL DWB 2.0 de 1994;
  • o DWB 3.4 da Lucent Software Solutions (anteriormente USL);
  • troff, Plan 9 edition.

Embora o troff tenha sido suplantado por outros programas como Interleaf , FrameMaker e LaTeX , ele ainda está sendo usado extensivamente. Ele continua sendo o formatador padrão para a documentação do UNIX .

O software foi reimplementado como groff para o sistema GNU a partir de 1990. Além disso, devido ao código aberto de sistemas UNIX antigos, bem como sucessores modernos, como as versões de código aberto baseadas em ditroff encontradas no OpenSolaris e Plan 9 da Bell Labs , existem várias versões do AT&T troff (baseado em CAT e ditroff) disponíveis sob várias licenças de código aberto.

Macros

Troff inclui conjuntos de comandos chamados macros que são executados antes de iniciar o processamento do documento. Essas macros incluem configurar cabeçalhos e rodapés de página, definir novos comandos e, geralmente, influenciar como a saída será formatada. O argumento da linha de comando para incluir um conjunto de macros é -m name , o que fez com que muitos conjuntos de macros fossem conhecidos como o nome do arquivo base com um m inicial .

Os conjuntos de macro padrão, com m iniciais são:

  • homem para criar páginas de manual
  • mdoc para páginas de manual anotadas semanticamente , que são mais bem adaptadas para conversão de mandoc para outros formatos. mandocé uma fusão que suporta os dois conjuntos de comandos manuais.
  • eu por criar artigos de pesquisa
  • mm para criar memorandos
  • ms para a criação de livros, relatórios e documentação técnica

Uma lista mais abrangente de macros disponíveis geralmente é listada em uma tmac(5) página de manual .

Pré-processadores

Conforme o troff evoluiu, uma vez que há várias coisas que não podem ser feitas facilmente no troff , vários pré-processadores foram desenvolvidos. Esses programas transformam certas partes de um documento em entrada troff , cabendo naturalmente no uso de "pipelines" no Unix - enviando a saída de um programa como entrada para outro (veja tubos e filtros ). Normalmente, cada pré-processador traduz apenas as seções do arquivo de entrada que são especialmente marcadas, passando o resto do arquivo inalterado. As instruções de pré-processamento embutidas são escritas em uma linguagem de programação específica de aplicativo simples, que fornece um alto grau de poder e flexibilidade.

  • O pré-processador eqn permite que fórmulas matemáticas sejam especificadas de maneira simples e intuitiva.
  • tbl é um pré-processador para formatar tabelas.
  • refer (e o programa semelhante bib ) processa citações em um documento de acordo com um banco de dados bibliográfico .

Três pré-processadores fornecem troff com recursos de desenho, definindo uma linguagem de domínio específico para descrever a imagem.

Ainda mais pré-processadores permitem o desenho de imagens mais complexas, gerando saída para pic .

Reimplementações

  • groff é Projeto GNU 's livre substituto para troff e nroff.
  • unroff é uma substituição extensível de troff escrito em Scheme
  • O troff de herança é baseado no troff do OpenSolaris . Inclui suporte para fontes OpenType , suporte aprimorado para fontes Type 1 , suporte para Unicode , um novo algoritmo de formatação de parágrafo e um modo de compatibilidade groff .
  • mandoc é um compilador / formatador especializado apenas para os pacotes de macros man e mdoc .
  • Neatroff é uma nova implementação de troff, incluindo suporte para recursos de fonte avançados e texto bidirecional.

Veja também

Referências

links externos