auctex-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master d43bfae3: Overhaul beamer.el


From: Ikumi Keita
Subject: master d43bfae3: Overhaul beamer.el
Date: Thu, 15 Dec 2022 05:28:17 -0500 (EST)

branch: master
commit d43bfae3fa7aa016120da7a36ed46b83133e5ba4
Author: Ikumi Keita <ikumi@ikumi.que.jp>
Commit: Ikumi Keita <ikumi@ikumi.que.jp>

    Overhaul beamer.el
    
    * style/beamer.el (LaTeX-beamer-after-insert-env): Use `member'
    instead of `TeX-member'.
    Add comment.
    (TeX-arg-beamer-overlay-spec): Simplify by feature implemented
    recently in `TeX-arg-string'.
    (TeX-arg-beamer-default-overlay-spec): New function.
    (TeX-arg-beamer-frametitle,TeX-arg-beamer-note): Delete.
    (LaTeX-item-beamer): Accept optional argument for bibitem.
    Simplify.
    (LaTeX-bibitem-beamer): New function to use `LaTeX-item-beamer'.
    (LaTeX-beamer-search-themes): Use `length' instead of `string-width'.
    Use `substring-no-properties' instead of `substring'.
    (LaTeX-beamer-themes-list,LaTeX-beamer-inner-themes-list)
    (LaTeX-beamer-outer-themes-list,LaTeX-beamer-color-themes-list)
    (LaTeX-beamer-font-themes-list):
    New functions to use with `TeX-arg-completing-read'.
    (LaTeX-arg-beamer-theme,LaTeX-arg-beamer-inner-theme)
    (LaTeX-arg-beamer-outer-theme,LaTeX-arg-beamer-color-theme)
    (LaTeX-arg-beamer-font-theme):
    Turn into the above new functions.
    (LaTeX-beamer-env-frame): Factor out former lambda form into an
    individual function and adapt for new usage in
    `LaTeX-add-environments'.
    (LaTeX-beamer-section): New function to insert section commands as
    well as asking for their optional arguments.
    ("beamer"): Update support of section commands with the above new
    function.
    Add and improve input support for many macros and environments.
    Add syntax highlight support.
    Update local value of `LaTeX-clean-intermediate-suffixes' so that
    "Clean" command cleans .vrb files.
    (LaTeX-beamer-class-options): Update class options for current
    beamer.
    * style/beamerarticle.el ("beamerarticle"): Allow (sub)paragraph
    commands.
---
 style/beamer.el        | 702 +++++++++++++++++++++++++++++++++----------------
 style/beamerarticle.el |   6 +-
 2 files changed, 479 insertions(+), 229 deletions(-)

diff --git a/style/beamer.el b/style/beamer.el
index 589a26ad..9a33b348 100644
--- a/style/beamer.el
+++ b/style/beamer.el
@@ -1,8 +1,9 @@
 ;;; beamer.el --- AUCTeX style for the latex-beamer class  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2003-2021  Free Software Foundation, Inc.
+;; Copyright (C) 2003-2022  Free Software Foundation, Inc.
 
 ;; Author: Thomas Baumann <thomas.baumann@ch.tum.de>
+;; Maintainer: auctex-devel@gnu.org
 ;; Created: 2003-12-20
 ;; Keywords: tex
 
@@ -41,7 +42,7 @@
   "Do beamer-specific stuff after the insertion of an environment."
   ;; Add `fragile' as an optional argument to the frame environment if
   ;; a verbatim environment is inserted.
