Inhaltsverzeichnis

Wie kann ich Programmlistings in mein Dokument einbinden?

Das Paket listings bietet eine sehr umfassende Möglichkeit, Programmlistings in das Dokument einzubinden. Mit der verbatim-Umgebung, die LaTeX bietet, ist es aber auch möglich, wenn auch ohne die ganzen Schmankerl.

Verbatim-Umgebung

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\begin{document}
 
\noindent Das ist das Shell-Skript, mit dem ich meine Gäste begrüße:
 
\begin{verbatim}
#!/bin/bash
x=1
while [ $x -le 5 ]
do
  echo "Willkommen zum $x., ich begrüße dich!"
  x=$(( $x + 1 ))
done
\end{verbatim}
\end{document}

Paket listings

Das Paket listings bietet sehr viele Möglichkeiten der Formatierung an. Im Normalfall wirkt es etwas ungewöhnlich:

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage{listings}
\begin{document}
 
\noindent Das ist das Shell-Skript, mit dem ich meine Gäste begrüße:
 
\begin{lstlisting}[language=sh]
#!/bin/bash
x=1
while [ $x -le 5 ]
do
  echo "Willkommen zum $x."
  x=$(( $x + 1 ))
done
\end{lstlisting}
\end{document}

Ein Problem, über das viele Anwender stolpern, kann man leicht umgehen: Normalerweise kommt listings nicht mit UTF-8 kodierten Umlauten zurecht. Folgender Quelltext zeigt den Trick für die Umlaute (literate=) und ändert die Formatierung ein wenig. Für die Farben wird das Paket xcolor benutzt.

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage{listings}
\usepackage{xcolor}
\begin{document}
 
\noindent Das ist das Shell-Skript, mit dem ich meine Gäste begrüße:
 
 
\lstset
{
    morekeywords={draw,clip,path},
    frame=single,
    framesep=\fboxsep,
    framerule=\fboxrule,
    rulecolor=\color{red},
    xleftmargin=\dimexpr\fboxsep+\fboxrule\relax,
    xrightmargin=\dimexpr\fboxsep+\fboxrule\relax,
    breaklines=true,
    basicstyle=\small\tt,
    keywordstyle=\color{blue},
    commentstyle=\color[rgb]{0.13,0.54,0.13},
    backgroundcolor=\color{yellow!10},
    tabsize=2,
    columns=flexible,
    morekeywords={maketitle},
    literate=%
    {Ö}{{\"O}}1
    {Ä}{{\"A}}1
    {Ü}{{\"U}}1
    {ß}{{\ss}}1
    {ü}{{\"u}}1
    {ä}{{\"a}}1
    {ö}{{\"o}}1
    {~}{{\textasciitilde}}1
}
 
 
\begin{lstlisting}[language=sh]
#!/bin/bash
x=1
while [ $x -le 5 ]
do
  echo "Willkommen zum $x., ich begrüße dich!"
  x=$(( $x + 1 ))
done
\end{lstlisting}
\end{document}