Markdown

Markdown ist eine vereinfachte Auszeichnungssprache mit dem Ziel einer leicht lesbaren Ausgangsform bereits vor der Konvertierung. Markdown sind kleine einfache Zeichen um Semantik in einen text zu bringen. Aus **Beispiel** wird dann das gefettete: Beispiel. Aus ## Einleitung wird die Überschrift Einleitung.

Markdown wird in vielen Social Media Plattformen, Chats, Foren, Wikis und Issuetracker genutzt. Oder man schreibt plain Markdown files.
Es gibt neben Markdown noch andere vereinfachte Auszeichnungssprachen wie Textile, AsciiDoc und reStructuredText, aber Markdown hat sich zurecht durch gesetzt.

Textstruktur

Texte folgen nicht nur einer Semantik und einer Grammatik, sondern auch einer Struktur: Überschriften, Listen oder Betonungen. Diese werden in WYSIWIG (dazu zähle ich MS Word) nur optisch dargestellt, oder besser gesagt versteckt. Auszeichnungssprachen, wie html oder TeX, bilden diese Struktur auch kodifiziert ab.
Aber TeX und html sind nicht wirklich flüssig zu lesen oder zu schreiben. Vereinfachte Auszeichnungssprachen, wie eben Markdown, ermöglichen weiterhin eine Struktur, aber erschlagen einen nicht mit Bleiwüsten aus >< oder }:{.

Markdown macht Schreiben wesentlich einfacher und schneller, weil man nur ## Einleitung schreiben muss und nicht das Wort Einleitung tippen und dann mit der Maus dieses markieren und in irgendeinem Klappmenü die Funktion Überschrift suchen muss. Markdown macht Texte stabiler, weil die Zeichenfolge ## Einleitung immer gleich bleibt. Ein irgendwie gekennzeichnete Überschrift in nervigen WYSIWIG verliert sich schon mal zwischen den Darstellungsprogrammen in ein invisible Formatting.
Eine vereinfachte Auszeichnungssprache ermöglicht auch überhaupt die Zusammenarbeit zwischen mehreren Autoren, weil auch die Struktur klar kodifiziert und damit klar änderbar und vor allem nachvollziehbar ist.

Viele Hacker-How-To empfehlen mit dem Schreiben von plain html zu beginnen. Ich würde sogar sagen Markdown zu schreiben, ist der erste Schritt Computer zu verstehen. Den es ist die aller einfachste Art die Trennung von Inhalt und Form zu verstehen. Markdown bridges the gap between plain text and more complex coding languages providing a foundation for further learning and web development .

yaml

yamls kleiner Bruder oder auch große Schwester von markdown ist YAML, ein textbasiertes Dateiformat zur Datenserialisierung, das außerdem für Konfigurationsdateien verbreitet ist. Da immernoch XML und JSON und 100erte andere Dateiformate um die Gunst von Nerds und Softwarelösungen streiten, ich mag YAML weil es leichter von Menschen zu lesen und zu schreiben als beispielsweise XML. Mir egal was dann die große Maschine nach dem einlesen macht, wenn ich die Datei aufmache, will ich nicht in >< oder }:{ ertrinken.

Das wichtigste ist mir der der fliessende Übergang von Markdown zu yaml. Eine Liste in markdown mit - (nicht mit *) ist ein valides Array in yaml. So muss man sich nicht groß umlernen und kann mit Kenntnissen in Markdown einfache yaml arrays verstehen und bearbeiten. Und dann ist der Schritt nicht mehr weit grundlegende Datenstrukturen zu schreiben, verändern und vor allem zu verstehen.

Oft wird einem Markdowndokument ein Front Matter, meist in yaml, voran gestellt um dem Prosatext Metadaten zu geben. Finde super, aber schade das es vor dem Text stehen muss, das verwirrt, mir persönlich ist das Prosa wichtiger und sollte als erstes stehen. Oder noch besser, yaml Blöcke dürften überall verteilt im Prosatext stehen und würden dann als Metadaten zusammengefasst werden.

Die offizielle Dateiextension ist übrigens .yaml☝.

SemBr

Semantic Line Breaks strukturiert den Quelltext von Markdown entlang semantischer Grenzen. Durch Einfügen eines Zeilenumbruchs nach jedem Satz lassen sich Form und Struktur des Ausgangstextes leichter nachvollziehen. SemBr verlangt einen Zeilenumbruch nach jedem Satz und optional nach jedem unabhängigen Satzteil: also Kommas, Semikolons, Doppelpunkte oder Gedankenstriche.

Ich finde den Zeilenumbruch nach jedem Satz sehr sinnvoll, auch nach dem Doppelpunkt. Die Zeichenbeschränkung auf ca. 80 Zeichen pro Zeile macht Sinn um lange Schachtelsätze besser zu erkennen. Die Trennung nach dem Komma aber finde ich zu viel; lieber über 80 Zeichen, als einen plötzlich umgebrochenen Satz.

Format

Markdown kann nur Struktur, keinerlei Formatierung. Das ist aber kein Bug, sondern ein Feature. Markdown ist einfach nur Text, wie seit 5000 Jahren.
Das genügt, die meisten Formatierung in Office sind Verschlimmbesserungen oder versuchen vom nicht vorhandenen Gehalt des Inhalts abzulenken. Auch brauchen Formatierungsaufgaben 30% der Schreibzeit (sagt Nielsen in einem formatierten pdf mit Leerzeichen in der URL) und lenken sowohl Leser als auch Schreiber vom Inhalt ab. Inzwischen bieten zig hipster Produktivitätstools dazu Distraction Free Writing und Webbrowser Leseansicht.

Wenn man Formatierung braucht, dann sollte man das nicht irgendwie mit einer Tabs-Wüste, LSD-artigen Farbspielen, Comic-Sans und lustigen Symbolbildchen hinbasteln. Das sollte man jemand überlassen der erstens Ahnung von Design hat und zweitens das mit dem richtigen Werkzeug macht: Desktop-Publishing für Papier oder CSS fürs Netz oder für Slides.

Slides

Markdown kann noch viel mehr als html erzeugen. Auch Slides für Präsentationen sind strukturierte Texte mit Bildern. Powerpoint sucks, aber aus Markdown kann man prima Slides bauen.

Ich kann mich nur noch nicht entscheiden ob ich lieber marp, remark oder pandoc slide-shows nutzen soll. marp ist powerpointesker, baut bullet listen mit jedem Klick auf und hat extra features wie Referentenansicht mit Preview und Stoppuhr. Aber marp ist ist sehr fett, das Containerimage hat 500MB, pandoc dagegen sehr klein, das Containerimage hat 30MB. remark.js hat nur 650KB, baut die slides im browser und hat auch eine Referentenansicht mit Preview und Stoppuhr.

Markdownslides haben keine coolen Übergänge und Effekte und Masterfolien mit Farbspielen. Die braucht auch keiner. Das einzige was man braucht:

Wünsche

Seit der Entstehung von Markdown werden von allen möglichen Leuten am Standard Markdown Verbesserungen vorgeschlagen. Inzwischen gibt es zahlreiche flavours, alle mit guten Absichten; diese aber verwirren oft die User. Ich kann die Seite der minimalistischen Traditionalisten verstehen, die einen Standard nicht oft verändern wollen, dennoch hab ich Ideen was mir noch helfen würde.

Nicht nur klassische [Markdown Hyperlinks](//example.org), sondern auch [[Wikilinks]]. Diese sind schneller zu schreiben, stören den Lesefluss weniger und ermöglichen es viele häufiger links zu setzen.

Hyperlinks in Markdown sind so wie man es natürlich schreibt: Die URL hinter das Wort in runden Klammern.
Das Markdown auch weiss welches Wort der Linktext ist, wird dieses in eckigen Klammern gesetzt. Das macht Sinn wenn ich mehrere Worte als Linktext haben will: [schöner Linktext](//example.org).

Aber meist nutzt man nur ein einziges Wort als Linktext. Dann ist die Kennzeichnung mit eckigen Klammern überflüssig. Wenn markdown ein (http erkennt könnte es als linktext das Wort davor bis zum ersten Space nutzen:

Linktext(https://example.org)
Linktext (https://example.org)

leading space listen

Markdown, so wie yaml, rückt mit führenden Spaces ein. Da man Spaces aber nicht sieht ist das recht verwirrend.
Lieber wäre mir wie in Mediawiki leading *:

* Listenpunkt
** Unter-Listenpunkt
*** Unter-Unter-Listenpunkt

Definition lists

Auch wenn sehr viele Markdowninterpreter zusätzlich definition lists mit anbieten, es ist leider noch kein Standard.

Markdown als Objekt

Die meisten Markdown-Bibliotheken konvertieren einen Markdown-String in einen html-String oder eine Binärdatei (pdf, tex). Ich hätte aber den Text aber zusätzlich auch gern als Object.

Markdown in emails

HTML-mails sind nervig und unsicher, plaintext-mails sind Textwüsten und nerdy. Ich hätte gern mehr Markdown in emails.

Werkzeug

Das schöne an Markdown ist das man erst mal gar kein Werkzeug braucht. In deinem BFF-Chatprogramm, in einem Texteditor, in vi oder mailclient. Markdown geht immer.
Was aber vor allem beim Markdown lernen hilft ist der WYSIWYM Editor simplemde.com.