如何在 .emacs 中配置“org-latex-classes”?

Fre*_*éll 3 latex emacs org-mode

我使用 emacs org-mode 来跟踪笔记和待办事项。有时我希望使用官方公司风格将笔记导出为乳胶文件。为了获得正确的标题样式,我运行以下 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}"))
              )
Run Code Online (Sandbox Code Playgroud)

不幸的是,这在 .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)
Run Code Online (Sandbox Code Playgroud)

仅当我在运行 add-to-list 之前运行 org-export-dispatch 以导出到 PDF 时,该命令才有效。

我是 elisp 和 Emacs 配置的初学者,更像是使用 Latex 的初学者。因此,如果有人能告诉我如何让命令在 .emacs 中工作,我将不胜感激。我猜在加载 .emacs 时还没有创建列表,但我不知道如何进行这项工作。

Clé*_*ent 10

使用以下内容:

(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}"))))
Run Code Online (Sandbox Code Playgroud)

这会在 ox-latex 包加载后立即调整变量。


小智 5

该列表org-latex-classes是在 中定义的ox-latex.el,因此您需要在添加之前插入(require 'ox-latex)your 。.emacs

  • 非常感谢,辛苦了!根据记录,我应该如何知道这些事情,或者找出它们? (5认同)