重新定义 printnames 命令以改变字体?

重新定义 printnames 命令以改变字体?

\printnames命令产生以下输出之一:

John Smith
John Smith and Paul Winston
John Smith et al.

但是我不想打印作者的名字。也就是说,所需的输出是:

Smith
Smith and Winston
Smith et al.

另外,我得到了作者的名字小帽子字体,这不是我想要的。

[编辑] 关于小帽子字体问题,我觉得是因为我使用的样式文件有问题。我\renewcommand*{\mkbibnamelast}[1]{#1}按照@moewe 的建议尝试了,但是没有用。

至于这个问题的背景,我正在尝试制作自己的引用命令。我编辑了一个本地“biblatex.cfg”文件,其中包含以下内容:

\DeclareCiteCommand{\mycite}{}{%
    \printnames[default]{author}%
}{}{}

我的.tex文件如下所示:

\documentclass{article}

\usepackage[
    backend=biber,
    citestyle=authoryear-comp,
    natbib=true,
]{biblatex}

\begin{filecontents}{\jobname.bib}
@misc{S10,
  author = {Smith, John and Winston, Paul},
  date = {2010},
  title = {Some title 1},
}
@misc{S11,
  author = {Smith, John and Winston, Paul},
  date = {2011},
  title = {Some title 2},
}
@misc{S12,
  author = {Smith, John and Winston, Paul and Porter, Mark},
  date = {2012},
  title = {Some title 3},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\begin{itemize}
    \item One author: \mycite{S10} 
    \item Two authors: \mycite{S11} 
    \item Three authors: \mycite{S12}
\end{itemize}

\printbibliography 
\end{document}

答案1

如果您想要创建自定义引用命令,您可能想要使用labelname名称格式。您可能甚至不想打印author,而是打印labelname字段(不同之处在于,labelname如果没有给出作者,该字段可能包含作品的编辑者)。

打印解决方案labelname

\DeclareCiteCommand{\mycite}{}{%
  \ifnameundef{labelname}
    {}
    {\printnames{labelname}}%
}{}{}

使用标签名称格式打印author(不是最好的主意)

\DeclareCiteCommand{\mycite}{}{%
    \printnames[labelname]{author}%
}{}{}

相关内容