在 cleanthesis 中的 \fullcites 中突出显示所需的“第 n 位”作者?

在 cleanthesis 中的 \fullcites 中突出显示所需的“第 n 位”作者?

我发现关于在参考书目中使用 biblatex 突出显示作者有不同的答案,但在具体引用中却没有那么多。

\fullcite{Label}我在文本中使用不同的命令来显示不同作者的一些论文的完整参考资料。我使用干净的论文模板

我想在每个 fullcite 中突出显示不同的作者(粗体、下划线、彩色等)。例如,假设在第一个 fullcite 中将第一作者设为粗体,而在另一 fullcite 中将第三作者设为粗体,依此类推。

然而,参考书目必须保持不变。没有亮点。

有什么方法可以突出显示全引文中的第 n 位作者, \fullcite{LabelA}[1]或者\fullcite{LabelB}[3]使用某些命令来实现这一点?

感谢您提供的任何帮助。

答案1

正如解释的那样Biblatex 风格创作。我们如何重构 DeclareCiteCommand 以获取附加参数?没有官方方法可以向\cite命令添加另一个参数,而且我觉得滥用前置或后置参数在这里不是好做法。所以我使用了一种简单的方法,即调用一个宏\highlightnames并在那里给出要突出显示的名称。突出显示的名称列表存储在\fullcites 之间,可以用 清空\resetnamehighlights,带星号的版本\highlightnames*会在添加新数字之前重置列表。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=numeric, backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}

\makeatletter
\newcommand*{\resetnamehighlights}{\let\nhcbx@highlightlist\@empty}
\resetnamehighlights

\newcommand*{\highlightnames}{%
  \@ifstar{\resetnamehighlights\highlightnames@add}{\highlightnames@add}}

\newcommand*{\highlightnames@add@inner}[2]{%
  \listeadd{#1}{\the\numexpr#2\relax}}

\newcommand*{\highlightnames@add}{%
  \forcsvlist{\highlightnames@add@inner\nhcbx@highlightlist}}

\newcommand*{\mkbibhighlightnthname}[1]{%
  \xifinlist{\the\value{listcount}}{\nhcbx@highlightlist}
    {\mkbibbold{#1}}
    {#1}}
\makeatother

\DeclareNameWrapperFormat{highlightnthname}{%
  \renewcommand*{\mkbibcompletename}{\mkbibhighlightnthname}%
  #1}


\DeclareCiteCommand{\fullcite}
  {\usebibmacro{prenote}}
  {\usedriver
     {\DeclareNameWrapperAlias{author}{highlightnthname}%
      \DeclareNameWrapperAlias{editor}{highlightnthname}%
      \DeclareNameWrapperAlias{translator}{highlightnthname}%
      \DeclareNameWrapperAlias{sortname}{highlightnthname}}
     {\thefield{entrytype}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\begin{document}
\highlightnames{1}
{\frenchspacing\fullcite{sigfridsson}}

\highlightnames*{2}
{\frenchspacing\fullcite{sigfridsson}}

\resetnamehighlights
{\frenchspacing\fullcite{sigfridsson}}

\printbibliography
\end{document}

“Sigfridsson and Ryde” 以各种粗体组合显示。第一个引文突出显示了“Sigfridsson”,第二个突出显示了“Ryde”,第三个则没有突出显示。参考书目也没有突出显示任何名称。

编辑已修改以适用于biblatexv3.13 及更高版本。旧版本请参阅编辑历史。

相关内容