Уменьшение беспорядка 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}...

Можно ли сохранить все команды заголовка latex (\ usepackage, определения макросов и т. Д.) В отдельном текстовом файле, чтобы я мог просто включить одну строку в начало файла org? Это уменьшит беспорядок и облегчит мне добавление пакетов.

smilingbuddha
источник

Ответы:

14

Вы можете использовать #+SETUPFILE:

Например ./setup/setupfile.org, поместите все эти параметры в файл , а затем включите их в документ

#+SETUPFILE: ./setup/setupfile.org

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

Смотрите также руководство org по экспорту.

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

Наконец, чтобы скрыть беспорядок визуально, вы также можете поместить все эти локальные настройки в ящик (т. Е. Между строкой с :DRAWER:и строкой с :END:) и просто скрыть их с помощью tab.

EFLs
источник
3
По моему практическому опыту решение с выдвижными ящиками - самый удобный и быстрый способ работы с заголовками.
Дитер
4

Альтернативное решение - проверить / настроить переменную org-latex-packages-alist- добавьте туда все необходимое \usepackage{...}.

Эта переменная объявлена ​​и используется в ox-latex, поэтому ваша конфигурация org должна иметь объявление (require 'os-latex). Таким образом, нет строк для добавления в документы организации, кроме заголовка.

Что касается макросов, обычным местом для хранения является пакет yasnippet, если вы его используете.

Ян
источник
3

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

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

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

#+BEGIN_EXPORT LATEX
...
#+END_EXPORT

которые не читаются (по умолчанию) в ящиках.

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

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

* Configuration :ignoreheading:
  :PROPERTIES:
  :VISIBILITY: folded
  :END:
Lgen
источник
У меня есть только одно преимущество, чтобы дать - но это просто стало моим новым дефолтом! Все эти ответы должны быть включены в руководство по организации, как рекомендуется для экспорта латекса, в качестве ориентированной на документ установки, вместо того, чтобы поместить большую часть настроек в конфигурацию emacs.
выпал
1

Вместо того чтобы использовать #+SETUPFILE:в соответствии с принятым ответом, если вы просто заинтересованы в выводе LaTeX, вы можете добавить следующее:

#+LATEX_HEADER: \input{header.tex}

В header.tex(или как вы хотите это называть) вы можете поместить всю свою преамбулу LaTeX без необходимости в целой куче #+LATEX_HEADER:аргументов. Чтобы быть супер мета, вы также можете иметь эту #+LATEX_HEADERопцию в своем #+SETUPFILE.

jdtonkin
источник
Отредактировал мой ответ в ответ на этот вопрос.
Jdtonkin