![使用 Beamer + Hyperref + Natbib 进行引文着色](https://linux22.com/image/268340/%E4%BD%BF%E7%94%A8%20Beamer%20%2B%20Hyperref%20%2B%20Natbib%20%E8%BF%9B%E8%A1%8C%E5%BC%95%E6%96%87%E7%9D%80%E8%89%B2.png)
我正在使用natbib
带有自定义 bibstyle 的引用。我正在使用 LaTeX 制作演示文稿beamer
,由于某种原因,引用标记没有指定的颜色hyperref
。引用标记为黑色而不是绿色。我会给你一个 MWE:
\documentclass{beamer}
\hypersetup{
colorlinks,
citecolor=green,
linkcolor=red
}
\usepackage{filecontents}
\begin{filecontents}{mybib.bib}
@ARTICLE{Bar2011,
author = {F. Foo and F. Bar},
title = {Foo and Bar},
journal = {Journal of Foo},
year = {2011},
volume = {1},
pages = {1--3}
}
\end{filecontents}
\usepackage[comma,numbers,sort&compress]{natbib}
\bibliographystyle{plain}
\begin{document}
Dummy referefence to~\cite{Bar2011}
\bibliography{mybib}
\end{document}
为了 MWE 的目的,我选择了 bibstyle plain
,但是,将其更改为其他内容(包括我想要使用的自定义样式)不会影响标签颜色。
有针对此问题的补丁吗?
答案1
我不记得在哪里,但不久前,我找到了这个解决方法:
\documentclass{beamer}
\usepackage[comma,numbers,sort&compress]{natbib}
\bibliographystyle{plain}
\hypersetup{
colorlinks,
citecolor=green,
linkcolor=red,
backref=true
}
\let\oldbibitem=\bibitem
\renewcommand{\bibitem}[2][]{\label{#2}\oldbibitem[#1]{#2}}
\let\oldcite=\cite
\renewcommand\cite[1]{\hypersetup{linkcolor=green} \hyperlink{#1}{\oldcite{#1}}}
\let\oldcitep=\citep
\renewcommand\citep[1]{\hypersetup{linkcolor=green}\hyperlink{#1}{\oldcitep{#1}}}
\let\oldciteauthor=\citeauthor
\renewcommand\citeauthor[1]{\hypersetup{linkcolor=green}\hyperlink{#1}{\oldciteauthor{#1}}}
\usepackage{filecontents}
\begin{filecontents}{mybib.bib}
@ARTICLE{Bar2011,
author = {F. Foo and F. Bar},
title = {Foo and Bar},
journal = {Journal of Foo},
year = {2011},
volume = {1},
pages = {1--3}
}
\end{filecontents}
\begin{document}
Dummy referefence to~\cite{Bar2011}
\bibliography{mybib}
\end{document}
答案2
samcarter 提供的解决方案对我来说不太管用。但我通过将以下几行放入序言中成功了:
\let\oldcite=\cite
\renewcommand{\cite}[1]{\textcolor[rgb]{.7,.7,.7}{\oldcite{#1}}}