[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Texinfoファイルは,どんなテキストエディタを選んで編集してもかまいません. Texinfoファイルは,他のASCIIファイルと差がありません.しかし,GNU EmacsにはTexinfoモードと呼ばれる特別なモードがあり,仕事が楽になるよう Emacsコマンドとツールを提供しています.
この章では,GNU EmacsのTexinfoモードの機能について述べ,Texinfo書式化言 語の特徴は述べません.そのため,このマニュアルを始めからそのまま読んでい る場合,この章は軽く流し,詳細にTexinfoフォーマット言語を述べている章を 読み終えた後,ここに戻りたくなるかもしれません.
Texinfo Mode Overview | How Texinfo mode can help you. | |
2.1 通常のGNU Emacs編集コマンド | Texinfo mode adds to GNU Emacs' general purpose editing features. | |
2.2 よく使用されるコマンドの挿入 | How to insert frequently used @-commands. | |
2.3 ファイルのセクションの構造を見る | How to show the structure of a file. | |
2.4 ノードとメニューの更新 | How to update or create new nodes and menus. | |
2.5 Infoの書式化 | How to format for Info. | |
2.6 書式化と印刷 | How to format and print part or all of a file. | |
2.7 Texinfoモードの概要 | Summary of all the Texinfo mode commands. |
Texinfoモードは,Texinfoファイルで作業するための特別な機能を提供していま す.以下のようなことが可能です.
@node
行の自動生成.
恐らく,最も役に立つ機能の二つは,よく使用する@-コマンドの挿入とノードポ インタとメニューの作成です.
ほとんどの状況で,通常のテキストモードのコマンドは,Texinfoモードでもテ
キストモード同様に動作します.Texinfoモードは,新しい編集コマンドとツー
ルを,GNU Emacsの一般的な優れた編集能力に追加します.主な違いは,内容に
関係します.Texinfoモードでは,段落を分離する変数と構文の表は,単独行の
Texinfoコマンドが不注意で段落内に含まれないように再定義されています.こ
のため,M-q (fill-paragraph
)コマンドは段落を再定義しますが,
隣接している索引コマンドを段落内に混ぜません.
さらに,Texinfoモードでは,page-delimiter
に
texinfo-chapter-level-regexp
の値を設定します.デフォルトでこれは,
章や付録のような等価物に対するコマンドに一致する正規表現です.ページの分
離にこの値を用いることで,C-x ](forward-page
)とC-x
[(backward-page
)コマンドで,章のタイトルから章のタイトルへ移動し
たり,C-x p(narrow-to-page
)コマンドで章を小さくすることが可
能となります.(ページコマンドの詳細は,See section `Pages' in The GNU Emacs Manual.)
Texinfoファイルには望みの名前を付けてもかまいませんが,慣習で,
`.texinfo',`.texi',`.txi',または`.tex'といった拡
張子の一つで終ります.長い拡張子は明示的なので好まれますが,短い拡張子は
ファイル名の長さに制限があるオペレーティングシステムに必要です.GNU
Emacsは,`.texinfo',`.texi',または`.txi'の拡張子を持つ
ファイルのとき,自動的にTexinfoモードに入ります.また,
`-*-texinfo-*-'を最初の行に持つファイルのときも,Texinfoモードに切
り替わります.他のモードからTexinfoモードに切替えたい場合は,M-x
texinfo-mode
と入力してください.
他のEmacsの機能のように,望みのままにTexinfoモードをカスタマイズしたり拡 張したりすることが可能です.特にキーバインドは非常に簡単に変更できます. 以下で,デフォルトと標準的なキーバインドを述べます.
Texinfoモードは,よく使用する様々な@-コマンドをバッファに挿入するコマン ドを提供しています.これらのコマンドでキーストロークを減らすことができま す.
挿入コマンドは,C-cを2度の後,@-コマンドの最初の文字を入力し呼び 出します.
@code{}
を挿入し,カッコの間にカーソルを配置します.
@dfn{}
を挿入し,カッコの間にカーソルを配置します.
@end
を挿入し,`example'や`table'といった,以下に続く正し
い単語を推測します.(このコマンドはネストされたリストを正確に処理しません
が,すぐ前のリストに適切な単語を挿入します.)
@item
を挿入し,次の行の始めにカーソルを配置します.
@kbd{}
を挿入し,カッコの間にカーソルを配置します.
@node
と,`Next',`Previous',そして`Up'ノードに対し,連続したリ
ストのコメント行を挿入します.@node
の後にポイントは配置されます.
@noindent
を挿入し,次の行の最初にカーソルを配置します.
@samp{}
を挿入し,カッコの間にカーソルを配置します.
@table
とその後にSPCを挿入し,SPCの後にカーソルを配置
します.
@var{}
を挿入し,カッコの間にカーソルを配置します.
@example
を挿入し,次の行の最初にカーソルを配置します.
{}
を挿入し,カッコの間にカーソルを挿入します.
存在する単語の周りに,@code{...}
のようなコマン
ドを書くため,単語の前にカーソルを配置し,C-u 1 C-c C-c cと入力し
てください.これで,簡単に既存のプレーンテキストを編集できるようになりま
す.プレフィクス引数の値は,一単語の場合は`1',2単語の場合は`2'
等のように,カッコの間に含めるそれ以降の単語の数をEmacsに伝えます.前の
単語を囲むために負の引数を使用してください.プレフィクス引数を指定しない
場合,Emacsは@-コマンド文字列を挿入し,カーソルをカッコの間に配置します.
この機能は,@kbd
と@var
のような,一つの単語や一行内の単語
を操作する@-コマンドに対してのみ動作します.
この挿入コマンドの組は,GNU Emacs ManualとGDB Manualで使用 されている,異なる@-コマンドの頻度の解析後に作成されました.独自の挿入 コマンドを加えたい場合,キーにキーボードマクロをバインドしたり,省略を使 用したり,`texinfo.el'のコードを拡張することが可能です.
C-c C-c C-d(texinfo-start-menu-description
)は,他の挿入コマ
ンドとは異なる挿入コマンドです.それは,メニュー項目行の記述のためのスペー
スに,ノードのセクションや章のタイトルを挿入します.(メニュー項目は三つ
の部品があり,それは項目名,ノード名,そして記述です.ノード名のみ要求さ
れますが,記述はノードが関係するものの説明を補助します.See section The Parts of a Menu.)
texinfo-start-menu-description
を使用するため,メニュー項目行にポ
イントをおき,C-c C-c C-dを入力してください.コマンドはノード名に
付属するタイトルを探してコピーし,タイトルを記述として挿入します.編集可
能なように,それは挿入されたテキストの始めにポイントを配置します.メニュー
項目行に記述が含まれている場合,この機能はタイトルを挿入しません.
このコマンドは記述を書くためだけに役立ちます.それは仕事を全部しません. タイトルはノード名と同じ単語を使いたがるものですが,役に立つ記述にするに は,異なる単語を使用すべきなので,挿入されたテキストを編集する必要があり ます.
C-c C-sコマンド(texinfo-show-structure
)を使用して,Texinfo
ファイルのセクションの構造を表示することが可能です.このコマンドは,
@chapter
や@section
のような,@-コマンドで始まる行をリス
トアップし,Texinfoファイルのセクションの構造を表示します.それは,結果
として目次を構成します.これらの行は,`*Occur*'と呼ばれる別のバッファ
に表示されます.そのバッファでTexinfoファイルの関連する場所に移動するた
め,行の一つにカーソルを配置しC-c C-cコマンド
(occur-mode-goto-occurrence
)を使用することが可能です.
@chapter
,@section
,そしてそれに類似し
た行を表示します.
C-u C-c C-sを入力し,プレフィクス引数を付けて
texinfo-show-structure
を呼び出す場合,@chapter
,
@section
,そしてこれに類する@-コマンドがある行だけでなく,
@node
行もリストアップします.@node
行の,`Next',
`Previous',そして`Up'ポインタが正しいかどうか調査するため,
texinfo-show-structure
にプレフィクスを付けて使用することが可能で
す.
マニュアルの作業中,現在の章の構造のみに興味があることもよくあります.こ
の場合,C-x n n(narrow-to-region
)コマンドを使用し,興味があ
るバッファの領域を区別することが可能で,texinfo-show-structure
は
その領域のみで動作します.再びバッファの領域全体を見るため,C-x
n w(widen
)を使用してください.(コマンドの制限は,
See section `Narrowing' in The GNU Emacs Manual.)
texinfo-show-structure
コマンドの提供に加えて,Texinfoモードは,章
レベルの@-コマンドに一致するページ分離変数の値を設定します.これで,
C-x ](forward-page
)とC-x [ (backward-page
)コマ
ンドを前後の章に移動するために使用したり,C-x p
(narrow-to-page
)コマンドを章を小さくするために使用したりすること
が可能です.ページコマンドの詳細は,See section `Pages' in The GNU Emacs Manual.
Texinfoモードは,自動的にメニューとノードポインタを作成し更新するコマン
ドを提供しています.コマンドは"更新"コマンドと呼ばれ,その理由は,作業
後にTexinfoファイルを更新するため最もよく使用されているためです.しかし,
`Next',`Previous',そして`Up'ポインタを,何も持たない@node
行に
挿入したり,何も持たないファイルでメニューを作成したりするために使用する
ことが可能です.
更新コマンドを使用しない場合,メニューとノードポインタを手で書く必要があ り,それは退屈な仕事です.
更新コマンド | Five major updating commands. | |
2.4.1 更新の必要条件 | How to structure a Texinfo file for using the updating command. | |
2.4.2 その他の更新コマンド | How to indent descriptions, insert missing nodes lines, and update nodes in sequence. |
以下を行なうために,更新コマンドを使用することが可能です.
Texinfoの一部や全体の,全てのノードとメニューを更新するためにそのコマン ドを使用することも可能です.
更新コマンドは慣習に従っているTexinfoファイルでしか動作せず,それは本に
似た階層構造をしているものです.そのようなファイルでの構造的なコマンド行
は,`Top'@node
行以外のそれぞれの@node
行に続ける必要があ
ります.(構造的なコマンド行(structuring command line)は,
@chapter
,@section
や,他の似たコマンドで始まる行です.)
@node
行の直後に続く行や,単一の@comment
行や,単一の
@ifinfo
行の後に続く行に,構造的なコマンド行を書くことが可能です.
@node
行と構造的なコマンド行の間には,一行以上挿入できません.
@comment
行や@ifinfo
行のみ挿入できます.
バッファ全体で動作するコマンドには,@chapter
や,同等のレベルコマ
ンドを用いているノードが続く`Top'ノードが必要です.メニュー更新コマンド
は,@chapter
レベルのノードしか持たないTexinfoファイルに対して,
メインやマスターメニューを作成しません!メニュー更新コマンドは,低レベル
のノードのの中にメニューを作成するだけです.章のメニューを作成す
vるために`Top'ノードを提供する必要があります.
メニュー更新コマンドは現在のバッファ内のノードを参照しないので,他のInfo ファイルを参照するメニュー項目を削除します.これは欠陥です.メニュー項目 を使用するのではなく,他のInfoファイルを参照する相互参照を使用することが 可能です.更新コマンドは相互参照に影響しません.
Texinfoモードは,よく使用される五つの更新コマンドがあります.二つは,単一
ノード(や領域)のノードポインタやメニューを更新します.二つは,ファイルの
全てのノードポインタとメニューを更新します.もう一つは,
texinfo-master-menu
コマンドで,完全なファイルのマスターメニューを
作成し,さらにTexinfoファイル全体の全てのノードとメニューを更新します.
texinfo-master-menu
コマンドは,主要なコマンドです.
引数(対話的な場合は,プレフィクス引数,C-u,)を用いることで,マスター メニューを構築する前に,バッファの全ての通常のメニューを最初に作成更新し ます.(マスターメニューについては,See section The Top Node and Master Menu.)
texinfo-master-menu
を動作させるため,Texinfoファイルは,`Top'ノー
ドと,少なくとも一つのサブシーケンスノードがある必要があります.
広範囲でTexinfoファイルを編集後,以下を入力します.
C-u M-x texinfo-master-menu または C-u C-c C-u m |
これで,一度に全てのノードとメニューを,完全に更新します.
他の主要な更新コマンドは小さな仕事をし,人間がノードやメニューをTexinfo ファイルに書くように設計されています.
以下のコマンドです.
@node
行をポイントの前)に挿入します.@node
行に,`Next',
`Previous',または`Up'ポインタがある場合,古いポインタは削除され新しいも
のが挿入されます.引数(対話的な場合,C-uプレフィクス引数)を用いる
ことで,このコマンドは領域の全ての@node
行を更新します(それは,ポ
イントとマークの間のテキストです).
texinfo-make-menu
が既存のメニューを更新する場合は,メニューの記述
は常に新しいメニューに挿入されます.これは,既存のメニューから同じノード
名を持つ新しいメニュー項目に記述をコピーすることで行います.ノードメニュー
が異なる場合,記述は新しいメニューにコピーされません.
マスターメニューがある場合,texinfo-all-menus-update
コマンドはそ
れを更新します.しかし,メニューが無い場合,コマンドは新しいマスターメ
ニューを作成しません.(そのためには,texinfo-master-menu
コマンド
を使用してください.)
マスターメニューを作成するメリットが無いドキュメントで作業する場合,以下 のように入力できます.
C-u C-c C-u C-a または C-u M-x texinfo-all-menus-update |
これで,全てのノードとメニューを更新します.
texinfo-column-for-description
変数は,メニューの記述を字下げする
列数を指定します.デフォルトで値は32ですが,24以下にした方が便利なときが
多いです.M-x edit-optionsコマンド(see section `Editing Variable Values' in The GNU Emacs Manual)や,M-x set-variable
コマンド(see section `Examining and Setting Variables' in The GNU Emacs Manual)で変数を設定することが可能です.
また,texinfo-indent-menu-description
を既存のメニューでの記述の字
下げの列の指定に使用することも可能です.終りに,希望があれば
texinfo-insert-node-lines
コマンドを,ファイルに足りない
@node
行を挿入するために使用することが可能です.(詳細は
See section 2.4.2 その他の更新コマンド.)
更新コマンドを使用するためには,章,セクション,サブセクション,そしてそ れに類するものを用いて,Texinfoファイルを階層的に組織化する必要がありま す.マニュアルの階層構造を構築するとき,一度に一階層以上`jump down'しな いでください.章を`Top'ノードの次にすることは可能ですが,セクションは不 可能です.セクションを章の次にすることは可能ですが,サブセクションでは不 可能です.しかし,一度に何レベルでも`jump up'することは可能です -- 例え ば,サブセクションから章にすることは可能です.
それぞれの@node
行は,`Top'ノードの行は例外として,
@chapter
,@section
,または@unnumberedsubsec
のよ
うな,構造的なコマンドの行が続きます.
それぞれの@node
行や構造的なコマンド行は,以下のような組合せにす
る必要があります.
@node Comments, Minimum, Conventions, Overview @comment node-name, next, previous, up @section Comments |
または,(@comment
行が無ければ)以下のようになります.
@node Comments, Minimum, Conventions, Overview @section Comments |
または,(明示的なノードポインタが無ければ)以下のようになります.
@node Comments @section Comments |
この例では,`Comments'はノードとセクションの名前です.次のノードは
`Minimum'と呼ばれ,前のノードは`Conventions'と呼ばれます.`Comments'セク
ションは`Overview'ノードにあり,`Up'ポインタで指定されています.
(@comment
行の代わりに,@ifinfo
行を書いてもかまいません.)
ファイルに`Top'ノードがある場合,それは,`top'や`Top'と呼ばれ, ファイルの最初のノードにする必要があります.
メニュー更新コマンドは,章のセクションメニュー,セクションのサブセクショ ンメニュー等を作成します.これは,章のメニューが欲しい場合,`Top'ノード が必要だということを意味します.
ところで,makeinfo
コマンドは,`Next',`Previous',そして`Up'ポイ
ンタが無い階層的に組織化されたTexinfoファイルに対し,Infoファイルを作成
します.このため,Texinfoファイルがmakeinfo
で書式化されることが確
実な場合,ノード更新コマンドは不要です(makeinfo
の詳細は,
see section 20.1 Infoファイルの作成).しかし,makeinfo
と
texinfo-format-...
コマンドでは,どちらもファイルにメニューを
挿入する必要があります.
五つの主な更新コマンドに加え,Texinfoモードには,余り使用されていない更新 コマンドもあります.
@node
が無い場所では,
@chapter
,@section
,そしてその他のセクションコマンドの前
に@node
行を挿入します.
引数(対話的な場合は,C-uプレフィクス引数)を使用することで,
texinfo-insert-node-lines
コマンドは,@node
行を挿入するだ
けでなく,対応するノードの名前として章やセクションのタイトルも挿入します.
さらに,既存の名前が無い@node
行に,ノード名としてタイトルを挿入
します.ノード名は,セクションや章のタイトルより簡潔にすべきなので,挿入
されたノード名を手作業で編集する必要があります.
例えば,以下のようにして,バッファ全体を領域としてマークし,
@node
行とタイトルを全体に挿入します.
C-x h C-u M-x texinfo-insert-node-lines |
このコマンドは,タイトルをノード名として@node
行に挿入します.
texinfo-start-menu-description
コマンド(see section Inserting Frequently Used Commands)は,タイトルをメニュー項目に記述とし
て挿入するという,異なる動作になります.しかし,どちらの場合でも挿入され
たテキストを編集する必要があります.
texinfo-multiple-files-update
.
texinfo-indent-menu-description
コマンドは,領域の全てのメニュー
の記述をを字下げします.しかし,このコマンドは複数行の記述行の二番目と次
に続く行を字下げしません.
texinfo-sequential-node-update
コマンドは領域の全てのノードを更新
します.Texinfoモードは,Infoに対してTexinfoファイルの一部または全体を書式化する コマンドも提供しています.ドキュメントを書いているとき,ファイルの一部だ け,すなわち領域を書式化したいことがよくあります.
領域を書式化するために,texinfo-format-region
や
makeinfo-region
コマンドを使用することが可能です.
バッファ全体を書式化するために,texinfo-format-buffer
や
makeinfo-buffer
コマンドを使用することが可能です.
例えば,Texinfoを書いた後で以下のように入力します.
C-u C-c C-u m または C-u M-x texinfo-master-menu |
これで,全てのノードとメニューを更新します.そして,Infoファイルを作成す るため以下のように入力します.
C-c C-m C-b または M-x makeinfo-buffer |
TeXやInfo書式化コマンドを動作させるため,ファイルには,ヘッダに
@setfilename
行を含める必要があります.
Infoの書式化の詳細は,See section 20.1 Infoファイルの作成.
Texinfoファイルの植字と印刷は,最初に印刷するための(DVIと呼ばれる)ファイ
ルを作成しその後でファイルを印刷するという,複数のステップによる処理にな
ります.オプションで索引を作成することも可能です.こうするため,最初に
tex
植字コマンドを実行した後,texindex
コマンドを実行する必
要があります.そして,もう一度tex
コマンドを実行する必要があります.
また別の方法として,必要な索引を自動的に作成する,texi2dvi
コマン
ドを実行します(see section 19.3 texi2dvi
での書式化).
ドキュメントを書いているとき,どのように見えるかを確認するため,ファイル
の一部だけを植字し印刷したいときがよくあります.
texinfo-tex-region
と,この目的に関係するコマンドを使用することが
可能です.texinfo-tex-buffer
コマンドは,バッファ全体の書式化に使
用してください.
texi2dvi
を実行します.バッファでTeXの実行に追加し,
このコマンドは,必要な場合は自動的に索引を作成更新します.
texinfo-tex-region
で書式化されたTexinfoファイルの索引をソートする
ため,texindex
を実行します.texinfo-tex-region
コマンドは,
自動的にtexindex
を実行しません.それは,tex
植字コマンドを
実行するだけです.texindex
コマンドで生の索引ファイルをソートした
後,texinfo-tex-region
コマンドを2回実行する必要があります.(通常,
領域を書式化したときは索引を書式化せず,バッファを書式化したときのみ行わ
れます.現在はtexi2dvi
コマンドがあるので,このコマンドはほとんど,
あるいは全く必要ありません.)
texinfo-tex-buffer
やtexinfo-tex-region
で書式化さ
れたファイル(またはファイルの一部)を印刷します.
texinfo-tex-region
やtexinfo-tex-buffer
が動作するように,ファ
イルを`\input texinfo'行で始める必要があり,そして
@settitle
行を含める必要があります.ファイルは,単独の
@bye
行で終える必要があります.(texinfo-tex-region
を使用す
るとき,@settitle
行を,start-of-headerとend-of-header行で囲む必
要があります.)
tex-show-print-queue
のような,他のTeXに関連するコマンドの記述
は,See section 19. 書式化とハードコピーの出力.
Texinfoモードには,それぞれのコマンドの組には同じキーで始まるデフォルト のキーバインドがあります.Texinfoモードのためにカスタムで作成された全て のコマンドはC-cで始まります.キーは多少覚え易くなっています.
挿入コマンドは,C-cを2度入力し,挿入する@-コマンドの最初の文字を 入力し呼び出します.(それは,`カスタム挿入'に対するC-c C-iの使用よ り記憶力が必要かもしれませんが,C-c C-cは,素早く入力できます.)
C-c C-c c `@code'を挿入. C-c C-c d `@dfn'を挿入. C-c C-c e `@end'を挿入. C-c C-c i `@item'を挿入. C-c C-c n `@node'を挿入. C-c C-c s `@samp'を挿入. C-c C-c v `@var'を挿入. C-c C-c { カッコを挿入. C-c C-c ] C-c C-c } 閉じたカッコの外へ移動. C-c C-c C-d メニュー項目行で 記述のためのスペースに ノードのセクションタイトルを挿入 |
texinfo-show-structure
コマンドは,小さな領域でよく使用されていま
す.
C-c C-s 全ての見出しをリストアップします. |
texinfo-master-menu
コマンドはマスターメニューを作成します.そして,
ファイルの全てのノードとメニューの更新にも使用可能です.
C-c C-u m M-x texinfo-master-menu マスターメニューを作成更新します. C-u C-c C-u m プレフィクス引数C-uを用いることで, 最初に全てのノードと普通のメニューを作成更新し, そしてマスターメニューを作成する. |
ポインタを更新するコマンドは,C-c C-uと入力してから,
texinfo-update-node
に対するC-n,または,
texinfo-every-node-update
に対するC-eを入力します.
C-c C-u C-n ノードの更新. C-c C-u C-e バッファの全てのノードの更新. |
メニューの更新コマンドは,C-c C-uと入力してから,
texinfo-make-menu
に対するC-m,または,
texinfo-all-menus-update
に対するC-aを入力し呼び出してくださ
い.ノードとメニューの両方を同時に更新するため,C-c C-u C-aの前に
C-uを入力してください.
C-c C-u C-m メニューの作成更新. C-c C-u C-a バッファの全ての メニューの作成更新. C-u C-c C-u C-a プレフィクス引数C-uを用いることで, 最初に全てのノードを作成更新し そして全てのメニューを作成更新します. |
Emacs Lispで書かれているInfoの書式化コマンドは,C-c C-eと入力して から,領域に対しC-r,または,バッファ全体に対しC-bを入力しま す.
Cで書かれていて,makeinfo
プログラムをベースにしたInfoの書式化コマ
ンドは,C-c C-mと入力してから,領域に対しC-r,または,バッファ
全体に対しC-bを入力し呼び出します.
texinfo-format...
コマンドを使用します.
C-c C-e C-r 領域の書式化. C-c C-e C-b バッファの書式化. |
makeinfo
を使用します.
C-c C-m C-r 領域の書式化. C-c C-m C-b バッファの書式化. C-c C-m C-l |
TeXの植字と印刷コマンドは,C-c C-tと入力してから,もう一つ制御コ
マンドを入力して呼び出します.texinfo-tex-region
に対するC-r,
texinfo-tex-buffer
に対するC-b等です.
C-c C-t C-r TeXを領域で実行. C-c C-t C-b |
残りの更新コマンドは滅多に使用されないのでキーバインドはありません.
M-x texinfo-insert-node-lines
領域に足りない |
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |