次: , 前: Use TeX, 上: Hardcopy


19.2 textexindexでの書式化

Texinfoファイルを,シェルコマンドtexにTexinfoファイル名を続けて書 式化します.例えば,以下のようにします.

     tex foo.texi

TeXは,索引や相互参照等の情報を含むいくつかの追加ファイルと, DVIファイル(DVI file)を生成します.DVIファイル(DeVice Independentファイル)は,事実上あらゆるデバイスに出力可能です(以下のセク ションを参照してください).

tex書式化コマンド自身は索引をソートしません.それは,ソートされて いない索引データの出力を書き出します.(texi2dviコマンドは,自動的 に索引を生成します.see Format with texi2dvi.)texコマンド実行後,印刷する索引を生成するため, 最初に索引をソートする必要があります.texindexコマンドは索引をソー トします.(ソースファイルtexindex.cは,他の場所から得られることも ありますが,標準的なTexinfo配布物の一部となっています.)

tex書式化コマンドは,標準的な慣習に従う名前でソートされていない索 引ファイルを出力します.`.tex'(または類似のもので,see tex invocation)が付いている主な入力ファイルの名前の拡張子は 削除され,索引名の二文字が続きます.例えば,入力ファイル foo.texinfoに対する生の索引出力ファイルは,foo.cpfoo.vrfoo.fnfoo.tpfoo.pg,そして foo.kyです.それらは,正確にtexindexに与える引数です.

全てのソートされていない索引ファイル名を明示的に指定する代わりに, `??'をシェルワイルドカードとして使い,以下の形式でコマンドに与える ことも可能です.

     texindex foo.??

このコマンドは,texindexを全てのソートされていない索引ファイルで 実行し,それには,@defindex@defcodeindexを使用して独自 に定義したものも含まれます.(たとえ,`foo.el'のように,索引ファイル ではない二文字の拡張子を持つ似た名前のファイルがある場合でも, `texindex foo.??'を実行してもかまいません.texindexコマンド は,そのようなファイルを無視したことを報告します.)

それぞれ指定したファイルに対し,texindexは入力ファイルに`s' を付けた名前を持つソートされた索引ファイルを生成します. @printindexコマンドは,その名前でファイルを探します (see Printing Indices & Menus).texindexは生の索引出力ファイ ルを変更しません.

索引のソート後,tex書式化コマンドをTexinfoファイルで再実行する必 要があります.これはDVIファイルを再生成し,このとき索引項目は更新されま す.

最終的に,相互参照で正しいページ番号を得るために,texをもう一度実 行する必要があります.

要約すると,これは五段階の処理です.

  1. Texinfoファイルでtexを実行してください.これは(相互参照が定義され ておらず,索引のない)DVIファイルと,(二文字の拡張子を持つ)生の索引ファイ ルを生成します.
  2. 生の索引ファイルでtexindexを実行してください.これで,適切にソー トされた(三文字の拡張子の)索引ファイルを生成します.
  3. texを再びTexinfoファイルで実行してください.これでDVIファイルを生 成し,索引と定義された相互参照はこのとき再生成しますが,相互参照のページ 番号は一般に正しくないので最後に再生成します.
  4. texindexで再び索引をソートしてください.
  5. texを最後に一度実行してください.このとき相互参照に対し,正しいペー ジ番号を書き出します.

別の方法として,ワンステップで処理します.texi2dvi(see Format with texi2dvi)を実行してください.

texの実行後,毎回texindexを実行する必要はありません.実行 しない場合は,次の実行時に,tex書式化コマンドはソートされているか どうかにかかわらず,たまたま存在する前回のtexindexの使用から得ら れる索引ファイルを使用します.これは,通常デバッグ中は問題ありません.

完全でないと分かっているドキュメントを印刷したり,ドキュメントの一つの章 だけ印刷したい場合もあります.その場合,通常のTeXが作成した追加ファイ ルと,相互参照が十分でないときTeXが与える警告は厄介になります. @novalidateコマンドでこれを避けることができ,それは @setfilenameコマンド(see @setfilename) の前で与える必要があります.このため,ファイルの最初はおそらく以 下のようになります.

     \input texinfo
     @novalidate
     @setfilename myfile.info
     ...

@novalidateも,--no-validateオプション(see Pointer Validation)を与えたようにmakeinfoで有効に停止します.