1 ;;; beamer.el --- AUCTeX style for the latex-beamer class
3 ;; Copyright (C) 2004 Thomas Baumann
4 ;; License: GPL, see the file COPYING in the base directory of AUCTeX
6 ;; Author: Thomas Baumann <thomas.baumann@ch.tum.de>
8 ;; Version: $Id: beamer.el,v 1.3 2004/04/29 05:07:22 tantau Exp $
13 ;; This file adds support for the latex-beamer class.
15 ;; This file is intended to be used with the AUCTeX-Package.
16 ;; Put this File into your TeX-style-path. You may also
17 ;; byte-compile this file.
20 (TeX-add-style-hook "beamer"
23 (defvar beamer-use-section-labels-flag nil
24 "Controls whether section labels are added")
25 (unless beamer-use-section-labels-flag
26 (make-local-variable 'LaTeX-section-hook)
27 (setq LaTeX-section-hook
28 '(LaTeX-section-heading
30 LaTeX-section-section)))
33 (append '(("itemize" . LaTeX-item-beamer)
34 ("enumerate" . LaTeX-item-beamer))
39 '("alt" TeX-arg-beamer-overlay-spec 2)
41 '("beamergotobutton" 1)
42 '("beamerreturnbutton" 1)
43 '("beamerskipbutton" 1)
44 '("frame" TeX-arg-beamer-frametitle)
46 '("hyperlink" TeX-arg-beamer-overlay-spec 2)
47 '("hyperlinkslideprev" TeX-arg-beamer-overlay-spec 1)
48 '("hyperlinkslidenext" TeX-arg-beamer-overlay-spec 1)
49 '("hyperlinkframestart" TeX-arg-beamer-overlay-spec 1)
50 '("hyperlinkframeend" TeX-arg-beamer-overlay-spec 1)
51 '("hyperlinkframestartnext" TeX-arg-beamer-overlay-spec 1)
52 '("hyperlinkframeendprev" TeX-arg-beamer-overlay-spec 1)
53 '("hyperlinkpresentationstart" TeX-arg-beamer-overlay-spec 1)
54 '("hyperlinkpresentationend" TeX-arg-beamer-overlay-spec 1)
55 '("hyperlinkappendixstart" TeX-arg-beamer-overlay-spec 1)
56 '("hyperlinkappendixend" TeX-arg-beamer-overlay-spec 1)
57 '("hyperlinkdocumentstart" TeX-arg-beamer-overlay-spec 1)
58 '("hyperlinkdocumentend" TeX-arg-beamer-overlay-spec 1)
59 '("hypertarget" TeX-arg-beamer-overlay-spec 2)
61 '("invisible" TeX-arg-beamer-overlay-spec 1)
62 '("label" TeX-arg-beamer-overlay-spec 1)
64 '("note" TeX-arg-beamer-note 1)
65 '("only" TeX-arg-beamer-overlay-spec 1)
66 '("onslide" TeX-arg-beamer-overlay-spec)
69 '("structure" TeX-arg-beamer-overlay-spec 1)
70 '("temporal" TeX-arg-beamer-overlay-spec 3)
73 '("uncover" TeX-arg-beamer-overlay-spec 1)
74 '("visible" TeX-arg-beamer-overlay-spec 1)
77 (LaTeX-add-environments
80 '("beamerboxesrounded" 1)
84 "columnsonlytextwidth"
86 '("onlyenv" (lambda (env &rest ignore)
87 (LaTeX-insert-environment
89 (let ((overlay (read-input "Overlay: ")))
90 (if (not (zerop (length overlay)))
91 (format "<%s>" overlay))))))
92 '("overlayarea" "Area width" "Area height")
93 '("overprint" (lambda (env &rest ignore)
94 (LaTeX-insert-environment
96 (let ((overlay (read-input "Overlay: ")))
97 (if (not (zerop (length overlay)))
98 (format "{%s}" overlay)))))))
102 (defun TeX-arg-beamer-overlay-spec (optional &optional prompt)
103 "Prompt for overlay specification."
104 (let ((overlay (read-input "Overlay: ")))
105 (if (not (zerop (length overlay)))
106 (progn (insert "<" overlay ">")))
107 (indent-according-to-mode)))
109 (defun TeX-arg-beamer-frametitle (optional &optional prompt)
110 "Prompt for the frametitle."
111 (let ((title (read-input "What title: ")))
112 (if (not (zerop (length title)))
113 (progn (insert TeX-grop TeX-esc "frametitle" TeX-grop
114 title TeX-grcl TeX-grcl))
115 (progn (insert TeX-grop TeX-grcl)))))
117 (defun LaTeX-item-beamer ()
118 "Insert a new item with an optional overlay argument."
119 (TeX-insert-macro "item")
120 (delete-horizontal-space)
121 (TeX-arg-beamer-overlay-spec 0)
123 (indent-according-to-mode))
125 (defun TeX-arg-beamer-note (optional &optional prompt)
126 "Prompt for overlay specification and optional argument."
127 (let ((overlay (read-input "Overlay: "))
128 (options (read-input "Options: ")))
129 (if (not (zerop (length overlay)))
130 (progn (insert "<" overlay ">")))
131 (if (not (zerop (length options)))
132 (progn (insert "[" options "]")))
133 (indent-according-to-mode)))