忽略作者姓名中的空格

忽略作者姓名中的空格

我正在使用字母 biblatex 样式和选项maxalphanames=1。如何让 biblatex 在标签生成期间忽略作者姓名中的任何空格?

% arara: pdflatex
% arara: biber
% arara: pdflatex
% arara: pdflatex

\documentclass{article}
\usepackage[american]{babel}
\usepackage[strict]{csquotes}
\usepackage[backend=biber, style=alphabetic, maxalphanames=1]{biblatex}

\begin{filecontents*}{test.bib}
@Article{DeLorca2015,
  Title   = {Article title},
  Author  = {De Lorca, Antonio and Jekyll, Martin},
  Journal = {Journal title},
  Year    = {2015}
}
\end{filecontents*}

\renewcommand*{\labelalphaothers}{}

\bibliography{test}

\begin{document}
  \cite{DeLorca2015}
\end{document}

上述 MWE 生成了标签[De 15],但我宁愿标签是[DeL15]

答案1

biblatex3.1/Biber 2.2开始\DeclareNolabel,我们可以使用它在创建标签时忽略某些字符。

默认是忽略[\p{P}\p{S}\p{C}]+。如果我们也想忽略空格字符,我们只需要添加\p{Z}(你可以在perldoc.perl.orgUnicode 字符属性以及 Perl 中的常规 RegEx珍珠岩

\DeclareNolabel{
  \nolabel{\regexp{[\p{Z}\p{P}\p{S}\p{C}]+}}
}

平均能量损失

\documentclass{article}
\usepackage[american]{babel}
\usepackage[strict]{csquotes}
\usepackage[backend=biber, style=alphabetic, maxalphanames=1]{biblatex}

\begin{filecontents*}{\jobname.bib}
@Article{DeLorca2015,
  Title   = {Article title},
  Author  = {De Lorca, Antonio and Jekyll, Martin},
  Journal = {Journal title},
  Year    = {2015}
}
\end{filecontents*}

\renewcommand*{\labelalphaothers}{}

\bibliography{\jobname}

\DeclareNolabel{
  \nolabel{\regexp{[\p{Z}\p{P}\p{S}\p{C}]+}}
}

\begin{document}
  \cite{DeLorca2015}
\end{document}

输出为 [DeL15]

相关内容