Die Zettelkastenmethode

Die Idee Zettlr zu entwickeln kam mir vor einigen Jahren, als wir nach guten Arbeitsabläufen für wissenschaftliches Schreiben gesucht haben. Wir haben viele verschiedene Vorgehensweisen und Ideen ausprobiert, und sind schließlich bei der Zettelkastenmethode hängen geblieben. Das Problem war damals, dass den meisten Programmen die Umsetzung der Zettelkastenmethode nicht wirklich gelungen ist, aber seitdem gab es große Anstrengungen um die Methode zu implementieren, sodass es mittlerweile mehr und mehr Programme gibt, die die Zettelkastenmethode in der ein oder anderen Form unterstützen.

Ursprünglich stammt die Methode vom deutschen Soziologen Niklas Luhmann. In dem Bestreben sich alles zu merken was er jemals gelesen oder gedacht hatte, entwarf Luhmann seinen eigenen (damals analogen) Zettelkasten, in dem Karten mit irgendwelchen Informationen und einer Nummer enthalten waren. Die Nummern konnten dazu genutzt werden, um andere Karten zu lokalisieren, welche Informationen enthielten, die in irgendeiner Weise mit der Ausgangskarte zusammenhingen. Auf diese Weise hat Luhmann innerhalb eines Kartensatzes nach vorne und nach hinten verwiesen. Darüber hinaus wurde der Kasten mit einer zunehmenden Anzahl von Karten mehr und mehr 'zum Leben erweckt' und konnte Luhmann Verbindungen zwischen bestimmten Themen und Konzepten aufzeigen, an die er selbst noch gar nicht gedacht hatte.

Die Grundidee des Zettelkastens ist daher, dass du Verknüpfungen zwischen kurzen Notizen (oder auch langen Dateien) herstellen kannst, was es dir nicht nur ermöglicht, zwischen verschiedenen Notizen vor und zurückspringen, sondern auch Beziehungen zwischen verschiedenen Notizen zu erkennen, welche sich allmählich durch die Verknüpfung der Dateien herausbilden.

Verwalten eines Zettelkastens mit Zettlr

Derzeit gibt es in Zettlr drei Funktionen, um mit deinem Zettelkasten loszulegen:

  1. Erzeugen von Identifikationen für Dateien
  2. Verknüpfen von Suchdurchläufen und Dateien
  3. Verschlagwortung von Dateien

Identifikation von Dateien

Eines der größten Probleme beim Entwickeln von Programmen, welche die Dateien möglichst nicht in programmspezifischer Weise verändern sollen, ist das Identifizieren von Dateien. Intern nutzt Zettlr 32Bit-Hashes zur Identifikation von bestimmten Dateien. Diese basieren aber auf den Dateipfaden, und da Zettlr auch mit Dateien funktionieren soll, die in der Cloud gespeichert sind, kann der Hash nicht zur Identifikation verwendet werden, da bei in der Cloud gespeicherten Dateien der Dateipfand auf dem einen Computer nicht der gleiche ist, wie der Dateipfad auf einem anderen Computer. Die zweite Schwierigkeit besteht in dem Format selbst: Markdown Dateien sind einfacher Text und ermöglichen daher nicht das Hinzufügen von allzu viel Metadaten. Natürlich gibt es Ansätze zum Integrieren von Metadaten-Header in Markdown Dateien, aber das ist für uns nie wirklich eine Option gewesen, weil dies die Grundregel Zettlrs, nämlich das Schreiben von agnostischen Markdown-Dokumenten, untergraben hätte. Metadaten sind deutlich weniger standardisiert als Markdown Syntax, weshalb es schwer vorstellbar ist, wie ihre Implementierung mit Zettlrs Philosophie in Einklang gebracht werden könnte. Die Lösung die wir uns ausgedacht haben ist, einfach die ID irgendwo in den Text der Datei einzufügen. Drücke für das Hinzufügen einer ID zu einer Datei einfach Cmd/Strg+L, oder tippe die ID einfach selbst, wenn du das bevorzugst. Die ID wird automatisch für dich hervorgehoben.

Schau auf die "Einstellungen"-Steite um die Möglichkeiten zu erfahren, wie du alle Zettelkasten-Funktionalitäten deinen Vorstellungen anpassen kannst.

Die Standard-ID ist eine gute Wahl, da sie das Datum im Format YYYYMMDDHHMMSS verwendet, welche bis auf die Sekunde einzigartig ist. Außerdem haben unsere eigenen Erfahrungen gezeigt, dass man bei der Verwendung von nicht leicht wiedererkennbaren IDs weniger zu (falschen) Annahmen neigt, wodurch diese IDs besser für Querverlinkungen von verschiedenen Dateien geeignet sind. Probiere es einfach selbst aus!

