![Включить пользовательский файл в заголовок с org-mode](https://rvso.com/image/286974/%D0%92%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B9%20%D1%84%D0%B0%D0%B9%D0%BB%20%D0%B2%20%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BE%D0%BA%20%D1%81%20org-mode.png)
У меня есть файл LaTeX с некоторыми директивами для моих документов TeX ( \usepackage
и тому подобное). Теперь я хочу повторно использовать этот файл в разных файлах org-mode. Я знаю, что могу включать файлы с #+include: 'path/to/some/file.tex'
, но это помещает содержимое файла после \begin{document}
.
Можно ли как-то включить файл в заголовок?
Как и предполагалось, вот пример:
Ашаблон.texфайл, содержащий заголовок:
\documentclass[a4paper]{customClass}
\usepackage{etex}
\title{Some Title}
\supervisor{Someone}
Как здесь также показано, здесь используется пользовательский класс документа, и это одна из причин, по которой я просто хочу иметь возможность включить его.
Затем у меня есть файл, который содержит весь контент (контент.org):
#+INCLUDE: template.tex
* Chapter 1
** Subchapter 1
Some content
** Subchapter 2
More content
Который в настоящее время выводит (контент.текс):
\documentclass[11pt]{article}
\usepackage[latin1]{inputenc}
% a lot more org-mode standard header stuff
% ...
\begin{document}
\maketitle
\setcounter{tocdepth}{3}
\tableofcontents
\vspace*{1cm}
% my template.tex file
% not where I wanted it
\documentclass[a4paper]{customClass}
\usepackage{etex}
\title{Some Title}
\supervisor{Someone}
\section{Chapter 1}
% rest of the document
% ...
\end{document}
Короче говоря: я хочу повторно использовать свой template.tex
файл в нескольких документах org, чтобы иметь единообразное форматирование. Возможно ли это?
решение1
Хотя я не знаю, как это сделать с файлом LaTeX, вы можете использовать #+SETUPFILE: file
(http://orgmode.org/manual/In_002dbuffer-settings.html) для включения внешнего org-файла в экспорт. Затем вы можете использовать #+LaTeX_HEADER:
во внешнем org-файле.
Например, со следующим в content.org
:
#+SETUPFILE: template.org
и со следующим в template.org
:
#+LaTeX_CLASS: customClass
#+LaTeX_CLASS_OPTIONS: [a4paper]
#+LaTeX_HEADER: \usepackage{etex}
#+LaTeX_HEADER: \title{Some Title}
#+LaTeX_HEADER: \supervisor{Someone}
При экспорте content.org
они будут включены как часть преамбулы content.tex
.
решение2
Заголовок latex, который org использует для экспорта, хранится в org-format-latex-header
, который вы можете изменять по своему усмотрению. Согласно справке:
Крайне важно, чтобы этот заголовок гарантировал, что на странице не будет номера страницы. Пакет, определенный в переменных
org-latex-default-packages-alist' and
org-latex-packages-alist', либо заменит заполнитель "[PACKAGES]" в этом заголовке, либо они будут добавлены.
решение3
Вы можете создать локальную переменную файла в вашем org-файле, чтобы отключить заголовок по умолчанию, тогда не будет собственных выходных данных заголовка, что запутает нужный вам код Latex.
# Local Variables:
# org-latex-default-packages-alist: nil
# org-latex-with-hyperref: nil
# org-latex-packages-alist: nil
# End: