2013/9/30 Rasmus <ras...@gmx.us>: > Hi Sebastian, > > Sebastian Wiesner <lunary...@gmail.com> writes: > >> can I limit a subtree to be exported with specific backends only? >> I.e. only to HTML, but not Texinfo or LaTeX? >> >> Background: I am trying to simplify the documentation of one of my >> projects, and combine the website and the user manual into a single >> document. Naturally, there is some content on the website that should >> not appear in the manual and vice versa. > > As Sebastien suggests, if you can identify export status depending on > tags you can do it with a filter.
Great, I think I will go by this way… I presume, I can set "org-export-filter-options-functions" as a directory-local variable, so that this kind of export restrictions only applies to Org mode documents in the specific project. > Here's an example that's perhaps a bit too verbose and not thoroughly > tested: > > #+BEGIN_SRC Org > #+TITLE: Conditional export > #+options: tags:nil > * Common intro > txt > ** Pdf heading :latex: > the math is really pretty! > ** HTML heading :html: > the text features hyperlinks! > ** More common notes > Intro over > > * Code :noexport: > #+begin_src emacs-lisp > (defun rasmus/conditional-export (settings backend) > "Change SETTINGS to include dynamically set export-tags. > > Enable the use of BACKEND as EXPORT_TAGS. A derived backend is > treated as its parent." > (let ((backends (remove-duplicates > (mapcar (lambda (x) > (or (org-export-backend-parent x) > (org-export-backend-name x))) > org-export--registered-backends))) > ;; for treating derived backend and parent backends differently: > ;; (backend-or-parent backend) > (backend-or-parent (dolist (b org-export--registered-backends > return) > (when (eq (org-export-backend-name b) backend) > (return (or (org-export-backend-parent b) > (org-export-backend-name b))))))) > (plist-put > settings :exclude-tags > (append (plist-get settings :exclude-tags) > (mapcar 'symbol-name > (remove backend-or-parent backends)))))) > > (add-to-list 'org-export-filter-options-functions > 'rasmus/conditional-export) > #+end_src > #+END_SRC Do I understand correctly, that this code adds all *other* backends to the "exclude-tags" setting, instead of adding the current one to "select-tags"? Is there a specific reason to do this? Just adding "backend" to "select-tags" seems simpler to me, and I wonder whether "exclude-tags" even behaves correctly for headlines with more than one tag. As far as I understand the Org manual, it would exclude headlines tagged as ":html:latex:" when exporting to "html", because "latex" is added as exclude-tag, preventing the headline from being exported.