Sebastian Wiesner <lunary...@gmail.com> writes: > 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.
Probably. There was some discussions on it lately. Check the archive. >> 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? Let me know if it doesn't work as desired and share your improvements. I didn't do proper testing as I don't fully appreciate all corner cases of the use case. On select tag, you can use it if you like how this document works #+SELECT_TAGS: latex * common intro test ** html intro :html: html ** latex :latex: latex * common next section Next section > 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. You should be able to test this in a normal org document. –Rasmus -- C is for Cookie