
Gibt es ein Paket, das es erlaubt, Quellcode in LaTeX als Text zu speichern? Ich würde das listings
Paket lieber nicht verwenden, da der Code zu viel Platz wegnimmt. Kopieren/Einfügen ist mühsam, da die Leerzeichen nicht erhalten bleiben.
Antwort1
Ich kann Ihnen ein paar Tipps zu Paketen und Tools geben, mit denen Sie experimentieren können. Ich habe in der Vergangenheit mehrere Tools ausprobiert:
Ich mag die
verbatim
undverbatim*
-Umgebungen in TeX. Sie sind eine einfache und unkomplizierte Möglichkeit, einen kleinen Codeabschnitt sofort zu setzen. Zeilenumbrüche sind damit jedoch nicht möglich.Ich habe das
fancyvrb
Paket vor einiger Zeit verwendet,http://ctan.org/pkg/fancyvrb. Das war das erste Paket, bei dem mir aufgefallen ist, dass Querverweise auf die Zeilennummern des Quellcodes (überhaupt) möglich sind, siehe Seiten 14 und 15 der Dokumentation.Ich benutze das
listings
Paket recht häufig,http://ctan.org/pkg/listings. Es ist ein ziemlich komplexes Paket, aber es erfüllt meine Anforderungen, insbesondere die Option zum Formatieren einer externen Datei (der\lstinputlisting
Befehl). Es kann auch Zeilen umbrechen und solchen Zeilen ein öffnendes und ein schließendes Symbol hinzufügen. Ich erinnere mich, dass ich meinen eigenen Filter für die VBA-Sprache (Visual Basic for Applications) erstellt habe. Es hat Spaß gemacht, das auszuprobieren. Es gibt ein neues Paket für den Umgang mit UTF-8-codierten Zeichen. Bitte sehen Sie sich daslistingsutf8
Paket an.http://ctan.org/pkg/listingsutf8. Ich habe Escape-Sequenzen verwendet,listings
um dieses spezielle Problem zu lösen. Ich habe CJKV (Chinesisch, Japanisch, Koreanisch, Vietnamesisch) in meinen Quellcode gesetzt, z. B. さようなら (das istSag mal, sag's mir!auf Japanisch heißt esAuf Wiedersehen!auf Englisch). Ich habe einmal die Vorbereitung meiner PF-Postkarten vorgestellt.Wenn Sie mit dem
R
Code arbeiten, stehen Ihnen heutzutage hervorragende Tools zur Verfügungknitr
(http://yihui.name/knitr/) und ein ziemlich altes Werkzeug namensSweave
(http://www.stat.uni-muenchen.de/~leisch/Sweave/).Wenn Sie mit dem
Sage
Code zu tun haben, probieren Sie bitte denSageTeX
Stil aus,http://ctan.org/pkg/sagetex. Es wurde von Robert Mařík aus Brno in der Tschechischen Republik programmiert, einer Person/einem Entwickler, den ich einmal persönlich getroffen habe.:-)
Ich benutze auch das
Highlight
Programm (http://www.andre-simon.de/). Es gibt eine Option, mehrere Sprachen in einem Quellcode zu mischen, um sie hervorzuheben (LaTeX+Lua, HTML+CSS usw.). Das nennt man Formatierung und Erkennung der verschachtelten Sprachen in einer Datei. Ich habe nach dieser Funktion gefragt, als LuaTeX geboren wurde, und ich bin einfach stolz, dass ich das gemacht habe. Beide Programme (dieses und Pygments) bieten das LaTeX-Format als Exportoption für andere Sprachen. Ein Stil kann in eine separate Datei vom Rest des Dokuments extrahiert werden.Erwähnenswert ist ein sehr mächtiges Werkzeug namens
Pygments
(http://pygments.org/). Ich verwende es direkt von der Kommandozeile aus (oder als Bibliothek innerhalb von Python) und in der TeX-Welt gibt es (mindestens) zwei Pakete, die die Konvertierung einfacher machen:TeXments
(http://ctan.org/pkg/texments) UndMinted
(http://ctan.org/pkg/minted). Apropos Python, es gibt auch ein Paket namensPythonTeX
, siehehttp://ctan.org/pkg/pythontex. Versuche es!Ich habe vor kurzem von dem
pandoc
Tool erfahren,http://johnmacfarlane.net/pandoc/. Es handelt sich eher um einen Format-zu-Format-Konverter, aber es lohnt sich, es einmal auszuprobieren. Zusätzlich zu den eigenständigen ausführbaren Dateien für alle wichtigen Betriebssysteme gibt es eine Online-Version,http://johnmacfarlane.net/pandoc/try/. Das LaTeX-Format ist sowohl auf der Eingabe- als auch auf der Ausgabeseite des Konverters eine Option. Es sieht so aus, als käme dieses Tool aus der Zukunft!
Viel Erfolg beim Setzen der Quellcodes!
Antwort2
Dies ist die Redewendung, die ich verwende, wenn ich meinen Schülern (die TeX lernen) den Quellcode für die Hausaufgabe gebe, damit sie ihn studieren und bearbeiten können, wenn sie ihre Mathematikaufgaben aufschreiben.
\documentclass{article}
\usepackage{verbatim}
\begin{document}
Homework exercises here \ldots
\newpage
Here is the \LaTeX{} source for this document. You can cut it from the
pdf and use it to start your answers. I used the \verb!\jobname! macro
for the source file name, so you can call your file by any name you like.
\verbatiminput{\jobname}
\end{document}
Antwort3
Dies verwendet verbatimbox
, um es in einer verkleinerten Box zu platzieren. Eine weitere Verkleinerung der Box ist mit einem möglich \scalebox
. Während eine Box nicht über eine Seitengrenze hinausgeht, bietet das Paket auch „Nobox“-Versionen einiger seiner Makros, die über eine Seite hinweggehen. Die Box-Funktion ist jedoch gut geeignet, um wörtliche Texte in Abbildungen und Tabellen einzufügen und sie direkt auf die Zeile zu verschieben oder zu zentrieren.
In diesem MWE habe ich \fbox
der Übersichtlichkeit halber manuell Anlagen um alle Wortlautfelder hinzugefügt, sie sind jedoch nicht Teil des Wortlautfelds.
\documentclass{article}
\usepackage{verbatimbox}
\usepackage{graphicx}
\parskip 1ex
\parindent 0in
\begin{document}
With verbatimbox, you can tell the macro to make the code ``footnotesize.''\par
\begin{verbbox}[\footnotesize]
Here is my input code text
Line two of my $%& code text
Done now.
\end{verbbox}
\fbox{\theverbbox}\par
If it is from a file, I can do that, too, this time \verb|\scriptsize|:\par
\verbfilebox[\scriptsize]{junk.tex}
\fbox{\theverbbox}\par
Alternately, you could shrink it further with a \verb|\scalebox|:\par
\fbox{\scalebox{.5}{\theverbbox}}\par
If you have need to break across pages, the package offers ``nobox'' versions
of some of its macros.
\end{document}
Es gibt auch dienumberedblock
Paket, das die Formatierung kleiner Codeblöcke auf folgende Weise ermöglicht (Hinweis: Bild aus den Paketdokumenten):
Antwort4
Das Problem mit Verbatim ist, dass es lange Codezeilen nicht unterbricht, daher verwende ich spverbatim
stattdessen das Paket
\documentclass{article}
\usepackage{spverbatim}
\begin{document}
\begin{spverbatim}
code
code with a very long line that does not fit on the page and so needs to be broken or wrapped
code
\end{spverbatim}
\end{document}