emacs latex org-mode

emacs - ¿Cómo puedo hacer la exportación en modo Org a LaTeX con un preámbulo específico?



org-mode (3)

Paquetes desactivados (como la geometry anterior)

Org-mode reconoce la sintaxis de LaTeX dentro de los bloques de código de LaTeX, así como cuando incluye archivos de LaTeX en el contenido. (Ver Citar código LaTeX ).

Paquetes cargados por RequirePackage

Como anteriormente.

Macros de entrada

Como anteriormente.

macros /immediate/write18

Creo que esto también debería ser como el anterior, sin embargo, hay un método alternativo para lidiar con esto. Si crea un bloque de código fuente de tipo sh con el comando dentro de él, Org lo evaluará en la exportación y producirá el comportamiento deseado. Sin embargo, debe habilitar sh como lenguaje babel para que funcione.

(require ''ob-shell)

También puede incluir sh como uno de los idiomas cargados por babel agregándolo a org-babel-load-languages

(acons ''sh ''t org-babel-load-languages)

Luego use un bloque de código similar al siguiente para ejecutar su ./vc

#+name: Test #+begin_src sh :results output silent :exports results ./vc #+end_src

Mientras esto aparezca antes de su línea /input{vc} , debe ejecutar el código y luego incluirlo. Simplemente sigue el bloque de código con

#+LATEX: /input{vc}

Y tu contenido debe ser incluido.

Comentarios despues de macros de usepackage

Si el código está dentro de un bloque LaTeX, debe reconocerlo como LaTeX.

Una macro de hypersetup que reconoce # + TITLE y # + AUTHOR de los archivos en modo Org.

Esto deberá incluirse dentro de cada documento en lugar de separarse. Lo siguiente proporcionará lo que deseas para tus macros. No estará dentro del preámbulo, sin embargo, terminará en la parte superior del documento y la exportación se comportará como se espera (sin embargo, no se comportará como se espera si se agrega a través de #+INCLUDE: from org.

#+begin_latex /hypersetup{% Setup for hyperref pdftitle = {{{{TITLE}}}}, %Org macro to take from #+TITLE pdfauthor = {{{{AUTHOR}}}} %Org macro to take from #+AUTHOR } #+end_latex

Creando tu propia clase de exportación de látex

Si sigue las instrucciones de los tutoriales de worg (consulte Exportación a Latex de Org ), puede crear su propia clase de exportación. Si desea tener control total sobre los paquetes en el preámbulo, simplemente deberá:

(add-to-list ''org-export-latex-classes ''("<CLASS NAME>" "//documentclass{article} [NO-DEFAULT-PACKAGES] [NO-PACKAGES]" <insert desired sectioning configuration>))

También puede agregar los paquetes que desee entre las líneas //documentclass y [NO-DEFAULT-PACKAGES] . La alternativa sería agregarlos al archivo usando:

#+LATEX_CLASS: <CLASS NAME> #+LATEX_HEADER: /usepackage{package} ...

Como una tercera opción, puede simplemente crear un archivo .sty personalizado con los paquetes deseados, etc. e incluirlo como un solo #+LATEX_HEADER:

Cuando hago Cc Ce l para exportar un archivo Org a LaTeX produce un documento con un preámbulo particular. En lugar de este preámbulo particular, me gustaría que usara un preámbulo de mi elección. Di que quiero que use el siguiente preámbulo:

% Don''t forget to qpdf --linearize the final copy /RequirePackage[l2tabu,orthodox]{nag}% Old habits die hard. All the same, there are commands, classes and packages which are outdated and superseded. nag provides routines to warn the user about the use of those. /immediate/write18{sh ./vc} /input{vc}% Version control macros (for /VCDateISO in /date) http://www.ctan.org/pkg/vc /documentclass[a4paper,12pt]{article}% pt? doublepage? %/usepackage{geometry} /usepackage[utf8]{inputenc} /usepackage[T1]{fontenc} /usepackage{lmodern}% Latin Modern (derivate of Knuth''s CM) /usepackage{fixltx2e}% /textsubscript and bugfixes for LaTeX /usepackage{microtype} /usepackage[strict=true]{csquotes}% Context-sensistive quotes. /enquote "" /enquote* ''''. Use the integrated commands /textcquote and /blockcquote rather than biblatex internal commands to get contex sensistive quotes for them too. s/babel/autostyle in new version. /usepackage[bookmarks,pdfborder={0 0 0}]{hyperref}% links and pdfinfo. MUST BE LOADED LAST! /hypersetup{% Setup for hyperref pdftitle = {[Title from #+TITLE]}, pdfauthor = {[Author from #+AUTHOR]} }

Sé que puede manipular qué paquetes se usan por archivo como se describe en el manual, pero quiero que este preámbulo se use para todos los archivos a menos que especifique lo contrario. El preámbulo que quiero usar incluye lo siguiente:

  • Paquetes desactivados (como la geometry anterior)
  • paquetes cargados por RequirePackage
  • macros de input
  • macros /immediate/write18
  • comentarios después de macros de usepackage
  • una macro hypersetup que reconoce #+TITLE y #+AUTHOR de los archivos en modo Org

Esto no responde a su pregunta, pero le permite hacer lo que quiere.

(defun headless-latex () "exports to a .tex file without any preamble" (interactive) (org-export-as-latex 3 nil nil nil t nil) )

Esta función exporta el contenido de su archivo en modo ORG sin ningún preámbulo . Entonces puede /input en un archivo con el preámbulo que desee. Otras lecturas.


Utilizo un método diferente para hacer las cosas:

Defina una clase (lo llamo por clase de archivo por alguna extraña razón. Puede llamarlo de otra manera). Pon este código en tu .emacs :

;; per-file-class with minimal packages (unless (find "per-file-class" org-export-latex-classes :key ''car :test ''equal) (add-to-list ''org-export-latex-classes ''("per-file-class" "//documentclass{article} [NO-DEFAULT-PACKAGES] [EXTRA]" ("//section{%s}" . "//section*{%s}") ("//subsection{%s}" . "//subsection*{%s}") ("//subsubsection{%s}" . "//subsubsection*{%s}") ("//paragraph{%s}" . "//paragraph*{%s}") ("//subparagraph{%s}" . "//subparagraph*{%s}"))))

Use esta clase en su archivo org:

# + LaTeX_CLASS: por clase de archivo

# + LaTeX_CLASS_OPTIONS: [10pt, a4paper]