Como usar o Troff para formatar documentos PDF no Linux
Troff é um processador de texto de documento mínimo, mas poderoso, para sistemas Linux. Ele permite que você crie facilmente documentos prontos para impressão compilando arquivos de origem a partir da linha de comando. Ao contrário do LaTeX, o Troff é incrivelmente leve e vem pré-instalado na maioria dos sistemas Linux. Este tutorial mostra como usar o Troff para formatar documentos PDF no Ubuntu.
O que é Troff e por que usá-lo
Em um sentido básico, o Troff é um programa de processamento de texto que converte scripts semelhantes a códigos em documentos imprimíveis. Ao contrário dos processadores de texto, o Troff não depende do paradigma “WYSIWYG”. Em vez disso, exige que você use tipos específicos de código para lidar com a formatação.
Uma das maiores vantagens dessa abordagem é a simplicidade. Uma instalação básica do Troff terá tudo o que você precisa para criar um documento. Além disso, a falta de uma interface gráfica do usuário significa que você pode criar um documento até mesmo por SSH.
Instalando o Troff
O Troff geralmente é incluído por padrão na maioria das distribuições do Linux. Você pode verificar se o possui em seu sistema executando seu -h
sinalizador. Isso exibirá uma breve lista de todos os sinalizadores que sua instalação do Troff aceita.
troff -h
Existem casos em que as distribuições não agrupam o Troff por padrão. Nesse caso, você pode instalá-lo procurando pelo pacote “groff”.
Esta é uma reimplementação dos programas Troff e Nroff pelo Projeto GNU, que inclui vários recursos novos e modernos.
Você pode instalar o groff no Ubuntu usando o seguinte comando:
sudo apt install groff
Criando seu primeiro documento Troff
Semelhante ao código-fonte, todo documento Troff é um arquivo de texto que contém instruções sobre como criar um documento. Isso inclui a largura da página e da margem, bem como o espaçamento entre letras e páginas.
Este nível de controle permite que você manipule o programa para criar qualquer tipo de documento. Para simplificar isso, os desenvolvedores do Troff criaram “macros” que condensam esses comandos em uma sintaxe mais simples.
Uma das macros mais comuns que você usará no Troff é “ms”. Ele criará um documento em um estilo de artigo. Você pode criar um documento ms usando o touch
comando:
touch my-first-document.ms
Como todos os documentos Troff são texto, você pode abrir seu documento usando um editor de texto. No meu caso, estou usando o vim. Como alternativa, você pode usar qualquer um desses editores de texto para Linux.
vim my-first-document.ms
Entendendo o formato Troff
Todos os documentos Troff seguem uma estrutura semelhante. Cada comando de formatação que você faz precisa estar em uma linha separada no conteúdo que está tentando formatar. Como tal, um documento Troff típico será mais ou menos assim:
.COMMAND1
This is a piece of content in a Troff document.
.COMMAND2
This is a different piece of content in a Troff document.
Dois dos comandos mais básicos que você usará no ms são .TL
e .PP
. O primeiro converte seu texto em um título e o centraliza em seu documento, enquanto o último formata seu texto para seguir um estilo de parágrafo.
Por exemplo, o trecho a seguir usa os comandos .TL
e :.PP
.TL
My First Troff Document
.PP
This is content that I want to look like a paragraph in my final document. It is not a very long content but it is my first Troff document and it is something that I am proud of. It is about three sentences long and it should wrap around the document properly.
A partir daqui, crie seu documento passando seu arquivo para o programa Troff.
groff -ms -Tpdf. /my-first-document.ms > output.pdf
Criação de texto em negrito, itálico e sublinhado
Assim como um processador de texto comum, a maioria das macros Troff fornece vários comandos de estilo para personalizar seu documento. Para ms, estes são .B
, .I
, .UL
e .BX
.
- O
.B
comando altera o texto para negrito. - O
.I
comando altera o texto para itálico. -
.UL
e.BX
são comandos que desenham um sublinhado e uma caixa ao redor do seu texto, respectivamente.
Semelhante aos comandos acima, usá-los em seu documento requer que você separe cada estilo em sua própria linha:
.TL
My First Troff Document
.PP
This is
.B
content
.R
that I want to look like a paragraph in my final document. [...]
Neste exemplo, criei uma nova linha antes da palavra “content” e adicionei o .B
comando para mudar para negrito, depois criei uma nova linha e adicionei o .R
comando. Isso permite que Troff volte ao seu estilo anterior.
É importante observar que você sempre precisa adicionar o .R
comando ao alterar o estilo. Por exemplo, o trecho a seguir não encerrará o .I
comando, pois Troff não viu um .R
depois dele:
.TL
My First Troff Document
.PP
This is
.I
content
that I want to look like a paragraph in my final document. [...]
Criando Novas Seções de Documento
Semelhante ao LaTeX, o Troff também oferece suporte à detecção de seções e hierarquia, portanto, você não precisa organizar e corresponder ao nível de cada cabeçalho ao editar.
Para criar uma nova seção em seu documento, use o .NH
comando seguido do nome do título.
.TL
My First Troff Document
.NH
My First Heading
.PP
This is content that I want to look like a paragraph in my final document.
Por padrão, cada cabeçalho Troff tem um valor de nível que determina como o programa estrutura e exibe seu conteúdo no documento final. Sabendo disso, você pode alterar esse valor para ajustar o nível de um título.
Por exemplo, o seguinte cria um título de nível 2 imediatamente abaixo de seu pai:
.TL
My First Troff Document
.NH
My First Heading
.NH 2
My First Subheading
.PP
This is content that I want to look like a paragraph in my final document.
Além dos cabeçalhos numerados regulares, o Troff também pode criar cabeçalhos em branco que ainda seguirão a hierarquia de nível do documento.
Para fazer isso, substitua .NH
pelo .SH
comando:
.TL
My First Troff Document
.SH
My First Heading
.SH 2
My First Subheading
.PP
This is content that I want to look like a paragraph in my final document.
Criando Listas no Troff
A simplicidade do Troff também permite que você dobre seu comportamento para o que você precisa. Por exemplo, as listas não vêm por padrão nas macros Troff ou ms. Apesar disso, você ainda pode criar uma lista combinando alguns comandos ms.
Cada lista no Troff consiste em três partes: um recuo, um marcador e o conteúdo. Para criar o recuo, use os comandos .RS
e . .RE
Isso moverá o nível de recuo atual de qualquer texto dentro dele em quatro espaços.
.RS
This is my first item.
.RE
Em seguida, crie o marcador para o item da lista usando .IP
. Este é o comando “recuar parágrafo” que corrige a margem esquerda do seu texto para uma certa largura.
O .IP
comando também permite definir um marcador personalizado e o espaço entre ele e o texto. Nesse caso, estou definindo meu marcador como “[1]” e darei quatro espaços.
.RS
.IP [1] 4
This is my first item.
.RE
Agora copie e cole seu .IP
comando para criar itens de lista adicionais.
.RS
.IP [1] 4
This is my first item.
.IP [2] 4
This is my second item.
.IP [3] 4
This is my third item.
.RE
Por fim, automatize esse processo criando uma macro personalizada. Por exemplo, o trecho a seguir limita meu .IP
comando a .QW
:
.de QW
.IP [-] 4
..
.RS
.QW
This is my first item.
.QW
This is my second item.
.QW
This is my third item.
.RE
Criando tabelas com pré-processadores no Troff
Uma peculiaridade do Troff é que a maioria de seus recursos existe como “pré-processadores”. Na maioria das vezes, esses são binários fora do programa que funcionam criando “scripts de contêiner de pré-processador” e convertendo-os em código Troff de baixo nível.
Tbl é um ótimo exemplo de um pré-processador Troff. É um programa que gerencia tabelas em um documento. Um contêiner Tbl básico se parece com isto:
.TS
allbox ;
c c c.
item1 <Tab> item2 <Tab> item3
item4 <Tab> item5 <Tab> item6
.TE
- Os comandos
.TS
e.TE
informam ao Tbl que este é um ambiente que ele pode ler. - A segunda linha diz ao programa como formatar esta tabela.
- A terceira linha é um campo separado por espaço que determina a quantidade de colunas e seu alinhamento em sua tabela.
- A quarta e a quinta linhas são campos separados por tabulações que contêm o conteúdo da sua tabela.
Compilar um documento com Tbl é um pouco diferente de um arquivo Troff normal. Primeiro, carregue seu arquivo:
tbl my-first-document.ms > preprocessed.ms
Em seguida, alimente a saída do programa para o Troff:
groff -ms -Tpdf. /preprocessed.ms > output.pdf
Por fim, automatize esse processo usando pipes UNIX:
tbl my-first-document.ms | groff -ms -Tpdf > output.pdf
perguntas frequentes
É possível usar o Troff no Windows?
Por padrão, nem Troff nem Groff são oficialmente transferidos para o Windows. Apesar disso, você ainda pode usar o Groff junto com outros utilitários GNU instalando o Windows Subsystem for Linux.
O Troff tem um recurso de rastreamento de bibliografia?
Sim. Refer
é um pré-processador simples que usa um arquivo de bibliografia externa para rastrear automaticamente as referências em um documento Troff. Você pode aprender mais sobre como funciona visitando sua página de manual executando man refer
.
Como posso corrigir o erro “missing DESC” ao compilar o Troff?
Esse problema provavelmente ocorre devido a uma dependência ausente em seu sistema ou a um arquivo de versão incompatível. Para corrigir isso, instale o pacote groff apropriado do repositório da sua distribuição.
Crédito da imagem: Simon Hattinga Verscheure via Unsplash . Todas as alterações e screenshots por Ramces Red.
Deixe um comentário