LoginSignup
9
8

More than 5 years have passed since last update.

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

Posted at

輪講のスライドのように,数式を含む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 ライフを!

9
8
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
9
8