소스 검색

Fix handling of internal links and new html doctype option.

* contrib/lisp/ox-deck.el (deck): Add deck specific link function.
(org-deck-toc): Generate correct link to slide for custom ids as well
as default section ids.
(org-deck-link): HTML custom ids link to the headline. deck.js
requires linking to the wrapper (slide) so modify the link to point at
the container instead of the headline.
(org-deck-template): Fix doctype handling to use alist option instead
of literal string.
Rick Frankel 11 년 전
부모
커밋
2347dcf76b
1개의 변경된 파일16개의 추가작업 그리고 5개의 파일을 삭제
  1. 16 5
      contrib/lisp/ox-deck.el

+ 16 - 5
contrib/lisp/ox-deck.el

@@ -68,6 +68,7 @@
   '((headline . org-deck-headline)
     (inner-template . org-deck-inner-template)
     (item . org-deck-item)
+    (link . org-deck-link)
     (template . org-deck-template)))
 
 (defgroup org-export-deck nil
@@ -298,11 +299,13 @@ and have the id \"title-slide\"."
          (cons
           (if (and class (string-match-p "\\<slide\\>" class))
               (format
-               "<a href='#outline-container-sec-%s'>%s</a>"
+               "<a href='#outline-container-%s'>%s</a>"
                (or (org-element-property :CUSTOM_ID headline)
-                   (mapconcat
-                    'number-to-string
-                    (org-export-get-headline-number headline info) "-"))
+		   (concat
+		    "sec-"
+		    (mapconcat
+		     'number-to-string
+		     (org-export-get-headline-number headline info) "-")))
                title)
             title)
           (org-export-get-relative-level headline info))))
@@ -373,6 +376,10 @@ the \"slide\" class will be added to the to the list element,
         (replace-regexp-in-string "^<li>" "<li class='slide'>" text)
       text)))
 
+(defun org-deck-link (link desc info)
+  (replace-regexp-in-string "href=\"#" "href=\"#outline-container-"
+			    (org-html-link link desc info)))
+
 (defun org-deck-template (contents info)
   "Return complete document string after HTML conversion.
 CONTENTS is the transcoded contents string.  INFO is a plist
@@ -385,7 +392,11 @@ holding export options."
     (mapconcat
      'identity
      (list
-      (plist-get info :html-doctype)
+      (let* ((dt (plist-get info :html-doctype))
+	     (dt-cons (assoc dt org-html-doctype-alist)))
+	(if dt-cons
+	    (cdr dt-cons)
+	  dt))
       (let ((lang (plist-get info :language)))
         (mapconcat
          (lambda (x)