latex-skript/content/quelltext-listings.tex

69 lines
4.6 KiB
TeX

\section{Quelltext-Listings}
Um Quelltext in eigenen Arbeiten darzustellen, gibt es in \LaTeX verschiedene Wege.
Wir verwenden hierfür gern das Paket \mintinline{latex}{minted}, das zwar etwas zusätzlichen Installationsaufwand verursacht, dafür aber ansprechende Ergebnisse generiert und gut zu handhaben ist.
\subsection{Installation}
\todo{Nochmal prüfen, wie der python-Befehl wirklich heißt. Anleitungen für verschiedene Betriebssysteme verlinken. Vor Änderungen in PATH warnen.}
Zur Verwendung von \mintinline{latex}{minted} ist eine Installation der Programmiersprache Python 3 notwendig.
Die Installationsdateien sind auf der Projekt-Website\footnote{Verfügbar unter \url{https://www.python.org/downloads/}.} zu finden.
Ein ausführlicherer Beitrag zur Installation unter Windows\footnote{Jason Fitzpatrick, How to Install Python on Windows. How-To Geek. July 11, 2017. Verfügbar unter \url{https://www.howtogeek.com/197947/how-to-install-python-on-windows/}.} führt euch durch die verschiedenen Schritte, die speziell für dieses Betriebssystem notwendig sind.\footnote{Insbesondere das Anpassen des Systempfads sollte nicht vergessen werden.}
Nach der erfolgreichen Installation solltet ihr in der Eingabeaufforderung\footnote{Navigation unter Windows: \faWindows\ + R → \enquote{cmd} eingeben → Enter} \mintinline{bash}{python3 --version} eingeben und mit Enter bestätigen können und in etwa folgendes Ergebnis erhalten:
\begin{minted}[]{bash}
$ python3 --version
Python 3.8.5
\end{minted}
\noindent Sollte die Versionsnummer höher sein, ist alles bestens.
Im gleichen Fenster gebt ihr jetzt den Befehl \mintinline{bash}{pip install Pygments} ein, womit das Pygments-Paket für Python installiert wird.
Nach Abschluss dieses Vorgangs könnt ihr das \LaTeX-Paket \mintinline{latex}{minted} über \mintinline{latex}{\usepackage{minted}} einbinden.
\subsection{Compiler-Befehl ändern}
Bevor es allerdings richtig losgehen kann, müssen wir noch eine Kleinigkeit im Compile-Prozess anpassen.
Normalerweise ruft euer Editor beim Klick auf den grünen Pfeil etwa den folgenden Befehl auf:
\begin{minted}[]{bash}
$ pdflatex main.tex
\end{minted}
\noindent Welcher Befehl das bei euch genau ist, könnt ihr in \TeX{}studio unter \enquote{Optionen → \TeX{}studio konfigurieren → Befehle} einsehen.
Neben Pdf\LaTeX{} seht ihr den Befehl.
Die Datei, die kompiliert werden soll, wird hier durch \mintinline{bash}{%.tex} angegeben.
Außerdem sind üblicherweise noch zwei zusätzliche Angaben enthalten, jeweils mit einem Bindestrich davor (\mintinline{bash}{-synctex=1 -interaction=nonstopmode}).
Diese Angaben heißen Flags und konfigurieren das Programm \mintinline{bash}{pdflatex}.
Eine solche Flag müssen wir ergänzen.
Platziert die Angabe \mintinline{bash}{-shell-escape} vor der Datei-Angabe (\mintinline{bash}{%.tex}):
\todo{Ich hätte mich für einen Strich entschieden, damit es konsistent zu dem ist, was TeXstudio vorgibt. Funktionieren tut auch unter Linux beides.}
\begin{minted}[]{bash}
pdflatex -synctex=1 -interaction=nonstopmode -shell-escape %.tex
\end{minted}
\noindent Nach Klick auf \enquote{Okay} ist der Einrichtungsschritt abgeschlossen.
Auch andere Editoren bieten die Möglichkeit, den Kompilierbefehl anzupassen.
Schaut am besten mal in die Einstellungen oder bemüht eine Suchmaschine.
\subsection{Quelltext setzen}
Jetzt kann der eigentliche Spaß losgehen.
Quelltext könnt ihr von nun an unter Angabe der Sprache in einer eigenen Umgebung setzen:
\example{lst:MintedEnvironment}{code/minted-umgebung}{Beispielhaftes Quelltext-Listing}
\example{lst:MintedVariants}{code/minted-varianten}{Kurzschreibweise und Inline-Listing}
\noindent Außerdem gibt es eine Kurzschreibweise und eine Inline-Variante des Befehls (vgl. \cref{lst:MintedVariants}).
Um Redundanz zu vermeiden, ist es manchmal praktisch, den Quelltext direkt aus der Quelldatei einzulesen.
Hierzu müssen nur die verwendete Programmiersprache und der Dateipfad an den Befehl \mintinline{latex}{\inputminted} übergeben werden (vgl. \cref{lst:MintedExternal}).
\example{lst:MintedExternal}{code/minted-import}{Einbinden aus einer externen Datei}
\subsection{Minted konfigurieren}
Durch optionale Parameter können Zeilennummerierung, Umbrüche und Farben ausgewählt werden.
Außerdem sind zahlreiche Themes verfügbar (\cref{lst:MintedExternalStyled}).
Einen umfänglichen Überblick geben die Einführung von Overleaf und die Dokumentation.\footnote{Verfügbar unter \url{https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted} bzw. \url{https://ctan.kako-dev.de/macros/latex/contrib/minted/minted.pdf}.}
\example{lst:MintedExternalStyled}{code/minted-import-styled}{Themes und weitere Optionen}