Markdown

Aktualisiert am 10.03.2024

Diese Seite enthält die Beschreibung aller von  OSE  unterstützten Formatierungsmöglichkeiten mit Markdown und programmspezifischen Erweiterungen davon. Sie ist die erste Anlaufstelle für „Wie erzeuge ich…“-Fragen.

Markdown kann ohne Herumgeklicke direkt mit den Tasten unter den Fingern Format-Befehle für geschriebenen Text einfügen. Für die Nachbearbeitung gibt es für einen Großteil der Zeichenformatierungen Tastenbefehle, die im Menü „Bearbeite → Auszeichnungen“ aufgelistet sind.

Wie die Auszeichnungen letztendlich aussehen, entscheidet die verwendete Stilvorlage (CSS-Datei). Diese muss beim Export-Ergebnis über das Layout verknüpft werden.

Grundlagen

Die „Urform“ von Markdown wird John Gruber und Aaron Swartz zugeschrieben. Mit einem reinen Texteditor lässt sich betriebssystem-unabhängig eine „Steuerdatei“ zur Übersetzung in „ausgestaltete“ Texte schreiben – und lesen.

Das grundlegende Konzept ist leicht erweiterbar, weshalb sich „Dialekte“ entwickelt haben. Das macht sich auch  OSE  zu Nutze. Zwar kann das dazu führen, dass ein verwendetes Element von einem anderen Markdown-Interpreter ingnoriert oder falsch interpretiert wird. Weil sich Reintext gegenüber anderen Formaten per Suchen-Ersetzen diesbezüglich einfach aufräumen lässt, bleibt der Text als solches dabei jedoch immer lesbar und in jedes Zielsystem portabel.

Der in  OSE  verwendete Notation lehnt sich an anderen an und summiert sie – soweit das kollisionsfrei möglich ist. Abweichungen vom verbreiteten Standard oder eventuell andere Handhabung ist mit »« markiert.

Rang der Auszeichnungen

 OSE  übersetzt den Markdown-Code in der nachfolgenden Reihenfolge absatzweise.

Der Markdown-Übersetzer von  OSE  arbeitet im Gegensatz zu vielen anderen die Auszeichnungen absatzweise ab. Das verändert in bestimmten Situationen das Ergebnis gegenüber anderen Interpretern, ermöglicht dafür komplexe Erweiterungen des verbreiteten Markdown.

Dennoch kann es Wechselwirkungen geben. Diese lassen sich fast immer lösen, wenn (kurz) über die Abarbeitungsreihenfolge nachgedacht wird.

Die Bearbeitungsreihenfolge

Die Reihenfolge ist auf das für die Ausgabe Relevante vereinfacht. U.a. die Block-Operationen sind erheblich komplexer als hier dargestellt.

  1. Die Quelldatei wird in einen Arbeitspuffer kopiert.
  2. Strukturprüfung
  3. Im Arbeitspuffer werden alle Präprozessor-Funktionen durch den damit erzeugten Inhalt ersetzt
  4. Für den so entstandenen Markdown-Text werden die Werte für die Lesezeit-Variablen errechnet.
  5. Der Yaml-Header wird eingelesen und entfernt.
  6. Meta-Zeichen werden ersetzt.
  7. Softbreaks werden im Arbeitspuffer reformatiert.
  8. Alle Kommentare werden entfernt.
  9. Alle Fußnoteninhalte werden gesammelt und auf Doubletten geprüft.
  10. Alle Referenzen werdn gesammelt und auf Doubletten geprüft.
  11. Definitionslisten erzeugen:
    Jede Definitions-Hierarchie muss mit einer Leerzeile beendet werden. Sie funktionieren wie mathematische Klammern und werden „von innen nach außen“ absatzweise gesucht und als Struktur erzeugt.
  12. Abschnitte öffnen/schließen:
    1. Zitate
    2. Code, PHP, HTML-Kommentare, Beliebiger Code
    3. Listen/Aufzählungen
    4. Tabellen
    5. HTML-Abschnitt, Pandoc-Abschnitt, Doppelklammer
  13. Überschriften
  14. Absätze
  15. Auszeichnungen
    1. fett, kursiv, …
    2. Ersetzen der Module
    3. Verknüfungen (Hyperlinks, Fußnoten, Referenzen)
  16. Fußnoteninhalte nach Auftreten sortieren,nummerieren, anhängen
  17. Einfügen des Ergebnisses in das Layout
  18. Ersetzen der Yaml- und übrigen Editor-Variablen
  19. Ersetzen der Postprozessor-Funktionen

