You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

chapterbib环境下添加tableofcontents引发natbib引用未定义问题

问题解决:chapterbib + natbib 未定义引用警告

问题根源

在使用chapterbib实现分章节独立参考文献的文档中,若在某一章(如chap2)内添加\tableofcontents,会触发LaTeX全局收集引用信息的流程,但chapterbib的机制是让每个章节单独处理自身的参考文献,这就导致全局层面无法识别仅在chap2中引用的lshort条目,从而出现未定义引用警告,引用处显示?。错误的编译顺序也会加重该问题。

修复方案

1. 调整目录位置(核心修复)

将全局目录从章节文件中移到主文档的\maketitle之后、章节引入之前,避免干扰章节的参考文献独立处理逻辑。

修改后的main.tex:

\documentclass{article}
\usepackage[english]{babel}
\usepackage[letterpaper,top=2cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\usepackage{siunitx}
\usepackage{natbib}
\citestyle{nature}
\usepackage{chapterbib}

\title{Your Paper}
\author{You}
\begin{document}
\maketitle
\tableofcontents  % 全局目录移至此处
\include{chap1}
\include{chap2}
\end{document}

修改后的chap2.tex(移除章节内的目录命令):

\section{Second Chapter}
\subsection{Section Heading}
Here's another citation! \citep{lshort}
\bibliographystyle{dcu}
\bibliography{sample}

2. 确保正确的编译顺序

使用chapterbib必须遵循以下编译流程(Overleaf会自动处理,手动编译需按此步骤):

  • 第一次编译主文档(pdfLaTeX)
  • 分别对每个章节的.aux文件运行BibTeX(如bibtex chap1、bibtex chap2)
  • 再次编译主文档两次(pdfLaTeX),确保引用和目录完全更新

可选:章节内子目录需求

如果需要在章节内生成该章节的子目录,不建议直接用\tableofcontents,可使用minitoc包实现,避免与chapterbib冲突。


内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 22:50:33