Hi Rasmus,

I wasn't aware of this functionality being added to ox-extra, thank you for
pointing it out.
I've revised my patch to accommodate your suggestions and attached the new
version. Now it excludes noexport tagged headlines from removal and
promotes child headlines.
Using properties for this is also possible because the match string can
match properties too. I just find tags simpler for this case.
I'm trying to point out that something like this is often needed and a
definitive solution should be listed somewhere, preferably in the manual.
Otherwise someone looking for a solution to this common problem will end up
finding only half-baked, possibly broken examples.

Kind regards,
Ondřej Grover

On Sun, Apr 12, 2015 at 3:32 PM, Rasmus <ras...@gmx.us> wrote:

> Hi,
>
> Thanks for the patch. I have not read it as I'm on the mobile.
>
> What is the difference between your patch and org-export-ignore-headlines
> in
> ox-extra?
>
> If you want the functionality in ox.el you should write a solution that
> uses
> a property like UNNUMBERED. It's however a non-trivial problem as discussed
> on the org-hacks worg page. This is, IMO, the right way to tackle this
> issue, if it is an issue.
>
> Skimming the so answer you link to your suggestion is not robust for
> ignored
> headlines following a no export headline.
>
>
> Rasmus
>
>
>
From 9c75f9796a0fe4d270b72b503b318ddb6e4e3954 Mon Sep 17 00:00:00 2001
From: Ondrej Grover <ondrej.gro...@gmail.com>
Date: Sun, 12 Apr 2015 13:43:31 +0200
Subject: [PATCH] org.texi: Extend export hook example with ignore_heading tag
 support

* doc/org.texi (Advanced configuration): Extend the pre-processing
export hook example to support similar (but simpler and more general)
functionality like that provided by the ignoreheading tag in the
Beamer export backend.  This is a commonly requested snippet and the
Internet is full of much worse and broken solutions, so the manual
should show the recommended solution.

TINYCHANGE
---
 doc/org.texi | 37 ++++++++++++++++++++++++-------------
 1 file changed, 24 insertions(+), 13 deletions(-)

diff --git a/doc/org.texi b/doc/org.texi
index c400f77..cc75a79 100644
--- a/doc/org.texi
+++ b/doc/org.texi
@@ -13806,29 +13806,40 @@ with @code{M-x org-html-convert-region-to-html RET}.
 
 @vindex org-export-before-processing-hook
 @vindex org-export-before-parsing-hook
-Two hooks are run during the first steps of the export process.  The first
-one, @code{org-export-before-processing-hook} is called before expanding
-macros, Babel code and include keywords in the buffer.  The second one,
-@code{org-export-before-parsing-hook}, as its name suggests, happens just
-before parsing the buffer.  Their main use is for heavy duties, that is
-duties involving structural modifications of the document.  For example, one
-may want to remove every headline in the buffer during export.  The following
+Two hooks are run during the first steps of the export process.  The
+first one, @code{org-export-before-processing-hook} is called before
+expanding macros, Babel code and include keywords in the buffer.  The
+second one, @code{org-export-before-parsing-hook}, as its name suggests,
+happens just before parsing the buffer.  Their main use is for heavy
+duties, that is duties involving structural modifications of the
+document. For example, one may want to remove every headline with the
+@samp{ignore_heading} tag (excluding those with the @samp{noexport} tag)
+in the buffer and promote their children during export.  The following
 code can achieve this:
 
 @lisp
 @group
-(defun my-headline-removal (backend)
-  "Remove all headlines in the current buffer.
+(defun ignored-headlines-removal (backend)
+  "Remove all headlines with the ignore_headline tag in the current buffer
+and promote all child headlines underneath them.
 BACKEND is the export back-end being used, as a symbol."
   (org-map-entries
-   (lambda () (delete-region (point) (progn (forward-line) (point))))))
+   (lambda () (progn (org-map-tree 'org-promote)
+		     (delete-region (point) (point-at-eol))))
+   "+ignore_heading-noexport"))
 
-(add-hook 'org-export-before-parsing-hook 'my-headline-removal)
+(add-hook 'org-export-before-parsing-hook 'ignored-headlines-removal)
 @end group
 @end lisp
 
-Note that functions used in these hooks require a mandatory argument,
-a symbol representing the back-end used.
+The second argument to the @code{org-map-entries} function is an
+agenda-style match query string (@pxref{Matching tags and properties}).
+Note the underscore in the tag, it is not recommended to use the
+@samp{ignoreheading} tag because the Beamer export backend treates it in
+a similar, yet more complicated way.  It may also be useful to exclude
+the @samp{ignore_heading} tag from inheritance (@pxref{Tag
+inheritance}).  Also note that functions used in these hooks require a
+mandatory argument, a symbol representing the back-end used.
 
 @subheading Filters
 
-- 
2.1.4

Reply via email to