组织模式导出到Latex - 抑制标签的生成

时间:2013-08-06 09:24:43

标签: emacs latex org-mode

我正在使用org-mode编写一个报告然后导出到LaTeX。 我有一些不同的.org文件(每章一个),我将其导出为“无头”LaTeX,然后组合成一个主.tex文件。 除了生成的.tex文件包含具有冲突数字的标签之外,这很有效。因此,a.texb.tex都包含\label{sec-1},例如。

只要我从未真正使用过这些参考文献,那么我认为这并不是什么问题,尽管这些警告确实让我感到烦恼。有没有办法关闭这些标签的生成?它应该很简单,但我在文档中找不到任何相关内容。

4 个答案:

答案 0 :(得分:4)

为什么不将完整报告编写为一个大型组织文件?

无论如何,如果你喜欢有多个较小的文件,我建议在一个Org主文件中“包含”它们,如下所示:

* Chapter 1

#+INCLUDE: "chapter1.org"

* Chapter 2

#+INCLUDE: "chapter2.org"

这样,Org​​只会看到一个文件(然后,我猜你的问题就会消失),而你可以根据需要编辑它们。

答案 1 :(得分:3)

我写了一些Lisp,它会在导出到LaTeX后删除所说的标签,如下所示:

(defun remove-orgmode-latex-labels ()
  "Remove labels generated by org-mode"
  (interactive)
  (let ((case-fold-search nil))
   (goto-char 1)
   (replace-regexp "\\\\label{sec-[0-9][^}]*}" "")
   )
)
(add-hook 'org-export-latex-final-hook 'remove-orgmode-latex-labels)

这似乎可以在不删除我自己的自定义标签的情况下完成工作。

答案 2 :(得分:1)

截至目前(2021 年 5 月 18 日)正确的解决方案是:

(defun my-latex-filter-removeOrgAutoLabels (text backend info)
  "Org-mode automatically generates labels for headings despite explicit use of `#+LABEL`. This filter forcibly removes all automatically generated org-labels in headings."
  (when (org-export-derived-backend-p backend 'latex)
  (replace-regexp-in-string "\\\\label{sec:org[a-f0-9]+}\n" "" text)))

 (add-to-list 'org-export-filter-headline-functions
              'my-latex-filter-removeOrgAutoLabels)

仅对之前的答案稍作修改。

答案 3 :(得分:0)

最近(2020 年)Org-Mode 对我有用:

(defun rm-org-latex-labels (text backend _info)
  "Remove labels auto-generated by `org-mode' export to LaTeX."
  (when (eq backend 'latex)
    (replace-regexp-in-string "\\\\label{sec:org[a-f0-9]+}\n" "" text)))

(add-to-list #'org-export-filter-headline-functions
             #'rm-org-latex-labels)