mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 21:37:50 +00:00
lisp/ox-beamer.el: constrain use of org-beamer-frame-environment
* lisp/ox-beamer.el (org-beamer--format-frame, org-beamer-template): Only use `org-beamer-frame-environment' when a frame is marked as fragile and the frame's contents include either \begin{frame} or \end{frame}. When `org-beamer-frame-environment' is used and not equal to "frame", add the property :beamer-define-frame to INFO and set it to t. When that property is t, `org-beamer-template' emits a definition of the alternative frame environment. Refs: https://list.orgmode.org/orgmode/87bk7jeik8.fsf@localhost/ https://list.orgmode.org/87a5nux3zr.fsf@t14.reltub.ca/T/
This commit is contained in:
parent
aa241ffd0b
commit
80615195c4
|
@ -429,8 +429,21 @@ used as a communication channel."
|
|||
;; among `org-beamer-verbatim-elements'.
|
||||
(org-element-map headline org-beamer-verbatim-elements 'identity
|
||||
info 'first-match))
|
||||
(frame (or (and fragilep org-beamer-frame-environment)
|
||||
"frame")))
|
||||
;; If FRAGILEP is non-nil and CONTENTS contains an occurrence
|
||||
;; of \begin{frame} or \end{frame}, then set the FRAME
|
||||
;; environment to be `org-beamer-frame-environment';
|
||||
;; otherwise, use "frame". If the selected environment is not
|
||||
;; "frame", then add the property :beamer-define-frame to
|
||||
;; INFO and set it to t.
|
||||
(frame (let ((selection
|
||||
(or (and fragilep
|
||||
(or (string-match-p "\\\\begin{frame}" contents)
|
||||
(string-match-p "\\\\end{frame}" contents))
|
||||
org-beamer-frame-environment)
|
||||
"frame")))
|
||||
(unless (string= selection "frame")
|
||||
(setq info (plist-put info :beamer-define-frame t)))
|
||||
selection)))
|
||||
(concat "\\begin{" frame "}"
|
||||
;; Overlay specification, if any. When surrounded by
|
||||
;; square brackets, consider it as a default
|
||||
|
@ -851,8 +864,8 @@ holding export options."
|
|||
(org-latex--insert-compiler info)
|
||||
;; Document class and packages.
|
||||
(org-latex-make-preamble info)
|
||||
;; Define the alternative frame environment.
|
||||
(unless (equal "frame" org-beamer-frame-environment)
|
||||
;; Define the alternative frame environment, if needed.
|
||||
(when (plist-get info :beamer-define-frame)
|
||||
(format "\\newenvironment<>{%s}[1][]{\\begin{frame}#2[environment=%1$s,#1]}{\\end{frame}}\n"
|
||||
org-beamer-frame-environment))
|
||||
;; Insert themes.
|
||||
|
|
Loading…
Reference in a new issue