Home »» IT-Seite

Emacs-Umlaute-FAQ

(oft gestellte Fragen und deren Antworten)

Ein Hinweis vorweg: Das Thema Emacs und Umlaute hat sich in großen Teilen schon geregelt. Mit den neueren 19er-Versionen des Emacs und sowieso mit den 20er-Versionen und 21er-Versionen funktioniert das, was in dieser Seite noch als Problematik beschrieben wird, einfach auf Anhieb, ohne das man etwas dafür tun muß. Der Text dieser Seite ist ursprünglich schon 1994 entstanden, als das Thema noch mit wesentlich mehr Problemen verbunden war. Um diese Zeit gab es die ersten stabilen 19er-Versionen, die überhaupt erst einmal in der Lage waren, nach etwas Konfigurationsaufwand Umlaute darzustellen. Vom 18er-Emacs gab es gepatchte Versionen, die das auch konnten, aber das war nicht in der Hauptdistribution so eingebaut. In diesem Sinne ist diese Seite heute wohl mehr aus nostalgischen Gründen denn aus wirklicher Notwendigkeit noch vorhanden. Zum Glück gibt es die Notwendigkeit nicht mehr!


Ein wichtiges Anliegen ist es, daß GNU- und UNIX-Software benutzerfreundlich ist. Dazu gehören nicht nur Umlaute, sondern auch deutschsprachige Hilfe-Texte, einfache Installation, einfache Bedienung u.s.w. Da hat sich in der letzten Zeit einiges getan, wovon insbesondere Benutzer von Linux-Distributionen (SuSE, Redhat, etc.) profitieren. Wer ein stalinistisch installiertes Solaris, Aix oder HP-UX genießen darf, wird dagegen die vermeintliche Benutzerunfreundlichkeit von UNIX wirklich noch kennenlernen dürfen, auch wenn sich vieles von dem, was man unter Linux inzwischen gewohnt ist, auch unter diesen Systemen installieren läßt. In diesem Sinne freue ich mich, daß dieser Text mehr und mehr überflüssig wird. Trotzdem bin ich natürlich noch interessiert an Meinungen und Erfahrungen zu dem Thema.

GNU-Emacs (ab Version 19) und dessen deutsche Anpassungen, insbesondere die Behandlung der Umlaute

F: Welche Teile der Originaldokumentation des GNU-Emacs werden durch diesen Text ersetzt?

A: Keine, dies sind nur zusätzliche Informationen, die die besonderen Anpassungen des Emacs für deutschsprachige Benutzer behandeln.

F: Was ist mit der Emacs-Version 18?

A: Aktuell ist Version 21. Version 18 war vor etwa 10 Jahren aktuell. Die Anpassungen dafür sind auf ganz andere Art durchzuführen und das Darstellen von Umlauten ist überhaupt nicht möglich, ohne den C-Quelltext vor dem Kompilieren zu ändern, zum Beispiel durch anbringen des sogenannten "`Control-Arrow-Patch"', der allerdings bei dem mit Linux-Distributionen mitgelieferten Emacs typischerweise schon eingebaut ist. Dennoch wird das Umstellen auf die Version 19 (mindestens 19.19, besser 19.28 oder neuer) empfohlen, die viele Verbesserungen gebracht hat. (Siehe englische Originalgebrauchsanweisung "`Antinews"'). Auf die Version 18 wird im folgenden nicht mehr eingegangen.

F: Auf welche Betriebssysteme und Fensteroberflächen wird hier eingegangen?

A: Alles bezieht sich auf Linux und Unix-artige Betriebssysteme ohne Fensteroberfläche oder mit X-Windows. Das meiste gilt sinngemäß auch für OS/2 oder VMS, jedoch sind dazu Angaben von tatsächlichen Benutzern dieser Systeme erforderlich, die dem Autor dieses Textes nicht vorliegen. Da die Portierung des Emacs auf OS/2 in Deutschland von Jörg Viola und Eberhard Mattes durchgeführt worden ist, kann man davon ausgehen, daß dort die erforderlichen Anpassungen schon in der einen oder anderen Form Berücksichtigung gefunden haben.

F: Welche Möglichkeiten zur Anpassung an die örtlichen oder individuellen Bedürfnisse gibt es?

