Next: , Previous: Batch Formatting, Up: Creating an Info File


20.1.8 タグファイルとスプリットファイル

Texinfoファイルが30,000バイト以上の場合,texinfo-format-bufferは Infoファイルに対し自動的にタグ表を作成します.makeinfoは,常にタ グ表を作成します.タグ表(tag table)を用いることで,Infoは新しいノー ドへ他より速く移動可能です.

さらに,Texinfoファイルが70,000バイト以上の場合, texinfo-format-buffermakeinfoは,大きなInfoファイルをそ れぞれ50,000バイト程度のより小さい間接的な(indirect)サブファイルに 分割します.大きなファイル全体を保持する大きなバッファをEmacsが作成しな くてもよいように,大きなファイルは小さなファイルに分割されます.代わりに Emacsは,分割された小さなファイルが必要とするだけのメモリを確保します. このようにして,EmacsはInfo実行中のメモリの無駄を避けます.(分割が実装さ れる前は,Infoファイルは常に短いままになっていて,インクルードファ イル(include files)は小さなInfoファイルから単一の大きな印刷マニュアルを 作成する方法として設計されていました.詳細はSee Include Files. イン クルードファイルは,The Emacs Lisp Reference Manualのような,大変 大きなドキュメントのためにまだ使用されて,そこでは,それぞれの章は別々の ファイルになっています.)

ファイルが分割されるとき,Info自身は,タグ表と分割されたファイルへの参照 を含む元ファイルの短縮バージョンを利用します.分割されたファイルは, 間接的な(indirect)ファイルと呼ばれます.

分割されたファイルは,@setfilenameコマンドで指定したファイル名に, ‘-1,‘-2,‘-3などを追加して作成された名前 をになります.元ファイルの短縮バージョンは,@setfilenameで指定さ れた名前を持ち続けます.

このドキュメントを書いている段階で,例えばInfoファイルはファイル test-texinfoとして保存され,そのファイルは以下のようになっていま す.

     Info file: test-texinfo,    -*-Text-*-
     produced by texinfo-format-buffer
     from file: new-texinfo-manual.texinfo
     
     ^_
     Indirect:
     test-texinfo-1: 102
     test-texinfo-2: 50422
     test-texinfo-3: 101300
     ^_^L
     Tag table:
     (Indirect)
     Node: overview^?104
     Node: info file^?1271
     Node: printed manual^?4853
     Node: conventions^?6855
     ...

(しかし,test-texinfoファイルは,ここで見るよりはるかに多くのノー ドがあります.)それぞれの分割された間接的なファイルtest-texinfo-1test-texinfo-2,そしてtest-texinfo-3は,このファイルの ‘Indirect:’以下の行でリストアップされます.タグ表は,‘Tag table:’以下の行でリストアップされます.

間接的なファイルのリストで,ファイル名に続く番号は前の間接的なファイルに 累積バイト数を記録し,ファイルリスト自身のバイト数,タグ表,またはそれぞ れのファイルの許可テキストは記録しません.タグ表では,ノード名に続く数は ノードの開始位置を(分割されていない)出力の最初からのバイトを記録します.

Infoファイルを作成するためtexinfo-format-bufferを使用している場合, Info-validateコマンドを実行したくなるかもしれません. (makeinfoコマンドはそれ自身良い仕事をするので, Info-validateは不要です.)しかし,M-x Info-validateノード チェックコマンドを,間接ファイルでは使用することは不可能です.ファイルを 分割から避ける方法や,ノードの構造の有効化の方法の情報は,Using Info-validateを参照してください.