【问题标题】:Orgmode Latex Export: #+EMAIL is not exportedOrgmode Latex 导出:#+EMAIL 未导出
【发布时间】:2021-05-28 12:25:02
【问题描述】:

我正在尝试在必须导出为 PDF 的 org 模式文档中添加电子邮件地址。

这是我的标题标签。

#+TITLE: Main Title
#+SUBTITLE: Sub Title
#+AUTHOR: Author Name
#+EMAIL: author@email.com

email 标头外,所有前三个标签都将被导出。 我尝试了该选项

#+OPTIONS: toc:nil email:t

但它仍然无法正常工作。

谁能指出我在哪里做错了?

【问题讨论】:

    标签: email emacs org-mode


    【解决方案1】:

    通过 LaTeX 导出为 PDF,并且在 LaTeX 导出中没有电子邮件的标准条目。换句话说,导出器默认使用的标准 LaTeX 文章类不知道如何处理电子邮件地址。

    但是,org 创建了一个宏 email,您可以使用该宏将电子邮件地址放置在文档中您希望使用 {{{email}}} 的任何位置,例如,在 @987654323 上的作者姓名之后@线。

    【讨论】:

    • 谢谢。但是,使用{{{email}}}是任意将邮箱地址放在\maketitle之外。
    • 如果您在#+author: 字段中使用{{{email}}} 宏,例如如您的示例中Author Name 之后的, {{{email}}},它将出现在文档标题的作者部分。不知道你说的随意放在外面是什么意思。
    • 副标题将出现在页面的最顶部,与文档没有任何关联。不过,我解决了这个问题。请看下面我的回答。感谢您的帮助。
    【解决方案2】:

    我从 emacs-orgmode 邮件列表中获得了解决方案。 Accessing #+EMAIL in latex export.

    我们需要创建一个过滤函数来替换内容中的@EMAIL@(我不知道我们得到的是什么内容)并将这个函数添加到org-export-filter-final-output-functions。代码sn-p是:

    (defun nd-email-filter (contents backend info)
      (let ((email (plist-get info :email)))
        (replace-regexp-in-string "@EMAIL@" email contents t)))
      
    (add-to-list 'org-export-filter-final-output-functions (function nd-email-filter))
    
    (setq amsart-class
            '("amsart"
              "\\documentclass{amsart}
                [DEFAULT-PACKAGES]
                [PACKAGES]
                [EXTRA]
                {@EMAIL@}"
                ("\\section{%s}" . "\\section{%s}")
                 ("\\subsection{%s}" . "\\subsection{%s}")
                 ("\\subsubsection{%s}" . "\\subsubsection{%s}")))
      
    (add-to-list 'org-latex-classes amsart-class)
    

    然后,在我们的latex class definition 中,如上所示,我们可以在任何我们希望显示电子邮件的地方使用@EMAIL@

    我是这样使用的:

    (add-to-list 'org-latex-classes
                 '("ethz"
                   "\\documentclass[a4paper,11pt,article]{memoir}
                    \\usepackage[utf8]{inputenc}
                    ...
                    \\usepackage{parskip}
                    \\makeatletter
                    \\renewcommand{\\maketitle}{%
                    \\begingroup\\parindent0pt
                    \\Small{Aum Tat Sat!}\\par\\bigskip
                    \\Huge{\\bfseries\\@title}\\par
                    \\LARGE{\\@subtitle}\\par\\bigskip
                    \\small{\\@author}\\par\\smallskip
                    \\small{@EMAIL@}\\par\\smallskip
                    \\normalsize\\@date\\par\\bigskip
                    \\endgroup\\@afterindentfalse\\@afterheading}
                    \\makeatother
                          [PACKAGES]
                          [EXTRA]
                    \\linespread{1.1}
                     ...
                   ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多