Wo ist die Reihenfolge relevant?

Konkrete Beispiele

  • Mehrere Absätze kursiv oder fett auszeichnen, muss absatzweise erfolgen.
  • Leerzeilen werden wie Kommentar behandelt, es sei denn, sie folgen auf eine Definition.
  • Es wird nur der Yaml-Header der Quelldatei ausgewertet.
  • In durch Präprozessor-Funktionen eingefügtes Markdown werden Yaml-Variablen ersetzt, aus Markdown HTML-erzeugt.
  • In durch Postprozessor-Funktionen eingefügten Code finden keine Markdown-Übersetzung oder Yaml-Ersetzungen statt.
  • In durch Postprozessor-Funktionen eingefügtes, übersetztes Markdown (insert/define) wurden Yaml-Ersetzungen ausgeführt.
  • Durch Postprozessor-Funktionen eingefügter Text ist kein Bestandteil der Lesezeit-Ermittlung.

Was kompliziert scheint, ist im Grunde ganz einfach:  OSE  ermöglicht meistens die intuitive Verwendung von verschiedenen Auszeichnungen, die in ein mutmaßlich beabsichtiges Ergebnis übersetzt wird.

Ein überspitztes Beispiel, bei dem viele Interpreter bereits an der gelben Hervorhebung und/oder Definitionsliste scheitern. Die Tabelle, der „Beispiel“-Einzug und die Umrahmung darin außen vor … 😉

Beispiel

In einer Definitionsliste,
die eine Definitionsliste enthält,
eine Tabelle mit ausgerichteten Spalten erzeugen,

in der verschiedene Zeichenfomatierungen, u.a. „Mark“ verwendet werden?

Wiegehtdas ?
Nimm einfach  OSE 

🤔 Eine Überschrift in einer Box für das Inhaltsverzeichnis? Geschenkt! 🖖

Strukturprüfung

Die Markdown-Datei wird vor der Bearbeitung einer (rudimentären) Prüfung auf geschlossene Abschnitte unterzogen:

Hierfür werden Meldungen ausgegeben, die ignoriert oder verfolgt werden können: Die Ausgabe wird fortgesetzt.

Unpaarige Funktionsblöcke $$$…$$$ blockieren die Umwandlung des Markdowns: Das könnte bei einigen davon zu einer Endlos-Schleife führen.

Wird mit Funktionen Markdown hinzugeladen, erfolgt das nach diesen Prüfungen. Fehlt in diesem Code z.B. ein $$$ bei einem „define“, bleibt das im günstigsten Fall unbemerkt, im ungünstigsten Fall könnte sich  OSE  kommentarlos verabschieden oder den Prozessor auslasten.

Die Strukturkontrolle erfolgt ebenfalls beim Speichern einer Markdown-Datei. Optional kann das Speichern zum Korrigieren abgebrochen werden. Bei Kombinierten Befehlen (Speichern & Exportieren [& FTP]) wird die Kontrolle nur vom Export durchgeführt.

Zeichenkonvertierung

Zeichen werden »wie sie sind« durchgereicht. Das kann unter Umständen zu unerwünschten Seiteneffekten, die sich mit „escapen“ lösen lassen. Diese Zeichen werden mit dieser Methode vor der Markdown-Bearbeitung in ihr HTML-Pendant übersetzt:

