From 08f163ee4891e49d8884e7c43418b9091badfb11 Mon Sep 17 00:00:00 2001 From: Matthew Gidden Date: Mon, 9 Mar 2015 16:25:15 -0500 Subject: [PATCH] ox-beamer.el: Update BEAMER_HEADER placement * lisp/ox-beamer.el (`beamer-header'): Move BEAMER_HEADER injection to final part of preamble (after themes, title, etc.). Allows for custom short titles, etc., with #+BEAMER_HEADER: \title[Short]{Long}. * doc/org.texi: Updated BEAMER_HEADER entry with a relevant footnote. Previously, TITLE, etc., was being injected after BEAMER_HEADER, so short titles (and related) could not be added. BEAMER_HEADER now serves as a final preamble injection point. TINYCHANGE --- doc/org.texi | 8 +++++--- lisp/ox-beamer.el | 23 +++++++++++++---------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index edb6cf0..6c72302 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -11038,9 +11038,11 @@ Beamer export introduces a number of keywords to insert code in the document's header. Four control appearance of the presentation: @code{#+BEAMER_THEME}, @code{#+BEAMER_COLOR_THEME}, @code{#+BEAMER_FONT_THEME}, @code{#+BEAMER_INNER_THEME} and -@code{#+BEAMER_OUTER_THEME}. All of them accept optional arguments -within square brackets. The last one, @code{#+BEAMER_HEADER}, is more -generic and allows you to append any line of code in the header. +@code{#+BEAMER_OUTER_THEME}. All of them accept optional arguments within +square brackets. The last one, @code{#+BEAMER_HEADER}, is more generic and +allows you to append any line of code in the header@footnote{Lines are +appended at the end of the header/preamble, allowing for any final +customization such as the inclusion of short titles}. @example #+BEAMER_THEME: Rochester [height=20pt] diff --git a/lisp/ox-beamer.el b/lisp/ox-beamer.el index e10d36c..359ccdc 100644 --- a/lisp/ox-beamer.el +++ b/lisp/ox-beamer.el @@ -239,7 +239,7 @@ Return overlay specification, as a string, or nil." (:beamer-font-theme "BEAMER_FONT_THEME" nil nil t) (:beamer-inner-theme "BEAMER_INNER_THEME" nil nil t) (:beamer-outer-theme "BEAMER_OUTER_THEME" nil nil t) - (:beamer-header-extra "BEAMER_HEADER" nil nil newline) + (:beamer-header "BEAMER_HEADER" nil nil newline) (:beamer-environments-extra nil nil org-beamer-environments-extra) (:beamer-frame-default-options nil nil org-beamer-frame-default-options) (:beamer-outline-frame-options nil nil org-beamer-outline-frame-options) @@ -825,8 +825,7 @@ holding export options." (concat (org-element-normalize-string (plist-get info :latex-header)) (org-element-normalize-string - (plist-get info :latex-header-extra)) - (plist-get info :beamer-header-extra))))) + (plist-get info :latex-header-extra)))))) info))) ;; 3. Insert themes. (let ((format-theme @@ -866,16 +865,20 @@ holding export options." (format "\\date{%s}\n" (org-export-data date info))) ;; 7. Title (format "\\title{%s}\n" title) - ;; 8. Hyperref options. + ;; 8. Beamer-header + (let ((beamer-header (plist-get info :beamer-header))) + (when beamer-header + (format "%s\n" (plist-get info :beamer-header)))) + ;; 9. Hyperref options. (when (plist-get info :latex-hyperref-p) (format "\\hypersetup{\n pdfkeywords={%s},\n pdfsubject={%s},\n pdfcreator={%s}}\n" (or (plist-get info :keywords) "") (or (plist-get info :description) "") (if (not (plist-get info :with-creator)) "" (plist-get info :creator)))) - ;; 9. Document start. + ;; 10. Document start. "\\begin{document}\n\n" - ;; 10. Title command. + ;; 11. Title command. (org-element-normalize-string (cond ((not (plist-get info :with-title)) nil) ((string= "" title) nil) @@ -884,7 +887,7 @@ holding export options." org-latex-title-command) (format org-latex-title-command title)) (t org-latex-title-command))) - ;; 11. Table of contents. + ;; 12. Table of contents. (let ((depth (plist-get info :with-toc))) (when depth (concat @@ -896,16 +899,16 @@ holding export options." (format "\\setcounter{tocdepth}{%d}\n" depth)) "\\tableofcontents\n" "\\end{frame}\n\n"))) - ;; 12. Document's body. + ;; 13. Document's body. contents - ;; 13. Creator. + ;; 14. Creator. (let ((creator-info (plist-get info :with-creator))) (cond ((not creator-info) "") ((eq creator-info 'comment) (format "%% %s\n" (plist-get info :creator))) (t (concat (plist-get info :creator) "\n")))) - ;; 14. Document end. + ;; 15. Document end. "\\end{document}"))) -- 1.9.1