在 cleveref 中使用 \crefformat 时如何将整个交叉引用变成蓝色和超链接

在 cleveref 中使用 \crefformat 时如何将整个交叉引用变成蓝色和超链接
\documentclass{article}
\usepackage[colorlinks, colorlinks, linktocpage=false]{hyperref}
\usepackage[nameinlink]{cleveref}
\hypersetup{%
    colorlinks,
    citecolor=blue,
    linkcolor=blue}
\newcommand\pcref[1]{(\cref{#1})}
\newcommand\qcref[1]{\cref({#1})}
\crefformat{figure}{(figure~#2#1#3)}
\Crefformat{figure}{figure~#2#1#3}
\crefformat{table}{(table~#2#1#3)}
\Crefformat{table}{table~#2#1#3}
\begin{document}
\begin{figure}[h!] \caption{bar}\label{fig:bar}\end{figure}
\Cref{fig:bar}, 
\Cref{fig:bar},
\cref{fig:bar},
\cref{fig:bar}
\end{document}

答案1

如果您使用低级命令\crefformat\Crefformat,标记#2#3将限定转换为超目标的材料的范围。为了实现您的格式化目标,您需要更改\crefformat{figure}{(figure~#2#1#3)}\crefformat{figure}{#2(figure~#1)#3}使超目标包含括号(当然还有字符串“figure”)。如果您这样做不是希望使括号成为超目标的一部分,只需使用\crefformat{figure}{(#2figure~#1#3)}即可。

请注意,由于\crefformat\Crefformat赋予您完全的格式控制权,因此包选项nameinlink不起作用。当然,该选项将对其他对象(例如equation环境)的交叉引用产生影响。

在此处输入图片描述

\documentclass{article}
\usepackage[colorlinks, allcolors=blue]{hyperref}
\usepackage[nameinlink]{cleveref}
\crefformat{figure}{#2(figure~#1)#3}
\Crefformat{figure}{#2Figure~#1#3}
\crefformat{table}{#2(table~#1)#3}
\Crefformat{table}{#2Table~#1#3}

\begin{document}
\begin{figure}[h!] \caption{bar}\label{fig:bar}\end{figure}
\begin{table}[h!]  \caption{foo}\label{tab:foo}\end{table}

\Cref{fig:bar}, \Cref{tab:foo}, \cref{fig:bar}, \cref{tab:foo}.
\end{document}

相关内容