Java listings und Umlaute

Schriftbild, Absätze und Auflistungen einstellen


Jan45
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Fr 21. Jun 2013, 01:08

Java listings und Umlaute

Beitrag 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}

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag 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.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Jan45
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Fr 21. Jun 2013, 01:08

Beitrag 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.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4297
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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}

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag 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} 
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Jan45
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Fr 21. Jun 2013, 01:08

Beitrag 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 //ÖöÄäÜüß

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4297
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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}

Jan45
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Fr 21. Jun 2013, 01:08

Beitrag 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}

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4297
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

\usepackage[utf8, ansinew]{inputenc}
Lass das ansinew weg. Deine Hauptdatei ist doch utf8 kodiert.

Antworten