Reduzieren der LATEX_HEADER-Unordnung oben in meinen Organisationsdateien

12

Ich schreibe oft Notizen im Org-Modus und exportiere sie in Latex. Da einige Dokumente jedoch komplex sind, muss ich oben viele Latexpakete einfügen:

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

Ist es möglich, alle Latex-Header-Befehle (\ usepackage, Makro-Definitionen usw.) in einer separaten Tex-Datei zu speichern, sodass ich nur eine einzelne Zeile oben in der Organisationsdatei einfügen kann? Dies reduziert die Unordnung erheblich und erleichtert mir das Hinzufügen von Paketen.

lächelnder Buddha
quelle

Antworten:

13

Sie können a verwenden #+SETUPFILE:

Fügen Sie beispielsweise alle diese Einstellungen in eine Datei ein ./setup/setupfile.orgund fügen Sie sie dann mit in Ihr Dokument ein

#+SETUPFILE: ./setup/setupfile.org

In dieser Datei können Sie auch sind #+OPTIONS:, #+AUTHORund ähnliche in-Puffer - Einstellungen. Noch nützlicher ist, dass Sie beim Laden des #+SETUPFILE:ersten einige dieser Konfigurationen mit lokalen Einstellungen überschreiben können.

Siehe auch das Organisationshandbuch zum Exportieren.

Eine andere Lösung besteht darin, #+INCLUDE: "./setup/more-settings.org" src org(verwenden Sie das ") zu verwenden, das einfach den Dateiinhalt als Organisationsquelle enthält. Dies ist etwas vielseitiger, da es mehr als eine geben kann, #+INCLUDEwo es (afaik) nur eine geben kann #+SETUPFILE.

Um die Unordnung visuell auszublenden, können Sie all diese lokalen Einstellungen auch in eine Schublade legen (dh zwischen einer Linie mit :DRAWER:und einer Linie mit :END:) und sie einfach mit ausblenden tab.

EFLS
quelle
3
Nach meiner praktischen Erfahrung ist die Schubladenlösung die bequemste und schnellste Art, mit Kopfzeilen zu arbeiten.
Dieter.Wilhelm
4

Eine alternative Lösung besteht darin, die Variable zu überprüfen / anzupassen und org-latex-packages-alistdort alle erforderlichen Elemente hinzuzufügen \usepackage{...}.

Diese Variable wird in deklariert und von verwendet ox-latex, daher muss Ihre Organisationskonfiguration eine Deklaration haben (require 'os-latex). Auf diese Weise können außer dem Titel keine Zeilen zu Organisationsdokumenten hinzugefügt werden.

Bei Makros ist das Yasnippet-Paket ein üblicher Speicherort, wenn Sie es verwenden.

Ian
quelle
2

Eine alternative Lösung besteht darin, eine nicht exportierte Überschrift zum Umschließen der Konfiguration zu verwenden:

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

Der Vorteil dieser Lösung gegenüber Schubladen besteht darin, dass Sie problemlos anspruchsvolle Konfigurationen wie LaTeX-Blöcke einbinden können

#+BEGIN_EXPORT LATEX
...
#+END_EXPORT

die in Schubladen (standardmäßig) nicht gelesen werden.

Der Vorteil dieser Lösung gegenüber Konfigurationsdateien (Setup-Datei oder Include) besteht darin, dass Sie die Konfiguration leicht ändern können, da sie in der aktuellen Datei enthalten ist.

Wenn Sie möchten, dass diese Überschrift beim Öffnen Ihrer Organisationsdatei standardmäßig geschlossen bleibt, können Sie die folgende Syntax verwenden:

* Configuration :ignoreheading:
  :PROPERTIES:
  :VISIBILITY: folded
  :END:
Lgen
quelle
Ich habe nur eine Gegenstimme zu geben - aber dies wurde gerade meine neue Standardeinstellung! Alle diese Antworten sollten als empfohlene Best Practice für den Latex-Export in das Organisationshandbuch aufgenommen werden, als dokumentenorientiertes Setup, anstatt den größten Teil des Setups in die Emacs-Konfiguration zu übernehmen.
glallen
1

Anstatt Verwendung #+SETUPFILE:gemäß der akzeptierte Antwort, wenn Sie nur in LaTeX - Ausgabe interessiert sind, dann können Sie den folgenden stattdessen hinzufügen:

#+LATEX_HEADER: \input{header.tex}

In header.tex(oder wie auch immer Sie es nennen möchten) können Sie dann Ihre gesamte LaTeX-Präambel einfügen, ohne eine ganze Reihe von #+LATEX_HEADER:Argumenten zu benötigen . Um ein Super-Meta zu sein, könnten Sie diese #+LATEX_HEADEROption auch in Ihrem haben #+SETUPFILE.

jdtonkin
quelle
Ich habe meine Antwort als Antwort auf diese Frage bearbeitet.
Jdtonkin