使用 bookdown 编译书籍时出现问题 - natbib 错误

使用 bookdown 编译书籍时出现问题 - natbib 错误

我正在使用以下 YAML 通过 bookdown 创建一本 pdf 书:

---
site: bookdown::bookdown_site
geometry: "left=4cm,right=3cm,top=3cm,bottom=3cm"
subparagraph: true
output:
  bookdown::pdf_book:
    latex_engine: xelatex
    fig_caption: yes
    toc: false
    citation_package: natbib
    includes:
      before_body: frontpage.tex
      after_body: after_body.tex
      in_header: preamble.tex
fontsize: 11pt
linestretch: 1.2
documentclass: book
bibliography: [packages.bib,library.bib]
biblio-style: [plainnatnew.bst]
link-citations: yes
---

在我的 preamble.tex 中,我使用它\setcitestyle{numbers,square,comma}来指定引用类型。我创建了一种新的书目样式来满足我对参考书目的需求,其中大部分内容与样式相似plainnat.bst(我已指定从文章条目中删除 URL,例如)。我在 R 中引用如下:[@Reference1996]。

我使用 Zotero 创建 .bib 文件,使用 betterBibtex。我使用的 R 包位于 中packages.bib,由 创建knitr::write.bib()

上周,它运行完美,没有错误。然而,突然我收到很多这样的错误:

Package natbib Warning: Citation X on page 9 undefined on input line 271

此外,我还得到了很多这样的

Warning--empty publisher/year in X

然而,在具体的引用中,年份和出版商都存在。

看到此错误后,我尝试更新所有 R 包(包括 bookdown、markdown 和 knitr),重新安装 LaTeX reinstall_tinytex(),重新创建两个.bib文件,并尝试在没有plainnat.new规范的情况下进行编译,但似乎没有任何效果。我仔细检查了文件.bib,它们包含 natbib 表示找不到的所有条目。此外,我删除了 bookdown 创建的所有文件,并从头开始重新运行所有内容。

有人知道可能是什么问题吗?因为之前一切似乎都运行正常,所以我不明白可能是什么问题...但是,我确实注意到这个问题是在我将bookdown::preview_chapter()书中的一章转换为 Word 格式后出现的,但据我所知,这并没有改变文件中的任何设置。

这是我的preamble.tex

\usepackage{titlesec}
\usepackage{pdfpages}
\titleformat{\chapter}
  {\normalfont\LARGE\bfseries}{\thechapter}{1em}{}  % set title format
\titlespacing*{\chapter}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
\AtBeginDocument{\let\maketitle\relax}
\usepackage{makeidx}
\makeindex
\setcitestyle{numbers,square,comma}
\usepackage{url}
\usepackage[nottoc]{tocbibind}
\usepackage{caption}
\captionsetup[figure]{textfont={small,it}, labelfont={normalsize,bf,it}}  % set figure caption font size and style
\usepackage{graphicx}
\usepackage{float}
\let\origfigure\figure
\let\endorigfigure\endfigure
\renewenvironment{figure}[1][2] {
    \expandafter\origfigure\expandafter[H]
} {
    \endorigfigure
}
\raggedbottom
\usepackage{fancyhdr,blindtext}
\fancyhf{}
\fancyhead[LO]{\slshape \rightmark} %section
\fancyhead[RO]{\thepage}
\fancyhead[RE]{\slshape \leftmark} % chapter
\fancyhead[LE]{\thepage}
\setlength{\headheight}{27.7pt} % as requested by fancyhdr's warning
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
\makeatletter
\renewcommand{\chaptermark}[1]{%    % change settings for including headers
  \if@mainmatter
    \markboth{Chapter \thechapter{}: #1}{}%
  \else
    \markboth{#1}{}%
  \fi
}
\makeatother
\usepackage{epigraph}
\setcounter{secnumdepth}{1}
\setcounter{tocdepth}{1}

答案1

经过大量的侦查工作,我终于确定了问题所在:library.bib 文件中的两个条目几乎完全相同,唯一的不同就是字母的大小写

Martines-Martines1998Martines-martines1998。很高兴知道 .bib 文件中的大小写无关紧要。我更改了其中一个条目,然后这本书像以前一样编译。

相关内容