LaTeX export: Fix some problems with protection of inline latex commands
Scot Becker writes:
> Prompted by Chris Gray's request for org markup in Latex
> environment, I thought I'd submit a note (for his sake and
> others') about a few quirks of org-latex-export's handling
> of embedded Latex markup in org documents. I have been
> puzzling with these for a while but only discovered the
> problem triggers (and workarounds) this morning just before
> Chris' mail arrived. These are both about inline Latex
> commands:
>
> I use a few custom commands \mycommand{like this}, and
> occasionally have to invoke the odd bit of standard LaTeX
> markup, for example /when \textbf{embedding bold text}
> inside italics/. For the most part, these work fine, but
> I've discovered the following two 'gotchas' that happen when
> exporting to LaTeX.
>
> 1. Inline Latex commands get their final curly brace
> escaped with a slash (and therefore don't work) if they
> spill over into another line, i.e. if they contain one or
> more newlines. This is true also for standard LaTeX
> commands like \textbf{} and \emph{}.
>
> ----------------SAMPLE------------------------
> \mycommand{So, for example this
> wrapped setence gets a slash added just after the
> final period and before the curly brace.} Org is quite
> helpfully escaping the slash for LaTeX, apparently.
>
> \mycommand{no trouble if it's all on one line}
> ------------------END-------------------------
>
> The workaround of putting all such commands on one line is
> no hardship for me, since I use visual-line-mode in Emacs 23
> and keep my paragraphs as single logical lines. It might be
> harder for those accustomed to hard-wrapping their
> paragraphs.
>
>
> 2. If you have two inline Latex commands on the same
> logical line, org's latex export doesn't treat the text
> between them in its usual manner. Italics get processed,
> but not the latexification of quotes. ("this" --> ``this'')
> For example:
>
> ----------------SAMPLE------------------------
> I have a short custom command to tell Latex to invoke a
> Hebrew-language right-to-left environment when I want to refer to a
> Hebrew phrase like this: \heb{phrase here}. But then if I "quote
> something," and follow that by another \heb{phrase}, the inner
> quotation marks don't get processed. Oddly enough, this problem is
> only triggered when there is an inline Latex command both before and
> after the quoted material on the same logical line.
>
> Now if you put a footnote in between those two inline Latex commands,
> the output is really nutty:
>
> And \heb{phrase here} with a footnote[fn:: Footnote here.] I'm not
> sure what funky org commands get invoked, but again, only when
> bookended by an inline Latex command like \heb{phrase here}.
> ------------------END-------------------------
>
> The nutty output is a number in square brackets like
> this[1], with the following at the bottom of the document:
>
> \$\^{}{1}\$ Footnote here.
>
> This has a the opposite work-around: break the lines so
> those elements are not all on the same logical line. Put in
> a few newlines. Latex, of course doesn't care. Do take
> care not to start a newline with the org-footnote, like this
> [fn:: Org doesn't parse a footnote command which starts on
> its own line.]
>
> This is just "for what it's worth" to those who use org-mode
> as a front-end to writing for LaTeX.
These problems were caused by a regular expression for
matching latex macros with arguments, that did not allow any
newlines. Now we have a much better regexp, that even
allows for three levels of nested braces.