该acmart
包可直接在 Overleaf 上获取,可以在这里的第 2 部分下载:https://www.acm.org/publications/authors/submissions
梅威瑟:
\documentclass{acmart}
%\documentclass{article}
\citestyle{acmauthoryear}
\begin{filecontents}{mytestbib.bib}
@book{goossens93,
author = "Frank Mittelbach and Michel Goossens and Johannes Braams and David Carlisle and Chris Rowley",
title = "The {LaTeX} Companion",
year = "1993",
publisher = "Addison-Wesley",
address = "Reading, Massachusetts"
}
\end{filecontents}
\usepackage{filecontents}
\usepackage{natbib}
\usepackage{bibentry}
\nobibliography*
\begin{document}
Using \texttt{citep}: \citep{goossens93}.
Using \texttt{cite}: \cite{goossens93}.
What I expect from \texttt{cite}: Mittelbach et al. [1993] (this is what you get if you comment \texttt{documentclass\{acmart\}} and \texttt{citestyle\{acmauthoryear\}} and uncomment \texttt{documentclass\{article\}}).
\bibliographystyle{plainnat}
\bibliography{mytestbib}
\end{document}
将文档类切换为文章后,实现了所需的行为:
答案1
为了阐述和重申我在评论中所写的内容,natbib 定义了两个主要的引用命令\citep
和\citet
。对于作者年份引用:
\citep{mittelbach93}
生成类似[Mittelbach 等人,1993 年]名称在括号内\citet{mittelbach93}
生成类似Mittelbach 等人[1993]名称在括号外
\cite
关于没有 t 或 p 跟随的平原,natbib 文档说:
\citep
和均由\citet
natbib 定义,因此不是标准的。\cite
应避免使用标准 LATEX 命令,因为它的行为类似于\citet
作者年份引用,但类似于\citep
数字引用。
因此,使用 natbib 的文档有时会将其\cite
视为\citep
,有时会将其视为\citet
。有人会认为,如果您\citestyle{acmauthoryear}
在 acm 文档中使用 来获取作者年份引用,它会将其视为\cite
,\citet
但acmart.cls
会覆盖 并且具有\let\cite\citep
,因此\cite
表现为\citep
。
如果您采纳 natbib 文档的建议,则应避免在括号外的任何位置\cite
使用。但是,如果您太习惯使用或您的文档已经用 编写,并且您想将-behavior 设为默认值,则可以重新定义:\citet
\cite
\cite
\citet
\cite
\renewcommand{\cite}{\citet}