So können Codeblöcke HTML-Attribute mit der Erweiterung fenced_code_blocks
definieren:
Ist es möglich, die obige Syntax in gewisser Weise für normale Textblöcke zu verwenden? Zum Beispiel möchte ich den folgenden Markdown-Text konvertieren:
%Vor%in etwas wie das:
%Vor%Wenn es keine solche Unterstützung in Pandoc selbst gibt, wäre es dann möglich, einen benutzerdefinierten Schreiber in Lua zu erstellen?
Bearbeiten: Betrachten Sie die sample.lua benutzerdefinierte Writer, weiß jemand, was die "Attributtabelle" in Zeile 35 ist? Und wie gibt man diese Attribute an bestimmte Pandoc-Elemente weiter? Auch die Funktionalität, nach der ich oben suche, ist der % sehr ähnlich. co_de% Erweiterung, außer es würde für alle Elemente funktionieren, nicht nur für Header.
Dies ist sehr machbar in kramdown , welches die folgenden Eingaben konvertiert:
%Vor%bis
%Vor%Weitere Informationen finden Sie im Attributlisten-Definitionsabschnitt der Syntax .
Pandocs Filter ermöglichen Ihnen, auf der internen Darstellung des Dokuments von Pandoc zu arbeiten. Es ist möglich, eine Filterkette zu verwenden, die verschiedene Transformationen durchführt. Ich werde zwei illustrative Beispiele von Filtern teilen, die helfen sollten.
Code-Blöcke in Pandoc sind normalerweise dazu gedacht, Quellcode-Listings aus Programmiersprachen einzubetten, aber hier versuchen wir, den Body zu extrahieren und ihn als Markdown zu interpretieren. Anstatt Klassen aus Ihrem Eingabedokument wie text
und quote
zu verwenden, verwenden Sie eine generische as-markdown
-Klasse. Pandoc generiert automatisch die passenden Tags.
Um sicherzustellen, dass Codeblöcke ohne die as-markdown
-Klasse wie üblich interpretiert werden, habe ich einen haskell
-Code-Block eingefügt. Hier ist die Filterimplementierung:
Running pandoc --filter markdown-code-block.hs index.md
erzeugt:
Fast da! Der einzige Teil, der nicht ganz richtig ist, sind die HTML-Attribute.
Der folgende Filter soll Ihnen den Einstieg erleichtern. Es konvertiert Codeblöcke mit der Klasse web-script
in ein HTML <script>
-Tag, wenn das Zielformat html
oder html5
ist.
Der data-id=test-123
in Ihrem letzten Block würde in den Schlüssel / Wert-Paaren _namevals
mit dem Typ [(String, String)]
durchkommen. Sie müssen lediglich script
umgestalten, um beliebige Tags und Schlüssel / Wert-Paare für HTML-Attribute zu unterstützen, und angeben, welche HTML basierend auf diesen Eingaben generiert werden soll. Um die native Darstellung des Eingabedokuments anzuzeigen, führen Sie pandoc -t native index.md
.
Wenn Sie mit einem dieser Beispiele spielen möchten, finden Sie beide in meinem pandoc-experiments
Repository.