我正在编写一份参考书目,其中的条目应该是这样的:
Slager CJ, Wentzel JJ, Gijsen FJ, Schuurbiers JC, van der Wal AC, van der Steen AF, Serruys PW。剪切应力在易破裂易损斑块形成中的作用。Nat Clin Pract Cardiovasc Med。2005;2:401-407。
我知道通过激活选项giveninits
,terseinits
我可以获得我需要的没有点的首字母。但是,每个作者的首字母也有两个限制,我不能超过这个限制。对于上面的例子,bib 文件如下所示:
@ARTICLE{slager.2005,
author ={C. J. Slager and J. J. Wentzel and F. J. H. Gijsen and J. C. H. Schuurbiers and A. C. van der Wal and A. F. W. van der Steen and P. W. Serruys},
title = {The role of shear stress in the generation of rupture-prone vulnerable plaques},
journal = NCPCM,
date = {2005},
volume = {2},
number = {8},
pages = {401-407}
}
目前,我最终得到了Slager CJ, Wentzel JJ, Gijsen FJH, Schuurbiers JCH, van der Wal AC, van der Steen AFW, Serruys PW
(三位作者超出限制)。无论如何,我必须删除第一个作者之后的所有中间名,这样我才能保持两个首字母的限制。使用 biblatex 实现此目的的最佳方法是什么?
答案1
您可以尝试这样的方法 - 但由于您没有提供完整的示例,我无法测试它是否适合您的风格。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[terseinits,giveninits,maxnames=99]{biblatex}
\renewcommand\mkbibnamegiven[1]{{#1}}
\renewrobustcmd*{\bibinitdelim}{\def\bibinitdelim##1\bibinitperiod{}}
\addbibresource{test.bib}
\begin{document}
\cite{slager.2005}
\printbibliography
\end{document}
答案2
最好从源头上处理这个问题。biblatex 3.5/biber 2.6(目前在 Sourceforge 上的 DEV 中)有一个扩展名称格式,您可以在其中明确指定首字母,因此您可以这样做:
AUTHOR = {C. J. Slager and J. J. Wentzel and given=F. J. H., given-i=F. J., family=Gijsen and given=J. C. H., given-i=J. C., family=Schuurbiers and A. C. van der Wal and given=A. F. W., given-i=A. F., prefix=van der, family=Steen and P. W. Serruys}
这里,只对那些想要明确将首字母设置为两个名字的名称使用扩展格式。或者,如果您不想更改数据源,可以使用源映射执行此操作,方法是在序言中放入类似这样的内容(这应该适用于当前的 biblatex):
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=author,
match=\regexp{([A-Z]\.\s*[A-Z]\.)\s*[A-Z]\.},
replace=\regexp{$1}]
}
}
}
确切的正则表达式将取决于您的数据,例如,如果数据中的名称始终仅提供首字母,那么它会更容易,但也可以使用全名,具体取决于格式。