changeset 8:c746646cecf5

Restrict YaTeX:framebox in picture environment.
author yuuji
date Tue, 04 May 1993 13:00:17 +0000
parents 9a56acb6c287
children 7becca042f80
files docs/yatexadd.doc yatexadd.el
diffstat 2 files changed, 175 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/docs/yatexadd.doc	Tue May 04 12:57:27 1993 +0000
+++ b/docs/yatexadd.doc	Tue May 04 13:00:17 1993 +0000
@@ -1,25 +1,20 @@
 ------------------------------------------------------------------------
 			野鳥用付加関数の作成方法
 ------------------------------------------------------------------------
-筆者註: ・付加関数の呼び出し方の仕様は、まだ模索段階です。
-	・yatexadd.el のサンプル関数仕様も、大きく変更する可能性があります。
-	・もし、本バージョンの yatexadd を手にされた場合は、今後の付加関数
-	  の仕様について、御意見をお聞かせください。
-	・とりあえず、begin型補完のみの対応です。
 
 
 【付加関数とは】
 
-	  begin 型補完で、tabular 環境を入力している時に、「"c|c|c" とか、 
-	また、table 環境の入力時に"[tbp]" とかも一緒に入力すればいいのに」
-	などと思うことはありませんか。もちろんこれを自動入力する関数は簡単
-	にサポートできるでしょう。
+	  begin 型補完で、「tabular 環境を入力している時に、"{|c|c|c|}" と
+	か、また、table 環境の入力時に"[tbp]" とかも一緒に入力すればいいの
+	に」などと思うことはありませんか。もちろんこれを自動入力する関数は
+	簡単にサポートできるでしょう。
 
 	  しかし、tabular 環境に限らず、LaTeX の環境の引数には、各人お決ま
 	りのフォーマットがあるものです。たとえば凝った表を書く時の tabular
 	環境の引数は、かなり複雑なので、上のような自動入力関数よりも、
 
-		"{@{\vrule width 1pt\ }|||@{\vrule width 1pt}}"
+		"{@{\vrule width 1pt\ }|||@{\ \vrule width 1pt}}"
 
 	を挿入するだけの単純な関数のほうが、嬉しい人もいるでしょう。あるい
 	は、「そんなの要らない。他の tabular をコピーして来たほうが早い。」
@@ -35,7 +30,10 @@
 【準備】
 
 	  さすがに、関数を書くだけでは使えません:-)。yatex-mode 起動時には、
-	その関数を定義したファイルがロードされていなくてはなりません。 
+	その関数を定義したファイルがロードされていなくてはなりません。関数
+	を定義するファイル名を yatexadd.el(またはバイトコンパイルした形式
+	のyatexadd.elc)にし、そのファイルを load-path 中に置いておけば、 
+	野鳥が自動的にロードします。それ以外のファイル名にする場合は、
 	yatex-mode-hook に、付加関数を定義する Emacs-Lisp ファイルをロード
 	するような仕掛けを書いておくのがよいでしょう。
 
@@ -49,8 +47,46 @@
 
 【呼ばれ方】
 
-	  begin型補完の場合 \begin{環境名} が自動入力された直後に呼び出さ
-	れます。
+	  野鳥本体は、begin型補完とsection型補完、およびmaketitle型補完の
+	入力時に付加関数の存在を調べてから呼び出します。begin型補完の場合 
+	\begin{環境名} が自動入力された直後に呼び出されます。section型補完
+	では第一引数の補完の直前、maketitle型補完の場合は、コマンド名の直
+	後(一つのスペースを挿入する直前)に呼び出されます。
+
+
+【関数定義】
+
+	  begin型補完では、\begin{環境名}の直後に付加する文字列、section型
+	補完では、LaTeXコマンド名と第一引数の間に位置する文字列、maketitle
+	型補完では、LaTeXコマンド名の直後に位置する文字列を返すような関数
+	を定義して下さい。
+	(例)
+		\begin{table}[ht]
+		             ~~~~
+		\put(100,200){}
+		    ~~~~~~~~~
+		\sum_{i=0}^{n} 
+		    ~~~~~~~~~~
+	たんに、いつでも {|c|c|c|} を入れるだけで良いのなら、
+
+		(defun YaTeX:tabular ()
+		  "{|c|c|c|}")
+
+	とだけ、書けばよく、前述の、複雑な定型 tabular フォーマットを挿入
+	するための関数を定義する場合は、次のようにします。
+
+		(defun YaTeX:tabular ()
+		  "{@{\\vrule width 1pt\\ }|||@{\\ \\vrule width 1pt}}")
+
+	この時、Emacs-Lisp 中の文字列では、\ 自身は、\\ と表記することなどに
+	注意して下さい。
+
+	  また、{} の中を、補完時に直接キーボードから読み込ませたい時は、
+
+		(defun YaTeX:tabular ()
+		  (concat "{" (read-string "Rule: ") "}"))
+
+	などとすれば良いでしょう。
 
 
 【参考】
@@ -58,6 +94,30 @@
 	  付加関数の定義の例を yatexadd.el に用意しました。実際に独自の付
 	加関数を定義する時の参考として下さい。
 
+	  有用と思われる関数について、簡単に説明します。
+
+	・関数	YaTeX:read-position
+	  引数	[] の中に入れてもよい文字を羅列した文字列。
+	  説明	[htb] などのような location 指定を作成します。何も入力せず
+		リターンを押すと、[]自体も省略されます。[]の中に来るべき文
+		字が htbp に限られているなら、(YaTeX:read-position "htbp")
+		と呼び出します。
+
+	・関数	YaTeX:read-coordinates
+	  引数	基本プロンプト, X座標プロンプト, Y座標プロンプト(全て省略可)
+	  説明	「基本プロンプト X座標プロンプト:」というプロンプトを出し
+		て、X座標を読み込み、「基本プロンプト Y座標プロンプト:」を
+		出して、Y座標を読み込み、(X座標,Y座標) の様な形式を作成します。
+		何も入力せずリターンを押しても、(,)が返されます。
+		各プロンプトのデフォルトはそれぞれ、Dimension, X, Y です。
+
+	・関数	YaTeX:check-comletion-type
+	  引数	'begin または、'section または、'maketitle
+	  説明	付加関数が呼ばれる時に、行われている補完の形式が、引数で与
+		えたものであるかどうか調べ、そうでない場合にエラー終了する。
+		なお、変数 YaTeX-current-completion-type に現在の補完の型
+		を表わすシンボル(この関数の引数と同様)が格納されています。
+
 
 【最後に】
 
@@ -65,10 +125,7 @@
 	ら、筆者までお送り下さい。次の yatexadd.el に取り込んで行きたいと
 	思います。
 
-【註】
-
-	  yatexadd は βversionです。
 
 								   広瀬雄二
-							yuujI@ae.keio.ac.jp
+							yuuji@ae.keio.ac.jp
 							pcs39334(ASCII-NET)
--- a/yatexadd.el	Tue May 04 12:57:27 1993 +0000
+++ b/yatexadd.el	Tue May 04 13:00:17 1993 +0000
@@ -1,8 +1,9 @@
 ;;; -*- Emacs-Lisp -*-
-;;; YaTeX add in functions.
-;;; yatexadd.el rev.2
+;;; YaTeX add-in functions.
+;;; yatexadd.el rev.3
 ;;; (c)1991-1993 by HIROSE Yuuji.[yuuji@ae.keio.ac.jp]
-;;; Last modified Fri Feb  5 09:36:06 1993 on gloria
+;;; Last modified Tue May  4 21:50:37 1993 on figaro
+;;; $Id$
 
 (provide 'yatexadd)
 
@@ -14,46 +15,131 @@
   "*Your favorite default rule format."
 )
 (defun YaTeX:tabular ()
-  "YaTeX add in function for tabular environment."
-  (let (bars (rule "") (j 0) loc)
+  "YaTeX add-in function for tabular environment."
+  (let (bars (rule "") (j 0) (loc (YaTeX:read-position "tb")))
     (setq bars (string-to-int (read-string "Number of `|': ")))
     (if (> bars 0)
 	(while (< j bars) (setq rule (concat rule "|")) (setq j (1+ j)))
       (setq rule YaTeX:tabular-default-rule))
     (setq rule (read-string "rule format: " rule))
 
-    (insert (format "{%s}" rule))
-    (message ""))
+    (message "")
+    (format "%s{%s}" loc rule))
 )
 
