syntax_highlight <source_file> | lpr

10

Alguém conhece uma maneira simples de produzir o PostScript correspondente a uma versão realçada em sintaxe de um arquivo de origem que pode ser canalizado diretamente para uma impressora PostScript?

Como provavelmente sugere a redação da pergunta acima, estou procurando algo que possa ser executado na linha de comando. Estou pensando em uma interação como:

% syntax_highlight <SOURCE_FILE> | lp

... com opções de linha de comando, conforme necessário, etc.

O melhor que encontrei até agora é um utilitário Unix chamado highlight, mas tem problemas. O mais sério disso é que ele não tem uma opção para gerar PostScript diretamente. (Como highlightsuporta a saída LaTeX, tentei consertar um script que automatizasse o processo de geração do arquivo PostScript via * .tex => * .dvi => * .ps, mas a aparência visual do resultado final é terrível, muito pior do que é para o arquivo HTML highlightgerado para a mesma entrada de código-fonte.)

Obrigado!

kjo
fonte

Respostas:

13

Você pode usar o vim.

vim -c hardcopy -c quit /path/to/file

Isso imprimirá o arquivo e será encerrado imediatamente. Por padrão, o vim é impresso com destaque de sintaxe.

Se você precisar imprimir a partir de stdout de algum comando, faça o seguinte:

cat some_file.c | vim -c hardcopy -c 'quit!' -

Se você deseja salvar o arquivo .ps para mais tarde, faça isso adicionando redirecionamento ao comando de cópia impressa, da seguinte maneira:

vim -c 'hardcopy > /path/to/saved.ps' -c 'quit' /path/to/file

O Vim permite definir muitas opções relacionadas à impressão; portanto, você pode querer ver a documentação, se quiser ajustá-la. Obviamente, também existem muitas opções de destaque de sintaxe .

Shawn J. Goff
fonte
5

Existem vários programas que imprimem várias linguagens de programação no Postscript, que não exigem a execução de nenhum software de terceiros:

Se você estiver disposto a usar o LaTeX, terá mais opções. Ir pelo LaTeX é muito útil se você deseja incluir código e algo mais no mesmo documento; caso contrário, é um exagero.

Gilles 'SO- parar de ser mau'
fonte
3

No Gedit, o editor padrão do gnome, você pode imprimir em arquivo, escolher Postscript (PDF padrão) e marcar na terceira guia, para usar o realce, que está desativado como padrão, o que produz um bom arquivo ps para mim.

E o Gedit possui muitos arquivos de sintaxe, para atender a muitas linguagens de programação, HTML, SQL, XML, arquivos rc, o que você quiser.

Usuário desconhecido
fonte
Isso funciona, exceto que, para mim (gedit 3.10.4 no Ubuntu 14.04.4), o PDF gerado está em escala de cinza, não em cores. A impressão também resulta diretamente em escala de cinza.
Você
0

Expandindo a resposta de Shawn J. Goff:

Você pode usar o seguinte comando vim de linha única para criar um arquivo .ps no vim:

:hardcopy > %.ps

Se você preferir um arquivo .pdf, poderá fazer:

:hardcopy > %.ps | !ps2pdf %.ps && rm %.ps

Nota:

  • É %uma abreviação para o nome do arquivo atual, portanto HelloWorld.Cserá impresso em HelloWorld.C.psouHelloWorld.C.pdf

Além disso, para alterar a fonte renderizada, defina a fonte da impressora antes de executar o comando de cópia impressa. Por exemplo, para selecionar Courier 8:

:set printerfont=Courier:h8

Juntando tudo, optei por colocar o seguinte no meu arquivo .vimrc para que eu possa simplesmente executar o comando :HardcopyPsou :HardcopyPdf(que também pode operar em um intervalo selecionado dentro de um arquivo):

set printfont=Courier:h8 "select the font to use when printing
command! -range=% HardcopyPs <line1>,<line2> hardcopy > %.ps && echo 'Created: %.ps'
command! -range=% HardcopyPdf <line1>,<line2> hardcopy > %.ps | !ps2pdf %.ps && rm %.ps && echo 'Created: %.pdf'
arr_sea
fonte