Como configuro 'org-latex-classes em .emacs?

2

Eu uso o modo org do emacs para acompanhar anotações e todos. Às vezes, desejo exportar anotações como um arquivo de látex, usando o estilo oficial da empresa. Para obter os estilos de título corretos eu corro o seguinte 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}"))
              )

Infelizmente, isso não funciona em .emacs. Eu recebo o seguinte erro:

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)

O comando só funciona se eu tiver executado o org-export-dispatch para exportar para PDF antes de executar o add-to-list.

Eu sou um iniciante no elisp e configurando o Emacs, e ainda mais iniciante no uso do Latex. Então, se alguém pudesse me dizer como fazer o comando funcionar no .emacs, ficaria muito grato. Eu estou supondo que a lista ainda não tenha sido criada quando o .emacs está carregado, mas não sei como fazer isso funcionar.

    
por Fredrik Forséll 01.04.2015 / 17:29

2 respostas

4

Use o seguinte:

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

Isso ajusta a variável assim que o pacote ox-latex é carregado.

    
por 30.07.2016 / 05:40
2

A lista org-latex-classes é definida em ox-latex.el , portanto, você precisa inserir (require 'ox-latex) no seu .emacs antes de adicionar a ela.

    
por 19.04.2015 / 04:26