1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-11-25 07:27:57 +00:00

Slideshow bugfixes and sync with ox-html function name changes.

* contrib/lisp/ox-deck.el: Default org-deck-directories to "./deck.js".
(org-deck-toc): Sync w/ ox-html name change (org-html--toc-text.)
(org-deck-inner-template): Remove duplicate toc generation code.
* contrib/lisp/ox-s5.el: Add inner template to fix duplicate content
  div error.
(org-s5-toc): Sync w/ ox-html name change (org-html--toc-text) and
make toc entries static since s5 doesn't support deep linking.
This commit is contained in:
Rick Frankel 2013-02-26 14:26:27 -05:00 committed by Nicolas Goaziou
parent 86563e0119
commit 43297f9ab7
2 changed files with 37 additions and 19 deletions

View File

@ -37,6 +37,7 @@
;; works (it is derived from ox-html.)
(require 'ox-html)
(eval-when-compile (require 'cl))
(org-export-define-derived-backend deck html
:menu-entry
@ -62,9 +63,7 @@
(:deck-include-extensions "DECK_INCLUDE_EXTENSIONS" nil
org-deck-include-extensions split)
(:deck-exclude-extensions "DECK_EXCLUDE_EXTENSIONS" nil
org-deck-exclude-extensions split)
(:deck-directories "DECK_DIRECTORIES" nil
org-deck-directories split))
org-deck-exclude-extensions split))
:translate-alist
((headline . org-deck-headline)
(inner-template . org-deck-inner-template)
@ -76,7 +75,7 @@
:tag "Org Export DECK"
:group 'org-export-html)
(defcustom org-deck-directories nil
(defcustom org-deck-directories '("./deck.js")
"Directories to search for deck.js components (jquery,
modernizr; core, extensions and themes directories.)"
:group 'org-export-deck
@ -250,7 +249,7 @@ Note that the wrapper div must include the class \"slide\"."
"<div id=\"table-of-contents\" class=\"slide\">\n"
(format "<h2>%s</h2>\n"
(org-html--translate "Table of Contents" info))
(org-html-toc-text
(org-html--toc-text
(mapcar
(lambda (headline)
(let* ((class (org-element-property :HTML_CONTAINER_CLASS headline))
@ -269,7 +268,7 @@ Note that the wrapper div must include the class \"slide\"."
"</?a[^>]*>" ""
(org-export-data
(org-element-property :title headline) info)))))
(list
(cons
(if (and class (string-match-p "\\<slide\\>" class))
(format
"<a href='#outline-container-%s'>%s</a>"
@ -319,17 +318,11 @@ Note that the wrapper div must include the class \"slide\"."
(list :scripts (nreverse scripts) :sheets (nreverse sheets)
:snippets snippets)))
(defun org-html-inner-template (contents info)
(defun org-deck-inner-template (contents info)
"Return body of document string after HTML conversion.
CONTENTS is the transcoded contents string. INFO is a plist
holding export options."
(concat
;; Table of contents.
(let ((depth (plist-get info :with-toc)))
(when depth (org-deck-toc depth info)))
;; Document contents.
contents
"\n"))
(concat contents "\n"))
(defun org-deck-headline (headline contents info)
(let ((org-html-toplevel-hlevel 2)

View File

@ -74,6 +74,7 @@
:translate-alist
((headline . org-s5-headline)
(plain-list . org-s5-plain-list)
(inner-template . org-s5-inner-template)
(template . org-s5-template)))
(defgroup org-export-s5 nil
@ -150,20 +151,37 @@ Note that the wrapper div must include the class \"slide\"."
:type 'string)
(defun org-s5--format-toc-headline (headline info)
"Return an appropriate table of contents entry for HEADLINE.
Note that (currently) the S5 exporter does not support deep links,
so the table of contents is not \"active\".
INFO is a plist used as a communication channel."
(let* ((headline-number (org-export-get-headline-number headline info))
(section-number
(and (not (org-export-low-level-p headline info))
(org-export-numbered-headline-p headline info)
(concat (mapconcat 'number-to-string headline-number ".") ". ")))
(tags (and (eq (plist-get info :with-tags) t)
(org-export-get-tags headline info))))
(concat section-number
(org-export-data
(org-export-get-alt-title headline info) info)
(and tags "&nbsp;&nbsp;&nbsp;") (org-html--tags tags))))
(defun org-s5-toc (depth info)
(let* ((headlines (org-export-collect-headlines info depth))
(toc-entries
(loop for headline in headlines collect
(list (org-html-format-headline--wrap
headline info 'org-html-format-toc-headline)
(org-export-get-relative-level headline info)))))
(mapcar (lambda (headline)
(cons (org-s5--format-toc-headline headline info)
(org-export-get-relative-level headline info)))
(org-export-collect-headlines info depth))))
(when toc-entries
(concat
"<div id=\"table-of-contents\" class=\"slide\">\n"
(format "<h1>%s</h1>\n"
(org-html--translate "Table of Contents" info))
"<div id=\"text-table-of-contents\">"
(org-html-toc-text toc-entries)
(org-html--toc-text toc-entries)
"</div>\n"
"</div>\n"))))
@ -240,6 +258,12 @@ which will make the list into a \"build\"."
("date" . ,(nth 0 (plist-get info :date)))
("file" . ,(plist-get info :input-file))))
(defun org-s5-inner-template (contents info)
"Return body of document string after HTML conversion.
CONTENTS is the transcoded contents string. INFO is a plist
holding export options."
(concat contents "\n"))
(defun org-s5-template (contents info)
"Return complete document string after HTML conversion.
CONTENTS is the transcoded contents string. INFO is a plist
@ -270,6 +294,7 @@ holding export options."
;; title page
(org-fill-template
org-s5-title-page-template (org-s5-template-alist info))
;; table of contents.
(let ((depth (plist-get info :with-toc)))
(when depth (org-s5-toc depth info)))
contents