使用 Beamer + Hyperref + Natbib 进行引文着色

使用 Beamer + Hyperref + Natbib 进行引文着色

我正在使用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}}}

相关内容