syntax_highlight <source_file> | lpr

10

¿Alguien sabe de una manera simple de producir el PostScript correspondiente a una versión resaltada de sintaxis de un archivo fuente que se puede canalizar directamente a una impresora PostScript?

Como probablemente sugiere la redacción de la pregunta anterior, estoy buscando algo que pueda ejecutar desde la línea de comandos. Estoy pensando en una interacción como:

% syntax_highlight <SOURCE_FILE> | lp

... con interruptores de línea de comandos según sea necesario, etc.

Lo mejor que he encontrado hasta ahora es una utilidad Unix llamada highlight, pero tiene problemas. Lo más grave es que no tiene una opción para generar PostScript directamente. (Dado highlightque admite la salida LaTeX, intenté parchear un script que automatizaría el proceso de generación del archivo PostScript a través de * .tex => * .dvi => * .ps, pero la apariencia visual del resultado final es horrible, mucho peor de lo que es para el archivo HTML que se highlightgenera para la misma entrada de código fuente).

¡Gracias!

kjo
fuente

Respuestas:

13

Puedes usar vim.

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

Esto imprimirá el archivo y saldrá inmediatamente. Por defecto, vim imprime con resaltado de sintaxis.

Si necesita imprimir desde stdout de algún comando, puede hacer esto:

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

Si desea guardar el .ps para más adelante, puede hacerlo agregando la redirección al comando de copia impresa, así:

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

Vim le permite configurar muchas opciones relacionadas con la impresión, por lo que es posible que desee ver la documentación si desea modificarla. Por supuesto, también hay muchas opciones de resaltado de sintaxis .

Shawn J. Goff
fuente
5

Hay varios programas que imprimen bonitos varios lenguajes de programación en Postscript, que no requieren ningún software de terceros para ejecutarse:

Si está dispuesto a ir a través de LaTeX, tiene más opciones. Ir a través de LaTeX es principalmente útil si desea incluir código y algo más en el mismo documento; de lo contrario es exagerado.

Gilles 'SO- deja de ser malvado'
fuente
3

En Gedit, el editor estándar para gnome, puede imprimir en un archivo, elegir Postscript (PDF predeterminado) y marcar en la tercera pestaña, para usar el resaltado, que está desactivado de manera predeterminada, lo que produce un buen archivo ps para mí.

Y Gedit tiene muchos archivos de sintaxis, para servir muchos lenguajes de programación, HTML, SQL, XML, archivos rc, lo que sea.

usuario desconocido
fuente
Esto funciona, excepto que para mí (gedit 3.10.4 en Ubuntu 14.04.4) el PDF generado está en escala de grises, no en color. También imprimir directamente da como resultado una escala de grises.
MarnixKlooster ReinstateMonica
0

Ampliando la respuesta de Shawn J. Goff:

Puede usar el siguiente comando vim de una sola línea para crear un archivo .ps desde vim:

:hardcopy > %.ps

Si prefiere un archivo .pdf, puede hacer lo siguiente:

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

Nota:

  • La %abreviatura del nombre de archivo actual, por lo que HelloWorld.Cse imprimirá en HelloWorld.C.psoHelloWorld.C.pdf

Además, para cambiar la fuente representada, configure la fuente de la impresora antes de ejecutar el comando de copia impresa. Por ejemplo, para seleccionar Courier 8:

:set printerfont=Courier:h8

Poniendo todo junto, opté por poner lo siguiente en mi archivo .vimrc para que simplemente pueda ejecutar el comando :HardcopyPso :HardcopyPdf(que también puede operar en un rango seleccionado dentro de un archivo):

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
fuente