问题:

问题:

我们正在讨论 Emacs 和 Org-mode:使用 Org-mode 起草论文并稍后将其转移到 LaTeX 有几个优点,例如:

  1. 我想避免“边写边编程”。我更喜欢干净的文本,而不是编辑器中常见的 LaTeX 命令。
  2. Org-mode 有一个令人难以置信的功能:无线电台。我们可以轻松地获得电子表格、计算并将整个内容导出到 LaTeX 表格中。

当然,从 Org-mode 导出到 LaTeX 或多或少比较基础,请参阅手册这里这里。我们在 Org-mode 中实现的功能越多,窗口中的文本视图就会变得越“拥挤”和越不清晰。话虽如此,我有一个

问题:

你如何用 Org-mode 起草文件,并用 LaTeX 发布?你如何“丰富”你的 Org-mode 文件,以便能够导出到 LaTeX,而无需对结果进行一些收尾工作?

有谁能提供经验和各种肮脏的伎俩吗?

编辑:

  1. 有没有人起草信件并将其导出到 LaTeX?
  2. 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 代码,以及其他语言。

相关内容