PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Umlaut!



buzzard
03-10-2011, 16:16
Guten Tag!

Ich beschäftige mich seit ein 2-3 Monaten mit Latex. Habe auch schon einige Dokumente damit geschrieben und bis jetzt sind nur kleiner Probleme aufgetaucht. Nun aber seit wenigen Tagen habe ich Probleme mit Umlauten. Wenn ich ein (beliebiges) tex Dokument öffnen will (mit Kile), dann erscheint die Meldung:


blablabla.tex was opened with UTF-8 encoding but contained invalid characters. It is set to read-only mode, as saving might destroy its content. Either reopen the file with the correct encoding chosen or enable the read-write mode again in the menu to be able to edit it.

Die Umlaute werden mit unbekannten Symbolen ersetzt und das kompilieren schlägt fehl. Habe das Öffnen mit ISO-8859 und weiteren auch schon getestet: gleiches Ergebnis. Habe gerade ein Matlabfile (m-file) mit dem Matlab-Editor geöffnet. Die Umlaute werden auch nicht richtig dargestellt. WTF?. Keine Lösung gefunden... Verwende im aktuellen Dokument:


\documentclass[8pt,a4paper,fleqn]{scrartcl}
\usepackage[
dvips, a4paper, landscape, left=.75cm, right=.75cm, top=.75cm, bottom=0.5cm, includeheadfoot]{geometry}
\usepackage{lscape}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage{verbatim}
\usepackage[ngerman]{babel}
\usepackage{latexsym}
\usepackage{multicol}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{array}
\usepackage{tabularx}
\usepackage{booktabs}

Habe seit neuem Ubuntu 11.04

Gruss buzzard

Schweinebacke
03-10-2011, 16:44
Unabhängig von Deinem Problem solltest Du utf8x durch utf8 ersetzen. utf8x gehört zu einem Paket, das nicht mehr gepflegt wird und mit einigen anderen Paketen zu Problemen führt.

ISO-8859 gibt es als Codierung nicht. Es gib ISO-8859-1 (aka ISO-Latin-1) usw.

Wenn die Umlaute in kile falsch dargestellt werden, dann ist kile nicht auf die Codierung eingestellt, in der die Datei ist.

buzzard
03-10-2011, 16:51
Danke für deine Antwort. Auch wenn ich utf8 verwende und kile auf utf8 umstelle kommt beim ersten Wort mit einem Umlaut die Meldung:


Package inputenc Error: Unicode char \u8: (umlaut dargestellt durch fragezeichten) not set up for use with Latex

Vielleicht hat es nichts mit Latex zu tun sondern mit irgend einer Einstellung von Ubuntu?

buzzard
03-10-2011, 19:08
mein locale -a output wäre:


C
de_DE
de_DE.ansix341968
de_DE.ansix341968@euro
de_DE@euro
de_DE.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX

wenn das hilft... muss ich irgendwie de_DE@euro iso8859-15 dazupflanzen? Sorry habe echt keine Ahnung was ich tun soll. Ist ein echt dringendes Problem :(

Schweinebacke
04-10-2011, 06:35
Wenn Du eine existierende Datei öffnest, muss der Editor auf die Codierung eingestellt werden, die in dieser Datei tatsächlich verwendet wird. Außerdem muss bei \usepackage[...]{inputenc} als Option diese Codierung ebenfalls angegeben werden. Die Meldung des Editors, die Du ursprünglich angegeben hattest und die Beschreibung, dass der Editor die Umlaute nicht richtig anzeigt, deutet auf einen Fehler bei der Codierungseinstellung des Editors hin. Die LaTeX-Fehlermeldung deutet hingegen darauf hin, dass bei inputenc die falsche Option angegeben ist. Falls die Datei bereits mit falschen Einstellungen bearbeitet wurde, kann es außerdem sein, dass Du einen Codierungsmix in der Datei hast. Arbeite deshalb beim Experimentieren immer mit einer Kopie!

Bei neu angelegten Dateien hast Du es leichter. Die speichert der Editor ja automatisch mit der Codierung, mit der sie erstellt wird. Daher muss nur noch LaTeX die korrekte Codierung mitgeteilt werden. Das geht mit dem Paket selinput sogar, ohne dass man die Codierung selbst kennt.

buzzard
04-10-2011, 18:04
Hmm. Seltsamerweise ist es genau umgekehrt. Die alten Dateien (solche, die ich vor ein paar Wochen erstellt habe) machen keine Probleme. Der Editor zeigt die Umlaute an und ich kann ohne Problem kompilieren. Die Neuen (auch heruntergeladene tex-Dateien) allerdings kann ich nicht kompilieren. Vielleicht hat das mit dem upgrade auf Ubuntu 11.04 zu tun? Alle Dateien, welche ich vor dem Upgrade erstellt habe, kann ich ohne Probleme öffnen/kompilieren.

Die Einstellungen bei Kile und inputenc optionen habe ich schon beliebig variiert. Ohne Erfolg...

Schweinebacke
05-10-2011, 07:21
Das ändert nichts an meiner Aussage, dass die reale Codierung des Dokuments mit der im Editor eingestellten übereinstimmen muss, damit der Editor die Umlaute richtig anzeigt, und dass die reale Codierung des Dokuments mit der bei inputenc eingestellten übereinstimmen muss, damit LaTeX die Umlaute korrekt verarbeiten kann.

Welche Codierung irgendwelche heruntergeladenen Dateien haben, hängt nun wirklich nicht von Deiner Ubuntu-Version ab. Davon hängt allenfalls die Version und die Voreinstellung von kile ab.

Bei neu eingegebenen Dateien sollte die Umlautdarstellung im Editor ja eigentlich auch kein Problem sein. Für die Verarbeitung mit LaTeX habe ich für diesen Fall extra auf selinput hingewiesen.

sommerfee
05-10-2011, 07:31
Für die Verarbeitung mit LaTeX habe ich für diesen Fall extra auf selinput hingewiesen.

Diesem Hinweis möchte ich mich gerne nachdrücklich anschließen.

Das selinput-Paket hat nicht nur den Vorteil, daß man seine Kodierung nicht wissen muß, sondern auch, daß es ein Umkodieren der Umlaute seitens des Editors/Anwenders problemlos übersteht. (Bei der Verwendung von "inputenc" müsste man hingegen die angegebene Kodierung ändern, damit das Dokument wieder korrekt übersetzbar wird.)

u_fischer
05-10-2011, 08:10
Die Einstellungen bei Kile und inputenc optionen habe ich schon beliebig variiert. Ohne Erfolg...

Benutze mal bei inputenc die Option "latin1" und kompiliere. Was genau wird aus äöü und ß? (Kopiere die Ausgabe aus der pdf-Datei).

buzzard
05-10-2011, 15:20
Diese Eingabe:


Der dazu geh\"orende Plot ist in der Abbildung \ref{abb:verlauf3} auf Seite \pageref{abb:verlauf3} zu finden.
Das obere \glqq ö\grqq wurde mit \verb+\"o+ geschrieben.\\ Hier jedoch ganz normal. Määääüüööäü Test äöüä :)

ergibt tragischerweise den Output im Anhang.

u_fischer
05-10-2011, 15:36
Das ist eindeutig der Output einer utf8-kodierten Datei (zumindest dieser Ausschnitt der Datei ist utf8 kodiert). D.h. benutze
\usepackage[utf8]{inputenc}. Wenn du damit Probleme hast: 1. Minimalbeispiel. 2. pdf-Ausgabe. 3. Log-Datei.

Schweinebacke
05-10-2011, 15:38
Sieht so aus, als wäre die Datei utf8 codiert und als hättest Du selinput nicht verwendet, obwohl Dir das nun schon mehrfach empfohlen wurde …

buzzard
05-10-2011, 15:47
seeehr seltsam. Wenn ich jetzt bei dieser Datei wieder utf8 auswähle, dann kann er die Umlaute normal darstellen. Bei einer anderen Datei hingegen geht es nur mit latin1.

Wenn ich eine tex Datei (verschiedene Quellen getestet) herunterlade und öffnen will, dann erscheint immer die beim ersten Post gezeigte Meldung. Das treibt mich in den Wahnsinn!!!
Ich will doch nur eine heruntergeladene Datei öffnen... (Habe Kile angewiesen, die Dateien mit utf8 zu öffnen)

u_fischer
05-10-2011, 15:53
Habe Kile angewiesen, die Dateien mit utf8 zu öffnen

Ach Gott. Das ist das Problem. Du kannst kile nicht anweisen eine Datei "mit utf8" zu öffnen. Das ist ein bischen so, als würdest deinen Editor anweisen, einen deutschen Text in englisch anzuzeigen. Wenn die Ursprungsdatei latin1 ist, dann muss Kile sie auch in latin1 öffnen, wenn du keinen Blödsinn sehen willst. Beim *Speichern* kannst du Kile dann bitten, die Datei zu "übersetzen", also in utf8 zu kodieren.

buzzard
05-10-2011, 16:36
Wenn ich Kile alles in ISO 8859-1 öffnen lasse (siehe 3.png der 3. Anhang) dann werden im Editor die Umlaute nicht richtig dargestellt: Siehe 1. Ahang für Kile und 2. Anhang für gedit...

Sorry habe eure neuen Posts irgendwie nicht gesehen!!! Ich gehe sie nochmals durch!

buzzard
05-10-2011, 17:23
Uff ich habs!!!

Der Grund für meine Verwirrung war folgende: Anscheinend wurde die Einstellung von Kile von mir oder sonst was geändert. Da ich relativ unerfahren bin habe ich den Fehler nicht gemerkt: \usepackage[utf8]{inputenc} verwendet aber nicht dementsprechend abgesichert und wieder geöffnet. Mein Fehler! Sorry!!!

Dadurch, dass ich irgendwelche tex-files heruntergeladen habe, welche \usepackage[applemac]{inputenc} verwenden dachte ich, irgendeine Einstellung von Ubuntu könnte verantwortlich sein. :S

Letzte Frage: Wenn ich jetzt ein solches applemac tex-file öffnen will, welches encoding muss ich verwenden? maccyr oder so was kann ich nicht auswählen...

selinput werde ich mir zu Herzen nehmen!

Ich danke schon mal im voraus für eure Zeit und Unterstützung! Danke viel mals!!!

buzzard
05-10-2011, 17:53
Habs gleich selbst rausgefunden:


recode mac..UTF-8 filename.tex

Die Erlösung! :) Und seltsamerweise macht auch mein Matlab-editor keine Probleme mehr mit Umlauten. Habe ja nichts an meinen m-files geändert. Naja Hauptsache alles wieder i.o!

