Markdown

Markdown
Dateiendung: .md, .markdown
MIME-Type: text/markdown
Entwickelt von: John Gruber
Erstveröffentlichung: 2004[1]
Aktuelle Version 1.0.1
Art: Vereinfachte Auszeichnungssprache
daringfireball.net/projects/markdown


Markdown ist eine vereinfachte Auszeichnungssprache, die von John Gruber entworfen und im Dezember 2004 mit Version 1.0.1 spezifiziert wurde. Aaron Swartz war einziger Beta-Tester und half maßgeblich bei der Entwicklung der Syntax.[2][3] Ein Ziel von Markdown ist eine leicht lesbare Ausgangsform bereits vor der Konvertierung. Als Auszeichnungselemente wurden daher vor allem Auszeichnungsarten verwendet, die in Plain text und E-Mails üblich sind. Auch andere Auszeichnungssprachen mit ähnlichen Zielen zur Lesbarkeit – wie reStructuredText oder Textile – hatten Einfluss auf die Syntax. Der MIME-Type lautet text/markdown.[4]

Eine Markdown-Konvertierungssoftware wandelt Text in gültiges und W3C-konformes HTML um. Die Referenzimplementierung in Perl steht unter einer BSD-artigen Lizenz. Inzwischen sind Implementierungen in den gängigsten Programmiersprachen wie PHP,[5] Python[6] oder JavaScript[7] sowie R verfügbar.

Daneben gibt es auch Markdown-Editoren, die sich an Nutzer klassischer Textverarbeitungen wenden und für das Schreiben von Textdokumenten genutzt werden, sowie Notizprogramme, die Markdown nutzen. Insbesondere im Bereich des ablenkungsfreien Schreibens ist Markdown sehr verbreitet, findet jedoch auch in anderen Bereichen immer mehr Anwendung.

Verbreitung

Markdown oder eine Markdown-ähnliche Syntax wird auf Entwicklerplattformen wie GitHub, GitLab oder Forgejo, aber auch auf technischen Foren wie Stack Overflow genutzt. Markdown wird sehr häufig bei Readme-Dateien verwendet. Auch Projektmanagement-Software wie Trello nutzen Markdown.

Die meisten größeren Content-Management-Systeme, Wikis und Foren lassen sich durch Plug-ins um Markdown-Unterstützung erweitern oder unterstützen Markdown nativ, wie die Blogging-Plattform Ghost. Es gibt Plugins für WordPress,[8] Joomla[9] oder MediaWiki.[10] Auch Flat-File-Content-Management-Systeme wie Kirby setzen fast durchweg auf Markdown als Auszeichnungssprache.[11] Viele statische Webseiten-Generatoren (static site generators, wie Jekyll, Hugo oder Hexo) nutzen Markdown als Auszeichnungssprache für den Inhalt.[12][13] Markdown wird auch in anderer Software genutzt, z. B. im Software-Dokumentationswerkzeug Doxygen.

Zahlreiche Instant Messaging Systeme wie Matrix[14] und Webex[15] unterstützen Markdown vollumfänglich, andere wie WhatsApp[16] oder Slack[17] jedoch nur teilweise.

Es gibt viele Editoren für Markdown, die meist auch sofort ein HTML-Preview erzeugen – in einem zweiten Screen oder gleich im gerade editierten Text.

Neben der Nutzung zur einfachen Erzeugung von HTML gibt es auch Markdown-Editoren, die sich an Nutzer klassischer Textverarbeitungen oder von Satzsystemen wie LaTeX wenden. Diese Programme können die erstellten Dokumente in gängigen Textverarbeitungsformaten, als PDF und teilweise auch im LaTeX-Format speichern. Einige dieser Programme setzen die Formatierungen direkt während des Schreibens im Dokument um, andere nutzen dazu einen Preview-Bereich neben dem Editierbereich, der das fertige Layout anzeigt. Beispiele für kommerzielle Software, die ausschließlich auf Markdown setzen oder dieses zusätzlich anbieten, sind iA Writer,[18] Scrivener,[19] Ulysses,[20] LightPaper[21] und Typora.[22] Beispiele für Open-Source-Software sind Apostrophe,[23] novelWriter,[24] Zettlr[25] und Ghostwriter.[26] Mit iA Presenter[27] gibt es auch eine Präsentationssoftware, die Markdown nutzt.

Auszeichnungsbeispiele

