我想定义一个命令,例如\paperkey{bibitem}
,其中如果bibitem
包含一篇论文的 BibTeX 条目,例如
Foo A、Bar B、一些标题,2004
它生成FB04
输出。
换句话说,我想按顺序从每个作者姓氏的首字母开始生成文本,然后是两个字母的年份。如果命令/宏可以将 4 个以上的其他作者替换为+
: CJKW+10
,则可获得加分。
有没有简单的方法可以实现这一点?
答案1
biblatex
(使用选项)很简单labelalpha
。
只需声明一个模板来构建标签即可。具体来说,该模板使用名称和年份来构建标签,并指定如何解析名称(使用\DeclareLabelalphaNameTemplate
)。最后一步是为创建一个特殊的引用命令\paperkey
。
\documentclass{article}
\usepackage[labelalpha=true,minalphanames=3,maxalphanames=3]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareLabelalphaTemplate{
\labelelement{
\field[strwidth=1,strside=left,names={1-3+}]{labelname}
}
\labelelement{
\field[strwidth=2,strside=right]{year}
}
}
\DeclareLabelalphaNameTemplate{
\namepart[strwidth=1]{family}
}
\DeclareCiteCommand{\paperkey}
{}
{\printfield{labelalpha}}
{}
{}
\begin{document}
\paperkey{herrmann}
\paperkey{sigfridsson}
\printbibliography
\end{document}