On Monday, December 23, 2013 4:25:50 PM HKT, Nicolas Goaziou wrote:
>
> James Harkins <jamshar...@gmail.com> writes:
>
>> One question, though: How would I determine the LaTeX document class
>> programmatically?
>
>
>   (plist-get info :latex-class)

Patch attached. The patch is based on release_8.2.4 (as noted in my bug
report from a few minutes ago, I can't perform any Beamer export against
current master). If it doesn't apply against master, I'll be happy to tweak
it, once the other bug is fixed.

Let me know if there are any other problems, say, LISP style errors. I
wrapped my change in a (let...) to isolate it from other bits of the code.

Tests:

- Export to beamer, presentation mode, without ignorenonframetext option:
Title appears in its own frame, exactly as before.

- Export to beamer, presentation mode, *with* ignorenonframetext option:
Title appears in its own frame. Without the patch, the title frame was
missing.

- Export to beamer, using article class and the beamerarticle package:
Title appears, without begin/end{frame} (same behavior as without the
patch).

I haven't signed FSF papers, though... I guess I should get on that.

hjh
From 1f70f3f41b266da204abd8dbcdddfefe648868eb Mon Sep 17 00:00:00 2001
From: James Harkins <jamshar...@dewdrop-world.net>
Date: Sat, 11 Jan 2014 11:59:32 +0800
Subject: [PATCH] ox-beamer: Wrap the title command in a frame for "beamer"
 class

This supports an option, described in the beamer user guide, for
supporting material using the beamerarticle package.

1. Write presentation contents in slides.
2. Write content /outside/ of slides for the print version.
3. To make #2 invisible in the slideshow, include "ignorenonframetext"
   in the LaTeX class options.

The problem was that Beamer export writes the title command outside of
a frame. So, the title frame disappears when using
ignorenonframetext. But, you don't want the title inside a frame for
article export.

The patch tests :latex-class. If it's "beamer," it adds \begin{frame}
before and \end{frame} after the title command.
---
 lisp/ox-beamer.el |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lisp/ox-beamer.el b/lisp/ox-beamer.el
index 2868944..9f8624f 100644
--- a/lisp/ox-beamer.el
+++ b/lisp/ox-beamer.el
@@ -871,13 +871,16 @@ holding export options."
      ;; 9. Document start.
      "\\begin{document}\n\n"
      ;; 10. Title command.
-     (org-element-normalize-string
+     (let ((titlecmd (org-element-normalize-string
       (cond ((string= "" title) nil)
 	    ((not (stringp org-latex-title-command)) nil)
 	    ((string-match "\\(?:[^%]\\|^\\)%s"
 			   org-latex-title-command)
 	     (format org-latex-title-command title))
-	    (t org-latex-title-command)))
+	    (t org-latex-title-command)))))
+       (if (string= (plist-get info :latex-class) "beamer")
+	   (format "\\begin{frame}%s\\end{frame}" titlecmd)
+	 titlecmd))
      ;; 11. Table of contents.
      (let ((depth (plist-get info :with-toc)))
        (when depth
-- 
1.7.9.5

Reply via email to