EingabeÜbersetzung
\  (\Leerzeichen)   → „festes“ Leerzeichen
\! &33;
\" "
\( (
\) )
\* *
\- ­ → bedingter Trennstrich
\: :
\[ [
\\ \
\] ]
\^ ^
\_ _
\` `
\{ {
\| |
\} }
\~ ~
§
°
\0…\30 ⓪…㉚ → eingekreiste Zahlen

Softbreak

Markdown-Zeichen

…\ oder …<br/> oder …<BR/> oder …<br> oder …<BR>
am Absatzende

Der nachfolgende Absatz wird vor der Markdown-Bearbeitung nach einem <br/> an den aktuellen angehängt. Kommentar, Überschrift, Tabellenanfang, …, ist ohne Bedeutung: Der nachfolgende Absatz wird ohne Rücksicht auf weitere Auszeichnungen angehängt.

Es gibt bewusst keine Unterstützung von zwei oder mehr Leerzeichen am Zeilenende.

„Unsichtbare“ Formatierungszeichen widersprechen dem Ansatz von Markdown, Text mit lesbaren Formatanweisungen zu formatieren.

Zitate

Markdown-Zeichen

>
am Absatzanfang

Die Zitat-Strukturen („blockquote“) können beliebig tief verschachtelt werden. Sie gelten per se für den ganzen Absatz, deshalb ist keine „Ende-Kennung“ erforderlich.

Es ist unerheblich, ob und wie viele Leer- und Tabulatorzeichen vor dem (oder den) > stehen.

Innerhalb eines Zitats können nahezu alle Auszeichnungen verwendet werden. Das entspricht der Daring-Fireball-Konvention, wird aber von anderen Interpretern nur eingeschränkt unterstützt.

Zitate formatieren

Damit mehrstufige Zitate „optisch konsistent“ funktionieren, müssen entsprechende Stile definiert sein. Mit CSS ist keine Referenzierung auf das Eltern-Element möglich. Folge-Definitionen wie z.B. :first-child machen mehrstufige Blockquotes schwer vorhersehbar. Geplante Format-Kombinationen sollten daher explizit mit Stilvorlagen beschrieben werden.

Als Alternative für verschachtelte Blockquote-Hervorhebungen bieten sich (in  OSE  ) die DIV-Funktionen an.

Code-Abschnitte

Zur Definition von Abschnitten muss sich die umklammernde Notation alleinstehend in einem Absatz befinden.

Das Ergebnis von verschachtelten Code-, PHP-, HTML-Kommentar- und Code-Blöcken ist unvorhersehbar.

Es entsteht fast immer ein Resultat, das im günstigsten Fall schlecht aussieht, im ungünstigsten Fall die Seitendarstellung generell verhindert oder gar den Server zum stehen bringt.

Quelltext

Markdown-Zeichen

~~~ [Klasse] oder ``` [Klasse]
am Abschnittsanfang, am Zeilenanfang oder nach Zitatzeichen.
Alles hinter diesen Zeichen bis zum Absatzende wird als Formatanweisung (class="…") übernommen.

~~~ [Klasse] oder ``` [Klasse]
am Abschnittsende am Zeilenanfang oder nach Zitatzeichen.

Anfangs- und Endzeichen sollten identisch sein, die gemischte Verwendung wird unterstützt.

Codeblöcke werden mit <pre><code> eingeschlossen. Optional übergebene Formate werden dem <code class="…">-Tag zugeordnet.

  • In Code-Abschnitten werden Formatanweisungen von Browsern ingoriert.
  • Abhängig von der Stilvorlage erfolgt die Darstellung „wie geschrieben“, d.h. Umbrüche und Leerzeichen werden respekiert.
~~~
Ausgabe „wie eingegeben“, ggf. auch mehrere →     ← Leerzeichen, die ansonsten zu einem zusammengezogen werden.
~~~

Auch in Codeblöcken findet die Zeichenkonvertierung statt, mit der sich möglicherweise auftretende Darstellungsfehler beheben lassen.

PHP-Code

Markdown-Zeichen

<?php
am Abschnittsanfang

?>
am Abschnittsende

