Markdown --> LaTeX Beamer --> PDF という変換を Pandoc でするシェルスクリプト


輪講のスライドのように,数式を含むPDFを定期的に量産しなければならないことがあります。そんなときには,Markdown で書いた原稿をパパパッとPDFに変換したいですね。

本稿では,以下のような要件をみたす自動化を行います。

  • beamer でスライドをつくりたい
  • 原稿は markdown で書きたい
  • プリアンブルや題名などは毎回ほぼ同じでいい

これを満たすために,今回は以下のような流れにしました。

  1. スライドに変換するためのひな形となる LaTeX マスターファイルを作成します。
  2. 原稿を Markdown で書きます。これは LaTeX マスターファイルの本文の部分にあとで挿入します。
  3. Markdown ファイルを Pandoc で LaTeX ファイル (Beamer スタイル) に変換します。
  4. ptex2pdf コマンドによって LaTeX マスターファイルを PDF に変換します。

以上の手順のうち,3と4をシェルスクリプトによって自動化します。

手順

では環境構築も含めた実際の手順を見てみましょう。

  1. Pandoc をインストールします。古いと引っかかることもあるので,例えば Ubuntu なら apt-get するよりも debian パッケージを落としてきて sudo dpkg -i $DEB するほうがおすすめです。
  2. LaTeX 環境の構築をします。TeX wiki などを参考にするのが多分一番速いと思います。なかでも,TeX Live には,スライドをつくるために使う Beamer も含まれているのでおすすめです。TeX Live のダウンロードとインストールには,合わせて1時間以上は見込んでおきます。
  3. プリアンブルや題名などを書いたマスターファイルを master.tex などとして作成します。 beamer の詳細については Soma さんのページ辻研究室などを参照してください。途中,本文となる部分を以下のように編集してください。
\begin{document}
  \input{body}
\end{document}

4.原稿を Markdown で書きます (これが上記 \begin{document} から \end{document} の中身になります)。ファイル名は自由です。ここでは仮に draft.md としておきます。
5. 以下のシェルスクリプトを書きます。

typeset.sh
#!/bin/sh
pandoc $1 -o body.tex --latex-engine=lualatex -t beamer
ptex2pdf -u -l -ot "-synctex=1 -file-line-error"
master.tex

exit 0

6.手順 3,4,5 で作成したファイルをすべて同じディレクトリに置いて,そこでスクリプトを走らせます。以下のように,原稿ファイル名を引数に指定してください。

$ ./typeset.sh draft.md
...
master.pdf generated by dvipdfmx.

以上のように,最後に「generated by dvipdfmx.」が表示されれば成功です。

随所でエラーに悩まされると思いますが,幸い LaTeX のエラー周りに関する日本語情報は豊富です。楽しい Markdown & LaTeX ライフを!