Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

Groff

groff é um conjunto de programas que contém a implementação GNU de troff. Também inclui um script que é usado para emular nroff e o resto da família roff.


Embora roff e seus descendentes são usados ​​para fazer documentos formatados, eles fazem isso de uma forma que é um pouco estranha para os usuários modernos. A maioria dos documentos hoje em dia é produzida com processadores de texto capazes de realizar a composição e o layout de um documento em uma única etapa. Antes do advento do processador de texto gráfico, os documentos eram frequentemente produzidos em um processo de duas etapas envolvendo o uso de um editor de texto para executar a composição e um processador, como troff, para aplicar a formatação. As instruções para o programa de formatação foram incorporadas ao texto composto por meio do uso de uma linguagem de marcação. O análogo moderno para tal processo é a página da web, que é composta usando um editor de texto de algum tipo e então renderizada por um navegador da web usando HTML como a linguagem de marcação para descrever o layout final da página.

Não vamos cobrir Groff em sua totalidade, já que muitos elementos de sua linguagem de marcação lidam com detalhes bastante misteriosos de tipografia. Em vez disso, vamos nos concentrar em um de seus pacotes de macro que permanece em amplo uso. Esses pacotes de macro condensam muitos de seus comandos de baixo nível em um conjunto menor de comandos de alto nível que tornam o uso Groff muito facil.

Por um momento, vamos considerar a humilde página de manual. Vive no / usr / share / man diretório como um gzip arquivo de texto compactado. Se examinássemos seu conteúdo descompactado, veríamos o seguinte (a página do manual para ls na seção 1 é mostrado):


[me @ linuxbox ~] $ zcat /usr/share/man/man1/ls.1.gz | cabeça

. \ "NÃO MODIFIQUE ESTE ARQUIVO! Ele foi gerado por help2man 1.35.

.TH LS "1" "Abril de 2008" "GNU coreutils 6.10" "Comandos do usuário"

.SH NOME

ls \ - lista o conteúdo do diretório

.SH SINOPSE

.Bls

[\ fIOPTION \ fR] ... [\ fIFILE \ fR] ...

.SH DESCRIÇÃO

. \ "Adicione qualquer descrição adicional aqui

.PP

[me @ linuxbox ~] $ zcat /usr/share/man/man1/ls.1.gz | cabeça

. \ "NÃO MODIFIQUE ESTE ARQUIVO! Ele foi gerado por help2man 1.35.

.TH LS "1" "Abril de 2008" "GNU coreutils 6.10" "Comandos do usuário"

.SH NOME

ls \ - lista o conteúdo do diretório

.SH SINOPSE

.Bls

[\ fIOPTION \ fR] ... [\ fIFILE \ fR] ...

.SH DESCRIÇÃO

. \ "Adicione qualquer descrição adicional aqui

.PP


imagem

Em comparação com a página do manual em sua apresentação normal, podemos começar a ver uma correlação entre a linguagem de marcação e seus resultados:


[me @ linuxbox ~] $ man ls | cabeça

LS (1) Comandos do usuário

LS (1)

[me @ linuxbox ~] $ man ls | cabeça

LS (1) Comandos do usuário


NOME

NOME


ls - lista o conteúdo do diretório

ls - lista o conteúdo do diretório


SINOPSE

ls [OPÇÃO] ... [ARQUIVO] ...

SINOPSE

ls [OPÇÃO] ... [ARQUIVO] ...


A razão pela qual isto é de interesse é que as páginas do manual são renderizadas por Groff, Usando o homem-doc pacote de macro. Na verdade, podemos simular o homem comando com o seguinte tubo:



[me @ linuxbox ~] $ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc -T ascii | cabeça

LS (1) Comandos do usuário LS (1)


NOME

ls - lista o conteúdo do diretório


SINOPSE

ls [OPÇÃO] ... [ARQUIVO] ...

[me @ linuxbox ~] $ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc -T ascii | cabeça

LS (1) Comandos do usuário LS (1)


NOME

ls - lista o conteúdo do diretório


SINOPSE

ls [OPÇÃO] ... [ARQUIVO] ...


Aqui usamos o Groff programa com as opções definidas para especificar o mandoc pacote de macro e o driver de saída para ASCII. Groff pode produzir saída em vários formatos. Se nenhum formato for especificado, PostScript será gerado por padrão:



[me @ linuxbox ~] $ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc | cabeça

%! PS-Adobe-3.0

%% Creator: groff versão 1.18.1

%% CreationDate: Thu Fev 5 13:44:37 2009

%% DocumentNeededResources: fonte Times-Roman

%% + fonte Times-Bold

%% + fonte Times-Italic

%% DocumentSuppliedResources: procset grops 1.18 1

%% páginas: 4

%% PageOrder: Ascend

%% Orientação: Retrato

[me @ linuxbox ~] $ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc | cabeça

%! PS-Adobe-3.0

%% Creator: groff versão 1.18.1

%% CreationDate: Thu Fev 5 13:44:37 2009

%% DocumentNeededResources: fonte Times-Roman

%% + fonte Times-Bold

%% + fonte Times-Italic

%% DocumentSuppliedResources: procset grops 1.18 1

%% páginas: 4

%% PageOrder: Ascend

%% Orientação: Retrato


Mencionamos brevemente o PostScript no capítulo anterior e o faremos novamente no próximo capítulo. PostScript é uma linguagem de descrição de página usada para descrever o conteúdo de uma página impressa para um dispositivo semelhante a um tipógrafo. Se pegarmos a saída de nosso comando e armazená-la em um arquivo (assumindo que estamos usando uma área de trabalho gráfica com um Desktop diretório):


