仅在参考书目中将作者姓名加粗

仅在参考书目中将作者姓名加粗

我正在使用verbose-ibidcitestyle 的改编版(如建议的那样这里) 和基于 的自定义 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具有类似的效果,则应直接重新定义名称格式、和。numericalphabeticauthoreditortranslator

首先我们定义一种新格式: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

如果我们用这种方式替换#1through的所有实例,我们会得到一个编译顺利的文档,其中参考书目中的姓氏为粗体。然而,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 的答案一样。

相关内容