Sourcecode
Wenn du einen Algorithmus oder einen komplexen Arbeitsablauf erklärst, kann die Darstellung von Quellcode oder Pseudocode sehr hilfreich sein.
LaTeX bietet dafür die listings
Umgebung an, die Syntax-Hervorhebungen für verschiedene Programmiersprachen sowie für benutzerdefinierte und individuell gestaltete Sprachen unterstützt.
Zum Beispiel zeigt Listing 1 ein “Hello World”-Beispiel in Java, während Listing 2 das Äquivalent in Pseudocode darstellt.
Hier ist “Pseudo” eine benutzerdefinierte Sprache, die in template/custom_listings.sty
definiert ist.
![](/media/guides/listing_simple_hu41f777e0bebb08694faf9b1d4b008e91_26444_b0c52fbbb9b1c1d380632cae18933e01.webp)
Zeige den Code
\begin{listingsbox}[t]
\lstinputlisting[
language=Java,
label=lst:sample-java,
caption={Hello World in Java}
]{listings/HelloWorld.java}
\end{listingsbox}
Listings nebeneinander
Das listingsbox
-Environment im obigen Beispiel regelt automatisch den Abstand um deinen Codeblock herum.
Wenn du zwei Listings nebeneinander darstellen möchtest, verwende das sublistingsbox
-Environment.
Im Gegensatz zu Abbildungen und Unterabbildungen brauchst du bei der Verwendung von sublistingsboxes
keine separaten Beschriftungen und Labels für jede listingsbox
.
![](/media/guides/listing_side_by_side_hucdb327812c3cd8914a1d59d8f44f1274_41361_c875f1c0dcaaadb1b8270b114929b188.webp)
Zeige den Code
\begin{listingsbox}[t]
\begin{sublistingsbox}
\lstinputlisting[
language=Java,
label=lst:sample-java,
caption={Hello World in Java}
]{listings/HelloWorld.java}
\end{sublistingsbox}
\hfill
\begin{sublistingsbox}
\lstinputlisting[
language=pseudo,
label=lst:sample-pseudo,
caption={Hello World in Pseudo}
]{listings/HelloWorld.pseudo}
\end{sublistingsbox}
\end{listingsbox}
Labels
Du solltest den Code im Text immer erläutern, selbst wenn er selbsterklärend erscheint.
Nutze Labels, um auf spezifische Codezeilen zu verweisen. Zum Beispiel:
Zeile 3 in Listing 1 und Zeile 2 in Listing 2 heben kritische Abschnitte des Codes hervor.
Um dies zu erreichen, schließe den \label
-Befehl in das sprachspezifische Escape-Zeichen ein (zum Beispiel $|$
für Java und §
für Pseudo).
HelloWorld.java
public class HelloWorld {
public static void main (String[] args) {
System.out.println("Hello World!"); |\label{line:sample-java-print}|
// and some other stuff
for (int i = 0; i < 6; i++)
foo(i);
}
}
HelloWorld.pseudo
define HelloWorld():
print "Hello World!" §\label{line:sample-pseudo-print}§
// and some other stuff
for i in [0,6]:
foo(i)