我的 natbib 引用在某台电脑上无法使用,我不知道为什么

我的 natbib 引用在某台电脑上无法使用,我不知道为什么

我正在撰写我的博士论文,它被分成多个章节子文件,并将它们合并到一个主文件中,以方便编辑。

我尝试在子文件中实现引用,以便在编辑子文件时可以通过\biblio在主文件中定义供子文件使用的命令来查看参考文献,如下所示:

\providecommand{\main}{.}
\documentclass[12pt]{report}
\usepackage[numbers]{natbib}
\usepackage{subfiles}

\def\biblio{\bibliographystyle{ieeetran}\bibliography{\main/references}}  % *Modification: added `\main/` to specify relative file location. 

\begin{document}
    \def\biblio{} 

\chapter{Chapter 1}

\subfile{ThesisSubfiles/Chapter 1}

\chapter{Chapter 2}

\subfile{ThesisSubfiles/Chapter 2}

\chapter{Chapter 3}

\subfile{ThesisSubfiles/Chapter 3}

\bibliographystyle{ieeetran}
\bibliography{references.bib}

\end{document}

每个章节子文件调用\biblio如下:

%!TeX root = Chapter 1.tex
\providecommand{\main}{..}
\documentclass[../ThesisMasterfile.tex]{subfiles}

\begin{document}
    \section{Section 1}
    Some text.

    \section{Section 2}
    Some text.
    
\biblio

\end{document}

这在我的笔记本电脑上运行良好,但当我尝试在台式电脑上编译相同的脚本时,任何\cite{}添加到我单独编译的子文件的新引用(使用 调用)都只会显示为问号,并显示警告“第 x 页上的引用‘citation’未定义”。更奇怪的是,如果我在笔记本电脑上编译它以使其工作,然后在台式电脑上重新编译它,新的引用就会显示出来。两台电脑都使用相同的相对文件路径(文件都保存到共享云存储中),都运行 Windows 10 和带有 TexStudio 编辑器的 MikTex。唯一的区别是,台式电脑上的软件包最近更新了。

有人知道问题出在哪里吗?提前致谢!

答案1

您的问题描述不完整,因此很难重现该问题。当我尝试重建该问题时,它成功了(使用最新的 TeX 发行版)。

一些建议:

  • 当您单独排版子文件时,您必须执行与主文档相同的循环:latex ...,,,,bibtex ...latex ...latex ...

    您所说的从另一台计算机返回并重新运行 latex 后排版就可以正常工作,这似乎没有足够的latex和运行bibtex

  • 在所有计算机上更新 LaTeX 发行版。这将解决许多问题,或者至少应该导致一致且可重现的行为。

  • 请参阅第 3.3 节子文件文档,它解释了如何使用子文件中的可选参考书目来解决您的用例。

  • 长期以来,subfiles它可以自行处理大多数路径调整情况,并\subfix在无法执行时提供服务。

正如我在开始时所说的那样,您的文件似乎运行良好(如果我将它们完成为一个最小的工作示例),但设置可以简化如下,而不需要\main\biblio

% ThesisMasterfile.tex
\documentclass[12pt]{report}
\usepackage[numbers]{natbib}
\usepackage{subfiles}
\bibliographystyle{ieeetran}% set bibliographystyle for main and subfile
\begin{document}
\chapter{Chapter 1}
\subfile{ThesisSubfiles/Chapter 1}
\bibliography{references.bib}
\end{document}

% ThesisSubfiles/Chapter 1
\documentclass[../ThesisMasterfile]{subfiles}
\begin{document}
    \section{Section 1}
    Some text.
\ifSubfilesClassLoaded{%    
   \bibliography{../references}% file paths are always relative to the current main or subfile
}{}
\end{document}

如果你使用biblatexand biber,则必须添加

\addbibresource{\subfix{references.bib}}

到主文档的序言部分,并用 替换两次出现\bibliography{...}\printbibliography

相关内容