Zettelkasten mit Emacs, Org-Mode und ripgrep

In diesem Artikel beschreibe ich meine aktuelle Zettelkasten-Konfiguration mit Emacs. Es ist die Fortsetzung zu einem Beitrag aus dem Jahr 2019.
Metallplastik in Buenos Aires

Zusammenfassung

  • Nach Experimenten mit anderen Emacs-Paketen nutze ich nun org-roam für meinen Zettelkasten.
  • Die Software unterstützt sowohl meine anarchistische Arbeitsweise, als auch ein strukturiertes Vorgehen.
  • Im Zentrum meiner Arbeit stehen Zettel mit Literatur-Exzerpten, Zettel mit eigenen Ideen und ein Zettel, in dem ein längerer Text entsteht.
  • Org-roam v1 wird nicht mehr unterstützt; die neue Version v2 ist inkompatibel mit v1; ein Skript ermöglicht die Migration.
  • Org-roam v2 kommt mit meinen 10.000 Zetteln problemlos zurecht, auch auf meinem alten Computer ist ein flüssiges Arbeiten möglich.
  • Literaturverweise pflege ich über Zotero. Die Einbindung in org-roam erfolgt über einen Export nach bibtex.

Im September 2019 habe ich über meine Versuche geschrieben, Luhmanns Zettelkasten mit Emacs nachzubilden. Zuletzt aktualisierte ich den Beitrag im Juni 2020. In der letzten Aktualisierung erwähnte ich org-roam und kündigte an, dieses Paket genauer unter die Lupe zu nehmen. Mittlerweile realisiere ich meinen Zettelkasten tatsächlich mit org-roam.

Zu dem populären Paket gibt es auf Youtube zahlreiche Videos. Ich kann mir deshalb eine Einführung sparen. Nur so viel sei gesagt. Im Kern erfüllt org-roam nur eine einzige Funktion. Es zeigt die Backlinks einer geöffneten Datei an, also die Dateien, die auf die geöffnete Datei verweisen. Das hört sich einfacher an, als es ist. Org-roam kann diese Aufgabe nur mit Hilfe einer SQLite-Datenbank erfüllen.

Der Sinn dieser Backlinks besteht darin, ein Netz aus sinnvollen Verweisen zu erzeugen, sodass man Zusammenhänge erkennt, die man ursprünglich nicht gesehen hat. Und hier tut sich gleich das zentrale Problem auf. Wie erarbeitet man sich ein solches Netz? Nach welchem Schema setzt man Links auf andere Zettel? Nutzt man überhaupt ein Schema?

Ich denke und arbeite anarchistisch, sodass es keinen Masterplan gibt, nach dem ich meinen Zettelkasten organisieren könnte. Die Themenfelder, die ich bearbeite, sind breit gestreut und überlappen sich. Alle Versuche, mein Denken durch oberste Begriffe in eine Zettelkasten-Struktur zu zwängen, scheiterten.

Deshalb beschränke ich mich erst einmal darauf, Zettel für Exzerpte zu erstellen, im org-mode Jargon sind das Knoten mit einem roam_ref-Attribut, das auf eine Quelle, zum Beispiel eine Bibtex-Citation verweist. So gibt es einen Knoten für Adornos Ästhetische Theorie, in dem ich Zitate sammle. Zu einem späteren Zeitpunkt kann es sinnvoll sein, die Zitate in einzelne Nodes aufzuspalten und über die Bibtex-Citation mit dem Haupt-Node zu Adornos Ästhetische Theorie zu verbinden. Dazu muss ich die Zitate aber noch inhaltlich durchdringen und für einzelne oder Gruppen von Zitaten eine gemeinsame Überschrift als Node-Titel finden.

Daneben gibt es Nodes, die kein roam_ref-Attribut haben. Sie stellen originäre Einfälle meinerseits dar, kurze Notizen oder Ideensplitter.

Und drittens habe ich innerhalb meines Zettelkastens ein Manuskript für eine Abhandlung angefangen; innerhalb von org-roam, damit ich in der Lage bin, Verweise auf andere Zettel zu integrieren, wenn ich eine Stelle noch nicht ausformulieren will oder kann, aber schon weiß, woher die Information kommen soll.

Das Manuskript ist dadurch aber auch häufig Ausgangspunkt für einen neuen Knoten, wenn ich zum Beispiel einen Begriff verwende, den ich gerne in einem eigenen, noch nicht existenten Zettel ausführen würde. Dann setze ich vom Manuskript einen Link auf einen neuen Zettel, der dadurch erzeugt wird. Auf ihm kann ich dann nach und nach Einträge zu dem entsprechenden Begriff oder Thema vornehmen.

Das Ergebnis ist ein unsauberes und unstrukturiertes Gewebe von Verweisen, die keinem System und keiner Hierarchie folgen. Ob das Gewebe, so wie es Luhmann behauptete, ein Eigenleben entfaltet, steht in den Sternen.

Der Einstieg in den Zettelkasten erfolgt meist über die Volltextsuche. Wer wie ich einen langsamen Computer hat, wird sich nach einer schnellen Volltextsuche umsuchen, um nach Inhalten zu suchen. Eine Lösung für dieses Problem fand ich in der Discourse-Gruppe von Org-Mode

Mitten in der Erstellung dieses Textes erschien org-roam v2, das mit der ursprünglichen Version 1 von org-roam inkompatibel ist. Die Migration wird vom Entwickler mit einem Skript unterstützt, erforderte aber in meinem Fall auch etwas Handarbeit. Erfreulich ist der Geschwindigkeitszuwachs. Org-roam v2 ist deutlich schneller als die Vorgängerversion, und das obwohl nun auch Überschriften jeder Hierarchieebene innerhalb einer Datei als Knoten behandelt werden können.

Mein Zettelkasten ist aufgrund eines automatisierten Imports von Texten, die für meine Arbeit wichtig sind, auf über 10.000 Zettel angewachsen. Diese Menge überforderte org-roam v1 auf meinem Rechner, sodass das Arbeiten sehr langsam wurde. Mit v2 ist alles sehr viel flüssiger geworden. Insbesondere der schreibende Zugriff auf die Datenbank nach einer Änderung ist sehr viel schneller geworden.

Die Bibtex-Datei pflege ich übrigens mit Zotero. Glücklicherweise verändert Zotero beim erneuten Export nicht die einmal erzeugten Schlüssel, sodass ich meine Zotero-Sammlung alle paar Wochen neu exportieren kann, um neue Quellen in org-roam zur Verfügung zu haben, ohne fürchten zu müssen, dass alte Verweise nicht mehr funktionieren.

Fazit

Da org-roam den Prozess der Texterstellung von der ersten Ideensammlung bis hin zum fertigen Manuskript unterstützt, ist es meines Erachtens für Autoren aller Art bestens geeignet. Es unterstützt sowohl das wissenschaftliche Arbeiten als auch das literarische.