TL;DR : utilisation \newpage
o \pagebreak
avec le filtre Lua ci-dessous (ou aquí ) pour obtenir des sauts de page dans de nombreux formats. R Markdown les utilisateurs n'auront rien à faire de plus, le filtre est déjà inclus par défaut.
Pandoc analyse toutes les entrées dans un format de document interne. Le format interne n'a pas de moyen dédié pour représenter les sauts de page, mais il est toujours possible d'encoder l'information d'autres manières. L'une d'entre elles consiste à utiliser des caractères bruts LaTeX \newpage
. Cela fonctionne parfaitement lors de la sortie de LaTeX (ou de PDF créés par LaTeX). Cependant, on rencontrera des problèmes lorsqu'on vise des formats différents comme HTML ou docx.
Une solution simple pour cibler d'autres formats est d'utiliser une balise filtre pandoc qui peut transformer la représentation interne du document pour qu'elle réponde à nos besoins. Pandoc 2.0 et plus, même permet à pour utiliser l'interpréteur Lua inclus pour effectuer cette transformation.
Supposons que nous indiquions les sauts de page en mettant \newpage
dans une ligne entourée de lignes vides, comme ça :
lorem ipsum
\newpage
more text
El \newpage
sera analysé comme un RawBlock contenant des matières premières TeX . Le bloc ne sera inclus dans la sortie que si le format cible peut contenir du TeX brut (c'est-à-dire LaTeX, Markdown, Org, etc.).
Nous pouvons utiliser un simple filtre Lua pour traduire cela lorsque nous ciblons un format différent. Le filtre suivant travaux para docx , LaTeX , epub et un balisage léger.
--- Return a block element causing a page break in the given format.
local function newpage(format)
if format == 'docx' then
local pagebreak = '<w:p><w:r><w:br w:type="page"/></w:r></w:p>'
return pandoc.RawBlock('openxml', pagebreak)
elseif format:match 'html.*' then
return pandoc.RawBlock('html', '<div style=""></div>')
elseif format:match 'tex$' then
return pandoc.RawBlock('tex', '\\newpage{}')
elseif format:match 'epub' then
local pagebreak = '<p style="page-break-after: always;"> </p>'
return pandoc.RawBlock('html', pagebreak)
else
-- fall back to insert a form feed character
return pandoc.Para{pandoc.Str '\f'}
end
end
-- Filter function called on each RawBlock element.
function RawBlock (el)
-- check that the block is TeX or LaTeX and contains only \newpage or
-- \pagebreak.
if el.text:match '\\newpage' then
-- use format-specific pagebreak marker. FORMAT is set by pandoc to
-- the targeted output format.
return newpage(FORMAT)
end
-- otherwise, leave the block unchanged
return nil
end
Nous avons publié un version actualisée, plus riche en fonctionnalités . Il est disponible sur le site officiel de pandoc Dépôt de filtres lua . Le site R Markdown maintient un fork ; il est livré avec le paquetage R, donc le fichier la fonction peut être utilisée immédiatement .
Note : Pour convertir latex
a docx
vous devez définir le paramètre "from" à latex+raw_tex
pour que pandoc AST le transmette numéro github
5 votes
Le format Markdown à la sauce Pandoc est également idéal pour l'utilisation de formules mathématiques.