Seite 1 von 1

Java listings und Umlaute

Verfasst: Fr 21. Jun 2013, 01:22
von Jan45
Hallo,
Ich habe einmal einen mathematischen Text in Latex geschrieben und dabei das Paket [uft8]{inputenc} benutzt, alles ohne Probleme.
Jetzt wollte ich ein Dokument schreiben, das auch Java Codes beinhaltet. Dazu musste ich von uft8 auf ansinew wechseln, damit Umlaute richtig eingefügt werden. Soweit auch alles ok. Will ich jetzt aber normalen Text, abseits der Listings-Umgebung schreiben, funktioniert das mit ansinew nicht. Erstens erkennt er keine Umlaute mehr und zweitens werden in definitions, etc die Zeilen nicht mehr umgebrochen, sprich es wird in eine Zeile geschrieben bis kein Platz mehr ist und den Rest kann man nicht sehen.
Ich sitze seit mehreren Stunden an diesem Problem und konnte nichts sinnvolles dazu finden. Ich wäre sehr dankbar, wenn jemand das Problem lösen kann.
Hier der Anfang meines Dokumentes:
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{empheq}
\usepackage{amsthm}
\usepackage[pdftex]{graphicx}
\usepackage{stmaryrd}
\usepackage{listings}
\usepackage{lmodern}
\usepackage{xcolor}
\usepackage{textcomp}

Verfasst: Fr 21. Jun 2013, 07:58
von Johannes_B
Hallo,

bitte informiere dich, was iputenc ist. Die Option muss muss mit der Codierung deines Dokumentes übereinstimmen. Neuere Editoren verwenden meist utf8 als Standard.
Passt das ganze nicht zusammen, dann werden Umlaute/Sonderzeichen falsch dargestellt.

Das Paket listings arbeitet mit utf8 nicht so wirklich zusammen, deshalb die Erweiterung listingsutf8.

Schau dir bitte auch an was Minimalbeispiele sind, und wozu sie dienen.

Die Optionen pdftex/dvips solltest du übrigens weglassen.

Verfasst: Fr 21. Jun 2013, 09:30
von Jan45
Hey,
danke für deine Antwort, die Fehlermeldung ist schon weg, aber es funktioniert noch nicht ganz richtig. Wenn ich das richtig verstanden habe sollte es so aussehen (hoffe das geht als Minimalbeispiel durch):
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{listingsutf8}

\begin{document}
\lstset{language=java,
inputencoding=utf8/latin1,
breaklines=true
}
\begin{lstlisting}
ö
\end{lstlisting}
\end{document}
Als Ausgabe erhalte ich aber kein ö, sondern ein komisches Zeichen.

Verfasst: Fr 21. Jun 2013, 09:38
von u_fischer
listingsut8 funktioniert nur, wenn das listings in einer externen Datei ist.

Du kannst aber die literate-Option in listings benutzen. Das funktioniert eigentlich immer:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listings}
\begin{document}
\lstset{extendedchars=true,basicstyle=\ttfamily,literate=%
    {Ä}{{\"A}}1%
    {Ö}{{\"O}}1%
    {Ü}{{\"U}}1%
    {ä}{{\"a}}1%
    {ö}{{\"o}}1%
    {ü}{{\"u}}1%
    {ß}{{\ss}}1%
}

\begin{lstlisting}
öäü
\end{lstlisting}
\end{document}

Verfasst: Fr 21. Jun 2013, 09:41
von Johannes_B
u_fischer hat geschrieben:listingsut8 funktioniert nur, wenn das listings in einer externen Datei ist.
Vollkommen richtig, das steht so auch in der Dokumentation.
\begin{filecontents*}{unicodetest.tex}
   ö ä ü ß
 \end{filecontents*}

\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{listingsutf8}
\usepackage{filecontents}
\begin{document}
\lstset{language=java,
  inputencoding=utf8/latin1,
  breaklines=true
}
\lstinputlisting{unicodetest.tex}
\end{document} 

Verfasst: Fr 21. Jun 2013, 10:44
von Jan45
Erstmal danke für die schnellen Antworten.
Ich habe das nicht mit input gemacht, um das Beispiel kurz zu halten.
\begin{filecontents*}{unicodetest.tex} 
   ö ä ü ß
\end{filecontents*} 
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{listingsutf8}

\begin{document}
\lstset{language=java,
inputencoding=utf8/ansinew,
breaklines=true,
extendedchars=true,basicstyle=\ttfamily,literate=% 
}
\lstinputlisting{test.java}
\end{document}
Im Dokument erscheint nur //, die datei test. java besteht aus //ÖöÄäÜüß

Verfasst: Fr 21. Jun 2013, 10:54
von u_fischer
Jan45 hat geschrieben: \lstinputlisting{test.java}
[/code]
Im Dokument erscheint nur //, die datei test. java besteht aus //ÖöÄäÜüß
Dann ist die test.java nicht utf8 kodiert sondern z.B. ansinew. Dann musst du sowas machen:
\inputencoding{ansinew}
\lstinputlisting{test.java}
\inputencoding{utf8}

Verfasst: Fr 21. Jun 2013, 11:05
von Jan45
u_fischer hat geschrieben:
Jan45 hat geschrieben: \lstinputlisting{test.java}
[/code]
Im Dokument erscheint nur //, die datei test. java besteht aus //ÖöÄäÜüß
Dann ist die test.java nicht utf8 kodiert sondern z.B. ansinew. Dann musst du sowas machen:
\inputencoding{ansinew}
\lstinputlisting{test.java}
\inputencoding{utf8}
Vielen Dank, jetzt funktionierts. Falls mal jemand ein ähnliches Problem hat, so hats letztendlich geklappt:
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8, ansinew]{inputenc}
\usepackage{listings}

\begin{document}
\lstset{language=java,
breaklines=true,
extendedchars=true,basicstyle=\ttfamily,literate=% 
}
\inputencoding{ansinew}
\lstinputlisting{test.java}
\inputencoding{utf8}
ö
\end{document}

Verfasst: Fr 21. Jun 2013, 12:23
von u_fischer
\usepackage[utf8, ansinew]{inputenc}
Lass das ansinew weg. Deine Hauptdatei ist doch utf8 kodiert.