Emacs 29.1 und LuaTeX II

Beim Umstieg von macOS Monterey auf Ventura war auffällig, dass die neu hinzugekommenen Programme, wie beispielsweise die Uhr, nicht mehr konfigurierbar sind. Es gibt kein Preference Pane, man kann sie nur noch so benutzen, wie sie angeboten werden. Ich kann mir also beispielsweise beim Timer nicht einstellen, ob er digital (mit rückwärts laufenden Zahlen) oder analog (mit rückwärts laufenden Uhrzeigern auf einem Ziffernblatt) dargestellt werden soll.

Das ist beim Emacs ganz anders. Konfigurationsfragen stellen sich ständig. Mit dem Emacs zu arbeiten, heißt, ihn zu konfigurieren, und dazu gibt es eine eigene Sprache, Emacs Lisp.

Fangen wir also beim Anfang an. Dieser Teil meiner Reise durch Emacs und Umgebung begann beim Einrichten von Flyspell. Das ist die Rechtschreibprüfung, die Emacs von Hause aus mitbringt. Ich hatte zwar meine Dissertation seinerzeit vollständig ohne Rechtschreibkorrektur (und übrigens auch ohne die Literaturverwaltung BibTeX – Biblatex und Biber gabs damals noch nicht) geschrieben. Aber besser wäre gewesen mit, wie ich mittlerweile weiß. Aquamacs greift sogar auf die Rechtschreibprüfung von macOS zurück, was auf der Plattform freilich optimal ist. Aber wir wollen ja jetzt erstmal lieber nur mit freien und quelloffenen Lösungen arbeiten, und das heißt in diesem Fall: mit aspell.

Der Anlass zum näheren Hinschauen waren letztlich zwei Probleme, die beim Konfigurieren meines Emacs auftraten: Flyspell tat nicht einfach mal so eben, was es soll. Und nachdem ich das gelöst hatte, kam noch ein weiteres Problem hinzu: Beim Schreiben der nächsten Folge meiner
Neuen Pakete auf CTAN für die TeXnische Komödie stieß ich auf die Neuerung, dass dtk.cls nun das Kompilieren mit LuaLaTeX nicht nur nahelegt, sondern verlangt. LuaTeX brach seinen Lauf aber beim Aufruf aus dem Emacs schnell wieder ab und verabschiedete sich mit einem Output von null Seiten. Die vorläufige Lösung für beide Probleme hatte ich schon vor ein paar Tagen vorgestellt.

Die Merkwürdigkeiten, auf die ich damals gestoßen war, ließen mich freilich nicht ruhen, ich las weiter und weiter und stieß dabei im Emacs-Manual im Kapitel zu Emacs unter macOS auf einen Abschnitt, der das grundlegende Problem ansprach, den Leser dann am Ende aber auch ziemlich allein zurücklässt:

Many programs which may run under Emacs, like latex or man, depend on the settings of environment variables. If Emacs is launched from the shell, it will automatically inherit these environment variables and its subprocesses will inherit them from it. But if Emacs is launched from the Finder it is not a descendant of any shell, so its environment variables haven’t been set, which often causes the subprocesses it launches to behave differently than they would when launched from the shell.

For the PATH and MANPATH variables, a system-wide method of setting PATH is recommended on macOS, using the ‘/etc/paths’ files and the ‘/etc/paths.d’ directory.

Wer das Vorgehen beim Konfigurieren von Emacs mag, das sich zwischen beinahe detektivischer Recherchearbeit, Programmieren, Technik, Informationswissenschaft und Praxis bewegt, für den könnte der Emacs ebenfalls der Editor der Wahl sein. Für alle anderen möglicherweise nicht. Typisch ist nicht nur, dass man immer wieder mit solchen halben Sachen wie dem vorstehenden Absatz ziemlich dumm dasteht, sondern auch, dass sehr viele veraltete Empfehlungen und Code-Schnipsel im Netz um Umlauf sind, die sich auf ältere Versionen von Emacs oder von Ergänzungspaketen beziehen. Da werden Variablen konfiguriert, die es mittlerweile gar nicht mehr gibt, was im einfachsten Falle schlicht folgenlos bleibt, im schlechteren Fall aber zu Fehlermeldungen, die ein blutiger Laie kaum beheben könnte. Es werden Befehle bereitgestellt, die ehemals Probleme umgehen sollten, die aber in neueren Versionen von Emacs gar nicht mehr bestehen. Manchmal ist nicht sicher, ob eine Empfehlung, die vermeintlich funktioniert, auch heute immer noch die bestmögliche Lösung für ein bestimmtes Problem ist. Man sollte deshalb tunlichst darauf achten, aus welcher Zeit eine Empfehlung stammt und ob sich seitdem in der Emacs- und in der Paket-Entwicklung etwas getan hat – und falls ja, was?

