;; options for the current frame ("fragile" option is added
;; automatically, though).
;;
-;; Every plain list has support for `:overlay' attribute (through
-;; ATTR_BEAMER affiliated keyword). Also, ordered (resp. description)
-;; lists make use of `:template' (resp. `:long-text') attribute.
+;; Every plain list has support for `:environment', `:overlay' and
+;; `:options' attributes (through ATTR_BEAMER affiliated keyword).
+;; The first one allows to use a different environment, the second
+;; sets overlay specifications and the last one inserts optional
+;; arguments in current list environment.
;;
;; Eventually, an export snippet with a value enclosed within angular
;; brackets put at the beginning of an element or object whose type is
;;;; Plain List
;;
-;; Plain lists support `:overlay' (for any type), `:template' (for
-;; ordered lists only) and `:long-text' (for description lists only)
+;; Plain lists support `:environment', `:overlay' and `:options'
;; attributes.
(defun org-e-beamer-plain-list (plain-list contents info)
contextual information."
(let* ((type (org-element-property :type plain-list))
(attributes (org-export-read-attribute :attr_beamer plain-list))
- (latex-type (cond ((eq type 'ordered) "enumerate")
- ((eq type 'descriptive) "description")
- (t "itemize"))))
+ (latex-type (let ((env (plist-get attributes :environment)))
+ (cond (env (format "%s" env))
+ ((eq type 'ordered) "enumerate")
+ ((eq type 'descriptive) "description")
+ (t "itemize")))))
(org-e-latex--wrap-label
plain-list
(format "\\begin{%s}%s%s\n%s\\end{%s}"
latex-type
;; Default overlay specification, if any.
- (let ((overlay (plist-get attributes :overlay)))
- (if (not overlay) ""
- (org-e-beamer--normalize-argument overlay 'defaction)))
+ (org-e-beamer--normalize-argument
+ (format "%s" (or (plist-get attributes :overlay) ""))
+ 'defaction)
;; Second optional argument depends on the list type.
- (case type
- (ordered
- (let ((template (plist-get attributes :template)))
- (if (not template) ""
- (org-e-beamer--normalize-argument template 'option))))
- (descriptive
- (let ((long-text (plist-get attributes :long-text)))
- (if (not long-text) ""
- (org-e-beamer--normalize-argument long-text 'option))))
- ;; There's no second argument for un-ordered lists.
- (otherwise ""))
+ (org-e-beamer--normalize-argument
+ (format "%s" (or (plist-get attributes :options) ""))
+ 'option)
;; Eventually insert contents and close environment.
contents
latex-type))))