Зменшення безладу LATEX_HEADER у верхній частині моїх файлів org


13

Я часто пишу нотатки в режимі org і експортую їх у латекс. Однак, оскільки деякі документи складні, мені потрібно включити багато пакетів латексу вгорі так:

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

Чи можна зберігати всі команди заголовків латексу (\ usepackage, визначення макросів тощо) в окремому текстовому файлі, щоб я міг просто один рядок містити у верхній частині файлу org? Це зменшить безліч неприємностей і полегшить мені додавання пакетів.

Відповіді:


14

Ви можете скористатися #+SETUPFILE:

Покладіть, наприклад, усі ці налаштування у файл ./setup/setupfile.org, а потім додайте їх у свій документ

#+SETUPFILE: ./setup/setupfile.org

У цьому файлі ви можете також включати в себе #+OPTIONS:, #+AUTHORі подібні в буфері настройки. Що ще корисніше - це те, що якщо ви завантажите #+SETUPFILE:першу, ви можете замінити деякі з цих конфігурацій за допомогою локальних налаштувань.

Дивіться також посібник з експорту.

Іншим рішенням є використання #+INCLUDE: "./setup/more-settings.org" src org(зверніть увагу "), яке просто включає вміст файлу як джерело org. Це трохи більш універсально, оскільки може бути більше одного, #+INCLUDEде там (afaik) може бути лише один #+SETUPFILE.

Нарешті, щоб візуально сховати безлад, ви також можете помістити всі ці локальні налаштування в ящик (тобто між рядком :DRAWER:і рядком з :END:) та просто заховати їх tab.


3
На моєму практичному досвіді рішення ящика - це найзручніший і найшвидший спосіб роботи з заголовками.
Дітер.Вільгельм

4

Альтернативним рішенням є перевірка / налаштування змінної org-latex-packages-alist- додайте туди все необхідне \usepackage{...}.

Цю змінну оголошено в і використовує ox-latex, тому ваша конфігурація org повинна мати декларацію (require 'os-latex). Таким чином, немає жодних рядків для додавання до org документів, крім назви.

Що стосується макросів, то звичайним місцем для зберігання є пакет yasnippet, якщо ви його використовуєте.


3

Альтернативне рішення - використовувати не експортований заголовок для завершення конфігурації:

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

Перевага цього рішення перед висувними ящиками полягає в тому, що ви можете легко включати складну конфігурацію, таку як блоки LaTeX

#+BEGIN_EXPORT LATEX
...
#+END_EXPORT

які не читаються (за замовчуванням), коли в ящиках.

Перевага цього рішення щодо файлів конфігурації (setupfile або включити) полягає в тому, що ви можете легко змінити конфігурацію, оскільки вона включена в поточний файл.

Нарешті, якщо ви хочете, щоб цей заголовок залишався закритим за замовчуванням під час відкриття файлу org, ви можете використовувати такий синтаксис:

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

У мене є лише одна пропозиція, але я став лише моїм новим дефолтом! Усі ці відповіді повинні міститись в org-посібнику, як пропонується найкраща практика для експорту латексу, як налаштування, орієнтоване на документи, та розміщення більшості параметрів у конфігурації emacs.
glallen

1

Замість того, щоб використовувати #+SETUPFILE:відповідно до прийнятої відповіді, якщо вас просто цікавить вихід LaTeX, ви можете замість цього додати наступне:

#+LATEX_HEADER: \input{header.tex}

У header.tex(або як би ви цього не хотіли назвати) ви можете поставити всю свою преамбулу LaTeX без необхідності цілого ряду #+LATEX_HEADER:аргументів. Щоб бути супер мета, ви також можете мати цю #+LATEX_HEADERопцію у своєму #+SETUPFILE.


Відредагував мою відповідь у відповідь на це запитання.
jdtonkin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.