From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yagnesh Raghava Yakkala Subject: Re: Macros [was: Re: ATTR_HTML for a clickable image, howto?] Date: Sun, 20 May 2012 17:34:49 +0900 Message-ID: <87pq9zz1w6.fsf@okhotsk19.lowtem.hokudai.ac.jp> References: <86pqbrywgr.fsf@iro.umontreal.ca> <87r4w63602.fsf@gnu.org> <86vclekyqo.fsf@iro.umontreal.ca> <4F7EAED9.2040804@christianmoe.com> <4F803DDC.20808@christianmoe.com> <4F853CCD.4020601@christianmoe.com> <86r4ufr7hx.fsf_-_@mercure.progiciels-bpi.ca> <87txzbcmbm.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([208.118.235.92]:43407) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SW1ag-0003BF-T6 for emacs-orgmode@gnu.org; Sun, 20 May 2012 04:34:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SW1aa-0001bP-Jw for emacs-orgmode@gnu.org; Sun, 20 May 2012 04:34:14 -0400 Received: from plane.gmane.org ([80.91.229.3]:52681) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SW1aa-0001bA-17 for emacs-orgmode@gnu.org; Sun, 20 May 2012 04:34:08 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1SW1aX-0006KS-Jv for emacs-orgmode@gnu.org; Sun, 20 May 2012 10:34:05 +0200 Received: from okhotsk19.lowtem.hokudai.ac.jp ([133.87.217.175]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 20 May 2012 10:34:05 +0200 Received: from yagnesh by okhotsk19.lowtem.hokudai.ac.jp with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 20 May 2012 10:34:05 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hello Nicolas, Nicolas Goaziou writes: > #+TITLE: Macro test > #+MACRO: test2 recursive $1 > #+MACRO: test A {{{test2(inner)}}} macro, $1. > #+MACRO: html-builder (eval (+ $1 $2)) > > > {{{test(and an outer one)}}} > > Some complex macro {{{html-builder(1,2)}}}. out of curiosity I tried to export above snippet. it is working nice except= for new exporter latex option. (org-export-dispatch and d option) here is the back trace: --8<---------------cut here---------------start------------->8--- Debugger entered--Lisp error: (void-variable \1) (+ \1 \2) (eval (+ \1 \2)) eval((eval (+ \1 \2))) (setq value (eval (read value))) (progn (setq value (eval (read value)))) (if (string-match "\\`(eval\\>" value) (progn (setq value (eval (read val= ue))))) (when (string-match "\\`(eval\\>" value) (setq value (eval (read value)))) (let* ((key (org-element-property :key macro)) (args (org-element-propert= y :args macro)) (value (org-export-data (plist-get info (intern (format ":m= acro-%s" key))) info))) (let ((s 0) n) (while (string-match "\\$\\([0-9]+\\= )" value s) (setq s (1+ (match-beginning 0)) n (string-to-number (match-str= ing 1 value))) (and (>=3D (length args) n) (setq value (replace-match (nth = (1- n) args) t t value))))) (when (string-match "\\`(eval\\>" value) (setq = value (eval (read value)))) (format "%s" (or value ""))) org-export-expand-macro((macro (:key "html-builder" :value "{{{html-build= er(1,2)}}}" :args ("1" "2") :begin 185 :end 208 :post-blank 0)) (:author "Y= agnesh Raghava Yakkala" :creator "Generated by Org mode 7.8.10 in Emacs 24.= 1.50.5." :date "\\today" :description nil :email "yagnesh@okhotsk19.lowtem.= hokudai.ac.jp" :exclude-tags ("noexport") :headline-levels 3 :keywords nil = :language "en" :preserve-breaks nil :section-numbers t :select-tags ("expor= t") :time-stamp-file t :title ("Macro test") :with-archived-trees headline = :with-author t :with-clocks nil :with-creator comment :with-drawers t :with= -email nil :with-emphasize t :with-entities t :with-fixed-width t :with-foo= tnotes t :with-plannings nil ...)) org-e-latex-macro((macro (:key "html-builder" :value "{{{html-builder(1,2= )}}}" :args ("1" "2") :begin 185 :end 208 :post-blank 0)) nil (:author "Yag= nesh Raghava Yakkala" :creator "Generated by Org mode 7.8.10 in Emacs 24.1.= 50.5." :date "\\today" :description nil :email "yagnesh@okhotsk19.lowtem.ho= kudai.ac.jp" :exclude-tags ("noexport") :headline-levels 3 :keywords nil :l= anguage "en" :preserve-breaks nil :section-numbers t :select-tags ("export"= ) :time-stamp-file t :title ("Macro test") :with-archived-trees headline :w= ith-author t :with-clocks nil :with-creator comment :with-drawers t :with-e= mail nil :with-emphasize t :with-entities t :with-fixed-width t :with-footn= otes t :with-plannings nil ...)) funcall(org-e-latex-macro (macro (:key "html-builder" :value "{{{html-bui= lder(1,2)}}}" :args ("1" "2") :begin 185 :end 208 :post-blank 0)) nil (:aut= hor "Yagnesh Raghava Yakkala" :creator "Generated by Org mode 7.8.10 in Ema= cs 24.1.50.5." :date "\\today" :description nil :email "yagnesh@okhotsk19.l= owtem.hokudai.ac.jp" :exclude-tags ("noexport") :headline-levels 3 :keyword= s nil :language "en" :preserve-breaks nil :section-numbers t :select-tags (= "export") :time-stamp-file t :title ("Macro test") :with-archived-trees hea= dline :with-author t :with-clocks nil :with-creator comment :with-drawers t= :with-email nil :with-emphasize t :with-entities t :with-fixed-width t :wi= th-footnotes t :with-plannings nil ...)) (and (fboundp transcoder) (funcall transcoder data nil info)) (let ((transcoder (org-export-transcoder data info))) (and (fboundp trans= coder) (funcall transcoder data nil info))) (cond ((member data (plist-get info :ignore-list)) nil) ((eq type (quote = plain-text)) (org-export-filter-apply-functions (plist-get info :filter-pla= in-text) (let ((transcoder (org-export-transcoder data info))) (if transcod= er (funcall transcoder data info) data)) info)) ((not (org-export-interpret= -p data info)) (org-export-data (org-export-expand data (mapconcat (lambda = (blob) (org-export-data blob info)) (org-element-contents data) "")) info))= ((not type) (mapconcat (lambda (obj) (org-export-data obj info)) data ""))= ((or (not (org-element-contents data)) (and (eq type (quote headline)) (eq= (plist-get info :with-archived-trees) (quote headline)) (org-element-prope= rty :archivedp data))) (let ((transcoder (org-export-transcoder data info))= ) (and (fboundp transcoder) (funcall transcoder data nil info)))) (t (let (= (transcoder (org-export-transcoder data info))) (when transcoder (let* ((gr= eaterp (memq type org-element-greater-elements)) (objectp (and ... ...)) (c= ontents (mapconcat ... ... ""))) (funcall transcoder data (if greaterp (org= -element-normalize-string contents) contents) info)))))) (let* ((type (org-element-type data)) (results (cond ((member data (plist= -get info :ignore-list)) nil) ((eq type (quote plain-text)) (org-export-fil= ter-apply-functions (plist-get info :filter-plain-text) (let (...) (if tran= scoder ... data)) info)) ((not (org-export-interpret-p data info)) (org-exp= ort-data (org-export-expand data (mapconcat ... ... "")) info)) ((not type)= (mapconcat (lambda (obj) (org-export-data obj info)) data "")) ((or (not (= org-element-contents data)) (and (eq type ...) (eq ... ...) (org-element-pr= operty :archivedp data))) (let ((transcoder ...)) (and (fboundp transcoder)= (funcall transcoder data nil info)))) (t (let ((transcoder ...)) (when tra= nscoder (let* ... ...))))))) (cond ((not results) nil) ((memq type (quote (= org-data plain-text nil))) results) (t (let ((results (org-export-filter-ap= ply-functions (plist-get info ...) (let ... ...) info))) results)))) org-export-data((macro (:key "html-builder" :value "{{{html-builder(1,2)}= }}" :args ("1" "2") :begin 185 :end 208 :post-blank 0)) (:author "Yagnesh R= aghava Yakkala" :creator "Generated by Org mode 7.8.10 in Emacs 24.1.50.5."= :date "\\today" :description nil :email "yagnesh@okhotsk19.lowtem.hokudai.= ac.jp" :exclude-tags ("noexport") :headline-levels 3 :keywords nil :languag= e "en" :preserve-breaks nil :section-numbers t :select-tags ("export") :tim= e-stamp-file t :title ("Macro test") :with-archived-trees headline :with-au= thor t :with-clocks nil :with-creator comment :with-drawers t :with-email n= il :with-emphasize t :with-entities t :with-fixed-width t :with-footnotes t= :with-plannings nil ...)) (lambda (element) (org-export-data element info))((macro (:key "html-buil= der" :value "{{{html-builder(1,2)}}}" :args ("1" "2") :begin 185 :end 208 := post-blank 0))) mapconcat((lambda (element) (org-export-data element info)) ("Some comple= x macro " (macro (:key "html-builder" :value "{{{html-builder(1,2)}}}" :arg= s ("1" "2") :begin 185 :end 208 :post-blank 0)) ".") "") (let* ((greaterp (memq type org-element-greater-elements)) (objectp (and = (not greaterp) (memq type org-element-recursive-objects))) (contents (mapco= ncat (lambda (element) (org-export-data element info)) (org-element-content= s (if (or greaterp objectp) data (org-element-normalize-contents data (when= ... ...)))) ""))) (funcall transcoder data (if greaterp (org-element-norma= lize-string contents) contents) info)) (progn (let* ((greaterp (memq type org-element-greater-elements)) (object= p (and (not greaterp) (memq type org-element-recursive-objects))) (contents= (mapconcat (lambda (element) (org-export-data element info)) (org-element-= contents (if (or greaterp objectp) data (org-element-normalize-contents dat= a ...))) ""))) (funcall transcoder data (if greaterp (org-element-normalize= -string contents) contents) info))) (if transcoder (progn (let* ((greaterp (memq type org-element-greater-ele= ments)) (objectp (and (not greaterp) (memq type org-element-recursive-objec= ts))) (contents (mapconcat (lambda (element) (org-export-data element info)= ) (org-element-contents (if ... data ...)) ""))) (funcall transcoder data (= if greaterp (org-element-normalize-string contents) contents) info)))) (when transcoder (let* ((greaterp (memq type org-element-greater-elements= )) (objectp (and (not greaterp) (memq type org-element-recursive-objects)))= (contents (mapconcat (lambda (element) (org-export-data element info)) (or= g-element-contents (if (or greaterp objectp) data (org-element-normalize-co= ntents data ...))) ""))) (funcall transcoder data (if greaterp (org-element= -normalize-string contents) contents) info))) (let ((transcoder (org-export-transcoder data info))) (when transcoder (l= et* ((greaterp (memq type org-element-greater-elements)) (objectp (and (not= greaterp) (memq type org-element-recursive-objects))) (contents (mapconcat= (lambda (element) (org-export-data element info)) (org-element-contents (i= f ... data ...)) ""))) (funcall transcoder data (if greaterp (org-element-n= ormalize-string contents) contents) info)))) (cond ((member data (plist-get info :ignore-list)) nil) ((eq type (quote = plain-text)) (org-export-filter-apply-functions (plist-get info :filter-pla= in-text) (let ((transcoder (org-export-transcoder data info))) (if transcod= er (funcall transcoder data info) data)) info)) ((not (org-export-interpret= -p data info)) (org-export-data (org-export-expand data (mapconcat (lambda = (blob) (org-export-data blob info)) (org-element-contents data) "")) info))= ((not type) (mapconcat (lambda (obj) (org-export-data obj info)) data ""))= ((or (not (org-element-contents data)) (and (eq type (quote headline)) (eq= (plist-get info :with-archived-trees) (quote headline)) (org-element-prope= rty :archivedp data))) (let ((transcoder (org-export-transcoder data info))= ) (and (fboundp transcoder) (funcall transcoder data nil info)))) (t (let (= (transcoder (org-export-transcoder data info))) (when transcoder (let* ((gr= eaterp (memq type org-element-greater-elements)) (objectp (and ... ...)) (c= ontents (mapconcat ... ... ""))) (funcall transcoder data (if greaterp (org= -element-normalize-string contents) contents) info)))))) (let* ((type (org-element-type data)) (results (cond ((member data (plist= -get info :ignore-list)) nil) ((eq type (quote plain-text)) (org-export-fil= ter-apply-functions (plist-get info :filter-plain-text) (let (...) (if tran= scoder ... data)) info)) ((not (org-export-interpret-p data info)) (org-exp= ort-data (org-export-expand data (mapconcat ... ... "")) info)) ((not type)= (mapconcat (lambda (obj) (org-export-data obj info)) data "")) ((or (not (= org-element-contents data)) (and (eq type ...) (eq ... ...) (org-element-pr= operty :archivedp data))) (let ((transcoder ...)) (and (fboundp transcoder)= (funcall transcoder data nil info)))) (t (let ((transcoder ...)) (when tra= nscoder (let* ... ...))))))) (cond ((not results) nil) ((memq type (quote (= org-data plain-text nil))) results) (t (let ((results (org-export-filter-ap= ply-functions (plist-get info ...) (let ... ...) info))) results)))) org-export-data((paragraph (:begin 166 :end 210 :contents-begin 166 :cont= ents-end 209 :post-blank 0) "Some complex macro " (macro (:key "html-builde= r" :value "{{{html-builder(1,2)}}}" :args ("1" "2") :begin 185 :end 208 :po= st-blank 0)) ".") (:author "Yagnesh Raghava Yakkala" :creator "Generated by= Org mode 7.8.10 in Emacs 24.1.50.5." :date "\\today" :description nil :ema= il "yagnesh@okhotsk19.lowtem.hokudai.ac.jp" :exclude-tags ("noexport") :hea= dline-levels 3 :keywords nil :language "en" :preserve-breaks nil :section-n= umbers t :select-tags ("export") :time-stamp-file t :title ("Macro test") := with-archived-trees headline :with-author t :with-clocks nil :with-creator = comment :with-drawers t :with-email nil :with-emphasize t :with-entities t = :with-fixed-width t :with-footnotes t :with-plannings nil ...)) (lambda (element) (org-export-data element info))((paragraph (:begin 166 = :end 210 :contents-begin 166 :contents-end 209 :post-blank 0) "Some complex= macro " (macro (:key "html-builder" :value "{{{html-builder(1,2)}}}" :args= ("1" "2") :begin 185 :end 208 :post-blank 0)) ".")) mapconcat((lambda (element) (org-export-data element info)) ((keyword (:k= ey "TITLE" :value "Macro test" :begin 1 :end 21 :post-blank 0)) (keyword (:= key "MACRO" :value "test2 recursive $1" :begin 21 :end 49 :post-blank 0)) (= keyword (:key "MACRO" :value "test A {{{test2(inner)}}} macro, $1." :begin = 49 :end 95 :post-blank 0)) (keyword (:key "MACRO" :value "html-builder (eva= l (+ $1 $2))" :begin 95 :end 136 :post-blank 2)) (paragraph (:begin 136 :en= d 166 :contents-begin 136 :contents-end 164 :post-blank 1) (macro (:key "te= st" :value "{{{test(and an outer one)}}}" :args ("and an outer one") :begin= 136 :end 164 :post-blank 0))) (paragraph (:begin 166 :end 210 :contents-be= gin 166 :contents-end 209 :post-blank 0) "Some complex macro " (macro (:key= "html-builder" :value "{{{html-builder(1,2)}}}" :args ("1" "2") :begin 185= :end 208 :post-blank 0)) ".")) "") (let* ((greaterp (memq type org-element-greater-elements)) (objectp (and = (not greaterp) (memq type org-element-recursive-objects))) (contents (mapco= ncat (lambda (element) (org-export-data element info)) (org-element-content= s (if (or greaterp objectp) data (org-element-normalize-contents data (when= ... ...)))) ""))) (funcall transcoder data (if greaterp (org-element-norma= lize-string contents) contents) info)) (progn (let* ((greaterp (memq type org-element-greater-elements)) (object= p (and (not greaterp) (memq type org-element-recursive-objects))) (contents= (mapconcat (lambda (element) (org-export-data element info)) (org-element-= contents (if (or greaterp objectp) data (org-element-normalize-contents dat= a ...))) ""))) (funcall transcoder data (if greaterp (org-element-normalize= -string contents) contents) info))) (if transcoder (progn (let* ((greaterp (memq type org-element-greater-ele= ments)) (objectp (and (not greaterp) (memq type org-element-recursive-objec= ts))) (contents (mapconcat (lambda (element) (org-export-data element info)= ) (org-element-contents (if ... data ...)) ""))) (funcall transcoder data (= if greaterp (org-element-normalize-string contents) contents) info)))) (when transcoder (let* ((greaterp (memq type org-element-greater-elements= )) (objectp (and (not greaterp) (memq type org-element-recursive-objects)))= (contents (mapconcat (lambda (element) (org-export-data element info)) (or= g-element-contents (if (or greaterp objectp) data (org-element-normalize-co= ntents data ...))) ""))) (funcall transcoder data (if greaterp (org-element= -normalize-string contents) contents) info))) (let ((transcoder (org-export-transcoder data info))) (when transcoder (l= et* ((greaterp (memq type org-element-greater-elements)) (objectp (and (not= greaterp) (memq type org-element-recursive-objects))) (contents (mapconcat= (lambda (element) (org-export-data element info)) (org-element-contents (i= f ... data ...)) ""))) (funcall transcoder data (if greaterp (org-element-n= ormalize-string contents) contents) info)))) (cond ((member data (plist-get info :ignore-list)) nil) ((eq type (quote = plain-text)) (org-export-filter-apply-functions (plist-get info :filter-pla= in-text) (let ((transcoder (org-export-transcoder data info))) (if transcod= er (funcall transcoder data info) data)) info)) ((not (org-export-interpret= -p data info)) (org-export-data (org-export-expand data (mapconcat (lambda = (blob) (org-export-data blob info)) (org-element-contents data) "")) info))= ((not type) (mapconcat (lambda (obj) (org-export-data obj info)) data ""))= ((or (not (org-element-contents data)) (and (eq type (quote headline)) (eq= (plist-get info :with-archived-trees) (quote headline)) (org-element-prope= rty :archivedp data))) (let ((transcoder (org-export-transcoder data info))= ) (and (fboundp transcoder) (funcall transcoder data nil info)))) (t (let (= (transcoder (org-export-transcoder data info))) (when transcoder (let* ((gr= eaterp (memq type org-element-greater-elements)) (objectp (and ... ...)) (c= ontents (mapconcat ... ... ""))) (funcall transcoder data (if greaterp (org= -element-normalize-string contents) contents) info)))))) (let* ((type (org-element-type data)) (results (cond ((member data (plist= -get info :ignore-list)) nil) ((eq type (quote plain-text)) (org-export-fil= ter-apply-functions (plist-get info :filter-plain-text) (let (...) (if tran= scoder ... data)) info)) ((not (org-export-interpret-p data info)) (org-exp= ort-data (org-export-expand data (mapconcat ... ... "")) info)) ((not type)= (mapconcat (lambda (obj) (org-export-data obj info)) data "")) ((or (not (= org-element-contents data)) (and (eq type ...) (eq ... ...) (org-element-pr= operty :archivedp data))) (let ((transcoder ...)) (and (fboundp transcoder)= (funcall transcoder data nil info)))) (t (let ((transcoder ...)) (when tra= nscoder (let* ... ...))))))) (cond ((not results) nil) ((memq type (quote (= org-data plain-text nil))) results) (t (let ((results (org-export-filter-ap= ply-functions (plist-get info ...) (let ... ...) info))) results)))) org-export-data((section (:begin 1 :end 210 :contents-begin 1 :contents-e= nd 210 :post-blank 0) (keyword (:key "TITLE" :value "Macro test" :begin 1 := end 21 :post-blank 0)) (keyword (:key "MACRO" :value "test2 recursive $1" := begin 21 :end 49 :post-blank 0)) (keyword (:key "MACRO" :value "test A {{{t= est2(inner)}}} macro, $1." :begin 49 :end 95 :post-blank 0)) (keyword (:key= "MACRO" :value "html-builder (eval (+ $1 $2))" :begin 95 :end 136 :post-bl= ank 2)) (paragraph (:begin 136 :end 166 :contents-begin 136 :contents-end 1= 64 :post-blank 1) (macro (:key "test" :value "{{{test(and an outer one)}}}"= :args ("and an outer one") :begin 136 :end 164 :post-blank 0))) (paragraph= (:begin 166 :end 210 :contents-begin 166 :contents-end 209 :post-blank 0) = "Some complex macro " (macro (:key "html-builder" :value "{{{html-builder(1= ,2)}}}" :args ("1" "2") :begin 185 :end 208 :post-blank 0)) ".")) (:author = "Yagnesh Raghava Yakkala" :creator "Generated by Org mode 7.8.10 in Emacs 2= 4.1.50.5." :date "\\today" :description nil :email "yagnesh@okhotsk19.lowte= m.hokudai.ac.jp" :exclude-tags ("noexport") :headline-levels 3 :keywords ni= l :language "en" :preserve-breaks nil :section-numbers t :select-tags ("exp= ort") :time-stamp-file t :title ("Macro test") :with-archived-trees headlin= e :with-author t :with-clocks nil :with-creator comment :with-drawers t :wi= th-email nil :with-emphasize t :with-entities t :with-fixed-width t :with-f= ootnotes t :with-plannings nil ...)) (lambda (element) (org-export-data element info))((section (:begin 1 :end= 210 :contents-begin 1 :contents-end 210 :post-blank 0) (keyword (:key "TIT= LE" :value "Macro test" :begin 1 :end 21 :post-blank 0)) (keyword (:key "MA= CRO" :value "test2 recursive $1" :begin 21 :end 49 :post-blank 0)) (keyword= (:key "MACRO" :value "test A {{{test2(inner)}}} macro, $1." :begin 49 :end= 95 :post-blank 0)) (keyword (:key "MACRO" :value "html-builder (eval (+ $1= $2))" :begin 95 :end 136 :post-blank 2)) (paragraph (:begin 136 :end 166 := contents-begin 136 :contents-end 164 :post-blank 1) (macro (:key "test" :va= lue "{{{test(and an outer one)}}}" :args ("and an outer one") :begin 136 :e= nd 164 :post-blank 0))) (paragraph (:begin 166 :end 210 :contents-begin 166= :contents-end 209 :post-blank 0) "Some complex macro " (macro (:key "html-= builder" :value "{{{html-builder(1,2)}}}" :args ("1" "2") :begin 185 :end 2= 08 :post-blank 0)) "."))) mapconcat((lambda (element) (org-export-data element info)) ((section (:b= egin 1 :end 210 :contents-begin 1 :contents-end 210 :post-blank 0) (keyword= (:key "TITLE" :value "Macro test" :begin 1 :end 21 :post-blank 0)) (keywor= d (:key "MACRO" :value "test2 recursive $1" :begin 21 :end 49 :post-blank 0= )) (keyword (:key "MACRO" :value "test A {{{test2(inner)}}} macro, $1." :be= gin 49 :end 95 :post-blank 0)) (keyword (:key "MACRO" :value "html-builder = (eval (+ $1 $2))" :begin 95 :end 136 :post-blank 2)) (paragraph (:begin 136= :end 166 :contents-begin 136 :contents-end 164 :post-blank 1) (macro (:key= "test" :value "{{{test(and an outer one)}}}" :args ("and an outer one") :b= egin 136 :end 164 :post-blank 0))) (paragraph (:begin 166 :end 210 :content= s-begin 166 :contents-end 209 :post-blank 0) "Some complex macro " (macro (= :key "html-builder" :value "{{{html-builder(1,2)}}}" :args ("1" "2") :begin= 185 :end 208 :post-blank 0)) "."))) "") (let* ((greaterp (memq type org-element-greater-elements)) (objectp (and = (not greaterp) (memq type org-element-recursive-objects))) (contents (mapco= ncat (lambda (element) (org-export-data element info)) (org-element-content= s (if (or greaterp objectp) data (org-element-normalize-contents data (when= ... ...)))) ""))) (funcall transcoder data (if greaterp (org-element-norma= lize-string contents) contents) info)) (progn (let* ((greaterp (memq type org-element-greater-elements)) (object= p (and (not greaterp) (memq type org-element-recursive-objects))) (contents= (mapconcat (lambda (element) (org-export-data element info)) (org-element-= contents (if (or greaterp objectp) data (org-element-normalize-contents dat= a ...))) ""))) (funcall transcoder data (if greaterp (org-element-normalize= -string contents) contents) info))) (if transcoder (progn (let* ((greaterp (memq type org-element-greater-ele= ments)) (objectp (and (not greaterp) (memq type org-element-recursive-objec= ts))) (contents (mapconcat (lambda (element) (org-export-data element info)= ) (org-element-contents (if ... data ...)) ""))) (funcall transcoder data (= if greaterp (org-element-normalize-string contents) contents) info)))) (when transcoder (let* ((greaterp (memq type org-element-greater-elements= )) (objectp (and (not greaterp) (memq type org-element-recursive-objects)))= (contents (mapconcat (lambda (element) (org-export-data element info)) (or= g-element-contents (if (or greaterp objectp) data (org-element-normalize-co= ntents data ...))) ""))) (funcall transcoder data (if greaterp (org-element= -normalize-string contents) contents) info))) (let ((transcoder (org-export-transcoder data info))) (when transcoder (l= et* ((greaterp (memq type org-element-greater-elements)) (objectp (and (not= greaterp) (memq type org-element-recursive-objects))) (contents (mapconcat= (lambda (element) (org-export-data element info)) (org-element-contents (i= f ... data ...)) ""))) (funcall transcoder data (if greaterp (org-element-n= ormalize-string contents) contents) info)))) (cond ((member data (plist-get info :ignore-list)) nil) ((eq type (quote = plain-text)) (org-export-filter-apply-functions (plist-get info :filter-pla= in-text) (let ((transcoder (org-export-transcoder data info))) (if transcod= er (funcall transcoder data info) data)) info)) ((not (org-export-interpret= -p data info)) (org-export-data (org-export-expand data (mapconcat (lambda = (blob) (org-export-data blob info)) (org-element-contents data) "")) info))= ((not type) (mapconcat (lambda (obj) (org-export-data obj info)) data ""))= ((or (not (org-element-contents data)) (and (eq type (quote headline)) (eq= (plist-get info :with-archived-trees) (quote headline)) (org-element-prope= rty :archivedp data))) (let ((transcoder (org-export-transcoder data info))= ) (and (fboundp transcoder) (funcall transcoder data nil info)))) (t (let (= (transcoder (org-export-transcoder data info))) (when transcoder (let* ((gr= eaterp (memq type org-element-greater-elements)) (objectp (and ... ...)) (c= ontents (mapconcat ... ... ""))) (funcall transcoder data (if greaterp (org= -element-normalize-string contents) contents) info)))))) (let* ((type (org-element-type data)) (results (cond ((member data (plist= -get info :ignore-list)) nil) ((eq type (quote plain-text)) (org-export-fil= ter-apply-functions (plist-get info :filter-plain-text) (let (...) (if tran= scoder ... data)) info)) ((not (org-export-interpret-p data info)) (org-exp= ort-data (org-export-expand data (mapconcat ... ... "")) info)) ((not type)= (mapconcat (lambda (obj) (org-export-data obj info)) data "")) ((or (not (= org-element-contents data)) (and (eq type ...) (eq ... ...) (org-element-pr= operty :archivedp data))) (let ((transcoder ...)) (and (fboundp transcoder)= (funcall transcoder data nil info)))) (t (let ((transcoder ...)) (when tra= nscoder (let* ... ...))))))) (cond ((not results) nil) ((memq type (quote (= org-data plain-text nil))) results) (t (let ((results (org-export-filter-ap= ply-functions (plist-get info ...) (let ... ...) info))) results)))) org-export-data((org-data nil (section (:begin 1 :end 210 :contents-begin= 1 :contents-end 210 :post-blank 0) (keyword (:key "TITLE" :value "Macro te= st" :begin 1 :end 21 :post-blank 0)) (keyword (:key "MACRO" :value "test2 r= ecursive $1" :begin 21 :end 49 :post-blank 0)) (keyword (:key "MACRO" :valu= e "test A {{{test2(inner)}}} macro, $1." :begin 49 :end 95 :post-blank 0)) = (keyword (:key "MACRO" :value "html-builder (eval (+ $1 $2))" :begin 95 :en= d 136 :post-blank 2)) (paragraph (:begin 136 :end 166 :contents-begin 136 := contents-end 164 :post-blank 1) (macro (:key "test" :value "{{{test(and an = outer one)}}}" :args ("and an outer one") :begin 136 :end 164 :post-blank 0= ))) (paragraph (:begin 166 :end 210 :contents-begin 166 :contents-end 209 := post-blank 0) "Some complex macro " (macro (:key "html-builder" :value "{{{= html-builder(1,2)}}}" :args ("1" "2") :begin 185 :end 208 :post-blank 0)) "= ."))) (:author "Yagnesh Raghava Yakkala" :creator "Generated by Org mode 7.= 8.10 in Emacs 24.1.50.5." :date "\\today" :description nil :email "yagnesh@= okhotsk19.lowtem.hokudai.ac.jp" :exclude-tags ("noexport") :headline-levels= 3 :keywords nil :language "en" :preserve-breaks nil :section-numbers t :se= lect-tags ("export") :time-stamp-file t :title ("Macro test") :with-archive= d-trees headline :with-author t :with-clocks nil :with-creator comment :wit= h-drawers t :with-email nil :with-emphasize t :with-entities t :with-fixed-= width t :with-footnotes t :with-plannings nil ...)) (org-element-normalize-string (org-export-data tree info)) (let* ((body (org-element-normalize-string (org-export-data tree info))) = (template (intern (format "org-%s-template" backend))) (output (org-export-= filter-apply-functions (plist-get info :filter-final-output) (if (or (not (= fboundp template)) body-only) body (funcall template body info)) info))) (w= hen org-export-copy-to-kill-ring (org-kill-new output)) output) (let ((info (org-export-install-filters (org-export-store-footnote-defini= tions (org-export-get-environment backend subtreep ext-plist)))) (tree (let= ((buf (or (buffer-file-name ...) (current-buffer)))) (org-export-with-curr= ent-buffer-copy (unless noexpand (org-export-expand-include-keyword) (let (= ...) (org-export-blocks-preprocess))) (goto-char (point-min)) (let ((org-ex= port-current-backend backend)) (run-hooks (quote org-export-before-parsing-= hook))) (org-element-parse-buffer nil visible-only))))) (setq tree (org-exp= ort-filter-apply-functions (plist-get info :filter-parse-tree) tree info)) = (setq info (org-combine-plists info (org-export-collect-tree-properties tre= e info))) (let* ((body (org-element-normalize-string (org-export-data tree = info))) (template (intern (format "org-%s-template" backend))) (output (org= -export-filter-apply-functions (plist-get info :filter-final-output) (if (o= r (not ...) body-only) body (funcall template body info)) info))) (when org= -export-copy-to-kill-ring (org-kill-new output)) output)) (save-restriction (cond ((org-region-active-p) (narrow-to-region (region-= beginning) (region-end))) (subtreep (org-narrow-to-subtree) (goto-char (poi= nt-min)) (forward-line) (narrow-to-region (point) (point-max)))) (let ((inf= o (org-export-install-filters (org-export-store-footnote-definitions (org-e= xport-get-environment backend subtreep ext-plist)))) (tree (let ((buf (or .= .. ...))) (org-export-with-current-buffer-copy (unless noexpand (org-export= -expand-include-keyword) (let ... ...)) (goto-char (point-min)) (let (...) = (run-hooks ...)) (org-element-parse-buffer nil visible-only))))) (setq tree= (org-export-filter-apply-functions (plist-get info :filter-parse-tree) tre= e info)) (setq info (org-combine-plists info (org-export-collect-tree-prope= rties tree info))) (let* ((body (org-element-normalize-string (org-export-d= ata tree info))) (template (intern (format "org-%s-template" backend))) (ou= tput (org-export-filter-apply-functions (plist-get info :filter-final-outpu= t) (if (or ... body-only) body (funcall template body info)) info))) (when = org-export-copy-to-kill-ring (org-kill-new output)) output))) (save-excursion (save-restriction (cond ((org-region-active-p) (narrow-to= -region (region-beginning) (region-end))) (subtreep (org-narrow-to-subtree)= (goto-char (point-min)) (forward-line) (narrow-to-region (point) (point-ma= x)))) (let ((info (org-export-install-filters (org-export-store-footnote-de= finitions (org-export-get-environment backend subtreep ext-plist)))) (tree = (let ((buf ...)) (org-export-with-current-buffer-copy (unless noexpand ... = ...) (goto-char ...) (let ... ...) (org-element-parse-buffer nil visible-on= ly))))) (setq tree (org-export-filter-apply-functions (plist-get info :filt= er-parse-tree) tree info)) (setq info (org-combine-plists info (org-export-= collect-tree-properties tree info))) (let* ((body (org-element-normalize-st= ring (org-export-data tree info))) (template (intern (format "org-%s-templa= te" backend))) (output (org-export-filter-apply-functions (plist-get info := filter-final-output) (if ... body ...) info))) (when org-export-copy-to-kil= l-ring (org-kill-new output)) output)))) org-export-as(e-latex nil nil nil nil nil) (let ((out (org-export-as backend subtreep visible-only body-only ext-pli= st noexpand))) (with-temp-buffer (insert out) (let ((coding-system-for-writ= e org-export-coding-system)) (write-file file)))) org-export-to-file(e-latex "/tmp/org-scratch.tex" nil nil nil nil) (let ((outfile (org-export-output-file-name ".tex" subtreep pub-dir))) (o= rg-export-to-file (quote e-latex) outfile subtreep visible-only body-only e= xt-plist)) org-e-latex-export-to-latex(nil nil nil nil nil) (org-e-latex-compile (org-e-latex-export-to-latex subtreep visible-only b= ody-only ext-plist pub-dir)) org-e-latex-export-to-pdf(nil nil nil) (org-open-file (org-e-latex-export-to-pdf (memq (quote subtree) optns) (m= emq (quote visible) optns) (memq (quote body) optns))) (cond ((eql --cl-var-- (quote 113)) nil) ((member* --cl-var-- (quote (65 = 78 85))) (let ((outbuf (org-export-to-buffer (quote e-ascii) "*Org E-ASCII = Export*" (memq (quote subtree) optns) (memq (quote visible) optns) (memq (q= uote body) optns) (\` (:ascii-charset ...))))) (with-current-buffer outbuf = (text-mode)) (when org-export-show-temporary-export-buffer (switch-to-buffe= r-other-window outbuf)))) ((member* --cl-var-- (quote (97 110 117))) (org-e= -ascii-export-to-ascii (memq (quote subtree) optns) (memq (quote visible) o= ptns) (memq (quote body) optns) (\` (:ascii-charset (\, (case raw-key (97 .= ..) (110 ...) (t ...))))))) ((eql --cl-var-- (quote 76)) (let ((outbuf (org= -export-to-buffer (quote e-latex) "*Org E-LaTeX Export*" (memq (quote subtr= ee) optns) (memq (quote visible) optns) (memq (quote body) optns)))) (with-= current-buffer outbuf (latex-mode)) (when org-export-show-temporary-export-= buffer (switch-to-buffer-other-window outbuf)))) ((eql --cl-var-- (quote 10= 8)) (org-e-latex-export-to-latex (memq (quote subtree) optns) (memq (quote = visible) optns) (memq (quote body) optns))) ((eql --cl-var-- (quote 112)) (= org-e-latex-export-to-pdf (memq (quote subtree) optns) (memq (quote visible= ) optns) (memq (quote body) optns))) ((eql --cl-var-- (quote 100)) (org-ope= n-file (org-e-latex-export-to-pdf (memq (quote subtree) optns) (memq (quote= visible) optns) (memq (quote body) optns)))) ((eql --cl-var-- (quote 72)) = (let ((outbuf (org-export-to-buffer (quote e-html) "*Org E-HTML Export*" (m= emq (quote subtree) optns) (memq (quote visible) optns) (memq (quote body) = optns)))) (with-current-buffer outbuf (if (featurep (quote nxhtml-mode)) (n= xhtml-mode) (nxml-mode))) (when org-export-show-temporary-export-buffer (sw= itch-to-buffer-other-window outbuf)))) ((eql --cl-var-- (quote 104)) (org-e= -html-export-to-html (memq (quote subtree) optns) (memq (quote visible) opt= ns) (memq (quote body) optns))) ((eql --cl-var-- (quote 98)) (org-open-file= (org-e-html-export-to-html (memq (quote subtree) optns) (memq (quote visib= le) optns) (memq (quote body) optns)))) ((eql --cl-var-- (quote 111)) (org-= e-odt-export-to-odt (memq (quote subtree) optns) (memq (quote visible) optn= s) (memq (quote body) optns))) ((eql --cl-var-- (quote 79)) (org-open-file = (org-e-odt-export-to-odt (memq (quote subtree) optns) (memq (quote visible)= optns) (memq (quote body) optns)))) ((eql --cl-var-- (quote 70)) (org-e-pu= blish-current-file (memq (quote force) optns))) ((eql --cl-var-- (quote 80)= ) (org-e-publish-current-project (memq (quote force) optns))) ((eql --cl-va= r-- (quote 88)) (let ((project (assoc (org-icompleting-read "Publish projec= t: " org-e-publish-project-alist nil t) org-e-publish-project-alist))) (org= -e-publish project (memq (quote force) optns)))) ((eql --cl-var-- (quote 69= )) (org-e-publish-all (memq (quote force) optns))) (t (error "No command as= sociated with key %s" (char-to-string raw-key)))) (let ((--cl-var-- (if (< raw-key 27) (+ raw-key 96) raw-key))) (cond ((eq= l --cl-var-- (quote 113)) nil) ((member* --cl-var-- (quote (65 78 85))) (le= t ((outbuf (org-export-to-buffer (quote e-ascii) "*Org E-ASCII Export*" (me= mq ... optns) (memq ... optns) (memq ... optns) (\` ...)))) (with-current-b= uffer outbuf (text-mode)) (when org-export-show-temporary-export-buffer (sw= itch-to-buffer-other-window outbuf)))) ((member* --cl-var-- (quote (97 110 = 117))) (org-e-ascii-export-to-ascii (memq (quote subtree) optns) (memq (quo= te visible) optns) (memq (quote body) optns) (\` (:ascii-charset (\, (case = raw-key ... ... ...)))))) ((eql --cl-var-- (quote 76)) (let ((outbuf (org-e= xport-to-buffer (quote e-latex) "*Org E-LaTeX Export*" (memq ... optns) (me= mq ... optns) (memq ... optns)))) (with-current-buffer outbuf (latex-mode))= (when org-export-show-temporary-export-buffer (switch-to-buffer-other-wind= ow outbuf)))) ((eql --cl-var-- (quote 108)) (org-e-latex-export-to-latex (m= emq (quote subtree) optns) (memq (quote visible) optns) (memq (quote body) = optns))) ((eql --cl-var-- (quote 112)) (org-e-latex-export-to-pdf (memq (qu= ote subtree) optns) (memq (quote visible) optns) (memq (quote body) optns))= ) ((eql --cl-var-- (quote 100)) (org-open-file (org-e-latex-export-to-pdf (= memq (quote subtree) optns) (memq (quote visible) optns) (memq (quote body)= optns)))) ((eql --cl-var-- (quote 72)) (let ((outbuf (org-export-to-buffer= (quote e-html) "*Org E-HTML Export*" (memq ... optns) (memq ... optns) (me= mq ... optns)))) (with-current-buffer outbuf (if (featurep (quote nxhtml-mo= de)) (nxhtml-mode) (nxml-mode))) (when org-export-show-temporary-export-buf= fer (switch-to-buffer-other-window outbuf)))) ((eql --cl-var-- (quote 104))= (org-e-html-export-to-html (memq (quote subtree) optns) (memq (quote visib= le) optns) (memq (quote body) optns))) ((eql --cl-var-- (quote 98)) (org-op= en-file (org-e-html-export-to-html (memq (quote subtree) optns) (memq (quot= e visible) optns) (memq (quote body) optns)))) ((eql --cl-var-- (quote 111)= ) (org-e-odt-export-to-odt (memq (quote subtree) optns) (memq (quote visibl= e) optns) (memq (quote body) optns))) ((eql --cl-var-- (quote 79)) (org-ope= n-file (org-e-odt-export-to-odt (memq (quote subtree) optns) (memq (quote v= isible) optns) (memq (quote body) optns)))) ((eql --cl-var-- (quote 70)) (o= rg-e-publish-current-file (memq (quote force) optns))) ((eql --cl-var-- (qu= ote 80)) (org-e-publish-current-project (memq (quote force) optns))) ((eql = --cl-var-- (quote 88)) (let ((project (assoc (org-icompleting-read "Publish= project: " org-e-publish-project-alist nil t) org-e-publish-project-alist)= )) (org-e-publish project (memq (quote force) optns)))) ((eql --cl-var-- (q= uote 69)) (org-e-publish-all (memq (quote force) optns))) (t (error "No com= mand associated with key %s" (char-to-string raw-key))))) (case (if (< raw-key 27) (+ raw-key 96) raw-key) (113 nil) ((65 78 85) (l= et ((outbuf (org-export-to-buffer (quote e-ascii) "*Org E-ASCII Export*" (m= emq (quote subtree) optns) (memq (quote visible) optns) (memq (quote body) = optns) (\` (:ascii-charset ...))))) (with-current-buffer outbuf (text-mode)= ) (when org-export-show-temporary-export-buffer (switch-to-buffer-other-win= dow outbuf)))) ((97 110 117) (org-e-ascii-export-to-ascii (memq (quote subt= ree) optns) (memq (quote visible) optns) (memq (quote body) optns) (\` (:as= cii-charset (\, (case raw-key (97 ...) (110 ...) (t ...))))))) (76 (let ((o= utbuf (org-export-to-buffer (quote e-latex) "*Org E-LaTeX Export*" (memq (q= uote subtree) optns) (memq (quote visible) optns) (memq (quote body) optns)= ))) (with-current-buffer outbuf (latex-mode)) (when org-export-show-tempora= ry-export-buffer (switch-to-buffer-other-window outbuf)))) (108 (org-e-late= x-export-to-latex (memq (quote subtree) optns) (memq (quote visible) optns)= (memq (quote body) optns))) (112 (org-e-latex-export-to-pdf (memq (quote s= ubtree) optns) (memq (quote visible) optns) (memq (quote body) optns))) (10= 0 (org-open-file (org-e-latex-export-to-pdf (memq (quote subtree) optns) (m= emq (quote visible) optns) (memq (quote body) optns)))) (72 (let ((outbuf (= org-export-to-buffer (quote e-html) "*Org E-HTML Export*" (memq (quote subt= ree) optns) (memq (quote visible) optns) (memq (quote body) optns)))) (with= -current-buffer outbuf (if (featurep (quote nxhtml-mode)) (nxhtml-mode) (nx= ml-mode))) (when org-export-show-temporary-export-buffer (switch-to-buffer-= other-window outbuf)))) (104 (org-e-html-export-to-html (memq (quote subtre= e) optns) (memq (quote visible) optns) (memq (quote body) optns))) (98 (org= -open-file (org-e-html-export-to-html (memq (quote subtree) optns) (memq (q= uote visible) optns) (memq (quote body) optns)))) (111 (org-e-odt-export-to= -odt (memq (quote subtree) optns) (memq (quote visible) optns) (memq (quote= body) optns))) (79 (org-open-file (org-e-odt-export-to-odt (memq (quote su= btree) optns) (memq (quote visible) optns) (memq (quote body) optns)))) (70= (org-e-publish-current-file (memq (quote force) optns))) (80 (org-e-publis= h-current-project (memq (quote force) optns))) (88 (let ((project (assoc (o= rg-icompleting-read "Publish project: " org-e-publish-project-alist nil t) = org-e-publish-project-alist))) (org-e-publish project (memq (quote force) o= ptns)))) (69 (org-e-publish-all (memq (quote force) optns))) (t (error "No = command associated with key %s" (char-to-string raw-key)))) (let* ((input (org-export-dispatch-ui (if (listp org-export-initial-scope= ) org-export-initial-scope (list org-export-initial-scope)) org-export-disp= atch-use-expert-ui)) (raw-key (car input)) (optns (cdr input))) (case (if (= < raw-key 27) (+ raw-key 96) raw-key) (113 nil) ((65 78 85) (let ((outbuf (= org-export-to-buffer (quote e-ascii) "*Org E-ASCII Export*" (memq ... optns= ) (memq ... optns) (memq ... optns) (\` ...)))) (with-current-buffer outbuf= (text-mode)) (when org-export-show-temporary-export-buffer (switch-to-buff= er-other-window outbuf)))) ((97 110 117) (org-e-ascii-export-to-ascii (memq= (quote subtree) optns) (memq (quote visible) optns) (memq (quote body) opt= ns) (\` (:ascii-charset (\, (case raw-key ... ... ...)))))) (76 (let ((outb= uf (org-export-to-buffer (quote e-latex) "*Org E-LaTeX Export*" (memq ... o= ptns) (memq ... optns) (memq ... optns)))) (with-current-buffer outbuf (lat= ex-mode)) (when org-export-show-temporary-export-buffer (switch-to-buffer-o= ther-window outbuf)))) (108 (org-e-latex-export-to-latex (memq (quote subtr= ee) optns) (memq (quote visible) optns) (memq (quote body) optns))) (112 (o= rg-e-latex-export-to-pdf (memq (quote subtree) optns) (memq (quote visible)= optns) (memq (quote body) optns))) (100 (org-open-file (org-e-latex-export= -to-pdf (memq (quote subtree) optns) (memq (quote visible) optns) (memq (qu= ote body) optns)))) (72 (let ((outbuf (org-export-to-buffer (quote e-html) = "*Org E-HTML Export*" (memq ... optns) (memq ... optns) (memq ... optns))))= (with-current-buffer outbuf (if (featurep (quote nxhtml-mode)) (nxhtml-mod= e) (nxml-mode))) (when org-export-show-temporary-export-buffer (switch-to-b= uffer-other-window outbuf)))) (104 (org-e-html-export-to-html (memq (quote = subtree) optns) (memq (quote visible) optns) (memq (quote body) optns))) (9= 8 (org-open-file (org-e-html-export-to-html (memq (quote subtree) optns) (m= emq (quote visible) optns) (memq (quote body) optns)))) (111 (org-e-odt-exp= ort-to-odt (memq (quote subtree) optns) (memq (quote visible) optns) (memq = (quote body) optns))) (79 (org-open-file (org-e-odt-export-to-odt (memq (qu= ote subtree) optns) (memq (quote visible) optns) (memq (quote body) optns))= )) (70 (org-e-publish-current-file (memq (quote force) optns))) (80 (org-e-= publish-current-project (memq (quote force) optns))) (88 (let ((project (as= soc (org-icompleting-read "Publish project: " org-e-publish-project-alist n= il t) org-e-publish-project-alist))) (org-e-publish project (memq (quote fo= rce) optns)))) (69 (org-e-publish-all (memq (quote force) optns))) (t (erro= r "No command associated with key %s" (char-to-string raw-key))))) org-export-dispatch() call-interactively(org-export-dispatch record nil) command-execute(org-export-dispatch record) execute-extended-command(nil "org-export-dispatch") call-interactively(execute-extended-command nil nil) --8<---------------cut here---------------end--------------->8--- org version: pulled a while ago. Org-mode version 7.8.10 (release_7.8.10-574-g57cfa6 @ /home/yagnesh/.emacs.= d/el-get/org-mode/lisp/) --=20 =E0=B0=8E=E0=B0=82=E0=B0=A6=E0=B0=B0=E0=B1=8B =E0=B0=AE=E0=B0=B9=E0=B0=BE= =E0=B0=A8=E0=B1=81=E0=B0=AD=E0=B0=BE=E0=B0=B5=E0=B1=81=E0=B0=B2=E0=B1=81 = =E0=B0=85=E0=B0=82=E0=B0=A6=E0=B0=B0=E0=B0=BF=E0=B0=95=E0=B0=BF =E0=B0=B5= =E0=B0=82=E0=B0=A6=E0=B0=A8=E0=B0=AE=E0=B1=81=E0=B0=B2=E0=B1=81 YYR