summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLawrence Mitchell <wence@gmx.li>2011-03-23 14:38:18 +0000
committerBastien Guerry <bzg@altern.org>2011-03-23 15:04:59 +0100
commit9f57b8e85d185fbf3f9788fd4099709d512dedd1 (patch)
treeba5bc5623a3468d56ce0c3caea15ecd4b9fe842f
parent087d94b4882f8118a6e48436b0abc0ba4e79900f (diff)
downloadorg-mode-9f57b8e85d185fbf3f9788fd4099709d512dedd1.tar.gz
Allow mixed export of numbered and unnumbered sections in HTML
* lisp/org-html.el (org-export-as-html): Get local value of org-export-with-section-numbers from the buffer's plist. Deal specially with the case the resulting value is an integer. (org-html-level-start): New optional argument of the option plist used instead of `org-export-with-section-numbers'. Also deal specially with the case that the value is an integer. When `org-export-with-section-numbers' (or the buffer-local :section-numbers option) is an integer, we now export the first NUM levels of headings with numbers and lower-level headings without.
-rw-r--r--lisp/org-html.el24
1 files changed, 18 insertions, 6 deletions
diff --git a/lisp/org-html.el b/lisp/org-html.el
index b13fb93..06305f6 100644
--- a/lisp/org-html.el
+++ b/lisp/org-html.el
@@ -1150,6 +1150,7 @@ PUB-DIR is set, use this as the publishing directory."
(language (plist-get opt-plist :language))
(keywords (plist-get opt-plist :keywords))
(description (plist-get opt-plist :description))
+ (num (plist-get opt-plist :section-numbers))
(lang-words nil)
(head-count 0) cnt
(start 0)
@@ -1355,7 +1356,7 @@ lang=\"%s\" xml:lang=\"%s\">
(if (string-match quote-re0 txt)
(setq txt (replace-match "" t t txt)))
(setq snumber (org-section-number level))
- (if org-export-with-section-numbers
+ (if (and num (integerp num) (>= num level))
(setq txt (concat snumber " " txt)))
(if (<= level (max umax umax-toc))
(setq head-count (+ head-count 1)))
@@ -1591,7 +1592,7 @@ lang=\"%s\" xml:lang=\"%s\">
(setq first-heading-pos (or first-heading-pos (point)))
(org-html-level-start level txt umax
(and org-export-with-toc (<= level umax))
- head-count)
+ head-count opt-plist)
;; QUOTES
(when (string-match quote-re line)
@@ -1684,7 +1685,7 @@ lang=\"%s\" xml:lang=\"%s\">
(org-html-level-start 1 nil umax
(and org-export-with-toc (<= level umax))
- head-count)
+ head-count opt-plist)
;; the </div> to close the last text-... div.
(when (and (> umax 0) first-heading-pos) (insert "</div>\n"))
@@ -2330,7 +2331,7 @@ If there are links in the string, don't modify these."
(insert (if (equal type "d") "</dd>\n" "</li>\n")))
(defvar body-only) ; dynamically scoped into this.
-(defun org-html-level-start (level title umax with-toc head-count)
+(defun org-html-level-start (level title umax with-toc head-count &optional opt-plist)
"Insert a new level in HTML export.
When TITLE is nil, just close all open levels."
(org-close-par-maybe)
@@ -2341,6 +2342,7 @@ When TITLE is nil, just close all open levels."
(preferred (and target
(cdr (assoc target org-export-preferred-target-alist))))
(l org-level-max)
+ (num (plist-get opt-plist :section-numbers))
snumber snu href suffix)
(setq extra-targets (remove (or preferred target) extra-targets))
(setq extra-targets
@@ -2395,10 +2397,20 @@ When TITLE is nil, just close all open levels."
(setq snumber (org-section-number level)
snu (replace-regexp-in-string "\\." "_" snumber))
(setq level (+ level org-export-html-toplevel-hlevel -1))
- (if (and org-export-with-section-numbers (not body-only))
+ (if (and num (not body-only))
(setq title (concat
(format "<span class=\"section-number-%d\">%s</span>"
- level snumber)
+ level
+ (if (and (integerp num)
+ ;; fix up num to take into
+ ;; account the top-level
+ ;; heading value
+ (>= (+ num
+ org-export-html-toplevel-hlevel
+ -1)
+ level))
+ snumber
+ ""))
" " title)))
(unless (= head-count 1) (insert "\n</div>\n"))
(setq href (cdr (assoc (concat "sec-" snu) org-export-preferred-target-alist)))