必要があってLaTeXで書いた図式をpngにする環境を整えたのでメモを残しておきます。
環境
- Windows11 (本日の問題児)
- TexLive (私はLuaHBTeXを使いましたが、これに関してはLaTeXでもpdflatexでもXeTeXでもそんなに大差ないと思います)
- ImageMagick
後述しますがWindowsでこれをやろうとするとWindows特有の問題が一手間発生します。こういうことを書いていると脳内のLinux至上主義ギークおじさんがニヤニヤしながらこっちを見てきます (被害妄想) が、気にしないことにします。
導入手順
TexLive環境の準備
TexLiveは導入済みとします。今回使うパッケージは
の2つです。単純な可換図式を書くだけならtikz-cdでもいいんですが、図式を書いてるとすぐに単純じゃない図式も描く羽目になるので (五角図式とか) まあいいでしょう。
ImageMagickの導入
pngへの出力はImageMagickを使用します。これはstandaloneパッケージがデフォルトで利用している変換ソフトの1つです (もう1つはGhostscriptです)。どちらもOS対応が充実しているうえにchocolateyにも対応しています。控えめに言って神。
ただしGhostscriptはPS→各種出力をするソフトなので、本記事の内容の7割くらいは役に立ちません。必要な場合は別途頑張ってください (丸投げ)。
作成手順
文書作成
実際のコードが以下のようになります。
\documentclass[%
crop,%
convert={%
outext=.png,%
convertexe={magick},%
command=\unexpanded{{\convertexe\space -density \density\space \infile\space \ifx\size\empty\else -resize \size\fi\space -quality 90\space -alpha\space Remove\space -background\space white\space \outfile}}%
}%
]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
%% ここに図式の本体を書く
\end{tikzpicture}
\end{document}
standaloneの設定は以下の通りです。
-
crop
(ほぼ必須) tex→pdf→pngの順に変換するので、pdf出力された時点でできる余計な空白を切り落とす必要があります。 -
convert={outext=.png}
出力形式の指定です。デフォルトで.png
が指定されているため、基本的には不要だと思います。明示しているのは私の気分です。 -
convert={convertexe={magick}}
(必須) Windowsではこれを指定しないとエラーになります。このパラメータはconvert
またはimgconvert
が指定されるのですが、Win版ImageMagickの実行ファイル名はmagick
なのでこれを指定しないといけません。また、convert
はWindowsにおいてCONVERTコマンドを叩いてしまうため、忘れずに指定しましょう。 -
convert={command=...}
(ほぼ必須) ImageMagickの起動コマンドを指定します。ただし、commandをわざわざ変更する必要がなければconvert={imagemagick}
で十分だと思います。ただしその場合、デフォルトで背景が透過されます。背景を不透明白色にしたかったため、上記コードではImageMagickに渡す際に-alpha Remove -background white
オプションを追加で指定しています。
ドキュメントに書いてありますが、imagemagick
サブオプションは次のサブオプションと等価です
command=\unexpanded{{\convertexe\space -density \density\space \infile\space \ifx\size\empty\else -resize \size\fi\space -quality 90 \outfile}}
これをベースにいじればコマンド指定もそんなに怖くないと思います。\unexpanded{
を落としたりするとエラーになります。また、LaTexにおいて空白文字は大概無視されるので\space
で空白文字を指定するということを忘れなければ大丈夫です。
コンパイル
コンパイルは-shell-escape
さえ忘れなければ普通に実行できます。
> lualatex -shell-escape sample.tex
生成された画像の例が以下になります。これはextranatural transformationの公理図式の1つです。
追記
Windows セキュリティで「コントロールされたフォルダー アクセス」を有効にしている場合は、LaTeXやImageMagickを初めとして関連するアプリを忘れずに許可しておきましょう (n敗)。
参考リンク
standalone以外の方法もまとまっていて参考になります。(u)pLaTeX+dvipdfmxユーザーなんかはこっちの記事を見た方がいいかもしれません。