使用 \cite 仅显示第一作者(有例外)- 某些作者会忽略 maxcitenames

使用 \cite 仅显示第一作者(有例外)- 某些作者会忽略 maxcitenames

在我目前正在进行的演示中,我希望所有引用都看起来像

[LastNameOfFirstAuthor 等 1999]

其中 1999 是年份,而“et al.”仅对多位作者显示。在相同情况下(即我谈论的是我的论文,而我不是第一作者),我希望它像这样

[LastNameOfFirstAuthor、LastNameOfSecondAuthor、MyLastName 等 1999]

我尝试通过以下设置来实现此行为:

\usepackage[url=false,citestyle=authoryear,block=ragged,backend=biber,
            maxalphanames=1,maxcitenames=1,indexing=true]{biblatex}

加上覆盖 cite 命令,例如

\let\ORIGcite=\cite
\renewcommand{\cite}[2][1]{%
  \AtNextCite{\defcounter{maxnames}{#1}\defcounter{minnames}{#1}}
  \footnotesize[\ORIGcite{#2}]%
}

后一部分似乎运行良好,但如果您有一个被多次引用的作者(不同的作品),maxcitenames则会忽略该设置。

即使明确设定作者数量也\cite\[1\]{...}无济于事。

这是 MWE(希望格式不是太糟糕)

\documentclass[noshadow]{beamer}
\usepackage{filecontents}
\RequirePackage[url=false,citestyle=authoryear,block=ragged,backend=biber,maxcitenames=1,indexing=true]{biblatex}
\addbibresource{\jobname.bib} 
\begin{filecontents}{\jobname.bib}
@InProceedings{b,
  Title                    = {BBB},
  Author                   = {Justin For and Compa Rison},
  Year                     = {1999}
}
@PhdThesis{a,
  Title                    = {AAA},
  Author                   = {Some Name},
  Year                     = {2002},
}
@InProceedings{c,
  Title                    = {CCC},
  Author                   = {Some Name and Second Author},
  Year                     = {2012},
}
\end{filecontents}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\section{Slide 1}
\begin{frame}
    \cite{c}\\
    \cite{b,a}
\end{frame}
\begin{frame}{Literature}
    \printbibliography
\end{frame}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

这产生了

Name and Author 2012
For et al. 1999; Name 2002

但应该产生

Name et al. 2012           <---
For et al. 1999; Name 2002

我将非常感激对这个问题的任何帮助。

我猜这个问题与这个相关;但它们在这里没有帮助。

答案1

好的,我自己找到了解决方案。这似乎与设置有关 uniquelist=false。更多详细信息可在此处找到

在 biblatex 中使用“et al.”时,限制为一位作者

然而,对我来说这似乎很奇怪,因为在我给出的例子中,键将是唯一的(考虑到不同的出版年份和“et al.” - 后者可能不算数)。

答案2

您原始问题中的想法对我有帮助。我将在这里提取并稍微清理一下:

\newcommand{\citefirst}[1]{%
  \AtNextCite{\defcounter{maxnames}{1}\defcounter{minnames}{1}}%
  \citet{#1}%
}

如果您只想引用作者,请将 替换\citet\citeauthor

相关内容