Immerhin gibt es für das Problem, auf das das Emacs-Manual hinweist, wiederum ein Paket. Ich fand es, als ich später, nach meinem letzten Blogpost zum Thema, eigentlich nach etwas ganz anderem suchte. Nachdem die Rechtschreibprüfung einigermaßen lief, hätte ich sowas gerne auch für Quelltexte gehabt und stieß auf Flymake (schon eingebaut) und Flycheck (nachzuinstallieren). Und auf der Website von Flycheck finden wir folgenden Hinweis:

Flycheck can’t find any programs in GUI Emacs on MacOS

Try to install and configure exec-path-from-shell to make a GUI Emacs inherit the $PATH environment variable from your shell configuration.

The issue is that due to the special way MacOS starts GUI programs a GUI Emacs does not inherit the environment variables from the shell configuration so Emacs will lack some important entries in $PATH, most notably /usr/local/bin/ where Homebrew, NPM and many other package managers put binaries in.

The exec-path-from-shell works around this issue by extracting environment variables from a shell session and inject them into the environment of the running Emacs instance.

Und damit bekommt das Problem eine neue Wendung. Das Paket, das dort erwähnt wird, ist schnell installiert und tut tatsächlich, was es soll (und sogar ein bisschen mehr). Und dadurch werden einige Anweisungen, die ich ursprünglich brauchte, überflüssig. Während sich eine andere als äußerst hinderlich erwiesen hatte. Man kann nämlich das Language Environment in Emacs nicht nur auf Sprachen, sondern auch auf Kodierungen einstellen, also auch auf UTF-8 direkt, wie man hier sieht. Erst damit werden alle neuen Dateien unmittelbar in UTF-8 angelegt. Für die Festlegung auf Unicode braucht es freilich noch mehr Zeilen Code, aber seitdem funktioniert alles wunderbar.

Die derzeit richtige Lösung, mit der alle Mac-spezifischen Ärgernissen, die mir bisher untergekommen sind, abgeholfen wird, wäre demnach wohl die folgende, wobei ich mir nicht sicher bin, ob dabei immer noch Teile mittlerweile obsolet und daher unnötig sind, ich belasse diese Zeilen aber vorsorglich mal in meiner .emacs, denn sie schaden jedenfalls nicht:

