对于我的学士论文,我想将各章写在单独的文件中,并能够单独编译它们。为了合并它们,我使用软件包subfiles
。对于引用,我必须通过软件包使用 Apa 样式apacite
。
正如已经讨论过的使用 apacite 包与子文件包或独立包会导致 LaTeX 错误:只能在序言中使用,apacite
并且subfiles
不能很好地结合在一起。为了解决这个问题,我使用了发布的解决方案:
\usepackage{etoolbox}
\makeatletter
\patchcmd{\nocite}{\ifx\@onlypreamble\document}{\iftrue}{}{}
\makeatother
这很好,但我希望我的参考文献列表是英文的(而不是标准的法文apacite
)。通常,我使用babel
包来纠正这个问题,但使用subfiles
包会导致以下错误:
! LaTeX Error: Can be used only in preamble.
l.4 \cite{test}
有谁知道如何解决这一问题?
我使用的代码:
主文本
\documentclass{article}
\usepackage{subfiles}
\usepackage{apacite}
\usepackage[english]{babel} % works fine without babel
\usepackage{etoolbox}
\makeatletter
\patchcmd{\nocite}{\ifx\@onlypreamble\document}{\iftrue}{}{}
\makeatother
\begin{document}
\subfile{chapter1}
% Bibliography:
\newpage
\bibliographystyle{apacite}
\bibliography{../ref/references}
\end{document}
第一章.tex:
\documentclass[./main.tex]{subfiles}
\begin{document}
text
\cite{test}
\end{document}
答案1
设置\errorcontextlines=\maxdimen
有助于揭示正在发生的事情。
babel
\nocite
保存了中的旧定义\org@nocite
,因此可以:
\nocite
加载前修补babel
,或- 补丁
\org@nocite
也一样,加载后babel
。
第一个可能是更好的解决方案:
\documentclass{article}
\errorcontextlines=\maxdimen
\usepackage{subfiles}
\usepackage{etoolbox}
\usepackage{apacite}
\makeatletter
\patchcmd{\nocite}{\ifx\@onlypreamble\document}{\iftrue}{}{}
\makeatother
\usepackage[english]{babel} % works fine without babel
\begin{document}
\subfile{94989-chapter1}
% Bibliography:
\newpage
\bibliographystyle{apacite}
\bibliography{../ref/references}
\end{document}