
Ich suche einen Editor zum Drucken (auf Papier) von C++-Code. Ich bin derzeit auf der Ingenieurschule und der Dozent hat uns gebeten, den Code auf Papier einzureichen.
Er möchte Vor- und Nachnamen, die Klassennummer (in der Kopfzeile), die Seitenzahl unten und die reservierten Wörter fett gedruckt auf jeder Seite!
Unter Windows geht das mit notepadd++
. Aber ich verwende Linux und habe keine IDE oder Texteditor gefunden, der funktioniert. (Ich habe bereits SCITE
, gedit
, und ausprobiert Syntaxic
.)
Antwort1
Wenn Sie noch einen Schritt weiter gehen möchten, machen Sie es in LaTeX und stellen Sie eine professionelle PDF-Datei bereit. Sie haben Ihre Distribution nicht erwähnt, daher gebe ich Anweisungen für Debian-basierte Systeme. Die gleiche Grundidee kann jedoch auf jedem Linux umgesetzt werden.
Installieren Sie ein LaTeX-System und die erforderlichen Pakete
sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
Erstellen Sie eine neue Datei (nennen Sie sie
report.tex
) mit folgendem Inhalt:\documentclass{article} \usepackage{fancyhdr} \pagestyle{fancy} %% Define your header here. %% See http://texblog.org/2007/11/07/headerfooter-in-latex-with-fancyhdr/ \fancyhead[CO,CE]{John Doe, Class 123} \usepackage[usenames,dvipsnames]{color} %% Allow color names %% The listings package will format your source code \usepackage{listings} \lstdefinestyle{customasm}{ belowcaptionskip=1\baselineskip, xleftmargin=\parindent, language=C++, breaklines=true, %% Wrap long lines basicstyle=\footnotesize\ttfamily, commentstyle=\itshape\color{Gray}, stringstyle=\color{Black}, keywordstyle=\bfseries\color{OliveGreen}, identifierstyle=\color{blue}, xleftmargin=-8em, showstringspaces=false } \begin{document} \lstinputlisting[style=customasm]{/path/to/your/code.c} \end{document}
Stellen Sie einfach sicher, dass Sie
/path/to/your/code.c
die vorletzte Zeile so ändern, dass sie auf den tatsächlichen Pfad Ihrer C-Datei verweist. Wenn Sie mehr als eine Datei einbinden müssen, fügen Sie ein\newpage
und dann ein neues\lstinputlisting
für die andere Datei hinzu.Erstellen Sie ein PDF (dadurch entsteht
report.pdf
)pdflatex report.tex
Ich habe dies auf meinem System mit einer Beispieldatei getestet, die ich gefunden habeHierund es wird eine PDF-Datei erstellt, die wie folgt aussieht:
Ein ausführlicheres Beispiel, das automatisch alle .c-Dateien im Zielordner findet und eine indizierte PDF-Datei mit jeder Datei in einem separaten Abschnitt erstellt, finden Sie in meiner AntwortHier.
Antwort2
Normalerweise verwende ich enscript: so etwas wie
$ enscript --highlight=cpp
--header='|Real Name|Class 101'
--footer='|Page $% of $=|'
-poutput.ps *.cpp
wäre ein Anfang - dies schreibt Postscript-Ausgaben in output.ps
, sodass Sie diese in der Vorschau anzeigen und überschreiben können, während Sie an der Konfiguration herumbasteln, und sie dann ausdrucken können, wenn Sie zufrieden sind. Weitere sehr umfangreiche Optionen finden Sie auf der Manpage.
BEARBEITENes ist ein bisschen mühsam, den Footer mit enscript richtig zum Laufen zu bringen - mir ist das nie aufgefallen, weil ich es nie gebraucht habe. Wenn Sie speichernDiese Datei( ~/.enscript/so.hdr
Sie müssen wahrscheinlich das Verzeichnis erstellen), erhalten Sie tatsächlich die erforderliche Ausgabe mit
$ enscript --highlight=cpp
--header='|Real Name|Class 101'
--footer='|Page $% of $=|'
--fancy-header=so
-poutput.ps *.cpp
Geben
Grob,
- LaTeχ ist die beste Qualität und der größte Aufwand bei der Einrichtung,
- enscript oder a2ps sind in Qualität und Leistung mittelmäßig,
- Der Befehl von vim
:hardcopy
ist einfach, aber nicht so flexibel, und - Die manuelle Syntaxhervorhebung in einem Editor ohne Codeunterstützung ist mit viel Aufwand verbunden und bringt wenig.
Antwort3
Sie können den Befehl in vim verwenden :TOhtml
. Dadurch wird das, was Sie sehen (d. h. die Syntaxhervorhebung), als HTML gerendert. Von dort aus funktioniert ein Webbrowser, der in PDF drucken kann, da Sie den Inhalt der Kopf-/Fußzeile normalerweise anpassen können.
Dies ähnelt wahrscheinlich dem :hardcopy
von Useless erwähnten Befehl, aber ich kann dies derzeit auf meinem System nicht überprüfen.
Eine andere Möglichkeit besteht darin, aus QtCreator zu drucken. Allerdings scheint es dort keine Möglichkeit zum Festlegen der Kopf-/Fußzeilen zu geben.
Antwort4
Da Sie um eineEditorkönnen Sie direkt aus Emacs drucken, indem Sie verwenden ps-print-buffer
.
Die Kopf- und Fußzeilen befinden sich in der Gruppe „Anpassen“ mit dem Namen ps-print-headers
.
Vorausgesetzt, Sie verwenden Font-Lock, verfügen Sie wahrscheinlich über die erforderliche Syntaxhervorhebung. Diese kann bei Bedarf mit der ps-extend-face
Funktion angepasst werden.
Dennoch würde ich Ihnen empfehlen, ein richtiges „Grind“-Tool wie etwa a2ps, enscript oder LaTeX+listings zu verwenden.