(require 'exec-path-from-shell)
(exec-path-from-shell-initialize)
(set-default-coding-systems 'utf-8)
;;
;; Ist folgendes veraltet? Jedenfalls schadet es nicht.
;;
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(if (boundp 'buffer-file-coding-system)
    (setq-default buffer-file-coding-system 'utf-8)
  (setq default-buffer-file-coding-system 'utf-8))
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
;;
;; Beim Öffnen von Dateien aus dem Finder per Doppelklick werden neue
;; Buffer im bestehenden Frame geöffnet: 
;;
(setq ns-pop-up-frames nil)
;;
;; Tastaturbelegung
;;
(setq mac-command-modifier 'meta) ;; Cmd/Apfel wird zum Meta Key
(setq mac-option-modifier nil) ;; Option hat keine Funktion in Emacs
(setq ns-alternate-modifier 'none)
;;
;; für Flyspell/aspell:
;;
(setenv "LANG" "de_DE.UTF-8")
(set-locale-environment "de_DE")
(set-language-environment "UTF-8")
(add-hook 'text-mode-hook 'flyspell-mode)

Ob ich nun noch Flymake oder Flycheck verwenden werde, mag die Zukunft weisen.

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für Emacs 29.1 und LuaTeX II

Emacs 29.1 und LuaTeX

Hinweis: Siehe auch den späteren Beitrag, in dem eine weitere Lösung für das nachstehend beschriebene Problem beschrieben wird.

Zu den Features, die in Emacs 29.1, an dessen Konfiguration ich derzeit arbeite, nicht out of the box funktionieren, zählt die Rechtschreibprüfung Flyspell. Je nach Emacs-Version und Betriebssystem sind verschiedene Anleitungen und Diskussionen zu finden. Unter macOS Ventura funktionierte bei mir folgendes:

  • Aspell über Homebrew nachinstallieren.
  • Load Path und Exec Path setzen (zu Wörterbuch und zu aspell).
  • $LANG in Emacs setzen. Die Locale wurde zwar schon von macOS richtig gesetzt, Emacs bekommt davon aber nichts mit.
  • $LANG und auch die restliche Locale müssen auf de_DE zeigen, und
    auch das Language Environment muss German sein, sagt das Emacs Manual. Sonst funktioniert LuaTeX nicht.
  • Und nun Flyspell als Minor Mode für die Text Modes aktivieren.
(add-to-list 'load-path "/opt/homebrew/bin/")
(setq exec-path (append "/opt/homebrew/bin/" exec-path))
(add-to-list 'load-path "/opt/homebrew/Cellar/aspell/0.60.8/lib/aspell-0.60")
(setenv "LANG" "de_DE.UTF-8")
(set-locale-environment "de_DE")
(set-language-environment "German")
(add-hook 'text-mode-hook 'flyspell-mode)

M-x flyspell-mode

Welcome to Flyspell.

Es gibt widersprüchliche Ratschläge darüber, wie man Flyspell mit mehreren Sprachen zum Laufen bringt – vorstehend sehen wir nur eine Locale. Da es nicht die Locale des Systems ist, können wir sie ändern, ohne dass es weitere Auswirkungen hat. Man kann also beispielsweise das Wörterbuch für Englisch oder für Esperanto statt für Deutsch einbinden, in dem man de durch en oder eo ersetzt. Dann muss Emacs neu gestartet werden, ein erneutes Laden des Init Files reicht nicht aus. Das funktioniert aber nur für eine Sprache, nicht für mehrere. Still digging!

Da dtk.cls seit neuestem LuaLaTeX erzwingt, stieß ich auf ein Problem, das, wie eine Suche auf StackExchange ergab, zwar schon seit längerem bekannt ist, mich aber noch nicht erreicht hatte. Wahrscheinlich hatte mich der alte Aquamacs bisher davor bewahrt.

LuaTeX ist etwas zickig und möchte die Locale beim Aufruf mitnehmen. Fehlt sie oder ist sie unvollständig, bricht der Lauf mit der Fehlermeldung ab:

Unable to read locale data: please check the ‚locale‘ settings of your environment for consistency. Exiting now.

Beim Aufruf aus dem Terminal, trat der Fehler nicht auf, nur beim Aufruf aus Emacs. Die Locale im Terminal wich von der Locale bei M-x shell ab. Es reicht also nicht, $LANG in der .emacs zu setzen, es braucht auch eine Locale und, so das Manual, ein passendes Language Environment in Emacs.

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für Emacs 29.1 und LuaTeX

Emacs 29.1

Nachdem Jörg Kantel nebenan mit Visual Studio Code so ausgesprochen zufrieden ist, habe ich mir den Nachfolger des eigentlich unsäglichen Atom natürlich auch mal angesehen – und war überrascht. Schöne Integration in macOS und viele nützliche Erweiterungen, auch für Wikitext, was ich häufig brauche. Und Markdown, natürlich.

Aber der Release von GNU Emacs 29.1 hatte mich doch auch neugierig gemacht. Nachdem ich mit Emacs über 20 Jahren lang schon fast alles gemacht habe, was man mit einem Rechner so anstellen kann, war ich ihm natürlich auch damals nach dem Wechsel von Windows zu Linux zu Mac OS X treu geblieben. Erst mit dem Carbon Emacs, dann mit Aquamacs. Und als ich vor einem Jahr vom MacBook Pro auf ein MacBook Air umstieg, war mein System eigentlich erst komplett, nachdem ich MacTeX und Aquamacs aufgespielt und konfiguriert hatte. Letzterer war zwar im Sommer 2019 vorläufig gerettet worden, als David Reitter sein Projekt an Win Treese übergab. Seitdem ist es aber doch ziemlich ruhig geworden um die weitere Entwicklung. Aquamacs beruht immer noch auf GNU Emacs 25.3, der im Sommer 2017 freigegeben worden war. Er läuft mit Rosetta auch auf M1-Macs, aber man fragt sich mittlerweile doch, wie zukunftssicher das alles wohl noch sein wird?

Daher also einen Blick auf den neuen Emacs geworfen. Selbst kompilieren? Oder über Homebrew installieren? Am Ende siegte emacsformacosx.com mit dem Versprechen: Pure Emacs! No Extras! No Nonsense! Was auch stimmt. Was aber auch bedeutet, dass man hier nun wirklich sämtliche Pakete, die mir lieb und wichtig geworden sind, selbst nachrüsten muss. Und meine .emacs für den Aquamacs funktioniert natürlich mit dem Pure Emacs nicht so ohne weiteres.

Das Gerüst für meine Konfiguration stammt noch aus den 2000er Jahren, als ich mit dem NTEmacs begonnen hatte. Und wenn man schon die Tastaturbelegung hier als erstes angehen muss, noch bevor man zu weiterem übergehen kann, merkt man schnell, was in den Distributionen alles schon vorbereitet wurde. Der Aquamacs ist ein Rundum-Sorglos-Paket, in dem alles auf Anhieb funktioniert. Aber ich traue der Ruhe um mein wichtigstes Arbeitspferd nicht mehr. Und die anderen TeX-Editoren sind keine wirklichen Alternativen. Been there, seen that.

Deshalb werde ich nun erst einmal ausprobieren, ob mir ausreicht, was der Kollege Hendrik Sünkler in seiner Konfiguration vorschlägt. Ich habe zwar nicht vor, meine stundenweise Abrechnung in Org-mode zu loggen. Aber meine gewohnte LaTeX-Umgebung hätte ich schon gerne und die paar Programmier- und Auszeichnungssprachen, mit denen man es immer wieder zu tun hat, sollten auch so funktionieren wie gewohnt. Still digging!

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für Emacs 29.1

The future of text

Ein Lesetipp für die kommenden Wochen dürfte dieses Werk sein:

  • Hegland, Frode, Hrsg. 2020. The Future of Text. 1. Auflage. Future Text Publishing. doi:10.48197/fot2020a, (zugegriffen: 5. Dezember 2020).

Worum geht es?

Welcome to Future Text Publishing, producers of ‘The Future of Text’, the largest survey of the future(s) of text ever undertaken.

The book is a collection of dreams for how we want text to evolve as well as how we understand our current textual infrastructures, how we view the history of writing, and much more. The aim is to make it inspire a powerfully rich future of text in a multitude of ways today and to still have value in a thousand years and beyond. It should serve as a record for how we saw the medium of text and how it relates to our world, our problems and each other in the early twenty first century.

Und das ganze ist open end angelegt. Die zweite Auflage wird ab Februar 2021 vorbereitet.

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für The future of text

TeX Live 2020 veröffentlicht

TeX Live 2020 ist fertig und wurde jetzt auch offiziell veröffentlicht. Es wird noch bis zu einer Woche dauern, bis alle CTAN-Spiegelserver mit der neuen Version bestückt sind. Alle Neuigkeiten wurden hier zusammengefasst, der Link entlastet mich von einer Nacherzählung. Die meisten Anwender werden von den Neuerungen wahrscheinlich nichts bemerken, und diejenigen, die es angeht, sind mit dem Link gut informiert.

Speziell für den Mac ist zu beachten, dass MacTeX 2020 unter macOS 10.13 und höher läuft. Wie schon in den Vorjahren, werden nur die drei letzten von Apple noch gepflegten Plattformen von macOS unterstützt. Wer eine ältere Plattform einsetzt, muss also x86_64-darwinlegacy verwenden; die Binaries setzen Mac OS X 10.6 oder höher voraus.

Da die TeX Live Utility und BibDesk (noch) nicht notarisiert worden sind, sind sie nicht Teil von MacTeX, sondern müssen separat heruntergeladen werden (wir erinnern uns an Dick Kochs Posting vom letzten Sommer). Näheres dazu findet man im README von MacTeX und in der Datei MISSING APPS.pdf. Wer die beiden erwähnten Programme bereits von einer früheren Version von MacTeX in Applications/TeX installiert hatte, wird sie auch weiterhin dort vorfinden und benutzen können. Sie sollten, wie alle Bestandteile der Distribution, auf dem aktuellen Stand gehalten werden, und zumindest die Verwendung der TeX Live Utility ist für den teXnischen Unterbau dringend anzuraten, denn sie bedeutet eine enorme Erleichterung gegenüber dem Kommandozeilentool tlmgr als Paketmanager.

Wer sich längere Zeit nicht mehr mit der Entwicklung von LaTeX beschäftigt hatte, möge sich dringend die LaTeX News zu Gemüte führen, mindestens seit der Ausgabe Nr. 28, als UTF-8 zur Standardkodierung wurde. Vor zwei Monaten wurde das LaTeX3-Interface expl3 zu großen Teilen in den LaTeX-Kernel integriert. NFSS wurden schöne Erweiterungen spendiert. Und LuaTeX wurde mit HarfBuzz kombiniert.

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für TeX Live 2020 veröffentlicht

TeX Live 2020 Pretest abgeschlossen

TeX Live 2020 ist eingefroren worden. Der Release war ursprünglich für den 10. April 2020 geplant, jedenfalls zu Ostern, am Ende der Karwoche.

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für TeX Live 2020 Pretest abgeschlossen

TeX Live 2020 Pretest hat begonnen

Nach dem Freeze für TeX Live 2019 hat Karl Berry nun den Beginn des Pretest für TeX Live 2020 angekündigt. Alles weitere ist der entsprechenden Seite zu entnehmen. Dort werden auch die Neuerungen gesammelt. Der Master für die Release Notes ist hier im Webbrowser zu lesen. Alles etwas schrittweise dieses Jahr, sage ich mal.

MacTeX 2020 setzt mindestens macOS 10.13 High Sierra voraus, die x86_64-darwinlegacy Binaries laufen ab Mac OS X 10.6. BibDesk und die TeX Live Utility sind diesmal nicht in MacTeX enthalten, weil sie nicht notarised werden. Sie müssen separat heruntergeladen werden.

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für TeX Live 2020 Pretest hat begonnen

TeX Live 2019 eingefroren und LaTeX Spring Release

Karl Berry hat auf der TeX-Live-Mailingliste bekanntgegeben, dass die Distribution nun eingefroren werde. Der Paketmanager tlmgr zeige das schon an. Gleichwohl würden noch einige Updates zusätzlich installiert, so die gerade erst hochgeladene neue LaTeX-Version. Der Pretest für TeX Live 2020 stehe bald bevor.

Der gerade erwähnte LaTeX-Frühlings-Release (der mir bisher entgangen war) bringt vor allem zwei Neuerungen:

  • LaTeX3 muss nicht mehr separat hinzugeladen werden, sondern steht nun standardmäßig im Format LaTeX zur Verfügung, was die Verarbeitung von Features, die expl3 voraussetzen, beschleunigen soll. Dazu zählen alle Dokumente, die mit einer Unicode-Engine (LuaTeX, XeTeX) bearbeitet werden sollen. Aber auch das Ziel, tagged und barrierefreie PDFs mit LaTeX zu erzeugen, soll dadurch näher rücken.

  • Weiterhin wurde das New Font Selection Scheme (NFSS) modernisiert. Schriftschnitte, die bisher nicht mit dem NFSS aufgerufen werden konnten, werden nun kanonisch berücksichtigt, beispielsweise kursive Kapitälchen oder eine Serie von condensed-Schnitten.

Mehr darüber ist den LaTeX News Nr. 31 zu entnehmen.

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für TeX Live 2019 eingefroren und LaTeX Spring Release

Greta Grotesk

Eine Schriftart ist nach Greta Thunberg benannt worden, die Greta Grotesk von Tal Shab, herunterzuladen aus Google Drive.

Der Name der Schrift ist nicht satirisch zu verstehen, sondern ein Hinweis darauf, dass es sich um eine Grotesk-Schrift handelt, also um eine Schriftart mit gleicher Strichstärke ohne Serifen. Sie ist an das Schriftbild angelehnt, das man von Greta Thunbergs handbeschrifteten Transparenten und Plakaten kennt. Genaugenommen ist es also ein Handschriften-Font. Leider hat die Schriftart – zumindest in der derzeitigen Fassung – keine Umlaute, also kann man damit den Slogan SKOLSTREJK FÖR KLIMATET nicht korrekt setzen… via t3n.

Der Beitrag wurde im Vergleich zu einer früheren Fassung geringfügig ergänzt um Erläuterungen zur Bezeichnung der erwähnten Schriftart.

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für Greta Grotesk

Bibliothek des Gutenberg-Museums in Hebis recherchierbar

Das Börsenblatt weist heute darauf hin, dass die Bibliothek des Gutenberg-Museums nun einen neuen OPAC erhalten habe und dass der gesamte Bestand der Bibliothek nunmehr auch über den Hessischen Verbundkatalog Hebis recherchierbar sei. Die Titel werden in Hebis in der Bestandsinfo unter „Mainz, Stadtbibliothek und Gutenberg-Museum“ nachgewiesen.

Das Gutenberg-Museum in Mainz betreibt eine Bibliothek zur Buch-, Druck- und Schriftgeschichte mit rund 91.000 Bänden und etwa 50 laufend gehaltenen Zeitschriften. Die Migration auf die neue Plattform hat zwei Jahre benötigt, ist zum größten Teil vollzogen und wird bis zum Jahresende abgeschlossen sein.

(via TeX-D-L/de.comp.text.tex/InetBib)

Veröffentlicht unter Neuigkeiten | Kommentare deaktiviert für Bibliothek des Gutenberg-Museums in Hebis recherchierbar