latex-wochenende/slides/chapter-12.de.md

7.1 KiB

@slide(layout=chapter-slide)

@title 12 Quelltext-Listings

@slide(layout=content-only)

@title Unsere Optionen

@content Es gibt zwei verbreitete Wege, Quelltext in LaTeX-Dokumenten zu zeigen.

  • ++ minted erstellt sehr hübsche Quelltext-Listings, aber es benötigt etwas mehr Konfiguration und funktioniert nicht auf allen Betriebssystemen zuverlässig.
  • ++ listings ist eine einfach zu nutzende (aber nicht so hübsche) Alternative für diejenigen, die Probleme mit minted haben.

++ 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}

@preview { .thin-padding }

@slide(layout=content-only)

@title Anpassungen beim Kompilieren

@content

Um Dokumente mit Quelltext-Listings kompilieren zu können, muss die Flag `--shell-escape` an den Compiler übergeben werden.
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>|.

@preview

@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(/*…*/);
    }
}

@preview

@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.

@preview

@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(/*…*/);
    }
}

@preview

@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

@slide(layout=task)

@task-number 10

@title minted

@content

  • Im Ordner exercises/source-code-listings findet ihr eine Datei namens Source.java.
  • Bindet den Java-Quelltext in der Datei source-code-listings.tex ein. (Beachtet, dass der Dateipfad relativ zu main.tex ist.)
  • 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-listings findet ihr eine Datei namens Source.java.
  • Bindet den Java-Quelltext in der Datei source-code-listings.tex ein. (Beachtet, dass der Dateipfad relativ zu main.tex ist.)
  • Aktiviert das Syntax-Highlighting durch Angabe der Sprache Java.
  • Nummeriert die Zeilen und aktiviert Umbrüche.
  • Setzt mit dem Parameter basicstyle eine 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.