Mac
TeX
Jupyter

Jupyterで出力したTexファイルをPDFに変換(Mac)

TexファイルをPDFに変換する方法のメモ。

Jupyterで書いたMarkdownの書類(Tex形式の数式含む)をPDFに変換したかったのですが、紆余曲折あったので備忘録として。

Jupyterから直でPDF出力する方法がなかなかうまくいかず、今回はTex形式で出力した後、pandocとbasictexでtexからPDFへ変換する方法にしました。環境はMac OS Sierra。


MacTexのアンインストール

basictexをインストールしようとしたら、入ってたMacTexが邪魔をしたのでアンインストール。

参照元:https://qiita.com/sky_y/items/3c5c46ebd319490907e8

10分くらいかかりました、、、

$ rm -rf /usr/local/texlive

$ rm -rf ~/Library/texmf
$ rm -rf ~/Library/texlive
$ rm -rf /Applications/TeX
$ sudo rm -rf /Library/TeX/
$ brew cask uninstall mactex

MacTexでも使えたかもしれませんが、軽量化のため実施。


pandocとbasictexのインストール

参照元:https://note.nkmk.me/mac-pandoc-markdown-pdf-japanese/

$ brew install pandoc

$ brew cask install basictex
$ nano ~/.bash_profile

以下のパスを追加

export PATH=/Library/TeX/texbin:$PATH

ターミナルに戻って、

$ source ~/.bash_profile

$ sudo tlmgr update --self --all
$ sudo tlmgr install collection-langjapanese collection-luatex collection-latexextra

ここまでは順調。

pandocコマンドが使えるかチェック。

$ pandoc -v

pyenv: pandoc: command not found

使えないorz

どうも、pyenvとコンフリクトしてるっぽい?

Anacondaにもpandocが準備されているようなので、そちらでインストールし直してみる。

参照元:https://anaconda.org/conda-forge/pandoc

$ brew uninstall pandoc

$ conda install -c conda-forge pandoc

もう一度、テスト。

$ pandoc -v

pandoc 2.6
Compiled with pandoc-types 1.17.5.4, texmath 0.11.2, skylighting 0.7.5
Default user data directory: /Users/username/.pandoc
Copyright (C) 2006-2019 John MacFarlane
Web: http://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.

うまくいきました。


pandocコマンドで変換

早速、pandocコマンドを使ってみます。

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

--latex-engine has been removed. Use --pdf-engine instead.
Try pandoc --help for more information.

どうも、オプションが変更になったようです。

もう一度トライ。

$ pandoc input.md -o output.pdf -V documentclass=ltjarticle --pdf-engine=lualatex

Error producing PDF.
! Package fontspec Error: The font "latinmodern-math" cannot be found.

For immediate help type H <return>.
...

l.101 \begin{document}

フォントが見つからないエラー。

対処法としては、フォントをインストールすれば良いとのこと。

参照元:https://www.yamamanx.com/mac-pandoc-pdf/

$ sudo tlmgr install lm-math

そしてリトライ。

$ pandoc input.md -o output.pdf -V documentclass=ltjarticle --pdf-engine=lualatex

これでうまくいきました。


おまけ1

ちなみに、JupyterのMarkdownで=の位置を揃えるために、以下のように書いた部分、

$$

\begin{equation*}
\begin{split}
A &= b_1 + b_2 \\
&= c_1 + c_2
\end{split}
\end{equation*}
$$

\begin{equation*}

\begin{split}
A &= b_1 + b_2 \\
&= c_1 + c_2
\end{split}
\end{equation*}

$$\begin{equation*}を同時に使っているとpandocで変換するときに、以下のようなエラーが出ました。

$ pandoc input.md -o output.pdf -V documentclass=ltjarticle --pdf-engine=lualatex

Error producing PDF.
! LaTeX Error: Bad math environment delimiter.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.215 \begin{equation*}

$$の部分をtexファイルから削除すると変換できます。


おまけ2

pandocで変換するときは、オプションで-V geometry:margin=1inをつけるとレイアウトが簡単に変更できます。

$ pandoc input.tex -o output.pdf -V documentclass=ltjarticle --pdf-engine=lualatex -V geometry:margin=1in

参照元:https://qiita.com/takada-at/items/c807c163bd861bbec7cf