Récemment, j'ai commencé à utiliser le démarquage Pandoc, qui semble être une bonne alternative à LaTeX, car mon document ne contient pas beaucoup de formules mathématiques et je n'ai aucune expérience de LaTeX, qui, combiné à un délai de soumission inférieur à deux semaines, en fait une bonne solution.
Une chose que je n'ai pas pu comprendre, c'est comment le forcer à laisser le reste de la page vide, quelqu'un peut-il aider?
Pandoc markdown utilise les balises LaTeX standard à cet effet:
\newpage
et \pagebreak
TL; DR : utilisez \newpage
et le filtre Lua ci-dessous pour obtenir les sauts de page dans de nombreux formats.
Pandoc analyse toutes les entrées dans un format de document interne. Ce format n'a pas de moyen spécifique pour représenter les sauts de page, mais il est toujours possible de coder les informations de différentes manières. Une solution consiste à utiliser du brut LaTeX \newpage
. Cela fonctionne parfaitement lors de la sortie de LaTeX (ou du pdf créé avec LaTeX). Cependant, on rencontrera des problèmes pour cibler différents formats tels que HTML ou docx.
Une solution simple lorsque vous ciblez d'autres formats consiste à utiliser un filtre pandoc qui peut transformer la représentation interne du document de telle sorte qu'il réponde à nos besoins. Pandoc 2.0 et supérieur même permet d'utiliser l'interpréteur Lua inclus pour effectuer cette transformation.
Supposons que nous indiquons des sauts de page en mettant \newpage
dans une ligne entourée comme des lignes vides, ainsi:
lorem ipsum
\newpage
more text
Le \newpage
sera analysé comme RawBlock contenant raw TeX. Le bloc ne sera inclus dans la sortie que si le format cible peut contenir du texte TeX brut (c'est-à-dire, LaTeX, Markdown, Org, etc.).
Nous pouvons utiliser un simple filtre Lua pour traduire cela lorsque vous ciblez un format différent. Ce qui suit fonctionne pour 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 mise à jour, plus fonctionnelle . Il est disponible sur le site officiel de pandoc référentiel lua-filters .
J'ai observé que cela ne fonctionne pas pour les formats .doc et .odt. Une solution de contournement que j'ai trouvée consistait à insérer une ligne horizontale -----------------
et formatez le style "ligne horizontale" pour casser une page et être invisible, à l'aide de l'éditeur de texte (ibre office dans mon cas)