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