-----------------------------------------------------------------------------
野鳥用付加関数を自動的に作ろう!
-----------------------------------------------------------------------------
【はじめに】
まず、yatexadd.doc には目を通して下さい。それを読んで、なにか独
自の関数をすぐに作りたくなったあなたには、このドキュメントも、
yatexgen.el も必要有りません。しかし、Emacs-Lisp をよく知らないた
め、どのように作ってよいのかピンと来ない方のために、野鳥自身に付加
関数を自動的に作らせる時の説明をするのが、このドキュメントです。
ただ、自動的に作るわけですから、気の利いた関数などは作れません。
\documentstyle{} を入れる時に、オプション([twocolumn,12pt]とか)を
自動的にキーボードから読み込むようにする程度のものだけなので、それ
以上を望む場合は、ちゃんと yatexadd.el を参考にして、すごいのを作
りましょう:-)。
【作り方その1】
Emacs-Lispなんか全然知らないよ〜んという人向け:
M-x YaTeX-generate ぺし
あとは、画面に出て来る指示通りに操作して下さい。これを無視してい
いかげんに操作すると、とんでもないことになります(なんだろう?)。失
敗した、と思ったら、^G して最初からやり直すのが無難です。
【作り方その2】
他の付加関数を見て何をやってるかの想像が付く人、あるいは
Emacs-Lisp は知ってるが単に作るのが面倒な人向け:
M-x YaTeX-generate-simple RET
こっちでは追加型付加関数と引数型付加関数(yatexadd.docもちゃんと
読んでね;-)の両方が作れます(その1は追加型しか作れない)。
では、例として次のような LaTeX コマンドがあったとしましょう。
(実際にはないよー)
\epsinput[t](250,50){hoge.eps}{plain}{ほげほげの絵}
(A) (B) (1) (2) (3)
(A)位置を指定するオプション引数(なくても良い)
t(top) b(bottom) l(left) r(right) のどれかが入る
(B)枠の最大の大きさ
(1)第1引数は取り込むEPSファイル名
(2)第2引数は取り込む時に
plain 何もしない
frame 枠を付ける
dframe 二重枠を付ける
のどれかのスタイルを選べたりする
(3)絵に付けるキャプションを指定
早速付加関数を作りましょう。M-x YaTeX-generate-simple とすると
Making add-in function for (default ???): epsinput RET
と聞いて来るので何用の付加関数を作るか答えます。さらに
(o)追加型? (a)引数型?
と、聞いて来るのでどちらを作るか答えます。ではそれぞれの場合につい
て例を追ってみましょう。
(o)追加型付加関数を作る
(A),(B)の部分はオプション引数なので、追加型付加関数で補完します。
(1)〜(3)は実際の引数なので引数型付加関数で補完します。では(A)を補
完するための関数を作りましょう。
M-x YaTeX-generate-simple RET
epsinput RET
o
すると次のメニューが出ます。
Read type(1): (S)tring (C)omplete (F)ile ([)option (P)osition co(O)rd. (q)uit
「Read type(1)」というのは「1番目のオプションの補完スタイルはなあ
に?」という意味です。補完スタイルには以下のものがあります。
String 普通の文字列を読み込む
Complete いくつかの候補の中から読み込む
File ファイル名を読み込む
Option オプション引数を読む(省略すると[]がつかない)
Position 場所指定オプションを読む([htbp] みたいなの)
Coord. 座標を読み込む
Quit おしまい
さて(A)はEPSファイルを配置する場所指定オプションなので補完タイプは
Position、さらにその候補は t, b, l, r のどれかなので、以下のように
操作します。
Read type(1).... p
Acceptable characters: tblr RET
次の(B)は座標なので補完タイプは coOrd. 最大サイズと言う意味のプロ
ンプトを出したいので次のようにします。
Read type(2).... o
Prompt for coordinates: Max size RET
もうオプション引数はないので、quitを選びます。
Read type(3).... q
これで隣のウィンドウに \epsinput 用の追加型付加関数が生成されます。
(a)引数型付加関数を作る
さて \epsinput の引数の種別は順に、EPSファイル名、枠付スタイル、
キャプション文字列でした。これらを読み込む(引数型)付加関数を作りま
しょう。
M-x YaTeX-generate-simple RET
epsinput RET
a
すると引数の数を聞いて来るのでそれに答えます。
How many arguments?: 3 RET
すると第1引数について補完タイプを聞いて来るので、「ファイル名(f)」
を選び、ファイル名を読む時に出したいプロンプト文字列を入れます。
Read type(1).... f
Prompt for argument#1 EPS file name RET
第2引数は複数候補から選択するので補完タイプは Completion。
Read type(2).... c
Prompt for argument#2 Include style RET
すると全候補の入力を促すので、順次入力し最後にRETを空打ちします。
Item[1](RET to exit): plain RET
Item[2](RET to exit): frame RET
Item[3](RET to exit): dframe RET
Item[4](RET to exit): RET
さらに補完候補以外の選択を認めるかを聞いて来るので、y か n で答え
ます。この場合 plain, frame, dframe 以外は選べないので
Require match? (y or n) y
のように y と答えます。
最後の引数は単に文字列を読めば良いので、補完タイプは String。
「default:」ではミニバッファで入力する時にデフォルトで入力されてい
る文字列を入れます。必要なければRETを空打ちします。
Read type(3).... s
Prompt for argument#3 Caption RET
default: の絵 RET
これで隣のウィンドウに \epsinput 用の引数型付加関数が生成されま
す。
【できあがり】
言われた通りに正しく指示を与えると、お望みのお手軽関数が出来上
がります。これを切り取って、~/yatexhks.el にでも放り込みましょう。
本当はこれも自動化しようと思ったのですが、これに失敗すると命がい
くつあっても足りないので、やめておきました。第一それも面倒な人は、
野鳥なんか使っていないよね?
【最後に】
快適な関数を定義したなら、そしてそれを公開してもよいと思われたな
ら、幸福感に浸るだけにして、決して筆者まで送ったりしないで下さい。
yatexgen が作るんだから、ろくな関数じゃないことは分かってます:-p。
広瀬雄二
yuuji@ae.keio.ac.jp
pcs39334@asciinet.or.jp