natbibapa 和 \shortcite 的问题

natbibapa 和 \shortcite 的问题
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@article{c,
  author  = "Anne Author and Bert Buthor and Carla Cuthor",
  title   = "Final Thoughts",
  journal = "Circularity Today",
  year    = 3009,
  volume  = 9,
  number  = 10,
  pages   = "11--12",
}
\end{filecontents}
\documentclass{article}
\usepackage[natbibapa]{apacite}
\begin{document}
\citet{c} says something.

\bibliographystyle{apacite}
\bibliography{mybib}
\end{document} 

在我的论文中,我需要引用作者的姓名和年份,所以我使用 natbib。但是对于两位以上的作者,我希望只显示名字,然后显示 et.al。但是由于我使用 natbib,所以无法使用 \shortcite。还有其他方法可以解决这个问题吗?

答案1

该声明,

我需要引用作者的姓名和年份,所以我使用 [natbibapa 选项]

包含一个不合逻辑的推论:可以轻松创建作者年份样式的引文标注没有指定natbibapa选项。只需使用\citeA代替\citet\cite代替 即可。有关更多信息,\citep请参阅软件包用户指南的第 4.1 节“‘经典’ apacite 命令” 。apacite

通过此设置,使用\shortciteA\shortcite生成带有截断作者列表的文本样式和括号样式的引用标注完全没有问题。


在此处输入图片描述

\documentclass{article}
\begin{filecontents}[overwrite]{mybib.bib}
@article{c,
  author  = "Anne Author and Bert Buthor and Carla Cuthor",
  title   = "Final Thoughts",
  journal = "Circularity Today",
  year    = 3009,
  volume  = 9,
  number  = 10,
  pages   = "11--12",
}
\end{filecontents}
\usepackage{apacite}
\bibliographystyle{apacite}

\begin{document}
\shortciteA{c} says something.
\bibliography{mybib}
\end{document}

答案2

APA 格式(第 6 版,实施中)的一个特点是,apacite第一次引用时完整列出三到五位作者,后续引用时仅列出第一作者 + “et al.”

对于一次性事件,apacite定义命令来覆盖诸如\shortcite


如果您使用 ,apacitenatbibapa表示apacite将部分引文命令的控制权移交给natbib,这意味着apacite通常定义的一些专业引文命令不再可用。其中之一就是\shortcite

apacite文档说(§4.2用于natbib引用,第 15 页)

通过在命令后添加星号可获得完整作者列表,例如\citet*{key}。没有单独的命令用于简短作者列表,但可以使用构造 获得\shortcites{key}\citet{key}

因此,一个选择是说

\shortcites{c}\citet{c}

第一次引用时c。后续引用将缩写为第一作者 + “et al.”无论如何。但这当然非常繁琐、容易出错,而且总体感觉不对。

apacite但我们上面引用的手册部分包含更多信息

使用natbibapa选项 ,使用选项 和apacite加载。natbiblongnamesfirstsort

因此,natbibapa由于有选项,我们在第一次引用时获得了较长的作者列表longnamesfirst。如果我们可以关闭该选项,我们就可以重新开始工作了。

不幸的是,natbib没有提供关闭此选项的界面。一旦natbib加载,longnamesfirst就没有选项可以将其关闭。所以我们必须求助于内部命令。该选项将一个内部布尔值设置NAT@longnames为 true,因此我们将其设置为 false。

\documentclass{article}
\usepackage[natbibapa]{apacite}
\makeatletter
\NAT@longnamesfalse
\makeatother

\begin{filecontents}{\jobname.bib}
@article{c,
  author  = {Anne Author and Bert Buthor and Carla Cuthor},
  title   = {Final Thoughts},
  journal = {Circularity Today},
  year    = 3009,
  volume  = 9,
  number  = 10,
  pages   = {11--12},
}
\end{filecontents}


\begin{document}
\citet{c} says something.

\citet{c} says something.

\bibliographystyle{apacite}
\bibliography{\jobname}
\end{document} 

作者等人(3009)说了些什么。//作者等人(3009)说了些什么。


如果你正在寻找相同问题的答案,但没有选项natbibapa(即使用apaciteclassic),我能找到的最简单的答案就是说

\let\cite\shortcite
\let\citeA\shortciteA
\let\citeNP\shortciteNP
\let\citeauthor\shortciteauthor
\let\citeauthorNP\shortciteauthorNP

\let\maskcite\maskshortcite
\let\maskciteA\maskshortciteA
\let\maskciteNP\maskshortciteNP
\let\maskciteauthor\maskshortciteauthor
\let\maskciteauthorNP\maskshortciteauthorNP

相关内容