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.
This commit is contained in:
parent
b27e630bab
commit
6779f8f424
|
@ -10347,9 +10347,10 @@ Text within the usual @LaTeX{} math delimiters. To avoid conflicts with
|
||||||
currency specifications, single @samp{$} characters are only recognized as
|
currency specifications, single @samp{$} characters are only recognized as
|
||||||
math delimiters if the enclosed text contains at most two line breaks, is
|
math delimiters if the enclosed text contains at most two line breaks, is
|
||||||
directly attached to the @samp{$} characters with no whitespace in between,
|
directly attached to the @samp{$} characters with no whitespace in between,
|
||||||
and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
|
and if the closing @samp{$} is followed by whitespace or punctuation
|
||||||
For the other delimiters, there is no such restriction, so when in doubt, use
|
(parentheses and quotes are considered to be punctuation in this
|
||||||
@samp{\(...\)} as inline math delimiters.
|
context). For the other delimiters, there is no such restriction, so when in
|
||||||
|
doubt, use @samp{\(...\)} as inline math delimiters.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@noindent For example:
|
@noindent For example:
|
||||||
|
|
|
@ -2959,7 +2959,7 @@ Assume point is at the beginning of the LaTeX fragment."
|
||||||
(search-forward "$" nil t 2)
|
(search-forward "$" nil t 2)
|
||||||
(not (memq (char-before (match-beginning 0))
|
(not (memq (char-before (match-beginning 0))
|
||||||
'(?\s ?\t ?\n ?, ?.)))
|
'(?\s ?\t ?\n ?, ?.)))
|
||||||
(looking-at "\\([- \t.,?;:'\"]\\|$\\)")
|
(looking-at "\\(\\s.\\|\\s-\\|\\s(\\|\\s)\\|\\s\"\\|$\\)")
|
||||||
(point)))
|
(point)))
|
||||||
(case (char-after (1+ (point)))
|
(case (char-after (1+ (point)))
|
||||||
(?\( (search-forward "\\)" nil t))
|
(?\( (search-forward "\\)" nil t))
|
||||||
|
|
|
@ -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)
|
'(("begin" "^[ \t]*\\(\\\\begin{\\([a-zA-Z0-9\\*]+\\)[^\000]+?\\\\end{\\2}\\)" 1 t)
|
||||||
;; ("$" "\\([ (]\\|^\\)\\(\\(\\([$]\\)\\([^ \r\n,.$].*?\\(\n.*?\\)\\{0,5\\}[^ \r\n,.$]\\)\\4\\)\\)\\([ .,?;:'\")]\\|$\\)" 2 nil)
|
;; ("$" "\\([ (]\\|^\\)\\(\\(\\([$]\\)\\([^ \r\n,.$].*?\\(\n.*?\\)\\{0,5\\}[^ \r\n,.$]\\)\\4\\)\\)\\([ .,?;:'\")]\\|$\\)" 2 nil)
|
||||||
;; \000 in the following regex is needed for org-inside-LaTeX-fragment-p
|
;; \000 in the following regex is needed for org-inside-LaTeX-fragment-p
|
||||||
("$1" "\\([^$]\\|^\\)\\(\\$[^ \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,.$]\\)\\$\\)\\)\\([- .,?;:'\")\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)
|
("\\[" "\\\\\\[[^\000]*?\\\\\\]" 0 nil)
|
||||||
("$$" "\\$\\$[^\000]*?\\$\\$" 0 nil))
|
("$$" "\\$\\$[^\000]*?\\$\\$" 0 nil))
|
||||||
|
|
Loading…
Reference in New Issue