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]