Discussion:
[Emacs] Kodierung der Bildschirmausgabe bei XeLaTeX-Datei falsch
(zu alt für eine Antwort)
Marcus Glöder
2014-08-16 14:30:55 UTC
Permalink
Hallo alle zusammen,

zur Zeit bin ich dabei, Emacs als LaTeX-Editor auszuprobieren. AUCTeX
ist installiert, die Rechtschreibüberprüfung (Aspell) ebenfalls. Bei dem
Emacs handelt es sich um Version

GNU Emacs 24.3.1 (i386-mingw-nt6.1.7601).

Das Ganze läuft auf Windows 7 Home Premium 32 Bit. Als
LaTeX-Distribution kommt MiKTeX 2.9 zum Einsatz. Nun habe ich das
Problem, dass bei einer XeLaTeX-Test-Datei die Kodierung der
Bildschirmausgabe von Emacs offenbar nicht stimmt. Die folgende Datei:

\documentclass[a4paper,ngerman]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Gentium}
\setsansfont[Ligatures=TeX]{Arial}
\setmonofont{Courier New}
\usepackage{babel}
\begin{document}
,,Dies ist ein wörtliches Zitat``
\end{document}

sieht in Emacs so aus:

\documentclass[a4paper,ngerman]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Gentium}
\setsansfont[Ligatures=TeX]{Arial}
\setmonofont{Courier New}
\usepackage{babel}
\begin{document}
,,Dies ist ein wörtliches Zitat``
\end{document}

Die resultierende PDF-Datei ist dann aber wieder richtig. Wenn ich in
Emacs die Zeichen »Ã¶« durch ein »ö« ersetze, bekomme ich eine
fehlerhafte PDF-Ausgabe. [Strg]+h, C, [Return] ergibt die unten
wiedergegebene Ausgabe. Nun kann ich mir selbstredend
kodierungsunabhängige Eingaben wie \"{o} für ein kleines »ö« angewöhnen.
Aber wenn ich Emacs eine richtige Bildschirmausgabe beibringen kann,
wäre mir das lieber. Bei Dateien, die mit PDFLaTeX kompiliert werden,
tritt das Problem nicht auf. Die Datei ~/.emacs ist im Moment noch recht
kurz und sieht so aus:

--- Anfang .emacs ---
(server-start)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
(setq-default ispell-program-name "aspell")
(setq ispell-dictionary "deutsch")
--- Ende .emacs ---

Wie kann ich Emacs bei XeLaTeX-Dateien dazu bewegen, Umlaute und
Sonderzeichen am Bildschirm richtig wiederzugeben?

Vielen Dank und viele Grüße
Marcus




--- Anfang Emacs-Ausgabe Kodierung ---
Coding system for saving this buffer:
1 -- iso-latin-1-dos (alias: iso-8859-1-dos latin-1-dos)

Default coding system (for new files):
nil
Coding system for keyboard input:
1 -- iso-latin-1-unix (alias: iso-8859-1-unix latin-1-unix)

Coding system for terminal output:
* -- cp1252 (alias of windows-1252)

Coding system for inter-client cut and paste:
U -- utf-16le-dos

Defaults for subprocess I/O:
decoding: - -- undecided-dos (alias: dos)

encoding: 1 -- iso-latin-1-unix (alias: iso-8859-1-unix latin-1-unix)


Priority order for recognizing coding systems when reading files:
1. utf-8 (alias: mule-utf-8)
2. iso-2022-7bit
3. iso-latin-1 (alias: iso-8859-1 latin-1)
4. iso-2022-7bit-lock (alias: iso-2022-int-1)
5. iso-2022-8bit-ss2
6. emacs-mule
7. raw-text
8. iso-2022-jp (alias: junet)
9. in-is13194-devanagari (alias: devanagari)
10. chinese-iso-8bit (alias: cn-gb-2312 euc-china euc-cn cn-gb gb2312)
11. utf-8-auto
12. utf-8-with-signature
13. utf-16
14. utf-16be-with-signature (alias: utf-16-be)
15. utf-16le-with-signature (alias: utf-16-le)
16. utf-16be
17. utf-16le
18. japanese-shift-jis (alias: shift_jis sjis)
19. chinese-big5 (alias: big5 cn-big5 cp950)
20. undecided

