Como imprimir código bem formatado

20

Semelhante ao uso da marcação no Stack Overflow para criar monospace output, como posso fazer isso nos meus programas.

Eu tentei lp filename.txt e fiquei agradavelmente satisfeito ao descobrir que era capaz de usar a impressora de rede local e imprimir 'como está'

O problema é que a saída não é mono-espaçada.

Existe uma opção mais rápida do que ...

1) copy the text
2) paste into a text doc
3) format the document as mono
4) print it 

Eu adoraria encontrar alguma opção como lp filename.txt -format=mono;)

Michael Durrant
fonte
11
possível duplicata de syntax_highlight <source_file> | lpr
Gilles 'SO- stop be evil'

Respostas:

21

Você pode usar o editor vim para imprimir arquivos arbitrários que o vim pode ler. Use o seguinte para criar um arquivo PostScript.

vim \
  -c 'hardcopy > output.ps' \
  -c quit <input_file>

Se você deseja um arquivo PDF, adicione && ps2pdf output.psà linha de comando.

Você também pode escrever um pequeno script que cole o conteúdo atual da área de transferência em um arquivo temporário, execute o vim no arquivo, imprima o arquivo resultante e exclua o arquivo temporário.

Marco
fonte
11
Uma boa opção para o vimrc para quando você imprime código é set printoptions=portrait:nimprimir no modo paisagem.
Oligofren
11
Provavelmente não sou o único aqui que queria desativar os cabeçalhos das páginas depois que a impressão funcionou. Você pode desativá-los adicionando set printoptions=header:0ao vimrc.
Andy Gaskell
Para HTMl você pode fazervim -c TOhtml -c write -c quit <input_file>
Matthew Cline
11
Opa, isso deve ser feitovim -c 'set cmdheight=2' -c TOhtml -c write -c quit -c quit <input_file>
Matthew Cline
@AndyGaskell Eu fiz uma pergunta, por favor, veja se você pode resolvê-lo: unix.stackexchange.com/questions/315363/…
uma oferta não pode recusar
12

O caminho mais curto aqui provavelmente é usar a2ps, pois gera postscript monoespaçado por padrão.

Você pode instalar a2pscom o brew, ou seja,brew install a2ps

Dependendo de sua configuração, ele enviará a saída diretamente para stdout ou lp, substituindo por -o. Além disso, a2psreconhece várias linguagens de programação e as imprime bastante.

a2ps -o output.ps infile.text

Use --pro=colorse a cor estiver disponível:

a2ps --pro=color -o output.ps infile.text

Para saída HTML, costumo usar vimo 2htmlrecurso.

Thor
fonte
isso parecia ótimo ... mas eu não tenho a2ps. Alguém sabe como instalar?
22612 Michael Durrant
Isso depende do sistema operacional em que você deseja instalá-lo.
Thor
certeza um mac - OSX
Michael Durrant
Pesquisando um pouco, parece que o a2ps tem alguns problemas de instalação no osx. Eu não tenho muita experiência com osx, mas enscriptfoi mencionado como uma alternativa.
Thor
Você pode instalar a2psusando o MacPorts ( macports.org ). Eu não tenho nenhum problema de instalá-lo (em Lion)
Matteo
3

a2psfoi a resposta. Eu instalei com o brew:

brew install a2ps

Agora eu posso a2ps myfilenamee funciona.

Infelizmente, sai paisagem e se eu tentar retratá-lo, ele é esmagado para a esquerda e minúsculo, ocupando apenas 50% da página. [upate - encontrou correção para isso com o parâmetro -1 (para o número de páginas a serem encontradas em uma folha - o padrão era 2)

No entanto, como paisagístico, funcionou e o código tem o fixed formatestilo que eu estava procurando.

Michael Durrant
fonte