Ответ 1
Деактивированные пакеты (например, geometry
выше)
Org-mode распознает синтаксис LaTeX внутри кодовых блоков LaTeX, а также при включении файлов LaTeX в контент. (См. Цитата LaTeX code.)
Пакеты, загруженные RequirePackage
Как указано выше.
Макросы ввода
Как указано выше.
\immediate\write18
макросы
Я считаю, что это также должно быть как указано выше, однако есть альтернативный метод борьбы с этим. Если вы создадите блок исходного кода типа sh
с помощью команды внутри него, Org будет оценивать его при экспорте и производить желаемое поведение. Вы должны включить sh
в качестве типа языка буферизации, чтобы он мог работать.
(require 'ob-shell)
Вы также можете включить sh
в качестве одного из языков, загружаемых babel, добавив его в org-babel-load-languages
(acons 'sh 't org-babel-load-languages)
Затем используйте код, похожий на следующий, чтобы запустить. /vc
#+name: Test
#+begin_src sh :results output silent :exports results
./vc
#+end_src
Пока это происходит перед вашей строкой \input{vc}
, она должна запускать код, а затем включать его. Просто выполните код-блок с помощью
#+LATEX: \input{vc}
И ваш контент должен быть включен.
Комментарии после макросов usepackage
Если код находится в блоке LaTeX, он должен распознать его как LaTeX.
A hypersetup
, который распознает # + TITLE и # + AUTHOR из файлов режима Org.
Это должно быть включено в каждый документ, а не отдельно. Следующее предоставит вам то, что вы хотите для своих макросов. Он не будет находиться в преамбуле, однако он окажется в верхней части документа, и экспорт будет вести себя так, как ожидалось (однако он не будет вести себя так, как ожидалось, если он добавлен через #+INCLUDE:
из org.
#+begin_latex
\hypersetup{% Setup for hyperref
pdftitle = {{{{TITLE}}}}, %Org macro to take from #+TITLE
pdfauthor = {{{{AUTHOR}}}} %Org macro to take from #+AUTHOR
}
#+end_latex
Создание собственного класса экспорта латекса
Если вы следуете инструкциям в учебниках worg (см. Org Latex Export), вы можете создать свой собственный экспортный класс. Если вы хотите иметь полный контроль над пакетами в преамбуле, вам просто нужно:
(add-to-list 'org-export-latex-classes
'("<CLASS NAME>"
"\\documentclass{article}
[NO-DEFAULT-PACKAGES]
[NO-PACKAGES]"
<insert desired sectioning configuration>))
Вы также можете добавить нужные пакеты между строками \\documentclass
и [NO-DEFAULT-PACKAGES]
. Альтернативой было бы добавить их в сам файл, используя:
#+LATEX_CLASS: <CLASS NAME>
#+LATEX_HEADER: \usepackage{package}
...
В качестве третьего варианта вы можете просто создать собственный .sty файл с нужными пакетами и т.д. и включить его как один #+LATEX_HEADER:
.