2014-01-21 4 views
7

複数のpandocファイルを1つの出力ドキュメントにコンパイルする方法を知りたい場合は、の各入力ファイルにタイトルブロックがあります。複数のファイルをタイトルブロックで1つにコンパイル

など。

ch1.md

% Chapter 1 
% John Doe 
% 1 Jan 2014 
Here is chapter 1. 

ch2.md:あなたはpandocにそれらを提供することで、それらをコンパイルすることができ、複数の入力ファイルと通常

% Chapter 2 
% Jane Smith 
% 3 Jan 2014 
Here is chapter 2. 

:私は2つのファイルがあるとし

pandoc ch1.md ch2.md --standalone -o output.html 

しかし、pandocはcomの前に入力ファイルを連結します最初にタイトルブロック(ch1.md)のみが適切にスタイルされていることを意味します。 タイトルブロックを適切にスタイル設定することができます(たとえば、htmlでは、タイトルブロックの最初の行は、<h1 class="title">、次の<h2 class="author">などのスタイルになります)。

(注:また、各章を別々にスタンドアロンとしてコンパイルしてから、pandocを使用してこれらを連結しています。これにより、1の後のチャプタのタイトルスタイリングは削除されますが、著者/日付のスタイリングは維持されます)。

なぜですか?私ができる:

  • は一緒に文書全体をコンパイルし、著者/タイトル/日付は、各章のために適切にマークアップされ
  • 独自の個別文書の各章をコンパイルし、著者/タイトル/日付が適切にマークアップされています

を(--chaptersオプションを使用することができます)私は、それぞれで '###'(H3)と '#'(H1)、 '##'(H2)との著者、および日付と見出しを指定することができます章のファイルを直接使用することはできませんが、これはpandocが私の文書のタイトル/見出し/日付が何であるかを「知っていない」ことを意味します。または\author{}タグが適切です。

+0

おそらく別々にコンパイルしてから、pdfコンカータでそれらを連結したいと思うでしょう。この質問をメーリングリストの注目に向け、誰かがより良い解決策を得ることができるように願っています。 – Shahbaz

+0

@Shahbaz - 私はPDFに制約されたくないが、PDF出力に興味があればうまくいく。私は今、十分な解決策をまとめた。 –

答えて

13

私は、個々の章のファイルに対して実行すると、見出し(タイトルレベル1、著者のためのレベル2、日付のレベル3とタイトルブロックを挿入することをpandoc filterを書きましたこれはHTMLライターの役割です)。

これは、あなたが(pandoc'd出力プラスフォーマットされたタイトルブロックを生成するために)個別に各章でpandocを実行して、単一の文書をコンパイルするすべての章一緒上pandocを実行できます。

フィルタは、(私はなど、故障したコードに対する責任をとりません)要旨にここにある:https://gist.github.com/mathematicalcoffee/e4f25350449e6004014f

あなたはそれを異なるフォーマットしたい場合(たとえば、次のように著者/日付はで表示され、それを修正することができます目次であるため目次になっていますが、これは正しくありませんが、デフォルトのHTMLライターでも同じように別の問題があります)。

私のワークフローは今、このようなものです:

FORMAT=latex # as understood by -t <format> in pandoc 
FLAGS=--toc # other flags for pandoc, --smart, etc 
OUT=pdf  # output extension 
for f in Chapter*.md; do \ 
    pandoc $FLAGS -t $FORMAT --filter ./chapter.hs $f; \ 
    echo ""; \ 
done | pandoc $FLAGS --standalone -o thesis.$OUT 

私はchmod +x chapter.hsをしたし、それが現在のディレクトリにあります。

(さらに私は論文全体のタイトルブロック(各章のタイトルブロックとは対照的に)で前面に突き出ています)。

私はpandoc google groupから何か助けを得ました。これは素晴らしいものでした。

2

%タイトルブロックではこれを行うことはできませんが、新しいYAMLタイトルブロックで行うことはできます。

スタート、このような各文書:

--- 
title: Chapter One 
author: Me 
date: June 4 
... 

文書が一緒に連結されている場合、最初の値のセットが他よりも優先するので、します(たとえば、同じパラメータを使用して、後続のYAMLライン「のタイトルを:」 )は無視されます。 (「拡張子:yaml_metadata_block」下readmeを参照してください。)

+0

これは個々の文書を個別にコンパイルするために機能しますが、ドキュメントをまとめてコンパイルすると、後続の章の見出しなどが失われます(以降のYAMLブロックは無視されるため)。現時点では、別々のドキュメントを一緒にコンパイルする(タイトルブロックを章に降格する)ときに、%ブロックを '#'、 '##'などのタイトル/著者/日付に置き換えるMakefileがあります。私はチャプターとして文書をコンパイルするときに、各見出しを降格させるための適切なスクリプトを書くべきだと思いますか? (私はラテックスで、文書の見出し/著者として最初の章を選択する必要があると思います)。 –

関連する問題