LoginSignup
30
26

More than 5 years have passed since last update.

複数の Markdown を 1枚の PDF に出力

Last updated at Posted at 2014-08-06

印刷出力

pandoc を使用することで、様々なファイルフォーマットに出力可能です。

複数の Markdown ファイルを結合して、 pandoc に渡すことで、 1枚の PDF ファイルに出力することができます。

PDF出力

まず、体裁を整えるため、 preanble.tex ファイルを作成します。

preanble.tex
%
% preanble.tex
% PDF出力用プリアンブル
%
\paperwidth210mm
\paperheight297mm
\usepackage{luatexja}
\usepackage[ipa]{luatexja-preset}
\usepackage{amsmath}
\usepackage{graphicx,color}
\usepackage[margin=2cm,truedimen]{geometry}
\def\baselinestretch{1.1}
\parindent=0pt

以下のようなコマンドで、カレントディレクトリ以下の *.md ファイルを1枚の PDF に出力することが可能です。
pandoc の他、 lualatex を使用するため、 Tex Live が必要です。

Mac の場合は iconv で NFCに正規化しなおす 必要があります。

# Mac の場合
find . -name '*.md' | xargs iconv -f UTF-8-MAC -t UTF-8 | pandoc -f markdown -o output.pdf -V documentclass=ltjltxdoc -H preanble.tex --latex-engine=lualatex --toc -N

# Mac 以外の場合
find . -name '*.md' | xargs cat | pandoc -f markdown -o output.pdf -V documentclass=ltjltxdoc -H preanble.tex --latex-engine=lualatex --toc -N
  • --toc を付与することで、目次を生成できます。
  • -N を付与することで、項番を生成できます。

文書クラス

documentclass を変更することで、 --latex-engine で指定した LaTeX エンジンの多彩な文書クラスを利用できます。
--latex-engine=lualatex を指定し、前出の preamble.tex を使用した場合、 article, book といった 8 ビット欧文 LaTeX 用の文書クラスでも、日本語で出力できるようです。ただし、 jarticle, jsarticle 等、 pLaTeX 専用のものは使用できません。

文書クラスについては、 「LaTeX 文書クラスについて 」が詳しいです。

表紙

以下のような pandoc 用コメントを入れておくと、表紙の出力が可能です。

cover.md
% 文書のタイトル
% 著者名
% 日付

Pandoc ユーザーズガイド 日本語版 - タイトルブロック も参考にしてください。

参考

TODO

  • *.md ファイルの最終行に、改行コードが2つ以上ないと、 PDF にした際に正常に出力されない。 cat で連結した時に、ファイルの境界を改行させたいが、良いやり方が解らない。。。
30
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
26