该\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}%
}{}{}