web-dev-qa-db-ja.com

.emacsでorg-latex-classesを設定するにはどうすればよいですか?

私はメモややることを追跡するためにemacsorg-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}"))
              )

残念ながら、これは.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がロードされたとき、リストはまだ作成されていないと思いますが、これを機能させる方法について途方に暮れています。

3

以下を使用してください。

(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パッケージがロードされるとすぐに変数が調整されます。

7
Clément

リストorg-latex-classesox-latex.elで定義されているため、追加する前に(require 'ox-latex).emacsを挿入する必要があります。

4
rvf0068