[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7. 補完入力

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=Completion"
"yatex/補完入力"へのコメント(無し)

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.1 begin型補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=begin%B7%BF%CA%E4%B4%B0"
"yatex/begin型補完"へのコメント(無し)

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

[prefix] b
... begin 型補完開始(標準では C-c b)

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

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

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

[prefix] b SPC
... begin 型補完入力

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

 
        Begin environment(default document): 

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

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

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

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=7%2E1%2E1+%B4%FB%A4%CB%BD%F1%A4%A4%A4%BF%A5%C6%A5%AD%A5%B9%A5%C8%A4%F2%B4%C4%B6%AD%A4%C7%B3%E7%A4%EB"
"yatex/既に書いたテキストを環境で括る"へのコメント(無し)

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

例えばあるパラグラフを description 環境の中に入れたいときは、 そのパラグラフをマークしてから、

[prefix] B D
(または ESC 1 [prefix] b D)
(または C-u [prefix] b D など)

とタイプしてください。これは、[prefix] b SPCの補完入力にもあてはまり、 b を大文字に変えて、[prefix] B SPC とタイプすれば、あらかじめ マークしておいたリジョンを、begin と end の環境で括ります。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.2 section型補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=section%B7%BF%CA%E4%B4%B0"
"yatex/section型補完"へのコメント(無し)

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

[prefix] s
... section 型補完

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

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

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

 
        \section{???}:

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

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

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

 
        \section{目的}

が挿入され、

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

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

 
        \vspace*{}

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

7.2.1 2個以上の引数をとる section型コマンド   
7.2.2 既に書いたテキストを括る   
7.2.3 再帰補完   
7.2.4 セクション区切りのアウトライン表示   
7.2.5 ラベル自動生成   



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.2.1 2個以上の引数をとる section型コマンド

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=2%B8%C4%B0%CA%BE%E5%A4%CE%B0%FA%BF%F4%A4%F2%A4%C8%A4%EB+section%B7%BF%A5%B3%A5%DE%A5%F3%A5%C9"
"yatex/2個以上の引数をとるsection型コマンド"へのコメント(無し)

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

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

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

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

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.2.2 既に書いたテキストを括る

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=Enclose+section%2Dtype+command"
"yatex/既に書いたテキストを括る"へのコメント(無し)

また、起動コマンドのsを大文字に変えて起動すると、あらかじめ書 いた文章を section 型コマンドの第一引数として括ります。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.2.3 再帰補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=Recursive+completion"
"yatex/再帰補完"へのコメント(無し)

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.2.4 セクション区切りのアウトライン表示

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=view%2Dsectioning"
"yatex/セクション区切りのアウトライン表示"へのコメント(無し)

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

*Sectioning Lines*バッファは、

M-x YaTeX-section-overview
... セクション区切り一覧バッファを生成

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

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.2.5 ラベル自動生成

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=label%2Dgeneration"
"yatex/ラベル自動生成"へのコメント(無し)

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.3 large型補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=large%B7%BF%CA%E4%B4%B0"
"yatex/large型補完"へのコメント(無し)

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

[prefix] l
... large 型補完開始

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

 
        {\??? } (default large): 

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.3.1 既に書いた文字を括る

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=7%2E3%2E1+%B4%FB%A4%CB%BD%F1%A4%A4%A4%BF%CA%B8%BB%FA%A4%F2%B3%E7%A4%EB"
"yatex/既に書いた文字を括る"へのコメント(無し)

また、begin型補完の時と同様、先に書いてしまった一連の文章の文字のサイズ を変えたいと思う時がありますが、そのような時は、サイズや大きさを変えたい文 字の範囲をマークしてから、呼び出しキーを [prefix] L と、大文字の L に変えて呼び出せば、そのリジョン全体が、ブレースで囲まれます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.4 maketitle型補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=maketitle%B7%BF%CA%E4%B4%B0"
"yatex/maketitle型補完"へのコメント(無し)

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

[prefix] m
... maketitle 型補完開始

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.5 随時補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=Arbitrary+completion"
"yatex/随時補完"へのコメント(無し)

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

[prefix] SPC
... 随時補完

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.6 end補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=end%CA%E4%B4%B0"
"yatex/end補完"へのコメント(無し)

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

[prefix] e
... end 補完

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.7 アクセント記号補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=Accent+mark+completion"
"yatex/アクセント記号補完"へのコメント(無し)

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

[prefix] a
... アクセント記号入力

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

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

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

 
        \`{}

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

 
        \`{o}

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.8 数式記号イメージ補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=Image+completion"
"yatex/数式記号イメージ補完"へのコメント(無し)

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

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

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

 
INPUT                   入力される LaTeX コマンド
; < -                   \leftarrow
; < - -                 \longleftarrow
; < - - >               \longleftrightarrow
; o                     \circ
; o o                   \infty

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

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

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

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

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

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

7.9 ギリシャ文字補完

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=yatex&node=Greek+letter+completion"
"yatex/ギリシャ文字補完"へのコメント(無し)

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

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


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]