Is there an equivalent of Org-mode's b_ignoreheading for non-beamer documents?

前端 未结 3 1404
有刺的猬
有刺的猬 2021-02-06 02:58

When using Org-mode to create beamer presentation it is possible to set the property of a heading such that the exported heading is not shown but only its contents. For instance

3条回答
  •  庸人自扰
    2021-02-06 03:32

    I found a simple solution for Emacs 24.4.1 and Org-mode 8.2.10 on Debian Jessie that removes tagged headlines before processing, so it removes their structure nodes too, not only the text.

    ;; ignore_heading tag in Org mode, based on the manual and func docs
    (defun ignored-headlines-removal (backend)
      "Remove all headlines with tag ignore_heading in the current buffer.
         BACKEND is the export back-end being used, as a symbol."
      (org-map-entries
       (lambda () (delete-region (point) (progn (forward-line) (point))))
       "ignore_heading"))
    
    (add-hook 'org-export-before-parsing-hook 'ignored-headlines-removal)
    

    I didn't make it export backend specific as it does not need to be. I also used the ignore_heading tag to make sure the ignoreheading tag in beamer export retains its function.

    Here is how I discovered it:

    1. I looked at the hook documentation in the Advanced confuguration section in the Org manual. It contains a hook example that ignores all headlines, almost what I needed, but I had to find a way to delete only headlines with the ignore_heading tag.
    2. I had a look at the documentation of the org-map-entries function (by typing C-h f org-map-entries RET in Emacs) and found out its optional second argument MATCH is an agenda-style match string that can match tags too.

    This experience once again showed me that Emacs truly is an extensible self-documenting editor. RTFM FTW!

提交回复
热议问题