我正在使用verbose-ibid
citestyle 的改编版(如建议的那样这里) 和基于 的自定义 bbx 文件authoryear
。它所做的更改之一是使作者姓名显示为粗体。唯一的问题是样式verbose-ibid
似乎使用相同的宏,因此粗体姓名也会出现在 footcites 中。
以下是 bbx 的相关部分:
\RequireBibliographyStyle{authoryear}
\ExecuteBibliographyOptions{dashed=false,firstinits=true}
\renewbibmacro*{author}{%
\ifboolexpr{
test \ifuseauthor
and
not test {\ifnameundef{author}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\usebibmacro{bbx:savehash}%
\textbf{\printnames{author}}% THIS IS THE IMPORTANT LINE
\iffieldundef{authortype}
{\setunit{\addspace}}
{\setunit{\addcomma\space}}}%
\iffieldundef{authortype}
{}
{\usebibmacro{authorstrg}%
\setunit{\addspace}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\addspace}}%
\usebibmacro{date+extrayear}}
\DeclareNameAlias{sortname}{last-first}
\DeclareNameAlias{default}{last-first}
textbf
我怎样才能仅在参考书目中应用,而不触及引文和脚注?
答案1
大多数biblatex
样式使用姓名格式sortname
在参考书目中打印作者姓名,因此我们可以重新定义该格式。
特别sortname
是用于基于authoryear
- 和authortitle
的书目样式(包括系列)的名称格式。如果您希望和样式verbose
具有类似的效果,则应直接重新定义名称格式、和。numeric
alphabetic
author
editor
translator
首先我们定义一种新格式:first-last-bold
,它基于first-last
,但添加了\mkbibbold{
\DeclareNameFormat{given-family-bold}{\mkbibbold{%
\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\usebibmacro{name:andothers}}}
同样地,也可以
\DeclareNameFormat{family-given-bold}{\mkbibbold{%
\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\usebibmacro{name:andothers}}}
或者
\DeclareNameFormat{family-given/given-family-bold}{\mkbibbold{%
\ifnumequal{\value{listcount}}{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}}}
{\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}}
然后我们告诉biblatex
使用新格式
\DeclareNameAlias{sortname}{given-family-bold}
最后一步可能必须是
\DeclareNameAlias{author}{given-family-bold}
\DeclareNameAlias{editor}{given-family-bold}
\DeclareNameAlias{translator}{given-family-bold}
有一些风格。
平均能量损失
\documentclass{article}
\usepackage[style=verbose-ibid,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareNameFormat{given-family-bold}{\mkbibbold{%
\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\usebibmacro{name:andothers}}}
\DeclareNameAlias{sortname}{given-family-bold}
\begin{document}
\cite{cicero,wilde,baez/article,knuth:ct,aristotle:physics}
\printbibliography
\end{document}
答案已更新,以符合版本 3.3 中的新名称格式,请参阅Biblatex 3.3 名称格式。
答案2
您可以使用钩子\AtBeginBibliography
:
\AtBeginBibliography{%
\renewcommand*{\mkbibnamefirst}[1]{\mkbibbold{#1}}%
\renewcommand*{\mkbibnamelast}[1]{\mkbibbold{#1}}%
\renewcommand*{\mkbibnameprefix}[1]{\mkbibbold{#1}}%
\renewcommand*{\mkbibnameaffix}[1]{\mkbibbold{#1}}%
}
答案3
您应该能够\textbf
使用 xpatch-package 添加 -command。
在序言中:
\usepackage{xpatch}
然后你必须在之前写\printbibliography
:
\xpatchbibmacro{author}{\printnames{author}}{\textbf{\printnames{author}}}{}{}
它将会替换该命令。
(未经测试)
答案4
以下是moewe 的回答已更新,可与biblatex 版本 3.3+。我根本不是 biblatex 专家,但我想写下我为更新名称格式所做的事情。
在我工作的机器上,系统范围内安装的 biblatex 是 2.8a 版。文档的第 4.4.2 节解释了它
\DeclareNameFormat
接受三个参数。在第三个参数中,#1
从 到#8
用来指代一个人名字的各个组成部分。奇数给出完整的字符串,而偶数将其缩写为首字母。它们在这里。在括号中,我添加了如果我的名字是 的话它们会是什么Richard Wayne "Dick" van Dyke Senior
。
#1
和#2
:姓氏,又称家族名称(Dyke
, 或D.
)#3
和#4
:名字和中间名,又称教名 (Richard Wayne ``Dick''
)#5
和#6
:任何名称前缀 (van
)#7
和#8
:任何名称后缀,又称词缀 (Senior
)
biblatex 的较新版本不会将此信息作为位置参数传递;相反,它们以命名宏的形式提供。(这无疑使新手更容易理解格式的实际作用。以下是上述参数数字需要翻译成的内容。请注意,缩写版本是末尾带有 的相同宏i
。
\namepartfamily
和\namepartfamilyi
\namepartgiven
和\namepartgiveni
\namepartprefix
和\namepartprefixi
\namepartsuffix
和\namepartsuffixi
如果我们用这种方式替换#1
through的所有实例,我们会得到一个编译顺利的文档,其中参考书目中的姓氏为粗体。然而,biblatex 对我们并不完全满意。#8
Package biblatex Warning: '\iffirstinits' is deprecated, use '\ifgiveninits'.
Package biblatex Warning: 'name:first-last' is deprecated, please use 'name:given-family'.
我猜术语的改变是为了更好地支持家族在前的名字,例如日语名字。根据要求更新宏和字符串后,MWE 如下。
\documentclass{article}
\usepackage[style=verbose-ibid, backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareNameAlias{sortname}{first-last-bold}
\DeclareNameFormat{first-last-bold}{\mkbibbold{%
\ifgiveninits
{\usebibmacro{name:given-family}{\namepartfamily}{\namepartgiveni}{\namepartprefix}{\namepartsuffix}}
{\usebibmacro{name:given-family}{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}%
\usebibmacro{name:andothers}}}
\begin{document}
\cite{cicero,wilde,baez/article,knuth:ct,aristotle:physics}
\printbibliography
\end{document}
LaTeX 的输出与 moewe 的答案一样。