Zettlr wird automatisch versuchen eine ID für eine Datei zu finden, indem es ihren Inhalt durchsucht. Wenn Zettlr eine ID gefunden hat die nicht in einem Wiki-Link verkapselt ist (mehr dazu unten), dann wird es diese ID intern heranziehen, um auf die Datei zu verweisen. Falls in der Datei mehr als eine gültige ID befindet, dann hat die erste ID Vorrang. Dadurch kannst du auch bei langen Dateien und für den Fall, dass du die ID nicht findest, einfach einen neue ID am Anfang der Datei einfügen, um diese zur maßgeblichen ID für diese Datei zu machen.

Interne Verlinkung

Als das Problem der Identifikation gelöst war, hat sich ein neues ergeben: Wie können Dateien überall in Zettlr verlinkt werden, ohne die oben erwähnten Ziele der Programmunabhängigkeit der Dateien zu untergraben? Viele Anwendungen wie zum Beispiel nvALT oder THE Archive implementieren ein internes Verlinkungssystem, das es ermöglicht innerhalb von Dateien auf die jeweils anderen zu verweisen, wodurch die Navigation der Dateien so einfach wie möglich gemacht wird. Auch Zettlr beinhaltet ein solches System.

Ein interner Link wird mit dem Syntax [[Das ist der Link]] geschrieben. Falls du einen Link klickst, während du Alt- oder Strg gedrückt hältst, dann werden zwei unterschiedliche Funktionen ausgelöst. Zunächst wird Zettlr versuchen, eine exakte Übereinstimmung des Inhalts des Links in der Anwendung zu finden. Das bedeutet, dass es versucht eine Datei zu finden, deren Inhalt exakt mit dem Inhalt des Links übereinstimmt. Eine solche exakte Übereinstimmung kann auf zwei Wegen gefunden werden: Erstens, wenn der Inhalt des Links (in dem oben aufgeführten Beispiel "Das ist der Link") exakt mit dem Dateinamen ohne die Dateiendung übereinstimmt und die Datei deswegen meldet, dass sie eine exakte Übereinstimmung ist. In dem oben aufgeführten Beispiel würden die Dateien Das ist der link.md, Das ist der link.markdown und Das ist der link.txt als übereinstimmend erkannt werden. Beachte, dass der Abgleich der Dateinamen (wie beispielsweise auch in macOS) nicht berücksichtigt, ob es sich um Groß- oder Kleinbuchstaben handelt. Das bedeutet, dass Dateiname.md als mit derselben Datei übereinstimmend angesehen werden würde wie DATEINAME.MD. Der zweite Weg, auf dem ein solcher Link eine exakte Übereinstimmung hervorrufen könnte wäre der Fall, dass der Inhalt des Links eine ID in dem Format [[<deine-id>]] beinhaltet. Falls irgendeine Datei die ID <deine-id> hat, dann wird Zettlr dies als exakte Übereinstimmung behandeln. Falls irgendwo im System eine exakte Übereinstimmung gefunden wird, dann wird ein Alt-Klick oder Strg-Klick auf einen internen Link sofort die erste übereinstimmende Datei öffnen. Das bedeutet, dass du solche Links verwenden kannst, um in deinem Dateisystem zu navigieren. Dies könntest du zum Beispiel dadurch nutzen, dass du Indexdateien erstellst, in der interne Links zu mehreren Dateien enthalten sind, und in jede verlinkte Datei einen Link einfügst, welcher zurück auf die jeweilige Indexdatei verweist.

Die zweite Funktion, die durch den Klick auf einen solchen Link ausgelöst wird ist, ist die globale Suche innerhalb des zu diesem Zeitpunkt ausgewählten Verzeichnisses. Zettlr wird einfach den Inhalt des Links in das Suchfeld eintragen und automatisch "die Eingabetaste drücken" um die Suche zu starten. Auf diese Weise kannst du nicht nur exakt übereinstimmende Dateien öffnen, sondern du findest zusätzlich auch alle anderen Dateien, die auf die Datei, die du gerade geöffnet hast, verlinken. Ein Link in dem Format [[<deine-id>]] öffnet also diese spezifische Datei und sucht gleichzeitig nach allen Dateien, die auf diese Datei verlinken.

Verschlagwortung

Verschlagwortung ist womöglich die einfachste Form der internen Suche. Wenn du auf ein Schlagwort Alt- oder Strg-klickst, dann wird dadurch einfach eine Suche nach allen Dateien ausgelöst, in denen dieses Schlagwort enthalten ist. Da Schlagworte in der Form #Schlagwort im Markdown Syntax an keiner Stelle verwendet werden, kann Zettlr sie als perfektes Mittel zur Anlegung eines Schlagwortsystems verwenden.