我使用 emacs org-mode 来跟踪笔记和待办事项。有时我希望使用官方公司样式将笔记导出为 latex 文件。为了获得正确的标题样式,我运行以下 elisp:
(add-to-list 'org-latex-classes
'("report"
"\\documentclass{report}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
)
不幸的是,这在 .emacs 中不起作用。我收到以下错误:
Debugger entered--Lisp error: (void-variable org-latex-classes)
(member (quote ("report" "\\documentclass{report}" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) org-latex-classes)
(if (member (quote ("report" "\\documentclass{report}" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) org-latex-classes) org-latex-classes (setq org-latex-classes (cons (quote ("report" "\\documentclass{report}" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) org-latex-classes)))
eval((if (member (quote ("report" "\\documentclass{report}" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) org-latex-classes) org-latex-classes (setq org-latex-classes (cons (quote ("report" "\\documentclass{report}" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) org-latex-classes))) nil)
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
仅当我在运行 add-to-list 之前运行 org-export-dispatch 导出为 PDF 时,该命令才有效。
我对 elisp 和 Emacs 配置还算是个新手,对 Latex 的使用更是新手。所以如果有人能告诉我如何让命令在 .emacs 中工作,我将不胜感激。我猜想在加载 .emacs 时列表尚未创建,但我不知道如何让它工作。
答案1
使用以下内容:
(with-eval-after-load 'ox-latex
(add-to-list 'org-latex-classes
'("report"
"\\documentclass{report}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}"))))
一旦 ox-latex 包被加载,它就会调整变量。
答案2
该列表org-latex-classes
在中定义ox-latex.el
,因此您需要在添加之前插入(require 'ox-latex)
到您的列表中。.emacs