Seite 1 von 2
Umlaute verrutscht bei lstlisting
Verfasst: Sa 21. Mai 2011, 11:35
von Photon
Hallo Community,
ich möchte Code-Schnipsel in ein LaTeX-Dokument einbinden, dafür nutze ich die lstlisting-Umgebung. Leider sind dabei alle Umlaute verrutscht. Hier ein Minimalbeispiel:
\documentclass[10pt, a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{german}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{listings}
\lstset{numbers=left, numberstyle=\tiny, numbersep=5pt}
\lstset{language=C++}
\lstset{breaklines=true, showstringspaces=false}
\lstset{inputencoding=utf8, extendedchars=\true}
\begin{document}
\begin{lstlisting}
"blaäbla"
blaäbla
\end{lstlisting}
\end{document}
Nun sieht die Ausgabe so aus:
Das ä von "blaäbla" (mit Anführungsstrichen) ist nach vorne gerutscht, das ä von blaäbla (ohne Anführungsstriche) sogar in die vorhergehende Zeile.
Hat jemand Rat, wie man die Umlaute an die richtige Position bekommt?
Vielen Dank,
Photon
Zwischenstand
Verfasst: Sa 21. Mai 2011, 11:45
von Photon
Da alle Umlaute im Code in ""-Umgebungen vorkommen, kann man die korrekte Darstellung mit escapeinside="" erzwingen, dadurch verschwinden aber die "-Zeichen aus dem Code. Man könnte natürlich doppelte "-Zeichen setzen oder andere Begrenzungen einfügen, wäre aber natürlich schöner, wenn jemand eine schönere Lösung hätte, bei der der Code nicht angepasst werden muss.
MfG Photon
Verfasst: Sa 21. Mai 2011, 16:05
von Xenara
Kann es sein, dass das Problem nur darin liegt, dass du geschrieben hast
true/false in Optionen sind keine Befehle. Schreibt man das richtig, klappt dein Beispiel. Das "\true" hat den gleichen Effekt wie "false".
\documentclass[10pt, a4paper]{article}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{german}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{listings}
\lstset{%
numbers=left,%
numberstyle=\tiny,%
numbersep=5pt,%
language=C++,%
breaklines=true,%
showstringspaces=false,%
inputencoding=ansinew,%
extendedchars=true%
}
\begin{document}
\begin{lstlisting}
"blaäbla"
blaäbla
\end{lstlisting}
\end{document}
Verfasst: Sa 21. Mai 2011, 16:13
von Photon
Wenn ich den Backslash entferne, erhalte ich leider folgenden Kompilierungsfehler von pdflatex:
(/usr/share/texmf-dist/tex/latex/base/utf8.def)
! Package inputenc Error: Unicode char \u8:�\expandafter not set up for use wit
h LaTeX.
See the inputenc package documentation for explanation.
Type H <return> for immediate help.
...
l.27 "blaäbla"
?
Verfasst: Sa 21. Mai 2011, 16:17
von Gast
Alternativ mit ansinew statt utf8:
(/usr/share/texmf-dist/tex/latex/base/ansinew.def)
! LaTeX Error: Command \textcurrency unavailable in encoding T1.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.27 "blaäbla"
?
Verfasst: Sa 21. Mai 2011, 22:17
von Xenara
Kannst du Umlaute sonst eingeben? Also ausserhalb der listings-Umgebung? Hast du den Text in der listings eingetippt oder von woher kopiert?
Ich hab leider keine Ahnung, was bei dir schiefläuft, dazu kenne ich mich zu wenig aus. Bei mir läuft es so auf WinXP mit TeXLive und pdflatex kompiliert.
Merkwürdig finde ich die Fehlermeldung wegen \textcurrency, das steht doch nirgens im Text?
Verfasst: Sa 21. Mai 2011, 23:14
von iTob
Nabend,
die \textcurrency-Warnung kommt (u. a.?) dann, wenn Dateikodierung und das was man bei \usepackage[<Kodierung>]{inputenc} angibt nicht übereinstimmen …
Verfasst: Sa 21. Mai 2011, 23:20
von bloodworks
Hallo ich kann das Probem auch nicht nachvollziehen.
\documentclass[10pt, a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{listings}
\lstset{%
numbers=left,%
numberstyle=\tiny,%
numbersep=5pt,%
language=C++,%
breaklines=true,%
showstringspaces=false,%
inputencoding=latin1,%
extendedchars=true%
}
\begin{document}
\begin{lstlisting}
"blaäbla"
blaäbla
\end{lstlisting}
\end{document}
Ich habe das Inputencoding natürlich verändert.
Verfasst: So 22. Mai 2011, 11:54
von Photon
Nun ja, ich habe die Kodierung in
\usepackage[KODIERUNG]{inputenc}
immer antsprechend der Kodierung in
\lstset{inputencoding=KODIERUNG}
angepasst. Aber weder mit utf8, noch mit ansinew, noch mit latin1 will das Ding kompilieren. Außerhalb der Listings gibt es mit Sonderzeichen keine Probleme.
Ich habe versucht, fontenc von T1 auf T2A zu stellen, dann gibt es zwar bei latin1 und ansinew keine Kompilerfehler, aber die Umlaute werden als Zeichensalat dargestellt... Bei utf8 bleibt der Kompilierfehler auch mit T2A.
Verfasst: So 22. Mai 2011, 12:23
von bloodworks
Bitte setzte die inputenc auf den in deinem Editor eingestellten Wert und setzte ein \listfiles vor das Dokument.
Hier ist meins:
*File List*
article.cls 2007/10/19 v1.4h Standard LaTeX document class
size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
inputenc.sty 2008/03/30 v1.1d Input encoding file
latin1.def 2008/03/30 v1.1d Input encoding file
fontenc.sty
t1enc.def 2005/09/27 v1.99g Standard LaTeX file
babel.sty 2008/07/06 v3.8l The Babel package
ngermanb.ldf 2008/07/06 v2.6n new German support from the babel system
geometry.sty 2010/09/12 v5.6 Page Geometry
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
ifpdf.sty 2011/01/30 v2.3 Provides the ifpdf switch (HO)
ifvtex.sty 2010/03/01 v1.5 Switches for detecting VTeX and its modes (HO)
ifxetex.sty 2010/09/12 v0.6 Provides ifxetex conditional
listings.sty 2007/02/22 1.4 (Carsten Heinz)
lstmisc.sty 2007/02/22 1.4 (Carsten Heinz)
listings.cfg 2007/02/22 1.4 listings configuration
lstlang1.sty 2004/09/05 1.3 listings language file
lstlang1.sty 2004/09/05 1.3 listings language file
lstmisc.sty 2007/02/22 1.4 (Carsten Heinz)
latin1.def 2008/03/30 v1.1d Input encoding file
***********