PandocでMarkdownをPDFに変換

OS X 10.10, pandoc 1.13.1, MacTeX-2015

これは個人の作業ログであり、環境構築方法を説明する情報としては整備されたものではありません。

あれはいつだったかのう・・・

調べてみると1年は経っていなかったが、結構昔に、Pandocというツールを使って、マークダウンテキストをePubドキュメントに変換するやり方を記事としてこのダイアリーにアップした。

過去記事リンク

それからというもの、特にこれといった大きな問題もなく、まずまず快適なドキュメントライフを送れている。

ほとんどの場合、ちょっとしたドキュメントは.txtか.mdで書いてそのまま。そこそこきちんと書いた文書は、ePub形式に変換して納めている感じだ。

しかし、つい最近、ちょっとした事情により、ドキュメントをPDFで納めなければならないことがあった。

私はよく調べもせずに、
「まあ、適当にそれっぽいオプションを付ければできんだろ」
と、こんなこと(↓)をしてみたが、

$ pandoc test.md -o test.pdf

はい、ダメでした。

pandoc: pdflatex not found. pdflatex is needed for pdf output.

エラーメッセージを見る限り、どうやらPandocのPDF出力はLaTeXに依存しているようだ。

で、TeXLaTeXの環境について少し調べてみると、MacではMacTexというアプリがスタンダードらしい。そんな話がたくさん出てきた。

こことか。
MarkdownからWordやPDF生成ができるようにする (またはPandoc環境の構築方法) (2014/09版)

しかし、私は宗教上の理由でHomebrewを使うことができないので、別のところから必要なものを .pkg 形式で探し、ダウンロードしてきた。

MacTex Smaller Download

で、インストールして、パスを通す。

$ export PATH=$PATH:/usr/texbin/

そして、日本語を扱うために、いくつか追加モジュールをインストールする。

$ sudo tlmgr update --self
$ sudo tlmgr update --all
$ sudo tlmgr install collection-langjapanese collection-latexrecommended collection-fontsrecommende

よくわからんが、↑ こんなのが必要みたい。

これでPDFへの変換環境は一応整ったような気がするので、変換コマンドを実行してみる。

$ pandoc test.md -o test.pdf -V documentclass=ltjarticle --latex-engine=lualatex
! LaTeX Error: File `filehook.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

Enter file name: 
! Emergency stop.
<read *> 
   
l.21 \newif

pandoc: Error producing PDF from TeX source

はい、気がしただけでした。やれやれ、エマージェンシーストップされてしまったわい。
filehook.styが見つからない? なんのこっちゃ?

ググってみると、同じようなエラーが出ている人がいた。
https://github.com/rstudio/rmarkdown/issues/39

リンク先の人は、framed.sty というファイルが足りないというエラーが出ている。
そんで、回答者は、framed をインストールしたらいいよ、と言っているので、なるほど ...

$ sudo tlmgr install filehook

こういうことですね!

三たび、変換してみる。

$ pandoc test.md -o test.pdf -V documentclass=ltjarticle --latex-engine=lualatex

できた!

とまあ、こんな感じで、根本的なところをよく調べもせずに、独自の嗅覚と適当なGooglingで解決しましたとさ。

ちなみに、私の環境では、デフォのPDF出力だと、余白ができすぎてしまうので、

$ pandoc test.md -o test.pdf -V documentclass=ltjarticle --latex-engine=lualatex  -V geometry:a4paper -V geometry:margin=2.5cm -V geometry:nohead

こんな風にして調整している。


その他、文書内に記述しているソースコードが折り返し表示されず、クリップされてしまうという問題はまだ解決できていない。