個人用の Info を追加する方法

Info の source file は .texi や .texinfo などの拡張子を持つファイルとして提供されます. 例として,jgawk の日本語 Info をインストールする手順を考えてみましょう.

Mule(Emacs) で,jgawk.texinfo を読み込み,M-x texinfo-format-buffer を実行します.しばらくたつと,『Now save it』と言ってくるので, 言われるままに保存します.すると,以下の8つのファイルが生成されているはずです.

jgawk-info
jgawk-info-1
jgawk-info-2
jgawk-info-3
jgawk-info-4
jgawk-info-5
jgawk-info-6
jgawk-info-7

次に個人用の Info を置いておくディレクトリ(例えば,~/info)を作り, 生成された8つのファイルをそのディレクトリに移動します.そして, ~/info/dir という名前のファイルを用意します. このファイルは,~/info に入れている Info の構成を記録しておくファイルです.今回の例では次のようになります.

-*- Text -*-
This is the file .../info/dir, which contains the topmost node of the
Info hierarchy.  The first time you invoke Info you start off
looking at that node, which is (dir)Top.

File: dir	Node: Top	This is the top of the INFO tree
  This (the Directory node) gives a menu of major topics. 
  Typing "d" returns here, "q" exits, "?" lists all INFO commands, "h" 
  gives a primer for first-timers, "mTexinfo" visits Texinfo topic,
  etc.
  --- PLEASE ADD DOCUMENTATION TO THIS TREE. (See INFO topic first.) ---

* Menu: The list of major topics begins on the next line.

Info in ~/info
* gawk J: (jgawk-info).		GNU AWK Manual (Japanese)

その上で,~/.emacs に次の設定を加えます.

(setq Info-default-directory-list
      (append Info-default-directory-list (list (expand-file-name "~/info"))))

上の設定は,サイト全体の Info よりも個人用の Info を優先したい場合の設定です. サイト全体の Info を優先する場合は下記のようにします.

(setq Info-default-directory-list
      (cons (expand-file-name "~/info") Info-default-directory-list ))

これらの設定を加え,Mule(Emacs) を再起動すると,C-h i で表示された (DIR) から個人用の Info が辿れるようになります.


@node 文の補完

最近の Emacsen では M-x texinfo-every-node-update で同じことができます.

Info 形式の文書を作成するとき,@node に next node や prev node, up node の指定を手作業で行うのは大変面倒です. そこで,簡単な Perl のスクリプトを作成しました. このスクリプトは,Info が menu などによる木構造を持っていることを仮定して, 不十分な @node 文を補完します.引数を指定せずに実行するとマニュアルを表示しますので, 詳しくはそれを参照してください.

また,このスクリプトを使うと,袋小路になっているノードが無くなるので, 多少 Info が読みやすくなります.

このスクリプトを,Emacs Lisp の Info に適用する場合,次のようにします.

tar xzf elisp-manual-19-2.4-jp2.0.tar.gz 
cd elisp-manual-19-2.4-jp2.0
texinfo.perl elisp-jp.texi
rm elisp-jp elisp-jp-*
make elisp-jp

例のように,Top ノードを含んでいるファイルを指定して実行すると, @include 文によって参照されている他のファイルも自動的に書き換えます.


[Top] / [Emacs Lisp Tips] / [Texinfo Tips]