     [file texinfo-v.texi not included]

This file documents Texinfo, a documentation system that can produce both online information and a printed manual from a single source file.

Copyright (C) 1988, 90, 91, 92, 93, 95, 96, 97, 98, 99 Free Software Foundation, Inc.

This edition is for Texinfo version VERSION, UPDATED.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation.

Texinfo
*******

Texinfoは，オンライン情報と印刷された出力を作成するため，単一のソースファイルを使うドキュメントシステムです．

このマスターメニューの最初の部分で，このInfoドキュメントの主なノードを列挙し，それは，@-コマンドと概念の索引を含みます．メニューの残りはすべて，このドキュメントの下位レベルのノードです．

これは，TexinfoマニュアルのエディションVERSIONで， UPDATEDに更新しました．

     ドキュメントはSexに似ていて，いいときはとってもいいし，ダメなときは何もしないのと一緒だね．---Dick Brandon

Texinfoのコピー条件
*************

GNU Emacsの一部を含むTexinfoに関連して配布されるプログラムとは，他の別々のプログラム(makeinfo，info，texindexと， texinfo.texを含む)を現在は追加しています．これらのプログラムはフリーです．これは，誰でも自由に使え，自由を基本として，自由に再配布できるということを意味します．Texinfo関連のプログラムは，パブリックドメインではありません．著作権があり配布に関して制限がありますが，これらの制限は，良い協力的な市民が望むものを全て認めるよう設計されています．許可されないことは，あなたから得たこれらのプログラムのあらゆるバージョンを，他の人が共有することの妨害を試みることです．

明らかに我々は，Texinfoに関連したプログラムのコピーを与える権利をあなたが持っていることを確かめたいと思い，それらの権利とは，あなたがソースコードを受け取るか欲しい場合得ることができることと，これらのプログラムを変更したり新しいフリーのプログラムにその一部を使ったりできることと，これらのことを知っているということです．

皆がそのような権利を持っていることを確認するため，我々は，あなたが他の誰かから権利を奪うことを禁止する必要があります．例えば，あなたがTexinfoに関連するプログラムを配布する場合，あなたは，あなたが持つ全ての権利を与える必要があります．そして，ソースコードを受け取る，または得られることを確かめる必要があります．そして，権利について教える必要があります．

また，我々自身を守るため，我々は，Texinfoに関連するプログラムに対し，保証が無いことを全ての人が理解することを確実にする必要があります．プログラムが誰かに編集されて渡された場合，我々は，受け取ったものが我々が配布したものではないので，他人が招いたあらゆる問題が，我々の判断の影響を受けていないことを，受け取り人が知ることを望みます．

Texinfoに関連して配布されている現在のプログラムに対するライセンスの正確な状態は，一緒に配布されるGeneral Public Licensesで見つかります．

Texinfoの概要
**********

Texinfo (``Texinfo''の最初の音節は，``hex''ではなく， ``speck''のように発音されます．この奇妙な発音は，同じではありませんが， TeXの発音から得られています．単語TeXで，Xは実際，英文字 ``ex''というよりはギリシャ文字``chi''となります．TeXを，Xは名前の`Bach'の最後の音のように発音してください．しかし，Texinfoはx を`k'のように発音してください．``Texinfo''を大文字``T''とそれ以外は小文字で綴ってください．)は，オンラインの情報と印刷物の両方を作成するための，単一ファイルを用いたドキュメントシステムです．これは，1つをオンライン情報，もう1つを印刷物，といった異なる2つのドキュメントを書く代わりに，1つのドキュメントを書くだけで良いことを意味します．それゆえ，ワークが修正されたとき，1つのドキュメントだけを修正する必要があります．

バグの報告
=====

我々は，Texinfoシステムに対するプログラムとドキュメントの両方のバグの報告と提案を歓迎します．それらを電子メールで，bug-texinfo@gnu.org に送ってください．Texinfoの最新バージョンは， ftp://ftp.gnu.org/gnu/texinfo/と世界中のミラーサイトで入手できます．

管理者が問題を再現するため，バグの報告に十分な情報を含めてください．一般的に言って以下を意味します．

  * Texinfoのバージョンナンバーと，一緒に配布されるプログラムやマニュアル．

  * ハードウェア，オペレーティングシステムと，コンパイラのバージョン．

  * configureに与えた普通ではないオプション．

  * バグの再現に必要な入力ファイルの内容．

  * 問題の記述とエラー出力のサンプル．

  * その他，役に立ちそうなもの．

必要かどうか疑わしい場合はそれを含めてください．重要なものを除くより多くを含める方が良いです．

パッチは最も歓迎しますが，できればdiff -c(see Overview (Comparing and Merging Files))で作り， ChangeLogの項目(see Change Log (The GNU Emacs Manual))を含めてください．

電子メールで送る場合，できれば何とかして，メッセージを符号化したり分けたりしないでください．たとえ大きくても一つのプレーンテキストの方が多くの小さいものより簡単に扱えます．GNU shar (ftp://ftp.gnu.org/gnu/sharutils/)は，電子メールで複数のバイナリファイルをまとめる便利な方法です．

Texinfoを使う
==========

Texinfoを使い普通の本のような形態の印刷されたドキュメントの作成が可能で，それは，章，セクション，相互参照と，索引を含みます．同じTexinfoのソースファイルから，メニュー形式の，ノード，メニュー，相互参照と，索引を使った，オンラインInfoファイルを作ることができます．また，同じソースファイルから，ウェブブラウザの利用に適した，HTML出力ファイルを作ることもできます． The GNU Emacs Manualは，このマニュアル同様，Texinfoファイルの良い例です．

印刷されたドキュメントを作るため，Texinfoソースファイルを，TeX植字プログラムを使って処理します(しかし，Texinfo言語は，TeXの普通の言語のプレーンTeXと比べてかなり異なります)．これは，本やレポートのように植字して印刷するDVIファイルを作ります(see Hardcopy)．

Infoファイルを出力するため，Texinfoソースファイルを，makeinfoユーティリティか，Emacsのtexinfo-format-bufferコマンドで処理してください．結果をInfoツリーにインストールすることができます(see Install an Info File)．

HTMLファイルを出力するために，Texinfoソースファイルを，makeinfoで， --htmlオプションを使って処理してください．(例えば)結果をウェブサイトに置くことができます．

もしあなたがプログラマで，Texinfoのための出力フォーマットの追加をインプリメントし，GNUプロジェクトに貢献したいというのは素晴らしいことです．しかし，好みのフォーマットfooのための別に書かれた変換器texi2fooを書かないでください!それは，その仕事にとって困難な方法で，その後のメンテナンスで余分な仕事が発生します．なぜなら，Texinfo言語は拡張と更新が続いているためです．その代わりの最善のアプローチは，makeinfoを，現在Infoと HTMLを生成しているように，新しいフォーマットを生成するよう修正することです．

TeXは，ほとんど全てのプリンタで働きます．Infoは，ほとんど全てのコンピュータ端末で動きます．HTML出力はほとんど全てのブラウザで動きます．このように，Texinfoはほとんどのあらゆるコンピュータユーザーが利用できます．

TexinfoソースファイルはプレーンのASCIIファイルで，テキストと，植字とフォーマットのプログラムにすることを伝える@-コマンド (@ を前に置く単語)から成り立ちます．Texinfoファイルをテキストエディタで編集できますが，GNU Emacsを使うと便利で，それはエディタがTexinfoモードという特別なモードを持っていて，それは様々なTexinfoに関連する特徴を供給するためです．(see Texinfo Mode.)

Texinfoソースファイルを書く前に，ノード，メニュー，相互参照と，その他の，例えばこのマニュアルの読み方を学ぶべきです．

オンラインヘルプと印刷されたマニュアルの両方を作るため，Texinfoを使うことができます．さらにTexinfoは自由に再配布できます．この理由のため， TexinfoはGNUプロジェクトの公式はドキュメントフォーマットです．詳細は， GNU documentation web page (http://www.gnu.org/doc/)で利用可能です．

時々，伝統的なUnix manページをTexinfoから生成できるよう提案されます．これはサポートされる可能性は今のところ高くなく，それはmanページが非常に厳密な従来の書式があるためです．makeinfoをtroffフォーマットを出力するよう単に拡張するのでは不十分です．それゆえ，良いmanページを出力するには，良いユーザーマニュアルと良いリファレンスマニュアルを生成する，典型的なTexinfoアプリケーションと比べ，完全に異なるソースが必要です．これは，生成されたmanページが，異なる出力形式に対し，異なる方法で，同じ情報を文章にするという，Texinfoのデザインのゴールに矛盾します．manページを直接書く方が良いでしょう．

manページをサポートしたい場合，プログラムhelp2manが役に立つかも知れません．それは，プログラムの--help出力から伝統的なmanページを生成します．これは現在，Texinfoプログラム自身のmanページの生成に実際に使っています．それは，フリーソフトで，Brendan O'Deaによって書かれ， http://www.ozemail.com.au/~bod/help2man.tar.gzで利用可能です．

Infoファイル
========

Infoファイルは，Infoドキュメントを読むプログラムが処理できるように，書式化されたTexinfoファイルです．(makeinfoと texinfo-format-bufferは，TexinfoファイルをInfoファイルに変換する， 2つのコマンドです．)

Infoファイルは，ノードと呼ばれる部分に分けられ，それぞれが1つのトピックの議論を含みます．それぞれのノードは名前を持ち，ユーザーが読むテキストと他のノードへポインタを含み，それは名前で識別されます．Infoプログラムは，一度に一つのノードを表示し，ユーザーが他の関連するノードへ移動できるコマンドを供給します．

Infoの使い方の詳細は，see info (info-ja).

Infoファイルのそれぞれのノードには，ノードのトピックのサブトピックを議論する，子ノードがいくつかあります．子ノードの名前は，親ノードのmenu で列挙されています．これで，Infoコマンドを使って1つの子ノードに移動することができます．一般にInfoファイルは本のように構成されています．ノードが章の論理レベルの場合，子ノードはセクションレベルで，同様にセクションの子ノードはサブセクションレベルです．

1つの親の全ての子どもは，`Next'と`Previous'で双方向に連鎖して，お互いにリンクされています．`Next'ポインタは次のセクションへのリンクを供給し， `Previous'ポインタは前のセクションへのリンクを供給します．これは，章のセクションレベルにあるノードは，お互いにリンクされていることを意味します．普通，連鎖の順番は，親のメニューでの子どもの順番と同じです．それぞれの子ノードは，親ノード名を`Up'ポインタに記録しています．最後の子ノードは `Next'ポインタが無く，最初の子ノードは`Previous'と`Up'ポインタ両方が親になります． (ドキュメントには，最初の子に`Previous'ポインタが無いものもあります．時々，最後の子が`Next'ポインタとして次の上のレベルのノード名を持つものもあります．)

ノードが章やセクションやそれに類するものに対応するような，Infoファイルの本のような構造は，要求ではなく慣習の問題です．ノードの，`Up'，`Previous' と，`Next'ポインタは他のノードを示し，メニューは他のノードを含みます．このように，ノードの構造は方向性のあるグラフであるべきです．しかし，印刷された本やレポートの，章とセクションの構造に対応した構造に従うため，通常はより理解しやすいです．

メニューと，`Next'，`Previous'と，`Up'ポインタに加え，Infoは参照と呼ばれるもう一つの種類のポインタを供給し，それはテキスト中にあるはずです．これは通常，階層構造に適さないリンクを現す最善の方法です．

通常，印刷された出力物の章とセクションの構造に，ノードがマッチするようにドキュメントを設計します．しかし，議論の材料に対し正しくない時も良くあります．それゆえ，TexinfoはInfoファイルに対するノード構造と，印刷された出力物に対するセクション構造を指定する別のコマンドを使います．

一般に，慣習で`Top'と命名されているノードを通じて，Infoファイルに入ります．このノードは通常，ファイルの目的の短い概要と，ファイルの残りに至る大きなメニューを含みます．このノードから，ノードからノードへ移動することで組織的にファイルを横断したり，メインメニューに列挙されたノードを指定して移動したり，索引メニューで検索し欲しい情報があるノードに直接行くことができます．また，スタンドアローンInfoプログラムで，コマンドラインで特定のメニューアイテムを指定することができます(see Info)．

印刷されたマニュアルのように順番通りInfoファイルを読みたい場合， SPCを繰り返し押したり，アドバンスInfoコマンドg *でファイル全体を利用することができます．(see Advanced Info commands (info-ja).)

infoディレクトリのdirファイルは，Infoシステム全体の出発点としての役目を果たします．そこから，完全なInfoシステムの，それぞれのドキュメントの`Top'ノードに行くことができます．

URIでInfoを参照したい場合，以下で例示された(非公式な)構文を使うことができます．これはEmacs/W3で働きます．以下が例です．

     info:///usr/info/emacs#Dissociated%20Press
     info:emacs#Dissociated%20Press
     info://localhost/usr/info/emacs#Dissociated%20Press

infoプログラム自身は，あらゆる種類のURIに続きません．

印刷された本
======

Texinfoファイルは，印刷された本やマニュアルのように書式化し植字できます．こうするためにはTeXが必要で，それは強力で洗練された植字プログラムで， Donald Knuthによって書かれました． (TeXを持っていない場合， texi2roff (ftp://tug.org/texi2roff.tar.gz)プログラムを使うこともできます．TexinfoはTeXで使うように設計されているので， texi2roffはここでは述べません．texi2roffは，標準のGNU配布物ではなく，このマニュアルで述べているすべてのTexinfoの特徴を管理したり更新したりしていません．)

Texinfoを基本とした本は，他の植字で印刷された仕事に似ています．タイトルページ，著作権ページ，目次，序文，章のようなもの，番号が有るまたは無いセクションとサブセクション，相互参照，脚注，そして索引があるはずです．

オンライン情報に変換するつもりがなく，本を書くためにTexinfoを使うことができます．印刷された小説を書くためにTexinfoを使うこともでき，メモを書いたりできますが，電子メールの方がもっと簡単なので，これ以降のアプリケーションは勧められません．

TeXは，一般的な植字を目的としたプログラムです．Texinfoは，Texinfoファイルを植字するときにTeXが使う情報(定義とマクロ)を含むファイル texinfo.texを供給します．(texinfo.texは，TeXにTexinfoの @-コマンドをTeXコマンドに変換する方法を伝え，そしてTeXは植字ドキュメントを作成する処理できます．)texinfo.texは，ドキュメントを印刷するための仕様書を含みます．texinfo.texの最新バージョンは， ftp://ftp.gnu.org/gnu/texinfo.texで取得できます．

ほとんどの場合，ドキュメントは縦横8.5インチx11インチ(216mmx 280mmがデフォルトサイズ)で印刷されますが，7インチx9.25インチ (178mmx235mmの@smallbookサイズ)や，ヨーロッパのA4サイズの紙(@afourpaper)でも印刷できます．(see Printing ``Small'' Books.  また，Printing on A4 Paper, を参照してください．)

texinfo.texで変数を変えることで，印刷されたドキュメントのサイズを変えることができます．さらに，書式化される印刷されたドキュメントで，スタイルを変えることもできます．例えば，サイズや使っているフォント，それそれの段落に対する字下げの量，ハイフネーションされた単語の度合と，それに類するものを変えることができます．仕様書を変えることで，本を格調高く古臭く真面目に見せたり，気楽に若々しく陽気に見せたりできます．

TeXは自由に配布できます．それは，WEBと呼ばれるPascalのスーパーセットで書かれていて，Pascalでも(TeX配布物と同梱の変換プログラムを使って)C でもコンパイルできます．(TeXの詳細は，see TeX Mode (The GNU Emacs Manual).)

TeXは非常に強力で，非常に多くの特徴があります．Texinfoファイルは， Info形式の文字のみの端末と，植字された本の両方で情報を表現できるので， Texinfoがサポートする書式化コマンドは必然的に制限されます．

TeXのコピーを得るために，How to Obtain TeX, を参照してください．

@-コマンド
======

Texinfoファイルでは，TeXに印刷されるマニュアルの植字法を伝えたり， makeinfoとtexinfo-format-bufferにInfoファイルの作り方を伝えるコマンドは，@が前につきます．それらは@-コマンドと呼ばれています．例えば，@nodeはコードを示すコマンドで， @chapterは章の最初を示すコマンドです．

     注意してください:全ての@-コマンドは，@TeX{}コマンド以外，全体を小文字で書く必要があります．

Texinfoの@-コマンドは，厳密に制限された構成のセットです．厳密な制限で， Texinfoファイルを，TeXとInfoファイルに変換するコードの両方が理解することを可能とします．Infoファイルを英数字を表示する端末で表示することができます．同様に，TeXで生成した出力を様々なプリンタで印刷できます．

することや取る引数に依存して， (単語argumentは数学での使用法から来ていて，二人の論争には関連しません．それは，コマンドに与えた情報を参照します．オックスフォード英語辞典によると，単語は明らかにする，証明するというラテン語から生じました．このように，`証明として提出された証拠'と言う意味から来ていて，それは`提出された情報'と言われていて，数学的な意味から導かれました．由来の他の筋では，単語は，`他人がした反対の断言に，反対する方法で断言すること'と言う意味から来ていて， `argument'の意味を論争に導きました．)それ自身の行や，文の一部として，@- コマンドを書く必要があります．

  * @noindentのようなコマンドを，行の最初に，行の唯一のテキストとして書いてください．(@noindentは，次の改行の最初で段落の始まりとしての字下げを妨げます．)

  * @chapterのようなコマンドをコマンドの引数が続く行の最初に，この場合は行の残りが章のタイトルになるように書いてください．

  * @dots{}のようなコマンドを，通常は文中ですが，好きなところに書いてください．(@dots{}は，ドット...を作ります)

  * @code{SAMPLE-CODE}のようなコマンドを，好きなところに(通常は文中ですが)，引数と一緒に，この例ではカッコの中にSAMPLE-CODEのように書いてください．(@codeはコードとしてテキストに印を付けます．)

  * @exampleのようなコマンドを，単独行に書いてください．本文はそれ以降の行に書いてください．そして，併せて@endコマンドを，この場合本文の後に，単独行に書いてください．(@example...@end exampleは字下げし，例として本体のテキストを植字します．)このような環境コマンドの字下げは通常問題ありませんが，複雑で定義しにくい環境での余分なスペースは出力に余分なスペースを生成するので注意してください．

一般的な規則として，他のテキストの間に混ぜる場合，コマンドにはカッコが必要です．しかし行の始まり場合は不要です．@:のようなアルファベットでないコマンドは，規則に対し例外でカッコを必要としません．

Texinfoの経験を積むにつれ，違うコマンドに書き方をすぐに覚えられます．コマンドの書き方の異なる方法で，全てのコマンドが同じ構文に正確に従うことに比べ，より簡単にTexinfoファイルを書いたり読んだりできます．(@-コマンド構文の詳細は，@-Command Syntax,を参照してください．)

一般的な構文の慣習
=========

このセクションは，全てのTexinfoドキュメントで使われる，一般的な慣習を述べます．

  * @，{と，}を除き印刷可能な全てのASCII文字は， Texinfoファイルに現すことが可能で，それ自身を意味します．@はコマンドを導入するエスケープ文字です．{と}は，特定のコマンドの引数を囲むためのみに使われます．これらの特別な文字をドキュメントに置くため，@文字を，@@，@{と，@}のように，その前に置きます．

  * 引用の初めと終りに，単一の引用符文字を二重にした` `と' 'を使うことは， TeXの習慣です(しかし，2つの単一引用符文字の間にスペースはありません)．この慣習はTexinfoファイルでも従います．TeXは，二重にした単一引用符文字を右と左の二重引用符に変換し，Infoは二重にした単一引用符文字` `と' 'を， ASCIIの二重引用符"に変換します．

  * 列で3つのハイフン---を，---のようなダッシュのために使ってください． TeXで，1つまたは2つのハイフンは，通常の植字のダッシュより小さいダッシュを印刷します．Infoは画面表示で，3つのダッシュを2つにします．

  * 印刷されたマニュアルで段落の字下げを避けるため，その行の段落の前にコマンド@noindentを置いてください．

  * @iftexと@end iftexコマンドでTexinfoファイルの領域を区切る場合，その領域は印刷されたコピーのみに現れます．その領域で，Infoでは使えないプレーンTeXから借りた特定のコマンドを使うことができます．さらに，@ifinfoと@end ifinfoで領域を区切る場合，その領域は Infoファイルのみに現れます．その領域でTeXで使えないInfoコマンドを使うことができます．@ifhtml ... @end ifhtml，@ifnothtml ... @end ifnothtml，@ifnotinfo ... @end ifnotinfo， @ifnottex ... @end ifnottexも同様です．See Conditionals.

     注意:タブをTexinfoファイルで使わないでください!TeXは，様々な幅のフォントを使い，それは全ての環境で働くように，タブを前定義できないことを意味します．従って，TeXはタブを単一のスペースとして扱い，タブのように見えません．さらにmakeinfoはタブに対し，特別なことをしないので，入力ファイルのタブ文字は，出力で異なるように現れるかもしれません．

     この問題を避けるためTexinfoモードは，TABキーを押したとき，GNU Emacsに多数のスペースを挿入させます．

     同様に，タブを一つの領域の複数のスペースに変換するため，Emacsで untabifyを実行することもできます．

コメント
====

Texinfoファイルで，Infoファイルや印刷されたマニュアルに現れないコメントを，@commentコマンドを使って書くことができます(省略されて @cかも知れません)．そのようなコメントは，Texinfoファイルを修正する人のためです．@commentや@cに続く行の全てのテキストはコメントです．行の残りはInfoファイルにも印刷されたマニュアルにも現れません． (@commentや@cを行の途中に書くこともでき， @commentや@cコマンドの後のテキストのみ現れません．しかし， @settitleと@setfilenameのようなコマンドは行全体で働きます．@commentや@cを，そのようなコマンドを使う行では使えません．)

Infoファイルや印刷されたマニュアルに現れないテキストの長い範囲を， @ignoreと@end ignoreコマンドを使って書くことができます．単独行にこれらのコマンドをそれぞれ書き，行の最初からそれぞれのコマンドを始めてください．これら2つのコマンドの間のテキストは，処理された出力物に現れません．@ignoreと@end ignoreを，コメントを書くために使うことができます．@ignoreと@end ignoreは，Infoや印刷されたドキュメントではなく，ドキュメントのTexinfoソースファイルに適応するため，著作権の部分を囲むために使われます．

Texinfoファイルが必要とするもの
===================

慣習によって，Texinfoファイルの名前は，拡張子.texinfo， .texi，.txiや，.texで終ります．人が読むとき，ファイルの性質がはっきり述べられているので，長い拡張子が好まれます．短い拡張子は，長いファイル名を扱えないオペレーティングシステムのためです．

印刷されたマニュアルやInfoファイルのため，Texinfoファイルは，以下のような行で始める必要があります．

     \input texinfo
     @setfilename INFO-FILE-NAME
     @settitle NAME-OF-MANUAL

ファイルの内容はこの始まりに続き，Texinfoファイルは，以下の行で終る必要があります．

     @bye

\input texinfo行は，TeXにtexinfo.texファイルを使うように伝え，それは，Texinfoの@-コマンドをTeXの植字コマンドに変換する方法をTeXに伝えます．(バックスラッシュ，\を使うことに注意してください．これは，TeXに対して正しいです．)@setfilename行は，Info ファイルの名前を供給し，TeXに補助ファイルを開くよう伝えます． @settitle行は，印刷されたマニュアルのページヘッダ(やフッタ)のタイトルを指定します．

ファイルの終りの行の@byeは，フォーマッタにファイルの終りを伝え，書式化を停止するように伝えます．

通常，予備のフォーマットを全く使わないでしょうが，Texinfoファイルの最初に以下のような，モード設定とヘッダの始まりとヘッダの終りを含めます．

     \input texinfo   @c -*-texinfo-*-
     @c %**start of header
     @setfilename INFO-FILE-NAME
     @settitle NAME-OF-MANUAL
     @c %**end of header

最初の行の-*-texinfo-*-で，Emacsはファイル編集時にTexinfoモードに切替えます．

@setfilenameと@settitle行の周りにある@c行はオプションで，ファイルの一部のTeXやInfoを実行するため必要です．(詳細は see Start of Header.)

さらに通常は，Texinfoファイルは，タイトルページ，索引と，そのようなものを供給します．しかし，最小限で短いドキュメントで役に立つよう，始めの3行と終りの1行になります．

Texinfoファイルの6つの部分
=================

一般に，Texinfoファイルは最初と最後の最小限以上から成り立ち，通常6つの部分から成り立ちます．

1.ヘッダ
     ヘッダは，ファイルに名前をつけ，TeXに使う定義ファイルを伝え，その他の``家事(?)'' (訳注:原文は，``housekeeping'')の仕事を実行します．

2.要約の記述と著作権
     要約の記述と著作権の部分は，Infoファイルのドキュメントを述べ，著作権通知とコピーの許可から成り立ちます．この部分は，Infoファイルでのみフォーマッタが置くように，@ifinfoと@end ifinfoコマンドで囲まれています．

3.タイトルと著作権
     タイトルと著作権の部分は，印刷されたマニュアルのためのタイトルと著作権ページとコピーの許可から成り立ちます．この部分は@titlepageと @end titlepageコマンドで囲まれています．タイトルと著作権ページは，印刷されたマニュアルのみで現れます．

4.`Top'ノードとマスターメニュー
     マスターメニューは，Infoファイル全体の，全てのノードの完全なメニューから成り立ちます．それは，Infoファイルのみで`Top'ノードに現れます．

5.本体
     ドキュメントの本体は，伝統的な本や，百科辞典や，自由形式のように，構造化されます．

6.終り
     終りは，目次を印刷したり，索引を生成したりするコマンドと，単独の @byeコマンドの行から成り立っています．

Texinfoの短いサンプル
==============

ここに，完全ですが非常に短い，6つの部分があるTexinfoファイルがあります．ファイルの最初の3つの部分は，\input texinfoから@end titlepageまでで，他より恐ろしく(?) (訳注:原文は，look more intimidating)見えます．材料のほとんどが標準的な常套句です．マニュアルを書くとき，単純にこの部分に独自のマニュアルの名前をいれてください． (see Beginning a File.)

以下で，サンプルテキストは字下げされています．そのコメントはそうなっていません．コメントのない完全なファイルは，Sample Texinfo File,で見れます．

Part 1:ヘッダ
----------

ヘッダはInfoファイルにも印刷された出力物にも現れません．それは様々な変数を設定し，それにはInfoファイルの名前とヘッダで使っているタイトルが含まれます．

     \input texinfo   @c -*-texinfo-*-
     @c %**start of header
     @setfilename sample.info
     @settitle Sample Document
     @setchapternewpage odd
     @c %**end of header

Part 2:要約の記述と著作権
----------------

要約の記述と著作権の部分は，印刷されたドキュメントには現れません．

     @ifinfo
     これは，完全なTexinfoファイルの短いサンプルです．

     Copyright @copyright{} 1990 Free Software Foundation, Inc.
     @end ifinfo

Part 3:タイトルページと著作権
------------------

タイトルページの部分はInfoファイルに現れません．

     @titlepage
     @sp 10
     @comment The title is printed in a large font.
     @center @titlefont{Sample Title}

     @c The following two commands start the copyright page.
     @page
     @vskip 0pt plus 1filll
     Copyright @copyright{} 1990 Free Software Foundation, Inc.
     @end titlepage

Part 4:`Top'ノードとマスターメニュー
------------------------

`Top'ノードは，Infoファイルのマスターメニューから成り立ちます．印刷されたマニュアルはメニューよりは目次を使うので，マスターメニューはInfoファイルでのみ現れます．

     @node    Top,       First Chapter, ,         (dir)
     @comment node-name, next,          previous, up

     @menu
     * First Chapter::    The first chapter is the
                          only chapter in this sample.
     * Concept Index::    This index has two entries.
     @end menu

Part 5:ドキュメントの本体
----------------

本体の部分はドキュメントの全ての部分を含みますが，索引と目次は含みません．この例は，列挙されたリストからなるノードと章を説明します．

     @node    First Chapter, Concept Index, Top,      Top
     @comment node-name,     next,          previous, up
     @chapter First Chapter
     @cindex Sample index entry

     これは，最初の章の内容です．
     @cindex Another sample index entry

     これは，番号付のリストです．

     @enumerate
     @item
     これは，最初の項目です．

     @item
     これは，2番目の項目です．
     @end enumerate

     @code{makeinfo}と@code{texinfo-format-buffer}コマンドは，このよう
     なTexinfoファイルをInfoファイルに変換し，@TeX{}は，それを印刷されたマ
     ニュアルに植字します．

Part 6:ドキュメントの終り
----------------

終りの部分は，それ自身が番号付けされていない章とノードの索引を生成するコマンド，(通常)目次を生成するコマンドと，ドキュメントの終りを示す @byeコマンドから成り立ちます．

     @node    Concept Index,    ,  First Chapter, Top
     @unnumbered Concept Index

     @printindex cp

     @contents
     @bye

結果
--

ここに，サンプルの最初の章の内容のようなものがあります．

     これは，最初の章の内容です．

     これは，番号付のリストです．

      1. これは，最初の項目です．

      2. これは，2番目の項目です．

     makeinfoとtexinfo-format-bufferコマンドは，このような TexinfoファイルをInfoファイルに変換し，TeXは，それを印刷されたマニュアルに植字します．

感謝と歴史
=====

Richard M. StallmanがTexinfoフォーマットを発明し，最初のプロセッサを書き，このマニュアルのEdition 1.0を作りました．Robert J. Chassellはこのマニュアルにかなりの修正と拡張をし，Edition 1.1を始めました．Brian Foxは，バージョン3.8まで，スタンドアローンのTexinfo配布物に責任があり， makeinfoとinfoを書きました．Karl BerryはTexinfo 3.8 から更新し，マニュアルのEdition 2.22を始めました．

この仕事の開発を助けてくれた全てに人々に感謝し，特に，François PinardとDavid D. Zuhnは飽きること無く，間違いと曖昧さの記録と報告をしてくれました．特に，幾度となくほとんど似ているエディションの退屈な査読に対し，Melissa Weisshausに感謝します．飽きること無い，Eli Zaretskiiと Andreas Schwabは，数え切れないパッチを供給してくれました．Zack Weinberg は，texinfo.texでマクロ構文をインプリメントするという，不可能ともいえることを行いました．その他，何十人もがパッチと提案を供給してくれ，それはChangeLogファイルで多いに感謝しています．我々の間違いは，我々自身のものです．

ちょっとした歴史:1970年代のCMUで，Brian Reidは印刷のためにドキュメントをマークアップするプログラムとScribeという名前の書式を開発しました．それは， Texinfoが行い，書式化というよりむしろドキュメントの内容を記述するような， @文字をコマンド導入に使用していました．

一方，MITの人々は他のものを開発し，それはBolioと呼ばれる余り違わない書式でした．これは，植字の言語としてTeXを使うように変更され，BoTeXになりました．

BoTeXは，印刷されたドキュメントのためのマークアップ言語としてのみ利用可能で，オンラインドキュメントはできませんでした．Richard Stallman (RMS) は，BolioとBoTeXの両方で仕事をしました．彼は，Infoと呼ばれる気のきいたオンラインヘルプ書式を開発し，Texinfoを作るため，BoTeXとInfoを組合せ，オンラインと印刷されたハードコピーの両方で読めるようにしたテキストのためのマークアップ言語となりました．

Texinfoモードを使う
*************

Texinfoファイルは，どんなテキストエディタを選んでも編集できます．Texinfo ファイルは，他のASCIIファイルと差がありません．しかし，GNU Emacsは， Texinfoモードと呼ばれる特別なモードがあり，仕事が楽になるようEmacsコマンドとツールを供給します．

この章は，GNU EmacsのTexinfoモードの特徴について述べ，Texinfo書式化言語の特徴は述べません．このマニュアルを始めからまっすぐ読んでいる場合，この章は軽く流し，詳細にTexinfoフォーマット言語を述べている章を読み終えた後戻りたくなるかもしれません．

Texinfoモードの概観
=============

Texinfoモードは，Texinfoファイルで働く特別な特徴を供給します．以下のようにできます．

  * 良く使う@-コマンドの挿入．

  * @node行の自動生成．

  * Texinfoソースファイルの構造を見せる．

  * ノードの，`Next'，`Previous'と，`Up'ポインタの自動的な作成と更新．

  * メニューの自動的な作成と更新．

  * マスターメニューの自動作成．

  * Infoのための，ファイルの一部または全部の書式化．

  * ファイルの一部または全部の，植字と印刷．

恐らく，最も役に立つ特徴の2つは，良く使う@-コマンドの挿入とノードポインタとメニューの作成です．

通常の，GNU Emacsエディットコマンド
======================

ほとんどの場合，通常のテキストモードのコマンドは，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 Pages (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度の後，@-コマンドの最初の文字を入力し呼び出します．

C-c C-c c
M-x texinfo-insert-@code
     @code{}を挿入し，カッコの間にカーソルを置きます．

C-c C-c d
M-x texinfo-insert-@dfn
     @dfn{}を挿入し，カッコの間にカーソルを置きます．

C-c C-c e
M-x texinfo-insert-@end
     @endを挿入し，exampleやtableといった，以下に続く正しい単語を推測します．(このコマンドはネストされたリストを正確に処理しませんが，すぐ前のリストに適切な単語を挿入します．)

C-c C-c i
M-x texinfo-insert-@item
     @itemを挿入し，次の行の始めにカーソルを置きます．

C-c C-c k
M-x texinfo-insert-@kbd
     @kbd{}を挿入し，カッコの間にカーソルを置きます．

C-c C-c n
M-x texinfo-insert-@node
     @nodeと，`Next'，`Previous'と，`Up'ノードに対し，連続したリストのコメント行を挿入します．@nodeの後にポイントは置かれます．

C-c C-c o
M-x texinfo-insert-@noindent
     @noindentを挿入し，次の行の最初にカーソルを置きます．

C-c C-c s
M-x texinfo-insert-@samp
     @samp{}を挿入し，カッコの間にカーソルを置きます．

C-c C-c t
M-x texinfo-insert-@table
     @tableとその後にSPCを挿入し，SPCの後にカーソルを置きます．

C-c C-c v
M-x texinfo-insert-@var
     @var{}を挿入し，カッコの間にカーソルを置きます．

C-c C-c x
M-x texinfo-insert-@example
     @exampleを挿入し，次の行の最初にカーソルを置きます．

C-c C-c {
M-x texinfo-insert-braces
     {}を挿入し，カッコの間にカーソルを挿入します．

C-c C-c }
C-c C-c ]
M-x up-list
     前後の閉じたカッコの間を移動します．C-c C-c ]はC-c C-c }より簡単ですが，後者の方が覚えやすいです．それで2つのキーバインドとなります．(同様に，C-fの入力で，カッコの間から出られます．)

存在する単語の周りに，@code{...}のようなコマンドを置くため，単語の前にカーソルを置き，C-u 1 C-c C-c cと入力してください．これで，簡単に既存のプレーンテキストを編集できます．プレフィクス引数の値は，1単語の場合は1，2単語の場合は2等のように，カッコの間に含める，それ以降の単語がいくつあるかをEmacsに伝えます．負の引数は，前の単語を囲むために使ってください．プレフィクス引数を指定しない場合， Emacsは，@-コマンド文字列を挿入し，カーソルをカッコの間に置きます．この特徴は，@kbdと@varのような，一つの単語や一行内の単語を操作する@-コマンドに対してのみ働きます．

この挿入コマンドのセットは，GNU Emacs ManualとGDB Manualで使われている，異なる@-コマンドの頻度の解析後に作られました．独自の挿入コマンドを加えたい場合，キーにキーボードマクロをバインドしたり，省略を使ったり，texinfo.elのコードを拡張することができます．

C-c C-c C-d(texinfo-start-menu-description)は，他の挿入コマンドと異なる，挿入コマンドです．それは，メニュー項目行で，記述のための空白にノードのセクションや章のタイトルを挿入します．(メニュー項目は3つの部分があり，項目名，ノード名と，記述です．ノード名のみ要求されますが，記述はノードが関係するものの説明を助けます．See 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ファイルの関連する場所に移動するため，行の1つにカーソルを置き，C-c C-cコマンド (occur-mode-goto-occurrence)を使うことができます．

C-c C-s
M-x texinfo-show-structure
     Texinfoファイルの@chapter，@sectionと，そのような行を表示します．

C-c C-c
M-x occur-mode-goto-occurrence
     *Occur*バッファのカーソルの下の行に関連する，Texinfoファイルの行に行きます．

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 Narrowing (The GNU Emacs Manual).)

texinfo-show-structureコマンドの供給に加えて，Texinfoモードは，章レベルの@-コマンドに一致する，ページデリミタ変数の値をセットします．これで，C-x ](forward-page)とC-x [ (backward-page)コマンドを，前後の章に移動するために使ったり， C-x p (narrow-to-page)コマンドを，章を小さくするために使ったりできます．ページコマンドの詳細は，see Pages (The GNU Emacs Manual).

ノードとメニューの更新
===========

Texinfoモードは，自動的にメニューとノードポインタを作成し更新するコマンドを供給します．コマンドは``更新''コマンドと呼ばれ，その理由は，作業後に Texinfoファイルを更新するため最も良く使われるためです．しかし，`Next'， `Previous'と，`Up'ポインタを，何も持たない@node行に挿入したり，何も持たないファイルでメニューを作成したりするために使うことができます．

更新コマンドを使わない場合，メニューとノードポインタを手で書く必要があり，それは退屈な仕事です．

更新コマンド
------

以下のために,更新コマンドを使うことができます．

  * ノードに，`Next'，`Previous'と，`Up'ポインタを挿入したり更新したりします．

  * セクションに対するメニューを挿入したり更新したりします．

  * Texinfoソースファイルに対し，マスターメニューを作成します．

Texinfoの一部や全体の，全てのノードとメニューを更新するため，コマンドを使うこともできます．

更新コマンドは，慣習的なTexinfoファイルでしか働かず，それは本に似た階層構造をしています．そのようなファイルで，構造的なコマンド行は，`Top' @node行以外の，それぞれの@node行に続くはずです．(構造的なコマンド行は，@chapter，@sectionや，他の似たコマンドで始まる行です．)

@node行の直後に続く行や，単一の@comment行や，単一の @ifinfo行の後に続く行に，構造的なコマンド行を書くことができます． @node行と構造的なコマンド行の間に，1行以上挿入できません． @comment行や，@ifinfo行のみ挿入できます．

バッファ全体で働くコマンドは，@chapterや，同等のレベルコマンドを使ったノードが続く`Top'ノードが必要です．メニュー更新コマンドは， @chapterレベルのノードしか持たないTexinfoファイルに対し，メインやマスターメニューを作成しません!メニュー更新コマンドは，低いレベルのノードのの中にメニューを作成するだけです．章のメニューを作成するために`Top'ノードを供給する必要があります．

メニュー更新コマンドは現在のバッファ内のノードを参照しないので，他のInfo ファイルを参照するメニュー項目を削除します．これは欠陥です．メニュー項目を使うより，他のInfoファイルを参照する相互参照を使うことができます．更新コマンドは相互参照に影響しません．

Texinfoモードは，良く使う5つの更新コマンドがあります．2つは，単一ノード (や領域)のノードポインタやメニューを更新します．2つは，ファイルの全てのノードポインタとメニューを更新します．もう1つは， texinfo-master-menuコマンドで，完全なファイルのマスターメニューを作成し，さらに，Texinfoファイル全体の全てのノードとメニューを更新します．

texinfo-master-menuコマンドは，主要なコマンドです．

C-c C-u m
M-x texinfo-master-menu
     全ての他のメニューを含むマスターメニューを作成更新します(既存のメニューがあれば，それから記述を含めます)．

     引数(対話的な場合，プレフィクス引数，C-u,)を使うと，マスターメニューを構築する前に，バッファの全ての通常のメニューを最初に作成更新します． (マスターメニューについては,see The Top Node and Master Menu.)

     texinfo-master-menuを働かせるため，Texinfoファイルは，`Top'ノードと，少なくとも1つのサブシーケンスノードがある必要があります．

     広範囲でTexinfoファイルを編集後，以下を入力します．

          C-u M-x texinfo-master-menu
          または
          C-u C-c C-u m

     これで，一度に全てのノードとメニューを，完全に更新します．

他の主要な更新コマンドは小さな仕事をし，人間がノードやメニューをTexinfo ファイルに書くように,設計されています．

以下のコマンドです．

C-c C-u C-n
M-x texinfo-update-node
     `Next'，`Previous'と，`Up'ポインタを，ポインタがあるノード(例えば， @node行をポイントの前)に挿入します．@node行に，`Next'， `Previous'や，`Up'ポインタがある場合，古いポインタは削除され新しいものが挿入されます．引数(対話的な場合，C-uプレフィクス引数)を使うと，このコマンドは，領域の全ての@node行を更新します(それは，ポイントとマークの間のテキストです)．

C-c C-u C-m
M-x texinfo-make-menu
     ポイントがあるノードのメニューを作成更新します．引数(対話的な場合は， C-uプレフィクス引数)を使うと，コマンドは領域内またはその一部のノードに対しメニューを作成更新します．

     texinfo-make-menuが既存のメニューを更新する場合は，メニューの記述は常に新しいメニューに挿入されます．これは，既存のメニューから，同じノード名を持つ新しいメニュー項目に記述をコピーすることで行います．ノードメニューが異なる場合，記述は新しいメニューにコピーされません．

C-c C-u C-e
M-x texinfo-every-node-update
     バッファ内の全てのノードに対し，`Next'，`Previous'と，`Up'ポインタを挿入更新します．

C-c C-u C-a
M-x texinfo-all-menus-update
     バッファ内の全てのメニューを作成更新します．引数(対話的な場合はプレフィクス引数C-u)を使うと，メニューで働く前に，最初に全てのノードを挿入更新します．

     マスターメニューがある場合，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 Editing Variable Values (The GNU Emacs Manual))や，M-x set-variable コマンド(see Examining and Setting Variables (The GNU Emacs Manual))で，変数をセットできます．

同様に，texinfo-indent-menu-descriptionを，既存のメニューでの記述の字下げの列の指定に使うことができます．終りに，希望があれば texinfo-insert-node-linesコマンドを，ファイルに足りない @node行を挿入するために使うことができます．(詳細はsee Other Updating Commands.)

必要条件の更新
-------

更新コマンドを使うため，章，セクション，サブセクションとそれに類するものを使って，Texinfoファイルを階層的に組織化する必要があります．マニュアルの階層化を構築するとき，一度に1レベル以上`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

この例で，`Comments'はノードとセクションの名前です．次のノードは `Minimum'と呼ばれ，前のノードは`Conventions'と呼ばれます．`Comments'セクションは`Overview'ノードにあり，`Up'ポインタで指定されます． (@comment行の代わりに，@ifinfo行を書くこともできます．)

ファイルに`Top'ノードがある場合，それは，topやTopと呼ばれ，ファイルの最初のノードにする必要があります．

メニュー更新コマンドは，章のセクションメニュー，セクションのサブセクションメニュー等を作ります．これは，章のメニューが欲しい場合，`Top'ノードが必要だということを意味します．

ところで，makeinfoコマンドは，`Next'，`Previous'と，`Up'ポインタが無い階層的に組織化されたTexinfoファイルに対し，Infoファイルを作ります．このように，Texinfoファイルがmakeinfoで書式化されるのを確かめることができる場合，ノード更新コマンドは不要です．(makeinfoの詳細は， see Creating an Info File.)しかし，makeinfoと texinfo-format-...コマンドでは，どちらもファイルにメニューを挿入する必要があります．

他の更新コマンド
--------

5つの主な更新コマンドに加え，Texinfoモードには余り使われない更新コマンドもあります．

M-x texinfo-insert-node-lines
     @node行を，Texinfoファイル全体で欠けている場合は， @chapter，@sectionと，その他のセクションコマンドの前に挿入します．

     引数(対話的な場合は，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 Inserting Frequently Used Commands)は，タイトルをメニュー項目に記述として挿入する，異なる動作です．しかし，どちらの場合でも挿入されたテキストを編集する必要があります．

M-x texinfo-multiple-files-update
     分離されたファイルから構築されたドキュメントで，ノードとメニューを更新します．プレフィクス引数C-uを使うと，外部ファイルにマスターメニューを作成挿入します．C-u 2のように，数字のプレフィクス引数を使うと，外部ファイルにマスターメニューを作成挿入する前に，全てのインクルードファイルの全てのメニューと，全ての`Next'，`Previous'と，`Up'ポインタを最初に更新します．texinfo-multiple-files-updateコマンドは， @includeファイルの付録で述べられています． See texinfo-multiple-files-update.

M-x texinfo-indent-menu-description
     指定された列の位置に，メニューのすべての記述を字下げします．記述により多くのスペースを与えるために，このコマンドを使うことができます．引数(対話的な場合，C-u引数)を使うと，texinfo-indent-menu-description コマンドは，領域の全てのメニューの記述をを字下げします．しかし，このコマンドは，複数行の記述行の2番目と次に続く行を字下げしません．

M-x texinfo-sequential-node-update
     現在のノードの直前直後に，ノードの階層レベルに係わらず，`Next'や `Previous'ポインタとしてノード名を挿入します．これは，サブセクションの `Next'ノードが次の章にできることを意味します．連続して並んだノードは，小説や順番に読んでいくドキュメントで役立ちます．(しかしInfoでは，g * コマンドでファイルを順番に見ることができ，順番に並んだノードは厳密には不要です．)引数(対話的な場合は，プレフィクス引数)を使うと， texinfo-sequential-node-updateコマンドは領域の全てのノードを更新します．

Infoの書式化
========

Texinfoモードは，InfoのためTexinfoファイルの一部または全体を書式化するコマンドも供給します．ドキュメントを書いているとき，ファイルの一部だけ，すなわち領域を書式化したいことが良くあります．

texinfo-format-regionやmakeinfo-regionコマンドを使って，領域の書式化ができます．

C-c C-e C-r
M-x texinfo-format-region
C-c C-m C-r
M-x makeinfo-region
     Infoのため，現在の領域の書式化を行います．

texinfo-format-bufferやmakeinfo-bufferコマンドを使って，バッファ全体の書式化ができます．

C-c C-e C-b
M-x texinfo-format-buffer
C-c C-m C-b
M-x makeinfo-buffer
     Infoのため，現在のバッファを初期化します．

例えば，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 Creating an Info File.

書式化と印刷
======

Texinfoファイルの植字と印刷は，最初に印刷のための(DVIと呼ばれる)ファイルを作り，ファイルを印刷するという，複数のステップによる処理になります．オプションで索引を作ることもできます．こうするため，最初にtex植字コマンドを実行した後，texindexコマンドを実行する必要があります．そして，もう一度texコマンドを実行する必要があります．また別の方法として，必要なら索引を自動的に作成する，texi2dviコマンドを実行します(see Format with texi2dvi)．

ドキュメントを書いているとき，見え方を見るため，ファイルの一部だけを植字し印刷したいときが良くあります．texinfo-tex-regionと，この目的に関係するコマンドを使うことができます．texinfo-tex-bufferコマンドは，バッファ全体の書式化に使ってください．

C-c C-t C-b
M-x texinfo-tex-buffer
     バッファでtexi2dviを実行します．バッファでTeXの実行に追加し，このコマンドは，必要な場合，自動的に索引を作成更新します．

C-c C-t C-r
M-x texinfo-tex-region
     領域でTeXを実行します．

C-c C-t C-i
M-x texinfo-texindex
     texinfo-tex-regionで書式化されたTexinfoファイルの索引をソートするため，texindexを実行します．texinfo-tex-regionコマンドは，自動的にtexindexを実行しません．それは，tex植字コマンドを実行するだけです．texindexコマンドで生の索引ファイルをソートした後，texinfo-tex-regionコマンドを2回実行する必要があります．(通常，領域を書式化したときは，索引を書式化せず，バッファを書式化したときのみ行います．現在はtexi2dviコマンドがあるので，このコマンドはほとんど，あるいは全く必要ありません．)

C-c C-t C-p
M-x texinfo-tex-print
     前もって，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 Hardcopy.

Texinfoモードの概要
=============

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を使うと，
                     最初に全てのノードを作成更新し
                     そして全てのメニューを作成更新します．

Infoの書式化
--------

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     makeinfo出力バッファの更新．
     C-c C-m C-k     makeinfo書式化の停止．

植字と印刷
-----

TeXの植字と印刷コマンドは，C-c C-tと入力してから，もう1つ制御コマンドを入力して呼び出します．texinfo-tex-regionのためのC-r， texinfo-tex-bufferのためのC-b，等などです．

     C-c C-t C-r     TeXを領域で実行．
     C-c C-t C-b     texi2dviをバッファで実行．
     C-c C-t C-i     texindexの実行．
     C-c C-t C-p     DVIファイルの印刷．
     C-c C-t C-q     プリントキューの表示．
     C-c C-t C-d     プリントキューからジョブを削除．
     C-c C-t C-k     現在のTeX書式化の停止．
     C-c C-t C-x     現在停止中のTeX書式化を終了．
     C-c C-t C-l     出力バッファの更新．

その他の更新コマンド
----------

残っている更新コマンドは滅多に使わないので，キーバインドはありません．

     M-x texinfo-insert-node-lines
                     領域に足りない@node行を挿入．
                     プレフィクス引数C-uを使うと，
                     セクションタイトルをノード名として使用．

     M-x texinfo-multiple-files-update
                     複数ファイルのドキュメントの更新．
                     プレフィクス引数C-u 2を使うと，
                     最初に全てのインクルードファイルを
                     作成更新．

     M-x texinfo-indent-menu-description
                     記述の字下げ．

     M-x texinfo-sequential-node-update
                     厳密な順序でノードポインタの挿入．

Texinfoファイルを始める
***************

情報の特定の部分は，Texinfoファイルの最初に供給する必要があり，それは，ファイル名やドキュメントタイトルのようなものです．

ファイルの始めの4つの部分
=============

通常，Texinfoの始まりは，4つの部分があります．

 1. ヘッダは，特別なコメント行で分離されていて，Texinfoファイルを命名するコマンドを含み，TeXにTexinfoファイルを処理するとき使う定義ファイルを伝えます．

 2. ファイルが関連するものの短い提示で，著作権の注意と著作権の許可があります．これは，Infoファイルでのみフォーマッタが配置するように，@ifinfo と@end ifinfoコマンドで囲まれています．

 3. タイトルページと著作権のページで，著作権の注意と著作権の許可があります．これは，@titlepageと@end titlepageコマンドで囲まれています．タイトルと著作権ページは印刷されたマニュアルのみで現れます．

 4. Infoファイル全体のメニューを含む`Top'ノードです．このノードの内容はInfo ファイルのみで現れます．

追加で，プログラムのコピー条件と保証の放棄を含むこともできます．コピーのセクションは，マニュアルの「はじめに」の部分や最初の章が続きます．

Texinfoドキュメントの著作権の注意と著作権の許可は(プログラムのコピーの許可に比べ)，Infoファイルや印刷されたマニュアルでしか現れない部分にあるので，この情報は2度与える必要があります．

Texinfoファイルの始まりのサンプル
====================

以下のサンプルは，必要なものを現しています．

     \input texinfo   @c -*-texinfo-*-
     @c %**start of header
     @setfilename NAME-OF-INFO-FILE
     @settitle NAME-OF-MANUAL
     @setchapternewpage odd
     @c %**end of header

     @ifinfo
     このドキュメントファイルは...

     Copyright YEAR COPYRIGHT-OWNER

     Permission is granted to ...
     @end ifinfo

     @c  This title page illustrates only one of the
     @c  two methods of forming a title page.

     @titlepage
     @title NAME-OF-MANUAL-WHEN-PRINTED
     @subtitle SUBTITLE-IF-ANY
     @subtitle SECOND-SUBTITLE
     @author AUTHOR

     @c  The following two commands
     @c  start the copyright page.
     @page
     @vskip 0pt plus 1filll
     Copyright @copyright{} YEAR COPYRIGHT-OWNER

     Published by ...

     Permission is granted to ...
     @end titlepage

     @node Top, Overview, , (dir)

     @ifinfo
     このドキュメントが述べているのは...

     このドキュメントは，プログラム名...のバージョン...に対応します．
     @end ifinfo

     @menu
     * Copying::          Your rights and freedoms.
     * First Chapter::    Getting started ...
     * Second Chapter::              ...
       ...
       ...
     @end menu

     @node    First Chapter, Second Chapter, top,      top
     @comment node-name,     next,           previous, up
     @chapter First Chapter
     @cindex Index entry for First Chapter

Texinfoファイルのヘッダ
===============

Texinfoファイルは，少なくとも，InfoとTeXに必要な情報を供給する3行から始めます．これらは，\input texinfo行，@settitle行と， @setfilename行です．Texinfoファイルの一部でTeXを実行したい場合，@settitleと@setfilename行を，start-of-headerと end-of-header行の間に書く必要があります．

それで，Texinfoファイルの始まりは，このようになります．

     \input texinfo   @c -*-texinfo-*-
     @setfilename sample.info
     @settitle Sample Document

または，このようになります．

     \input texinfo   @c -*-texinfo-*-
     @c %**start of header
     @setfilename sample.info
     @settitle Sample Document
     @c %**end of header

Texinfoファイルの最初の行
----------------

TeXに入力する最上位となるすべてのTexinfoファイルは，以下の行で始める必要があります．

     \input texinfo   @c -*-texinfo-*-

この行は，2つの機能を提供します．

 1. ファイルがTeXで処理されるとき，\input texinfoコマンドは， Texinfoファイルを処理するため必要なマクロを，TeXにロードするよう伝えます．これらは，texinfo.texと呼ばれるファイルにあり，通常， /usr/lib/tex/macrosディレクトリにあります．TeXはバックスラッシュ \をコマンドの始めの印として使い，ちょうどTexinfoが使う@のようなものです．texinfo.texファイルは，\を@に切替えます．切替え前に，TeXは\を要求し，それがファイルの最初に現す理由です．

 2. ファイルをGNU Emacsで編集するとき，-*-texinfo-*-モード指定は， EmacsにTexinfoモードを使うよう伝えます．

ヘッダを始める
-------

Texinfoファイルの2行目に，start-of-header行を書いてください． start-of-header行に続けて，@setfilenameと@settitle行と，オプションで@smallbookや@footnotestyleのような，他のコマンド行を書いてください．そしてend-of-header行になります．(see End of Header)．

これらの行を使うと，Infoの部分の書式化や印刷部分の植字ができます．

start-of-header行は以下のようになります．

     @c %**start of header

%**という奇妙な文字列は，他のコメントが偶然start-of-header行だと思われないことを保証します．

@setfilename
------------

makeinfoやTeXのための主要な入力ファイルとして提供するため， Texinfoファイルは以下の行を含む必要があります．

     @setfilename INFO-FILE-NAME

@setfilenameコマンドを行の最初に書き，同じ行にInfoファイル名を続けてください．その行に他のものは書かないでください，その行のコマンド後は，コメントであっても，全てファイル名の一部と考えられます．

@setfilenameは，生成する出力ファイルの名前を指定します．この名前は Texinfoファイルの名前と異なるべきです．名前を選ぶ慣習が2つあり，入力ファイル名から(.texiのような)拡張子を削除したり，.info拡張子で置換したりできます．HTML出力の処理のとき，makeinfoは，あらゆる拡張子を htmlに置換するか，拡張子が無い場合は.htmlを加えます．

オペレーティングシステムには，長いファイル名を扱わないものもあります．あなたが指定したファイル名が十分短い時でも，問題となるはずです．これは，Infoフォーマッタが長いInfoファイルを短い間接的なサブファイルに分け，-1， -2， ...，-10，-11等を，元のファイル名に加えるためです．(see Tag Files and Split Files.)例えば，サブファイル名texinfo.info-10は，システムにとって長すぎることもあります．そのため，このドキュメントのInfoファイル名は，texinfo.infoではなくtexinfoとしています．makeinfoを，MSーDOSのようなファイル名に重大な制限を加えるオペレーティングシステムで実行するとき，それは元のファイル名から数文字削除し，サブファイルのサフィックスに十分なものだけ残し，そしてファイル名は，texin-10，gcc.i12等になります．

Info書式化コマンドは，@setfilename行の前に書かれている全てのものを無視し，それは，ファイルの最初の行(\input行)を出力に表示しません．

@setfilename行は，TeXでマニュアルを植字するとき出力を作成しませんが，それにも関わらず不可欠です．それは，索引，相互参照と，その他の Texinfoファイルが使う追加ファイルを開き，システムにtexinfo.cnfファイルがあれば，それも読み込みます(see Preparing for TeX)．

@settitle
---------

印刷されたマニュアルにするため，Texinfoファイルは，以下のような行を含める必要があります．

     @settitle TITLE

@settitleコマンドを行の最初に書き，同じ行にタイトルを続けてください．これは，TeXにヘッダやフッタで使うタイトルを伝えます．その行には他に何も書かないでください．コマンド以降のその行は，タイトルの一部と考えられ，それにはコメントも含みます．

慣習的に，TeXでTexinfoファイルを両面出力物のための書式化するとき，タイトルは左側(偶数)のページの見出しに印刷され，現在の章のタイトルは右側(奇数 )のページの見出しに印刷されます．(TeXは，それぞれの@chapterコマンドからの，それぞれの章のタイトルを，記憶します．)ページフッタは印刷されません．

片面スタイルの場合でさえ，TeXは@settitleコマンド行を探し，マニュアルタイトルを見出しに含める場合に備えます．

@settitleコマンドは，TeXの実際に生成される全ての出力の前に置くべきです．

@settitleコマンドのタイトルは，通常タイトルページのタイトルと同じですが，タイトルページに現れるタイトルに影響しません．このように，2つは正確に一致する必要はありません．そして，@settitleコマンドのタイトルは，タイトルページに現れるタイトルの，短い，あるいは拡張版にできます． (see @titlepage.)

TeXは，Texinfoファイルの@end titlepage以降や，見出しを付ける @headingsコマンド以降のテキストに対してのみ，ページ見出しを印刷します．(詳細は，see The @headings Command.)

希望があれば，独自のカスタム見出しやフッタを作ることができます．この処理の詳細な記述は，see Page Headings.

@setchapternewpage
------------------

公式に製本された本で，テキストは通常，紙の両面に印刷され，章は右側のページから始まり，右のページは偶数番号です．しかし，短いレポートでテキストが紙の片面で印刷されることも良くあります．また短いレポートで，章で改ページしないときもありますが，小量の縦方向の空白の後，前の章の終りと同じページで印刷されます．

@setchapternewpageコマンドを，TeXが章を開始する方法と，紙の片面や両面に印刷する(1面や2面印刷の)ためのヘッダの書式化の方法を指定する，様々な引数で使用できます．

@setchapternewpageコマンドを，行の最初に引数を続けて書いてください．

例えば，それぞれの章を新しい偶数ページから始めるため，以下のように書きます．

     @setchapternewpage odd

@setchapternewpageコマンドで，3つの選択肢の1つを指定できます．

@setchapternewpage off
     TeXに，直前の章と同じページで，いくつかの縦方向の空白を挟み，新しい章を植字させます．同様に，TeXに片面印刷のためのページヘッダの書式化をさせます．(@headings doubleコマンドで，ヘッダの書式化を優先できます．The @headings Command,を参照してください．)

@setchapternewpage on
     TeXに，新しいページで章を開始させ，片面印刷のためのページヘッダの書式化をさせます．これは，短いレポートや個人的な印刷で最も良く使われる形式です．

     この選択肢はデフォルトです．

@setchapternewpage odd
     TeXに，新しい章を新しい偶数ページ(右側のページ)で開始させ，両面印刷のための植字をさせます．これは，本やマニュアルで最も良く使われる形式です．

Texinfoには，@setchapternewpage evenコマンドはありません．

@setchapternewpageコマンドのヘッダに対する効果を， @headingsコマンドで取り消したり変更したりできます． See The @headings Command.

マニュアルや本の最初でページは番号付けされません---例えば，本のタイトルと著作権のページは番号付けされていません．慣習で，目次のページはローマ数字で番号付けされ，ドキュメントの残りの部分に続けません．

Infoファイルはページが無いので，@setchapternewpageはそれに対し効果はありません．

要求される出力物がドキュメントの本質ではないため， @setchapternewpageコマンドをマニュアルのソースに入れるよう，全く要求されません．代わりに，デフォルトオプション(空白ページがない，全てのページで同じヘッダ)が不要な場合，texi2dviへの--texinfoオプションを，お望みの出力指定に利用してください．

段落の字下げ
------

Texinfoプロセッサは，それぞれの段落の最初の行の始めに空白を挿入し，それにより段落を字下げします．@paragraphindentコマンドを，この字下げの指定に使うことができます．行の最初に，@paragraphindentコマンドを asisや数字を続けて書いてください．

     @paragraphindent INDENT

字下げは，INDENTの値に従います．

asis
     既存の字下げを変更しません(TeXでは実装されていません)．

0
     すべての字下げを取り消します．

N
     Info出力ではN個の空白文字，TeXではN字下げします．

INDENTのデフォルト値はasisです．@paragraphindentは， HTML出力では無視されます．

@paragraphindentコマンドは，Texinfoファイルの最初に， end-of-header行の前かすぐ後に書いてください．(start-of-headerと end-of-header行の間に書いた場合，領域書式化コマンドは，指定されたように段落を字下げします．)

texinfo-format-bufferとtexinfo-format-regionの特別なところは， @wや@*コマンドを含む段落を字下げしない(または補充しない)ことです．詳細は，see Refilling Paragraphs.

@exampleindent:環境に応じた字下げ
------------------------

The Texinfo processors indent each line of @example and similar environments.  You can use the @exampleindent command to specify this indentation.  Write an @exampleindent command at the beginning of a line followed by either asis or a number:

Texinfoプロセッサは，それぞれの@exampleとそれに似た環境の行で字下げします．@exampleindentコマンドで字下げを指定できます． @exampleindentコマンドを，行の始めにasisや数字を続けて書いてください．

     @exampleindent INDENT

字下げは，INDENTの値に従います．

asis
     既存の字下げを変更しません(TeXでは実装されていません)．

0
     すべての字下げを取り消します．

N
     Info出力では，N個の空白文字，TeXではN，環境に応じて字下げします．

INDENTのデフォルト値は5です．@exampleindentはHTML出力で無視されます．

@exampleindentコマンドは，Texinfoファイルの最初に，end-of-header行の前かすぐ後に書いてください．(start-of-headerとend-of-header行の間に書いた場合，領域書式化コマンドは指定されたように例を字下げします．)

ヘッダの終り
------

ヘッダ行に，end-of-headerを続けてください．end-of-headerは以下のとおりです．

     @c %**end of header

start-of-headerとend-of-header行の間に，@setchapternewpageコマンドを含める場合，TeXは，コマンドで指定したように領域を植字します．同様に， start-of-headerとend-of-header行の間に，@smallbookコマンドを含める場合，TeXは``小さな''本の書式で領域を植字します．

奇妙な文字(%**)の文字列の理由は，texinfo-tex-regionコマンドが，ヘッダを探しているとき，偶然そうでないものが見つけないようにするためです．

start-of-header行とend-of-header行は，変更可能なTexinfoモード変数です．

Infoの著作権許可の概要
=============

タイトルページと著作権ページは，マニュアルの印刷されたコピーにのみ現れます．それゆえ，同じ情報をInfoファイルにのみ現れるセクションに挿入する必要があります．このセクションは，通常，Infoファイルの内容の短い記述，著作権の注意と，著作権の許可を含みます．

著作権の注意は読むべきです．

     Copyright YEAR COPYRIGHT-OWNER

そして，それは単独にします．

著作権の許可のための標準テキストは，このマニュアルの付録に含まれています．完全なテキストは，ifinfo Copying Permissions,を参照してください．

許可のテキストは，Infoファイルの最初のノードの前に現れます．これは，アドバンスドInfoコマンドg *を使うとき以外，Infoを使うファイルを読むとき，読者がこのテキストを読まないことを意味します．

タイトルと著作権ページ
===========

マニュアルの名前と著作者は，通常はタイトルページに印刷されます．著作権情報も同様に，タイトルページに印刷されることもあります．ほとんどの場合，著作権情報は，タイトルページの裏に印刷されます．

タイトルと著作権ページは印刷されたマニュアルでは現れますが，Infoファイルには現れません．このため，Infoファイルで使えない，分かりにくいTeX植字コマンドを，僅かですが使うことができます．さらに，Texinfoファイルの始めのこの部分は，印刷されたマニュアルに現れる著作権の許可のテキストを含みます．

プレーンテキスト出力のため，タイトルページのような情報を含めたい場合もあります．単純に，@ifinfoと@end ifinfoの間に，そのような導入材料を置いてください．makeinfoは，これをプレーンテキスト出力に含めます．Infoリーダーでは表示されません．

著作権許可の標準テキストは，see Titlepage Copying Permissions.

@titlepage
----------

タイトルページと，それに続く著作権ページのための材料は， @titlepageのみの行で始め，@end titlepageのみの行で終ります．

@end titlepageコマンドは，新しいページを始め，ページ番号付けを開始します．(ページ見出し生成の詳細は，see Page Headings.)  番号付けされないページにしたいものは， @titlepageと@end titlepageコマンドの間に置きます．@setcontentsaftertitlepageコマンドで，目次をそこに現すことができます(see Contents)．

@pageコマンドを使うと，@titlepageと@end titlepageコマンドで線引きをした領域で改ページでき，1ページ以上のページ付けされないものが作成できます．これは，著作権ページを作成する方法です． (@titlepageコマンドは，おそらく@titleandadditionalpagesと名付けた方がいいのですが，それは長すぎます!)

コンピュータプログラムのマニュアルを書くとき，マニュアルが適合するプログラムのバージョンをタイトルページに書くべきです．マニュアルが，プログラムより変更頻度が高い，または，プログラムに依存しない場合，マニュアルのエディション番号 (我々は，マニュアルのバージョンを`edition'として，プログラムのバージョンを`version'として参照することが便利だと分かりました．そうしない場合，慣習的にドキュメントとソフトウェアの両方を同じ単語で言及すると，お互いに混乱しやすいことが我々は分かりました．)含めるべきです．これは，マニュアルがどのプログラムのバージョンに対するものかを，読者が追跡する助けとなります．(`Top'ノードは，この情報も含みます．@top,を参照してください．)

Texinfoは，タイトルページを作るため，2つの主な方法を提供します．1つの方法は，@titlefont，@spと，@centerコマンドを，ページの単語をセンタリングした，タイトルページを生成するために使います．

2番目の方法は，@title，@subtitleと，@authorコマンドを，タイトルの下に黒い罫線をつけてタイトルページを作り，著作者の行とサブタイトルテキストをページで右寄せするために使います．この方法を使うと，タイトルページの実際の書式化を何も指定しません．テキストを望み通りに指定し， Texinfoは書式化を行います．

どちらかの方法，または，両方組み合わせて使うことができます．以下のセクションでサンプルを参照してください．

非常に簡単なアプリケーションのためと，伝統的な本の前部の規格外のタイトルページのため，Texinfoはタイトルを単一の引数とする@shorttitlepageコマンドも供給しています．引数は，ページにそれだけを植字し，次は空白のページになります．

@titlefont，@centerと，@sp
-----------------------

印刷されたドキュメントに対しタイトルページを作るため，@titlefont， @spと，@centerコマンドを使うことができます．(これは， Texinfoのタイトルページを作る，二つの方法の内の最初のものです．)

タイトル自身に適した大きなフォントを選択するため，@titlefontコマンドを使ってください．特に長いタイトルがある場合，1度以上 @titlefontを使うことができます．

例えば，以下のようにします．

     @titlefont{Texinfo}

残りのテキストを行の中心に置くため，行の最初で@centerコマンドを使ってください．こうして，以下のようになります．

     @center @titlefont{Texinfo}

例では，タイトル``Texinfo''はセンタリングされ，タイトルフォントで印刷されます．

縦の空白を挿入するため，@spコマンドを使ってください．例えば，以下のようにします．

     @sp 2

これは，印刷されたページに2行の空白行を挿入します．(@spコマンドの詳細は，see @sp.)

この手法のテンプレートは，以下のようになります．

     @titlepage
     @sp 10
     @center @titlefont{NAME-OF-MANUAL-WHEN-PRINTED}
     @sp 2
     @center SUBTITLE-IF-ANY
     @sp 2
     @center AUTHOR
     ...
     @end titlepage

例の空白は，8.5x11インチのマニュアルに適しています．

@title，@subtitleと，@author
-------------------------

垂直と水平方向に，自動的に空白を置いたタイトルページを作るため， @title，@subtitleと，@authorコマンドを使うことができます．これは前のセクションの記述とは異なり，@spコマンドは，垂直方向の空白調整に必要です．

@title，@subtitleと，@authorコマンドを行の最初に，タイトル，サブタイトルや，著作者を続けて書いてください．

@titleコマンドは，ページの左側に通常より大きいフォントでタイトルをセットした行を生成します．タイトルは黒い罫線の下線があります．1行のみ可能です．@*コマンドを，タイトルを2行に分けるために使ってはいけません．非常に長いタイトルを扱うため，@titleと@titlefontの両方を使った方が便利だと分かるかもしれません．このセクションの最後の例を参照してください．

@subtitleコマンドは，通常の大きさのフォントで，ページの右側にサブタイトルをセットします．

@authorコマンドは，著作者(達)の名前を，中間の大きさのフォントで，ページの左側に，タイトルページの下の近くの行にセットします．名前は，タイトルの下線より細い黒い罫線の下線があります．(黒い罫線は，@authorコマンド行に，@pageコマンド行が続く場合に生じます．)

@authorコマンドを使うため2つの方法があります．@authorコマンドで始まった行の残りの部分に，名前(達)を書くことができます．

     @author by Jane Smith and John Doe

または，2つ(またはそれ以上)のそれぞれの前に@authorを使って，名前を書くことができます．

     @author Jane Smith
     @author John Doe

(下の名前のみ，黒い罫線の下線がつきます．)

この方法のテンプレートは，以下のようになります．

     @titlepage
     @title NAME-OF-MANUAL-WHEN-PRINTED
     @subtitle SUBTITLE-IF-ANY
     @subtitle SECOND-SUBTITLE
     @author AUTHOR
     @page
     ...
     @end titlepage

前のセクションで記述された@titlefontの方法と，ここで記述されている @titleの方法を組み合わせることもできます．これは，長いタイトルの場合便利です．ここに，現実的な例があります．

     @titlepage
     @titlefont{GNU Software}
     @sp 1
     @title for MS-Windows and MS-DOS
     @subtitle Edition @value{edition} for Release @value{cd-edition}
     @author by Daniel Hagerty, Melissa Weisshaus
     @author and Eli Zaretskii

(ここでの@valueの使用は，@value Example,で述べられています．)

著作権ページと許可
---------

国際的な条約で，本の著作権の注意は，タイトルページかタイトルページの裏にするべきです．著作権の注意は，年と，それに続いて，著作権を所有する組織か人の名前を含めるべきです．

著作権の注意がタイトルページの裏にあるとき，そのページは慣習的に，番号付けされません．それゆえ，Texinfoでは，著作権ページの情報は， @titlepageと@end titlepageコマンドの間にすべきです．

@pageコマンドを，改ページに使用してください．著作権の注意と著作権ページの他のテキストがページの下になるように，@pageコマンドの後に，幾分奇妙な行を書くことができ，以下のようにします．

     @vskip 0pt plus 1filll

これは，Info書式化コマンドがサポートしていないTeXコマンドです． @vskipコマンドは空白を挿入します．0pt plus 1filllは，0ポイントの必須の空白を置き，以下のテキストを，ページの下に置くのに必要な追加の空白を置くことを意味します．filllの3つのlを使うことに注意してください．これは，TeXでは正しい使い方です．

印刷されたマニュアルでは，@copyright{}コマンドは，円の中の cを生成します．(Infoでは，(C)を生成します．)著作権の注意は，以下の合法的に定義された順番があります．

     Copyright © YEAR COPYRIGHT-OWNER

著作権の注意の後でマニュアルの取得方法の情報を置くことは慣習的で，続けてマニュアルの著作権の許可を置きます．

許可は，ヘッダに続けた@ifinfoと@end ifinfoでの概要部分と同じものを，ここで与える必要があり，それは，このテキストは印刷されたマニュアルでのみ現れ，ifinfoテキストはInfoファイルでのみ現れるためです．

標準的なテキストは，see Sample Permissions.

見出しの生成
------

単独行の@end titlepageコマンドは，タイトルと著作権のページの終りをマークするだけでなく，TeXにページ見出しとページ番号の生成を開始させます．

他で述べた繰り返しですが，Texinfoは，2つの標準ページ見出しの書式があり， 1つは，紙のそれぞれの片側に印刷されたドキュメント(片面印刷)のためで，もう 1つは，それぞれの用紙の両側に印刷されたドキュメント(両面印刷)のためです． (see @setchapternewpage.)これらの書式化を，異なる方法で指定できます．

  * 従来の方法は，@setchapternewpageコマンドをタイトルページコマンドの前に書くもので，@end titlepageは，要求された方法でページ見出しの生成を開始します．(see @setchapternewpage.)

  * 他の方法として，生成されたものへのページ見出しを阻止したり，片面または両面印刷で開始したりするため，@headingsコマンドを使うことができます． (@headingsコマンドを，@end titlepageコマンドの直後に書いてください．詳細は，see The @headings Command.)

  * または，独自のページ見出しとフッタの書式を指定できます．ページ見出しとフッタの詳細は，see Page Headings.

ほとんどのドキュメントは標準的な片面または両面の書式で書式化され，両面印刷のため@setchapternewpage oddを使い，片面印刷のため @setchapternewpageコマンドを使いません．

@headingsコマンド
-------------

@headingsコマンドは，滅多に使われません．それは，それぞれのページに印刷するページ見出しとフッタの種類を指定します．通常，これは， @setchapternewpageコマンドで制御されます． @setchapternewpageコマンドが望まないことをしたり，独自の定義の前に前もって定義されているページ見出しを止める場合のみ，@headingsコマンドが必要です．@headingsコマンドを，@end titlepageコマンドの直後に書いてください．

以下のように，@headingsを使うことができます．

@headings off
     ページ見出しの印刷を停止します．

@headings single
     片面印刷に適したページ見出しを開始します．

@headings double
@headings on
     両面印刷に適したページ見出しを開始します．2つのコマンド， @headings onと@headings doubleは同意語です．

@headings singleafter
@headings doubleafter
     現在のページを出力した後，それぞれ，singleまたはdouble見出しを開始します．

@headings on
     ページ見出しを開始します．@setchapternewpage onの場合は singleで，それ以外ではdoubleです．

例えば，前の章の終りに続けて同じページで新しい章を開始するようTeXに伝えるための@titlepageコマンドの前に，@setchapternewpage offを書く場合を考えます．また，このコマンドは，片面印刷のページヘッダをTeXに植字させます．両面印刷でTeXに植字させるため，@end titlepageコマンドの後に@headings doubleを書いてください．

@end titlepageコマンドを含む行の直後に，単独行の@headings offを書くことで，TeXのページ見出しの生成を停止できます．

     @end titlepage
     @headings off

@headings offコマンドは，@end titlepageコマンドに優先し，それ以外の場合は，TeXにページ見出しを印刷させます．

ページ見出しとフッタの独自のスタイルの指定もできます．詳細は， see Page Headings.

`Top'ノードとマスターメニュー
=================

`Top'ノードは，Infoファイルの入口のノードです．

`Top'ノードは，Infoファイルの短い記述と，Infoファイル全体の大規模なマスターメニューを含むべきです．これは，読者がInfoファイルが何について書いてあるのかを理解する助けとなります．また，Infoファイルが適応するプログラムのバージョンナンバーを書くべきです．または，少なくともエディションナンバーを書くべきです．

`Top'ノードの内容は，Infoファイルでのみ現れます．@ifinfoと @end ifinfoコマンドで囲まれているので，印刷された出力物では何も現れません．(TeXは@node行もメニューも印刷しません．Infoでのみ現れます．厳密には，@ifinfoと@end ifinfoでこれらの部分を囲む必要はありませんが，そうするのが最も簡単です．See Conditionally Visible Text.)

`Top'ノードのタイトル
-------------

@node Top行の直後のドキュメントの，タイトルを含む@topセクションコマンド行を，置きたい場合もあります(詳細は，see The @top Sectioning Command)．

例えば，このマニュアルの`Top'ノードの始めは，@topセクションコマンド，短い記述と，エディションとバージョン情報を含んでいます．それは，以下のようになっています．

     ...
     @end titlepage

     @ifnottex
     @node Top, Copying, , (dir)
     @top Texinfo

     Texinfoは，ドキュメントシステムで...

     これは，エディション...

     ...
     @end ifnottex

     @menu
     * Copying::                 Texinfo is freely
                                   redistributable.
     * Overview::                What is Texinfo?
     ...

     @end menu

`Top'ノードで，`Previous'と`Up'ノードは，通常Infoシステム全体のトップレベルのディレクトリを参照し，それは，(dir)と呼ばれます．`Next'ノードは，それに続くメインまたはマスターメニューの最初のノードを参照し，それは，通常著作権の許可，はじめにや，第1章です．

マスターメニュー部
---------

マスターメニューは，ファイル全体のノードをリストアップする詳細なメインメニューです．

マスターメニューは，@menuと@end menuコマンドで囲まれていて，印刷されたドキュメントには現れません．

一般に，マスターメニューはいくつかの部分に分かれています．

  * 最初の部分は，Texinfoファイルの主なノードを含みます．章のノード，章のようなノードと，付録です．

  * 2番目の部分は，索引のノードを含みます．

  * 3番目の部分とそれに続く部分は，その他の低レベルのノードで，章の順番のリストを含みます．このように，中間メニューを通過するよりはむしろ特定の情報を探すとき，探している人は特定のノードへ直接行くことができます．これらのメニューアイテムは，必要ではありません．便利だと思う場合は，追加してください．それらを使う場合，@detailmenuを最初のものの前に置き，@end detailmenuを最後のものの後に置きます．そうしなければ，makeinfoは混乱します．

メニューのそれぞれのセクションは，記述行で紹介されています．そのため，アスタリスクで始まらない程長い行は，メニュー項目として扱われません．(詳細は， see Writing a Menu.)

例えば，このマニュアルのマスターメニューは，以下のようになっています(もっと多くの項目がありますが．)

     @menu
     * Copying::             Texinfo is freely
                               redistributable.
     * Overview::            What is Texinfo?
     * Texinfo Mode::        Special features in GNU Emacs.
     ...
     ...

     * Command and Variable Index::
                             An entry for each @-command.
     * Concept Index::       An entry for each concept.

     @detailmenu
      --- The Detailed Node Listing ---

     Overview of Texinfo

     * Info Files::          What is an Info file?
     * Printed Manuals::     Characteristics of
                               a printed manual.
     ...
     ...

     Using Texinfo Mode

     * Info on a Region::    Formatting part of a file
                               for Info.
     ...
     ...
     @end detailmenu
     @end menu

ソフトウェアコピーの許可
============

Texinfoファイルが，``General Public License''と，文章化されたソフトウェアに対する配布情報と免責を含むセクションがある場合，このセクションは，通常 `Top'ノードに続きます．General Public Licenseは，Project GNUのソフトウェアにとって，非常に重要です．それは，万人に対するソフトウェアの使用と共有の維持を保証します．

コピーと配布の情報と，免責には，はじめにやマニュアルの最初の章が続きます．

はじめには，Texinfoの必須部分ではありませんが，大変役に立ちます．理想的には，それはファイルが何に関係するするのか，誰が興味を持って読むのかを，明白に簡潔に述べるべきです．ドキュメントの最初の方に置く人もいますが，一般に，はじめににはライセンスと情報の記述が続きます．通常，はじめには， @unnumberedセクションに置きます．(see The @unnumbered and @appendix Commands.)

Texinfoファイルを終える
***************

Texinfoファイルの終りは，索引を作るコマンドと，(通常)詳細と概要の目次を生成するコマンドを含むべきです．そしてそれは，TeXが処理する最後の行を示す， @byeコマンドを含む必要があります．

例えば，以下のようにします．

     @node    Concept Index,     , Variables Index, Top
     @c        node-name,    next, previous,        up
     @unnumbered Concept Index

     @printindex cp

     @contents
     @bye

索引メニューと索引の印刷
============

索引を印刷することは，マニュアルやInfoファイルの一部として，それを含むことです．これは，@cindexや，その他の索引項目を生成するコマンドを， Texinfoファイルで使っているので，自動的に発生しません．それらは，索引のため生データを蓄積します．索引を生成するため，@printindexコマンドを，ドキュメントの索引を置きたい場所に含める必要があります．同様に，印刷されたマニュアルを作成する過程でソートされた索引ファイルを生成する際，生データをソートするため，texindexと呼ばれるプログラム(see Hardcopy)を実行する必要があります．ソートされた索引ファイルは，索引の印刷で実際に使われます．

Texinfoは，6つの異なるタイプの前もって定義された索引を提供し，それは，コンセプト索引，関数索引，変数索引，キーストローク索引，プログラム索引と，データ型索引です(see Predefined Indices)．それぞれの索引は2文字の名前があり，それらは，cp，fn，vr，ky，pgと， tpです．索引を併合したり，セクションに分けたり(see Combining Indices)できます．また，独自の索引を定義できます(see Defining New Indices)．

@printindexコマンドは，2文字の索引名をとり，対応するソートされた索引ファイルを読み，索引内に適切に書式化します．

@printindexコマンドは，索引の章の見出しを生成しません．したがって，適切な@printindexコマンドを，章の見出しの供給と索引を目次に含めるため，セクションや章コマンド(通常@unnumbered)の前に置くべきです． @unnumberedコマンドを@node行の前に置いてください．

例えば，以下のようにします．

     @node Variable Index, Concept Index, Function Index, Top
     @comment    node-name,         next,       previous, up
     @unnumbered Variable Index

     @printindex vr

     @node     Concept Index,     , Variable Index, Top
     @comment      node-name, next,       previous, up
     @unnumbered Concept Index

     @printindex cp

読者は，見つけやすいので，コンセプト索引が本の最後にあることを望みます． 1つの索引のみ持つことも，見る場所が1つだけなので，助かります (see synindex)．

目次の生成
=====

@chapter，@sectionとその他の構造化コマンドは，目次を作る情報を供給しますが，実際の表をマニュアルに現しません．こうするため， @contentsと/や，@summarycontentsコマンドを使う必要があります．

@contents
     印刷されたマニュアルに目次を生成し，それは，全ての章，セクション，サブセクションなど，付録や番号付けされない章まで含みます．(@headingと同列のコマンドで生成された見出しは，目次に現れません．)

@shortcontents
@summarycontents
     (@summarycontentsは，@shortcontentsと同義語で，2つのコマンドは，全く同じです．)

     章(と，付録と番号付けされない章)のみをリストアップした，短い，または，概要の目次を生成します．セクション，サブセクションと，サブサブセクションは削除されます．長いマニュアルのみ，完全な目次への追加で短い目次が必要です．

どちらの目次コマンドも，単独行に書くべきです．目次コマンドは，自動的に章のような見出しを，最初の目次ページのトップに生成し，そのため，その前に @unnumberedのようなセクションコマンドを含まないでください．

Infoファイルは目次の代わりにメニューを使うので，Indo書式化コマンドは，目次コマンドを無視します．しかし，目次は(makeinfo --no-headersで生成される)プレーンテキスト出力に含まれます．

目次コマンドは，ファイルの最後で，索引(前のセクションを参照してください)の後の@bye(次のセクションを参照してください)の直前，または，ファイルの最初で，@end titlepage(see titlepage)の後に置かれます．前者の利点は，目次出力が常に更新されることで，それは，行われた処理を参照するためです．後者の利点は，目次が適切な場所に印刷されることで，DVIファイルを dviselectで再配列したり，紙をかき回す必要がありません．しかし，ドキュメントの最初の目次コマンドは，標準出力に出力するとき無視されます．

著者としては，目次コマンドを好きなところに置くことができます．しかし，単にマニュアルを印刷するユーザーは，たとえ著者が目次コマンドをドキュメントの最後に置いている場合でも，(ほとんどのTexinfoドキュメントと同じように)目次をタイトルページの後に置きたいと思うかもしれません．これは， @setcontentsaftertitlepageと/や， @setshortcontentsaftertitlepageで指定することができます．最初のものは，@end titlepageの後に主な目次のみを印刷します．2番目のものは，短い目次と主な目次の両方を印刷します．どちらの場合でも，それに続く @contentsや@shortcontentsは，(@end titlepageがない場合は)無視されます(@end titlepage．

@set...contentsaftertitlepageを，ドキュメントの最初の方(例えば @setfilenameの直後)に含める必要があります．または， texi2dvi(see Format with texi2dvi)を使う場合， --texinfoオプションを，ソースファイルの変更無しで指定することができます．例えば，以下のようにします．

     texi2dvi --texinfo=@setshortcontentsaftertitlepage foo.texi

ファイルの終りの@bye
============

@byeコマンドは，TeXやInfoの書式化を終了します．ファイルの @bye以下には，書式化コマンドは全くありません．@byeは，単独行にすべきです．

お望みなら，@bye行にメモを続けることができます．これらのメモは書式化されず，Infoや印刷されたマニュアルに現れません．それは，@bye後のテキストが@ignore...@end ignoreにあるかのようです．同様に，@bye行に，ローカルな変数リストを続けることもできます．詳細は， see Using Local Variables and the Compile Command.

章の構造
****

章の構造化コマンドは，ドキュメントを，章，セクション，サブセクションと，サブサブセクションの階層構造に分けます．これらのコマンドは，大きな見出しを生成します．それらは，印刷されたマニュアルの目次の情報も供給します (see Generating a Table of Contents)．

章の構造化コマンドはInfoノード構造を作成しないので，通常は@nodeコマンドを，それぞれの章の構造化コマンドの直前に置くべきです (see Nodes)．ノード構造化コマンドを使わず，章の構造化コマンドを使うのは，おそらく，相互参照を含まないドキュメントや，Info形式に変換しないドキュメントを書く場合だけでしょう．

印刷可能なドキュメントではなく，InfoファイルためだけにTexinfoファイルを書くことは，おそらくないでしょう．そうする場合でも，章の構造化コマンドをそれぞれのノードの見出しを作るために---不要ですが---書くことができます．

セクションのツリー構造
===========

Texinfoファイルは，通常，章，セクション，サブセクションと，そのようなものを持つ，本のような構造をしています．この構造は，上に根があり，レベルに対応した，章，セクション，サブセクションと，サブサブセクションを持つ，木(または，さかさまの木)のように見えます．

ここに，それぞれ2つのセクションを持つ章が3つある，Texinfoファイルの図があります．

                                       Top
                                        |
                  ---------------------------------------------
                 |                      |                      |
                1 章                   2 章                   3 章
                 |                      |                      |
            -----------            -----------            -----------
           |           |          |           |          |           |
      セクション  セクション セクション  セクション セクション  セクション
          1.1         1.2        2.1         2.2        3.1         3.2

この構造を持つTexinfoファイルで，2章は次のようにはじめます．

     @node    Chapter 2,  Chapter 3, Chapter 1, top
     @chapter Chapter 2

章の構造化コマンドは，以下のセクションで述べています．@nodeと @menuコマンドは，以下の章で述べています．(see Nodes.  そして， Menus,を参照してください．)

構造化コマンドの型
=========

章を構造化するコマンドは，4つのグループ，またはシリーズに分類され，それぞれは，章，セクション，サブセクションと，サブサブセクションの階層レベルに対応する，構造化コマンドを含みます．

4つのグループは，@chapterシリーズ，@unnumberedシリーズ， @appendixシリーズと，@headingシリーズです．

それぞれのコマンドは，印刷されたページやInfoファイルで，異なるタイトルを生成します．いくつかのコマンドのみ，印刷された本やマニュアルの目次でリストアップされるタイトルを持ちます．

  * コマンドの@chapterと@appendixシリーズは，印刷されたものや目次に，番号や文字が付いた項目を生成します．

  * コマンドの@unnumberedシリーズは，印刷されたものや目次に，番号無しの項目を生成します．特別に使われる@topコマンドは，このシリーズのメンバーです(see @top)．

  * コマンドの@headingシリーズは，目次に現れない番号付けされない見出しを生成します．見出しコマンドは新しいページを開始しません．

  * @majorheadingコマンドは，@chapheadingの使用と似た結果を生成しますが，見出しの前に大きな縦方向の空白を生成します．

  * @setchapternewpageコマンドでは，@chapter， @unnumberedと，@appendixコマンドは，印刷されたマニュアルで新しいページを開始します．@headingコマンドではそうなりません．

ここに，4つの章の構造化コマンドのグループがあります．

改ページ       改ページ無し
番号付き   番号無し   文字と番号   番号無し
目次にある     目次にある     目次にある       目次にない
  @top     @majorheading
@chapter   @unnumbered   @appendix   @chapheading
@section   @unnumberedsec   @appendixsec   @heading
@subsection   @unnumberedsubsec   @appendixsubsec   @subheading
@subsubsection   @unnumberedsubsubsec   @appendixsubsubsec   @subsubheading

@top
====

@topコマンドは，Texinfoファイルの最初で，@node Top行の後に使っている特別なセクションコマンドです．@topコマンドは， makeinfoフォーマッタに`Top'ノードを伝え，マニュアルが暗黙のポインタを使う場合，それはノードツリーの根として使うことができます． @unnumbered(see @unnumbered and @appendix)の植字効果と同じです．詳細は，The @top Command,を参照してください．

@topノードとそのメニュー(がある場合)は，InfoとHTML出力のみで現れ， TeXで現れないようにするため，慣習で，@ifnottex環境になります．

@chapter
========

@chapterは，ドキュメントの章を識別します．行の最初にコマンドを，同じ行に続けて章のタイトルを書いてください．

例えば，このマニュアルのこの章は，``章の構造(Chapter Structuring)''という項目です．@chapter行は以下のようになります．

     @chapter 章の構造(Chapter Structuring)

TeXでは，@chapterコマンドはドキュメントに章を作成し，章のタイトルを指定します．章は，自動的に番号付けされます．

Infoでは，@chapterコマンドは，タイトルを単独行に現し，行の下にはアスタリスクの挿入があります．このように，Infoで上の例は，以下の出力を生成します．

     章の構造(Chapter Structuring)
     *****************************

Texinfoは，コマンド@centerchapも供給し，それは @unnumberedに似ていますが，印刷された出力物でその引数をセンタリングします．この種の形式上の選択は，通常Texinfoでは提案されません．

@unnumberedと@appendix
=====================

@unnumberedコマンドを，印刷されたマニュアルであらゆる種類の数字が付かない章を作成するために使用してください．@appendixコマンドを，印刷されたマニュアルで数字の代わりに文字でラベルが付く付録を作成するために使用してください．

Infoファイル出力に対し，@unnumberedと@appendixコマンドは， @chapterを同じです．タイトルは単独行で印刷され，下にアスタリスクの行が付きます．(see @chapter.)

付録や番号を付けない章を作成するため，章の作成と同様に， @appendixや@unnumberedコマンドを行の最初から書き，同じ行にタイトルを続けてください．

@majorheading，@chapheading
==========================

@majorheadingと@chapheadingコマンドは，ドキュメントの本体に章のような見出しを置きます．

しかし，いずれのコマンドも，TeXに番号付の見出しや目次項目を生成させません．また，どちらのコマンドも，TeXに印刷されたマニュアルで新しいページを開始させません．

TeXでは，@majorheadingコマンドは，@chapheadingコマンドが生成するより大きな縦方向の空白を生成します．

Infoでは，@majorheadingと@chapheadingコマンドは @chapterと同じで，下にアスタリスクの行が付いた単独行に，タイトルを出力します．(see @chapter.)

@section
========

印刷されたマニュアルでは，@sectionコマンドは，章の中の番号付のセクションとなります．セクションのタイトルは目次に現われます．Infoでは， @sectionコマンドは，=で下線を引かれたテキストをタイトルとして提供します．

このセクションは，@sectionコマンドが前置され，Texinfoファイルでは以下のように見えます．

     @section @code{@@section}

セクションを作るため，@sectionコマンドを行の最初に書き，同じ行にセクションのタイトルを続けてください．

以下のようにします．

     @section This is a section

以下を生成します．

     This is a section
     =================

以上はInfoで，生成されます．

@unnumberedsec，@appendixsec，@heading
====================================

@unnumberedsec，@appendixsec，@headingコマンドは，それぞれ，@sectionコマンドの，番号無し，付録と，見出しのようなものと同じです．(see @section.)

@unnumberedsec
     @unnumberedsecコマンドは，番号無しの章の中や，通常の章や付録の中で，番号無しのセクションを供給するために使用できます．

@appendixsec
@appendixsection
     @appendixsectionは，@appendixsecコマンドの長い綴です．2つは同じです．

     慣習的に，@appendixsecや@appendixsectionコマンドは，付録でのみ使用します．

@heading
     @headingコマンドは，章の形式の見出しで目次に現われないもののため，希望の場所で，どこでも使用できます．

@subsectionコマンド
===============

サブセクションとセクションの関係は，セクションと章の関係のようなものです． (see @section.)Infoで，サブセクションのタイトルは， -で下線が引かれます．例えば，以下のようになります．

     @subsection これはサブセクションです．

以下を生成します．

     これはサブセクションです．
     --------------------

印刷されたマニュアルでは，サブセクションは目次にリストアップされ，3レベルの深さで番号が付きます．

@subsectionのようなコマンド
===================

@unnumberedsubsec，@appendixsubsecと， @subheadingコマンドは，それぞれ，@subsectionコマンドの，番号無し，付録と，見出しのようなものと同じです．(see @subsection.)

Infoでは，@subsectionのようなコマンドは，ハイフンで下線が引かれたタイトルを生成します．印刷されたマニュアルでは，@subheadingコマンドは，番号無しのものと目次に現われないもの以外，サブセクションのような見出しを生成します．同様に，@unnumberedsubsecコマンドは，サブセクションに似た，番号がない見出しを生成し，@appendixsubsecコマンドは，文字と数字でラベルが付いたサブセクションのような見出しを生成します．これらのコマンドは，両方とも目次に現われる見出しを生成します．

`subsub'コマンド
============

Texinfoでの4番目以下のレベルのセクションコマンドは，`subsub'コマンドです．以下のものがあります．

@subsubsection
     サブサブセクションとサブセクションの関係は，サブセクションとセクションの関係のようなものです．(see @subsection.)印刷されたマニュアルで，サブサブセクションのタイトルは目次に現われ，4番目の深さのレベルで番号を付けられます．

@unnumberedsubsubsec
     番号付けされていないサブサブセクションのタイトルは，印刷されたマニュアルの目次に現われますが，番号はありません．それ以外で，番号付けされていないサブサブセクションはサブサブセクションと同じです．Infoでは，番号付けされていないサブサブセクションは，実際に，普通のサブサブセクションのように見えます．

@appendixsubsubsec
     慣習的に，付録コマンドは付録のためのみに使用され，印刷されたマニュアルで，文字と番号が適切に付けられます．それらは目次にも現われます．Infoでは，付録のサブサブセクションは，実際に，普通のサブサブセクションのように見えます．

@subsubheading
     @subsubheadingコマンドは，目次に現われない小さい見出しが必要なあらゆる場所で使用できます．Infoで，サブサブ見出しは，実際に，普通のサブサブセクションの見出しのように見えます．

In Info, `subsub' titles are underlined with periods.  For example,

Infoでは，`subsub'タイトルはピリオドで下線が引かれます．例えば，以下のようにします．

     @subsubsection これはサブサブセクションです．

以下を生成します．

     これはサブサブセクションです．
     .......................

@raisesectionsと@lowersections
=============================

@raisesectionsと@lowersectionsコマンドは，章，セクション，サブセクションのようなものの，階層的レベルをあげたり下げたりします． @raisesectionsコマンドは，セクションを章，サブセクションをセクションなどのように変更します．@lowersectionsコマンドは，章をセクション，セクションをサブセクションなどのように，変更します．

他のTexinfoファイルの内部ファイルやインクルードファイルとなる，外部や単独のTexinfoファイルとして書かれているテキストを含める場合， @lowersectionsコマンドは役に立ちます．ファイルの最初にコマンドを書くと，すべての@chapterコマンドは@sectionコマンドであるかのように書式化され，すべての@sectionコマンドは@subsectionコマンドであるかのように書式化される等となります．

@raisesectionsは，章の構造階層でコマンドを1レベルあげます．

       Change           To

     @subsection     @section,
     @section        @chapter,
     @heading        @chapheading,
               etc.

@lowersectionsは，章の構造階層でコマンドを1レベル下げます．

       Change           To

     @chapter        @section,
     @subsection     @subsubsection,
     @heading        @subheading,
               etc.

@raisesectionsや@lowersectionsコマンドは，Texinfoファイルの，それ以降の章の構造化コマンドのみを変更します．@raisesectionsや @lowersectionsコマンドは，単独行に書いてください．

@lowersectionsコマンドは，@raisesectionsコマンドでキャンセルされ，逆も同様です．典型的に，コマンドは以下のように使用します．

     @lowersections
     @include somefile.texi
     @raisesections

@raisesectionsコマンドが無い場合，ドキュメントのそれ以降全てのセクションは，レベルが下がります．

コマンドの繰り返しの使用で，階層レベルは一度に1ステップづつ，上がるか下がるかし続けます．

`章'を上に上げようとすると，章コマンドを再生成します．`サブサブセクション 'を下に下げようとすると，サブサブセクションコマンドを再生成します．

ノード
***

ノードは，Texinfoファイルの主要な部分です．それらは，それ自身が階層的ではなく，ファイル構造でもありません．ノードは，他のノードの名前を持つノードポインタを含み，ノードをリストアップしているメニューを含めることもできます．Infoでは，移動コマンドで，指示されたノードやメニューのノードリストへ移動することができます．ノードポインタとメニューは，Infoファイルに，章，セクション，サブセクション等のような構造を供給し，それらは，印刷された本に構造を供給しているものです．

2つのパス
=====

ノードとメニューコマンドと，章の構造化コマンドは，専門的にはお互い独立しています．

  * Infoでは，ノードとメニューコマンドは構造を供給します．章の構造化コマンドは，下線で区切られた見出しそ生成します---章ではアスタリスク，セクションではハイフンのようになっています．それ以外は何もしません．

  * TeXでは，章の構造化コマンドは章とセクション番号と目次を生成します．ノードとメニューコマンドは，相互参照の情報を供給します．それ以外は何もしません．

ノードポインタとメニューを，Infoファイルを好きなように構造化するために使用することができます．Texinfoファイルで，Info出力が印刷された出力と異なるように書くこともできます．しかし，ほとんど全てのTexinfoファイルは，Info出力の構造が印刷された出力の構造に対応するように書かれています．そうしなければ，読者は不便で理解不能になります．

一般に，印刷された出力は，章が主要な大枝で，そこからセクションが枝を出している木のような階層構造です．同様に，ノードポインタとメニューは，Info出力で一致する構造を作成するように組織化されています．

ノードとメニューの図
==========

ここに，前で示した，章が3つでそれぞれが2つのセクションを含むTexinfoファイル図の，コピーがあります．

``root''は図の最上部で，``leaves''が最下部です．これはそのような図を書く慣習的な方法です．それは，さかさまの木を描きます．このため，ルートノードは `Top'ノードと呼ばれ，`Up'ノードはルートに近い方向へ導きます．

                                       Top
                                        |
                  ---------------------------------------------
                 |                      |                      |
                1 章                   2 章                   3 章
                 |                      |                      |
            -----------            -----------            -----------
           |           |          |           |          |           |
      セクション  セクション セクション  セクション セクション  セクション
          1.1         1.2        2.1         2.2        3.1         3.2

2章を開始する，完全に書かれたコマンドは以下のようになります．

     @node     Chapter 2,  Chapter 3, Chapter 1, Top
     @comment  node-name,  next,      previous,  up

この@node行は，このノード名が``Chapter 2''で，`Next'ノードが ``Chapter 3''で，`Previous'ノードが``Chapter 1''で，`Up'ノードが``Top''だということを告げています．ドキュメントが階層的に組織化されている場合 (see makeinfo Pointer Creation)，これらのノード名を書くことを省略できますが，ポインタの関係は得られます．

     注意してください:`Next'は，マニュアルで同じ階層レベルの次のノードを参照し，それは，Texinfoファイル内での次のノードである必要はありません． Texinfoファイルでは，次のノードは下のレベルかもしれず，例えば，セクションレベルノードは，章レベルのノードに続くことが多くあります．`Next'と `Previous'は，同じ階層レベルのノードを参照します．(`Top'ノードはこの規則の例外です．`Top'ノードはそのレベルでの唯一のノードなので，`Next'は，以下にある最初のノードを参照し，それは通常，章や章レベルのノードです． )

Infoを使って，セクション2.1と2.2に行くため，2章の内部にメニューが必要です． (see Menus.)以下のように，セクション2.1をはじめる前に，メニューを書きます．

         @menu
         * Sect. 2.1::    Description of this section.
         * Sect. 2.2::
         @end menu

セクション2.1のため，以下のように書いてください．

         @node     Sect. 2.1, Sect. 2.2, Chapter 2, Chapter 2
         @comment  node-name, next,      previous,  up

Info書式では，ノードの`Next'と`Previous'ポインタは，通常，同じレベルの他のノードへ導きます---章から章や，セクションからセクションのようになります(ここまでで見てきたように，`Previous'ポインタが上を指すこともあります)． `Up'ポインタは，通常，上のレベルのノードへ導きます(`Top'ノードに近い方向です)．`Menu'は，下のレベルのノードへ導きます(`leaves'に近い方向です)． (相互参照は，あらゆるレベルのノードを指し示します．Cross References,を参照してください．)

通常，@nodeコマンドと章の構造化コマンドは，索引コマンドと一緒に順番に使用されます．(@node行に，指し示すものを覚えておくためのコメント行を続けることもできます．)

ここに，このマニュアルの``Ending a Texinfo File''と呼ばれる章の最初があります．これは，@node行と，それに続くコメント行，@chapter行と索引行があります．

     @node    Ending a File, Structuring, Beginning a File, Top
     @comment node-name,     next,        previous,         up
     @chapter Ending a Texinfo File
     @cindex Ending a Texinfo file
     @cindex Texinfo file ending
     @cindex File ending

@nodeコマンド
=========

ノードは@nodeコマンドで始まり，次の@nodeコマンドまで続くテキストの部分です．ノードの定義は章やセクションと異なります．章はセクションを含ことができ，セクションはサブセクションを含むことができます．しかし，ノードはサブノードを含みません．ノードのテキストは，ファイルの次の @nodeコマンドまで続くだけです．ノードは通常，章の構造化コマンドを 1つだけ含み，それは@node行に続けます．一方，印刷された出力で，ノードはクロスリファレンスとしてのみ使用され，そして，章やセクションはノード番号を含むことができます．実際，章は通常，それぞれのセクション，サブセクションと，サブサブセクションとなる，複数のノードを含みます．

ノードを作成するため，@nodeコマンドを行の最初に書き，コンマで分けた4つの引数を，同じ行の残りの部分に続けてください．最初の引数は必要です．それはノードの名前です．次の引数は，その順番で，`Next'，`Previous'と， `Up'ポインタの名前で，Texinfoドキュメントが階層的に組織化されている場合，省略可能です(see makeinfo Pointer Creation)．

好みにより，それぞれの名前の前にスペースを置くこともできます．スペースは無視されます．ノードの名前と`Next'，`Previous'と，`Up'ポインタの名前を，同じ行に書く必要があります．そうしない場合，書式化は失敗します．(Infoのノードの詳細は，see info (info-ja).)

通常,章の構造化コマンド行を@nodeの直後に書き,例えば,それは @sectionや@subsectionです．(see Structuring Command Types.)

     注意してください:GNU Emacs Texinfoモードの更新コマンドは， @node行が章の構造化コマンドに続いている，Texinfoファイルでのみ働きます．See Updating Requirements.

TeXは@node行を相互参照で使う名前を識別するために使用します．このため，@node行を，印刷のための書式化を行いたいTexinfoファイルに，たとえInfoで書式化するつもりがなくても書く必要があります．(相互参照は，この文章の終りにあるようなもので，@xrefとそれに関連するコマンドで作成されます．Cross References,を参照してください．)

ノードの選択とポインタ名
------------

ノード名はノードの識別子です．ポインタは他のノードに行くことができ，これらのノード名から成り立ちます．

通常ノードの`Up'ポインタは，そのメニューがそのノードを記述しているノード名を含みます．ノードの`Next'ポインタは，メニューでそのノードの次のノード名を含み，`Previous'ポインタは，メニューでそのノードの前のノード名を含みます．ノードの`Previous'ノードが`Up'ノードと同じとき，両方のノードは同じノード名を示します．

通常，Texinfoファイルの最初のノードは`Top'ノードで，その`Up'と`Previous'ポインタはdirファイルを指し示し，それは，Info全てのメインメニューを含みます．

`Top'ノード自身は，マニュアルのメインまたはマスターメニューを含みます．また，`Top'ノードに簡単なマニュアルの記述を含めると便利です．Texinfoファイルの最初のノードの書き方の詳細は，see First Node.

明示的に全てのポインタを指定したときでも，任意の順番でTexinfoソースファイルにノードを書くことができることを意味しません！TeXは，ファイルをノードポインタにかかわらず，順番に処理するので，印刷された出力物に現したい順番にノードを書く必要があります．

@node行の書き方
----------

@node行の最も簡単な書き方は，@nodeを行の最初に書き，その後ノード名を以下のように書く方法です．

     @node NODE-NAME

GNU Emacsを使っている場合，ポインタ名を挿入するTexinfoモードで，ノードの更新コマンドが供給されています．また，ポインタをTexinfoファイルの外に置き，makeinfoにノードポインタを作成するInfoファイルに挿入させることもできます．(see Texinfo Mode.  またmakeinfo Pointer Creation,を参照してください．)

代わりに，`Next'，`Previous'と，`Up'ポインタを独自に挿入することもできます．こうする場合，Texinfoモードで，キーボードコマンドのC-c C-c nを使用すると便利だと思います．このコマンドは，@nodeと，適切な順番でポインタ名をリストアップしたコメント行を挿入します．コメント行は，引数がどのポインタに対するものかの追跡を記録するのに役立ちます．このコメント行は， Texinfoに精通していない場合，特に便利です．

`Next'，`Previous'と，`Up'ポインタがある，完全に書かれたノード行のテンプレートは以下のようになります．

     @node NODE-NAME, NEXT, PREVIOUS, UP

好みで，初稿で@node行を完全に無視することができ， texinfo-insert-node-linesコマンドを@node行を作成するために使用することができます．しかし，この方法はお勧めしません．その部分を書くと同時にそれ自身のノードに名前を付ける方が良く，それは，相互参照を作成しやすくなります．多数の相互参照は，良いInfoファイルの特徴として，特に重要です．

@node行を挿入した後，すぐに@-コマンドを章やセクションに対し書き，名前を挿入するべきです．次に(これが肝心!)，いくつかの索引項目を置いてください．通常，少なくとも2つ置き，索引でノードを参照する方法として，4または 5あることも良くあります．これで，人々がノードをより容易に見つけるようになります．

@node行の助言
---------

ここに3つの提案があります．

  * 有益だが短いノード名を選んでみてください．

     Infoファイルでは，ファイル名，ノード名と，ポインタ名は全て1行に挿入され，それはウィンドウの右端まで行くかも知れません．(これは，Infoの問題ではありませんが，醜いです．)

  * 名前の始まりが他とは違う，ノード名を選んでみてください．これで，Infoの自動的な名前補完が使用しやすくなります．

  * 慣習的に，ノード名は，セクションや章のタイトルで---最初と重要な単語が大文字になるように---大文字になります．他は違います．

@node行の必要事項
-----------

ここに，いくつかの@node行の必要事項があります．

  * 全てのノード名は，単一のInfoファイルで唯一のものとする必要があります．

     重複すると，Info移動コマンドで混乱します．これは例えば，概要で全ての章を終える場合，それぞれの概要のノードを異なる名前にする必要があります．それぞれを1つの``概要''とすることはできません．しかし，章，セクションとそれに類するもののタイトルは重複することができます．このように，ノード名がセクションでは全て異なっている限り，本のそれぞれの章を``概要''というセクションで終えることができます．

  * ポインタ名は，ノード名とする必要があります．

     ポインタが示すノードは，そのポインタを含む前後のノードから来ることができます．

  * 一般に，ノード名で使用される@-コマンドはInfoを混乱させるので，それは避けるべきです．滅多にないのですが，これが便利なときがあり，Texinfoはノード名での@-コマンド使用に対するサポートを制限されます． Pointer Validation,を参照してください．

     こうして，@chapterと呼ばれるセクションの始めは，以下のようになります．

          @node  chapter, unnumbered & appendix, makeinfo top, Structuring
          @comment  node-name,  next,  previous,  up
          @section @code{@@chapter}
          @findex chapter

  * 残念ながら，ピリオド，カンマ，コロンやアポストロフィをノード名に使用できません．これらはTeXやInfoフォーマッタが混乱します．

     例えば，以下のようなセクションタイトルにします．

          @code{@@unnumberedsec}, @code{@@appendixsec}, @code{@@heading}

     対応するノード名は以下のようになります．

          unnumberedsec appendixsec heading

  * 大文字小文字の区別は重要です．

最初のノード
------

Texinfoファイルの最初のノードは，インクルードファイルは例外として (see Include Files)，トップノードです．トップノードは，ドキュメントのメインまたはマスターメニューと，ドキュメントの短い概要を含みます (see Top Node Summary)．

トップノードは(topまたはTopと命名する必要があり)，`Up'ノードとして他のファイルのノード名を持つべきで，それはこのファイルへ導くメニューがあります．カッコでファイルを指定してください．ファイルを直接Infoディレクトリファイルにインストールした場合，(dir)をトップノードの親として使用してください．これは，(dir)topのための短いもので，dirファイルでトップノードを指定し，それは，Infoシステム全体のメインメニューを含みます．例えば，このマニュアルの@node Top行は以下のようになります．

     @node Top, Copying, , (dir)

(これらのポインタを自動的に挿入するため，Texinfo更新コマンドや， makeinfoユーティリティを使用することができます．)

ユーザーに対し動作が紛らわしいので，トップノードの`Previous'ノードを (dir)で定義しないでください．トップノードにいて，戻るために DELを押した場合，dirファイルの他の項目の真中に戻り，それは読みたいものではないはずです．

Infoファイルのinfoディレクトリへのインストールの詳細は， see Install an Info File.

@topセクションコマンド
-------------

特別なセクションコマンド@topは，@node Top行で使用するために作成されました．@topセクションコマンドは，makeinfoに，それがファイルの`Top'ノードだというマークを付けるよう伝えます．それは，ノードポインタを自動的に挿入するため，makeinfoが必要とする情報です． @topコマンドを行の最初に書き，直後に@node Top行を続けてください．同じ行の残りの部分に，@topコマンドとして，タイトルを書いてください．

Infoでは，@topセクションコマンドは，タイトルが単独行に現れるようにし，アスタリスクが下に挿入されます．

TeXとtexinfo-format-bufferでは，@topセクションコマンドは， @unnumberedとほとんど同義語です．これらのフォーマッタは， @topコマンドを要求せず，特別なことは何もしません．これらのフォーマッタを使用するとき，@chapterや@unnumberedを@node Top行の後に使用することもできます．同様に，@chapterや @unnumberedを，ポインタとメニューを作成更新するため，Texinfo更新コマンドを使うとき使用することもできます．

`Top'ノードのまとめ
------------

@top行の後で，メインまたはマスターメニューの前に，`Top'ノードの概要を書くと読者は便利です．概要は，ドキュメントを手短に記述するべきです． Infoでは，この概要はマスターメニューの前に現れます．印刷されたマニュアルでは，この概要は単独ページに現れます．

印刷されたマニュアルで，単独ページに概要を現したくない場合，`Top'ノード全体を，@node Top行と@topセクションコマンド行やその他のセクションコマンド行を含めて，@ifinfoと@end ifinfoで囲むことができます．これは，印刷された出力物で，あらゆるテキストが現れるのを妨げます． (see Conditionally Visible Text)印刷されたマニュアルで読むため，最初の章の始めに，@iftex ... @end iftexの中に，`Top'ノードから短い記述を繰り返すことができます．これは紙の使用を押え，きちんとしているように見えるでしょう．

マニュアルが適応するプログラムのバージョンナンバーを，概要に書くべきです．これは，マニュアルがプログラムのどのバージョンに対するのものなのかを，読者が記録追跡するのに役立ちます．プログラムや，それが依存するものより，マニュアルの更新が多い場合，マニュアルのエディションナンバーを含めるべきです．(タイトルページにも，この情報を含めるべきです．@titlepage,を参照してください．)

makeinfoでポインタの作成
================

makeinfoプログラムは，階層的に組織化されているファイルに対し，自動的にノードポインタを定義する特徴があります．

この特徴を利用するとき，`Next'，`Previous'と`Up'ポインタをノード名の後に書く必要がありません．しかし，@chapterや@sectionのような区分けコマンドを，それぞれの切り詰めた@node行の直後の行に書く必要があります(例外は，コメント行が間に入ることです)．

さらに，`Top'@node行に，ファイルの`Top'ノードに印を付ける @topで始まる行を続ける必要があります．See @top.

最後に，(`Top'ノード以外の)それぞれのノード名を，ノードの階層レベルの上に， 1つかそれ以上の階層レベルとなるメニューに書く必要があります．

このmakeinfoのノードポインタ挿入の特徴は，手動やTexinfoモードのコマンドで，メニューやポインタを更新する必要から開放します．(see Updating Nodes and Menus.)

@anchor: 相互参照のターゲット任意に定義する(Defining Arbitrary Cross-reference Targets)
======================================================================

anchorは，相互参照が参照できる，まるでノードのようなドキュメント内の位置です．@anchorコマンドでアンカーを作成し，普通のカッコで分けられた引数としてラベルを与えることができます．例えば，以下のようになります．

     これは，@anchor{x-spot}スポットをマークします．...
     @xref{x-spot,,the spot}.

以下を生成します．

     これはスポットをマークします．
     ...
     See [the spot], page 1.

お分かりのように，@anchorコマンド自身は出力を生成しません．この例はアンカー`x-spot'だけを，単語`スポット'の直前に定義します．その後で，後述の@xrefや，その他の相互参照を使用して参照できます．相互参照の詳細は，see Cross References.

@anchorコマンドを，参照する位置の直前に置くのが最善です．そうすると，読者の目は，アンカーにジャンプしたとき正しいテキストに導かれます． @anchorコマンドを単独行に置くとソースの可読性を助ける場合は，そうすることもできます．@anchor後のスペースは常に無視されます．

アンカー名とノード名は衝突できません．アンカーとノードは同じように扱われることもあります．例えば，スタンドアローンInfoのgoto-nodeコマンドは，アンカー名やノード名を引数としてとります． (see goto-node (GNU Info).)

メニュー
****

メニューは，従属的なノードへのポインタを含みます． (メニューでは，階層構造にかかわらずあらゆるノードへ行くことができます．異なるInfoファイルのノードへ行くことすら可能です．しかし，GNU Emacs Texinfoモードの更新コマンドは，従属的なノードのメニューしか作成しません．慣習で，相互参照は他のノードへの参照のために使用します．)Infoでは，メニューをそのようなノードへ行くために使用します．メニューは印刷されたマニュアルで効果がなく，それらには現れません．

慣習で，メニューを使用する読者が，それ以降のテキストを見ない可能性があるのでメニューはノードの終りに置かれます．さらに，メニューがあるノードは多くのテキストを含むべきではありません．多くのテキストとメニューがある場合は，テキストのほとんどを---数行以外全て---新しいサブノードに移動してください．そうしない場合，数行しか表示できない端末を使用する読者は，メニューとそれに関連するテキストが見えません．実際問題として，メニューはノードの最初の20行以内に配置すべきです．

短いノードが必要なメニュー
=============

メニューの前の短いテキストは，印刷されたマニュアルで不様に見えるかもしれません．これを避けるため，メニューをそのノードの最初の方に書き，メニューを @node行で続け，その後で@heading行を，@ifinfoと @end ifinfoの間に置くことができます．こうすると，@node行のメニューとタイトルは，Infoファイルでしか現れず，印刷されたドキュメントには現れません．

例えば，前の2つの段落は，Infoのみのメニュー@node行と，見出しが続き，以下のように見えます．

     @menu
     * Menu Location::             Put a menu in a short node.
     * Writing a Menu::            What is a menu?
     * Menu Parts::                A menu entry has three parts.
     * Less Cluttered Menu Entry:: Two part menu entry.
     * Menu Example::              Two and three part entries.
     * Other Info Files::          How to refer to a different
                                     Info file.
     @end menu

     @node Menu Location, Writing a Menu, , Menus
     @ifinfo
     @heading Menus Need Short Nodes
     @end ifinfo

このドキュメントのTexinfoファイルは，1ダース以上のこの手続きの例を含んでいます．1つはこの章の最初にあります．もう1つは，Cross References, の最初にあります．

メニューを書く
=======

メニューは，単独行の@menuコマンドと，それに続く項目行やメニューコメント行と，その後の単独行の@end menuコマンドから成り立ちます．

メニューは，以下のようになります．

     @menu
     Larger Units of Text

     * Files::                       All about handling files.
     * Multiples: Buffers.           Multiple buffers; editing
                                       several files at once.
     @end menu

メニューでは，* で始まる全ての行は，メニュー項目です．(アスタリスクの後のスペースに注意してください．)* で始まらない行もメニューに現すこともできます．そのような行は，メニュー項目ではなく，Infoファイルで現れるメニューコメント行です．上記の例では，Larger Units of Textはメニューコメント行です．* で始まる2行はメニュー項目です．メニューのスペース文字は，このように維持されます．これで，メニューを望み通りに書式化できます．

メニューの部分
=======

メニュー項目は，3つの部分があり，2番目のみ必要です．

 1. メニュー項目名(オプション)．

 2. ノード名(必須)．

 3. 項目の記述(オプション)．

メニュー項目のテンプレートは，以下のようになります．

     * MENU-ENTRY-NAME: NODE-NAME.   DESCRIPTION

メニュー項目名に，1つのコロンを続け，ノード名にタブ，コンマ，ピリオドや，改行を続けてください．

Infoでは，ユーザはノードを，m(Info-menu)コマンドで選択します．メニュー項目名は，ユーザがmコマンドの後で入力するものです．

メニュー項目の3番目の部分は，記述的な句または文です．メニュー項目名とノード名は短い場合が多いです．記述は読者に，何について書かれているノードかを説明します．役立つ記述は，繰り返しではなくノード名への補完になります．追加の記述は，2行以上に分けることができます．そうする場合，著作者は，最初(と他の全て)と同列にするより，2行目を字下げするほうを好みます．それは，好きにできます．

バラバラでないメニュー項目
=============

メニュー項目名とノード名が同じとき，行の最初でアスタリスクとスペースの直後に名前を書き，名前に2つのコロンを続けることができます．

例えば，以下のように書きます．

     * Name::                                    DESCRIPTION

代わりに以下のようにします．

     * Name: Name.                               DESCRIPTION

メニューが見た目バラバラに散らばるので，可能な場合，ノード名をメニュー項目名として使用すべきです．

メニューの例
======

Texinfoでは，メニューは以下のようになります．

     @menu
     * menu entry name: Node name.   A short description.
     * Node name::                   This form is preferred.
     @end menu

これは，以下を生成します．

     * menu:

     * menu entry name: Node name.   A short description.
     * Node name::                   This form is preferred.

ここに，Texinfoファイルで見るような例があります．

     @menu
     Larger Units of Text

     * Files::                       All about handling files.
     * Multiples: Buffers.           Multiple buffers; editing
                                       several files at once.
     @end menu

これは，以下を生成します．

     * menu:
     Larger Units of Text

     * Files::                       All about handling files.
     * Multiples: Buffers.           Multiple buffers; editing
                                       several files at once.

この例で，メニューは2つの項目があります．Filesは，メニュー項目とその名前で参照されるノード名です．Multiplesは，メニュー項目名です．それは，Buffersという名前のノードで参照します．Larger Units of Textはコメントです．それはメニューには現れますが項目ではありません．

FilesやBuffersでファイル名が指定されていないので，それらは，同じInfoファイルでのノード名のはずです．(see Referring to Other Info Files)．

他のInfoファイルへの参照
==============

ノード名の直前のカッコにファイル名を書くことで，Infoの読者が他のInfoファイルのノードへ行くことを可能にするメニュー項目を作成することができます．この場合，3つの部分のメニュー項目書式を使用するべきで，それは，読者がファイル名を入力することを省きます．

書式は，以下のようになります．

     @menu
     * FIRST-ENTRY-NAME:(FILENAME)NODENAME.     DESCRIPTION
     * SECOND-ENTRY-NAME:(FILENAME)SECOND-NODE. DESCRIPTION
     @end menu

例えば，Emacs Manualで直接OutliningとRebindingノードを参照するため，メニューを以下のように書きます．

     @menu
     * Outlining: (emacs)Outline Mode. The major mode for
                                       editing outlines.
     * Rebinding: (emacs)Rebinding.    How to redefine the
                                       meaning of a key.
     @end menu

ノード名をリストアップせず，ファイル名だけの場合，Infoは`Top'ノードを参照しているものと推測します．

Infoのメインメニューを含むdirファイルは，ファイル名のみを列挙したメニュー項目があります．これで，それぞれのInfoドキュメントの`Top'ノードへ，直接行くことができます．(see Install an Info File.)

例えば，以下のようになります．

     * Info: (info).         Documentation browsing system.
     * Emacs: (emacs).       The extensible, self-documenting
                             text editor.

(Infoシステムに対するdirのトップレベルディレクトリはInfoファイルで， Texinfoファイルではありませんが，メニュー項目はどちらの形式のファイルでも同じように見えます．)

GNU Emacs Texinfoモードでのメニュー更新コマンドは，現在のバッファのノードでのみ働くので，他のファイルを参照するメニューを作成するために使用することはできません．そのようなメニューは，手で書く必要があります．

相互参照
****

相互参照は，同じまたは異なるTexinfoファイルの他の部分へ，読者を導くために使用します．Texinfoでは，ノードとアンカーは相互参照が参照する場所です．

参照されるもの
=======

いつもではありませんが，ほとんどの印刷されたドキュメントは順番に読むように設計されています．人々は，必要なとき提出されるべき情報を見つけるために，前後にページをめくるのが嫌になります．

しかし，あらゆるドキュメントで，現在の文脈に対し詳しすぎたり，主要でなかったりする情報もあります．そのような情報へのアクセスを供給するため相互参照を使用してください．また，オンラインヘルプシステムや，リファレンスマニュアルは．小説とは異なります．そのようなドキュメントを最初から最後まで順番に読む人はほとんどいません．代わりに，人々は必要なところを拾い読みします．このため，そのようなものは，読者が読まなかった可能性のある他の情報を見つけるとき役に立つ，相互参照を多く含めるべきです．

印刷されたマニュアルでは，完全に他のマニュアルでない限り，相互参照は結果としてページ参照となり，その場合は相互参照はマニュアルの名前になります．

Infoでは，相互参照は結果として，Infoのfコマンドに続いて使用することができる項目となります．(see Some advanced Info commands (info).)

様々な相互参照コマンドは，ノード(やアンカー see @anchor)を，相互参照の位置を定義するために使用します．これは，Infoの環境では，そこでの相互参照は指定した場所に移動します． TeXもノードを相互参照の位置を定義するために使用しますが，動作は明白ではありません．TeXがDVIファイルを生成するとき，それは，それぞれのノードのページを記録し，参照を作成する際ページ番号を使用します．このため，印刷されるだけのマニュアルを書きオンラインで使用しない場合でさえ，相互参照する場所に名前をつけるために@node行を書く必要があります．

異なる相互参照コマンド
===========

4つの異なる相互参照のコマンドがあります．

@xref
     印刷されたマニュアルでの`See ...' (訳注:txi-??.texにより変更可能です，以下の`see'や`See'も変更されます．しかし，基本的に前置に使用されるため，日本語ではtexinfo.texも変更が必要です．)や，Infoでの相互参照の*Note NAME: NODE.を告げる文を開始するために使用されます．

@ref
     文中や主に文の最後で使用します．Infoでは@xrefと同じです．印刷されたマニュアルでは参照だけを生成し，前に`See'を生成しません．

@pxref
     Infoファイルや印刷された本に適した参照を生成するためカッコ内で使用します．印刷されたマニュアルでは小文字の`see'で始まります．(pは `parenthesis'です．)

@inforef
     Infoファイルでの参照を作成するために使用し，印刷されたマニュアルにはありません．

(@citeコマンドは，Infoと関係の無い，本とマニュアルへの参照を作成するために使用され，それゆえ，指し示すノードはありません．See @cite.)

相互参照の部分
=======

相互参照のコマンドは1つの引数のみを要求し，それは参照するノード名です．しかし，相互参照コマンドは4つの追加の引数を含むことができます．これらの引数を使用すると，Infoに対する相互参照名，トピックの記述や印刷された出力でのセクションのタイトル，異なるInfoファイルの名前と，異なる印刷されたマニュアルの名前を供給できます．

ここに，簡単な相互参照の例があります．

     @xref{Node name}.

これは，以下を生成します．

     *Note Node name::.

また，以下を生成します．

     See Section NNN [Node name], page PPP.

これは，完全な5つの部分を持つ相互参照です．

     @xref{Node name, Cross Reference Name, Particular Topic,
     info-file-name, A Printed Manual}, for details.

これは，以下を生成します．

     *Note Cross Reference Name: (info-file-name)Node name,
     for details.

これはInfoでのものです．

     See section ``Particular Topic'' in A Printed Manual, for details.

印刷された本では上記のようになります．

相互参照のための5つの利用可能な引数は，以下の通りです．

 1. ノードやアンカー名(必須)．これは，相互参照が連れて行く場所です．印刷されたドキュメントでは，ノードの場所は，同じドキュメント内のみの参照のためのページ参照を供給します．

 2. 相互参照名がノード名と異なっている場合の，Info参照に対する相互参照名．この引数を含める場合，それは相互参照の最初の部分になります．通常省略されます．

 3. トピックの記述やセクション名．これはよくセクションのタイトルになります．これは印刷されたマニュアルでの参照名として使用されます．省略された場合，ノード名が使用されます．

 4. 参照先が現在のファイルと異なる場合，参照先があるInfoファイル名．Infoリーダは自動的に追加するので，ファイル名の.info接尾子は不要です．

 5. 異なるTexinfoファイルから印刷されたマニュアル名．

完全な5つの引数を持つ相互参照のテンプレートは，以下のようになります．

     @xref{NODE-NAME, CROSS-REFERENCE-NAME, TITLE-OR-TOPIC,
     INFO-FILE-NAME, PRINTED-MANUAL-TITLE}.

1つ，2つ，3つ，4つと，5つの引数を持つ相互参照は，@xrefの記述に続けて，別々に記述されます．

相互参照で，@node行と正確に同じ方法で，同じように大文字小文字を使用して，ノード名を書いてください．そうしない場合，フォーマッタは参照を見つけることができません．

段落で相互参照を書くこともできますが，InfoとTeXがそれぞれの，様々なコマンドの出力をどのようにして書式化するのかに注意してください．それは， @xrefを文の最初に書く．@pxrefをカッコ内でのみ書くなどです．

@xref
=====

@xrefコマンドは文の最初での相互参照を生成します．Info書式化コマンドはそれをInfo相互参照に変換し，Infoのfで他のノードへ直接行くことができます．TeX植字コマンドはそれをページ参照や，他の本やマニュアルへの参照に変換します．

参照のように見えるものと必要条件
----------------

よくあるInfo相互参照は，以下のようになります．

     *Note NODE-NAME::.

または，以下のようになります．

     *Note CROSS-REFERENCE-NAME: NODE-NAME.

TeXでは，相互参照は以下のようになります．

     See Section SECTION-NUMBER [NODE-NAME], page PAGE.

または，以下のようになります．

     See Section SECTION-NUMBER [TITLE-OR-TOPIC], page PAGE.

@xrefコマンドは，Infoファイルや印刷されたマニュアルで，ピリオドやカンマを相互参照の終りに生成しません．ピリオドやカンマは独自に書く必要があります． (訳注:日本語では句読点はカンマやピリオドではありません．このマニュアルでは，全角のカンマとピリオドを使用しています．)そうしない場合，参照の終りを認識しません．(@pxrefコマンドは異なる動作をします．See @pxref.)

     注意してください:ピリオドやカンマを，@xrefに続ける必要があります．相互参照の終了で要求されます．このピリオドやカンマは，Infoファイルと印刷されたマニュアルの両方の出力に現れます．

@xrefはInfoをノード名で参照する必要があります．@nodeをノードの定義に使用してください(see Writing a Node)．

@xrefはカッコ内に，カンマで分けられたいくつかの引数が続きます．これらのカンマの前後の空白は無視されます．

相互参照は，ノード名のみ必要です．しかし，それは最大4つまで追加引数を含むことができます．これらの変数はそれぞれ，幾分異なるように見える相互参照を生成します．

     注意してください:カンマは相互参照で引数を分けます．フォーマッタがそれらをセパレータと間違えないように，タイトルや他の部分にそれらを含めるのを避けてください．

1つの引数を用いた@xref
--------------

@xrefの最も簡単な形式は，同じInfoファイルの他のノード名を1つの引数として持つものです．Infoフォーマッタは，Infoリーダが参照へジャンプできる出力を生成します．TeXはページとセクション番号を指定する出力を生成します．

例えば，以下のようにします．

     @xref{Tropical Storms}.

これは，以下を生成します．

     *Note Tropical Storms::.

また，以下を生成します．

     See Section 3.1 [Tropical Storms], page 24.

(前の例では，閉じカッコはピリオドが続くことに注意してください．)

相互参照の後に，以下のように文節を書くことができます．

     @xref{Tropical Storms}, for more info.

それは，以下を生成します．

     *Note Tropical Storms::, for more info.

また以下を生成します．

     See Section 3.1 [Tropical Storms], page 24, for more info.

(前の例では，閉じカッコはカンマと，文節が続き，それにはピリオドが続くことに注意してください．)

2つの引数を用いた@xref
--------------

With two arguments, the second is used as the name of the Info cross reference, while the first is still the name of the node to which the cross reference points.

2つの引数を用いた場合，2番目は，Info相互参照の名前として使用され，一方，最初のものは，相互参照が示すノード名のままです．

テンプレートは以下のようになります．

     @xref{NODE-NAME, CROSS-REFERENCE-NAME}.

例えば，以下のようにします．

     @xref{Electrical Effects, Lightning}.

以下を生成します．

     *Note Lightning: Electrical Effects.

また，以下を生成します．

     See Section 5.2 [Electrical Effects], page 57.

(前の例では，閉じカッコはピリオドが続き，ノード名が印刷され，相互参照は印刷されないことに注意してください．)

相互参照の後に，以下のように文節を続けることができます．

     @xref{Electrical Effects, Lightning}, for more info.

以下を生成します．

     *Note Lightning: Electrical Effects, for more info.

また，以下を生成します．

     See Section 5.2 [Electrical Effects], page 57, for more info.

(前の例では，閉じカッコはカンマと文節が続き，それにはピリオドが続くことに注意してください．)

3つの引数を用いた@xref
--------------

3番目の引数は，TeX出力でノード名を置換します．3番目の引数は，印刷された出力でのセクション名にするか，セクションで述べられているトピックを述べるべきです．参照を印刷したとき読みやすいように，頭文字を大文字にしたいことも多いです．構文や意味のためノード名が適切でないときは，3番目の引数を使用してください．

相互参照のタイトルやトピックや，その他のあらゆるセクションで，カンマの配置を避けることを覚えておいてください．フォーマッタは，カンマに従い引数の相互参照を分けます．タイトルやセクションのカンマは，それを2つの引数に分けます．参照では，タイトルをカンマ無しで``Clouds, Mist, and Fog''のように書く必要があります．

また，相互参照を終了するために，カンマやピリオドを@xrefの閉じカッコの後に書くことを覚えておいてください．以下の例では，文節が終端のカンマに付きます．

テンプレートは以下のようになります．

     @xref{NODE-NAME, CROSS-REFERENCE-NAME, TITLE-OR-TOPIC}.

例えば，以下のようにします．

     @xref{Electrical Effects, Lightning, Thunder and Lightning},
     for details.

以下を生成します．

     *Note Lightning: Electrical Effects, for details.

また，以下を生成します．

     See Section 5.2 [Thunder and Lightning], page 57, for details.

3番目の引数が与えられ，2番目が空の場合，3番目の引数が両方を提供します． (2つのカンマが並んで，2番目の引数が空だということを示している方法に注意してください．)

     @xref{Electrical Effects, , Thunder and Lightning},
     for details.

以下を生成します．

     *Note Thunder and Lightning: Electrical Effects, for details.

また，以下を生成します．

     See Section 5.2 [Thunder and Lightning], page 57, for details.

実際問題として，ノード名とセクションタイトルが同じ場合は，相互参照を最初の引数で書き，ノード名とタイトルが異なる場合は，1番目と3番目の引数で書くことが最善です．

ここに，The GNU Awk User's Guideの例がいくつかあります．

     @xref{Sample Program}.
     @xref{Glossary}.
     @xref{Case-sensitivity, ,Case-sensitivity in Matching}.
     @xref{Close Output, , Closing Output Files and Pipes},
        for more information.
     @xref{Regexp, , Regular Expressions as Patterns}.

4つと5つの引数を用いた@xref
-----------------

相互参照では，4番目の引数は，リファレンスが現れるファイルと異なるInfoファイルのアンカー名を指定し，5番目の引数は，印刷されたマニュアルでのそのタイトルを指定します．

カンマやピリオドを，相互参照を終了する@xrefの閉じカッコに続ける必要があることを覚えておいてください．以下の例では，終端のカンマに文節が続きます．

テンプレートは以下のようになります．

     @xref{NODE-NAME, CROSS-REFERENCE-NAME, TITLE-OR-TOPIC,
     INFO-FILE-NAME, PRINTED-MANUAL-TITLE}.

以下が例です．

     @xref{Electrical Effects, Lightning, Thunder and Lightning,
     weather, An Introduction to Meteorology}, for details.

以下を生成します．

     *Note Lightning: (weather)Electrical Effects, for details.

Infoファイルの名前はカッコで囲まれ，前にノード名があります．

印刷されたマニュアルでは，参照は以下のようになります．

     See section ``Thunder and Lightning'' in An Introduction to Meteorology, for details.

印刷されたマニュアルのタイトルは，イタリック体で植字されます．他のマニュアルを参照するとき，参照が参照するページをTeXは知ることができないので，ページ番号はありません．

長いバージョンの@xrefを使用するとき，2番目に引数を省略することもよくあります．この場合，トピックを記述する3番目に引数はInfoでの相互参照名として使用されます．

テンプレートは以下のようになります．

     @xref{NODE-NAME, , TITLE-OR-TOPIC, INFO-FILE-NAME,
     PRINTED-MANUAL-TITLE}, for details.

それは，以下を生成します．

     *Note TITLE-OR-TOPIC: (INFO-FILE-NAME)NODE-NAME, for details.

そして，以下を生成します．

     See section TITLE-OR-TOPIC in PRINTED-MANUAL-TITLE, for details.

例えば，以下のようにします．

     @xref{Electrical Effects, , Thunder and Lightning,
     weather, An Introduction to Meteorology}, for details.

以下を生成します．

     *Note Thunder and Lightning: (weather)Electrical Effects,
     for details.

そして，以下を生成します．

     See section ``Thunder and Lightning'' in An Introduction to Meteorology, for details.

滅多にありませんが，単一の印刷されたマニュアルにある，他のInfoファイルへ参照したいときもあります---それは，複数のTexinfoファイルが同じTeXの実行に組み込まれるにもかかわらず，別々のInfoファイルを作成するときです．この場合， 4番目の引数のみを指定し，5番目はその必要がありません．

`Top'ノードに名前を付ける
===============

相互参照では，常にノードを名付ける必要があります．これは，マニュアル全体を参照するために，@xrefコマンドの最初の引数として書き込むことで `Top'ノードを識別する必要があるということを意味します．(これは，メニュー項目を書く方法と異なります．Referring to Other Info Files,を参照してください．)同時に，印刷された相互参照で有意義なセクショントピックやタイトルを(単語`Top'の代わりに)提供するために， @xrefコマンドの3番目の引数として適切な項目を書く必要があります．

こうして，The GNU Make Manualへの相互参照を作成するために，以下のように書いてください．

     @xref{Top, , Overview, make, The GNU Make Manual}.

それは，以下を生成します．

     *Note Overview: (make)Top.

また，以下を生成します．

     See section ``Overview'' in The GNU Make Manual.

この例は，Topが最初のノード名で，Overviewがマニュアルの最初のセクション名です．

@ref
====

@refは印刷された出力で`See'を生成せず，参照のみを生成する以外， @xrefとほとんど同じです．これは，文の終りの部分とするとき役に立ちます．

例えば，以下のようにします．

     For more information, see @ref{Hurricanes}.

以下を生成します．

     For more information, see *Note Hurricanes::.

また，以下を生成します．

     For more information, see Section 8.2 [Hurricanes], page 123.

@refコマンドは，著者がそれを表現する方法として，印刷されたマニュアルに適しているが，Info書式では悪く見えるものを導き出すときもあります．使用者が印刷物とInfo書式の両方で使用することを心に留めておいてください．

例えば，以下のようにします．

     Sea surges are described in @ref{Hurricanes}.

以下を生成します．

     Sea surges are described in Section 6.7 [Hurricanes], page 72.

以上は印刷されたマニュアルで，Infoでは以下のようになります．

     Sea surges are described in *Note Hurricanes::.

     注意:ピリオド，カンマや正しいカッコを，@refコマンドの後に 2つ以上の引数とともに書く必要があります．そうしない場合，Infoは相互参照の項目を見つけることができず，相互参照を追う試みは失敗します．一般的な規則として，ピリオドやカンマを，全ての@refコマンドの後に書くべきです．これは，印刷されたマニュアルでもInfo出力でも最善に見えます．

@pxref
======

丸カッコの参照コマンド@pxrefは，@xrefとほとんど同じですが，丸カッコの中でのみ使用し，コマンドの閉じカッコの後にカンマやピリオドを入力しません．コマンドは2つの点で@xrefと異なります．

 1. TeXは印刷されたマニュアルに対し，大文字の`See'ではなく小文字の`see'を用いて，参照を植字します．

 2. Info書式化コマンドでは自動的に閉じコロンやピリオドで参照を終りにします．

書式化の1つの型は，自動的に閉じる句読点を挿入し，他のものはそうしないので， @pxrefは他の文の一部として丸カッコ内でのみ使用すべきです．また，@xrefで行うような，参照後に句読点を挿入すべきではありません．

@pxrefは，印刷された出力とInfoファイルの両方で，出力が正しく見え，丸カッコが正しく働くように設計されています．印刷されたマニュアルでは，閉じるカンマやピリオドは丸カッコ内の相互参照の後に続きません．そのような句読点は間違いです．しかしInfoファイルでは，適切な閉じる句読点をInfoが終りとして認識できるように，相互参照に続ける必要があります．@pxrefは，出力の 1つの形式に終端を置き，それ以外では置かないことに対し，複雑な方法を使用することを免除します．

1つの引数を用いた丸カッコ相互参照は以下のようになります．

     ... storms cause flooding (@pxref{Hurricanes}) ...

それは，以下を生成します．

     ... storms cause flooding (*Note Hurricanes::) ...

また，以下を生成します．

     ... storms cause flooding (see Section 6.7 [Hurricanes], page 72) ...

2つの引数を用いた丸カッコ相互参照は，以下のようなテンプレートになります．

     ... (@pxref{NODE-NAME, CROSS-REFERENCE-NAME}) ...

それは，以下を生成します．

     ... (*Note CROSS-REFERENCE-NAME: NODE-NAME.) ...

また，以下を生成します．

     ... (see Section NNN [NODE-NAME], page PPP) ...

@pxrefは@xref同様に，最大5つの引数を使用することができます (see @xref)．

     注意してください:@pxrefは，丸カッコの参照としてのみ使用してください．@pxrefを文の文節として使用しようとしないでください．それは，Infoファイル，印刷された出力，またはその両方で悪く見えます．

     同様に，丸カッコ相互参照は，文の終りで最善に見えます．文中に書くこともできますが，その場所はテキストの流れを分断します．

@inforef
========

@inforefは印刷されたマニュアルには無い，Infoファイルへの相互参照のために使用されます．印刷されたマニュアルでも，@inforefは，Info ファイルでユーザに見せるような参照を生成します．

このコマンドは，以下の順番で2つまたは3つの引数をとります．

 1. ノード名．

 2. 相互参照名(オプション)．

 3. Infoファイル名．

@xrefのように，引数はカンマで分けられます．同様に，@xrefのように，}の後でカンマやピリオドで参照を終端する必要があります．

以下がテンプレートです．

     @inforef{NODE-NAME, CROSS-REFERENCE-NAME, INFO-FILE-NAME},

このようにします．

     @inforef{Expert, Advanced Info commands, info},
     for more information.

以下を生成します．

     *Note Advanced Info commands: (info)Expert,
     for more information.

また，以下を生成します．

     See Info file info, node Expert, for more information.

同様に，以下のようにします．

     @inforef{Expert, , info}, for more information.

以下を生成します．

     *Note (info)Expert::, for more information.

また，以下を生成します．

     See Info file info, node Expert, for more information.

@inforefの逆は@citeで，それはInfo形式がない，印刷の仕事を参照するために使用します．See @cite.

@uref{URL[, TEXT][, REPLACEMENT]}
=================================

@urefは，ユニフォームリソースロケータ(url)への参照を生成します．それは，1つの必須の引数urlと，表示されるテキストを制御する2つの追加の引数をとります．HTML出力では，@urefは追うことができるリンクを生成します．

2番目の引数が指定されている場合，それは表示するテキストです(デフォルトは url自身です)．InfoとDVI出力では，urlも出力され，HTML出力ではそうなりません．

一方，3番目の引数が指定されている場合も同様にテキストは表示されますが， urlはあらゆる書式で出力されません．これは，テキストがmanページのように既に十分参考にされているとき便利です．3番目の引数が与えられた場合， 2番目の引数は無視されます．

簡単な1つの引数の形式では，urlはターゲットとリンクのテキストの両方になります．

     The official GNU ftp site is @uref{ftp://ftp.gnu.org/gnu}.

以下を生成します．

     The official GNU ftp site is ftp://ftp.gnu.org/gnu.

2つの引数の形式の例です．

     The official @uref{ftp://ftp.gnu.org/gnu, GNU ftp site} holds
     programs and texts.

以下を生成します．

     The official GNU ftp site (ftp://ftp.gnu.org/gnu) holds
     programs and texts.

そして，Info出力はこのようになります．

     The official GNU ftp site (ftp://ftp.gnu.org/gnu) holds
     programs and texts.

HTML出力はこのようになります．

     The official <a href="ftp://ftp.gnu.org/gnu">GNU ftp site</a> holds
     programs and texts.

3つの引数の形式の例です．

     The @uref{http://example.org/man.cgi/1/ls,,ls(1)} program ...

以下を生成します．

     The ls(1) program ...

しかしHTMLでは，以下のようになります．

     The <a href="http://example.org/man.cgi/1/ls">ls(1)</a> program ...

人々が追うことができるリンクを作成せず，単にurlを示すため，@urlを使用してください(see @url)．

urlの明確な書式を表示することを好む人もいます．

     <URL:http://HOST/PATH>

好みにより，この形式を入力ファイルで使用することもできます．テキストで urlの検出を試みるあらゆるソフトウェアは，便利にするため，<URL:無しで検出する必要があるので，我々は，余分な<URL:と>を用い，出力をバラバラにすることは必要ないと思います．

単語と句のマーキング
**********

Texinfoでは，様々な方法で単語や句にマークを付けることができます．Texinfo フォーマッタは，テキストの強調の仕方を決定するため，この情報を使用します．例えば，単語や句が，定義している事象，メタ構文の変数や，プログラムで定義されているシンボルであっても指定できます．同様にいくつかの異なる方法で，テキストを強調できます．

定義，コマンド等を示す
===========

Texinfoには，テキストの一部が関係する種類を示すコマンドがあります．例えば，メタ構文の変数は@varで，コードは@codeでマークされます．テキストの一部はそのオブジェクトの種類を伝えるコマンドでラベルが付くので，Texinfoフォーマッタがそのようなテキストを準備する方法を変更することは簡単です．(Texinfoは植字的な書式化言語というよりはむしろ，意図的な書式化言語です．)

例えば，印刷されたマニュアルで，コードは通常タイプライターのフォントで図案化されます．@codeはTeXに，このテキストをこのフォントで植字するよう伝えます．しかし，TeXのコードの強調を他のフォントを使用するよう変更することは簡単で，この変更はキーストローク例の強調方法に影響を与えません．直接的な植字コマンドがファイルの本体で使用され，それを変更したい場合，コードを変更し，他が変更されていないことを確かめるため，全ての単一の事象を調べる必要があります．

便利な強調コマンド
---------

強調コマンドは，関数やファイル名のリストのような，ファイルの役に立つ情報を抽出するために使用できます．例えば，指定したコマンドでマークされた単語と句を，全ての段落の後に索引項目を挿入する，Emacs Lisp(またはキーボードマクロ )でプログラムを書くことも可能です．まだ項目を作成していない場合，関数の索引を構築するためこれを行うことができます．

コマンドは様々な目的を満たします．

@code{SAMPLE-CODE}
     プログラムの一部のリテラル例となるテキストを示します．

@kbd{KEYBOARD-CHARACTERS}
     キーボード入力を示します．

@key{KEY-NAME}
     キーボードのキーに対する慣習的な名前を示します．

@samp{TEXT}
     文字列のリテラル例となるテキストを示します．

@var{METASYNTACTIC-VARIABLE}
     メタ構文変数を示します．

@env{ENVIRONMENT-VARIABLE}
     環境変数を示します．

@file{FILE-NAME}
     ファイル名を示します．

@command{COMMAND-NAME}
     コマンド名を示します．

@option{OPTION}
     コマンドラインオプションを示します．

@dfn{TERM}
     用語使用の紹介や定義を示します．

@cite{REFERENCE}
     本の名前を示します．

@acronym{ACRONYM}
     頭字語 (頭文字を組み合わせて作った語)を示します．

@url{UNIFORM-RESOURCE-LOCATOR}
     ワールドワイドウェブ(WWW)のためのユニフォームリソースロケータ(URL)を示します．

@email{EMAIL-ADDRESS[, DISPLAYED-TEXT]}
     電子メールアドレスを示します．

@code{SAMPLE-CODE}
------------------

プログラムの一部と，構文的なトークン全体からなるテキストを示すため， @codeコマンドを使用してください．カッコでテキストを囲ってください．

このように，@codeをプログラムの表現，プログラムで使用している変数や関数の名前や，プログラム言語のキーワードに対して使用すべきです．

Texinfoのようなプログラム言語に似ている言語のコマンド名に対し， @codeを使用してください．例えば，@codeと@sampは， Texinfoソースファイルで，それぞれ@code{@@code}と @code{@@samp}と書くことで生成されます．

文の最初に現れるとき，@codeコマンドの中で単語の大文字小文字を変えるのは正しくありません．ほとんどのコンピュータ言語は大文字小文字の違いを識別します．例えばCでは，Printfはprintfの識別子と異なり，おそらくそのスペルミスです．大文字小文字の区別をしない言語でも，異なる方法で綴られた識別子を見ると，人間の読者は混乱します．1つの綴りを選び，それを常に使用してください．全てが小文字で書かれたコマンド名で文を開始したくない場合，文の配置替えをするべきです．

印刷されたマニュアルで，@codeでTeXは引数をタイプライターフェイスのフォントで植字します．Infoファイルでは．Info書式化コマンドはシングルクォーテーションマークでテキストも周りを囲みます．

例えば，以下のようにします．

     The function returns @code{nil}.

印刷されたマニュアルで，これは以下を生成します．

     The function returns nil.

ここに，@codeを使用しないほうが好ましい場合をいくつかあげます．

  * lsのようなシェルコマンド名(@commandを使用してください)．

  * -cのようなシェルオプション単独のとき(@optionを使用してください)．

  * 同様に，@codeより@sampを使って書いた方が良く見えるシェルコマンド全体．この場合，規則はより喜ばしい書式を選択するためです．

  * TEXINPUTSのような環境変数(@envを使用してください)．

  * 構文トークンより短い文字列．例えば，Emacs Lisp関数のgoto-charの名前の一部のgoto-chに関して書く場合，@sampを使用すべきです．

  * 一般に，トークンで使用されている文字に関して書く場合．例えば，関数名で使用可能な文字や印刷可能なシンボルを説明しているとき，@codeを使わないでください．(@sampを使用してください．)同様に，入力がプログラム言語のような言語で書かれていない場合，プログラムの入力と考えられるテキストのマークに@codeを使用すべきではありません．例えば，GNU Emacsのキーストロークコマンドに対し@codeを使用すべきではありませんが(代わりに @kbdを使用してください)，キーストロークコマンドが呼び出すEmacs Lispの関数名に対し@codeを使用することはできます．

@command，@optionと，@envは比較的最近導入されたので，@codeや@sampをコマンド名，オプションと，環境変数に使用することも可能です．新しいコマンドでより正確にマークアップを表現できますが，より古いコマンドの使用でも実害は無く，もちろん長期存続のマニュアルはそうしています．

@kbd{KEYBOARD-CHARACTERS}
-------------------------

ユーザが入力する文字に対し@kbdコマンドを使用してください．例えば，文字M-aを記述するため，以下のように書いてください．

     @kbd{M-a}

文字M-x shellを記述するため，以下のように書いてください．

     @kbd{M-x shell}

@kbdコマンドはInfoでは@codeと同じ効果がありますが，印刷されたマニュアルではデフォルトで異なるフォント(通常のタイプライターの代わりに傾いたタイプライター)を生成し，そのため，ユーザーはこれらのコンピュータ出力と，入力することになる文字を区別できます．

@kbdの使用法がマニュアル間で異なるので，@kbdinputstyleコマンドでフォント切替えの制御を行うことができます．このコマンドはInfo出力で効果がありません．このコマンドを行の最初で，引数として一単語で以下の1つを書いてください．

code
     常に@kbdに対し@codeと同じフォントを使用します．

example
     @exampleとそれに似た環境のみで@kbdに対し異なるフォントを使用します．

distinct
     (デフォルト)常に@kbdに対し異なるフォントを使用します．

@kbdコマンドのカッコの中に他の@-コマンドを埋め込むことができます．例えばここで，より冗長に記述すると，``rを押し，RETを押してください''となるコマンドを記述した例があります．

     @kbd{r @key{RET}}

これはr RETを生成します．

同様に，入力した文字を書き出すために@kbdコマンドを使用することもできます．例えば，以下のようにします．

     To give the @code{logout} command,
     type the characters @kbd{l o g o u t @key{RET}}.

これは以下を生成します．

     To give the logout command, type the characters l o g o u t RET.

(同様に，この例は明確にするためスペースを加えることができることも示します．実際にスペース文字を入力文字の1つとして述べたい場合，そのために @key{SPC}を書いてください．

@key{KEY-NAME}
--------------

@keyコマンドをキーボード上のキーの慣習名に対し以下のように使用してください．

     @key{RET}

入力された文字の並びが1つ以上の名前で記述されたキーを含むとき， @keyコマンドを，@kbdコマンドの引数で使用できます．

例えば，入力するC-x ESCを生成するために，以下のようにします．

     @kbd{C-x @key{ESC}}

ここに，推奨されるキーの名前のリストがあります．

     SPC
          Space

     RET
          Return

     LFD
          Linefeed(しかし，最近のほとんどのキーボードはLinefeedキーが無いので，この文字C-jを呼ぶ方がいいでしょう)．

     TAB
          Tab

     BS
          Backspace

     ESC
          Escape

     DEL
          Delete

     SHIFT
          Shift

     CTRL
          Control

     META
          Meta

修飾キー名の`meta'や`ctrl'のような単語を扱う細別もあります．Meta-aのような，修飾キーが使用されている文字を述べるとき，@kbdコマンドを単独で使用してください．@keyコマンドを使用しないでください．しかし，修飾キーを単独で記述するときは@keyコマンドを使用してください．例えば，Meta-aを生成するため@kbd{Meta-a}を書き，METAを生成するため@key{META}を書いてください．

@samp{TEXT}
-----------

ファイル，文字列，パターンなどの文字の並びの例や`sample'のリテラルとなるテキストを示すため，@sampコマンドを使用してください．テキストをカッコで囲んでください．Infoファイルと印刷されたマニュアルの両方で，シングルクォーテイションの中にで引数が現れます．さらに，等幅フォントで印刷されます．

     To match @samp{foo} at the end of the line,
     use the regexp @samp{foo$}.

これは以下を生成します．

     To match foo at the end of the line, use the regexp foo$.

単一の文字を記述するときはいつも，@kbdや@keyがより適していない限り@sampを使用すべきです．同様に，Cの記述全体やシェルコマンド全体に対し@sampを使用することができます．この場合，@sampは @codeより良く見えます．基本的に，@sampは@code， @kbdや，@keyでカバーされていないあらゆるものに対する入れものです．

指定した文字列の一部の場合のみ，句読点をカッコ内に含めてください．句読点が文字列の周りにある英語のテキストの一部の場合，カッコの外に句読点を書いてください．例えば以下の文章では，カンマとピリオドはカッコの外側に置きます．

     In English, the vowels are @samp{a}, @samp{e},
     @samp{i}, @samp{o}, @samp{u}, and sometimes
     @samp{y}.

これは以下を生成します．

     In English, the vowels are a, e, i, o, u,  and sometimes y.

@var{METASYNTACTIC-VARIABLE}
----------------------------

メタ構文変数を示すため，@varコマンドを使用してください．メタ構文変数は，テキストの他の一部を意味します．例えば，メタ構文変数を，関数に渡される引数を記述するため，関数のドキュメントで使用すべきです．

プログラム言語で，特定変数の名前に対し@varを使用しないでください．これらはプログラムの特別な名前なので，それに対しては@codeが正しいものです(see code)．例えば，Emacs Lisp変数texinfo-tex-commandはメタ構文変数ではありません．それは，@codeを使用し，正確に書式化されます．

環境変数に対する@varも使用しないでください．それに対しては @envが正しいものです(次のセクションを見てください)．

Infoでの@varの効果は，引数の文字を全て大文字に変更します．印刷されたマニュアルとHTML出力では引数は傾いて印刷されます．

例えば，以下のようになります．

     To delete file @var{filename},
     type @samp{rm @var{filename}}.

以下を生成します．

     To delete file FILENAME, type rm FILENAME.

(@varは@code，@samp，@fileなどの間に現すことができることに注意してください．)

メタ構文変数は，スペース以外全て小文字で書き，読みやすくするためハイフンを使用してください．このため，Texinfoマニュアルの初め方を表現するTexinfoソースは以下のようになります．

     \input texinfo
     @@setfilename @var{info-file-name}
     @@settitle @var{name-of-manual}

これは以下を生成します．

     \input texinfo
     @setfilename INFO-FILE-NAME
     @settitle NAME-OF-MANUAL

ドキュメント形式によっては，メタ構文変数は山カッコで表示するものもあり，以下がその例です．

     ..., type rm <filename>

しかし，それはTexinfoが使用する形式ではありません．(もちろん，そうしたい場合，texinfo.texソースを編集して，Info書式化コマンドを <...>書式で出力させることもできます．)

@env{ENVIRONMENT-VARIABLE}
--------------------------

GNUを含め，多くのオペレーティングシステムで使用される環境変数を示すため， @envコマンドを使用してください．メタ構文変数に使用しないでください．代わりに@varを使用してください(前のセクションを参照してください)．

@envの効果は@codeと同じです．例えば，以下のようにします．

     The @env{PATH} environment variable sets the search path for commands.

以下を生成します．

     The PATH environment variable sets the search path for commands.

@file{FILE-NAME}
----------------

ファイル，バッファやディレクトリ名や，Infoでのノード名となるテキストを示すため，@fileコマンドを使用してください．また，ファイル名の接尾子にも使用できます．プログラム言語のシンボルに対し@fileを使用しないでください．@codeを使用してください．

現在，@fileの効果は@sampと同じです．例えば以下のようにします．

     The @file{.el} files are in
     the @file{/usr/local/emacs/lisp} directory.

以下を生成します．

     The .el files are in the /usr/local/emacs/lisp directory.

@command{COMMAND-NAME}
----------------------

lsやccのようなコマンド名を示すため，@commandを使用してください．

@commandの効果は@codeと同じです．例えば，以下のようにします．

     The command @command{ls} lists directory contents.

以下を生成します．

     The command ls lists directory contents.

`Emacs'や`Bison'のような，新しい英語としたい場合，@commandを使わず，通常のテキストのフォントでプログラム名を書くべきです．

ls -lのようなシェルコマンドの呼び出し全体を書くとき，自分で判断して @sampまたは@codeのどちらかを使用すべきです．

@option{OPTION-NAME}
--------------------

コマンドラインオプションを示すため，@optionコマンドを使用してください．例えば， -lや，--versionや， --output=FILENAMEです．

@optionの効果は@sampと同じです．例えば以下のようにします．

     The option @option{-l} produces a long listing.

以下を生成します．

     The option -l produces a long listing.

表では，オプションを@codeの中に書くと，より喜ばしい効果を生成します．

@dfn{TERM}
----------

技術用語の使用の紹介や定義を識別するため，@dfnコマンドを使用してください．もう一度使用されたり読者が知るべき用語を紹介を意図した引用部分でのみ，このコマンドを使用してください．最初に用語について述べるちょっとした記述は@dfnに値しません．コマンドは印刷されたマニュアルでイタリック体を生成し，Infoファイルでは2重引用符を生成します．例えば以下のようにします．

     Getting rid of a file is called @dfn{deleting} it.

以下を生成します．

     Getting rid of a file is called deleting it.

一般的な規則として，用語の発生の定義を含む文は，用語の定義になるべきです．文はその定義を明示的にする必要はありませんが，定義情報を含めるべきです ---それで意味がはっきりします．

@cite{REFERENCE}
----------------

Infoファイルの仲間に欠けている本の名前に対し@citeコマンドを使用してください．コマンドは印刷されたマニュアルでイタリック体を生成し，Infoファイルでは引用符を生成します．

本がTexinfoで書かれている場合，読者がInfoでそのような参照を簡単に追うことができるので，相互参照を使用してください．See @xref.

@acronym{ACRONYM}
-----------------

`NASA'のように全て大文字で書かれている省略に対し， @acronymを使用してください．省略は@acronym{NASA}のように，カッコ内に1つの引数で与えられます．形式の問題や，特定の省略に対し， @acronym{F.B.I.}のようにピリオドを使用した方が良いかもしれません．

TeXとHTMLでは，引数は傾いた小さなフォントサイズで印刷されます．Infoやプレーンテキスト出力では，このコマンドは何も変更しません．

@url{UNIFORM-RESOURCE-LOCATOR}
------------------------------

ワールドワイドウェブのユニフォームリソースロケータurlを示すため， @urlコマンドを使用してください．これは，@file， @var等に似ていて，純粋にマークアップに対するものです．それはHTML形式で追いかけることができるリンクを生成しません(そのためには， @urefを使用してください．see @uref)．実際には存在しないURLに対し便利です．例えば，以下のようにします．

     For example, the url might be @url{http://example.org/path}.

それは，以下を生成します．

     For example, the url might be http://example.org/path.

@email{EMAIL-ADDRESS[, DISPLAYED-TEXT]}
---------------------------------------

電子メールアドレスを示すため@emailコマンドを使用してください．それは1つの必須の引数のaddressと，1つの追加引数で表示するテキストとをとります (デフォルトではアドレス自身になります)．

InfoとTeXでは，アドレスは山カッコで表示され，存在する場合，表示テキストが前に付きます．HTML出力では，@emailは，通常メール作成ウィンドウをもたらすmailtoリンクを生成します．例えば，以下のようにします．

     Send bug reports to @email{bug-texinfo@@gnu.org}.
     Send suggestions to the @email{bug-texinfo@@gnu.org, same place}.

以下を生成します．

     Send bug reports to bug-texinfo@gnu.org.
     Send suggestions to the same place.

テキストの強調(Emphasizing Text)
=========================

通常Texinfoは，テキストで単語が属するカテゴリに従ってマークされた単語に対しフォントを変更します．例えば@codeコマンドです．ほとんどの場合，単語をマークする方法が最善です．しかし，カテゴリを示さずテキストを強調したいときもあります．Texinfoはこのため2つのコマンドがあります．またTexinfoは， TeXがテキストを植字するときのフォントを指定するコマンドがいくつかあります．これらのコマンドはInfoでは効果が無く，その中の1つ@rコマンドだけ，通常使用されます．

@emph{TEXT}と@strong{TEXT}
-------------------------

@emphと@strongコマンドは，強調のためのものです． @strongがより強調します．印刷された出力で，@emphは italicsを生成し，@strongはboldを生成します．

例えば，以下のようにします．

     @quotation
     @strong{Caution:} @samp{rm * .[^.]*} removes @emph{all}
     files in the directory.
     @end quotation

以下を生成します．

          *Caution*: `rm * .[^.]*' removes _all_
          files in the directory.

@strongコマンドは，前の例での単語`Caution'のような，効果が印刷要素となるマーク以外では，滅多に使用されません．

Info出力では，@emphはアンダースコア(_)でテキストを囲み， @strongはテキストの周りにアスタリスクを置きます．

     注意:@strongを単語Noteで使用しないでください． Infoは相互参照との組み合わせと勘違いします．代わりに，Please noteやCautionのような句を使用してください．

@sc{TEXT}: 小さい大文字フォント
---------------------

テキストを，印刷物とHTMLでA SMALL CAPS FONTに設定し，Infoファイルで大文字に設定するため@scコマンドを使用してください．(可能な場合)小さい小文字にしたいテキストを，以下のように小文字でカッコの間に書いてください．

     The @sc{acm} and @sc{ieee} are technical societies.

これは以下を生成します．

     The ACM and IEEE are technical societies.

TeXは，文字が`ページからはみ出る'ことを避けるように，小さい大文字フォントで植字します．これは，小文字のテキストを全て大文字より読みやすくします．しかし，通常は，どこでも大文字小文字を混ぜて使用する方が良いでしょう． Info書式化コマンドは，全ての小さい大文字のテキストを大文字に設定します． HTMLでは，テキストは大文字で小さいフォントで表現されます．

@scコマンドのカッコ内のテキストが大文字の場合，TeXはフルサイズの大文字で植字します．今までにそうしていて，@scで全て大文字のテキストに印を付けるのは無駄なので，makeinfoがそのような使用法を警告する場合，省略してフルサイズの大文字を使用してください．

同様に，ATO(`abort to orbit'を意味するNASA単語)のような専門用語に対し小さな大文字フォントを使用することもできます．

CDRや，Lispプログラムで使用される単語のような専門用語を小さな大文字フォントを使用するため，微妙な点があります．この場合，2番目とリスト(リストの CDR)の次の要素に参照される単語のときは，小さい大文字フォントを使用すべきですが，同じ綴りのLisp関数を参照する単語のときは@codeを使用すべきです．

Infoではなく印刷時のフォント
----------------

Texinfoは，Infoでは効果が無く，印刷されたマニュアルでフォントの変更を指定する，4つのフォントコマンドを供給します．@iはitalicフォント (TeXのバージョンによっては傾いたフォントが使用される)を要求し， @bはboldフェイスを要求し，@tは@codeで使用されるタイプライター形式のフォントfixed-widthを要求し，そして， @rはテキストの印刷での通常フォントのromanフォントを要求します．すべての4つのコマンドは，それに続くカッコに囲まれた引数に適用します．

@rコマンドのみがよく使用されます．例のプログラムで，コードコメントを等幅フォントからローマンフォントに変更するため，@rコマンドを使用することができます．これは，印刷された出力で良く見えます．

例えば，以下のようにします．

     @lisp
     (+ 2 2)    ; @r{Add two plus two.}
     @end lisp

以下を生成します．

     (+ 2 2)    ; Add two plus two.

可能な場合，他の3つのフォントコマンドの使用を避けるべきです．その1つを使う必要がある場合，Texinfo言語で，おそらくギャップが生じます．

引用と例
****

引用と例は，テキストの大部分が区切られた1つ以上の段落全体から成り立つテキストの塊で，異なる取り扱いをされます．通常字下げされます．

Texinfoでは，引用や例は常に行の最初に単独で@-コマンドを書くことから始まり，同様に，行の最初に単独行で@endコマンドを書くことで終ります．例えば，例を@exampleを行の最初に単独行で書くことで始め，行の始めに単独行で @end exampleを書くことで終えます．

ブロックで囲むコマンド
===========

ここに，次のセクションで更に説明する引用と例のコマンドがあります．

@quotation
     引用されたテキストを示します．テキストは補充され，字下げされ，そしてデフォルトでローマンフォントで印刷されます．

@example
     コード，コマンドのようなものを例示します．テキストは等幅フォントで印刷され，字下げされますが，補充されません．

@smallexample
     TeXでこのコマンドがデフォルトの8.5x11インチの書式より小さい @smallbook書式で印刷する以外，@exampleと同じです．

@lisp
     @exampleに似ていますが，特にLispコードの例示に対するものです．テキストは等幅フォントで印刷され字下げされますが，補充されません．

@smalllisp
     @exampleに対する@smallexampleのような@lispに対するものです．

@display
     例示のテキストを表示します．テキストは字下げされますが補充されず，フォントの選択もされません(そのため，デフォルトでフォントはローマンです)．

@smalldisplay
     @exampleに対する@smallexampleのような@displayに対するものです．

@format
     @display(テキストは補充されずフォントの選択もありません)に似ていますが，字下げされません．

@smallformat
     @exampleに対する@smallexampleのような@formatに対するものです．

@exdentコマンドは，行の字下げを元に戻すため，上記の構成の中で使用されます．

@flushleftと@flushrightコマンドは，補充されないテキストの左右のマージンを整えるために使用されます．

@noindentは，それに続くテキストを新しい段落のように字下げするのを妨げるため，上の構成の1つの後で使用することができます．

上の構成物の1つの中で角丸の四角を描いて例や引用を強調するため， @cartoucheコマンドを使用することができます．See Drawing Cartouches Around Examples.

@quotation
==========

引用のテキストを，以下の場合以外，通常処理します．

  * マージンがページの中心に近く，そのため引用全体を字下げできない場合．

  * 段落の最初の行が他の行より，もはや字下げできない場合．

  * 印刷された出力で，段落間の間隔が減らされている場合．

     これは@quotationコマンドと@end quotationコマンドの間に書かれているテキストの例です．@quotationコマンドは，他の(実際または架空の)印刷された本から抜粋されたテキストを示すために，最もよく使用されます．

@quotationコマンドは単独行のテキストとして書いてください．この行は出力に現れません．引用の終りを，行の最初に@end quotationのみを含む行で印を付けてください．@end quotation行は出力に現れません．こうして，以下のようになります．

     @quotation
     This is
     a foo.
     @end quotation

以下を生成します．

     This is a foo.

@example
========

@exampleコマンドは，コンピュータの入力や出力のような実行しているテキスト以外の例を示すために使用されます．

     これは，@exampleコマンドと
     @end exampleコマンドの間に書かれている
     テキストの例です．
     字下げされますが補充されません．

     印刷されたマニュアルでは，テキストは等幅フォントで植字され，余分な空白と空
     白行は意味があります．Infoファイルでは，それぞれの行を5個のスペースで字下
     げされ似たような結果が得られます．

@exampleコマンドを行の最初に単独で書いてください．例の終りは @end exampleコマンドを，同様に行の最初に単独行で書いて，印を付けてください．

例えば，以下のようにします．

     @example
     mv foo bar
     @end example

以下を生成します．

     mv foo bar

@exampleと@end exampleを含む行は出力に現れません．出力が良く見えるように，@exampleの前に空白行を置き，もう1つの空白行を @end exampleの後に置くべきです．始めの@exampleと終りの @end exampleの中の空白行は出力に現れることに注意してください．

     注意:例(や，問題となるTexinfoのあらゆる場所)の行でタブを使用しないでください!TeXはタブを1つのスペースとして扱い，見えるようにはなりません．これはTeXの問題です．(必要な場合，Emacsでタブをその領域の複数のスペースに変換するためM-x untabifyを使用することができます．)

例は，論理的に言うと段落の``真中にある''ものと，例の後に字下げされずに続けられるテキストとなります．@noindentコマンドはテキストの部分が新しい段落のように字下げされるのを妨げます． (see noindent.)

(@codeコマンドは文の中に埋め込まれるコードの例に使用されますが，前後のテキストを区切りません．See @code.)

@noindent
=========

例やその他の包含物は，段落を部分に切り分けます．通常，フォーマッタは例に続くテキストを新しい段落として字下げします．しかし，@noindentを行の最初に単独行で，それに続くテキストの前に書くことで，これを妨げることができます．

例えば，以下のようにします．

     @example
     これは例です．
     @end example

     @noindent
     この行は，字下げされません．御覧のように，行の最初は，その後も続けて全体が
     左寄せになっています．(この全体の例は，@code{@@display}と
     @code{@@end display}の間にあります．

以下を生成します．

          これは例です．

     この行は，字下げされません．御覧のように，行の最初は，その後も続けて全体が
     左寄せになっています．(この全体の例は，@displayと
     @end displayの間にあります．

Info出力で空白行の数を正確に調整するため，@noindentを含む行は空白行と，@end example行も生成しないことを覚えておいてください．

このマニュアルのTexinfoソースファイルでは，`生成します'と書いてあるそれぞれの行に，@noindentを含む行が前にあります．

@noindentコマンドの後にカッコを置かないでください． @noindentは段落の外で使用されるので，それは不要です (see Command Syntax)．

@lisp
=====

@lispコマンドはLispコードに対し使用します．それは @exampleコマンドの類語です．

     これは，@lispコマンドと@end lispコマンドの間に書かれたテキ
     ストの例です．

例の特徴に関する情報を保護するため，@exampleの代わりに @lispを使用してください．例えば，TexinfoファイルにLispコードのみを評価しそれが全てである関数を書く場合，これは便利です．LispライブラリのようにTexinfoファイルを使用することができます． (C，Fortranや他の言語に対し，類似の流儀で働くようTexinfoを拡張することは簡単です．)

@lispの終りは，単独行の@end lispで印を付けてください．

@small...ブロックコマンド
=================

正規の@exampleと@lispコマンドに加えて，Texinfoは ``small''という例のような形式のコマンドがあります．これらは， @smalldisplay，@smallexample，@smallformatと， @smalllispです．これらのコマンドは全て，@smallbookコマンド (それでTeXは，デフォルトの8.5x11インチではなく7x9.25インチの切り詰めたサイズの印刷された本を書式化します)で使用するために設計されています．

TeXでは，@small...コマンドは，8.5x11インチの書式より小さい @smallbook書式のためのより小さいフォントで植字します．したがって，長い行を持つ多くの例は短くする必要が無いように，より狭い @smallbookページに適するよう適合します．8.5x11インチの大きさで書式化するときは，どちらのコマンドでも通常のフォントサイズで植字されます．この場合，実際に@small...コマンドは``small''が無いものと同じです．

Infoでも，@small...コマンドは，``small''が無いコマンドと同じです．

@small...ブロックは，対応する@end small...でマークしてください．例えば@smallexampleは@end smallexampleと組になります．

     これは，@smallexampleと@end smallexampleの間に書かれたテキ
     ストの例です．Infoと8.5x11インチのマニュアルでは，このテキストは通常サイズ
     で現れます．しかし，7x9.25インチのマニュアルではこのテキストは小さいフォン
     トで現れます．

@small...コマンドで，狭いページに適するよう手動で例を編集することなく，小さい書式のマニュアルの準備がより簡単になります．

一般的な規則として，(例えば)@exampleまたは@smallexampleの 1つのみを章の中で一貫して使用すると，印刷されたドキュメントはより良く見えます．たまにだけ，2つの書式を混ぜるべきです．

@smallbookコマンドの詳細は，see Printing ``Small'' Books.

@displayと@smalldisplay
======================

@displayコマンドは，例のようなものを開始します．印刷されたマニュアルで@displayは等幅フォントを選択しない以外は，@exampleコマンドに似ています．実際，フォントを全く指定しないので，テキストは @displayコマンドが使われていないところで現れるものと同じフォントで現れます．

     これは，@displayコマンドと@end displayコマンドの間に書かれ
     たテキストの例です．@displayコマンドは，テキストを字下げしますが，
     補充しません．

Texinfoは@smalldisplayコマンドも供給し，それは@displayに似ていますが，@smallbook書式でより小さいフォントを使用します． See small.

@formatと@smallformat
====================

@formatコマンドは，印刷されたマニュアルで@formatが等幅フォントを選択せず，マージンを狭くしないこと以外は，@exampleに似ています．

     これは@formatコマンドと@end formatコマンドの間に書かれてい
     るテキストの例です．
     この例で分かるように，
     @formatコマンドは，テキストを補充しません．

Texinfoは@smallformatも供給し，それは，@formatに似ていますが，@smallbook書式でより小さいフォントを使用します． See small.

@exdent: 行の字下げのアンドゥ
===================

@exdentコマンドは行が持つ字下げを削除します．このコマンドは行の最初に書き，同じ行にあるコマンドに続くテキストのみに適用されます．テキストの周りにカッコを使用しないでください．印刷されたマニュアルでは， @exdent行のテキストはローマンフォントで印刷されます．

@exdentは通常例の内部で使用されます．こうして，以下のようになります．

     @example
     この行は，@@exampleコマンドに続いています．
     @exdent この行は伸ばされます．
     この行は伸ばされた行に続いています．
     @@end exampleは次の行にあります．
     @end group

以下を生成します．

     この行は，@exampleコマンドに続いています．
     この行は伸ばされます．
     この行は伸ばされた行に続いています．
     @end exampleは次の行にあります．

実際は，@exdentコマンドは滅多に使用されません．通常幅に変えるため，通常は例を終りにしたり，ページをかえたりして，テキストを字下げしないようにします．

@flushleftと@flushright
======================

@flushleftと@flushrightコマンドは，ページの左右のマージンで，行の終りを整えますが，テキストを補充しません．コマンドはカッコを使用せず，単独行に書かれます．@flushleftと@flushrightコマンドは，単独行の@end flushleftと@end flushrightコマンドで終りになります．

例えば，以下のようにします．

     @flushleft
     このテキストは
     左揃えで書かれています．
     @end flushleft

以下を生成します．

     このテキストは
     左揃えで書かれています．

@flushrightは，手紙の返信先住所でよく使用される字下げの形式を生成します．例えば，以下のようにします．

     @flushright
     これは，
     右揃えで書かれてたテキストの例です．@code{@flushright}コマンドは
     全ての行を右揃えにしますが，
     左端はバラバラのままです．
     @end flushright

以下を生成します．

これは，
右揃えで書かれてたテキストの例です．@flushrightコマンドは
全ての行を右揃えにしますが，
左端はバラバラのままです．

例の周りにCartouchを描く
================

印刷されたマニュアルで，@cartoucheコマンドは，その内容の周りに角丸の箱を描きます．例や引用をより強調するために使用することができます．例えば，例の1つの形式が強調のためcartoucheで囲まれているマニュアルを書くことができます．

@cartoucheは印刷されたマニュアルのみで効果があります．他の出力では効果がありません．

例えば，以下のようにします．

     @example
     @cartouche
     % pwd
     /usr/local/share/emacs
     @end cartouche
     @end example

2行の例は，印刷されたマニュアルで，角丸の箱で囲まれます．

リストと表
*****

Texinfoはリストと表を作成する方法がいくつかあります．リストは黒丸または番号が付きます．2行の表は，最初の行の項目が強調されます．複数行の表もサポートされています．

リストの導入
======

Texinfoは，リストや表のテキストの字下げと，列挙されたリストの番号付けを自動的に行います．この最後の特徴は，リストを編集する場合，番号を付けなおす必要が無いので便利です．

番号付のリストと表は，行の最初を適切な@-コマンドで開始し，単独行の対応する@endコマンドで終了します．表と項目に分けられたリストのコマンドも，開始の@-コマンドと同じ行に書式化情報を書くことを要求します．

例えば，@enumerateコマンドで列挙リストを開始し，@end enumerateコマンドでリストを終了してください．項目分けリストを @itemizeコマンドで開始し，@bulletのような書式化コマンドを同じ行に続け，@end itemizeコマンドでリストを終了してください．

リストのそれぞれの要素は，@itemや@itemxコマンドに優先します．

ここに，異なる種類の表とリストの項目分けされたリストがあります．

  * 黒点有りと無しの項目分けされたリスト．

  * 番号や文字を使用した列挙リスト．

  * 強調のある2行の表．

ここに，同じ項目で列挙されたリストがあります．

 1. 黒点有りと無しの項目分けされたリスト．

 2. 番号や文字を使用した列挙リスト．

 3. 強調のある2行の表．

そして，ここに，同じ項目と@-コマンドの2行の表があります．

@itemize
     黒点有りと無しの項目分けされたリスト．

@enumerate
     番号や文字を使用した列挙リスト．

@table
@ftable
@vtable
     強調のある2行の表．

@itemize: 項目分けされたリストの作成
=======================

@itemizeコマンドは，そのようなマークが要求されるそれぞれの段落の最初に左のマージンに黒丸や他の印を使用した，字下げされた段落の並びを生成します．

行の最初に@itemizeを書き，項目分けされたリストを開始します．コマンドに続く同じ行に，文字やマークを生成するTexinfoコマンドを続けてください．通常，@itemizeの後に@bulletを書きますが，@minusや結果としてInfoファイルで1文字を生成するあらゆるコマンドや文字を使用することができます．全くマークを付けたくない場合は@wを使用してください． (@itemizeコマンド後に@bulletのようなコマンドを書く場合， {}を省略できます．)マークコマンドを指定しない場合はデフォルトは @bulletです．

@itemizeの後に，@end itemizeの行まで．字下げされた段落自身のテキストを書いてください．

マージンに要求されるマークのため，それぞれの段落の前に@itemのみの行を書いてください．@itemにテキストを続けても構いません．

通常，@itemの前に空白行を置くべきです．これはInfoファイルで空白行を置きます．(TeXは，どちらの場合でも適切な空白を行間に挿入します．)

ここに@itemizeを使用に続きそれが生成する出力の例があります． @bulletはInfoでは*，TeXでは丸い点を生成します．

     @itemize @bullet
     @item
     fooに対するいくつかのテキスト．

     @item
     barに対する
     いくつかのテキスト．
     @end itemize

これは，以下を生成します．

       * fooに対するいくつかのテキスト．

       * barに対するいくつかのテキスト．

項目分けされたリストは他の項目分けされたリストを埋め込むことができます．ここに黒点で印を付けたリストの中にダッシュで印を付けたリストを埋め込んだものがあります．

     @itemize @bullet
     @item
     最初の項目．

     @itemize @minus
     @item
     内部の項目．

     @item
     2番目の項目．
     @end itemize

     @item
     2番目の外部項目．
     @end itemize

これは，以下を生成します．

       * 最初の項目．

            - 内部の項目．

            - 2番目の項目．

       * 2番目の外部項目．

@enumerate: 数字や文字が付いたリストの作成
===========================

@enumerateは，アイテムのラベルが黒丸の代わりに，連続した整数や文字となる以外，@itemizeに似ています(see @itemize)．

@enumerateコマンドを行の最初に書いてください．コマンドは引数を要求しませんが，オプションとして数字または文字を受け入れます．引数が無い場合， @enumerateは数字1でリストを開始します．3のような数字の引数で，コマンドはその番号からリストを開始します．aまたは Aのような場合，大文字または小文字で，コマンドはその文字でリストを開始します．

項目分けされたリストと同じ方法で，列挙されたリストのテキストを書いてください．列挙したいそれぞれの段落を始める前に，単独行に@itemを置いてください．@itemで始まる行に他のテキストは一切書かないでください．

リストの項目の間に空白行を置くべきです．一般にInfoファイルが読みやすくなります．

ここに引数の無い@enumerateの例があります．

     @enumerate
     @item
     根本的な原因．

     @item
     直接の原因．
     @end enumerate

これは以下を生成します．

 1. 根本的な原因．

 2. 直接の原因．

ここに，3を引数とした例があります．

     @enumerate 3
     @item
     元となる原因．

     @item
     逆の原因．

     @item
     永続する原因．
     @end enumerate

これは以下を生成します．

 3. 元となる原因．

 4. 逆の原因．

 5. 永続する原因．

ここに，選択肢の短い概要があります．概要は，aの引数で @enumerateを使用して組み立てられています．

 a. @enumerate

     引数が無い場合，番号付リストを生成し，それは数字1で始まります．

 b. @enumerate POSITIVE-INTEGER

     (正の)数字の引数の場合，その数字で番号付のリストを開始します．他の文章で中断されたリストを続けるために，これを使用することができます．

 c. @enumerate UPPER-CASE-LETTER

     引数を大文字とした場合，それぞれの項目がその大文字で始まる文字で，マークが付いたリストを開始します．

 d. @enumerate LOWER-CASE-LETTER

     引数を小文字とした場合，それぞれの項目がその小文字で始まる文字で，マークが付いたリストを開始します．

アウトラインのように，番号付のリストを入れ子にすることができます．

2行の表の作成
=======

@tableは，@itemize(see @itemize)に似ていますが．それぞれの項目に対し，名前や見出し行を指定できます． @tableコマンドは，2行の表を生成するために使用され，特に，用語集，説明的な表示や，コマンドラインオプションの概要に役に立ちます．

@tableコマンドの使用
-------------

2行の表を生成するために@tableコマンドを使用してください．

@tableコマンドを行の最初に書き，同じ行に@code， @samp，@varや，@kbd(see Indicating)のような Texinfoの``表示''コマンドを引数として続けてください．これらのコマンドは通常カッコで引数が続きますが，@itemは引数を供給するので，この場合は引数無しでコマンド名を使用します．このコマンドは，それぞれの項目の最初の引数に適合され，強調方法を定義します．例えば，@codeは最初の行のテキストを，@codeコマンドで強調します．(我々はコマンドラインオプションの@tableに対し@codeを勧めます．)

@tableの引数として，@asisコマンドの使用を選択することもできます．@asisは何もしないコマンドです．@tableの後でこのコマンドを使用した場合，TeXとInfoの書式化コマンドは，最初の行の項目を強調せず(``そのまま'')出力します．

(@tableコマンドは，ここでリストアップした以外の他のコマンドと働くこともできます．しかし，通常はカッコ内に引数をとるコマンドのみが使用可能です．)

それぞれの表の項目を，行の最初の@itemコマンドで開始してください．最初の行のテキストを@itemコマンドと同じ行に書いてください．2番目の行のテキストを@item行に続く行と，その次の行に書いてください．(2番目が空の項目の場合，何も入力する必要はありません．)サポートテキストは好きな行数書くことができ，複数の段落にすることもできます．しかし， @itemと同じ行のテキストのみ，脚注も含めて，最初のコラムに置かれます．

通常，@item行の前に空白行を置くべきです．これはInfoファイルで空白を置きます．項目が非常に短いとき以外は，空白行は良く見えます．

例えば，以下の表は最初の行を@sampで強調しています．

     @table @samp
     @item foo
     これは@samp{foo}に対する
     テキストです．

     @item bar
     @samp{bar}に対するテキストです．
     @end table

これは，以下を生成します．

foo
     これはfooに対するテキストです．

bar
     @samp{bar}に対するテキストです．

2行以上の名前の項目を1塊のテキストでリストアップしたい場合， @itemxコマンドを使用してください．(see @itemx.)

@ftableと@vtable
---------------

@ftableと@vtableコマンドは，@ftableが自動的に表の最初の行のそれぞれの項目行を関数の索引に入れ，@vtableが自動的に表の最初の行のそれぞれの項目行を変数の索引に入れる以外，@tableコマンドと同じです．これは，索引作成の仕事を単純にします．@itemコマンドと同じ行の項目のみ索引になり，それらはその行が現れる正確な形式で索引になります．索引の詳細は，see Indices.

2行の表を@ftableや@vtableを使用し，行の最初に@-コマンドを書くことで開始し，同じ行に引数として，@tableのためのもののように正確に，@codeコマンドのようなTexinfoコマンドを続けます．そして，単独行で@end ftableや@end vtableコマンドを使用し終りにしてください．

前のセクションの@tableの例を参照してください．

@itemx
------

同じ項目で，最初の行の項目が2つ以上あり，それぞれを単独行に現したい場合， @itemxコマンドを表の中で使用してください．@itemxを全ての最初の項目に使用してください．@itemxは常に@itemコマンドに続けるべきです．@itemxコマンドは，最初の行のテキストの上に余分な空白を生成しない以外は，正確に@itemのように働きます．

例えば，以下のようにします．

     @table @code
     @item upcase
     @itemx downcase
     この2つの関数は，引数として文字や文字列を受け入れ，対応した大文字(小文字
     )の文字や文字列を返します．
     @end table

これは以下を生成します．

upcase
downcase
     この2つの関数は，引数として文字や文字列を受け入れ，対応した大文字(小文字 )の文字や文字列を返します．

(この例は，2行の表に複数行をサポートしているテキストを表現していることに注意してください．)

複数行の表
=====

@multitableで，それぞれの行が希望の幅を持つ，あらゆる数の表を構築することが可能となります．

単独の@multitable行で行の幅を定義し，@tabコマンドで分けられた行で，@itemコマンドに続けて，実際の表のそれぞれの列を書きます．最終的に，@end multitableで表を終了します．詳細は以下のセクションにあります．

複数行の表の幅
-------

複数行の表の行の幅を2つの方法で定義できます．それは，行の長さを分数とする．または列のプロトタイプを使用するです．2つの方法を混ぜたものはサポートしていません．どちらの場合でも，@multitableコマンドと同じ行で幅は完全に定義されます．

 1. 行の長さの分数で行の幅を指定するため，@columnfractionsと(1より小さい)10進数を@multitableコマンドの後に以下のように書いてください．

          @multitable @columnfractions .33 .33 .33

     分数は上記がそうでないように，和が正確に1．0になる必要はありません．これで，行全体を満たす必要の無い表を生成することができます．好みで0を前に置くことができます．

 2. 列のプロトタイプを指定するため，それぞれの行で最も長い項目を， @multitableコマンドの後にカッコで囲んで書いてください．例えば，以下のようにします．

          @multitable {行1のためのいくつかのテキスト} {行2のため}

     最初の行は，`行1のためのいくつかのテキスト'で植字される幅を持ち，2行目は `行2のため'の幅を持ちます．

     プロトタイプ項目は，表自身に現す必要はありません．

     この例で単純なテキストを使用しましたが，プロトタイプ項目は，Texinfoコマンドを含めることができます．@codeのようなマークアップコマンドは，特に役に立つ可能性が高いです．

複数行の表の列
-------

行の幅を定義する@multitable(前のセクション参照)の後で， @itemで複数行の表の本体にそれぞれの列を開始し，行項目を @tabで分けます．改行は表の本体で特別ではなく，必要な場合ソースファイルに入力行を切ることができます．

ここに，複数行の表の完全な例があります(The GNU Emacs Manualからのテキストで，see Splitting Windows (The GNU Emacs Manual))．

     @multitable @columnfractions .15 .45 .4
     @item Key @tab Command @tab Description
     @item C-x 2
     @tab @code{split-window-vertically}
     @tab Split the selected window into two windows,
     with one above the other.
     @item C-x 3
     @tab @code{split-window-horizontally}
     @tab Split the selected window into two windows
     positioned side by side.
     @item C-Mouse-2
     @tab
     @tab In the mode line or scroll bar of a window,
     split that window.
     @end multitable

以下を生成します．

Key   Command   Description
C-x 2
split-window-vertically
Split the selected window into two windows,
with one above the other.
C-x 3
split-window-horizontally
Split the selected window into two windows
positioned side by side.
C-Mouse-2

In the mode line or scroll bar of a window,
split that window.

索引
**

Texinfoを使用すると，項目を手動でソートしたりページ順に揃える必要無く，索引を生成できます．索引では，項目はアルファベット順 (訳注:あいうえお順には，現在対応していません．)に，それぞれの項目の記述を見つける方法の情報と共にリストアップされます．印刷されたマニュアルでは，この情報はページ番号を含みます．Infoファイルでは，この情報は参照された最初のノードへ導くメニュー項目となります．

Texinfoは，前もって定義された索引の種類も供給します．関数の索引，変数の索引，概念による索引などです．索引を統合したり，典型的な目的以外のために使用することができます．好みで，独自の索引を定義できます．

索引項目の作成
=======

索引項目を作成するとき，人々が何かを探す際，異なる方法でできるように考えることは良いことです．何かを探すとき，異なる人々は，同じ単語を考えません．役に立つ索引は，人々が使用する可能性のある，全ての異なる単語で索引にされた項目を持ちます．例えば，ある読者は単語``Index''は一般的な概念なので，索引の2文字の名前は``Indices, two-letter names''にあって当然だと考えるかも知れません．しかし，もう一人の読者は，2文字の名前の特定の概念を覚えていて， ``Two letter names for indices''としてリストアップされている項目を探すかもしれません．良い索引は，両方の項目を持ち，それは両方の読者を助けるでしょう．

植字のように，索引の構築は高度に熟練した専門的な芸術品で，自分で作る必要が無ければ正当に評価できない繊細なものです．

本の終りに索引を印刷する，またはInfoファイルで索引メニューを作成する方法の情報は，see Printing Indices & Menus.

前もって定義されている索引
=============

Texinfoは6つの前もって定義されている索引を供給します．

  * 概念索引は記述してある概念をリストアップします．

  * 関数索引は(ライブラリのエントリポイントのような)関数をリストアップします．

  * 変数索引は(ライブラリのグローバル変数のような)変数をリストアップします．

  * キーストローク索引はキーボードコマンドをリストアップします．

  * プログラム索引はプログラム名をリストアップします．

  * データ型索引は(ヘッダファイルの構造体の定義のような)データ型をリストアップします．

全てのマニュアルが，これらの全てを必要とするわけではなく，ほとんどのマニュアルは，その2，3を使用します．このマニュアルは2つの索引があります．概念索引と，@-コマンド索引(実際には関数索引ですが，章見出しでコマンド索引と呼ばれています)です．2つ以上の索引を，@synindexや @syncodeindexコマンドを使用して，1つに統合することができます． See Combining Indices.

索引の項目の定義
========

索引を作成するデータは，Texinfoソースファイル中に散らばってる，多くの個別の索引コマンドからきます．それぞれのコマンドは，1つの項目を特定の索引に加わるよう伝えます．書式化後，索引は現在のページ番号や参照するノード名を与えます．

索引項目は，行の最初に索引コマンドを書き，残りの行に項目と続けることから成り立ちます．

例えば，このセクションは，概念索引のため5つの項目が続きます．

     @cindex Defining indexing entries
     @cindex Index entries
     @cindex Entries for an index
     @cindex Specifying index entries
     @cindex Creating index entries

それぞれの前もって定義された索引は，それ自身索引コマンドで，概念索引に対する@cindex，関数索引に対する@findexなどです．

概念索引項目は，テキストから成り立ちます．索引を書く最も良い方法は，簡潔且つ明確な項目を選択することです．こうすることが可能な場合，項目が大文字化されていないが文の内部に現れるものを書く方が，索引は見栄えが良くなります． (常に大文字で書かれる固有名前や頭字語を大文字化してください．)これは，我々がほとんどのGNUマニュアルの索引で使用する慣習となる場合です．

簡潔且つ明確な項目を作成する方法を知らない場合，より長い明確なものを作成し，簡潔で紛らわしいものを作成しないでください．項目の多くが数単語の場合，異なる慣習(それぞれの項目の最初の単語を大文字にする)を使用した方が索引は良く見えます．しかし，CやLispの関数名やシェルコマンドのような大文字小文字を識別する名前を大文字化してはいけません．それはスペルエラーとなります．

どちらを慣習として使用した場合でも，それを慣習として使用してください!

概念索引以外の索引の項目は，プログラム言語やプログラム名のシンボル名です．これらの名前は通常大文字小文字を識別するので，それらが要求する大文字または小文字を使用してください．

デフォルトで，概念索引の項目は小さなローマンフォントで印刷され，他の索引の項目は@codeフォントで印刷されます．項目の一部の印刷方法を，ファイル名に対する@fileや，強調に対する@emphのような (see Marking Text)，通常のTexinfoコマンドで変更することができます．

前もって定義されている6つの索引コマンドは，以下のものです．

@cindex CONCEPT
     CONCEPTに対する概念索引の項目を作成します．

@findex FUNCTION
     FUNCTIONに対する関数索引の項目を作成します．

@vindex VARIABLE
     VARIABLEに対する変数索引の項目を作成します．

@kindex KEYSTROKE
     KEYSTROKEに対するキー索引の項目を作成します．

@pindex PROGRAM
     PROGRAMに対するプログラム索引の項目を作成します．

@tindex DATA TYPE
     DATA TYPEに対するデータ型索引の項目を作成します．

     注意:索引項目にコロンを使用してはいけません．Infoでは，コロンはノード名と項目名を分けるので，項目自身のコロンはInfoを混乱させます．メニュー項目の構造の詳細は，see The Parts of a Menu.

それらの標準目的のために，前もって定義されている索引を実際に使用することを要求されているわけではありません．例えば，Cプリプロセッサマクロの索引を望む場合を考えます．それらに対し@findexコマンドを書くことで，それらを実際の関数に属する関数索引に置くことができます．そして，番号付けされていない章として``関数索引''を印刷するとき，タイトルに`関数とマクロの索引'を与え，読者に対し全てが矛盾しません．または，マクロを@tindexコマンドでデータタイプに置き，それに適した索引タイトルを与えると読者は理解します． (see Printing Indices & Menus.)

索引の統合
=====

分かれた索引がばかげて見える程，その1つが小さいなどの理由で，関数と概念のように2つに分かれている索引を統合したいこともあります．

@cindexコマンドを@findexコマンドの代わりに書くことで関数を概念索引に置き，`関数の索引'と印刷するのではなく，`関数と概念の索引'というタイトルで概念索引を印刷することで，一貫したマニュアルを生成することができます．しかし，これは強力な手続きではありません．ドキュメントが分かれた関数索引を持つように設計されている他のドキュメントに挿入されない場合のみ働きます．そのようなドキュメントに，ドキュメントを挿入した場合，ドキュメントの関数と他から持って来たものは一緒になりません．同様に，関数名は概念索引の右側に現すため，@codeのカッコの間にそれらの1つを個別に囲む必要があります．

@syncodeindex
-------------

関数と概念を1つの索引に統合したいとき，関数を@findexで索引にし，概念を@cindexで索引にし，関数の索引の項目を概念索引にリダイレクトするため@syncodeindexコマンドを使用するべきです．

@syncodeindexコマンドは2つの引数をとります．それらはリダイレクトする索引名と，それをリダイレクトする索引名です．テンプレートは以下のようになります．

     @syncodeindex FROM TO

この目的のため，索引は2文字の名前が与えられています．

cp
     概念索引

fn
     関数の索引

vr
     変数の索引

ky
     キーの索引

pg
     プログラムの索引

tp
     データ型の索引

@syncodeindexコマンドを，Texinfoファイルの最初にend-of-header行の前またはすぐ後に書いてください．例えば，関数の索引を概念の索引に統合するため以下のように書きます．

     @syncodeindex fn cp

これで，関数の索引に対し設計された全ての項目は，代わりに概念索引に統合されます．

変数の索引と関数の索引の両方を概念の索引に統合するため以下のように書きます．

     @syncodeindex vr cp
     @syncodeindex fn cp

@syncodeindexコマンドは`from'索引(リダイレクトされる索引)からの全ての項目を@codeフォントにし，項目が今リダイレクトされている索引で使用されているデフォルトフォントが何であろうと優先します．このように，関数名を関数索引から概念索引にリダイレクトする場合，全ての関数名は期待したように@codeフォントで印刷されます．

@synindex
---------

`from'索引項目を@codeフォントに置き換えない以外， @synindexコマンドは@syncodeindexコマンドとほとんど同じです．その代わりにローマンフォントに置き換えます．このため，概念索引を関数索引に統合するとき@synindexを使用します．

本の終りに索引を印刷したり，Infoファイルに索引メニューを作成する詳細は， see Printing Indices & Menus.

新しい索引の定義
========

前もって定義されている索引に加えて，@defindexと @defcodeindexコマンドを新しい索引を定義するため使用することができます．これらのコマンドは，索引項目のマークに使用する，新しい索引を作成する @-コマンドを作成します．@defindexコマンドは以下のように使用します．

     @defindex NAME

索引の名前はauのような2文字の単語にするべきです．例えば，以下のようにします．

     @defindex au

これはau索引と呼ばれる新しい索引を定義します．同時に，新しい索引作成コマンド@auindexを作成し，索引項目のマークに使用できます．新しい索引コマンドを，前もって定義されている索引コマンドの使用と全く同じように使用してください．

例えば，ここにセクション見出しに概念索引項目と2つのau索引項目が続いた例があります．

     @section Cognitive Semantics
     @cindex kinesthetic image schemas
     @auindex Johnson, Mark
     @auindex Lakoff, George

(明らかに，auはここで``著者''の省略として提供されています． )Texinfoはindexを使用した索引の名前を連結して新しい索引コマンドを構成します．このように，au索引の定義は自動的に@auindexコマンドの作成を行います．

前もって定義されている索引で使用したように，@printindexコマンドを索引を印刷するために使用してください．例えば以下のようにします．

     @node Author Index, Subject Index, , Top
     @unnumbered Author Index

     @printindex au

印刷された出力でローマンフォントの代わりに@codeフォントで項目を印刷する以外，@defcodeindexは@defindexコマンドに似ています．このように，それは@cindexコマンドより@findexコマンドに似ています．

新しい索引をTexinfoファイルのend-of-headerの内部か直後に，あらゆる @synindexや@syncodeindexコマンド(see Header)の前で使用すべきです．

特別の挿入
*****

Texinfoは，カッコのようなTexinfoで特別な意味を持つ文字を挿入するためと，入力可能な単純な文字に対応しない他の画像要素のためのコマンドもいくつかあります．

@とカッコの挿入
========

@と弓カッコはTexinfoで特別な文字です．これらの文字をテキストに現れるように挿入するため，Texinfoが誤解することを避けるため，@をこれらの文字の前に置く必要があります．

これらのコマンドの後にカッコを置いてはいけません．それらは不要です．

@を@@で挿入する
---------

@@は，印刷されたまたはInfoで単一の@を意味します．

@@コマンドの後にカッコを置かないでください．

{と}を@{と@}で挿入する
--------------

@{は印刷されたまたはInfoで単一の{を意味します．

@}は印刷されたまたはInfoで単一の}を意味します．

@{や@}コマンドの後にカッコを置かないでください．

空白の挿入
=====

以下のセクションは，文の中や後の様々な種類の空白を制御するコマンドを記述します．

文を終了しない
-------

ピリオドや，感嘆符や疑問符が文の中か終りにあるかに依存して，少しまたは多くの空白が植字されたピリオドの後に挿入されます．ピリオドが文を終るときと省略で使用されるときとを，常に決定できるわけではないので，特別なコマンドが必要な状況もあります．通常Texinfoはピリオドの扱い方を推測できるので，特別なコマンドは必要ありません．タイプライターを使用するときのようにピリオドを入力し，それは2つの空白をピリオド，疑問符や，感嘆符の後に文の終りとして置くことを意味します．

余分な空白を続けるべきではない，ピリオド，疑問符，感嘆符や，コロンの後に @:コマンドを使用してください．例えば，文の終りではない省略の終りのピリオドの後に@:を使用してください．

例えば，以下のようにします．

     The s.o.p.@: has three parts ...
     The s.o.p. has three parts ...

以下を生成します．

     The s.o.p. has three parts ...

     The s.o.p. has three parts ...

(ついでながら，s.o.p.は``Standard Operating Procedure''の省略をを意味します．)

@:はInfo出力で効果はありません．@:の後にカッコを置かないでください．

文を終える
-----

単一の大文字で終る文の終りのピリオドの代わりに@.，感嘆符の代わりに@!，そして疑問符の代わりに@?を使用してください．そうしない場合，TeXは文字を省略だと考え，正しい文の終りの空白を挿入しません．ここに例があります．

     Give it to M.I.B. and to M.E.W@.  Also, give it to R.J.C@.
     Give it to M.I.B. and to M.E.W.  Also, give it to R.J.C.

以下を生成します．

     Give it to M.I.B. and to M.E.W.  Also, give it to R.J.C.

     Give it to M.I.B. and to M.E.W.  Also, give it to R.J.C.

Infoファイル出力では，@.は単なる.と同じです． @!と@?も同様です．

Texinfoの@:と@.のマージンは，Emacsの文の移動コマンド (see Sentences (The GNU Emacs Manual))でうまく働きます．

これらのコマンドの後にカッコを置かないでください．

複数のスペース
-------

通常，TeXは複数の空白文字(スペース，タブと，改行)を単一のスペースに収めます．一方，Info出力では，改行をスペースにする以外，入力した通りの空白を維持します．これは，Texinfoドキュメントの文の終りの2つのスペースを置くことが重要だからです．

例の目的(プログラムが入力として複数の空白を扱うこと)や，見出しやリストの見栄えのため，複数の連続した空白を実際に挿入したいこともあります．Texinfoは 3つのコマンドをサポートします．@SPACE，@TABと， @NLで，それらは全て，出力に単一のスペースを挿入します．(ここで，@SPACEは空白に続く@文字，すなわち@ を現し，TABとNLはタブ文字と文の終り，すなわち，@が行の最後の文字のときを現します．)

例えば，以下のようにします．

     Spacey@ @ @ @
     example.

以下を生成します．

     Spacey
     example.

@SPACEの他の可能な利用法は， @multitable(see Multi-column Tables)に包括されました．

これらのコマンドにカッコを続けないでください．

@dmn{DIMENSION}: 寸法単位の書式化
-------------------------

寸法単位のため，数字と省略の間に小さな空白または空白を全く置かないで， 12ptや8.5inを書きたいときもあります．こうするため，@dmnコマンドを使用することができます．このコマンドを見ると， TeXは適切な植字のためちょうどぴったりの空白を挿入します．Infoファイルは空白を要求しないので，Info書式化コマンドでは空白を全く挿入しません．

@dmnコマンドを使用するため，数字を書き，間に空白を置かず，それに @dmn続けて，そしてカッコ内に寸法単位を続けてください．例えば以下のようにします．

     A4 paper is 8.27@dmn{in} wide.

以下を生成します．

     A4 paper is 8.27in wide.

全ての人がこの形式を使用するわけではありません．Texinfoファイルでは 8.27@dmn{in}より8.27 in.@:や8.27 inchesを好む人もいます．しかしこれらの場合，フォーマッタは数字と寸法単位の間に改行を挿入するかも知れないので，@w(see w)を使用してください．また，文中の省略の後にピリオドを書く場合，TeXが余分の空白を挿入するのを避けるため，ここで見たように，ピリオドの後に@:を書いてください． See Not Ending a Sentence.

アクセントの挿入
========

ここに，フローティングアクセントを挿入するためにTexinfoが挿入するコマンドの表があります．アルファベットでない名前のコマンドは引数の周りにカッコをとりません(それは次の文字をとります)．(例外:@,は引数の周りにカッコをとります．)これは，アクセントを置かれた文字が言語では普通であるものもあるので，ソースを可能な限り入力に便利で読み易くするためです．

コマンド                  出力              意味するもの
@"o"                ö"              ウムラートアクセント
@'o                ó              アキュートアクセント
@,{c}            ç            セディラアクセント
@=o                ō              マクロン/オーバーバーアクセント
@^o                ô              サーカムフレックスアクセント
@`o                ò              グレーブアクセント
@~o                õ              チルダアクセント
@dotaccent{o}    ȯ    オーバードットアクセント
@H{o}            ő            ロングハンガリアンアクセント
@ringaccent{o}   o̊   リングアクセント
@tieaccent{oo}   o͡o   ティーアフターアクセント
@u{o}            ŏ            ブレーブアクセント
@ubaraccent{o}   o̱   アンダーバーアクセント
@udotaccent{o}   ọ   アンダードットアクセント
@v{o}            ǒ            ハケックやチェックアクセント

この表は英語以外の言語で共通に使用される他の文字を挿入するTexinfoコマンドをリストアップします．

@exclamdown{}     ¡     さかさまの !
@questiondown{}   ¿   さかさまの ?
@aa{},@AA{}    å,Å       円を持つ a，A
@ae{},@AE{}    æ,Æ       くっついた ae，AE
@dotless{i}       ı       ドットの無い i
@dotless{j}       ȷ       ドットの無い j
@l{},@L{}      ł,Ł         押え付けられた L，l
@o{},@O{}      ø,Ø         スラッシュ付の O，o
@oe{},@OE{}    œ,Œ       くっついた oe，OE
@ss{}             ß             エスツェットや尖った S

省略と黒点の挿入
========

省略(ドットの行)は，ピリオドの列として植字されないので，特別なコマンドがTexinfoの省略で使用されます．@bulletコマンドも特別です．それぞれのコマンドは，カッコの組{}が続き，コマンド名とカッコの間には空白を置きません．(続けて他のテキストを使用できるので，これらのコマンドにカッコの使用が必要です．カッコが無い場合，フォーマッタは混乱するでしょう．詳細は，see @-Command Syntax.)

@dots{} (...)と@enddots{} (...)
------------------------------

続けて3つの点となり適切な空白がある`...'のような省略を生成するため， @dots{}コマンドを使用してください．入力ファイルに単純に3つのピリオドを書かないでください．それはInfo出力では働きますが，印刷されたマニュアルではピリオドの間に間違った量の空白を生成します．

同様に，@enddots{}コマンドは文の終りの省略(4つの点)を生成します ...

@bullet{} (*)
-------------

大きな黒点やそれに近いものを生成するために@bullet{}を使用してください．Infoではアスタリスクが使用されます．

これは黒点です:*

@itemizeで@bulletを使用するとき，@itemizeが供給するので，カッコを入力する必要はありません．(see @itemize.)

TeXと著作権シンボルの挿入
==============

ロゴ`TeX'は特別な形での植字で，@-コマンドが必要です．著作権シンボル `©'も特別です．それぞれのコマンドはカッコの組{}が続き，コマンド名とカッコの間に空白は使用しません．

@TeX{} (TeX)
------------

`TeX'を生成するため@TeX{}コマンドを使用してください．印刷されたマニュアルでは，これは3つの通常の文字と異なる特別なロゴとなります． InfoではそれはTeXのように見えます．@TeX{}コマンドは TとXが大文字の，Texinfoコマンドの中ではユニークなものです．

@copyright{} (©)
----------------

`©'を生成するために@copyright{}コマンドを使用してください．印刷されたマニュアルでは，これは円の中のcになり，Infoではこれは(C)になります．

@pounds{} (£): ポンド英貨
====================

`£'を生成するために@pounds{}コマンドを使用してください．印刷されたマニュアルでは，これは通貨ポンド銀貨のシンボルとなります．Infoでは#になります．他の通貨シンボルは残念ながら利用不可能です．

@minus{} (-): 負記号の挿入
====================

負記号を生成するために@minus{}コマンドを使用してください．等幅フォントで，これは単一のハイフンですが，プロポーショナルフォントではシンボルは負記号の慣習的な長さで，---ハイフンより少し長く，em-dashより短くなります．

     -は@minus{}で生成された負記号で，

     `-'は文字-で生成したハイフンで，

     `---'はテキストのem-dashです．

Infoで使用される等幅フォントで@minus{}はハイフンと同じです．

幅の違いは，使用する等幅フォントで作成されないので，@codeや @exampleで@minus{}を使用すべきではありません．

項目分けされたリストのそれぞれの項目をはじめるマークを指定するため @minusを使用するとき，カッコを入力する必要はありません (see @itemize)．

@math: 数学表現の挿入
==============

短い数学的表現を@mathコマンドで書くことができます．カッコの間に以下のように数学的表現を書いてください．

     @math{(a + b)(a + b) = a^2 + 2ab + b^2}

これはInfoでは以下を生成します．

     (a + b)(a + b) = a^2 + 2ab + b^2

このように@mathコマンドはInfo出力で効果がありません．

複雑な数学的表現のため，TeXを直接使用することもできます(see Raw Formatter Commands)．TeXを直接使用するとき，1つまたは2つの$(ドル記号)の間に適切に数学的表現を書くことを覚えておいてください．

例のためのglyph
==========

Texinfoでは，コードは@exampleと@end exampleや @lispと@end lispで区切られた例として表示されることが多いです．そのような例では，=>や==>を使用して，評価の結果や拡張を示すことができます．同様に，印刷された出力，エラーメッセージ，等式表現と，ポイントの位置を示すglyphを挿入するコマンドがあります．

glyph挿入コマンドは，例の内部で使用する必要はありませんが，ほとんどそうなります．全てのglyph挿入コマンドは左右のカッコの組が続きます．

glyphの概要
--------

ここに個別のglyphコマンドがあります．

=>
     @result{}は，表現の結果を示します．

==>
     @expansion{}はマクロ拡張の結果を表示します．

-|
     @print{}は印刷された出力を示します．

error-->
     @error{}は次のテキストがエラーメッセージだということを示します．

==
     @equiv{}は，2つの形式が正確に等しいことを示します．

-!-
     @point{}はポイントの場所を表示します．

@result{} (=>): 評価結果を示す
-----------------------

表現の評価の結果を示すため@result{}を使用してください．

@result{}コマンドはInfoでは=>として，印刷された出力では2重の茎の矢印として表示されます．

こうして，以下のようにします．

     (cdr '(1 2 3))
          => (2 3)

``(cdr '(1 2 3))を評価すると(2 3)になる''と読めるでしょう．

@expansion{} (==>): 拡張を示す
-------------------------

表現がマクロ呼び出しのとき，新しい表現に拡張します． @expansion{}コマンドで拡張の結果を示すことができます．

@expansion{}コマンドはInfoでは==>として，印刷されたマニュアルでは平らな長い矢印として表示されます．

例えば，以下のようにします．

     @lisp
     (third '(a b c))
          @expansion{} (car (cdr (cdr '(a b c))))
          @result{} c
     @end lisp

以下を生成します．

     (third '(a b c))
          ==> (car (cdr (cdr '(a b c))))
          => c

このように読めるでしょう．

     (third '(a b c))は(car (cdr (cdr '(a b c))))の拡張で，表現の評価結果はcです．

この場合，@expansion{}と@result{}が5個の空白で字下げすると，例が良く見えることが多いです．

@print{} (-|): 印刷された出力を示す
-------------------------

表現が実行中の印刷出力のときもあります．@print{}コマンドで印刷された出力を示すことができます．

@print{}コマンドはInfoでは-|とそれに似たものとして，印刷された出力では，水平のダッシュが垂直のバーにぶつかったものとして表示されます．

以下の例では，印刷されたテキストは-|で示され，表現の値は最後の行に続きます．

     (progn (print 'foo) (print 'bar))
          -| foo
          -| bar
          => bar

Texinfoソースファイルで，この例は以下のように書きます．

     @lisp
     (progn (print 'foo) (print 'bar))
          @print{} foo
          @print{} bar
          @result{} bar
     @end lisp

@error{} (error-->): エラーメッセージを示す
--------------------------------

コードの一部は，評価したときエラーとなる可能性があります． @error{}コマンドでエラーメッセージを示すことができます．

@error{}コマンドはInfoではerror-->として，印刷されたマニュアルでは四角の中の`error'という単語として表示されます．

このようにします．

     @lisp
     (+ 23 'x)
     @error{} Wrong type argument: integer-or-marker-p, x
     @end lisp

以下を生成します．

     (+ 23 'x)
     error--> Wrong type argument: integer-or-marker-p, x

これは，表現を評価したとき，以下のエラーメッセージが出力されることを示します．

     Wrong type argument: integer-or-marker-p, x

error-->自身はエラーメッセージの一部ではありません．

@equiv{} (==): 等価を示す
--------------------

2つの表現が同一の結果を生成することもあります．@equiv{}コマンドで，2つの形式が正確に同一だということを示すことができます．

@equiv{}コマンドはInfoでは==として，印刷された出力では3つの平行な水平な線として表示されます．

このようにします．

     @lisp
     (make-sparse-keymap) @equiv{} (list 'keymap)
     @end lisp

以下を生成します．

     (make-sparse-keymap) == (list 'keymap)

これは，(make-sparse-keymap)の評価が(list 'keymap)の評価結果と同一なものを生成することを示します．

@point{} (-!-): バッファのポイントを示す
----------------------------

Emacsバッファのテキストの例を見せる必要があることもあります．そのような例では，バッファ名を含む2行のダッシュの間に問題のバッファ全体の内容を含むことが慣習です．

バッファのテキストでポイントの場所を表示するため，@point{}コマンドを使用することができます．(ポイントのシンボルは，もちろんバッファのテキストの一部ではありません．それは，ポイントがある2文字の間の場所を示します．)

@point{}コマンドは，Infoでは-!-として，印刷された出力では小さな5つの先端がある星として表示されます．

以下の例は，単語changedを挿入するためのLispコマンドを評価した，前後のfooバッファの内容を表示しています．

     ---------- Buffer: foo ----------
     This is the -!-contents of foo.
     ---------- Buffer: foo ----------

     (insert "changed ")
          => nil
     ---------- Buffer: foo ----------
     This is the changed -!-contents of foo.
     ---------- Buffer: foo ----------

Texinfoソースファイルでは，例は以下のように書かれています．

     @example
     ---------- Buffer: foo ----------
     This is the @point{}contents of foo.
     ---------- Buffer: foo ----------

     (insert "changed ")
          @result{} nil
     ---------- Buffer: foo ----------
     This is the changed @point{}contents of foo.
     ---------- Buffer: foo ----------
     @end example

脚注
==

footnoteは，ドキュメントや主要なテキストを説明する参照のためです． (脚注は主要なテキストを補完する，または詳細に述べるべきですが，読者が主要なテキストを理解するために脚注を読む必要があるべきではありません．脚注の徹底的な論議のため，シカゴ大学出版によって出版されたThe Chicago Manual of Styleを参照してください．)

脚注コマンド
------

Texinfoでは脚注は@footnoteで作成されます．このコマンドは直後に左カッコが続き，その後に脚注のテキストが続き，そして終端の右カッコが続きます．脚注はどのような長さでも可能ですが(必要ならページに跨ります)，通常は短いです．以下はテンプレートです．

     通常のテキスト@footnote{脚注のテキスト}

ここで見るように，@footnoteは脚注が付くテキストの直後に，余分な空白無しにすべきです．そうしない場合，脚注の印は行を開始するでしょう．

例えば，この節は見本の脚注 (これは見本の脚注です．)が続きます． Texinfoソースファイルでは，以下のようになります．

     ...見本の脚注@footnote{これは見本の脚注です．}が続きます．Texinfoソー
     ス...

印刷されたマニュアルや本では，脚注の参照マークは小さい，上付き数字です．脚注のテキストは，ページの底に，水平方向の線の下に現れます．

Infoでは，脚注の参照マークは脚注番号が間にある1組のカッコで，(1)のようになります．参照マークは，脚注のテキストへの相互参照のリンクが続きます．

HTML出力では，脚注参照は小さな上付き数字で，脚注テキストへのハイパーテキストリンクとなります．

ところで，@tableに対する@itemコマンドの引数の脚注は，(通常 )@itemコマンドと同じ行にする必要があります．See Two-column Tables.

脚注スタイル
------

Infoは2つの脚注スタイルがあり，脚注のテキストがある場所を決定します．

  * `End'ノードスタイルでは，1つのノードに対する全ての脚注は，そのノードの最後に置かれます．脚注は，ノードの残りと，その中で単語Footnotesが付いたダッシュの行で分けられます．それぞれの脚注は(N)の参照マークで開始します．

     ここに，ノードの終りのスタイルの，1つの脚注の例があります．

           --------- Footnotes ---------

          (1)  これは見本の脚注です．

  * `Separate'ノードスタイルでは，1つのノードに対する全ての脚注は，自動的に構築された単独のノードに置かれます．この形式では``footnote reference''は，ノード本体にそれそれの(N)参照マークが続きます．脚注参照は，実際には脚注ノードに到達する相互参照です．

     脚注のノード名は，脚注が含むノード名に-Footnotesを付けて構築されます．(従って，Footnotesに対する脚注のノードは Footnotes-Footnotesです!)脚注ノードは，その親ノードに戻るための， `Up'ノードポインタがあります．

     これは，このマニュアルの最初の脚注が，分かれたノードスタイルで，Infoの書式化後どのように見えるかを示します．

          File: texinfo.info  Node: Overview-Footnotes, Up: Overview

          (1) "Texinfo"の最初の音節は，"hex"ではなく，``speck''のように発音されます．
          ...

Texinfoファイルは，どちらかの脚注スタイルでInfoファイルに書式化されます．

@footnotestyleコマンドを，Infoファイルの脚注スタイルを指定するために使用してください．このコマンドは行の最初に書き，終りのノードスタイルに対するend，または，分割ノードスタイルに対するseparateを，引数として続けてください．

例えば，以下のようにします．

     @footnotestyle end

または，以下のようにします．

     @footnotestyle separate

@footnotestyleコマンドは，Texinfoファイルの最初に，end-of-header行の前か直後に書いてください．(@footnotestyleコマンドが start-of-headerとend-of-header行の間に含まれる場合，領域の書式化コマンドは脚注を指定したように書式化します．)

脚注スタイルを指定しない場合，書式化コマンドはデフォルトスタイルを使用します．現在texinfo-format-bufferとtexinfo-format-regionは `separate'スタイルを使用し，makeinfoは`end'スタイルを使用します．

この章は2つの脚注を含みます．

画像の挿入
=====

@imageコマンドで，外部ファイルで与えられた画像を挿入できます．

     @image{FILENAME, [WIDTH], [HEIGHT]}

FILENAME引数は必須で，異なるプロセッサは異なる書式をサポートするので，拡張子付けてはいけません．

  * TeXはFILENAME.epsファイル(Encapsulated PostScript format)を読みます．

  * PDFTeXはFILENAME.pdfファイル(アドビのPortable Document Format)を読みます．

  * makeinfoはInfo出力に対しFILENAME.txtを (@exampleのように)そのまま使用します．

  * HTML出力を生成するmakeinfoはFILENAME.pngを試みます．存在する場合は，FILENAME.jpgを試みます．どちらも存在しない場合，警告を出します．(特許のためGIFフォーマットはサポートできません．)

追加のWIDTHとHEIGHT引数は，画像のサイズを指定します(Info出力では無視されます)．どちらも指定されない場合，画像はそのままの大きさで提供されます(ファイルで与えられたもの)．一方のみが指定された場合，もう一方は比例して大きさを調整します．両方指定された場合，両方が重視され，このため，縦横比を変更され元画像が歪む可能性があります．

WIDTHはHEIGHTは有効なTeXの寸法単位を使用して指定できます．すなわち以下を使用します．

pt
     ポイント(72.27pt = 1in)

pc
     パイカ(1pc = 12pt)

bp
     ビッグポイント(72bp = 1in)

in
     インチ

cm
     センチメートル(2.54cm = 1in)

mm
     ミリメートル(10mm = 1cm)

dd
     didôtポイント(1157dd = 1238pt)

cc
     cicero (1cc = 12dd)

sp
     scaledポイント(65536sp = 1pt)

例えば，以下はridt.epsファイルを高さ1インチで幅をそれに比例して大きさを変更します．

     @image{ridt,,1in}

@imageがTeXで働くよう，ファイルepsf.texはTeXが見つけられるところに配置する必要があります．(標準の場所は TEXMF/tex/generic/dvips/epsf.texで，そこでTEXMFが TeXのディレクトリツリーのルートになります．)このファイルはTexinfo配布物に含まれ，ftp://tug.org/tex/epsf.texで利用可能です．

@imageは図を表示する行で使用することができます．このため，表示しようとした場合，前のテキストに出力が入り込まないように，コマンドの前で残りの空白行を確認してください．

改行，改ページの作成と阻止
*************

通常Texinfoファイルは，TeXとInfo書式化コマンドの1つの，両方で処理されます．行，段落や，ページの分割は，出力のどれかで`間違った'場所で発生することもあります．印刷されたマニュアルとInfoファイルの両方でテキストが正しく見えるように確認する必要があります．

例えば，印刷されたマニュアルでは，ページの分割は例の途中で不恰好に発生するかも知れません．これを避けるため，テキストを2ページに分割することから守る，グループコマンドを使用してテキストを保つことができます．反対に，通常発生しない場所で改ページを強制したい場合もあります．幸い，これらの問題は滅多にありません．そうするときは，改行や改ページ，改行や改ページ防止や，ページ付けコマンドを使用してください．

改行改ページコマンド
==========

改行改ページコマンドは，行や段落の分割を作成または許可します．

@*
     強制改行します．

@sp N
     N個の改行を省略します．

@-
     任意のハイフンを挿入します．

@hyphenation{HY-PHEN-A-TED WORDS}
     HY-PHEN-A-TED WORDSのハイフネーションポイントを定義します．

改行を避けるコマンドは，テキストを1行に全て一緒に保ちます．

@w{TEXT}
     TEXTを改行やハイブネーションで2行に跨ることを避けます．

Infoはページが無いので，ページコマンドは印刷された出力のみで適用されます．

@page
     印刷されたマニュアルで新しいページを開始します．

@group
     印刷された1ページ現れるよう，テキストを一緒に保ちます．

@need MILS
     当該ページに十分余白が無い場合，新しい印刷ページを開始します．

@*: 改行の生成
=========

@*コマンドは，印刷されたマニュアルとInfoの両方で，強制的に改行します．

例えば，以下のようにします．

     この行は@* 2箇所で@*分割されます．

以下を生成します．

     この行は
      2箇所で
     分割されます．

(最初の@*コマンドの後のスペースは次の行にそのまま運ばれることに注意してください．)

@*コマンドは，ファイルの著作権ページで良く使用されます．

     これは，Texinfoドキュメントのエディション2.0@*，
     それは...

この場合，@*コマンドは TeXが醜い方法でページ全体に行を引き延ばすことを阻止します．

     注意してください:@*コマンドの後にカッコを書かないでください．それらは不要です．

     @*コマンドを含む段落の終りに@refillコマンドを書かないでください．それは改行の発生後段落を充填し，改行の効果を否定します．

@-と@hyphenation: TeXのハイフネーションを助ける
=================================

TeXのハイフネーションアルゴリズムは一般にかなり良いのですが，時々役に立つハイフネーションポイントに失敗します．(滅多に無いことですが，間違ったハイフネーションを挿入します．)そのため，通常の語彙のドキュメントや良く調整された印刷エディションのため，TeX出力を助けたいと思うかも知れません． Texinfoはこのための2つのコマンドをサポートします．

@-
     任意のハイフン，すなわちTeXがハイフネーションできる(が必須ではない)場所を挿入します．これはTeXがハイフネーションを失敗したため，overfull hbox(see Overfull hboxes)を警告されたとき特に便利です．TeXは @-を含む単語にハイフネーションポイントを挿入しません．

@hyphenation{HY-PHEN-A-TED WORDS}
     TeXにHY-PHEN-A-TED WORDSのハイフネーション方法を伝えます．御覧のように，-をそれぞれのハイフネーションポイントに置きます．例えば以下のようにします．

          @hyphenation{man-u-script man-u-scripts}

     TeXは，正しく一致した単語のときのみ指定されたハイフネーションポイントを使用するので，必要な変形を全て与えてください．

Info出力はハイフネーションしないので，これらのコマンドはそこでは意味がありません．

@w{TEXT}: 改行を妨げる
================

@w{TEXT}はTEXTを出力し，TEXTでの改行を妨げます．

@wコマンドを，TeXが行の終り付近で発生する，長い名前や文節を自動的にハイフネーションを避けるために使用することができます．例えば，以下のようにします．

     GNUソフトウェアを@w{@samp{ftp.gnu.org}}からコピーできます．

以下を生成します．

     GNUソフトウェアをftp.gnu.orgからコピーできます．

同様に，改行されないスペースを生成するためにも@wを使用できます．

     フォーマッタはこの@w{ }スペースを改行しません．

@sp N: 空白行の挿入
=============

@sp Nのみを含むもので始まる行は，印刷されたマニュアルと Infoファイルの両方で，N個の空白行の空間を生成します．@spは段落の分割も強制します．例えば，以下のようにします．

     @sp 2

2行の空白行を生成します．

@spコマンドはタイトルページでもっとも良く使用されます．

@page: 新しいページの開始
================

@pageのみを含む行は印刷されたマニュアルで，新しいページを開始します．このコマンドは，Infoファイルではページが無いので効果がありません． @pageコマンドは，著作権ページを開始するため，Texinfoファイルの @titlepageセクションで良く使用されます．

@group: 改ページを妨げる
================

@groupコマンドは(単独行で)，@exampleや類似の縦方向に分けることができないグループを開始するものの内部で使用され，それは印刷された出力で1ページに全体が現れます．グループは@end groupのみを含む行で終了します．この2つの行はそれ自身出力に現れず，Info出力では効果がありません．

@groupは様々な文脈で概念的に意味がありますが，現在のインプリメントでは，@exampleとその変形の@display，@format， @flushleftと@flushrightのみで確実に働きます． See Quotations and Examples.  (これら全てのコマンドが共通に持つものは，入力のそれぞれの行が出力を生成することです．)他の内容では， @groupは異常な縦の空白を生成するはずです．

この書式の必要条件は，以下のように書くべきだということです．

     @example
     @group
     ...
     @end group
     @end example

このように，@groupと@end groupコマンドを用いて， @exampleと@end exampleコマンドの中に書きます．

@groupコマンドは例を1ページにまとめるため，最もよく使用されます．このTexinfoマニュアルでは，100以上の例として，@groupと @end groupで囲まれたテキストが含まれています．

グループの終了を忘れた場合，TeXを実行したとき，奇妙で不可解なエラーメッセージを得るかもしれません．これは，TeXがTexinfoファイルの残りを1ページに置こうとして，重要なテキストを処理するまでエラーメッセージを生成しはじめないためです．TeXで理解できないエラーメッセージを得る場合， @end groupが無いところを探すことは，良い経験則です．

@need MILS: 改ページを妨げる
====================

@need Nのみを含む行は，現在のページの残りがNミル(千分の1インチ)以下の場合，印刷されたマニュアルで新しいページを開始します．引数 Nの周りにカッコを使用しないでください．@needコマンドは， Infoはページが無いので，Infoでは効果はありません．

この段落は，ページの残りが800ミル(10分の8インチ)以下の場合，TeXに新しいページを開始するよう伝える，@needコマンドで処理されます．以下のようにします．

     @need 800
     この段落は，...

@needコマンドは孤立行(印刷ページの底の単一行)を避けるのに役立ちます．

コマンドの定義
*******

@deffnコマンドと他の定義コマンドで，関数，変数，マクロ，コマンド，ユーザーオプション，特別な形式と，その他の一様な書式での人工物のようなものを記述可能になります．

Infoファイルでは，定義はエンティティのカテゴリ---`関数'，`変数'や，あらゆるもの---を定義の最初の行の始めに現し，エンティティの名前と引数が続きます．印刷されたマニュアルでは，コマンドはTeXにエンティティの名前とその引数を左端のマージンにに印刷させ，カテゴリを次に右端のマージンに印刷させます．両方の出力形式で，定義の本体は字下げされます．同様に，エンティティ名は適切な索引に入ります．@deffnは関数索引に名前が入り，@defvrは変数索引に入る等のようになります．

マニュアルは，与えられた名前に対し1つ以上の定義は不要で含めるべきではありません．概要を含む付録は，定義コマンドより@tableを使用すべきです．

定義のテンプレート
=========

@deffnコマンドは，関数に似ているエンティティの定義に使用されます． @deffnコマンドで定義を書くために，@deffnコマンドを行の最初に書き，同じ行にエンティティのカテゴリ，エンティティ自身の名前と，(存在する場合は)引数を続けてください．そして，続く行に定義の本体を書いてください． (本体に例を埋め込むこともできます．)終りに，単独行に書かれた@end deffnコマンドで定義を終えてください．(他の定義コマンドも同じ書式が続きます．)

定義のテンプレートは以下のようになります．

     @deffn CATEGORY NAME ARGUMENTS...
     BODY-OF-DEFINITION
     @end deffn

例えば，以下のようにします．

     @deffn Command forward-word count
     このコマンドは，ポイントを@var{count}語前に(または，@var{count}が負
     の場合は後ろに)移動します．...
     @end deffn

以下を生成します．

      -- Command: forward-word count
          このコマンドは，ポイントをCOUNT語前に(または，COUNTが負の場合は後ろに)移動します．...

タイトルのようなカテゴリ名は大文字にしてください．`Interactive Command'のような文節のように，カテゴリ名が空白を含む場合，周りにカッコを書いてください．例えば以下のようにします．

     @deffn {Interactive Command} isearch-forward
     ...
     @end deffn

そうしない場合，2番目の単語はエンティティの名前と誤解されます．

定義コマンドには，他より一般的なものもあります．例えば，@deffnコマンドは関数やそれに似たもの---引数を取るエンティティ---のための，一般的な定義コマンドです．このコマンドを使用するとき，エンティティが属するカテゴリを指定すべきです．@deffnコマンドは，3つの前もって定義されている専門分野に相違のある，@defun，@defmacと，@defspecを処理し，それはカテゴリを指定します．それぞれ``関数''，``マクロ''と，``特別な形式''です．(Lispでは特別な形式は関数に似たエンティティです． )@defvrコマンドも，変数の特定の種類を記述するため専門分野に相違のあるものとして，前もって定義されたものを伴います．

@defunのような専門分野に相違のあるものに対するテンプレートは，カテゴリを指定する必要が無い以外，一般の定義のテンプレートに似ています．

     @defun NAME ARGUMENTS...
     BODY-OF-DEFINITION
     @end defun

このようにします．

     @defun buffer-end flag
     この関数は@var{flag}が1より小さい場合@code{(point-min)}を返し，それ
     以外では@code{(point-max)}を返します．...
     @end defun

以下を生成します．

      -- Function: buffer-end flag
          この関数はFLAGが1より小さい場合(point-min)を返し，それ以外では(point-max)を返します．...

定義の内部に@exampleの使用を含む関数定義の詳細な例は， see A Sample Function Definition.

ほかの特別なコマンドは，@defunのように動作します．

オプションと繰り返しの引数
=============

オプションや繰り返しの引数を取るエンティティもあり，それは角カッコと丸カッコを使用する特有なglyphで指定されるかも知れません．例えば，特別な形式は，引数リストを，簡単な関数より複雑な方法で分けられた引数に区切ることも良くあります．

角カッコで囲まれた引数はオプションです．このように[OPTIONAL-ARG]のような文節は，OPTIONAL-ARGがオプションだということを意味します．丸カッコに続く引数はオプションで，1度以上繰り返すこともできます．このように，REPEATED-ARGS...は0以上の引数を意味します．カッコはいくつかの引数がLispのリスト構造の追加のレベルにまとめられるとき使用します．

ここに想像上の，特別な形式の例の@defspecの行があります．

      -- Special Form: foobar (VAR [FROM TO [INC]]) BODY...

この例では，引数FROMとTOがオプションですが，両方有るまたは両方無い必要が有ります．それらが有る場合，INCは同様にオプションで指定できます．これらの引数は，BODYと分けるため，リストに引数VARでまとめられ，それは形式の残りの全ての要素を含みます．

Texinfoソースファイルでは，この@defspec行は以下のように書かれます (この例のように2行以上には分かれません)．

     @defspec foobar (@var{var} [@var{from} @var{to}
          [@var{inc}]]) @var{body}@dots{}

関数はコマンドと変数の索引でfoobarの下にリストアップされます．

2つ以上の`最初の'行
===========

定義に対し2つ以上の`最初の'またはヘッダ行を作成するため，最初の @deffn行に@deffnxで始まる行を続けてください． @deffnxコマンドは，その行と前の行の間に余分な縦方向の空白を生成しない以外，正確に@deffnのように動作します．

例えば以下のようにします．

     @deffn {Interactive Command} isearch-forward
     @deffnx {Interactive Command} isearch-backward
     この2つの検索コマンドは似ていて...
     @end deffn

以下を生成します．

 -- Interactive Command: isearch-forward
 -- Interactive Command: isearch-backward
     この2つの検索コマンドは似ていて...

それぞれの定義コマンドは`x'が付きます．@defunx，@defvrx， @deftypefunx，などです．

`x'の形式は@itemxとちょうど同じです．@itemx,を参照してください．

コマンドの定義
=======

Texinfoは1ダース以上の定義コマンドを供給し，それら全てをこのセクションで記述します．

定義コマンドは，自動的にエンティティ名を適切な索引に入れます．例えば， @deffn，@defunと，@defmacは関数の索引に関数名を入れます．@defvrと@defvarは変数の索引に変数名を入れます．

以下のほとんどの例はLispの例ですが，コマンドは他のプログラミング言語でも使用可能です．

関数と類似のエンティティ
------------

このセクションは関数や類似のエンティティの記述のためのコマンドを記述します．

@deffn CATEGORY NAME ARGUMENTS...
     @deffnコマンドは，関数，対話式コマンドと，引数を取る類似のエンティティのための一般的な定義コマンドです．定義されているエンティティのカテゴリを記述する用語を選択する必要があります．例えば，``関数''は，エンティティが関数の場合使用されます．@deffnコマンドは，行の最初に書かれ，同じ行に記述するエンティティのカテゴリ，この特定のエンティティの名前と，存在する場合その引数を続けます．単独行の@end deffnで定義を終了してください．

     例えば，ここに定義があります．

          @deffn Command forward-char nchars
          ポイントを@var{nchars}文字前に移動します．
          @end deffn

     これは，1つの引数NCHARSを持つforward-charという名前の``コマンド''の，どちらかというと簡潔な定義を表示します．

     @deffnは，NCHARSのような引数名を，これらの名前がメタ構文変数と考えるので，@varが使用されているかのように，イタリックまたは大文字で印刷します---それは実際の引数の値を意味します．記述のテキストで引数の値を述べるため，明示的に@varで引数名を書いてください．上記の例では，このように@var{nchars}を使用しました．

     @deffnのテンプレートは以下のとおりです．

          @deffn CATEGORY NAME ARGUMENTS...
          BODY-OF-DEFINITION
          @end deffn

@defun NAME ARGUMENTS...
     @defunコマンドは関数をに対する定義コマンドです．@defunは， @deffn Function ...と同じです．

     例えば，以下のようにします．

          @defun set symbol new-value
          シンボル@var{symbol}の値を@var{new-value}に変更します．
          @end defun

     これは，引数がSYMBOLとNEW-VALUEの関数setの，どちらかというと簡潔な定義を表示します．@defun行の引数名は，@varで囲まれているかのように，自動的にイタリックまたは大文字で現れます．単独行の @end defunで定義を終了してください．

     テンプレートは以下のとおりです．

          @defun FUNCTION-NAME ARGUMENTS...
          BODY-OF-DEFINITION
          @end defun

     @defunは関数索引に項目を生成します．

@defmac NAME ARGUMENTS...
     @defmacコマンドはマクロの定義コマンドです．@defmacは @deffn Macro ...と同じで，@defunのように動作します．

@defspec NAME ARGUMENTS...
     @defspecコマンドは，特別な形式の定義コマンドです．(Lispでは，特別な形式は関数に良く似たエンティティです．see Special Forms (GNU Emacs Lisp Reference Manual)．)@defspecは@deffn {Special Form} ...と同じで，@defunのように動作します．

変数と類似のエンティティ
------------

ここに，変数と類似のエンティティを定義するためのコマンドがあります．

@defvr CATEGORY NAME
     @defvrコマンドは変数のようなものの一般的な定義コマンドです---エンティティは値を記録します．定義されたエンティティのカテゴリを記述するための，用語を選択する必要があります．例えば，``変数''はエンティティが変数の場合使用されます．@defvrコマンドを行の最初に書き，同じ行にエンティティのカテゴリとエンティティの名前を続けてください．

     タイトルのようにカテゴリ名を大文字にしてください．カテゴリ名が``User Option''のようにスペースを含む場合，カッコで囲んでください．そうしない場合， 2番目の単語はエンティティの名前だと誤解されます．例えば，以下のようにします．

          @defvr {User Option} fill-column
          このバッファローカル変数は，
          補充された行の最大幅を指定します．
          ...
          @end defvr

     単独行の@end defvrで定義を終了してください．

     テンプレートは以下の通りです．

          @defvr CATEGORY NAME
          BODY-OF-DEFINITION
          @end defvr

     @defvrはNAMEに対し，変数索引の項目を作成します．

@defvar NAME
     @defvarコマンドは，変数の定義コマンドです．@defvarは @defvr Variable ...と同じです．

     例えば，以下のようにします．

          @defvar kill-ring
          ...
          @end defvar

     テンプレートは以下の通りです．

          @defvar NAME
          BODY-OF-DEFINITION
          @end defvar

     @defvarは，NAMEに対し変数索引の項目を作成します．

@defopt NAME
     @defoptコマンドは，ユーザーオプション，すなはち，ユーザーの好みで変更する変数に対する定義コマンドです．Emacsは多くのそのようなものがあります(see Variables (The GNU Emacs Manual))． @defoptは@defvr {User Option} ...と同じで， @defvarのように働きます．

型のある言語の関数
---------

@deftypefnコマンドとその変形は，CやC++のような変数の型と関数を宣言する必要がある言語の関数を記述するためのものです．

@deftypefn CATEGORY DATA-TYPE NAME ARGUMENTS...
     @deftypefnコマンドは，関数と，引数を取るものや型のある類似のエンティティの定義コマンドです．@deftypefnは行の最初に書き，同じ行に記述されるエンティティのカテゴリ，戻り値の型，この特定のエンティティの名前と，存在する場合引数が続きます．

     例えば，以下のようにします．

          @deftypefn {Library Function} int foobar
             (int @var{foo}, float @var{bar})
          ...
          @end deftypefn

     (``...''の前のテキストは，2行で表示され，Texinfoファイルでは実際には単 1行です．)Infoでは以下を生成します．

          -- Library Function: int foobar (int FOO, float BAR)
          ...

     これは，foobarが``ライブラリ関数''で，それはintを返し，引数はFOO(int)とBAR(float)だということを意味します．

     @deftypefnで書いた引数名は，暗黙で@varにはなりません ---@deftypefnの引数の実際の名前はデータ型名とキーワードの間で，典型的にバラバラなので，Texinfoは助けなしに見つけることができません．代わりに，@varを引数名の周りに明示的に書く必要があります．上の例では，引数名はfooとbarです．

     @deftypefnのテンプレートは以下の通りです．

          @deftypefn CATEGORY DATA-TYPE NAME ARGUMENTS ...
          BODY-OF-DESCRIPTION
          @end deftypefn

     CATEGORYやDATA TYPEが1単語以上の場合，単一の引数にするためカッコで囲む必要があることに注意してください．

     Adaのようなパッケージ言語のプロシージャを記述する場合，前の段落で記述されている慣習と幾分反対の方法として，@deftypefnの使用を手法として考えるかも知れません．

     例えば以下のようにします．

          @deftypefn stacks private push
                  (@var{s}:in out stack;
                  @var{n}:in integer)
          ...
          @end deftypefn

     (@deftypefnの引数は，3行に分かれていますが，実際のTexinfoファイルでは単一行になります．)

     この例では，プロシージャは`プロシージャ'と分類するのではなくパッケージ stacksに属するものとして分類され，そのデータ型はprivateとして記述されます．(プロシージャの名前はpushで，その引数はSと Nです．)

     @deftypefnはNAMEに対し関数索引に項目を作成します．

@deftypefun DATA-TYPE NAME ARGUMENTS...
     @deftypefunコマンドは，型のある言語の関数のための特別な定義コマンドです．そのコマンドは@deftypefn Function ...と同じです．

     このようにします．

          @deftypefun int foobar (int @var{foo}, float @var{bar})
          ...
          @end deftypefun

     Infoでは以下を生成します．

          -- Function: int foobar (int FOO, float BAR)
          ...

     テンプレートは以下の通りです．

          @deftypefun TYPE NAME ARGUMENTS...
          BODY-OF-DESCRIPTION
          @end deftypefun

     @deftypefunはNAMEに対し関数索引に項目を作成します．

型のある言語の変数
---------

型のある言語の変数は，型のある言語の関数に似た方法で処理されます． See Typed Functions.  一般的な定義コマンド@deftypevrは @deftypefnに対応し，特別な定義コマンド@deftypevarは @deftypefunに対応します．

@deftypevr CATEGORY DATA-TYPE NAME
     @deftypevrコマンドは，型のある言語の変数のようなもののための一般的な定義コマンドです---値を記録するエンティティです．定義されるエンティティのカテゴリを記述するための用語を選択する必要があります．例えば，``変数''はエンティティが変数の場合使用します．

     @deftypevrコマンドは，行の最初に書かれ，同じ行に記述されるエンティティのカテゴリ，データの型，そして特定のエンティティの名前が続きます．

     例えば，以下のようにします．

          @deftypevr {Global Flag} int enable
          ...
          @end deftypevr

     Infoでは以下を生成します．

          -- Global Flag: int enable
          ...

     テンプレートは以下の通りです．

          @deftypevr CATEGORY DATA-TYPE NAME
          BODY-OF-DESCRIPTION
          @end deftypevr

     @deftypevrは，NAMEに対し変数索引に項目を作成します．

@deftypevar DATA-TYPE NAME
     @deftypevarコマンドは，型のある言語の変数のための特別な定義コマンドです．@deftypevarは@deftypevr Variable ...と同じです．

     例えば，以下のようにします．

          @deftypevar int fubar
          ...
          @end deftypevar

     Infoでは以下を生成します．

          -- Variable: int fubar
          ...

     テンプレートは以下の通りです．

          @deftypevar DATA-TYPE NAME
          BODY-OF-DESCRIPTION
          @end deftypevar

     @deftypevarは，NAMEに対し，変数索引の項目を作成します．

オブジェクト指向プログラミング
---------------

ここに，オブジェクト指向プログラミングで使用するような，抽象的なオブジェクトに関する記述を書式化するためのコマンドがあります．クラスは抽象的なオブジェクトの定義された型です．クラスのインスタンスはクラスの型を持つ特定のオブジェクトです．インスタンス変数はクラスに属するがそれぞれのインスタンスが独自の値を持つ変数です．

定義では，クラス名はクラスに対するプログラミングシステムで本当に定義された名前の場合，@codeをその周りに書くべきです．そうしない場合，通常のテキストフォントで印刷されます．

@defcv CATEGORY CLASS NAME
     @defcvコマンドは，オブジェクト指向プログラミングで，クラスに関連する変数に対する一般的な定義コマンドです．@defcvコマンドは3つの引数をとります．定義している事柄のカテゴリ名，属するクラスと，その名前です．このようにします．

          @defcv {Class Option} Window border-pattern
          ...
          @end defcv

     これは，Windowクラスのborder-patternクラスオプションの定義の最初の行の書き方を説明しています．

     テンプレートは以下の通りです．

          @defcv CATEGORY CLASS NAME
          ...
          @end defcv

     @defcvは変数索引に項目を作成します．

@defivar CLASS NAME
     @defivarコマンドは，オブジェクト指向プログラミングのインスタンス変数に対する定義コマンドです．@defivarは@defcv {Instance Variable} ...と同じです．

     テンプレートは以下の通りです．

          @defivar CLASS INSTANCE-VARIABLE-NAME
          BODY-OF-DEFINITION
          @end defivar

     @defivarは変数索引に項目を作成します．

@deftypeivar CLASS DATA-TYPE NAME
     @deftypeivarコマンドは，オブジェクト指向プログラミングの型を付けられたインスタンス変数に対する定義コマンドです．それは，@defivarに，インスタンス変数の型を指定するためのDATA-TYPEパラメータが付いたものに似ています．@deftypeivarは変数索引に項目を作成します．

@defop CATEGORY CLASS NAME ARGUMENTS...
     @defopコマンドは，オブジェクト指向プログラミングのメソッドに似ているエンティティに対する定義コマンドです．これらのエンティティは，関数のように引数を取りますが，オブジェクトの特定のクラスに関連付けされています．

     例えば，メソッドとしてクラスに関連付けされているラッパーと呼ばれる概念を持つシステムもありますが，それは関数というよりマクロのように動作します． @defop Wrapperをこれらの1つとしての記述に使用することができます．

     メソッドとオペレーションを分けた方が便利なときもあります．オペレーションをメソッドの詳述と考えることができます．このように，ウィンドウシステムは全てのウィンドウクラスがexposeと言う名前のメソッドを持つことを指定できます．我々は，このウィンドウシステムが一般的なウィンドウ上に exposeオペレーションを定義していると言っているのです．特に，オペレーションは名前を持ち，引数のパターンも指定されています．全てのオペレーションをインプリメントしたメソッドは，オペレーションで使用されるアプリケーションがインプリメントしたメソッドを知らないでそれを行うので．同じ引数を受け入れるようにする必要があります．

     メソッドよりオペレーションを説明した方がより意味があることも良くあります．例えば，ウィンドウアプリケーション開発者は，exposeオペレーションを知る必要がありますが，与えられたウィンドウのクラスが，このオペレーションをインプリメントした独自のメソッドを持つかどうかを考慮する必要はありません．このオペレーションを記述するため，以下のように書きます．

          @defop Operation windows expose

     @defopコマンドは，行の最初に書かれ，同じ行にオペレーションのカテゴリの全体的な名前，オペレーションクラスの名前，オペレーションの名前，そして，存在する場合その引数を続けます．

     テンプレートは以下の通りです．

          @defop CATEGORY CLASS NAME ARGUMENTS...
          BODY-OF-DEFINITION
          @end defop

     @defopは`expose on windows'のような項目を，関数索引に作成します．

@deftypeop CATEGORY CLASS DATA-TYPE NAME ARGUMENTS...
     @deftypeopコマンドは，オブジェクト指向プログラミングの型付のオペレーションに対する定義コマンドです．それは@defopに，メソッドの戻り値を指定するDATA-TYPEパラメータを加えたものに似ています． @deftypeopは関数索引に項目を作成します．

@defmethod CLASS NAME ARGUMENTS...
     @defmethodコマンドは，オブジェクト指向プログラミングのメソッドに対する定義コマンドです．メソッドは特定のオブジェクトのクラスとそのサブクラスのためのオペレーションをインプリメントする関数のようなものです．

     @defmethodは@defop Method ...と同じです．コマンドは行の最初に書かれ，メソッドのクラス名，メソッド名，そして存在する場合はその引数が続きます．

     例えば，以下のようにします．

          @defmethod bar-class bar-method argument
          ...
          @end defmethod

     これは，クラスbar-classのbar-methodと呼ばれるメソッドのための定義を説明しています．メソッドは引数を取ります．

     テンプレートは以下の通りです．

          @defmethod CLASS METHOD-NAME ARGUMENTS...
          BODY-OF-DEFINITION
          @end defmethod

     @defmethodは，関数索引に`bar-method on bar-class'のような項目を作成します．

@deftypemethod CLASS DATA-TYPE NAME ARGUMENTS...
     @deftypemethodコマンドは，C++やJavaのようなオブジェクト指向の型のある言語のメソッドのための定義コマンドです．それは，@defmethodコマンドに，メソッドの戻り値を指定するためのDATA-TYPEパラメータを追加したものに似ています．

データの型
-----

ここにデータの型に対するコマンドがあります．

@deftp CATEGORY NAME ATTRIBUTES...
     @deftpコマンドは，データの型のための一般的な定義コマンドです．そのコマンドは行の最初に書かれ，同じ行にカテゴリ，型の名前(intや floatのようなもの)，そして型のオブジェクトの属性名が続きます．このように，このコマンドをintやfloatを記述するために使用することができ，その場合，カテゴリとしてdata typeを使用することができます． (データの型は，オペレーションがそれに対し実行されることが可能なように決定する目的に対する，特定のオブジェクトのカテゴリです．)

     例えば，Lispでは，pairは特定のデータの型に名前を付け，その型のオブジェクトはCARとCDRと呼ばれる2つのスロットを持ちます．ここに， pairの定義の最初の行を書く方法があります．

          @deftp {Data type} pair car cdr ... @end deftp

     テンプレートは以下の通りです．

          @deftp CATEGORY NAME-OF-TYPE ATTRIBUTES...
          BODY-OF-DEFINITION
          @end deftp

     @deftpはデータの型の索引に項目を作成します．

定義を書くための慣習
==========

@deffn，@defunやその他の定義コマンドの1つを使用し定義を書くとき，forward-word関数に対するCOUNT引数のように意味を示す，引数の使用に注意してください．同様に，INTEGERのように引数名が型名を含む場合，引数が実際にその型であるよう注意してください．

関数定義の見本
=======

関数定義は，@defunと@end defunを使用します．関数名は @defunコマンドの直後に続き，同じ行にパラメータリストが続きます．

ここにCalling Functions (The GNU Emacs Lisp Reference Manual),からの定義があります．

      -- Function: apply function &rest arguments
          applyはARGUMENTSでFUNCTIONを呼び出し，funcallに似ていますが，1点異なります．ARGUMENTSの終りは，FUNCTIONに与えられた単一の引数というよりはむしろ引数のリストです．同様に我々は，このリストが他の引数に加えられるとも言っています．

          applyはFUNCTION呼び出しの結果を返します．funcallのように，FUNCTIONはLisp関数やプリミティブ関数である必要があります．特別な形式とマクロは，applyでは意味がありません．

               (setq f 'list)
                    => list
               (apply f 'x 'y 'z)
               error--> Wrong type argument: listp, z
               (apply '+ 1 2 '(3 4))
                    => 10
               (apply '+ '(1 2 3 4))
                    => 10

               (apply 'append '((a b c) nil (x y z) nil))
                    => (a b c x y z)

          applyを使用した興味深い例は，mapcarの記述で見付かります．

Texinfoソースファイルでは，この例は以下のようになります．

     @defun apply function &rest arguments
     @code{apply}は@var{arguments}で@var{function}を呼び出し，
     @code{funcall}に似ていますが，1点異なります．@var{arguments}の終りは，
     @var{function}に与えられた単一の引数というよりはむしろ引数のリストです．
     同様に我々は，このリストが他の引数に@dfn{加えられる}とも言っています．

     @code{apply}は@var{function}呼び出しの結果を返します．
     @code{funcall}のように，@var{function}はLisp関数やプリミティブ関数で
     ある必要があります．特別な形式とマクロは，@code{apply}では意味がありま
     せん．

     @example
     (setq f 'list)
          @result{} list
     (apply f 'x 'y 'z)
     @error{} Wrong type argument: listp, z
     (apply '+ 1 2 '(3 4))
          @result{} 10
     (apply '+ '(1 2 3 4))
          @result{} 10

     (apply 'append '((a b c) nil (x y z) nil))
          @result{} (a b c x y z)
     @end example

     @code{apply}を使用した興味深い例は，@code{mapcar}の記述で見付かります．
     @end defun

このマニュアルでは，この関数はapplyの下のコマンドと変数索引にリストアップされています．

通常の変数とユーザーオプションは，変数が引数を取らない以外，関数に対するものに似た書式を使用し記述されます．

目に見えるテキストの条件
************

異なる出力書式に対し，異なるテキストを使用するのが良いこともあります．例えば，印刷されたマニュアルとInfo出力に対し異なるテキストを指定する，条件コマンドを使用することができます．

条件コマンドはネストできません．

条件コマンドは，以下のカテゴリを含みます．

  * HTML，InfoやTeXのためのコマンド．

  * HTML，InfoやTeXのためでないコマンド．

  * 生のTeXやHTMLコマンド．

  * 全ての書式に対しテキストを代入し，フラグがセットされているかクリアされているか試します．

条件コマンド
======

@ifinfoは，印刷されたマニュアルに植字されるとき，TeXで無視されるテキストの部分を開始します．テキストの部分は，Infoファイルでのみ現れます． @ifinfoコマンドは，単独行に現すべきです．単独行の@end ifinfoを含む行で，Infoのみのテキストを終えるべきです．Texinfoファイルの最初で，Infoの許可は@ifinfoと@end ifinfoでマークされた領域に含まれます．(see Info Summary and Permissions.)

@iftexと @end iftexコマンドは，テキストを，印刷されたマニュアルに現し，Infoファイルに現さないように指定する以外，@ifinfoと @end ifinfoコマンドに似ています．@ifhtmlと @end ifhtmlにも似ていて，それはHTML出力でのみ現すようテキストを指定します．

例えば，以下のようにします．

     @iftex
     このテキストは，印刷されたマニュアルのみで現れます．
     @end iftex
     @ifinfo
     しかし，このテキストはInfoファイルでのみ現れます．
     @end ifinfo
     @ifhtml
     また，このテキストはHTMLのみで現れます．
     @end ifhtml

上記の例は，以下の行を生成します．

しかし，このテキストはInfoファイルでのみ現れます．

読んでいるマニュアルのバージョンに依存して，入力行の1つのみ見えることに注意してください．

条件の否定コマンド
=========

@ifnot...コマンドで与えられたもの以外の，あらゆる出力書式に含まれるテキストを指定できます．

     @ifnothtml ... @end ifnothtml
     @ifnotinfo ... @end ifnotinfo
     @ifnottex ... @end ifnottex

(@ifnot...コマンドと@endコマンドは，実際には単独行で現します．)

出力ファイルが与えられた書式のために作成されていない場合，その領域は含みます．それ以外の場合，無視されます．

これらのコマンドで限定された領域は，@texで使用したような生のフォーマッタソースではなく，@iftexで使用したような通常のTexinfoソースです(see Raw Formatter Commands)．

生の書式化コマンド
=========

@iftexと@end iftexで線引きされた領域の内部に，生のTeXコマンドを埋め込むことができます．TeXに見られるファイルの一部だけなので， Infoではこれらのコマンドは無視されます．TeXで使用されている\を @に置換する必要がある以外，通常のTeXファイルで書いていたような TeXコマンドを書くことができます．例えば，Texinfoファイルの @titlepageセクションで，著作権ページを書式化するためのTeXコマンド@vskipを使用することができます．(@titlepageコマンドは， @iftexコマンドの使用と同じように，その領域を自動的にInfoに無視させます．)

しかし，プレーンTeXの多くの特徴は，Texinfoが優先されるので働きません．

@texと@end texコマンドで領域を線引きすることで，プレーン TeXを完全に入力し，TeXコマンドで\を使用することができます． (@texコマンドでも，@iftexコマンドのように，Infoは領域を無視します．)唯一の例外は，@end texを正確に認識できるよう， @文字がまだコマンドを導入することです．

例えばここに，プレーンTeXで書かれた数式表現があります．

     @tex
     $$ \chi^2 = \sum_{i=1}^N
               \left (y_i - (a + b x_i)
               \over \sigma_i\right)^2 $$
     @end tex

この例の出力は，印刷されたマニュアルにのみ現れます．Infoでこれを読んでいる場合，印刷されたマニュアルに現れる等式は見ません．

同様に，HTML出力のみに含まれる領域を線引きするため，@ifhtml ... @end ifhtmlを使用し，生のHTMLの領域のため@html ... @end htmlを使用することができます(再び，例外的に@はまだエスケープ文字なので，@endは認識されます．)

@set，@clearと，@value
===================

@set，@clear，@ifsetと，@ifclearを用いて，直接Texinfo書式化コマンドにTexinfoファイルの一部を書式化させたり無視させたりできます．

更に，@set FLAGコマンドを，文字列にFLAGの値を設定するために使用できます．そして，文字列を挿入するために @value{FLAG}を使用することができます．例えば，日付を設定するために@setを使用し，Texinfoファイルの様々な場所に日付を挿入するため@valueを使用することができます．

@ifsetと@ifclear
---------------

FLAGが設定されているとき，Texinfo書式化コマンドは@ifset FLAGと@end ifsetの組の間のテキストを書式化します． FLAGがクリアされているとき，Texinfo書式化コマンドはテキストを書式化しません．

@set FLAGコマンドを，FLAGの開始や設定に使用してください．flag名は，あらゆる単一語が可能で，それは文字，数字，ハイフンやアンダースコアを含みます．

コマンドの書式は以下のようになります．

     @set FLAG

条件によって書式化されるテキストは，@ifset FLAGと @end ifsetコマンドの間に，以下のように書いてください．

     @ifset FLAG
     CONDITIONAL-TEXT
     @end ifset

例えば，`large'と`small'モデルに対するマニュアルのような，2つの変形を持つ 1つのドキュメントを作成することができます．

     潅木を傷つけずに掘り出すために，
     この機械を使用することができます．

     @set large

     @ifset large
     それは，十分大きく育った木も掘り出すことができます．
     @end ifset

     すぐに植え直すことを忘れないでください...

例では，書式化コマンドは，largeフラグがセットされているので， @ifset largeと@end ifsetの間のテキストを書式化します．

@clear FLAGコマンドを，FLAGの停止やクリアのために使用してください．フラグをクリアすることは，フラグを設定することの反対です．コマンドは以下のようにします．

     @clear FLAG

コマンドを単独行に書いてください．

FLAGがクリアされているとき，Texinfo書式化コマンドは@ifset FLAGと@end ifsetの間のテキストを書式化しません．テキストは無視され，印刷された，またはInfo出力に現れません．

例えば前の例で，@set largeコマンドの後(で，条件テキストの前)に @clear largeコマンドを書いて，フラグをクリアする場合，Texinfo書式化コマンドは，@ifset largeと@end ifsetコマンドの間のテキストを無視します．書式化された出力では，``潅木を傷つけずに掘り出すために，この機械を使用することができます．すぐに植え直すことを忘れないでください ...''という行のみ見えます．

@clear FLAGコマンドでフラグがクリアされている場合，書式化コマンドは@ifclearと@end ifclearコマンドの組の間のテキストを書式化します．しかし@set FLAGでフラグが設定されている場合，書式化コマンドは@ifclearと@end ifclearコマンドの間のテキストを書式化しません．というよりはむしろ，それらのテキストを無視します．@ifclearコマンドは以下のようにします．

     @ifclear FLAG

手短に言うと，コマンドは以下になります．

@set FLAG
     Texinfo書式化コマンドに，FLAGが設定されていることを伝えます．

@clear FLAG
     Texinfo書式化コマンドに，FLAGがクリアされていることを伝えます．

@ifset FLAG
     FLAGが設定されている場合，Texinfo書式化コマンドに，それに続く @end ifsetコマンドまでのテキストを書式化するよう伝えます．

     FLAGがクリアされている場合，Texinfo書式化コマンドに，それに続く @end ifsetコマンドまでのテキストを無視するよう伝えます．

@ifclear FLAG
     FLAGが設定されている場合，Texinfo書式化コマンドに，それに続く @end ifclearコマンドまでのテキストを無視するよう伝えます．

     FLAGがクリアされている場合，Texinfo書式化コマンドに，それに続く @end ifclearコマンドまでのテキストを書式化するよう伝えます．

@setと@value
-----------

@setコマンドをフラグに対する値を指定するために使用でき，それは @valueコマンドで拡張されます．フラグは識別子です．最善の結果のため，フラグ名には文字と数字のみを使用し，-や_は使用しないでください---それらが働く文脈もありますが，TeXの制限のため全てで働くわけではありません．値は入力行の残りの文字による文字列です．

@setコマンドは以下のように書きます．

     @set foo This is a string.
     @set foo これは文字列です．

これは，フラグfooの値を``これは文字列です''に設定します．

そのとき，Texinfoフォーマッタは@value{FLAG}コマンドを FLAGにセットされた文字列に置換します．このようにfooが上記のように設定されている場合，Texinfoフォーマッタは変換します．

     @value{foo}
     to
     これは文字列です．

@valueコマンドを段落の中に書くこともできます．しかし， @setコマンドは単独行に書く必要があります．

@setコマンドを以下のように書く場合を考えます．

     @set foo

文字列を指定していないので，fooの値は空の文字列になります．

@clear FLAGで前に設定されたフラグをクリアする場合，それに続く@value{flag}コマンドは無効で，文字列は{No value for
"FLAG"}というエラーメッセージで置換されます．

例えば，以下のようにfooを設定した場合を考えます．

     @set how-much very, very, very

そのとき，フォーマッタは以下のように変換します．

     It is a @value{how-much} wet day.
     上記を以下変換
     It is a very, very, very wet day.

以下のように書いた場合を考えます．

     @clear how-much

そのとき，フォーマッタは以下のように変換します．

     It is a @value{how-much} wet day.
     上記を以下に変換
     It is a {No value for "how-much"} wet day.

@valueの例
--------

@valueコマンドを，マニュアル更新時に変更する必要がある部分の数を制限するために使用することができます．ここにThe GNU Make Manualで行った例があります．

 1. フラグをセットします．

          @set EDITION 0.35 Beta
          @set VERSION 3.63 Beta
          @set UPDATED 14 August 1992
          @set UPDATE-MONTH August 1992

 2. Texinfoファイルの読者に対し，最初の@ifinfoセクションのためにテキストを書きます．

          This is Edition @value{EDITION},
          last updated @value{UPDATED},
          of @cite{The GNU Make Manual},
          for @code{make}, version @value{VERSION}.

 3. 印刷されたマニュアルの読者に対し，タイトルページのためのテキストを書きます．

          @title GNU Make
          @subtitle A Program for Directing Recompilation
          @subtitle Edition @value{EDITION}, ...
          @subtitle @value{UPDATE-MONTH}

     (印刷されたカバーでは，月と年をリストアップした日付は，月と年のようにその日をリストアップした日付より曖昧に見えません．)

 4. Infoファイルの読者に対し，Topノードのためのテキストを書きます．

          This is Edition @value{EDITION}
          of the @cite{GNU Make Manual},
          last updated @value{UPDATED}
          for @code{make} Version @value{VERSION}.

     マニュアルを書式化後，最初の@ifinfoセクションのテキストは，以下のようになります．

          This is Edition 0.35 Beta, last updated 14 August 1992,
          of `The GNU Make Manual', for `make', Version 3.63 Beta.

マニュアルを更新したとき，フラグの値のみを変更してください．3つのセクションを編集する必要はありません．

国際化
***

Texinfoは，英語以外の言語で書くためのサポートもありますが，この領域は，まだ重要な仕事を必要とします．

Texinfoがサポートする，さまざまなアクセントと特別な文字のリストは， Inserting Accents,を参照してください．

@documentlanguage CC:ドキュメントの言語をセットする
====================================

@documentlanguageコマンドは，現在のドキュメント言語を宣言します．単独行に，2文字のISO-639言語コードを続けてください(リストは以下に含めます )．複数言語のドキュメントがある場合，目的は，それぞれの言語に変更を宣言するため，何回もこのコマンドを使うことで可能となります．コマンドが使われない場合，デフォルトは英語のenです．

現在，このコマンドはInfoとHTML出力では無視されます．TeXに対して，それはファイルtxi-CC.texを読み込ませます(存在する場合)．そのようなファイルは，適切にTeX出力で使われる，`Chapter'，`See'等のような，様々な英単語を再定義します．

このコマンドが，TeXの現在のハイフネーションパターン思考を(TeXプリミティブの\languageで)変更すると良いのですが，これは残念ながら，現在インプリメントされていません．

ここに，有効な言語コードのリストがあります．このリストは， http://www.iro.umontreal.ca/contrib/po/iso-639， the free translation projectからのものです．将来我々は， http://www.sil.org/ethnologue/#contentsで述べられている，3文字の POVコードを許可するよう望むでしょう．これはアフリカ言語のサポートに必要です．

aa   Afar
ab   Abkhazian
af   Afrikaans

am   Amharic
ar   Arabic
as   Assamese

ay   Aymara
az   Azerbaijani
ba   Bashkir

be   Byelorussian
bg   Bulgarian
bh   Bihari

bi   Bislama
bn   Bengali; Bangla
bo   Tibetan

br   Breton
ca   Catalan
co   Corsican

cs   Czech
cy   Welsh
da   Danish

de   German
dz   Bhutani
el   Greek

en   English
eo   Esperanto
es   Spanish

et   Estonian
eu   Basque
fa   Persian

fi   Finnish
fj   Fiji
fo   Faroese

fr   French
fy   Frisian
ga   Irish

gd   Scots Gaelic
gl   Galician
gn   Guarani

gu   Gujarati
ha   Hausa
he   Hebrew

hi   Hindi
hr   Croatian
hu   Hungarian

hy   Armenian
ia   Interlingua
id   Indonesian

ie   Interlingue
ik   Inupiak
is   Icelandic

it   Italian
iu   Inuktitut
ja   Japanese

jw   Javanese
ka   Georgian
kk   Kazakh

kl   Greenlandic
km   Cambodian
kn   Kannada

ks   Kashmiri
ko   Korean
ku   Kurdish

ky   Kirghiz
la   Latin
ln   Lingala

lt   Lithuanian
lo   Laothian
lv   Latvian, Lettish

mg   Malagasy
mi   Maori
mk   Macedonian

ml   Malayalam
mn   Mongolian
mo   Moldavian

mr   Marathi
ms   Malay
mt   Maltese

my   Burmese
na   Nauru
ne   Nepali

nl   Dutch
no   Norwegian
oc   Occitan

om   (Afan) Oromo
or   Oriya
pa   Punjabi

pl   Polish
ps   Pashto, Pushto
pt   Portuguese

qu   Quechua
rm   Rhaeto-Romance
rn   Kirundi

ro   Romanian
ru   Russian
rw   Kinyarwanda

sa   Sanskrit
sd   Sindhi
sg   Sangro

sh   Serbo-Croatian
si   Sinhalese
sk   Slovak

sl   Slovenian
sm   Samoan
sn   Shona

so   Somali
sq   Albanian
sr   Serbian

ss   Siswati
st   Sesotho
su   Sundanese

sv   Swedish
sw   Swahili
ta   Tamil

te   Telugu
tg   Tajik
th   Thai

ti   Tigrinya
tk   Turkmen
tl   Tagalog

tn   Setswana
to   Tonga
tr   Turkish

ts   Tsonga
tt   Tatar
tw   Twi

ug   Uighur
uk   Ukrainian
ur   Urdu

uz   Uzbek
vi   Vietnamese
vo   Volapuk

wo   Wolof
xh   Xhosa
yi   Yiddish

yo   Yoruba
za   Zhuang
zh   Chinese

zu   Zulu

@documentencoding ENC:入力エンコードのセット
=================================

@documentencodingコマンドは，入力ドキュメントのエンコードを宣言します．単独行に，ISO-8859-1のような有効なエンコード指定を続けて書いてください．

現在，これはmakeinfoのHTML出力のみで使われます．ドキュメントエンコードENCが指定された場合，<meta>タグで出力の<head>に含められます．

     <meta http-equiv="Content-Type" content="text/html; charset=ENC">

新しいTexinfoコマンドの定義
*****************

Texinfoは，新しいコマンドを定義する様々なコマンドを提供します．

  * Texinfoマクロは，テキストと既存のコマンド(他のマクロを含む)のあらゆる連続として，新しいTexinfoコマンドの定義を許可します．マクロは，あらゆる数のパラメータ---マクロの使用と同時に提供するテキスト---を取ることが可能です．

     さらに，これらのマクロは@defmacコマンドと関係が無く，それは，マニュアルのサブジェクトでドキュメント化されるマクロです(see Def Cmd Template)．

  * @aliasは，既存のコマンドに対する新しい名前を定義する便利な方法です．

  * @definfoencloseで，Infoファイルのカスタマイズされた出力で新しいコマンドの定義が可能です．

マクロの定義
======

マクロを定義するため，以下のようにTexinfoの@macroコマンドを使用します．

     @macro MACRONAME{PARAM1, PARAM2, ...}
     TEXT ... \PARAM1\ ...
     @end macro

パラメータのPARAM1，PARAM2，...は，後でマクロをドキュメントで使用する時(次のセクションで記述します)に供給される引数に対応します．

マクロがTeXで働くため，MACRONAMEは完全に文字から成り立っている必要があります．数字，ハイフン，アンダースコアや，他の特別な文字を含めてはいけません．

マクロがパラメータを必要としない場合，空のリスト(@macro foo {})，またはカッコ無し(@macro foo)で定義することができます．

定義やマクロの本体は，前に定義されたマクロを含め，ほとんどの Texinfoコマンドを含むことができます．まだ定義されていないマクロの呼び出しは許可されていません．このように，相互に繰り返されるTexinfoマクロを持つことはできません．同様に，他のマクロを定義するマクロ定義は，@macroの設計の制限のため，TeXでは働きません．

マクロの本体では，上記の例では\PARAM1\のようにバックスラッシュで囲まれているパラメータ名のインスタンスは，マクロ呼び出しで対応する引数で置換されます．パラメータ名は，0回を含め何度でも本体で使用できます．

マクロ表現での単一の\を得るため，\\を使用してください．ほかのあらゆる本体での\の使用は警告をもたらします．

@macro行の後と@end macro行の前の改行は無視され，そのため，マクロ本体に含まれません．全ての他の空白は通常のTexinfoの規則に従って扱われます．

マクロを再帰的に使用可能にするため，すなわち，引数としてそれ自身を呼び出すため，以下のように@rmacroで定義する必要があります．

     @rmacro rmac
     a\arg\b
     @end rmacro
     ...
     @rmac{1@rmac{text}2}

これは，出力`a1atextb2b'を生成します．@rmacroの代わりに @macroを用いた場合，エラーメッセージが得られます．

@unmacro FOOを用いて，マクロFOOを未定義にできます．既に未定義にされたマクロを未定義にすることはエラーではありません．例えば以下のようにします．

     @unmacro foo

マクロの呼び出し
========

マクロの定義後(前のセクションを参照してください)，以下のようにドキュメントで使用(呼び出し)できます．

     @MACRONAME {ARG1, ARG2, ...}

そして，結果はそこでMACRONAME本体に入力したようになります．

     @macro foo {p, q}
     Together: \p\ & \q\.
     @end macro
     @foo{a, b}

以下を生成します．

     Together: a & b.

このように，引数とパラメータはコンマで分けられ，カッコで範囲を定めます．コンマの後(前は違います)のあらゆる空白は無視されます．マクロが引数を取らない場合でもカッコは呼び出しで(定義では違います)要求され，他の全てのTexinfoコマンドと一貫性を保ちます．

     @macro argless {}
     ここに引数はありません．
     @end macro
     @argless{}

以下を生成します．

     ここに引数はありません．

コンマ，カッコ，またはバックスラッシュを引数に挿入するため，前に以下のようにバックスラッシュを置きます．

     @MACNAME {\\\{\}\,}

それは，引数\{},をMACNAMEに渡します(ほとんど確実にエラーを生成します)．

マクロが単一の引数を取るように定義されていて，カッコ無しで呼び出された場合，マクロ名の後の行の残り全体は引数として供給されます．例えば，以下のようになります．

     @macro bar {p}
     Twice: \p\ & \p\.
     @end macro
     @bar aah

以下を生成します．

     Twice: aah & aah.

マクロが単一の引数を取るように定義されていて，カッコ付で呼び出された場合，コンマにかかわらずカッコ付のテキストは引数として渡されます．例えば以下のようになります．

     @macro bar {p}
     Twice: \p\ & \p\.
     @end macro
     @bar{a,b}

以下を生成します．

     Twice: a,b & a,b.

マクロの詳細
======

TeXとmakeinfoのインプリメントでの避けられない相違のため， Texinfoマクロは以下の制限があります．

  * マクロは少なくとも1つのTeXグループに拡張されます．これは，@setと他のそのようなコマンドはマクロで効果がありません．

  * 条件文のような単独行となるコマンドを含むマクロは，行の中間で呼び出しできません．

  * TeXのインプリメントは，自然な方法でマクロを定義するマクロを構築できません．こうするためには，条件文と生のTeXを使用します．例えば以下のようにします．

          @ifinfo
          @macro ctor {name, arg}
          @macro \name\
          something involving \arg\ somehow
          @end macro
          @end macro
          @end ifinfo
          @tex
          \gdef\ctor#1{\ctorx#1,}
          \gdef\ctorx#1,#2,{\def#1{something involving #2 somehow}}
          @end tex

  * マクロ定義の中にコメントを避けることは最善です．

@alias NEW=EXISTING
===================

@aliasコマンドは，新しいコマンドを既存のものと同じように定義します．これは追加のマークアップ名の定義に便利で，このため出力結果が同じであっても，入力の意味論的な情報を維持します．

@aliasコマンドを単独行に書き，新しいコマンド名，等号，そして既存のコマンド名を続けてください．等号の周りの空白は無視されます．このようにします．

     @alias NEW = EXISTING

例えば，ドキュメントが本と他のメディア(例えば動画)の両方への引用を含んでいる場合，通常の@cite{}と同じことを行いますが，同じような余分な意味論的情報をもたらすマクロ@moviecite{}を定義したい可能性があります．このため以下のようにします．

     @alias moviecite = cite

気まぐれな引数の解析のため，マクロは常に同じ結果となるわけではありません．また，別名はマクロより定義が簡単です．そのため，コマンドは重複しません． (また，専門語ファイルで大量に使用されました!)

別名は，直接的や間接的に，再帰的してはいけません．

definfoenclose: 強調のカスタマイズ
=========================

@definfoencloseコマンドは，Infoのためで，TeXのためではない，強調コマンドの定義に使用される可能性があります．@definfoencloseで定義されたコマンドは，前後のテキストの文字列内の，それで囲んだテキストをマークします．Info出力のより近い制御を得るためこれを使用することもできます．

おそらく，Infoに対し@definfoencloseでコマンドを定義する場合， texinfo.tex，texinfo.cnfや，ドキュメントの@iftexの中でTeXに対し対応するコマンドを作成します．

@definfoencloseコマンドを1行で書き，コンマで区切られた3つの引数を続けてください．@definfoencloseの最初の引数は(@がない )@-コマンド名です．2番目の引数はInfoを開始するデリミタ文字列です．そして， 3番目の引数はInfoを終了するデリミタ文字列です．デリミタ文字列はスペースを含むことが可能です．開始と終了のデリミタは必須ではありません．開始デリミタが不要で，終了デリミタが欲しい場合，コマンド名で同じ行に2つのコンマを続ける必要があります．そうしない場合，Info書式化コマンドは，当然，終了デリミタ文字列を開始デリミタ文字列だと誤って解釈します．

(@emph，@strong，@tや，@iのように)前もって定義されているマクロ名で@definfoencloseする場合，囲まれた定義は組込み定義に優先されます．

囲みコマンドはカッコ内の1つの引数を取り，このように定義されます．これは，新しいマークアップコマンドを意図しています(see Marking Text)．

例えば，以下のように書くことができます．

     @definfoenclose phoo,//,\\

@phooの引数の前に`//'，後ろに`\\'を挿入するInfo書式化コマンドとして@phooを定義するために，Texinfoファイルの最初の方に書きます．そして，Infoで強調された`//bar\\'が必要な場所ならどこでも， @phoo{bar}を書くことができます．

同様にTeX書式化で以下のように書くことができます．

     @iftex
     @global@let@phoo=@i
     @end iftex

@phooをTeXに@phooの引数をイタリック対で植字させるコマンドとして@phooを定義します．

それぞれの定義は独自のフォーマッタに適用されることに注意してください．1つはTeXに対し，もう1つはtexinfo-format-bufferや texinfo-format-regionに対するものです．@definfoencloseコマンドは@ifinfo内に置く必要はありませんが，生のTeXコマンドは @iftex内に置く必要があります．

ここにもう1つの例があります．

     @definfoenclose headword, , :

@headwordの引数の前には何も置かず，後にコロンを挿入するInfo書式化コマンドとして@headwordを定義するために，ファイルの最初の方に書いてください．

@definfoenclose定義は，直接的または間接的に，再帰的にできません．

書式化とハードコピーの出力
*************

Texinfoファイルから印刷されたマニュアルを作るため，3つの主なシェルコマンドがあります．1つは，Texinfoファイルを印刷されるファイルに変換するもので， 2つ目は索引をソートするもので，3つ目は書式化されたドキュメントを印刷するものです．シェルコマンドを使うとき，オペレーティングシステムのシェルで直接実行したり，GNU Emacs内部のシェルで実行したりできます．

GNU Emacsを使う場合，シェルコマンドの代わりにTexinfoモードで供給されるコマンドを使うことができます．ファイルを書式化したり，索引をソートしたり，結果を印刷したりする3つのコマンドの加え，Texinfoモードは，出力バッファを更新したり，印刷のキューを表示したり，印刷キューからジョブを削除したりするコマンドに対するキーバインドを提案します．

TeXの使用
======

TeXと呼ばれる植字プログラムは，Texinfoファイルの書式化に使用します． TeXは非常に強力な植字プログラムで，正しく使用すると，非常に良い仕事をします．(TeXの入手方法の詳細は，see How to Obtain TeX.)

makeinfo，texinfo-format-regionと， texinfo-format-bufferコマンドは，TeXのように，Texinfoファイルの @-コマンドを，全く同じように読み込みますが，Infoファイルの作成とは異なる処理を行います(see Creating an Info File)．

texとtexindexでの書式化
=================

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

     tex foo.texi

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

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

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

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

     texindex foo.??

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

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

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

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

要約すると，これは5ステップの処理です．

 1. Texinfoファイルでtexを実行してください．これは(相互参照が定義されておらず，索引のない)DVIファイルと，(2文字の拡張子を持つ)生の索引ファイルを生成します．

 2. 生の索引ファイルでtexindexを実行してください．これで，適切にソートされた(3文字の拡張子の)索引ファイルを生成します．

 3. texを再びTexinfoファイルで実行してください．これでDVIファイルを生成し，索引と定義された相互参照はこのとき再生成しますが，相互参照のページ番号は一般に正しくないので最後に再生成します．

 4. texindexで再び索引をソートしてください．

 5. texを最後に1度実行してください．このとき相互参照に対し，正しいページ番号を書き出します．

代わりに1ステップで処理します．texi2dvi(see Format with texi2dvi)を実行してください．

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

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

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

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

texi2dviでの書式化
=============

texi2dviコマンドは，自動的にtexとtexindexの両方を，ソートされた索引や相互参照が解決されているDVIファイルを生成するのに必要な回数実行します．それは，前のセクションで記述された， tex---texindex---tex---texの順番で単純化されています．

入力ファイルfoo.texiでtexi2dviを実行するため，以下のようにしてください(prompt$ はシェルプロンプトです)．

     prompt$ texi2dvi foo.texi

この例を見ると，texi2dviの入力ファイル名は(.texi， .texinfo等の)拡張子を含む必要があります．MS-DOSやおそらく他の環境で，オペレーティングシステムがシェルでtexi2dviスクリプトを呼び出すことを期待する代わりに，sh texi2dvi foo.texiを実行する必要がある可能性があります．

おそらく，texi2dviの最も役に立つオプションは， --texinfo=CMDです．これは，TeXを実行する前の一時的な入力ファイルのコピーで，@setfilenameの行の後にCMDを単独行で挿入します．こうすることで， @smallbook(see smallbook)， @afourpaper(see A4 Paper)や， @pageparams(see pagesizes)のように，異なる印刷書式を，実際にドキュメントソースを変更することなく指定できます．(texinfo.cnfで，サイト全体に対しこうすることもできます．see Preparing for TeX.)

他のオプションのリストは，texi2dvi --helpを実行してください．

lpr -dを使用したシェル印刷
================

DVIファイルを印刷する正確なコマンドは，システムインストールの状態に依存しますが，lpr -dが普通です．コマンドは，拡張子無しまたは.dvi拡張子付のDVIファイル名を要求するかもしれません．(lprの場合， .dviを含める必要があります．)

例えば，以下のコマンドは，(おそらく)Bison Manualの索引のソート，書式化と，印刷に十分でしょう．

     tex bison.texinfo
     texindex bison.??
     tex bison.texinfo
     lpr -d bison.dvi

(シェルコマンドはサイトにより異なる可能性があることを覚えておいてください．しかし，これらは通常使われるバージョンです．)

texi2dviシェルスクリプトを使うと，以下のように簡単に入力できます．

     texi2dvi bison.texinfo
     lpr -d bison.dvi

lprは，Unixシステムの標準的なプログラムですが，通常， MS-DOS/MS-Windowsにはありません．ネットワークパッケージにlprという名のプログラムが付属していることもありますが，これらは通常，ネットワーク上のプリントサーバにファイルを送ることに制限されていて，一般に，-dオプションはサポートされていません．不幸にも，これらのシステム1つで，十分仕事をしたい場合，DVIファイルを印刷する代わりの方法があります．

  * Unixのようなlprプログラムや，そのクローンを見つけてインストールしてください．そうする場合，DVIファイルを上記のようなスクリプトで印刷できます．

  * DVIファイルをDVIファイルのネットワークプリンタのキューに送ってください．ネットワークプリンタは，DVIファイルを印刷する特別なキューを持つものもあります．キューにファイルを送るため，ネットワークソフトウェアをセットアップ可能なはずです．場合によっては，ネットワークソフトウェア付属のlprのバージョンが，特別のキューにファイルを送るため，以下のような特別なオプションがあります．

          lpr -Qdvi -hprint.server.domain bison.dvi

  * DVIファイルをPostscriptやPCLファイルに変換し，ローカルプリンタに送ってください．これらのツールの記述の詳細は，see dvips invocation (Dvips).  そして，dviljのmanページを参照してください．DVIファイルをローカルプリンタが直接理解できる書式に変換してから，通常はPRNである適切なポートそれを送ってください．

Emacsシェルからの実行
=============

書式化と印刷のコマンドをGNU Emacs内部のシェルから与えることができます． Emacs内部のシェルを作成するため，M-x shellを入力してください．このシェルでドキュメントの書式化と印刷が可能です．詳細は，see Format and Print Hardcopy.

texを実行しているシェルバッファへ(から)切替えて，他を編集することが可能です．遅いマシンで長いドキュメントを書式化する場合，これは大変便利です．

texi2dviをEmacsシェルから実行することもできます．例えば，Emacsの内部シェルから，Using and Porting GNU CCを書式化し印刷する， texi2dviの使用法がここにあります．

     texi2dvi gcc.texinfo
     lpr -d gcc.dvi

Texinfoモードでの書式化と印刷に関する詳細は，see Texinfo Mode Printing.

Texinfoモードでの書式化と印刷
==================

Texinfoモードは，TeXの書式化と印刷のための前もって定義されたキーコマンドをいくつか供給します．これらは，索引のソート，プリンタキューを見ること，書式化ジョブの停止と，オペレーションが発生させているバッファの表示の更新のコマンドを含みます．

C-c C-t C-b
M-x texinfo-tex-buffer
     現在のバッファでtexi2dviを実行します．

C-c C-t C-r
M-x texinfo-tex-region
     現在の領域でTeXを実行します．

C-c C-t C-i
M-x texinfo-texindex
     texinfo-tex-regionで書式化されたTexinfoファイルの索引をソートします．

C-c C-t C-p
M-x texinfo-tex-print
     texinfo-tex-regionやtexinfo-tex-bufferで作成されたDVIファイルを印刷します．

C-c C-t C-q
M-x tex-show-print-queue
     プリントキューを表示します．

C-c C-t C-d
M-x texinfo-delete-from-print-queue
     プリントキューからジョブを削除します．前もってC-c C-t C-qコマンド (texinfo-show-tex-print-queue)で調べたジョブ番号の入力を促されます．

C-c C-t C-k
M-x tex-kill-job
     現在実行している，texinfo-tex-regionやtexinfo-tex-bufferで開始されたTeXジョブや，Texinfoシェルバッファで実行している他のあらゆるプロセスを停止します．

C-c C-t C-x
M-x texinfo-quit-job
     xを送られて，エラーで停止した書式化のジョブを終了します．こうするとき，TeXは行ったことの記録を.logファイルに維持します．

C-c C-t C-l
M-x tex-recenter-output-buffer
     TeXの印刷と書式化コマンドを実行しているシェルバッファを，最新出力を表示させるため再表示します．

このように，バッファを書式化するコマンドの通常の順序は，以下のようになります(右はコメントです)．

     C-c C-t C-b             バッファでtexi2dviを実行．
     C-c C-t C-p             DVIファイルを印刷．
     C-c C-t C-q             プリンタキューの表示．

TexinfoモードのTeX書式化コマンドは，*tex-shell*と呼ばれるEmacsのサブシェルを開始します．texinfo-tex-command， texinfo-texindex-commandと，tex-dvi-print-commandコマンドは，全てこのシェルで実行されます．

コマンドオペレーションを*tex-shell*バッファで見ることができ，他のあらゆるシェルバッファで行うように，*tex-shell*バッファに/から切替えて使用することができます．

書式化と印刷コマンドは，いくつかの変数の値に依存します．デフォルト値は以下のとおりです．

          Variable                              Default value

     texinfo-texi2dvi-command                  "texi2dvi"
     texinfo-tex-command                       "tex"
     texinfo-texindex-command                  "texindex"
     texinfo-delete-from-print-queue-command   "lprm"
     texinfo-tex-trailer                       "@bye"
     tex-start-of-header                       "%**start"
     tex-end-of-header                         "%**end"
     tex-dvi-print-command                     "lpr -d"
     tex-show-queue-command                    "lpq"

これらの変数の値を，M-x edit-optionsコマンド(see Editing Variable Values (The GNU Emacs Manual))の使用や， M-x set-variableコマンド(see Examining and Setting Variables (The GNU Emacs Manual))の使用や，.emacs初期化ファイル(see Init File (The GNU Emacs Manual))を使用して，変更できます．

バージョン20から始まる，GNU Emacsは，カスタマイズと呼ばれる，ユーザーフレンドりーなインターフェースを提供していて，それはユーザー定義可能な変数の値を変えるためのものです．詳細は，see Easy Customization Interface (The GNU Emacs Manual).  Texinfo変数は， M-x customizeコマンドで呼び出すと，Development/Docs/Texinfoグループで見つかります．

ローカル変数リストの使用
============

TeX書式化コマンドをTexinfoファイルに適用するための，更にもう1つの方法は， Texinfoファイルの終りで，ローカル変数リストにそれらのコマンドを置く方法です．texやtexi2dviコマンドをcompile-commandのコマンドとして指定し，M-x compileの入力でEmacsに実行させることができます．これで*compilation*バッファと呼ばれる特別なシェルを作成し，その中でEmacsはコンパイルコマンドを実行します．例えば，gdb.texinfoファイルの終りに，@byeの後で，以下を置くことができます．

     Local Variables:
     compile-command: "texi2dvi gdb.texinfo"
     End:

この手法は，この方法でプログラムをコンパイルするプログラマが，最もよく使用します．Compilation (The GNU Emacs Manual),を参照してください．

TeX書式化の要求の要約
============

TeXに入力される，全てのTexinfoファイルは，\inputコマンドで始まり， @setfilenameコマンドを含む必要があります．

     \input texinfo
     @setfilename ARG-NOT-USED-BY-TEX

最初のコマンドは，TeXにTexinfoファイルの処理に必要なマクロをロードするよう指示し，2番目のコマンドは補助ファイルを開きます．

全てのTexinfoファイルは，TeXの処理を終了し，未完成のページを強制排出する行で終る必要があります．

     @bye

厳密にいうと，これらの行は全てのTexinfoファイルを，TeXで成功裏に処理するため必要な全てです．

しかし通常は，最初に印刷されたマニュアルのタイトルを定義する @settitleコマンド，@setchapternewpageコマンド，タイトルページ，著作権ページと，許可を含みます．@byeの他に，ファイルの終りは通常，索引と目次を含みます．(そして，もちろんほとんどのマニュアルは本文も同様に含みます．)

詳細は，以下を参照してください．

  * @settitle.

  * @setchapternewpage.

  * Page Headings.

  * Titlepage & Copyright Page.

  * Printing Indices & Menus.

  * Contents.

TeXに対する準備
=========

TeXは，ファイルの最初の行の\input texinfoコマンドで，入力と指定されたtexinfo.texファイルを探す場所を知る必要があります． texinfo.texは，TeXに@-コマンドの処理方法を伝えます．それは，全ての標準的なGNU配布物に含まれています．

通常，texinfo.texファイルは，GNU Emacsや他のGNUソフトウェアがインストールされたとき，TeXマクロを含めるデフォルトディレクトリ(デフォルトで /usr/local/share/texmf/tex/texinfo/texinfo.tex)に置かれています．この場合，TeXはファイルを見つけ，特別なことをする必要はありません．代わりに，TeXを実行するとき，texinfo.texを現在のディレクトリに置くことができ，TeXはそこで見つけます．

同様に，他の配布物からまだインストールされていない場合，epsf.tex をtexinfo.texと同じ場所にインストールすべきです．このファイルは， @imageコマンドのサポートに必要です(see Images)．

更に，追加ファイルtexinfo.cnfを作成し，同様にインストールすることもできます．このファイルは，@setfilenameコマンド (see @setfilename)が実行されたとき，TeXに読み込まれます．ローカルサイトの慣習で，好みのあらゆるコマンドをそこに置くことができます．それらは，TeXがTexinfoドキュメントを処理しているとき読み込まれます．例えば，texinfo.cnfが@afourpaperを含む場合 (see A4 Paper)，全てのTexinfoドキュメントは，実際にそのページサイズで処理されます．texinfo.cnfに何も置かない場合，それを作る必要はありません．

上記の場所のこれらのシステムファイルが十分でない場合，明示的にディレクトリを指定することができます．texinfo.texに対し，\inputコマンドの後に完全なファイルパスを書くことで可能となります．texinfo.texと texinfo.cnf(とその他のTeXが読み込むもの)の両方を働かせるもう1つの方法は，TEXINPUTS環境変数を.cshrcや.profileファイルでセットすることです．

.cshrcまたは.profileのどちらを使用するかは，Bourneシェル互換 (sh，bash，ksh，...)，またはCシェル互換 (csh，tcsh)のコマンドインタプリタのどちらを使用しているかに依存します．後者は，.cshrcを初期化情報として読み込み，前者は .profileを読み込みます．

.cshrcファイルで，以下のcshコマンド列を使用します．

     setenv TEXINPUTS .:/home/me/mylib:/usr/lib/tex/macros

.profileファイルで，以下のshコマンド列を使用します．

     TEXINPUTS=.:/home/me/mylib:/usr/lib/tex/macros
     export TEXINPUTS

MS-DOS/MS-Windowsで，以下のようにします (これらのシステムで，ディレクトリセパレータは，:の代わりに;文字を使用することに注意してください．)．

     set TEXINPUTS=.;d:/home/me/mylib;c:/usr/lib/tex/macros

DOS／Windowsユーザーは，autoexec.batファイルやWindowsレジストリに，そのようなコマンドを慣習で置きます．

これらのセッティングで，TeXは\inputファイルを，最初に. で示される現在のディレクトリで探し，それから，仮にユーザーの me/mylibディレクトリで探し，最後にシステムディレクトリ /usr/lib/tex/macrosで探します．

最終的に，TeXがTexinfoをより速くロードできるように，.fmtファイルのダンプを望むかもしれません(see Memory dumps (Web2c))． (texinfo.texの更新は再ダンプを要求するので不利になります．) epsf.texがTeXで検索可能だという仮定で，以下のコマンドを実行することでできます．

     initex texinfo @dump

(@dumpはTeXプリミティブです．)texinfo.fmtを.fmtが見つかる場所に移動する必要があります．一般に，これは，TeXをインストールしたサブディレクトリweb2cにあり，例えば， /usr/local/share/tex/web2cです．

Overfull ``hboxes''
===================

TeXは，右のマージンまで拡張しなければ，行を植字できないときもあります．これは，電子メールのネットワークアドレスや，非常に長いタイトルのように，ハイフネーションできない長い単語とTeXが解釈したとき生じます．これが生じたとき，TeXは，以下のようなエラーメッセージを出力します．

     Overfull @hbox (20.76302pt too wide)

(TeXでは，行は``水平ボックス''にあるので，``hbox''と言う言葉です． @hboxはTeXプリミティブで，Texinfo言語では必要ありません．)

TeXは，Texinfoソースファイルでの行番号と，違反している行のテキストを供給(表示)し，それにはハイフネーションだと考えられる全ての位置に印があります．植字エラーの詳細は，see Catching Errors with TeX Formatting.

Texinfoファイルに``overfull hbox''がある場合，文章をoverfull hboxが生じないように書き直すことも，そのままにすることもできます．小さな右のマージンへのはみ出しは余り問題とならず，目立たない可能性もあります．

overfull boxesが多く，書き直しに抵抗がある場合，TeXで可能なinterword空間を大きく増加させることができ，そして(運が良ければ)，以下のようにすることで，多くの悪い行の分割を避けるでしょう．

     @tex
     \global\emergencystretch = .9\hsize
     @end tex

(必要なだけ分数を調節できます．)この\emergencystretchに対する大きな値で，植字の出力は，一般に，目立って品質が低下するので，デフォルトではありません．デフォルト値は.15\hsizeです．\hsizeは，現在の行の幅を含むTeXの寸法です．

しかし，そうしない場合，存在するoverfull boxesに対し，TeXは，大きく醜い overfull hboxを含む黒い長方形を行の端に印刷します．ドラフトを修正する場合，これで問題の場所に気づくでしょう．

そのような奇形物が，最終的な出力物に結び付くのを阻止するため，Texinfoファイルの最初に，@titlepageコマンドの前に，単独行で以下を書いてください．

     @finalout

小さな本の印刷
=======

デフォルトで，TeXは，8.5x11インチの書式で印刷するためページに植字します．しかし，以下のコマンドを，単独行で，タイトルページの前に，Texinfoファイルの最初に挿入することで，製本に適した7x9.25インチの書式TeXに命令できます．

     @smallbook

(多くの本はたいてい7x9.25インチなので，このコマンドは， @regularbooksizeコマンドと呼ぶ方が良いかもしれませんが，8.5x11インチの書式と比較して，@smallbookコマンドと呼ばれるようになりました． )

@smallbookコマンドをstart-of-headerとend-of-header行の間に書く場合， TexinfoモードのTeXの領域書式化コマンド，texinfo-tex-regionは， ``小さな''本のサイズに領域を書式化します(see Start of Header)．

より小さなマニュアルを簡単に作成するコマンドの例の情報は，see small.

ソースファイルを変更せず@smallbook書式を行う方法は，see Format with texi2dvi.  またPreparing for TeX,を参照してください．

A4用紙の印刷
=======

ヨーロッパサイズのA4用紙に印刷するためのドキュメントの書式化を， @afourpaperコマンドでTeX伝えることができます．Texinfoファイルの最初付近にタイトルページの前で，単独行でコマンドを書いてください．例えば，このマニュアルのヘッダに書く方法は以下のようになります．

     \input texinfo    @c -*-texinfo-*-
     @c %**start of header
     @setfilename texinfo
     @settitle Texinfo
     @afourpaper
     @c %**end of header

ソースファイルを変更せず@afourpaper書式を行う方法は， see Format with texi2dvi.  またPreparing for TeX,を参照してください．

コマンド@afourlatexの結果の書式化の方がいいかも，またはそうでないかもしれません．A4用紙での幅広の書式のため，@afourwideもあります．

@pagesizes [WIDTH][, HEIGHT]:カスタムページサイズ
=======================================

ページの主なテキストの領域の高さと(オプションで)幅を，@pagesizesコマンドで明示的に指定できます．Texinfoの最初付近で，タイトルページの前に，単独行で書いてください．最初が高さで，要求があれば幅を，カンマで区切って書きます．以下が例です．

     @pagesizes 200mm,150mm

そして，

     @pagesizes 11.5in

これは，B5サイズの用紙への印刷に対し妥当です．強調しますが，このコマンドはテキストエリアを指定するコマンドで，用紙サイズを指定しません (250mmx177mmはB5で，14inx8.5inはleagalです)．

ページのマージンを変更するような，より精密な変更のため， texinfo.tex(または，texinfo.cnfsee Preparing for TeX)で新しいコマンドを定義する必要があります．

ソースファイルを変更せず@pagesizesを指定する方法は，see Format with texi2dvi.  またPreparing for TeX,を参照してください．

@pagesizesはmakeinfoでは無視されます．

断裁トンボと拡大
========

@cropmarksコマンドで，TeXに，ページの角に断裁トンボを印刷させ (てみ)ることができます．タイトルページの前で，Texinfoファイルの最初の方に， @iftexと@end iftex行の間に，@cropmarksコマンドを単独行で，以下のように書いてください．

     @iftex
     @cropmarks
     @end iftex

このコマンドは主に，プリンタが複数ページを1枚のフィルムシートに植字するためのものですが，@smallbookコマンドで，7x9.25インチにセットした本の四隅に印を付けてみることもできます．(通常の大きさの用紙に印刷する，通常の大きさの出力に対し，プリンタは断裁トンボを生成しません．)異なる印刷機は，異なる方法で動作するので，冒険心でこのコマンドを使ってみるべきです． texinfo.texにコマンドを再定義する必要があるかも知れません．

\magというTeXコマンドで，通常より大きいまたは小さいページに TeXに植字させ(てみ)ることができます．植字される全てのものは，相対的に大きくまたは小さく大きさを調整されます．(\magは``magnification(拡大 )''を意味します．)これは，Texinfoの@-コマンドではありませんが，バックスラッシュを前置した，普通のTeXコマンドです．このコマンドは， @texと@end texの間に書く必要があります(see Raw Formatter Commands)．

=と数字が付いている，以下の\magコマンドは，希望する倍率の 1000倍です．例えば，通常サイズの1.2倍に印刷するため，タイトルページの前で， Texinfoファイルの最初の方に以下のように書いてください．

     @tex
     \mag=1200
     @end tex

印刷技術によっては，印刷店に通常より大きなマスターを与えることで，より良く見える通常サイズのコピーを印刷できます．彼らはそれにより，効率的に解像度をあげ，縮小します．

システムによっては，標準でない\magを使用したDVIファイルは，印刷できなかったり，特定の拡大率でしか印刷できなかったりします．試してみたください．

PDF出力
=====

普通のtexの代わりに，ファイルを処理するpdftexプログラムを使うと，TexinfoソースファイルからPDF出力ファイルを生成することができます．tex foo.texiの代わりにpdftex foo.texiを実行するか， texi2dviに--pdfオプションを与えてください．

PDFはPortable Document Format(移植可能な文書の書式)を意味し，アドビシステムズで開発されました． file format definition (http://www.adobe.com/prodindex/acrobat/adobepdf.html)は，自由に利用可能で，X Window systemでは， free viewer (http://www.foolabs.com/xpdf/)も同様です．PDFは，バイナリ形式なので，他の出力形式から予想される@ifpdfや@pdfコマンドはありません．

名前に`portable'があるにもかかわらず，PDFファイルは，普通のASCII形式の (InfoやHTMLや)Texinfoがサポートする程，実際には移植性がありません(DVIと比較した移植性は，議論の余地があります)．それらは，かなり大きくなる傾向があり，TeXで(デフォルトで)非常に良く使われているビットマップフォントをサポートしません．それにもかかわらず，PDFファイルは画面上に実際に印刷されたドキュメントを，HTMLと異なり，できる限り忠実に維持するので地位を保っています．

TexinfoのPDFサポートはかなり基本的です．

Infoファイルの作成とインストール
******************

この章は，Infoファイルの作成とインストール方法を述べます．ファイルの書式自身の一般的な情報は，see Info Files.

Infoファイルの作成
===========

makeinfoは，TexinfoファイルをInfoファイル，HTMLファイルや，プレーンテキストに変換するプログラムです．texinfo-format-regionと， texinfo-format-bufferは，TexinfoをInfoに変換する，GNU Emacsの関数です．

InfoファイルをInfoシステムにインストールする情報は，see Install an Info File．

makeinfoの利点
-----------

makeinfoユーティリティは，Emacs書式化コマンドより速く，TexinfoソースファイルからInfoファイルを作成し，より良いエラーメッセージを供給します．我々はそれを勧めます．makeinfoはEmacsと独立したCプログラムです． makeinfoを使うためEmacsを実行する必要はなく，それは，Emacsを実行するには余りに小さいマシンで，makeinfoを実行できることを意味します． makeinfoは，3つの内の1つの方法で実行できます．それらは，オペレーティングシステムのシェルから，Emacsのシェルからや，EmacsのTexinfoモードで， C-c C-m C-rやC-c C-m C-bコマンドを入力する方法です．

texinfo-format-regionとtexinfo-format-bufferコマンドは， makeinfoを実行できないとき役に立ちます．また，状況によって，短い領域やバッファを，makeinfoより速く書式化します．

シェルからmakeinfoを実行する
------------------

TexinfoファイルからInfoファイルを作成するため，makeinfoに続けて， Texinfoファイルの名前を入力してください．このように，BisonのInfoファイルを作成するため，シェルで，以下のように入力します．

     makeinfo bison.texinfo

(M-x shellの入力で，Emacs内部でシェルを実行できます．)

オプションを指定したい場合もあります．例えば，使っているmakeinfoのバージョンを知りたい場合，以下を入力してください．

     makeinfo --version

詳細は，see makeinfo options.

makeinfoのオプション
--------------

makeinfoコマンドは，いくつかのオプションをとります．最も良く使われるオプションは，一行の文字数の値をセットするためと，脚注スタイルを指定するために使用するものです．それぞれのコマンド行のオプションは，--を前に置いた単語，または，-を前に置いた文字です．長いオプション名は，唯一に決まる程長い場合は省略可能です．

例えば以下のシェルコマンドで，それそれの行の文字列を68文字で補充します， bison.texinfoのためのInfoファイルを作ることができます．

     makeinfo --fill-column=68 bison.texinfo

2つ以上のオプションを，以下のように続けて書くことができます．

     makeinfo --no-split --fill-column=70 ...

これは，Infoファイルを，1つの，おそらく大変長いファイルにまとめ，一行の文字数を70文字にセットします．

オプションは，以下のとおりです．

-D VAR
     変数VARを定義します．これは，Texinfoファイルでの@set VARと同じです(see set clear value)．

--commands-in-node-names
     ノード名で@コマンドを許可します．おそらくTeXで実装できないので，推奨しません．また，makeinfoも非常に遅くなります．また，このオプションは--no-validateを使うと無視されます．詳細は，see Pointer Validation.

--error-limit=LIMIT
-e LIMIT
     終了までにmakeinfoが報告するエラーの数の最大値をセットします(続けても意味が無いでしょう)．デフォルトは100です．

--fill-column=WIDTH
-f WIDTH
     1行の最大文字数を指定します．これは行の右端です．おそらくこの幅で補充するでしょう．(補充とは，行を補充し，指定した数と同じまたはそれより短い長さにするため，行を切ったり繋げたりする処理です．行は単語で切られます．)デフォルト値は72です．--htmlでは無視されます．

--footnote-style=STYLE
-s STYLE
     脚注の形式をSTYLEにセットします．ノードの終りの形式のための end，または，ノードを分ける形式のseparateのいずれかです．このオプションでセットした値は，Texinfoファイルで，@footnotestyleコマンド(see Footnotes)でセットした値に優先します．脚注形式が separateのとき，makeinfoは，現在のノードで見つかった脚注を含む新しいノードを作成します．脚注形式がendのとき，makeinfoは，現在のノードの終りに脚注の参照を置きます．--htmlでは無視されます．

--force
-F
     通常，入力ファイルにエラーがある場合，出力ファイルは作成されません．このオプションを用いると，出力ファイルは提供されます．

--help
-h
     利用可能なオプションをリストアップした使用方法のメッセージを出力し，正しく終了します．

--html
     Infoではなく，HTML出力物を生成します．See makeinfo html.

-I DIR
     @includeコマンドを使ってインクルードしているファイルを見つけるためのディレクトリ検索リストに，DIRを追加します．デフォルトで， makeinfoは，カレントディレクトリのみを探します．DIRが与えられない場合，カレントディレクトリ.が追加されます．DIRでは，通常のパスを分ける文字(Unixの:，MS-DOS/MS-Windowsの;)で分けられた，複数のディレクトリのリストを，実際に使うことができることに，注意してください．

--macro-expand=FILE
-E FILE
     指名されたファイルで拡張された，全てのマクロを含むTexinfoソースを出力します．通常，マクロ拡張の結果は，makeinfo内部で使われ削除されます．このオプションは，@macroをサポートしていない，古いバージョンの texinfo.texを使っている場合に，texi2dviで使われます．

--no-headers
     Info出力に対し，出力にメニューやノード行を含めず，(--outputが指定されていない場合)標準出力に書き出します．これは結果として，必要なノードやメニューが含まれていないため，Infoで読めないASCIIファイルになります． INSTALLファイルのように，配布物に含まれる分けられたファイルに，マニュアルの一部を展開するため特に役に立ちます．

     HTML出力に対し，--no-splitも指定している場合，それぞれのノードのトップへのナビゲーションリンクは含めないでください．See makeinfo html.

--no-split
     makeinfoでの，分割ステージを抑制します．デフォルトで，大きな出力ファイル(70kバイトより大きいサイズ)はより小さいサブファイルに分割されます． Info出力に対しそれぞれ約50kバイトになります．HTML出力に対し，それぞれのファイルは1つのノードを含みます(see makeinfo html)．

--no-pointer-validate
--no-validate
     makeinfoのポインタの有効化のステージを抑制します．これは， @novalidateコマンドでもできます(see Use TeX)．通常はTexinfoファイルが処理された後，相互参照が解決されていることを確かめるなどのため，一貫性の調査が行われます．See Pointer Validation.

--no-warn
     警告メッセージ(エラーメッセージではない)を抑制します．作成したファイルに，Texinfoの相互参照の例がある場合と，実際には存在しないノードの参照がある場合に使うかもしれません．

--number-sections
     印刷されたマニュアルでの，章，セクションと，付録の番号を出力します．

--no-number-footnotes
     自動的な脚注への番号付けを抑制します．デフォルトでmakeinfoは，単一ノード内のそれぞれの脚注に順番に番号付けを行い，それぞれのノードの開始時に，現在の脚注番号を1にリセットします．

--output=FILE
-o FILE
     出力を，Texinfoソースで見つかる@setfilenameコマンドで指定したファイル名ではなく，FILEに指定します(see setfilename)． FILEが-の場合は出力は標準出力になり，--no-splitが暗黙に指定されます．分けられたHTML出力で，FILEはトップノードの出力ファイル名になります(see makeinfo html)．

-P DIR
     @includeに対するディレクトリ検索リストの前に，DIRを追加します．DIRが与えられない場合，カレントディレクトリ.が前に追加されます．詳細は-Iを参照してください．

--paragraph-indent=INDENT
-p INDENT
     段落の字下げ形式をINDENTにセットします．このオプションでセットした値は，Texinfoファイルで@paragraphindentコマンドでセットした値に優先します(see paragraphindent)．INDENTの値は，以下のように解釈されます．

     asis
          段落の開始で，あらゆる字下げを保存します．

     0 or none
          既存の字下げを削除します．

     NUM
          それぞれの段落を，NUM個の空白で字下げします．

--reference-limit=LIMIT
-r LIMIT
     makeinfoが警告の報告無しで作成するノード参照の数字の値をセットします．ノードがこの数字以上の参照がある場合，makeinfoは参照を作成しますが警告を報告します．デフォルトは1000です．

-U VAR
     VARを未定義にします．これは，Texinfoファイルでの@clear VARと同じです(see set clear value)．

--verbose
     makeinfoに，行っていることのメッセージを表示させます．通常 makeinfoは，エラーや警告がある場合のみメッセージを出力します．

--version
-V
     バージョンナンバーを出力し，正しく終了します．

ポインタの一貫性
--------

--no-validateオプションや，ソースファイルでの@novalidateコマンド(see Use TeX)で，ポインタの一貫性を抑制しない場合， makeinfoは，最終的なInfoファイルの一貫性を調べます．ほとんど，これは，参照したノードが本当に存在していることを確かめることを意味します．ここに調べるものの完全なリストがあります．

 1. `Next'，`Previous'や，`Up'ノードの参照が現在のファイルのノードへの参照で， (dir)のような外部での参照ではない場合，参照されるノードは存在するはずです．

 2. 全てのノードで，`Previous'ノードが`Up'ノードと異なる場合，`Previous'フィールドで指し示すノードは，このノードへ戻る`Next'フィールドがあるはずです．

 3. `Top'ノード以外の全てのノードは，`Up'ポインタがあるはずです．

 4. `Up'ポインタで参照されるノードは，`Up'で参照されるノードが`(FILE)'でない限り，現在のノードのメニュー項目にそれ自身の参照があるはずです．

 5. ノードの`Next'の参照が，`Up'の参照の`Next'の参照と同じでない場合，`Next'ポインタで参照されるノードは，現在のノードに戻る`Previous'ポインタがあるはずです．この規則は，次の章の最初のノードを指し示すため，セクションの最後のノードを許可します．

 6. `Top'以外の全てのノードは，`Previous'や`Next'のリンクや，メニューや相互参照による，少なくとも1つの他のノードからの参照があるべきです．

Texinfoドキュメントには，ノード定義で@valueと @definfoencloseのようなコマンドを使用したり，矛盾した相互参照のため，一貫性のフェーズで失敗するものもあります．以下の例を考えます．

     @set nodename Node 1

     @node @value{nodename}, Node 2, Top, Top

     これは，ノード1です．

     @node Node 2, , Node 1, Top

     これは，ノード2です．

ここで，ノード``Node 1''はその単語と@valueの両方で参照されます．

デフォルトで，ノード名が出力ファイルに書かれるまで完全に展開されないので，そのような場合，makeinfoは失敗します．常に一貫してノード参照するべきです．例えば上の例では，2番目の@node行でも，@valueがあるべきです．しかし，理由があって矛盾したノード名の参照をする必要があり，makeinfoがファイルの有効化に失敗した場合，makeinfoがドキュメントで見つかる全てのノード名の負荷の高い展開の実行をするよう， --commands-in-node-namesオプションを使うことができます．しかしこれは，プログラムがかなり遅くなります．変換時の2重の増加が，Jargonファイルのような大きなファイルで測定されました．

@nodeディレクティブでの@-コマンドのサポートは，自由に使える程一般に十分ではありません．例えば上の例で，ドキュメントのどこかで nodenameが再定義される場合，たとえ--commands-in-node-namesをオプションを呼び出していてもmakeinfoは変換に失敗します．

--no-validateが与えられた場合，--commands-in-node-namesは効果がありません．

Emacsでmakeinfoの実行
-----------------

makeinfo-regionやmakeinfo-bufferコマンドを使うと，GNU Emacs Texinfoモードでmakeinfoを実行できます．Texinfoモードでは，コマンドはデフォルトで，C-c C-m C-rとC-c C-m C-bにバインドされています．

C-c C-m C-r
M-x makeinfo-region
     現在の領域をInfoに書式化します．

C-c C-m C-b
M-x makeinfo-buffer
     現在のバッファをInfoに書式化します．

makeinfo-regionやmakeinfo-bufferを呼び出すとき，Emacsはファイル名のためプロンプトを出し，デフォルトとして訪問されたファイルの名前を提示します．希望があれば，makeinfo処理を始めるRETを押す前に，ミニバッファのデフォルトファイル名を編集できます．

Emacsのmakeinfo-regionとmakeinfo-bufferコマンドは，一時的なシェルバッファで，makeinfoプログラムを実行します．makeinfoがエラーを見つけた場合，Emacsはエラーメッセージを一時的なバッファに表示します．

C-x `(next-error)の入力で，エラーメッセージを解析できます．これでEmacsは，makeinfoがエラーとしたTexinfoソースの行にカーソルを移動します．next-errorコマンドの使用の詳細は，see Running make or Compilers Generally (The GNU Emacs Manual).

さらに，makeinfoコマンドを実行しているシェルを殺したり，シェルバッファに最新の出力を表示させたりできます．

C-c C-m C-k
M-x makeinfo-kill-job
     (makeinfo-regionやmakeinfo-bufferから)makeinfoを実行している，現在のジョブを殺します．

C-c C-m C-l
M-x makeinfo-recenter-output-buffer
     最新の出力を表示するため，makeinfoシェルバッファを再表示します．

(TeXジョブを殺したり再表示したりする類似のコマンドが，C-c C-t C-kとC-c C-t C-lだと言うことに注意してください．See Texinfo Mode Printing.)

M-x edit-optionsやM-x set-variableコマンドで makeinfo-options変数をセットすることや，.emacs初期化ファイルで変数をセットすることで，makeinfoに対するオプションを指定できます．

例えば，以下のように.emacsファイルに書きます．

     (setq makeinfo-options
           "--paragraph-indent=0 --no-split
            --fill-column=70 --verbose")

詳細は，
 Editing Variable Values (The GNU Emacs Manual)，
 Examining and Setting Variables (The GNU Emacs Manual)，
 Init File (The GNU Emacs Manual),と
 Options for makeinfo, を参照してください．

texinfo-format...コマンド
---------------------

GNU EmacsのTexinfoモードで，texinfo-format-regionコマンドを使って， Texinfoファイルの一部または全体を書式化できます．これは，現在の領域を書式化し，*Info Region*と呼ばれる一時的なバッファに書式化されたテキストを表示します．

同様に，texinfo-format-bufferコマンドでバッファを書式化します．このコマンドは新しいバッファを作成し，その中にInfoファイルを生成します． C-x C-sと入力すると，Texinfoの最初の方の@setfilename行で指定された名前でInfoファイルを保存します．

C-c C-e C-r
texinfo-format-region
     現在の領域をInfoに書式化します．

C-c C-e C-b
texinfo-format-buffer
     現在のバッファをInfoに書式化します．

texinfo-format-regionとtexinfo-format-bufferコマンドは，いくつかのエラー調査を提供し，他の関数は，書式化のエラーを見つけるそれ以上の助けとなるものを提供するはずです．これらの手続きは付録で記述されています．Catching Mistakes,を参照してください．しかし，makeinfo プログラムはより速い場合が多く，より多くのエラーチェックを提供します (see makeinfo in Emacs)．

書式化のバッチ処理
---------

batch-texinfo-formatとEmacsバッチモードを使って，Texinfoファイルを Infoファイルに書式化できます．Emacsの内部シェルを含む，あらゆるシェルからバッチモードでEmacsを実行できます．(see Command Line Switches and Arguments (The GNU Emacs Manual).)

以下は，カレントディレクトリの.texinfoで終る全てのファイルを書式化するためのシェルコマンドです．

     emacs -batch -funcall batch-texinfo-format *.texinfo

Emacsは，コマンド行でリストアップされた全てのファイルを，たとえ書式化中にエラーが発生しても処理します．

batch-texinfo-formatは，御覧のように，EmacsのBatchモードだけで実行してください．それは対話的ではありません．それは成功するとバッチモードの Emacsを殺します．

batch-texinfo-formatは，makeinfoがない場合と，一度に複数の Texinfoファイルを書式化したい場合便利です．バッチモードを使うとき，新しい Emacsプロセスを作成します．これは，現在のEmacsとは無関係なので，そこで仕事を続けることができます．(texinfo-format-regionや texinfo-format-bufferを実行するとき，コマンドが終了するまで他のことのためEmacsを使うことはできません．)

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

Texinfoファイルが30,000バイト以上の場合，texinfo-format-bufferは Infoファイルに対し自動的にタグ表を作成します．makeinfoは，常にタグ表を作成します．タグ表でInfoは，新しいノードへ他より速く移動できます．

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

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

分けられたファイルは，@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-1， test-texinfo-2と，test-texinfo-3は，このファイルの Indirect:以下の行でリストアップされます．タグ表は，Tag table:以下の行でリストアップされます．

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

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

HTMLの生成
-------

通常のInfo書式出力物の代わりとして，--htmlオプションを使って， HTML書式で出力物を(例えば)ウェブサイトのインストールのために生成できます．このリリースでのmakeinfoからのHTML出力は，画一的で，章やノードで出力物を分けることをサポートしていません．我々は，この特徴をすぐに組み込みたいと思います．

HTML出力ファイルは，@setfilenameに対応して名付けられますが， .info拡張子は，.htmlで置換されます．

@ifhtmlコマンドでマークアップされたTexinfo入力は，--htmlオプションが供給されたときだけ出力物を生成します．@htmlでマークアップされた入力は，本当に出力に渡されます(HTMLで特別重要な，入力の<， >と&文字の，通常のエスケープ文字の意味は抑制されます．)

--footnote-styleオプションは，HTML出力に対し現在は無視されます．脚注は出力ファイルの終りでハイパーリンクされます．

生成されたHTMLはほとんど標準的です(いわゆる，HTML 2.0,RFC1866)．例外として， HTML 3.2の表が，@multitableコマンドで生成されますが，表をサポートしていないブラウザでも分解可能なようにタグ付けされています．HTML 3.2 DTDに違反するmakeinfoのエラーのない実行結果からの出力を，バグとして報告してください．

ナビゲーションバーが，Info出力に似たものとして，ノードの始まりに挿入されます．--no-headersオプションは，--no-splitを使っている場合，これを抑制します．分けられた出力物のヘッダの<link>の要素は，Lynxと HTML 1.0の特徴で作られたEmacs W3のようなブラウザで，infoのようなナビゲートをサポートしています．通常Infoリーダで供給される，複数ファイルの正規表現と，索引検索ファシリティは得られません．しかし，ハイパーリンクは Texinfoコマンドに応じて生成されます．他のドキュメントに対する @xrefコマンドは，他のドキュメントがHTML形式で利用可能であるとして生成され，.htmlが@xrefInfoファイル名に追加されます．これは，おそらく働かないことが多いでしょう．

Infoファイルのインストール
===============

Infoファイルは，通常infoディレクトリに置かれます．Infoファイルを，スタンドアローンのInfoプログラムや，Emacs組込みのInfoリーダーを使って読むことができます．(Infoの紹介は，see info (info-ja).)

ディレクトリファイルdir
-------------

Infoを働かせるため，infoディレクトリは，Infoシステムのためのトップレベルディレクトリを提供するファイルを含むはずです．慣習的に，このファイルはdirと呼ばれます．(このファイルの場所は，EmacsでInfoモードに入るためC-h iと入力し，infoディレクトリへのパス名を見るため C-x C-fを入力すると分かります．)

dirファイルは，それ自身がInfoファイルです．それは，システム全ての Infoファイルに対する，トップレベルメニューを含みます．メニューは以下のようになってます．

     * Menu:
     * Info:    (info).     Documentation browsing system.
     * Emacs:   (emacs).    The extensible, self-documenting
                            text editor.
     * Texinfo: (texinfo).  With one source file, make
                            either a printed manual using
                            TeX or an Info file.
     ...

これらのメニューの項目のそれぞれが，丸カッコに名前がある，Infoファイルの `Top'ノードを示します．(Infoはノード名を指定されない場合，`Top'ノードへ行くので，このメニュー項目は`Top'ノードを指定する必要はありません． See Nodes in Other Info Files.)

このように，Info項目はinfoファイルの`Top'ノードを示し， Emacs項目はemacsファイルの`Top'ノードを示します．

それぞれのInfoファイルで，`Top'ノードの`Up'ポインタは，dirファイルへの参照です．例えば，Emacsマニュアルの`Top'ノードの行は，Infoファイルではこのように見えます．

     File: emacs  Node: Top, Up: (DIR), Next: Distrib

この場合，dirファイル名は，大文字で書かれています---それは，大文字か小文字で書けます．これは一般に真ではなく，dirの場合のみ特別です．

新しいInfoファイルをリストアップする
--------------------

新しいInfoファイルをシステムに加えるため，infoディレクトリの dirファイルのメニューを加える，メニュー項目を書く必要があります．例えばGDBのドキュメントを加える場合，以下の新しい項目を書きます．

     * GDB: (gdb).           The source-level C debugger.

メニュー項目の最初の部分はメニュー項目名で，コロンが続きます．2番目の部分はInfoファイル名で，丸カッコの中にあり，ピリオドが続きます．3番目の部分は記述です．

Infoファイルの名前は，しばしば.info拡張子があります．そのため， GDBのInfoファイルは，gdbまたはgdb.infoと呼ぶことができます． Infoリーダープログラムは，自動的に.infoの有無の両方を試します． (MS-DOS/MS-Windowsシステムでは，Infoは同様に，.inf拡張子も試します．)そのため，バラバラにするのを避け，メニュー項目に明示的に .infoを書かない方が良いでしょう．例えばGDBメニュー項目は，ファイル名にgdb.infoではなくgdbだけを使うべきです．

他のディレクトリのInfoファイル
-----------------

Infoファイルがinfoディレクトリに無い場合，その場所を指定する3つの方法があります．

 1. dirファイルで，メニューの2番目の部分にパス名を書いてください．

 2. Emacsを使っている場合，そのディレクトリで，2番目のdirにファイル名をリストアップしてください．そして，個人やサイトの初期化ファイルで， Info-directory-list変数にそのディレクトリ名の指定を加えてください．

     この変数は，Emacsにdirファイルを探す場所を伝えます(ファイルは dirと名付ける必要があります)．Emacsは，それぞれリストアップされたディレクトリからの，dirと名付けられたファイルをマージします．(Emacsバージョン18では，Info-directory変数で，1つのディレクトリの名前しかセットできません．)

 3. Infoディレクトリ名を，.profileや.cshrc初期化ファイルで， INFOPATH環境変数で指定してください．(この環境変数を指定した人だけ，この方法で指定した場所のInfoファイルを見つけることができます．)

例えば，/home/bob/infoディレクトリのテストファイルに届くように，標準dirファイルのメニューに，以下のように項目を加えることができます．

     * Test: (/home/bob/info/info-test).  Bob's own test file.

この場合，info-testファイルの絶対ファイル名は，メニュー項目の2番目の部分に書かれます．

別の方法として，.emacsファイルに以下のように書くことができます．

     (require 'info)
     (setq Info-directory-list
           (cons (expand-file-name "/home/bob/info") Info-directory-list))

これは，Emacsに/home/bob/infoディレクトリからのdirファイルを，システムのdirファイルにマージするよう伝えます．Infoは， /home/bob/info/dirファイルのメニュー項目のように， /home/bob/info/info-testファイルをリストアップします．Emacsは， M-x infoを最初に実行したときのみマージするので，既にinfoを実行しているEmacsのセッションでInfo-directory-listセットしたい場合， Emacsにdirファイルを再構成させるため(setq Info-dir-contents nil)する必要があります．

最後に，.cshrc，.profileや，autoexec.batのような，シェルのスタートアップファイルでINFOPATH環境変数をセットすることで Infoに探す場所を伝えることができます．シェルコマンドインタプリタとして shやbashのようなBourne互換シェルを使う場合， INFOPATH環境変数を.profile初期化ファイルでセットします．しかし，cshやtcshを使う場合，.cshrc初期化ファイルで変数をセットします．MS-DOS/MS-Windowsシステムでは，INFOPATHを autoexec.batファイルかレジストリでセットする必要があります．それぞれのシェルで構文は異なります．

  * .cshrcファイルで，INFOPATH変数を以下のようにしてセットします．

          setenv INFOPATH .:~/info:/usr/local/emacs/info

  * .profileファイルに以下を書くことで，同じ効果を得ます．

          INFOPATH=.:$HOME/info:/usr/local/emacs/info
          export INFOPATH

  * autoexec.batファイルで，以下のコマンドを書きます． (ディレクトリの区切りとして;を使うことと，他の環境変数の値の使用に対し，構文が違うことに注意してください．)

          set INFOPATH=.;%HOME%/info;c:/usr/local/emacs/info

.は，通常カレントディレクトリを示します．Emacsは，INFOPATH環境変数をEmacs自身のInfo-directory-list変数の初期化に使います．スタンドアローンのInfoリーダーは，INFOPATH変数でリストアップされたあらゆるディレクトリのdirという名のファイルを，(dir)Topと呼ばれるノードに現れる単一のメニューにマージします．

しかし，INFOPATHをセットしても，最後の文字がコロン (MS-DOS/MS-Windowsシステムは，代わりにセミコロンを使います．)の場合，これはデフォルトの(compiled-in)パスに置換されます．これは，全ての標準の場所をリストアップすること無く，新しいディレクトリでデフォルトのパスを増やす方法を与えます．例えば以下のようにします(sh構文使用)．

     INFOPATH=/local/info:
     export INFOPATH

これで，/local/infoが最初で，それから標準ディレクトリを探します．最初や2重のコロンは，特別扱いしません．

Info-directory-listやINFOPATHで利用する独自のdirファイルを作るとき，既存のdirファイルをコピーから初め，* Menu:以下のテキストを必要な項目で置換するのがもっとも簡単な方法です．その方法では， Infoが必要とする句読点と特別なCTRL-_文字は存在します．

Infoディレクトリファイルのインストール
---------------------

Infoファイルをシステムにインストールするとき，プログラム install-infoを，Infoディレクトリファイルdirの更新に使うことができます．通常パッケージのmakefileは，Infoファイルを適切なインストール先にコピーした直後にinstall-infoを実行します．

Infoファイルをinstall-infoで働かせるため，コマンド @dircategoryと@direntry...@end direntryを， Texinfoソースファイルで使うべきです．Infoディレクトリファイルに加えるメニュー項目を指定するため，@direntryを使ってください．ここに，このマニュアルでこれらのコマンドを使った例があります．

     @dircategory Texinfo documentation system
     @direntry
     * Texinfo: (texinfo).           The GNU documentation format.
     * install-info: (texinfo)Invoking install-info. ...
     ...
     @end direntry

以下は，これでInfoファイルに生成されたものです．

     INFO-DIR-SECTION Texinfo documentation system
     START-INFO-DIR-ENTRY
     * Texinfo: (texinfo).           The GNU documentation format.
     * install-info: (texinfo)Invoking install-info. ...
     ...
     END-INFO-DIR-ENTRY

install-infoプログラムはInfoファイルでこれらの行を見て，そしてそれは，すべきことを知る方法となります．

常に@direntryと@dircategoryコマンドを，Texinfo入力の最初で，最初の@nodeコマンドの前で使ってください．入力ファイルの後の方で使う場合，install-infoはそれらに注意を払いません．

@dircategoryをTexinfoソースファイルで1回以上使う場合，それぞれの使用は，`current'カテゴリーを指定します．それに続く@direntryコマンドは，そのカテゴリーを追加します．

ここに，いくつか推奨される@dircategoryカテゴリーがあります．`GNU packages'，`GNU programming tools'，`GNU programming documentation'， `GNU Emacs Lisp'，`GNU libraries'，`Linux'，`TeX'，`Individual utilities'です．考え方は，`Individual utilities'のパッケージでインストールされる全てのプログラムに対し`invoking'ノードを含め，マニュアルの項目を全体として適切な他のカテゴリーに含めます．

install-infoの呼び出し
-----------------

install-infoは，Infoファイルから，Infoシステムのトップレベルの dirファイルにメニュー項目を挿入します(dirファイルの働きの説明は，前のセクションを参照してください)．それは，ソフトウェアのインストールの一部として，また，システムのマニュアル全体に対し，dirファイルを構築するときよく実行されます．以下が概要です．

     install-info [OPTION]... [INFO-FILE [DIR-FILE]]

INFO-FILEやDIR-FILEを指定しない場合，(以下で述べる)それらを定義するオプションが必要です．コンパイル時のデフォルトは無く，標準入力は使いません．install-infoは，呼び出し毎に，1つのInfoファイルのみ読み込み， 1つのdirにのみ書き込みます．

DIR-FILE(が指定されていても)存在しない場合，可能なら install-infoは(項目の無い)それを作成します．

入力ファイルが，gzipで圧縮されている場合(see Invoking gzip (Gzip))，install-infoは自動的に読み込みのため解凍します．そして，DIR-FILEが圧縮されている場合も，install-infoは自動的に変更を書き込んだ後，圧縮された状態にします．DIR-FILE自身が無い場合， install-infoはDIR-FILE.gzを開こうとします．

オプションです．

--delete
     DIR-FILEからINFO-FILEの項目を削除します．DIR-FILEの項目のファイル名はINFO-FILEである必要があります(その中の，オプションの .infoは例外です)．新しい項目は挿入しません．

--dir-file=NAME
-d NAME
     Infoディレクトリファイルのファイル名を指定します．これは，DIR-FILE引数を使うのと同じです．

--entry=TEXT
-e TEXT
     Infoディレクトリ項目としてTEXTを挿入します．TEXTは，Infoメニュー項目行にゼロ以上の空白で始まる行を追加した書式とするべきです．1つ以上の項目を指定する場合，全て追加されます．項目を指定しない場合，Infoファイル自身の情報から決定します．

--help
-h
     基本的な使用方と，利用可能な全てのオプションをリストアップした使用方法メッセージを表示し，正しく終了します．

--info-file=FILE
-i FILE
     ディレクトリにインストールするため，Infoファイルを指定します． INFO-FILE引数の使用と同じです．

--info-dir=DIR
-D DIR
     dirが位置するディレクトリを指定します． --dir-file=DIR/dirと同じです．

--item=TEXT
     --entry=TEXTと同じです．Infoディレクトリ項目は，実際にはメニュー項目です．

--quiet
     警告を抑制します．

--remove
-r
     --deleteと同じです．

--section=SEC
-s SEC
     このファイルの項目を，ディレクトリのセクションSECに置きます．1つ以上のセクションを指定した場合，Infoファイル自身の情報から決定されます．

--version
-V
     バージョン情報を表示し，正しく終了します．

@-コマンドリスト
*********

以下にTexinfoのアルファベット順の@-コマンドリストがあります．角カッコ [ ]はオプションの引数を示します．省略...は，繰り返しテキストを示します．

@WHITESPACE
     @に続くスペース，タブや，改行は，通常の伸縮可能な単語を区切る空白を生成します．See Multiple Spaces.

@!
     感嘆符を，文章の終りに実際に生成します(通常，文の終りの大文字の後です)． See Ending a Sentence.

@"
@'
     次の文字の上に，ö とóのように，ウムラートや鋭いアクセントを生成します． See Inserting Accents.

@*
     行を切ります．@refillコマンドで，@*を使う段落を終了させないでください．See Line Breaks.

@,{C}
     Cの下にçのような，セディラアクセントを生成します． See Inserting Accents.

@-
     任意のハイフネーションポイントを挿入します．See - and hyphenation.

@.
     ピリオドを，文章の終りに実際に生成します(通常，文の終りの大文字の後です)． See Ending a Sentence.

@:
     TeXに，直前のピリオド，疑問符，感嘆符やコロンで，文章が終らないよう指示します．TeXが文章の終りに行う，余分な空白を挿入することを妨げます．このコマンドはInfoファイル出力に効果はありません．See Not Ending a Sentence.

@=
     次の文字の上に長音記号(バー)アクセントを，ōの用に生成します． See Inserting Accents.

@?
     疑問符を，文の終りに実際に生成します(通常，文の終りの大文字の後です)． See Ending a Sentence.

@@
     @という印を意味します．See Inserting @ and braces.

@^
@`
     曲折アクセント(ハット)や低アクセントを，それぞれ次の文字の上に，ôのように生成します．See Inserting Accents.

@{
     左カッコ{を意味します．See Inserting @ and braces.

@}
     右カッコ}，
     を意味します．See Inserting @ and braces.

@~
     チルダアクセントを，次の文字の上に，Ñのように生成します． See Inserting Accents.

@AA{}
@aa{}
     それぞれ大文字と小文字の，スカンジナビアのA-リング文字を生成します． Å，åです．See Inserting Accents.

@acronym{ABBREV}
     `NASA'のような，いわゆる，全て大文字で書かれている省略の頭文字としてタグ ABBREVを付けます．See acronym.

@AE{}
@ae{}
     それぞれ，大文字と小文字のAEの連字を生成します．Æ，æです． See Inserting Accents.

@afourlatex
@afourpaper
@afourwide
     ページの寸法をA4用紙のサイズに変更します．See A4 Paper.

@alias NEW=EXISTING
     既存のコマンド@EXISTINGのエイリアスとして，新しいコマンド @NEWを作成します．See alias.

@anchor{NAME}
     相互参照のターゲットとして使用するため，NAMEを現在の位置と定義します． See @anchor.

@appendix TITLE
     付録を開始します．タイトルは印刷されたマニュアルの目次に現れます．Infoでは，タイトルはアスタリスクで下線が付きます．See The @unnumbered and @appendix Commands.

@appendixsec TITLE
@appendixsection TITLE
     付録内の付録セクションを開始します．セクションのタイトルは印刷されたマニュアルの目次に現れます．Infoでは，タイトルは等号で下線が付きます． @appendixsectionは@appendixsecコマンドの長い綴のものです． See Section Commands.

@appendixsubsec TITLE
     付録内の付録サブセクションを開始します．タイトルは印刷されたマニュアルの目次に現れます．Infoでは，タイトルはハイフンで下線が付きます． See Subsection Commands.

@appendixsubsubsec TITLE
     付録サブセクション内の付録サブサブセクションを開始します．タイトルは印刷されたマニュアルの目次に現れます．Infoでは，タイトルはピリオドで下線が付きます．See The `subsub' Commands.

@asis
     表の最初の行を(``他と比較して'')強調無しで印刷するため，@table， @ftableと@vtableに続けて使用します．See Making a Two-column Table.

@author AUTHOR
     AUTHORを左揃えに下線を引き植字します． See The @title and @author Commands.

@b{TEXT}
     TEXTをボールドフォントで印刷します．Infoでは効果がありません． See Fonts.

@bullet{}
     大きな丸い点や，それに最も近いものを生成します．See @bullet.

@bye
     ファイルの書式化を停止します．書式化は@byeコマンドに続くファイルの内容を見ません．See Ending a File.

@c COMMENT
     Texinfoでコメントを開始します．行の残りはInfoファイルにも印刷されたマニュアルにも現れません．@commentの同義語です．See Comments.

@cartouche
     角が丸いボックスを描き，例や引用を強調します．@end cartoucheとペアになります．Infoでは効果はありません．See Drawing Cartouches Around Examples.

@center LINE-OF-TEXT
     コマンドに続くテキスト行をセンタリングします．See @center.

@centerchap LINE-OF-TEXT
     @chapterに似ていますが，章のタイトルをセンタリングします． See @chapter.

@chapheading TITLE
     テキストに章のような見出しを印刷しますが，印刷されたマニュアルの目次には現れません．Infoでは，タイトルはアスタリスクで下線が引かれます． See @majorheading and @chapheading.

@chapter TITLE
     章を開始します．章のタイトルは印刷されたマニュアルの目次に現れます．Infoでは，タイトルはアスタリスクで下線が引かれます．See @chapter.

@cindex ENTRY
     ENTRYを概念の索引に加えます．See Defining the Entries of an Index.

@cite{REFERENCE}
     Infoファイルの仲間に無い，本やその他の参照の名前を強調します． See @cite.

@clear FLAG
     Texinfo書式化コマンドが@ifset FLAGと@end ifsetの組の間のテキストの書式化するのを妨げるためと，@value{FLAG}が FLAGが設定した値の拡張するのを妨げるため，FLAGを解除します． See @set @clear @value.

@code{SAMPLE-CODE}
     表現，プログラムの構文上の完全なトークンや，プログラム名を強調します． See @code.

@command{COMMAND-NAME}
     lsのような，コマンド名を示します．See @command.

@comment COMMENT
     Texinfoでコメントを開始します．行の残りは，Infoファイルでも印刷されたマニュアルでも現れません．@cと同義語です．See Comments.

@contents
     目次を印刷します．Infoでは効果が無く，代わりにメニューが使用されます． See Generating a Table of Contents.

@copyright{}
     著作権のシンボルを生成します．See @copyright.

@defcodeindex INDEX-NAME
     新しい索引と索引コマンドを定義します．@codeフォントで項目を印刷します．See Defining New Indices.

@defcv CATEGORY CLASS NAME
@defcvx CATEGORY CLASS NAME
     オブジェクト指向プログラムのクラスに結びつけられた変数をの記述を書式化します．3つの引数があります．定義されたもののカテゴリ，属するクラスとその名前です．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@deffn CATEGORY NAME ARGUMENTS...
@deffnx CATEGORY NAME ARGUMENTS...
     関数，対話的コマンドや，類似の引数とされるエンティティの記述を書式化します． @deffnは引数として，記述されるエンティティのカテゴリ，この特定のエンティティの名前と，そのあらゆる引数を，引数とします．See Definition Commands.

@defindex INDEX-NAME
     新しい索引と索引コマンドを定義します．ローマンフォントで項目を印刷します． See Defining New Indices.

@definfoenclose NEWCMD, BEFORE, AFTER,
     Infoのため，テキストの前後を文字列で囲みテキストをマークする，新しい@-コマンドNEWCMDを作成します．See definfoenclose.

@defivar CLASS INSTANCE-VARIABLE-NAME
@defivarx CLASS INSTANCE-VARIABLE-NAME
     このコマンドは，オブジェクト指向プログラミングのインスタンス変数の記述を書式化します．このコマンドは，@defcv {Instance Variable} ...と同じです．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@defmac MACRONAME ARGUMENTS...
@defmacx MACRONAME ARGUMENTS...
     マクロの記述を書式化します．このコマンドは@deffn Macro ...と同じです．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@defmethod CLASS METHOD-NAME ARGUMENTS...
@defmethodx CLASS METHOD-NAME ARGUMENTS...
     オブジェクト指向プログラミングのメソッドの記述を書式化します．このコマンドは@defop Method ...と同じです．メソッドのクラス名，メソッド名とそのあらゆる引数を，引数とします．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@defop CATEGORY CLASS NAME ARGUMENTS...
@defopx CATEGORY CLASS NAME ARGUMENTS...
     オブジェクト指向プログラミングのオペレーションの記述を書式化します． @defopは，オペレーションのカテゴリーの全体名，オペレーションのクラス名，オペレーション名とあらゆる引数を，引数とします．See Definition Commands.  またAbstract Objects,を参照してください．

@defopt OPTION-NAME
@defoptx OPTION-NAME
     ユーザーオプションの記述を書式化します．このコマンドは@defvr {User Option} ...と同じです．See Definition Commands.  また Def Cmds in Detail,を参照してください．

@defspec SPECIAL-FORM-NAME ARGUMENTS...
@defspecx SPECIAL-FORM-NAME ARGUMENTS...
     特別な形式の記述を書式化します．このコマンドは@deffn {Special Form} ...と同じです．See Definition Commands.  また Def Cmds in Detail,を参照してください．

@deftp CATEGORY NAME-OF-TYPE ATTRIBUTES...
@deftpx CATEGORY NAME-OF-TYPE ATTRIBUTES...
     データ型の記述を書式化します．@deftpは，カテゴリー，型名 (intやfloatのような単語)と，その型のオブジェクトの属性名を引数とします．See Definition Commands.  またData Types,を参照してください．

@deftypefn CLASSIFICATION DATA-TYPE NAME ARGUMENTS...
@deftypefnx CLASSIFICATION DATA-TYPE NAME ARGUMENTS...
     関数や，類似の引数をとることができ入力もされる，エンティティの記述を書式化します．@deftypefnは，記述されているエンティティの分類，型，エンティティ名と，あらゆる引数を，引数とします．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@deftypefun DATA-TYPE FUNCTION-NAME ARGUMENTS...
@deftypefunx DATA-TYPE FUNCTION-NAME ARGUMENTS...
     入力された言語の関数の記述を書式化します．このコマンドは @deftypefn Function ...と同じです．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@deftypeivar CLASS DATA-TYPE VARIABLE-NAME
@deftypeivarx CLASS DATA-TYPE VARIABLE-NAME
     オブジェクト指向プログラミングの入力されたインスタンス変数を書式化します． See Definition Commands.  またAbstract Objects,を参照してください．

@deftypemethod CLASS DATA-TYPE METHOD-NAME ARGUMENTS...
@deftypemethodx CLASS DATA-TYPE METHOD-NAME ARGUMENTS...
     オブジェクト指向プログラミングの入力されたメソッドの記述を書式化します． See Definition Commands.  またDef Cmds in Detail,を参照してください．

@deftypeop CATEGORY CLASS DATA-TYPE NAME ARGUMENTS...
@deftypeopx CATEGORY CLASS DATA-TYPE NAME ARGUMENTS...
     オブジェクト指向プログラミングの入力されたオペレーションの記述を書式化します．See Definition Commands.  またAbstract Objects,を参照してください．

@deftypevar DATA-TYPE VARIABLE-NAME
@deftypevarx DATA-TYPE VARIABLE-NAME
     入力された言語の変数の記述を書式化します．このコマンドは @deftypevr Variable ...と同じです．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@deftypevr CLASSIFICATION DATA-TYPE NAME
@deftypevrx CLASSIFICATION DATA-TYPE NAME
     入力された言語の変数のようなもの(値を記録するエンティティ)の記述を書式化します．引数として，記述されたエンティティの分類，型と，エンティティの名前をとります．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@defun FUNCTION-NAME ARGUMENTS...
@defunx FUNCTION-NAME ARGUMENTS...
     関数の記述を書式化します．このコマンドは@deffn Function ... と同じです．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@defvar VARIABLE-NAME
@defvarx VARIABLE-NAME
     変数の記述を書式化します．このコマンドは@defvr Variable ... と同じです．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@defvr CATEGORY NAME
@defvrx CATEGORY NAME
     あらゆる変数に類するものの記述を書式化します．@defvrは，エンティティのカテゴリとエンティティ名を引数とします．See Definition Commands.  またDef Cmds in Detail,を参照してください．

@detailmenu
     マスターメニューでリストアップされている詳細なノードで生じる， makeinfoの混乱を避けます．See Master Menu Parts.

@dfn{TERM}
     用語使用の導入や定義を強調します．See @dfn.

@dircategory DIRPART
     このファイルの項目へ行く，Infoディレクトリメニューを指定します． See Installing Dir Entries.

@direntry
     このファイルの，Infoディレクトリメニュー項目を開始します．@end direntryと組になります．See Installing Dir Entries.

@display
     例のようなものを開始します．@exampleに似ていますが(テキストを字下げし，全体に広がらない)新しいフォントを選択しません．@end displayと組になります．See @display.

@dmn{DIMENSION}
     測定単位を12ptのように書式化します．TeXは，DIMENSIONの前にスペースを挿入します．Infoでは，効果はありません．See @dmn.

@documentencoding ENC
     入力エンコードをENCを宣言します．See @documentencoding.

@documentlanguage CC
     ドキュメント言語を2文字のISO-639の省略型CCと宣言します． See @documentlanguage.

@dotaccent{C}
     文字Cの上にȯのようにドットアクセントを生成します． See Inserting Accents.

@dots{}
     省略を意味する...を挿入します．See @dots.

@email{ADDRESS[, DISPLAYED-TEXT]}
     電子メールアドレスを示します．See @email.

@emph{TEXT}
     TEXTを強調します．テキストは印刷された出力でイタリックで表示され，Infoでは，アスタリスクが前後に付きます．See Emphasizing Text.

@end ENVIRONMENT
     ENVIRONMENTを@end exampleのように終了します． See @-commands.

@env{ENVIRONMENT-VARIABLE}
     PATHのような環境変数名を示します．See @env.

@enddots{}
     文章の終りの省略を...のように生成します． See @dots{}.

@enumerate [NUMBER-OR-LETTER]
     @itemを使用するそれぞれの項目に対し，番号付のリストを開始します．オプションでNUMBER-OR-LETTERを用いたリストを開始します． @end enumerateと組になります．See @enumerate.

@equiv{}
     glyphを用い，==のように，2つ形式が正確に等しいことを読者に示します．See Equivalence.

@error{}
     glyphを用い，error-->のように，以下のテキストがエラーメッセージだということを読者に示します．See Error Glyph.

@evenfooting [LEFT] @| [CENTER] @| [RIGHT]
@evenheading [LEFT] @| [CENTER] @| [RIGHT]
     偶数番号で(左側)ページのページフッタと見出しを指定します．@iftexの中だけで使用できます．See How to Make Your Own Headings.

@everyfooting [LEFT] @| [CENTER] @| [RIGHT]
@everyheading [LEFT] @| [CENTER] @| [RIGHT]
     すべてのページのページフッタと見出しを指定します．Infoには関係しません． See How to Make Your Own Headings.

@example
     例を開始します．テキストを字下げし，補充せず，等幅フォントを選択します． @end exampleと組になります．See @example.

@exampleindent INDENT
     例のような環境で，INDENT個のスペースで(おそらく0)字下げします． See Paragraph Indenting.

@exclamdown{}
     上下逆の感嘆符を生成します．See Inserting Accents.

@exdent LINE-OF-TEXT
     行が持つあらゆる字下げを削除します．See Undoing the Indentation of a Line.

@expansion{}
     特別なglyph==>で，マクロ拡張の結果を読者に示します． See ==> Indicating an Expansion.

@file{FILENAME}
     ファイル，バッファ，ノードやディレクトリの名前を強調します．See @file.

@finalout
     TeXが，大きな黒い警告の長方形を，幅を越えた行に印刷するのを妨げます． See Overfull hboxes.

@findex ENTRY
     ENTRYを関数の索引に追加します．See Defining the Entries of an Index.

@flushleft
@flushright
     全ての行を左寄せにしますが，右端はバラバラになります．フォントはそのままです．@end flushleftと組にします．@flushrightの同義語です． See @flushleft and @flushright.

@footnote{TEXT-OF-FOOTNOTE}
     脚注に挿入します．脚注のテキストは，TeXではページの底に印刷され，Infoはノードの「終り」か「分割した」形式で書式化されます．See Footnotes.

@footnotestyle STYLE
     Infoファイルの脚注形式を指定し，endは終りに置くノード形式で， separateは分割したノード形式です．See Footnotes.

@format
     例の類を開始します．@displayに似ていますが，マージンは狭くなりません．@end formatと組にします．See @example.

@ftable FORMATTING-COMMAND
     それぞれの項目に対し，@itemを使用した2行の表を開始します．それぞれの項目は，関数の索引の最初の行に自動的に挿入されます．@end ftableと組にします．索引に対する以外，@tableと同じです． See @ftable and @vtable.

@group
     1つの印刷されたページに，一緒に現れる必要があるテキストを保ちます． @end groupと組にします．Infoでは関係ありません．See @group.

@H{C}
     Cの上に長いハンガリーのウムラートをőのように生成します．

@heading TITLE
     テキストに番号付けされていないセクションのような見出しを印刷しますが，印刷された目次には印刷しません．Infoでは，タイトルは等号で下線が引かれます． See Section Commands.

@headings ON-OFF-SINGLE-DOUBLE
     印刷に対し，ページ見出しを付けたり消したりし，片面または両面のページ見出しを指定したりします．See The @headings Command.

@html
     完全にHTMLに入ります．@end htmlと組にします．See Raw Formatter Commands.

@hyphenation{HY-PHEN-A-TED WORDS}
     ハイフネーションポイントを明示的に定義します．See @- and @hyphenation.

@i{TEXT}
     TEXTをイタリックフォントで印刷します．Infoでは効果がありません． See Fonts.

@ifclear FLAG
     FLAGがクリアされた場合，Texinfo書式化コマンドは，@ifclear FLAGとそれに続く@end ifclearコマンドの間のテキストを書式化します．See @set @clear @value.

@ifhtml
@ifinfo
     印刷されたマニュアルで植字するとき，TeXが無視するテキストの展開を開始します．テキストはHTMLのみに現れ，対応してInfoファイルも同様です． @end ifhtmlと組になり，対応して@end ifinfoも同様です． See Conditionals.

@ifnothtml
@ifnotinfo
@ifnottex
     1つの出力形式で無視され，他では無視されないテキストの展開を開始します．テキストは指定されていない書式でのみ現れます．@end ifnothtmlと，対応して，@end ifnotinfo，@end ifnotinfoと組になります． See Conditionals.

@ifset FLAG
     FLAGが設定されている場合，Texinfo書式化コマンドは，@ifset FLAGとそれに続く@end ifsetコマンドの間のテキストを書式化します．See @set @clear @value.

@iftex
     Infoファイルに現れないが，TeXのみで処理されるテキストの展開を開始します． @end iftexと組になります．See Conditionally Visible Text.

@ignore
     Infoファイルにも印刷された出力にも現れないテキストを展開します． @end ignoreと組になります．See Comments and Ignored Text.

@image{FILENAME, [WIDTH], [HEIGHT]}
     外部のFILENAMEの画像を，与えられたWIDTHと/やHEIGHTの大きさで含みます．See Images.

@include FILENAME
     Infoファイルや印刷されたドキュメントに，ファイルFILENAMEの内容を取り込みます．See Include Files.

@inforef{NODE-NAME, [ENTRY-NAME], INFO-FILE-NAME}
     印刷されたマニュアルにはない，Infoファイルへの相互参照を作成します． See Cross references using @inforef.

\input MACRO-DEFINITIONS-FILE
     指定されたマクロ定義ファイルを使用します．このコマンドは，TeXが texinfoマクロ定義ファイルを使用するよう，Texinfoファイルの最初の行でのみ使用されます．定義ファイルを読むまで，TeXは@を理解できないので，\inputのバックスラッシュは，@の代わりに使用されます． See The Texinfo File Header.

@item
     @itemizeと@enumerateに対しマークされた段落の最初を示します． @table，@ftableと，@vtableに対し，最初の行項目のテキストの最初を示します．See Lists and Tables.

@itemize  MARK-GENERATING-CHARACTER-OR-COMMAND
     字下げされた段落の文章を作成し，それぞれの段落の最初に左のマージンの内部にマークを付けます．See @itemize.

@itemx
     @itemに似ていますが，項目のテキストの上に余分な縦方向の空白を生成しません．See @itemx.

@kbd{KEYBOARD-CHARACTERS}
     ユーザが入力する文字のテキストを示します．See @kbd.

@kbdinputstyle STYLE
     @kbdが@codeと異なるフォントを使用するとき指定します． See @kbd.

@key{KEY-NAME}
     キーボードのキーの名前を示します．See @key.

@kindex ENTRY
     キーの索引にENTRYを加えます．See Defining the Entries of an Index.

@L{}
@l{}
     ポーランドの縮めたLの文字の，大文字と小文字を生成します．それぞれŁ， łです．

@lisp
     Lispコードの例を開始します．文字を字下げし，両端まで広げず，等幅フォントを選択します．@end lispと組になります．See @lisp.

@lowersections
     順番に，章をセクションに，セクションをサブセクションなどのように変更します． See @raisesections and @lowersections.

@macro MACRONAME {PARAMS}
     新しいTexinfoコマンド@MACRONAME{PARAMS}を定義します． makeinfoとtexi2dviのみでサポートされています． See Defining Macros.

@majorheading TITLE
     テキストで章のような見出しを印刷しますが，印刷されたマニュアルの目次には印刷されません．@chapheadingコマンドより大きな縦方向の空白を見出しの前に生成します．Infoでは，章の見出し行はアスタリスクで下線が引かれます． See @majorheading and @chapheading.

@math{MATHEMATICAL-EXPRESSION}
     数学的表現を書式化します．See @math: Inserting Mathematical Expressions.

@menu
     Infoでノードメニューの最初に印を付けます．印刷されたマニュアルでは効果がありません．@end menuと組になります．See Menus.

@minus{}
     負符号`-'を生成します．See @minus.

@multitable COLUMN-WIDTH-SPEC
     複数行の表を開始します．@end multitableと組になります． See Multitable Column Widths.

@need N
     現在のページの残りがNミル(千分の1インチ)より小さい場合，印刷されたマニュアルで新しいページを開始します．See @need.

@node NAME, NEXT, PREVIOUS, UP
     Infoで新しいノードの開始を定義し，TeXに対し参照の位置を供給します． See @node.

@noindent
     テキストが新しい段落のように字下げするのを妨げます．See @noindent.

@novalidate
     ノード参照の有効化を抑制し，TeXの追加ファイルの作成を削除します． @setfilenameの前で使用します．See Pointer Validation.

@O{}
@o{}
     大文字と小文字のスラッシュの付いたOの文字を生成します．それぞれ，Ø， øです．

@oddfooting [LEFT] @| [CENTER] @| [RIGHT]
@oddheading [LEFT] @| [CENTER] @| [RIGHT]
     ページのフッタと，対応して見出しを，それぞれ，偶数番号の(右側の)ページに指定します．@iftexの中のみで使用できます．See How to Make Your Own Headings.

@OE{}
@oe{}
     大文字と小文字のOEの抱き文字を生成します．それぞれŒ，œです． See Inserting Accents.

@option{OPTION-NAME}
     -lや--helpのようなコマンドラインオプションを示します． See @option.

@page
     印刷されたマニュアルで，新しいページを開始します．Infoでは効果ありません． See @page.

@pagesizes [WIDTH][, HEIGHT]
     ページ寸法を変更します．See pagesizes.

@paragraphindent INDENT
     INDENT個のスペース(おそらく0)で，段落の字下げを行います． INDENTがasisの場合，ソースファイルの字下げを保持します． See Paragraph Indenting.

@pindex ENTRY
     プログラムの索引にENTRYを加えます．See Defining the Entries of an Index.

@point{}
     バッファでのポイントの位置を，読者にglyph-!-で示します． See Indicating Point in a Buffer.

@pounds{}
     ポンド通過記号を生成します．See @pounds{}.

@print{}
     読者にglyph，-|で印刷された出力を示します．See Print Glyph.

@printindex INDEX-NAME
     アルファベット順の2行の索引を，印刷されたマニュアルで印刷したり，Infoで索引項目のアルファベット順のメニューを生成します．See Printing Indices & Menus.

@pxref{NODE-NAME, [ENTRY], [TOPIC-OR-TITLE], [INFO-FILE], [MANUAL]}
     小文字の`see'で始まる参照を，印刷されたマニュアルで作成します．カッコ内のみで使用します．句読点を使用してコマンドを続けないでください．Info書式化コマンドは，必要な場合，自動的に終りの句読点を挿入します．最初の引数のみ必要です．See @pxref.

@questiondown{}
     上下逆の疑問符を生成します．See Inserting Accents.

@quotation
     実際のまたは想像上の成果物からの引用のテキストを表示するため，マージンを狭くします．コマンドは単独行で書いてください．@end quotationと組になります．See @quotation.

@r{TEXT}
     TEXTをromanフォントで出力します．Infoでは効果がありません． See Fonts.

@raisesections
     順番に，セクションを章に，サブセクションをセクション等のように，変更します． See @raisesections and @lowersections.

@ref{NODE-NAME, [ENTRY], [TOPIC-OR-TITLE], [INFO-FILE], [MANUAL]}
     参照を作成します．印刷されたマニュアルでは`See'で始まりません．コマンドに句読点を続けてください．最初の引数のみ必要です．See @ref.

@refill
     Infoでは，他の処理が終った後段落の補充とと字下げが行われます．TeXでは効果がなく，常に補充されます．このコマンドは，全てのフォーマッターが自動的に補充するのでもはや不要です．See Refilling Paragraphs.

@result{}
     拡張の結果を特別なglyph =>を用いて示します．See @result.

@ringaccent{C}
     リングアクセントを，o̊のように，次の文字の上に生成します． See Inserting Accents.

@samp{TEXT}
     文字の連結した，リテラル例のテキストを強調します．宣言とシェルコマンド全体に対し，単一の文字を使用します．See @samp.

@sc{TEXT}
     印刷された出力物で，TEXTをTHE SMALL CAPS FONTに設定し，Infoファイルでは大文字にTEXTをセットします．See Smallcaps.

@section TITLE
     章の中でセクションを開始します．印刷されたマニュアルでは，セクションタイトルは番号が付き目次に現れます．Infoでは，タイトルは等号で下線が引かれます． See @section.

@set FLAG [STRING]
     FLAGをアクティブにし，Texinfo書式化コマンドは@ifset FLAGと@end ifsetコマンドの組の間のテキストを書式化します．オプションで，FLAGの値をSTRINGにセットします．See @set @clear @value.

@setchapternewpage ON-OFF-ODD
     新しいページで章を開始する時，その場合は，偶数番号(右側)の新しいページを指定します．See @setchapternewpage.

@setcontentsaftertitlepage
     @contentsコマンドがない場合でも，目次を@end titlepageの後に置きます．See Contents.

@setfilename INFO-FILE-NAME
     Infoファイルが使用する名前を供給します．このコマンドは，出力を生成しませんが，TeXの書式化でも必要です．See @setfilename.

@setshortcontentsaftertitlepage
     短い目次を@end titlepageコマンドの後に，そこに @shortcontentsコマンドがない場合でも，生成します． See Contents.

@settitle TITLE
     印刷されたマニュアルのページヘッダにタイトルを供給します． See @settitle.

@shortcontents
     短い目次を印刷します．Infoには関係なく，それは，目次よりメニューを使用します．@summarycontentsの同義語です．See Generating a Table of Contents.

@shorttitlepage TITLE
     最小限のタイトルページを生成します． See @titlepage.

@smallbook
     TeXに印刷されたマニュアルを，8.5x11インチではなく，7x9.25インチで生成させます．See Printing Small Books.  同様にsmall, も参照してください．

@smalldisplay
     例のようなものを開始します．@smallexample(テキストを字下げし，補充しない)に似ていますが，等幅フォントを選択しません．@smallbook書式では，@displayより小さいフォントでテキストを印刷します． @end smalldisplayと組になります．See small.

@smallexample
     例を示すためテキストを字下げします．補充せず，等幅フォントを選択します． @smallbook書式では，@exampleより小さいフォントを選択します． @end smallexampleと組になります．See small.

@smallformat
     例のようなものを開始します．@smalldisplayに似ていますが，マージンを狭くせず，等幅フォントを選択しません．@smallbook書式では， @formatより小さいフォントでテキストを印刷します．@end smallformatと組になります．See small.

@smalllisp
     Lispコードの例を開始します．テキストを字下げし，補充せず，等幅フォントを選択します．@smallbook書式では，より小さいフォントでテキストを印刷します．@end smalllispと組になります．See small.

@sp N
     N個の空白行を省略します．See @sp.

@ss{}
     ドイツのエスツェット文字ßを生成します．See Inserting Accents.

@strong {TEXT}
     印刷されたマニュアルで，植字をボールドフォントで行ったり，Infoでアスタリスクを周りに置くことでTEXTを強調します．See Emphasizing Text.

@subheading TITLE
     テキストに番号付けされていないセクションのような見出しを印刷しますが，印刷されたマニュアルの目次には印刷しません．Infoでは，タイトルはハイフンで下線が引かれます．See @unnumberedsubsec @appendixsubsec @subheading.

@subsection TITLE
     セクション内でサブセクションを開始します．印刷されたマニュアルでは，サブセクションタイトルは番号付けされ，目次に現れます．Infoでは，タイトルはハイフンで下線が引かれます．See @subsection.

@subsubheading TITLE
     テキストの番号付けされていないサブサブセクションのような見出しを印刷しますが，印刷されたマニュアルの目次には印刷されません．Infoでは，タイトルはピリオドで下線が引かれます．See The `subsub' Commands.

@subsubsection TITLE
     サブセクション内でサブサブセクションを開始します．印刷されたマニュアルでは，サブサブセクションのタイトルは番号付けされ，目次に現れます．Infoでは，タイトルはピリオドで下線が引かれます．See The `subsub' Commands.

@subtitle TITLE
     印刷されたマニュアルでは，ページの右寄せで通常のフォントサイズでサブタイトルをセットします．Infoでは関係なく，それはタイトルページがありません． See @title @subtitle and @author Commands.

@summarycontents
     短い目次を印刷します．Infoでは関係なく，目次の代わりにメニューを使用します． @shortcontentsの同義語です．See Generating a Table of Contents.

@syncodeindex FROM-INDEX INTO-INDEX
     最初の引数で指名された索引を，2番目の引数で指名された索引に統合し，最初の索引から@codeフォントで項目を印刷します．See Combining Indices.

@synindex FROM-INDEX INTO-INDEX
     最初の引数で指名された索引を2番目の引数で指名された索引に統合します． FROM-INDEX項目のフォントは変更しません．See Combining Indices.

@t{TEXT}
     TEXTをタイプライターのようなフォントの等幅フォントで印刷します． Infoには効果がありません．See Fonts.

@tab
     行を複数行の表に分割します．See Multitable Rows.

@table FORMATTING-COMMAND
     2行の表を開始し，それぞれの項目に対し@itemを使用します．それぞれの最初の行の項目を@itemと同じ行に書いてください．最初の行の項目は，FORMATTING-COMMANDの結果のフォントで印刷されます．@end tableと組になります．See Making a Two-column Table.  また，@ftable and @vtable,と@itemx,を参照してください．

@TeX{}
     ロゴTeXを挿入します．See Inserting TeX and ©.

@tex
     完全にTeXに入ります．@end texと組にします．See Raw Formatter Commands.

@thischapter
@thischaptername
@thisfile
@thispage
@thistitle
     見出しとフッタのみで利用可能です．現在の章の番号と名前を意味し(書式は， `Chapter 1: Title')，章の名前のみ，ファイル名，現在のページ番号とドキュメントのタイトルに，それぞれ対応します．See How to Make Your Own Headings.

@tieaccent{CC}
     タイアクセントを次の2文字CCの上に`o͡o'のように生成します． See Inserting Accents.

@tindex ENTRY
     ENTRYをデータ型の索引に加えます．See Defining the Entries of an Index.

@title TITLE
     印刷されたマニュアルでは，タイトルを，右寄せで通常フォントより大きいもので黒い罫線で下線を引き配置します．Infoには関係なく，それはタイトルページがありません．See The @title @subtitle and @author Commands.

@titlefont{TEXT}
     印刷されたマニュアルで，TEXTを通常フォントより大きなもので印刷します． Infoでは関係なく，それにはタイトルページがありません．See The @titlefont @center and @sp Commands.

@titlepage
     Texinfoにタイトルぺージの最初を示します．コマンドを単独行に書いてください． Infoでは，@titlepageと@end titlepageの間には何も現れません． See @titlepage.

@today{}
     現在の日付を`1 Jan 1900'の形式で挿入します．See How to Make Your Own Headings.

@top TITLE
     makeinfoで書式化するInfoファイルで，ファイルの最上位の @node行を識別し，それは@topコマンドの直前の行に書く必要があります．makeinfoのノードポインタが挿入する特徴として使用されます．タイトルは，アスタリスクで下線が引かれます．@node行と @top行は，通常@ifinfoと@end ifinfoで囲まれています． TeXとtexinfo-format-bufferで，@topコマンドは， @unnumberedと単なる同義語です．See Creating Pointers with makeinfo.

@u{C}
@ubaraccent{C}
@udotaccent{C}
     文字Cの上や下に，ŏ，o̱，ọのように，ブレーブ，下線や，下ドットのアクセントを生成します．See Inserting Accents.

@unnumbered TITLE
     印刷されたマニュアルで，章番号のない表現の章を開始します．タイトルは印刷されたマニュアルの目次に現れます．Infoでは，タイトルはアスタリスクで下線が引かれます．See @unnumbered and @appendix.

@unnumberedsec TITLE
     印刷されたマニュアルで，セクション番号がない表現のセクションを開始します．タイトルは，印刷されたマニュアルの目次に現れます．Infoでは，タイトルは等号で下線が引かれます．See Section Commands.

@unnumberedsubsec TITLE
     印刷されたマニュアルで，章の中に，番号がないサブセクションを開始します．タイトルは，印刷されたマニュアルの目次に現れます．Infoでは，タイトルはハイフンで下線が引かれます．See @unnumberedsubsec @appendixsubsec @subheading.

@unnumberedsubsubsec TITLE
     印刷されたマニュアルで，章の中に，番号がないサブサブセクションを開始します．タイトルは，印刷されたマニュアルの目次に現れます．Infoでは，タイトルはピリオドで下線が引かれます．See The `subsub' Commands.

@uref{URL[, DISPLAYED-TEXT][, REPLACEMENT}
     相互参照を外部のワールドワイドウェブのユニフォームリソースロケータに定義します．See @uref.

@url{URL}
     ワールドワイドウェブのユニフォームリソースロケータとなるテキストを示します． See @url.

@v{C}
     文字Cの上にǒのようにチェックアクセントを生成します． See Inserting Accents.

@value{FLAG}
     FLAGを@set FLAGで設定された値で置換します．See @set @clear @value.

@var{METASYNTACTIC-VARIABLE}
     メタ構文の変数を強調し，それはもう1つのテキストの一部を意味するものです． See Indicating Metasyntactic Variables.

@vindex ENTRY
     ENTRYを変数の索引に追加します．See Defining the Entries of an Index.

@vskip AMOUNT
     印刷されたマニュアルに，ページの残りのテキストをページの底まで押しやるような空白を挿入します．0pt plus 1filllのような引数を使用して，著作権のページの書式化に使用します．(filllの綴に注意してください． )@vskipはInfoで無視される内容でのみ使用可能です．See The Copyright Page and Printed Permissions.

@vtable FORMATTING-COMMAND
     2行の表を開始し，それぞれの項目で@itemを使用します．最初の行のそれぞれの項目は変数の索引に自動的に入ります．@end vtableと組になります．索引化以外@tableと同じです．See @ftable and @vtable.

@w{TEXT}
     TEXTが2行に分割されるのを妨げます．@refillコマンドと供に @wを使用して，段落を終了しないでください．See @w.

@xref{NODE-NAME, [ENTRY], [TOPIC-OR-TITLE], [INFO-FILE], [MANUAL]}
     印刷されたマニュアルで，`See'で始まる参照を生成します．コマンドに句読点を続けてください．最初の引数のみ必要です．See @xref.

チップとヒント
*******

ここに，Texinfoドキュメントを書くためのチップがあります．

  * 過去や未来ではなく，現在の時制で書いてください．

  * 積極的に書いてください!例えば，``それは推奨される...''より``我々は推奨する...''と書いてください．

  * 行の補充は70または72を使用してください．長い行は読みにくいです．

  * 著作権の注意と著作権の許可を含めてください．

索引，索引，索引!
.........

異なる方法で多くの索引項目を書いてください．読者は索引が好きです．それらは役に立ち便利です．

テキストの本体に書くように索引項目を書くのが最も簡単ですが，項目を後で書くのを好む人もいます．どちらの場合でも，現れる段落の前に項目を書いてください．こうして，索引項目はページに跨る段落の最初のページを示します．

ここに，我々が貴重だと分かったより多くのヒントがあります．

  * それぞれの項目が，ドキュメントの異なる場所を参照するように，それぞれの索引項目を異なるように書いてください．

  * トピックが意味深く述べられているところにのみ，索引項目を書いてください．例えば，バグレポートの章に``デバッグ情報''の索引を作っても役に立ちません．デバッグ情報を知りたい誰かは，きっとその章でそれを見つけられないでしょう．

  * 全ての概念の索引の，索引項目の最初の単語を一貫して大文字化するか，一貫して小文字を使用してください．簡潔な項目は小文字を要求します．長い項目は大文字を要求します．大文字小文字のどちらを使用する場合でも，一貫して使用してください．2つの形式を混ぜると醜くなります．

  * 国や省略名のように，大文字化や大文字の使用が適切な場合は，索引の単語に対し，常にそのようにしてください．CやLispのように大文字小文字の違いを識別する名前に対し，適切なものを常に使用してください．

  * セクションコマンドの直後にセクション全体を参照する索引コマンドを書き，段落の前に段落を参照する索引コマンドを書いてください．

     以下の例では，空白行が索引項目``Leaping''の後にあります．

          @section The Dog and the Fox
          @cindex Jumping, in general
          @cindex Leaping

          @cindex Dog, lazy, jumped over
          @cindex Lazy dog jumped over
          @cindex Fox, jumps over dog
          @cindex Quick fox jumps over dog
          The quick brown fox jumps over the lazy dog.

     (例で，同じ概念に対する項目を異なる方法で書いていることに注意し--- Lazy dogとDog, lazy---それで読者は，異なる方法で概念を見つけることができます．)

空白行
...

  * セクションコマンドと最初に続く文や段落の間や，セクションコマンドに関連した索引コマンドと最初に続く文や段落の間に，索引のチップで見たように空白行を挿入してください．そうしない場合，フォーマッタはタイトルと段落を一緒にまとめるかも知れません．

  * @tableコマンドの前とと@end tableコマンドの後に，空白行を常に挿入してください．しかし，@tableコマンドの後と@end tableコマンドの前には，空白行を決して挿入しないでください．

     例えば，以下のようにします．

          Types of fox:

          @table @samp
          @item Quick
          Jump over lazy dogs.

          @item Brown
          Also jump over lazy dogs.
          @end table

          @noindent
          On the other hand, ...

     @itemize ... @end itemizeの前後と，同様に @enumerate ... @end enumerateの前後に空白行を挿入してください．

完全な文節
.....

完全な文節は何よりも読み易く...

  * 完全な文として項目に分けられたリストを書いてください．または，少なくとも完全な文節にしてください．不完全な表現... 厄介です ...はこのようなものです．

  * 複数の項目リストや表に対する前置きの文や文節は，完全な表現として書いてください．``You can set:''と書かないでください．代わりに``You can set these variables:''と書いてください．前者の表現は切り離されているように感じます．

エディション，日付と，バージョン
................

全てのマニュアルの3箇所に，エディションとバージョンの番号と日付を書いてください．

 1. Texinfoファイルを読む人のために，最初の@ifinfoセクションに．

 2. 印刷されたマニュアルを読む人のために，@titlepageセクションに．

 3. Infoファイルを読む人のために，`Top'ノードに．

最初の@ifinfoセクションの前の，行っていることを説明するためのメモを書く助けにもなります．

例えば，以下のようにします．

     @c ===> NOTE! <==
     @c Specify the edition and version numbers and date
     @c in *three* places:
     @c   1. First ifinfo section  2. title page  3. top node
     @c To find the locations, search for !!set

     @ifinfo
     @c !!set edition, date, version
     This is Edition 4.03, January 1992,
     of the @cite{GDB Manual} for GDB Version 4.3.
     ...

---または，@setと@valueを使用してください(see @value Example)．

定義コマンド
......

定義コマンドは，@deffn，@defun，@defmacとその同類で，単一の書式で記述を書くことを可能にします．

  * 定義コマンドで定義したそれぞれの項目に対し，定義コマンドを1つだけ書いてください．自動的に索引を作る特徴は，読者を定義に導く索引項目を作成します．

  * @table ... @end tableを関数の概要を含む付録に使用し， @deffnや他の定義コマンドを使用しないでください．

大文字化
....

  * ``Texinfo''を大文字化してください．それは名前です．xやiを大文字で書かないでください．

  * ``Info''を大文字化してください．それは名前です．

  * TeXは@TeX{}コマンドを使用して書いてください．大文字の TとXに注意してください．このコマンドは，TeXを書いた Donald Knuthに希望に従って，フォーマッタに植字させます．

スペース
....

@example ... @end exampleと類似のコマンド内部以外で， Texinfoファイルの書式化のためにスペースを使用しないでください．

例えば，TeXは以下を補充します．

         @kbd{C-x v}
         @kbd{M-x vc-next-action}
            現在のバッファに対応する，
            バージョンで制御されたファイルで，
            次の論理オペレーションを実行する．

そのため以下のように見えます．

     `C-x v' `M-x vc-next-action' 現在のバッファに対応する，バージョンで制御されたファイルで，次の論理オペレーションを実行する．

この場合，テキストは，表を作成する@table，@itemと @itemxで書式化されるべきです．

@code，@samp，@varと，---
.....................

  * コマンド名を含め，Lispシンボルの周りに@codeを使用してください．例えば，以下のようにします．

          主な関数は，@code{vc-next-action}で，...

  * sの様な文字を@codeの直後に置くことを避けてください．そのような文字は醜くなります．

  * メタ変数の周りに@varを使用してください．それらの周りに，山カッコを書かないでください．

  * 長いダッシュ---を示すため，並べて，3つのハイフンを使用してください．TeXは，これらを長いダッシュとして植字し，Infoフォーマッタは，3つのハイフンを2つに削減します．

引用外部のピリオド
.........

句読点が引用の部分でない場合は，ピリオドとその他の句読点を引用の外側に置いてください．この実行は，合州国の出版の慣習に反しますが，読者は引用の内容と文節全体との区別が可能となります．

例えば，終りの引用符の外側にピリオドを文に続けて書くべきです．

     Evidently, au is an abbreviation for ``author''.

auは，author.(単語に続くピリオドと一緒)の省略として提供されていません．

新しい用語の紹介
........

  * 新しい用語を知らない読者が，内容から理解できるように，それを紹介してください．または，用語の定義を書いてください．

     例えば，以下で用語``check in''，``register''と``delta''はすべて，初めて現われます．例文は理解できるように書き換えるべきです．

          The major function assists you in checking in a file to your version control system and registering successive sets of changes to it as deltas.

  * 読者が既に意味を知っていることを期待すべきではなく，この文節から意味を学ぶことを期待していることを示すため，@dfnコマンドを紹介している単語の周りに使用してください．

@pxref
......

設計された特別な文脈以外で，@pxrefを絶対に使用しないでください．カッコの内部で，閉じ弓カッコの直後に閉じカッコを使用します．1つのフォーマッタは自動的に句読点を挿入し，もう1つはそうしません．これは，印刷された出力とInfoファイルで出力は正しく見えますが，それはコマンドがカッコの中で使用されるときだけだということを意味します．

シェルからの呼び出し
..........

Emacs，GCCと，gawkのようなプログラムをシェルから呼び出せます．それぞれのプログラムのドキュメントは，これを述べているセクションを含むべきです．残念ながら，これらのセクションのノード名とタイトルは異なり，読者はセクションを見つけることが困難だと分かります．

そのようなセクションは，`Invoking Emacs'のように，単語`Invoking ...'で始まる文節で名付けてください．この方法で，ユーザーはセクションを簡単に見つけることができます． (訳注:日本語ではどうするべきかは知りません．)

ANSI Cの構文
.........

C関数の呼び出しの慣習を記述するため@exampleを使用するとき，以下のようにANSI C構文を使用してください．

     void dld_init (char *@var{path});

そして次の議論では，再び@varで強調されている同じ引数名で引数の値を参照してください．

以下のような，古いスタイルを避けてください．

     #include <dld.h>

     dld_init (path)
     char *path;

また，関数がヘッダファイルで宣言されていることを示すだけのため，宣言の上に#includeを書くことを避けるのは最善です．その方法は，関数宣言の近くに#includeが属しているという間違った印象を与えるかもしれません．ヘッダファイルが宣言を持つことを明示的に宣言する，またはそれより良い，関数を記述しているセクションの始めで，関数グループのために使用されているヘッダファイルに名前をつけるかのどちらかにしてください．

悪い例
...

ここに，避けるべき悪い書き方の例がいくつか有ります．

この例で，`` ... you must @dfn{check in} the new version.''と言っています．それは，より良くことが運びます．

     When you are done editing the file, you must perform a @dfn{check in}.

以下の例では，``... makes a unified interface such as VC mode possible.''と言っています．

     SCCS, RCS and other version-control systems all perform similar functions in broadly similar ways (it is this resemblance which makes a unified control mode like this possible).

そして，この例では，`it'が何を参照しているのか指定すべきです．

     If you are working with other people, it assists in coordinating everyone's changes so they do not step on each other.

終りに...
......

  * Xをギリシャの`chi'のように，名前`Bach'の最後の発音のようにTeX を発音してください．しかし，Texinfoは`speck'のように``teckinfo''と発音してください．

  * @byeの後のTexinfoファイルの終りに，独自のメモを書いてください．フォーマッタは@byeの後のテキストを処理しません．それは，テキストが@ignore ... @end ignoreの内側にあるのと同じです．

Texinfoファイルの見本
**************

ここに，コメントの無い完全なTexinfoファイルの短い見本があります．最初の章でコメント付のこのファイルを見ることができます．See A Short Sample Texinfo File.

     \input texinfo   @c -*-texinfo-*-
     @c %**start of header
     @setfilename sample.info
     @settitle Sample Document
     @c %**end of header

     @setchapternewpage odd

     @ifinfo
     This is a short example of a complete Texinfo file.

     Copyright 1990 Free Software Foundation, Inc.
     @end ifinfo

     @titlepage
     @sp 10
     @comment The title is printed in a large font.
     @center @titlefont{Sample Title}

     @c The following two commands start the copyright page.
     @page
     @vskip 0pt plus 1filll
     Copyright @copyright{} 1990 Free Software Foundation, Inc.
     @end titlepage

     @node    Top,       First Chapter,         , (dir)
     @comment node-name, next,          previous, up

     @menu
     * First Chapter::    The first chapter is the
                          only chapter in this sample.
     * Concept Index::    This index has two entries.
     @end menu

     @node    First Chapter, Concept Index, Top,      Top
     @comment node-name,     next,          previous, up
     @chapter First Chapter
     @cindex Sample index entry

     This is the contents of the first chapter.
     @cindex Another sample index entry

     Here is a numbered list.

     @enumerate
     @item
     This is the first item.

     @item
     This is the second item.
     @end enumerate

     The @code{makeinfo} and @code{texinfo-format-buffer}
     commands transform a Texinfo file such as this into
     an Info file; and @TeX{} typesets it for a printed
     manual.

     @node    Concept Index,    ,  First Chapter, Top
     @comment node-name,    next,  previous,      up
     @unnumbered Concept Index

     @printindex cp

     @contents
     @bye

許可の見本
*****

Texinfoファイルは，読者に，Texinfoファイル，Infoファイルと，印刷されたマニュアルのコピーと配布の権利があることを告げるセクションを含むべきです．

また，ソフトウェアに関するマニュアルを書いている場合，ソフトウエアがフリーであることを説明し，GNU General Public License (GPL)，または，それへの参照を含めるべきです．ドキュメントのソフトウェアの``配布''，``一般公有使用許諾書''と，``無保証''のセクションで使用可能なテキストの例は， see Distribution (The GNU Emacs Manual).  与えられる権利にコピーの条件を供給する短い説明の例は，see Texinfo Copying Conditions.

許可の挿入
=====

Texinfoファイルでは，最初の@ifinfoセクションは，通常ファイルがドキュメント化しているものについて述べる行で始まります．これは処理されていないTexinfoファイルを読んでいる，または，アドバンスInfoコマンドg * を使用している人が，最初に見るものです．詳細は，see Advanced Info commands (info).  (標準のInfoコマンドを使用している読者は，普通は最初のノードから読み始め，ノードにない，この最初のセクションを飛ばします．)

@ifinfoセクションでは，文の概要は著作権の注意が続き，そしてコピーの許可の注意が続きます．コピーの許可の段落の1つは，@ignoreと @end ignoreコマンドで囲まれています．この段落は，印刷されたマニュアルがコピーの許可の注意を適切に供給する場合，TexinfoファイルをTeXと印刷で処理できることを宣言しています．この段落は，Infoファイルに適切ではないので，Infoファイルの部分にはなりません．しかしそれは，TexinfoファイルをTeXと結果の印刷で処理する人への許可なので，Texinfoファイルの一部として必須です．

印刷されたマニュアルでは，Free Software Foundationのコピー許可の注意は著作権の注意と配布情報に続き， @titlepageと@end titlepage コマンドで分離された領域に配置されます．コピー許可の注意は， @ignoreと@end ignoreで囲まれた段落が，注意の部分に無い以外，正確に@ifinfoセクションの注意と同じです．

Texinfoファイルのそれぞれのセクションに許可の注意の挿入を簡単にするため，それぞれのセクションに対する許可の注意の見本は，以下に完全に再現されています．

許可の注意で言及された，正しいセクション名を指定する必要があるかも知れません．例えば，The GDB Manualで，一般公有使用許諾書を参照しているセクションは，``GDB General Public License''と呼ばれていますが，以下に表示している例では，セクションは一般に``GNU General Public License''を参照しています．Texinfoファイルが一般公有使用許諾書のコピーをもたらさない場合，それへの参照を削除し，残りの文を含めることを確認してください．

ifinfoコピー許可
===========

Texinfoの@ifinfoセクションでは，標準的なFree Software Foundation の許可の注意は次のように読みます．

     This file documents ...

     Copyright 1999 Free Software Foundation, Inc.

     Permission is granted to make and distribute verbatim
     copies of this manual provided the copyright notice and
     this permission notice are preserved on all copies.

     @ignore
     Permission is granted to process this file through TeX
     and print the results, provided the printed document
     carries a copying permission notice identical to this
     one except for the removal of this paragraph (this
     paragraph not being relevant to the printed manual).

     @end ignore
     Permission is granted to copy and distribute modified
     versions of this manual under the conditions for
     verbatim copying, provided also that the sections
     entitled ``Copying'' and ``GNU General Public License''
     are included exactly as in the original, and provided
     that the entire resulting derived work is distributed
     under the terms of a permission notice identical to this
     one.

     Permission is granted to copy and distribute
     translations of this manual into another language,
     under the above conditions for modified versions,
     except that this permission notice may be stated in a
     translation approved by the Free Software Foundation.

タイトルページのコピー許可
=============

Texinfoファイルの@titlepageセクションでは，標準的なFree Software Foundationのコピーの許可の注意は著作権と出版情報に続きます．標準的な文は以下の通りです．

     Permission is granted to make and distribute verbatim
     copies of this manual provided the copyright notice and
     this permission notice are preserved on all copies.

     Permission is granted to copy and distribute modified
     versions of this manual under the conditions for
     verbatim copying, provided also that the sections
     entitled ``Copying'' and ``GNU General Public License''
     are included exactly as in the original, and provided
     that the entire resulting derived work is distributed
     under the terms of a permission notice identical to this
     one.

     Permission is granted to copy and distribute
     translations of this manual into another language,
     under the above conditions for modified versions,
     except that this permission notice may be stated in a
     translation approved by the Free Software Foundation.

インクルードファイル
**********

TeXInfo書式化コマンドが，Texinfoファイルの@includeコマンドを見るとき，それはコマンドで名指しされたファイルの内容を処理し，作成されているDVIやInfoファイルに組み入れます．インクルードファイルからの索引項目は，出力ファイルの索引に組み入れられます．

インクルードファイルは，便利な小さい部分の収集物として，単一な大きなドキュメントを保持させます．

インクルードファイルの使用方法
===============

他のファイルをTexinfoファイルにインクルードするため，@includeコマンドを行の最初に書き，同じ行にインクルードするファイル名を続けてください．例えば以下のようにします．

     @include buffers.texi

インクルードファイルは，単に，全体をインクルードするのを期待する，または，外部のTexinfoファイルにある，テキストの部分にすべきです。それは， Texinfoファイルの標準的な始めと終りを含むべきではありません．特に，インクルードファイルを，\input texinfoと述べている行から始めるべきではありません．そうする場合，その文節は出力ファイルにそのまま挿入されます．同様に，インクルードファイルを@byeコマンドで終えるべきではありません．@bye以降は，全く書式化されません．

過去に，インクルードファイルの最初に@setfilename行を書くことを要求されていましたが，もはやそうでははありません．今では，そのような行を書くかどうかは重要ではありません．@setfilename行がインクルードファイルに存在する場合，それは無視されます．

慣習的に，インクルードファイルは，@chapter行が続く@node 行で始めます．それぞれのインクルードファイルは1つの章です．これは，通常のノードとメニューを作成更新する，ノードポインタとメニューをインクルードファイルに作成するコマンドの使用を簡単にします．しかし，単純なEmacsのノードとメニューを作成更新するコマンドは，多数のTexnfoファイルでは働きません．このため，それらのコマンドを，インクルードファイルで始まる@node 行の`Next'，`Previous'と，`Up'ポインタを補充するために使用できません．同様に，ファイル全体のマスターメニューを作成する通常のコマンドも使用できません．メニューと`Next'，`Previous'と，`Up'ポインタを手で挿入するか，GNU Emacs Texinfoモードのコマンド，texinfo-multiple-files-updateを使用する必要があり，それは@includeファイルに対し設計されています．

texinfo-multiple-files-update
=============================

GNU Emacs Texinfoモードは，texinfo-multiple-files-updateコマンドを供給します．このコマンドは，インクルードファイルの`Next'，`Previous'と， `Up' ポインタを，外部や全体的なTexinfoファイルに対するものと同様に作成更新し，それは外部ファイルのメインメニューを作成更新します．オプションの引数での呼び出しに依存して，コマンドはインクルードファイルやそれら全ての最初の@node行のポインタのみを更新します．

M-x texinfo-multiple-files-update
     引数無しでの呼び出し．

       - 外部や全体的なTexnfoファイルでインクルードされる，それぞれのファイルの最初の@node行の，`Next'，`Previous'と，`Up'ポインタの作成と更新．

       - 外部や全体的なファイルの`Top'レベルのノードポインタの作成と更新．

       - 外部ファイルのメインメニューの作成と更新．

C-u M-x texinfo-multiple-files-update
     前置引数としてC-uで呼び出し．

       - それぞれのインクルードファイルの，最初の@node行のポインタの作成と更新．

       - 外部ファイルの`Top'レベルノードポインタの作成と更新．

       - 外部ファイルのマスターメニューの作成と挿入．マスターメニューは，全てのインクルードファイルの全てのメニューから作成されます．

C-u 8 M-x texinfo-multiple-files-update
     C-u 8のような，数字の引数での呼び出し．

       - 全てのインクルードファイルの，全ての，`Next'，`Previous'と， `Up'ポインタの作成と更新．

       - 全てのインクルードファイルの，全てのメニューの作成と更新．

       - 外部や全体的なファイルの`Top'レベルノードポインタの作成と更新．

       - 外部ファイルのマスターメニューの作成．これは，1つのファイルでの引数を持つtexinfo-master-menuの呼び出しに似ています．

対話的な使用での前置引数の使用の注意：通常の前置引数C-uを伴う場合，texinfo-multiple-files-updateコマンドはマスターメニューを挿入します．C-u 8のような，数字の前置引数を伴う場合，コマンドは，全てのファイルの全てのポインタとメニューを更新し，マスターメニューを更新します．

インクルードファイルの必要条件
===============

texinfo-multiple-files-updateコマンドの使用を計画している場合，その中でインクルードファイルをリストアップしている外部のTexinfoファイルは， Texinfoファイルの最初と最後の部分と，インクルードファイルをリストアップしている@includeコマンド以外，何も含めるべきではありません．それは，索引さえ含めるべきではなく，それはインクルードファイル自身にリストアップすべきです．

さらに，それぞれのインクルードファイルは，正確に1つの最上位のノード(慣習的に，@chapterまたはそれと同等のもの)を含む必要があり，このノードはインクルードファイルの最初のノードにする必要があります．さらに，それぞれのインクルードファイルの中の，それぞれのこれらの最上位レベルのノードは，ファイル構造で同じ階層レベルにする必要があります．通常，それぞれ @chapter，@appendixまたは，@unnumberedにします．このように，それぞれのインクルードファイルは，1つのそして唯一の，章や同等のレベルのノードを含みます．

外部ファイルは1つのノード，`Top'ノードのみを含みます．それは，単一の`Top'ノードの他の，あらゆるノードを含むべきではありません． texinfo-multiple-files-updateコマンドは，それらを処理しません．

@includeを用いたファイルの見本
===================

ここに，メインまたはマスターメニューを挿入する texinfo-multiple-files-updateを実行する前の，その中に @includeファイルを用いた外部のTexinfoファイルの完全な例があります．

     \input texinfo @c -*-texinfo-*-
     @setfilename  include-example.info
     @settitle Include Example

     @setchapternewpage odd
     @titlepage
     @sp 12
     @center @titlefont{Include Example}
     @sp 2
     @center by Whom Ever

     @page
     @vskip 0pt plus 1filll
     Copyright @copyright{} 1999 Free Software Foundation, Inc.
     @end titlepage

     @ifinfo
     @node Top, First, , (dir)
     @top Master Menu
     @end ifinfo

     @include foo.texinfo
     @include bar.texinfo
     @include concept-index.texinfo

     @summarycontents
     @contents

     @bye

foo.texinfoのようなインクルードファイルは，以下のようになります．

     @node First, Second, , Top
     @chapter First Chapter

     Contents of first chapter ...

完全な内容のconcept-index.texinfoは，このように簡単になります．

     @node Concept Index
     @unnumbered Concept Index

     @printindex cp

The GNU Emacs Lisp Reference Manualの外部のTexinfoソースファイルは，elisp.texiという名前です．外部ファイルは，417項目の外部ファイルと，41の@includeリストを含んでいます．

インクルードファイルの進化
=============

Infoが最初に作成されたとき，それは1つの主題に多くの小さなInfoファイルを作成することが慣習的でした．それぞれのInfoファイルは，その独自のTexinfo ファイルから書式化されました．この慣習は，情報が欲しいとき，大きなInfoファイル全体を保つため，Emacsが大きなバッファを作る必要がないことを意味します．その代わり，探している特定の情報を含む小さなInfoファイルのために， Emacsはちょうど十分なメモリを確保していました．

1つのファイルから他への参照は，ノード名同様，ファイル名で参照されていました．(see Referring to Other Info Files.  また， @xref with Four and Five Arguments,を参照してください．)

インクルードファイルは主に，単一の大きな印刷されたマニュアルを，複数のより小さなInfoファイルから作成する方法として設計されました．印刷されたマニュアルでは，全ての参照は同じドキュメントにあり，それでTeXは自動的に参照ページ数を決定できました．Info書式化コマンドは，つながった索引を作成するためのみにインクルードファイルを使用していました．それぞれの個別の Texinfoファイルは，個別のInfoに書式化する必要がありました．(それゆえ，それぞれ独自の@setfilename行が必要でした．)

しかし，現在大きなファイルは自動的に分けられるので，それはもはや小さいままにする必要がありません．

最近，複数のTexinfoファイルは，The GNU Emacs Lisp Reference Manualのような大きなドキュメントのためと，複数の異なる人々がドキュメントの異なるセクションを同時に書くプロジェクトのために，ほとんど使用されています．

さらに，Info書式化コマンドは，必要な場合より小さく分割される，単一の大きなInfoファイルを作成するため，@includeコマンドで働くように拡張されています．これは，メニューや相互参照を異なるTexinfoファイルを名指せずに書くことができることを意味します．

ページ見出し
******

ほとんどの印刷されたマニュアルは，タイトルと著作権のページ以外の全てのページの上側に沿っている見出しを含みます．フッタを含むマニュアルもあります． (見出しとフッタはInfoでは意味がなく，それはページが付いていません．)

見出しの導入
======

Texinfoは，それぞれの紙の片側に印刷されるマニュアルと，紙の両面に印刷されるマニュアルのための，標準的なページ見出し書式を提供します．通常はこれらの書式を使用しますが，希望があれば独自の書式を指定できます．

更に，章を新しいページで始めるか，前の章と同じページに続けるかを指定できます．そして，章を新しいページで始める場合，奇数番号のページから始めるように指定できます．

慣習では，本は紙の両面に印刷されます．本を開いたとき，右側のページが奇数番号で，章は右側のページから始まります---前にある左側のページは必要な場合は空白のままです．しかし，報告書は，片面に印刷され，章は前の章が終った直後に改ページされて始まることが多いです．短い情報的な報告書では，章は新しいページを開始することは全くありませんが，小量の空白をテキストの前に置いて分けられます．

@setchapternewpageコマンドは，章を新しいページで始めるかどうかと，標準的な見出しの書式の1つを使用するかどうかを制御します．Texinfoは，独自の見出しとフッタの書式を使用生成するために，使用可能な見出しとフッタコマンドがいくつかあります．

Texinfoでは，見出しとフッタは，ページの上側と下側の単一行です．複数行の見出しとフッタは作成できません．それぞれのヘッダとフッタ行は，3つの部分に分けられます．左側の部分，真中の部分と，右側の部分です．あらゆる部分，または行全体は，空白のままにすることもできます．ヘッダとフッタ行の左の部分に対するテキストは，左寄せになります．真中の部分のテキストはセンタリングされます．そして，右の部分のテキストは右寄せになります．

標準的な見出しの書式
==========

Texinfoは，2つの標準的な見出しの書式を供給し，1つは紙のそれぞれのページの片面に印刷されたマニュアルのためで，もう1つは紙の両面に印刷されたマニュアルのためです．

デフォルトで，Texinfoファイルのフッタは指定されず，フッタは空白のままです．

片面印刷の標準的な書式は，左側の部分が章の名前を含み，真中の部分が空白で，右側の部分がページ番号となっているヘッダから成り立ちます．

片面ページは以下のようになります．

        _______________________
       |                       |
       | chapter   page number |
       |                       |
       | Start of text ...     |
       | ...                   |
       |                       |

両面印刷の標準的な書式はページ番号が偶数か奇数かに依存します．慣習では，偶数番号のページは左，奇数番号のページは右側になります．(TeXは，左右の余白の幅を調整します．通常，幅は正しいのですが，両面印刷のとき，ページが正しく結びつけられているか調べた方が賢明です---時々プリンタは，奇数ページの余白より大きな右側の余白を持つ偶数ページで出力を生成します．)

標準的な両面の書式では，左側(偶数番号)のページの左側の部分はページ番号を含み，真中の部分は空白で，右側の部分は(@settitleコマンドで指定された)タイトルを含みます．右側(奇数番号)のページの左側の部分は章の名前を含み，真中の部分は空白で，右側の部分はページ番号を含みます．

両側に開いた本の2ページは，以下のようになります．

        _______________________     _______________________
       |                       |   |                       |
       | page number     title |   | chapter   page number |
       |                       |   |                       |
       | Start of text ...     |   | More  text ...        |
       | ...                   |   | ...                   |
       |                       |   |                       |

章の名前は，単語``Chapter'' (訳注:これはtxi-??.texで変更可能です．)，章の番号と，コロンが前置されます．これは，マニュアルの現在の場所の記録追跡をより簡単にします．

見出しの形式の指定
=========

TeXは，@end titlepageコマンドに至るまで，標準的なTexinfoファイルに対しページ見出しの生成を開始しません．このため，タイトルと著作権のページは番号が付きません．@end titlepageコマンドは， @titlepageセクションの前にある@setchapternewpageコマンドで指定された標準的な書式によって，TeXにページ見出しの生成を開始させます．

可能性は4つあります．

No @setchapternewpage command

@setchapternewpageコマンド無し
     章を新しいページで開始する片面見出しの書式をTeXに指定します．これは， @setchapternewpage onと同じです．

@setchapternewpage on
     章を新しいページで開始する片面見出しの書式を指定します．

@setchapternewpage off
     新しい章を，前の章のページの最後と同じページで，いくらか縦方向の空白を開けて，TeXに開始させます．また，TeXに片面ページで植字させます． (@headings doubleコマンドでヘッダの書式を優先できます． The @headings Command,を参照してください．)

@setchapternewpage odd
     章を新しいページで開始する両面の書式を指定します．

Texinfoは@setchapternewpage evenコマンドはありません．

独自の見出しの作成方法
===========

Texinfoで提供される標準的な見出しを使用したり，独自のものを指定したりできます．デフォルトで，Texinfoはフッタが無く，そのため指定した場合，主なテキストのための利用可能なページサイズがわずかに減少します．

Texinfoは見出しとフッタを指定する6つのコマンドを提供します．

  * @everyheadingと@everyfootingは，偶数と奇数の番号のページの両方に，同じページヘッダとフッタを生成します．

  * @evenheadingと@evenfootingコマンドは，偶数番号(左側)のページにヘッダとフッタを生成します．

  * @oddheadingと@oddfootingコマンドは，奇数番号(右側)のページにヘッダとフッタを生成します．

Texinfoファイルの@end titlepageコマンド直後に，カスタムの見出し指定を書いてください．texinfo-format-bufferコマンドがそれらを認識しない可能性があるので，指定を@iftexと@end iftexで囲んでください．また，前もって定義した見出しコマンドを，独自の指定の定義をする前に@headings off コマンドで中止する必要があります．

ここに，偶数と奇数の番号のページの両方の全てのヘッダに，章の名前を左側に，ページ番号を真中に，日付を右側に置くよう，TeXに伝える方法があります．

     @iftex
     @headings off
     @everyheading @thischapter @| @thispage @| @today{}
     @end iftex

真中の部分と左の部分，そして右の部分と真中の部分を，部分同士の間に @|を挿入して分ける必要があります．そうしない場合，指定コマンドは，一部分のテキストの終りと次の部分の始めの位置を伝えることができません．

それぞれの部分は，テキストや@-コマンドを含むことができます．本体のページにある，通常の段落にある部分のようにテキストは印刷されます．@-コマンドはページ番号，日付，章の名前や，あらゆるものに，それ自身が置換されます．

ここに，6つの見出しとフッタのコマンドがあります．

@everyheading LEFT @| CENTER @| RIGHT
@everyfooting LEFT @| CENTER @| RIGHT

     `every'コマンドは，偶数と奇数の番号のページ両方の書式を指定します．これらのコマンドは，それぞれの紙の片面に印刷されるドキュメントや，対称なヘッダとフッタにしたいドキュメントのためのものです．

@evenheading LEFT @| CENTER @| RIGHT
@oddheading  LEFT @| CENTER @| RIGHT

@evenfooting LEFT @| CENTER @| RIGHT
@oddfooting  LEFT @| CENTER @| RIGHT

     `even'と`odd'コマンドは，偶数番号のページと奇数番号のページの書式を指定します．これらのコマンドは，本と，それぞれの紙の両面に印刷されるマニュアルのためのものです．

章とセクションの名前とページ番号を提供するため，@this...シリーズの@-コマンドを使用してください．

ここに@this...コマンドがあります．

@thispage
     現在のページ番号を展開します．

@thischaptername
     現在の章の名前を展開します．

@thischapter
     現在の章の番号と名前を，書式`Chapter 1: Title'に展開します．

@thistitle
     ドキュメントの名前を@settitleで指定されているように展開します．

@thisfile
     @includeファイルのためだけです: 現在の@includeファイルの名前に展開します．現在のTexinfoソースファイルが@includeファイルではない場合，このコマンドは効果がありません．このコマンドは， @includeファイルではない場合，現在のTexinfoソースファイルの名前を提供しません．( @includeファイルの詳細は，see Include Files.)

@today{}コマンドも使用でき，それは現在の日付を`1 Jan 1900'書式で展開します．

その他の@-コマンドとテキストは，ページの本体に書かれているかのようにヘッダとフッタに印刷されます．それは，特にドラフトを書いているとき，テキストを組み入れることに役立ちます．

     @iftex
     @headings off
     @everyheading @emph{Draft!} @| @thispage @| @thischapter
     @everyfooting @| @| Version: 0.27: @today{}
     @end iftex

余りに長いタイトルへの注意: それらは他のヘッダやフッタの部分に重なり，隠してしまう可能性があります．

書式化の失敗
******

ドキュメントの内容のミス以外に，Texinfoで犯す2種類のミスがあります: @- コマンドでミスを犯し，ノードと章の構造でミスを犯します．

Emacsは@-コマンドのミスを捕らえる2つのツールと，構造のミスを捕らえる2つの方法があります．

@-コマンドの問題を見つけるため，問題の有る領域で，TeXや領域の書式化コマンドを実行することができます．これらのコマンドを，書いているときにそれぞれの領域で本当に実行できます．

ノードと章の構造の問題を見つけるため，C-c C-s (texinfo-show-structure)と関連するoccurコマンドを使用することができ，そして，M-x Info-validateを使用することができます．

makeinfoが見つけるエラー
================

makeinfoプログラムはエラーを捕らえそれらを報告する優れた仕事を行います---texinfo-format-regionやtexinfo-format-bufferより遥かに優れています．さらに，自動的にノードポインタとメニューを作成更新する様々な機能は，人間のエラーに対し多くの機会を取り除きます．

ポインタとメニューを作成したり挿入したりする更新コマンドを，できる限り使用してください．そして，makeinfo(または，Texinfoモードの表現の makeinfo-regionとmakeinfo-buffer)を，ファイルを書式化したり他のエラーを調べるために使用してください．これは，Texinfoで仕事をすることに対する最善の方法です．しかし，makeinfoを使用できない，または，問題が大変難問な場合，この付録で記述されているツールを使用したいと思うかも知れません．

Infoの書式化でエラーを捕らえる
=================

Texinfoファイルの部分を書いた後，領域の書式化が正確かどうかを見るために， texinfo-format-regionやmakeinfo-regionコマンドを使用できます．

しかしほとんどの場合，とある理由でmakeinfo-regionコマンドが使えないためにこのセクションを読んでいることでしょう．それゆえ，このセクションの残りは，texinfo-format-regionの使用を想定します．

@-コマンドでミスを犯した場合，texinfo-format-regionはエラー時またはその後で処理を停止し，エラーメッセージを表示します．エラーが発生したバッファを見るために，*Info Region*バッファに切替えてください．カーソルはエラーの位置の後にあります．また，テキストはエラーが発生した(または，より正確にはそれが検出された)後は書式化されません．

例えば偶然，@end menuの代わりに，最後に`s'が付いたコマンド @end menusでメニューを終了した場合，以下のようなエラーメッセージを得るでしょう．

     @end menus is not handled by texinfo

カーソルは，バッファ内で，エラーが発生した，またはそう遠くない後で止まります．バッファは以下のようになります．

     ---------- Buffer: *Info Region* ----------
     * Menu:

     * Using texinfo-show-structure::  How to use
                                       `texinfo-show-structure'
                                       to catch mistakes.
     * Running Info-Validate::         How to check for
                                       unreferenced nodes.
     @end menus
     -!-
     ---------- Buffer: *Info Region* ----------

texinfo-format-regionコマンドは，ちょっと変わったエラーメッセージを提供することもあります．例えば，書式化で相互参照の追跡で失敗したとします．

     (@xref{Catching Mistakes, for more info.)

この場合，texinfo-format-regionは，足りない閉じカッコを検出しますが，メッセージは，Unbalanced bracesではなく，Unbalanced parenthesesになります．これは，書式化コマンドが，カッコであるかのように弓カッコの不一致を探すためです．

texinfo-format-regionはミスの検出に失敗するときもあります．例えば，以下では，閉じカッコと閉じ弓カッコが置き換わっています．

     (@xref{Catching Mistakes), for more info.}

書式化は以下を生成します．

     (*Note for more info.: Catching Mistakes)

このエラーを検出する唯一の方法は，以下のように参照を実現することです．

     (*Note Catching Mistakes::, for more info.)

ついでに，Infoでこのノードを読んでいて，f RET (Info-follow-reference)を入力した場合，以下のエラーメッセージを生成するでしょう．

     No such node: "Catching Mistakes) The only way ...

これは，Infoがエラーの例を，このノードの最初の相互参照として供給するためで，Infoのfコマンドの直後にRETを入力した場合，Infoは参照ノードに行こうと試みるでしょう．f catch TAB RETと入力した場合，Infoは正確に書かれている例のノード名を認知し，`Catching Mistakes' ノードへ連れて行くでしょう．(これを試みる場合，l(Info-last) を入力し，`Catching Mistakes'に戻ることができます．)

TeX書式化でエラーを捕らえる
===============

TeXでファイルを書式化しているときも，ミスを捕らえることができます．

通常，texinfo-format-bufferは，TeXより有意義なエラーメッセージを表示するときもあるので，同じファイルでtexinfo-format-buffer(や，それより良いmakeinfo-buffer)を実行後こうしたいと思います． (see Debugging with Info, for more information.)

例えば，TexinfoファイルでTeXを実行した時の一部を以下に示します．

     ---------- Buffer: texinfo.texi ----------
     name of the Texinfo file as an extension.  The
     @samp{??} are `wildcards' that cause the shell to
     substitute all the raw index files.  (@xref{sorting
     indices, for more information about sorting
     indices.)@refill
     ---------- Buffer: texinfo.texi ----------

(相互参照に閉じカッコがありません．)TeXは停止した後，以下の出力を生成します．

     ---------- Buffer: *tex-shell* ----------
     Runaway argument?
     {sorting indices, for more information about sorting
     indices.) @refill @ETC.
     ! Paragraph ended before @xref was complete.
     <to be read again>
                        @par
     l.27

     ?
     ---------- Buffer: *tex-shell* ----------

この場合，TeXは正確で理解できるエラーメッセージを生成しました．

     Paragraph ended before @xref was complete.

@parは，Texinfoと関係が無い，内部TeXコマンドです．l.27 は，TeXが問題をTexinfoファイルの27行で検出したという意味です． ?は，この環境でTeXが使用するプロンプトです．

残念ながら，TeXは常に役に立つ訳ではなく，時々間違ったものを発見するため，本当にシャーロック ホームズになる必要があります．

あらゆる場合で，このような問題に遭遇した場合，3つのことを行うことができます．

 1. ?プロンプトでRETを入力することで，実行を続け，このエラーを無視するようTeXに伝えることができます．

 2. ?プロンプトでr RETを入力することで，実行を続け，最善の方法として全てのエラーを無視するようTeXに伝えることができます．

     これは最善のことが多いです．しかし，用心してください．1つのエラーが更なるエラーメッセージのカスケードを生成し，その結果はファイルの残り全体だと感じるかも知れません．そのようなエラーメッセージの雪崩を生成している時に TeXを止めるため，C-c(または，Emacsの内部シェルで実行している場合はC-c C-c)を入力してください．

 3. ?プロンプトでx RETを入力することで，この実行を停止するようTeXに伝えることができます．

Emacs内部でTeXを実行している場合，シェルバッファとTeXが?プロンプトを出している行を，切替える必要があります．

TeXは，問題があってもエラーメッセージを生成せずにファイルを書式化するときもあります．これは通常，コマンドが終っていないが，TeXは処理を続けられる場合生じます．例えば，@end itemizeコマンドで項目分けリストを終了するのに失敗した場合，TeXは印刷出力可能なDVIファイルを書き出します．TeXが与えるエラーメッセージは幾分不可思議な以下のようなコメントだけです．

     (@end occurred inside a group at level 1)

しかし，DVIファイルを印刷した場合，項目分けリストに続くファイルのテキストが，項目分けリストの最後の項目の部分であるかのように，全部字下げされていることが分かります．エラーメッセージは，TeXが，ファイルで @end コマンドを見つかることを期待していたが，必要なところで決定できなかったということです．

エラーを見つけにくいと悪名高いもう1つのソースは，@end groupコマンドが無いことです．理解できないエラーで困惑している場合，最初に @end groupコマンドが無いものを探してください．

Texinfoファイルにヘッダが欠けている場合，TeXは実行の最初で停止し，以下のような出力を表示します．*はTeXが入力を待っていることを示しています．

     This is TeX, Version 3.14159 (Web2c 7.0)
     (test.texinfo [1])
     *

この場合，アスタリスクの後で\end RETを単純に入力してください．そして，Texinfoファイルのヘッダ行を書き，もう一度TeXコマンドを実行してください．(バックスラッシュ\の使用に注意してください．TeXは @の代わりに\を使用します．そしてこの場合，Texinfoではなく，直接TeXで作業しています．)

texinfo-show-structureの使用
=========================

Texinfoファイルの，ノード，章，セクションと，サブセクションの記録追跡は，常に簡単ではありません．これは，他人が書いたTexinfoファイルを修正追加している場合，特に真です．

GNU EmacsのTexinfoモードでは，texinfo-show-structureコマンドは，構造を指定する@-コマンドで始まる全ての行をリストアップします． @chapter，@section，@appendix等です．引数(対話的な場合は，前置引数C-u)を用いた場合，コマンドは@node行も表示します．texinfo-show-structureコマンドは，Texinfoモードで C-c C-sに，デフォルトでバインドされています．

行は，*Occur*と呼ばれるバッファに，階層レベルで字下げされて表示されます．例えば以下は，このマニュアルでのtexinfo-show-structureを実行が生成したものの一部です．

      Lines matching "^@\\(chapter \\|sect\\|subs\\|subh\\|
      unnum\\|major\\|chapheading \\|heading \\|appendix\\)"
      in buffer texinfo.texi.
      ...
      4177:@chapter Nodes
      4198:    @heading Two Paths
      4231:    @section Node and Menu Illustration
      4337:    @section The @code{@@node} Command
      4393:        @subheading Choosing Node and Pointer Names
      4417:        @subsection How to Write an @code{@@node} Line
      4469:        @subsection @code{@@node} Line Tips
      ...

これは，texinfo.txiファイルの4337，4393と，4417行が，それぞれ @section，@subheadingと，@subsectionで始まっていることを告げています．カーソルを*Occur*ウィンドウに移動した場合， Texinfoファイルで対応する場所にジャンプするため，行の1つにカーソルを置き， C-c C-cコマンド(occur-mode-goto-occurrence)を使用することができます．occur-mode-goto-occurrenceに関する詳細は，see Using Occur (The GNU Emacs Manual).

*Occur*ウィンドウの最初の行は，TEXINFO-HEADING-PATTERNで指定された正規表現の記述です．この正規表現は， texinfo-show-structureが探すパターンです．詳細は，see Using Regular Expressions (The GNU Emacs Manual).

texinfo-show-structureコマンドを呼び出すとき，Emacsはバッファ全体の構造を表示します．バッファの一部のみ，例えば1つの章の構造を見たい場合，領域をマークするため，C-x n n (narrow-to-region)コマンドを使用します．(see Narrowing (The GNU Emacs Manual).)これは，上記の生成で使用された例の方法です．(再びバッファ全体を見るため， C-x n w (widen)を使用してください．)

C-u C-c C-sと入力して，前置引数を用いて texinfo-show-structureを呼び出す場合，@chapter， @sectionに対する@-サインコマンドで始まる行と同様に， @nodeで始まる行をリストアップします．

*Occur*ウィンドウのリストを見ることで，Texinfoファイルの構造を思い出すことができます．そして，間違った名前のノードや飛ばしたセクションがある場合，ミスを修正可能です．

occurの使用
========

texinfo-show-structureコマンドが，余りに多い情報を生成するときもあります．おそらく，Texinfoファイルの全体的な構造を思い出したいとき， texinfo-show-structureが生成した詳細なリストに圧倒されます．この場合，occurコマンドを直接使用できます．こうするため，以下のように入力します．

     M-x occur

その後で，regexpの形式で入力を促されたとき，一致させたいパターンの正規表現を入力してください．(see Regular Expressions (The GNU Emacs Manual).)occurコマンドは，バッファの現在のカーソル位置からバッファの終りまで働きます．バッファ全体でoccurを実行したい場合，カーソルをバッファの最初に置いてください．

例えば，その中に@chapterを含む行の全てを見たい場合， @chapterを入力してください．これは章のリストを生成します．それは，行の真中に@chapterがある文も，全てリストアップします．

単語@chapterで始まるこれらの行のみを見たい場合，occurで入力を促されたとき，^@chapterを入力してください．単語や文節で終る全ての行を見たい場合，例えばcatching mistakes$のように，$ で単語の終りを終えてください．これは，同じ章やセクションの部分の，それゆえ同じ`Up'ポインタを持っている全てのノードと，を見たいとき役に立つはずです．

詳細は，see Using Occur (The GNU Emacs Manual).

悪いノード参照を見つける
============

あらゆる`Next'，`Previous'，`Up'やその他のノードポインタがノードを指し示すことに失敗しているかどうかを調べるため，Info-validateを使用することができます．このコマンドは，全てのノードポインタが存在するノードを指し示していることを調べます．Info-validateコマンドは，Texinfoファイルではなく，Infoファイルでのみ働きます．

makeinfoプログラムは，自動的にポインタの有効の調査を行い，そのためmakeinfoを使用している場合，Info-validateを使用する必要はありません．makeinfoを実行できず，その代わりに texinfo-format-regionやtexinfo-format-bufferを使用している場合や，スクラッチからInfoファイルを書く場合のみ，Info-validateを使用する必要があります．

Info-validateの実行
----------------

Info-validateを使用するため，調査したいInfoファイルに移動し，以下を入力してください．

     M-x Info-validate

Info-validateコマンドは大文字の`I'を必要とすることに注意してください．また，Info-validateを実行する前にタグ表を作成する必要があるかも知れません．See Tagifying.

ファイルが有効な場合，``File appears valid''というメッセージを受け取ります．しかし，ノードを指し示さないポインタがある場合，*problems in info file*と呼ばれるバッファにエラーメッセージが表示されます．

例えば，Info-validateは，このマニュアルの最初のノードのみを含むテストファイルで実行されたとします．メッセージの1つは以下のようになります．

     In node "Overview", invalid Next: Texinfo Mode

この意味は，Overviewと呼ばれるノードに，何も指し示さない`Next'ポインタがあるということを意味します(テストファイルには1つのノードしかないので，この場合はそうなります．)．

今，我々がTexinfo Modeという名のノードをテストケースに加えますが，このノードの`Previous'を指定しないとします．そのとき我々は，以下のようなエラーメッセージを得ます．

     In node "Texinfo Mode", should have Previous: Overview

これは，全ての`Next'ポインタは，戻るための(`Next'を示すノードにある) `Previous'に一致すべきだからです．

Info-validateは，全てのメニュー項目と相互参照が，実際にノードを指し示していることも調べます．

Info-validateはタグ表が必要で，分けられたファイルでは動作しません． (texinfo-format-bufferコマンドは，大きなファイルを自動的に分けます．)大きなファイルでInfo-validateを使用するため，Infoファイルが分けられないように，引数を用いてtexinfo-format-bufferを実行する必要があります．そして，分けられていないファイルのためタグ表を作成する必要があります．

分けられていないファイルの作成
---------------

Info-validateは，タグ表を持った単一のInfoファイルのでのみ実行可能です．コマンドは，マスターファイルが分けられたとき生成されたサブファイルで，間接的に働きません．(70,000バイトかそれくらい以上の)大きなファイルがある場合，間接的なサブファイルを生成しないような方法で， texinfo-format-bufferやmakeinfo-bufferコマンドを実行する必要があります．Infoファイルのためのタグ表も作成する必要があります．これを行った後，Info-validateを実行し，悪い参照ノードを探すことが可能となります．

第一段階は分けられていないInfoファイルを作成することです． texinfo-format-bufferがTexinfoファイルをより小さなInfoファイルに分けるのを避けるため，M-x texinfo-format-bufferコマンドに前置引数を与えてください．

     C-u M-x texinfo-format-buffer

または，こうします．

     C-u C-c C-e C-b

こうしたとき，Texinfoはファイルを分けず，そのタグ表を生成しません．

ファイルのタグ付け
---------

分かれていないInfoファイルを作成後，そのためのタグ表を作成する必要があります．タグ付けしたいInfoファイルに移動し，以下を入力してください．

     M-x Info-tagify

(Info-tagifyの大文字のIに注意してください．)これは，有効化が可能なタグ表を持つInfoファイルを作成します．

第三段階はInfoファイルを有効にすることです．

     M-x Info-validate

(Info-validateの大文字のIに注意してください．)簡単にいうと，段階は以下のようになります．

     C-u M-x texinfo-format-buffer
     M-x Info-tagify
     M-x Info-validate

ノード構造を有効にした後，通常の方法でtexinfo-format-bufferを再実行し，そしてそれは，タグ表を構築しファイルを自動的に分ける，または手動でタグ表と分けられたファイルを作成することができます．

ファイルを手動で分ける
-----------

大きなファイルを分けたり，texinfo-format-bufferや makeinfo-bufferコマンドで自動的にそれを行ったりすべきです．(一般的に，書式化コマンドの1つでこの仕事を行います．See Creating an Info File.)

分けられたファイルは，間接的なサブファイルと呼ばれています．

Infoファイルはメモリをセーブするため分けられます．より小さなファイルでは， Emacsは，情報を保つため大きなバッファを作成しません．

Infoファイルが30ノード以上ある場合，それのためにタグ表も作成すべきです．タグ表作成の詳細は，see Using Info-validate.  (また，通常タグ表は，書式化コマンドで自動的に作成されます．手動で仕事をした場合のみ，タグ表を作成する必要があります．ほとんどの場合，Info-validateで仕事をした，大きな分けられていないファイルでこれを行います．)

タグ付けと分割を行いたいファイルに移動し，2つのコマンドを入力してください．

     M-x Info-tagify
     M-x Info-split

(InfoのIが大文字であることに注意してください．)

Info-splitコマンドを使用するとき，バッファは，間接的なサブファイルを列挙する(小さな)Infoファイルに修正されます．このファイルは，訪れた元のファイルの場所に保存されます．間接的なサブファイルは，元ファイルがあったのと同じディレクトリに書かれ，元ファイル名に-と数字が追加されたファイル名を持ちます．

主なファイルは，Infoファイルとして機能しますが，それはタグ表とサブファイルのディレクトリだけを含みます．

段落の補充
*****

@refillコマンドは補充し，オプションで段落の最初の行を字下げします． (おそらくコマンドは，@refillandindentコマンドと呼ばれるべきですが，@refillはより短く，名前は字下げが可能になる前に選ばれました．)@refillコマンドはもはや重要ではありませんが，かつて必要だったので，我々はそれをここで記述します．多くの古いTexinfoファイルで見ることでしょう．

補充がない場合，長い@-構成物を含む段落は，フォーマッタが@-コマンドを削除し，他の行より短くなるものもあるので，書式化後悪く見えます．以前は， texinfo-format-regionコマンドやtexinfo-format-bufferコマンドは，段落を自動的に補充しませんでした．@refillコマンドを，全ての段落の終りに，これらのフォーマッタがそれを補充するように書く必要がありました．(TeXとmakeinfoの両方が，常に段落を自動的に補充していました．)現在は，全てのInfoフォーマッタは補充と字下げが必要なそれらの段落を，自動的に補充し字下げします．

@refillコマンドは，全ての他の処理が終了した後， texinfo-format-regionとtexinfo-format-bufferにInfoファイルの段落を補充させます．このため，@*や@w{ ... }を含む段落で，補充の動作がこれら2つのコマンドに優先されるので， @refillを使用することはできません．

現在，texinfo-format-regionとtexinfo-format-bufferコマンドは，自動的に@refillを，補充が必要なそれぞれの段落に加えます． @*や@w{ ...}を含む段落の終りに@refill を加えないので，それらは，補充も字下げもされません．

@-コマンドの構文
*********

文字@は，特別なTexinfoコマンドを開始するために使用されます．(それは，プレーンTeXに\があるのと同じ意味です．)Texinfoは4つの形式の@-コマンドがあります．

1. アルファベットでないコマンド．
     これらのコマンドは，@に句読点やアルファベット以外の文字が続いたものから成り立ちます．アルファベットでないコマンドはほとんど，常に段落内のテキストの一部で，全く引数をとりません．2文字(@ともう一文字)は，完全にそれ自身になります．カッコは続きません．アルファベットでないコマンドは以下のものです．@.，@:，@*，@SPACE， @TAB，@NL，@@，@{，と @}．

2. 引数をとらないアルファベットコマンド．
     これらのコマンドは，@で開始し，単語が続き，左右のカッコが続きます．これらのコマンドは，ドキュメントに特別なシンボルを挿入します．それらは，引数は必要ありません．例えば，@dots{} => ...， @equiv{} => ==，@TeX{} => `TeX'と，@bullet{} => *です．

3. カッコ内に引数が必要なアルファベットコマンド．
     これらのコマンドは，@で開始し，文字や単語が続き，カッコ内に引数が続きます．例えば，コマンド@dfnは，用語の紹介や使用の定義を示します．それは以下のように使用されます．Texinfoでは，@@-コマンドは @dfn{mark-up}コマンドです．

4. 行全体を占める，アルファベットコマンド．
     これらのコマンドは，行全体を占めます．行を@で開始し，コマンドの名前(単語)が続きます．例えば，@centerや@cindexです．引数が必要ない場合，単語は行の終りが続きます．引数がある場合，コマンド名とスペースで分けられています．カッコは使用しません．

このように，アルファベットコマンドは，異なる引数の構文を持つクラスに分類されます．その名前の外見からコマンドが属するクラスは分かりませんが，コマンドの意味は分かります．コマンドがglyphを意味する場合，それはクラス2で引数はいりません．それが，段落の部分としての他のテキストと一緒に使用されるコマンドを意味する場合，コマンドはクラス3で，カッコ内に引数が続きます．それ以外の場合，それはクラス4で，その引数として，行の残りを使用します．

クラス3と4のコマンドに対して異なる構文を持つ目的は，Texinfoファイルを読み易くし，GNU Emacs段落と補充コマンドが正確に働く助けとするためです．この規則に1つの例外があります．それは@refillコマンドで，それは段落の終りで，最後のピリオドや句読点文字の直後に常に使用されます． @refillは引数をとらず，カッコは要求されません． @refillは，行の最初に現われないので，Emacs 段落コマンドは決して混乱しません．

TeXの入手方法
********

TeXは自由に再配布できます．anonymous ftpや物理媒体でUnixシステムのためのTeXを入手できます．核となる材料は，Web2c TeX配布物から構成されます(http://tug.org/web2c)．

anonymous ftpで検索する説明と，他の利用可能な配布物の情報は，以下の通りです．

     ftp://tug.org/tex/unixtex.ftp
     http://tug.org/unixtex.ftp

Free Software Foundationは，Texinfoマニュアルの印刷に適したソースコード CD-ROMでの核となる配布物を提供します．注文するために，以下に連絡してください．

     Free Software Foundation, Inc.
     59 Temple Place Suite 330
     Boston, MA   02111-1307
     USA
     Telephone: +1-617-542-5942
     Fax: (including Japan) +1-617-542-2652
     Free Dial Fax (in Japan):
           0031-13-2473 (KDD)
           0066-3382-0158 (IDC)
     Electronic mail: gnu@gnu.org

その他多くのTeX配布物が利用可能です．http://tug.org/を参照してください．

コマンドと変数の索引
**********

これは，Emacs Lisp関数で分類された全ての@-コマンドと，いくつかの変数のリストです．リストを使いやすくするために，コマンドは@を取ってリストアップされています．