-(defun YaTeX:table ()
-  (let ((pos ""))
-    (message "Position []:")
+(defun YaTeX:read-position (oneof)
+  (let ((pos "") loc)
     (while (not (string-match
-		 (setq loc (read-key-sequence (format "Position [%s]: " pos)))
+		 (setq loc (read-key-sequence
+			    (format "Position (`%s') [%s]: " oneof pos)))
 		 "\r\^g\n"))
       (cond
-       ((string-match loc "htbp")
+       ((string-match loc oneof)
 	(if (not (string-match loc pos))
 	    (setq pos (concat pos loc))))
        ((and (string-match loc "\C-h\C-?") (> (length pos) 0))
 	(setq pos (substring pos 0 (1- (length pos)))))
        (t
 	(ding)
-	(message "Please input one of `htbp'.")
+	(message "Please input one of `%s'." oneof)
 	(sit-for 3))))
-    (if (string= pos "") nil
-      (insert "[" pos "]")))
+    (message "")
+    (if (string= pos "") ""
+      (concat "[" pos "]")))
+)
+
+(defun YaTeX:table ()
+  "YaTeX add-in function for table environment."
+  (YaTeX:read-position "htbp")
 )
 
 (defun YaTeX:description ()
   "Truly poor service:-)"
   (setq single-command "item[]")
+  ""
 )
 
 (defun YaTeX:itemize ()
   "It's also poor service."
   (setq single-command "item")
+  ""
 )
 
 (fset 'YaTeX:enumerate 'YaTeX:itemize)
+
+;;;
+;;Sample functions for section-type command.
+;;;
+(defun YaTeX:multiput ()
+  (concat (YaTeX:read-coordinates "Pos")
+	  (YaTeX:read-coordinates "Step")
+	  "{" (read-string "How many times: ") "}")
+)
+
+(defun YaTeX:put ()
+  (YaTeX:read-coordinates "Pos")
+)
+
+(defun YaTeX:makebox ()
+  (concat (YaTeX:read-coordinates "Dimension")
+	  (YaTeX:read-position "lrtb"))
+)
+
+(defun YaTeX:framebox ()
+  (if (YaTeX-quick-in-environment-p "picture")
+      (YaTeX:makebox))
+)
+
+(defun YaTeX:dashbox ()
+  (concat "{" (read-string "Dash dimension: ") "}"
+	  (YaTeX:read-coordinates "Dimension"))
+)
+
+(defun YaTeX:read-coordinates (&optional mes varX varY)
+  (concat
+   "("
+   (read-string (format "%s %s: " (or mes "Dimension") (or varX "X")))
+   ","
+   (read-string (format "%s %s: " (or mes "Dimension") (or varY "Y")))
+   ")")
+)
+
+;;;
+;;Sample functions for maketitle-type command.
+;;;
+(defun YaTeX:sum ()
+  "Read range of summation."
+  (YaTeX:check-completion-type 'maketitle)
+  (concat (YaTeX:read-boundary "_") (YaTeX:read-boundary "^"))
+)
+
+(fset 'YaTeX:int 'YaTeX:sum)
+
+(defun YaTeX:lim ()
+  "Insert limit notation of \\lim."
+  (YaTeX:check-completion-type 'maketitle)
+  (let ((var (read-string "Variable: ")) limit)
+    (if (string= "" var) ""
+      (setq limit (read-string "Limit ($ means infinity): "))
+      (if (string= "$" limit) (setq limit "\\infty"))
+      (concat "_{" var " \\rightarrow " limit "}")))
+)
+
+(defun YaTeX:gcd ()
+  "Add-in function for \\gcd(m,n)."
+  (YaTeX:check-completion-type 'maketitle)
+  (YaTeX:read-coordinates "\\gcd" "(?,)" "(,?)")
+)
+
+(defun YaTeX:read-boundary (ULchar)
+  "Read boundary usage by _ or ^.  _ or ^ is indicated by argument ULchar."
+  (let ((bndry (read-string (concat ULchar "{...}: "))))
+    (if (string= bndry "") ""
+      (concat ULchar "{" bndry "}")))
+)
+
+(defun YaTeX:check-completion-type (type)
+  "Check valid completion type."
+  (if (not (eq type YaTeX-current-completion-type))
+      (error "This should be completed with %s-type completion." type))
+)

yatex.org