Other coding systems cannot be distinguished automatically
from these, and therefore cannot be recognized automatically
with the present coding system priorities.

Particular coding systems specified for certain file names:

OPERATION TARGET PATTERN CODING SYSTEM(s)
--------- -------------- ----------------
File I/O "\\.dz\\'" (no-conversion . no-conversion)
"\\.xz\\'" (no-conversion . no-conversion)
"\\.lzma\\'" (no-conversion . no-conversion)
"\\.lz\\'" (no-conversion . no-conversion)
"\\.g?z\\'" (no-conversion . no-conversion)
"\\.\\(?:tgz\\|svgz\\|sifz\\)\\'"
(no-conversion . no-conversion)
"\\.tbz2?\\'" (no-conversion . no-conversion)
"\\.bz2\\'" (no-conversion . no-conversion)
"\\.Z\\'" (no-conversion . no-conversion)
"\\.elc\\'" utf-8-emacs
"\\.utf\\(-8\\)?\\'" utf-8
"\\.xml\\'" xml-find-file-coding-system
"\\(\\`\\|/\\)loaddefs.el\\'"
(raw-text . raw-text-unix)
"\\.tar\\'" (no-conversion . no-conversion)
"\\.po[tx]?\\'\\|\\.po\\."
po-find-file-coding-system
"\\.\\(tex\\|ltx\\|dtx\\|drv\\)\\'"
latexenc-find-file-coding-system
"" find-buffer-file-type-coding-system
Process I/O "[pP][lL][iI][nN][kK]" (undecided-dos . undecided-dos)
"[cC][mM][dD][pP][rR][oO][xX][yY]"
(undecided-dos . undecided-dos)
Network I/O nothing specified
--- Ende Emacs-Ausgabe Kodierung ---
--
PMs an: ***@gmx.de
Marcus Glöder
2014-08-16 21:25:06 UTC
Permalink
Post by Marcus Glöder
Hallo alle zusammen,
offensichtlich hängt die Darstellung in Emacs und die PDF-Ausgabe davon
Post by Marcus Glöder
\documentclass[a4paper,ngerman]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Gentium}
\setsansfont[Ligatures=TeX]{Arial}
\setmonofont{Courier New}
\usepackage{babel}
\begin{document}
,,Dies ist ein wörtliches Zitat``
\end{document}
habe ich einfach mal in den Windows-Editor geladen und dann unter zwei
verschiedenen Dateinamen einmal mit utf8 und einmal mit ANSI als
Kodierung abgespeichert. In Emacs werden diese beiden Dateien auf dem
Bildschirm richtig angezeigt, aber nur die mit utf8 kodierte Datei führt
auch zu einer korrekten PDF-Ausgabe. Die ursprüngliche Datei hatte ich
in einem anderen Editor erstellt (ich weiß nicht mehr, in welchem) und
ich weiß nicht, mit welcher Kodierung die Datei abgespeichert worden
ist. Das ist aber auch egal. Ich weiß jetzt, dass XeLaTeX-Dateien immer
in utf8 abgespeichert werden müssen, um im Emacs korrekt dargestellt und
kompiliert zu werden.
Post by Marcus Glöder
Vielen Dank und viele Grüße
Marcus
--
PMs an: ***@gmx.de
Andreas Röhler
2014-08-17 07:06:47 UTC
Permalink
Post by Marcus Glöder
Hallo alle zusammen,
\documentclass[a4paper,ngerman]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Gentium}
\setsansfont[Ligatures=TeX]{Arial}
\setmonofont{Courier New}
\usepackage{babel}
\begin{document}
,,Dies ist ein wörtliches Zitat``
\end{document}
habe ich einfach mal in den Windows-Editor geladen und dann unter zwei verschiedenen Dateinamen einmal mit utf8 und einmal mit ANSI als Kodierung abgespeichert. In Emacs
werden diese beiden Dateien auf dem Bildschirm richtig angezeigt, aber nur die mit utf8 kodierte Datei führt auch zu einer korrekten PDF-Ausgabe. Die ursprüngliche Datei
hatte ich in einem anderen Editor erstellt (ich weiß nicht mehr, in welchem) und ich weiß nicht, mit welcher Kodierung die Datei abgespeichert worden ist. Das ist aber auch
egal. Ich weiß jetzt, dass XeLaTeX-Dateien immer in utf8 abgespeichert werden müssen, um im Emacs korrekt dargestellt und kompiliert zu werden.
Post by Marcus Glöder
Vielen Dank und viele Grüße
Marcus
Das könnte ein Fehler in Emacs sein. Soweit zu erfahren, speichert Windows Dateien als UTF-16.
Emacs scheint nicht zuverlässig damit umgehen zu können.