Die Umklammerung ist Bestandteil der Ausgabe.

Diese Notation kann sowohl innerhalb von Absätzen also auch über mehrere Absätze hinweg genutzt werden.

Freistehend in ein- und ausleitenden Absätzen verwendet, werden alle dazwischenliegenden Absätze inklusive der Umklamerung als unveränderter PHP-Programmcode 1:1 in die Zieldatei geschrieben.

<?php
Alles zwischen den Marken wird „als Code“
in d­ie Zieldatei geschrieben.
?>
 
Das aktuelle Datum <?php echo date(d.m.Y);  ?> im Absatz.

HTML-Kommentare

Markdown-Zeichen

<!--
am Absatzanfang beginnt den Abschnitt

-->
am Absatzanfang schließt den Abschnitt ab

Die Umklammerung ist Bestandteil der Ausgabe.

Diese Notation kann sowohl innerhalb von Absätzen also auch über mehrere Absätze hinweg genutzt werden.

Freistehend in ein- und ausleitenden Absätzen verwendet, werden alle dazwischenliegenden Absätze inklusive der Umklamerung als unveränderter HTML-Kommentar in die Zieldatei geschrieben.

<!--
Dieser Kommentar kommt – wie er ist – 
in der Datei an, bleibt im Browser jedoch unsichtbar.
-->
 
Hier wird <!-- lediglich --> ein Wort ausgeblendet.

Beliebiger Code

Markdown-Zeichen

<?code
am Absatzanfang beginnt den Abschnitt

?>
am End schließt den Abschnitt ab

Die Umklammerung wird entfernt.

Im gegensatz zu PHP-Code und HTML-Kommentar wird diese Auszeichnung innerhalb von Absätzen ignoriert.

Text-Abschnitte (DIV)

Das ursprüngliche Markdown bietet keine Strukturierungsmöglichkeiten von Textabschnitten.  OSE  bot ursprünglich eine individuelle Lösung, die mit der „Pandoc-Variante“ erweitert wurde.

Es gibt keine Kontrolle, ob geöffnete Abschnitte geschlossen wurden.

Doppelklammer

Markdown-Zeichen

⟨⟨ [optionale Klasse⟨n⟩]
explizit am Absatzanfang beginnt den Abschnitt

⟩⟩ [optionaler Kommentar]
explizit am Absatzanfang schließt den Abschnitt

Verschachtelte Klammern werden „von innen nach außen“ abgearbeitet.

Mindestens zwei öffnende oder schließende RUNDE Klammern am Absatzanfang umschließen einen Abschnitt.

  • Text hinter öffnenden Klammern wird als Klasse an den <div class="…">-Tag übergeben.
  • Text hinter schließenden Klammern wird als  OSE -Kommentar in der Ausgabe entfernt.
  • Eine größere Anzahl Klammern kann zur Visualisierung zusammengehörender Abschnitte verwendet werden, für die Code-Erzeugung ist es irrelvant.
(( info
Beliebig viele Absätze, die mit allen Formatbefehlen, etc. versehen sein können.
­)) Hier endet der Infoblock

Erzeugter Code:

<div class="info">
<p>Beliebig viele Absätze, die mit allen Formatbefehlen, etc. versehen sein können.<p>
</div>

Für diese Schreibweise verwendet die Funktion „Einfügen → Wrapper“.

Pandoc DIV

Markdown-Zeichen ()

::: Klasse
explizit zu Beginn des Absatzes beginnt den Abschnitt

:::
explizit zu Beginn des Absatzes schließt den Abschnitt

Verschachtelte Klammern werden „von innen nach außen“ abgearbeitet.

Diese Notation wurde von Pandoc übernommen.

  • Es müssen mindestens drei Doppelpunkte sein
  • Einer öffnenden Marke muss eine Klassendefinition folgen, die keine Formatdefinition haben muss. Sie dient bei der Interpretation allein der Erkennung eines öffnenden Abschnitts.
  • Der Abschnitt wird ausschließlich mit mindestens drei Doppelpunkten beendet, es darf kein Text folgen (sonst neuer Abschnitt…).
  • Eine größere Anzahl Doppelpunkte kann zur Visualisierung zusammengehörender Abschnitte verwendet werden, für die Code-Erzeugung ist es irrelvant.
