summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTitus von der Malsburg <malsburg@posteo.de>2015-05-08 15:25:06 -0700
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2015-05-09 09:36:53 +0200
commit6779f8f424883ffd202e24cbd8bb4e241db294b0 (patch)
treefc40f7a6b6a1227ab3f0127fa36b918add1f869b
parentb27e630babc461ef22528c2dccf339f84d0a8476 (diff)
downloadorg-mode-6779f8f424883ffd202e24cbd8bb4e241db294b0.tar.gz
Fix detection of latex fragments
* org-element.el (org-element-latex-fragment-parser): * org.el (org-latex-regexps): Fix the detection of latex fragments. Uses syntax tables to detect whitespaces and punctuation marks following the final $ sign. In order to qualify as a math delimiter, the final $ sign of a LaTeX fragment has to be followed by a whitespace or punctuation mark but the regexp used in the previous code matched only a small number of punctuation marks and therefore missed some latex fragments.
-rw-r--r--doc/org.texi7
-rw-r--r--lisp/org-element.el2
-rwxr-xr-xlisp/org.el4
3 files changed, 7 insertions, 6 deletions
diff --git a/doc/org.texi b/doc/org.texi
index 7b78417..d926de4 100644
--- a/doc/org.texi
+++ b/doc/org.texi
@@ -10347,9 +10347,10 @@ Text within the usual @LaTeX{} math delimiters. To avoid conflicts with
currency specifications, single @samp{$} characters are only recognized as
math delimiters if the enclosed text contains at most two line breaks, is
directly attached to the @samp{$} characters with no whitespace in between,
-and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
-For the other delimiters, there is no such restriction, so when in doubt, use
-@samp{\(...\)} as inline math delimiters.
+and if the closing @samp{$} is followed by whitespace or punctuation
+(parentheses and quotes are considered to be punctuation in this
+context). For the other delimiters, there is no such restriction, so when in
+doubt, use @samp{\(...\)} as inline math delimiters.
@end itemize
@noindent For example:
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 64d2123..9037b37 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -2959,7 +2959,7 @@ Assume point is at the beginning of the LaTeX fragment."
(search-forward "$" nil t 2)
(not (memq (char-before (match-beginning 0))
'(?\s ?\t ?\n ?, ?.)))
- (looking-at "\\([- \t.,?;:'\"]\\|$\\)")
+ (looking-at "\\(\\s.\\|\\s-\\|\\s(\\|\\s)\\|\\s\"\\|$\\)")
(point)))
(case (char-after (1+ (point)))
(?\( (search-forward "\\)" nil t))
diff --git a/lisp/org.el b/lisp/org.el
index 6e4edd6..ac9d06d 100755
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -540,8 +540,8 @@ An entry can be toggled between COMMENT and normal with
'(("begin" "^[ \t]*\\(\\\\begin{\\([a-zA-Z0-9\\*]+\\)[^\000]+?\\\\end{\\2}\\)" 1 t)
;; ("$" "\\([ (]\\|^\\)\\(\\(\\([$]\\)\\([^ \r\n,.$].*?\\(\n.*?\\)\\{0,5\\}[^ \r\n,.$]\\)\\4\\)\\)\\([ .,?;:'\")]\\|$\\)" 2 nil)
;; \000 in the following regex is needed for org-inside-LaTeX-fragment-p
- ("$1" "\\([^$]\\|^\\)\\(\\$[^ \r\n,;.$]\\$\\)\\([- .,?;:'\")\000]\\|$\\)" 2 nil)
- ("$" "\\([^$]\\|^\\)\\(\\(\\$\\([^ \r\n,;.$][^$\n\r]*?\\(\n[^$\n\r]*?\\)\\{0,2\\}[^ \r\n,.$]\\)\\$\\)\\)\\([- .,?;:'\")\000]\\|$\\)" 2 nil)
+ ("$1" "\\([^$]\\|^\\)\\(\\$[^ \r\n,;.$]\\$\\)\\(\\s.\\|\\s-\\|\\s(\\|\\s)\\|\\s\"\\|\000\\|$\\)" 2 nil)
+ ("$" "\\([^$]\\|^\\)\\(\\(\\$\\([^ \r\n,;.$][^$\n\r]*?\\(\n[^$\n\r]*?\\)\\{0,2\\}[^ \r\n,.$]\\)\\$\\)\\)\\(\\s.\\|\\s-\\|\\s(\\|\\s)\\|\\s\"\\|\000\\|$\\)" 2 nil)
("\\(" "\\\\([^\000]*?\\\\)" 0 nil)
("\\[" "\\\\\\[[^\000]*?\\\\\\]" 0 nil)
("$$" "\\$\\$[^\000]*?\\$\\$" 0 nil))