A: Jeder Benutzer kann eine .emacs-Konfigurations-Datei in seinem Heimatverzeichnis anlegen, die die Anpassungen für ihn vornimmt. Der Systembetreuer kann in einem Verzeichnis, das typischerweise etwa "`/usr/local/lib/emacs/site-lisp"' lautet, eine Datei default.el anlegen, die für alle Benutzer gilt. Es wird zuerst die Datei ~/.emacs und dann ..../site-lisp/default.el geladen. Wird X-Windows benutzt, so öffnet Emacs normalerweise beim Aufrufen ein eigenes Fenster, wenn er nicht durch "`emacs -nw"' ("`no window"') aufgerufen wurde. In diesem Fall kommt auch die X-Ressourcen-Konfigurationsdatei des Benutzers, die auf manchen Systemen ~/.Xdefaults heißt, zum Tragen, soweit es um Fragen wie die Größe dieses Fensters und ähnliches geht.

F: Was kann man machen, wenn man als normaler Benutzer mit dem, was der Systembetreuer in ..../site-lisp/default.el eingebaut hat, nicht einverstanden ist, aber dies aus möglicherweise guten Gründen trotzdem nicht geändert wird?

A: In der .emacs-Datei kann durch die Zeile


(setq inhibit-default-init t)

das Laden von default.el verhindert werden.

F: Was kann man tun, wenn man ausnahmsweise die eigene .emacs-Datei oder die default.el-Datei ignorieren will?

A: emacs -q aufrufen. Soll nur die .emacs-Datei ignoriert werden und nicht die default.el-Datei, kann man emacs -u <vi-fan> aufrufen, wobei <vi-fan> ein Benutzername ist, von dessen Besitzer man annimmt, daß er keine .emacs-Datei hat. Vielleicht lohnt es sich, dies vorher zu überprüfen, um Überraschungen zu vermeiden.

Jetzt geht es um die Frage, was man in default.el und in ~/.emacs hereinschreiben sollte oder könnte.

F: Statt der Umlaute werden immer nur unlesbare Zeichenfolgen wie \304 angezeigt. Was kann man dagegen tun?

A: Das ist die Oktaldarstellung, die vielleicht auf uralten Terminals noch von Nutzen sein könnte. Als Systembetreuer sollte man in der Datei defaults.el die Zeile


(standard-display-european 1)
(require 'iso-syntax)

einbauen. Dann werden die Umlaute für alle Benutzer korrekt angezeigt, soweit das Terminal und der Zeichensatz es gestatten, und sie werden auch als Buchstaben verstanden. Als normaler Benutzer kann man das auch in der ~/.emacs-Datei tun. Mit ESC x standard-display-european ^M kann man zwischen der Oktaldarstellung und der Umlautdarstellung hin- und herschalten.

F: Jetzt erscheinen die Umlaute immer noch nicht, sondern stattdessen die Zeichen d,v,|,_,... (oder gar nichts oder kleine Quadrate).

A: Das liegt nicht mehr am Emacs, sondern an anderen Dingen. Unter X-Windows muß ein passender Zeichensatz ("`font"') ausgewählt werden, der die Umlaute auch tatsächlich enthält. Ein Terminal muß mit Setup richtig eingestellt werden. Ein xterm-Fenster muß auf 8-Bit-Eingabe und 8-Bit-Ausgabe eingestellt werden. Bei rlogin ist die Option -8 zu verwenden. Neuere Versionen von Telnet haben auch eine 8-bit-Option.

F: Wie stellt man den Font unter X11 ein?

A: Am besten mit den X-Ressourcen. Zum Beispiel gibt es ein Verzeichnis /usr/X11R6/lib/X11/app-defaults oder /usr/openwin/lib/app-defaults oder so ähnlich. Da kann eine Datei Emacs oder Xterm eingetragen werden, die für den betreffenden Anwendungstyp gilt. Das kann man sich aber auch selber in der .Xdefaults-Datei eintragen, wenn man sicherstellt, daß die mit xrdb eingelesen wird. Zum Beispiel könnten da die Zeilen

Emacs.font:-b&h-lucidatypewriter-medium-r-normal-sans-14-*-*-*-*-*-*-1
XTerm*Font:-b&h-lucidatypewriter-medium-r-normal-sans-12-*-*-*-*-*-*-1
oder so etwas in der Art stehen. Diese Fonts sind wohl halbwegs verbreitet und 8-bittig. Man kann aber auch in der .emacs-Datei oder default.el-Datei Einträge für diesen Zweck vornehmen. Ich habe das folgende eingetragen: 1. Für den Wechsel der Fonts mit Kontrolle-rechte-Maustaste:
(or (not (eq window-system 'x))
(assoc "B&H Lucida Typewriter" x-fixed-font-alist)
(setq x-fixed-font-alist
(append x-fixed-font-alist
'(("B&H Lucida Typewriter"
("")
("medium 6" "-b&h-lucidatypewriter-medium-*-*-*-6-*-*-*-m-*-iso8859-1")
("medium 8" "-b&h-lucidatypewriter-medium-*-*-*-8-*-*-*-m-*-iso8859-1")
("medium 10" "-b&h-lucidatypewriter-medium-*-*-*-10-*-*-*-m-*-iso8859-1")
("medium 12" "-b&h-lucidatypewriter-medium-*-*-*-12-*-*-*-m-*-iso8859-1")
("medium 14" "-b&h-lucidatypewriter-medium-*-*-*-14-*-*-*-m-*-iso8859-1")
("medium 18" "-b&h-lucidatypewriter-medium-*-*-*-18-*-*-*-m-*-iso8859-1")
("bold 6" "-b&h-lucidatypewriter-bold-*-*-*-6-*-*-*-m-*-iso8859-1")
("bold 8" "-b&h-lucidatypewriter-bold-*-*-*-8-*-*-*-m-*-iso8859-1")
("bold 10" "-b&h-lucidatypewriter-bold-*-*-*-10-*-*-*-m-*-iso8859-1")
("bold 12" "-b&h-lucidatypewriter-bold-*-*-*-12-*-*-*-m-*-iso8859-1")
("bold 14" "-b&h-lucidatypewriter-bold-*-*-*-14-*-*-*-m-*-iso8859-1")
("bold 18" "-b&h-lucidatypewriter-bold-*-*-*-18-*-*-*-m-*-iso8859-1"))))))
;; Im Font-Auswahl-Menü die Lucida-Fonts eintragen.

2. Fonteinstellung in default.el sollte für den Benutzer abschaltbar sein, indem er (setq use-x-default-font t) in seine .emacs-Datei schreibt:


(defvar use-x-default-font nil "(setq use-x-default-font t) enforces use of X-Default-font if set before loading default.el. insert this into your .emacs-file if you want it.") ;; ermöglicht den folgenden Lisp-Code zum Setzen des Fonts abzustellen

3. Falls der Benutzer es nicht abgestellt hat,


(or use-x-default-font
(not (eq window-system 'x))
(progn
(set-default-font "-b&h-lucidatypewriter-medium-*-*-*-12-*-*-*-m-*-iso8859-1")
(setq default-frame-alist
(cons '(font . "-b&h-lucidatypewriter-medium-*-*-*-12-*-*-*-m-*-iso8859-1")
initial-frame-alist))
(make-face 'bold)
(set-face-font 'bold "-b&h-lucidatypewriter-bold-*-*-*-*-*-*-*-m-*-iso8859-1")))

Diese Einstellung wirkt dann auch für den Fettdruck im Info-Modus. Selbstverständlich ist b&h-lucidatypewriter- auch durch etwas anderes ersetzbar.

F: Wie bekomme ich heraus, welche Fonts es gibt?

A: Mit xfontsel kann man ein bißchen herumprobieren. Dann kann man merken, welche dieser Muster von der oben verwendeten Form mit eventuell etwas mehr Sternchen brauchbar sind. Mit xlsfonts kann man dann herausbekommen, welche Fonts dahinterstecken. Wichtig ist das m vor -*-iso8859-1 und natürlich sowieso das -iso8859-1.

F: Die Umlauttasten der deutschen Tastatur funktionieren nicht auf die erwartete Weise, wenn mit Emacs editiert wird.

A: In default.el (oder notfalls in ~/.emacs) müssen die Zeilen


(set-input-mode (car (current-input-mode))
(nth 1 (current-input-mode))
0)

eingefügt werden.

F: Unter X-Windows lassen sich geschweifte und eckige Klammern und ähnliche Zeichen, die auf einer Tastenkombination mit altgr liegen, nicht eintippen.

A: Durch korrekte Konfigurierung des X-Windows läßt sich das Problem beheben. Sollte das nicht gelingen, kann man notfalls für eine Übergangszeit mit der folgenden Lösung auskommen. (wieder für default.el, falls es alle betrifft und für .emacs, falls es nur einen selbst betrifft.):


(if (null key-translation-map) (setq key-translation-map (make-sparse-keymap)))
(define-key key-translation-map [?\A-@] [?@])
(define-key key-translation-map [?\A-\\] [?\\])
(define-key key-translation-map [?\A-\[] [?\[])
(define-key key-translation-map [?\A-\]] [?\]])
(define-key key-translation-map [?\A-{] [?{])
(define-key key-translation-map [?\A-}] [?}])
(define-key key-translation-map [?\A-|] [?|])
(define-key key-translation-map [?\A-<] [?<])
(define-key key-translation-map [?\A->] [?>])
(define-key key-translation-map [?\A-^] [?^])
(define-key key-translation-map [?\A-~] [?~])

Nach den Erfahrungen des Autors dieses Textes ist das aber vermeidbar, indem man mit xmodmap (oder .keytable) die Tastatur richtig konfiguriert. Bei mir erwies es sich als hilfreich, die altgr-Taste als Mode_switch vorzusehen und mit add mod1= Mode_switch zu aktivieren. Da ich gerne die linke alt-Taste als zweite altgr-Taste mißbrauche, um {[]} u.s.w. besser greifen zu können, war es von Bedeutung, diese auch als Mode_switch fungieren zu lassen. Ein anderer Modifizierername führte zu dem oben genannten Problem.

F: Die Tastatur enthält leider keine Umlaute. Was für Möglichkeiten hat man, trotzdem Dateien mit Umlauten zu editieren?

A1: Auf manchen Rechnern funktioniert eine Compose-Taste und man kann zum Beispiel ein ä mit Compose "a eingeben, ß mit Compose ss.

A2: Mit ^Q <Oktalzahl> kann man im Einzelfall ein Zeichen eingeben, allerdings ist das auf die Dauer unpraktisch und man kennt die Oktalwerte der Zeichen auch nicht so schnell alle auswendig.

A3: Umlaute werden auf Funktionstasten oder freie Tastenkombinationen gelegt, etwa mit


(define-key global-map [f5] [?ä])
...

Dies dürfte kaum in die defaults.el-Datei gehören, da hier der Geschmack des einzelnen Benutzers eine Rolle spielen sollte.

A4: Ab Version 19.22 (19.20 und 19.21 waren sehr kurzlebig und hatten das auch schon) gibt es dafür die Möglichkeit mit


(require 'iso-acc)

den iso-accents-mode zur Verfügung zu stellen. Ist der eingeschaltet, wirken einige Zeichen als Tottaste, etwa der (doppelte) Anführungsstrich oben. Folgt danach ein geeigneter Buchstabe, werden die beiden Zeichen übereinandergeschrieben, also der entsprechende Umlaut eingegeben. DOS-Benutzern dürfte dies Verhalten von den französischen Akzenten bekannt sein. Will man tatsächlich die doppelten Anführungsstriche eingeben, muß man eine Leertaste folgen lassen.

A5: Statt iso-acc zu benutzen, kann man auch konvers.el holen (ftp.uni-erlangen.de:/pub/doc/ISO/charsets/konvers-911.tar.gz, aber die Versionsnummer kann sich auch durchaus gelegentlich erhöhen) auspacken, die .el-Dateien in das site-lisp-Verzeichnis legen und mit


(require 'konvers)

laden. Sinnvoll ist es dabei selbstverständlich, die .el-Dateien zu kompilieren. Dann kann man die TeX-Umschreibungen für die Umlaute "a"o"u... eingeben und nachträglich mit ^X7I diese Umschreibungen in dem ganzen Puffer durch die ISO-Umlaute ersetzen.

A6: Geringfügiges Ändern der Tastaturbelegung, etwa lassen sich die Umlaute vielfach auf die Tastenkombinationen Altgr-a, Shift-Altgr-A,... legen. Achtung, bei den Versionen vor 19.22 kann es hier Probleme geben, da ein Fehler in der Tastaturbehandlung vorhanden war.

A7: Ändern der Tastaturbelegung auf die deutsche Belegung. Dann muß man allerdings blind tippen, was für den erfahrenen Benutzer allerdings kein Problem darstellen dürfte. Fehlt die Taste <>| zwischen Shift und y, kann man diese Zeichen auf Altgr-, Altgr-. und Altgr-- legen. Dies ist aber keine Emacs-spezifische Angelegenheit und vom Rechner abhängig.

F: Beim Editieren von TeX-Quelltexten erscheinen statt der Anführungsstriche oben entweder `` oder ''.

A: Die folgenden Zeilen gehören unbedingt nach defaults.el oder notfalls nach .emacs:


(add-hook
'tex-mode-hook
(function (lambda () (define-key tex-mode-map "\"" 'self-insert-command))))

Wer sich schon an die modernere Schreibweise für Umlaute in TeX-Quelltexten gewöhnt hat und dafür nicht mehr die Anführungsstriche zweckentfremdet, der kann auch stattdessen


(setq tex-open-quote "\"`"
tex-close-quote "\"'")

verwenden und es kommt dann "` bzw. "', wenn die Anführungsstriche getippt werden.