软件包 natbib 警告:引用‘)’被多次定义

软件包 natbib 警告:引用‘)’被多次定义

当我为 ACM 会议撰写论文时,使用最新的acmart 文件:

Package natbib Warning: Citation `)' multiply defined.

此外,我还收到此错误以及以下错误:

Package natbib Warning: Citation `ufactory' on page 3 undefined on input line 21.

上述引用未定义消息仅出现在 3 个杂项引用中,如下所示,当我删除 3 个杂项引用时,第一个警告消息消失。

在该output.aux文件中,我看到了这些引文的以下内容:

\bibcite{)}{{33}{[n.\,d.(@}{{SDRplay}}{{}}}

\bibcite{)}{{37}{[n.\,d.(@}{{uArm Developer}}{{}}}

\bibcite{)}{{38}{[n.\,d.(@}{{UFACTORY}}{{}}}

我在序言中使用的软件包如下:

\documentclass[sigconf,anonymous,table]{acmart}

% Packages
\usepackage{xcolor}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{makecell}
\usepackage{booktabs}
\usepackage{array}
\usepackage{float}
\usepackage{enumitem}

引用

@misc{sdrplay2022, title={SDRuno}, url={https://www.sdrplay.com/sdruno}, author={SDRplay}}
@misc{ufactory, title={UFactory UArm}, url={https://www.ufactory.cc/uarm}, author={UFACTORY}}
@misc{uarmdeveloper, title={UARM-developer/UARM-Python-SDK: New Python Library for Swift, swift pro}, url={https://github.com/uArm-Developer/uArm-Python-SDK/tree/2.0}, author={uArm-Developer}}

编辑:

最新的 acmart 文件可以在官方网站上收集:https://www.acm.org/publications/proceedings-template

乳胶文档 MWE 可以在这里看到:

\documentclass[sigconf,anonymous,table]{acmart} % anonymous

% Packages
\usepackage{xcolor}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{makecell}
\usepackage{booktabs}
\usepackage{array}
\usepackage{float}
\usepackage{enumitem}
% \graphicspath{{img/}}


\newcommand{\subscript}[2]{$#1 _ #2$}
\newcommand{\paragraphb}[1]{\vspace{0.03in}\noindent{\bf #1} }

\begin{document}

\title{My Paper}

\author{James Smith, John Nash}
\affiliation{%
    \institution{My Afill}
    \city{City}
    \country{ABC}
}
\email{{first.last}@afill.com}

\begin{abstract}
...
\end{abstract}


\keywords{a, b, c}
\maketitle

I used
uFactory's uARM Swift Pro~\cite{ufactory} and ... using
the uARM Python (3.8.X) SDK~\cite{uarmdeveloper}. The data capture ... uses ..
SDRuno~\cite{sdrplay2022} with ...

% References
\bibliographystyle{ACM-Reference-Format}
\bibliography{references}

\end{document}

references.bib用文件如下,省略了所有其他引用:

@misc{sdrplay2022, title={SDRuno}, url={https://www.sdrplay.com/sdruno}, author={SDRplay}}
@misc{ufactory, title={UFactory UArm}, url={https://www.ufactory.cc/uarm}, author={UFACTORY}}
@misc{uarmdeveloper, title={UARM-developer/UARM-Python-SDK: New Python Library for Swift, swift pro}, url={https://github.com/uArm-Developer/uArm-Python-SDK/tree/2.0}, author={uArm-Developer}}

答案1

我可以使用从问题中提供的链接下载的当前 ACM 书目样式来重现该错误(https://www.acm.org/publications/proceedings-template)。这是 ACM-Reference-Format.bst 的 2.1 版,它是为 2017 年 6 月 14 日发布的 acmart.cls 1.79 版编写的。acmart.cls 的当前版本较新(2022/04/09 v1.84),但最近的更改重点是 BibLaTeX 支持,BibTeX 样式保持不变。

该类支持数字和作者年份引用(适用于 BibTeX 和 BibLaTeX)。数字是默认的,但文件在两种情况下都会在文件中.bst条目的可选参数中生成作者年份标签(使用数字样式时将被忽略)。\bibitem.bbl

对于没有year字段的条目,这会产生问题。标签格式化程序包含以下代码:

year empty.or.unknown
    { "[n.\,d.]" }
    { year field.or.null purify$ #-1 #4 substring$}

这会在.bbl文件中生成如下条目:

\bibitem[SDRplay([n.\,d.])]%
        {sdrplay2022}

由于未对[]aroundn.\,d.进行转义,可选参数解析不正确,并且)第一个之后的]参数被解析为每个不带年份的条目的 citekey。

您可以通过编辑 ACM-Reference-Format.bst 来修复此错误,特别是FUNCTION { calc.basic.label }和。删除两个函数中FUNCTION { calc.label }的括号就足够了:n.\,d.

year empty.or.unknown
    { "n.\,d." }
    { year field.or.null purify$ #-1 #4 substring$}

然后(未使用的)可选参数如下所示:

\bibitem[SDRplay(n.\,d.)]%
        {sdrplay2022}

并且该文档编译正确:

在此处输入图片描述

请注意,参考书目仍然[n.d.]用方括号显示,此输出来自.bst文件中的不同函数,与可选 citekey 的格式无关。

相关内容