diff --git a/contrib/lisp/org-e-beamer.el b/contrib/lisp/org-e-beamer.el index b69eca7a9..3956d6b7a 100644 --- a/contrib/lisp/org-e-beamer.el +++ b/contrib/lisp/org-e-beamer.el @@ -256,6 +256,7 @@ brackets. Return overlay specification, as a string, or nil." ;;; Define Back-End (org-export-define-derived-backend e-beamer e-latex + :export-block "BEAMER" :options-alist ((:beamer-theme "BEAMER_THEME" nil org-e-beamer-theme) (:beamer-color-theme "BEAMER_COLOR_THEME" nil nil t) diff --git a/contrib/lisp/org-export.el b/contrib/lisp/org-export.el index 246cb7a77..892ded6ab 100644 --- a/contrib/lisp/org-export.el +++ b/contrib/lisp/org-export.el @@ -861,21 +861,33 @@ the parent back-end. BODY can start with pre-defined keyword arguments. The following keywords are understood: - `:filters-alist' + :export-block + + String, or list of strings, representing block names that + will not be parsed. This is used to specify blocks that will + contain raw code specific to the back-end. These blocks + still have to be handled by the relative `export-block' type + translator. + + :filters-alist Alist of filters that will overwrite or complete filters - defined in PARENT back-end, if any. + defined in PARENT back-end. See `org-export-filters-alist' + for more a list of allowed filters. - `:options-alist' + :options-alist - Alist of buffer keywords or #+OPTIONS items that will - overwrite or complete those defined in PARENT back-end, if - any. + Alist of back-end specific properties that will overwrite or + complete those defined in PARENT back-end. Refer to + `org-export-options-alist' for more information about + structure of the values. - `:translate-alist' + :translate-alist Alist of element and object types and transcoders that will overwrite or complete transcode table from PARENT back-end. + Refer to `org-export-define-backend' for detailed information + about transcoders. As an example, here is how one could define \"my-latex\" back-end as a variant of `e-latex' back-end with a custom template @@ -886,17 +898,28 @@ function: The back-end could then be called with, for example: - \(org-export-to-buffer 'my-latex \"*Test my-latex\")" - (declare (debug (&define name symbolp [&rest keywordp sexp] def-body)) + \(org-export-to-buffer 'my-latex \"*Test my-latex*\")" + (declare (debug (&define name sexp [&rest [keywordp sexp]] def-body)) (indent 2)) (let (filters options translate) (while (keywordp (car body)) (case (pop body) + (:export-block (let ((names (pop body))) + (setq export-block + (if (consp names) (mapcar 'upcase names) + (list (upcase names)))))) (:filters-alist (setq filters (pop body))) (:options-alist (setq options (pop body))) (:translate-alist (setq translate (pop body))) (t (pop body)))) `(progn + ;; Tell parser to not parse EXPORT-BLOCK blocks. + ,(when export-block + `(mapc + (lambda (name) + (add-to-list 'org-element-block-name-alist + `(,name . org-element-export-block-parser))) + ',export-block)) ;; Define filters. ,(let ((parent-filters (intern (format "org-%s-filters-alist" parent)))) (when (or (boundp parent-filters) filters) @@ -913,9 +936,10 @@ See `org-export-filters-alist' for more information."))) ',(append options (and (boundp parent-options) (copy-sequence (symbol-value parent-options)))) - "Alist between LaTeX export properties and ways to set them. + ,(format "Alist between %s export properties and ways to set them. See `org-export-options-alist' for more information on the -structure of the values."))) +structure of the values." + child)))) ;; Define translators. (defvar ,(intern (format "org-%s-translate-alist" child)) ',(append translate @@ -1992,9 +2016,10 @@ Any element in `:ignore-list' will be skipped when using ;; a plist, is required as the third argument. ;; ;; From the developer side, filters sets can be installed in the -;; process with the help of `org-BACKEND-filters-alist' variable. -;; Each association has a key among the following symbols and -;; a function or a list of functions as value. +;; process with the help of `org-export-define-backend', which +;; internally sets `org-BACKEND-filters-alist' variable. Each +;; association has a key among the following symbols and a function or +;; a list of functions as value. ;; ;; - `:filter-parse-tree' applies directly on the complete parsed ;; tree. It's the only filters set that doesn't apply to a string.