Ograniczanie bałaganu LATEX_HEADER na górze moich plików org

13

Często piszę notatki w trybie org i eksportuję je do lateksu. Ponieważ jednak niektóre dokumenty są złożone, muszę na górze umieścić wiele pakietów lateksowych:

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

Czy można przechowywać wszystkie polecenia nagłówka lateksowego (\ usepackage, definicje makr itp.) W osobnym pliku tex, dzięki czemu mogę mieć tylko jedną linię na górze pliku org? Zmniejszy to dużo bałaganu i ułatwi mi dodawanie pakietów.

smilingbuddha
źródło

Odpowiedzi:

14

Możesz skorzystać z #+SETUPFILE:

Umieść na przykład wszystkie te ustawienia w pliku ./setup/setupfile.org, a następnie dołącz je do dokumentu za pomocą

#+SETUPFILE: ./setup/setupfile.org

W tym pliku można również zawierać #+OPTIONS:, #+AUTHORoraz podobny buforowania ustawienia. Jeszcze bardziej przydatne jest to, że jeśli załadujesz #+SETUPFILE:pierwszy, możesz zastąpić niektóre z tych konfiguracji lokalnymi ustawieniami.

Zobacz także podręcznik organizacji dotyczący eksportowania.

Innym rozwiązaniem jest wykorzystanie #+INCLUDE: "./setup/more-settings.org" src org(zwróć uwagę "), który po prostu zawiera zawartość pliku jako źródło org. Jest to trochę bardziej uniwersalne, ponieważ może istnieć więcej niż jeden, w #+INCLUDEktórym (afaik) może być tylko jeden #+SETUPFILE.

Wreszcie, aby wizualnie ukryć bałagan, możesz również umieścić wszystkie te ustawienia lokalne w szufladzie (tj. Między linią z :DRAWER:i linią z :END:) i po prostu ukryć je tab.

EFLS
źródło
3
Z mojego praktycznego doświadczenia rozwiązanie szuflady jest najwygodniejszym i najszybszym sposobem pracy z hederami.
Dieter.Wilhelm
4

Alternatywnym rozwiązaniem jest sprawdzenie / dostosowanie zmiennej org-latex-packages-alist- dodaj tam wszystko, czego potrzebujesz \usepackage{...}.

Ta zmienna jest zadeklarowana i używana przez ox-latex, więc konfiguracja organizacji musi mieć deklarację (require 'os-latex). W ten sposób żadne wiersze nie będą dodawane do dokumentów organizacji, z wyjątkiem tytułu.

Jeśli chodzi o makra, zwykłym miejscem do przechowywania jest pakiet yasnippet, jeśli go używasz.

Ian
źródło
3

Alternatywnym rozwiązaniem jest użycie nieeksportowanego nagłówka do zawijania konfiguracji:

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

Zaletą tego rozwiązania w porównaniu z szufladami jest to, że można łatwo dołączyć zaawansowaną konfigurację, taką jak bloki LaTeX

#+BEGIN_EXPORT LATEX
...
#+END_EXPORT

które nie są odczytywane (domyślnie) w szufladach.

Zaletą tego rozwiązania w porównaniu z plikami konfiguracyjnymi (plik konfiguracyjny lub dołączony) jest to, że można łatwo zmienić konfigurację, ponieważ jest ona zawarta w bieżącym pliku.

Wreszcie, jeśli chcesz, aby ten nagłówek pozostawał domyślnie zamknięty podczas otwierania pliku org, możesz użyć następującej składni:

* Configuration :ignoreheading:
  :PROPERTIES:
  :VISIBILITY: folded
  :END:
Lgen
źródło
Mam tylko jeden głos do wyrażenia - ale to właśnie stało się moim nowym domyślnym! Wszystkie te odpowiedzi powinny znaleźć się w podręczniku organizacji, zgodnie z sugerowanymi najlepszymi praktykami dotyczącymi eksportu lateksu, jako konfiguracja skoncentrowana na dokumencie, a nie umieszczanie większości konfiguracji w konfiguracji emacs.
glallen
1

Zamiast używać #+SETUPFILE:zgodnie z przyjętą odpowiedzią, jeśli interesuje Cię wyjście LaTeX, możesz zamiast tego dodać następujące:

#+LATEX_HEADER: \input{header.tex}

W header.tex(lub jakkolwiek chcesz to nazwać) możesz następnie umieścić całą preambułę LaTeX-a bez potrzeby mnóstwa #+LATEX_HEADER:argumentów. Aby być super meta, możesz również mieć tę #+LATEX_HEADERopcję w swoim #+SETUPFILE.

jdtonkin
źródło
Zredagowałem moją odpowiedź w odpowiedzi na to pytanie.
jdtonkin