comparison docs/yatexadd.doc @ 12:a7f397790cdc

Revise YaTeX-typeset faster. Optimize window selection of error-jump.
author yuuji
date Mon, 25 Oct 1993 14:35:00 +0000
parents c746646cecf5
children b7b023a74293
comparison
equal deleted inserted replaced
11:390df0e505da 12:a7f397790cdc
32 さすがに、関数を書くだけでは使えません:-)。yatex-mode 起動時には、 32 さすがに、関数を書くだけでは使えません:-)。yatex-mode 起動時には、
33 その関数を定義したファイルがロードされていなくてはなりません。関数 33 その関数を定義したファイルがロードされていなくてはなりません。関数
34 を定義するファイル名を yatexadd.el(またはバイトコンパイルした形式 34 を定義するファイル名を yatexadd.el(またはバイトコンパイルした形式
35 のyatexadd.elc)にし、そのファイルを load-path 中に置いておけば、 35 のyatexadd.elc)にし、そのファイルを load-path 中に置いておけば、
36 野鳥が自動的にロードします。それ以外のファイル名にする場合は、 36 野鳥が自動的にロードします。それ以外のファイル名にする場合は、
37 yatex-mode-hook に、付加関数を定義する Emacs-Lisp ファイルをロード 37 yatex-mode-hook に付加関数を定義する Emacs-Lisp ファイルをロードす
38 するような仕掛けを書いておくのがよいでしょう。 38 るような仕掛けを書いておくのがよいでしょう。
39 39
40 40
41 【関数名】 41 【関数定義】
42 42
43 作成する付加関数名は、補完入力した名前の先頭に YaTeX: を付け足し 43 付加関数には、各LaTeXコマンドのオプション引数を返す形式のもの、
44 たものにします。例えば(begin型補完の) tabular 環境に対して付加関数 44 section型補完の引数を返すもの、の二種類があります。
45 を作成したい場合は YaTeX:tabular という関数名で定義します。 45
46 前者は、以下の例のように、begin型補完では\begin{環境名}の直後に
47 付加する文字列、section型補完では LaTeX コマンド名と第一引数の間に
48 位置する文字列、maketitle型補完では LaTeX コマンド名の直後に位置す
49 る文字列を返すような関数です。便宜上この形の付加関数を、追加型付加
50 関数と呼ぶことにします。
51
52 (例) \begin{table}[ht] (付加関数名 YaTeX:table)
53 ~~~~
54 \put(100,200){} (付加関数名 YaTeX:put)
55 ~~~~~~~~~
56 \sum_{i=0}^{n} (付加関数名 YaTeX:sum)
57 ~~~~~~~~~~
58
59 追加型付加関数は『LaTeXコマンド名の前に YaTeX: をつけた名前』で定
60 義します。
61
62 後者は、以下のようにsection型コマンドの引数となる文字列を返す
63 関数です。この形の付加関数を引数型付加関数と呼ぶことにします。
64
65 (例) \newcommand{\foo}{bar} (付加関数名 YaTeX::newcommand)
66 ~~~~ ~~~
67
68 引数型付加関数は『LaTeXコマンド名の前に YaTeX:: をつけた名前』で定
69 義します。また引数型付加関数が呼ばれる時には何番目の引数を入力して
70 いるのかが引数として渡されます。したがって、引数型付加関数は整数の
71 引数を一つ取るものとして定義し、その引数の値により処理を決定するこ
72 とになります。
73
74
75 【定義例】
76
77 例えば、tabular環境のフォーマットとして、いつでも {|c|c|c|} を入
78 れるだけで良いのなら、
79
80 (defun YaTeX:tabular ()
81 "{|c|c|c|}")
82
83 とだけ書けばよく、前述の、複雑な定型 tabular フォーマットを挿入す
84 るための関数を定義する場合は次のようにします。
85
86 (defun YaTeX:tabular ()
87 "{@{\\vrule width 1pt\\ }|||@{\\ \\vrule width 1pt}}")
88
89 この時、Emacs-Lisp 中の文字列では、\ 自身は \\ と表記することなど
90 に注意して下さい。
91
92 また、{} の中を、補完時に直接キーボードから読み込ませたい時は、
93
94 (defun YaTeX:tabular ()
95 (concat "{" (read-string "Rule: ") "}"))
96
97 などとすれば良いでしょう。
98
99 次に、引数型付加関数として \newcommand の引数を読み込む関数を定
100 義する場合を例示します。\newcommand の第一引数は新たに定義するコマ
101 ンド名なので、必ず先頭に \ が来ます。第二引数はたいていの場合ミニ
102 バッファでは編集しづらいような複雑な定義を書くので、何も補完しない
103 方が良いでしょう。これを考慮して付加関数を定義すると以下のようなも
104 のになるでしょう。
105
106 (defun YaTeX::newcommand (n) ;nは引数の位置
107 (cond
108 ((= n 1) ;第一引数ならコマンド名
109 (concat "\\" (read-string "Command: ")))
110 ((= n 2) "") ;第二引数なら何も入れない
111 (t nil)))
112
113 なお、引数型付加関数が nil を返した場合は、通常の引数入力関数が呼
114 ばれます。
46 115
47 116
48 【呼ばれ方】 117 【呼ばれ方】
49 118
50 野鳥本体は、begin型補完とsection型補完、およびmaketitle型補完の 119 野鳥本体は、begin型補完とsection型補完、およびmaketitle型補完の
51 入力時に付加関数の存在を調べてから呼び出します。begin型補完の場合 120 入力時に付加関数の存在を調べてから呼び出します。begin型補完の場合
52 \begin{環境名} が自動入力された直後に呼び出されます。section型補完 121 \begin{環境名} が自動入力された直後に呼び出されます。section型補完
53 では第一引数の補完の直前、maketitle型補完の場合は、コマンド名の直 122 では第一引数の補完の直前、maketitle型補完の場合は、コマンド名の直
54 後(一つのスペースを挿入する直前)に呼び出されます。 123 後(一つのスペースを挿入する直前)に呼び出されます。引数型付加関数は、
55 124 section型コマンドの引数の入力時にその都度呼ばれます。
56
57 【関数定義】
58
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|} を入れるだけで良いのなら、
71
72 (defun YaTeX:tabular ()
73 "{|c|c|c|}")
74
75 とだけ、書けばよく、前述の、複雑な定型 tabular フォーマットを挿入
76 するための関数を定義する場合は、次のようにします。
77
78 (defun YaTeX:tabular ()
79 "{@{\\vrule width 1pt\\ }|||@{\\ \\vrule width 1pt}}")
80
81 この時、Emacs-Lisp 中の文字列では、\ 自身は、\\ と表記することなどに
82 注意して下さい。
83
84 また、{} の中を、補完時に直接キーボードから読み込ませたい時は、
85
86 (defun YaTeX:tabular ()
87 (concat "{" (read-string "Rule: ") "}"))
88
89 などとすれば良いでしょう。
90 125
91 126
92 【参考】 127 【参考】
93 128
94 付加関数の定義の例を yatexadd.el に用意しました。実際に独自の付 129 付加関数の定義の例を yatexadd.el に用意しました。実際に独自の付

yatex.org