|
@@ -56,6 +56,7 @@
|
|
|
(declare-function org-element-parse-secondary-string
|
|
|
"org-element" (string restriction &optional buffer))
|
|
|
(defvar org-element-string-restrictions)
|
|
|
+(defvar org-element-object-restrictions)
|
|
|
|
|
|
(declare-function org-export-clean-table "org-export" (table specialp))
|
|
|
(declare-function org-export-data "org-export" (data backend info))
|
|
@@ -1566,10 +1567,13 @@ This function shouldn't be used for floats. See
|
|
|
(when (plist-get info :style-include-scripts)
|
|
|
org-e-html-scripts)))
|
|
|
|
|
|
-(defun org-e-html-mathjax-config (template options in-buffer)
|
|
|
+(defun org-e-html-mathjax-config (info)
|
|
|
"Insert the user setup into the matchjax template."
|
|
|
(when (member (plist-get info :LaTeX-fragments) '(mathjax t))
|
|
|
- (let (name val (yes " ") (no "// ") x)
|
|
|
+ (let ((template org-e-html-mathjax-template)
|
|
|
+ (options org-e-html-mathjax-options)
|
|
|
+ (in-buffer (or (plist-get info :mathjax) ""))
|
|
|
+ name val (yes " ") (no "// ") x)
|
|
|
(mapc
|
|
|
(lambda (e)
|
|
|
(setq name (car e) val (nth 1 e))
|
|
@@ -1725,9 +1729,7 @@ original parsed data. INFO is a plist holding export options."
|
|
|
<head>"
|
|
|
(org-e-html-meta-info info) ; meta
|
|
|
(org-e-html-style info) ; style
|
|
|
- (org-e-html-mathjax-config ; mathjax
|
|
|
- org-e-html-mathjax-template org-e-html-mathjax-options
|
|
|
- (or (plist-get info :mathjax) ""))
|
|
|
+ (org-e-html-mathjax-config info) ; mathjax
|
|
|
"
|
|
|
</head>"
|
|
|
|
|
@@ -2061,7 +2063,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
|
|
(concat
|
|
|
;; Insert separator between two footnotes in a row.
|
|
|
(let ((prev (org-export-get-previous-element footnote-reference info)))
|
|
|
- (when (and (listp prev) (eq (car prev) 'footnote-reference))
|
|
|
+ (when (eq (org-element-type prev) 'footnote-reference)
|
|
|
org-e-html-footnote-separator))
|
|
|
(cond
|
|
|
((not (org-export-footnote-first-reference-p footnote-reference info))
|
|
@@ -2092,7 +2094,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
|
|
"Transcode an HEADLINE element from Org to HTML.
|
|
|
CONTENTS holds the contents of the headline. INFO is a plist
|
|
|
holding contextual information."
|
|
|
- (let* ((numberedp (plist-get info :section-numbers))
|
|
|
+ (let* ((numberedp (org-export-numbered-headline-p headline info))
|
|
|
(level (org-export-get-relative-level headline info))
|
|
|
(todo (and (plist-get info :with-todo-keywords)
|
|
|
(let ((todo (org-element-property
|
|
@@ -2126,7 +2128,7 @@ holding contextual information."
|
|
|
CONTENTS holds the contents of the headline. INFO is a plist
|
|
|
holding contextual information."
|
|
|
(let* ((class (plist-get info :latex-class))
|
|
|
- (numberedp (plist-get info :section-numbers))
|
|
|
+ (numberedp (org-export-numbered-headline-p headline info))
|
|
|
;; Get level relative to current parsed data.
|
|
|
(level (org-export-get-relative-level headline info))
|
|
|
;; (class-sectionning (assoc class org-e-html-classes))
|
|
@@ -2396,8 +2398,8 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
|
|
(cond
|
|
|
((string= key "latex") value)
|
|
|
((string= key "index") (format "\\index{%s}" value))
|
|
|
- ((string= key "target")
|
|
|
- (format "\\label{%s}" (org-export-solidify-link-text value)))
|
|
|
+ ;; Invisible targets.
|
|
|
+ ((string= key "target") nil) ; FIXME
|
|
|
((string= key "toc")
|
|
|
(let ((value (downcase value)))
|
|
|
(cond
|
|
@@ -2545,50 +2547,58 @@ INFO is a plist holding contextual information. See
|
|
|
(cond
|
|
|
;; Image file.
|
|
|
(imagep (org-e-html-link--inline-image link info))
|
|
|
- ;; Target or radioed target: replace link with the normalized
|
|
|
- ;; custom-id/target name.
|
|
|
- ((member type '("target" "radio"))
|
|
|
+ ;; Radioed target: Target's name is obtained from original raw
|
|
|
+ ;; link. Path is parsed and transcoded in order to have a proper
|
|
|
+ ;; display of the contents.
|
|
|
+ ((string= type "radio")
|
|
|
(format "<a href=\"#%s\">%s</a>"
|
|
|
(org-export-solidify-link-text path)
|
|
|
- (or desc (org-export-secondary-string path 'e-html info))))
|
|
|
+ (org-export-secondary-string
|
|
|
+ (org-element-parse-secondary-string
|
|
|
+ path (cdr (assq 'radio-target org-element-object-restrictions)))
|
|
|
+ 'e-html info)))
|
|
|
;; Links pointing to an headline: Find destination and build
|
|
|
- ;; appropriate referencing commanding.
|
|
|
+ ;; appropriate referencing command.
|
|
|
((member type '("custom-id" "fuzzy" "id"))
|
|
|
(let ((destination (if (string= type "fuzzy")
|
|
|
(org-export-resolve-fuzzy-link link info)
|
|
|
(org-export-resolve-id-link link info))))
|
|
|
- ;; Fuzzy link points to a target. Do as above.
|
|
|
(case (org-element-type destination)
|
|
|
- (target
|
|
|
- (format "<a href=\"#%s\">%s</a>"
|
|
|
- (org-export-solidify-link-text (org-element-property
|
|
|
- :raw-value destination))
|
|
|
+ ;; Fuzzy link points nowhere.
|
|
|
+ ('nil
|
|
|
+ (format "<i>%s</i>"
|
|
|
(or desc (org-export-secondary-string
|
|
|
(org-element-property :raw-link link)
|
|
|
'e-html info))))
|
|
|
- ;; Fuzzy link points to an headline. If headlines are
|
|
|
- ;; numbered and the link has no description, display
|
|
|
- ;; headline's number. Otherwise, display description or
|
|
|
- ;; headline's title.
|
|
|
+ ;; Fuzzy link points to an invisible target.
|
|
|
+ (keyword nil)
|
|
|
+ ;; LINK points to an headline. If headlines are numbered
|
|
|
+ ;; and the link has no description, display headline's
|
|
|
+ ;; number. Otherwise, display description or headline's
|
|
|
+ ;; title.
|
|
|
(headline
|
|
|
- (let ((label
|
|
|
- (format "sec-%s"
|
|
|
- (mapconcat
|
|
|
- 'number-to-string
|
|
|
- (org-export-get-headline-number destination info)
|
|
|
- "-"))))
|
|
|
- (if (and (plist-get info :section-numbers) (not desc))
|
|
|
- (format "\\ref{%s}" label)
|
|
|
- (format "<a href=\"#%s\">%s</a>"
|
|
|
- label (or desc
|
|
|
- (org-export-secondary-string
|
|
|
- (org-element-property :title destination)
|
|
|
- 'e-html info))))))
|
|
|
- ;; Fuzzy link points nowhere.
|
|
|
+ (let* ((headline-no (org-export-get-headline-number destination info))
|
|
|
+ (label (format "sec-%s" (mapconcat 'number-to-string
|
|
|
+ headline-no "-")))
|
|
|
+ (section-no (mapconcat 'number-to-string headline-no ".")))
|
|
|
+ (setq desc
|
|
|
+ (cond
|
|
|
+ (desc desc)
|
|
|
+ ((plist-get info :section-numbers) section-no)
|
|
|
+ (t (org-export-secondary-string
|
|
|
+ (org-element-property :title destination)
|
|
|
+ 'e-html info))))
|
|
|
+ (format "<a href=\"#%s\">%s</a>" label desc)))
|
|
|
+ ;; Fuzzy link points to a target. Do as above.
|
|
|
(otherwise
|
|
|
- (format "<i>%s</i>" (or desc (org-export-secondary-string
|
|
|
- (org-element-property :raw-link link)
|
|
|
- 'e-html info)))))))
|
|
|
+ (let ((path (org-export-solidify-link-text path)))
|
|
|
+ (unless desc
|
|
|
+ (setq desc (let ((number (org-export-get-ordinal
|
|
|
+ destination info)))
|
|
|
+ (when number
|
|
|
+ (if (atom number) (number-to-string number)
|
|
|
+ (mapconcat 'number-to-string number "."))))))
|
|
|
+ (format "<a href=\"#%s\">%s</a>" path (or desc "FIXME")))))))
|
|
|
;; Coderef: replace link with the reference name or the
|
|
|
;; equivalent line number.
|
|
|
((string= type "coderef")
|
|
@@ -2635,7 +2645,7 @@ the plist used as a communication channel."
|
|
|
(class (cdr (assoc style '((footnote . "footnote")
|
|
|
(verse . nil)))))
|
|
|
(extra (if class (format " class=\"%s\"" class) ""))
|
|
|
- (parent (car (org-export-get-genealogy paragraph info))))
|
|
|
+ (parent (org-export-get-parent paragraph info)))
|
|
|
(cond
|
|
|
((and (equal (car parent) 'item)
|
|
|
(= (org-element-property :begin paragraph)
|
|
@@ -3060,13 +3070,13 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
|
|
|
|
|
;;;; Target
|
|
|
|
|
|
-(defun org-e-html-target (target text info)
|
|
|
+(defun org-e-html-target (target contents info)
|
|
|
"Transcode a TARGET object from Org to HTML.
|
|
|
-TEXT is the text of the target. INFO is a plist holding
|
|
|
-contextual information."
|
|
|
+CONTENTS is nil. INFO is a plist holding contextual
|
|
|
+information."
|
|
|
(let ((id (org-export-solidify-link-text
|
|
|
- (org-element-property :raw-value target))))
|
|
|
- (format "<a id=\"%s\" name=\"%s\">%s</a>" id id text)))
|
|
|
+ (org-element-property :value target))))
|
|
|
+ (format "<a id=\"%s\" name=\"%s\"/>" id id)))
|
|
|
|
|
|
|
|
|
;;;; Time-stamp
|