Ссылка на тип CleverEf для записи Ограничений

Ссылка на тип CleverEf для записи Ограничений

\cref{eq15,eq16,eq17,eq18}производит Eqs. (15) to (18).

Некоторые уравнения я хочу записать как Constraint/ constraint/ Constraints/ constraintsв зависимости от положения ссылки и количества ссылок. Подобно тому, что происходит в \cref/ \Cref, он автоматически определяет количество ссылок и выдает соответствующее количество. Кроме того, я не хочу менять \crefдля уравнений.

Возможно? Есть ли помощь/идея?

МВЭ:

\documentclass{article}
\usepackage{amsmath}
\usepackage[colorlinks,allcolors=red]{hyperref}
\usepackage{cleveref}

\begin{document}
\begin{equation}\label{eq1}
    a+b<2
\end{equation}
\begin{equation}\label{eq4}
    a+b<2
\end{equation}
\begin{equation}\label{eq3}
    a+b<2
\end{equation}
\begin{equation}\label{eq2}
    a+b<2
\end{equation}

\Cref{eq1} should display Equation and \cref{eq1} should display Eq. i.e., normal behaviour of cref. I don't want to change this.

Need some kind of newcommand/macro/package so that I can write constraints (2) to (4). 

%Ex:
%\newref{eq2} = constraint (4)
%\Newref{eq2} = Constraint (4)
%\newref{eq3,eq2,eq4} = constraints (2) to (4)
%\Newref{eq3,eq2,eq4} = Constraints (2) to (4)
%\newref{eq2,eq3} = constraints (3) and (4)
%\Newref{eq2,eq3} = constraints (3) and (4)

\end{document}

решение1

Вы можете достичь цели форматирования, определив "псевдоним", называемый constraint, для equationсчетчика. Обратите внимание на форму инструкции \labelдля equationсред: \label[constraint]{eq|x|}, где xнаходится в {2,3,4}. Использование необязательного аргумента указывает cleverefна необходимость использовать имя метки, отличное от имени по умолчанию.

Для получения дополнительной информации оcleveref функции «псевдоним» см. раздел 6руководство пользователя пакета, «Переопределение типа перекрестных ссылок».

введите описание изображения здесь

\documentclass{article}
\usepackage{amsmath}
\usepackage[colorlinks,allcolors=red]{hyperref}

\usepackage{cleveref}
\crefalias{constraint}{equation}
\crefname{constraint}{constraint}{constraints}
\Crefname{constraint}{Constraint}{Constraints}
\creflabelformat{constraint}{#2{\upshape(#1)}#3} 

\begin{document}
\begin{equation}\label{eq1} a+b=2 \end{equation}
\begin{equation}\label[constraint]{eq2} a+b<2 \end{equation}
\begin{equation}\label[constraint]{eq3} a+b>2 \end{equation}
\begin{equation}\label[constraint]{eq4} a+b\ne2 \end{equation}

\Cref{eq1}; \cref{eq1}.

\Cref{eq2,eq4,eq3}; \cref{eq2,eq4,eq3}.
\end{document}

решение2

Это решение зависит от определения новой команды для использования \cref/\Cref , котораявременныйизменяют свое определение при перекрестной ссылке на уравнение. Так что в любое время уравнение может быть перекрестно спроецировано либо по определению его начальной метки, либо по дополнительной метке (без удаления начальной/исходной). Обе метки могут использоваться для одного и того же уравнения в любом порядке в любое время.

Новая команда может быть определена, например, \ccrefследующим образом:

\newcommand*\ccref[1]{\crefname{equation}{constraint}{constraints}\Crefname{equation}{Constraint}{Constraints}\cref{#1}\crefname{equation}{eq.}{eqs.} \Crefname{equation}{Eq.}{Eqs.}}

и аналогично для определения верхнего регистра\CCref

Ниже приведены примеры всех возможных случаев при использовании двух меток eq./eqs./Eq./Eqs.иconstraint/constraints/Constraint/Constraints

введите описание изображения здесь

Полный код

\documentclass{article}
\usepackage{amsmath}
\usepackage[colorlinks,allcolors=red]{hyperref}
\usepackage{cleveref}
\crefname{equation}{eq.}{eqs.} % Initial definition of \cref
\Crefname{equation}{Eq.}{Eqs.} % Initial definition of \Cref
%
\newcommand*\ccref[1]{\crefname{equation}{constraint}{constraints}\Crefname{equation}{Constraint}{Constraints}\cref{#1}\crefname{equation}{eq.}{eqs.} \Crefname{equation}{Eq.}{Eqs.}}
\newcommand*\CCref[1]{\crefname{equation}{constraint}{constraints}\Crefname{equation}{Constraint}{Constraints}\Cref{#1}\crefname{equation}{eq.}{eqs.} \Crefname{equation}{Eq.}{Eqs.}}
%
\begin{document}
%
\section{Equations}
    \begin{equation}\label{eq1}
        a+b<2
    \end{equation}
    \begin{equation}\label{eq2}
        a+b<2
    \end{equation}
    \begin{equation}\label{eq3}
        a+b<2
    \end{equation}
    \begin{equation}\label{eq4}
        a+b<2
    \end{equation}

\section{Test single equation}
    \begin{tabular}{l l }
        Command & Output \\
        \hline
    \verb|\cref{eq1}| &  \cref{eq1} \\
    \verb|\Cref{eq1}| &  \Cref{eq1} \\
    \verb|\ccref{eq1}| & \ccref{eq1} \\
    \verb|\CCref{eq1}| &  \CCref{eq1}  \\
    \end{tabular}

\section{Test many equation}

\begin{tabular}{l l }
    Command & Output \\
    \hline
    \verb|\cref{eq1,eq2}| &  \cref{eq1,eq2} \\
    \verb|\Cref{eq1,eq2}| &  \Cref{eq1,eq2} \\
    \verb|\Cref{eq1,eq2,eq4}| &  \Cref{eq1,eq2,eq4} \\
    \verb|\ccref{eq1,eq2}| & \ccref{eq1,eq2} \\
    \verb|\CCref{eq1,eq2}| &  \CCref{eq1,eq2}  \\
    \verb|\CCref{eq1,eq2,eq4}| &  \CCref{eq1,eq2,eq4}  \\
\end{tabular}

\section{Test range of equations}
    \begin{tabular}{l l }
    Command & Output \\
    \hline
    \verb|\cref{eq1,eq2,eq3,eq4}| &  \cref{eq1,eq2,eq3,eq4} \\
    \verb|\Cref{eq1,eq2,eq3,eq4}| &  \Cref{eq1,eq2,eq3,eq4} \\
    \verb|\ccref{eq1,eq2,eq3,eq4}| & \ccref{eq1,eq2,eq3,eq4} \\
    \verb|\CCref{eq1,eq2,eq3,eq4}| &  \CCref{eq1,eq2,eq3,eq4}  \\
\end{tabular}
\end{document}

Связанный контент