如何将 cleveref 与 IEEEeqnarray 一起使用?

如何将 cleveref 与 IEEEeqnarray 一起使用?

这是代码。我对使用包装IEEEtrantoolscleveref一起进行标记有 3 个疑问。

\documentclass{amsart}
\usepackage[colorlinks]{hyperref}
\usepackage[capitalize]{cleveref}
\crefname{ineq}{Ineq.}{Ineqs.}
\Crefname{ineq}{Inequality}{Inequalities}
\creflabelformat{ineq}{~\upshape(#2#1#3)}
\numberwithin{equation}{section}
\usepackage[retainorgcmds]{IEEEtrantools}

\begin{document}

\section{IEEE}

\begin{IEEEeqnarray}{rCl} 
a
&>&b+c \IEEEyessubnumber\label[ineq]{1a}\\ 
&>&f+g \IEEEyessubnumber\label[ineq]{2a}
\end{IEEEeqnarray}

I have 2 questions here.
1) In PDF, the labels behind the inequalities are (1.0a) and (1.0b). 
How can I get (1.1a) and (1.1b)?
2) The command \verb|\cref| gives \cref{1b,2b}.
How can I get ``Ineqs. (1.1a) and (1.1b)'' by using \verb|\cref|?

\begin{IEEEeqnarray}{rCl} 
a
&<&b+c \IEEEyessubnumber\label[ineq]{1b}\\ 
&<&f+g \IEEEyessubnumber\label[ineq]{2b}
\end{IEEEeqnarray}

I have another question here.
3) In PDF, the labels behind the inequalities are (1.0c) and (1.0d). 
How can I get (1.2a) and (1.2b)?

\end{document}

在此处输入图片描述

答案1

我可以全面回答问题 1 和问题 3。但恐怕我只能提供问题 2 的解决方法。

关于问题 3:在标有 的不等式中使用\IEEEyesnumberbefore 。\IEEEyessubnumber1b

关于问题 1:由于您使用的是amsart加载amsmath包的文档类,因此结果会更好不是使用\IEEEyessubnumber指令,而是将IEEEeqnarray环境包含在subequation环境中。进行此更改后,打印的方程式“数字”将按预期显示。(如果您进行此更改,则应省略所有\IEEEyesnumber\IEEEyessubnumber指令。)

关于问题 2:subequation在使用环境中,名称被交叉引用的项目\cref——Ineqs是正确的,但数字不是:\cref{1b,2b}产生“Ineqs. (1.2) and (1.2)”而不是“Ineqs. (1.1a) and (1.1b)”。(如果[ineq]省略限定词,名称将从“Ineqs.”更改为“Eqs.”,但数字仍然不正确;因此,问题不是由使用标签[ineq]修饰符引起的。)我只能推测对环境cleveref的支持并不完美。联系和软件包IEEEeqnarray的作者并要求他们修复可能是获得完整解决方案的方法。cleverefIEEEtrantools

与此同时,可以通过以下方式解决这个问题

... Ineqs.~\eqref{1a}) and~\eqref{1b} ...

这放弃了的优雅\cref,但它具有工作的优点。

一个单独的潜在解决方法:众所周知,该宏与基于的多行数学环境\cref配合得很好。因此,您可能需要考虑从包的环境切换到包的环境。(请注意,包由文档类自动加载。)作为中间步骤,您可以选择仅对涉及子方程式编号的方程组使用环境。amsmathIEEEtrantoolsamsmathamsmathamsartamsmath


在此处输入图片描述

\documentclass[reqno]{amsart}
\numberwithin{equation}{section}

\usepackage[colorlinks]{hyperref}
\usepackage[capitalize]{cleveref}
\crefname{ineq}{Ineq.}{Ineqs.}
\Crefname{ineq}{Inequality}{Inequalities}
\creflabelformat{ineq}{~\upshape(#2#1#3)}

\usepackage[retainorgcmds]{IEEEtrantools}

\begin{document}
\section{IEEE}

\subsection{Using \texttt{subequations} and \texttt{IEEEeqnarray}}

\begin{subequations}
\begin{IEEEeqnarray}{rCl} 
a &>&b+c \label[ineq]{1a}\\ 
  &>&f+g \label[ineq]{2a}
\end{IEEEeqnarray}
\end{subequations}

The printed ``numbers'' are (1.1a) and (1.1b), as desired.

\verb|\cref| gives ``\cref{1a,2a}'', but ``Ineqs. (1.1a) and (1.1b)'' is desired.


\subsection{Using \texttt{subequations} and \texttt{align}}

\begin{subequations}
\begin{align} 
a &<b+c \label[ineq]{1b}\\ 
  &<f+g \label[ineq]{2b}
\end{align}
\end{subequations}

The printed ``numbers'' are (1.2a) and (1.2b), as desired.

\verb|\cref{1b,2b}| gives ``\cref{1b,2b}'', also as desired.

\end{document}

相关内容