Ich möchte den Quellcode einiger Projekte in eine druckbare Datei konvertieren, um ihn auf einem USB-Stick zu speichern und später problemlos auszudrucken. Wie kann ich das machen?
Bearbeiten
Zunächst möchte ich klarstellen, dass ich nur die nicht versteckten Dateien und Verzeichnisse drucken möchte (also keine Inhalte von .git
zB).
Um eine Liste aller nicht ausgeblendeten Dateien in nicht ausgeblendeten Verzeichnissen im aktuellen Verzeichnis zu erhalten , können Sie den find . -type f ! -regex ".*/\..*" ! -name ".*"
Befehl ausführen, der in diesem Thread als Antwort angezeigt wird .
Wie im selben Thread vorgeschlagen, habe ich versucht, mithilfe des Befehls eine PDF-Datei aus den Dateien zu erstellen, find . -type f ! -regex ".*/\..*" ! -name ".*" ! -empty -print0 | xargs -0 a2ps -1 --delegate no -P pdf
aber leider ist die resultierende PDF-Datei ein komplettes Durcheinander .
a2ps -P file *.src
Postscript-Dateien aus Ihrem Quellcode erstellen. Die PS-Dateien müssen jedoch konvertiert und anschließend kombiniert werden.a2ps -1 --delegate=0 -l 100 --line-numbers=5 -P pdf
Ich habe-l
100 Zeichen pro Zeile hinzugefügt , um einige Zeilenumbrüche und Zeilennummern zu vermeiden, aber das ist nur eine persönliche Einstellung.Antworten:
Ich war fasziniert von Ihrer Frage und wurde irgendwie mitgerissen. Diese Lösung generiert eine schöne PDF-Datei mit einem anklickbaren Index und farblich hervorgehobenem Code. Es findet alle Dateien im aktuellen Verzeichnis und in den Unterverzeichnissen und erstellt für jede einen Abschnitt in der PDF-Datei.
Es setzt voraus, dass Sie Folgendes installiert haben (die Installationsanweisungen gelten für Debian-basierte Systeme, diese sollten jedoch in den Repositorys Ihrer Distribution verfügbar sein):
pdflatex
,color
undlistings
Hierdurch sollte auch ein grundlegendes LaTeX-System installiert werden, falls Sie keines installiert haben.
Nach der Installation können Sie mit diesem Skript ein LaTeX-Dokument mit Ihrem Quellcode erstellen. Der Trick besteht darin, die
listings
(Teil vontexlive-latex-recommended
) undcolor
(vonlatex-xcolor
) LaTeX-Pakete zu verwenden. Das\usepackage[..]{hyperref}
ist es, was die Objekte in der Tabelle der Inhalte anklickbare Links macht.Führen Sie das Skript in dem Verzeichnis aus, das die Quelldateien enthält
Dadurch wird eine Datei erstellt, die
all.pdf
im aktuellen Verzeichnis aufgerufen wird . Ich habe dies mit einigen zufälligen Quelldateien versucht, die ich auf meinem System gefunden habe (insbesondere zwei Dateien aus der Quelle vonvlc-2.0.0
). Dies ist ein Screenshot der ersten beiden Seiten des resultierenden PDF:Ein paar Kommentare:
! -name "*~"
, um Backup-Dateien zu vermeiden.Ich empfehle Ihnen jedoch, einen spezifischeren
find
Befehl zu verwenden, um Ihre Dateien zu finden. Andernfalls wird jede zufällige Datei in die PDF-Datei aufgenommen. Wenn Ihre Dateien alle bestimmte Erweiterungen haben (.c
und.h
zum Beispiel), sollten Sie dasfind
im Skript durch so etwas ersetzenlistings
Optionen . Sie können diese so anpassen, dass sie genau Ihren Wünschen entsprechen.quelle
:)
src2pdf: line 36: warning: here-document at line 5 delimited by end-of-file (wanted EOF')
beim Ausführen des Skripts darauf stoßen, müssen Sie das Leerzeichen in der EOF-Zeile löschen , damit es funktioniert.src2pdf
wird, fügen Sie sie wie folgt! -name "src2pdf"
in diefind
Zeile des Skripts einfind . -type f ! -regex ".*/\..*" ! -name "src2pdf" ! -name ".*" ! -name "*~" |
, um sie im PDF-Dokument auszulassen.find
Ergebnissen zu entfernen (ich hatte das Skript in einem anderen Verzeichnis gespeichert, das sich in meinem $ PATH befand, damit ich das nicht hatte Problem). Sie können auch die Sprache ändern, die für die Quelldateien verwendet wird, um ein besseres Markup zu erzielen, indemlanguage=C++
Sie die gewünschte Sprache auswählen. Sie kann mit vielen verschiedenen Sprachen umgehen (siehe hier) .\usepackage[utf8]{inputenc}
\ usepackage [german] {babel} ` funktionieren, aber es schlägt bei meinen Tests fehl. Ich vermute jedoch, ich füttere es nicht wahr utf8. Das mag eine eigene Frage wert sein, aber ich schlage vor, Sie fragen nach TeX - LaTeX , sie sollten es wissen.(von StackOverflow )
Dies führt zu einer result.txt mit:
Wenn Ihr Quellcode eine andere Erweiterung hat, ändern Sie ihn einfach nach Bedarf. Sie können auch das Echo-Bit bearbeiten, um die erforderlichen Informationen hinzuzufügen (z. B. "Dateiname $ 1" wiederholen oder das Trennzeichen ändern oder ein Trennzeichen für das Dateiende hinzufügen).
Die Verknüpfung hat andere Methoden. Verwenden Sie also die Methode, die Ihnen am besten gefällt. Ich finde dieses Modell am flexibelsten, obwohl es mit einer leichten Lernkurve verbunden ist.
Der Code läuft perfekt von einem Bash-Terminal (gerade auf einer VirtualBox Ubuntu getestet)
Wenn Ihnen der Dateiname und der Inhalt der zusammengeführten Dateien egal sind:
wird einwandfrei funktionieren.
Eine andere vorgeschlagene Methode war:
Was jeder einzelnen Zeile den Dateinamen voranstellen wird, was für einige Leute gut sein kann, persönlich finde ich zu viele Informationen, weshalb mein erster Vorschlag die obige for-Schleife ist.
Wir danken den Mitgliedern des StackOverflow-Forums.
BEARBEITEN: Ich habe gerade festgestellt, dass Sie speziell HTML oder PDF als Endergebnis benötigen. Einige Lösungen, die ich gesehen habe, bestehen darin, die Textdatei in PostScript zu drucken und dann Postscript in PDF zu konvertieren. Code, den ich gesehen habe:
dann
(Benötigt Ghostscript)
Hoffe das hilft.
quelle
Ich weiß, ich bin zu spät dran, aber jemand, der nach einer Lösung sucht, könnte dies nützlich finden.
Basierend auf der Antwort von @ terdon habe ich ein BASH-Skript erstellt, das die Aufgabe erfüllt: https://github.com/eljuanchosf/source-code-to-pdf
quelle