在Rmarkdown中使用natbib引用包编译报错,求解决方法
解决Rmarkdown使用natbib编译PDF时的未定义引用问题
问题原因
指定citation_package: natbib后,Rmarkdown会调用LaTeX的natbib包处理引用,但natbib需要额外的编译步骤生成并解析参考文献,而默认的citeproc引擎会自动完成这些流程,因此注释掉该配置后编译正常。此外,bib文件中的无效字段(如month = {00})也可能干扰natbib的解析。
解决方案
方案1:配置natbib选项并确保多轮编译
在YAML头部添加natbib样式选项,同时在RStudio中执行两次编译(第一次生成辅助文件,第二次解析引用):
--- output: pdf_document: citation_package: natbib natbiboptions: square, numbers, comma, sort&compress bibliography: test_library.bib ---
如果RStudio未自动多轮编译,可以手动点击两次"Knit"按钮。
方案2:手动执行LaTeX编译流程
若自动编译仍失败,可手动完成以下步骤:
- 点击"Knit"生成对应的
.tex文件 - 用pdflatex编译该
.tex文件,生成.aux辅助文件 - 运行命令
bibtex your_file.aux(替换your_file为你的文件名)生成.bbl参考文献文件 - 再次用pdflatex编译
.tex文件两次,完成引用解析
方案3:修正bib文件格式
移除bib文件中无效的month = {00}字段,并修正页码的空格(natbib对格式更敏感):
@article{GoelThakor2008, year = {2008}, title = {{Overconfidence, CEO selection, and corporate governance}}, author = {Goel, Anand M and Thakor, Anjan V}, journal = {Journal of Finance}, pages = {2737--2784}, volume = {63} }
内容的提问来源于stack exchange,提问作者user416
相关产品推荐
相关产品推荐

