Folio Writer

Den Compiler biegen:
pandoc-Lua-Filter in Folio Writer

Die Kompilier-Pipeline von Folio Writer deckt die 99 % ab – Zitate, Querverweise, Vorlagen, Formate. Lua-Filter sind der Notausgang für das letzte 1 %: die eigenwillige Hausregel der Zeitschrift, Ihre eigene Kurzschreibweise, das, was kein Kontrollkästchen vorhersieht. Ein Filter besteht aus ein paar Zeilen Lua, die das Dokument während des Kompilierens umschreiben, und pandoc führt sie nativ aus – nichts zu installieren.

Was ein Filter eigentlich ist

Wenn pandoc Ihr Manuskript kompiliert, zerlegt es das Markdown zuerst in einen Dokumentbaum – Absätze, Überschriften, Spans, Zitate. Ein Lua-Filter ist eine Sammlung von Funktionen, die nach diesen Elementen benannt sind; jede wird mit jedem passenden Element aufgerufen und kann einen Ersatz zurückgeben. Geben Sie nichts zurück, bleibt das Element unverändert; geben Sie {} zurück, wird es gelöscht; geben Sie neue Elemente zurück, wird es umgewandelt. Das ist das ganze Modell.

Einen Filter in Folio Writer einbinden

  1. Speichern Sie Ihren Filter als .lua-Datei – liegt er im Projekt (z. B. in einem Unterordner Filters in Research), synchronisiert und reist er mit dem Manuskript.
  2. Im Tab Stil des Kompilierfensters: Lua-Filter ▸ Lua-Filter hinzufügen …. Fügen Sie mehrere hinzu, laufen sie der Reihe nach, nach pandoc-crossref.
  3. Filter werden mit dem Kompilierprofil gespeichert – so können „Einreichung bei Elsevier“ und „Entwurf für meine Betreuerin“ jeweils ihre eigene Auswahl mitbringen.
Die Vorschau spielt mit: Die Live-Vorschau führt Ihre Filter in derselben Reihenfolge aus wie das Kompilieren – Sie sehen die Wirkung eines Filters also schon beim Schreiben, nicht erst als Überraschung im PDF.

Beispiel 1 · Ein stets aktuelles Datum

Tippen Sie irgendwo @@today; das kompilierte Dokument trägt das Datum des Kompilierens – nützlich in Anschreiben und Entwurfswasserzeichen:

-- today.lua
function Str(el)
  if el.text == "@@today" then
    return pandoc.Str(os.date("%B %e, %Y"))
  end
end

Beispiel 2 · Entwurfsnotizen, die nie mit ausgeliefert werden

Schreiben Sie Notizen an sich selbst in ein Fenced Div – sichtbar beim Entwerfen, garantiert nicht in der Ausgabe:

::: draft
Ask Wei whether the 2019 calibration applies here.
:::
-- strip-draft.lua
function Div(el)
  if el.classes:includes("draft") then
    return {}          -- deleted from every compiled format
  end
end

Binden Sie ihn nur in Ihre Einreichungsprofile ein, und die Notizen erscheinen weiterhin in Ihrem Profil für den Entwurf an die Betreuung – genau dafür gibt es Filter pro Profil.

Beispiel 3 · Ihr eigenes Inline-Markup

Geben Sie [key result]{.highlight} pro Format eine echte Bedeutung – eine gelbe Markierung in HTML, eine Hervorhebung in LaTeX-PDFs:

-- highlight.lua
function Span(el)
  if not el.classes:includes("highlight") then return nil end
  if FORMAT:match("latex") then
    local out = pandoc.Inlines(pandoc.RawInline("latex", "\\hl{"))
    out:extend(el.content)
    out:insert(pandoc.RawInline("latex", "}"))
    return out
  elseif FORMAT:match("html") then
    local out = pandoc.Inlines(pandoc.RawInline("html", ""))
    out:extend(el.content)
    out:insert(pandoc.RawInline("html", ""))
    return out
  end
end

Für den LaTeX-Zweig fügen Sie das Hervorhebungspaket einmal in den Format-Metadaten hinzu: header-includes: \usepackage{soul}.

Debuggen ohne Rätselraten

Zwei Gewohnheiten machen das Schreiben von Filtern schmerzlos. Um den Baum zu sehen, gegen den Sie abgleichen, führen Sie im Terminal pandoc -t native auf einem Ausschnitt aus – es gibt genau die Elemente aus, die Ihre Funktionen erhalten werden. Und wenn ein Kompiliervorgang sich seltsam verhält, zeigt das Kompilier- & Vorschauprotokoll die vollständige pandoc-Befehlszeile und ihre Ausgabe, Filterfehler inklusive. Ein Folio-spezifischer Hinweis: Ein Filter, dessen Datei verschoben wurde, wird übersprungen, statt das Kompilieren scheitern zu lassen – sehen Sie ins Protokoll, wenn ein Filter stillschweigend untätig zu sein scheint.

Wo es tiefer geht

Die Dokumentation zu pandoc-Lua-Filtern listet jedes Element und jede Hilfsfunktion auf, und die Filtersammlung der Community ist voller fertiger Filter – Umgang mit Abkürzungen, Tabellen-Feinschliff, Diagramm-Rendering. Alles davon lässt sich direkt ins Kompilierfenster übernehmen.

Folio Writer kostenlos laden → · Weitere Anleitungen