なんだこれは

はてなダイアリーから移転しました。

最後に説明

\documentclass[12pt]{jarticle}
% Time-stamp: <05/09/26 06:31:37 fu7mu4>
\usepackage{amsmath,amssymb}%マクロはheadder(プレアンブル)にのみ書くこと
\newcommand{\CreOp}[1]{\mbox{$ C_{#1}^{\dagger} $}}
\newcommand{\DesOp}[1]{\mbox{$ C_{#1} $}}
\addtolength{\headheight}{-3cm}
\addtolength{\textheight}{4cm}
\author{ふなむし}
\date{\today}
\title{mkimg tool の使い方}
\begin{document}
\maketitle
\section{mkimg toolとは}

{\rmfamily mkimg tool}(以下tool)とは、\TeX のソースコードから、文中式環境
\$$\dots$\$をのぞく、数式環境部分をそれぞれ透過gif/png画像に変えるための
perl-scriptとbash-scriptの集合体。\TeX のコンパイルにはplatexを画像の変
換にはdvips convert(ImageMagick)を呼び出す。複数の\TeX ファイルから999こ
までの画像ファイルに変換できます、たぶん。

これは数式環境しかplatexにはわたらないはずだが、数式環境に使われる文字コー
ドに\TeX ファイルが対応していないとエラーを返すかも。

\subsection{mkimg toolの構成}

{\rmfamily tool}は以下のファイルで構成されています。

\begin{description}
 \item[cutter] perlscript \TeX のソースからheadder(プレアンブル)と各々の
	    数式環境を切り出す。   
 \item[dot.eq2img] eq2imgの設定ファイル。\verb|~/.eq2img|に置く。 
 \item[eq2img] bashscript headderと数式環境部分からplatex,dvips,convert
	    を使ってgif/pngファイルを生成する。 
 \item[mkimg] bashscript cutterとeq2imgのwrapper。基本的にこれを使えば良
	    い。
 \item[readme.tex] このマニュアル兼サンプルファイル。 
\end{description}

\subsection{入出力ファイルと中間ファイル}

入力ファイルには複数の\TeX ファイルを用いる。これらから、\verb|$|\verb|$$|に挟まれたもの以外の数式環境ごとの数式ファイルeqpartNUM (NUMは自
然数)と共通のheadderファイルが生成され、さらに、dvipsを経由して、数式ごと
のEPS形式のファイルに、gifまたはpngファイルが生成される。ただし、出力ファ
イルは番号をつけ直す(1から始まる自然数または零を付加したファイル用番号付
け001,002,...)関係上、999個までしか生成できない。

数式ファイルとEPS形式ファイルは中間ファイルであり、自動で消すことも可能。

\section{mkimg}

{\rmfamily mkimg}は与えられた引数のうち可読ファイルをtexファイルと判断し、
{\rmfamily cutter}を用いて分割して、{\rmfamily eq2img}に渡してgif/pngを生
成します。したがって、{\rmfamily cutter}{\rmfamily eq2img}が使用可能で
なければ動作しない。

ファイル名変更のため、1000以上の数式環境は処理されません。

{\rmfamily mkimg}は多数のオプションがあり、それらは{\rmfamily eq2img}の
オプションを生成しています。

\subsection{mkimgのオプション}

mkimgの対応オプションリスト。大半のオプションはそのまま、eq2imgに渡され
て処理する。指定なき場合は設定ファイルか、システム規定値に従い、エラーに
なることはない。

\begin{description}
 \item[-h] mkimgのヘルプの表示と終了。mkimgのみオプション。  
 \item[-v] mkimgのversionの表示と終了。mkimgのみオプション。  
 \item[-0] gif/pngファイルの番号に0を加えて3桁にする。mkimgのみオプション。  
 \item[-x] gif/pngファイルの番号に0を加えない。mkimgのみオプション。  
 \item[-e] EPSファイルを残す。
 \item[-ne] EPSファイルを消す。
 \item[-q] 数式ファイルを残す。
 \item[-nq] 数式ファイルを消す。
 \item[-m] eq2imgの些細なメッセージを表示する。プロセスIDなど。
 \item[-nm] 表示しない 
 \item[-w] eq2imgの警告またはエラーメッセージを表示する。
 \item[-nw] 表示しない
 \item[-i] 数式ファイルが空の場合の書き込みを許可する。入力待ちがある。 
 \item[-ni] 数式ファイルが空の場合の書き込みを許可しない。入力待ちはなく、
	    次のファイルに処理が移る。 
 \item[-g] 画像形式をgifに指定
 \item[-p] 画像形式をpngに指定 
 \item[-c color] 文字色を指定色にする 
 \item[-hf file] headderファイルを指定。defaultはheadderでcutterに対応済
 \item[-of file] 出力ファイルを指定。eq2imgは単一ファイルにのみ対応して
	    いるので、mkimgとeq2imgでは意味が異なる。出力ファイル名は
	    {\itshape file}数.gifまたは.pngになる。
 \end{description}

UNIX流にかけば、{\bfseries mkimg} \{{\itshape texfile1.tex} [{\itshape
texfile2.tex}..]  [-0$\mid$-x] [-e$\mid$-ne] [-i$\mid$-ni] [-q$\mid$-nq]
[-m$\mid$-nm] [-w$\mid$-nw] [-q$\mid$-p] [-c {\itshape color}] [-hf
{\itshape headderfile}] [-of {\itshape output}] $\mid$ -h $\mid$ -v \}
 
具体的には、mkimg {\itshape readme.tex} -0 -ni -ne -nq -nw -nm -g -of
{\itshape test} などで同種のものは後ろが上書きするが、それ以外の順番は影
響しない。これでtest001.gif ... test007.gifが生成される。

\section{cutter設定}

このファイルはperlなので、実行可能にし、perlのパスが、
\verb|/usr/bin/perl|と異なっていれば訂正する。

\subsection{cutter単独使用法}

cutterは単独でも使用可能。標準入力でも、ファイルを与えても読み込
みます。この際、余分な部分が標準出力されるが無視するか、\verb|/dev/null|
にリダイレクト。

\begin{center}
 cutter.pl hogehoge.tex \verb|> /dev/null|
\end{center}

このとき、headderファイルと多数のeqpartファイル(連番)が生成される。この
readme.texを処理すると、eqpart1 ... eqpart7 の7個のファイルが作成される。

{\rmfamily 単純に行単位で数式環境を検索しているために、同じ行に数式環境
のbeginまたはendが複数あれば正しく処理できません。}

\section{eq2img設定}

{\rmfamily ea2img}のオプションは設定ファイル\verb|~/.eq2img|または内部既
定値によって決まる。これらの優先順位はオプション$>$設定ファイル$>$内部規
定値の順である。

\subsection{eq2img単独使用法}

eq2imgも単独で動作する。eq2imgにファイル名を与えると、可読ならば数式部分
だと仮定して、headderを加えて、dvipsを起動し、convertで透明gifまたはpngに
変換します。可読でなければ、readを用いて、TeXのコードを時か入力できる。
ただし、これは、-niなどのオプションで禁止されていなければのはなしである。

\subsection{eq2imgのオプション}

eq2igfの対応オプションリスト。{\rmfamily ea2img}のオプションは設定ファイ
ル\verb|~/.eq2img|または内部既定値によって決まる。常にオプションが優先さ
れる。

\begin{description}
 \item[-h] eq2imgのヘルプの表示と終了。
 \item[-v] eq2imgのversionの表示と終了。
 \item[-batch] platexをbatchモードにする。
 \item[-nonstop] platexをnonstopモードにする。 
 \item[-e] Enhanced PostScriptファイルを残す。
 \item[-ne] Enhanced PostScriptファイルを消す。
 \item[-q] 数式ファイルを残す。
 \item[-nq] 数式ファイルを残す。
 \item[-m] eq2imgの些細なメッセージを表示する。プロセスIDなど。
 \item[-nm] 表示しない 
 \item[-w] eq2imgの警告またはエラーメッセージを表示する。
 \item[-nw] 表示しない
 \item[-i] 数式ファイルが空の場合の書き込みを許可する。入力待ちがある。 
 \item[-ni] 数式ファイルが空の場合の書き込みを許可しない。入力待ちはなく、
	    次のファイルに処理が移る。 
 \item[-g] 画像形式をgifとする。 
 \item[-p] 画像形式をpngとする。 
 \item[-c color] 文字色を指定色にする 
 \item[-hf file] headderファイルを指定。defaultはheadderでcutterに対応済
 \item[-of file] 出力ファイルを変更指定。標準は入力ファイル名と同じで拡
	    張子がgifまたはpng。eq2imgは単一ファイルにのみ対応して
	    いるので、mkimgとeq2imgでは意味が異なる。出力ファイル名は
	    {\itshape file}.gif/pngになる。
 \end{description}

具体的には、eq2img {\itshape eqpartx} -g -ni -ne -nq -nw -nm -of test

\subsection{cutterの切り分けの詳細}

\TeX のソースコードの切り分けの時点で、パーセント文字以下はすべて除去さ
れます。これにはエスケープ処理はありません。また、labelやtagといったもの
も除去します。また、includeなども無視されます。尚、行番号の除去のため、
環境を置換します。また、eqpartファイルの番号は読み込み順なので、複数ファ
イルを読み込ませる場合は注意が必要です。

amsmath packageの数式環境にも対応しています。

対応環境リスト

\begin{enumerate}
 \item equation環境とその$\ast$付加と$\backslash$[$\dots$ $\backslash$]
 \item eqnarray環境とその$\ast$付加
 \item gather環境とその$\ast$付加
 \item align環境とその$\ast$付加
 \item alignat環境とその$\ast$付加
 \item multline環境とその$\ast$付加
\end{enumerate}

eqpartファイルからtexファイル作成時にページ数無表示にするために、
\verb|\pagestyle{empty}| をheadderに加えます。

\TeX のマクロ定義はpreambleに書いておけば処理することが可能です。

\subsection{制限事項}

行単位の読み込みのため、同一行に複数の数式環境の開始と終了があると、正し
く処理できません。

\verb|verb|コマンド等での\TeX コマンド無効化には対応していません。

文中式は対応していません

1000以上の数式部分ファイルはmkimgで処理できません。

\section{サンプル}

equation環境の例。\ref{labeltest}のlabelも除去される。通常の数式例これは
プレアンブルで定義したマクロを使用している。文字の大きさの変更はしない方
がよい。

\begin{equation}
\Huge \hat{H}=\sum_k \CreOp{k}\DesOp{k} \label{labeltest}
\end{equation}

\verb|\nonumber|は番号なし数式環境(equation)でもエラーにならないのでその
まま

\begin{equation}
 \hat{H}=\sum_k \CreOp{k}\DesOp{k} \nonumber
\end{equation}

もちろんこの環境$\backslash$\verb|[|$\dots$ $\backslash$\verb|]|にも対応

\[
 \hat{H}=\sum_k \CreOp{k}\DesOp{k}
\]

番号無しequation環境は$\backslash$\verb|[|$\dots$ $\backslash$\verb|]|に
変換される。j\LaTeX を配慮している。ただし、j\LaTeX をcallするにはオプショ
ンはない。

\begin{equation*}
 \hat{H}=\sum_k \CreOp{k}\DesOp{k}
\end{equation*}

複数書かなければ
\[ \hat{H}=\sum_k \CreOp{k}\DesOp{k} \]
は読み込まれる。

パーセント以下のコメントは除去されるので
処理したくない数式環境はコメントアウトでよい。

%\begin{equation}
% 1+2+3+4+5+6+7+8+9=45
%\end{equation}


変なところに書いた文は\begin{eqnarray}
 (1+x)^2 &=& 1 + 2x + x^2 \\
 (1+x)^3 &=& 1 + 3x + 3x^2 + x^3 \nonumber \\
 (1+x)^4 &=& 1 + 4x + 6x^2 + 4x^3 + x^4
\end{eqnarray}除去される

もちろん、AMSのpackageを用いた、align環境の方が空白の処理がきれい。

\begin{align}
 (1+x)^2 &= 1 + 2x + x^2 \\
 (1+x)^3 &= 1 + 3x + 3x^2 + x^3 \nonumber \\
 (1+x)^4 &= 1 + 4x + 6x^2 + 4x^3 + x^4
\end{align}

\subsection{指定色について}

この指定色はImageMagickにほぼ直接渡すので、英語(すべて小文字)で与えれば、
だいたいの色が指定できる。推奨。black,white,yellow,red,blue,wheat,...また、
RGB16進数で与えることも可能なはず。\# rgb \# rrggbb \# rrrrggggbbb
(r,g,bは0-f のいずれか)。それ以外にもcmykもサポートしている。dot.eq2imgの
末尾参照。

詳細はImageMagickをしらべよ。

\end{document}