Ich möchte mit dem Paket listings Codebeispiele darstellen. Enthalten diese allerdings Umlaute, oder sonstige Sonderzeichen, so erhalte ich die Fehlermeldung:

Open in writeLaTeX
! Package inputenc Error: Unicode char \u8:Ã\lst@FillFixed@ not set up for use 
with LaTeX.

See the inputenc package documentation for explanation.
Type  H <return>  for immediate help.
 ...

l.8 \chapter{Test} %Überschrift 
                                  der Ebene chapter
?

Wie kann ich in meinen Programmen trotzdem Umlaute verwenden?

Open in writeLaTeX
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listings}
\begin{document}
abc äöüß
\begin{lstlisting}
\chapter{Test} %Überschrift der Ebene chapter
%ä Ö ß
\end{lstlisting}
\end{document}

Auch Code anderer Anwendungen/Sprachen sollte so darstellbar sein, beispielsweise Matlab, C, C++, Java und LaTeX, um nur einige zu nennen,

gefragt 24 Mär '14, 17:22

Johannes's gravatar image

Johannes
7.2k132759
Akzeptiert: 68%

bearbeitet 24 Mär '14, 17:33


Für deutsche Umlaute in listings nutze ich die Möglichkeit über literate Zeichen ersetzen zu lassen

Open in writeLaTeX
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{listings}
\lstset{basicstyle=\ttfamily}
\lstset{literate=%
  {Ö}{{\"O}}1
  {Ä}{{\"A}}1
  {Ü}{{\"U}}1
  {ß}{{\ss}}2
  {ü}{{\"u}}1
  {ä}{{\"a}}1
  {ö}{{\"o}}1
}
\begin{document}
Umlaute und Sonderzeichen im normalen Text: äöüß und als inline
Codeschnipsel:
\lstinline|\emph{Sütterlinstraße}|
\begin{lstlisting}
\chapter{Test} %Überschrift der Ebene chapter
%ä Ö ß
\end{lstlisting}
\end{document}
Permanenter link

beantwortet 24 Mär '14, 19:10

esdd's gravatar image

esdd
14.2k53251

Das Paket listings kann keine Multibyte-codierten Zeichen verarbeiten. Dies fällt bei den Umlauten zuerst auf, da diese in der deutschen Sprache am ehesten vorkommen. Die Engines XeTeX und LuaTeX bieten einen nativen Support für Unicode und bieten damit eine interessante Alternative zum klassischen PdfTeX. Für Interessierte: Was ist LuaTeX

Zu beachten ist dabei, dass die Pakete inputec und fontenc nicht geladen werden sollten. Das richtige Fontencoding wird durch das Paket fontspec ermittelt. Nähere Erläuterungen finden sich in Was ist der Unterschied zwischen latex, pdflatex, lualatex und xelatex?

Open in writeLaTeX
% XeLaTeX or LuaLaTeX
\documentclass{article}
\usepackage{fontspec}
\usepackage{listings}
\begin{document}
Umlaute und Sonderzeichen im normalen Text: äöüß und als inline
Codeschnipsel:
\lstinline|\emph{Sütterlinstraße}|

\begin{lstlisting}
\chapter{Test} %Überschrift der Ebene chapter
%ä Ö ß
\end{lstlisting}
\end{document}

Um listings mit pdfTeX verwenden zu können, kann man das Paket listingsutf8 von Heiko Oberdiek verwenden. Es lädt im Hintergrund selbstständig das Paket listings und gibt auch alle Optionen an dieses weiter. Allerdings ist dieses Vorgehen mit gewissen Beschränkungen verbunden. Die Programmschnipsel müssen vom Anwender in externe Dateien geschrieben werden, welche dann beim Kompilieren gelesen und geändert werden. Im Minimalbeispiel werden diese Dateien mit Hilfe der Umgebung filecontents geschrieben, dies dient nur der Anschaulichkeit (siehe auch Was ist ein Minimalbeispiel?).

Während der Kompilation wird eine Codedatei binär eingelesen, in einen String mit singlebit-encoding umgewandelt (in diesem Fall latin1), welcher dann wieder eingelesen wird.

Momentan kann man mit listingsutf8 gute Ergebnisse erzielen, allerdings sind inline-Schnipsel und die Verwendung der Umgebung lstlisting nicht möglich.

Open in writeLaTeX
%\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.lst}
\chapter{Test} ö ä
\end{filecontents*}
\begin{filecontents*}{inlinecode.lst}
    \emph{Sütterlinstraße}
\end{filecontents*}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listingsutf8}
\lstset{inputencoding=utf8/latin1}%hier passiert die Magie
\begin{document}
Umlaute und Sonderzeichen im normalen Text: äöüß und als inline
Codeschnipsel:
\lstinputlisting{inlinecode.lst}

\lstinputlisting{\jobname.lst}
\end{document}
Permanenter link

beantwortet 24 Mär '14, 17:26

Johannes's gravatar image

Johannes
7.2k132759

bearbeitet 01 Okt '14, 07:41

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×108
×15

Frage gestellt: 24 Mär '14, 17:22

Frage wurde angeschaut: 10,551 Mal

Zuletzt aktualisiert: 01 Okt '14, 07:41