Wie konfiguriere ich 'org-latex-classes in .emacs?

3015
Fredrik Forséll

Ich verwende den Emacs-Org-Modus zum Nachverfolgen von Notizen und Aufgaben. Manchmal möchte ich Notizen unter Verwendung des offiziellen Firmenstils als Latex-Datei exportieren. Um die korrekten Überschriftenstile zu erhalten, führe ich den folgenden Elisp aus:

(add-to-list 'org-latex-classes '("report" "\\documentclass" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}")) ) 

Leider funktioniert das nicht in .emacs. Ich erhalte folgende Fehlermeldung:

Debugger entered--Lisp error: (void-variable org-latex-classes) (member (quote ("report" "\\documentclass" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) org-latex-classes) (if (member (quote ("report" "\\documentclass" ("\\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" ("\\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" ("\\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" ("\\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) 

Der Befehl funktioniert nur, wenn ich org-export-dispatch ausgeführt habe, um ihn vor dem Ausführen der Add-to-List nach PDF zu exportieren.

Ich bin eine Art Anfängerin bei elisp und beim Konfigurieren von Emacs, und noch mehr Anfängerin bei der Verwendung von Latex. Wenn mir jemand sagen könnte, wie ich den Befehl in .emacs erhalten kann, wäre ich sehr dankbar. Ich schätze, die Liste wurde noch nicht erstellt, wenn .emacs geladen ist, aber ich weiß nicht, wie man diese Arbeit machen kann.

2

2 Antworten auf die Frage

4
Clément

Verwenden Sie folgendes:

(with-eval-after-load 'ox-latex (add-to-list 'org-latex-classes '("report" "\\documentclass" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}")))) 

Dadurch wird die Variable angepasst, sobald das OX-Latex-Paket geladen wird.

2
rvf0068

Die Liste org-latex-classesist definiert in ox-latex.el, so müssen Sie einfügen (require 'ox-latex)in Ihrem .emacsvor ihm hinzufügen.

Vielen Dank, hat gearbeitet! Wie soll ich diese Dinge wissen oder herausfinden? Fredrik Forséll vor 9 Jahren 1
Nein nein Nein. Es gibt keinen Grund, den Emacs-Startvorgang zu verlangsamen, indem alle Org beim Start geladen werden. Clément vor 7 Jahren 0