From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Verbatim LaTeX inside delimiters in HTML export with jsMath? Date: Fri, 25 Jun 2010 12:06:56 +0200 Message-ID: References: <520586D5-F7A3-49DB-ACA8-A7542D1EAE06@gmail.com> <4C19CD7D.7050409@christianmoe.com> <5DBE101F-986F-4944-A067-39A467365878@gmail.com> <4C1B514F.6070702@christianmoe.com> Mime-Version: 1.0 (Apple Message framework v936) Content-Type: multipart/mixed; boundary=Apple-Mail-2-652990019 Return-path: Received: from [140.186.70.92] (port=46279 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OSD4x-0003wG-RR for emacs-orgmode@gnu.org; Fri, 25 Jun 2010 13:52:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OS5oR-0000y5-Qx for emacs-orgmode@gnu.org; Fri, 25 Jun 2010 06:07:09 -0400 Received: from paard.ic.uva.nl ([145.18.40.182]:38984) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OS5oR-0000xG-DE for emacs-orgmode@gnu.org; Fri, 25 Jun 2010 06:07:07 -0400 In-Reply-To: <4C1B514F.6070702@christianmoe.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: mail@christianmoe.com Cc: emacs-orgmode@gnu.org --Apple-Mail-2-652990019 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit For John Wiegley: John, please do not yet apply the attached patch... Hi Christian, I am trying to get back to this issue. I am attaching a patch, please apply it to your setup and then try #+OPTIONS: ^:t TeX:t LaTeX:verbatim if that works, can I then ask you to update http://orgmode.org/worg/org-tutorials/org-jsmath.php ? Thanks! - Carsten --Apple-Mail-2-652990019 Content-Disposition: attachment; filename=jsmath.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="jsmath.patch" Content-Transfer-Encoding: 7bit diff --git a/lisp/org-html.el b/lisp/org-html.el index 4a6ded4..d972c58 100644 --- a/lisp/org-html.el +++ b/lisp/org-html.el @@ -433,7 +433,8 @@ This may also be a function, building and inserting the postamble.") (concat "ltxpng/" (file-name-sans-extension (file-name-nondirectory org-current-export-file))) - org-current-export-dir nil "Creating LaTeX image %s")) + org-current-export-dir nil "Creating LaTeX image %s" + nil nil (eq (plist-get parameters :LaTeX-fragments) 'verbatim))) (goto-char (point-min)) (let (label l1) (while (re-search-forward "\\\\ref{\\([^{}\n]+\\)}" nil t) diff --git a/lisp/org.el b/lisp/org.el index 7bb4f45..52de945 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -15699,7 +15699,8 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]." ("$$" "\\$\\$[^\000]*?\\$\\$" 0 nil)) "Regular expressions for matching embedded LaTeX.") -(defun org-format-latex (prefix &optional dir overlays msg at forbuffer) +(defun org-format-latex (prefix &optional dir overlays msg at + forbuffer protect-only) "Replace LaTeX fragments with links to an image, and produce images. Some of the options can be changed using the variable `org-format-latex-options'." @@ -15729,60 +15730,63 @@ Some of the options can be changed using the variable (not (eq (get-char-property (match-beginning n) 'org-overlay-type) 'org-latex-overlay)))) - (setq txt (match-string n) - beg (match-beginning n) end (match-end n) - cnt (1+ cnt)) - (let (print-length print-level) ; make sure full list is printed - (setq hash (sha1 (prin1-to-string - (list org-format-latex-header - org-format-latex-header-extra - org-export-latex-default-packages-alist - org-export-latex-packages-alist - org-format-latex-options - forbuffer txt))) - linkfile (format "%s_%s.png" prefix hash) - movefile (format "%s_%s.png" absprefix hash))) - (setq link (concat block "[[file:" linkfile "]]" block)) - (if msg (message msg cnt)) - (goto-char beg) - (unless checkdir ; make sure the directory exists - (setq checkdir t) - (or (file-directory-p todir) (make-directory todir))) - - (unless executables-checked - (org-check-external-command - "latex" "needed to convert LaTeX fragments to images") - (org-check-external-command - "dvipng" "needed to convert LaTeX fragments to images") - (setq executables-checked t)) - - (unless (file-exists-p movefile) - (org-create-formula-image - txt movefile opt forbuffer)) - (if overlays - (progn - (mapc (lambda (o) - (if (eq (overlay-get o 'org-overlay-type) - 'org-latex-overlay) - (delete-overlay o))) - (overlays-in beg end)) - (setq ov (make-overlay beg end)) - (overlay-put ov 'org-overlay-type 'org-latex-overlay) - (if (featurep 'xemacs) - (progn - (overlay-put ov 'invisible t) - (overlay-put - ov 'end-glyph - (make-glyph (vector 'png :file movefile)))) - (overlay-put - ov 'display - (list 'image :type 'png :file movefile :ascent 'center))) - (push ov org-latex-fragment-image-overlays) - (goto-char end)) - (delete-region beg end) - (insert (org-add-props link - (list 'org-latex-src - (replace-regexp-in-string "\"" "" txt))))))))))) + (if protect-only + (add-text-properties (match-beginning n) (match-end n) + '(org-protected t)) + (setq txt (match-string n) + beg (match-beginning n) end (match-end n) + cnt (1+ cnt)) + (let (print-length print-level) ; make sure full list is printed + (setq hash (sha1 (prin1-to-string + (list org-format-latex-header + org-format-latex-header-extra + org-export-latex-default-packages-alist + org-export-latex-packages-alist + org-format-latex-options + forbuffer txt))) + linkfile (format "%s_%s.png" prefix hash) + movefile (format "%s_%s.png" absprefix hash))) + (setq link (concat block "[[file:" linkfile "]]" block)) + (if msg (message msg cnt)) + (goto-char beg) + (unless checkdir ; make sure the directory exists + (setq checkdir t) + (or (file-directory-p todir) (make-directory todir))) + + (unless executables-checked + (org-check-external-command + "latex" "needed to convert LaTeX fragments to images") + (org-check-external-command + "dvipng" "needed to convert LaTeX fragments to images") + (setq executables-checked t)) + + (unless (file-exists-p movefile) + (org-create-formula-image + txt movefile opt forbuffer)) + (if overlays + (progn + (mapc (lambda (o) + (if (eq (overlay-get o 'org-overlay-type) + 'org-latex-overlay) + (delete-overlay o))) + (overlays-in beg end)) + (setq ov (make-overlay beg end)) + (overlay-put ov 'org-overlay-type 'org-latex-overlay) + (if (featurep 'xemacs) + (progn + (overlay-put ov 'invisible t) + (overlay-put + ov 'end-glyph + (make-glyph (vector 'png :file movefile)))) + (overlay-put + ov 'display + (list 'image :type 'png :file movefile :ascent 'center))) + (push ov org-latex-fragment-image-overlays) + (goto-char end)) + (delete-region beg end) + (insert (org-add-props link + (list 'org-latex-src + (replace-regexp-in-string "\"" "" txt)))))))))))) ;; This function borrows from Ganesh Swami's latex2png.el (defun org-create-formula-image (string tofile options buffer) --Apple-Mail-2-652990019 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit On Jun 18, 2010, at 12:58 PM, Christian Moe wrote: > Hi, Carsten, > > Thanks for taking a look. > > Your example should be output exactly the same as it is currently > with the =LaTeX:nil= option, i. e. verbatim: > >

> \begin{equation} > a=b > \end{equation} >

> > - and this minimal example could be interpreted by jsMath without > any changes in Org-mode export, since it happens to contain no sub/ > superscripts or entities. > > What I'd like is for > > \begin{equation} > \e=mc^2 > \end{equation} > > to be output equally verbatim as > >

> \begin{equation} > e=mc^2 > \end{equation} >

> > *even when =^:t= is on*, so I could freely write e.g. m^2 in the > text and get it superscripted, but not get > >

> \begin{equation} > e=mc2 > \end{equation} >

> > In other words, to have my cake and eat it, too. I hope it's clearer > now. > > Yours, > Christian > > > Carsten Dominik wrote: > > Hi Christian, > > > > how should, in this case, a literal LaTeX environment like > > > > \begin{equation} > > a=b > > \end{equation} > > > > be handled? > > > > - Carsten > > > > On Jun 17, 2010, at 9:23 AM, Christian Moe wrote: > > > >> Hi, > >> > >> To display LaTeX math in Org html export with lovely jsMath, it > must be > >> exported verbatim with > >> > >> #+OPTIONS: ^:nil TeX:nil > >> > >> so one cannot use lazy superscripts/subscripts or Org entities in > the > >> rest of the text. > >> > >> Is there a simple way to turn these options on, but protect LaTeX > where > >> it appears *inside math delimiters* so it's exported verbatim? I.e. > >> inside $...$, $$...$$, \( ... \), \[ ... \], \begin ... \end ? > >> > >> I ask because I'm keeping a note file with much text and only a few > >> equations, but with frequent reference to e.g. CO_2 and m^2. It's > >> possible to always write $CO_2$ and $m^2$, but less readable, and > >> irksome when you've got used to an easier way. An inline formula > can > >> be protected by surrounding it with verbatim markup, =$...$=, but > then > >> it's only good for jsMath, not for LaTeX export. > >> > >> Yours, > >> Christian > >> > >> _______________________________________________ > >> Emacs-orgmode mailing list > >> Please use `Reply All' to send replies to the list. > >> Emacs-orgmode@gnu.org > >> http://lists.gnu.org/mailman/listinfo/emacs-orgmode > > > > - Carsten > > > > > > > > > > > -- > > Christian Moe > E-mail: mail@christianmoe.com > Website: http://christianmoe.com > > > > Carsten Dominik wrote: >> Hi Christian, >> how should, in this case, a literal LaTeX environment like >> \begin{equation} >> a=b >> \end{equation} >> be handled? >> - Carsten >> On Jun 17, 2010, at 9:23 AM, Christian Moe wrote: >>> Hi, >>> >>> To display LaTeX math in Org html export with lovely jsMath, it >>> must be >>> exported verbatim with >>> >>> #+OPTIONS: ^:nil TeX:nil >>> >>> so one cannot use lazy superscripts/subscripts or Org entities in >>> the rest of the text. >>> >>> Is there a simple way to turn these options on, but protect LaTeX >>> where >>> it appears *inside math delimiters* so it's exported verbatim? I.e. >>> inside $...$, $$...$$, \( ... \), \[ ... \], \begin ... \end ? >>> >>> I ask because I'm keeping a note file with much text and only a >>> few equations, but with frequent reference to e.g. CO_2 and m^2. >>> It's possible to always write $CO_2$ and $m^2$, but less readable, >>> and irksome when you've got used to an easier way. An inline >>> formula can be protected by surrounding it with verbatim markup, = >>> $...$=, but then it's only good for jsMath, not for LaTeX export. >>> >>> Yours, >>> Christian >>> >>> _______________________________________________ >>> Emacs-orgmode mailing list >>> Please use `Reply All' to send replies to the list. >>> Emacs-orgmode@gnu.org >>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode >> - Carsten > > > -- > > Christian Moe > E-mail: mail@christianmoe.com > Website: http://christianmoe.com > - Carsten --Apple-Mail-2-652990019 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --Apple-Mail-2-652990019--