梅威瑟:

梅威瑟:

是否可以覆盖hyperref以特定颜色显示参考的指令,但仅限于TikZ和的上下文中pgfplots?问题是我在环境中使用legend to ref和,图例的文本由于全局设置而变为蓝色。我不知道如何强制图例的文本颜色,甚至不知道这是否可行,但我正在寻找的解决方案应该是可以在序言中全局设置的东西(如果可能的话)。\reftikzpicturehyperref

梅威瑟:

\documentclass{article}

\usepackage{tikz,pgfplots}
\usepgfplotslibrary{groupplots}
\usepackage[colorlinks,linkcolor={blue}]{hyperref}

\begin{document}
  \begin{figure}[]
    \centering
    \begin{tikzpicture}
      % \hypersetup{hidelinks} % jfbu's solution: Uncomment to get black text.
      \begin{groupplot}[
        group style={
          group size=2 by 1,},]
        \nextgroupplot[scale only axis,width=0.35\textwidth,height=0.35\textwidth,legend to name=grouplegend,]
        \addplot
          coordinates {(1,1) (2,2) (3,3)};
        \addlegendentry{Legend 1}
        \nextgroupplot[scale only axis,width=0.35\textwidth,height=0.35\textwidth]
        \addplot
          coordinates {(1,1) (2,2) (3,3)};
      \end{groupplot}
      \node (legend) at ($(group c1r1.south)!0.5!(group c2r1.south)$)
        [below, yshift=-3\pgfkeysvalueof{/pgfplots/every axis title shift}]
        {\ref{grouplegend}};
    \end{tikzpicture}%
    \caption{The caption.}
  \end{figure}
\end{document}

在此处输入图片描述

jfbu 的解决方案是将内容放置\hypersetup{hidelinks}tikzpicture环境中,通过保留链接(我对此不感兴趣)但将文本显示为黑色来实现。不过,我正在寻找一种在全球范围内实现此目的的方法。

答案1

在仔细阅读pgfplots手册时,我偶然发现了一个更优雅的解决方案。简单来说,不用调用在每张图片前暂停的命令,只需用hyperref替换即可。\ref{refname}\pgfplotslegendfromname{refname}

摘自pgfplots第 189 页的手册:

\pgfplotslegendfromname{<name>}
此命令提出了一个等效的替代方案\ref{<name>}:它本质上具有相同的效果,但是与包一起使用时不会创建链接hyperref

答案2

您可以使用 Stefan Kottwitz 的方法禁用 shyperref中的链接tikzpicture选择性关闭超链接并将其包装在execute at begin picture

\makeatletter
\tikzset{
    every picture/.style={
        execute at begin picture={
            \let\ref\@refstar
        }
    }
}
\makeatother

相关内容