albatros | texte

Zotero 7

Nach langer und gründlicher Vorbereitung wurde gestern Zotero 7 freigegeben, und die neue Version ist schön geworden.

Nachdem ich zwei Jahre lang Zotero 6 unter macOS mit Rosetta betrieben habe, ist der Performance-Zuwachs durch die neue native Version auch unter Apple Silicon sehr deutlich. Nach einem Upgrade aus dem Programm heraus muss man dazu aber Zotero neu starten, um Rosetta zu beenden und nativ unter ARM neu loszulegen.

Die Oberfläche zeigt das alte vertraute Dreispalten-Layout, aber es gibt nun eine weitere schmale Spalte am rechten Fensterrand, mit der man im Titeldatensatz hoch und herunter navigieren kann, um an die Notizen und die Dateien zu gelangen, die mit dem Literatureintrag verknüpft sind. Sie erinnert optisch ein bisschen an den Adobe Reader, wegen der Icons und der Farben, aber es geht gerade noch gut unter macOS. Die native Bedienoberfläche reagiert deutlich schneller als früher unter Rosetta, und auch der Datenimport neuer Einträge ist sehr schnell erledigt. Ähnlich wie bei Thunderbird, gibt es eine dichtere und eine großzügigere Variante der GUI.

Wer Volltexte als PDF oder EPUB an die Titeldatensätze anhängt, findet einen deutlich verbesserten Reader vor. Die Möglichkeit, Anmerkungen einzufügen, wurde überarbeitet. Und freilich gibt es im Jahr 2024 auch einen brauchbaren Dark Mode und ein schönes neues Programm-Icon.

Im Datenexport kann man weiterhin BibTeX und BibLaTeX auswählen. Ich konnte noch nicht feststellen, ob es hier auch qualitative Veränderungen gegeben hat.

Für alles weitere siehe den Blogpost und das Changelog.

Probleme mit TeX Live Utility

Derzeit gibt es ein Problem mit der TeX Live Utility (TLU), die mit der TeX-Distribution MacTeX ausgeliefert wird. Standardmäßig werden Updates unter MacTeX über die TeX Live Utility eingespielt. Nun steht ein Upgrade des TeX-Live-Paketmanagers tlmgr an, das zwar von TLU angekündigt und auch auf Anforderung angestoßen, im weiteren Verlauf dann aber nicht abgeschlossen wird. TLU moniert, es habe keinen Zugriff auf das Kompressionswerkzeug xz und bricht mit dieser Fehlermeldung ab. Weitere Updates von MacTeX sind danach nicht mehr möglich.

Es gibt einen Workaround. Man kann im Terminal per

sudo tlmgr update --self

das Update anstoßen. Danach sollte die TLU für alles weitere dann auch wieder funktionieren.

Der Wanderer LXXXIII

LibreOffice schafft die Begriffe Schusterjungenregelung und Hurenkinderregelung in seiner Bedienoberfläche ab, weil es die Begriffe bei Microsoft Word und bei Adobe InDesign auch nicht mehr gebe. Es handele sich um einen Drucker-Jargon, der für Joe Sixpack unverständlich sei. Das sind typografische Grundbegriffe. Kann man sich nicht ausdenken. Aber im heutigen Daily-Build schon so umgesetzt.

Emacs 29.1 VII

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.

Emacs 29.1 V

Beim Org-Mode werde ich auch weiterhin nur die Outliner- und die Publisher-Funktionen nutzen und mein Projektmanagement in Thunderbird belassen. Die Bedienung ist mir bei der Zeit- und Terminverwaltung in Org-Mode nicht eingängig genug. Das lenkt einen zu sehr vom Inhalt ab. Dann lieber ein anderes Tool, das auch funktioniert, zumal man auf Bugreports derzeit bei Thunderbird sehr schnell reagiert.

Damit wäre der Umstieg von Aquamacs auf Emacs 29.1 abgeschlossen.

Emacs 29.1 IV

Zu den Features, die in Emacs 29.1 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!

Update vom 20. August 2023: In der ursprünglichen Fassung des Blogposts hatte ich eine unvollständige Lösung vorgeschlagen. Ein Update von dtk.cls zwang mich gestern, weiter zu graben. Da dtk.cls seit neuestem LuaLaTeX erzwingt, stieß ich auf ein Problem, das, wie eine Suche auf StackExchange ergab, zwar seit längerem schon 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. Was unproblematisch ist, wenn man es aus dem Terminal aufruft. Beim Aufruf aus dem Editor heraus, muss es aber in der dortigen Shell ebenfalls eine Locale geben, mit der LuaTeX etwas anfangen kann, und das ist bei Emacs ebenfalls nicht out of the box der Fall. 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.

Emacs 29.1 III

Den Umstieg von meinem alten Aquamacs auf GNU Emacs 29.1 von Emacs for Mac OS X habe ich nicht bereut. Mit den Apple-Silicon-Binaries reagiert die Oberfläche beim Arbeiten deutlich schneller als über Rosetta. Nachinstalliert wurden noch Lua, BBDB und Org-Mode. Letzteres lohnt sich, weil er ständig weiterentwickelt wird.

