自定义 biblatex alpha 标签

自定义 biblatex alpha 标签

我在定制 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}
  }
}

相关内容