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.

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.

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)
Zurück
Weiter