Für die Auszeichnung von Text verwendet Markdown vor allem Satzzeichen und gestattet in einigen Fällen mehrere gleichwertige Methoden. Zeichen, die für gewöhnlich als Formatbefehle verstanden werden, können mit einem umgekehrten Schrägstrich (Backslash \) maskiert werden.

Autoren können bei Bedarf für komplexere Auszeichnungen XHTML-Blockelemente verwenden. Diese Elemente werden von der Konvertierungssoftware ohne Änderung in das Zieldokument übernommen. Dadurch ist es möglich, Bereiche des Dokuments in gewöhnlichem XHTML zu formatieren.

Textgestaltung
Ausgangsform Zielform
Normaler Text wird so dargestellt wie eingegeben.

Eine Leerzeile erzeugt einen Absatz.
Normaler Text wird so dargestellt wie eingegeben.

Eine Leerzeile erzeugt einen Absatz.

Für alle Zeichen, die eine Formatierung bewirken, kann die Wirkung durch einen Backslash aufgehoben werden: \* \' \_ 2\. – Der Backslash selbst wird durch \\\\ eingefügt. Für alle Zeichen, die eine Formatierung bewirken, kann die Wirkung durch einen Backslash aufgehoben werden: * ' _ 2. – Der Backslash selbst wird durch \\ eingefügt.
Zwei oder mehr Leerzeichen am Ende der Zeile  

erzeugen einen Zeilenumbruch.

Zwei oder mehr Leerzeichen am Ende der Zeile
erzeugen einen Zeilenumbruch.
*Kursiv*, **Fett** und ***Fett kursiv*** bzw.

_Kursiv_, __Fett__ und ___Fett kursiv___

Kursiv, Fett und Fett kursiv bzw.

Kursiv, Fett und Fett kursiv

Markiert Text als `Inline-Quelltext` Markiert Text als Inline-Quelltext
Ein normaler Absatz

    Ein Code-Block
    durch Einrückung
    mit vier Leerzeichen
Ein normaler Absatz
Ein Code-Block
durch Einrückung
mit vier Leerzeichen
* Ein Punkt in einer ungeordneten Liste
* Ein weiterer Punkt in einer ungeordneten Liste
    * Ein Unterpunkt, um vier Leerzeichen eingerückt
* Statt * funktionieren auch + oder -
  • Ein Punkt in einer ungeordneten Liste
  • Ein weiterer Punkt in einer ungeordneten Liste
    • Ein Unterpunkt, um vier Leerzeichen eingerückt
  • Statt * funktionieren auch + oder -
1. Ein Punkt in einer geordneten Liste
2. Ein weiterer Punkt; bei der Eingabe muss nicht auf irgendeine Reihenfolge geachtet werden, sondern nur darauf, dass es beliebige Ziffern sind
1. Noch ein Punkt, der zeigt, dass auch die mehrfache Angabe derselben Ziffer möglich ist
  1. Ein Punkt in einer geordneten Liste
  2. Ein weiterer Punkt; bei der Eingabe muss nicht auf irgendeine Reihenfolge geachtet werden, sondern nur darauf, dass es beliebige Ziffern sind
  3. Noch ein Punkt, der zeigt, dass auch die mehrfache Angabe derselben Ziffer möglich ist
HTML-Überschriften werden erzeugt, indem man die Zeile mit Doppelkreuzen beginnt – ihre Anzahl gibt die Ebene der gewünschten Überschrift an.
# Überschrift in Ebene 1
#### Überschrift in Ebene 4
Überschrift in Ebene 1
Überschrift in Ebene 4
Für die ersten zwei Ebenen ist auch eine alternative Schreibweise möglich:
Überschrift in Ebene 1
======================
Überschrift in Ebene 2
----------------------
Überschrift in Ebene 1
Überschrift in Ebene 2
> Dieses Zitat wird in ein HTML-Blockquote-Element gepackt.

Dieses Zitat wird in ein HTML-Blockquote-Element gepackt.

