\def\lang{jp} % -*- texinfo -*- for Texinfo V.3.1 
\input texinfo
@setfilename yatexj
@settitle Yet Another tex-mode for Emacs
@direntry
* YaTeX: (yatexj).      Yet Another tex-mode for Emacs (Japanese).
@end direntry

@iftex
@c @syncodeindex fn cp
@c いつも忘れるのでここに書いとくか。
@c C-l C-c n でノード入れ
@c ノードいじったら C-l C-u C-n 全部のノード更新 C-l C-u C-e
@c メニュー増やしたら C-l C-u C-m 全部のメニュー更新 C-l C-u C-a
@c フォーマットするときは C-l C-e C-b
@c Last modified Sat Jan  6 23:49:50 2018 on firestorm
@syncodeindex vr cp
@end iftex

@titlepage
@sp 10
@center
@subtitle Yet Another tex-mode for emacs
@title 『野鳥』
@subtitle // YaTeX //
@author @copyright{} 1991-2017 by    HIROSE, Yuuji [yuuji@@yatex.org]
@end titlepage

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

@menu
* Intro::                       はじめに
* Terminology::                 マニュアル参照上の注意
* Main features::               主な機能
* Installation::                インストール
* Invocation::                  プロセス起動
* %#notation ::
* Completion::                  補完入力
* Local dictionary::            ローカル辞書
* Commenting out::              コメントアウト
* Cursor jump::                 カーソルジャンプ
* Modifying/Deleting::          LaTeXコマンドの変更/削除
* Filling::                     桁揃え
* Includeonly::                 勝手に includeonly
* What column::                 カラム位置ガイド
* Intelligent newline::         おまかせ改行
* Usepackage cheker::           先回りusepackage
* Changing mode of YaTeX::      野鳥動作モード変更
* Online help::                 LaTeXオンラインヘルプ
* Inclusion hierarchy browser::  ファイル分割階層構造の表示
* Cooperation with other packages::  他パッケージとの連携
* Customizations::              カスタマイズ
* Etc::                         その他
* Copying::                     取り扱い
* Concept Index::               索引

@end menu

@node Intro, Terminology, Top, Top
@comment  node-name,  next,  previous,  up
@chapter はじめに
@cindex Demacs
@cindex Mule
@cindex LaTeX
@cindex やちょう[やちよう]

  野鳥は、GNU Emacs で La@TeX{} 用の文書を作成する時に pLa@TeX{} などの
タイプセットコマンドや、プレヴューアの起動を Emacs 編集画面中から
行えるようにすると共に、拡張性の高い種々の補完機能によりソーステキ
ストの編集を支援します。さらに La@TeX{} コマンドのオンラインヘルプに
よりマニュアルを調べる手間を軽減します。

  English manual @xref{Top, , , yatexe,YaTeX English info}.

@node Terminology, Main features, Intro, Top
@comment  node-name,  next,  previous,  up
@chapter 本マニュアル参照上の注意

  本マニュアルでは以下の表記を用います。

@itemize @bullet
@item
begin型コマンド

@code{\begin@{環境@} 〜 \end@{環境@}}という形式のLaTeXコマンドを指します。
begin型コマンドを補完入力することをbegin型補完と呼びます。

@item
section型コマンド

@code{\section@{タイトル@}}や@code{\mbox@{内容@}}のように
引数を取るLaTeXコマンドを指します。

@item
maketitle型コマンド

@code{\maketitle}や@code{\tableofcontents}のように引数を取らないLaTeXコマ
ンドを指します。

@item
large型コマンド

@code{@{\large ...@}} や @code{@{\tt ...@}} のようなフォント/サイズ指定子
を指します。

@item @kbd{[prefix]}

野鳥の機能を呼び出すためのプリフィクスキー。デフォルトでは@kbd{C-c}に割り
当てられているので、特に変更していない場合本マニュアルの @kbd{[prefix]} と
いう表記は、@kbd{C-c} と読み換えてください。
@end itemize

@node Main features, Installation, Terminology, Top
@comment  node-name,  next,  previous,  up
@chapter 主な機能

