pandocで生成されたPDFの新しいページから章を開始する


20
%Title
%Author

#Header 1

Lots of words.

#Header 2

More words.

##Level 2 header

上記のテキストはで電子書籍リーダー用のEPUBファイルにpandoc -o output.epub input.mkd変換でき、でPDFに変換できますpandoc -o output.pdf input.mkd。後者では、ラテックスエンジンをインストールする必要がありますが、これは質問への回答に関連している可能性があります。

EPUBでは、各レベル1ヘッダーが新しいページの上部に自動的に設定されます(より小さなヘッダーはそうではありません)。PDFの場合、これは当てはまりません。また、マークダウンの主な目標に反するため、デフォルトではそうなるとは思いません。ただし、この動作を有効にするpandocオプションを見つけるのに問題があります。

pandocでこの動作を有効にする方法を知っている人はいますか?構成ファイルを編集することは許容できる解決策ですが、構文がラテックスベースの場合、その説明(ラテックスの包括的な説明ではなく、構成ファイルの内容の意味を理解してください!)

pandocの--chaptersオプションは、私が望むことをするように思えますが...

  • チャプターを奇数ページにのみ表示し、必要に応じて空白ページを挿入します(興味深いが、私が望むものではありません-これをA4用紙に印刷したいので、ブックスタイルにレイアウトされませんここでの見た目の美しさは紙の無駄で相殺されます)
  • Chapter x実際のヘッダーの前に挿入すると、次のようなばかげたものになります。

第1章

プロローグ

--chaptersオプションを飼いならすことができれば、それは適切な答えでしょう。

回答:


28

/tex/9497/start-new-page-with-each-sectionを参照してください

これをpandocで機能させるには、pandocがPDFへの途中で生成するLaTeXドキュメントのプリアンブルに以下を挿入する必要があります。

\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage}

それにはいくつかの方法があります。1つは、プリアンブルにこれらの行を含むカスタムLaTeXテンプレートを作成することです。その後、--template mytemplate.latexこのテンプレートを使用するようにpandocに指示するオプションを使用できます。変更可能なデフォルトのLaTeXテンプレートを取得するには、を実行しますpandoc -D latex > mytemplate.latex

別のオプションは、titlesec.texこれらの2行だけで小さなファイルを作成することです。次に--include-in-header titlesec.tex、次のように、ヘッダーに含めるオプションを指定してpandocを呼び出します。

pandoc --toc --include-in-header titlesec.tex -o output.pdf input1.mkd input2.mkd

ありがとう、これはすごい。これには、PDF内のリンクを解除し、すべてのブックマーク(これが正しい単語かどうかわからない)を1ページに設定するという欠点がありますが、これは主に実際の印刷に使用しているため、大したことではありません。それがしない唯一のことは、目次をタイトルと同じページに置くことですが、それはまったく重要ではありません。
evilsoup

2
ところで、もしあなたがパンドックを作ったジョン・マクファーレンと同じなら、この機会に感謝したいと思います-私がそれを発見したので、あなたのプログラムは私の執筆ワークフローの重要な部分になりました。また、LaTeXについて学ぶために推奨するリソースはありますか?
evilsoup

4
どういたしまして。私は、Lamportの本LaTeX:A Document Preparation Systemから始めました。
ジョンマクファーレン

1
titlesecは現在のpandocラテックステンプレートと互換性がないようです。提案された答えはラテックスエラーを生成します。sectsty:を使用できます\usepackage{sectsty} \sectionfont{\clearpage}
メルレインセブレヒト

上記の方法を使用するとエラーが発生します。ここで解決策を示します
jdhao

11

私がやったことはこれでした:

pandoc --toc -V documentclass=report -o output.pdf inputs*.mkd

これにより、LaTeXの「レポート」ドキュメントクラスが使用されます(デフォルトでは--chapters、pandocは書籍用に設計された「book」または「memoir」クラスを使用しているようです。 、奇数ページのみで始まる章など)、ページの上部にレベル1ヘッダーを配置しますが、奇数ページの上部にのみ配置しません。

これにより、各章の前に「第X章」が挿入されますが、それでもいらいらします。また、目次をタイトルと同じページで開始したいです(これは 'article'ドキュメントクラスで発生しますが、章は新しいページの先頭に迂回されず、どこからでも開始されます)。ただし、それらを取得するにはLaTeXの知識が必要だと思います。これを承認済みの回答としてマークするつもりはありません。


1

また、2年以上後、この問題に出くわし続けました。これを見つけたこの問題に出くわした他の人のために...

ジョンの回答と含まれている他のリンクのおかげで、pandoc -Hオプションを含むファイルで次を使用し、うまくいくようです:

% /superuser/601469/getting-chapters-to-start-on-a-new-page-in-a-pandoc-generated-pdf
% http://tex.stackexchange.com/questions/120740/how-do-i-remove-chapter-n-from-the-chapter-titles-of-a-book
\usepackage{titlesec}
\usepackage{fancyhdr}

\newcommand{\sectionbreak}{\clearpage}
\titleformat{\chapter}[display]{\normalfont\bfseries}{}{0pt}{\Large}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[RE]{\leftmark}
\fancyhead[LO]{\rightmark}
\fancyhead[LE,RO]{\thepage}
\renewcommand\headrulewidth{0pt}
\renewcommand\chaptermark[1]{\markboth{#1}{}} 
\renewcommand\sectionmark[1]{\markright{\thesection.\ #1}}

これにより、--chaptersオプションを使用して、ページヘッダーのpandocない新しいページにPDFの章を生成しChapter XX:ます。-V documentclass=reportまた、使用すると、bookドキュメントクラスによって生成されるページスキップと新しい章の奇数ページ番号現象なしで、望ましい結果が生成されました。


0

同じ問題を抱えていて、YAMLメタデータフィールドのみを使用してソリューションを投稿することがわかりました。

documentclass: report
header-includes:
- \renewcommand{\chaptername}{}
- \renewcommand{\thechapter}{}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.