## 名称

mendex - 索引整形ツール

## 使用法

mendex [-ilqrcgEJS] [-s sty] [-d dic] [-o ind] [-d dic] [-t log] [-p no] [-I enc] [ idx0 idx1 idx2 ...]

## 解説

mendex は文書の索引を作成するツールです。 LaTeX により抽出された索引リストファイル(.idx)を並べ替え、実際の索引のソースファイルの形に整形します。 makeindex と互換性があり、さらに「読み」の扱いの手間を減らすように特殊化されています。

出力される索引の形式は、スタイルファイルに従って決定されます。また、辞書ファイルを与えることにより、索引中の熟語の読みが登録されます。

索引の階層は３段階まで作成することができます。

## オプション

-i 索引リストファイルが指定されている場合でも、標準入力を索引リストとして使用します。

-l 索引のソートを文字順で行います。指定されなければ単語順のソートになります(ソート方法については後述)。

-q 静粛モードです。エラーおよび警告以外は標準エラー出力に出力しません。

-r ページ範囲表現を無効にします。指定しないと、連続して出てくる索引については "1--5" のようにページ範囲で表現されます。

-c スペースやタブといったブランクを短縮して、すべて１個の半角スペースにします。また、前後のブランクは削除されます。

-g 日本語の頭文字の区切りを "あかさた・・・わ" にします。指定しないと "あいうえ・・・わをん" になります。

-f 辞書ファイルにない漢字も強制的に出力するモードです。

-s sty sty ファイルをスタイルファイルと見なします。スタイルファイルを指定しなければ、デフォルトの索引形式で作成します。

-d dic dic ファイルを辞書ファイルと見なします。辞書ファイルは日本語の <熟語 読み> のリストで構成されます。

-o ind ind ファイルを出力ファイルと見なします。指定がない場合は最初の入力ファイルの拡張子を.indとしたもの、入力ファイルが標準入力のみであれば標準出力に出力します。

-t log log ファイルをログファイルと見なします。指定がない場合は最初の入力ファイルの拡張子を.ilgとしたもの、入力ファイルが標準入力のみであれば標準エラー出力のみに出力されます。

-p no no を索引ページの先頭ページとして指定します。また、TeXの.log ファイルを参照することにより any(最終ページの次のページから)、odd(最終ページの次の奇数ページから)、even(最終ページの次の偶数ページから)といった指定の仕方も可能です。

-E 漢字コードをEUCに指定します。入力ファイル、出力ファイルともEUCとして扱います。

-J 漢字コードをJISに指定します。入力ファイル、出力ファイルともJISとして扱います。

-S 漢字コードをShiftJISに指定します。入力ファイル、出力ファイルともShiftJISとして扱います。

-U 漢字コードをUTF-8に指定します。入力ファイル、出力ファイルともUTF-8として扱います。

-I enc 内部バッファのコードをenc に指定します。enc には euc(EUC-JP) または utf8(UTF-8)が指定可能です。

## スタイルファイル

