diff --git a/lisp/org-element.el b/lisp/org-element.el index 04df21b76..24988e87f 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -3775,7 +3775,8 @@ element it has to parse." (goto-char (car affiliated)) (org-element-keyword-parser limit nil)) ;; LaTeX Environment. - ((looking-at "[ \t]*\\\\begin{\\([A-Za-z0-9*]+\\)}") + ((looking-at + "[ \t]*\\\\begin{[A-Za-z0-9*]+}\\(\\[.*?\\]\\|{.*?}\\)*[ \t]*$") (org-element-latex-environment-parser limit affiliated)) ;; Drawer and Property Drawer. ((looking-at org-drawer-regexp) diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index f03f54ac7..20f6f2e6d 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -1136,11 +1136,19 @@ e^{i\\pi}+1=0 :value (org-element-map (org-element-parse-buffer) 'latex-environment 'identity nil t))))) - ;; Allow environments with options. + ;; Allow environments with options and arguments. (should (eq 'latex-environment (org-test-with-temp-text "\\begin{theorem}[Euler]\ne^{i\\pi}+1=0\n\\end{theorem}" + (org-element-type (org-element-at-point))))) + (should + (eq 'latex-environment + (org-test-with-temp-text "\\begin{env}{arg}\nvalue\n\\end{env}" + (org-element-type (org-element-at-point))))) + (should-not + (eq 'latex-environment + (org-test-with-temp-text "\\begin{env}{arg} something\nvalue\n\\end{env}" (org-element-type (org-element-at-point))))))