\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}