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
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:
ignore_heading
tag.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!
There is no default support for what you are asking. However you can use a preprocess hook to get a similar output. Here is an example for LaTeX export:
;; backend aware export preprocess hook
(defun sa-org-export-preprocess-hook ()
"My backend aware export preprocess hook."
(save-excursion
(when (eq org-export-current-backend 'latex)
;; ignoreheading tag for bibliographies and appendices
(let* ((tag "ignoreheading"))
(org-map-entries (lambda ()
(delete-region (point-at-bol) (point-at-eol)))
(concat ":" tag ":"))))))
(add-hook 'org-export-preprocess-hook 'sa-org-export-preprocess-hook)
This is a snippet from my org-mode setup. You can see the original on
github.
The above code will ignore headings tagged with ignoreheading
, e.g.
* Heading 1
* Heading 2 :ignoreheading:
+ Some text
+ an item
gets exported as:
\section{Heading 1}
\label{sec-1}
\begin{itemize}
\item Some text
\item an item
\end{itemize}
Caveat: There is a known issue with this solution. It does not work when you try this on the very first headline. I don't understand why that is the case, hopefully I'll have time someday to investigate.
Workaround to caveat: The above limitation can be circumvented for LaTeX export by using a line like this after the org file header:
\include{preamble.tex}
The preamble.tex
file can include sections like an abstract or
acknowledgements. However you should note this makes your org file very
closely tied to the export backend. It would become non-trivial to
export the same org file to HTML for example.
Note: For a similar setup with the new export framework (Org 8.0 or higher), use the following:
(defun sa-ignore-headline (contents backend info)
"Ignore headlines with tag `ignoreheading'."
(when (and (org-export-derived-backend-p backend 'latex 'html 'ascii)
(string-match "\\`.*ignoreheading.*\n"
(downcase contents)))
(replace-match "" nil nil contents)))
(add-to-list 'org-export-filter-headline-functions 'sa-ignore-headline)
Now you can do this easily with ox-extra
. Add the following to your init
file:
(require 'ox-extra)
(ox-extras-activate '(ignore-headlines))
Then any headings with ignore
tag will be ignored, while their content will still be exported.