如果这是我的一个愚蠢的错误,我首先表示歉意。
我正在写论文,每个章节都使用子文件。我希望在每章末尾都有一个参考部分,因此我使用 chapterbib。我还使用了 achemso 包。
我在编译主文档中的子文件时遇到了问题。这可能是我构建文件的方式,但它似乎对一个子文件运行良好,但仅此而已。
因此我通过以下方式构建每个章节(我们称之为 chapter1.tex):
构建(LuaLatex) Bibtex 构建(LuaLatex) 构建(LuaLatex)
然后以同样的方式创建主文档(我们称之为 thesis.tex)
构建(LuaLatex) Bibtex 构建(LuaLatex) 构建(LuaLatex)
我的主文档的结构如下:
\documentclass[11pt]{report}
\usepackage{achemso}
\usepackage[sectionbib]{chapterbib}
\usepackage[nottoc,numbib]{tocbibind}
\usepackage{subfiles}
\begin{document}
\subfile{../chapter1/chapter1.tex}
\subfile{../chapter2/chapter2.text}
\subfile{../chapter3/chapter3.text}
\subfile{../chapter4/chapter4.text}
\end{document}
对于我的子文件来说,例如:
\documentclass[../Thesis/thesis.tex]{subfiles}
\begin{document}
main text
\bibliography{../library}
\end{document}
任何帮助将不胜感激。
需要澄清的是,我可以使用子文件构建主文档 (thesis.tex),但其中不包含任何参考资料。尝试使用 bibtex 构建主文档时,会出现类似以下错误:
样式文件:achemso.bst 非法,另一个 \bibdata 命令---文件第 793 行
只有一个子文件时不会发生这种情况。
答案1
对你来说可能有点晚了,但我一直在努力解决类似的问题,这可能会对其他人有所帮助。
我还没有找到一个好的方法使用 chapterbib 和子文件(根据文档,您可以使用\begin{cbunit}
,尽管我对此并不喜欢,或者\cbinput
,但这看起来得不偿失)。
然而,在大多数情况下,可以使用\include
而不是\subfile
(要做到这一点,您需要从子文件中删除序言)。这可以很好地与 chapterbib 配合使用。
\achemso
当根文档没有引用时,也可能会出现问题(这里,这里),所以尽量避免这种情况。如果需要,您应该能够使用这些.bst
文件而不使用包的其余部分。
因此你的文档将会变成类似这样的内容:
\documentclass[11pt]{report}
\usepackage[sectionbib, super, sort]{natbib}
\usepackage{chapterbib}
\usepackage[nottoc,numbib]{tocbibind}
\begin{document}
\include{../chapter1/chapter1}
\include{../chapter2/chapter2}
\include{../chapter3/chapter3}
\include{../chapter4/chapter4}
\end{document}
你的章节如下:
\chapter{Chapter 1}
main text
\bibliograpystyle{yourchosenstyle}
\bibliography{../library}
另一个关键步骤是正确构建所有内容。如果您使用的是 TeX Studio 等 GUI,则更有可能出现问题。如果是这种情况,我建议您手动删除运行 Latex 时生成的所有辅助文件(即您未放在那里的所有内容),然后从终端手动运行pdflatex
根文档、 bibtex
每个章节,然后pdflatex
两次运行根文档。