我有一个 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: 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
org 用于导出的 latex 标头存储在 中org-format-latex-header
,您可以根据需要进行修改。根据帮助:
此标题必须确保页面上不出现页码。变量
org-latex-default-packages-alist' and
org-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: