ShareLaTeX - 使用输入命令时避免更改主文档

ShareLaTeX - 使用输入命令时避免更改主文档

在 ShareLaTeX 中,当我编写包含序言的单个文档时,无论哪个是主文档,我只需按“编译”即可生成输出。

另一方面,当我将序言放在单独的文件中并使用该\input命令时,我必须将该文档设置为主要文档才能成功编译它。

我不明白为什么这是必要的。有没有办法避免每次都更改主文档,即使我使用的是单独的前言文件?

答案1

如果你要将前言与文档的“正文”分开,你可能会认为这是一个好主意:创建一个前言(例如,preamble.tex)及其主文件(例如,main.tex)。例如,

% preamble.tex
\documentclass{article}
\usepackage{enumitem}
\newcommand\myname{XXXX YYYYY}

然后在以下位置使用它:

% main.tex
\input{preamble}
\begin{document}

My name is \myname.

\end{document}

我的建议是:不要这样做。我理解将两个“部分”分开的诱惑,特别是如果它是一个很长的文档等。但是,如果您想分离这两个部分,有更好的方法可以做到:

% main.tex
\documentclass{article}
\usepackage{enumitem}
\newcommand*{\myname}{XXXX YYYY}
% ... other preamble stuff
\begin{document}

\input{content}
% or \include{content}, though there are differences between the two;
% see: https://tex.stackexchange.com/q/246/8528

\end{document}

然后你就可以“写作”了content.tex

% content.tex
My name is \myname.

请注意,您可能必须将其“标记”为子文件并将其指向“主文件”。每个编辑器可能都以不同的方式执行此操作。在 Emacs 中这很容易。在文件底部,您输入:

%%% Local Variables: 
%%% mode: latex  
%%% TeX-master: "main"  
%%% End: 

(实际上,只有%%% TeX-master: "main"在这里做相关工作。)

虽然我无法谈论我从未使用过的 ShareLaTeX,但如果它看不到该行,它很可能\documentclass会认为它实际上不是 LaTeX 可以处理的文件。(这也是避免使用我上面描述的第一种方法的另一个原因,我强烈建议大家避免使用这种方法。)据推测,该网站允许您以 Emacs 的方式(例如)标记“主”和“子”文件,但我不知道它是如何做到的……

此方法还允许您依赖通用前导码。如果您要这样做,那么最好使用扩展名命名它.sty并通过 加载它\usepackage。有关如何执行此操作的更多信息,请参阅:

相关内容