-  (when (and (TeX-member env (LaTeX-verbatim-environments) #'string-equal)
+  (when (and (member env (LaTeX-verbatim-environments))
              (save-excursion
                (goto-char start)
                (string-equal (LaTeX-current-environment) "frame")))
@@ -49,6 +50,7 @@
       (when (re-search-backward "\\\\begin[ \t]*{frame}" nil t)
         (let ((end-of-begin (match-end 0)))
           (goto-char end-of-begin)
+          ;; FIXME: Add support for skipping over overlay options.
           (while (forward-comment 1))
           (if (eq (char-after) (string-to-char LaTeX-optop))
               (progn
@@ -70,16 +72,26 @@
    (TeX-run-style-hooks "amsmath" "amssymb" "amsthm" "color" "geometry"
                         "hyperref" "inputenc" "translator" "xcolor")
 
-   (unless LaTeX-beamer-section-labels-flag
-     (make-local-variable 'LaTeX-section-hook)
-     (setq LaTeX-section-hook
-           '(LaTeX-section-heading
-             LaTeX-section-title
-             LaTeX-section-section)))
+   (LaTeX-section-list-add-locally
+    '(("part" 0)
+      ("section" 1)
+      ("subsection" 2)
+      ("subsubsection" 3))
+    t)
+   (LaTeX-largest-level-set "part")
+   (make-local-variable 'LaTeX-section-hook)
+   (setq LaTeX-section-hook
+         '(LaTeX-section-heading
+           LaTeX-section-title
+           LaTeX-beamer-section))
+   (if LaTeX-beamer-section-labels-flag
+       (setq LaTeX-section-hook
+             (append LaTeX-section-hook '(LaTeX-section-label))))
 
    (setq LaTeX-item-list
          (append '(("itemize" . LaTeX-item-beamer)
-                   ("enumerate" . LaTeX-item-beamer))
+                   ("enumerate" . LaTeX-item-beamer)
+                   ("thebibliography" . LaTeX-bibitem-beamer))
                  LaTeX-item-list))
 
    (setq LaTeX-default-document-environment "frame")
@@ -87,96 +99,240 @@
    (LaTeX-paragraph-commands-add-locally "frametitle")
 
    (TeX-add-symbols
-    '("alert" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("alt" [ TeX-arg-beamer-overlay-spec ] 2)
+    '("AtBeginSection" ["Special star text"] t)
+    '("AtBeginSubsection" ["Special star text"] t)
+    '("AtBeginSubsubsection" ["Special star text"] t)
+    '("AtBeginPart" t)
+    '("AtBeginLecture" t)
+    '("AtBeginNote" t)
+    '("AtEndNote" t)
+    '("action" [TeX-arg-beamer-overlay-spec "Action spec"] t)
+    '("againframe" [TeX-arg-beamer-overlay-spec]
+      [TeX-arg-beamer-default-overlay-spec]
+      ["Options"] "Frame label")
+    '("alert" [TeX-arg-beamer-overlay-spec] 1)
+    '("alt" TeX-arg-beamer-overlay-spec "Text on specified slides"
+      "Text on other slides")
+    '("appendix" [TeX-arg-beamer-overlay-spec "Mode spec"])
+    '("author" [LaTeX-arg-author "Short author names"] LaTeX-arg-author)
+    '("beamerdefaultoverlayspecification"
+      TeX-arg-beamer-default-overlay-spec)
     '("beamerbutton" 1)
     '("beamergotobutton" 1)
     '("beamerreturnbutton" 1)
     '("beamerskipbutton" 1)
-    '("frame" TeX-arg-beamer-frametitle)
+    '("column" [TeX-arg-beamer-overlay-spec] ["Placement(t,T,c,b)"]
+      (TeX-arg-length "Column width"))
+    '("date" [TeX-arg-date "Short date"] TeX-arg-date)
+    ;; Beamer frame macro is obsolete, and standard LaTeX frame macro
+    ;; is available in frame environment.
+    ;; '("frame" TeX-arg-beamer-frametitle)
+    "framebreak" "noframebreak"
+    '("framelatex" t)
     '("frametitle"
-      (TeX-arg-eval TeX-read-string "Title: " nil 
'LaTeX-beamer-frametitle-history))
-    '("hyperlink" [ TeX-arg-beamer-overlay-spec ] 2)
-    '("hyperlinkslideprev" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkslidenext" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkframestart" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkframeend" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkframestartnext" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkframeendprev" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkpresentationstart" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkpresentationend" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkappendixstart" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkappendixend" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkdocumentstart" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hyperlinkdocumentend" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("hypertarget" [ TeX-arg-beamer-overlay-spec ] 2)
-    '("institute" 1)
-    '("invisible" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("label" [ TeX-arg-beamer-overlay-spec ] 1)
+      [TeX-arg-beamer-overlay-spec] ["Short title"]
+      (TeX-arg-string "Title" nil LaTeX-beamer-frametitle-history))
+    '("framesubtitle" [TeX-arg-beamer-overlay-spec] "Subtitle")
+    '("framezoom" (TeX-arg-beamer-overlay-spec "Overlay having button")
+      (TeX-arg-beamer-overlay-spec "Zoomed overlay") ["Options"]
+      (TeX-arg-pair "Upper left X" "Upper left Y")
+      (TeX-arg-pair "Zoom area width" "Zoom area depth"))
+    '("hyperlink" [TeX-arg-beamer-overlay-spec] "Target name" t)
+    '("hyperlinkslideprev" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkslidenext" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkframestart" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkframeend" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkframestartnext" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkframeendprev" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinksectionstart" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinksectionend" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinksectionstartnext" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinksectionendprev" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinksubsectionstart" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinksubsectionend" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinksubsectionstartnext" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinksubsectionendprev" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkpresentationstart" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkpresentationend" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkappendixstart" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkappendixend" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkdocumentstart" [TeX-arg-beamer-overlay-spec] 1)
+    '("hyperlinkdocumentend" [TeX-arg-beamer-overlay-spec] 1)
+    '("hypertarget" [TeX-arg-beamer-overlay-spec] "Target name" t)
+    '("includegraphics" [TeX-arg-beamer-overlay-spec]
+      [LaTeX-arg-graphicx-includegraphics-key-val] LaTeX-arg-includegraphics)
+    '("includeonlyframes" "Frame label(s)")
+    '("includeonlylecture" "Lecture label")
+    '("includeslide" ["Options"] "Label")
+    '("institute" ["Short institute name"] t)
+    '("invisible" [TeX-arg-beamer-overlay-spec] 1)
+    '("keywords" t)
+    '("label" [TeX-arg-beamer-overlay-spec] TeX-arg-label)
+    '("lecture" ["Short lecture name"] "Lecture name" "Lecture label")
     '("logo" 1)
-    '("note" TeX-arg-beamer-note 1)
-    '("only" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("onslide" [ TeX-arg-beamer-overlay-spec ])
-    '("partpage")
+    '("mode" [TeX-arg-beamer-overlay-spec "Mode"] t)
+    "mode*"
+
+    ;; Adapted copies from latex.el
+    '("newcommand<>" TeX-arg-define-macro [TeX-arg-define-macro-arguments] t)
+    '("renewcommand<>" TeX-arg-macro [TeX-arg-define-macro-arguments] t)
+    '("newenvironment<>" TeX-arg-define-environment
+      [TeX-arg-define-macro-arguments] 2)
+    '("renewenvironment<>" TeX-arg-environment
+      [TeX-arg-define-macro-arguments] 2)
+
+    ;; TODO: Support the case \note is used outside frame env.
+    '("note" [TeX-arg-beamer-overlay-spec] ["Options"] t)
+    '("only" [TeX-arg-beamer-overlay-spec] 1)
+    '("onslide" [TeX-arg-beamer-overlay-spec])
+    "partpage"
     '("pause" ["Slide number"])
-    '("structure" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("temporal" [ TeX-arg-beamer-overlay-spec ] 3)
-    '("titlepage")
+    '("resetcounteronoverlays" TeX-arg-counter)
+    "sectionpage"
+    '("setbeameroption" t)
+    '("setbeamersize" t)
+    '("setjobnamebeamerversion" "Filename without extension")
+    '("structure" [TeX-arg-beamer-overlay-spec] 1)
+    "subsectionpage"
+    '("subtitle" ["Short subtitle"] t)
+    '("subject" t)
+    '("tableofcontents" ["Options"])
+    '("temporal" TeX-arg-beamer-overlay-spec
+      "Before slide text" "Default text" "After slide text")
+    "titlepage"
+    '("title" ["Short title"] t)
     '("titlegraphic" 1)
