diff --git a/lisp/ox.el b/lisp/ox.el index 26fbfdaad..b7751a727 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -2919,56 +2919,47 @@ returned by the function." '(entity bold italic latex-environment latex-fragment strike-through subscript superscript underline) (lambda (datum) - (let ((new - (cl-case (org-element-type datum) - ;; ... entities... - (entity - (and (not (plist-get info :with-entities)) - (list (concat - (org-export-expand datum nil) - (make-string - (or (org-element-property :post-blank datum) 0) - ?\s))))) - ;; ... emphasis... - ((bold italic strike-through underline) - (and (not (plist-get info :with-emphasize)) - (let ((marker (cl-case (org-element-type datum) - (bold "*") - (italic "/") - (strike-through "+") - (underline "_")))) - (append - (list marker) - (org-element-contents datum) - (list (concat - marker - (make-string - (or (org-element-property :post-blank datum) - 0) - ?\s))))))) - ;; ... LaTeX environments and fragments... - ((latex-environment latex-fragment) - (and (eq (plist-get info :with-latex) 'verbatim) - (list (org-export-expand datum nil)))) - ;; ... sub/superscripts... - ((subscript superscript) - (let ((sub/super-p (plist-get info :with-sub-superscript)) - (bracketp (org-element-property :use-brackets-p datum))) - (and (or (not sub/super-p) - (and (eq sub/super-p '{}) (not bracketp))) - (append - (list (concat - (if (eq (org-element-type datum) 'subscript) - "_" - "^") - (and bracketp "{"))) - (org-element-contents datum) - (list (concat - (and bracketp "}") - (and (org-element-property :post-blank datum) - (make-string - (org-element-property :post-blank datum) - ?\s))))))))))) + (let* ((type (org-element-type datum)) + (post-blank + (pcase (org-element-property :post-blank datum) + (`nil nil) + (n (make-string n (if (eq type 'latex-environment) ?\n ?\s))))) + (new + (cl-case type + ;; ... entities... + (entity + (and (not (plist-get info :with-entities)) + (list (concat (org-export-expand datum nil) + post-blank)))) + ;; ... emphasis... + ((bold italic strike-through underline) + (and (not (plist-get info :with-emphasize)) + (let ((marker (cl-case type + (bold "*") + (italic "/") + (strike-through "+") + (underline "_")))) + (append + (list marker) + (org-element-contents datum) + (list (concat marker post-blank)))))) + ;; ... LaTeX environments and fragments... + ((latex-environment latex-fragment) + (and (eq (plist-get info :with-latex) 'verbatim) + (list (concat (org-export-expand datum nil) + post-blank)))) + ;; ... sub/superscripts... + ((subscript superscript) + (let ((sub/super-p (plist-get info :with-sub-superscript)) + (bracketp (org-element-property :use-brackets-p datum))) + (and (or (not sub/super-p) + (and (eq sub/super-p '{}) (not bracketp))) + (append + (list (concat (if (eq type 'subscript) "_" "^") + (and bracketp "{"))) + (org-element-contents datum) + (list (concat (and bracketp "}") + post-blank))))))))) (when new ;; Splice NEW at DATUM location in parse tree. (dolist (e new (org-element-extract-element datum))