Biblatex:如何在给定条件下自动将文内引用加粗?

Biblatex:如何在给定条件下自动将文内引用加粗?

相关但可能不够相关:使引用加粗 latex使用 biblatex 进行彩色引用:文内 + 参考文献(后记 + 参考书目问题)

我一直在学习有关源映射的一些知识。但我认为这需要源映射以外的其他东西,因为我不知道源映射如何影响文内引用。

我想要执行以下操作:

  1. 对于每一个@inproceedings参考,
  2. 如果该note字段存在,则获取字符串,
  3. 如果此字符串包含子字符串www.youtube.com,则将文内引用加粗,(例如[43])。如果不是这种情况,则不执行任何操作,让它正常显示(例如 [43] )。

我知道这可能是一个相对具体的例子,但这可以相对容易地推广到其他数据类型或其他领域。

问题是:我该如何在 Biblatex/Lualatex 中解决这个问题?

理由:我的一些参考文献是多媒体系统。阅读论文很有趣,但有些研究人员在 YouTube 上发布了精彩的视频来演示他们的系统,如果读者有兴趣阅读参考文献,这是一个非常直观的入门介绍。我想做得更巧妙一些,这就是我想到的。

答案1

源映射正是这里合适的工具,您只需要一种方法来传达与文档的匹配。使用 可能最容易keyword。在示例中,源映射设置important匹配条目的关键字。\DeclareFieldFormat{labelnumberwidth}然后\DeclareFieldFormat{boldimportant}确保\renewbibmacro*{cite}条目的引用标签important变为粗体。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=numeric, backend=biber]{biblatex}
\usepackage{hyperref}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@inproceedings{appleby,
  author    = {Humphrey Appleby},
  title     = {On the Importance of the Civil Service},
  booktitle = {Why We Matter},
  date      = {1980},
  note      = {The corresponding speech is available at \url{https://www.youtube.com/watch?v=IO9XlQrEt2Y}},
}
@book{hacker,
  author    = {James Hacker},
  title     = {The Government},
  date      = {1981},
  note      = {The corresponding speech is available at \url{https://www.youtube.com/watch?v=IO9XlQrEt2Y}},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \pertype{inproceedings}
      \step[fieldsource=note, match={www.youtube.com}, final]
      \step[fieldsource=keywords, match=\regexp{\A(.+)\Z}, replace=\regexp{$1,}]
      \step[fieldset=keywords, fieldvalue={important}]
    }
  }
}

\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{\ifkeyword{important}{\mkbibbold{#1}}{#1}}}
\DeclareFieldFormat{boldimportant}{\ifkeyword{important}{\mkbibbold{#1}}{#1}}
\renewbibmacro*{cite}{%
  \printtext[bibhyperref]{%
    \printtext[boldimportant]{%
      \printfield{labelprefix}%
      \printfield{labelnumber}%
      \ifbool{bbx:subentry}
        {\printfield{entrysetcount}}
        {}}}}

\begin{document}
\cite{appleby,hacker}
\printbibliography
\end{document}

在此处输入图片描述

相关内容