# HG changeset patch # User HIROSE Yuuji # Date 1515250457 -32400 # Node ID 668632d9392eb9c840a6ceafa58f59487b095129 # Parent 603acc1caec743983b803d2057417aa3e414bf1f Initial implementation of SpecialFilterRegion diff -r 603acc1caec7 -r 668632d9392e docs/yatexe --- a/docs/yatexe Fri Jan 05 00:23:36 2018 +0900 +++ b/docs/yatexe Sat Jan 06 23:54:17 2018 +0900 @@ -249,6 +249,7 @@ * Changing typesetter:: * Splitting input files:: * Static region for typesetting:: +* Special Filtering Region:: * Lpr format:: * Controlling which command to invoke:: * Editing %# notation:: @@ -337,6 +338,30 @@  +File: yatexe, Node: Special Filtering Region, Next: Lpr format, Prev: Static region for typesetting, Up: %#notation + +Special Filtering Region +======================== + A region like below will be passed to external filter command. + %#BEGIN FILTER{foo.pdf}{dot -T %t -o %o} + \if0 + ....blah blah blah... + ....blah blah blah... + ....blah blah blah... + \fi + %#END + +In this case, typing `[prefix] t e' send three `blah' lines +to "dot -T pdf -o foo.pdf" as standard-input. It is useful to +have source of text-origin graphic generated by such tools as +graphviz or blockdiag, in LaTeX source. This special form of region +can be inserted via feeding `.dot' into environment completion by +`[prefix] t b'. + + + + + File: yatexe, Node: Lpr format, Next: Controlling which command to invoke, Prev: Static region for typesetting, Up: %#notation Lpr format @@ -535,7 +560,7 @@  -File: yatexe, Node: Section-type completion, Prev: Begin-type completion, Up: Completion +File: yatexe, Node: Section-type completion, Next: Label Generation, Prev: Begin-type completion, Up: Completion Section-type completion ======================= @@ -2314,60 +2339,61 @@ Node: Calling previewer8016 Node: Printing out8377 Node: %#notation8669 -Node: Changing typesetter9040 -Node: Splitting input files9404 -Node: Static region for typesetting10833 -Node: Lpr format11962 -Node: Controlling which command to invoke13035 -Node: Editing %# notation13992 -Node: Completion14536 -Node: Begin-type completion15072 -Node: Section-type completion17926 -Node: view-sectioning20318 -Node: Label Generation21897 -Node: Large-type completion22797 -Node: Maketitle-type completion23443 -Node: Arbitrary completion23995 -Node: End completion24385 -Node: Accent completion24855 -Node: Image completion25472 -Node: Greek letters completion27727 -Node: Inserting parentheses28483 -Node: Local dictionaries28890 -Node: Commenting out29827 -Node: Cursor jump31286 -Node: Jump to corresponding object31577 -Node: Invoking image processor32977 -Node: Jump to main file34320 -Node: Jumping around the environment34686 -Node: Jumping to last completion position35104 -Node: Changing and Deleting35613 -Node: Changing LaTeX commands35994 -Node: Killing LaTeX commands37171 -Node: Filling38356 -Node: Updation of includeonly40211 -Node: What column41008 -Node: Intelligent newline42093 -Node: Usepackage checker43754 -Node: Online help44345 -Node: Browsing file hierarchy46020 -Node: Cooperation with other packages47757 -Node: Customizations48462 -Node: Lisp variables48758 -Node: All customizable variables49717 -Node: Sample definitions61682 -Node: Hook variables62195 -Node: Hook file62899 -Node: Add-in functions63238 -Node: How the add-in function works64076 -Node: Defining option-add-in66262 -Node: Defining argument-add-in66984 -Node: Defining enclosing-add-in67865 -Node: How the function is called68721 -Node: Useful functions for creating add-in69397 -Node: Contribution70807 -Node: Add-in generator71081 -Node: Etcetera76657 -Node: Copying77262 +Node: Changing typesetter9069 +Node: Splitting input files9433 +Node: Static region for typesetting10862 +Node: Special Filtering Region11991 +Node: Lpr format12723 +Node: Controlling which command to invoke13796 +Node: Editing %# notation14753 +Node: Completion15297 +Node: Begin-type completion15833 +Node: Section-type completion18687 +Node: view-sectioning21103 +Node: Label Generation22682 +Node: Large-type completion23582 +Node: Maketitle-type completion24228 +Node: Arbitrary completion24780 +Node: End completion25170 +Node: Accent completion25640 +Node: Image completion26257 +Node: Greek letters completion28512 +Node: Inserting parentheses29268 +Node: Local dictionaries29675 +Node: Commenting out30612 +Node: Cursor jump32071 +Node: Jump to corresponding object32362 +Node: Invoking image processor33762 +Node: Jump to main file35105 +Node: Jumping around the environment35471 +Node: Jumping to last completion position35889 +Node: Changing and Deleting36398 +Node: Changing LaTeX commands36779 +Node: Killing LaTeX commands37956 +Node: Filling39141 +Node: Updation of includeonly40996 +Node: What column41793 +Node: Intelligent newline42878 +Node: Usepackage checker44539 +Node: Online help45130 +Node: Browsing file hierarchy46805 +Node: Cooperation with other packages48542 +Node: Customizations49247 +Node: Lisp variables49543 +Node: All customizable variables50502 +Node: Sample definitions62467 +Node: Hook variables62980 +Node: Hook file63684 +Node: Add-in functions64023 +Node: How the add-in function works64861 +Node: Defining option-add-in67047 +Node: Defining argument-add-in67769 +Node: Defining enclosing-add-in68650 +Node: How the function is called69506 +Node: Useful functions for creating add-in70182 +Node: Contribution71592 +Node: Add-in generator71866 +Node: Etcetera77442 +Node: Copying78047  End tag table diff -r 603acc1caec7 -r 668632d9392e docs/yatexe.tex --- a/docs/yatexe.tex Fri Jan 05 00:23:36 2018 +0900 +++ b/docs/yatexe.tex Sat Jan 06 23:54:17 2018 +0900 @@ -8,7 +8,7 @@ @iftex @c @syncodeindex fn cp -@c Last modified Sat Sep 9 23:41:37 2017 on firestorm +@c Last modified Sat Jan 6 23:42:24 2018 on firestorm @syncodeindex vr cp @end iftex @@ -265,6 +265,7 @@ * Changing typesetter:: * Splitting input files:: * Static region for typesetting:: +* Special Filtering Region:: * Lpr format:: * Controlling which command to invoke:: * Editing %# notation:: @@ -377,6 +378,28 @@ @code{%#BEGIN} alone at the middle of very long text. Do not forget to erase @code{%#BEGIN} @code{%#END} pair. +@node Special Filtering Region, Lpr format, Static region for typesetting, %#notation +@section Special Filtering Region + A region like below will be passed to external filter command. +@example +%#BEGIN FILTER{foo.pdf}{dot -T %t -o %o} +\if0 +....blah blah blah... +....blah blah blah... +....blah blah blah... +\fi +%#END +@end example + +In this case, typing @kbd{[prefix] t e} send three `blah' lines +to "dot -T pdf -o foo.pdf" as standard-input. It is useful to +have source of text-origin graphic generated by such tools as +graphviz or blockdiag, in La@TeX{} source. This special form of region +can be inserted via feeding @code{.dot} into environment completion by +@kbd{[prefix] t b}. + + + @node Lpr format, Controlling which command to invoke, Static region for typesetting, %#notation @comment node-name, next, previous, up @section Lpr format @@ -587,7 +610,7 @@ begin-type completion to enclose text into a environment. -@node Section-type completion, , Begin-type completion, Completion +@node Section-type completion, Label Generation, Begin-type completion, Completion @comment node-name, next, previous, up @section Section-type completion @cindex section-type completion diff -r 603acc1caec7 -r 668632d9392e docs/yatexj --- a/docs/yatexj Fri Jan 05 00:23:36 2018 +0900 +++ b/docs/yatexj Sat Jan 06 23:54:17 2018 +0900 @@ -21,7 +21,7 @@ * Main features:: 主な機能 * Installation:: インストール * Invocation:: プロセス起動 -* %#notation :: %#記法 +* %#notation :: * Completion:: 補完入力 * Local dictionary:: ローカル辞書 * Commenting out:: コメントアウト @@ -326,9 +326,10 @@ * Changing typesetter:: タイプセット用コマンドの変更 * Splitting input files:: 入力ファイル分割 * Fix region for typesetting:: 領域の固定 +* Special Filtering Region:: * lpr format:: プリントアウトコマンド用フォーマット * Controlling which command to invoke:: その他の起動コマンド制御 -* Editing %# notation:: %#記法の編集 +* Editing %# notation::  @@ -424,6 +425,33 @@ し忘れには十分ご注意下さい。 + +File: yatexj, Node: Special Filtering Region, Next: lpr format, Prev: Fix region for typesetting, Up: %#notation + +自動外部フィルタ +================ + +たとえば、テキストファイルから画像を生成するようなツールに与えるソース +をLaTeXソース中に埋め込み、その部分だけをツールの標準入力に渡すことが +できます。そのためには以下のようなソースを文書中に書きます。 + + %#BEGIN FILTER{foo.pdf}{blockdiag -T %t -o %o} + \if0 + --- + ....blah blah blah... + ....blah blah blah... + ....blah blah blah... + --- + \fi + %#END + +この領域内で `[prefix] t e' をタイプすると、この例であればblahのある3 +行が外部コマンド `"blockdiag -T pdf -o foo.pdf"' の標準入力に渡され、 +結果として foo.pdf が生成されます。この特別なブロックは`[prefix] tb' +の環境補完で、`.blockdiag' のようなピリオドで始まる特殊環境名を入力す +ることで自動的に挿入されます。 + +  File: yatexj, Node: lpr format, Next: Controlling which command to invoke, Prev: Fix region for typesetting, Up: %#notation @@ -2255,66 +2283,67 @@  Tag table: Node: Top257 -Node: Intro1311 -Node: Terminology1614 -Node: Main features2254 -Node: Installation3376 -Node: Invocation4636 -Node: Calling typesetter5512 -Node: Calling previewer6973 -Node: Print out7289 -Node: %#notation7555 -Node: Changing typesetter7983 -Node: Splitting input files8241 -Node: Fix region for typesetting9197 -Node: lpr format10105 -Node: Controlling which command to invoke10915 -Node: Editing %# notation11629 -Node: Completion12087 -Node: begin型補完12498 -Node: section型補完15247 -Node: 2個以上の引数をとる section型コマンド16340 -Node: Enclose section-type command17156 -Node: Recursive completion17480 -Node: view-sectioning17785 -Node: label-generation18981 -Node: large型補完19655 -Node: maketitle型補完20189 -Node: Arbitrary completion20488 -Node: end補完20801 -Node: Accent mark completion21142 -Node: Image completion21567 -Node: Greek letter completion23382 -Node: Inserting parens23866 -Node: Local dictionary24214 -Node: Commenting out24818 -Node: Cursor jump25978 -Node: 対応オブジェクトへのジャンプ26195 -Node: お絵描きツール起動27181 -Node: メインファイルへのジャンプ28099 -Node: 環境を単位としたジャンプ28435 -Node: 最後の補完位置へのジャンプ28792 -Node: Modifying/Deleting29029 -Node: Changing LaTeX command29435 -Node: Killing LaTeX command29985 -Node: Filling30857 -Node: Includeonly32187 -Node: What column32748 -Node: Intelligent newline33528 -Node: Usepackage cheker34560 -Node: Changing mode of YaTeX34987 -Node: Online help35563 -Node: Inclusion hierarchy browser36540 -Node: Cooperation with other packages37818 -Node: Customizations38273 -Node: Lisp variables38570 -Node: All customizable variables39177 -Node: Sample definitions48157 -Node: Hook variables48591 -Node: Hook file49486 -Node: Add-in functions49692 -Node: Etc49919 -Node: Copying50204 -Node: Concept Index50828 +Node: Intro1290 +Node: Terminology1593 +Node: Main features2233 +Node: Installation3355 +Node: Invocation4615 +Node: Calling typesetter5491 +Node: Calling previewer6952 +Node: Print out7268 +Node: %#notation7534 +Node: Changing typesetter7975 +Node: Splitting input files8233 +Node: Fix region for typesetting9189 +Node: Special Filtering Region10096 +Node: lpr format10732 +Node: Controlling which command to invoke11542 +Node: Editing %# notation12256 +Node: Completion12714 +Node: begin型補完13125 +Node: section型補完15874 +Node: 2個以上の引数をとる section型コマンド16967 +Node: Enclose section-type command17783 +Node: Recursive completion18107 +Node: view-sectioning18412 +Node: label-generation19608 +Node: large型補完20282 +Node: maketitle型補完20816 +Node: Arbitrary completion21115 +Node: end補完21428 +Node: Accent mark completion21769 +Node: Image completion22194 +Node: Greek letter completion24009 +Node: Inserting parens24493 +Node: Local dictionary24841 +Node: Commenting out25445 +Node: Cursor jump26605 +Node: 対応オブジェクトへのジャンプ26822 +Node: お絵描きツール起動27808 +Node: メインファイルへのジャンプ28726 +Node: 環境を単位としたジャンプ29062 +Node: 最後の補完位置へのジャンプ29419 +Node: Modifying/Deleting29656 +Node: Changing LaTeX command30062 +Node: Killing LaTeX command30612 +Node: Filling31484 +Node: Includeonly32814 +Node: What column33375 +Node: Intelligent newline34155 +Node: Usepackage cheker35187 +Node: Changing mode of YaTeX35614 +Node: Online help36190 +Node: Inclusion hierarchy browser37167 +Node: Cooperation with other packages38445 +Node: Customizations38900 +Node: Lisp variables39197 +Node: All customizable variables39804 +Node: Sample definitions48784 +Node: Hook variables49218 +Node: Hook file50113 +Node: Add-in functions50319 +Node: Etc50546 +Node: Copying50831 +Node: Concept Index51455  End tag table diff -r 603acc1caec7 -r 668632d9392e docs/yatexj.tex --- a/docs/yatexj.tex Fri Jan 05 00:23:36 2018 +0900 +++ b/docs/yatexj.tex Sat Jan 06 23:54:17 2018 +0900 @@ -13,7 +13,7 @@ @c ノードいじったら C-l C-u C-n 全部のノード更新 C-l C-u C-e @c メニュー増やしたら C-l C-u C-m 全部のメニュー更新 C-l C-u C-a @c フォーマットするときは C-l C-e C-b -@c Last modified Sat Sep 9 23:43:04 2017 on firestorm +@c Last modified Sat Jan 6 23:49:50 2018 on firestorm @syncodeindex vr cp @end iftex @@ -35,7 +35,7 @@ * Main features:: 主な機能 * Installation:: インストール * Invocation:: プロセス起動 -* %#notation :: %#記法 +* %#notation :: * Completion:: 補完入力 * Local dictionary:: ローカル辞書 * Commenting out:: コメントアウト @@ -357,9 +357,10 @@ * Changing typesetter:: タイプセット用コマンドの変更 * Splitting input files:: 入力ファイル分割 * Fix region for typesetting:: 領域の固定 +* Special Filtering Region:: * lpr format:: プリントアウトコマンド用フォーマット * Controlling which command to invoke:: その他の起動コマンド制御 -* Editing %# notation:: %#記法の編集 +* Editing %# notation:: @end menu @node Changing typesetter, Splitting input files, %#notation , %#notation @@ -479,6 +480,31 @@ の消し忘れには十分ご注意下さい。 @cindex 長いファイルの編集[なかいふあいるのへんしゆう] +@node Special Filtering Region, lpr format, Fix region for typesetting, %#notation +@section 自動外部フィルタ + +たとえば、テキストファイルから画像を生成するようなツールに与えるソースを +La@TeX{}ソース中に埋め込み、その部分だけをツールの標準入力に渡すことができ +ます。そのためには以下のようなソースを文書中に書きます。 + +@example +%#BEGIN FILTER{foo.pdf}{blockdiag -T %t -o %o} +\if0 +--- +....blah blah blah... +....blah blah blah... +....blah blah blah... +--- +\fi +%#END +@end example + +この領域内で @kbd{[prefix] t e} をタイプすると、この例であればblahのある3行が +外部コマンド @code{"blockdiag -T pdf -o foo.pdf"} の標準入力に渡され、 +結果として foo.pdf が生成されます。この特別なブロックは +@kbd{[prefix] tb} の環境補完で、@code{.blockdiag} のようなピリオドで始まる +特殊環境名を入力することで自動的に挿入されます。 + @c @node Require, lpr format, Fix region for typesetting, %#notation @comment node-name, next, previous, up @@ -778,7 +804,7 @@ だけが挿入され、改行はせずカーソルは自動的に中括弧の内側に移動します。 @menu -* 2個以上の引数をとる section型コマンド:: +* 2個以上の引数をとる section型コマンド:: * Enclose section-type command:: 括り補完 * Recursive completion:: 再帰補完 * view-sectioning:: セクション区切りのアウトライン表示 @@ -1261,11 +1287,11 @@ @menu -* 対応オブジェクトへのジャンプ:: -* お絵描きツール起動:: -* メインファイルへのジャンプ:: -* 環境を単位としたジャンプ:: -* 最後の補完位置へのジャンプ:: +* 対応オブジェクトへのジャンプ:: +* お絵描きツール起動:: +* メインファイルへのジャンプ:: +* 環境を単位としたジャンプ:: +* 最後の補完位置へのジャンプ:: @end menu @node 対応オブジェクトへのジャンプ, お絵描きツール起動, Cursor jump, Cursor jump diff -r 603acc1caec7 -r 668632d9392e yatex.el --- a/yatex.el Fri Jan 05 00:23:36 2018 +0900 +++ b/yatex.el Sat Jan 06 23:54:17 2018 +0900 @@ -1,6 +1,6 @@ ;;; yatex.el --- Yet Another tex-mode for emacs //野鳥// -*- coding: sjis -*- ;;; (c)1991-2018 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Wed Jan 3 23:56:34 2018 on firestorm +;;; Last modified Sat Jan 6 22:52:02 2018 on firestorm ;;; $Id$ ;;; The latest version of this software is always available at; ;;; https://www.yatex.org/ @@ -376,6 +376,61 @@ (append YaTeX-ams-math-begin-alist YaTeX-ams-math-gathering-alist) "*Standard AMS-LaTeX(2e) environment completion table.") +(defvar YaTeX-use-dot-env-extension t + "*Use YaTeX's dot-env filter special environment.") +(defvar YaTeX-filter-special-env-alist-default + '((".blockdiag" + "blockdiag -T %t -o %o -" + "blockdiag { + default_fontsize = 32; + A -> B; +}") + (".seqdiag" "seqdiag -T %t -o %o -" + "seqdiag { + client -> server [label = \"SYN\"]; + client <- server [label = \"SYN/ACK\"]; + client -> server [label = \"ACK\"];}") + (".actdiag" "actdiag -T %t -o %o -" + "actdiag { + sayHo -> ho -> hohoho + lane dj { + label = \"DJ\" + sayHo [label = \"Say Ho\"]; hohoho [label = \"Ho Ho Ho!\"]; } + lane mc { label = \"MC\"; ho [label = \"Hooooh!\"]}}") + (".nwdiag" "nwdiag -T %t -o %o -" + "nwdiag { + network ext { + address = \"10.1.2.0/24\" + router [address = \"10.1.2.1\"] + } + network int { + address = \"192.168.22.0/24\" + router [address = \"192.168.22.1\"] + websrv [address = \"192.168.22.80\"] + cli-1; cli-2 + } +}") + (".rackdiag" "rackdiag -T %t -o %o -" + "rackdiag { + 16U; + 1: UPS [4U]; 5: Storage [3U]; 8: PC [2U]; 8: PC [2U]; +}") + (".dot" + "dot -T %t -o %o" + "digraph { + graph [charset=\"utf-8\"] +} +bigraph { + graph [charset=\"utf-8\"]}" + ))) + +(defvar YaTeX-filter-special-env-alist-private nil) +(defvar YaTeX-filter-special-env-alist + (append YaTeX-filter-special-env-alist-private + YaTeX-filter-special-env-alist-default)) + + + ; Set tex-environment possible completion (defvar env-table (append @@ -399,7 +454,11 @@ ("multicols") ;defined in multicol ("breakbox"))) ;defined in eclbkbox (if YaTeX-use-AMS-LaTeX YaTeX-ams-env-table) - YaTeX-math-other-env-alist) + YaTeX-math-other-env-alist + (if YaTeX-use-dot-env-extension + '((".blockdiag") (".nwdiag") (".seqdiag") (".rackdiag") (".packetdiag") + (".dot")) + )) "Default completion table for begin-type completion.") (defvar user-env-table nil) @@ -920,7 +979,10 @@ by completing read. If you invoke this command with universal argument, \(key binding for universal-argument is \\[universal-argument]\) -you can put REGION into that environment between \\begin and \\end." +you can put REGION into that environment between \\begin and \\end. +If the environment name begins with `.'(dot), +that environment will be treated as `special environment', which +enables special feature such as text conversion." (interactive "P") (let* ((region-p (or arg (YaTeX-region-active-p))) @@ -928,13 +990,17 @@ (env (save-excursion ;for Emacs24 work-around to avoid point warp (YaTeX-read-environment - (format "Begin environment%s(default %s): " mode YaTeX-env-name))))) + (format "Begin environment%s(default %s): " mode YaTeX-env-name)))) + special) (if (string= env "") (setq env YaTeX-env-name)) - (setq YaTeX-env-name env) + (setq special (assoc env YaTeX-filter-special-env-alist) + YaTeX-env-name env) (YaTeX-update-table (list YaTeX-env-name) 'env-table 'user-env-table 'tmp-env-table) - (YaTeX-insert-begin-end YaTeX-env-name region-p))) + (if special + (YaTeX-insert-filter-special YaTeX-env-name (cdr special) region-p) + (YaTeX-insert-begin-end YaTeX-env-name region-p)))) (defun YaTeX-make-begin-end-region () "Call YaTeX-make-begin-end with ARG to specify region mode." @@ -1261,6 +1327,17 @@ ((YaTeX-literal-p) ?\") ((= (preceding-char) ?\\ ) ?\") ;((= (preceding-char) ?\( ) ?\") + ((save-excursion (beginning-of-line) + (skip-chars-forward "\t ") + (looking-at "%#")) + ?\") + ((let ((ovl (overlays-at (point)))) + (and ovl + (catch 'found + (while ovl + (if (overlay-get (car ovl) 'filter-input) (throw 'found t)) + (setq ovl (cdr ovl)))))) + ?\") ((or (= (preceding-char) 32) (= (preceding-char) 9) (= (preceding-char) ?\n) diff -r 603acc1caec7 -r 668632d9392e yatex.new --- a/yatex.new Fri Jan 05 00:23:36 2018 +0900 +++ b/yatex.new Sat Jan 06 23:54:17 2018 +0900 @@ -3,6 +3,7 @@ 1.81 == yatex == タイプセットコマンド定義中の %k を漢字コード名に変換(-kanji=%k) + ドット環境で外部フィルタを自動起動する機能を追加。 1.80 string-to-int除外と同時に emacs-18 をサポート外に。 2-Clause BSDでもOKという風に書いてみた。 diff -r 603acc1caec7 -r 668632d9392e yatexprc.el --- a/yatexprc.el Fri Jan 05 00:23:36 2018 +0900 +++ b/yatexprc.el Sat Jan 06 23:54:17 2018 +0900 @@ -1,7 +1,7 @@ ;;; yatexprc.el --- YaTeX process handler -*- coding: sjis -*- ;;; ;;; (c)1993-2018 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Thu Jan 4 00:09:28 2018 on firestorm +;;; Last modified Fri Jan 5 22:48:43 2018 on firestorm ;;; $Id$ ;;; Code: @@ -353,7 +353,7 @@ reg-begin reg-end lineinfo) (setq ppcmd (if (stringp pp) (concat pp " " texputroot) pp)) (save-excursion - (if (search-backward "%#BEGIN" nil t) + (if (re-search-backward "%#BEGIN\\s *$" nil t) (progn (setq typeout "--- Region from BEGIN to " end "the end of the buffer ---" @@ -478,6 +478,36 @@ The value is generated from YaTeX-typeset-pdf2image-chain and YaTeX-typeset-dvi2image-chain.") +(defun YaTeX-popup-image (imagesrc buffer &optional func) + (let ((sw (selected-window)) image + (data-p (and (> (length imagesrc) 128) + (not (file-readable-p imagesrc))))) + (save-excursion + (cond + ((featurep 'image) window-system + (YaTeX-showup-buffer ;showup and select + (get-buffer-create buffer) + (or func 'YaTeX-showup-buffer-bottom-most) + t) + (remove-images (point-min) (point-max)) + (erase-buffer) + (insert-image + (setq image (create-image + (if data-p imagesrc (expand-file-name imagesrc)) + nil data-p))) + (YaTeX-preview-image-mode) + (let ((height (1+ (cdr (image-size image))))) + (enlarge-window + (- (ceiling (min height (/ (frame-height) 2))) + (window-height)))) + (select-window sw)) + (t ;; Without direct image, display image with image viewer + (YaTeX-system + (format "%s %s" YaTeX-cmd-view-images target) + "YaTeX-region-image" + 'noask))) + ))) + (defvar YaTeX-typeset-conv2image-process nil "Process of conv2image chain") (defun YaTeX-typeset-conv2image-chain () (let*((proc (or YaTeX-typeset-process YaTeX-typeset-conv2image-process)) @@ -531,39 +561,11 @@ 'YaTeX-typeset-conv2image-chain) (get 'YaTeX-typeset-process 'ppcmd)))) ;; After all chain executed, display image in current window - (cond - ((and (featurep 'image) window-system) - ;; If direct image displaying available in running Emacs, - ;; display target image into the next window in Emacs. - (select-window w) - ;(setq foo (selected-window)) - (YaTeX-showup-buffer - (get-buffer-create " *YaTeX-region-image*") - 'YaTeX-showup-buffer-bottom-most t) - (remove-images (point-min) (point-max)) - (erase-buffer) - (cd pwd) ;when reuse from other source - ;(put-image (create-image (expand-file-name target)) (point)) - (insert-image-file target) - (setq img (plist-get (text-properties-at (point)) 'intangible)) - (YaTeX-preview-image-mode) - (if img - (let ((height (1+ (cdr (image-size img))))) - (enlarge-window - (- (ceiling (min height (/ (frame-height) 2))) - (window-height))))) - ;; Remember elapsed time, which will be threshold in onthefly-preview - (put 'YaTeX-typeset-conv2image-chain 'elapse - (YaTeX-elapsed-time - (get 'YaTeX-typeset-conv2image-chain 'start) (current-time)))) - (t - ;; Without direct image, display image with image viewer - (YaTeX-system - (format "%s %s" YaTeX-cmd-view-images target) - "YaTeX-region-image" - 'noask) - ) - ))))) + (YaTeX-popup-image target " *YaTeX-popup-image*") + (put 'YaTeX-typeset-conv2image-chain 'elapse + (YaTeX-elapsed-time + (get 'YaTeX-typeset-conv2image-chain 'start) (current-time))) + )))) (defvar YaTeX-typeset-environment-timer nil) @@ -657,6 +659,14 @@ (if usetimer (YaTeX-typeset-environment-auto b e))) (YaTeX-typeset-region)))) +(defun YaTeX-filter-BEGEND () + (let ((begend-info (YaTeX-in-BEGEND-p))) + (if begend-info + (progn + (require 'yatexflt) + (YaTeX-filter-pass-to-filter begend-info) + )))) + (defun YaTeX-typeset-environment () "Typeset current environment or paragraph. If region activated, use it." @@ -664,7 +674,8 @@ (let ((md (match-data))) (unwind-protect (save-excursion - (YaTeX-typeset-environment-1)) + (or (YaTeX-filter-BEGEND) + (YaTeX-typeset-environment-1))) (store-match-data md))))