hogecoder

tsutaj 競技プログラミングの記録

Sublime text + Pandoc で Markdown を PDF, Word 形式等に出力 (Linux)

競技プログラミング関係ないです。MarkdownをじゃんじゃんPDF化してSublimeを使い倒しましょう。Linux向けの記事があまり無いように感じたので書いてみました。

※筆者の環境はUbuntu MATE 14.04 LTSです。環境によって設定が微妙に異なる場合があります。

MarkdownをHighlight + プレビュー(数式もOK!)

Sublimeを愛用している私は、ふと「SublimeMarkdownを快適に編集できたらうれしいなあ・・・」と思いました。

調べたら、ありました。 ↓

Sublime Text で Markdown を快適にする3つのパッケージ - 情報系大学院生のWebメモ

この記事を参考にすると、Markdownが色付けされてなおかつブラウザでリアルタイムプレビューもできちゃいます。素晴らしいですね。

でも物足りない私は、「数式も反映されないかなあ・・・」と思いました。

調べたら、できました。↓

$\LaTeX$ Support in OmniMarkupPreviewer | Timon Wong's Blog

OmniMarkupHighlighterのUser-Settings部に、

{
    "mathjax_enabled": true
}

を書くだけ。おいおい、神かよ。これでMarkdown編集し放題じゃない。これは素晴らしい。ということで、一時は満足しました。

Markdown を 他の形式で出力する

ここからが本題です。まだまだ物足りない私は、「これPDFにできないかなあ・・・」と思いました。調べてもなかなか出てきません。なんとか頑張ったらできたので、書いてみます。

Pandoc のインストール

Pandocをインストールしますが、2種類あります。

まずは、sudo apt-get install pandocでインストールするPandoc。Sublime上だけに限らずコマンドラインでも使えますね、いろいろできますよ。詳しい使い方はググってね。

そして、SublimeのパッケージであるPandocもインストールします。こちらは、Package Controlをインストールした状態(インストールがまだならすればいいじゃない!)のSublime上で"Ctrl + Shift + p" → "Package Control: install package"と入力 → "Pandoc"と入力 → クリック でインストールできます。ほかのパッケージのインストールの方法と全く同じです。

インストールが終わったら、次はSublimeのパッケージ側のPandocの設定変更です。Preferences → Package Settings → Pandoc → Settings - Defaultと進み、中身をSettings - Userにコピペしてください。そして、14行目の"pandoc-path"のところを次のように変更します。

"pandoc-path": "/usr/bin/pandoc"

これでPandocのpathが指定出来ました。環境によってパスは違うかもしれないので、その場合はwhich pandocとかwhereis pandocとか叩いてみてください。

さらに、62行目からの"PDF"の"pandoc-arguments"を次のようにします。この設定をすることで、日本語に対応できます。(lualatexが入っていなければ、インストールしてください)

"pandoc-arguments": [
    "-t", "pdf",
    "--latex-engine=lualatex",
    "-V", "documentclass=ltjarticle"
]

PDF出力でエラーが出たら・・・

さて、ここまできたらSublimeで適当なMarkdownファイルを開き、もう一度"Ctrl + Shift + p"でウインドウを開き、そこに"Pandoc"と入力してみましょう。Enterを押すと、出力するファイル形式を尋ねられます。PDFとかWordとか選べて便利ですね。

で、Wordとかは問題なくできるはずです。が、PDFがダメなときがあります。こんな感じでエラー出たら、次の対処をしてください。

Error when running:
/usr/bin/pandoc -f markdown -o /tmp/tmpqof5of.pdf
pandoc:Error producing PDF from TeX source.
! Font T1/cmr/m/n/10=ecrm1000 at 10.0pt not loadable:
Metric (TFM) file not found.
<to be read again> relax
l.100 \fontencoding\encodingdefault\selectfont

細かいことはさておき、どうやらフォントが無いようですね。ということで、以下のコマンドを実行します。

sudo apt-get install texlive-fonts-recommended

フォントインストールするとこのエラーは出なくなります。

環境によってはまだエラーが出ます。

! Package fontenc Error: Encoding file `eu2enc.def' not found.

こんなことを言われたら、sudo apt-get install xetexを叩きましょう。euencはxetexパッケージに含まれているらしいです。これらの設定を踏めば、PDFエクスポートできるはずです!!

簡単にメモったりしたものがTeXの形でPDFで出力できるとは胸熱ですね。有効活用していきたいです。

何か不明な点があればコメントお願いします。では。