syntax_highlight <Quellendatei> lpr

10

Kennt jemand eine einfache Möglichkeit, das PostScript zu erstellen, das einer durch Syntax hervorgehobenen Version einer Quelldatei entspricht, die direkt an einen PostScript-Drucker weitergeleitet werden kann?

Wie der Wortlaut der obigen Frage wahrscheinlich andeutet, suche ich nach etwas, das ich über die Befehlszeile ausführen kann. Ich denke an eine Interaktion wie:

% syntax_highlight <SOURCE_FILE> | lp

... mit Befehlszeilenschaltern nach Bedarf usw.

Das Beste, was ich bisher gefunden habe, ist ein Unix-Dienstprogramm namens highlight, aber es hat Probleme. Das Schlimmste daran ist, dass es keine Option gibt, PostScript direkt auszugeben. (Da highlightdie LaTeX-Ausgabe unterstützt wird, habe ich versucht, ein Skript zusammenzufügen, das den Prozess der Generierung der PostScript-Datei über * .tex => * .dvi => * .ps automatisiert, aber das visuelle Erscheinungsbild des Endergebnisses ist schrecklich. viel schlimmer als bei der HTML-Datei, highlightdie für dieselbe Quellcode-Eingabe generiert wird.)

Vielen Dank!

kjo
quelle

Antworten:

13

Sie können vim verwenden.

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

Dadurch wird die Datei gedruckt und sofort beendet. Standardmäßig druckt vim mit Syntaxhervorhebung.

Wenn Sie von stdout eines Befehls aus drucken müssen, können Sie dies tun:

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

Wenn Sie die .ps-Datei für später speichern möchten, können Sie dies tun, indem Sie dem Hardcopy-Befehl eine Umleitung hinzufügen, wie folgt:

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

Mit Vim können Sie viele druckbezogene Optionen festlegen. Daher möchten Sie möglicherweise die Dokumentation anzeigen, wenn Sie sie optimieren möchten. Natürlich gibt es auch viele Optionen zur Hervorhebung der Syntax .

Shawn J. Goff
quelle
5

Es gibt mehrere Programme, die verschiedene Programmiersprachen in Postscript drucken, für deren Ausführung keine Software von Drittanbietern erforderlich ist:

Wenn Sie bereit sind, über LaTeX zu gehen, haben Sie mehr Optionen. Die Verwendung von LaTeX ist vor allem dann nützlich, wenn Sie Code und etwas anderes in dasselbe Dokument aufnehmen möchten. sonst ist es übertrieben.

Gilles 'SO - hör auf böse zu sein'
quelle
3

In Gedit, dem Standardeditor für Gnome, können Sie in eine Datei drucken, Postscript (Standard-PDF) auswählen und auf der dritten Registerkarte markieren, um die standardmäßig deaktivierte Hervorhebung zu verwenden, die eine schöne ps-Datei für mich erzeugt.

Und Gedit hat viele Syntaxdateien, um viele Programmiersprachen, HTML, SQL, XML, RC-Dateien, wie Sie es nennen, zu bedienen.

Benutzer unbekannt
quelle
Dies funktioniert, außer dass für mich (gedit 3.10.4 unter Ubuntu 14.04.4) das generierte PDF in Graustufen und nicht in Farbe ist. Auch das direkte Drucken führt zu Graustufen.
MarnixKlooster ReinstateMonica
0

Erweiterung der Antwort von Shawn J. Goff:

Mit dem folgenden einzeiligen Befehl vim können Sie eine .ps-Datei aus vim heraus erstellen:

:hardcopy > %.ps

Wenn Sie eine PDF-Datei bevorzugen, können Sie Folgendes tun:

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

Hinweis:

  • Das %ist die Abkürzung für den aktuellen Dateinamen, HelloWorld.Cwird also in HelloWorld.C.psoder gedrucktHelloWorld.C.pdf

Um die gerenderte Schriftart zu ändern, legen Sie außerdem die Druckerschrift fest, bevor Sie den Hardcopy-Befehl ausführen. So wählen Sie beispielsweise Courier 8 aus:

:set printerfont=Courier:h8

Alles in allem habe ich Folgendes in meine .vimrc-Datei eingefügt, damit ich einfach den Befehl :HardcopyPsoder ausführen :HardcopyPdfkann (der auch für einen ausgewählten Bereich innerhalb einer Datei ausgeführt werden kann):

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
quelle