スタイルファイルは makeindex のものと上位互換です。 形式は <スタイルパラメータ 引数> のリストで構成されます。パラメータの順序は自由です。 以下にスタイルパラメータの一覧を示します。 `%'以降はコメントと見なされます。

入力ファイルスタイルパラメータ

keyword <文字列> "\\indexentry"

索引エントリを引数として持つコマンド。

arg_open <文字> ´{´

索引エントリ文字列開始を表す文字。

arg_close <文字> ´}´

索引エントリ文字列終了を表す文字。

range_open <文字> ´(´

ページ範囲の開始を示す文字。

range_close <文字> ´)´

ページ範囲の終了を示す文字。

level <文字> ´!´

従属レベルであることを示す文字。

actual <文字> ´@´

このシンボルに続く文字列が実際の索引文字列として出力ファイルに書かれる。

encap <文字> ´|´

このシンボルに続く文字列が、ページ番号に付くコマンド名として使われる。

page_compositor <文字列> "-"

階層化されたページ番号における階層間の区切り文字。

page_precedence <文字列> "rnaRA"

ページ番号の記法の優先順位。´R´および´r´はローマ数字、´n´はアラビア数字、´A´および´a´はアルファベットによる記法を表す。

quote <文字> ´"´

mendexのパラメータ文字に対するエスケープキャラクタ。

escape <文字> ´\\´

一般的な文字に対するエスケープキャラクタ。

出力ファイルスタイルパラメータ

preamble <文字列> "\\begin{theindex}\n"

出力ファイルの文字列。

postamble <文字列> "\n\n\\end{theindex}\n"

出力ファイルの末尾の文字列。

setpage_prefix <文字列> "\n \\setcounter{page}{"

開始ページを設定するときの、ページ番号の前に付ける文字列。

setpage_suffix <文字列> "}\n"

開始ページを設定するときの、ページ番号の後に付ける文字列。

group_skip <文字列> "\n\n \\indexsapce\n"

新項目(頭文字)の前に挿入する縦スペースを表す文字列。

lethead_prefix <文字列> ""

頭文字の前に付けるコマンド文字列。

heading_prefix <文字列> ""

lethead_prefixと同じ。

lethead_suffix <文字列> ""

頭文字の後に付けるコマンド文字列。

heading_suffix <文字列> ""

lethead_suffixと同じ。

lethead_flag <文字列> 0

頭文字の出力のフラグ。0のとき出力しない。0より大きいときは英字を大文字で、0より小さいときは小文字で出力する。

heading_flag <文字列> 0

lethead_flagと同じ。

item_0 <文字列> "\n \\item "

主エントリ間に挿入するコマンド。

item_1 <文字列> "\n \\subitem "

サブエントリ間に挿入するコマンド。

item_2 <文字列> "\n \\subsubitem "

サブサブエントリ間に挿入するコマンド。

item_01 <文字列> "\n \\subitem "

主〜サブエントリ間に挿入するコマンド。

item_x1 <文字列> "\n \\subitem "

主〜サブエントリ間に挿入するコマンド。(主エントリにページ番号がないとき)

item_12 <文字列> "\n \\subsubitem "

サブ〜サブサブエントリ間に挿入するコマンド。

item_x2 <文字列> "\n \\subsubitem "

サブ〜サブサブエントリ間に挿入するコマンド。(サブエントリにページ番号がないとき)

delim_0 <文字列> ", "

主エントリと最初のページ番号の間の区切り文字列。

delim_1 <文字列> ", "

サブエントリと最初のページ番号の間の区切り文字列。

delim_2 <文字列> ", "

サブサブエントリと最初のページ番号の間の区切り文字列。

delim_n <文字列> ", "

ページ番号間の区切り文字列。どのエントリレベルにも共通。

delim_r <文字列> "--"

ページ範囲を示すときの、ページ番号間の区切り文字列。

delim_t <文字列> ""

ページ番号のリストの終端に出力する文字列。

suffix_2p <文字列> ""

ページ番号が2ページ連続する場合に、delim_n と2ページ目の番号の代わりに付加する文字列。

文字列が定義されている場合にのみ有効。

suffix_3p <文字列> ""

ページ番号が3ページ連続する場合に、delim_r と3ページ目の番号の代わりに付加する文字列。suffix_mp より優先される。

文字列が定義されている場合にのみ有効。

suffix_mp <文字列> ""

ページ番号が3ページまたはそれ以上連続する場合に、delim_r と末尾のページ番号の代わりに付加する文字列。

文字列が定義されている場合にのみ有効。

encap_prefix <文字列> "\\"

ページ番号にコマンドを付けるときの、コマンド名の前に付ける文字列。

encap_infix <文字列> "{"

ページ番号にコマンドを付けるときの、ページ番号の前に付ける文字列。

encap_suffix <文字列> "}".

ページ番号にコマンドを付けるときの、ページ番号の後に付ける文字列。

line_max <数値> 72

１行の最大文字数。それを超えると折り返す。

indent_space <文字列> "tt"

折り返した行の頭に挿入するスペース。

indent_length <数値> 16

折り返した行の頭に挿入されるスペースの長さ。

symhead_positive <文字列> "Symbols"

lethead_flag または heading_flag が正数の場合に数字・記号の頭文字として出力する文字列。

symhead_negative <文字列> "symbols"

lethead_flag または heading_flag が負数の場合に数字・記号の頭文字として出力する文字列。

symbol <文字列> ""

symbol_flag が0でない場合に、数字・記号の頭文字として出力する文字列。

文字列が定義されていれば、symhead_positive および symhead_negative より優先される。(mendex専用)

このパラメータが定義された場合、symhead_positive および symhead_negative より優先される。(mendex専用)

symbol_flag <数値> 1

数字・記号の頭文字の出力フラグ。0のとき出力しない。(mendex専用)

letter_head <数値> 1

日本語の頭文字の出力のフラグ。0のとき出力しない。1のときカタカナ、2のときひらがなで出力する。(mendex専用)

priority <数値> 0

英字と日本語との混在した索引語のソート方法についてのフラグ。0でなければ英字と日本語との間に半角スペースを入れた状態でソートする。(mendex専用)

character_order <文字列> "SEJ"

記号、英字、日本語の優先順位。´S´は記号、´E´は英字、´J´は日本語を表す。(mendex専用)

## 日本語の扱いについて

mendex は日本語の索引をできるだけ楽に扱えるようになっています。

makeindexでは日本語の索引が正しく辞書順にソートするためにはひらがなまたはカタカナに揃え、拗音、撥音、濁点を除いた読みを付けなければなりませんでした(自動的に揃えるバージョンもある)。

mendexではカナについてはすべて自動的に揃え、また漢字については辞書ファイルを設定することにより各索引語ごとに読みを付ける作業をかなり解消できます。

以下に内部でのカナの変換例を示します。

かぶしきがいしゃ かふしきかいしや
マッキントッシュ まつきんとつしゆ
ワープロ わあふろ

辞書ファイルは<熟語 読み>のリストで構成されます。 熟語と読みの区切りはタブまたはスペースです。

以下に辞書の例を示します。

漢字 かんじ
読み よみ
環境 かんきょう
α アルファ

辞書に登録する熟語については、読み方が１通りになるよう送り仮名を付けてください。 「表」、「性質」のように送り仮名によらず２通りの読み方ができる語についてはどちらか１つしか登録できません。他の読み方については各索引語へ読みを付けることで対応してください。

また、環境変数<INDEXDEFAULTDICTIONARY>に辞書ファイルを登録することにより、自動的に辞書を参照します。環境変数に登録した辞書は -d で指定した辞書と併用できます。

## ソート方法について

mendex は通常は入力された索引語をそのままソートします。-lオプションが付けられた場合、複数の単語で構成される索引語については、ソートするときに単語と単語の間のスペースを詰めてソートします。 ここでは前者を単語順ソート、後者を文字順ソートと呼ぶことにします。

文字順ソートの場合、実際に出力される文字列はスペースを含んだ状態のものですので、索引語自体が変化することはありません。

以下に例を示します。

単語順ソート 文字順ソート
X Window Xlib
Xlib XView
XView X Window

また、日本語〜英字間でも似たようなソート方法があります。スタイルファイルでpriorityを０以外に指定した場合、隣接した日本語と英字の間にスペースを入れてソートします。

以下に例を示します。

priority=0 priority=1
index sort indファイル
indファイル index sort

## 環境変数

mendex では以下のような環境変数を使用しています。

INDEXSTYLE 索引スタイルファイルがあるディレクトリ

INDEXDEFAULTSTYLE デフォルトで参照する索引スタイルファイル

INDEXDICTIONARY 辞書があるディレクトリ

INDEXDEFAULTDICTIONARY 常に参照する辞書ファイル

## 詳細について

その他、詳細については makeindex に準拠。

## 問題点等

ファイル名の先頭の文字が '-' であるファイルは扱えません。

複数のページ記法を使用する場合、ページ順に.idxファイルを与えないとページ番号を誤認することがあります。

## 参照

tex(l), latex(l), makeindex(l)