cite 和 citep 对 acmart 包做同样的事情

cite 和 citep 对 acmart 包做同样的事情

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和均由\citetnatbib 定义,因此不是标准的。\cite应避免使用标准 LATEX 命令,因为它的行为类似于\citet作者年份引用,但类似于\citep数字引用。

因此,使用 natbib 的文档有时会将其\cite视为\citep,有时会将其视为\citet。有人会认为,如果您\citestyle{acmauthoryear}在 acm 文档中使用 来获取作者年份引用,它会将其视为\cite\citetacmart.cls会覆盖 并且具有\let\cite\citep,因此\cite表现为\citep

如果您采纳 natbib 文档的建议,则应避免在括号外的任何位置\cite使用。但是,如果您太习惯使用或您的文档已经用 编写,并且您想将-behavior 设为默认值,则可以重新定义:\citet\cite\cite\citet\cite

\renewcommand{\cite}{\citet}

相关内容