Function: org-beamer-headline
org-beamer-headline is a byte-compiled function defined in
ox-beamer.el.gz.
Signature
(org-beamer-headline HEADLINE CONTENTS INFO)
Documentation
Transcode HEADLINE element into Beamer code.
CONTENTS is the contents of the headline. INFO is a plist used as a communication channel.
Source Code
;; Defined in /usr/src/emacs/lisp/org/ox-beamer.el.gz
(defun org-beamer-headline (headline contents info)
"Transcode HEADLINE element into Beamer code.
CONTENTS is the contents of the headline. INFO is a plist used
as a communication channel."
(unless (org-element-property :footnote-section-p headline)
(let ((level (org-export-get-relative-level headline info))
(frame-level (org-beamer--frame-level headline info))
(environment (let ((env (org-element-property :BEAMER_ENV headline)))
(or (org-string-nw-p env) "block"))))
(cond
;; Case 1: Resume frame specified by "BEAMER_ref" property.
((equal environment "againframe")
(let ((ref (org-element-property :BEAMER_REF headline)))
;; Reference to frame being resumed is mandatory. Ignore
;; the whole headline if it isn't provided.
(when (org-string-nw-p ref)
(concat "\\againframe"
;; Overlay specification.
(let ((overlay (org-element-property :BEAMER_ACT headline)))
(when overlay
(org-beamer--normalize-argument
overlay
(if (string-match "\\`\\[.*\\]\\'" overlay) 'defaction
'action))))
;; Options.
(let ((options (org-element-property :BEAMER_OPT headline)))
(when options
(org-beamer--normalize-argument options 'option)))
;; Resolve reference provided by "BEAMER_ref"
;; property. This is done by building a minimal
;; fake link and calling the appropriate resolve
;; function, depending on the reference syntax.
(let ((target
(if (string-match "\\`\\(id:\\|#\\)" ref)
(org-export-resolve-id-link
`(link (:path ,(substring ref (match-end 0))))
info)
(org-export-resolve-fuzzy-link
`(link (:path
;; Look for headlines only.
,(if (eq (string-to-char ref) ?*) ref
(concat "*" ref))))
info))))
;; Now use user-defined label provided in TARGET
;; headline, or fallback to standard one.
(format "{%s}" (org-beamer--get-label target info)))))))
;; Case 2: Creation of an appendix is requested.
((equal environment "appendix")
(concat "\\appendix"
(org-element-property :BEAMER_ACT headline)
"\n"
(make-string (org-element-property :pre-blank headline) ?\n)
contents))
;; Case 3: Ignore heading.
((equal environment "ignoreheading")
(concat (make-string (org-element-property :pre-blank headline) ?\n)
contents))
;; Case 4: HEADLINE is a note.
((member environment '("note" "noteNH"))
(concat "\\note"
;; Overlay specification.
(let ((overlay (org-element-property :BEAMER_ACT headline)))
(when overlay
(org-beamer--normalize-argument
overlay
(if (string-match "\\`\\[.*\\]\\'" overlay)
'defaction 'action))))
(format "{%s}"
(concat (and (equal environment "note")
(concat
(org-export-data
(org-element-property :title headline)
info)
"\n"))
(org-trim contents)))))
;; Case 5: HEADLINE is a frame.
((= level frame-level)
(org-beamer--format-frame headline contents info))
;; Case 6: Regular section, extracted from
;; `org-latex-classes'.
((< level frame-level)
(org-beamer--format-section headline contents info))
;; Case 7: Otherwise, HEADLINE is a block.
(t (org-beamer--format-block headline contents info))))))