buzzard
05-10-2011, 18:31
Na toll...
Jetzt habe ich das applemac tex-file mit recode nach utf8 geändert und geöffnet. So weit ok. Dann habe ich \usepackage[utf8]{inputenc} anstatt applemac dazugeschrieben. Beim kompilieren kam folgende Meldung in 100k-facher Ausführung:


Package inputenc Error: Unicode char \u8:?ng not set up for use with LaTeX...

Dann habe ich selinput verwendet mit:


\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß},
Euro={€},
}

und voilà es funktioniert. Nun kann ich die Datei aber nicht mehr öffnen, da ich ja nicht weiss, was für eine Kodierung es hat!!! Ich dreh durch :mad:

wenn ich


file -i datei

verwende ist der output: charset=unknown-8bit

Wieso funktioniert utf8 nicht schon zu beginn nach dem recoding? wieso unknown-8bit?

u_fischer
06-10-2011, 08:24
Also:

1. Wenn du selinput benutzt, findet es ja raus, welche Kodierung dein Dokument hat. Danach lädt es die passende inputenc-Datei. Also kannst du in der log-Datei nachschauen. Da wird dann sowas stehen:


(J:\MiKTeX2.9\tex\generic\oberdiek\se-utf8.def
File: se-utf8.def 2010/03/01 v1.8 stringenc: UTF-8
)
(J:\MiKTeX2.9\tex\latex\base\utf8.def
File: utf8.def 2008/04/05 v1.1m UTF-8 support for inputenc

Du kannst auch einfach \inputencodingname in dein Dokument schreiben, dann wird die Kopierung gedruckt.

2. Auch wenn deine Datei utf8 kodiert ist, kannst du den Fehler
Package inputenc Error: Unicode char \u8:?ng not set up for use with LaTeX...

bekommen. unicode/utf8 umfasst ziemlich viele Zeichen. Es wäre Zeit und Speicherplatz Verschwendung, wenn inputenc für alle Zeichen in jedem Dokument von Anfang an eine Definition laden würde. Finde also raus, welches Zeichen das Problem ist, dann kannst du die Definition nachladen.

buzzard
06-10-2011, 18:25
Danke für deine Antwort:

1. Meine log-datei:


(/usr/share/texmf-texlive/tex/latex/oberdiek/ix-name.def
File: ix-name.def 2009/08/13 v1.4 Name list (inputenx)
)
(/usr/share/texmf-texlive/tex/generic/oberdiek/se-utf8.def
File: se-utf8.def 2008/10/27 v1.6 stringenc: UTF-8
)
(/usr/share/texmf-texlive/tex/generic/oberdiek/se-iso-8859-1.def
File: se-iso-8859-1.def 2008/10/27 v1.6 stringenc: ISO-8859-1
)
(/usr/share/texmf-texlive/tex/generic/oberdiek/se-iso-8859-15.def
File: se-iso-8859-15.def 2008/10/27 v1.6 stringenc: ISO-8859-15
)
(/usr/share/texmf-texlive/tex/generic/oberdiek/se-cp1252.def
File: se-cp1252.def 2008/10/27 v1.6 stringenc: cp1252
)
(/usr/share/texmf-texlive/tex/latex/oberdiek/x-cp1252.def
File: x-cp1252.def 2009/08/13 v1.4 Input encoding cp1252 (inputenx)

Was bedeutet das? Dank \inputencodingname habe ich herausgefunden, dass es mit x-cp1252 kodiert ist. Aber was zur Hölle soll der Rest in der log-datei?

2. Es waren nur die Umlaute (Dokument enthielt sonst keine anderen deutschen Sonderzeichen)

Ich fasse zusammen: Wenn ich ein tex-file mit einer applemac kodierung bearbeiten will dann tue ich folgendes:\\

1. recode mac..UTF-8 datei.tex

2. Anstatt \usepackage[utf8]{inputenc} schreibe ich:


\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß},
Euro={€},
}