-    '("uncover" [ TeX-arg-beamer-overlay-spec ] 1)
-    '("usetheme" LaTeX-arg-beamer-theme)
-    '("useinnertheme" LaTeX-arg-beamer-inner-theme)
-    '("useoutertheme" LaTeX-arg-beamer-outer-theme)
-    '("usecolortheme" LaTeX-arg-beamer-color-theme)
-    '("usefonttheme" LaTeX-arg-beamer-font-theme)
-    '("usetheme" LaTeX-arg-beamer-theme)
-    '("visible" [ TeX-arg-beamer-overlay-spec ] 1))
+
+    '("transblindshorizontal" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transblindsvertical" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transboxin" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transboxout" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transcover" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transdissolve" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transfade" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transfly" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transglitter" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transpush" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transreplace" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transsplitverticalin" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transsplitverticalout" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transsplithorizontalin" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transsplithorizontalout" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transwipe" [TeX-arg-beamer-overlay-spec] ["Options"])
+    '("transduration" [TeX-arg-beamer-overlay-spec] "Seconds")
+
+    '("uncover" [TeX-arg-beamer-overlay-spec] t)
+    '("usetheme" ["Options"]
+      (TeX-arg-completing-read (LaTeX-beamer-themes-list) "Theme"))
+    '("useinnertheme" ["Options"]
+      (TeX-arg-completing-read (LaTeX-beamer-inner-themes-list) "Theme"))
+    '("useoutertheme" ["Options"]
+      (TeX-arg-completing-read (LaTeX-beamer-outer-themes-list) "Theme"))
+    '("usecolortheme" ["Options"]
+      (TeX-arg-completing-read (LaTeX-beamer-color-themes-list) "Theme"))
+    '("usefonttheme" ["Options"]
+      (TeX-arg-completing-read (LaTeX-beamer-font-themes-list) "Theme"))
+    '("setbeamercolor" "Beamer color" "Color specification")
+    '("setbeamercolor*" "Beamer color" "Color specification")
+    '("usebeamercolor" ["fg or bg"] "Beamer color")
+    '("usebeamercolor*" ["fg or bg"] "Beamer color")
+    '("setbeamerfont" "Beamer font" "Font attributes")
+    '("setbeamerfont*" "Beamer font" "Font attributes")
+    '("usebeamerfont" "Beamer font")
+    '("usebeamerfont*" "Beamer font")
+    '("setbeamertemplate" "Element" ["Predefined option"] t)
+    '("addtobeamertemplate" "Element" "Pre text" "Post test")
+    '("defbeamertemplate" [TeX-arg-beamer-overlay-spec "Mode spec"]
+      "Element" "Predefined option" [TeX-arg-define-macro-arguments] t)
+    '("defbeamertemplatealias" "Element" "New predefined option"
+      "Existing predefined option")
+    '("defbeamertemplateparent" "Parent template name"
+      ["Predefined option"] "Child template list"
+      [TeX-arg-define-macro-arguments] t)
+    '("ifbeamercolorempty" ["fg or bg"] "Beamer color name"
+      "If undefined" "If defined")
+    '("setbeamercovered" "Options")
+    '("opaqueness" [TeX-arg-beamer-overlay-spec] "Opaqueness (in %)")
+
+    '("visible" [TeX-arg-beamer-overlay-spec] 1))
+
+   ;; TODO: Font commands accept overlay specs.
+   ;; Support commands to manipulate templates?
 
    (LaTeX-add-environments
-    '("actionenv")
-    '("alertblock" 1)
-    '("beamerboxesrounded" 1)
-    '("block" (lambda (env &rest ignore)
-                (LaTeX-insert-environment
-                 env (format "{%s}" (TeX-read-string "Title: ")))))
-    '("column" "Width")
-    "columns"
-    "columnsonlytextwidth"
-    '("exampleblock" 1)
-    '("frame"  (lambda (env &rest ignore)
-                 (let ((title (TeX-read-string "(Optional) Title: " nil
-                                               
'LaTeX-beamer-frametitle-history)))
-                   (LaTeX-insert-environment env)
-                   (unless (zerop (length title))
-                     (save-excursion
-                       (LaTeX-find-matching-begin)
-                       (end-of-line)
-                       (LaTeX-newline)
-                       ;; Indent the next macro insertion and don't
-                       ;; rely on the fill-function to do it:
-                       (indent-according-to-mode)
-                       (insert (format "\\frametitle{%s}" title))
-                       ;; This works because \frametitle is a
-                       ;; paragraph command.
-                       (when auto-fill-function
-                         (backward-char)
-                         (LaTeX-fill-paragraph)))))))
-    '("onlyenv" (lambda (env &rest ignore)
-                  (LaTeX-insert-environment
-                   env
-                   (let ((overlay (TeX-read-string "(Optional) Overlay: ")))
-                     (unless (zerop (length overlay))
-                       (format "<%s>" overlay))))))
-    '("overlayarea" "Area width" "Area height")
-    '("overprint"  (lambda (env &rest ignore)
-                     (LaTeX-insert-environment
-                      env
-                      (let ((width (TeX-read-string "(Optional) Area width: 
")))
-                        (unless (zerop (length width))
-                          (format "[%s]" width))))))
-    "semiverbatim")
-
-   (LaTeX-largest-level-set "section")
+    '("abstract" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"])
+    '("actionenv" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"])
+    '("alertblock" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] "Title")
+    '("beamerboxesrounded" ["Options"] "Header")
+    '("beamercolorbox" ["Options"] "Beamer color")
+    '("block" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] "Title")
+    '("column" LaTeX-env-args [TeX-arg-beamer-overlay-spec]
+      ["Placement(t,T,c,b)"] (TeX-arg-length "Width"))
+    '("columns" LaTeX-env-args [TeX-arg-beamer-overlay-spec] ["Options"])
+    ;; FIXME: Not on user reference.
+    ;; "columnsonlytextwidth"
+    '("exampleblock" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] "Title")
+    '("frame" LaTeX-env-args [TeX-arg-beamer-overlay-spec]
+      [TeX-arg-beamer-default-overlay-spec]
+      [TeX-arg-key-val (("allowdisplaybreaks" ("0" "1" "2" "3" "4"))
+                        ("allowframebreaks") ("b") ("c") ("t") ("s")
+                        ("noframenumbering")
+                        ("fragile" ("singleslide"))
+                        ("environment") ("label") ("plain") ("shrink")
+                        ("squeeze"))]
+      LaTeX-beamer-env-frame)
+
+    '("onlyenv" LaTeX-env-args [TeX-arg-beamer-overlay-spec])
+    '("altenv" LaTeX-env-args [TeX-arg-beamer-overlay-spec]
+      "Begin text" "End text" "Alternate begin text" "Alternate end text")
+    '("visibleenv" LaTeX-env-args [TeX-arg-beamer-overlay-spec])
+    '("uncoverenv" LaTeX-env-args [TeX-arg-beamer-overlay-spec])
+    '("invisibleenv" LaTeX-env-args [TeX-arg-beamer-overlay-spec])
+
+    '("structureenv" LaTeX-env-args [TeX-arg-beamer-overlay-spec])
+    '("alertenv" LaTeX-env-args [TeX-arg-beamer-overlay-spec])
+
+    '("theorem" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] ["Additional text"])
+    '("corollary" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] ["Additional text"])
+    '("definition" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] ["Additional text"])
+    '("definitions" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] ["Additional text"])
+    '("fact" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] ["Additional text"])
+    '("lemma" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] ["Additional text"])
+    '("example" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] ["Additional text"])
+    '("examples" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] ["Additional text"])
+    '("proof" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"] ["Proof name"])
+
+    '("overlayarea" LaTeX-env-args
+      (TeX-arg-length "Area width") (TeX-arg-length "Area height"))
+    '("overprint" LaTeX-env-args [TeX-arg-length "Area width"])
+    "semiverbatim"
+
+    '("verse" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"])
+    '("quotation" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"])
+    '("quote" LaTeX-env-args
+      [TeX-arg-beamer-overlay-spec "Action spec"]))
+
+   ;; TODO: itemize, enumerate and description envs accept default
+   ;; overlay spec as optional argument.
+   ;; We definitely need more completion support for both macros and
+   ;; environments.
+
    (LaTeX-add-counters "lecture" "part" "section" "subsection" "subsubsection"
                        "subsectionslide" "framenumber" "figure" "table"
                        "beamerpauses")
