相关但可能不够相关:使引用加粗 latex和使用 biblatex 进行彩色引用:文内 + 参考文献(后记 + 参考书目问题)
我一直在学习有关源映射的一些知识。但我认为这需要源映射以外的其他东西,因为我不知道源映射如何影响文内引用。
我想要执行以下操作:
- 对于每一个
@inproceedings
参考, - 如果该
note
字段存在,则获取字符串, - 如果此字符串包含子字符串
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}