From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: [patch] overprotective begin/end during latex export Date: Sun, 13 Jun 2010 17:41:23 +0200 Message-ID: <87ocffszx8.wl%n.goaziou@gmail.com> References: <87pqzvqzbg.fsf@gmail.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: multipart/mixed; boundary="Multipart_Sun_Jun_13_17:41:23_2010-1" Return-path: Received: from [140.186.70.92] (port=53274 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ONpJV-0008CG-1J for emacs-orgmode@gnu.org; Sun, 13 Jun 2010 11:41:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1ONpJP-0006Uz-8V for emacs-orgmode@gnu.org; Sun, 13 Jun 2010 11:41:28 -0400 Received: from mail-ww0-f41.google.com ([74.125.82.41]:40917) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONpJP-0006Uk-44 for emacs-orgmode@gnu.org; Sun, 13 Jun 2010 11:41:27 -0400 Received: by wwb34 with SMTP id 34so3161882wwb.0 for ; Sun, 13 Jun 2010 08:41:26 -0700 (PDT) In-Reply-To: <87pqzvqzbg.fsf@gmail.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: Eric Schulte Cc: Org Mode --Multipart_Sun_Jun_13_17:41:23_2010-1 Content-Type: text/plain; charset=US-ASCII >>>>> Eric Schulte writes: Hello, > I've run across the following bug a couple of times before, but have > finally had a chance to really distill it. When exporting the following > --8<---------------cut here---------------start------------->8--- > #+TITLE: latex environments bug > there is markup /out here/ > #+LaTeX: \begin{enumerate} > but *no markup* in here > #+LaTeX: \end{enumerate} > and markup _down here_ as well > --8<---------------cut here---------------end--------------->8--- > everything works as expected, except that the > but *no markup* in here > line is *not* exported to LaTeX, but is rather copied verbatim into the > final LaTeX file. It is because org-latex.el doesn't check if \begin{enumerate} is already protected or not. Thus, it treats it as if it was some plain LaTeX code inside the file. In other words, #+LaTeX: \begin{enumerate} *bold* #+LaTeX: \end{enumerate} is the same as \begin{enumerate} *bold* \end{enumerate} In this case, org-latex protects everything between \begin and \end, making it impossible to apply modifications to the text in-between. With the following patch, org-latex will not protect an environment coming from a #+LaTeX: instruction. Btw, a bug I described some day ago (about org-latex badly exporting lists when an equation spans across two lines) is also about over protection. I have a workaround, but I still don't understand why protection is needed for lists. HTH, -- Nicolas --Multipart_Sun_Jun_13_17:41:23_2010-1 Content-Type: application/octet-stream; type=patch Content-Disposition: attachment; filename="0001-org-latex.el-do-not-protect-environments-already-pro.patch" Content-Transfer-Encoding: 7bit >From 8a8478180971f61370a9257c48f0c36aa3ac5952 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sun, 13 Jun 2010 17:21:59 +0200 Subject: [PATCH] org-latex.el : do not protect environments already protected. Environments coming from latex backend specific instructions (#+LaTeX) are already protected and won't be treated as normal environments. --- lisp/org-latex.el | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/org-latex.el b/lisp/org-latex.el index 50f5299..edc05c6 100644 --- a/lisp/org-latex.el +++ b/lisp/org-latex.el @@ -1984,7 +1984,8 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER." ;; Preserve latex environments (goto-char (point-min)) (while (re-search-forward "^[ \t]*\\\\begin{\\([a-zA-Z]+\\*?\\)}" nil t) - (let* ((start (progn (beginning-of-line) (point))) + (org-if-unprotected + (let* ((start (progn (beginning-of-line) (point))) (end (and (re-search-forward (concat "^[ \t]*\\\\end{" (regexp-quote (match-string 1)) @@ -1992,7 +1993,7 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER." (point-at-eol)))) (if end (add-text-properties start end '(org-protected t)) - (goto-char (point-at-eol))))) + (goto-char (point-at-eol)))))) ;; Preserve math snippets -- 1.7.1 --Multipart_Sun_Jun_13_17:41:23_2010-1 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 --Multipart_Sun_Jun_13_17:41:23_2010-1--