Orgmode Latex 导出:#+EMAIL 不导出

Orgmode Latex Export: #+EMAIL is not exported

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

这是我的 header 标签。

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

email header 外,所有前三个标签都已导出。 我尝试了选项

#+OPTIONS: toc:nil email:t

但还是不行。

谁能指出我哪里做错了?

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

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

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

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

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