Folio Writer

Doblega al compilador:
filtros Lua de pandoc en Folio Writer

La cadena de compilación de Folio Writer cubre el 99 %: citas, referencias cruzadas, plantillas, formatos. Los filtros Lua son la vía de escape para el último 1 %: la norma interna rara de la revista, tus propias abreviaturas, lo que ninguna casilla prevé. Un filtro son unas pocas líneas de Lua que reescriben el documento durante la compilación, y pandoc los ejecuta de forma nativa: no hay nada que instalar.

Qué es realmente un filtro

Cuando pandoc compila tu manuscrito, primero analiza el Markdown y lo convierte en un árbol de documento: párrafos, encabezados, spans, citas. Un filtro Lua es un conjunto de funciones con los nombres de esos elementos; cada una se llama con cada elemento que coincide y puede devolver un sustituto. No devuelvas nada para dejarlo como está, devuelve {} para eliminarlo, devuelve elementos nuevos para transformarlo. Ese es todo el modelo.

Cómo asociar uno en Folio Writer

  1. Guarda tu filtro como archivo .lua; si lo guardas en el proyecto (por ejemplo, en una subcarpeta Filters dentro de Research), se sincroniza y viaja con el manuscrito.
  2. En la pestaña Estilo de la hoja de compilación: Filtros Lua ▸ Añadir filtro Lua…. Añade varios y se ejecutarán en orden, después de pandoc-crossref.
  3. Los filtros se guardan con el perfil de compilación, de modo que «Envío a Elsevier» y «Borrador para mi director» pueden llevar cada uno su propio conjunto.
La vista previa también participa: la vista previa en vivo ejecuta tus filtros en el mismo orden que la compilación, así que ves el efecto del filtro mientras escribes, no como una sorpresa en el PDF.

Ejemplo 1 · Una fecha siempre actual

Escribe @@today en cualquier parte; el documento compilado lleva la fecha de compilación, algo útil en cartas de presentación y marcas de agua de borradores:

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

Ejemplo 2 · Notas de borrador que nunca se publican

Escribe notas para ti en un div delimitado, visibles mientras redactas y con la garantía de que no aparecerán en la salida:

::: 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

Asócialo solo a tus perfiles de envío y las notas seguirán apareciendo en tu perfil de borrador para el director: para eso existen precisamente los filtros por perfil.

Ejemplo 3 · Tu propio marcado en línea

Dale a [key result]{.highlight} un significado real en cada formato: una marca amarilla en HTML, un resaltado en los PDF de LaTeX:

-- 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

Para la rama de LaTeX, añade una sola vez el paquete de resaltado en los metadatos del formato: header-includes: \usepackage{soul}.

Depurar sin conjeturas

Dos hábitos hacen que escribir filtros sea indoloro. Para ver el árbol con el que estás comparando, ejecuta pandoc -t native sobre un fragmento en el Terminal: imprime exactamente los elementos que recibirán tus funciones. Y cuando una compilación se porte mal, el Registro de compilación y vista previa muestra la línea de comandos completa de pandoc y su salida, errores de los filtros incluidos. Una nota específica de Folio Writer: un filtro cuyo archivo se ha movido se omite en lugar de hacer fallar la compilación; consulta el registro si un filtro parece inactivo sin dar explicaciones.

Para profundizar

La documentación de filtros Lua de pandoc recoge todos los elementos y funciones auxiliares, y la colección de filtros de la comunidad está llena de filtros listos para usar: gestión de abreviaturas, ajustes de tablas, renderizado de diagramas. Cualquiera de ellos se añade directamente en la hoja de compilación.

Descarga Folio Writer gratis → · Más guías