我需要区分一些特定的参考文献和其他参考文献,无论是在正文中还是在文档末尾的参考文献列表中。假设我想要蓝色的“常规”参考文献,橙色的(实际上是我的参考文献)参考文献。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 的期望结果。但是,我不确定我在这个过程中可能破坏了什么……我猜是基于年份的排序。显然,我修复了年份分隔符,[]
但可能还有其他问题。但如果合适,就在这里。