emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nicolas Goaziou <n.goaziou@gmail.com>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: Org Mode <emacs-orgmode@gnu.org>
Subject: Re: [patch] overprotective begin/end during latex export
Date: Sun, 13 Jun 2010 17:41:23 +0200	[thread overview]
Message-ID: <87ocffszx8.wl%n.goaziou@gmail.com> (raw)
In-Reply-To: <87pqzvqzbg.fsf@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1470 bytes --]

>>>>> 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


[-- Attachment #2: 0001-org-latex.el-do-not-protect-environments-already-pro.patch --]
[-- Type: application/octet-stream, Size: 1361 bytes --]

From 8a8478180971f61370a9257c48f0c36aa3ac5952 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <n.goaziou@gmail.com>
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


[-- Attachment #3: Type: text/plain, Size: 201 bytes --]

_______________________________________________
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

  reply	other threads:[~2010-06-13 15:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-13  5:25 [bug] overprotective begin/end during latex export Eric Schulte
2010-06-13 15:41 ` Nicolas Goaziou [this message]
2010-06-13 16:25   ` [patch] " Eric Schulte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ocffszx8.wl%n.goaziou@gmail.com \
    --to=n.goaziou@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=schulte.eric@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).