5

我正在使用 org-mode 编写报告,然后将其导出到 LaTeX。我有几个不同的.org文件(每章一个),我将它们导出为“无头”LaTeX,然后合并到一个主.tex文件中。这很好用,除了生成的.tex文件包含数字冲突的标签。例如,两者都a.tex包含b.tex\label{sec-1}

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

4

4 回答 4

4

为什么不把你的完整报告写成一个大的 Org 文件呢?

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

* Chapter 1

#+INCLUDE: "chapter1.org"

* Chapter 2

#+INCLUDE: "chapter2.org"

这样,Org​​ 只会看到一个文件(然后,我猜您的问题就消失了),而您可以随意编辑它们。

于 2013-08-06T10:44:36.803 回答
4

我写了一些 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)

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

于 2013-08-06T09:59:33.857 回答
2

截至目前(18. 05. 2021)正确的解决方案是:

(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)

只是对先前答案的轻微修改。

于 2021-05-19T16:27:56.803 回答
0

这就是最近(2020)组织模式对我有用的:

(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)
于 2020-12-30T23:13:29.440 回答