回答:
pandoc markdownはこの目的のために標準のLaTeXタグを使用しているようです:
\newpage
そして \pagebreak
TL; DR:\newpage
以下のLuaフィルターを使用して、多くの形式で改ページを取得します。
Pandocはすべての入力を内部ドキュメント形式に解析します。この形式には改ページを表す専用の方法はありませんが、他の方法で情報をエンコードすることは可能です。1つの方法は、生のLaTeXを使用すること\newpage
です。これは、LaTeX(またはLaTeXで作成されたpdf)を出力するときに完全に機能します。ただし、HTMLやdocxなどのさまざまな形式をターゲットにすると問題が発生します。
他の形式を対象とする場合の簡単な解決策は、内部ドキュメント表現を変換して、ニーズに合うようにすることができるpandocフィルターを使用することです。Pandoc 2.0以降では、付属のLuaインタープリターを使用してこの変換を実行することもできます。
次の\newpage
ように、空白行のように囲まれた行を挿入して改ページを示していると仮定します。
lorem ipsum
\newpage
more text
\newpage
解析されますRawBlock生含むTeXに。ターゲット形式に未加工のTeX(LaTeX、Markdown、Orgなど)を含めることができる場合にのみ、ブロックが出力に含まれます。
単純なLuaフィルターを使用して、別のフォーマットをターゲットとするときにこれを変換できます。以下は、docx、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リポジトリから入手できます。
\newpage
、pandocのMS Word出力形式で強制的に改ページするために美しく機能します。このフィルターを使用するには、この回答のコードをegに保存して、pagebreak.lua
次のコマンドでpandocを呼び出します--lua-filter=pagebreak.lua
これは.docおよび.odt形式では機能しないことがわかりました。私が見つけた回避策は-----------------
、テキストエディター(私の場合はibre office)を使用して、水平線を挿入し、「水平線」スタイルをフォーマットしてページを分割し、非表示にすることでした。
format the "horizontal line" style to break a page
ですか?
hr{opacity:0;page-break-after: always;}
仕事をします。他の<hr>
ものに使用したい場合は、他の要素を犠牲にすることができます。
LucasSeverynの回答を編集することはできません。キューがいっぱいであるため、ここに情報を追加してください。
\newpage
そして\pagebreak
必要raw_tex
に拡張子を。
// pandoc 2.9.2.1では、docxまたはhtml出力では機能しません--verboseは言います
[INFO] Not rendering RawBlock (Format "tex") "\\pagebreak"
[INFO] Not rendering RawBlock (Format "tex") "\\newpage"
https://pandoc.org/MANUAL.html#extension-raw_attribute
```{=openxml}
<w:p>
<w:r>
<w:br w:type="page"/>
</w:r>
</w:p>
```
// gfm入力フォーマットでもサポートされていません。
//これは、docx出力では機能しましたが、html出力では機能しませんでした。
これには+raw_tex
フォーマット拡張が必要です。これはpandocのすべてのマークダウンバリアントをサポートしていません。
https://pandoc.org/MANUAL.html#markdown-variants
Note, however, that commonmark and gfm have limited support for extensions.
Only those listed below (and smart, raw_tex, and hard_line_breaks) will work.
The extensions can, however, all be individually disabled.
Also, raw_tex only affects gfm output, not input.
そう-f markdown
仕事しますが、-f gfm
機能しません。
https://pandoc.org/MANUAL.html#option--from
Extensions can be individually enabled or disabled by appending
+EXTENSION or -EXTENSION to the format name.
例えば
-t html+raw_tex
:出力enable raw_tex
-f markdown-raw_tex-raw_attribute
:input disable raw_texおよびraw_attribute