使用 Org-mode 将自定义文件包含到标题中

使用 Org-mode 将自定义文件包含到标题中

我有一个 LaTeX 文件,其中包含一些用于 TeX 文档的指令(\usepackage以及诸如此类的东西)。现在我想在不同的 org-mode 文件中重用此文件。我知道我可以使用 来包含文件#+include: 'path/to/some/file.tex',但这会将文件的内容放在 之后\begin{document}

我可以以某种方式将文件包含到标题中吗?

正如建议的那样,这里有一个例子:

A模板.tex包含标题的文件:

\documentclass[a4paper]{customClass}
\usepackage{etex}
\title{Some Title}
\supervisor{Someone}

正如这里所示,这使用自定义文档类,这也是我只想能够将其包含在内的原因之一。

然后我有一个包含所有内容的文件(内容网站):

#+INCLUDE: template.tex

* Chapter 1
** Subchapter 1
   Some content
** Subchapter 2
   More content

目前输出(内容.tex):

\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: filehttp://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

org 用于导出的 latex 标头存储在 中org-format-latex-header,您可以根据需要进行修改。根据帮助:

此标题必须确保页面上不出现页码。变量 org-latex-default-packages-alist' andorg-latex-packages-alist 中定义的包将替换此标题中的占位符“[PACKAGES]”,或者将其附加。

答案3

您可以在您的 org 文件中创建文件局部变量来禁用默认标题,这样就不会有它自己的标题输出,从而混淆您想要的乳胶代码。

# Local Variables:
# org-latex-default-packages-alist: nil
# org-latex-with-hyperref: nil
# org-latex-packages-alist: nil
# End:

相关内容