¿Cómo puedo imprimir código bien formateado?

20

Similar a usar markdown en Stack Overflow para crear monospace output, ¿cómo puedo hacer eso para mis programas?

Intenté lp filename.txt y me complació descubrir que podía usar la impresora de red local e imprimir 'tal cual'.

El problema es que la salida no es monoespaciada.

¿Existe una opción más rápida que ...

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

Me encantaría encontrar alguna opción como lp filename.txt -format=mono;)

Michael Durrant
fuente
1
posible duplicado de syntax_highlight <source_file> | lpr
Gilles 'SO- deja de ser malvado'

Respuestas:

21

Puede usar el editor vim para imprimir bonitos archivos arbitrarios que vim puede leer. Use lo siguiente para crear un archivo PostScript.

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

Si desea un archivo PDF, agréguelo && ps2pdf output.psa la línea de comando.

También puede escribir un pequeño script que pegue el contenido actual del portapapeles en un archivo temporal, ejecute vim en el archivo, imprima el archivo resultante y elimine el archivo temporal.

Marco
fuente
1
Una buena opción para su vimrc para cuando imprime código es set printoptions=portrait:nimprimir en modo horizontal.
oligofren
1
Probablemente no soy el único aquí que quería desactivar los encabezados de página una vez que la impresión funcionó. Puede desactivarlos agregando set printoptions=header:0a vimrc.
Andy Gaskell
Para HTMl puedes hacerlovim -c TOhtml -c write -c quit <input_file>
Matthew Cline
1
Vaya, eso debería servim -c 'set cmdheight=2' -c TOhtml -c write -c quit -c quit <input_file>
Matthew Cline
@AndyGaskell He hecho una pregunta, vea si puede resolverla: unix.stackexchange.com/questions/315363/…
una oferta no puede rechazar el
12

El camino más corto aquí es probablemente usar a2ps, genera postscript monoespaciado por defecto.

Se puede instalar a2pscon brew, es decirbrew install a2ps

Dependiendo de su configuración, enviará la salida directamente a stdout o lp, anulando con -o. Además, a2psreconoce varios lenguajes de programación y los imprime bonitos.

a2ps -o output.ps infile.text

Usar --pro=colorsi el color está disponible:

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

Para la salida HTML, tiendo a usar vimla 2htmlfunción.

Thor
fuente
esto se veía genial ... pero no tengo a2ps. Alguien sabe cómo instalar?
Michael Durrant
Eso depende de en qué sistema operativo desea instalarlo.
Thor
Seguro que es un mac - OSX
Michael Durrant
Googleando un poco parece que a2ps tiene algunos problemas de instalación en osx. No tengo mucha experiencia con osx, pero me enscripthan mencionado como alternativa.
Thor
Puede instalar a2psusando MacPorts ( macports.org ). No tuve ningún problema al instalarlo (en Lion)
Matteo
3

a2psfue la respuesta Lo instalé con brew:

brew install a2ps

Ahora puedo a2ps myfilenamey funciona.

Desafortunadamente, sale del paisaje y si trato de hacerlo vertical, se aprieta a la izquierda y es pequeña, solo ocupando el 50% de la página. [upate: solución encontrada para esto con el parámetro -1 (para el número de páginas que se encuentran en una hoja; el valor predeterminado era 2)

Sin embargo, como ajardinado funcionó y el código tiene el fixed formatestilo que estaba buscando.

Michael Durrant
fuente