@@ -192,7 +348,67 @@
                                 ("subtitle" "[{")
                                 ("author" "[{")
                                 ("date" "[{")
-                                ("frametitle" "<[{")) 'slide-title)))
+                                ("institute" "[{")
+                                ("frametitle" "<[{")
+                                ("framesubtitle" "<[{"))
+                              'slide-title)
+     (font-latex-add-keywords '(("item" "<[")
+                                ("bibitem" "<[{"))
+                              'textual)
+     (font-latex-add-keywords '(("textbf" "<{")
+                                ("textsc" "<{")
+                                ("textup" "<{"))
+                              'bold-command)
+     (font-latex-add-keywords '(("emph" "<{")
+                                ("textit" "<{")
+                                ("textsl" "<{"))
+                              'italic-command)
+     (font-latex-add-keywords '(("textmd" "<{")
+                                ("textrm" "<{")
+                                ("textsf" "<{")
+                                ("texttt" "<{")
+                                ("textnormal" "<{")
+                                ("textcolor" "<[{"))
+                              'type-command)
+     (font-latex-add-keywords '(("color" "<[{"))
+                              'type-declaration)
+     (font-latex-add-keywords '(("label" "<{")
+                                ("hyperlink" "<{{<")
+                                ("hypertarget" "<{{"))
+                              'reference)
+     (font-latex-add-keywords '(("pause" "[")
+                                ("logo" "{")
+                                ("newcommand" "<|{\\[[{")
+                                ("renewcommand" "<|{\\[[{")
+                                ("newenvironment" "<{[[{{")
+                                ("renewenvironment" "<{[[{{")
+                                ("AtBeginSection" "[{")
+                                ("AtBeginSubsection" "[{")
+                                ("AtBeginSubsubsection" "[{")
+                                ("AtBeginPart" "{")
+                                ("AtBeginLecture" "{")
+                                ("titlepage" "")
+                                ("sectionpage" "")
+                                ("subsectionpage" "")
+                                ("partpage" "")
+                                ("tableofcontents" "[")
+                                ("column" "<[{")
+                                ("againframe" "<[[{")
+                                ("usetheme" "[{")
+                                ("usecolortheme" "[{")
+                                ("usefonttheme" "[{")
+                                ("useinnertheme" "[{")
+                                ("useoutertheme" "[{")
+                                ("includeonlyframes" "{")
+                                ("includeonlylecture" "{"))
+                              'function)
+     (font-latex-add-keywords '(("resetcounteronoverlays" "{"))
+                              'variable))
+   ;; TODO: Adjust section commands to accept <> option.
+
+   ;; Additional intermediate files
+   (add-to-list (make-local-variable 'LaTeX-clean-intermediate-suffixes)
+                "\\.vrb"))
  TeX-dialect)
 
 (defun TeX-arg-beamer-overlay-spec (optional &optional prompt)
@@ -200,47 +416,55 @@
 If OPTIONAL is non-nil, insert the specification only if
 non-empty and enclosed in \"<>\".  PROMPT replaces the standard
 one."
-  (let ((TeX-arg-opening-brace "<")
-        (TeX-arg-closing-brace ">"))
-    (TeX-argument-insert
-     (TeX-read-string
-      (TeX-argument-prompt optional prompt "Overlay"))
-     optional)
-    (indent-according-to-mode)))
-
-(defun TeX-arg-beamer-frametitle (_optional &optional _prompt)
-  "Prompt for the frametitle."
-  (let ((title (TeX-read-string "Title: " nil 
'LaTeX-beamer-frametitle-history)))
-    (if (not (zerop (length title)))
-        (insert TeX-grop TeX-esc "frametitle" TeX-grop
-                title TeX-grcl TeX-grcl)
-      (insert TeX-grop TeX-grcl))))
-
-(defun LaTeX-item-beamer ()
-  "Insert a new item with an optional overlay argument. You
-can turn off the prompt for the overlay argument by setting
-`LaTeX-beamer-item-overlay-flag' to nil. Calling the function
+  (TeX-arg-string optional (or prompt "Overlay") nil nil nil "<" ">")
+  (indent-according-to-mode))
+
+(defun TeX-arg-beamer-default-overlay-spec (optional)
+  "Prompt for default overlay specification.
+If OPTIONAL is non-nil, insert the specification only if
+non-empty and enclosed in \"<>\".  If empty and OPTIONAL is nil,
+insert just \"{}\"."
+  (let ((spec (TeX-read-string
+               (TeX-argument-prompt optional nil "Default overlay"))))
+    (cond
+     ((< 0 (length spec))
+      (TeX-argument-insert (concat "<" spec ">") optional))
+     ((not optional)
+      ;; Clear default for \beamerdefaultoverlayspecification.
+      (insert TeX-grop TeX-grcl))
+     (t
+      ;; Nop for clarity.
+      nil))))
+
+;; (defun TeX-arg-beamer-frametitle (_optional &optional _prompt)
+;;   "Prompt for the frametitle."
+;;   (let ((title (TeX-read-string "Title: " nil 
'LaTeX-beamer-frametitle-history)))
+;;     (if (not (zerop (length title)))
+;;         (insert TeX-grop TeX-esc "frametitle" TeX-grop
+;;                 title TeX-grcl TeX-grcl)
+;;       (insert TeX-grop TeX-grcl))))
+
+(defun LaTeX-item-beamer (&optional macro)
+  "Insert a new item with an optional overlay argument.
+You can turn off the prompt for the overlay argument by setting
+`LaTeX-beamer-item-overlay-flag' to nil.  Calling the function
 with a prefix argument prompts for the overlay specification
-unconditionally."
-  (if (listp current-prefix-arg)
-      (setq current-prefix-arg (car current-prefix-arg))
-    current-prefix-arg)
-  (TeX-insert-macro "item")
+unconditionally.
+
+Optional MACRO can be, for example, \"bibitem\"."
+  (TeX-insert-macro (or macro "item"))
   (delete-horizontal-space)
   (if (or current-prefix-arg LaTeX-beamer-item-overlay-flag)
-      (TeX-arg-beamer-overlay-spec 0))
-  (insert " ")
-  (indent-according-to-mode))
+      (TeX-arg-beamer-overlay-spec t))
+  (insert " "))
 
-(defun TeX-arg-beamer-note (_optional &optional _prompt)
-  "Prompt for overlay specification and optional argument."
-  (let ((overlay (TeX-read-string "(Optional) Overlay: "))
-        (options (TeX-read-string "(Optional) Options: ")))
-    (unless (zerop (length overlay))
-      (insert "<" overlay ">"))
-    (unless (zerop (length options))
-      (insert "[" options "]"))
-    (indent-according-to-mode)))
+(defun LaTeX-bibitem-beamer ()
+  "Insert a new bibitem with an optional overlay argument.
+You can turn off the prompt for the overlay argument by setting
+`LaTeX-beamer-item-overlay-flag' to nil.  Calling the function
+with a prefix argument prompts for the overlay specification
+unconditionally."
+  (LaTeX-item-beamer "bibitem"))
 
 (defun LaTeX-beamer-search-themes (&optional regexp extensions length)
   "Search for beamer themes matching REGEXP with EXTENSIONS.
@@ -252,7 +476,7 @@ also be a string.  Then the length of the string is used."
          (chars (cond ((integerp length)
                        length)
                       ((stringp length)
-                       (string-width length))
+                       (length length))
                       ;; Try some DWIM magic...
                       ((and (not length)
                             (string-match "beamer[A-Za-z0-9]*theme" match))
@@ -265,117 +489,139 @@ also be a string.  Then the length of the string is 
used."
               (lambda (file)
                 (let ((case-fold-search nil))
                   (and (numberp (string-match match file))
-                       (substring file chars))))
+                       (substring-no-properties file chars))))
               (TeX-search-files nil exts t t))))))
 
-(defun LaTeX-arg-beamer-theme (&rest _ignore)
-  "Prompt for beamer theme with completion."
-  (TeX-argument-insert
-   (completing-read
-    (TeX-argument-prompt nil nil "Theme")
-    (mapcar #'list
-            (cond ((eq LaTeX-beamer-themes 'local)
-                   (set (make-local-variable 'LaTeX-beamer-themes)
-                        (LaTeX-beamer-search-themes)))
-                  ((functionp LaTeX-beamer-themes)
-                   (funcall LaTeX-beamer-themes))
-                  ((listp LaTeX-beamer-themes)
-                   LaTeX-beamer-themes)
-                  (t (error
-                      "`LaTeX-beamer-themes' should be a list: `%s'"
-                      LaTeX-beamer-themes))))
-    nil nil nil)
-   t))
-
-(defun LaTeX-arg-beamer-inner-theme (&rest _ignore)
-  "Prompt for beamer inner theme with completion."
-  (TeX-argument-insert
-   (completing-read
-    (TeX-argument-prompt nil nil "Theme")
-    (mapcar #'list
-            (cond ((eq LaTeX-beamer-inner-themes 'local)
-                   (set (make-local-variable 'LaTeX-beamer-inner-themes)
-                        (LaTeX-beamer-search-themes "^beamerinnertheme")))
-                  ((functionp LaTeX-beamer-inner-themes)
-                   (funcall LaTeX-beamer-inner-themes))
-                  ((listp LaTeX-beamer-inner-themes)
-                   LaTeX-beamer-inner-themes)
-                  (t (error
-                      "`LaTeX-beamer-inner-themes' should be a list: `%s'"
-                      LaTeX-beamer-inner-themes))))
-    nil nil nil)
-   t))
-
-(defun LaTeX-arg-beamer-outer-theme (&rest _ignore)
-  "Prompt for beamer outer theme with completion."
-  (TeX-argument-insert
-   (completing-read
-    (TeX-argument-prompt nil nil "Theme")
-    (mapcar #'list
-            (cond ((eq LaTeX-beamer-outer-themes 'local)
-                   (set (make-local-variable 'LaTeX-beamer-outer-themes)
-                        (LaTeX-beamer-search-themes "^beameroutertheme")))
-                  ((functionp LaTeX-beamer-outer-themes)
-                   (funcall LaTeX-beamer-outer-themes))
-                  ((listp LaTeX-beamer-outer-themes)
-                   LaTeX-beamer-outer-themes)
-                  (t (error
-                      "`LaTeX-beamer-outer-themes' should be a list: `%s'"
-                      LaTeX-beamer-outer-themes))))
-    nil nil nil)
-   t))
-
-(defun LaTeX-arg-beamer-color-theme (&rest _ignore)
-  "Prompt for beamer color theme with completion."
-  (TeX-argument-insert
-   (completing-read
-    (TeX-argument-prompt nil nil "Theme")
-    (mapcar #'list
-            (cond ((eq LaTeX-beamer-color-themes 'local)
-                   (set (make-local-variable 'LaTeX-beamer-color-themes)
-                        (LaTeX-beamer-search-themes "^beamercolortheme")))
-                  ((functionp LaTeX-beamer-color-themes)
-                   (funcall LaTeX-beamer-color-themes))
-                  ((listp LaTeX-beamer-color-themes)
-                   LaTeX-beamer-color-themes)
-                  (t (error
-                      "`LaTeX-beamer-color-themes' should be a list: `%s'"
-                      LaTeX-beamer-color-themes))))
-    nil nil nil)
-   t))
-
-(defun LaTeX-arg-beamer-font-theme (&rest _ignore)
-  "Prompt for beamer font theme with completion."
-  (TeX-argument-insert
-   (completing-read
-    (TeX-argument-prompt nil nil "Theme")
-    (mapcar #'list
-            (cond ((eq LaTeX-beamer-font-themes 'local)
-                   (set (make-local-variable 'LaTeX-beamer-font-themes)
-                        (LaTeX-beamer-search-themes "^beamerfonttheme")))
-                  ((functionp LaTeX-beamer-font-themes)
-                   (funcall LaTeX-beamer-font-themes))
-                  ((listp LaTeX-beamer-font-themes)
-                   LaTeX-beamer-font-themes)
-                  (t (error
-                      "`LaTeX-beamer-font-themes' should be a list: `%s'"
-                      LaTeX-beamer-font-themes))))
-    nil nil nil)
-   t))
+(defun LaTeX-beamer-themes-list ()
+  "Return a list of beamer themes for completion."
+  (cond ((eq LaTeX-beamer-themes 'local)
+         (set (make-local-variable 'LaTeX-beamer-themes)
+              (LaTeX-beamer-search-themes)))
+        ((functionp LaTeX-beamer-themes)
+         (funcall LaTeX-beamer-themes))
+        ((listp LaTeX-beamer-themes)
+         LaTeX-beamer-themes)
+        (t (error
+            "`LaTeX-beamer-themes' should be a list: `%s'"
+            LaTeX-beamer-themes))))
+
+(defun LaTeX-beamer-inner-themes-list ()
+  "Return a list of beamer inner themes for completion."
+  (cond ((eq LaTeX-beamer-inner-themes 'local)
+         (set (make-local-variable 'LaTeX-beamer-inner-themes)
+              (LaTeX-beamer-search-themes "^beamerinnertheme")))
+        ((functionp LaTeX-beamer-inner-themes)
+         (funcall LaTeX-beamer-inner-themes))
+        ((listp LaTeX-beamer-inner-themes)
+         LaTeX-beamer-inner-themes)
+        (t (error
+            "`LaTeX-beamer-inner-themes' should be a list: `%s'"
+            LaTeX-beamer-inner-themes))))
+
+(defun LaTeX-beamer-outer-themes-list ()
+  "Return a list of beamer outer themes for completion."
+  (cond ((eq LaTeX-beamer-outer-themes 'local)
+         (set (make-local-variable 'LaTeX-beamer-outer-themes)
+              (LaTeX-beamer-search-themes "^beameroutertheme")))
+        ((functionp LaTeX-beamer-outer-themes)
+         (funcall LaTeX-beamer-outer-themes))
+        ((listp LaTeX-beamer-outer-themes)
+         LaTeX-beamer-outer-themes)
+        (t (error
+            "`LaTeX-beamer-outer-themes' should be a list: `%s'"
+            LaTeX-beamer-outer-themes))))
+
+(defun LaTeX-beamer-color-themes-list ()
+  "Return a list of beamer color themes for completion."
+  (cond ((eq LaTeX-beamer-color-themes 'local)
+         (set (make-local-variable 'LaTeX-beamer-color-themes)
+              (LaTeX-beamer-search-themes "^beamercolortheme")))
+        ((functionp LaTeX-beamer-color-themes)
+         (funcall LaTeX-beamer-color-themes))
+        ((listp LaTeX-beamer-color-themes)
+         LaTeX-beamer-color-themes)
+        (t (error
+            "`LaTeX-beamer-color-themes' should be a list: `%s'"
+            LaTeX-beamer-color-themes))))
+
+(defun LaTeX-beamer-font-themes-list ()
+  "Return a list of beamer font themes for completion."
+  (cond ((eq LaTeX-beamer-font-themes 'local)
+         (set (make-local-variable 'LaTeX-beamer-font-themes)
+              (LaTeX-beamer-search-themes "^beamerfonttheme")))
+        ((functionp LaTeX-beamer-font-themes)
+         (funcall LaTeX-beamer-font-themes))
+        ((listp LaTeX-beamer-font-themes)
+         LaTeX-beamer-font-themes)
+        (t (error
+            "`LaTeX-beamer-font-themes' should be a list: `%s'"
+            LaTeX-beamer-font-themes))))
+
+(defun LaTeX-beamer-env-frame (_ignored)
+  "Insert beamer frame environment title."
+  (let ((title (TeX-read-string "(Optional) Title: " nil
+                                'LaTeX-beamer-frametitle-history)))
+    (unless (zerop (length title))
+      (save-excursion
+        (LaTeX-newline)
+        ;; Indent the next macro insertion and don't rely on the
+        ;; fill-function to do it:
+        (indent-according-to-mode)
+        (insert (format "\\frametitle{%s}" title))
+        ;; This works because \frametitle is a paragraph command.
+        (when auto-fill-function
+          (backward-char)
+          (LaTeX-fill-paragraph))))))
+
+(defun LaTeX-beamer-section ()
+  "Hook to prompt for beamer section and insert it."
+  (let ((star (string-suffix-p "*" LaTeX-name))
+        mode-spec short-title)
+    (when (and LaTeX-level (< LaTeX-level 4))
+      (setq mode-spec (TeX-read-string "(Optional) Mode spec: ")
+            short-title (unless star
+                          (TeX-read-string "(Optional) Short title: "))))
+    ;; The rest of this function is adapted copy of
+    ;; `LaTeX-section-section'.
+    (unless (save-excursion
+              (re-search-backward
+               (concat "^\\s-*\n\\s-*\\=\\|^\\s-*" (regexp-quote TeX-esc)
+                       "begin")
+               (line-beginning-position 0) t))
+      (LaTeX-newline))
+    (insert TeX-esc (if star
+                        (substring-no-properties LaTeX-name 0 -1)
+                      LaTeX-name))
+    (if (< 0 (length mode-spec))
+        (insert "<" mode-spec ">"))
+    (if star (insert "*"))
+    (if (< 0 (length short-title))
+        (insert LaTeX-optop short-title LaTeX-optcl))
+    (insert TeX-grop)
+    (if (zerop (length LaTeX-title))
+        (set-marker LaTeX-done-mark (point)))
+    (insert LaTeX-title TeX-grcl)
+    (LaTeX-newline)
+    ;; If RefTeX is available, tell it that we've just made a new section
+    (and (fboundp 'reftex-notice-new-section)
+         (reftex-notice-new-section))))
 
 (defun LaTeX-beamer-class-options ()
   "Read the beamer class options from the user."
   (TeX-load-style "hyperref")
+  (TeX-load-style "color")
+  (TeX-load-style "xcolor")
   (TeX-read-key-val t '(("usepdftitle" ("false")) ("envcountsect")
                         ("notheorems") ("noamsthm") ("compress") ("t") ("c")
-                        ("leqno") ("fleqn") ("handout") ("trans") ("pdftex")
-                        ("nativepdf") ("pdfmark") ("dvips") ("dviwindo")
-                        ("dvipsone") ("vtex") ("ps2pdf") ("ignorenonframetext")
+                        ("leqno") ("fleqn") ("handout") ("trans")
+                        ("ignorenonframetext") ("onlytextwidth")
                         ("noamssymb") ("bigger") ("smaller") ("8pt") ("9pt")
                         ("10pt") ("11pt") ("12pt") ("14pt") ("17pt") ("20pt")
                         ("draft") ("CJK") ("cjk") ("pgf")
                         ("hyperref" LaTeX-hyperref-package-options-list)
-                        ("color") ("xcolor") ("ucs") ("utf8x") ("utf8")
-                        ("aspectratio" ("1610" "169" "149" "54" "43" "32")))))
+                        ("color" LaTeX-color-package-options)
+                        ("xcolor" LaTeX-xcolor-package-options)
+                        ("ucs") ("utf8x") ("utf8")
+                        ("aspectratio" ("2013" "1610" "169" "149" "141" "54" 
"43" "32")))))
 
 ;;; beamer.el ends here
diff --git a/style/beamerarticle.el b/style/beamerarticle.el
index 136947ac..09d58163 100644
--- a/style/beamerarticle.el
+++ b/style/beamerarticle.el
@@ -32,4 +32,8 @@
 (TeX-add-style-hook
  "beamerarticle"
  (lambda ()
-   (TeX-run-style-hooks "beamer")))
+   (TeX-run-style-hooks "beamer")
+
+   (LaTeX-section-list-add-locally
+    '(("paragraph" 4)
+      ("subparagraph" 5)))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]