\newif\ifNTT\NTTfalse
\ifx\gtfam\undefined\ifx\gtfamily\undefined\NTTtrue\fi\fi
\ifNTT\documentclass[]{j-article}
\else\documentclass[12pt,a4j]{jarticle}\fi
\setcounter{secnumdepth}{6}
\setcounter{tocdepth}{6}
\topsep=0.1cm
\parsep=0.1cm
\itemsep=0.0cm
\parindent=0pt
\font\xxx cmtt10
\begin{document}
\begin{center}
\Large\bfseries upmendex - 索引整形ツール 
\end{center}
\medskip
\par
\textbf{使用法}
\medskip
\par
{\xxx
upmendex [-ilqrcg] [-s sty] [-d dic] [-o ind] [-d dic] [-t log] [-p no] [--] [idx0 idx1 idx2 ...]
}
\medskip
\medskip
\par
\textbf{解説}
\medskip
\par
upmendex は文書の索引を作成するツールです。 LaTeX により抽出された索引リストファ
イル(.idx)を並べ替え、実際の索引のソースファイルの形に整形します。makeindex と互
換性があり、さらに「読み」の扱いの手間を減らすように特殊化されています。
\par
出力される索引の形式は、スタイルファイルに従って決定されます。また、辞書ファイ
ルを与えることにより、索引中の熟語の読みが登録されます。
\par
索引の階層は３段階まで作成することができます。
\medskip
\medskip
\par
\textbf{オプション}
\medskip
\begin{itemize}
\item \verb|-i|      索引リストファイルが指定されている場合でも、標準入力を索引リストとし
\par
て使用します。
\medskip
\item \verb|-l|     索引のソートを文字順で行います。指定されなければ単語順のソートになり
\par
ます(ソート方法については後述)。
\medskip
\item \verb|-q|      静粛モードです。エラーおよび警告以外は標準エラー出力に出力しません。
\medskip
\item \verb|-r|      ページ範囲表現を無効にします。指定しないと、連続して出てくる索引につ
\par
いては "1--5" のようにページ範囲で表現されます。
\medskip
\item \verb|-c|      スペースやタブといったブランクを短縮して、すべて１個の半角スペースに
\par
します。また、前後のブランクは削除されます。
\medskip
\item \verb|-g|      日本語の頭文字の区切りを "あかさた・・・わ" にします。指定しないと
\par
"あいうえ・・・わをん" になります。
\medskip
\item \verb|-f|      辞書ファイルにない漢字も強制的に出力するモードです。
\medskip
\item \verb|-s| sty  sty ファイルをスタイルファイルと見なします。スタイルファイルを指定し
\par
なければ、デフォルトの索引形式で作成します。
\medskip
\item \verb|-d| dic  dic ファイルを辞書ファイルと見なします。辞書ファイルは日本語の
\par
$<$熟語 読み$>$ のリストで構成されます。
\medskip
\item \verb|-o| ind  ind ファイルを出力ファイルと見なします。指定がない場合は最初の入力
\par
ファイルの拡張子を.indとしたもの、入力ファイルが標準入力のみであれば
標準出力に出力します。
\medskip
\item \verb|-t| log  log ファイルをログファイルと見なします。指定がない場合は最初の入力
\par
ファイルの拡張子を.ilgとしたもの、入力ファイルが標準入力のみであれば
標準エラー出力のみに出力されます。
\medskip
\item \verb|-p| no   no を索引ページの先頭ページとして指定します。また、TeXの.log ファイル
\par
を参照することにより any (最終ページの次のページから)、odd (最終ペー
ジの次の奇数ページから)、even (最終ページの次の偶数ページから)といっ
た指定も可能です。
\medskip
\item \verb|--|      以降はオプション文字列と解釈しません。
\end{itemize}
\clearpage
\textbf{スタイルファイル}
\medskip
\par
スタイルファイルは makeindex のものと上位互換です。 形式は
$<$スタイルパラメータ 引数$>$ のリストで構成されます。パラメータの順序は自由です。
\par
以下にスタイルパラメータの一覧を示します。
`\%'以降はコメントと見なされます。
\medskip
\par
\textbf{入力ファイルスタイルパラメータ}
\par
keyword  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$$\backslash$indexentry"
\par
索引エントリを引数として持つコマンド。
\endlist}
\medskip
\par
arg\_open  $<$文字$>$
{\list{}{\leftmargin=6ex}\item[]
\par
'\{'
\par
索引エントリ文字列開始を表す文字。
\endlist}
\medskip
\par
arg\_close  $<$文字$>$
{\list{}{\leftmargin=6ex}\item[]
\par
'\}'
\par
索引エントリ文字列終了を表す文字。
\endlist}
\medskip
\par
range\_open  $<$文字$>$
{\list{}{\leftmargin=6ex}\item[]
\par
'('
\par
ページ範囲の開始を示す文字。
\endlist}
\medskip
\par
range\_close  $<$文字$>$
{\list{}{\leftmargin=6ex}\item[]
\par
')'
\par
ページ範囲の終了を示す文字。
\endlist}
\medskip
\par
level  $<$文字$>$
{\list{}{\leftmargin=6ex}\item[]
\par
'!'
\par
従属レベルであることを示す文字。
\endlist}
\medskip
\par
actual  $<$文字$>$
{\list{}{\leftmargin=6ex}\item[]
\par
'@'
\par
このシンボルに続く文字列が実際の索引文字列として出力ファイルに書かれる。
\endlist}
\medskip
\par
encap  $<$文字$>$
{\list{}{\leftmargin=6ex}\item[]
\par
'$|$'
\par
このシンボルに続く文字列が、ページ番号に付くコマンド名として使われる。
\endlist}
\medskip
\par
page\_compositor  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"-"
\par
階層化されたページ番号における階層間の区切り文字。
\endlist}
\medskip
\par
page\_precedence  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"rnaRA"
\par
ページ番号の記法の優先順位。'R'および'r'はローマ数字、'n'はアラビア数字、
'A'および'a'はアルファベットによる記法を表す。
\endlist}
\medskip
\par
quote  $<$文字$>$
{\list{}{\leftmargin=6ex}\item[]
\par
'\verb|"|'
\par
upmendex のパラメータ文字に対するエスケープキャラクタ。
\endlist}
\medskip
\par
escape  $<$文字$>$
{\list{}{\leftmargin=6ex}\item[]
\par
'$\backslash$$\backslash$'
\par
一般的な文字に対するエスケープキャラクタ。
\endlist}
\medskip
\par
\textbf{出力ファイルスタイルパラメータ}
\medskip
\par
preamble  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$$\backslash$begin\{theindex\}$\backslash$n"
\par
出力ファイルの文字列。
\endlist}
\medskip
\par
postamble  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n$\backslash$n$\backslash$$\backslash$end\{theindex\}$\backslash$n"
\par
出力ファイルの末尾の文字列。
\endlist}
\medskip
\par
setpage\_prefix  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n  $\backslash$$\backslash$setcounter\{page\}\{"
\par
開始ページを設定するときの、ページ番号の前に付ける文字列。
\endlist}
\medskip
\par
setpage\_suffix  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"\}$\backslash$n"
\par
開始ページを設定するときの、ページ番号の後に付ける文字列。
\endlist}
\medskip
\par
group\_skip  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n$\backslash$n  $\backslash$$\backslash$indexsapce$\backslash$n"
\par
新項目(頭文字)の前に挿入する縦スペースを表す文字列。
\endlist}
\medskip
\par
lethead\_prefix  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
\verb|""|
\par
頭文字の前に付けるコマンド文字列。
\endlist}
\medskip
\par
heading\_prefix  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
\verb|""|
\par
lethead\_prefixと同じ。
\endlist}
\medskip
\par
lethead\_suffix  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
\verb|""|
\par
頭文字の後に付けるコマンド文字列。
\endlist}
\medskip
\par
heading\_suffix  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
\verb|""|
\par
lethead\_suffixと同じ。
\endlist}
\medskip
\par
lethead\_flag  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
0
\par
頭文字の出力のフラグ。0のとき出力しない。0より大きいときは英字を大文字で、
0より小さいときは小文字で出力する。
\endlist}
\medskip
\par
heading\_flag  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
0
\par
lethead\_flagと同じ。
\endlist}
\medskip
\par
item\_0  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n  $\backslash$$\backslash$item "
\par
主エントリ間に挿入するコマンド。
\endlist}
\medskip
\par
item\_1  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n     $\backslash$$\backslash$subitem "
\par
サブエントリ間に挿入するコマンド。
\endlist}
\medskip
\par
item\_2  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n       $\backslash$$\backslash$subsubitem "
\par
サブサブエントリ間に挿入するコマンド。
\endlist}
\medskip
\par
item\_01  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n    $\backslash$$\backslash$subitem "
\par
主〜サブエントリ間に挿入するコマンド。
\endlist}
\medskip
\par
item\_x1  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n    $\backslash$$\backslash$subitem "
\par
主〜サブエントリ間に挿入するコマンド。(主エントリにページ番号がないとき)
\endlist}
\medskip
\par
item\_12  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n    $\backslash$$\backslash$subsubitem "
\par
サブ〜サブサブエントリ間に挿入するコマンド。
\endlist}
\medskip
\par
item\_x2  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$n    $\backslash$$\backslash$subsubitem "
\par
サブ〜サブサブエントリ間に挿入するコマンド。(サブエントリにページ番号が
ないとき)
\endlist}
\medskip
\par
delim\_0  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
", "
\par
主エントリと最初のページ番号の間の区切り文字列。
\endlist}
\medskip
\par
delim\_1  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
", "
\par
サブエントリと最初のページ番号の間の区切り文字列。
\endlist}
\medskip
\par
delim\_2  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
", "
\par
サブサブエントリと最初のページ番号の間の区切り文字列。
\endlist}
\medskip
\par
delim\_n  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
", "
\par
ページ番号間の区切り文字列。どのエントリレベルにも共通。
\endlist}
\medskip
\par
delim\_r  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"\verb|--|"
\par
ページ範囲を示すときの、ページ番号間の区切り文字列。
\endlist}
\medskip
\par
delim\_t  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
\verb|""|
\par
ページ番号のリストの終端に出力する文字列。
\endlist}
\medskip
\par
suffix\_2p  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
\verb|""|
\par
ページ番号が2ページ連続する場合に、delim\_n と2ページ目の番号の代わりに
付加する文字列。
文字列が定義されている場合にのみ有効。
\endlist}
\medskip
\par
suffix\_3p  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
\verb|""|
\par
ページ番号が3ページ連続する場合に、delim\_r と3ページ目の番号の代わりに
付加する文字列。suffix\_mp より優先される。
文字列が定義されている場合にのみ有効。
\endlist}
\medskip
\clearpage
suffix\_mp  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
\verb|""|
\par
ページ番号が3ページまたはそれ以上連続する場合に、delim\_r と末尾のページ
番号の代わりに付加する文字列。
文字列が定義されている場合にのみ有効。
\endlist}
\medskip
\par
encap\_prefix  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$$\backslash$"
\par
ページ番号にコマンドを付けるときの、コマンド名の前に付ける文字列。
\endlist}
\medskip
\par
encap\_infix  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"\{"
\par
ページ番号にコマンドを付けるときの、ページ番号の前に付ける文字列。
\endlist}
\medskip
\par
encap\_suffix  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"\}"
\par
ページ番号にコマンドを付けるときの、ページ番号の後に付ける文字列。
\endlist}
\medskip
\par
line\_max  $<$数値$>$
{\list{}{\leftmargin=6ex}\item[]
\par
72
\par
1行の最大文字数。それを超えると折り返す。
\endlist}
\medskip
\par
indent\_space  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"$\backslash$t$\backslash$t"
\par
折り返した行の頭に挿入するスペース。
\endlist}
\medskip
\par
indent\_length  $<$数値$>$
{\list{}{\leftmargin=6ex}\item[]
\par
16
\par
折り返した行の頭に挿入されるスペースの長さ。
\endlist}
\medskip
\par
symhead\_positive  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"Symbols"
\par
lethead\_flag または heading\_flag が正数の場合に数字・記号の頭文字として
出力する文字列。
\endlist}
\medskip
\par
symhead\_negative  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"symbols"
\par
lethead\_flag または heading\_flag が負数の場合に数字・記号の頭文字として
出力する文字列。
\endlist}
\medskip
\par
symbol  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
\verb|""|
\par
symbol\_flag が0でない場合に、数字・記号の頭文字として出力する文字列。
文字列が定義されていれば、symhead\_positive および symhead\_negative より
優先される。((up)mendex専用)
\endlist}
\medskip
\par
symbol\_flag  $<$数値$>$
{\list{}{\leftmargin=6ex}\item[]
\par
1
\par
symbol の出力フラグ。0のとき出力しない。((up)mendex専用)
\endlist}
\medskip
\par
letter\_head  $<$数値$>$
{\list{}{\leftmargin=6ex}\item[]
\par
1
\par
日本語の頭文字の出力のフラグ。0のとき出力しない。1のときカタカナ、2のとき
ひらがなで出力する。((up)mendex専用)
\endlist}
\medskip
\par
character\_order  $<$文字列$>$
{\list{}{\leftmargin=6ex}\item[]
\par
"SNLGCJ"
\par
記号、英字、日本語の優先順位。'S'は記号、'N'は数字、'L'はラテン文字、
'G'はギリシャ文字、'C'はキリル文字、'J'は日本語(かな)を表す。
(upmendex専用)
\endlist}
\medskip
\medskip
\par
\textbf{日本語の扱いについて}
\medskip
\par
upmendex は日本語の索引をできるだけ楽に扱えるようになっています。
makeindex では日本語の索引が正しく辞書順にソートするためにはひらがなまたはカタ
カナに揃え、拗音、撥音、濁点を除いた読みを付けなければなりませんでした(自動的に
揃えるバージョンもある)。
\par
upmendex ではカナについてはInternational Components for Unicode (ICU)による
ソートを行います。また漢字については辞書ファイルを設定することにより各索引語ごと
に読みを付ける作業をかなり解消できます。
\medskip
\par
辞書ファイルは $<$熟語  読み$>$ のリストで構成されます。熟語と読みの区切りはタブま
たはスペースです。
\medskip
\par
以下に辞書の例を示します。
\medskip
~\\
\mbox{}{\list{}{\leftmargin=1ex}\item[]
\begin{tabular}{ll}
漢字 & かんじ\\
読み & よみ\\
環境 & かんきょう\\
α   & アルファ\\
\end{tabular}\\
\mbox{}\endlist}
\medskip
\par
辞書に登録する熟語は、読み方が1通りになるよう送り仮名を付けてください。
「表」、「性質」のように送り仮名によらず2通りの読み方ができる語についてはどち
らか1つしか登録できません。他の読み方については各索引語へ読みを付けることで対応
してください。
\par
また、環境変数 INDEXDEFAULTDICTIONARY に辞書ファイルを登録することにより、
自動的に辞書を参照します。環境変数に登録した辞書は -d で指定した辞書と併用できま
す。
\medskip
\medskip
\par
\textbf{ソート方法について}
\medskip
\par
upmendex は通常は入力された索引語をそのままソートします。-l オプションが付けられ
た場合、複数の単語で構成される索引語については、ソートするときに単語と単語の間の
スペースを詰めてソートします。
\par
ここでは前者を単語順ソート、後者を文字順ソートと呼ぶことにします。
文字順ソートの場合、実際に出力される文字列はスペースを含んだ状態のものなので、
索引語自体が変化することはありません。
\medskip
\par
以下に例を示します。
\medskip
\par
単語順ソート        文字順ソート
{\par\baselineskip=10pt
\begin{verbatim}
    X Window            Xlib
    Xlib                XView
    XView               X Window
\end{verbatim}}
\medskip
\medskip
\par
\textbf{環境変数}
\medskip
\par
upmendex では以下のような環境変数を使用しています。
\medskip
\par
INDEXSTYLE
{\list{}{\leftmargin=6ex}\item[]
\par
索引スタイルファイルがあるディレクトリ
\endlist}
\medskip
\par
INDEXDEFAULTSTYLE
{\list{}{\leftmargin=6ex}\item[]
\par
デフォルトで参照する索引スタイルファイル
\endlist}
\medskip
\par
INDEXDICTIONARY
{\list{}{\leftmargin=6ex}\item[]
\par
辞書があるディレクトリ
\endlist}
\medskip
\par
INDEXDEFAULTDICTIONARY
{\list{}{\leftmargin=6ex}\item[]
\par
常に参照する辞書ファイル
\endlist}
\medskip
\medskip
\par
\textbf{詳細について}
\medskip
\par
その他、仕様の詳細については makeindex と同じです。
\medskip
\medskip
\par
\textbf{問題点等}
\medskip
\par
複数のページ記法を使用する場合、ページ順に.idxファイルを与えないとページ番号を
誤認することがあります。
\medskip
\medskip
\par
参考
\medskip
\par
International Components for Unicode (ICU)
http://site.icu-project.org/
\end{document}
