1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[LaTeX/Win11] TikZ+standaloneで可換図式のpngを作る

Last updated at Posted at 2022-10-19

必要があって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割くらいは役に立ちません。必要な場合は別途頑張ってください (丸投げ)。

作成手順

文書作成

実際のコードが以下のようになります。

sample.tex
\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つです。
extranatural1.png

追記

Windows セキュリティで「コントロールされたフォルダー アクセス」を有効にしている場合は、LaTeXやImageMagickを初めとして関連するアプリを忘れずに許可しておきましょう (n敗)。

参考リンク

standalone以外の方法もまとまっていて参考になります。(u)pLaTeX+dvipdfmxユーザーなんかはこっちの記事を見た方がいいかもしれません。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?