yatex

view docs/yatexadd.doc @ 8:c746646cecf5

Restrict YaTeX:framebox in picture environment.
author yuuji
date Tue, 04 May 1993 13:00:17 +0000
parents 49be9ccb0b65
children a7f397790cdc
line source
1 ------------------------------------------------------------------------
2 野鳥用付加関数の作成方法
3 ------------------------------------------------------------------------
6 【付加関数とは】
8 begin 型補完で、「tabular 環境を入力している時に、"{|c|c|c|}" と
9 か、また、table 環境の入力時に"[tbp]" とかも一緒に入力すればいいの
10 に」などと思うことはありませんか。もちろんこれを自動入力する関数は
11 簡単にサポートできるでしょう。
13 しかし、tabular 環境に限らず、LaTeX の環境の引数には、各人お決ま
14 りのフォーマットがあるものです。たとえば凝った表を書く時の tabular
15 環境の引数は、かなり複雑なので、上のような自動入力関数よりも、
17 "{@{\vrule width 1pt\ }|||@{\ \vrule width 1pt}}"
19 を挿入するだけの単純な関数のほうが、嬉しい人もいるでしょう。あるい
20 は、「そんなの要らない。他の tabular をコピーして来たほうが早い。」
21 と思う人もいるでしょう。
23 YaTeX の付加関数は、あらかじめ○○環境用のお仕着せの特別関数を用
24 意しておくのではなく、○○環境用の特別関数が欲しくなったら独自の関
25 数を定義する、というコンセプトに基づくもので、付加関数の登録のため
26 の手続きをすることなく、関数を定義したその瞬間から使えるようになり
27 ます。「必要なのは、defun だけ」です。
30 【準備】
32 さすがに、関数を書くだけでは使えません:-)。yatex-mode 起動時には、
33 その関数を定義したファイルがロードされていなくてはなりません。関数
34 を定義するファイル名を yatexadd.el(またはバイトコンパイルした形式
35 のyatexadd.elc)にし、そのファイルを load-path 中に置いておけば、
36 野鳥が自動的にロードします。それ以外のファイル名にする場合は、
37 yatex-mode-hook に、付加関数を定義する Emacs-Lisp ファイルをロード
38 するような仕掛けを書いておくのがよいでしょう。
41 【関数名】
43 作成する付加関数名は、補完入力した名前の先頭に YaTeX: を付け足し
44 たものにします。例えば(begin型補完の) tabular 環境に対して付加関数
45 を作成したい場合は YaTeX:tabular という関数名で定義します。
48 【呼ばれ方】
50 野鳥本体は、begin型補完とsection型補完、およびmaketitle型補完の
51 入力時に付加関数の存在を調べてから呼び出します。begin型補完の場合
52 \begin{環境名} が自動入力された直後に呼び出されます。section型補完
53 では第一引数の補完の直前、maketitle型補完の場合は、コマンド名の直
54 後(一つのスペースを挿入する直前)に呼び出されます。
57 【関数定義】
59 begin型補完では、\begin{環境名}の直後に付加する文字列、section型
60 補完では、LaTeXコマンド名と第一引数の間に位置する文字列、maketitle
61 型補完では、LaTeXコマンド名の直後に位置する文字列を返すような関数
62 を定義して下さい。
63 (例)
64 \begin{table}[ht]
65 ~~~~
66 \put(100,200){}
67 ~~~~~~~~~
68 \sum_{i=0}^{n}
69 ~~~~~~~~~~
70 たんに、いつでも {|c|c|c|} を入れるだけで良いのなら、
72 (defun YaTeX:tabular ()
73 "{|c|c|c|}")
75 とだけ、書けばよく、前述の、複雑な定型 tabular フォーマットを挿入
76 するための関数を定義する場合は、次のようにします。
78 (defun YaTeX:tabular ()
79 "{@{\\vrule width 1pt\\ }|||@{\\ \\vrule width 1pt}}")
81 この時、Emacs-Lisp 中の文字列では、\ 自身は、\\ と表記することなどに
82 注意して下さい。
84 また、{} の中を、補完時に直接キーボードから読み込ませたい時は、
86 (defun YaTeX:tabular ()
87 (concat "{" (read-string "Rule: ") "}"))
89 などとすれば良いでしょう。
92 【参考】
94 付加関数の定義の例を yatexadd.el に用意しました。実際に独自の付
95 加関数を定義する時の参考として下さい。
97 有用と思われる関数について、簡単に説明します。
99 ・関数 YaTeX:read-position
100 引数 [] の中に入れてもよい文字を羅列した文字列。
101 説明 [htb] などのような location 指定を作成します。何も入力せず
102 リターンを押すと、[]自体も省略されます。[]の中に来るべき文
103 字が htbp に限られているなら、(YaTeX:read-position "htbp")
104 と呼び出します。
106 ・関数 YaTeX:read-coordinates
107 引数 基本プロンプト, X座標プロンプト, Y座標プロンプト(全て省略可)
108 説明 「基本プロンプト X座標プロンプト:」というプロンプトを出し
109 て、X座標を読み込み、「基本プロンプト Y座標プロンプト:」を
110 出して、Y座標を読み込み、(X座標,Y座標) の様な形式を作成します。
111 何も入力せずリターンを押しても、(,)が返されます。
112 各プロンプトのデフォルトはそれぞれ、Dimension, X, Y です。
114 ・関数 YaTeX:check-comletion-type
115 引数 'begin または、'section または、'maketitle
116 説明 付加関数が呼ばれる時に、行われている補完の形式が、引数で与
117 えたものであるかどうか調べ、そうでない場合にエラー終了する。
118 なお、変数 YaTeX-current-completion-type に現在の補完の型
119 を表わすシンボル(この関数の引数と同様)が格納されています。
122 【最後に】
124 快適な関数を定義したなら、そしてそれを公開してもよいと思われたな
125 ら、筆者までお送り下さい。次の yatexadd.el に取り込んで行きたいと
126 思います。
129 広瀬雄二
130 yuuji@ae.keio.ac.jp
131 pcs39334(ASCII-NET)