使用组织模式创建beamer presentation时,可以设置标题的property,以便不显示导出的标题,只显示其内容。例如,以下
#+title: Test
#+options: toc:nil
#+latex_class: beamer
#+startup: beamer
#+BEAMER_FRAME_LEVEL: 2
* Ignored heading :B_ignoreheading:
:PROPERTIES:
:BEAMER_env: ignoreheading
:END:
Text
结果只有一个框架,只有“文本”而没有标题。这种功能是否适用于非beamer文档?也就是说,是否可以告诉Org-mode不导出标题而只导出其内容?例如,是否可以使Org-mode导出以下
#+title: Test
* Ignored heading
Text
不导出标题“忽略标题”但只导出“文字”?
如果我导出
#+title: Test
*
Text
(注意*
之后的空间)到LaTeX我得到以下内容(我只包括相关部分):
\section{}
Text
但这不是我想要的。我希望在导出中完全忽略标题,以便我得到以下内容(同样我只包括相关部分):
Text
答案 0 :(得分:8)
您所要求的内容没有默认支持。但是你可以使用 一个预处理钩子来获得类似的输出。以下是LaTeX导出的示例:
;; 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)
这是我的组织模式设置的片段。你可以看到原件
github。
上面的代码将忽略标有ignoreheading
的标题,例如
* Heading 1
* Heading 2 :ignoreheading:
+ Some text
+ an item
导出为:
\section{Heading 1}
\label{sec-1}
\begin{itemize}
\item Some text
\item an item
\end{itemize}
警告:此解决方案存在已知问题。它 当你在第一个标题上尝试这个时,它不起作用。我不 明白为什么会这样,希望有一天我会有时间 调查。
解决方法需要注意:以上限制可以 通过在组织之后使用这样的行来规避LaTeX导出 文件头:
\include{preamble.tex}
preamble.tex
文件可以包含抽象或
确认。但是你应该注意这会使你的组织文件非常好
与出口后端密切相关。这将变得非常重要
例如,将相同的组织文件导出为HTML。
注意:对于使用新导出框架的类似设置(Org 8.0或更高版本),使用以下内容:
(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)
答案 1 :(得分:3)
我在Debian Jessie上找到了Emacs 24.4.1和Org-mode 8.2.10的简单解决方案,它在处理之前删除了标记的标题,因此它也删除了它们的结构节点,而不仅仅是文本。
;; 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)
我没有特定的导出后端,因为它不需要。我还使用ignore_heading
标记来确保beamer导出中的ignoreheading
标记保留其功能。
以下是我发现它的方式:
ignore_heading
标记的标题。org-map-entries
函数的文档(通过在Emacs中键入C-h f org-map-entries RET
)并发现其可选的第二个参数MATCH
是一个议程样式的匹配字符串,可以也匹配标签。这次经历再一次向我展示了Emacs真正是一个可扩展的自我记录编辑器。 RTFM FTW!
答案 2 :(得分:1)
现在,您可以使用ox-extra
轻松完成此操作。将以下内容添加到init
文件中:
(require 'ox-extra)
(ox-extras-activate '(ignore-headlines))
然后,任何带有ignore
标记的标题都会被忽略,而其内容仍会被导出。