::: Formatname
Text der ersten Ebene
­:::::: Formatname
Test der zweiten Ebene
­:::
­:::

Markdown-Kommentar

Markdown-Zeichen

??
explizit am Absatzanfang

Zwei Fragezeichen  ??  als erste Zeichen eines Absatzes markieren eine Kommentarzeile. Sie wird beim Export ignoriert wie eine Leerzeile.

?? Diese Zeile ist ein Kommentar, der beim Export ignoriert wird,
?? also nur in der Markdown-Datei steht.

Überschriften

Markdown-Zeichen

#######
am Absatzanfang

Die Anzahl der # bestimmt die Hierarchie 1…6.

Für  OSE  sind führende Leerzeichen unerheblich, Überschriften werden auch in Zitaten erkannt.

  • Überschriften erhalten automatisch einen ID, der referenziert werden kann.
    Der ID wird identisch zur Funktion Bearbeite → Umwandeln → ID/Dateiname erzeugt.
  • Überschriften erhalten den „tabindex="0"“, was sie mit TAB / SHIFTTAB „navigierbar“ macht.

Verweise auf Überschriften der aktuellen Seite können im Editor als Querverweis eingefügt werden.

## Dies Überschrift[^joEea] ist für die [ID-Erzeugung](/editor/bearbeiten/umwandeln#iddateiname "hingehen") kein Problem
wird zu:
<H2 id="dies-ueberschrift-ist-fuer-die-id-erzeugung-kein-problem" tabindex="0">Dies Überschrift<a href="#fnz1" class="fnl" id="fnh1">1</a> ist für die <a href="/editor/bearbeiten/umwandeln#iddateiname" title="hingehen">ID-Erzeugung</a> kein Problem</H2>
 
 

Absätze

Markdown-Zeichen

keine.
Jeweils alles zwischen bzw. Textanfang und sowie und Textende.

Ein Absatz besteht aus mindestens einem (beliebigen, auch „unsichtbaren“) Zeichen und endet mit einem (Absatzende-Zeichen, „Wagenrücklauf“) oder dem Dateiende.

In der Grundeinstellung bricht  OSE  Absätze am Rand um. Optisch entsteht der Eindruck mehrerer Zeilen, intern bleibt es „eine“ Zeile. Am linken Rand ist das an der Zeilenzählung erkennbar, die statt einer Zahl einen Umbruch-Pfeil zeigt. Der Zeilenzähler markiert den Anfang eines Absatzes.

Nur bei Definitionslisten) definieren Leerzeilen deren Ende. Ansonsten werden sie strukturell ignoriert und erzeugen keine Absätze. Sie können beliebig zur Strukturierung der Quelldatei verwendet werden.

„Besondere“ Absätze

Beginnen Absätze mit „<“ und enden Sie mit „>“, wird der gesamte Absatz als HTML-Code interpretiert und unbearbeitet in die Zieldatei geschrieben.

Detailunterschied

Ein möglicher HTML-Befehl „<…>“ wird respektiert und wie er ist ausgegeben.

Für einmalige „special effects“ erspart es Einträge in Stilvorlagen:

Wer das <span style="color:pink;font-size:3em">braucht</span>, …

Ergibt

Wer das braucht, …

Es findet keine Prüfung statt, ob direkt eingefügter HTML-Code eine valide Quelldatei erzeugt.

Auszeichnungen

Innerhalb von Absätzen werden die nachfolgenden Zeichenformatierungen unterstützt.

Auszeichnungen werden auf jeden Fall, abweichend von manchen anderen Generatoren, am Absatzende geschlossen, damit valides HTML entsteht.

