7.1 KiB
@slide(layout=chapter-slide)
@number 12
@title Quelltext-Listings
@slide(layout=content-only)
@title Unsere Optionen
@content Es gibt zwei verbreitete Wege, Quelltext in LaTeX-Dokumenten zu zeigen.
- ++
mintederstellt sehr hübsche Quelltext-Listings, aber es benötigt etwas mehr Konfiguration und funktioniert nicht auf allen Betriebssystemen zuverlässig. - ++
listingsist eine einfach zu nutzende (aber nicht so hübsche) Alternative für diejenigen, die Probleme mitmintedhaben.
++ Die Befehle beider Pakete sind sehr ähnlich.
@slide(layout=content-and-preview)
@title Installation 🖥️
@content
minted benötigt die Programmiersprache Python. Nach der Installation von Python kann das zugehörige Paket Pygments in der Eingabeaufforderung installiert werden durch:
pip install Pygments
Anschließend muss das Paket minted (oder listings) nur noch eingebunden werden:
\usepackage{minted}
\usepackage{listings}
@slide(layout=content-only)
@title Anpassungen beim Kompilieren
@content
Dies ist nur bei vertrauenswürdigen Dokumenten empfehlenswert.
In TeXstudio muss diese unter Optionen → TeXstudio konfigurieren → Befehle (TeXstudio → Einstellungen unter macOS) bei PdfLaTeX vor %.tex ergänzt werden:
pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex
@slide(layout=content-only)
@title Ein Hinweis zu unserem Skript
@content
Unsere Übungsmaterialien erlauben es, zwischen minted und listings zu wählen.
Von Haus aus nutzen wir listings.
Um minted zu aktivieren muss eine Datei namens listings-mode.tex mit dem folgenden Inhalt im Wurzelverzeichnis unseres Projekts erstellt werden:
\newcommand\listingsmode{minted}
Kompiliert erneut und die Listings sollten durch minted erstellt worden sein.
@slide(layout=content-and-preview-with-category)
@category minted
@title Code im LaTeX-Quelltext
@content ++ In einer eigenen Umgebung:
\section*{Haskell-Magie}
Quadrate aller geraden % …
\begin{minted}{haskell}
[x^2 | x <- [1..200], even x]
\end{minted}
++ Inline im Quelltext:
\section*{Ein HTML-Beispiel}
Eine Überschrift wird so ausgezeichnet:
\mint{html}|<h2>LaTeX im Studium</h2>|.
@slide(layout=content-and-preview-with-category)
@category minted
@title Externer Code
@content Um Redundanz zu vermeiden, ist es manchmal praktisch, den Quelltext direkt aus der Quelldatei einzulesen.
\section*{Einfache Java-Anwendung}
\inputminted{java}{Test.java}
public class Test {
public static void main(/*…*/) {
System.out.println(/*…*/);
}
}
@slide(layout=content-only-with-category)
@category minted
@title Themen und Stile
@content Durch optionale Parameter können Zeilennummerierung, Umbrüche und Farben ausgewählt werden. Außerdem sind zahlreiche Themes verfügbar.
\usemintedstyle{monokai}
\begin{minted}[
linenos=true,
breaklines=true,
]{javascript}
% ...
\end{minted}
🔗 Einführung und offizielle Dokumentation
@slide(layout=content-and-preview-with-category)
@category listings
@title Code im LaTeX-Quelltext
@content In einer eigenen Umgebung:
\section*{Haskell-Magie}
Quadrate aller geraden % …
\begin{lstlisting}[language=Haskell]
[x^2 | x <- [1..200], even x]
\end{lstlisting}
Das Paket listings stellt keinen Befehl für inline-Listings zur Verfügung.
@slide(layout=content-and-preview-with-category)
@category listings
@title Externer Code
@content
Praktischerweise bietet auch listings einen Befehl zum Einfügen externen Codes:
\section*{Einfache Java-Anwendung}
\lstinputlisting[language=Java]{Test.java}
public class Test {
public static void main(/*…*/) {
System.out.println(/*…*/);
}
}
@slide(layout=content-only-with-category)
@category listings
@title Themen und Stile
@content
listings stellt keine eigenen Themes zur Verfügung. Dies kann aber durch die vielen Konfigurationsoptionen ausgeglichen werden.
\begin{lstlisting}[
language=Java,
basicstyle=\footnotesize\ttfamily,
breaklines=true,
keywordstyle=\color{ForestGreen},
commentstyle=\color{DarkGray},
literate={ö}{{\"o}}1
]
% …
\end{lstlisting}
Für die Erstellung eigener Themes ist der Befehl \lstset nützlich.
@slide(layout=content-only-with-category)
@category listings
@title Weitere Materialien
@content
- Einführung in das Paket
- offizielle Dokumentation
- das Paket
xcolorfür Farben - zwei Themes im solarized-Stil für
listings
@slide(layout=task)
@task-number 10
@title
minted
@content
- Im Ordner
exercises/source-code-listingsfindet ihr eine Datei namensSource.java. - Bindet den Java-Quelltext in der Datei
source-code-listings.texein. (Beachtet, dass der Dateipfad relativ zumain.texist.) - Aktiviert das Syntax-Highlighting durch Angabe der Sprache Java.
- Nummeriert die Zeilen und aktiviert Umbrüche.
- Nutzt das Theme
native. - Ändert die Hintergrundfarbe des Themes zu Dunkelblau.
- Bindet jetzt nur die Zeilen 5 bis 7 ein.
- Entfernt die Leerzeichen am Anfang der Zeilen durch die passende Option (Tipp: Die Dokumentation spricht hier von
gobble).
Seht bei Fragen in der Dokumentation des Paketes minted nach.
@slide(layout=task)
@task-number 10
@title
listings
@content
- Im Ordner
exercises/source-code-listingsfindet ihr eine Datei namensSource.java. - Bindet den Java-Quelltext in der Datei
source-code-listings.texein. (Beachtet, dass der Dateipfad relativ zumain.texist.) - Aktiviert das Syntax-Highlighting durch Angabe der Sprache Java.
- Nummeriert die Zeilen und aktiviert Umbrüche.
- Setzt mit dem Parameter
basicstyleeine dicktengleiche Schrift (\ttfamily \small). - Ändert die Schlüsselwortfarbe zu Blau.
- Verbergt die Sonderzeichen, die Leerzeichen in Zeichenketten markieren.
Seht bei Fragen in der Dokumentation des Paketes listings nach.