使用 natbib 为某些特定参考资料提供不同的样式/颜色

使用 natbib 为某些特定参考资料提供不同的样式/颜色

我需要区分一些特定的参考文献和其他参考文献,无论是在正文中还是在文档末尾的参考文献列表中。假设我想要蓝色的“常规”参考文献,橙色的(实际上是我的参考文献)参考文献。BibTeX 有一种方法,请参见此处:使用 Bibtex 的某些特定参考文献具有不同的样式/颜色

但我想用 做类似的事情natbib

(以下内容与上一篇文章类似,但现在涉及的natbib是 BibTeX)

我有一些非常标准的东西,例如:

.tex文件中:

\usepackage[authoryear,colon,square]{natbib}
\bibliographystyle{dcu}
\begin{document}

Something to say \citep{one_regular_ref01,another_regular_ref02,my_specific01}.

.bib当我解析来自期刊网站的条目时,一切正常。

这给了我类似的东西:

有些话要说[RegRef et al, 2001; aRegRef et al, 2002; My_paper, 2010]。

所有东西都是同一种颜色。但我希望我的裁判能用不同的颜色。

好的,我可以编辑该.bib文件,但这对我来说似乎很奇怪,因为我可以将其用于.bib另一个没有这个特定需求的文档。

我在想,*在引用调用的末尾添加(例如)\citep{my_specific01*}可以区分特定的引用,但现在我如何才能natbib改变这些参考文献的显示方式(再次在文本和参考列表中)为不同的颜色或任何字体样式。

我在网上没有找到任何可以解决这个非常具体的任务的东西,natbib但如果有任何想法我将不胜感激。

谢谢

答案1

已编辑,完全替代我之前的尝试,因为之前的尝试不符合 OP 的规格。已编辑,提供第二个试用版。

安全版本:

使用第 1 版(更安全)时,我无法将引用中的年份设为彩色,因为显然它在该字段(#3的参数)上使用排序模式,因此必须保持字母顺序。我通过重新定义在引用键所在的位置调用来\harvarditem完成我所做的工作。这些颜色由 which 定义,例如,将宏定义为。\harvarditem\[ref]color[ref]\refcolor{A01}{green}\A01color{green}

\documentclass{article}
\usepackage{xcolor,ifthen,filecontents}
\usepackage[authoryear,colon,square]{natbib}
\bibliographystyle{dcu}
\def\refcolor#1#2{\expandafter\xdef\csname#1color\endcsname{#2}}

\refcolor{A01}{green}
\refcolor{A01b}{cyan}
\refcolor{C03}{red}

\def\setbibcolor#1{%
  \expandafter\ifx\csname#1color\endcsname\relax%
    \color{black}%
  \else%
    \color{\csname#1color\endcsname}%
  \fi%
}
\makeatletter
\renewcommand\harvarditem[4][]{%
 \if\relax#1\relax
   \setbibcolor{#4}\bibitem[\setbibcolor{#4}#2(#3)]{#4}%
 \else
   \bibitem[#1(#3)#2]{#4}%
 \fi
}%
\makeatother
\begin{filecontents}{mybib.bib}
@misc{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha}
}
@misc{A01b,
  author = {Author, A.},
  year = {2001},
  title = {Alpha TWO}
}
@misc{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo}
}
@misc{C03,
  author = {Cuthor, C.},
  year = {2003},
  title = {Charlie}
}
@misc{D04,
  author = {Duthor, D.},
  year = {2004},
  title = {Delta}
}
\end{filecontents}
\begin{document}
cite \cite{A01, A01b, B02, C03, D04}
\bibliography{mybib}
\end{document}

在此处输入图片描述


试用更新:

通过重新定义

\renewcommand\harvarditem[4][]{%
 \if\relax#1\relax
   \setbibcolor{#4}\bibitem[\setbibcolor{#4}#2\ {[}#3{]}()]{#4}%
 \else
   \bibitem[#1(#3)#2]{#4}%
 \fi
}%

这样,我得到了这个 MWE 的期望结果。但是,我不确定我在这个过程中可能破坏了什么……我猜是基于年份的排序。显然,我修复了年份分隔符,[]但可能还有其他问题。但如果合适,就在这里。

在此处输入图片描述

相关内容