我们正在讨论 Emacs 和 Org-mode:使用 Org-mode 起草论文并稍后将其转移到 LaTeX 有几个优点,例如:
- 我想避免“边写边编程”。我更喜欢干净的文本,而不是编辑器中常见的 LaTeX 命令。
- Org-mode 有一个令人难以置信的功能:无线电台。我们可以轻松地获得电子表格、计算并将整个内容导出到 LaTeX 表格中。
当然,从 Org-mode 导出到 LaTeX 或多或少比较基础,请参阅手册这里和这里。我们在 Org-mode 中实现的功能越多,窗口中的文本视图就会变得越“拥挤”和越不清晰。话虽如此,我有一个
问题:
你如何用 Org-mode 起草文件,并用 LaTeX 发布?你如何“丰富”你的 Org-mode 文件,以便能够导出到 LaTeX,而无需对结果进行一些收尾工作?
有谁能提供经验和各种肮脏的伎俩吗?
编辑:
- 有没有人起草信件并将其导出到 LaTeX?
- Emacs 中的 TODO 列表是彩色的,但在 LaTeX 中的输出仅为黑色,而在 html 中所有颜色均保留。我也希望在 LaTeX 输出中看到彩色的 TODO 列表!?
答案1
什么时候起草你能有效地编写大纲并对其进行编辑,这将使你受益匪浅。Org-mode 是一个很好的工具。由于 Org-mode 是一种 Emacs 模式,因此你应该了解 Emacs 的基础知识,例如在缓冲区中导航和在缓冲区之间切换的命令,如学习中所述使用 emacs 进行 TeX 工作流程的简单指南。
Org-mode 的基础知识很容易学习,但请确保你能够熟练掌握它们及其相关命令。所有这些都可以在文档结构在手册中。正如您提到的,从 Org 缓冲区导出 LaTeX 非常简单。我在起草时所做的基本上就是像往常一样编辑 Org 缓冲区,然后按C-c C-e d偶尔按一下以查看生成的 PDF。您应该阅读导出选项和LaTeX 导出查看手册以了解什么是可能的。
结构和序言
要查看我在 Org-mode 中起草的文档的简单结构,请参见以下内容:
# -*- mode:org; mode:reftex; indent-tabs-mode:nil; tab-width:2 -*-
#+TITLE: My title
#+AUTHOR: N.N.
#+OPTIONS: toc:t
#+LATEX_CLASS: myarticle
* Introduction...
* Section...
* Section...
* References...
标题在这里折叠起来(因此...
后面有标题)。如果展开,则显示其下方的文本。第一行是模式行,虽然不是必需的,但有助于告诉 Emacs 此缓冲区应打开 Org 模式,应打开 RefTeX(我将其用于参考)以及一些与制表符有关的内容。第二行和第三行指定文档的标题和作者。第四行设置导出选项,以便文档包含目录。第五行,#+LATEX_CLASS: myarticle
,,使用我在 .emacs 中定义的 LaTeX 前言来导出 Org-mode在我的 .emacs 中,前言定义如下:
;; My custom LaTeX class for Org-mode export. require is needed for it to work.
(require 'org-latex)
(add-to-list 'org-export-latex-classes
'("myarticle"
"\\documentclass[a4paper,12pt]{article}
\\usepackage[utf8]{inputenc}
\\usepackage{lmodern}
\\usepackage[T1]{fontenc}
\\usepackage{fixltx2e}
\\newcommand\\foo{bar}
[NO-DEFAULT-PACKAGES]
[NO-PACKAGES]
[EXTRA]"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
您可以将其用作模板通过将您想要的序言内容放置在'("myarticle" "
和之间来创建您自己的 Org-mode 序言[NO-DEFAULT-PACKAGES]
。
对于导出到,beamer
你可以使用#+LaTeX_CLASS: beamer
。这会导出到带有给定前导码的 beamer。如果您想要自己定义 beamer 序言你可以这样做。将以下内容放入你的 .emacs 中:
;; My custom class for Org-mode export. require is needed for it to work.
(add-to-list 'org-export-latex-classes
'("mybeamer"
"\\documentclass[presentation]{beamer}
\\usepackage{...}
[NO-DEFAULT-PACKAGES]
[NO-PACKAGES]
[EXTRA]
[BEAMER-HEADER-EXTRA]"
org-beamer-sectioning))
这也要求在您的序言中。您可以在和(require 'org-latex)
之间包含任何您想要的序言。要将 Org 缓冲区导出到此类,它必须包含。'("mybeamer"
[NO-DEFAULT-PACKAGES]
#+LaTeX_CLASS: mybeamer
技巧
以下是一些关于使用 Org-mode 的提示:
如果您希望 Org-mode 在特定查看器中打开导出的 PDF,则必须对其进行配置。在 Evince 中打开将以下内容放入你的 .emacs 中:
;; PDFs visited in Org-mode are opened in Evince (and not in the default choice) (eval-after-load "org" '(progn ;; Change .pdf association directly within the alist (setcdr (assoc "\\.pdf\\'" org-file-apps) "evince %s")))
您可以使用 biblatex引用。只需直接在 Org 缓冲区中包含 biblatex 宏即可。要插入它们,您可以使用 RefTeX。请参阅使用 biblatex 引用命令设置 RefTeX并将以下内容放入你的 .emacs 中
(setq reftex-default-bibliography '("path/to/file.bib")); So that RefTeX in Org-mode knows bibliography
显然你需要更换
path/to/file.bib
为您想要识别的 bib 文件的路径。包括参考文献列表创建一个要保存引用的标题,并在其下包含\printbibliography[heading=none]
以下内容* References \printbibliography[heading=none]
要导出,
latexmk
请将以下内容放入您的 .emacs 中:;; Use latexmk for PDF export (setq org-latex-to-pdf-process (list "latexmk %f"))
到出口
"
到 csquotes 宏将以下内容放入你的 .emacs 中:;; Export " to csquotes macros (setq org-export-latex-quotes '(("en" ("\\(\\s-\\|[[(]\\)\"" . "\\enquote{") ("\\(\\S-\\)\"" . "}") ("\\(\\s-\\|(\\)'" . "`"))))
要自动缩进 Org 缓冲区的列表和类似结构,请将以下内容放入您的 .emacs 中:
(setq org-startup-indented t); Use virtual indentation for all files
Org-mode 对制作脚注有很好的支持。使用命令,你可以轻松创建它们。要在脚注中创建新段落,请使用
\par
。如果您需要包含大量与 LaTeX 相关的代码来完成文档的一部分,例如 TikZ 图形,您可以在单独的文档中执行此操作,然后通过 包含生成的 PDF
pdfpages
。为此,请将其包含#+LaTeX_HEADER: \usepackage{pdfpages}
在 Org 缓冲区的开头,然后在您想要包含 PDF 的位置使用:#begin_latex \includepdf[pages={-}]{path/to/file.pdf} #end_latex
显然,您需要将其替换
path/to/file.pdf
为您想要包含的 PDF 的路径。奖金:你可以将 Stack Exchange 与 Org-mode 集成。这个答案的想法是在 Org-mode 缓冲区中组织起来的,然后答案是在 markdown-mode 中编写的。
注意:在 Org 模式下编写并导出到 LaTeX 可能适用于文本,但对于更复杂的布局(例如图形、并排的两个图形等),您最终会花一半的时间思考如何将其从 Org 模式正确导出到 LaTeX。解决方案是使用 Org 模式撰写专注于内容和结构的草稿,并将其导出到 LaTeX,并在进行编辑工作时坚持使用 LaTeX(添加插图、优化流程和工作方面)。
答案2
我还会添加 org-babel,以及嵌入即时评估代码的功能。我正在攻读生物信息学硕士学位,R 是该领域使用非常广泛的应用程序。我开始使用 Sweave,但已转向 org-mode,因为我可以嵌入在 PDF 生成过程中进行评估的 R 代码,以及其他语言。