野鳥は、GNU Emacs で LaTeX 用の文書を作成する時に pLaTeX などの タイプセットコマンドや、プレヴューアの起動を Emacs 編集画面中から 行えるようにすると共に、拡張性の高い種々の補完機能によりソーステキ ストの編集を支援します。さらに LaTeX コマンドのオンラインヘルプに よりマニュアルを調べる手間を軽減します。
English manual See section `Top' in YaTeX English info.
本マニュアルでは以下の表記を用います。
\begin{環境} 〜 \end{環境}
という形式のLaTeXコマンドを指します。
begin型コマンドを補完入力することをbegin型補完と呼びます。
\section{タイトル}
や\mbox{内容}
のように
引数を取るLaTeXコマンドを指します。
\maketitle
や\tableofcontents
のように引数を取らないLaTeXコマ
ンドを指します。
{\large ...}
や {\tt ...}
のようなフォント/サイズ指定子
を指します。
\begin{}, \end{}, \section...
などの LaTeX
コマンドの補完入力
(C-c b, C-c s, C-c l, C-c m)
\begin
<->\end
間、
\ref
<->\label
間、
\cite
<->\bibitem
ジャンプ(C-c g)
~/.emacsに下の2項目を加えます。
(setq auto-mode-alist (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist)) (autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
次に野鳥の emacs-lisp ファイル群を置くディレクトリを load-path に加えます。 たとえば、 `~/src/emacs/yatex'に置くのであれば、
(setq load-path (cons (expand-file-name "~/src/emacs/yatex") load-path))
などとします。
以上の設定により、拡張子が .tex であるファイルを編集すると自動的に野鳥が ロードされます。野鳥が正常に起動できたときはモードラインの表示が「やてふ」 に変わります。
利用する外部プログラムに関する以下の変数を確認し、必要なら正しい値に変更 します。
tex-command
dvi2-command
NTT-jTeX
YaTeX-kanji-code
dviprint-command-format
YaTeX-dvipdf-command
これらを変更する場合は、やはり`~/.emacs'にて、たとえば
(setq tex-command "pdflatex")
のようにしてください。どのような値をセットすれば良いかについては、 section カスタマイズ変数一覧を参照してください。
LaTeXソースの編集中、次のキー入力により、platex などのタイプセットプログラ ム(以後タイプセッタと呼ぶ)、プレヴューアなどの起動ができます。
タイプセッタを起動すると、編集ウィンドウが2つに分割され、片方のウィンド ウにタイプセット画面が表示されます。出力されるメッセージと連動しタイプセッ トバッファは自動的にスクロールします。もし、途中でエラーが起こって止まって しまった場合にはタイプセットバッファに移り、(C-x o) タイプセッタの出 している ? プロンプトに対して、x (処理の中断)などの指示を送ることが できます。エラーを修正する場合は、
を入力することにより、タイプセッタがエラーを発生した行に移ることができます。 また、タイプセッタの出力する overfull hbox などのウォーニング行にも対応し ていますので、順次 [prefix] ' を押すことにより、一つ前のウォーニング 発生行にジャンプしていきます。
もし、気になるエラー行があった場合は、タイプセットバッファで、エ ラーの表示されている行にカーソルを合わせスペースキーを押すと LaTeX ソースの対応する行にジャンプします。
ポイントとマークの間、あるいはテキスト中に埋め込んだ %#BEGIN
と
%#END
の間の領域(section %#記法)だけを切り取ってタイプセットすることが
できます。この場合メインファイルのプリアンブルが一時ファイルの
プリアンブルとして使われます。したがってプリアンブルにないマクロ定義が
領域内にあるとエラーになります。領域タイプセットを使う場合、
必ずマクロ定義はプリアンブル(\begin{document}
より前)に置くよう
にして下さい。一時ファイルはメインファイルのある
ディレクトリの`texput.tex'という名前で出力されるので、
上書きには注意してください。
[prefix] te を押すと、ポイント位置の最も内側の環境、または数式モー ド内の場合はその数式モード全体、あるいは環境がなければその段落が自動的に 領域選択されて、領域タイプセットを呼び出します。 tabular環境や数式モードで複雑なものを作っている場合は確かめたい部分だけを 確認できるので便利です。Emacsが画像表示可能な場合は、 部分タイプセットの結果を画像化して隣のウィンドウに表示します。また、 特定の環境で呼び出した場合は、環境内の文字を書き換える度に自動的に プレビュー画像を更新します(on-the-flyプレヴュー)。 自動表示されない場合はプレヴューアで `texput.dvi' を開いたままにしておけば修正と確認が素早くできるでしょう。
画像プレヴューの場合の大きさ(解像度)はデフォルトで200dpi(数式は300dpi)です。
dpiを変えたい場合はLaTeXソースのどこかに
%#PREVIEWDPI 150
のようにdpi値を書いてください。
[prefix] t p によりプレヴューアの起動ができます。さらに、もしあな たが、-remote 機能つきのxdviを利用している場合は [prefix] t s を押す ことによりカーソル位置の文字列を検索してそのページを表示するようにすでに起 動中のxdviに命令を送ります。これにより、現在編集中の箇所のタイプセット結果 を即座に見ることができます。
[prefix] t lを押してプリントアウトを指示すると、出力開始/終了ペー ジを聞いてくるので、それぞれに答えます。これを省略したい時は、 universal-argument をつけ、
のように起動してください。
本文中に%#
ではじまるキーワードを埋め込むことでタイプセッタ起動等
の制御をすることができます。
起動するコマンドを変えたい時は本文中に次のような行を書きます。
%#!jlatex-ntt
NTT jTeX と、ASCII jTeX を使い分けたいような場合に便利でしょう。
また、章毎に別ファイルの .tex を作成している場合で、`main.tex'から
`sub.tex' を \include
しているような時は、`sub.tex'の任意の
位置に次のような行を埋め込みます。
%#!platex main.tex
上の例のようにコマンド名だけでなく引数も書いた場合には、全てをそのまま shell に渡すので次のように書けば、ghostview などをプレヴューアに使う時に便 利です。
%#!platex main && dvi2ps main.dvi > main
なお、この行の最後の単語のピリオド以前を「メインファイル」のベース
ネームであると仮定します(上の2つの場合どちらも`main')。
この行に記述した、%f
はメインファイル名に、
%r
はメインファイルの拡張子を取り除いた部分に置換されます。
ただし、%f,%r
を利用した場合、初回タイプセット時に必ずメインファイル
名の入力を促されます。
[prefix] g (section カーソルジャンプ参照) での ファイル間ジャンプを有効に機能させるため、入力ファイル分割時には次のことに 注意して下さい。
\include{chap1/sub}
のように記述。
[prefix] tr の領域指定のタイプセットでは、とくに指定のないかぎり、 C-SPCでマークした位置と、ポイント(カーソル位置)の間を領域とみなしま すが、必ず決まった領域をタイプセットしたい場合は、その領域を
%#BEGIN <渡したい領域> %#END
のように%#BEGIN
と%#END
で囲み、カーソルを「%#BEGIN
以降」
に置いてください。この時の領域決定規則をまとめると次のようになります。
%#BEGIN
というキーワードが
ある場合
%#BEGIN
よりバッファの末尾方向に%#END
というキーワードが見つかっ
た場合。
=>%#BEGIN
から、その %#END
のある位置まで。
%#END
が見つからなかった場合。
=>バッファの最後尾まで。
%#BEGIN
というキーワードが
見つからなかった場合。
=>マーク(C-SPC位置)とポイント(カーソル位置)の間の領域。
tabular 環境を何度も試行錯誤しているような場合は、\begin
の前の行
に %#BEGIN
と書き、\end
の次の行に %#END
と書いておく
と簡単に作表結果をテストすることができます。また、長い .tex ファイルの後半
に %#BEGIN
を書いておけば、前半の部分は無視できます。このBEGINとEND
の消し忘れには十分ご注意下さい。
まず、プリントアウト用コマンド列のフォーマットについて説明します。 コマンド列フォーマットは、3つの Lisp 変数によって表現されます。デ フォルトの dvi2ps 用のフォーマットを例に説明します。
(1)dviprint-command-format
"dvi2ps %f %t %s | lpr"
(2)dviprint-from-format
"-f %b"
(3)dviprint-to-format
"-t %e"
実際にプリントアウトする時は、(1)中の %s がファイル名に置き換えられ、%f が (2)の内容、%t が(3)の内容に置き換えられます。その際に(2)の文字列中の %b は 「出力開始ページ」、(3)の文字列中の %e は「出力終了ページ」に置き換えられ ます。もし、ページを指定しない時には、%f, %t 両方とも無視されます。
この、dviprint-command-format を臨時に変えたい時は、LaTeX の ソーステキスト中の任意の場所に、
%#LPR dvi2ps %f %t %s | 4up -page 4 | texfix | lpr -Plp2
のように書いて下さい。プリントアウトするページ範囲をいちいち聞かせないよう にする時に
%#LPR dvi2ps %s | lpr
などとするのも便利かもしれません。
LaTeX 文書に関連するコマンドは以下の %# 記法で指定することができます。
行頭がこれらのキーワードで始まる行をLaTeX文書の先頭付近に書いておけば、 それで指定したコマンドを起動できます。
以上のような%#
で始まる各種制御記法を編集するためには
%#
記法編集メニュー
を押します。
!)Edit-%#! B)EGIN-END-region L)Edit-%#LPR
というメニューが出て来るので、%#!
に続くコマンドを変更したい時には
!を、%#LPR
で lpr フォーマットを変えたい時はlを、あらか
じめ設定したリジョンを %#BEGIN
〜 %#END
で括りたい時は、
bを押します。bを選んだ時には、それまでバッファ中に置かれていた
%#BEGIN
, %#END
が自動的に消去されます。
LaTeX での環境名などは、野鳥の補完機能を利用して能率的に入力すること ができます。
\begin{env}...\end{env}
の様な形式の入力の補完をbegin型補完と
呼ぶことにします。begin 型補完は、
で始まります。頻繁に用いられる次の LaTeX 環境の補完は、[prefix] b
に続く次の1文字を入力するだけで、\begin{xxx}...\end{xxx}
を完成
させます。
\begin{center}...\end{center}
\begin{document}...\end{document}
\begin{description}...\end{description}
\begin{enumerate}...\end{enumerate}
\begin{equation}...\end{equation}
\begin{itemize}...\end{itemize}
\begin{flushleft}...\end{flushleft}
\begin{minipage}...\end{minipage}
\begin{tabbing}...\end{tabbing}
\begin{tabular}...\end{tabular}
\begin{table}...\end{table}
\begin{picture}...\end{picture}
\begin{quote}...\end{quote}
\begin{quotation}...\end{quotation}
\begin{flushright}...\end{flushright}
\begin{verbatim}...\end{verbatim}
\begin{verse}...\end{verse}
上記のもの以外の環境名は Emacs の持つインクリメンタルな補完機能を用いて 入力します(上記の環境名も以下の補完入力可能)。
[prefix] b SPC と入力すると、最下行のミニバッファに
Begin environment(default document):
と表示されます。ここで、何も入れずにリターンキーのみ押すと、括弧内に出てい
るデフォルトの環境名が入力されますが、適当な環境名を入力すると、
\begin{環境名} … \end{環境名}
が文書中に挿入されます。ミニバッ
ファで環境名を入力するときに、環境名の頭文字を入力し「スペース」をたたくと、
一致する環境名が内部テーブルに存在した場合、正しい環境名に補完されるので、
入力の手間が省けます。内部テーブルに存在しない環境名を入力した時はユーザ専
用のテーブルに登録され、さらにそのテーブルを自動的に、ユーザ辞書(デフォル
トでは `~/.yatexrc')に保存します。
さらに、特定の環境を補完入力した時にはその環境で必ず用いられるエントリを自
動挿入します(例: itemize
環境における\item
など)。挿入されたエ
ントリが不要な場合にはundoによって消去して下さい。
ところで、最初に書いてしまったブロックを後から、itemize 環境の中 に閉じこめたいと思うことがありますが、そのようなときは、あらかじめ 閉じこめたい段落をマークして、begin 型補完の各コマンドの [prefix] の次の『小文字の 'b'』 を『大文字』に変えて起動して下さい。(または、 C-u を先に打ち、universal argument をつけても可能です)
例えばあるパラグラフを description 環境の中に入れたいときは、 そのパラグラフをマークしてから、補完機能を呼び出してください(description 環境の場合は [prefix] b D)。
選択された領域を括ります。ただしこれは transient-mark-mode
が t
(Emacsの標準)になっている場合のみで、普段
transient-mark-mode
を nil
にしている場合は、
補完キー前に universal-argument
指定(C-u)
をタイプしてから [prefix] b D など、補完キーを
タイプすれば括り補完になります。
なおEmacs22以降であれば transient-mark-mode
無効時も
set-mark-command
(C-space)の連打で一時的に
transient-mark-mode
が有効になります。
\section{目的}
のような形式の入力の補完を section 型補完と呼ぶこ
とにします。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*{}
だけが挿入され、改行はせずカーソルは自動的に中括弧の内側に移動します。
ところで、`\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 を用いて個数を指定し直すことで、自動的に辞書中の引数の個数の部分を更新しま す。
また、section型補完機能の呼び出し時に領域選択状態にしておくと
領域内のテキストを section 型コマンドの第一引数として括ります。
これも普段 transient-mark-mode
を nil
にしている場合は
C-u のあとに補完キーをタイプすれば強制的に括り補完になります。
高度な使い方になるかもしれませんが、section型補完の引数の入力時にさらに 補完入力を利用することができます(section/large/maketitle型に限る)。section 型コマンドの引数に更に LaTeX コマンドが来る場合にはミニバッファで野鳥の 補完キーを再帰的に入力することで引数の入力も効率的に行なえます。
通常のsection型補完の時にミニバッファでC-vを押すと現在存在するセク
ション区切りコマンド全てを *Sectioning Lines*
というバッファに一覧表
示します(「<<--」のついている行がもっとも近いセクション区切り)。この時ミニ
バッファでC-p, C-n を押すと`part', `chapter', ...,
`subparagraph' のコマンドが論理階層の高さにしたがって上下します。また、
C-v, M-v を押すとセクション区切り一覧バッファがスクロールし、
数字の0〜7を押すとある高さ以上のセクション区切りだけを選んで表
示します(実際にやって見れば分かります)。
*Sectioning Lines*
バッファは、
で作成することができます。このバッファを選択し任意の行でスペースを押すと、
該当するセクション区切りのある本文中の場所にジャンプします。さらに、同バッ
ファで u を押すと、ソーステキストの対応するセクションコマンドが一階
層上がり(例: subsection が section に変わる)、dを押すと一階層下がり
ます。*Sectioning Lines*
バッファにあるセクション区切りの行をマーク
しておいてUを押すとリジョン内のものに対応するソーステキストのセクショ
ンコマンドすべてが一階層上がり、Dを押すと下がります。セクション区切
り一覧バッファで利用できるキーコマンドには以下のものがあります。
\ref{}
や \cite{}
マクロをsection型補完で入れた場合
参照先となり得るものを全て探してメニューにして選択できます。参照先には
\label{}
をつけておく必要はありません。もしあれば、そのラベルを
使い、なければその場で参照先に\label{}
を作らせてくれます。
ラベル名を考えるのは苦痛に感じるものです。全てのカウンタにラベルを
つけるのもたいへんです。もうラベル名に何をつけるか、ラベルをつけるかつけま
いか、などということは忘れましょう!
ラベルを打つべき項目の選択の際には、可能性のあるすべてのカウンタが表示され ます。これを「数式のみ」のように種別で絞りたいときは以下のキーコマンドが 利用できます。
{\large }
のような形式の補完を large 型補完と呼ぶことにします。
がlarge型補完の開始です。[prefix] l を押すと、ミニバッファに
{\??? } (default large):
と表示されるので、上記のものと同じ要領で補完入力して下さい。補完候補に用意 されているのは、`footnotesize' や `huge' のような文字サイズ指定 子と、`bf'や`dg'のようなフォント指定子です。
また、begin型補完の時と同様、先に書いてしまった一連の文章の文字のサイズ を変えたいと思う時がありますが、そのような時は、サイズや大きさを変えたい文 字の範囲をマークしてからlarge型補完を呼んでください。
\maketitle
の形式の補完を maketitle 型補完と呼ぶことにします。
で、maketitle 型補完を開始します。補完の要領は今までのものとまったく同じで す。LaTeX 用のコマンド名が補完候補として用意されています。
さて、今まで述べた典型的な LaTeX コマンド形式の補完入力を用いずに、今 入力しようとしている LaTeX コマンドを文書中の任意の位置で随時補完するこ ともできます。LaTeX コマンド(先頭が\で始まる)を入力している途中で、
を入力すれば、全ての補完候補の中から一致するものが選ばれカーソル位置に挿入 されます。
現在開いたままの環境名を自動的に検出し、\end{環境名}
を挿入しま
す。begin 型補完を用いれば環境の閉じ忘れはないのですが、時にはついつい手で
\begin{環境名}
を入れてしまい、悲しい思いをすることがあります。そ
のような時には気にせず続けて文章を入力し、しかるのちに
とすることで、現在開いている環境名で \end{} が補われます。
欧文のアクセント記号(\`{o}
など)を入力する時は、
を押すと、ミニバッファに
1:` 2:' 3:^ 4:" 5:~ 6:= 7:. u v H t c d b
というメニューが出て来るので、数字、または対応する記号/英字を入力 して下さい。すると編集バッファに、
\`{}
が現われ、カーソルが{}内に位置するので、さらに一文字入力する事で、
\`{o}
が完成され、カーソルは{}の外に戻ります。
主に数式モードで使用される、矢印やΣなどの記号を擬似的に表現するキー入力 で、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' を参
照してください。
もう一つ、数式環境中で:を押すとギリシャ文字入力モードに入ります。
:を押した直後にaを押すと\alpha
が、g を押すと
\gamma
が、などアルファベットに対応したギリシャ文字が挿入されます。
操作方法は;の数式記号補完とまったく同じです。まずは:の直後に
TABを押してどのアルファベットにどのギリシャ文字が対応しているか調べてみて
ください。
;と:を数式環境中で押しているにもかかわらず、イメージ補完が働 かない場合は、C-u ;のように universal-argument をつけてキーを押すこ とにより、強制的にイメージ補完に入ることができます。また、この時にどのよう な状態で数式環境内判定に失敗したかをご連絡下さい。
3種類ある括弧 () {} [] の開き括弧を入れたときに閉じ括弧を自動的に入れます。
\
の直後にの [
を入れると行を分けてインデントを揃え、
数式入力に備えます。その他 LaTeX のマクロに応じて括弧の釣合の取れた
状態に導きます。開き括弧そのものを1つだけ入れたいときは C-q で
クォート入力するか、[prefix] w m で修正モードをOFFにしてください。
領域選択してから開き括弧を入れるとその領域をその種類の括弧で括ります。
補完入力用の候補は三種類の辞書から構成されています。一つは `yatex.el'に組み込まれた「標準辞書」、もう一つはユーザが個人的に常用 するコマンドを保存する「ユーザ辞書」、そしてもうひとつはあるディレクトリで のみ有効なコマンドを保存する「ローカル辞書」です。
補完入力時に新しい単語を入れた場合に、その単語をどの辞書に入れるか聞いて 来ます。
`foo' is not in table. Register into: U)serDic L)ocalDic N)one D)iscard
というプロンプトに対し、uと答えると「ユーザ辞書」を、lと答える とローカル辞書を更新し、nと答えると辞書ファイルは更新せず現在のEmacs セッションのみ有効な単語とし、dと答えると新たな単語を学習せずに捨て ることになります。
もし、ローカル辞書の機能はいらず、全てユーザ辞書の更新のみでよいと言う場 合には`~/.emacs'などで、
(setq YaTeX-nervous nil)
として下さい。
LaTeXの編集には試行錯誤がつきものです。ある部分を一括でコメントアウト したり、コメントを外したりしたいことがあります。
は、あらかじめ設定したリジョンに対しての操作、
は、カーソルの位置するパラグラフ全体に対しての操作です。なお、ここでいう
「パラグラフ」は (mark-paragraph
) 関数によりマークされる範囲を指し
ます(標準設定でESC hにバインドされている)。なお、既に%
でコメ
ントアウトされているパラグラフに対して繰り返しパラグラフのコメントを使用し
た場合の動作は保証しませんので御注意ください。
さて、文章に対してだけでなく、時には\begin
, \end
自体に対
してもコメントアウトの操作をしたいときがあります。このようなときは、
\begin{}
あるいは \end{}
の行にカーソルを合わせ、
\begin{}
〜\end{}
全てコメントアウト
\begin{}
〜\end{}
全てコメントを外す
とすることで、\begin〜\end
で囲まれる環境全てに対してコメント操作し、
\begin{}
と \end{}
をコメントアウト
\begin{}
と \end{}
のコメントを外す
は、対応する \begin
と \end
2行だけを、コメント操作の対象と
します。リジョンをコメントアウトしようとして、マークを設定したのちにカーソ
ルを移動し[preifx] > を押してもカーソルが \begin{}
の上にあ
ると\begin{}
〜\end{}
モードでコメント機能が働いてしまうの
で注意して下さい。
文書中のいろいろな場所で
を押すことにより、カーソル位置のLaTeXコマンドに対応する場所にジャンプ します。対応関係が存在すると解釈されるコマンドには以下のものがあります。
\begin{}
←→ \end{}
%#BEGIN
←→ %#END
\label{}
←→ \ref{}
\include(\input)
→ 対応するファイル
\bibitem{}
←→ \cite{}
\begin{}
か \end{}
の行で[prefix] gを押すことに
より、対応するend/begin
の行にジャンプします。もちろん対応するものが
ない場合はエラーになります。またこれは、領域固定のための %#BEGIN
と
%#END
のペアに対しても同様に動作します。なお、label/ref
や
cite/bibitem
対応するものが別ファイルにある時は、ジャンプ先となるファ
イルがオープンされていなければなりません。See section %#記法.
メインの .tex ファイルの \include{chap1}
などにカーソルを合わせ、
[prefix] g を押すと、`chap1.tex' にジャンプします。
また、
を押すと、対応するオブジェクトへのジャンプを別ウィンドウで行います。ただし、
この機能は begin/end
, %#BEGIN/%#END
間のジャンプに対しては
(意味がないと思われるので)機能しないので注意してください。
上記の「画像ファイルの取り込みマクロ」とは、例えば
\epsfile{file=foo}
のような挿絵取り込みコマンドのことで、この行に
カーソルを合わせて[prefix] gを押すとその画像ファイルの元となったファ
イルを対応するお絵描きツールを起動してオープンします。起動するツールの判定
は以下のようになされます。
YaTeX-processed-file-regexp-alist
に定義さ
れている正規表現のいずれかとマッチしたら、ファイル名に相当する部分を
\\(\\)から抜き出して覚えておく(何番目の\\(\\)かは変数の各リストの cdr 部に
入れておく)。マッチしなければ何もしない。
YaTeX-file-processor-alist
に登録されているコマンドが
「%コマンド」 のように書いてあれば強制的に「コマンド ファイル名.拡張子」を
起動。
YaTeX-file-processor-alist
の各リストのcdr部に入って
いる拡張子を「ファイル名」の後ろに足したファイルが存在するか順次調べて、存
在した場合car部に入っているコマンドを起動する。
変数 YaTeX-file-processor-alist
と変数
YaTeX-file-processor-alist
の設定方法についてはそれぞれの変数につい
て describe-variable して説明を読んで下さい。うまく設定すると、画像ファイ
ルにかぎらず、任意の形式のファイルを任意のプロセッサで処理するコマンドを簡
単に呼び出すことができます。
`chap1.tex'のようなサブファイルで、
を押すと、メインファイルの編集バッファに切替えます。もし、メインファイルを オープンしていない場合は、カレントディレクトリから探して自動的にオープンし ます。
さらに現在の環境を単位として機能するコマンドに以下のものがあります。
\begin
)へジャンプ
\end
)へジャンプ
上記のコマンドは通常の[prefix]キーではなくMETAキーをプリフィク スとして機能するのでご注意下さい。
野鳥は補完入力した位置を常にレジスタ 3
に保存しています。
入力途中で如何なるファイルの如何なる位置に行ったとしても、
C-x j 3(jump-to-register
)を使って直ちに最後の補完入力位置に戻
ることができます。
既に入力されている LaTeX コマンドの変更/削除のために以下の機能が用意 されています。
これらのコマンドは、コマンドを起動する場所によって動作を決定するので注意し て下さい。
変更したい LaTeX コマンドにカーソルを合わせて [prefix] c を押すとそのコマンドを補完入力などを用いて手軽に変えることができます。 [prefix] c で変更できるコマンドには以下のものがあります。
begin/end
の環境名
変えたいsection型コマンドの引数がさらに LaTeX コマンドを含む場合は、 その引数を囲む中括弧の上で [prefix] c を押すことで中のコマンドを変更 対象判定から除外することができます。
[prefix] k は起動する位置により 次のような動作を行います。
起動位置 動作
\begin, \endの行 \begin\end
ペアの削除
%#BEGIN, %#END の行 %#BEGIN,%#ENDペアの削除
section型コマンドの上(中) section型コマンドの削除
フォント指定括弧の上 フォント指定の削除
括弧の上 対をなす括弧の削除
\begin, \end
および %#BEGIN, %#END
を削除する場合、
\begin, \end
や %#BEGIN, %#END
の存在する行は
まるごと削除されるので、それらの一行に \begin
などを二つ以上連ねて
書かないように注意してください。
上記のものはすべて本文を囲う「容器」を削除するように働きますが、
universal-argument (C-u) を打った後で[prefix] kをタイプすると、
それぞれの「容器」に含まれる「中身」も一気に削除します。以下の例を参考にし
て下さい。
元のテキスト: [prefix] k C-u [prefix] k 本文\footnote{脚注}です。 本文脚注です。 本文です。 ↑(カーソル位置)
itemize 環境中にある\item
の項目(文章)が複数行に渡る場合に、項
目の先頭を桁揃えしたい場合には、
によって、その item のインデントの深さに応じて fill されます。なお、古い
NTT jTeX を使用している場合には、Lisp 変数NTT-jTeX
をt
にセッ
トして下さい。
このとき、変数YaTeX-item-regexp
の値(標準では "\\\\item"
)を
項目指定コマンドの正規表現として検索に使用します。itemize 環境で、独自のコ
マンドを定義して項目を列挙している場合(例えば\underlineitem
)は、
`~/.emacs' で次のように指定して下さい。
(setq YaTeX-item-regexp "\\(\\\\\\(sub\\)*item\\)\\|\\(\\\\underlineitem\\)")
この変数の指定の仕方がよく分からない場合は、独自の項目列挙コマンドの名前を
)。
"\item"
で始まるものにして下さい(例えば"\itembf"
野鳥の M-q では \item
を環境に応じて以下のように「ハングイン
デント」します。
itemize, enumerate環境: >\item[ほげほげ] 英語では、特に意味のない単語を `foo' であらわしま > すが、これの日本語版ともいえる単語が「ほげほげ」 > です。 description環境: > \item[へろへろ] 「ほげほげ」をでたらめが単語として使った時に、第 > 2のでたらめな単語として「へろへろ」が使われることが多 > いようです。
itemize環境以外でのパラグラフの桁揃え(fill)は、基本的に他のモードと同じ
ように機能しますが、verbatim環境や、tabular環境など桁揃えをすると悲惨な状
況になるような環境中では機能しません。また、\verb で括ってあるものは決して
行分割されません(変数 YaTeX-verb-regexp
で制御) )。さらに、一時的に
インデントの深さを変えてある箇所では、そのインデントの先頭でM-qを押
すことにより fill-prefix をいちいち変更しなくて桁揃えができます。
ファイルを分割して文章を入力している時には、メインファイル中に
\includeonly{現在編集中のファイル名}
のように書いておくことで、タイプセットの時間を節約できますが、ちょっと他の ファイルを手直ししたい時には
\includeonly{ちょっと手直ししたいファイル名}
と書き直さなければならず手間がかかります。野鳥では現在編集しているファイル
名がメインファイルの\includeonly
にない場合には自動的にこれを検出し、
次の指示を仰ぎます。
A)dd R)eplace %)comment?
現在編集中のファイルを \includeonly
のリストに加えたい時にはa
を、現在編集中のファイルだけを \includeonly
にしたい時はrを、
\includeonly
の行をコメントアウトして無効化したい時には、%を
それぞれ押して下さい。
項目数の多い tabular などをたくさん書いていると下の方の行で、いま書いて いる桁がどこに対応するのかわからなくなってしまうことがあります。例えば、以 下のような tabular において、
\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}
(???)の部分がどの項目なのかすぐに判断するのは難しいでしょう。こんな時は、
を押すとカーソル位置のカラムがどの項目に該当するかをミニバッファに表示しま
す。tabular/array環境の第1行目を項目名の並びとみなして対応するものを探しま
す。もし項目名として別のものを表示して欲しい場合は、行頭を%
にしてダ
ミーの項目並びを作っておくと良いでしょう。
tabular[*], array, itemize, enumerate, tabbing 環境をbegin型補完で入力し た時、または各環境内で
を押すと、その環境に応じた行エントリを次の行に挿入します(begin型補完時に自
動挿入されたエントリが不要な場合は undo によって消去できます)。例えば、
tabular環境では、その環境のカラム数に対応した個数の &
に加え、行末
の \\
を入れます。この時それ以前に \hline
があればそれも付け
加えます。環境とそれに応じて自動入力するものの対応は以下のようになります。
tabular
, tabular*
, array
カラム数-1 だけの &
と \\
。必要に応じて \hline
tabbing
一行目で定義している \=
と同じ個数の \>
。
itemize
, enumerate
, description
, list
\item
または item[]
tabular 環境の例のように、本機能は各環境の一行目の内容を参考にして動作す るので、なるべく二行目以降で呼び出すようにしてください。
もし、その他の環境、例えば foo
、に対しておまかせ改行
を動作
させたい時は、YaTeX-intelligent-newline-foo
という名前の関数を定義
します。定義した関数は、現在の行に改行を挿入した直後の行頭の位置で呼ばれま
す。関数 YaTeX-indent-line
を呼ぶと現在の環境のネストに応じた深さに
インデントされるので、これを呼んでから何かを挿入するようなコードを書くとよ
いでしょう。`yatexenv.el'内の関数
YaTeX-intelligent-newline-itemize
の定義などを参考にしてください。
begin型、section型、maketitle型、いずれかのLaTeX2eマクロを補完入力すると、
そのマクロの利用に外部パッケージを必要とする場合、そのパッケージを
本文中で \usepackage{}
しているかどうかを調査し、もししていなければ
プリアンブルに対応するパッケージを引数にした \usepackage
文を
(確認後に)挿入します。
ただしこの機能が働くためには、パッケージ名とその中で定義されているマクロ
群をalistの形式で変数 YaTeX-package-alist-private
に設定しておく必
要があります。
で野鳥自身の動作を決定する以下のモードを切り替えます。
修正モードは、開き括弧入力時の処理をコントロールし、修正モードONの時は開き 括弧の入力は開き括弧のみの入力になり、修正モードOFFの時は開き括弧の入力だ けで閉じ括弧まで入力します。デフォルト(起動時)の設定はOFFです。
野鳥数式モードは、変数 YaTeX-auto-math-mode
が nil
の時の
み有効で、このとき;や:を押した時(section 数式記号イメージ補完参照)に、
どのようなイメージ補完を機能させるか、通常のキーとして機能させるかを手動で
切り替えます。自動判定が遅いマシンではYaTeX-auto-math-mode
nil
にセットし、野鳥数式モードを手動で切り替えると良いでしょう。
使おうとする LaTeX コマンドの用法がよく分からない時は、オンラインヘル プをひきましょう。ヘルプに関するキーには以下のものがあります。
「オンラインヘルプ」は、一般的な LaTeX コマンド(デフォルトでカーソル
位置のコマンド)に対する説明を隣のバッファに表示します。この時参照されるヘ
ルプ用ファイルには「グローバルヘルプ」と「プライベートヘルプ」の二種類があ
り、前者は LaTeX の標準コマンドの主なものの説明を含むファイルで、変数
YaTeX-help-file
の値で指定されます。このファイルは通常公共の場所(デ
フォルトで$EMACSEXECPATH
)に置かれ、誰もがその内容を更新できるように
全員に書き込み権が与えられるべきものです。後者は、非標準もしくは個人的なマ
クロ定義に関する説明が書かれているファイルで、変数
YaTeX-help-file-private
の値で指定されます。こちらはユーザのホームディ
レクトリの下などに置かれます。
「オンラインapropos」は GNU Emacs の apropos と同様、ユーザが指定したキー ワードを説明文に含む項目すべてを隣のバッファに表示します。
もし、調べようとしたLaTeXコマンドに対する説明がヘルプファイル中に見つ からなかった場合は、説明文の入力を求めてくるので、可能であれば参考書などを 調べてそのコマンドの説明を入力してください。もし、なにか標準的なコマンドに 対する説明を書いたならばぜひ私までその説明をお送り下さい。次回の配布に含め たいと思います。
複数のファイルに分割しているドキュメントを書いている場合、
を押すと、そのドキュメントの親ファイルを聞いて来ます。ここで全てのファイル の親となるファイル(デフォルトが示されているので大抵はRETのみ)を入力すると インクルードしている全てのファイルを解析し、インクルード状況を視覚的に表示 します。このバッファでは以下のキー操作が有効です。
ただし、隣のウィンドウのファイルの内容を表示する機能に関しては、対応する ファイルをクローズしてしまうとうまく働きませんのでご注意ください。
`gmhist.el'と`gmhist-mh.el' をロードしている場合、プレヴューコ マンドの入力([prefix] tp])、印刷コマンドの入力([prefix] tl)の 時に独立したヒストリを利用できます。それぞれのプロンプトで、M-p を押 すと直前に利用したコマンド文字列をくり返し呼び出すことができます。
`min-out.el' (outline-minor-mode
) と野鳥を組み合わせて使うこ
とももちろん可能です。設定の方法に関しては`yatexm-o.el'をご覧ください。
野鳥の動作を制御する種々の変数を独自に設定することにより、補完入 力を起動するキーアサインを変えたり、環境名の補完候補をさらに充実さ せることなどができます。
例えば prefix キーを C-c 以外のキーにしたい場合は、
YaTeX-prefix
に prefix キーにしたいシンボルを定義してください。さら
に、「C-c 英字」というキーバインドは独自の関数が割り当ててあるので使
いたくない。このような時は、YaTeX-inhibit-prefix-letter
を t
に設定することにより、C-c 英字…のバインドが全て、対応するC-c
C-英字…に変わります(ただし、begin型 large型補完の大文字起動によるリジョ
ン指定は可能なままです。これも無効にしたい場合はt
ではなく 1 にセッ
トして下さい。)。
yatex-mode における次の変数がカスタマイズ可能です。`~/.emacs' で
setq
しておけば、そちらの定義が優先されます。括弧の中はデフォルト値
です。実際に変数の値を変更する場合は M-x describe-variable で
変数の詳細な説明を参照してください。
nil
)
""(nil)
)
"~/.yatexrc"
)
"platex"
)
"xdvi -geo +0+0 -s 4"
)
"dvi2ps %f %t %s | lpr"
)
%f
に相当する開始ページ指定書式、%b
が開始ページ番号に変
わる ("-f %b"
)
%t
に相当する終了ページ指定書式、%e
が終了ページ番号に変わる
("-t %e"
)
"makeindex"
(MS-DOSでは"makeind"
))
"dvipdfmx"
)
nil
の場合は即時プレヴューをしない。
'YaTeX-typeset-environment-by-lmp
そうでないときは内蔵関数を呼ぶ 'YaTeX-typeset-environment-by-builtin
)
\nonstopmode{}
を自動的に付加するか (nil
)
"line.* [0-9]*"
)
"l\\.[1-9][0-9]*"
)
"Emergency stop"
)
t
にする
(nil
)
"\\\\(sub\\)*item"
)
"verb\\*?\\|path"
)
t
(t
)
"\\(part\\|chapter\\*?\\|\\(sub\\)*\\(section\\|paragraph\\)\\*?\\)\\b"
)
'("tabular" "tabular*" "array" "picture" "eqnarray" "eqnarray*" "equation" "math" "displaymath" "verbatim" "verbatim*")
)
%
を全て削除するか (nil
)
t
)
t
)
nil
)。補完テーブルの書き方については`yatexmth.el'を参照。
nil
)
(assq 'yatex-mode hilit-patterns-alist)
した結果と、変数 YaTeX-hilit-pattern-adjustment-default
の値(と場合
によっては hilit19 のドキュメント)を参照せよ。
nil
)
\include
などで prefix gした時に、ジャンプ先が存在しないファイ
ルであってもオープンする (nil
)
nil
)
\part
の色
('(yellow/dodgerblue yellow/slateblue)
)。
リストの第一要素は hilit-background-mode
が 'light
の時の、
第二要素は 'dark
の時の \chapter
の色で、文字色/背景色 のよ
うに指定する。
\subparagraph
の色を \chapter
の濃度の何
%薄くしたものにするか ('(15 40)
) YaTeX-hilit-sectioning-face
の項参照。
t
に設定する (nil
)
t
に設定する (t
)
~/work/template.tex
)
t
)
(featurep 'font-lock)
)
(featurep 'hilit19)
)
t
)
font-lock利用時のみ有効。
((featurep 'hilit19)
"{}"
などがお勧め。
'((パッケージ名1 (補完タイプ マクロのリスト……) (補完タイプ マクロのリスト……)) (パッケージ名2 (補完タイプ マクロのリスト……) (補完タイプ マクロのリスト……))………)
という形式にする。補完タイプは env, section, maketitle
のどれか。
具体例は変数 YaTeX-package-alist-default
の値参照。
(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))))
たとえば、prefix キーとしてESCを使用し、新たな補完候補を格納するファ イルを、`~/src/emacs/yatexrc' にし、行頭の prefix をタブ文字一つに変 えたいときは、
(setq YaTeX-prefix "\e" YaTeX-user-completion-table "~/src/emacs/yatexrc" YaTeX-fill-prefix " ")
を `~/.emacs' に加えます。
また、hook 変数 yatex-mode-hook
, yatex-mode-load-hook
を用
意しています。すべての yatex-mode のバッファで作用させたいものは、
yatex-mode-hook
に記述し、`yatex.el' をロードする時だけ作用さ
せたいものはyatex-mode-load-hook
に記述します。例えば、
outline-minor-mode
を利用する場合、それぞれのバッファで
outline-minor-mode
を有効にしたいので、yatex-mode-hook
を次
のように設定します。
(setq yatex-mode-hook '(lambda () (outline-minor-mode t)))
逆に、独自のキー定義を行いたい時などは、yatex-mode-load-hook
を利用
します。例えば、begin 型補完において、 document や、enumerate 以外の環境名
もショートカットキーで入れたいなどという時は、次のようにします。以下の例は、
[prefix] ba で \begin{abstract}
, \end{abstract}
を
挿入します。
(setq yatex-mode-load-hook '(lambda() (YaTeX-define-begend-key "ba" "abstract")))
なお、新たなキーの定義には、関数 YaTeX-define-key
YaTeX-define-begend-key
を利用するようにしてください。
変数 yatex-mode-load-hook
で定義する内容が多い時は、
`yatexhks.el'というファイルを作り、その中に野鳥関連の設定を書く事で、
初期化の時に自動的にロードします。
各種補完時に、環境名やコマンド名に応じたきめ細やかな補完入力機能を実現す
るための関数を作成することができます。この関数の作成方法や、組み込み方法に
関しては、yatexadd.doc
をご覧ください。
野鳥の標準の LaTeX コマンドの辞書には、作者が頻繁に使うものしか登録さ れていません。これは、補完候補に使いそうもないコマンドが存在して、補完した いコマンドを出すまでのストローク数を増やしてしまう事を防止するためです。標 準辞書にないコマンドも、できるだけ補完入力方式を利用し、ユーザ辞書を充実さ せることで、あなたの LaTeX スタイルにあった野鳥へと育っていくことでしょ う。
本プログラムはフリーソフトウェアです。本プログラムを使用して生じたいかな る結果に対しても作者は責任を負わないこととします。転載等に関しては制限いた しません。常識的に扱ってください。また、本プログラムに含まれるコードを利用 すること、改造することも自由に行なって構いませんが、流用することにより契約 締結の必要が生じる場合、私はいかなる契約も締結しません。具体的にはGPLへの サインはしませんので、GNUに寄贈するものを作っている場合私の作品から取り込 んだコードを流用すると苦労するかもしれません。いかなるコード流用も拒否しま せんが契約締結は辞退します。
苦情、希望、バグ報告、感想等は歓迎いたします。 連絡は yuuji@yatex.org まで(2017年9月現在)。 継続的に使用してくださる方はメイリングリスト「fj野鳥の会」に 是非加入してください。加入方法については本パッケージの `docs/qanda' ファイルの「その他」の章を御覧ください。
仕様は、予告なく確実に(気分次第で)変更されます:-p。
広瀬雄二
Jump to: % - & - . - : - ; - a - b - c - d - e - g - h - i - j - l - m - n - p - s - t - y - あ - い - え - お - か - き - く - け - こ - さ - し - す - せ - そ - た - と - な - に - は - ひ - ふ - へ - ほ - む - も - や - ゆ - ら - り - ろ
This document was generated on 10 September 2017 using the texi2html translator version 1.52.