WaswofürAnmerkung
**…** **Fett** Fett
__…__ __Fett__ Fett ① ③
*…* *kursiv* Kursiv ① ②
_…_ _kursiv_ Kursiv ① ③
***…*** ***kursiv-fett*** kursiv-fett
___…___ ___kursiv-fett___ kursiv-fett ① ③
`…` `Code` Code, HTML-encodiert ④
°­°…°­° °­°klein°­°schreiben kleinschreiben
^…^ ^hoch^stellen hochstellen
~…~ ~tief~stellen tiefstellen
~~…~~ ~~durch~~streichen durchstreichen
!­!…!­! !­!unter!­!streichen unterstreichen
=­=…=­= =­=Achtung=­= Achtung
-­-­- (-­-­-) (Trennlinie) ⑥
  1. Keine Ersetzung innerhalb von Modulen, Referenzen und Hyperlinks zum Schutz von Pfadnamen (Unterstrich) und Quantoren (<em>). „Offene“ Auszeichnungen (kein paariger Abschluss) werden am Absatzende zwangsweise geschlossen.
  2. Ein <em> gefolgt von einem Leerzeichen am Anfang wird als Aufzählungszeichen interpretiert.
  3. Der Unterstrich wird von der Korrektur als „Zeichen“ gewertet – was er faktisch ist, weshalb die <em>-Varianten evtl. etwas handlicher sind.
  4. : Automatische Ersetzung von <,>,[,],(,) mit HTML-Encodierung innerhalb der <Code>-Auszeichnung.
  5. Es wird das HTML5-Element <mark>…</mark> verwendet, das älteren Browsern unbekannt ist.
  6. „Offiziell“ werden Trennlinien (<hr/>) nur alleinstehend in einem Absatz unterstützt.
    Hier wird es auch innerhalb eines Absatzes erkannt, was zum „Verschwinden“ des Absatzes führen kann. Es wird unterstützt, damit Trennstriche in Blockquotes möglich sind.

Bilder

Markdown-Zeichen

![Ersatztext]⟨Link Titel⟩
„Titel“ ist optional, er dient der Barrierefreiheit.

  • Es muss einen Ersatztext geben
  • Es muss etwas geben, das als Link verwendet werden kann
  • Link und Titel mit Leerzeichen müssen mit Hochkommata umschlossen sein
  • Trenner zwischen Link und Titel ist (mindestens) ein Leerzeichen
  • Fehlt der Titel wird dafür der Ersatztext verwendet
  • Der Link enthält eine referrerpoliciy und ist XML-konform
  • Der Ersatztext ist gleichzeitig die Bild-ID (s. Überschriften)
  • Der Bildpfad muss passend zur Webseitenkonfiguration angelegt sein, / am Anfang wird üblicherweise als „ab Root“ verstanden
Markdown-Zeichen