Dann kurz nach \begin{document}: \inputencodingname um in der pdf-datei herauszufinden wie es kodiert ist. (eig. sollte ich das irgendwie auch aus der log-datei sehen (nur der letzte eintrag relevant?)?)

3. Ich öffne die Datei nur noch mit dieser Kodierung

Sehr umständlich und sehr seltsam,dass ich durch recode eigentlich die Kodierung auf utf8 geändert haben soll aber sie doch nicht in utf8 ist!

rais
06-10-2011, 20:55
Moin moin,


Sehr umständlich und sehr seltsam,dass ich durch recode eigentlich die Kodierung auf utf8 geändert haben soll aber sie doch nicht in utf8 ist!
so, wie es sich hier anhört, ist entweder der recode bereits hingefallen oder Du kodierst die Datei mit dem Abspeichern (nach Deiner Ergänzung) wieder um.

Hast Du mal einen Link zu so einer -- möglichst kurzen -- applemac kodierten Datei?

MfG

buzzard
06-10-2011, 21:35
recode funktioniert anscheinend doch. Muss nur


recode applemac..utf-8 datei.tex

ausführen und mit utf-8 öffnen und mit utf-8 kompilieren. Geht jetzt plötzlich. Weiss auch nicht welche Einstellung jetzt geändert habe, dass es geht. Hauptsache es funktioniert.
Ist es denn nicht so, dass wenn ich kompiliere, die Datei auch automatisch in der Codierung gespeichert wird, welche ich im inputenc angegeben habe?

rstuby
07-10-2011, 07:25
In welcher Codierung die Datei gespeichert wird, dürfte eigentlich nicht von Angaben innerhalb der Datei abhängen, sondern von den Einstellungen des Editors.

u_fischer
07-10-2011, 08:27
Aber was zur Hölle soll der Rest in der log-datei?

selinput muss diverse Kodierungen durchprobieren, bis es eine findet, die passt. utf8 kannst du daran erkennen, dass dann wie in meinem Beispiel direkt das normale utf8.def geladen wird. Irgendwo in der log-Datei muss aber auch stehen


Package selinput Info: Encoding `x-cp1252' selected on input line 15

oder


Package selinput Info: Encoding `utf8' selected on input line 10.


Ist es denn nicht so, dass wenn ich kompiliere, die Datei auch automatisch in der Codierung gespeichert wird, welche ich im inputenc angegeben habe?

Nein. Die Option ist keine Anweisung an den Editor, sondern gibt LaTeX eine Information. Wenn du an einen Kaltwasserhahn ein Schild "Heiß" klebst, kommt da ja auch nicht plötzlich heißes Wasser raus. Es gibt aber paar Editoren, die beim Öffnen der Datei, die Datei scannen und die inputenc-Option benutzen, um zu entscheiden, welche Kodierung wohl vorliegt. Aber das funktioniert natürlich nur, wenn die Angabe korrekt ist. Wenn du in eine applemac kodierte Datei "\usepackage[utf8]{inputenc}" schreibst, können dich weder LaTeX noch dein Editor vor den dadurch entstehenden Problemen bewahren. Du bist dafür verantwortlich, dass dort die Wahrheit steht.

buzzard
07-10-2011, 22:56
Danke für deine Antwort! War wieder einmal sehr hilfreich!

Ich wünschte mir jeder wäre so hilfsbereit wie ihr :)