LaTeX export: Fix some problems with protection of inline latex commands
commitc6fd49726f2eaf417361b190b37e2d8ffb5864fc
authorCarsten Dominik <carsten.dominik@gmail.com>
Thu, 16 Apr 2009 12:17:51 +0000 (16 14:17 +0200)
committerCarsten Dominik <carsten.dominik@gmail.com>
Thu, 16 Apr 2009 12:17:51 +0000 (16 14:17 +0200)
tree86f2b02255c097bf74116e90625396752ff99b40
parent61dfa0c67fcb47351f2139160ad7f59d7e742254
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.
lisp/ChangeLog
lisp/org-latex.el