我是新来的,所以请多多包涵。我想姓的仅限第一作者在参考书目中以粗体显示,即在 MWE 中,我希望仅参考书目中的“Fox”(而不是引用)以粗体显示。
梅威瑟:
\documentclass[a4paper,twoside,hidelinks]{article}
\usepackage[backend=biber,
natbib=true,
uniquename=false,
uniquelist=false,
firstinits=true,
style=authoryear,
sorting=nyt,
maxcitenames=2,
minbibnames=1,
maxbibnames=100,
block=none]{biblatex}
\bibliography{sample.bib}
\begin{document}
Here is some sample text \parencite{Fox2011}.
\printbibliography
\end{document}
\RequirePackage{filecontents}
\begin{filecontents}{sample.bib}
@ARTICLE{Fox2011,
author = {Peter Fox and Richard Rabbit and Franc Bird},
title = {Animals are the better humans},
journal = {Horse and Hound},
year = {2011},
volume = {10},
pages = {11--15}
}
\end{filecontents}
答案1
我们重新定义了一个bibmacro
。其实变化很小:插入了一点\mkbibbold
。
\renewbibmacro*{name:last-first}[4]{%
\ifuseprefix
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
\ifblank{#3}{}{%
\ifcapital
{\mkbibbold{\mkbibnameprefix{\MakeCapital{#3}}\isdot}}
{\mkbibbold{\mkbibnameprefix{#3}\isdot}}%
\ifpunctmark{'}{}{\bibnamedelimc}}%
\mkbibbold{\mkbibnamelast{#1}\isdot}%
\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
\ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{#2}\isdot}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibbold{\mkbibnamelast{#1}\isdot}%
\ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
\ifblank{#2#3}{}{\revsdnamepunct}%
\ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{#2}\isdot}%
\ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}
答案2
我认为最好使用专用的名称格式来完成此操作。
想法是重新定义\mkbibnamefamily
仅为名字打印姓氏的宏,然后恢复它。
默认authoryear
使用family-given/given-family
,所以我们定义family-given/given-family-bf
。
\DeclareNameFormat{family-given/given-family}{%
\ifnumequal{\value{listcount}}{1}
{\renewcommand*{\mkbibnamefamily}[1]{\mkbibbold{##1}}%
\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\ifboolexpe{%
test {\ifdefvoid\namepartgiven}
and
test {\ifdefvoid\namepartprefix}}
{}
{\usebibmacro{name:revsdelim}}}
{\renewcommand*{\mkbibnamefamily}[1]{##1}%
\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}
如果您希望所有名称都family-given
\DeclareNameFormat{family-given-fb}{%
\ifnumequal{\value{listcount}}{1}
{\renewcommand*{\mkbibnamefamily}[1]{\mkbibbold{##1}}}
{\renewcommand*{\mkbibnamefamily}[1]{##1}}%
\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\usebibmacro{name:andothers}}
或者given-family
\DeclareNameFormat{given-family-fb}{%
\ifnumequal{\value{listcount}}{1}
{\renewcommand*{\mkbibnamefamily}[1]{\mkbibbold{##1}}}
{\renewcommand*{\mkbibnamefamily}[1]{##1}}%
\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\usebibmacro{name:andothers}}
然后使用上面的格式之一\DeclareNameAlias{sortname}{format}
,例如
\DeclareNameAlias{sortname}{family-given-fb}
平均能量损失
\documentclass{article}
\usepackage[backend=biber, style=authoryear]{biblatex}
\DeclareNameAlias{sortname}{family-given-fb}
\DeclareNameFormat{family-given-fb}{%
\ifnumequal{\value{listcount}}{1}
{\renewcommand*{\mkbibnamefamily}[1]{\mkbibbold{##1}}}
{\renewcommand*{\mkbibnamefamily}[1]{##1}}%
\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\usebibmacro{name:andothers}}
\bibliography{biblatex-examples.bib}
\begin{document}
Here is some sample text \parencite{baez/article}.
\printbibliography
\end{document}
针对biblatex
>= 3.3 进行了编辑,旧版本可以在编辑历史中找到。顺便说一句,在未来的版本(即 > 3.11)中,应该不需要恢复旧的定义,\mkbibnamefamily
因为名称应该分组https://github.com/plk/biblatex/pull/731。