如何在 \crefrange 中仅对方程式或图形编号着色

如何在 \crefrange 中仅对方程式或图形编号着色

我正在使用 cleveref 来引用数字和方程的范围。我可以使用 给出不同的颜色\textcolor{},但我只需要为方程数字着色,而不是文本。我该怎么做?

\usepackage[noabbrev]{cleveref}

\begin{align}
C_{11}^{0} &= C_{33}^{0} = \lambda + 2\mu                   \label{eq:2} \\
C_{13}^{0} &= \lambda                                                      \label{eq:3} \\
C_{44}^{0} &= C_{66}^{0} = \mu                                      \label{eq:4} 
\end{align}

这就是我用来为所有文本着色的方法。

\textcolor{violet}{\crefrange{eq:2}{eq:4}}. 

如何只为方程式编号着色?例如

\crefrange \textcolor{violet}{eq:2} \textcolor{violet}{eq:4}}.

答案1

\creflabelformat您可以通过发出适当的指令来实现您的格式化目标。

请注意,以下解决方案适用于cleveref包的用户级宏,例如\cref\labelcref\crefrange。它不适用于\ref;我怀疑修改 TeX/Latex 内置宏\ref,只是为了让它以彩色呈现其输出,可能是一个糟糕的主意。

在以下解决方案中,我使用红色和蓝色,因为紫色在某些屏幕上可能显示得不太清晰。

在此处输入图片描述

\documentclass{article}
\usepackage{xcolor} % for \textcolor macro

\usepackage[noabbrev]{cleveref} % per the OP's example
\creflabelformat{equation}{#2\textup{(\textcolor{red}{#1})}#3}
\creflabelformat{figure}{#2(\textcolor{blue}{#1})#3}

\begin{document}
\labelcref{eq:2}; \cref{eq:3}; \crefrange{eq:2}{eq:4}

\labelcref{fig:a}; \cref{fig:c}; \crefrange{fig:a}{fig:c}

% Minimalist code to create meaningful \label instructions:
\stepcounter{equation}
\refstepcounter{equation} \label{eq:2} 
\refstepcounter{equation} \label{eq:3} 
\refstepcounter{equation} \label{eq:4}
\refstepcounter{figure} \label{fig:a}
\refstepcounter{figure} \label{fig:b}
\refstepcounter{figure} \label{fig:c}
\end{document} 

相关内容