Comando tbl do Linux
Em sistemas operacionais do tipo Unix, o tbl é um formatador de tabelas para troff , nroff e groff .
Este documento cobre a versão Linux do tbl .
Descrição
O GNU tbl faz parte do sistema de formatação de documentos groff . tbl compila descrições de tabelas incorporadas nos arquivos de entrada troff em comandos que são entendidos por troff . Normalmente, ele deve ser chamado usando a opção -t de groff . É altamente compatível com o Unix tbl herdado . A saída gerada pelo GNU tbl não pode ser processada com o Unix troff ; ele deve ser processado com GNU troff . Se nenhum arquivo for fornecido na linha de comando ou o nome de um traço (” – “) for fornecido, oentrada padrão é lida.
Sintaxe
tbl [-Cv] [ arquivos ...]
Opções
-C | Ative o modo de compatibilidade para reconhecer .TS e .TE, mesmo quando seguido por um caractere que não seja espaço ou nova linha . Os caracteres líderes ( \ a ) são tratados como interpretados. |
-v | Imprima o número da versão e saia. |
Uso
tbl espera encontrar descrições de mesa envolto na .TS (início de tabela) e .TE (fim da tabela) macros .
Opções globais
A linha imediatamente após a macro .TS pode conter qualquer uma das seguintes opções globais (ignorando o caso dos caracteres – o Unix tbl só aceita opções com todos os caracteres em minúsculas ou todos os caracteres em maiúsculas ), separados por espaços, tabulações ou vírgulas:
allbox | Coloque cada item da tabela em uma caixa. |
caixa | Coloque a tabela em uma caixa. |
Centro | Centralize a tabela (o padrão é justificado à esquerda ). O centro de nomes alternativo de palavras-chave também é reconhecido (esta é uma extensão GNU tbl ). |
ponto decimal ( c ) | Defina o caractere a ser reconhecido como o ponto decimal nas colunas numéricas ( somente GNU tbl ). |
delim ( xy ) | Use x e y como delimitadores de início e fim para eqn . |
doublebox | Coloque a tabela em uma caixa dupla. |
quadro duplo | O mesmo que o doublebox ( somente GNU tbl ). |
expandir | Faça a tabela tão larga quanto o comprimento da linha atual (fornecendo um fator de separação da coluna). Ignorado se um ou mais especificadores de coluna “x” forem usados (veja abaixo). Caso a soma das larguras da coluna seja maior que o comprimento da linha atual, o fator de separação da coluna é definido como zero; essas tabelas se estendem para a margem direita e não há separação de colunas. |
quadro, Armação | Igual à caixa ( somente GNU tbl ). |
tamanho da linha ( n ) | Defina linhas ou regras (por exemplo, da caixa ) no tipo de ponto n . |
nokeep | Não use desvios para impedir quebras de página ( apenas GNU tbl ). Normalmente, tbl tenta impedir quebras indesejáveis em tabelas em caixas usando desvios, que às vezes podem interagir mal com o uso de desvios dos pacotes de macro, quando notas de rodapé, por exemplo, são usadas. |
nospaces | Ignore os espaços à esquerda e à direita nos itens de dados ( apenas GNU tbl ). |
nowarn | Desative os avisos relacionados a tabelas que excedem a largura atual da linha ( somente GNU tbl ). |
guia ( x ) | Use o caractere x em vez de uma guia para separar itens em uma linha de dados de entrada. |
As opções globais devem terminar com um ponto e vírgula. Pode haver um espaço em branco entre uma opção e seu argumento entre parênteses.
Especificação do formato da tabela
Após as opções globais, vêm as linhas que descrevem o formato de cada linha da tabela. Cada linha de formato descreve uma linha da tabela, exceto que a última linha de formato (que você deve terminar com um ponto final) descreve todas as linhas restantes da tabela. Um caractere de chave única descreve cada coluna de cada linha da tabela. Os caracteres principais podem ser separados por espaços ou tabulações. Você pode executar especificações de formato para várias linhas juntas na mesma linha, separando-as com vírgulas.
Você pode seguir cada caractere-chave com especificadores que determinam a fonte e o tamanho do ponto do item correspondente, que determinam a largura da coluna, o espaçamento entre colunas, etc.
A linha de formato mais longa define o número de colunas na tabela; descritores de formato em falta na extremidade de linhas de formato são assumidos como sendo L . Colunas extras nos dados (que não possuem entrada de formato correspondente) são ignoradas.
Os principais caracteres disponíveis são:
a , A | Centralize a linha mais longa nesta coluna e justifique à esquerda todas as outras linhas nesta coluna em relação a essa linha centralizada. A idéia é usar essas subcolunas alfabéticas (daí o nome do caractere principal) em combinação com L ; elas são chamadas subcolunas porque os itens A são recuados por 1 n em relação às entradas L. Exemplo:.TS aba(;); Em um. item um; 1 subitem dois; 2 subitem três; 3 .T & Em um. item onze; 11 subitem vinte e dois; 22 subitem trigésimo terceiro; 33 .TE Resultado: item um 1 subitem dois 2 subitem três 3 item onze 11 subitem vigésimo segundo 22 subitem trigésimo terceiro 33 |
c , c | Item central na coluna. |
eu , l | Justificar à esquerda item dentro da coluna. |
n , n | Justifique numericamente o item na coluna: As posições dos números das unidades são alinhadas verticalmente. Se houver um ou mais pontos adjacentes a um dígito, use o ponto mais à direita para o alinhamento vertical. Se não houver ponto, use o dígito mais à direita para o alinhamento vertical; caso contrário, centralize o item na coluna. O alinhamento pode ser forçado a uma determinada posição usando ‘ \ & ‘; se houver uma ou mais instâncias desse caractere especial (não imprimível) presente nos dados, use a mais à esquerda para alinhar. Exemplo:.TS n. 1 1.5 1.5.3 abcde a \ & bcde .TE Resultado: 1 1.5 1.5.3 abcde abcde Se as entradas numéricas forem combinadas com as entradas L ou R (isso pode acontecer se o formato da tabela for alterado com .T e ), centralize o número mais amplo (dos dados inseridos no regime do especificador N ) em relação à entrada L ou R mais ampla , preservando o alinhamento de todas as entradas numéricas. Ao contrário das entradas do tipo A , não há recuo extra. Utilizando as equações (a ser processado com eqn ) dentro de colunas que utilizam o N especificador é problemático na maioria dos casos devido à tbl de algoritmo para encontrar o alinhamento vertical, como descrito acima. Usando o globalopção delim , no entanto, é possível fazer com que tbl ignore os dados nos delimitadores eqn para esse fim. |
r , R | Justifique à direita o item dentro da coluna. |
s , S | Coloque o item anterior à esquerda nesta coluna. Não permitido para a primeira coluna. |
^ | Expanda a entrada da linha anterior nesta coluna. Não permitido para a primeira linha. |
_ , – | Substitua esta entrada por uma linha horizontal. Observe que ” _ ” e ” – ” podem ser usados apenas para campos da tabela, não para linhas separadoras de coluna. |
= | Substitua esta entrada por uma linha horizontal dupla. Observe que ” = ” pode ser usado apenas para campos da tabela, não para linhas separadoras de coluna. |
| | A coluna correspondente se torna uma regra vertical (se duas delas forem adjacentes, uma regra vertical dupla). |
Uma barra vertical à esquerda da primeira letra-chave ou à direita da última produz uma linha na borda da tabela.
Para alterar o formato dos dados em uma tabela, use o comando .T & (no início de uma linha). É seguido por linhas de formato e dados (mas sem opções globais) semelhantes à solicitação .TS .
Especificadores de coluna
Aqui estão os especificadores que podem aparecer em sufixos nas letras-chave da coluna (em qualquer ordem):
b , B | Forma abreviada de fB ( coloque as entradas afetadas em negrito). |
d , D | Inicie um item que abranja linhas verticalmente, usando o especificador de coluna ” ^ ” ou o item de dados ” \ ^ “, na parte inferior do intervalo, em vez de centralizá-lo verticalmente ( somente GNU tbl ). Exemplo:.TS guia (;) allbox; ll eu ld r ^ eu. 0000; foobar T { 1111 .br 2222 T}; foo r; T { 3333 .br 4444 T}; bar \ ^; \ ^ .TE Resultado: ┌─────┬────────┐ │0000 │ foobar │ ├─────┼────────┤ │1111 │ │ 222222 │ │ ├─────┤ │ │ r │ foo │ ├─────┼────────┤ 333333 │ │ 444444 │ bar │ └─────┴────────┘ |
e , E | Faça colunas igualmente espaçadas. Todas as colunas marcadas com este especificador têm a mesma largura; isso acontece depois que as larguras da coluna afetadas foram calculadas (isso significa que o maior valor da largura é o regra). |
f , f | Qualquer um desses especificadores pode ser seguido por um nome de fonte (com um ou dois caracteres), número de fonte (um dígito) ou nome longo entre parênteses (o último formulário é uma extensão GNU tbl ). Um nome de fonte de uma letra deve ser separado por um ou mais espaços em branco do que se segue. |
i , I | Forma abreviada de fI ( insira os itens afetados em itálico). |
m , M | Esta opção é uma extensão GNU tbl . Qualquer um desses especificadores pode ser seguido por um nome de macro (um ou dois caracteres) ou um nome longo entre parênteses. Um nome de macro com uma letra deve ser separado por um ou mais espaços em branco do que segue. A macro cujo nome pode ser especificado aqui deve ser definida antes da criação da tabela. É chamado logo antes da saída do texto da célula da tabela. Conforme implementada atualmente, essa macro é chamada apenas se a entrada de bloco for usada, ou seja, texto entre ” T { ” e ” T} “. A macro deve conter apenas solicitações de troff simples para alterar a formatação do bloco de texto, como ajuste de texto, hifenização, tamanho ou fonte. A macro é chamada após outras modificações celulares, como b ,ou v são emitidos. Assim, a macro pode substituir outros especificadores de modificação. |
p , P | Seguido por um número, isso altera o tamanho do ponto para os campos afetados. Se assinado, o tamanho atual do ponto é aumentado ou diminuído (usar um número assinado em vez de um dígito assinado é uma extensão GNU tbl ). Um especificador de tamanho de ponto seguido por um número de separação de coluna deve ser separado por um ou mais espaços em branco. |
t , t | Inicie um item estendendo verticalmente as linhas na parte superior do intervalo, em vez de centralizá-lo verticalmente. |
u , U | Mova a coluna correspondente para cima uma meia linha. |
v , v | Seguido por um número, indica o espaçamento vertical entre linhas a ser usado em uma entrada de tabela de várias linhas. Se assinado, o espaçamento vertical vertical atual é aumentado ou diminuído (usar um número assinado em vez de um dígito assinado é uma extensão GNU tbl ). Um especificador de espaçamento de linha vertical seguido por um número de separação de coluna deve ser separado por um ou mais espaços em branco. Sem efeito se a entrada da tabela correspondente não for um bloco de texto. |
w , W | Valor mínimo da largura da coluna. Deve ser seguido por uma expressão de largura de troff entre parênteses ou um número inteiro sem unidade. Se nenhuma unidade for fornecida, en unidades serão usadas. Além disso, usado como o comprimento da linha padrão para os blocos de texto incluídos. Se usada várias vezes para especificar a largura de uma coluna específica, a última entrada entra em vigor. |
x , x | Uma coluna expandida. Depois de calcular todas as larguras de coluna sem um especificador x , use a largura de linha restante para esta coluna. Se houver mais de uma coluna expandida, distribua o espaço horizontal restante igualmente entre as colunas afetadas (esta é uma extensão GNU). Esse recurso tem o mesmo efeito que especificar uma largura mínima da coluna. |
z , z | Ignore a coluna correspondente para fins de cálculo da largura, ou seja, não use os campos, mas apenas os especificadores desta coluna para calcular sua largura. |
Um sufixo numérico em um caractere-chave é interpretado como uma separação de coluna em unidades (multiplicada em proporção se a opção de expansão estiver ativada – no caso de tabelas excessivas, esse valor pode ser zero). A separação padrão é 3n .
O especificador de coluna x é mutuamente exclusivo com e e w (mas e não é mutuamente exclusivo com w ); se especificado várias vezes para uma coluna específica, a última entrada entra em vigor: x desativa e e w , enquanto e ou w substitui x .
Dados da tabela
As linhas de formato são seguidas por linhas que contêm os dados reais da tabela, seguidas finalmente por .TE . Dentro dessas linhas de dados, os itens são normalmente separados por caracteres de tabulação (ou o caractere especificado com a opção de tabulação). Linhas de entrada longas podem ser divididas em várias linhas se o último caractere da linha for ” \ ” (que desaparece após a concatenação).
Observe que tbl calcula as larguras da coluna linha por linha, aplicando \ w em cada entrada que não é um bloco de texto. Como conseqüência, construções como
.TS c, l. \ s [20] MM MMMM .TE
falhou; você deve dizer
.TS CP20, PB20. MILÍMETROS MMMM .TE
ou
.TS c, l. \ s [20] MM \ s [20] MMMM .TE
Um ponto que inicia uma linha, seguido por qualquer coisa, exceto um dígito, é tratado como um comando de troff , transmitido sem alterações. A posição da tabela é inalterada neste caso.
Se uma linha de dados consistir apenas em ” _ ” ou ‘ = ‘, uma linha simples ou dupla, respectivamente, será desenhada na tabela nesse ponto; se um único item em uma linha de dados consistir apenas em ‘ _ ‘ ou ‘ = ‘, esse item será substituído por uma linha única ou dupla, unindo seus vizinhos. Se um item de dados consistir apenas em ‘ \ _ ‘ ou ‘ \ = ‘, uma linha única ou dupla, respectivamente, será desenhada através do campo naquele ponto que não une seus vizinhos. Um item de dados que consiste apenas em ‘ \ Rx ‘ (‘ x ‘ qualquer caractere) é substituído por repetições do caractere ‘ x ‘ tão largo quanto a coluna (não unindo seus vizinhos). Um item de dados que consiste apenas em ‘\ ^ ‘indica que o campo imediatamente acima se estende para baixo nessa linha.
Blocos de texto
Um bloco de texto pode ser usado para inserir dados como uma única entrada, que seria muito longa como uma sequência simples entre as guias. É iniciado com ‘ T { ‘ e fechado com ‘ T} ‘. O primeiro deve terminar uma linha e o segundo deve iniciar uma linha, provavelmente seguida por outras colunas de dados (separadas por tabulações ou pelo caractere fornecido com a opção global de tabulação).
Por padrão, o bloco de texto é formatado com as configurações que estavam ativas antes de entrar na tabela, possivelmente substituídas pelos especificadores m , v e w tbl . Por exemplo, para tornar todos os blocos de texto irregulares à direita, insira .na imediatamente antes do .TS inicial (e .ad após a tabela).
Se os especificadores ‘ w ‘ ou ‘ x ‘ não forem fornecidos para todas as colunas de uma extensão de bloco de texto, o comprimento padrão do bloco de texto (para ser mais preciso, o comprimento da linha usada para processar o desvio do bloco de texto) será computado como L × C / (N + 1) , onde ‘ L ‘ é o comprimento da linha atual, ‘ C ‘ o número de colunas estendidas pelo bloco de texto e ‘ N ‘ o número total de colunas na tabela. Observe, no entanto, que a largura de desvio real, conforme retornada no registro \ n [dl], é usada eventualmente como a largura do bloco de texto. Se necessário, você também pode controlar a largura do bloco de texto com uma inserção direta de uma solicitação .ll logo após ‘
Diversos
O registro numérico \ n [TW] mantém a largura da tabela; ele não pode ser usado na própria tabela, mas é definido antes de chamar .TE, para que essa macro possa utilizá-la.
tbl também define uma macro .T # que produz as linhas inferior e lateral de uma tabela em caixa. Enquanto tbl chama essa macro em si no final da tabela, ela pode ser usada por pacotes de macro para criar caixas para tabelas de várias páginas chamando-a no rodapé da página. Um exemplo disso é mostrado pelas macros -ms que fornecem essa funcionalidade se uma tabela iniciar com .TS H em vez da chamada padrão para a macro .TS .
Interação com eqn
tbl sempre deve ser chamado antes do eqn , não depois. (O Groff cuida automaticamente da ordem correta dos pré-processadores.)
Melhorias no GNU tbl
Não há limite para o número de colunas em uma tabela, nem limite para o número de blocos de texto. Todas as linhas de uma tabela são consideradas na decisão da largura da coluna, não apenas nas primeiras 200. As linhas de continuação da tabela ( .T & ) não são restritas às 200 primeiras linhas.
Itens numéricos e alfabéticos podem aparecer na mesma coluna.
Os itens numéricos e alfabéticos podem se estender horizontalmente.
tbl usa nomes de registro, string, macro e desvio começando com o dígito 3. Ao usar tbl, você deve evitar o uso de nomes começando com 3.
GNU tbl dentro de macros
Como tbl define suas próprias macros (logo antes de cada tabela), é necessário usar uma macro ‘final de macro’. Além disso, o caractere de escape deve ser desligado. Aqui está um exemplo:
.eo .de DISPONÍVEL .. .TS guia allbox (;); cl. \ $ 1; \ $ 2 .TE ... .ec .ATABLE Uma mesa .ATABLE Outra mesa .ATABLE E "outro"
Observe, no entanto, que nem todos os recursos do tbl podem ser agrupados em uma macro porque o tbl vê a entrada antes do troff . Por exemplo, a formatação de números com pontos decimais alinhados verticalmente falhará se esses números forem passados como parâmetros de macro porque o alinhamento de pontos decimais é tratado pelo próprio tbl : ele só vê ‘ \ $ 1 ‘, ‘ \ $ 2 ‘ etc. etc. e, portanto, pode ‘ t reconhece o ponto decimal.
Insetos
Você deve usar .TS H / .TH em conjunto com um pacote de macro de suporte para todas as tabelas em caixas de várias páginas. Se não houver um cabeçalho que você deseja que apareça na parte superior de cada página da tabela, coloque a linha .TH imediatamente após a seção de formato. Não coloque uma tabela de várias páginas nas macros manter / liberar ou desvie-a de qualquer outra maneira.
Um bloco de texto dentro de uma tabela deve poder caber em uma página.
A solicitação de bp não pode ser usada para forçar uma quebra de página em uma tabela de várias páginas. Em vez disso, defina BP da seguinte maneira:
.de BP . ie '\\ n (.z' '.bp \\ $ 1 . el \ !. BP \\ $ 1 ..
e use BP em vez de bp .
Usar \ a diretamente em uma tabela para obter líderes não funciona (exceto no modo de compatibilidade). Este é o comportamento correto: \ a é um líder não interpretado. Para que os líderes usem um líder real, usando um controle A ou assim:
.ds a \ a .TS aba(;); lw (1i) l. A \ * a; B .TE
Um líder e / ou à direita ‘ | ’em uma linha de formato, como
| lr |.
fornece uma saída que possui um espaço de 1n entre a regra vertical limite resultante e o conteúdo da coluna adjacente, como em
.TS aba(#); | lr |. coluna da esquerda # coluna da direita .TE
Se desejar ter espaço zero (para que a regra toque o conteúdo), isso pode ser conseguido através da introdução de colunas “fictícias” extras, sem conteúdo e com separação zero, antes e / ou depois, como em
.TS aba(#); r0 | l r0 | l. # coluna da esquerda # coluna da direita # .TE
As colunas “fictícias” resultantes são invisíveis e têm largura zero; observe que essas colunas geralmente não funcionam com dispositivos TTY .
Exemplos
Dado um arquivo, table.txt , contendo os seguintes comandos tbl :
.TS guia (;) allbox; ll eu ld r ^ eu. 0000; foobar T { 1111 .br 2222 T}; foo r; T { 3333 .br 4444 T}; bar \ ^; \ ^ .TE
… então o seguinte comando tbl , canalizado para o comando nroff :
tbl table.txt | nroff -T ascii
… produzirá a seguinte tabela, no formato ASCII :
+ ----- + -------- + 0000 foobar | + ----- + -------- + 1111 | 2222 | + ----- + | | r | foo | + ----- + -------- + 3333 | 4444 bar | + ----- + -------- +
Comandos relacionados
eqn – Processador de linguagem para descrever equações.
nroff – Formata documentos para exibição no terminal ou impressora de linha.
troff – Documentos de tipos ou formatos para exibição no terminal ou impressora de linha.