![Biblatex 方括号颜色](https://linux22.com/image/289096/Biblatex%20%E6%96%B9%E6%8B%AC%E5%8F%B7%E9%A2%9C%E8%89%B2.png)
如何使用 biblatex(数字样式)更改文本中参考文献的方括号颜色?
我知道可以用 natbib 来完成,但不再使用这个包了。
\documentclass[hidelinks,spanish]{book}
\usepackage[usenames,dvipsnames]{color}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\definecolor{CeruleanRef}{RGB}{12,127,172}
\usepackage[colorlinks=true,linkcolor=black,citecolor=CeruleanRef,urlcolor=black]{hyperref}
\usepackage[numbers,sort&compress]{natbib}
\bibpunct{\color{CeruleanRef}[}{\color{CeruleanRef}]}{,}{n}{}{;}
\bibliographystyle{unsrtnat}
\begin{document}
\frontmatter
\mainmatter
A reference: \cite{RBoehler1996}
\appendix
\backmatter
\bibliography{articles,reports,books,reviews}
\end{document}
使用 natbib 我得到了这个:
我希望 biblatex 和 biber 也能有同样的效果。
答案1
您在此处看到的是hyperref
彩色(引用)链接(因为您在 中这样设置了colorlinks=true, citecolor=CeruleanRef
)。通常,当您仅引用该引用的某个部分时,该链接实际上会变成链接,使用数字样式时,仅链接数字本身,而不链接括号。您的natbib
修复并未将链接扩展到括号,只是为它们添加了颜色。
我们可以通过添加\color{CeruleanRef}
到命令的包装器来模拟该行为\cite
(我从中获取它numeric.cbx
,如果您使用或其他样式,请从那里numeric-comp.cbx
复制的定义)\cite
\DeclareCiteCommand{\cite}[\color{CeruleanRef}\mkbibbrackets]% <--- this is new
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}
为了numeric-comp
\DeclareCiteCommand{\cite}[\color{CeruleanRef}\mkbibbrackets]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}%
\usebibmacro{postnote}}
请记住:这实际上不会创建超链接,文本只是看起来像超链接。只有在非常特殊的情况下,才能创建范围如此大的超链接,而且需要做大量工作。(使用numeric-comp
,链接括号甚至没有任何意义:括号中的链接应该链接到哪里。)
平均能量损失
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[backend=biber, style=numeric-comp]{biblatex}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\definecolor{CeruleanRef}{RGB}{12,127,172}
\usepackage[colorlinks=true, citecolor=CeruleanRef]{hyperref}
\addbibresource{biblatex-examples.bib}
\DeclareCiteCommand{\cite}[\color{CeruleanRef}\mkbibbrackets]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}%
\usebibmacro{postnote}}
\begin{document}
\cite{companion,knuth:ct:b,knuth:ct:c} and \cite{baez/article} \cite{aksin}
\printbibliography
\end{document}
你也可以使用我在评论中所建议的临时解决方案
\makeatletter
\renewcommand*{\bibleftbracket}{\blx@postpunct\textcolor{red}{[}}
\renewcommand*{\bibrightbracket}{\blx@postpunct\textcolor{red}{]}\midsentence}
\makeatother
但这确实有副作用:所有左括号都会变成红色。