我有一个想法,坦率地说,我没有任何类型的 Start/MWE,因为我认为这实际上是一个相当困难的问题,至少对我来说是这样,但如果有人有兴趣尝试的话,这可能是一种有趣的结果。
我想\citep{...}, \citet{...}
根据特定参考的使用频率更改内联引用(即类型宏)的链接颜色。
因此,低频率引用(即仅使用过一次的引用)可能会显示为黑色,而最受欢迎的引用(即对文献综述有重大贡献的开创性评论,被引用 X 次,X > 1)将显示为红色。其他所有内容的数量与其相对受欢迎程度成正比。
因此,在编译文档时,第一步需要计算每个正在使用的参考书目键的相应频率,后续编译需要根据 1 与最受欢迎参考文献的频率之间的比率以某种方式动态分配颜色。
你为什么要这样做?因为读者在阅读文档时,可以根据颜色的“热度”判断哪些是重要的参考资料,哪些不是。
答案1
以下是一个简单的方法biblatex
。计算每个引用的引用次数的主要工作是citecounter
通过我可以计算每篇参考文献被引用的次数吗?。
我们只需要一种方法来获取最大引用数(也许这值得提出一个功能请求https://github.com/plk/biblatex/issues/791)。然后我们可以轻松地计算出引用的红色通道,其中$255\frac{c}{m}$
是当前引用$c$
的值,是。(这是整数除法,但我希望乘以 255 并使用模型可以抵消大多数意图和目的的舍入误差。)citecounter
$m$
maxcitecounter
RGB
\documentclass{article}
\usepackage{xcolor}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\makeatletter
\protected\def\blx@aux@count#1#2{%
\csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}%
\ifnumgreater{\csuse{blx@count@#1@\detokenize{#2}}}{0\csuse{blx@maxcitecount@#1}}
{\csnumgdef{blx@maxcitecount@#1}{\csuse{blx@count@#1@\detokenize{#2}}}}
{}%
}
\ExecuteBibliographyOptions{citecounter=true}
\AtEveryCitekey{%
\ifcsundef{blx@count@\therefsection @\strfield{entrykey}}
{\edef\blx@cite@colour{0}}
{\edef\blx@cite@colour{%
\the\numexpr255*\csuse{blx@count@\therefsection @\strfield{entrykey}}/
\csuse{blx@maxcitecount@\therefsection}\relax}}%
\color[RGB]{\blx@cite@colour,0,0}%
}
\makeatletter
\begin{document}
Lorem\autocite{sigfridsson} ipsum\autocite{worman} dolor\autocite{nussbaum}
Lorem\autocite{sigfridsson} ipsum\autocite{worman} dolor\autocite{geer}
Lorem\autocite{sigfridsson} ipsum\autocite{worman} dolor\autocite{knuth:ct:b}
Lorem\autocite{sigfridsson} ipsum\autocite{knuth:ct:a} dolor\autocite{nussbaum}
\printbibliography
\end{document}