Version dev

# Markdown

| Die Markdown-Unterstützung wird als experimentell angesehen, es wird Änderungen am Code geben.

Sie können Text mit Markdown wiedergeben, einer gebräuchlichen »Auszeichnungssprache« für Text. Siehe zum Beispiel https://www.markdownguide.org, wenn Sie mehr über Markdown erfahren möchten.

Um Markdown in Ihrem Dokument zu verwenden, rufen Sie einfach die Funktion `sd:markdown` auf:

    <Layout xmlns="urn:speedata.de:2009/publisher/en"
        xmlns:sd="urn:speedata:2009/publisher/functions/en">

        <Record element="data">
            <PlaceObject>
                <Textblock>
                    <Paragraph>
                        <Value select="sd:markdown(.)" />
                    </Paragraph>
                </Textblock>
            </PlaceObject>
        </Record>
    </Layout>

mit dieser Datendatei:

    <data>
    # A title

    * one
    * anotherone
    * three
    </data>

erzeugt eine h1-Überschrift mit einer Aufzählungsliste:

## Markdown Erweiterungen

Es gibt verschiedene Markdown-Erweiterungen, mit denen man Tabellen, Fußnoten und andere Spielereien erstellen kann. Einige davon werden vom speedata Publisher unterstützt. Die Implementierung wird zu gegebener Zeit verbessert werden. Einige der Erweiterungen aktivieren automatisch andere. Probieren Sie sie einfach aus.

Feature | Beschreibung
--- | ---
`gfm` | GitHub flavored Markdown
`table` | Tabellen
`strikethrough` | Helfer für durchstreichen mit `~`
`linkify` | Erzeuge automatische Links
`definitionlist` | Definitionslisten
`footnote` | Fußnoten
`typographer` | Diese Erweiterung ersetzt Interpunktionen durch typografische Einheiten wie smartypants
`highlight` | Quelltext farbig hervorheben

Diese Optionen können gesetzt werden wie folgt:

    <Options markdown-extensions="highlight,table" />

Sie können den Markierungsstil auch mit dem Präfix `hlstyle_` auswählen, zum Beispiel

    <Options markdown-extensions="highlight,hlstyle_tango" />

Die Liste der verfügbaren Stile ist unter https://github.com/alecthomas/chroma/tree/master/styles zu finden.

Man kann auch Optionen für die Umwandlung mit dem Präfix `hloption_` setzen. Derzeit wird nur `hloption_withclasses` unterstützt, das dazu führt, dass Syntaxhervorhebung mit CSS-Klassen anstelle von `<span>...</span>` erzeugt wird.

## Ein speedata Publisher quine mit Markdown

Dieser Abschnitt darf nicht zu ernst genommen werden… Mit Markdown ist es nun leicht möglich, ein `layout.xml` quine zu erstellen.

Wenn Sie das folgende Layout mit `sp --dummy` durchlaufen lassen, erzeugt es ein PDF mit »sich selbst« als Eingabe:

    <Layout xmlns="urn:speedata.de:2009/publisher/en"
        xmlns:sd="urn:speedata:2009/publisher/functions/en">
        <Options markdown-extensions="highlight,hlstyle_tango" />

        <Record element="data">
            <SetVariable
                variable="raw"
                select="unparsed-text('layout.xml')" />
            <SetVariable
                variable="fenced"
                select="concat('```xml&#x0a;', $raw ,'&#x0a;```'))"/>
            <PlaceObject>
                <Textblock>
                    <Paragraph>
                        <Value select="sd:markdown($fenced)" />
                    </Paragraph>
                </Textblock>
            </PlaceObject>
        </Record>
    </Layout>

Die Erklärung ist einfach. Mit `unparsed-text()` wird die `layout.xml` geladen, anschließend mit pass:[```] (drei Backticks) und Zeilenumbruch umrandet und als Markdown ausgegeben. Die drei Backticks bedeuten, dass der Inhalt nicht interpretiert sondern nur ausgegeben wird (mit allen Leerzeichen wie in der Eingabe selber).

#### Inhalt