upmendex - 索引整形ツール

使用法

    upmendex [-ilqrcgf] [-s sty] [-d dic] [-o ind] [-t log] [-p no] [--] [idx0 idx1 idx2 ...]
    upmendex --help
    upmendex --version


解説

  upmendex は文書の索引を作成するツールです。 LaTeX により抽出された索引リストファ
イル(.idx)を並べ替え、実際の索引のソースファイルの形に整形します。makeindex と互
換性があり、さらに「読み」の扱いの手間を減らすように特殊化されています。
  出力される索引の形式は、スタイルファイルに従って決定されます。また、辞書ファイ
ルを与えることにより、索引中の熟語の読みが登録されます。
  索引の階層は５段階まで作成することができます。


オプション

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

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

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

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

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

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

   -f      upmendexが未対応のスクリプト(言語)も強制的に出力するモードです。

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

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

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

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

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

   --help  オプションの要約を表示します。

   --version  ヴァージョンの情報を表示します。

   --      以降はオプション文字列と解釈しません。これは，ファイル名の先頭の文字が
           '-' であるファイルを扱う場合に有用です。


スタイルファイル

  スタイルファイルは 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  <文字>
      '"'
      upmendex のパラメータ文字に対するエスケープキャラクタ。

   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のとき出力しない。1のときはラテン文字・
      ギリシャ文字・キリル文字を大文字で、-1のときは小文字で、
      2のときはタイトルケースで出力する。

   heading_flag  <数値>
      0
      lethead_flagと同じ。

   headings_flag  <数値>
      0
      lethead_flagと同じ。

   script_head  <文字列1>  <文字列2>
      "(各スクリプトごとの標準文字列)"
      各スクリプトごとの見出し文字を文字列で文字列2に指定する。
      スクリプト名1個を以下の中から文字列1に指定しなければならない:
      'kana', 'hangul', 'hanzi',
      'devanagari', 'bengali', 'gurmukhi', 'gujarati', 'oriya',
      'tamil', 'telugu', 'kannada', 'malayalam', 'sinhala',
      'thai', 'lao'
      (upmendex専用)

   kana_head  <文字列>
      ""
      仮名見出し文字。見出し文字を文字列で指定する。
      デフォルトでは、letter_head とコマンドラインオプション '-g'
      の設定に従う。(upmendex専用)

   hangul_head  <文字列>
      "ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ"
      ハングル見出し文字。見出し文字を文字列で指定する。(upmendex専用)

   hanzi_head  <文字列>
      ""
      漢字見出し文字列。見出し文字列を";"で区切って指定することにより
      デフォルト設定の文字列を上書きする。(upmendex専用)

   item_0  <文字列>    "\n  \\item "
   item_1  <文字列>    "\n    \\subitem "
   item_2  <文字列>    "\n      \\subsubitem "
   item_3  <文字列>    "\n        \\subsubsubitem "
   item_4  <文字列>    "\n          \\subsubsubsubitem "
      それぞれ主エントリ間、サブエントリ間、サブサブエントリ間、サブサブサブエントリ間、
      サブサブサブサブエントリ間に挿入するコマンド。

   item_01  <文字列>   "\n    \\subitem "
   item_12  <文字列>   "\n      \\subsubitem "
   item_23  <文字列>   "\n        \\subsubsubitem "
   item_34  <文字列>   "\n          \\subsubsubsubitem "
      それぞれ主〜サブエントリ間、サブ〜サブサブエントリ間、サブサブ〜サブサブサブエントリ間、
      サブサブサブ〜サブサブサブサブエントリ間に挿入するコマンド。

   item_x1  <文字列>   "\n    \\subitem "
   item_x2  <文字列>   "\n      \\subsubitem "
   item_x3  <文字列>   "\n        \\subsubsubitem "
   item_x4  <文字列>   "\n          \\subsubsubsubitem "
      それぞれ主〜サブエントリ間、サブ〜サブサブエントリ間、サブサブ〜サブサブサブエントリ間、
      サブサブサブ〜サブサブサブサブエントリ間に挿入するコマンド。
      (上位のエントリにページ番号がないとき)

   delim_0  <文字列>   ", "
   delim_1  <文字列>   ", "
   delim_2  <文字列>   ", "
   delim_3  <文字列>   ", "
   delim_4  <文字列>   ", "
      それぞれ主エントリ、サブエントリ、サブサブエントリ、サブサブサブエントリ、
      サブサブサブサブエントリと最初のページ番号の間の区切り文字列。

   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
      1行の最大文字数。それを超えると折り返す。

   indent_space  <文字列>
      "\t\t"
      折り返した行の頭に挿入するスペース。

   indent_length  <数値>
      16
      折り返した行の頭に挿入されるスペースの長さ。

   symhead_positive  <文字列>
      "Symbols"
      lethead_flag または heading_flag または headings_flag が正数の場合に記号の頭文字として
      出力する文字列。

   symhead_negative  <文字列>
      "symbols"
      lethead_flag または heading_flag または headings_flag が負数の場合に記号の頭文字として
      出力する文字列。

   symbol  <文字列>
      ""
      symbol_flag が0でない場合に、記号の頭文字として出力する文字列。
      文字列が定義されていれば、symhead_positive および symhead_negative より
      優先される。((up)mendex専用)

   numhead_positive  <文字列>
      "Numbers"
      lethead_flag または heading_flag が正数かつ symbol_flag が2の場合に数字の頭文字として
      出力する文字列。

   numhead_negative  <文字列>
      "numbers"
      lethead_flag または heading_flag が負数かつ symbol_flag が2の場合に数字の頭文字として
      出力する文字列。

   symbol_flag  <数値>
      1
      symbol の出力フラグ。0のとき見出しを出力しない。
      1のとき数字を記号の一部として扱い記号の見出しを出力する。
      2のとき数字と記号を別の集合に分類し数字と記号の見出しを出力する。
      ((up)mendex専用)

   letter_head  <数値>
      1
      日本語の頭文字の出力のフラグ。1のときカタカナ、2のときひらがなで出力する。
      ((up)mendex専用)

   priority  <数値>
      0
      日本語以外の文字(ラテン文字など)と日本語との混在した索引語のソート方法についてのフラグ。
      0でなければ日本語以外の文字と日本語との間に半角スペースを入れた状態でソートする。
      ((up)mendex専用)

   character_order  <文字列>
      "SNLGCJKHDbpgotukmsTlah"
      記号、ラテン文字、日本語(かな)などスクリプトの優先順位。'S'は記号、'N'は数字、
      'L'はラテン文字、'G'はギリシャ文字、'C'はキリル文字、'J'は日本語(かな)、'K'はハングル、
      'H'は漢字、'D'はデーヴァナーガリー、'b'はベンガル文字、'p'はグルムキー文字、
      'g'はグジャラーティー文字、'o'はオリヤー文字、't'はタミル文字、'u'はテルグ文字、
      'k'はカンナダ文字、'm'はマラヤーラム文字、's'はシンハラ文字、
      'T'はタイ文字、'l'はラーオ文字、'a'はアラビア文字、'h'はヘブライ文字を表す。
      '@'はこのパラメータで明示されていないスクリプトを表し
      icu_rulesまたは icu_locale で設定された優先順位に従う。
      symbol_flag=1のとき、索引項目の分類として「数字」は「記号」に含めるので、
      'S'と'N'は必ず隣り合わせること（数字と数字以外の記号の順序入れ替えは可能）。
      (upmendex専用)

   script_preamble  <文字列1>  <文字列2>
      ""
      各スクリプトごとのブロックの先頭の文字列を文字列2に指定する。
      スクリプト名1個を以下の中から文字列1に指定しなければならない:
      'latin', 'cyrillic', 'greek', 'kana', 'hangul', 'hanzi',
      'devanagari', 'bengali', 'gurmukhi', 'gujarati', 'oriya',
      'tamil', 'telugu', 'kannada', 'malayalam', 'sinhala',
      'thai', 'lao', 'arabic', 'hebrew'
      (upmendex専用)

   script_postamble  <文字列1>  <文字列2>
      ""
      各スクリプトごとのブロックの末尾の文字列を文字列2に指定する。
      スクリプト名1個を以下の中から文字列1に指定しなければならない:
      'latin', 'cyrillic', 'greek', 'kana', 'hangul', 'hanzi',
      'devanagari', 'bengali', 'gurmukhi', 'gujarati', 'oriya',
      'tamil', 'telugu', 'kannada', 'malayalam', 'sinhala',
      'thai', 'lao', 'arabic', 'hebrew'
      (upmendex専用)

   icu_locale  <文字列>
      ""
      ICU collatorにおいて従うlocale。
      空文字列(デフォルト)のときは、"root sort order"に従う。
      (upmendex専用)

   icu_rules  <文字列>
      ""
      ICU collatorにおいてlocaleによらずに照合順序を指定する場合、
      照合順序のルールを示す文字列。
      ( Ref. https://unicode-org.github.io/icu/userguide/collation/customization/
             http://www.unicode.org/reports/tr35/tr35-collation.html#Rules )
      UTF-8のUnicode文字及び、以下のエスケープ文字列が使用可能である:
      \Uhhhhhhhh (16進数[0-9A-Fa-f]を8桁), \uhhhh (16進数を4桁),
      \xhh (16進数を2桁), \x{h...} (16進数を1〜8桁), \ooo (8進数[0-7]を3桁)。
      icu_localeとicu_rulesを同時に指定した場合、icu_localeで指定したルールの上に
      icu_rulesで指定したルールを追加する。
      空文字列(デフォルト)のときは、localeによる照合順序のルールに従う。
      (upmendex専用)

   icu_attributes  <文字列>
      ""
      ICU collatorのattribute指定。
      ( Ref. https://unicode-org.github.io/icu/userguide/collation/customization/#default-options
             http://www.unicode.org/reports/tr35/tr35-collation.html#Setting_Options )
      以下の文字列を解釈する:
      "alternate:shifted", "alternate:non-ignorable",
      "strength:primary", "strength:secondary", "strength:tertiary",
      "strength:quaternary", "strength:identical",
      "french-collation:on", "french-collation:off",
      "case-first:off", "case-first:upper-first", "case-first:lower-first",
      "case-level:on", "case-level:off",
      "normalization-mode:on", "normalization-mode:off",
      "numeric-ordering:on", "numeric-ordering:off"
      (upmendex専用)


日本語の扱いについて

  upmendex は日本語の索引をできるだけ楽に扱えるようになっています。
  makeindex では日本語の索引が正しく辞書順にソートするためにはひらがなまたはカタ
カナに揃え、拗音、撥音、濁点を除いた読みを付けなければなりませんでした(自動的に
揃えるバージョンもある)。
  upmendex ではカナについてはInternational Components for Unicode (ICU)による
ソートを行います。また漢字と記号については辞書ファイルを設定することにより各索引語ごと
に読みを付ける作業をかなり解消できます。

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

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

   漢字     かんじ
   読み     よみ
   環境     かんきょう
   ＄       ドル

  辞書に登録する熟語は、読み方が1通りになるよう送り仮名を付けてください。
  「表」、「性質」のように送り仮名によらず2通りの読み方ができる語についてはどち
らか1つしか登録できません。他の読み方については各索引語へ読みを付けることで対応
してください。
  また、環境変数 INDEXDEFAULTDICTIONARY に辞書ファイルを登録することにより、
自動的に辞書を参照します。環境変数に登録した辞書は -d で指定した辞書と併用できま
す。


ソート方法について

  upmendex は通常は入力された索引語をそのままソートします。-l オプションが付けられ
た場合、複数の単語で構成される索引語については、ソートするときに単語と単語の間の
スペースを詰めてソートします。
  ここでは前者を単語順ソート、後者を文字順ソートと呼ぶことにします。
  文字順ソートの場合、実際に出力される文字列はスペースを含んだ状態のものなので、
索引語自体が変化することはありません。

  以下に例を示します。

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

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

  以下に例を示します。

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


環境変数

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

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

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

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

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


詳細について

  その他、仕様の詳細については makeindex と同じです。


問題点等

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


参考

International Components for Unicode (ICU)
http://icu.unicode.org/
https://unicode-org.github.io/icu/