[Linktext]⟨Link Titel⟩
„Titel“ ist optional, er dient der Barrierefreiheit.

  • Es muss einen Linktext geben
  • Es muss etwas geben, das als Link verwendet werden kann
  • Link und Titel mit Leerzeichen müssen mit Hochkommata umschlossen sein
  • Trenner zwischen Link und Titel ist (mindestens) ein Leerzeichen
  • Der Titel ist optional
  • Ein Link kann vollständig („https://…“) oder relativ zum Dokument sein.
    Abhängig von der Server-Konfiguration sind root-basierte Links erforderlich. Diese haben den Vorteil einer „zweifelsfreien“ Navigation: Der Startpunkt ist klar definiert.

Referenzen

Markdown-Zeichen

[Linktext][referenz]
im Fließtext eines Absatzes

[referenz]: Link Titel
am Absatzanfang eines eigenständigen Absatzes, () irgendwo im Dokument

  • Die Referenz muss am Zeilenanfang stehen, () vorweg dürfen Leerzeichen stehen
  • Link und Titel mit Leerzeichen müssen mit Hochkommata umschlossen sein
  • Trennstelle zwischen Link und Titel ist (mindestens) ein Leerzeichen
  • Wird keine Referenz gefunden, wird eine Fehlermeldung » UNGÜLTIGE REFERENZ « an der referenzierenden Stelle ausgegeben (s. „mark“).
  • Es können absolute und relative Adressen referenziert werden

Fehlende Referenzen werden beim Export gemeldet und der Erzeugung aller Seiten im Protokoll vermerkt.

Ausgabe

Referenzen erhalten grundsätzlich

  • … ein target="_blank"
    Das öffnet den Link (überlicherweise) in einem neuen Browser-Tab oder -fenster.
    Für „externe“ Links ist das zweckmäßig, damit der Eindruck vermieden wird, sie wären Bestandteil des eigenen Angebots (→ Haftung für den Inhalt).
  • … die Klasse rrl (Referenzlink)

Fußnoten

Markdown-Zeichen

[^ref]
im Fließtext

[^ref]: Link Titel
am Absatzanfang eines eigenständigen Absatzes, () irgendwo im Dokument

  • Fußnoten-Referenzen werden generisch in der Reihenfolge ihres Auftretens durchnummeriert und verlinkt:
  • Fußnoten haben für alle drei Elemente vorgegebene Klassen, s. Seitenlayouts.
  • Eine „vergessene Fußnote“ wird hervorgehoben: » UNGÜLTIGE FUSSNOTE « (s. „mark“)
  • Ein Fußnotentext kann mehrfach referenziert werden. Die Referenz im Text erhält immer die gleiche Nummer, der Rücksprung erfolgt zum ersten Verweis im Text.
  • Bei mehrfachen Fußnotentexten mit identischer Referenz gilt der von oben erste gefundene. Spätere auftretende werden verworfen.
  • Im Fußnotentext können andere Fußnoten und Referenzen referenziert werden.

Die Funktion Einfügen → Fußnoten generiert automatisch eindeutige1 Fußnoten-IDs.

Definitionslisten

Markdown-Zeichen ()
Definition
: …
…
  ← Das muss eine ECHTE Leerzeile sein!
  • Ein Definitionsabschnitt endet mit einer Leerzeile.
    • Die Leerzeile darf keinerlei Zeichen (auch keine unsichtbaren oder Leerzeichen) enthalten
    • Kommentare sind für eine Definitionsliste keine Leerzeilen
  • Titel und Inhalt der Definition werden mit <dl>…</dl> umklammert
  • Definitionslisten können verschachtelt werden
  • Die Auflösung erfolgt „von innen nach außen“, d.h. die erste Leerzeile schließt die innerste Definition
  • Jeder Definitionsabschnitt muss mit einer Leerzeile beendet werden
    • Die Position der Leerzeile bestimmt, ob die Elemente eingezogen oder auf der gleichen Ebene ausgegeben werden.

Das entspricht dem Verhalten von Markdown Extra-Definitionlisten

Tabelle

Markdown-Zeichen ()
| Kopf 1 | Kopf 2 | kopf 3 |{tabellenid}
| :--- | :---: | ---: |
| links | mittig | rechts |
| Standard | Nur mit Formatzeile | Längerer Text wird – abhängig von der Formatvorlage – in der Spalte umgebrochen.
| Tabelle in Tabelle?    | **Geht!** | $$$ insert tdemo $$$ |
 
$$$ define tdemo :
| TH 3 | TH 4 | TH 5 |
| ---: | :--- | :---: |
| rechts | links | mittig |
$$$
Kopf 1Kopf 2kopf 3
links mittig rechts
Standard Nur mit Formatzeile Längerer Text wird – abhängig von der Formatvorlage – in der Spalte umgebrochen.
Tabelle in Tabelle? Geht!
TH 3TH 4TH 5
rechts links mittig

s. dazu Einfügen → Funktionen → Platzhalter

  • Tabellen kann (optional) eine ID zugewiesen werden (s. Code), anderfalls wird ein generischer vergeben. Ein „zugewiesener“ ist ggf. einfacher für Referenzen verwenbar.
  • Aus der ersten Zeile wird grundsätzlich ein THEAD…THEAD-Bereich erzeugt.
  • Mit einer „Formatzeile“ kann Spaltenausrichtung festgelegt werden
    • Wenn eine Formatzeile gefunden wird , …
      • … für die Tabelle ein style-Bereich erzeugt,
      • … die Formatierung dem Tabellen-ID zugewiesen,
      • … den Spalten eine entsprechende Ausrichtung zugewiesen,
      • … der Kopfzeilentext jeder Spalte zentriert und fett,
      • … mit TBODY alles unterhalb THEAD umklammert.
  • Ohne Formatzeile werden keine Formatanweisungen erzeugt
  • Tabellen werden auch in Blockquote-Bereichen erzeugt

Im Gegensatz zu anderen Markdown-Implementationen die Tabellen unterstützen, darf bei  OSE  die Formatzeile an einer beliebigen Stelle innerhalb der Tabelle stehen, es darf sogar die letzte Zeile sein.

Aufzählungen/Listen

Markdown unterstützt ungeordnete Listen (Zeile beginnt mit -,+ oder *) und geordnete, nummerierte Listen. Einige Dialekte unterstützen Alphabetische Listen.  OSE  unterstützt darüber hinaus römische Nummerierung.

Bis auf die römische Nummerierung können geordnete Listen durch den verwendeten Startwert (mit bis zu drei Stellen) fortgesetzt werden.

Generell
  • Alle Listen müssen mit (mindestens) einem Leerzeichen vom nachfolgenden Text getrennt werden.
  • Die Aufzählungshierarchie wird durch Tabulator- oder Leerzeichen vor dem Aufzählungszeichen festgelegt.
    • Bei  OSE  genügt ein Leerzeichen Unterschied beim Einzug. Die Verwendung von Tabulatoren wird unterstützt, was es übersichtlicher macht.
„Geordnete“ Listen
  1. Geordnete Listen müssen mit einem Punkt oder einer schließenden Klammer2 enden.
  2. Der Aufzählungstyp einer Hierarchie wird mit de ersten Position festgelegt. Für alle nachfolgenden dieser Hierarchie ist das verwendete Startelement unerheblich.
  3. Die Zählung startet neut mit dem angegebenen Startwert, wenn ein Absatz mit Inhalt zwischen Aufzählungen einer Hierarchie liegt oder sie sich in einem Abschnitt befinden.
Im Editor
  • Listen werden so lange fortgesetzt, bis ein Absatz folgt, der kein Aufzählungs-/Listenzeichen am Anfang hat.
  • ENTER in einer Aufzählung erzeugt eine Aufzählungszeile mit dem identischen Einzug und Typ.
  • Leere Aufzählungszeilen werden mit ENTER so lange ausgerückt, bis es wieder ein „normaler Absatz“ ist.
  • Mit TAB kann eine Aufzählung unabhängig von der Cursor-Position eingezogen, mit SHIFT TAB ausgerückt werden.
  • ENTER innerhalb eines Aufzählungsabsatzes teilt sie und fügt das aktuelle Aufzählungszeichen am Absatzanfang ein.

Aufzählungstypen

Erste ZeichenAnmerkung
-  +  * ungeordnete Liste, „*“ als Listenzeichen kann mit Textauszeichungen (kursiv, fett) kollidieren
1 … 999 Nummierierte Liste, optionaler Startwert bis 999
A … ZZZ Großbuchstaben, optionaler Startwert bis ZZZ
a … zzz Kleinbuchstaben, optionaler Startwert bis zzz
I oder i Römische Nummerierung, kein freier Startwert möglich
Deshalb ist kein Startwert/Fortsetzungwert „i“ bzw. „I“ bei Buchstabenlisten möglich.

1Die IDs basieren auf dem aktuellen Datum und der aktuellen Uhrzeit, die in eine eindeutige ASCII-Referenz umgewandelt werden.

2Das ist kein Markdown-Standard, doch es wird von diversen Tools, z.B. Joplin, Typora, …, unterstützt.