June 1, 2021

TeX2imgの環境構築についてのメモ

SVG吐けるようにするのがちょっっっっっとだけ手間

TeX2img

TeXのコードから画像を作るアプリケーション.数式やTikZの画像化によく使われるけどTeX文書ならなんでもいける.

TeX2img - TeX Wiki

図の例

これが

% tex2img/example.svg
\begin{tikzpicture}[scale=2.0, every node/.style={scale=2.0}]
    \tikzstyle{mynode}=[draw, circle, line width=1.5pt, minimum size=0.75cm]
    \node [mynode] (a) at (0, 0) {$a$};
    \node [mynode,fill=blue!20] (c) at (2, 0) {$c$};
    \node [mynode] (b) at (4, 0) {$b$};
    \draw [-latex, line width=1.0pt] (c) -- (a);
    \draw [-latex, line width=1.0pt] (c) -- (b);
\end{tikzpicture}

こうなる

img

環境構築

Windows 10でやった

本体のインストール

↓ここからダウンロードしてZIPを解凍

https://tex2img.tech/

解凍して出てきたフォルダにパスを通す.自分の場合は以下の場所に配置した:

C:\Users\<username>\Tools\TeX2img\TeX2img-2.2.1

tex2img.exeがGUI,tex2imgcがCLIのアプリケーション.

初回実行時はこんな感じになる:

$ tex2imgc

TeX 関連プログラムのパスを
 C:\texlive\2017\bin\win32\platex.exe
 C:\texlive\2017\bin\win32\pdftex.exe
 C:\texlive\2017\bin\win32\dvipdfmx.exe
 C:\texlive\2017\bin\win32\rungs.exe
 に設定しました。
 違っている場合は環境設定画面で手動で変更してください。

引数がありません。

使い方:: TeX2imgc.exe [Options] Input Output

  /latex=<VAL>             LaTeX のパス (現在:C:\texlive\2017\bin\win32\platex.exe)
  /dvidriver=<VAL>         DVI driver のパス (現在:C:\texlive\2017\bin\win32\dvipdfmx.exe)
  /pdftex=<VAL>            Set path for pdfTeX
  /gs=<VAL>                Ghostscript のパス (現在:C:\texlive\2017\bin\win32\rungs.exe)
  /oldgs[-]                9.14 以前の Ghostscript (現在:false)
  /kanji=<VAL>             文字コード(utf8/sjis/jis/euc/no) (現在:no)
  /guess-compile[-]        LaTeX ソースコンパイル回数を推定 (現在:true)
  /num=<NUM>               LaTeX ソースコンパイルの(最大)回数 (現在:10)
  /resolution=<NUM>        解像度レベル (現在:6)
  /left-margin=<NUM>       左余白 (現在:0)
  /top-margin=<NUM>        上余白 (現在:0)
  /right-margin=<NUM>      右余白 (現在:0)
  /bottom-margin=<NUM>     下余白 (現在:0)
  /margins=<VAL>           余白(一括/左右 上下/左 上 右 下)
  /unit=<VAL>              余白の単位(bp/px) (現在:px)
  /keep-page-size[-]       ページサイズを維持 (現在:false)
  /merge-output-files[-]   PDF / TIFF / SVG(Z) ファイルを単一ファイルに (現在:false)
  /animation-delay=<VAL>   アニメーションのディレイ(秒) (現在:1)
  /animation-loop=<VAL>    アニメーションのループ回数(0で無限) (現在:0)
  /background-color=<VAL>  背景色 指定例: FF0000 , red , "255 0 0" (現在:FFFFFF (White) 透過 or 白)
  /transparent[-]          透過 (現在:true)
  /with-text[-]            PDF / SVG(Z) のテキスト情報を保持 (現在:false)
  /delete-display-size[-]  SVG の表示寸法を削除 (現在:false)
  /antialias[-]            アンチエイリアス処理 (現在:true)
  /low-resolution[-]       低解像度で処理 (現在:false)
  /ignore-errors[-]        少々のエラーは無視 (現在:false)
  /delete-tmpfiles[-]      一時ファイルを削除 (現在:true)
  /preview[-]              生成ファイルを開く (現在:false)
  /embed-source[-]         ソース情報を生成ファイルに保存 (現在:true)
  /copy-to-clipboard[-]    生成ファイルをクリップボードにコピー (現在:false)
  /workingdir=<VAL>        作業ディレクトリ(tmp/file/current) (現在:tmp)
  /savesettings[-]         設定の保存を行う (現在:false)
  /quiet[-]                Quiet モード (現在:false)
  /timeout=<NUM>           タイムアウト時間を設定(秒) (現在:10 秒)
  /batch=<VAL>             Batch モード(stop/nonstop) (現在:deafult)
  /exit                    設定の保存のみを行い終了する
  /load-defaults           現在の設定をデフォルトに戻す
  /help                    このメッセージを表示する
  /version                 バージョン情報を表示する
  /language=<VAL>          Language (system/ja/en)

コマンドの例

今回書いたspam.texはこんな内容 (GUIの場合はプリアンブルの記述は「プリアンブル設定ウインドウ」から行う):

\documentclass[fleqn,papersize,dvipdfmx]{jsarticle}
\usepackage{amsmath,amssymb}
\usepackage{color}
\pagestyle{empty}

\begin{document}

\[
    \sin^2 \theta + \cos^2 \theta = 1
\]

\end{document}

背景透過,出力ファイルにソースの埋め込み,ログ無しでPDF出力.

tex2imgc /transparent /embed-source /quiet spam.tex spam.pdf

ソースを埋め込んだ出力ファイルをTeX2imgのGUIにドラッグ&ドロップするとそのソースを復元することも可能(プリアンブルとかは消える).

SVGの出力を有効にする

本体のインストール後,そのままtex2imgcでSVGを出そうとすると以下のようなエラーで怒られる:

spam.svg: ファイルの拡張子が不正です。

SVGも機能に入ってるのになんでだろうと思いつつGUIから同じことしようとしたら原因がわかった:

img

どうやらMuPDFを入れればいいらしい. OSごとのインストール方法はTeX Wikiが詳しい:

MuPDF - TeX Wiki

mutool.exeはパスを通すだけではダメで,tex2img.exeと同じフォルダに置いてある必要がある. さすがにバイナリの配置を動かすのは嫌だったのでシンボリックリンクで対処した:

mklink mutool.exe <mutool.exeまでの絶対パス>\mutool.exe

mklinkはWindowsでは管理者権限が必要なことと他のOSと引数の順序が逆であることに注意.

おまけ:埋め込みソースについて

/embed-sourceの原理が気になってTeX2imgのソースをざっと確認したところ, 代替データストリーム(Alternative Data Stream: ADS)として保存されていることがわかった.

ADSについてはこの記事が詳しい:

代替データストリーム(ADS)について色々調べてみた - Qiita

Windowsなら

dir /r

でADSも含めたファイルの一覧を見られる. また,普通にテキストエディタで開ける:

gvim spam.svg:TeX2img.source:$DATA
\documentclass[fleqn,papersize,dvipdfmx]{jsarticle}
\usepackage{amsmath,amssymb}
\usepackage{color}
\pagestyle{empty}

\begin{document}

\[
    \sin^2 \theta + \cos^2 \theta = 1
\]

\end{document}

プリアンブルの情報もちゃんと残っている.

© eqs 2021