不使用 xpatch 而是使用 biber 和 hash 来使特定作者变为粗体?

不使用 xpatch 而是使用 biber 和 hash 来使特定作者变为粗体?

我已阅读过有关此主题的先前问题:12但我想知道是否有一个更简单的解决方案,它不需要 xpatch,而是(可能)使用最近的 bibtex/biber 的注释功能(例如,我认为是 \AtEveryBibitem)结合 biber 提供的作者哈希?

答案1

目前我还没有找到绕过biblatex宏的方法。

\documentclass{article}
\usepackage{biblatex,xparse}
\addbibresource{biblatex-examples.bib}

%%%

\ExplSyntaxOn

\clist_new:N \bib_author_bold_clist

\NewDocumentCommand \makeauthorbold { m }
{
  \clist_put_right:Nn \bib_author_bold_clist { #1 }
}

\cs_generate_variant:Nn \clist_if_in:NnT { NxT }

\NewDocumentCommand \authorbold { m }
{
  \clist_if_in:NxT \bib_author_bold_clist { #1 } { \bfseries }
}

\ExplSyntaxOff

\renewbibmacro*{name:given-family}[4]{%
  \usebibmacro{name:delim}{#2#3#1}%
  \usebibmacro{name:hook}{#2#3#1}%
  \begingroup
  \authorbold{#1}%
  \ifdefvoid{#2}{}{\mkbibnamegiven{#2}\isdot\bibnamedelimd}%
  \ifdefvoid{#3}{}{%
    \mkbibnameprefix{#3}\isdot
    \ifprefchar
      {}
      {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}%
  \mkbibnamefamily{#1}\isdot
  \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
  \endgroup}

%%%

\makeauthorbold{Kastenholz, Hünenberger}

\begin{document}

\nocite{kastenholz}

\printbibliography

\end{document}

在此处输入图片描述

相关内容