syntax_highlight <исходный_файл> | LPR

10

Кто-нибудь знает простой способ создания PostScript, соответствующего выделенной синтаксису версии исходного файла, который можно передать напрямую на принтер PostScript?

Как видно из формулировки вопроса выше, я ищу что-то, что я могу запустить из командной строки. Я думаю о взаимодействии, как:

% syntax_highlight <SOURCE_FILE> | lp

... с необходимыми переключателями командной строки и т. д.

Лучшее, что я нашел на данный момент - это утилита Unix highlight, но у нее есть проблемы. Самым серьезным из них является то, что у него нет возможности напрямую выводить PostScript. (Поскольку highlightон поддерживает вывод в формате LaTeX, я попытался соединить скрипт, который бы автоматизировал процесс генерации файла PostScript с помощью * .tex => * .dvi => * .ps, но внешний вид конечного результата ужасен, гораздо хуже, чем для файла HTML, который highlightгенерируется для того же ввода исходного кода.)

Спасибо!

KJo
источник

Ответы:

13

Вы можете использовать Vim.

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

Это распечатает файл и немедленно выйдет. По умолчанию vim печатает с подсветкой синтаксиса.

Если вам нужно распечатать из stdout какой-либо команды, вы можете сделать это:

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

Если вы хотите сохранить .ps для дальнейшего использования, вы можете сделать это, добавив перенаправление в команду hardcopy, например:

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

Vim позволяет вам установить множество параметров, связанных с печатью, так что вы можете захотеть просмотреть документацию, если хотите ее настроить. Конечно, есть много вариантов подсветки синтаксиса .

Шон Дж. Гофф
источник
5

Есть несколько программ, которые красиво печатают различные языки программирования в Postscript, для которых не требуется никакого стороннего программного обеспечения:

Если вы хотите использовать LaTeX, у вас есть больше возможностей. Переход через LaTeX в основном полезен, если вы хотите включить код и что-то еще в тот же документ; в противном случае это излишне.

Жиль "ТАК - перестань быть злым"
источник
3

В Gedit, стандартном редакторе для gnome, вы можете распечатать в файл, выбрать Postscript (PDF по умолчанию) и пометить на третьей вкладке, чтобы использовать подсветку, которая по умолчанию отключена, что создает хороший ps-файл для меня.

И у Gedit есть много файлов синтаксиса, которые служат многим языкам программирования, HTML, SQL, XML, rc-файлам.

неизвестный пользователь
источник
Это работает, за исключением того, что для меня (gedit 3.10.4 на Ubuntu 14.04.4) сгенерированный PDF-файл представлен в оттенках серого, а не в цвете. Кроме того, печать напрямую приводит к оттенкам серого.
MarnixKlooster ReinstateMonica
0

Расширяя ответ Шона Дж. Гоффа:

Вы можете использовать следующую однострочную команду vim для создания файла .ps из vim:

:hardcopy > %.ps

Если вы предпочитаете файл .pdf, то вы можете сделать:

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

Примечание:

  • %Является сокращением для текущего файла, так HelloWorld.Cбудет печатать HelloWorld.C.psилиHelloWorld.C.pdf

Кроме того, чтобы изменить отображаемый шрифт, установите параметр printerfont перед выполнением команды hardcopy. Например, чтобы выбрать курьера 8:

:set printerfont=Courier:h8

Собрав все это вместе, я решил добавить следующее в мой файл .vimrc, чтобы я мог просто выполнить команду :HardcopyPsor :HardcopyPdf(которая также может работать с выбранным диапазоном в файле):

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
источник