Jak mogę wydrukować dobrze sformatowany kod

20

Podobnie jak przy korzystaniu z markdown na stosie przepełnienia do tworzenia monospace output, jak mogę to zrobić dla moich programów.

Próbowałem lp nazwa_pliku.txt i miło nam było stwierdzić, że był w stanie używać lokalnej drukarki sieciowej i drukować „tak jak jest”

Problem polega na tym, że dane wyjściowe nie są rozmieszczone pojedynczo.

Czy istnieje opcja szybsza niż ...

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

Chciałbym znaleźć jakąś opcję, jak lp filename.txt -format=mono;)

Michael Durrant
źródło
1
możliwy duplikat pliku syntax_highlight <plik_źródłowy> | lpr
Gilles 'SO- przestań być zły'

Odpowiedzi:

21

Możesz użyć edytora vim do wydrukowania dowolnych plików, które vim może odczytać. Aby utworzyć plik PostScript, skorzystaj z poniższych wskazówek.

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

Jeśli chcesz plik PDF, dodaj && ps2pdf output.psdo wiersza polecenia.

Możesz także napisać mały skrypt, który wkleja bieżącą zawartość schowka do pliku tymczasowego, uruchamia vim na pliku, drukuje plik wynikowy i usuwa plik tymczasowy.

Marco
źródło
1
Dobrą opcją dla vimrc podczas drukowania kodu jest set printoptions=portrait:ndrukowanie w trybie poziomym.
oligofren,
1
Prawdopodobnie nie jestem tu jedynym, który chciał wyłączyć nagłówki stron po wydrukowaniu. Możesz je wyłączyć, dodając set printoptions=header:0do vimrc.
Andy Gaskell,
W przypadku HTMl możesz to zrobićvim -c TOhtml -c write -c quit <input_file>
Matthew Cline,
1
Ups, to powinno byćvim -c 'set cmdheight=2' -c TOhtml -c write -c quit -c quit <input_file>
Matthew Cline,
@AndyGaskell Zadałem pytanie, sprawdź, czy możesz je rozwiązać: unix.stackexchange.com/questions/315363/…
oferta nie może odrzucić
12

Najkrótsza ścieżka tutaj jest prawdopodobnie do użycia a2ps, domyślnie generuje monospacowy PostScript.

Możesz zainstalować za a2pspomocą naparu, tjbrew install a2ps

W zależności od konfiguracji, wyśle ​​dane wyjściowe bezpośrednio na standardowe wyjście lub lp, przesłonić za pomocą -o. Również a2psrozpoznaje kilka języków programowania i całkiem-drukuje je.

a2ps -o output.ps infile.text

Użyj, --pro=colorjeśli kolor jest dostępny:

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

Dla wyjścia HTML I mają tendencję do używania vim„s 2htmlfunkcję.

Thor
źródło
wyglądało to świetnie ... ale nie mam a2ps. Czy ktoś wie jak zainstalować?
Michael Durrant,
To zależy od systemu operacyjnego, w którym chcesz go zainstalować?
Thor
na pewno to mac - osx
Michael Durrant
Googling trochę wydaje się, że a2ps ma pewne problemy z instalacją na OSX. Nie mam dużego doświadczenia z osx, ale enscriptzostał wymieniony jako alternatywa.
Thor
Możesz zainstalować a2psza pomocą MacPorts ( macports.org ). Nie miałem problemu z zainstalowaniem go (na lwie)
Matteo,
3

a2psbyła odpowiedź. Zainstalowałem go z naparem:

brew install a2ps

Teraz mogę a2ps myfilenamei to działa.

Niestety wychodzi z krajobrazu i jeśli spróbuję zrobić portret, jest on ściśnięty w lewo i niewielki, zajmuje tylko 50% strony. [upate - znaleziono poprawkę tego parametru -1 (dla liczby stron do znalezienia na jednym arkuszu - domyślnie 2)

Jednak w krajobrazie działało, a kod ma fixed formatstyl, którego szukałem.

Michael Durrant
źródło