Überrascht hatte mich, dass beim Öffnen von Org-Dateien per Doppelklick aus dem Finder ein neuer Frame geöffnet wird, was ich so bisher von keinem Emacs kannte und was auch gar nicht notwendig ist. Man kann es mit einem beherzten (setq ns-pop-up-frames nil) abschalten. Dann wird der neue Buffer, wie gewohnt, im bestehenden Programmfenster geöffnet.

Ido Mode habe ich wieder auskommentiert, weil ich mich damit zu sehr eingeengt fühlte. Ich möchte im Minibuffer frei tippen und navigieren können.

Die neue Version von AUCTeX und Umgebung funktioniert besser als die alte. Es gab nur wenig zu tun, lediglich RefTeX fehlte mir.

Durch dem Neuanfang mit der neuen Version merke ich, wieviel sich unter der Haube in den letzten Jahren bei Emacs getan hat. Allein bei dieser Ausgabe ist der NEWS-File über 4300 Zeilen lang. Dementsprechend gibt es tatsächlich viel zu entdecken, was ich ganz ausgesprochen belebend finde. Ja, wirklich. Ich merke, wie gerne ich mit reinem Text arbeite, mit LaTeX und mit Org-Mode und mit Gnus für Mail und News. Still digging!

Entgangen war mir auch, dass es seit Dezember 2020 eine neue Malingliste für Anwender wie mich gibt: Emacs-humanities: Discussions about using Emacs in the Humanities and related fields. In einem der ersten Postings erzählt Paul W. Rankin über die Zielgruppe der neuen Liste:

I've long suspected there to be a modest number of people who use Emacs for things wholly unrelated to programming, and that for such people their interest in programming might (currently) be little to zero. It's understandable that people without an interest in programming are unlikely to participate in the preexisting GNU lists associated with Emacs, which mostly take a programming focus.

It also seemed that many if not most of this group operated in or around the Humanities, or Liberal Arts (although being firmly rooted in the domain myself, I plausibly suffer from confirmation bias), e.g. people using Emacs to write their PhDs, research projects, novels, screenplays, etc.

EmacsConf 2020 [1] appeared to confirm this, both in its selection of topics, and the concurrent discussions on IRC/Matrix. The recent Emacs Survey [2] also showed that more than two-thirds the number of respondents who use Emacs for software development use it for writing, or if you add "research writing", the tallies between software and writing are almost equal. Over 600 respondents said they did not use Emacs for software development at all.

I'd posit there are still more people who otherwise work with text and are stifled by their mainstream non-free tools, but feel that the free software alternatives are intended only for programmers.

What I thought was needed was for GNU to send a strong signal that the doors are open to people using free software, i.e. Emacs, even if they're not currently interesting in programming, and for this invitation to be specific, i.e. Emacs within the Humanities, rather than vague.

Indeed!

Bram Moolenaar (1961–2023)

Dear all,

It is with a heavy heart that we have to inform you that Bram Moolenaar passed away on 3 August 2023.

Bram was suffering from a medical condition that progressed quickly over the last few weeks. Bram dedicated a large part of his life to VIM and he was very proud of the VIM community that you are all part of.

We as family are now arranging the funeral service of Bram which will take place in The Netherlands and will be held in the Dutch lanuage. The extact date, time and place are still to be determined. Should you wish to attend his funeral then please send a message to …. This email address can also be used to get in contact with the family regarding other matters, bearing in the mind the situation we are in right now as family.

With kind regards,

The family of Bram Moolenaar

R. I. P.

(vim_announce, via de.comp.editoren)

Asciidoc

Rainer-Maria Frisch hat heute bei der FrosCon 2023 eine Einführung in Asciidoc und Ascidoctor für Entwickler, Techniker und Admins. Tipps und Tricks für die Erstellung effektiver Dokumentationen gehalten, die man bei media.ccc.de anschauen kann. Er stellt sein System vor, mit dem er in einem kleinen Unternehmen arbeitet. Export nach PDF, HTML und BookStack Wiki. Aufschlussreich: Asciidoc eigne sich besonders für Dokumentationen, die Filialdokumente enthalten, und der HTML/CSS-Export sei gut. Praktische Demonstration in Visual Studio Code. Die Folien (in HTML) mit weiterführenden Links findet man auf der Programmseite.

Emacs 29.1 II

So. AUCTeX und Markdown sind eingetroffen und konfiguriert. Die Oberfläche ebenfalls, wie gewohnt. Und Emacs erinnert sich auch an alles, was ich ihm beigebracht habe. Es ist erstaunlich, was man auch nach so vielen Jahren alles erfährt, was man bisher für selbstverständlich hielt. Jedenfalls hat es nur etwa eine Stunde gedauert, seitdem kann ich produktiv arbeiten. Nur mit dem Zeilenumbruch bin ich noch nicht ganz glücklich. Still digging!

Sie sind nicht angemeldet