org-odt.el: Honor "[TABLE-OF-CONTENTS]" directive

* lisp/org-odt.el (org-odt-format-preamble): Don't insert TOC here.
Delay it till the end of export.
(org-odt-begin-document-body): Make a note of the default
position of TOC in `org-lparse-dyn-first-heading-pos'.
(org-odt-insert-toc): Insert TOC as directed by
[TABLE-OF-CONTENTS] line or at the default position.
(org-odt-end-export): Call `org-odt-insert-toc'.

Fix for the following bug:
http://lists.gnu.org/archive/html/emacs-orgmode/2012-01/msg00974.html
This commit is contained in:
Jambunathan K 2012-01-27 12:50:19 +05:30 committed by Eric Schulte
parent 8c16d85476
commit 2ac428a21d
1 changed files with 16 additions and 4 deletions

View File

@ -35,7 +35,20 @@
:tag "Org Export ODT"
:group 'org-export)
(defun org-odt-insert-toc ()
(goto-char (point-min))
(cond
((re-search-forward
"\\(<text:p [^>]*>\\)?\\s-*\\[TABLE-OF-CONTENTS\\]\\s-*\\(</text:p>\\)?"
nil t)
(goto-char (match-beginning 0))
(replace-match ""))
(t
(goto-char org-lparse-dyn-first-heading-pos))
(insert (org-odt-format-toc))))
(defun org-odt-end-export ()
(org-odt-insert-toc)
(org-odt-fixup-label-references)
;; remove empty paragraphs
@ -611,13 +624,12 @@ PUB-DIR is set, use this as the publishing directory."
'("<text:date style:data-style-name=\"%s\" text:date-value=\"%s\">"
. "</text:date>") date "N75" iso-date))
;; separator
"<text:p text:style-name=\"OrgSubtitle\"/>"))
;; toc
(org-odt-format-toc))))
"<text:p text:style-name=\"OrgSubtitle\"/>")))))
(defun org-odt-begin-document-body (opt-plist)
(org-odt-begin-office-body)
(insert (org-odt-format-preamble opt-plist)))
(insert (org-odt-format-preamble opt-plist))
(setq org-lparse-dyn-first-heading-pos (point)))
(defvar org-lparse-body-only) ; let bound during org-do-lparse
(defvar org-lparse-to-buffer) ; let bound during org-do-lparse