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