Mercurial > hgrepos > hgweb.cgi > yatex
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 に用意しました。実際に独自の付 |