Siehe auch hier:

http://nullprogram.com/blog/2014/06/13/

Grüße,

Andreas
Stefan Reuther
2014-08-17 11:32:41 UTC
Permalink
Hallo,

Disclaimer: meine Erfahrungen mit *aktuellen* Versionen von Emacs / TeX
halten sich derzeit in Grenzen.
Post by Marcus Glöder
Das Ganze läuft auf Windows 7 Home Premium 32 Bit. Als
LaTeX-Distribution kommt MiKTeX 2.9 zum Einsatz. Nun habe ich das
Problem, dass bei einer XeLaTeX-Test-Datei die Kodierung der
[...]
,,Dies ist ein wörtliches Zitat``
[...]
,,Dies ist ein wörtliches Zitat``
Das ist ein UTF-8-Unfall, d.h. die Datei ist in UTF-8, aber Emacs
glaubt, sie sei in Latin-1.

Ich sehe jetzt nicht, woher dein TeX weiß, dass die Datei in UTF-8 ist
(Default bei XeLaTeX?), würde aber davon ausgehen, dass Emacs das auch
erkennt, wenn du der Datei ein \usepackage[utf8]{inputenc} spendierst.


Stefan
Marcus Gloeder
2014-08-17 23:48:13 UTC
Permalink
Post by Stefan Reuther
Hallo,
Hallo Stefan,
Post by Stefan Reuther
Das ist ein UTF-8-Unfall, d.h. die Datei ist in UTF-8, aber Emacs
glaubt, sie sei in Latin-1.
Sowas in der Richtung hatte ich mir gedacht. Die ursprüngliche Datei war
allerdings wohl mit einer falschen Kodierung abgespeichert worden (siehe
mein zweites Posting). Ich habe die Datei in den Windows-Editor geladen
und dann mit utf8 als Kodierung wieder abgespeichert. Und in Emacs ging
es dann problemlos wieder, sowohl was die Bildschirmdarstellung, als
auch was den erzeugten PDF-Output betrifft.
Post by Stefan Reuther
Ich sehe jetzt nicht, woher dein TeX weiß, dass die Datei in UTF-8 ist
(Default bei XeLaTeX?), würde aber davon ausgehen, dass Emacs das auch
erkennt, wenn du der Datei ein \usepackage[utf8]{inputenc} spendierst.
Genau: XeLaTeX-Dateien setzen immer utf8 als Kodierung voraus. Wenn die
Datei in einer anderen Kodierung abgespeichert wird, gibt es mit
ziemlicher Sicherheit Probleme.

Du meinst die folgenden Zeilen in der Präambel?

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

Das ist etwas, was für LaTeX- oder PDFLaTeX-Dateien richtig ist, aber
nicht für XeLaTeX-Dateien. Da gibt es stattdessen die folgende Zeile:

\usepackage{fontspec}

Siehe zu dem ganzen Thema auch den folgenden Artikel:

http://www.komascript.de/node/1673
Post by Stefan Reuther
Stefan
Viele Grüße
Marcus
--
PMs an: ***@gmx.de
Stefan Reuther
2014-08-18 17:11:48 UTC
Permalink
Hallo,
Post by Marcus Gloeder
Post by Stefan Reuther
Das ist ein UTF-8-Unfall, d.h. die Datei ist in UTF-8, aber Emacs
glaubt, sie sei in Latin-1.
Sowas in der Richtung hatte ich mir gedacht. Die ursprüngliche Datei war
allerdings wohl mit einer falschen Kodierung abgespeichert worden (siehe
mein zweites Posting). Ich habe die Datei in den Windows-Editor geladen
und dann mit utf8 als Kodierung wieder abgespeichert.
Dadurch bekommt die Datei eine Byte-Order-Mark (das ist dem Windows-
Editor einfach nicht abzugewöhnen), und damit sollten sich dann wieder
alle Beteiligten über die Kodierung einig sein.
Post by Marcus Gloeder
Post by Stefan Reuther
Ich sehe jetzt nicht, woher dein TeX weiß, dass die Datei in UTF-8 ist
(Default bei XeLaTeX?), würde aber davon ausgehen, dass Emacs das auch
erkennt, wenn du der Datei ein \usepackage[utf8]{inputenc} spendierst.
Genau: XeLaTeX-Dateien setzen immer utf8 als Kodierung voraus. Wenn die
Datei in einer anderen Kodierung abgespeichert wird, gibt es mit
ziemlicher Sicherheit Probleme.
Du meinst die folgenden Zeilen in der Präambel?
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
Yep.

Worauf ich hinaus wollte: ist ja schön, dass XeLaTeX weiß, dass das
UTF-8 ist, aber irgendwoher muss es ja auch der Emacs wissen. Und dazu
schaut er m.W. auf eine \usepackage-Zeile.

Aber wie gesagt: deine Software-Konfiguration habe ich hier nicht, um
selber damit experimentieren zu können.


Stefan
Marcus Gloeder
2014-08-19 16:26:10 UTC
Permalink
Post by Stefan Reuther
Worauf ich hinaus wollte: ist ja schön, dass XeLaTeX weiß, dass das
UTF-8 ist, aber irgendwoher muss es ja auch der Emacs wissen. Und dazu
schaut er m.W. auf eine \usepackage-Zeile.
Hallo Stefan,

die Frage kann ich Dir leider nicht beantworten. In anderen Editoren
wird die Kodierung vom Benutzer eingestellt. In TeXMaker zum Beispiel
unter Optionen --> TeXMaker konfigurieren --> Editor --> Editor:
Zeichenkodierung. Im Emacs scheint das irgendwie anders zu sein. Aber
ich fange gerade erst an, mich mit dem Emacs zu befassen. Deshalb weiß
ich überhaupt nicht, wie das da läuft.

Viele Grüße
Marcus
--
PMs an: ***@gmx.de
Andreas Röhler
2014-08-20 15:33:11 UTC
Permalink
Post by Marcus Gloeder
Post by Stefan Reuther
Worauf ich hinaus wollte: ist ja schön, dass XeLaTeX weiß, dass das
UTF-8 ist, aber irgendwoher muss es ja auch der Emacs wissen. Und dazu
schaut er m.W. auf eine \usepackage-Zeile.
Hallo Stefan,
die Frage kann ich Dir leider nicht beantworten. In anderen Editoren wird die Kodierung vom Benutzer eingestellt. In TeXMaker zum Beispiel unter Optionen --> TeXMaker
konfigurieren --> Editor --> Editor: Zeichenkodierung. Im Emacs scheint das irgendwie anders zu sein. Aber ich fange gerade erst an, mich mit dem Emacs zu befassen. Deshalb
weiß ich überhaupt nicht, wie das da läuft.
Viele Grüße
Marcus
Interessant könnte hier sein

M-x describe-variable RET buffer-file-coding-system RET

oder auch

coding-system-for-read

coding-system-alist

Probier mal

M-x set-buffer-file-coding-system RET utf- TAB

dann erscheint eine Liste, wobei mir der Werte mit einer 16 drin vielversprechend erscheinen, z.B.
utf-16-dos

Falls was schiefgeht, mach halt wieder zu...

Grüße,

Andreas

Marcus Gloeder
2014-08-17 23:10:56 UTC
Permalink
Post by Marcus Glöder
Hallo alle zusammen,
vielen Dank für alle Antworten. Ob ich diesen Artikel:

http://nullprogram.com/blog/2014/06/13/

noch einmal ausgiebig lesen werde, weiß ich noch nicht. Leider ist der
zugleich a) in Englisch und b) ziemlich lang. Das könnte anstrengend
werden. Ich wünsche allen einen guten Start in die neue Woche.
Post by Marcus Glöder
Vielen Dank und viele Grüße
Marcus
--
PMs an: ***@gmx.de
Loading...