最近、私はドキュメントに多くの数式が含まれていないため、LaTeXの優れた代替手段と思われるPandocマークダウンの使用を開始しました。
私がやってきたことができなかった1つのことは、ページの残りを空のままにする方法です、誰でも助けることができますか?
この目的のために、pandoc markdownは標準のLaTeXタグを使用しているようです:
\newpage
および\pagebreak
TL; DR:\newpage
と以下のLuaフィルターを使用して、多くの形式で改ページを取得します。
Pandocは、すべての入力を内部ドキュメント形式に解析します。その形式には改ページを表す専用の方法はありませんが、他の方法で情報をエンコードすることはまだ可能です。 1つの方法は、生のLaTeX \newpage
を使用することです。これは、LaTeX(またはLaTeXで作成されたpdf)を出力するときに完全に機能します。ただし、HTMLやdocxなどのさまざまな形式をターゲットにすると、問題が発生します。
他の形式を対象とする場合の簡単な解決策は、 pandoc filter を使用することです。これにより、内部ドキュメント表現を変換してニーズに対応できます。 Pandoc 2.0以降でも allows 含まれているLuaインタープリターを使用してこの変換を実行します。
空白行のように囲まれた行に\newpage
を置くことで改ページを示しているとしましょう:
lorem ipsum
\newpage
more text
\newpage
は、rawTeXを含むRawBlockとして解析されます。ターゲット形式に生のTeX(LaTeX、Markdown、Orgなど)を含めることができる場合にのみ、ブロックが出力に含まれます。
簡単なLuaフィルターを使用して、異なる形式を対象とする場合にこれを翻訳できます。次のworksfordocx、LaTeX、epub、および軽量マークアップ。
--- 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
更新された、より機能的なバージョン を公開しました。公式のpandoc lua-filters repository から入手できます。
これは.docおよび.odt形式では機能しないことがわかりました。私が見つけた回避策は、水平線を挿入することでした-----------------
そして、テキストエディタ(私の場合はibre office)を使用して、ページを分割して非表示になるように「水平線」スタイルをフォーマットします。