如何在 Org-mode 的 LaTeX 导出中禁用特定标题的编号?

如何在 Org-mode 的 LaTeX 导出中禁用特定标题的编号?

默认情况下,Org-mode 导出为编号的 LaTeX 标题。例如,以下

#+title: Test

* Introduction
* Heading
* Heading
* References

出口至

\section{Introduction}
\label{sec-1}
\section{Heading}
\label{sec-2}
\section{Heading}
\label{sec-3}
\section{References}
\label{sec-4}

可以禁用以下编号全部LaTeX 标题,添加#+options: num:nil如下内容

#+title: Test
#+options: num:nil

* Introduction
* Heading
* Heading
* References

出口至

\section*{Introduction}
\label{sec-1}
\section*{Heading}
\label{sec-2}
\section*{Heading}
\label{sec-3}
\section*{References}
\label{sec-4}

请注意,这\section*是一个未编号部分的 LaTeX 宏。

是否可以告诉 Org-mode不是数字特别的标题,即通过编辑特性标题?例如,是否可以从 Org-mode 导出以下 LaTeX:

\section*{Introduction}
\label{sec-1}
\section{Heading}
\label{sec-2}
\section{Heading}
\label{sec-3}
\section*{References}
\label{sec-4}

我在 Emacs 23.3.1 中运行 Org-mode 7.6。

答案1

您需要org-mode8.3 才能执行此操作。

摘自ORG-NEWS

* Version 8.3
[...]
** New features
[...]
*** Export unnumbered headlines
Headlines, for which the property ~UNNUMBERED~ is non-nil, are now
exported without section numbers irrespective of their levels.  The
property is inherited by children.

例如

(with-temp-buffer
  (require 'ox-latex)
  (insert "
* numbered
** subnumbered
* unnumbered
:PROPERTIES:
:UNNUMBERED: t
:END:
** also unnumbered
")
  (org-latex-export-as-latex nil nil nil t))

生产

\section{numbered}
\label{sec-1}
\subsection{subnumbered}
\label{sec-1-1}
\section*{unnumbered}
\label{unnumbered-1}
\subsection*{also unnumbered}
\label{unnumbered-2}

编辑:自从我写这篇文章以来,标签的命名方案已经发生了变化,所以现在的标签看起来会有所不同。

编辑2:可以使用 轻松设置标题属性C-c C-x p

答案2

笔记:这个答案现在已经过时了;参见这里


目前不支持选择性编号(即使在 Org-mode master 中)。但是,你可以选择不对超过一定深度的标题进行编号,方法是指定以下内容:

#+OPTIONS: H:3 num:2

* Introduction

* Heading
** Something 1
*** Something 2

* Heading
** Something 1
*** Something 2

* References

以上操作将导出最多 3 级标题,但编号只能到第 2 级。

\section{Introduction}
\label{sec-1}

\section{Heading}
\label{sec-2}
\subsection{Something 1}
\label{sec-2-1}
\subsubsection*{Something 2}
\label{sec-2-1-1}

\section{Heading}
\label{sec-3}
\subsection{Something 1}
\label{sec-3-1}
\subsubsection*{Something 2}
\label{sec-3-1-1}
\section{References}
\label{sec-4}

PS:我不认为这在 tex 中比在 stackoverflow 中更合适。

答案3

我认为 org-mode 中仍然没有选项。我最近使用的一个解决方法是使用ignoreheading所需节点并为未编号部分明确提供 latex 命令。

* Abstract                                                   :ignoreheading:
\section*{Abstract}
blah 

init.el当然,您应该在您的for中定义一个过滤器ignoreheading才能工作。

;;; Nicolas Goaziou, http://article.gmane.org/gmane.emacs.orgmode/67692
(defun org-latex-ignore-heading-filter-headline (headline backend info)
  "Strip headline from HEADLINE. Ignore BACKEND and INFO."
  (when (and (org-export-derived-backend-p backend 'latex)
             (string-match "\\`.*ignoreheading.*\n" headline))
    (replace-match "" nil nil headline)))
(add-to-list 'org-export-filter-headline-functions
             'org-latex-ignore-heading-filter-headline)

相关内容