Texteditor zum Drucken von C++-Code

Texteditor zum Drucken von C++-Code

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.

  1. Installieren Sie ein LaTeX-System und die erforderlichen Pakete

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. 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.cdie 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 \newpageund dann ein neues \lstinputlistingfür die andere Datei hinzu.

  3. 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:

erste Seite des erstellten PDF

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.hdrSie 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

Bildbeschreibung hier eingeben


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 :hardcopyist 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 :hardcopyvon 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-faceFunktion angepasst werden.


Dennoch würde ich Ihnen empfehlen, ein richtiges „Grind“-Tool wie etwa a2ps, enscript oder LaTeX+listings zu verwenden.

verwandte Informationen