让 Biblatex 仅显示作者的名字

让 Biblatex 仅显示作者的名字

我正在寻找一种方法来强制biblatex删除除第一个之外的所有名字。我实际上只使用首字母,但当作者连续有 3-4 个名字并且只有第一个名字为人所知时,即使这样也会变得混乱。

假设我引用了这个家伙的话:

John Paul Peter Julian Doe

输出将是:

J. P. D. J. Doe

这已经很长了。删除点和细空格并不是一个真正的选择。我希望它最终只是J. Doe用于参考的文内(cbx)部分。

基于这个相关问题biblatex,我认为使用+是可能的biber,而且这是我所赞成的解决方案。

答案1

可以通过创建一个新的姓名格式来解决这个问题,将名字格式化为第一个首字母:

% Format for VeryFirstInitial - LastName
\DeclareNameFormat{firstfirstinit-last}{%
\usebibmacro{name:first-last}{#1}{\firstinit{#4}\adddot}{#5}{#7}%
\usebibmacro{name:andothers}}

为此,我使用了一个自定义宏,它只识别名字的第一个首字母(由@StevenBSegletes 提供,仅排版一组中的第一个字母):

% Helper function to get initial letter
\def\firstinit#1{\justfirst#1\relax}
\def\justfirst#1#2\relax{#1}

然后biblatex设置为在参考书目中使用首字母,并且在文内引用中仅使用第一个首字母:

% Set format for sortname (bibliography) and labelname (citation)
\DeclareNameAlias{sortname}{firstinits-last}
\DeclareNameAlias{labelname}{firstfirstinit-last}

结果

例子

平均能量损失

\documentclass[]{article}

\usepackage{filecontents}
\begin{filecontents*}{bib.bib}
@article{jdoe,
    author       = {John Paul Peter Julian Doe},
    journal  = {Journal},
    title        = {Title},
    year      = 2014,
    pages = 111--222,
}
\end{filecontents*}

\usepackage[style=authoryear]{biblatex}
\addbibresource{bib.bib}

% Helper function to get initial letter
\def\firstinit#1{\justfirst#1\relax}
\def\justfirst#1#2\relax{#1}

% Format for FirstInitials - LastName (standard implementation)
\DeclareNameFormat{firstinits-last}{%
\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}%
\usebibmacro{name:andothers}}

% Format for VeryFirstInitial - LastName
\DeclareNameFormat{firstfirstinit-last}{%
\usebibmacro{name:first-last}{#1}{\firstinit{#4}\adddot}{#5}{#7}%
\usebibmacro{name:andothers}}

% Set format for sortname (bibliography) and labelname (citation)
\DeclareNameAlias{sortname}{firstinits-last}
\DeclareNameAlias{labelname}{firstfirstinit-last}

\begin{document}

\noindent Citation: \cite{jdoe}.

\printbibliography[]

\end{document}

相关内容