TeX2img
TeXのコードから画像を作るアプリケーション.数式やTikZの画像化によく使われるけどTeX文書ならなんでもいける.
図の例
これが
% 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}
こうなる
環境構築
Windows 10でやった
本体のインストール
↓ここからダウンロードしてZIPを解凍
解凍して出てきたフォルダにパスを通す.自分の場合は以下の場所に配置した:
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から同じことしようとしたら原因がわかった:
どうやらMuPDFを入れればいいらしい. OSごとのインストール方法は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}
プリアンブルの情報もちゃんと残っている.