Reducción del desorden de LATEX_HEADER en la parte superior de mis archivos de organización


13

A menudo escribo notas en modo org y las exporto a latex. Sin embargo, debido a que algunos documentos son complejos, necesito incluir muchos paquetes de látex en la parte superior de esta manera:

#+LATEX_HEADER: \usepackage[margin=1.15in]{geometry}
#+LATEX_HEADER: \usepackage{parskip}
#+LATEX_HEADER_EXTRA: \usepackage{graphicx}
#+LATEX_HEADER_EXTRA: \usepackage{mdframed}
#+LATEX_HEADER_EXTRA: \usepackage{needspace}
#+LATEX_HEADER_EXTRA: \usepackage{hyperref}         
#+LATEX_HEADER_EXTRA: \usepackage{titling}
#+LATEX_HEADER_EXTRA: \usepackage{enumitem}
#+LATEX_HEADER_EXTRA: \usepackage{etoolbox}                             
#+LATEX_HEADER_EXTRA: \usepackage{color}                             
#+LATEX_HEADER_EXTRA: \usepackage{underscore}...

¿Es posible almacenar todos los comandos de cabecera de látex (\ usepackage, definiciones de macros, etc.) en un archivo tex separado para que pueda incluir una sola línea en la parte superior del archivo org? Esto reducirá mucho el desorden y me facilitará agregar paquetes.

Respuestas:


14

Puedes hacer uso de un #+SETUPFILE:

Coloque todas estas configuraciones en un archivo, por ejemplo ./setup/setupfile.org, y luego inclúyalas en su documento con

#+SETUPFILE: ./setup/setupfile.org

En este archivo, también se pueden incluir #+OPTIONS:, #+AUTHORy similares en la configuración del búfer. Lo que es aún más útil es que si carga el #+SETUPFILE:primero, puede anular algunas de estas configuraciones con configuraciones locales.

Consulte también el manual de la organización sobre exportación.

Otra solución es hacer uso de #+INCLUDE: "./setup/more-settings.org" src org(tenga en cuenta ") que simplemente incluye el contenido del archivo como fuente de la organización. Esto es un poco más versátil, ya que puede haber más de uno #+INCLUDEdonde (afaik) puede ser solo uno #+SETUPFILE.

Finalmente, para ocultar el desorden visualmente, también puede colocar todas estas configuraciones locales en un cajón (es decir, entre una línea con :DRAWER:y una línea con :END:), y simplemente ocultarlas con tab.


3
En mi experiencia práctica, la solución de cajones es la forma más conveniente y rápida de trabajar con encabezados.
Dieter.Wilhelm

4

Una solución alternativa es verificar / personalizar la variable org-latex-packages-alist: agregue allí todo lo que necesite \usepackage{...}.

Esta variable es declarada y utilizada por ox-latex, por lo que la configuración de su organización debe tener una declaración (require 'os-latex). De esta forma no hay líneas para agregar a los documentos de la organización, excepto el título.

En cuanto a las macros, un lugar habitual para almacenar es el paquete yasnippet, si lo usa.


3

Una solución alternativa es usar un título no exportado para ajustar la configuración:

* Configuration :ignoreheading:
#+AUTHOR:   
#+STARTUP: showall
...

La ventaja de esta solución frente a los cajones es que puede incluir fácilmente una configuración sofisticada, como bloques LaTeX

#+BEGIN_EXPORT LATEX
...
#+END_EXPORT

que no se leen (por defecto) cuando están en los cajones.

La ventaja de esta solución frente a los archivos de configuración (archivo de instalación o incluir) es que puede cambiar fácilmente la configuración ya que está incluida en el archivo actual.

Finalmente, si desea que este título permanezca cerrado de forma predeterminada al abrir su archivo de organización, puede usar la siguiente sintaxis:

* Configuration :ignoreheading:
  :PROPERTIES:
  :VISIBILITY: folded
  :END:

Solo tengo un voto a favor, ¡pero este se convirtió en mi nuevo valor predeterminado! Todas estas respuestas deben ir al manual de la organización como la mejor práctica sugerida para la exportación de látex, como una configuración centrada en documentos versus poner la mayor parte de la configuración en la configuración de emacs.
Glallen

1

En lugar de usar #+SETUPFILE:según la respuesta aceptada, si solo está interesado en la salida de LaTeX, puede agregar lo siguiente:

#+LATEX_HEADER: \input{header.tex}

En header.tex(o como quiera llamarlo), puede poner todos sus preámbulos de LaTeX sin la necesidad de un montón de #+LATEX_HEADER:argumentos. Para ser súper meta, también podrías tener esta #+LATEX_HEADERopción en tu #+SETUPFILE.


Edité mi respuesta en respuesta a esta pregunta.
jdtonkin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.