Riducendo il disordine di LATEX_HEADER nella parte superiore dei miei file dell'organizzazione


13

Scrivo spesso note in modalità org ed esportale in lattice. Tuttavia, poiché alcuni documenti sono complessi, devo includere molti pacchetti di lattice nella parte superiore in questo modo:

#+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}...

È possibile archiviare tutti i comandi di intestazione in lattice (\ usepackage, definizioni di macro ecc.) In un file tex separato in modo da poter avere solo una riga inclusa nella parte superiore del file org? Ciò ridurrà molto il disordine e mi faciliterà l'aggiunta di pacchetti.

Risposte:


14

Puoi usare a #+SETUPFILE:

Metti tutte queste impostazioni in un file, ad esempio ./setup/setupfile.org, e poi includile nel tuo documento con

#+SETUPFILE: ./setup/setupfile.org

In questo file, è anche possibile includere #+OPTIONS:, #+AUTHORe simile in-tampone impostazioni. Ciò che è ancora più utile è che se carichi il #+SETUPFILE:primo, puoi sovrascrivere alcune di queste configurazioni con le impostazioni locali.

Vedi anche il manuale dell'organizzazione sull'esportazione.

Un'altra soluzione è quella di utilizzare #+INCLUDE: "./setup/more-settings.org" src org(notare il ") che include semplicemente il contenuto del file come sorgente dell'organizzazione. Questo è un po 'più versatile, poiché può #+INCLUDEessercene più di uno in cui (afaik) può essercene solo uno #+SETUPFILE.

Infine, per nascondere visivamente il disordine, puoi anche mettere tutte queste impostazioni locali in un cassetto (cioè tra una linea con :DRAWER:e una linea con :END:) e semplicemente nasconderle con tab.


3
Nella mia esperienza pratica, la soluzione per cassetti è il modo più conveniente e veloce di lavorare con le intestazioni.
Dieter.Wilhelm

4

Una soluzione alternativa è quella di controllare / personalizzare la variabile org-latex-packages-alist- aggiungere lì tutto il necessario \usepackage{...}.

Questa variabile è dichiarata e utilizzata da ox-latex, quindi la tua configurazione dell'organizzazione deve avere una dichiarazione (require 'os-latex). In questo modo nessuna riga da aggiungere ai documenti dell'organizzazione, tranne il titolo.

Per quanto riguarda le macro, un normale posto dove riporre è il pacchetto yasnippet, se lo si utilizza.


3

Una soluzione alternativa consiste nell'utilizzare un titolo non esportato per completare la configurazione:

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

Il vantaggio di questa soluzione rispetto ai cassetti è che puoi facilmente includere una configurazione sofisticata, come i blocchi LaTeX

#+BEGIN_EXPORT LATEX
...
#+END_EXPORT

che non vengono letti (per impostazione predefinita) quando nei cassetti.

Il vantaggio di questa soluzione rispetto ai file di configurazione (file di installazione o include) è che puoi facilmente modificare la configurazione poiché è inclusa nel file corrente.

Infine, se si desidera che questo titolo rimanga chiuso per impostazione predefinita quando si apre il file org, è possibile utilizzare la sintassi seguente:

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

Ho un solo voto da dare, ma questo è diventato il mio nuovo default! Tutte queste risposte dovrebbero andare nel manuale dell'organizzazione come best practice suggerita per l'esportazione in lattice, come una configurazione incentrata sul documento rispetto a mettere la maggior parte della configurazione in emacs config.
glallen,

1

Invece di utilizzare #+SETUPFILE:secondo la risposta accettata, se sei solo interessato all'output di LaTeX, puoi invece aggiungere quanto segue:

#+LATEX_HEADER: \input{header.tex}

In header.tex(o come si desidera chiamarlo), è quindi possibile inserire tutti i preamboli LaTeX senza la necessità di un sacco di #+LATEX_HEADER:argomenti. Per essere super meta, potresti anche avere questa #+LATEX_HEADERopzione nel tuo #+SETUPFILE.


Modificato la mia risposta in risposta a questa domanda.
jdtonkin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.