如何使 cleveref 交叉引用匹配修改后的公式标签样式?

如何使 cleveref 交叉引用匹配修改后的公式标签样式?

我知道\eqref引用的样式与公式标签的样式完全匹配。但是,我更喜欢使用包\cref中的cleveref样式,因为 (1) 它允许我将单词 Equation 放在数字之前,并且 (2) 它允许我\cref{eq1,eq2}非常舒适地输入。此外,这个问题,我正在重新定义公式数字分隔符的样式。不幸的是,这种更改没有被包捕获cleveref

以下是 MWE:

\documentclass{article}
\usepackage{amsmath}
\usepackage[capitalise,noabbrev,]{cleveref}

\makeatletter
\def\tagform@#1{\maketag@@@{[\ignorespaces#1\unskip\@@italiccorr]}}
\makeatother

\begin{document}
    \cref{eq1} is fancy
    \begin{equation}\label{eq1}
        a = b
    \end{equation}  
\end{document}

得出的结果为:

在此处输入图片描述

那么,我的问题是:我怎样才能将圆括号变成方括号?

感谢大家的时间。

答案1

在我看来,最简单(但可能不是最优雅)的方法也是改变计数器,并明确应用\creflabelformat宏。equation\tagform@

\creflabelformat{equation}{#2\tagform@{#1}#3}

和为目标保留#2#3hyperref

这是完整的代码。

\documentclass{article}
\usepackage{amsmath}

\usepackage[capitalise,noabbrev,]{cleveref}


\makeatletter
\def\tagform@#1{\maketag@@@{[\ignorespaces#1\unskip\@@italiccorr]}}

\creflabelformat{equation}{#2\tagform@{#1}#3}

\makeatother





\begin{document}
    \cref{eq1} is fancy
    \begin{equation}\label{eq1}
        a = b
    \end{equation}  
\end{document}

在此处输入图片描述

答案2

以下解决方案使用包的宏\newtagform以及包的宏来实现您的格式化目标。\usetagformmathtools\creflabelformatcleveref

\documentclass{article}

\usepackage{mathtools} % for "\newtagform" macro
\newtagform{brackets}{[}{]}
\usetagform{brackets} % employ square brackets as delimiters around eq. numbers

\usepackage[capitalise,noabbrev]{cleveref}
\creflabelformat{equation}{#2{\upshape[#1]}#3}

\begin{document}
\cref{eq1} is fancy.
\begin{equation}\label{eq1}
        a = b
\end{equation}
\end{document}

相关内容