我认为,您可以使用\standalonefalse
来指定父文档,所有子文档都应被视为子文档。
通话后可以standalone
通过类似方式重新启用吗?\standalonetrue
\standalonefalse
我想要这个功能,因为我有一篇论文使用独立模式来编写其子部分,而这篇论文被包含在一篇论文中,这篇论文也使用独立模式。我希望能够分别编译章节、论文和论文(因为每个文档都有不同的依赖项/构建时间)。
编辑:MWE 如下和此处:https://gist.github.com/keflavich/5224790(因为有多个文件相互依赖,所以我认为最好在一个地方有一个完整的示例)。
我对乳胶条件和独立的理解一定很薄弱。我构建了一个 MWE(sub2.tex
):
\documentclass{article}
\usepackage{standalone}
%\standalonetrue
\usepackage{import}
\usepackage{natbib}
\begin{document}
\section{Section}
Nothing here (but I want to compile this document on its own sometimes)
\citet{Aguirre2010}
\ifstandalone
\bibliographystyle{apj_w_etal}
\bibliography{mwe}
\fi
\end{document}
和mwe.bib
:
@article{Aguirre2010,
title={Title},
author = {Aguirre},
journal = {In Prep},
year={2010}
}
如果我使用 编译此代码pdflatex sub2.tex && bibtex sub2
,它会出现 bibtex 问题:
I found no \bibdata command---while reading file sub2.aux
I found no \bibstyle command---while reading file sub2.aux
如果我取消注释\standalonetrue
,它就起作用了。
如果我有另一个包含此文档的文档,则会出现问题import
。为了编译此文档,我需要它。但据我所知,\standalonetrue
父文档(如下)不会接受其中包含的导入文档:\standalonetrue
Illegal, another \bibstyle command---line 8 of file sub1.aux
: \bibstyle
: {apj_w_etal}
I'm skipping whatever remains of this command
Illegal, another \bibdata command---line 9 of file sub1.aux
: \bibdata
: {mwe}
I'm skipping whatever remains of this command
这是“父”文档(称为sub1.tex
)
\documentclass{aastex}
\usepackage{standalone}
\standalonetrue
\usepackage{import}
\usepackage{natbib}
\begin{document}
\chapter{Chapter of an Article}
This is an article that includes many subsections
\subimport{./}{sub2}
\ifstandalone
\bibliographystyle{apj_w_etal}
\bibliography{mwe}
\fi
\end{document}
答案1
我是 的作者standalone
。该\ifstandalone
开关由包和类以不同的形式自动定义,以指示子文件是独立编译还是作为主文档的一部分编译。该开关并非设计为由用户修改,我实际上必须再次查看源代码才能知道这样做会产生什么影响。它绝对不是受支持的功能,因此我不推荐它。
请注意,您可以将standlone
文档包含在另一个standalone
文档中,即在类文档中使用该standalone
包standalone
。是受支持的功能。您无需为此更改任何开关。如果您想自己编译子文件,只需将它们用作主文档即可。
主文档不是通过任何开关选择的,而是由您自己选择的,即使用您提供给 LaTeX 编译器的文档。在我看来,您正在使用一些图形化的 LaTeX 开发环境/编辑器,并且没有指定它应该编译哪个文档。这是此特定程序的设置,与 LaTeX 代码本身无关。如果您告诉我们您正在使用哪个程序,人们应该能够帮助您。我个人经常使用命令行。