Function: org-element-latex-fragment-parser
org-element-latex-fragment-parser is a byte-compiled function defined
in org-element.el.gz.
Signature
(org-element-latex-fragment-parser)
Documentation
Parse LaTeX fragment at point, if any.
When at a LaTeX fragment, return a new syntax node of latex-fragment
type containing :value, :begin, :end, and :post-blank as
properties. Otherwise, return nil.
Assume point is at the beginning of the LaTeX fragment.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-element.el.gz
;;;; LaTeX Fragment
(defun org-element-latex-fragment-parser ()
"Parse LaTeX fragment at point, if any.
When at a LaTeX fragment, return a new syntax node of `latex-fragment'
type containing `:value', `:begin', `:end', and `:post-blank' as
properties. Otherwise, return nil.
Assume point is at the beginning of the LaTeX fragment."
(catch 'no-object
(save-excursion
(let* ((begin (point))
(after-fragment
(cond
((not (eq ?$ (char-after)))
(pcase (char-after (1+ (point)))
(?\( (search-forward "\\)" nil t))
(?\[ (search-forward "\\]" nil t))
(_
;; Macro.
(and (looking-at "\\\\[a-zA-Z]+\\*?\\(\\(\\[[^][\n{}]*\\]\\)\
\\|\\({[^{}\n]*}\\)\\)*")
(match-end 0)))))
((eq ?$ (char-after (1+ (point))))
(search-forward "$$" nil t 2))
(t
(and (not (eq ?$ (char-before)))
(not (memq (char-after (1+ (point)))
'(?\s ?\t ?\n ?, ?. ?\;)))
(search-forward "$" nil t 2)
(not (memq (char-before (match-beginning 0))
'(?\s ?\t ?\n ?, ?.)))
(looking-at-p
"\\(\\s.\\|\\s-\\|\\s(\\|\\s)\\|\\s\"\\|'\\|$\\)")
(point)))))
(post-blank
(if (not after-fragment) (throw 'no-object nil)
(goto-char after-fragment)
(skip-chars-forward " \t")))
(end (point)))
(org-element-create
'latex-fragment
(list :value
(org-element-deferred-create
t #'org-element--substring
0 (- after-fragment begin))
:begin begin
:end end
:post-blank post-blank))))))