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, 22:22

Johannes's gravatar image

Johannes
7.3k294566
Akzeptiert-Rate: 43%

bearbeitet 24 Mär '14, 22:33


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

Öffne in Overleaf
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{listings}
\lstset{basicstyle=\ttfamily}
\lstset{literate=%
  {Ö}{{\"O}}1
  {Ä}{{\"A}}1
  {Ü}{{\"U}}1
  {ß}{{\ss}}1
  {ü}{{\"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 25 Mär '14, 00:10

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

bearbeitet 03 Apr '17, 01:04

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, 22:26

Johannes's gravatar image

Johannes
7.3k294566
Akzeptiert-Rate: 43%

bearbeitet 01 Okt '14, 13:41

Eine weitere Möglichkeit besteht darin, XeLaTeX oder LuaLaTeX zu verwenden. Da diese beiden UTF8 nativ beherrschen, sind UTF8-Zeichen dann ebenfalls einzelne Zeichen und werden nicht mehr über aktive Zeichen + weitere Zeichen (also letztlich mehrere Zeichen) realisiert. Daher kann listings dann plötzlich auch mit UTF8 codierten Listings umgehen:

Open in writeLaTeX
\documentclass{article}
\usepackage{fontspec}
\usepackage{listings}
\begin{document}
abc äöüß
\begin{lstlisting}
\chapter{Test} %Überschrift der Ebene chapter
%ä Ö ß
\end{lstlisting}
\end{document}

Natürlich darf man dann weder fontenc noch inputenc verwenden. Siehe dazu auch: Was ist der Unterschied zwischen latex, pdflatex, lualatex und xelatex?

Permanenter link

beantwortet 18 Aug '14, 14:51

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 18 Aug '14, 14:53

@Tichy Das steht doch auch schon in meienr Antwort ;-)

(18 Aug '14, 15:06) Johannes

@Johannes Habe ich beim Blättern glatt übersehen. Mein Mausrad ist zu schnell und ich habe Tomaten auf den Augen. Dann lösche ich das eben wieder.

(18 Aug '14, 15:13) gast3
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×117
×22

gestellte Frage: 24 Mär '14, 22:22

Frage wurde gesehen: 40,383 Mal

zuletzt geändert: 03 Apr '17, 01:04