From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aaron Ecay Subject: [export] org-export-with-* bugs Date: Sun, 15 Dec 2013 22:37:35 -0500 Message-ID: <87d2kxfou8.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 ([2001:4830:134:3::10]:34913) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VsP0A-0006Zh-6g for emacs-orgmode@gnu.org; Sun, 15 Dec 2013 22:37:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VsP01-0001mK-7k for emacs-orgmode@gnu.org; Sun, 15 Dec 2013 22:37:50 -0500 Received: from mail-qe0-x236.google.com ([2607:f8b0:400d:c02::236]:62374) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VsP00-0001l2-VG for emacs-orgmode@gnu.org; Sun, 15 Dec 2013 22:37:41 -0500 Received: by mail-qe0-f54.google.com with SMTP id cy11so3403202qeb.41 for ; Sun, 15 Dec 2013 19:37:40 -0800 (PST) Received: from localhost (c-68-81-204-26.hsd1.pa.comcast.net. [68.81.204.26]) by mx.google.com with ESMTPSA id g10sm40064297qaf.9.2013.12.15.19.37.37 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 15 Dec 2013 19:37:38 -0800 (PST) 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, 1) In exporting the following org buffer to latex, I get the following stack trace (at end of email because of length): =3D=3D=3D=3D=3D #+options: |:nil | foo | bar | =3D=3D=3D=3D=3D 2) When exporting the following buffer to latex: =3D=3D=3D=3D=3D #+options: ^:nil foo_{*bar*} =3D=3D=3D=3D=3D I get (ignoring document preamble): =3D=3D=3D=3D=3D foo\_\{$\backslash$textbf\{bar\}\} =3D=3D=3D=3D=3D Note the escaping of the backslash and inner pair of braces. I would have expected: =3D=3D=3D=3D=3D foo\_\{\textbf{bar}\} =3D=3D=3D=3D=3D At least (2) is due to the fact that, in the "Uninterpreted element/object" branch of =E2=80=98org-export-data=E2=80=99, the contents o= f the uninterpreted e/o are escaped once by the org-export-data call in the mapconcat, then again at the top-level org-export-data call. I suspect that (1) may be due to the =E2=80=98org-export-expand=E2=80=99 ca= ll in that branch setting the contents of the table to the string result of the mapconcat, where properly the contents should be a tree of table-row and table-cell elements. I tried to fix (2) with the following algorithm: 1. pick a placeholder string (I just used the md5 hash of a gibberish string) 2. (org-export-data (org-export-expand data placeholder)) 3. (replace-regexp-in-string placeholder [result of mapconcat from original code] [result of step 2] 'fixed-case 'literal) The placeholder followed by replacement is designed to ensure that the escaping is applied only once. But this still seemed somewhat fragile, and then I hit (1) and gave up, at least for the night. I suspect that there are likely to be similar issues with all the with-* variants listed in =E2=80=98org-export--interpret-p=E2=80=99; these are just the two= I happened to test. Thanks, Aaron PS this is with latest git master, commit d55f0632 Backtrace: Debugger entered--Lisp error: (wrong-type-argument stringp nil) string-match("^ *" nil) (if (string-match "^ *" (car lines)) (setq indent (make-string (- (match-= end 0) (match-beginning 0)) 32))) (let* ((beg (org-table-begin)) (end (org-table-end)) (linepos (org-curren= t-line)) (colpos (org-table-current-column)) (winstart (window-start)) (win= startline (org-current-line (min winstart (1- (point-max))))) lines (new ""= ) lengths l typenums ty fields maxfields i column (indent "") cnt frac rfmt= hfmt (spaces (quote (1 . 1))) (sp1 (car spaces)) (sp2 (cdr spaces)) (rfmt1= (concat (make-string sp2 32) "%%%s%ds" (make-string sp1 32) "|")) (hfmt1 (= concat (make-string sp2 45) "%s" (make-string sp1 45) "+")) emptystrings li= nks dates emph raise narrow falign falign1 fmax f1 len c e space) (untabify= beg end) (remove-text-properties beg end (quote (org-cwidth t org-dwidth t= display t))) (goto-char beg) (setq links (re-search-forward org-bracket-li= nk-regexp end t)) (goto-char beg) (setq emph (and org-hide-emphasis-markers= (re-search-forward org-emph-re end t))) (goto-char beg) (setq raise (and o= rg-use-sub-superscripts (re-search-forward org-match-substring-regexp end t= ))) (goto-char beg) (setq dates (and org-display-custom-times (re-search-fo= rward org-ts-regexp-both end t))) (if links (progn (goto-char beg) (while (= org-activate-bracket-links end)))) (if dates (progn (goto-char beg) (while = (org-activate-dates end)))) (if emph (progn (goto-char beg) (while (org-do-= emphasis-faces end)))) (if raise (progn (goto-char beg) (while (org-raise-s= cripts end)))) (goto-char beg) (setq narrow (and org-table-do-narrow org-fo= rmat-transports-properties-p (re-search-forward "<[lrc]?[0-9]+>" end t))) (= goto-char beg) (setq falign (re-search-forward "<[lrc][0-9]*>" end t)) (got= o-char beg) (setq lines (org-split-string (buffer-substring beg end) "\n"))= (if (string-match "^ *" (car lines)) (setq indent (make-string (- (match-e= nd 0) (match-beginning 0)) 32))) (setq lines (mapcar (function (lambda (l) = (if (string-match "^ *|-" l) nil (if (string-match "[ ]+$" l) (substring l= 0 ...) l)))) lines)) (setq fields (mapcar (function (lambda (l) (org-split= -string l " *| *"))) (delq nil (copy-sequence lines)))) (condition-case nil= (setq maxfields (apply (quote max) (mapcar (quote length) fields))) (error= (kill-region beg end) (org-table-create org-table-default-size) (user-erro= r "Empty table - created default table"))) (setq emptystrings (make-list ma= xfields "")) (setq i -1) (while (< (setq i (1+ i)) maxfields) (setq column = (mapcar (function (lambda (x) (or (nth i x) ""))) fields)) (setq fmax nil) = (if (or narrow falign) (progn (setq c column fmax nil falign1 nil) (while c= (setq e (car-safe (prog1 c ...))) (if (and (stringp e) (string-match "^<\\= ([lrc]\\)?\\([0-9]+\\)?>$" e)) (progn (if ... ...) (if ... ...)))) (if fmax= (progn (let* (... ...) (while ... ... ... ...) nil))))) (setq lengths (con= s (apply (quote max) (or fmax 1) 1 (mapcar (quote org-string-width) column)= ) lengths)) (if falign1 (setq typenums (cons (equal (downcase falign1) "r")= typenums)) (setq cnt 0 frac 0.0) (let* ((--cl-var-- column) (x nil)) (whil= e (consp --cl-var--) (setq x (car --cl-var--)) (if (equal x "") nil (setq f= rac (/ ... ...))) (setq --cl-var-- (cdr --cl-var--))) nil) (setq typenums (= cons (>=3D frac org-table-number-fraction) typenums)))) (setq lengths (nrev= erse lengths) typenums (nreverse typenums)) (setq org-table-last-alignment = typenums org-table-last-column-widths lengths) (if (or links emph raise) (p= rogn (let* ((i 0) (--cl-var-- (1- maxfields))) (while (<=3D i --cl-var--) (= setq len (nth i lengths)) (let* ((j 0) (--cl-var-- ...)) (while (<=3D j --c= l-var--) (setq c ...) (if ... ...) (setq j ...)) nil) (setq i (+ i 1))) nil= ))) (setq rfmt (concat indent "|") hfmt (concat indent "|")) (while (setq l= (car-safe (prog1 lengths (setq lengths (cdr lengths))))) (setq ty (if (car= -safe (prog1 typenums (setq typenums (cdr typenums)))) "" "-")) (setq rfmt = (concat rfmt (format rfmt1 ty l)) hfmt (concat hfmt (format hfmt1 (make-str= ing l 45))))) (setq rfmt (concat rfmt "\n") hfmt (concat (substring hfmt 0 = -1) "|\n")) (setq new (mapconcat (function (lambda (l) (if l (apply (quote = format) rfmt (append ... emptystrings)) hfmt))) lines "")) (move-marker org= -table-aligned-begin-marker (point)) (insert new) (delete-region (point) en= d) (move-marker end nil) (move-marker org-table-aligned-end-marker (point))= (if (and orgtbl-mode (not (derived-mode-p (quote org-mode)))) (progn (goto= -char org-table-aligned-begin-marker) (while (org-hide-wide-columns org-tab= le-aligned-end-marker)))) (org-goto-line winstartline) (setq winstart (poin= t-at-bol)) (org-goto-line linepos) (if (eq (window-buffer (selected-window)= ) (current-buffer)) (progn (set-window-start (selected-window) winstart (qu= ote noforce)))) (org-table-goto-column colpos) (and org-table-overlay-coord= inates (org-table-overlay-coordinates)) (setq org-table-may-need-update nil= )) org-table-align() (progn (insert contents) (org-table-align) (buffer-string)) (unwind-protect (progn (insert contents) (org-table-align) (buffer-string= )) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (ins= ert contents) (org-table-align) (buffer-string)) (and (buffer-name temp-buf= fer) (kill-buffer temp-buffer)))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer= (set-buffer temp-buffer) (unwind-protect (progn (insert contents) (org-tab= le-align) (buffer-string)) (and (buffer-name temp-buffer) (kill-buffer temp= -buffer))))) (concat (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-curren= t-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert contents) = (org-table-align) (buffer-string)) (and (buffer-name temp-buffer) (kill-buf= fer temp-buffer))))) (mapconcat (function (lambda (fm) (concat "#+TBLFM: " = fm))) (reverse (org-element-property :tblfm table)) "\n")) (if (eq (org-element-property :type table) (quote table\.el)) (org-remove= -indentation (org-element-property :value table)) (concat (let ((temp-buffe= r (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-b= uffer) (unwind-protect (progn (insert contents) (org-table-align) (buffer-s= tring)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (mapco= ncat (function (lambda (fm) (concat "#+TBLFM: " fm))) (reverse (org-element= -property :tblfm table)) "\n"))) org-element-table-interpreter((table (:begin 19 :end 35 :type org :tblfm = nil :contents-begin 19 :contents-end 35 :value nil :post-blank 0 :post-affi= liated 19 :parent (section (:begin 1 :end 35 :contents-begin 1 :contents-en= d 35 :post-blank 0 :parent (org-data nil #2)) (keyword (:key "OPTIONS" :val= ue "|:nil" :begin 1 :end 19 :post-blank 1 :post-affiliated 1 :parent #2)) #= 0)) (table-row (:type standard :begin 19 :end 35 :contents-begin 20 :conten= ts-end 34 :post-blank 0 :parent #0) (table-cell (:begin 20 :end 26 :content= s-begin 21 :contents-end 24 :post-blank 0 :parent #1) #("foo" 0 3 (:parent = #2))) (table-cell (:begin 26 :end 34 :contents-begin 27 :contents-end 32 :p= ost-blank 0 :parent #1) (bold (:begin 27 :end 32 :contents-begin 28 :conten= ts-end 31 :post-blank 0 :parent #2) #("bar" 0 3 (:parent #3)))))) #("foo & = \\textbf{bar}\\\\\n" 0 3 (:parent (table-cell (:begin 20 :end 26 :contents-= begin 21 :contents-end 24 :post-blank 0 :parent (table-row (:type standard = :begin 19 :end 35 :contents-begin 20 :contents-end 34 :post-blank 0 :parent= (table (:begin 19 :end 35 :type org :tblfm nil :contents-begin 19 :content= s-end 35 :value nil :post-blank 0 :post-affiliated 19 :parent ...) #4)) #2 = (table-cell (:begin 26 :end 34 :contents-begin 27 :contents-end 32 :post-bl= ank 0 :parent #4) (bold (:begin 27 :end 32 :contents-begin 28 :contents-end= 31 :post-blank 0 :parent #5) #("bar" 0 3 ...))))) #("foo" 0 3 (:parent #2)= ))) 14 17 (:parent (bold (:begin 27 :end 32 :contents-begin 28 :contents-en= d 31 :post-blank 0 :parent (table-cell (:begin 26 :end 34 :contents-begin 2= 7 :contents-end 32 :post-blank 0 :parent (table-row (:type standard :begin = 19 :end 35 :contents-begin 20 :contents-end 34 :post-blank 0 :parent ...) (= table-cell ... #("foo" 0 3 ...)) #4)) #2)) #("bar" 0 3 (:parent #2)))))) funcall(org-element-table-interpreter (table (:begin 19 :end 35 :type org= :tblfm nil :contents-begin 19 :contents-end 35 :value nil :post-blank 0 :p= ost-affiliated 19 :parent (section (:begin 1 :end 35 :contents-begin 1 :con= tents-end 35 :post-blank 0 :parent (org-data nil #2)) (keyword (:key "OPTIO= NS" :value "|:nil" :begin 1 :end 19 :post-blank 1 :post-affiliated 1 :paren= t #2)) #0)) (table-row (:type standard :begin 19 :end 35 :contents-begin 20= :contents-end 34 :post-blank 0 :parent #0) (table-cell (:begin 20 :end 26 = :contents-begin 21 :contents-end 24 :post-blank 0 :parent #1) #("foo" 0 3 (= :parent #2))) (table-cell (:begin 26 :end 34 :contents-begin 27 :contents-e= nd 32 :post-blank 0 :parent #1) (bold (:begin 27 :end 32 :contents-begin 28= :contents-end 31 :post-blank 0 :parent #2) #("bar" 0 3 (:parent #3)))))) #= ("foo & \\textbf{bar}\\\\\n" 0 3 (:parent (table-cell (:begin 20 :end 26 :c= ontents-begin 21 :contents-end 24 :post-blank 0 :parent (table-row (:type s= tandard :begin 19 :end 35 :contents-begin 20 :contents-end 34 :post-blank 0= :parent (table (:begin 19 :end 35 :type org :tblfm nil :contents-begin 19 = :contents-end 35 :value nil :post-blank 0 :post-affiliated 19 :parent ...) = #4)) #2 (table-cell (:begin 26 :end 34 :contents-begin 27 :contents-end 32 = :post-blank 0 :parent #4) (bold (:begin 27 :end 32 :contents-begin 28 :cont= ents-end 31 :post-blank 0 :parent #5) #("bar" 0 3 ...))))) #("foo" 0 3 (:pa= rent #2)))) 14 17 (:parent (bold (:begin 27 :end 32 :contents-begin 28 :con= tents-end 31 :post-blank 0 :parent (table-cell (:begin 26 :end 34 :contents= -begin 27 :contents-end 32 :post-blank 0 :parent (table-row (:type standard= :begin 19 :end 35 :contents-begin 20 :contents-end 34 :post-blank 0 :paren= t ...) (table-cell ... #("foo" 0 3 ...)) #4)) #2)) #("bar" 0 3 (:parent #2)= ))))) (concat (and with-affiliated (memq type org-element-all-elements) (org-el= ement--interpret-affiliated-keywords blob)) (funcall (intern (format "org-e= lement-%s-interpreter" type)) blob contents)) (let ((type (org-element-type blob))) (concat (and with-affiliated (memq = type org-element-all-elements) (org-element--interpret-affiliated-keywords = blob)) (funcall (intern (format "org-element-%s-interpreter" type)) blob co= ntents))) org-export-expand((table (:begin 19 :end 35 :type org :tblfm nil :content= s-begin 19 :contents-end 35 :value nil :post-blank 0 :post-affiliated 19 :p= arent (section (:begin 1 :end 35 :contents-begin 1 :contents-end 35 :post-b= lank 0 :parent (org-data nil #2)) (keyword (:key "OPTIONS" :value "|:nil" := begin 1 :end 19 :post-blank 1 :post-affiliated 1 :parent #2)) #0)) (table-r= ow (:type standard :begin 19 :end 35 :contents-begin 20 :contents-end 34 :p= ost-blank 0 :parent #0) (table-cell (:begin 20 :end 26 :contents-begin 21 := contents-end 24 :post-blank 0 :parent #1) #("foo" 0 3 (:parent #2))) (table= -cell (:begin 26 :end 34 :contents-begin 27 :contents-end 32 :post-blank 0 = :parent #1) (bold (:begin 27 :end 32 :contents-begin 28 :contents-end 31 :p= ost-blank 0 :parent #2) #("bar" 0 3 (:parent #3)))))) #("foo & \\textbf{bar= }\\\\\n" 0 3 (:parent (table-cell (:begin 20 :end 26 :contents-begin 21 :co= ntents-end 24 :post-blank 0 :parent (table-row (:type standard :begin 19 :e= nd 35 :contents-begin 20 :contents-end 34 :post-blank 0 :parent (table (:be= gin 19 :end 35 :type org :tblfm nil :contents-begin 19 :contents-end 35 :va= lue nil :post-blank 0 :post-affiliated 19 :parent ...) #4)) #2 (table-cell = (:begin 26 :end 34 :contents-begin 27 :contents-end 32 :post-blank 0 :paren= t #4) (bold (:begin 27 :end 32 :contents-begin 28 :contents-end 31 :post-bl= ank 0 :parent #5) #("bar" 0 3 ...))))) #("foo" 0 3 (:parent #2)))) 14 17 (:= parent (bold (:begin 27 :end 32 :contents-begin 28 :contents-end 31 :post-b= lank 0 :parent (table-cell (:begin 26 :end 34 :contents-begin 27 :contents-= end 32 :post-blank 0 :parent (table-row (:type standard :begin 19 :end 35 := contents-begin 20 :contents-end 34 :post-blank 0 :parent ...) (table-cell .= .. #("foo" 0 3 ...)) #4)) #2)) #("bar" 0 3 (:parent #2)))))) (org-export-data (org-export-expand data (mapconcat (function (lambda (bl= ob) (org-export-data blob info))) (org-element-contents data) "")) info) (cond ((memq data (plist-get info :ignore-list)) nil) ((eq type (quote pl= ain-text)) (org-export-filter-apply-functions (plist-get info :filter-plain= -text) (let ((transcoder (org-export-transcoder data info))) (if transcoder= (funcall transcoder data info) data)) info)) ((not (org-export--interpret-= p data info)) (org-export-data (org-export-expand data (mapconcat (function= (lambda (blob) (org-export-data blob info))) (org-element-contents data) "= ")) info)) ((not type) (mapconcat (function (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-property :archivedp data))) (let ((transcoder (org-export-t= ranscoder data info))) (or (and (functionp transcoder) (funcall transcoder = data nil info)) (and (eq type (quote export-snippet)) "")))) (t (let ((tran= scoder (org-export-transcoder data info))) (if transcoder (progn (let* ((gr= eaterp ...) (objectp ...) (contents ...)) (funcall transcoder data (if ... = contents ...) info))))))) (let* ((type (org-element-type data)) (results (cond ((memq data (plist-g= et info :ignore-list)) nil) ((eq type (quote plain-text)) (org-export-filte= r-apply-functions (plist-get info :filter-plain-text) (let (...) (if transc= oder ... data)) info)) ((not (org-export--interpret-p data info)) (org-expo= rt-data (org-export-expand data (mapconcat ... ... "")) info)) ((not type) = (mapconcat (function (lambda ... ...)) data "")) ((or (not (org-element-con= tents data)) (and (eq type ...) (eq ... ...) (org-element-property :archive= dp data))) (let ((transcoder ...)) (or (and ... ...) (and ... "")))) (t (le= t ((transcoder ...)) (if transcoder (progn ...))))))) (puthash data (cond (= (not results) nil) ((memq type (quote (org-data plain-text nil))) results) = (t (let ((results (org-export-filter-apply-functions ... ... info))) result= s))) (plist-get info :exported-data))) (if (not (eq memo (quote no-memo))) memo (let* ((type (org-element-type d= ata)) (results (cond ((memq data (plist-get info :ignore-list)) nil) ((eq t= ype (quote plain-text)) (org-export-filter-apply-functions (plist-get info = :filter-plain-text) (let ... ...) info)) ((not (org-export--interpret-p dat= a info)) (org-export-data (org-export-expand data ...) info)) ((not type) (= mapconcat (function ...) data "")) ((or (not ...) (and ... ... ...)) (let (= ...) (or ... ...))) (t (let (...) (if transcoder ...)))))) (puthash data (c= ond ((not results) nil) ((memq type (quote (org-data plain-text nil))) resu= lts) (t (let ((results ...)) results))) (plist-get info :exported-data)))) (let ((memo (gethash data (plist-get info :exported-data) (quote no-memo)= ))) (if (not (eq memo (quote no-memo))) memo (let* ((type (org-element-type= data)) (results (cond ((memq data ...) nil) ((eq type ...) (org-export-fil= ter-apply-functions ... ... info)) ((not ...) (org-export-data ... info)) (= (not type) (mapconcat ... data "")) ((or ... ...) (let ... ...)) (t (let ..= . ...))))) (puthash data (cond ((not results) nil) ((memq type (quote ...))= results) (t (let (...) results))) (plist-get info :exported-data))))) org-export-data((table (:begin 19 :end 35 :type org :tblfm nil :contents-= begin 19 :contents-end 35 :value nil :post-blank 0 :post-affiliated 19 :par= ent (section (:begin 1 :end 35 :contents-begin 1 :contents-end 35 :post-bla= nk 0 :parent (org-data nil #2)) (keyword (:key "OPTIONS" :value "|:nil" :be= gin 1 :end 19 :post-blank 1 :post-affiliated 1 :parent #2)) #0)) (table-row= (:type standard :begin 19 :end 35 :contents-begin 20 :contents-end 34 :pos= t-blank 0 :parent #0) (table-cell (:begin 20 :end 26 :contents-begin 21 :co= ntents-end 24 :post-blank 0 :parent #1) #("foo" 0 3 (:parent #2))) (table-c= ell (:begin 26 :end 34 :contents-begin 27 :contents-end 32 :post-blank 0 :p= arent #1) (bold (:begin 27 :end 32 :contents-begin 28 :contents-end 31 :pos= t-blank 0 :parent #2) #("bar" 0 3 (:parent #3)))))) (:export-options nil :i= nput-buffer "test-subscript.org" :input-file "/home/aecay/org-test-files/te= st-subscript.org" :title "test-subscript" :latex-class "article" :latex-hyp= erref-p t :date ((latex-fragment (:value "\\today" :begin 1 :end 7 :post-bl= ank 0 :parent #1))) :author nil :creator "Emacs 24.3.50.1 (Org mode 8.2.1)"= :email "aecay@haize" :exclude-tags ("noexport") :headline-levels 3 :langua= ge "en" :preserve-breaks nil :section-numbers t :select-tags ("export") :ti= me-stamp-file t :with-archived-trees headline :with-author t :with-clocks n= il :with-creator comment :with-date t :with-drawers (not "LOGBOOK") :with-e= mail nil :with-emphasize t ...)) (lambda (element) (org-export-data element info))((table (:begin 19 :end = 35 :type org :tblfm nil :contents-begin 19 :contents-end 35 :value nil :pos= t-blank 0 :post-affiliated 19 :parent (section (:begin 1 :end 35 :contents-= begin 1 :contents-end 35 :post-blank 0 :parent (org-data nil #2)) (keyword = (:key "OPTIONS" :value "|:nil" :begin 1 :end 19 :post-blank 1 :post-affilia= ted 1 :parent #2)) #0)) (table-row (:type standard :begin 19 :end 35 :conte= nts-begin 20 :contents-end 34 :post-blank 0 :parent #0) (table-cell (:begin= 20 :end 26 :contents-begin 21 :contents-end 24 :post-blank 0 :parent #1) #= ("foo" 0 3 (:parent #2))) (table-cell (:begin 26 :end 34 :contents-begin 27= :contents-end 32 :post-blank 0 :parent #1) (bold (:begin 27 :end 32 :conte= nts-begin 28 :contents-end 31 :post-blank 0 :parent #2) #("bar" 0 3 (:paren= t #3))))))) mapconcat((lambda (element) (org-export-data element info)) ((keyword (:k= ey "OPTIONS" :value "|:nil" :begin 1 :end 19 :post-blank 1 :post-affiliated= 1 :parent (section (:begin 1 :end 35 :contents-begin 1 :contents-end 35 :p= ost-blank 0 :parent (org-data nil #3)) #1 (table (:begin 19 :end 35 :type o= rg :tblfm nil :contents-begin 19 :contents-end 35 :value nil :post-blank 0 = :post-affiliated 19 :parent #3) (table-row (:type standard :begin 19 :end 3= 5 :contents-begin 20 :contents-end 34 :post-blank 0 :parent #4) (table-cell= (:begin 20 :end 26 :contents-begin 21 :contents-end 24 :post-blank 0 :pare= nt #5) #("foo" 0 3 ...)) (table-cell (:begin 26 :end 34 :contents-begin 27 = :contents-end 32 :post-blank 0 :parent #5) (bold ... #("bar" 0 3 ...)))))))= ) (table (:begin 19 :end 35 :type org :tblfm nil :contents-begin 19 :conten= ts-end 35 :value nil :post-blank 0 :post-affiliated 19 :parent (section (:b= egin 1 :end 35 :contents-begin 1 :contents-end 35 :post-blank 0 :parent (or= g-data nil #3)) (keyword (:key "OPTIONS" :value "|:nil" :begin 1 :end 19 :p= ost-blank 1 :post-affiliated 1 :parent #3)) #1)) (table-row (:type standard= :begin 19 :end 35 :contents-begin 20 :contents-end 34 :post-blank 0 :paren= t #1) (table-cell (:begin 20 :end 26 :contents-begin 21 :contents-end 24 :p= ost-blank 0 :parent #2) #("foo" 0 3 (:parent #3))) (table-cell (:begin 26 := end 34 :contents-begin 27 :contents-end 32 :post-blank 0 :parent #2) (bold = (:begin 27 :end 32 :contents-begin 28 :contents-end 31 :post-blank 0 :paren= t #3) #("bar" 0 3 (:parent #4))))))) "") (let* ((greaterp (memq type org-element-greater-elements)) (objectp (and = (not greaterp) (memq type org-element-recursive-objects))) (contents (mapco= ncat (function (lambda (element) (org-export-data element info))) (org-elem= ent-contents (if (or greaterp objectp) data (org-element-normalize-contents= data (if ... ...)))) ""))) (funcall transcoder data (if (not greaterp) con= tents (org-element-normalize-string contents)) info)) (progn (let* ((greaterp (memq type org-element-greater-elements)) (object= p (and (not greaterp) (memq type org-element-recursive-objects))) (contents= (mapconcat (function (lambda (element) (org-export-data element info))) (o= rg-element-contents (if (or greaterp objectp) data (org-element-normalize-c= ontents data ...))) ""))) (funcall transcoder data (if (not greaterp) conte= nts (org-element-normalize-string 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 (function (lambda ... ...)) (org-element-content= s (if ... data ...)) ""))) (funcall transcoder data (if (not greaterp) cont= ents (org-element-normalize-string contents)) info)))) (let ((transcoder (org-export-transcoder data info))) (if transcoder (pro= gn (let* ((greaterp (memq type org-element-greater-elements)) (objectp (and= (not greaterp) (memq type org-element-recursive-objects))) (contents (mapc= oncat (function ...) (org-element-contents ...) ""))) (funcall transcoder d= ata (if (not greaterp) contents (org-element-normalize-string contents)) in= fo))))) (cond ((memq data (plist-get info :ignore-list)) nil) ((eq type (quote pl= ain-text)) (org-export-filter-apply-functions (plist-get info :filter-plain= -text) (let ((transcoder (org-export-transcoder data info))) (if transcoder= (funcall transcoder data info) data)) info)) ((not (org-export--interpret-= p data info)) (org-export-data (org-export-expand data (mapconcat (function= (lambda (blob) (org-export-data blob info))) (org-element-contents data) "= ")) info)) ((not type) (mapconcat (function (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-property :archivedp data))) (let ((transcoder (org-export-t= ranscoder data info))) (or (and (functionp transcoder) (funcall transcoder = data nil info)) (and (eq type (quote export-snippet)) "")))) (t (let ((tran= scoder (org-export-transcoder data info))) (if transcoder (progn (let* ((gr= eaterp ...) (objectp ...) (contents ...)) (funcall transcoder data (if ... = contents ...) info))))))) (let* ((type (org-element-type data)) (results (cond ((memq data (plist-g= et info :ignore-list)) nil) ((eq type (quote plain-text)) (org-export-filte= r-apply-functions (plist-get info :filter-plain-text) (let (...) (if transc= oder ... data)) info)) ((not (org-export--interpret-p data info)) (org-expo= rt-data (org-export-expand data (mapconcat ... ... "")) info)) ((not type) = (mapconcat (function (lambda ... ...)) data "")) ((or (not (org-element-con= tents data)) (and (eq type ...) (eq ... ...) (org-element-property :archive= dp data))) (let ((transcoder ...)) (or (and ... ...) (and ... "")))) (t (le= t ((transcoder ...)) (if transcoder (progn ...))))))) (puthash data (cond (= (not results) nil) ((memq type (quote (org-data plain-text nil))) results) = (t (let ((results (org-export-filter-apply-functions ... ... info))) result= s))) (plist-get info :exported-data))) (if (not (eq memo (quote no-memo))) memo (let* ((type (org-element-type d= ata)) (results (cond ((memq data (plist-get info :ignore-list)) nil) ((eq t= ype (quote plain-text)) (org-export-filter-apply-functions (plist-get info = :filter-plain-text) (let ... ...) info)) ((not (org-export--interpret-p dat= a info)) (org-export-data (org-export-expand data ...) info)) ((not type) (= mapconcat (function ...) data "")) ((or (not ...) (and ... ... ...)) (let (= ...) (or ... ...))) (t (let (...) (if transcoder ...)))))) (puthash data (c= ond ((not results) nil) ((memq type (quote (org-data plain-text nil))) resu= lts) (t (let ((results ...)) results))) (plist-get info :exported-data)))) (let ((memo (gethash data (plist-get info :exported-data) (quote no-memo)= ))) (if (not (eq memo (quote no-memo))) memo (let* ((type (org-element-type= data)) (results (cond ((memq data ...) nil) ((eq type ...) (org-export-fil= ter-apply-functions ... ... info)) ((not ...) (org-export-data ... info)) (= (not type) (mapconcat ... data "")) ((or ... ...) (let ... ...)) (t (let ..= . ...))))) (puthash data (cond ((not results) nil) ((memq type (quote ...))= results) (t (let (...) results))) (plist-get info :exported-data))))) org-export-data((section (:begin 1 :end 35 :contents-begin 1 :contents-en= d 35 :post-blank 0 :parent (org-data nil #0)) (keyword (:key "OPTIONS" :val= ue "|:nil" :begin 1 :end 19 :post-blank 1 :post-affiliated 1 :parent #0)) (= table (:begin 19 :end 35 :type org :tblfm nil :contents-begin 19 :contents-= end 35 :value nil :post-blank 0 :post-affiliated 19 :parent #0) (table-row = (:type standard :begin 19 :end 35 :contents-begin 20 :contents-end 34 :post= -blank 0 :parent #1) (table-cell (:begin 20 :end 26 :contents-begin 21 :con= tents-end 24 :post-blank 0 :parent #2) #("foo" 0 3 (:parent #3))) (table-ce= ll (:begin 26 :end 34 :contents-begin 27 :contents-end 32 :post-blank 0 :pa= rent #2) (bold (:begin 27 :end 32 :contents-begin 28 :contents-end 31 :post= -blank 0 :parent #3) #("bar" 0 3 (:parent #4))))))) (:export-options nil :i= nput-buffer "test-subscript.org" :input-file "/home/aecay/org-test-files/te= st-subscript.org" :title "test-subscript" :latex-class "article" :latex-hyp= erref-p t :date ((latex-fragment (:value "\\today" :begin 1 :end 7 :post-bl= ank 0 :parent #1))) :author nil :creator "Emacs 24.3.50.1 (Org mode 8.2.1)"= :email "aecay@haize" :exclude-tags ("noexport") :headline-levels 3 :langua= ge "en" :preserve-breaks nil :section-numbers t :select-tags ("export") :ti= me-stamp-file t :with-archived-trees headline :with-author t :with-clocks n= il :with-creator comment :with-date t :with-drawers (not "LOGBOOK") :with-e= mail nil :with-emphasize t ...)) (lambda (element) (org-export-data element info))((section (:begin 1 :end= 35 :contents-begin 1 :contents-end 35 :post-blank 0 :parent (org-data nil = #0)) (keyword (:key "OPTIONS" :value "|:nil" :begin 1 :end 19 :post-blank 1= :post-affiliated 1 :parent #0)) (table (:begin 19 :end 35 :type org :tblfm= nil :contents-begin 19 :contents-end 35 :value nil :post-blank 0 :post-aff= iliated 19 :parent #0) (table-row (:type standard :begin 19 :end 35 :conten= ts-begin 20 :contents-end 34 :post-blank 0 :parent #1) (table-cell (:begin = 20 :end 26 :contents-begin 21 :contents-end 24 :post-blank 0 :parent #2) #(= "foo" 0 3 (:parent #3))) (table-cell (:begin 26 :end 34 :contents-begin 27 = :contents-end 32 :post-blank 0 :parent #2) (bold (:begin 27 :end 32 :conten= ts-begin 28 :contents-end 31 :post-blank 0 :parent #3) #("bar" 0 3 (:parent= #4)))))))) mapconcat((lambda (element) (org-export-data element info)) ((section (:b= egin 1 :end 35 :contents-begin 1 :contents-end 35 :post-blank 0 :parent (or= g-data nil #1)) (keyword (:key "OPTIONS" :value "|:nil" :begin 1 :end 19 :p= ost-blank 1 :post-affiliated 1 :parent #1)) (table (:begin 19 :end 35 :type= org :tblfm nil :contents-begin 19 :contents-end 35 :value nil :post-blank = 0 :post-affiliated 19 :parent #1) (table-row (:type standard :begin 19 :end= 35 :contents-begin 20 :contents-end 34 :post-blank 0 :parent #2) (table-ce= ll (:begin 20 :end 26 :contents-begin 21 :contents-end 24 :post-blank 0 :pa= rent #3) #("foo" 0 3 (:parent #4))) (table-cell (:begin 26 :end 34 :content= s-begin 27 :contents-end 32 :post-blank 0 :parent #3) (bold (:begin 27 :end= 32 :contents-begin 28 :contents-end 31 :post-blank 0 :parent #4) #("bar" 0= 3 (:parent #5)))))))) "") (let* ((greaterp (memq type org-element-greater-elements)) (objectp (and = (not greaterp) (memq type org-element-recursive-objects))) (contents (mapco= ncat (function (lambda (element) (org-export-data element info))) (org-elem= ent-contents (if (or greaterp objectp) data (org-element-normalize-contents= data (if ... ...)))) ""))) (funcall transcoder data (if (not greaterp) con= tents (org-element-normalize-string contents)) info)) (progn (let* ((greaterp (memq type org-element-greater-elements)) (object= p (and (not greaterp) (memq type org-element-recursive-objects))) (contents= (mapconcat (function (lambda (element) (org-export-data element info))) (o= rg-element-contents (if (or greaterp objectp) data (org-element-normalize-c= ontents data ...))) ""))) (funcall transcoder data (if (not greaterp) conte= nts (org-element-normalize-string 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 (function (lambda ... ...)) (org-element-content= s (if ... data ...)) ""))) (funcall transcoder data (if (not greaterp) cont= ents (org-element-normalize-string contents)) info)))) (let ((transcoder (org-export-transcoder data info))) (if transcoder (pro= gn (let* ((greaterp (memq type org-element-greater-elements)) (objectp (and= (not greaterp) (memq type org-element-recursive-objects))) (contents (mapc= oncat (function ...) (org-element-contents ...) ""))) (funcall transcoder d= ata (if (not greaterp) contents (org-element-normalize-string contents)) in= fo))))) (cond ((memq data (plist-get info :ignore-list)) nil) ((eq type (quote pl= ain-text)) (org-export-filter-apply-functions (plist-get info :filter-plain= -text) (let ((transcoder (org-export-transcoder data info))) (if transcoder= (funcall transcoder data info) data)) info)) ((not (org-export--interpret-= p data info)) (org-export-data (org-export-expand data (mapconcat (function= (lambda (blob) (org-export-data blob info))) (org-element-contents data) "= ")) info)) ((not type) (mapconcat (function (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-property :archivedp data))) (let ((transcoder (org-export-t= ranscoder data info))) (or (and (functionp transcoder) (funcall transcoder = data nil info)) (and (eq type (quote export-snippet)) "")))) (t (let ((tran= scoder (org-export-transcoder data info))) (if transcoder (progn (let* ((gr= eaterp ...) (objectp ...) (contents ...)) (funcall transcoder data (if ... = contents ...) info))))))) (let* ((type (org-element-type data)) (results (cond ((memq data (plist-g= et info :ignore-list)) nil) ((eq type (quote plain-text)) (org-export-filte= r-apply-functions (plist-get info :filter-plain-text) (let (...) (if transc= oder ... data)) info)) ((not (org-export--interpret-p data info)) (org-expo= rt-data (org-export-expand data (mapconcat ... ... "")) info)) ((not type) = (mapconcat (function (lambda ... ...)) data "")) ((or (not (org-element-con= tents data)) (and (eq type ...) (eq ... ...) (org-element-property :archive= dp data))) (let ((transcoder ...)) (or (and ... ...) (and ... "")))) (t (le= t ((transcoder ...)) (if transcoder (progn ...))))))) (puthash data (cond (= (not results) nil) ((memq type (quote (org-data plain-text nil))) results) = (t (let ((results (org-export-filter-apply-functions ... ... info))) result= s))) (plist-get info :exported-data))) (if (not (eq memo (quote no-memo))) memo (let* ((type (org-element-type d= ata)) (results (cond ((memq data (plist-get info :ignore-list)) nil) ((eq t= ype (quote plain-text)) (org-export-filter-apply-functions (plist-get info = :filter-plain-text) (let ... ...) info)) ((not (org-export--interpret-p dat= a info)) (org-export-data (org-export-expand data ...) info)) ((not type) (= mapconcat (function ...) data "")) ((or (not ...) (and ... ... ...)) (let (= ...) (or ... ...))) (t (let (...) (if transcoder ...)))))) (puthash data (c= ond ((not results) nil) ((memq type (quote (org-data plain-text nil))) resu= lts) (t (let ((results ...)) results))) (plist-get info :exported-data)))) (let ((memo (gethash data (plist-get info :exported-data) (quote no-memo)= ))) (if (not (eq memo (quote no-memo))) memo (let* ((type (org-element-type= data)) (results (cond ((memq data ...) nil) ((eq type ...) (org-export-fil= ter-apply-functions ... ... info)) ((not ...) (org-export-data ... info)) (= (not type) (mapconcat ... data "")) ((or ... ...) (let ... ...)) (t (let ..= . ...))))) (puthash data (cond ((not results) nil) ((memq type (quote ...))= results) (t (let (...) results))) (plist-get info :exported-data))))) org-export-data((org-data nil (section (:begin 1 :end 35 :contents-begin = 1 :contents-end 35 :post-blank 0 :parent #0) (keyword (:key "OPTIONS" :valu= e "|:nil" :begin 1 :end 19 :post-blank 1 :post-affiliated 1 :parent #1)) (t= able (:begin 19 :end 35 :type org :tblfm nil :contents-begin 19 :contents-e= nd 35 :value nil :post-blank 0 :post-affiliated 19 :parent #1) (table-row (= :type standard :begin 19 :end 35 :contents-begin 20 :contents-end 34 :post-= blank 0 :parent #2) (table-cell (:begin 20 :end 26 :contents-begin 21 :cont= ents-end 24 :post-blank 0 :parent #3) #("foo" 0 3 (:parent #4))) (table-cel= l (:begin 26 :end 34 :contents-begin 27 :contents-end 32 :post-blank 0 :par= ent #3) (bold (:begin 27 :end 32 :contents-begin 28 :contents-end 31 :post-= blank 0 :parent #4) #("bar" 0 3 (:parent #5)))))))) (:export-options nil :i= nput-buffer "test-subscript.org" :input-file "/home/aecay/org-test-files/te= st-subscript.org" :title "test-subscript" :latex-class "article" :latex-hyp= erref-p t :date ((latex-fragment (:value "\\today" :begin 1 :end 7 :post-bl= ank 0 :parent #1))) :author nil :creator "Emacs 24.3.50.1 (Org mode 8.2.1)"= :email "aecay@haize" :exclude-tags ("noexport") :headline-levels 3 :langua= ge "en" :preserve-breaks nil :section-numbers t :select-tags ("export") :ti= me-stamp-file t :with-archived-trees headline :with-author t :with-clocks n= il :with-creator comment :with-date t :with-drawers (not "LOGBOOK") :with-e= mail nil :with-emphasize t ...)) (or (org-export-data tree info) "") (org-element-normalize-string (or (org-export-data tree info) "")) (let* ((body (org-element-normalize-string (or (org-export-data tree info= ) ""))) (inner-template (cdr (assq (quote inner-template) (plist-get info := translate-alist)))) (full-body (if (not (functionp inner-template)) body (f= uncall inner-template body info))) (template (cdr (assq (quote template) (p= list-get info :translate-alist))))) (org-no-properties (org-export-filter-a= pply-functions (plist-get info :filter-final-output) (if (or (not (function= p template)) body-only) full-body (funcall template full-body info)) info))) (progn (run-hook-with-args (quote org-export-before-processing-hook) (pro= gn (or (and (vectorp backend) (>=3D (length backend) 8) (memq (aref backend= 0) cl-struct-org-export-backend-tags)) (error "%s accessing a non-%s" (quo= te org-export-backend-name) (quote org-export-backend))) (aref backend 1)))= (org-export-expand-include-keyword) (org-macro-initialize-templates) (org-= macro-replace-all org-macro-templates) (org-export-execute-babel-code) (org= -update-radio-target-regexp) (goto-char (point-min)) (save-excursion (run-h= ook-with-args (quote org-export-before-parsing-hook) (progn (or (and (vecto= rp backend) (>=3D (length backend) 8) (memq (aref backend 0) cl-struct-org-= export-backend-tags)) (error "%s accessing a non-%s" (quote org-export-back= end-name) (quote org-export-backend))) (aref backend 1)))) (setq info (org-= export-install-filters (org-combine-plists info (org-export-get-environment= backend subtreep ext-plist)))) (org-macro-replace-all (list (cons "author"= (org-element-interpret-data (plist-get info :author))) (cons "date" (org-e= lement-interpret-data (plist-get info :date))) (cons "email" (or (plist-get= info :email) "")) (cons "title" (org-element-interpret-data (plist-get inf= o :title))))) (let ((backend-name (progn (or (and (vectorp backend) (>=3D .= .. 8) (memq ... cl-struct-org-export-backend-tags)) (error "%s accessing a = non-%s" (quote org-export-backend-name) (quote org-export-backend))) (aref = backend 1)))) (let ((--dolist-tail-- (plist-get info :filter-options)) filt= er) (while --dolist-tail-- (setq filter (car --dolist-tail--)) (let ((resul= t (funcall filter info backend-name))) (if result (progn (setq info result)= ))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (setq tree (org-export-= filter-apply-functions (plist-get info :filter-parse-tree) (org-element-par= se-buffer nil visible-only) info)) (setq info (org-combine-plists info (org= -export-collect-tree-properties tree info))) (let* ((body (org-element-norm= alize-string (or (org-export-data tree info) ""))) (inner-template (cdr (as= sq (quote inner-template) (plist-get info :translate-alist)))) (full-body (= if (not (functionp inner-template)) body (funcall inner-template body info)= )) (template (cdr (assq (quote template) (plist-get info :translate-alist))= ))) (org-no-properties (org-export-filter-apply-functions (plist-get info := filter-final-output) (if (or (not (functionp template)) body-only) full-bod= y (funcall template full-body info)) info)))) (save-current-buffer (set-buffer --buf-copy) (goto-char (point-min)) (pro= gn (run-hook-with-args (quote org-export-before-processing-hook) (progn (or= (and (vectorp backend) (>=3D (length backend) 8) (memq (aref backend 0) cl= -struct-org-export-backend-tags)) (error "%s accessing a non-%s" (quote org= -export-backend-name) (quote org-export-backend))) (aref backend 1))) (org-= export-expand-include-keyword) (org-macro-initialize-templates) (org-macro-= replace-all org-macro-templates) (org-export-execute-babel-code) (org-updat= e-radio-target-regexp) (goto-char (point-min)) (save-excursion (run-hook-wi= th-args (quote org-export-before-parsing-hook) (progn (or (and (vectorp bac= kend) (>=3D ... 8) (memq ... cl-struct-org-export-backend-tags)) (error "%s= accessing a non-%s" (quote org-export-backend-name) (quote org-export-back= end))) (aref backend 1)))) (setq info (org-export-install-filters (org-comb= ine-plists info (org-export-get-environment backend subtreep ext-plist)))) = (org-macro-replace-all (list (cons "author" (org-element-interpret-data (pl= ist-get info :author))) (cons "date" (org-element-interpret-data (plist-get= info :date))) (cons "email" (or (plist-get info :email) "")) (cons "title"= (org-element-interpret-data (plist-get info :title))))) (let ((backend-nam= e (progn (or (and ... ... ...) (error "%s accessing a non-%s" ... ...)) (ar= ef backend 1)))) (let ((--dolist-tail-- (plist-get info :filter-options)) f= ilter) (while --dolist-tail-- (setq filter (car --dolist-tail--)) (let ((re= sult ...)) (if result (progn ...))) (setq --dolist-tail-- (cdr --dolist-tai= l--))))) (setq tree (org-export-filter-apply-functions (plist-get info :fil= ter-parse-tree) (org-element-parse-buffer nil visible-only) info)) (setq in= fo (org-combine-plists info (org-export-collect-tree-properties tree info))= ) (let* ((body (org-element-normalize-string (or (org-export-data tree info= ) ""))) (inner-template (cdr (assq (quote inner-template) (plist-get info := translate-alist)))) (full-body (if (not (functionp inner-template)) body (f= uncall inner-template body info))) (template (cdr (assq (quote template) (p= list-get info :translate-alist))))) (org-no-properties (org-export-filter-a= pply-functions (plist-get info :filter-final-output) (if (or (not ...) body= -only) full-body (funcall template full-body info)) info))))) (unwind-protect (save-current-buffer (set-buffer --buf-copy) (goto-char (= point-min)) (progn (run-hook-with-args (quote org-export-before-processing-= hook) (progn (or (and (vectorp backend) (>=3D ... 8) (memq ... cl-struct-or= g-export-backend-tags)) (error "%s accessing a non-%s" (quote org-export-ba= ckend-name) (quote org-export-backend))) (aref backend 1))) (org-export-exp= and-include-keyword) (org-macro-initialize-templates) (org-macro-replace-al= l org-macro-templates) (org-export-execute-babel-code) (org-update-radio-ta= rget-regexp) (goto-char (point-min)) (save-excursion (run-hook-with-args (q= uote org-export-before-parsing-hook) (progn (or (and ... ... ...) (error "%= s accessing a non-%s" ... ...)) (aref backend 1)))) (setq info (org-export-= install-filters (org-combine-plists info (org-export-get-environment backen= d subtreep ext-plist)))) (org-macro-replace-all (list (cons "author" (org-e= lement-interpret-data (plist-get info :author))) (cons "date" (org-element-= interpret-data (plist-get info :date))) (cons "email" (or (plist-get info := email) "")) (cons "title" (org-element-interpret-data (plist-get info :titl= e))))) (let ((backend-name (progn (or ... ...) (aref backend 1)))) (let ((-= -dolist-tail-- (plist-get info :filter-options)) filter) (while --dolist-ta= il-- (setq filter (car --dolist-tail--)) (let (...) (if result ...)) (setq = --dolist-tail-- (cdr --dolist-tail--))))) (setq tree (org-export-filter-app= ly-functions (plist-get info :filter-parse-tree) (org-element-parse-buffer = nil visible-only) info)) (setq info (org-combine-plists info (org-export-co= llect-tree-properties tree info))) (let* ((body (org-element-normalize-stri= ng (or ... ""))) (inner-template (cdr (assq ... ...))) (full-body (if (not = ...) body (funcall inner-template body info))) (template (cdr (assq ... ...= )))) (org-no-properties (org-export-filter-apply-functions (plist-get info = :filter-final-output) (if (or ... body-only) full-body (funcall template fu= ll-body info)) info))))) (and (buffer-live-p --buf-copy) (progn (save-curre= nt-buffer (set-buffer --buf-copy) (restore-buffer-modified-p nil)) (kill-bu= ffer --buf-copy)))) (let ((--buf-copy (org-export-copy-buffer))) (unwind-protect (save-curren= t-buffer (set-buffer --buf-copy) (goto-char (point-min)) (progn (run-hook-w= ith-args (quote org-export-before-processing-hook) (progn (or (and ... ... = ...) (error "%s accessing a non-%s" ... ...)) (aref backend 1))) (org-expor= t-expand-include-keyword) (org-macro-initialize-templates) (org-macro-repla= ce-all org-macro-templates) (org-export-execute-babel-code) (org-update-rad= io-target-regexp) (goto-char (point-min)) (save-excursion (run-hook-with-ar= gs (quote org-export-before-parsing-hook) (progn (or ... ...) (aref backend= 1)))) (setq info (org-export-install-filters (org-combine-plists info (org= -export-get-environment backend subtreep ext-plist)))) (org-macro-replace-a= ll (list (cons "author" (org-element-interpret-data ...)) (cons "date" (org= -element-interpret-data ...)) (cons "email" (or ... "")) (cons "title" (org= -element-interpret-data ...)))) (let ((backend-name (progn ... ...))) (let = ((--dolist-tail-- ...) filter) (while --dolist-tail-- (setq filter ...) (le= t ... ...) (setq --dolist-tail-- ...)))) (setq tree (org-export-filter-appl= y-functions (plist-get info :filter-parse-tree) (org-element-parse-buffer n= il visible-only) info)) (setq info (org-combine-plists info (org-export-col= lect-tree-properties tree info))) (let* ((body (org-element-normalize-strin= g ...)) (inner-template (cdr ...)) (full-body (if ... body ...)) (template = (cdr ...))) (org-no-properties (org-export-filter-apply-functions (plist-ge= t info :filter-final-output) (if ... full-body ...) info))))) (and (buffer-= live-p --buf-copy) (progn (save-current-buffer (set-buffer --buf-copy) (res= tore-buffer-modified-p nil)) (kill-buffer --buf-copy))))) (let* ((org-export-current-backend (progn (or (and (vectorp backend) (>= =3D (length backend) 8) (memq (aref backend 0) cl-struct-org-export-backend= -tags)) (error "%s accessing a non-%s" (quote org-export-backend-name) (quo= te org-export-backend))) (aref backend 1))) (info (org-combine-plists (list= :export-options (delq nil (list (and subtreep ...) (and visible-only ...) = (and body-only ...)))) (org-export--get-buffer-attributes))) tree) (let ((-= -buf-copy (org-export-copy-buffer))) (unwind-protect (save-current-buffer (= set-buffer --buf-copy) (goto-char (point-min)) (progn (run-hook-with-args (= quote org-export-before-processing-hook) (progn (or ... ...) (aref backend = 1))) (org-export-expand-include-keyword) (org-macro-initialize-templates) (= org-macro-replace-all org-macro-templates) (org-export-execute-babel-code) = (org-update-radio-target-regexp) (goto-char (point-min)) (save-excursion (r= un-hook-with-args (quote org-export-before-parsing-hook) (progn ... ...))) = (setq info (org-export-install-filters (org-combine-plists info ...))) (org= -macro-replace-all (list (cons "author" ...) (cons "date" ...) (cons "email= " ...) (cons "title" ...))) (let ((backend-name ...)) (let (... filter) (wh= ile --dolist-tail-- ... ... ...))) (setq tree (org-export-filter-apply-func= tions (plist-get info :filter-parse-tree) (org-element-parse-buffer nil vis= ible-only) info)) (setq info (org-combine-plists info (org-export-collect-t= ree-properties tree info))) (let* ((body ...) (inner-template ...) (full-bo= dy ...) (template ...)) (org-no-properties (org-export-filter-apply-functio= ns ... ... info))))) (and (buffer-live-p --buf-copy) (progn (save-current-b= uffer (set-buffer --buf-copy) (restore-buffer-modified-p nil)) (kill-buffer= --buf-copy)))))) (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* ((or= g-export-current-backend (progn (or (and (vectorp backend) (>=3D ... 8) (me= mq ... cl-struct-org-export-backend-tags)) (error "%s accessing a non-%s" (= quote org-export-backend-name) (quote org-export-backend))) (aref backend 1= ))) (info (org-combine-plists (list :export-options (delq nil (list ... ...= ...))) (org-export--get-buffer-attributes))) tree) (let ((--buf-copy (org-= export-copy-buffer))) (unwind-protect (save-current-buffer (set-buffer --bu= f-copy) (goto-char (point-min)) (progn (run-hook-with-args (quote org-expor= t-before-processing-hook) (progn ... ...)) (org-export-expand-include-keywo= rd) (org-macro-initialize-templates) (org-macro-replace-all org-macro-templ= ates) (org-export-execute-babel-code) (org-update-radio-target-regexp) (got= o-char (point-min)) (save-excursion (run-hook-with-args ... ...)) (setq inf= o (org-export-install-filters ...)) (org-macro-replace-all (list ... ... ..= . ...)) (let (...) (let ... ...)) (setq tree (org-export-filter-apply-funct= ions ... ... info)) (setq info (org-combine-plists info ...)) (let* (... ..= . ... ...) (org-no-properties ...)))) (and (buffer-live-p --buf-copy) (prog= n (save-current-buffer (set-buffer --buf-copy) (restore-buffer-modified-p n= il)) (kill-buffer --buf-copy))))))) (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* ((org-export-current-backend (progn (or (and ... ... ...) (erro= r "%s accessing a non-%s" ... ...)) (aref backend 1))) (info (org-combine-p= lists (list :export-options (delq nil ...)) (org-export--get-buffer-attribu= tes))) tree) (let ((--buf-copy (org-export-copy-buffer))) (unwind-protect (= save-current-buffer (set-buffer --buf-copy) (goto-char (point-min)) (progn = (run-hook-with-args ... ...) (org-export-expand-include-keyword) (org-macro= -initialize-templates) (org-macro-replace-all org-macro-templates) (org-exp= ort-execute-babel-code) (org-update-radio-target-regexp) (goto-char ...) (s= ave-excursion ...) (setq info ...) (org-macro-replace-all ...) (let ... ...= ) (setq tree ...) (setq info ...) (let* ... ...))) (and (buffer-live-p --bu= f-copy) (progn (save-current-buffer ... ...) (kill-buffer --buf-copy)))))))) org-export-as(latex nil nil nil nil) (let ((output (org-export-as backend subtreep visible-only body-only ext-= plist))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current= -buffer (set-buffer temp-buffer) (unwind-protect (progn (insert output) (le= t ((coding-system-for-write encoding)) (write-file file))) (and (buffer-nam= e temp-buffer) (kill-buffer temp-buffer))))) (if (and (org-export--copy-to-= kill-ring-p) (org-string-nw-p output)) (progn (org-kill-new output))) (or (= and (functionp post-process) (funcall post-process file)) file)) (if async (let ((with-temp-message "Initializing asynchronous export proc= ess") (current-message)) (unwind-protect (progn (if with-temp-message (prog= n (setq current-message (current-message)) (message "%s" with-temp-message)= )) (let ((--copy-fun (org-export--generate-copy-script ...)) (--temp-file (= make-temp-file "org-export-process")) (--coding buffer-file-coding-system))= (let ((temp-file --temp-file) (temp-buffer ...)) (unwind-protect (prog1 ..= . ...) (and ... ...))) (let* ((process-connection-type nil) (--proc-buffer = ...) (--process ...)) (org-export-add-to-stack (get-buffer --proc-buffer) n= il --process) (let (...) (set-process-sentinel --process ...))))) (and with= -temp-message (if current-message (message "%s" current-message) (message n= il))))) (let ((output (org-export-as backend subtreep visible-only body-onl= y ext-plist))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-c= urrent-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert outpu= t) (let (...) (write-file file))) (and (buffer-name temp-buffer) (kill-buff= er temp-buffer))))) (if (and (org-export--copy-to-kill-ring-p) (org-string-= nw-p output)) (progn (org-kill-new output))) (or (and (functionp post-proce= ss) (funcall post-process file)) file))) (let ((encoding (or org-export-coding-system buffer-file-coding-system)))= (if async (let ((with-temp-message "Initializing asynchronous export proce= ss") (current-message)) (unwind-protect (progn (if with-temp-message (progn= (setq current-message ...) (message "%s" with-temp-message))) (let ((--cop= y-fun ...) (--temp-file ...) (--coding buffer-file-coding-system)) (let (..= . ...) (unwind-protect ... ...)) (let* (... ... ...) (org-export-add-to-sta= ck ... nil --process) (let ... ...)))) (and with-temp-message (if current-m= essage (message "%s" current-message) (message nil))))) (let ((output (org-= export-as backend subtreep visible-only body-only ext-plist))) (let ((temp-= buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer t= emp-buffer) (unwind-protect (progn (insert output) (let ... ...)) (and (buf= fer-name temp-buffer) (kill-buffer temp-buffer))))) (if (and (org-export--c= opy-to-kill-ring-p) (org-string-nw-p output)) (progn (org-kill-new output))= ) (or (and (functionp post-process) (funcall post-process file)) file)))) (if (not (file-writable-p file)) (error "Output file not writable") (let = ((encoding (or org-export-coding-system buffer-file-coding-system))) (if as= ync (let ((with-temp-message "Initializing asynchronous export process") (c= urrent-message)) (unwind-protect (progn (if with-temp-message (progn ... ..= .)) (let (... ... ...) (let ... ...) (let* ... ... ...))) (and with-temp-me= ssage (if current-message (message "%s" current-message) (message nil))))) = (let ((output (org-export-as backend subtreep visible-only body-only ext-pl= ist))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-b= uffer (set-buffer temp-buffer) (unwind-protect (progn ... ...) (and ... ...= )))) (if (and (org-export--copy-to-kill-ring-p) (org-string-nw-p output)) (= progn (org-kill-new output))) (or (and (functionp post-process) (funcall po= st-process file)) file))))) org-export-to-file(latex "./test-subscript.tex" nil nil nil nil nil) (let ((outfile (org-export-output-file-name ".tex" subtreep))) (org-expor= t-to-file (quote latex) outfile async subtreep visible-only body-only ext-p= list)) org-latex-export-to-latex(nil nil nil nil) funcall(org-latex-export-to-latex nil nil nil nil) (save-excursion (if arg (progn (if (eq (marker-buffer org-export-dispatch= -last-position) (org-base-buffer (current-buffer))) (goto-char org-export-d= ispatch-last-position) (move-marker org-export-dispatch-last-position nil))= )) (funcall action (and (memq (quote async) optns) t) (and (memq (quote sub= tree) optns) t) (and (memq (quote visible) optns) t) (and (memq (quote body= ) optns) t))) (cond ((eql action (quote template)) (org-export-insert-default-template = nil optns)) ((eql action (quote stack)) (org-export-stack)) ((eql action (q= uote publish-current-file)) (org-publish-current-file (memq (quote force) o= ptns) (memq (quote async) optns))) ((eql action (quote publish-current-proj= ect)) (org-publish-current-project (memq (quote force) optns) (memq (quote = async) optns))) ((eql action (quote publish-choose-project)) (org-publish (= assoc (org-icompleting-read "Publish project: " org-publish-project-alist n= il t) org-publish-project-alist) (memq (quote force) optns) (memq (quote as= ync) optns))) ((eql action (quote publish-all)) (org-publish-all (memq (quo= te force) optns) (memq (quote async) optns))) (t (save-excursion (if arg (p= rogn (if (eq (marker-buffer org-export-dispatch-last-position) (org-base-bu= ffer ...)) (goto-char org-export-dispatch-last-position) (move-marker org-e= xport-dispatch-last-position nil)))) (funcall action (and (memq (quote asyn= c) optns) t) (and (memq (quote subtree) optns) t) (and (memq (quote visible= ) optns) t) (and (memq (quote body) optns) t))))) (let* ((input (cond ((equal arg (quote (16))) (quote (stack))) ((and arg = org-export-dispatch-last-action)) (t (let ((wconfig ...)) (unwind-protect (= progn ...) (set-window-configuration wconfig)))))) (action (car input)) (op= tns (cdr input))) (if (memq (quote subtree) optns) nil (move-marker org-exp= ort-dispatch-last-position nil)) (cond ((eql action (quote template)) (org-= export-insert-default-template nil optns)) ((eql action (quote stack)) (org= -export-stack)) ((eql action (quote publish-current-file)) (org-publish-cur= rent-file (memq (quote force) optns) (memq (quote async) optns))) ((eql act= ion (quote publish-current-project)) (org-publish-current-project (memq (qu= ote force) optns) (memq (quote async) optns))) ((eql action (quote publish-= choose-project)) (org-publish (assoc (org-icompleting-read "Publish project= : " org-publish-project-alist nil t) org-publish-project-alist) (memq (quot= e force) optns) (memq (quote async) optns))) ((eql action (quote publish-al= l)) (org-publish-all (memq (quote force) optns) (memq (quote async) optns))= ) (t (save-excursion (if arg (progn (if (eq ... ...) (goto-char org-export-= dispatch-last-position) (move-marker org-export-dispatch-last-position nil)= ))) (funcall action (and (memq (quote async) optns) t) (and (memq (quote su= btree) optns) t) (and (memq (quote visible) optns) t) (and (memq (quote bod= y) optns) t)))))) org-export-dispatch(nil) call-interactively(org-export-dispatch nil nil) command-execute(org-export-dispatch) --=20 Aaron Ecay