[me @ linuxbox ~] $ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc>

~ / Desktop / foo.ps

[me @ linuxbox ~] $ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc>

~ / Desktop / foo.ps


Um ícone para o arquivo de saída deve aparecer na área de trabalho. Ao clicar duas vezes no ícone, um visualizador de página deve iniciar e revelar o arquivo em sua forma renderizada:


imagem

Figura 4: Visualizando a saída PostScript com um visualizador de páginas no GNOME


O que vemos é uma página de manual bem escrita para ls! Na verdade, é possível converter o arquivo Post-Script em PDF (Portable Document Format) arquivo com este comando:



[me @ linuxbox ~] $ ps2pdf ~ / Desktop / foo.ps ~ / Desktop / ls.pdf

[me @ linuxbox ~] $ ps2pdf ~ / Desktop / foo.ps ~ / Desktop / ls.pdf


O ps2pdf programa faz parte do ghostscript , que é instalado na maioria dos sistemas Linux que oferecem suporte à impressão.


imagem

Dica: os sistemas Linux geralmente incluem muitos programas de linha de comando para formato de arquivo


imagem


imagem

conversão. Eles são freqüentemente nomeados usando a convenção de formato2formato. Tente usar o comando ls / usr / bin / * [[: alpha:]] 2 [[: alpha:]] * para identificá-los. Experimente também pesquisar programas com o nome formatoparaformato.


imagem

Para nosso último exercício com Groff, vamos revisitar nosso velho amigo distribuições.txt mais uma vez. Desta vez, vamos usar o tbl programa que é usado para formatar tabelas para compor nossa lista de distribuições Linux. Para fazer isso, vamos usar nosso anterior sede script para adicionar marcação a um fluxo de texto que iremos alimentar Groff.

Primeiro, precisamos modificar nosso sede script para adicionar os elementos de marcação necessários (chamados solicitações de in Groff) naquela tbl requer. Usando um editor de texto, vamos mudar distribuído para o seguinte:


#sed script para produzir relatório de distribuições Linux


1 i \

.TS \

caixa central; \ cb ss \

cb cb cb \ ln c. \

Relatório de Distribuições Linux \

=\

#sed script para produzir relatório de distribuições Linux


1 i \

.TS \

caixa central; \ cb ss \

cb cb cb \ ln c. \

Relatório de Distribuições Linux \

=\


Nome

_

Versão

Liberado\

Nome

_


s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/

$ a \

.TE

s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/

$ a \

.TE


imagem

Observe que para que o script funcione corretamente, deve-se ter cuidado para ver se as palavras “Versão do nome liberado” são separadas por tabulações, não por espaços. Salvaremos o arquivo resultante como distros-tbl.sed. tbl utiliza o . TS e .TE pedidos para iniciar e terminar a mesa. As linhas que seguem o . TS request define as propriedades globais da tabela que, para nosso exemplo, são centralizadas horizontalmente na página e rodeadas por uma caixa. As linhas restantes da definição descrevem o layout de cada linha da tabela. Agora, se executarmos nosso pipeline de geração de relatórios novamente com o novo sede script, obteremos o seguinte:


[me @ linuxbox ~] $ classificar -k 1,1 -k 2n distros.txt | sed -f distros-tbl

.sed | groff -t -T ascii 2> / dev / null

+ ------------------------------ +

| Relatório de Distribuições Linux |

+ ------------------------------ +

[me @ linuxbox ~] $ classificar -k 1,1 -k 2n distros.txt | sed -f distros-tbl

.sed | groff -t -T ascii 2> / dev / null

+ ------------------------------ +

| Relatório de Distribuições Linux |

+ ------------------------------ +



imagem

| Versão do nome liberada |

+ ------------------------------ +


| Fedora

5

2006-03-20

|

| Fedora

6

2006-10-24

|

| Fedora

7

2007-05-31

|

| Fedora

8

2007-11-08

|

| Fedora

9

2008-05-13

|

| Fedora

10

2008-11-25

|

| SUSE

10.1

2006-05-11

|

| SUSE

10.2

2006-12-07

|

| SUSE

10.3

2007-10-04

|

| SUSE

11.0

2008-06-19

|

| Ubuntu

6.06

2006-06-01

|

| Ubuntu

6.10

2006-10-26

|

| Ubuntu

7.04

2007-04-19

|

| Ubuntu

7.10

2007-10-18

|

| Ubuntu

8.04

2008-04-24

|

| Ubuntu

8.10

2008-10-30

|

+ ------------------------------ +


Adicionando o -t opção para Groff o instrui a pré-processar o fluxo de texto com tbl. Da mesma forma, o -T opção é usada para saída em ASCII em vez do meio de saída padrão, PostScript.

O formato da saída é o melhor que podemos esperar se estivermos limitados aos recursos de uma tela de terminal ou impressora do tipo máquina de escrever. Se especificarmos a saída PostScript e visualizarmos graficamente a saída, obteremos um resultado muito mais satisfatório:



[me @ linuxbox ~] $ classificar -k 1,1 -k 2n distros.txt | sed -f distros-tbl

.sed | groff -t> ~ / Desktop / foo.ps

[me @ linuxbox ~] $ classificar -k 1,1 -k 2n distros.txt | sed -f distros-tbl

.sed | groff -t> ~ / Desktop / foo.ps


imagem

Figura 5: Visualizando a Tabela Concluída


Top OS Cloud Computing na OnWorks: