Texteditor zum Drucken von C ++ - Code


34

Ich suche einen Editor, um (auf Papier) C ++ - Code zu drucken. Ich bin zurzeit in der Ingenieurschule und der Ausbilder hat uns gebeten, den Code auf Papier einzureichen.

Er möchte Name + Nachname, die Klassennummer (in der Kopfzeile), die Seitenzahl unten und die reservierten Wörter, die für jede Seite fett gedruckt sind!

Unter Windows geht das mit notepadd++. Aber ich arbeite unter Linux und habe weder eine IDE noch einen Texteditor gefunden, der funktioniert. (Ich habe schon versucht SCITE, geditund Syntaxic)


4
a2ps ist dein Freund. Nehmen Sie sich Zeit, um es zu konfigurieren.
Satō Katsura

5
Für Anfragen wie diese möchten Sie vielleicht softwarerecs.stackexchange.com
Eric Renouf

30
Es hört sich so an, als hätte Ihr Lehrer in die Holzindustrie investiert.
Anthon

10
Ihr Lehrer möchte Code ... auf Papier ?!
Leichtigkeit Rennen mit Monica

8
@ loi219 Ein "alter" Lehrer oder ein alter "Lehrer" oder beides? ;-)
user800

Antworten:


76

Wenn Sie noch einen Schritt weiter gehen möchten, können Sie dies in LaTeX tun und eine professionelle PDF-Datei bereitstellen. Sie haben Ihre Distribution nicht erwähnt, deshalb gebe ich Anweisungen für Debian-basierte Systeme. Die gleiche Grundidee kann jedoch auf jedem Linux ausgeführt 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 es report.tex) mit dem folgenden 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}
    

    /path/to/your/code.cStellen Sie einfach sicher, dass Sie die vorletzte Zeile so ändern , dass sie auf den tatsächlichen Pfad Ihrer C-Datei zeigt. Wenn Sie mehr als eine Datei hinzufügen möchten, fügen Sie a hinzu\newpage und dann eine neue \lstinputlistingfür die andere Datei hinzu.

  3. Kompiliere ein PDF (dies erzeugt report.pdf)

    pdflatex report.tex    
    

Ich habe dies auf meinem System mit einer Beispieldatei getestet, die ich hier gefunden habe, und es wird eine PDF- Datei erstellt, die so aussieht:

erste Seite des erstellten PDF

Ein umfassenderes 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 Antwort hier .


17
Sobald Sie mit LaTeX beginnen, können Sie nicht mehr loslassen! Ich wünschte, ich wüsste TeX in der Highschool ... (oder sie würden es als Alternative zum Wort unterrichten).
Kyslik

2
Ich würde annehmen, dass LaTex standardmäßig auf den meisten Systemen installiert ist, insbesondere in einer Ingenieurschule. Geben Sie an der Eingabeaufforderung "which latex" ein: Wenn ein Pfad (normalerweise / usr / bin / latex) zurückgegeben wird, können Sie Schritt 1 überspringen. Wenn Ihr gewählter Editor eine anständige Makrosprache hat, können Sie dieses Skript auch aus dem Editor heraus ausführen, z. B. mit "gv --watch", um die Live-Ausgabe anzuzeigen.
Jamesqf

4
@jamesqf Ich habe noch nie ein System gesehen, auf dem standardmäßig LaTeX installiert ist. Ja, die IT-Leute in einigen Schulen haben es möglicherweise installiert, und es gibt möglicherweise spezielle Linux-Distributionen, die es standardmäßig haben, aber die große Mehrheit der Systeme wird es nicht.
Terdon

3
@terdon - Ich habe noch nie eine Installation in einer Konstruktionsabteilung ohne LaTeX gesehen. Es ist ziemlich wichtig für alle, die eine druckbare Ausgabe produzieren müssen.
Toby Speight

1
@terdon: 'Standard' oder bei der Installation ausgewählt. Ich kann mich nicht erinnern, etwas Besonderes getan zu haben, um LaTeX auf meinen Systemen (OpenSuSE) zu installieren, aber es ist schon eine Weile her, seit ich die letzte Installation durchgeführt habe. In jedem Fall ist die Überprüfung einfach.
Jamesqf

29

Normalerweise würde ich ein Enskript verwenden: so etwas wie

$ enscript --highlight=cpp
           --header='|Real Name|Class 101'
           --footer='|Page $% of $=|'
           -poutput.ps *.cpp

Dies wird ein Anfang sein - dies schreibt die Postscript-Ausgabe an output.ps, sodass Sie diese in der Vorschau anzeigen und überschreiben können, während Sie an der Konfiguration basteln, und sie dann ausdrucken können, wenn Sie zufrieden sind. In der Manpage finden Sie ausführlichere Optionen.

EDIT , um die Fußzeile richtig arbeiten zu lassen, ist ein bisschen schmerzhaft - ich hatte es nie bemerkt, weil ich es nie benötigt habe. Wenn Sie diese Datei in speichern~/.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

Bildbeschreibung hier eingeben


Grob,

  • LaTeχ ist die beste Qualität und die meiste Arbeit zum Einrichten,
  • enscript oder a2ps sind sowohl in der Qualität als auch in der Arbeit mittelmäßig,
  • Der :hardcopyBefehl von vim ist einfach, aber nicht so flexibel
  • Das manuelle Hervorheben der Syntax in einem Editor, der keinen Code unterstützt, ist ein großer Aufwand für eine schlechte Rendite.

Das ist absolut was ich suche. Vielen Dank!
loi219

Ich zweite emscript. Es hat viele Optionen und gibt sehr gute Ergebnisse.
Rubik

9

Sie können den :TOhtmlBefehl in vim verwenden. Dadurch wird das, was Sie sehen (dh Syntaxhervorhebung), als HTML dargestellt. Von dort aus funktioniert ein Webbrowser, der als PDF-Datei gedruckt werden kann, da Sie normalerweise den Inhalt der Kopf- / Fußzeile anpassen können.

Dies ähnelt wahrscheinlich dem :hardcopyvon Useless erwähnten Befehl, aber ich kann mein System derzeit nicht überprüfen.

Eine andere Möglichkeit ist das Drucken aus QtCreator, es scheint jedoch keine Möglichkeit zu geben, die Kopf- / Fußzeilen festzulegen.


4

Geany ist eine einfache IDE, die Ihnen viele Optionen für den Inhalt des Headers bietet.

Reservierte Wörter können im Optionsmenü bearbeitet werden, aber die Code-Hervorhebung bewirkt dies für den Notepad ++ - Stil. (Möglicherweise müssen Sie die Farbschemata in Ihren Ordner "/home/$USER_NAME/.config/geany/colorschemes/" kopieren / herunterladen, um die gewünschte zu erhalten.)

Sehr einfach und persönlich mag ich wirklich die Zeilennummern und das Format, das es druckt.

Auch Geany läuft unter Windows und Linux.

Seite 1

Seite 2

Seite 3


2

Da fragst du nach einem Editor , können Sie direkt von Emacs aus mit drucken ps-print-buffer.

Die Kopf- und Fußzeilen werden in der Gruppe Anpassen aufgerufen ps-print-headers.

Angenommen, Sie verwenden die Schriftsperre, haben Sie wahrscheinlich die erforderliche Syntaxhervorhebung. Sie kann bei Bedarf mit der Taste eingestellt werdenps-extend-face Funktion werden.


Dennoch würde ich empfehlen, dass Sie ein geeignetes Schleifwerkzeug wie a2ps, enscript oder LaTeX + -Auflistungen verwenden.


1

Der Vollständigkeit halber und obwohl ich diese Lösung nicht empfehlen würde, die lp Programm über eine -o prettyprintOption, mit der Syntaxhervorhebungen durchgeführt werden können.

Sie können es zum Beispiel so verwenden:

lp -t "Name Surname | Class" -o document-format=application/x-csource -o prettyprint path/to/code.cpp

Hier habe ich die -t(title) -Option verwendet, um den Header zu setzen. Ich kann die Fußzeile zwar nicht ändern (aber die Seitenzahl wird oben angezeigt). Sie können den Dateityp mit der Option festlegen -o document-format (die Liste der zulässigen Werte sollte in /usr/share/cups/mime/mime.typesoder möglicherweise in sein /etc/cups/mime/mime.types), aber wenn Ihre Datei die richtige Erweiterung hat, sollte dies nicht erforderlich sein. Auch die Syntaxhervorhebung ist alles andere als perfekt.


1

Du brauchst nur LibreOffice Writer .

Fügen Sie Ihren C / C ++ - Code ein.

Finde die Worte und mach das Mutige alle C ++ - Schlüsselwörter .

Sie finden sie hier: http://en.cppreference.com/w/cpp/keyword

So suchen Sie ein Wort Drücken Sie Strg + F. Wählen Sie "Groß- / Kleinschreibung" und klicken Sie auf "Alle suchen" (siehe Abbildung).

Bildbeschreibung hier eingeben

Danach benötigen Sie eine Kopf- und Fußzeile mit Ihrem Namen und Ihrer Seitenzahl.

EDIT: ( Christophe Strobbe kommentiert :)

Es gibt eine LibreOffice-Erweiterung zum Einfärben von Code: Code Colorizer Formatter . (Ich habe es noch nicht getestet.)


41
Eww, manuelle Syntaxhervorhebung.
Nutzlos

Hast du eine Idee?
Loi219

7
Auch eww, Code in variabler Breite Schriftart :(
Katze

2
Es gibt eine LibreOffice-Erweiterung zum Einfärben von Code: Code Colorizer Formatter . (Ich habe es noch nicht getestet.)
User800

1
Das sieht schmerzhaft aus
Joe

0

Ich habe Nedit verwendet, als ich vor vielen Jahren auf einem Solaris-System war, da ich eine GUI-Oberfläche mochte. Ich sehe, dass es immer noch da ist. Hör zu.


-2

In der Vergangenheit, als KDE3 noch eine große Sache war, habe ich Kate für einen Texteditor verwendet, der wirklich die beste Ausgabe produziert. Heute würde ich mit Latex nach einer besser einbettbaren Lösung mit dem Paket lstlisting suchen. Dieses Paket ist nicht für die Farbausgabe gedacht, aber auf einem Laserdrucker sind Farben kein Vorteil.


2
Das beantwortet die Frage nicht wirklich, oder?
Gegenmodus

Eigentlich beantwortet es die Frage. Die Antwort lautet: "Schau dir Kate an, es hat sich in der Vergangenheit als gut für mich erwiesen"
Arne,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.