我正在使用字母 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
从biblatex
3.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}