Как я могу распечатать хорошо отформатированный код

20

Как и при использовании markdown в Stack Overflow для создания monospace output, как я могу сделать это для моих программ.

Я попробовал lp filename.txt, и мне было приятно узнать, что он может использовать локальный сетевой принтер и печатать «как есть».

Проблема в том, что вывод не моно-разнесен.

Есть ли более быстрый вариант, чем ...

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

Я хотел бы найти какой-то вариант, как lp filename.txt -format=mono;)

Майкл Даррант
источник
1
возможный дубликат syntax_highlight <исходный_файл> | lpr
Жиль "ТАК - перестань быть злым"

Ответы:

21

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

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

Если вы хотите файл PDF, добавьте && ps2pdf output.psв командную строку.

Вы также можете написать небольшой скрипт, который вставляет текущее содержимое буфера обмена во временный файл, запускает vim для этого файла, печатает полученный файл и удаляет временный файл.

Marco
источник
1
Хорошим вариантом для вашего vimrc для печати кода является set printoptions=portrait:nпечать в альбомной ориентации.
oligofren
1
Я, наверное, не единственный, кто хотел отключить заголовки страниц после печати. Вы можете отключить их, добавив set printoptions=header:0в vimrc.
Энди Гаскелл
Для HTMl вы можете сделатьvim -c TOhtml -c write -c quit <input_file>
Мэтью Клайн
1
Ой, это должно бытьvim -c 'set cmdheight=2' -c TOhtml -c write -c quit -c quit <input_file>
Мэтью Клайн
@AndyGaskell Я задал вопрос, пожалуйста, посмотрите, можете ли вы решить его: unix.stackexchange.com/questions/315363/…
предложение не может быть
12

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

Вы можете установить a2psс brew, т.е.brew install a2ps

В зависимости от его настройки, он отправит вывод напрямую в stdout или lp, переопределив его -o. Кроме того, a2psраспознает несколько языков программирования и печатает их.

a2ps -o output.ps infile.text

Используйте, --pro=colorесли цвет доступен:

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

Для вывода HTML я предпочитаю использовать vim«s 2htmlфункцию.

Тор
источник
это выглядело великолепно ... но у меня нет a2ps. Кто-нибудь знает, как установить?
Майкл Даррант
Это зависит от того, на какую операционную систему вы хотите установить его?
Тор
уверен, что это mac - osx
Майкл Даррант
Погуглив немного, кажется, что у a2ps есть некоторые проблемы с установкой на osx. У меня нет большого опыта работы с OSX, но enscriptбыл упомянут в качестве альтернативы.
Тор
Вы можете установить a2psс помощью MacPorts ( macports.org ). У меня не было никаких проблем с установкой (на Lion)
Маттео
3

a2psбыл ответ. Я установил это с brew:

brew install a2ps

Теперь я могу a2ps myfilenameи это работает.

К сожалению, он получается пейзажным, и если я пытаюсь сделать его портретным, он сжимается влево и становится крошечным, занимая только 50% страницы. [upate - найдено исправление с параметром -1 (для количества страниц, найденных на одном листе - по умолчанию было 2)

Однако, как ландшафт, он работал, и код имеет fixed formatстиль, который я искал.

Майкл Даррант
источник