我在定制 biblatex 的标准 alpha 标签定义时遇到一些问题。
\DeclareLabelalphaTemplate{
\labelelement{
\field[final]{shorthand}
\field{label}
\field[strwidth=3,strside=left,ifnames=1,pcompound=true]{labelname}
\field[strwidth=1,strside=left,pcompound=true]{labelname}
}
\labelelement{
\field[strwidth=2,strside=right]{year}
}
}
我希望有一个类似于位置相关的 strwidth 定义,例如,对于第一作者,strwidth=3,对于其余作者,strwidth=1。有没有办法用 biblatex 来实现这一点?
据我所见
\field[strwidth=1,strside=left,pcompound=true]{labelname}
得到处理后,标签名称列表为空,因此输入类似
\DeclareLabelalphaTemplate{
\labelelement{
\field[final]{shorthand}
\field{label}
\field[strwidth=3,strside=left,names=1]{labelname}
\field[strwidth=1,strside=left]{labelname}
}
\labelelement{
% \field[strwidth=1,strside=left]{labelname}
\field[strwidth=2,strside=right]{year}
}
}
没有帮助。
答案1
biblatex 3.3/biber 2.4 支持此功能(目前位于 Sourceforge 上的 DEV 文件夹中)。“names”选项现在采用一个范围,而不仅仅是一个数字。因此,您现在可以指定将子字符串应用于部分中的哪些名称。还支持开放式范围,其上限为名称列表的末尾或指定的可见性的末尾minalphanames
。我还添加了一个选项noalphaothers
来抑制alphaothers
截断列表的添加。请参阅 PDF 文档。至少,您现在可以像这样处理您的要求:
\DeclareLabelalphaTemplate{
\labelelement{
\field[strwidth=3,strside=left,names=-1,noalphaothers]{labelname}
}
\labelelement{
\field[strwidth=1,strside=left,names=2-,noalphaothers]{labelname}
}
}