add math environments
This commit is contained in:
@@ -1000,12 +1000,89 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
|||||||
|
|
||||||
;;;; Latex Environment
|
;;;; Latex Environment
|
||||||
|
|
||||||
|
(defun org-rst--reference (datum info &optional named-only)
|
||||||
|
"Return an appropriate reference for DATUM.
|
||||||
|
|
||||||
|
DATUM is an element or a `target' type object. INFO is the
|
||||||
|
current export state, as a plist.
|
||||||
|
|
||||||
|
When NAMED-ONLY is non-nil and DATUM has no NAME keyword, return
|
||||||
|
nil. This doesn't apply to headlines, inline tasks, radio
|
||||||
|
targets and targets."
|
||||||
|
(let* ((type (org-element-type datum))
|
||||||
|
(custom-id (and (memq type '(headline inlinetask))
|
||||||
|
(org-element-property :CUSTOM_ID datum)))
|
||||||
|
(user-label
|
||||||
|
(or
|
||||||
|
custom-id
|
||||||
|
(and (memq type '(radio-target target))
|
||||||
|
(org-element-property :value datum))
|
||||||
|
(org-element-property :name datum)
|
||||||
|
(when-let* ((id (org-element-property :ID datum)))
|
||||||
|
(concat org-html--id-attr-prefix id)))))
|
||||||
|
|
||||||
|
(cond
|
||||||
|
((and user-label
|
||||||
|
(or ;; (plist-get info :html-prefer-user-labels)
|
||||||
|
nil
|
||||||
|
;; Used CUSTOM_ID property unconditionally.
|
||||||
|
custom-id))
|
||||||
|
user-label)
|
||||||
|
((and named-only
|
||||||
|
(not (memq type '(headline inlinetask radio-target target)))
|
||||||
|
(not user-label))
|
||||||
|
nil)
|
||||||
|
(t
|
||||||
|
(org-export-get-reference datum info)))))
|
||||||
|
|
||||||
|
(defun org-rst--wrap-latex-environment (contents _ &optional caption label)
|
||||||
|
"Wrap CONTENTS string within appropriate environment for equations.
|
||||||
|
When optional arguments CAPTION and LABEL are given, use them for
|
||||||
|
caption and \"id\" attribute."
|
||||||
|
(format "\n.. math::\n%s%s%s\n"
|
||||||
|
;; label.
|
||||||
|
(if (org-string-nw-p label) (format " :label: %s\n" label) "")
|
||||||
|
;; Caption.
|
||||||
|
(if (not (org-string-nw-p caption)) ""
|
||||||
|
(format " :label:%s\n" caption))
|
||||||
|
;; Contents.
|
||||||
|
(format "\n%s\n" (org-rst--indent-string
|
||||||
|
(org-trim contents) org-rst-quote-margin))))
|
||||||
|
|
||||||
|
(defun org-rst--math-environment-p (element &optional _)
|
||||||
|
"Non-nil when ELEMENT is a LaTeX math environment.
|
||||||
|
Math environments match the regular expression defined in
|
||||||
|
`org-latex-math-environments-re'. This function is meant to be
|
||||||
|
used as a predicate for `org-export-get-ordinal' or a value to
|
||||||
|
`org-html-standalone-image-predicate'."
|
||||||
|
(string-match-p org-latex-math-environments-re
|
||||||
|
(org-element-property :value element)))
|
||||||
|
|
||||||
|
(defun org-rst--latex-environment-numbered-p (element)
|
||||||
|
"Non-nil when ELEMENT is a numbered LaTeX math environment.
|
||||||
|
Starred and \"displaymath\" environments are not numbered."
|
||||||
|
(not (string-match-p "\\`[ \t]*\\\\begin{\\(.*\\*\\|displaymath\\)}"
|
||||||
|
(org-element-property :value element))))
|
||||||
|
|
||||||
(defun org-rst-latex-environment (latex-environment _contents info)
|
(defun org-rst-latex-environment (latex-environment _contents info)
|
||||||
"Transcode a LATEX-ENVIRONMENT element from Org to reStructuredText.
|
"Transcode a LATEX-ENVIRONMENT element from Org to reStructuredText.
|
||||||
CONTENTS is nil. INFO is a plist holding contextual
|
CONTENTS is nil. INFO is a plist holding contextual
|
||||||
information."
|
information."
|
||||||
(when (plist-get info :with-latex)
|
(let ((processing-type (plist-get info :with-latex))
|
||||||
(org-remove-indentation (org-element-property :value latex-environment))))
|
(latex-frag (org-remove-indentation
|
||||||
|
(org-element-property :value latex-environment)))
|
||||||
|
(label (org-rst--reference latex-environment info t))
|
||||||
|
(caption (and (org-rst--latex-environment-numbered-p latex-environment)
|
||||||
|
(org-rst--math-environment-p latex-environment)
|
||||||
|
(number-to-string
|
||||||
|
(org-export-get-ordinal
|
||||||
|
latex-environment info nil
|
||||||
|
(lambda (l _)
|
||||||
|
(and (org-html--math-environment-p l)
|
||||||
|
(org-html--latex-environment-numbered-p l))))))))
|
||||||
|
(when processing-type
|
||||||
|
;; latex-frag
|
||||||
|
(org-rst--wrap-latex-environment latex-frag info caption label))))
|
||||||
|
|
||||||
|
|
||||||
;;;; Latex Fragment
|
;;;; Latex Fragment
|
||||||
|
|||||||
Reference in New Issue
Block a user