Horizontale Linien werden durch drei oder mehr Bindestriche, Unterstriche oder Sternchen in einer Zeile erzeugt.
Horizontale Linie
---
[Beschriftung des Hyperlinks](https://de.wikipedia.org/ "Titel, der beim Überfahren mit der Maus angezeigt wird") Beschriftung des Hyperlinks
allgemeine Syntax:

![Alternativtext](Bild-URL "Bildtitel hier")

konkretes Beispiel:
![nur ein Beispiel](https://commons.wikimedia.org/wiki/File:Example_de.jpg "Beispielbild")

Bindet ein Bild von der Quelle Bild-URL ein.

nur ein Beispiel

Weiterentwicklungen, Variationen und Ergänzungen

In der ursprünglichen Markdown-Definition fehlen diverse gebräuchliche Elemente wie etwa Tabellen, weshalb die Verwendung von HTML in Markdown-Dokumenten erlaubt ist. Diese Lücken werden durch mehrere Erweiterungen und Weiterentwicklungen von Markdown geschlossen.

Markdown Extra
bietet vor allem Inline-HTML und erweitert die Markdown-Syntax innerhalb von HTML-Blöcken um Tabellen, Definitionslisten, Abkürzungen, Fußnoten, Sprungmarken für Überschriften und Attribute wie Klassen und IDs.[28]
CommonMark
Im Oktober 2012 wurde eine Standardisierung von Markdown angeregt, die seit dem 5. September 2014 als eigene Definition unter dem Namen CommonMark (ursprünglich: Standard Markdown und Common Markdown) veröffentlicht wurde.[29][30][31]
GitHub Flavored Markdown
ist eine auf CommonMark aufbauende Erweiterung, die das Rendern zu HTML direkt auf dem Webdienst GitHub ermöglicht. Viele der Modifikationen wurden mittlerweile in anderen Projekten übernommen. Es erweitert die Syntax um Code-Blöcke, Tabellen, Checklisten, durchgestrichenen Text, erweiterte Autolink-Erkennung und Referenzen auf Benutzerprofile, Changesets und Tickets.[32]
MultiMarkdown (MMD)
ermöglicht zusätzlich den Export nach LaTeX, PDF und erweitert die Syntax um Fußnoten, Tabellen, Glossare, Zitate, Metadaten (wie Titel, Autor, Datum) und Inline-HTML.[33][34]
Pandoc Markdown
ermöglicht das Transformieren von Markdown-Dokumenten in einige andere Formate, inklusive LaTeX, XML, ePUB und PDF wie auch MediaWiki (das Wikipedia-CMS) oder DokuWiki. Außerdem erweitert es Markdown um Syntax für einfache und gerasterte Tabellen, Definitionslisten, automatische Referenzen für Beispiele, Sprungmarken für Überschriften, automatische Titelseiten, durchgestrichenen Text, Hoch- und Tiefstellung, Mathematikmodus für alle Ausgabeformate, eingebettetes TeX, Bildunterschriften, Fußnoten und Quellenangaben mit Bibliographie nach CSL.[35]
Stack Overflow Flavored Markdown
wird auf Stack Overflow verwendet und erweitert die Syntax um Tags, Spoilers und Syntax-Highlighting für Code.[36] Es existiert eine Open-Source-Implementierung namens MarkdownSharp.[37]
Markdeep
wandelt Markdowndokumente in HTML-Seiten um. Unterstützt die Markdown-Syntax und bindet über Erweiterungen Diagramme, Kalender, mathematische Formeln (LaTeX) und externe Markdeep-Dokumente ein. Stellt mathematische Ausdrücke mittels MathJax dar, wandelt ASCII-Art-Diagramme zu SVG-Grafiken um und generiert ein Inhaltsverzeichnis. Um Markdeep zu verwenden, muss die Dateiendung des Markdown-Dokuments zu .md.html geändert sowie am Ende des Dokuments eine JavaScript-Datei eingebunden werden.[38]
LiaScript
wurde entwickelt, um interaktive Lehrinhalte zu erstellen. Neben Animationen, automatischer Sprachausgabe, mathematischen Formeln (mithilfe von KaTeX), ASCII-Art-Diagrammen, existiert auch die Möglichkeit, verschiedene Quizze und Umfragen durch eine erweiterte Markdown-Syntax zu definieren. JavaScript wird nativ unterstützt und kann mit verschiedenen Elementen verknüpft werden, dadurch lassen sich Code-Fragmente auch ausführbar und editierbar gestalten.[39]

Einzelnachweise

  1. Aaron Swartz: Markdown. 19. März 2004, abgerufen am 21. September 2019.
  2. John Gruber: Markdown. (Blog) In: Daring Fireball. 2004, abgerufen am 1. August 2023 (englisch): „Aaron Swartz deserves a tremendous amount of credit for his feedback on the design of Markdown’s formatting syntax. Markdown is much better thanks to Aaron’s ideas, feedback, and testing. Also, Aaron’s html2text is a very handy (and free) utility for turning HTML into Markdown-formatted plain text.“
  3. Dawid Bednarski: The History of Markdown: A Prelude to the No-Code Movement. (Blog) Taskade.com, 25. März 2022, abgerufen am 31. Juli 2023 (englisch): „At some point, Gruber and Swartz communicated and the latter became Markdown’s ‘sole beta-tester.’ Swartz provided feedback on the syntax and even wrote html2text, a free conversion tool for turning HTML into Markdown. … Swartz, … according to Gruber … played an ‘instrumental’ role in shaping its syntax: ‘… More or less: Aaron was my sounding board, my muse.’“
  4. RFC: 7763 – The text/markdown Media Type. März 2016 (englisch).
  5. Michel Fortin: PHP Markdown.
  6. Markdown. Python Software Foundation.
  7. John Fraser, Corey Innis u. a.: Showdown. github
  8. Markdown on Save. wordpress.org (englisch)
  9. ACE X Markdown Editor. joomla.org (englisch)
  10. Extension:MarkdownExtraParser mediawiki.org (englisch)
  11. Kirby: CMS ohne Datenbank. t3n-Magazin Nr. 29. 12. November 2012.
  12. Jekyll • Simple, blog-aware, static sites. Abgerufen am 25. März 2016 (englisch).
  13. Top Open-Source Static Site Generators. In: staticgen.com. Abgerufen am 25. März 2016 (englisch).
  14. doc.matrix.tu-dresden.de -Nachrichten schreiben und lesen
  15. help.webex.com - Markdown-Formate der Webex-App
  16. faq.whatsapp.com - Formatieren deiner Nachrichten
  17. api.slack.com Basic formatting with mrkdwn
  18. iA Writer. Das einfache Schreibprogramm. Abgerufen am 30. Juli 2023.
  19. Scrivener. Literature & Latte. Abgerufen am 30. Juli 2023.
  20. Ulysses. Abgerufen am 30. Juli 2023.
  21. LightPaper. Abgerufen am 30. Juli 2023.
  22. Typora – a markdown editor, markdown reader. Abgerufen am 30. Juli 2023.
  23. Apostrophe – Apps für GNOME. Abgerufen am 30. Juli 2023.
  24. novelWriter. Abgerufen am 30. Juli 2023.
  25. Zettlr. Abgerufen am 30. Juli 2023.
  26. Ghostwriter – No excuses. No distractions. Just write. Abgerufen am 30. Juli 2023.
  27. iA Presenter. Abgerufen am 30. Juli 2023.
  28. Michel Fortin: PHP Markdown Extra. Abgerufen am 16. Juni 2013 (englisch).
  29. Jeff Atwood: The Future of Markdown. Coding Horror: Programming and Human Factors. 25. Oktober 2012, archiviert vom Original (nicht mehr online verfügbar) am 11. Februar 2014; abgerufen am 16. Juni 2013 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.codinghorror.com
  30. Jeff Atwood: Standard Markdown is now Common Markdown. Coding Horror: Programming and Human Factors. 5. September 2014, abgerufen am 12. September 2014 (englisch).
  31. commonmark.org
  32. GitHub Flavored Markdown Spec. In: GitHub. 6. April 2019, abgerufen am 13. Mai 2020 (englisch).
  33. Fletcher Penney: MultiMarkdown. Version 4.1.1 vom 2. Juni 2013. Abgerufen am 16. Juni 2013 (englisch).
  34. Fletcher Penney u. a.: MultiMarkdown Syntax Guide. In: GitHub. 25. Dezember 2012, abgerufen am 16. Mai 2013 (englisch).
  35. John MacFarlane: Pandoc User’s Guide. In: Pandoc – a universal document converter. Abgerufen am 27. September 2023 (englisch).
  36. Markdown help. Stack Exchange, abgerufen am 16. Juni 2013 (englisch).
  37. Jeff Atwood: MarkdownSharp. C# Markdown processor. Version 113 vom 3. Juli 2010. Abgerufen am 16. Juni 2013 (englisch).
  38. Morgan McGuire: Markdeep. Abgerufen am 1. September 2019 (englisch).
  39. LiaScript. Abgerufen am 1. April 2020 (englisch).