@itemize @bullet
@item タイプセッタやプレヴューアなどの編集画面からの起動(@kbd{C-c t})
@item カーソル位置によらない固定リジョンの部分タイプセット
@item \includeonlyのワンタッチ更新
@item エラー箇所への自動ジャンプ(@kbd{C-c '})
@item @code{\begin@{@}, \end@{@}, \section...} などの La@TeX{}
コマンドの補完入力
(@kbd{C-c b}, @kbd{C-c s}, @kbd{C-c l}, @kbd{C-c m})
@item 既に入力したテキストを環境やコマンド引数の中に取り込む括り補完
(リジョン指定後に通常補完キー)
@item セクション区切り入力時の文書構造アウトライン表示
@item セクションコマンドの一括シフト (@ref{view-sectioning})
@item 補完辞書の学習
@item La@TeX{} の環境やコマンドに応じたガイド付き引数入力
@item 野鳥にないガイド付き引数入力関数の自動生成(@file{yatexgen.el})
@item La@TeX{} コマンドの削除/変更(@kbd{C-c k}, @kbd{C-c c})
@item ファイル間、@code{\begin}<->@code{\end}間、
        @code{\ref}<->@code{\label}間、
        @code{\cite}<->@code{\bibitem}ジャンプ(@kbd{C-c g})
@item 一括コメントアウト/アンコメントアウト
        (@kbd{C-c >}, @kbd{C-c <}, @kbd{C-c ,}, @kbd{C-c .})
@item アクセント記号/数式環境用コマンド/ギリシャ文字の入力支援
        (@kbd{C-c a}, @kbd{;}, @kbd{/})
@item tabular/array環境のカラム位置ガイド
@item 標準的 La@TeX{} コマンドのオンラインヘルプ(@kbd{C-c ?}, @kbd{C-c /})
@item ドキュメントのインクルード構造の視覚的表示とバッファ切り替え
(@kbd{C-c d})
@item 補完入力したマクロに応じて必要な \userpackage を入れてくれる先回り
userpackage
@item \labelを打つことはもう忘れよう! refやcite補完入力で自動生成します
@item 画像ファイルのドラッグ&ドロップによる自動 \includegraphics
@end itemize

@node Installation, Invocation, Main features, Top
@comment  node-name,  next,  previous,  up
@chapter 起動法
@cindex Install
@cindex インストール[いんすとおる]
@cindex .emacs
@cindex auto-mode-alist
@cindex autoload
@section 野鳥起動のための設定

  ~/.emacsに下の2項目を加えます。

@lisp
(setq auto-mode-alist
      (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
@end lisp

次に野鳥の emacs-lisp ファイル群を置くディレクトリを load-path に加えます。
たとえば、 @file{~/src/emacs/yatex}に置くのであれば、

@lisp
(setq load-path (cons (expand-file-name "~/src/emacs/yatex") load-path))
@end lisp

@noindent
などとします。

  以上の設定により、拡張子が .tex であるファイルを編集すると自動的に野鳥が
ロードされます。野鳥が正常に起動できたときはモードラインの表示が「やてふ」
に変わります。

@section タイプセッタ/プレヴューア環境の設定

  利用する外部プログラムに関する以下の変数を確認し、必要なら正しい値に変更
します。
@table @code
@item tex-command
        @dots{} 起動するタイプセッタのコマンド名
@item dvi2-command
        @dots{} 起動するプレヴューアのコマンド名
@item NTT-jTeX
        @dots{} 改行+インデントによって、タイプセット後の字間が空いてしま
        うのを抑制する場合にtにする(古いNTT-jTeXで顕著に現れる)。具体的には、
        fillするときに各行の終わりに%を付加するようになる。
@item YaTeX-kanji-code
        @dots{} 文書を作成する時の漢字コード
@item dviprint-command-format
        @dots{} ファイルの印刷に使われるコマンド列の書式
@item YaTeX-dvipdf-command
        @dots{} DVIをPDFに変換するコマンド
@end table

これらを変更する場合は、やはり@file{~/.emacs}にて、たとえば
@lisp
(setq tex-command "pdflatex")
@end lisp
のようにしてください。どのような値をセットすれば良いかについては、
@ref{All customizable variables}を参照してください。


@node Invocation, %#notation , Installation, Top
@comment  node-name,  next,  previous,  up
@chapter latexコマンド起動
@cindex prefix key
@cindex C-c
@cindex タイプセッタ[たいふせつた]
@cindex プレヴューア[ふれひゆうあ]
@cindex jlatex
@cindex platex
@cindex プリントアウト[ふりんとあうと]

LaTeXソースの編集中、次のキー入力により、platex などのタイプセットプログラ
ム(以後タイプセッタと呼ぶ)、プレヴューアなどの起動ができます。

@table @kbd
@item [prefix] t j
        @dots{} タイプセッタ(platex)起動
@item [prefix] t r
        @dots{} タイプセッタ起動(領域指定)
@item [prefix] t e
        @dots{} 部分タイプセット&プレヴュー
        (ポイント位置の段落、環境または数式モードのみをタイプセットして
        隣のバッファに組版結果の画像を出す)
@item [prefix] t k
        @dots{} 動作中のタイプセッタの停止
@item [prefix] t b
        @dots{} jbibtex起動
@item [prefix] t i
        @dots{} makeindex起動
@item [prefix] t d
	@dots{} タイプセット完了後dvipdfmx起動
@item [prefix] t p
        @dots{} プレヴューア起動
@item [prefix] t l
        @dots{} lpr(プリントアウト用)コマンド起動
@item [prefix] t s
        @dots{} xdvi -remote でのサーチ
@end table

@menu
* Calling typesetter::          タイプセッタ起動
* Calling previewer::           プレヴューア起動
* Print out::                   プリントアウト用コマンドの起動
@end menu

@node Calling typesetter, Calling previewer, Invocation, Invocation
@comment  node-name,  next,  previous,  up
@section タイプセッタ起動
@cindex タイプセッタ起動[たいふせつたきとう]
@cindex タイプセットエラー[たいふせつとえらあ]
@cindex エラー修正[えらあしゆうせい]

  タイプセッタを起動すると、編集ウィンドウが2つに分割され、片方のウィンド
ウにタイプセット画面が表示されます。出力されるメッセージと連動しタイプセッ
トバッファは自動的にスクロールします。もし、途中でエラーが起こって止まって
しまった場合にはタイプセットバッファに移り、(@kbd{C-x o}) タイプセッタの出
している ? プロンプトに対して、@kbd{x} (処理の中断)などの指示を送ることが
できます。エラーを修正する場合は、

@table @kbd
@item [prefix] '
@itemx (prefix+アポストロフィ)
        @dots{} 直前のエラー発生行へジャンプ
@end table

を入力することにより、タイプセッタがエラーを発生した行に移ることができます。
また、タイプセッタの出力する overfull hbox などのウォーニング行にも対応し
ていますので、順次 @kbd{[prefix] '} を押すことにより、一つ前のウォーニング
発生行にジャンプしていきます。

  もし、気になるエラー行があった場合は、タイプセットバッファで、エ
ラーの表示されている行にカーソルを合わせスペースキーを押すと La@TeX{} 
ソースの対応する行にジャンプします。

@subsection 領域タイプセット

  ポイントとマークの間、あるいはテキスト中に埋め込んだ @code{%#BEGIN} と
@code{%#END}の間の領域(@ref{%#notation})だけを切り取ってタイプセットすることが
できます。この場合メインファイルのプリアンブルが一時ファイルの
プリアンブルとして使われます。したがってプリアンブルにないマクロ定義が
領域内にあるとエラーになります。領域タイプセットを使う場合、
必ずマクロ定義はプリアンブル(@code{\begin@{document@}}より前)に置くよう
にして下さい。一時ファイルはメインファイルのある
ディレクトリの@file{texput.tex}という名前で出力されるので、
上書きには注意してください。

@subsection 環境タイプセット

  @kbd{[prefix] te} を押すと、ポイント位置の最も内側の環境、または数式モー
ド内の場合はその数式モード全体、あるいは環境がなければその段落が自動的に
領域選択されて、領域タイプセットを呼び出します。
tabular環境や数式モードで複雑なものを作っている場合は確かめたい部分だけを
確認できるので便利です。Emacsが画像表示可能な場合は、
部分タイプセットの結果を画像化して隣のウィンドウに表示します。また、
特定の環境で呼び出した場合は、環境内の文字を書き換える度に自動的に
プレビュー画像を更新します(on-the-flyプレヴュー)。
自動表示されない場合はプレヴューアで @file{texput.dvi}
を開いたままにしておけば修正と確認が素早くできるでしょう。

  画像プレヴューの場合の大きさ(解像度)はデフォルトで200dpi(数式は300dpi)です。
dpiを変えたい場合はLaTeXソースのどこかに
@code{%#PREVIEWDPI 150}
のようにdpi値を書いてください。

@node Calling previewer, Print out, Calling typesetter, Invocation
@comment  node-name,  next,  previous,  up
@section プレヴューア起動
  @kbd{[prefix] t p} によりプレヴューアの起動ができます。さらに、もしあな
たが、-remote 機能つきのxdviを利用している場合は @kbd{[prefix] t s} を押す
ことによりカーソル位置の文字列を検索してそのページを表示するようにすでに起
動中のxdviに命令を送ります。これにより、現在編集中の箇所のタイプセット結果
を即座に見ることができます。

@c なお、-remote 機能付きの xdvi は
@c @code{ftp://ftp.ae.keio.ac.jp/pub/text/xdvi/xdvi-remote}
@c などから入手することができます。

@node Print out,  , Calling previewer, Invocation
@comment  node-name,  next,  previous,  up
@section プリントアウト

  @kbd{[prefix] t l}を押してプリントアウトを指示すると、出力開始/終了ペー
ジを聞いてくるので、それぞれに答えます。これを省略したい時は、
universal-argument をつけ、

@cindex 出力開始ページ[しゆつりよくかいしへえし]
@cindex 出力終了ページ[しゆつりよくしゆうりようへえし]

@table @kbd
@item C-u [prefix] t l
        @dots{} ページ確認省略lpr起動
@end table
@cindex ページ確認省略lpr起動[へえしかくにんしようりやくlprきとう]

@noindent
のように起動してください。

@node %#notation , Completion, Invocation, Top
@comment  node-name,  next,  previous,  up
@chapter %#記法

  本文中に@code{%#}ではじまるキーワードを埋め込むことでタイプセッタ起動等
の制御をすることができます。

@menu
* Changing typesetter::         タイプセット用コマンドの変更
* Splitting input files::       入力ファイル分割
* Fix region for typesetting::  領域の固定
* Special Filtering Region::
* lpr format::                  プリントアウトコマンド用フォーマット
* Controlling which command to invoke::  その他の起動コマンド制御
* Editing %# notation::
@end menu

@node Changing typesetter, Splitting input files, %#notation , %#notation
@comment  node-name,  next,  previous,  up
@section タイプセット用コマンド変更

  起動するコマンドを変えたい時は本文中に次のような行を書きます。

@cindex 起動するコマンドを変える[きとうするこまんとをかえる]

@example
        %#!jlatex-ntt
@end example

NTT jTeX と、ASCII jTeX を使い分けたいような場合に便利でしょう。

@cindex タイプセッタの使い分け[たいふせつたのつかいわけ]

@node Splitting input files, Fix region for typesetting, Changing typesetter, %#notation
@comment  node-name,  next,  previous,  up
@section 入力ファイル分割

また、章毎に別ファイルの .tex を作成している場合で、@file{main.tex}から 
@file{sub.tex} を @code{\include}しているような時は、@file{sub.tex}の任意の
位置に次のような行を埋め込みます。

@example
        %#!platex main.tex
@end example

@cindex 入力ファイル分割[にゆうりよくふあいるふんかつ]

上の例のようにコマンド名だけでなく引数も書いた場合には、全てをそのまま 
shell に渡すので次のように書けば、ghostview などをプレヴューアに使う時に便
利です。

@cindex ghostview

@example
        %#!platex main && dvi2ps main.dvi > main
@end example

なお、この行の最後の単語のピリオド以前を「メインファイル」のベース
ネームであると仮定します(上の2つの場合どちらも@file{main})。
この行に記述した、@code{%f}はメインファイル名に、 
@code{%r} はメインファイルの拡張子を取り除いた部分に置換されます。
ただし、@code{%f,%r}を利用した場合、初回タイプセット時に必ずメインファイル
名の入力を促されます。

  @kbd{[prefix] g} (@ref{Cursor jump}参照) での
ファイル間ジャンプを有効に機能させるため、入力ファイル分割時には次のことに
注意して下さい。

@enumerate
@item
サブディレクトリを作って、その中にサブファイルを置くことはできるが
サブディレクトリのサブディレクトリには置けない。
@item
メインファイルからサブディレクトリ内のファイルを include する時には、
相対パス指定を用いて、
@code{\include@{chap1/sub@}}のように記述。
@item
メインファイルが一つ上のディレクトリにある場合も、サブファイルには
%#!platex main.tex のように記述する(../mainではない)。
@end enumerate



@node Fix region for typesetting, lpr format, Splitting input files, %#notation
@comment  node-name,  next,  previous,  up
@section 領域の固定
@cindex 固定領域のタイプセット[こていりよういきのたいふせつと]
@cindex %#BEGIN
@cindex %#END

  @kbd{[prefix] tr} の領域指定のタイプセットでは、とくに指定のないかぎり、 
@kbd{C-SPC}でマークした位置と、ポイント(カーソル位置)の間を領域とみなしま
すが、必ず決まった領域をタイプセットしたい場合は、その領域を

@example
        %#BEGIN
        <渡したい領域>
        %#END
@end example

@noindent
のように@code{%#BEGIN}と@code{%#END}で囲み、カーソルを「@code{%#BEGIN}以降」
に置いてください。この時の領域決定規則をまとめると次のようになります。


@enumerate
@item
カーソル位置よりバッファの先頭方向に@code{%#BEGIN}というキーワードが
ある場合

@enumerate
@item
@code{%#BEGIN}よりバッファの末尾方向に@code{%#END}というキーワードが見つかっ
た場合。
@result{}@code{%#BEGIN} から、その @code{%#END} のある位置まで。
@item
@code{%#END} が見つからなかった場合。
@result{}バッファの最後尾まで。
@end enumerate
@cindex 領域決定規則[りよういきけつていきそく]

@item
カーソル位置よりバッファの先頭方向に @code{%#BEGIN} というキーワードが
見つからなかった場合。
@result{}マーク(@kbd{C-SPC}位置)とポイント(カーソル位置)の間の領域。
@end enumerate

  tabular 環境を何度も試行錯誤しているような場合は、@code{\begin}の前の行
に @code{%#BEGIN} と書き、@code{\end} の次の行に @code{%#END} と書いておく
と簡単に作表結果をテストすることができます。また、長い .tex ファイルの後半
に @code{%#BEGIN} を書いておけば、前半の部分は無視できます。このBEGINとEND
の消し忘れには十分ご注意下さい。
@cindex 長いファイルの編集[なかいふあいるのへんしゆう]

@node Special Filtering Region, lpr format, Fix region for typesetting, %#notation
@section 自動外部フィルタ

たとえば、テキストファイルから画像を生成するようなツールに与えるソースを
La@TeX{}ソース中に埋め込み、その部分だけをツールの標準入力に渡すことができ
ます。そのためには以下のようなソースを文書中に書きます。

@example
%#BEGIN FILTER{foo.pdf}{blockdiag -T %t -o %o}
\if0
---
....blah blah blah...
....blah blah blah...
....blah blah blah...
---
\fi
%#END
@end example

この領域内で @kbd{[prefix] t e} をタイプすると、この例であればblahのある3行が
外部コマンド @code{"blockdiag -T pdf -o foo.pdf"} の標準入力に渡され、
結果として foo.pdf が生成されます。この特別なブロックは
@kbd{[prefix] tb} の環境補完で、@code{.blockdiag} のようなピリオドで始まる
特殊環境名を入力することで自動的に挿入されます。

@c @node  Require, lpr format, Fix region for typesetting, %#notation
@comment  node-name,  next,  previous,  up

@node lpr format, Controlling which command to invoke, Fix region for typesetting, %#notation
@comment  node-name,  next,  previous,  up
@section lprフォーマット
@cindex lprふぉーまっと[lprふおおまつと]
@cindex lprフォーマット[lprふおおまつと]
@cindex lpr format

  まず、プリントアウト用コマンド列のフォーマットについて説明します。
コマンド列フォーマットは、3つの Lisp 変数によって表現されます。デ
フォルトの dvi2ps 用のフォーマットを例に説明します。

@table @code
@item (1)dviprint-command-format
@code{"dvi2ps %f %t %s | lpr"}

@item (2)dviprint-from-format
@code{"-f %b"}

@item (3)dviprint-to-format
@code{"-t %e"}
@end table

実際にプリントアウトする時は、(1)中の %s がファイル名に置き換えられ、%f が
(2)の内容、%t が(3)の内容に置き換えられます。その際に(2)の文字列中の %b は
「出力開始ページ」、(3)の文字列中の %e は「出力終了ページ」に置き換えられ
ます。もし、ページを指定しない時には、%f, %t 両方とも無視されます。

  この、dviprint-command-format を臨時に変えたい時は、La@TeX{} の
ソーステキスト中の任意の場所に、

@example
        %#LPR dvi2ps %f %t %s | 4up -page 4 | texfix | lpr -Plp2
@end example

@noindent
のように書いて下さい。プリントアウトするページ範囲をいちいち聞かせないよう
にする時に

@example
        %#LPR dvi2ps %s | lpr
@end example

@noindent
などとするのも便利かもしれません。

@node Controlling which command to invoke, Editing %# notation, lpr format, %#notation
@comment  node-name,  next,  previous,  up
@section その他の起動コマンド制御
@cindex その他のコマンド制御[そのたのこまんとせいきよ]

La@TeX{} 文書に関連するコマンドは以下の %# 記法で指定することができます。

@table @code
 @item %#PREVIEW
	@dots{} Command line for DVI viewing ([prefix] t p)
 @item %#BIBTEX
	@dots{} makeindexを行なうコマンドライン([prefix] t b)
 @item %#MAKEINDEX
	@dots{} bibtexを行なうコマンドライン([prefix] t i)
 @item %#DVIPDF
	@dots{} DVIからPDF変換を行なうコマンドライン([prefix] t d)
 @item %#LPR
	@dots{} 印刷用のコマンドライン([prefix] t l)
 @item %#PDFVIEW
	@dots{} PDFファイルを見るためのコマンドライン
 @item %#IMAGEDPI
	@dots{} 即時プレヴュー(on-the-fly preview)用の画像のDPI
@end table

行頭がこれらのキーワードで始まる行をLa@TeX{}文書の先頭付近に書いておけば、
それで指定したコマンドを起動できます。

@node Editing %# notation,  , Controlling which command to invoke, %#notation
@comment  node-name,  next,  previous,  up
@section %#記法自体の編集
@cindex %#記法自体の編集[%#きほうしたいのへんしゆう]

以上のような@code{%#}で始まる各種制御記法を編集するためには

@table @kbd
@item [prefix] %
        @dots{} @code{%#}@var{記法編集メニュー}
@end table

@noindent
を押します。

@example
        !)Edit-%#! B)EGIN-END-region L)Edit-%#LPR
@end example

@noindent
というメニューが出て来るので、@code{%#!}に続くコマンドを変更したい時には
@kbd{!}を、@code{%#LPR}で lpr フォーマットを変えたい時は@kbd{l}を、あらか
じめ設定したリジョンを @code{%#BEGIN} 〜 @code{%#END} で括りたい時は、
@kbd{b}を押します。@kbd{b}を選んだ時には、それまでバッファ中に置かれていた
@code{%#BEGIN}, @code{%#END} が自動的に消去されます。
@cindex lprフォーマットの変更[lprふおおまつとのへんこう]

@node Completion, Local dictionary, %#notation , Top
@comment  node-name,  next,  previous,  up
@chapter 補完入力

  La@TeX{} での環境名などは、野鳥の補完機能を利用して能率的に入力すること
ができます。

@menu
* begin型補完::
* section型補完::
* large型補完::
* maketitle型補完::
* Arbitrary completion::        随時補完
* end補完::
* Accent mark completion::      アクセント記号補完
* Image completion::            数式記号イメージ補完
* Greek letter completion::     ギリシャ文字補完
* Inserting parens::
@end menu

@node begin型補完, section型補完, Completion, Completion
@comment  node-name,  next,  previous,  up
@section begin型補完
@cindex begin型補完[beginかたほかん]
@cindex 環境名の補完[かんきようめいのほかん]
@cindex prefix b

  @code{\begin@{env@}...\end@{env@}}の様な形式の入力の補完をbegin型補完と
呼ぶことにします。begin 型補完は、

@table @kbd
@item [prefix] b
        @dots{} begin 型補完開始(標準では @kbd{C-c b})
@end table

@noindent
で始まります。頻繁に用いられる次の La@TeX{} 環境の補完は、[prefix] @kbd{b}
に続く次の1文字を入力するだけで、@code{\begin@{xxx@}...\end@{xxx@}}を完成
させます。

@table @kbd
@item [prefix] b c
        @dots{} @code{\begin@{center@}...\end@{center@}}
@item [prefix] b d
        @dots{} @code{\begin@{document@}...\end@{document@}}
@item [prefix] b D
        @dots{} @code{\begin@{description@}...\end@{description@}}
@item [prefix] b e
        @dots{} @code{\begin@{enumerate@}...\end@{enumerate@}}
@item [prefix] b E
        @dots{} @code{\begin@{equation@}...\end@{equation@}}
@item [prefix] b i
        @dots{} @code{\begin@{itemize@}...\end@{itemize@}}
@item [prefix] b l
        @dots{} @code{\begin@{flushleft@}...\end@{flushleft@}}
@item [prefix] b m
        @dots{} @code{\begin@{minipage@}...\end@{minipage@}}
@item [prefix] b t
        @dots{} @code{\begin@{tabbing@}...\end@{tabbing@}}
@item [prefix] b T
        @dots{} @code{\begin@{tabular@}...\end@{tabular@}}
@item [prefix] b ^T
        @dots{} @code{\begin@{table@}...\end@{table@}}
@item [prefix] b p
        @dots{} @code{\begin@{picture@}...\end@{picture@}}
@item [prefix] b q
        @dots{} @code{\begin@{quote@}...\end@{quote@}}
@item [prefix] b Q
        @dots{} @code{\begin@{quotation@}...\end@{quotation@}}
@item [prefix] b r
        @dots{} @code{\begin@{flushright@}...\end@{flushright@}}
@item [prefix] b v
        @dots{} @code{\begin@{verbatim@}...\end@{verbatim@}}
@item [prefix] b V
        @dots{} @code{\begin@{verse@}...\end@{verse@}}
@end table

  上記のもの以外の環境名は Emacs の持つインクリメンタルな補完機能を用いて
入力します(上記の環境名も以下の補完入力可能)。

@table @kbd
@item [prefix] b @key{SPC}
        @dots{} begin 型補完入力
@end table

@kbd{[prefix] b @key{SPC}} と入力すると、最下行のミニバッファに

@example
        Begin environment(default document):
@end example

@noindent
と表示されます。ここで、何も入れずにリターンキーのみ押すと、括弧内に出てい
るデフォルトの環境名が入力されますが、適当な環境名を入力すると、
@code{\begin@{環境名@} … \end@{環境名@}}が文書中に挿入されます。ミニバッ
ファで環境名を入力するときに、環境名の頭文字を入力し「スペース」をたたくと、
一致する環境名が内部テーブルに存在した場合、正しい環境名に補完されるので、
入力の手間が省けます。内部テーブルに存在しない環境名を入力した時はユーザ専
用のテーブルに登録され、さらにそのテーブルを自動的に、ユーザ辞書(デフォル
トでは @file{~/.yatexrc})に保存します。

さらに、特定の環境を補完入力した時にはその環境で必ず用いられるエントリを自
動挿入します(例: @code{itemize}環境における@code{\item}など)。挿入されたエ
ントリが不要な場合にはundoによって消去して下さい。
@cindex ユーザ辞書[ゆうさししよ]

@subsection 既に書いたテキストを環境で括る

  ところで、最初に書いてしまったブロックを後から、itemize 環境の中
に閉じこめたいと思うことがありますが、そのようなときは、あらかじめ
閉じこめたい段落をマークして、begin 型補完の各コマンドの @kbd{[prefix]}
の次の『小文字の 'b'』 を『大文字』に変えて起動して下さい。(または、
@kbd{C-u} を先に打ち、universal argument をつけても可能です)
@cindex ブロック[ふろつく]
@cindex 閉じ込める[としこめる]

  例えばあるパラグラフを description 環境の中に入れたいときは、
そのパラグラフをマークしてから、補完機能を呼び出してください(description
環境の場合は @kbd{[prefix] b D})。

選択された領域を括ります。ただしこれは @code{transient-mark-mode} が t
(Emacsの標準)になっている場合のみで、普段
@code{transient-mark-mode} を @code{nil} にしている場合は、
補完キー前に @code{universal-argument} 指定(@kbd{C-u})
をタイプしてから @kbd{[prefix] b D} など、補完キーを
タイプすれば括り補完になります。
なおEmacs22以降であれば @code{transient-mark-mode} 無効時も
@code{set-mark-command} (@kbd{C-space})の連打で一時的に
@code{transient-mark-mode} が有効になります。


@node section型補完, large型補完, begin型補完, Completion
@comment  node-name,  next,  previous,  up
@section section型補完
@cindex  section型補完[sectionかたほかん]
@cindex prefix s

  @code{\section@{目的@}} のような形式の入力の補完を section 型補完と呼ぶこ
とにします。section 型補完は、

@table @kbd
@item [prefix] s
        @dots{} section 型補完
@end table


で実行します。@kbd{[prefix] s} を入力するとミニバッファに、

@example
        (C-v for view-section) \???@{@} (default documentclass):
@end example

@noindent
というプロンプトが現れるので、そこで @samp{section} のような La@TeX{} コマ
ンド名を入力します。ここでもリターンキーのみで括弧内のデフォルト値が選択さ
れるほか、@samp{chapter}などのような頻度の高い名称入力にはスペースキーによ
る補完機能が有効です。 次に、@{@}の中身の入力を促す、

@example
        \section@{???@}:
@end example

@noindent
というプロンプトが現れるので、セクションのタイトルなどを入力します。
たとえば、

@example
        (C-v for view-section) \???@{@} (default documentclass): section
        \section@{???@}: 目的
@end example

@noindent
のように入力した場合は、文章中に

@example
        \section@{目的@}
@end example

@noindent
が挿入され、

@example
        (C-v for view-section) \???@{@} (default section): vspace*
        \vspace*@{???@}:
@end example

@noindent
のように@{@}の中身を省略したときは、

@example
        \vspace*@{@}
@end example

@noindent
だけが挿入され、改行はせずカーソルは自動的に中括弧の内側に移動します。

@menu
* 2個以上の引数をとる section型コマンド::
* Enclose section-type command::  括り補完
* Recursive completion::        再帰補完
* view-sectioning::             セクション区切りのアウトライン表示
* label-generation::            ラベル自動生成
@end menu

@node 2個以上の引数をとる section型コマンド, Enclose section-type command, section型補完, section型補完
@comment  node-name,  next,  previous,  up
@subsection 2個以上の引数をとる section型コマンド
@cindex 引数[ひきすう]

  ところで、@samp{\addtolength@{\topmargin@}@{8mm@}} などのように、引数を二つ
以上取る La@TeX{} コマンドがあります。このようなコマンドの補完入力には、 
section 型補完呼び出しに引数を付けてください。例えば上の@samp{addtolength}
の例であれば、引数2を指定します。つまり、

@example
        C-u 2 [prefix] s   (または、ESC 2 [prefix] s)
@end example

@noindent
と section 型補完を呼び出した後、

@example
        (Ctrl-v for view-section) \???@{@} (default vspace*): addtolength
        \addtolength@{???@}: \topmargin
        Argument 2: 8mm
@end example

@noindent
のように入力してください。最初の addtolength の部分と、第一引数である 
\topmargin の入力は当然スペースによる補完入力が可能です。ユーザ辞書に登録
される La@TeX{} コマンドには、この引数の数も学習されるので、最初の補完の時
引数の数を指定して起動しておけば、以後の補完時には、記憶された個数だけ引数
を聞いて来るようになります。あとで引数の個数を変えたい時は、再び @kbd{C-u} 
を用いて個数を指定し直すことで、自動的に辞書中の引数の個数の部分を更新しま
す。
@cindex 引数の個数を変える[ひきすうのこすうをかえる]


@node Enclose section-type command, Recursive completion, 2個以上の引数をとる section型コマンド, section型補完
@subsection 既に書いたテキストを括る
@cindex 括る[くくる]

  また、section型補完機能の呼び出し時に領域選択状態にしておくと
領域内のテキストを section 型コマンドの第一引数として括ります。
これも普段 @code{transient-mark-mode} を @code{nil} にしている場合は
@kbd{C-u} のあとに補完キーをタイプすれば強制的に括り補完になります。


@node Recursive completion, view-sectioning, Enclose section-type command, section型補完
@comment  node-name,  next,  previous,  up
@subsection 再帰補完
@cindex 再帰補完[さいきほかん]

  高度な使い方になるかもしれませんが、section型補完の引数の入力時にさらに
補完入力を利用することができます(section/large/maketitle型に限る)。section
型コマンドの引数に更に La@TeX{} コマンドが来る場合にはミニバッファで野鳥の
補完キーを再帰的に入力することで引数の入力も効率的に行なえます。

@node view-sectioning, label-generation, Recursive completion, section型補完
@comment  node-name,  next,  previous,  up
@subsection セクション区切りのアウトライン表示
@cindex アウトライン[あうとらいん]

  通常のsection型補完の時にミニバッファで@kbd{C-v}を押すと現在存在するセク
ション区切りコマンド全てを @code{*Sectioning Lines*}というバッファに一覧表
示します(「<<--」のついている行がもっとも近いセクション区切り)。この時ミニ
バッファで@kbd{C-p}, @kbd{C-n} を押すと@samp{part}, @samp{chapter}, ...,
@samp{subparagraph} のコマンドが論理階層の高さにしたがって上下します。また、
@kbd{C-v}, @kbd{M-v} を押すとセクション区切り一覧バッファがスクロールし、
数字の@kbd{0}〜@kbd{7}を押すとある高さ以上のセクション区切りだけを選んで表
示します(実際にやって見れば分かります)。

@code{*Sectioning Lines*}バッファは、

@table @kbd
@item M-x YaTeX-section-overview
        @dots{} セクション区切り一覧バッファを生成
@end table

@cindex セクション区切り一覧バッファ[せくしよんくきりいちらんはつふあ]
で作成することができます。このバッファを選択し任意の行でスペースを押すと、
該当するセクション区切りのある本文中の場所にジャンプします。さらに、同バッ
ファで @kbd{u} を押すと、ソーステキストの対応するセクションコマンドが一階
層上がり(例: subsection が section に変わる)、@kbd{d}を押すと一階層下がり
ます。@code{*Sectioning Lines*}バッファにあるセクション区切りの行をマーク
しておいて@kbd{U}を押すとリジョン内のものに対応するソーステキストのセクショ
ンコマンドすべてが一階層上がり、@kbd{D}を押すと下がります。セクション区切
り一覧バッファで利用できるキーコマンドには以下のものがあります。

@table @kbd
@item SPC
        @dots{} 対応するソース行へジャンプ
@item .
        @dots{} 対応するソース行を表示
@item u
        @dots{} カーソル位置に対応するセクションコマンドを一階層上げる
@item d
        @dots{} カーソル位置に対応するセクションコマンドを一階層下げる
@item U
        @dots{} マークしたセクションコマンドを一階層上げる
@item D
        @dots{} マークしたセクションコマンドを一階層上げる
@item 0〜6
        @dots{} レベル n 以下のセクションコマンドを隠して表示
@end table

@cindex 論理階層[ろんりかいそう]
@cindex セクション区切り[せくしよんくきり]
@cindex ジャンプ[しやんふ]

@node label-generation,  , view-sectioning, section型補完
@comment  node-name,  next,  previous,  up
@subsection ラベル自動生成
@cindex ラベル自動生成[らへるしとうせいせい]

  @code{\ref@{@}} や @code{\cite@{@}} マクロをsection型補完で入れた場合
参照先となり得るものを全て探してメニューにして選択できます。参照先には
@code{\label@{@}}をつけておく必要はありません。もしあれば、そのラベルを
使い、なければその場で参照先に@code{\label@{@}}を作らせてくれます。
ラベル名を考えるのは苦痛に感じるものです。全てのカウンタにラベルを
つけるのもたいへんです。もうラベル名に何をつけるか、ラベルをつけるかつけま
いか、などということは忘れましょう!

ラベルを打つべき項目の選択の際には、可能性のあるすべてのカウンタが表示され
ます。これを「数式のみ」のように種別で絞りたいときは以下のキーコマンドが
利用できます。
@table @kbd
 @item M-a
	@dots{} 絞り込みを解除してすべてのカウンタを表示
 @item M-c
	@dots{} キャプションのみを表示
 @item M-e
	@dots{} 番号のつく数式のみを表示
 @item M-i
	@dots{} 番号つき箇条書のみを表示
 @item M-s
	@dots{} セクションのみを表示
 @item M-m
	@dots{} その他のカウンタのみを表示
@end table

@node large型補完, maketitle型補完, section型補完, Completion
@comment  node-name,  next,  previous,  up
@section large型補完
@cindex large型補完[largeかたほかん]
@cindex prefix l

  @code{@{\large @}} のような形式の補完を large 型補完と呼ぶことにします。

@table @kbd
@item [prefix] l
        @dots{} large 型補完開始
@end table

@noindent
がlarge型補完の開始です。@kbd{[prefix] l} を押すと、ミニバッファに

@example
        @{\??? @} (default large):
@end example


と表示されるので、上記のものと同じ要領で補完入力して下さい。補完候補に用意
されているのは、@samp{footnotesize} や @samp{huge} のような文字サイズ指定
子と、@samp{bf}や@samp{dg}のようなフォント指定子です。
@cindex 文字サイズ指定子[もしさいすしていし]
@cindex フォント指定子[ふおんとしていし]

@subsection 既に書いた文字を括る
@cindex 括る[くくる]

  また、begin型補完の時と同様、先に書いてしまった一連の文章の文字のサイズ
を変えたいと思う時がありますが、そのような時は、サイズや大きさを変えたい文
字の範囲をマークしてからlarge型補完を呼んでください。

@node maketitle型補完, Arbitrary completion, large型補完, Completion
@comment  node-name,  next,  previous,  up
@section maketitle型補完
@cindex maketitle型補完[maketitleかたほかん]
@cindex prefix m

  @code{\maketitle} の形式の補完を maketitle 型補完と呼ぶことにします。

@table @kbd
@item [prefix] m
        @dots{} maketitle 型補完開始
@end table

@noindent
で、maketitle 型補完を開始します。補完の要領は今までのものとまったく同じで
す。La@TeX{} 用のコマンド名が補完候補として用意されています。

@node Arbitrary completion, end補完, maketitle型補完, Completion
@comment  node-name,  next,  previous,  up
@section 随時補完
@cindex 随時補完[すいしほかん]
@cindex prefix SPC

  さて、今まで述べた典型的な La@TeX{} コマンド形式の補完入力を用いずに、今
入力しようとしている La@TeX{} コマンドを文書中の任意の位置で随時補完するこ
ともできます。La@TeX{} コマンド(先頭が\で始まる)を入力している途中で、

@table @kbd
@item [prefix] SPC
        @dots{} 随時補完
@end table

@noindent
を入力すれば、全ての補完候補の中から一致するものが選ばれカーソル位置に挿入
されます。

@node end補完, Accent mark completion, Arbitrary completion, Completion
@comment  node-name,  next,  previous,  up
@section end補完
@cindex end補完[endほかん]
@cindex prefix e

  現在開いたままの環境名を自動的に検出し、@code{\end@{環境名@}}を挿入しま
す。begin 型補完を用いれば環境の閉じ忘れはないのですが、時にはついつい手で 
@code{\begin@{環境名@}} を入れてしまい、悲しい思いをすることがあります。そ
のような時には気にせず続けて文章を入力し、しかるのちに

@table @kbd
@item [prefix] e
        @dots{} end 補完
@end table

@noindent
とすることで、現在開いている環境名で \end@{@} が補われます。

@node Accent mark completion, Image completion, end補完, Completion
@comment  node-name,  next,  previous,  up
@section アクセント記号補完
@cindex アクセント記号補完[あくせんときこうほかん]
@cindex prefix a
@cindex 欧文[おうふん]

  欧文のアクセント記号(@code{\`@{o@}}など)を入力する時は、

@table @kbd
@item [prefix] a
        @dots{} アクセント記号入力
@end table

@noindent
を押すと、ミニバッファに

@example
        1:` 2:' 3:^ 4:" 5:~ 6:= 7:. u v H t c d b
@end example

@noindent
というメニューが出て来るので、数字、または対応する記号/英字を入力
して下さい。すると編集バッファに、

@example
        \`@{@}
@end example

@noindent
が現われ、カーソルが@{@}内に位置するので、さらに一文字入力する事で、

@example
        \`@{o@}
@end example

@noindent
が完成され、カーソルは@{@}の外に戻ります。

@node Image completion, Greek letter completion, Accent mark completion, Completion
@comment  node-name,  next,  previous,  up
@section 数式記号イメージ補完
@cindex  数式記号イメージ補完[すうしききこういめえしほかん]
@cindex イメージ補完[いめえしほかん]
@cindex ;
@cindex 数式モード[すうしきもおと]
@cindex 矢印[やしるし]
@cindex Σ[しくま]
@cindex leftarrow
@cindex ∞[むけんたい]

  主に数式モードで使用される、矢印やΣなどの記号を擬似的に表現するキー入力
で、La@TeX{} コマンドを入力できます。これは野鳥自身の「数式モード」でのみ
動作します。野鳥はカーソルが@TeX{}の数式環境の中にある時に@kbd{;}や、
@kbd{:}に特殊な機能を持たせます。

  さて、例えば、←(leftarrow)をASCII文字だけで表現する場合、一般的には「<-」
のようにしますが、これを利用して、数式記号イメージ入力モードで
@code{\leftarrow}を入力するには、@kbd{;}(セミコロン)を打ってから@kbd{<-}と
入力します。同様に、長い矢印←-(long-leftarrow) をASCII文字だけで表現する
場合「<--」とするので、@code{\longleftarrow}を入力するためには、@kbd{;<--}
と入力します。あるいは無限大記号をASCII文字だけで表現する時は「oo」のよう
にすることから、@code{\infty} を入力する時は、@kbd{;oo}とキー入力します。

  これらの操作をまとめると次のようになります。

@example
INPUT                   入力される La@TeX{} コマンド
; < -                   @code{\leftarrow}
; < - -                 @code{\longleftarrow}
; < - - >               @code{\longleftrightarrow}
; o                     @code{\circ}
; o o                   @code{\infty}
@end example



  いずれの場合も、イメージ入力を行っている途中で望みのものがバッファ
に表示されたなら、そこでイメージ入力を止めて次の編集動作に移っても
構いません。

@cindex ;自身[;ししん]
  数式環境中で@samp{;}自身を入力するには@kbd{;;}のようにします。イメージ
入力の途中でTABを押すと、それまで入力した文字で始まるもの一覧が表示されま
す。ここで目的の La@TeX{} コマンドまでカーソルを移動し再度TABを押すことで
その La@TeX{} コマンドがバッファに挿入されます。

  どのキー入力にどの記号が対応しているか全て知りたい時は、@kbd{;}を押した
直後にTABを押してください。以下の例は、@kbd{;<}と押した後にTABを押したもの
です。

@example
KEY             LaTeX sequence          sign
<               \leq                    ≦
<<              \ll                     《
<-              \leftarrow              ←
<=              \Leftarrow              <=
@end example

左から[入力キー]、[対応する La@TeX{} コマンド]、[(擬似)記号図示]、と
いう順でメニューが出て来るので、よく使うものを覚えておくと良いでしょ
う。ものによってはASCII文字で表現することが困難なので、あまり覚え
やすいキー並びではないものがあるでしょうから、そのような場合は 
\maketitle 型補完で入力するか、以下に述べる対応表の設定を行って単
純なキー並びのものを設定すると良いでしょう。

  入力キーと    La@TeX{} コマンド、記号の対応表を個人的に設定したい場合は 
Emacs-Lisp 変数 @code{YaTeX-math-sign-alist-private}  に定義してください。
その内容とデフォルトのものを合わせたものが対応表として使用されます(private
の方が優先される)。なお、この変数の構造については @file{yatexmth.el}  を参
照してください。
@cindex YaTeX-math-sign-alist-private

@node Greek letter completion, Inserting parens, Image completion, Completion
@comment  node-name,  next,  previous,  up
@section ギリシャ文字補完
@cindex ギリシャ文字補完[きりしやもしほかん]
@cindex :

  もう一つ、数式環境中で@kbd{:}を押すとギリシャ文字入力モードに入ります。
@kbd{:}を押した直後に@kbd{a}を押すと@code{\alpha}が、@kbd{g} を押すと 
@code{\gamma}が、などアルファベットに対応したギリシャ文字が挿入されます。
操作方法は;の数式記号補完とまったく同じです。まずは@kbd{:}の直後に
TABを押してどのアルファベットにどのギリシャ文字が対応しているか調べてみて
ください。

  @kbd{;}と@kbd{:}を数式環境中で押しているにもかかわらず、イメージ補完が働
かない場合は、@kbd{C-u ;}のように universal-argument をつけてキーを押すこ
とにより、強制的にイメージ補完に入ることができます。また、この時にどのよう
な状態で数式環境内判定に失敗したかをご連絡下さい。

@node Inserting parens,  , Greek letter completion, Completion
@section 括弧入力補助
@cindex 括弧入力補助[かつこにゆうりよくほしよ]

  3種類ある括弧 () {} [] の開き括弧を入れたときに閉じ括弧を自動的に入れます。
@code{\} の直後にの @code{[} を入れると行を分けてインデントを揃え、
数式入力に備えます。その他 La@TeX{} のマクロに応じて括弧の釣合の取れた
状態に導きます。開き括弧そのものを1つだけ入れたいときは @kbd{C-q} で
クォート入力するか、@kbd{[prefix] w m} で修正モードをOFFにしてください。

  領域選択してから開き括弧を入れるとその領域をその種類の括弧で括ります。

@node Local dictionary, Commenting out, Completion, Top
@comment  node-name,  next,  previous,  up
@chapter ローカル辞書
@cindex ローカル辞書[ろおかるししよ]
@cindex .yatexrc

  補完入力用の候補は三種類の辞書から構成されています。一つは
@file{yatex.el}に組み込まれた「標準辞書」、もう一つはユーザが個人的に常用
するコマンドを保存する「ユーザ辞書」、そしてもうひとつはあるディレクトリで
のみ有効なコマンドを保存する「ローカル辞書」です。

  補完入力時に新しい単語を入れた場合に、その単語をどの辞書に入れるか聞いて
来ます。

@example
  `foo' is not in table. Register into: U)serDic L)ocalDic N)one D)iscard
@end example

@noindent
というプロンプトに対し、@kbd{u}と答えると「ユーザ辞書」を、@kbd{l}と答える
とローカル辞書を更新し、@kbd{n}と答えると辞書ファイルは更新せず現在のEmacs
セッションのみ有効な単語とし、@kbd{d}と答えると新たな単語を学習せずに捨て
ることになります。

  もし、ローカル辞書の機能はいらず、全てユーザ辞書の更新のみでよいと言う場
合には@file{~/.emacs}などで、
@cindex YaTeX-nervous

@lisp
        (setq YaTeX-nervous nil)
@end lisp

@noindent
として下さい。

@node Commenting out, Cursor jump, Local dictionary, Top
@comment  node-name,  next,  previous,  up
@chapter コメントアウト
@cindex コメントアウト[こめんとあうと]
@cindex prefix <
@cindex prefix >
@cindex prefix .
@cindex prefix ,


  La@TeX{}の編集には試行錯誤がつきものです。ある部分を一括でコメントアウト
したり、コメントを外したりしたいことがあります。

@table @kbd
@item [prefix] >
        @dots{} リジョンを % でコメントアウト
@item [prefix] <
        @dots{} リジョンの % のコメントを外す
@end table

@noindent
は、あらかじめ設定したリジョンに対しての操作、

@table @kbd
@item [prefix] .
        @dots{} 現在のパラグラフをコメントアウト
@item [prefix] ,
        @dots{} 現在のパラグラフのコメントを外す
@end table

@noindent
は、カーソルの位置するパラグラフ全体に対しての操作です。なお、ここでいう
「パラグラフ」は (@code{mark-paragraph}) 関数によりマークされる範囲を指し
ます(標準設定で@kbd{ESC h}にバインドされている)。なお、既に@code{%}でコメ
ントアウトされているパラグラフに対して繰り返しパラグラフのコメントを使用し
た場合の動作は保証しませんので御注意ください。

  さて、文章に対してだけでなく、時には@code{\begin}, @code{\end} 自体に対
してもコメントアウトの操作をしたいときがあります。このようなときは、
@code{\begin@{@}} あるいは @code{\end@{@}} の行にカーソルを合わせ、

@table @kbd
@item [prefix] >
        @dots{} @code{\begin@{@}}〜@code{\end@{@}} 全てコメントアウト
@item [prefix] <
        @dots{} @code{\begin@{@}}〜@code{\end@{@}} 全てコメントを外す
@end table

@noindent
とすることで、@code{\begin〜\end}で囲まれる環境全てに対してコメント操作し、

@table @kbd
@item [prefix] .
        @dots{} @code{\begin@{@}} と @code{\end@{@}} をコメントアウト
@item [prefix] ,
        @dots{} @code{\begin@{@}} と @code{\end@{@}} のコメントを外す
@end table

は、対応する @code{\begin} と @code{\end} 2行だけを、コメント操作の対象と
します。リジョンをコメントアウトしようとして、マークを設定したのちにカーソ
ルを移動し@kbd{[preifx] >} を押してもカーソルが @code{\begin@{@}} の上にあ
ると@code{\begin@{@}}〜@code{\end@{@}}モードでコメント機能が働いてしまうの
で注意して下さい。

@node Cursor jump, Modifying/Deleting, Commenting out, Top
@comment  node-name,  next,  previous,  up
@chapter カーソルジャンプ
@cindex カーソルジャンプ[かあそるしやんふ]
@cindex prefix g


@menu
* 対応オブジェクトへのジャンプ::
* お絵描きツール起動::
* メインファイルへのジャンプ::
* 環境を単位としたジャンプ::
* 最後の補完位置へのジャンプ::
@end menu

@node 対応オブジェクトへのジャンプ, お絵描きツール起動, Cursor jump, Cursor jump
@comment  node-name,  next,  previous,  up
@section 対応オブジェクトへのジャンプ

  文書中のいろいろな場所で

@table @kbd
@item [prefix] g
        @dots{} 対応するオブジェクトにジャンプ
@end table

@noindent
を押すことにより、カーソル位置のLa@TeX{}コマンドに対応する場所にジャンプ
します。対応関係が存在すると解釈されるコマンドには以下のものがあります。

@itemize @bullet
@item @code{\begin@{@}} ←→ @code{\end@{@}}
@item @code{%#BEGIN} ←→ @code{%#END}
@item 画像ファイルの取り込みマクロ → 対応するviewer/お絵かきツール起動
@item @code{\label@{@}} ←→ @code{\ref@{@}}
@item @code{\include(\input)} → 対応するファイル
@item @code{\bibitem@{@}} ←→ @code{\cite@{@}}
@end itemize

  @code{\begin@{@}} か @code{\end@{@}} の行で@kbd{[prefix] g}を押すことに
より、対応する@code{end/begin}の行にジャンプします。もちろん対応するものが
ない場合はエラーになります。またこれは、領域固定のための @code{%#BEGIN} と 
@code{%#END} のペアに対しても同様に動作します。なお、@code{label/ref}や
@code{cite/bibitem}対応するものが別ファイルにある時は、ジャンプ先となるファ
イルがオープンされていなければなりません。@xref{%#notation}.
メインの .tex ファイルの @code{\include@{chap1@}} などにカーソルを合わせ、
@kbd{[prefix] g} を押すと、@file{chap1.tex} にジャンプします。

また、

@table @kbd
@item [prefix] 4 g
        @dots{} 別ウィンドウで対応オブジェクトにジャンプ
@end table

@noindent
を押すと、対応するオブジェクトへのジャンプを別ウィンドウで行います。ただし、
この機能は @code{begin/end}, @code{%#BEGIN/%#END} 間のジャンプに対しては
(意味がないと思われるので)機能しないので注意してください。

@node お絵描きツール起動, メインファイルへのジャンプ, 対応オブジェクトへのジャンプ, Cursor jump
@comment  node-name,  next,  previous,  up
@section お絵描きツール起動
@cindex お絵描きツール起動[おえかきつうるきとう]

上記の「画像ファイルの取り込みマクロ」とは、例えば 
@code{\epsfile@{file=foo@}} のような挿絵取り込みコマンドのことで、この行に
カーソルを合わせて@kbd{[prefix] g}を押すとその画像ファイルの元となったファ
イルを対応するお絵描きツールを起動してオープンします。起動するツールの判定
は以下のようになされます。

@enumerate
@item
カレント行が変数 @code{YaTeX-processed-file-regexp-alist} に定義さ
れている正規表現のいずれかとマッチしたら、ファイル名に相当する部分を 
\\(\\)から抜き出して覚えておく(何番目の\\(\\)かは変数の各リストの cdr 部に
入れておく)。マッチしなければ何もしない。
@item
行末に、変数 @code{YaTeX-file-processor-alist} に登録されているコマンドが
「%コマンド」 のように書いてあれば強制的に「コマンド ファイル名.拡張子」を
起動。
@item
なければ、変数 @code{YaTeX-file-processor-alist} の各リストのcdr部に入って
いる拡張子を「ファイル名」の後ろに足したファイルが存在するか順次調べて、存
在した場合car部に入っているコマンドを起動する。
@item
以上どれかにマッチしなければあきらめる。
@end enumerate


変数 @code{YaTeX-file-processor-alist} と変数 
@code{YaTeX-file-processor-alist} の設定方法についてはそれぞれの変数につい
て describe-variable して説明を読んで下さい。うまく設定すると、画像ファイ
ルにかぎらず、任意の形式のファイルを任意のプロセッサで処理するコマンドを簡
単に呼び出すことができます。

@node メインファイルへのジャンプ, 環境を単位としたジャンプ, お絵描きツール起動, Cursor jump
@comment  node-name,  next,  previous,  up
@section メインファイルへのジャンプ

@file{chap1.tex}のようなサブファイルで、

@table @kbd
@item [prefix] ^
        @dots{} メインファイルにジャンプ
@item [prefix] 4 ^
        @dots{} 別ウィンドウでメインファイルにジャンプ
@end table

@noindent
を押すと、メインファイルの編集バッファに切替えます。もし、メインファイルを
オープンしていない場合は、カレントディレクトリから探して自動的にオープンし
ます。

@node 環境を単位としたジャンプ, 最後の補完位置へのジャンプ, メインファイルへのジャンプ, Cursor jump
@comment  node-name,  next,  previous,  up
@section 環境を単位としたジャンプ

さらに現在の環境を単位として機能するコマンドに以下のものがあります。

@cindex 環境の先頭へ[かんきようのせんとうへ]
@cindex 環境の末尾へ[かんきようのまつひへ]
@cindex 環境をマーク[かんきようをまあく]
@cindex M-C-a
@cindex M-C-e
@cindex M-C-@@
@table @kbd
@item M-C-a
        @dots{} 環境の先頭(@code{\begin})へジャンプ
@item M-C-e
        @dots{} 環境の末尾(@code{\end})へジャンプ
@item M-C-@@
        @dots{} 環境全体をマーク
@end table

上記のコマンドは通常の@kbd{[prefix]}キーではなく@kbd{META}キーをプリフィク
スとして機能するのでご注意下さい。

@node 最後の補完位置へのジャンプ,  , 環境を単位としたジャンプ, Cursor jump
@comment  node-name,  next,  previous,  up
@section 最後の補完位置へのジャンプ

野鳥は補完入力した位置を常にレジスタ @code{3}に保存しています。
入力途中で如何なるファイルの如何なる位置に行ったとしても、
@kbd{C-x j 3}(@code{jump-to-register})を使って直ちに最後の補完入力位置に戻
ることができます。

@node Modifying/Deleting, Filling, Cursor jump, Top
@comment  node-name,  next,  previous,  up
@chapter 変更/削除
@cindex 変更/削除[へんこう/さくしよ]
@cindex prefix c
@cindex prefix k

  既に入力されている La@TeX{} コマンドの変更/削除のために以下の機能が用意
されています。

@table @kbd
@item [prefix] c
        @dots{} カーソル位置の La@TeX{} コマンドの変更
@item [prefix] k
        @dots{} カーソル位置の La@TeX{} コマンドの削除
@end table


これらのコマンドは、コマンドを起動する場所によって動作を決定するので注意し
て下さい。

@menu
* Changing LaTeX command::      La@TeX{} コマンドの変更
* Killing LaTeX command::       La@TeX{} コマンドの削除
@end menu

@node Changing LaTeX command, Killing LaTeX command, Modifying/Deleting, Modifying/Deleting
@comment  node-name,  next,  previous,  up
@section La@TeX{} コマンドの変更

変更したい La@TeX{} コマンドにカーソルを合わせて @kbd{[prefix] c} 
を押すとそのコマンドを補完入力などを用いて手軽に変えることができます。
@kbd{[prefix] c} で変更できるコマンドには以下のものがあります。

@itemize
@item @code{begin/end} の環境名
@item section型コマンドのコマンド名
@item section型コマンドの引数
@item section型コマンドのオプションパラメータ([]で囲まれたもの)
@item large型コマンド
@item (イメージ補完で入力可能な)数式モード専用のmaketitle型コマンド
@end itemize

  変えたいsection型コマンドの引数がさらに La@TeX{} コマンドを含む場合は、
その引数を囲む中括弧の上で @kbd{[prefix] c} を押すことで中のコマンドを変更
対象判定から除外することができます。

@cindex 環境名の変更[かんきようめいのへんこう]

@node Killing LaTeX command,  , Changing LaTeX command, Modifying/Deleting
@comment  node-name,  next,  previous,  up
@section La@TeX{} コマンドの削除

@kbd{[prefix] k} は起動する位置により
次のような動作を行います。
@cindex 環境の削除[かんきようのさくしよ]


@example
起動位置                        動作
\begin, \endの行                @code{\begin\end}ペアの削除
%#BEGIN, %#END の行             %#BEGIN,%#ENDペアの削除
section型コマンドの上(中)       section型コマンドの削除
フォント指定括弧の上            フォント指定の削除
括弧の上                        対をなす括弧の削除
@end example


@code{\begin, \end} および @code{%#BEGIN, %#END} を削除する場合、
@code{\begin, \end} や @code{%#BEGIN, %#END} の存在する行は
まるごと削除されるので、それらの一行に @code{\begin} などを二つ以上連ねて
書かないように注意してください。
上記のものはすべて本文を囲う「容器」を削除するように働きますが、
universal-argument (@kbd{C-u}) を打った後で@kbd{[prefix] k}をタイプすると、
それぞれの「容器」に含まれる「中身」も一気に削除します。以下の例を参考にし
て下さい。

@example
        元のテキスト:                   [prefix] k      C-u [prefix] k
        本文\footnote@{脚注@}です。     本文脚注です。  本文です。
                ↑(カーソル位置)
@end example

@node Filling, Includeonly, Modifying/Deleting, Top
@comment  node-name,  next,  previous,  up
@chapter 桁揃え
@cindex 桁揃え[けたそろえ]

@section itemの桁揃え
@cindex itemなどの桁揃え[itemなとのけたそろえ]
@cindex prefix i

  itemize 環境中にある@code{\item}の項目(文章)が複数行に渡る場合に、項
目の先頭を桁揃えしたい場合には、

@c @table @kbd
@c @item [prefix] i
@c         @dots{} itemの桁揃え
@c @end table

@table @kbd
@item M-q
        @dots{} 桁揃え
@end table
@cindex NTT-jTeX[えぬていいていいしえいてつく]

@noindent
によって、その item のインデントの深さに応じて fill されます。なお、古い
NTT jTeX を使用している場合には、Lisp 変数@code{NTT-jTeX}を@code{t}にセッ
トして下さい。

@cindex YaTeX-item-regexp
  このとき、変数@code{YaTeX-item-regexp}の値(標準では @code{"\\\\item"})を
項目指定コマンドの正規表現として検索に使用します。itemize 環境で、独自のコ
マンドを定義して項目を列挙している場合(例えば@code{\underlineitem})は、
@file{~/.emacs} で次のように指定して下さい。

@lisp
        (setq YaTeX-item-regexp
              "\\(\\\\\\(sub\\)*item\\)\\|\\(\\\\underlineitem\\)")
@end lisp


この変数の指定の仕方がよく分からない場合は、独自の項目列挙コマンドの名前を
@code{@code{"\item"}で始まるものにして下さい(例えば"\itembf"})。

野鳥の @kbd{M-q} では @code{\item} を環境に応じて以下のように「ハングイン
デント」します。

@example
itemize, enumerate環境:
       >\item[ほげほげ] 英語では、特に意味のない単語を `foo' であらわしま
       >                すが、これの日本語版ともいえる単語が「ほげほげ」
       >                です。
description環境:
       > \item[へろへろ] 「ほげほげ」をでたらめが単語として使った時に、第
       >            2のでたらめな単語として「へろへろ」が使われることが多
       >            いようです。
@end example

@section パラグラフの桁揃え
@cindex パラグラフの桁揃え[はらくらふのけたそろえ]
@cindex M-q

  itemize環境以外でのパラグラフの桁揃え(fill)は、基本的に他のモードと同じ
ように機能しますが、verbatim環境や、tabular環境など桁揃えをすると悲惨な状
況になるような環境中では機能しません。また、\verb で括ってあるものは決して
行分割されません(変数 @code{YaTeX-verb-regexp} で制御) )。さらに、一時的に
インデントの深さを変えてある箇所では、そのインデントの先頭で@kbd{M-q}を押
すことにより fill-prefix をいちいち変更しなくて桁揃えができます。


@node Includeonly, What column, Filling, Top
@comment  node-name,  next,  previous,  up
@chapter 勝手にincludeonly
@cindex 勝手にincludeonly[かつてにincludeonly]
@cindex includeonly

  ファイルを分割して文章を入力している時には、メインファイル中に

@example
        \includeonly@{現在編集中のファイル名@}
@end example

@noindent
のように書いておくことで、タイプセットの時間を節約できますが、ちょっと他の
ファイルを手直ししたい時には
@cindex 他のファイルの手直し[ほかのふあいるのてなおし]

@example
        \includeonly@{ちょっと手直ししたいファイル名@}
@end example


と書き直さなければならず手間がかかります。野鳥では現在編集しているファイル
名がメインファイルの@code{\includeonly}にない場合には自動的にこれを検出し、
次の指示を仰ぎます。

@example
        A)dd R)eplace %)comment?
@end example


現在編集中のファイルを @code{\includeonly} のリストに加えたい時には@kbd{a}
を、現在編集中のファイルだけを @code{\includeonly} にしたい時は@kbd{r}を、
@code{\includeonly} の行をコメントアウトして無効化したい時には、@kbd{%}を
それぞれ押して下さい。

@node What column, Intelligent newline, Includeonly, Top
@comment  node-name,  next,  previous,  up
@chapter ここはどこ?
@cindex ここはどこ?[ここはとこ?]
@cindex prefix &
@cindex 複雑なtabular[ふくさつなtabular]

  項目数の多い tabular などをたくさん書いていると下の方の行で、いま書いて
いる桁がどこに対応するのかわからなくなってしまうことがあります。例えば、以
下のような tabular において、

@example
        \begin@{tabular@}@{|c|c|c|c|c|c|c|c|@}\hline
         氏名&所属&〒&住所&電話&FAX&帰省先&帰省先電話\\ \hline
         矢上二郎 & 6 & 223 & 横浜市港北区日吉 & xxx-yyy &
                zzz-www & トンガ & 9876-54321 \\
         日吉小僧 & 2 & \multicolumn@{2@}@{c|@}@{教えない@}
                &&&(???)
         \\ \hline
        \end@{tabular@}
@end example


(???)の部分がどの項目なのかすぐに判断するのは難しいでしょう。こんな時は、

@table @kbd
@item [prefix] &
        @dots{} 現在のカラム表示
@end table
@cindex 現在のカラム表示[けんさいのからむひようし]

@noindent
を押すとカーソル位置のカラムがどの項目に該当するかをミニバッファに表示しま
す。tabular/array環境の第1行目を項目名の並びとみなして対応するものを探しま
す。もし項目名として別のものを表示して欲しい場合は、行頭を@code{%}にしてダ
ミーの項目並びを作っておくと良いでしょう。

@node Intelligent newline, Usepackage cheker, What column, Top
@comment  node-name,  next,  previous,  up
@chapter おまかせ改行
@cindex おまかせ改行[おまかせかいきよう]
@cindex &入力[&にゆうりよく]

  tabular[*], array, itemize, enumerate, tabbing 環境をbegin型補完で入力し
た時、または各環境内で

@table @kbd
@item ESC RET
        @dots{} おまかせ改行
@end table


を押すと、その環境に応じた行エントリを次の行に挿入します(begin型補完時に自
動挿入されたエントリが不要な場合は undo によって消去できます)。例えば、
tabular環境では、その環境のカラム数に対応した個数の @code{&} に加え、行末
の @code{\\} を入れます。この時それ以前に @code{\hline} があればそれも付け
加えます。環境とそれに応じて自動入力するものの対応は以下のようになります。

@itemize
@item @code{tabular}, @code{tabular*}, @code{array}

        カラム数-1 だけの @code{&} と @code{\\}。必要に応じて @code{\hline}

@item @code{tabbing}

        一行目で定義している @code{\=} と同じ個数の @code{\>}。

@item @code{itemize}, @code{enumerate}, @code{description}, @code{list}

        @code{\item} または @code{item[]}
@end itemize

  tabular 環境の例のように、本機能は各環境の一行目の内容を参考にして動作す
るので、なるべく二行目以降で呼び出すようにしてください。

  もし、その他の環境、例えば @code{foo}、に対して@code{おまかせ改行}を動作
させたい時は、@code{YaTeX-intelligent-newline-foo} という名前の関数を定義
します。定義した関数は、現在の行に改行を挿入した直後の行頭の位置で呼ばれま
す。関数 @code{YaTeX-indent-line} を呼ぶと現在の環境のネストに応じた深さに
インデントされるので、これを呼んでから何かを挿入するようなコードを書くとよ
いでしょう。@file{yatexenv.el}内の関数 
@code{YaTeX-intelligent-newline-itemize} の定義などを参考にしてください。


@node Usepackage cheker, Changing mode of YaTeX, Intelligent newline, Top
@comment  node-name,  next,  previous,  up
@chapter 先回りusepackage
@cindex 先回りusepackage[さきまわり]

  begin型、section型、maketitle型、いずれかのLaTeX2eマクロを補完入力すると、
そのマクロの利用に外部パッケージを必要とする場合、そのパッケージを
本文中で @code{\usepackage@{@}} しているかどうかを調査し、もししていなければ
プリアンブルに対応するパッケージを引数にした @code{\usepackage} 文を
(確認後に)挿入します。

  ただしこの機能が働くためには、パッケージ名とその中で定義されているマクロ
群をalistの形式で変数 @code{YaTeX-package-alist-private} に設定しておく必
要があります。

@node Changing mode of YaTeX, Online help, Usepackage cheker, Top
@comment  node-name,  next,  previous,  up
@chapter 野鳥の動作モード切り替え
@cindex モード切り替え[もうときりかえ]
@cindex prefix w

@table @kbd
@item [prefix] w
        @dots{} 野鳥動作モード切り替えメニュー
@end table

@noindent
で野鳥自身の動作を決定する以下のモードを切り替えます。

@itemize @bullet
@item 修正モード
@item 野鳥数式モード
@end itemize

修正モードは、開き括弧入力時の処理をコントロールし、修正モードONの時は開き
括弧の入力は開き括弧のみの入力になり、修正モードOFFの時は開き括弧の入力だ
けで閉じ括弧まで入力します。デフォルト(起動時)の設定は@emph{OFF}です。

  野鳥数式モードは、変数 @code{YaTeX-auto-math-mode} が @code{nil} の時の
み有効で、このとき@kbd{;}や@kbd{:}を押した時(@ref{Image completion}参照)に、
どのようなイメージ補完を機能させるか、通常のキーとして機能させるかを手動で
切り替えます。自動判定が遅いマシンでは@code{YaTeX-auto-math-mode}
@code{nil}にセットし、野鳥数式モードを手動で切り替えると良いでしょう。


@node Online help, Inclusion hierarchy browser, Changing mode of YaTeX, Top
@comment  node-name,  next,  previous,  up
@chapter オンラインヘルプ
@cindex オンラインヘルプ[おんらいんへるふ]
@cindex apropos
@cindex キーワード検索[きいわあとけんさく]
@cindex prefix ?
@cindex prefix /

  使おうとする La@TeX{} コマンドの用法がよく分からない時は、オンラインヘル
プをひきましょう。ヘルプに関するキーには以下のものがあります。

@table @kbd
@item [prefix] ?
        @dots{} オンラインヘルプ
@item [prefix] /
        @dots{} オンラインapropos
@end table

@section オンラインヘルプ
@cindex グローバルヘルプ[くろおはるへるふ]
@cindex プライベートヘルプ[ふらいへえとへるふ]
@cindex YaTeX-help-file
@cindex YaTeX-help-file-private

  「オンラインヘルプ」は、一般的な La@TeX{} コマンド(デフォルトでカーソル
位置のコマンド)に対する説明を隣のバッファに表示します。この時参照されるヘ
ルプ用ファイルには「グローバルヘルプ」と「プライベートヘルプ」の二種類があ
り、前者は La@TeX{} の標準コマンドの主なものの説明を含むファイルで、変数
@code{YaTeX-help-file}の値で指定されます。このファイルは通常公共の場所(デ
フォルトで@code{$EMACSEXECPATH})に置かれ、誰もがその内容を更新できるように
全員に書き込み権が与えられるべきものです。後者は、非標準もしくは個人的なマ
クロ定義に関する説明が書かれているファイルで、変数
@code{YaTeX-help-file-private}の値で指定されます。こちらはユーザのホームディ
レクトリの下などに置かれます。

@section オンラインapropos

  「オンラインapropos」は GNU Emacs の apropos と同様、ユーザが指定したキー
ワードを説明文に含む項目すべてを隣のバッファに表示します。

  もし、調べようとしたLa@TeX{}コマンドに対する説明がヘルプファイル中に見つ
からなかった場合は、説明文の入力を求めてくるので、可能であれば参考書などを
調べてそのコマンドの説明を入力してください。もし、なにか標準的なコマンドに
対する説明を書いたならばぜひ私までその説明をお送り下さい。次回の配布に含め
たいと思います。

@node Inclusion hierarchy browser, Cooperation with other packages, Online help, Top
@comment  node-name,  next,  previous,  up
@chapter インクルード構造ブラウザ
@cindex インクルード構造[いんくるうとこうそう]
@cindex prefix d

複数のファイルに分割しているドキュメントを書いている場合、

@table @kbd
@item [prefix] d
        @dots{} インクルード構造ブラウズ
@end table

@noindent
を押すと、そのドキュメントの親ファイルを聞いて来ます。ここで全てのファイル
の親となるファイル(デフォルトが示されているので大抵はRETのみ)を入力すると
インクルードしている全てのファイルを解析し、インクルード状況を視覚的に表示
します。このバッファでは以下のキー操作が有効です。

@table @kbd
@item n
        @dots{} 次の行に移動し対応するファイルを隣のバッファに表示
@item p
        @dots{} 上の行に移動し対応するファイルを隣のバッファに表示
@item N
        @dots{} 同じインクルードレベルの次のファイルに移動
@item P
        @dots{} 同じインクルードレベルの前のファイルに移動
@item j
        @dots{} 次の行に移動
@item k
        @dots{} 上の行に移動
@item u
        @dots{} 一代親にあたるファイルに移動
@item .
        @dots{} カーソル位置のファイルを隣のバッファに表示
@item SPC
        @dots{} 隣のバッファの対応ファイルをスクロールアップ
@item DEL, b
        @dots{} 隣のバッファの対応ファイルをスクロールダウン
@item <
        @dots{} 隣のバッファの対応ファイルの先頭を表示
@item >
        @dots{} 隣のバッファの対応ファイルの末尾を表示
@item '
        @dots{} (@kbd{<}や@kbd{>}の後で)元の表示位置に戻る
@item RET, g
        @dots{} カーソル位置のファイルを隣のバッファでオープン
@item mouse-2
        @dots{} RETと同じ(ウィンドウ使用時のみ)
@item o
        @dots{} 隣のウィンドウに移動
@item 1
        @dots{} 他のウィンドウを消す
@item -
        @dots{} ブラウズウィンドウを小さくする
@item +
        @dots{} ブラウズウィンドウを大きくする
@item ?
        @dots{} ヘルプ表示
@item q
        @dots{} 表示前の状態に戻る
@end table

  ただし、隣のウィンドウのファイルの内容を表示する機能に関しては、対応する
ファイルをクローズしてしまうとうまく働きませんのでご注意ください。

@node Cooperation with other packages, Customizations, Inclusion hierarchy browser, Top
@comment  node-name,  next,  previous,  up
@chapter 他パッケージとの連携
@cindex  他パッケージとの連携[たはつけえしとのれんけい]

@section gmhist
@cindex gmhist
@cindex コマンドヒストリ[こまんとひすとり]
@cindex ヒストリ[ひすとり]

  @file{gmhist.el}と@file{gmhist-mh.el} をロードしている場合、プレヴューコ
マンドの入力(@kbd{[prefix] tp]})、印刷コマンドの入力(@kbd{[prefix] tl})の
時に独立したヒストリを利用できます。それぞれのプロンプトで、@kbd{M-p} を押
すと直前に利用したコマンド文字列をくり返し呼び出すことができます。

@section min-out
@cindex min-out

  @file{min-out.el} (@code{outline-minor-mode}) と野鳥を組み合わせて使うこ
とももちろん可能です。設定の方法に関しては@file{yatexm-o.el}をご覧ください。

@node Customizations, Etc, Cooperation with other packages, Top
@comment  node-name,  next,  previous,  up
@chapter カスタマイズ
@cindex カスタマイズ[かすたまいす]
@cindex キーアサイン[きいあさいん]

  野鳥の動作を制御する種々の変数を独自に設定することにより、補完入
力を起動するキーアサインを変えたり、環境名の補完候補をさらに充実さ
せることなどができます。

@menu
* Lisp variables::              lisp 変数
* Add-in functions::            付加関数(アドイン関数)
@end menu

@node Lisp variables, Add-in functions, Customizations, Customizations
@comment  node-name,  next,  previous,  up
@section lisp 変数
@cindex prefixキー変更[prefixきいへんこう]

  例えば prefix キーを @kbd{C-c} 以外のキーにしたい場合は、
@code{YaTeX-prefix}に prefix キーにしたいシンボルを定義してください。さら
に、「@kbd{C-c 英字}」というキーバインドは独自の関数が割り当ててあるので使
いたくない。このような時は、@code{YaTeX-inhibit-prefix-letter} を @code{t} 
に設定することにより、@kbd{C-c 英字…}のバインドが全て、対応する@kbd{C-c
C-英字…}に変わります(ただし、begin型 large型補完の大文字起動によるリジョ
ン指定は可能なままです。これも無効にしたい場合は@code{t}ではなく 1 にセッ
トして下さい。)。

@menu
* All customizable variables::  カスタマイズ変数一覧
* Sample definitions::          カスタマイズ変数設定例
* Hook variables::              hook変数
* Hook file::                   hook用ファイル
@end menu

@node All customizable variables, Sample definitions, Lisp variables, Lisp variables
@comment  node-name,  next,  previous,  up
@subsection カスタマイズ変数一覧
@cindex カスタマイズ変数一覧[かすたまいすへんすういちらん]

  yatex-mode における次の変数がカスタマイズ可能です。@file{~/.emacs} で 
@code{setq} しておけば、そちらの定義が優先されます。括弧の中はデフォルト値
です。実際に変数の値を変更する場合は @kbd{M-x describe-variable} で
変数の詳細な説明を参照してください。

@defvar YaTeX-prefix
yatex-mode 中のプリフィクスキー (@kbd{\C-c})
@end defvar

@defvar YaTeX-inhibit-prefix-letter
prefix キーの直後のキーバインドで @kbd{英字} のものを @kbd{C-英字} に変更 
(@code{nil})
@end defvar

@defvar YaTeX-fill-prefix
本文を書く時の行頭に挿入する接頭辞すなわち fill-prefix (@code{""(nil)})
@end defvar

@defvar YaTeX-user-completion-table
学習したLa@TeX{}コマンド保存ファイル名 (@code{"~/.yatexrc"})
@end defvar

@defvar YaTeX-kanji-code
文書を作成する時の漢字コード
nil=既存のコードのまま 0=no-conversion 1=Shift JIS,
2=JIS, 3=EUC, 4=UTF-8 (2 (MS-DOSでは1))
@end defvar

@defvar tex-command
La@TeX{}タイプセッタコマンド名 (@code{"platex"})
@end defvar

@defvar dvi2-command
プレヴューアコマンド名 (@code{"xdvi -geo +0+0 -s 4"})
@end defvar

@defvar dviprint-command-format
dviファイルの印刷に使われるコマンド式 (@code{"dvi2ps %f %t %s | lpr"})
@end defvar

@defvar dviprint-from-format
上の@code{%f}に相当する開始ページ指定書式、@code{%b} が開始ページ番号に変
わる (@code{"-f %b"})
@end defvar

@defvar dviprint-to-format
@code{%t} に相当する終了ページ指定書式、@code{%e}が終了ページ番号に変わる 
(@code{"-t %e"})
@end defvar

@defvar makeindex-command
makeindexコマンド (@code{"makeindex"} (MS-DOSでは@code{"makeind"}))
@end defvar

@defvar YaTeX-dvipdf-command
dviをPDFに変換するコマンド (@code{"dvipdfmx"})
@end defvar

@defvar YaTeX-on-the-fly-preview-interval
@kbd{[prefix] t e}で環境即時previewをする場合の変換処理までの
無操作時間(秒) (0.9)
@code{nil} の場合は即時プレヴューをしない。
@end defvar

@defvar YaTeX-on-the-fly-math-preview-engine
@kbd{[prefix] t e}で数式環境を即時previewする時に用いるエンジン
(latex-math-previewが利用可能なときは latex-math-preview-expression を呼ぶ
@code{'YaTeX-typeset-environment-by-lmp}
そうでないときは内蔵関数を呼ぶ @code{'YaTeX-typeset-environment-by-builtin})
@end defvar

@defvar YaTeX-cmd-gimp
GIMPを起動するコマンド (code{"gimp"})
@end defvar
@defvar YaTeX-cmd-tgif
tgifを起動するコマンド (code{"tgif"})
@end defvar
@defvar YaTeX-cmd-inkscape
Inkscapeを起動するコマンド (code{"inkscape"})
@end defvar
@defvar YaTeX-cmd-dia
Diaを起動するコマンド (code{"dia"})
@end defvar
@defvar YaTeX-cmd-ooo
OpenOffice.orgまたはLibreOfficeを起動するコマンド (code{"soffice"})
@end defvar
@defvar YaTeX-cmd-gs
Ghostscriptを起動するコマンド (code{"gs"})
@end defvar
@defvar YaTeX-cmd-dvips
dvipsを起動するコマンド(環境によってはpdvipsなど) (code{"dvips"})
@end defvar
@defvar YaTeX-cmd-displayline
displaylineを起動するコマンド
(code{"/Applications/Skim.app/Contents/SharedSupport/displayline"})
@end defvar
@defvar YaTeX-cmd-edit-ps
PostScriptファイルを編集するコマンド (変数code{"YaTeX-cmd-gimp"}の値)
@end defvar
@defvar YaTeX-cmd-edit-pdf
PDFファイルを編集するコマンド (変数code{"YaTeX-cmd-ooo"}の値)
@end defvar
@defvar YaTeX-cmd-edit-ai
.aiファイルを編集するコマンド (変数code{"YaTeX-cmd-inkscape"}の値)
@end defvar
@defvar YaTeX-cmd-edit-svg
SVGファイルを編集するコマンド (変数code{"YaTeX-cmd-inkscape"}の値)
@end defvar
@defvar YaTeX-cmd-edit-images
その他画像ファイルを編集するコマンド (変数code{"YaTeX-cmd-gimp"}の値)
@end defvar

@defvar YaTeX-need-nonstop
@code{\nonstopmode@{@}}を自動的に付加するか (@code{nil})
@end defvar

@defvar latex-warning-regexp
latexコマンドの出力するウォーニング行の正規表現 (@code{"line.* [0-9]*"})
@end defvar

@defvar latex-error-regexp
同じくエラー行の正規表現 (@code{"l\\.[1-9][0-9]*"})
@end defvar

@defvar latex-dos-emergency-message
MS-DOS上で動作する latex コマンドが、エラーにより停止するとき出力するメッ
セージ (@code{"Emergency stop"})
@end defvar

@defvar latex-message-kanji-code
タイプセッタの出力するメッセージの漢字コード.タイプセットバッファ
の出力が化ける時は、これを設定する (2, Nemacsでのみ有効)
@end defvar

@defvar NTT-jTeX
古いNTT-j@TeX{}使用時のようにインデントした行の先頭と前の行の
(タイプセット後の)字間が空いてしまうのを嫌う場合は@code{t}にする
(@code{nil})
@end defvar

@defvar YaTeX-item-regexp
itemの桁揃えの時に用いる、itemの正規表現 (@code{"\\\\(sub\\)*item"})
@end defvar

@defvar YaTeX-verb-regexp
verbコマンドの正規表現。先頭の\\\\はつけない (@code{"verb\\*?\\|path"})
@end defvar

@defvar YaTeX-nervous
ローカル辞書を用いる時 @code{t} (@code{t})
@end defvar

@defvar YaTeX-sectioning-regexp
セクション区切り設定コマンドの正規表現 
(@code{"\\(part\\|chapter\\*?\\|\\(sub\\)*\\(section\\|paragraph\\)\\*?\\)\\b"})
@end defvar

@defvar YaTeX-fill-inhibit-environments
fill を抑止する環境名のリスト 
(@code{'("tabular" "tabular*" "array" "picture" "eqnarray" "eqnarray*" "equation" "math" "displaymath" "verbatim" "verbatim*")})
@end defvar

@defvar YaTeX-uncomment-once
領域uncommentで行頭の複数の@code{%}を全て削除するか (@code{nil})
@end defvar

@defvar YaTeX-close-paren-always
開き括弧の入力で常に閉じ括弧を入力する (@code{t})
@end defvar

@defvar YaTeX-auto-math-mode
数式モードの切り替えを自動的に行う (@code{t})
@end defvar

@defvar YaTeX-math-key-list-private
数式イメージ補完で用いる (プリフィクスキー . 対応補完テーブル) の
alist (@code{nil})。補完テーブルの書き方については@file{yatexmth.el}を参照。
@end defvar

@defvar YaTeX-default-pop-window-height
1画面の時にタイプセットバッファを初めて作成する時の高さ。数値で行数、数字
文字列でEmacsウィンドウに対する百分率 (10)
@end defvar

@defvar YaTeX-help-file
共用ヘルプファイル (@file{$doc-directory/../../site-lisp/YATEXHLP.jp})
@end defvar

@defvar YaTeX-help-file-private
個人用ヘルプファイル (@file{"~/YATEXHLP.jp"})
@end defvar

@defvar YaTeX-no-begend-shortcut
@kbd{[prefix] b ??} のショートカットを使わず、@kbd{[prefix] b} だけで補完
入力に入る (@code{nil})
@end defvar

@defvar YaTeX-hilit-pattern-adjustment-private
正規表現とそれにマッチするものの論理的意味をシンボルであらわしたものの
リスト…のリスト。hilit19 を組み込んでいる時のみ有効。
詳しくは @code{(assq 'yatex-mode hilit-patterns-alist)} 
した結果と、変数 @code{YaTeX-hilit-pattern-adjustment-default} の値(と場合
によっては hilit19 のドキュメント)を参照せよ。
@end defvar

@defvar YaTeX-sectioning-level
LaTeXのセクション単位宣言コマンドとその論理的高さのalist。
@end defvar

@defvar YaTeX-hierarchy-ignore-heading-regexp
Hierarchy バッファは通常ファイルヘッダとして、LaTeXのセクション宣言コマン
ドの引数を検索し、それがなければコメント行を探すが、その際にヘッダとしては
意味を持たないパターンをこの変数に設定する。デフォルトでは RCS ヘッダとモー
ド指定行(-*- xxx -*-)が設定されている。
@end defvar

@defvar YaTeX-skip-default-reader
Non-nil に設定するとsection型コマンドの引数入力時、アドイン関数がなければ
ミニバッファでの読み込みをせずに入力を完了させる (@code{nil})
@end defvar

@defvar YaTeX-create-file-prefix-g
@code{\include}などで @kbd{prefix g}した時に、ジャンプ先が存在しないファイ
ルであってもオープンする (@code{nil})
@end defvar

@defvar YaTeX-simple-messages
各種補完時のメッセージ出力を簡素化する (@code{nil})
@end defvar

@defvar YaTeX-hilit-sectioning-face
色付けが有効な時の @code{\part} の色 
(@code{'(yellow/dodgerblue yellow/slateblue)})。
リストの第一要素は @code{hilit-background-mode} が @code{'light} の時の、
第二要素は @code{'dark} の時の @code{\chapter} の色で、文字色/背景色 のよ
うに指定する。
@end defvar

@defvar YaTeX-hilit-sectioning-attenuation-rate
色付けが有効な時の、@code{\subparagraph} の色を @code{\chapter} の濃度の何
%薄くしたものにするか (@code{'(15 40)}) @code{YaTeX-hilit-sectioning-face}
の項参照。
@end defvar

@defvar YaTeX-use-AMS-LaTeX
AMS-LaTeX を使用する場合は @code{t} に設定する (@code{nil})
@end defvar

@defvar YaTeX-use-LaTeX2e
LaTeX2e を使用する場合は @code{t} に設定する (@code{t})
@end defvar

@defvar YaTeX-template-file
新規ファイル作成時に自動挿入するファイル名 (@code{~/work/template.tex})
@end defvar

@defvar YaTeX-search-file-from-top-directory
inputするファイルを探すときの基準ディレクトリをmainファイルのあるディレクト
リにするか (@code{t})
@end defvar
@defvar YaTeX-use-font-lock
ソースの色づけパッケージとして font-lock を利用するかどうか
(@code{(featurep 'font-lock)})
@end defvar

@defvar YaTeX-use-hilit19
ソースの色づけパッケージとして hilit19 を利用するかどうか
(@code{(featurep 'hilit19)})
@end defvar

@defvar YaTeX-use-italic-bold
italic, boldフォントを野鳥が探すかどうか (Emacs20以降なら@code{t})
font-lock利用時のみ有効。
(@code{(featurep 'hilit19)}
@end defvar

@defvar YaTeX-singlecmd-suffix
全てのmaketitle型コマンドの補完入力直後に挿入する文字列。
@code{"@{@}"} などがお勧め。
@end defvar

@defvar YaTeX-package-alist-private
LaTeX2eのパッケージ名とその中に含まれるマクロのリスト。
適切に設定しておくと本文入力時にマクロを補完入力すると
そのマクロに必要なパッケージを usepackage するか自動的に検査してくれる。
していなければ \usepackage を自動追加することもできる。
リストは 
@lisp
   '((パッケージ名1
        (補完タイプ マクロのリスト……)
        (補完タイプ マクロのリスト……))
     (パッケージ名2
        (補完タイプ マクロのリスト……)
        (補完タイプ マクロのリスト……))………)
@end lisp
という形式にする。補完タイプは @code{env, section, maketitle} のどれか。
具体例は変数 @code{YaTeX-package-alist-default}
の値参照。
@end defvar

@defvar YaTeX-tabular-indentation
tabular/array 環境で現在行の先頭位置が表の第Nカラムのときは
標準インデント位置から N*YaTeX-tabular-indentation 桁下げた
インデントにする。
@end defvar

@defvar YaTeX-noindent-env-regexp
別の環境内にあっても \begin@{@} が行頭から始まるべき環境名の正規表現。
verbatim環境などを指定する。
@end defvar

@defvar YaTeX-electric-indent-mode
Emacs 24.4 で導入された改行時の、自動インデントをどうするか。
この値がそのまま electric-indent-local-mode に渡される。
-1でoff。
@end defvar

@defvar YaTeX-ref-default-label-string
\ref@{@} のラベル補完でラベル未設定のものに自動的に生成する
ラベル名の書式。strftime(3)関数に似た日付ベースで指定する。
利用できる書式は以下のとおり。
%y -> 西暦下二桁,  %b -> 月の英名,  %m -> 月(1〜12)
%d -> 日,  %H -> 時,  %M -> 分,  %S -> 秒,
%qx -> アルファベットで26進数化した yymmdd.
%qX -> アルファベットで26進数化した HHMMSS.
デフォルトは "%H%M%S_%d%b%y"
@end defvar

@defvar YaTeX-ref-generate-label-function
\ref@{@}のラベル名自動生成のときに使う関数のシンボル。
デフォルトは標準の YaTeX::ref-generate-label 関数が割り当ててある。
引数を2つ取る関数を定義して、この変数にセットするとその関数を呼んだ
結果をデフォルトのラベル名候補とする。設定例:
@lisp
  (setq YaTeX-ref-generate-label-function 'my-yatex-generate-label)
  (defun my-yatex-generate-label (command value)
    (and (string= command "caption")
         (re-search-backward "\\\\begin@{\\(figure\\|table\\)@}" nil t)
         (setq command (match-string 1)))
    (let ((alist '(("chapter" . "chap")
                   ("section" . "sec")
                   ("subsection" . "subsec")
                   ("figure" . "fig")
                   ("table" . "tbl"))))
      (if (setq command (cdr (assoc command alist)))
          (concat command ":" value)
        (YaTeX::ref-generate-label nil nil))))
@end lisp
@end defvar

@node Sample definitions, Hook variables, All customizable variables, Lisp variables
@comment  node-name,  next,  previous,  up
@subsection カスタマイズ変数設定例
@cindex 設定例[せつていれい]

  たとえば、prefix キーとして@kbd{ESC}を使用し、新たな補完候補を格納するファ
イルを、@file{~/src/emacs/yatexrc} にし、行頭の prefix をタブ文字一つに変
えたいときは、

@lisp
        (setq YaTeX-prefix "\e"
              YaTeX-user-completion-table "~/src/emacs/yatexrc"
              YaTeX-fill-prefix "       ")
@end lisp

@noindent
を @file{~/.emacs} に加えます。

@node Hook variables, Hook file, Sample definitions, Lisp variables
@comment  node-name,  next,  previous,  up
@subsection hook変数
@cindex hook変数[hookへんすう]
@cindex yatex-mode-hook
@cindex yatex-mode-load-hook

  また、hook 変数 @code{yatex-mode-hook}, @code{yatex-mode-load-hook} を用
意しています。すべての yatex-mode のバッファで作用させたいものは、
@code{yatex-mode-hook} に記述し、@file{yatex.el} をロードする時だけ作用さ
せたいものは@code{yatex-mode-load-hook} に記述します。例えば、
@code{outline-minor-mode} を利用する場合、それぞれのバッファで 
@code{outline-minor-mode} を有効にしたいので、@code{yatex-mode-hook} を次
のように設定します。

@lisp
        (setq yatex-mode-hook
              '(lambda () (outline-minor-mode t)))
@end lisp


逆に、独自のキー定義を行いたい時などは、@code{yatex-mode-load-hook} を利用
します。例えば、begin 型補完において、 document や、enumerate 以外の環境名
もショートカットキーで入れたいなどという時は、次のようにします。以下の例は、
@kbd{[prefix] ba} で @code{\begin@{abstract@}}, @code{\end@{abstract@}} を
挿入します。

@lisp
        (setq yatex-mode-load-hook
              '(lambda() (YaTeX-define-begend-key "ba" "abstract")))
@end lisp

なお、新たなキーの定義には、関数 @code{YaTeX-define-key}
@code{YaTeX-define-begend-key}を利用するようにしてください。

@node Hook file,  , Hook variables, Lisp variables
@comment  node-name,  next,  previous,  up
@subsection hook用ファイル

  変数 @code{yatex-mode-load-hook} で定義する内容が多い時は、
@file{yatexhks.el}というファイルを作り、その中に野鳥関連の設定を書く事で、
初期化の時に自動的にロードします。


@node Add-in functions,  , Lisp variables, Customizations
@comment  node-name,  next,  previous,  up
@section 付加関数(アドイン関数)

  各種補完時に、環境名やコマンド名に応じたきめ細やかな補完入力機能を実現す
るための関数を作成することができます。この関数の作成方法や、組み込み方法に
関しては、@code{yatexadd.doc} をご覧ください。

@node Etc, Copying, Customizations, Top
@comment  node-name,  next,  previous,  up
@chapter その他

  野鳥の標準の La@TeX{} コマンドの辞書には、作者が頻繁に使うものしか登録さ
れていません。これは、補完候補に使いそうもないコマンドが存在して、補完した
いコマンドを出すまでのストローク数を増やしてしまう事を防止するためです。標
準辞書にないコマンドも、できるだけ補完入力方式を利用し、ユーザ辞書を充実さ
せることで、あなたの La@TeX{} スタイルにあった野鳥へと育っていくことでしょ
う。

@node Copying, Concept Index, Etc, Top
@comment  node-name,  next,  previous,  up
@chapter 取り扱い

  本プログラムはフリーソフトウェアです。本プログラムを使用して生じたいかな
る結果に対しても作者は責任を負わないこととします。転載等に関しては制限いた
しません。常識的に扱ってください。また、本プログラムに含まれるコードを利用
すること、改造することも自由に行なって構いませんが、流用することにより契約
締結の必要が生じる場合、私はいかなる契約も締結しません。具体的にはGPLへの
サインはしませんので、GNUに寄贈するものを作っている場合私の作品から取り込
んだコードを流用すると苦労するかもしれません。いかなるコード流用も拒否しま
せんが契約締結は辞退します。

  苦情、希望、バグ報告、感想等は歓迎いたします。
連絡は yuuji@@yatex.org まで(2017年9月現在)。
継続的に使用してくださる方はメイリングリスト「fj野鳥の会」に
是非加入してください。加入方法については本パッケージの @file{docs/qanda}
ファイルの「その他」の章を御覧ください。

仕様は、予告なく確実に(気分次第で)変更されます:-p。

@flushright
広瀬雄二
@end flushright

@node    Concept Index,  , Copying, Top
@comment node-name, next, previous, up
@unnumbered 索引
@printindex cp

@c カスタマイズ変数索引を索引と分離する場合にはコメントアウトを外す!!!
@c @node    Variable Index
@c @comment node-name, next, previous, up
@c @unnumbered カスタマイズ変数索引
@c @printindex vr

@contents

@bye

@c Local Variables:
@c fill-column: 74
@c fill-prefix: nil
@c buffer-file-coding-system: sjis
@c End:

Tag table:

End tag table
