изменить формат \eqref с помощью \RenewDocumentCommand (или другим способом)

изменить формат \eqref с помощью \RenewDocumentCommand (или другим способом)

Это продолжение ответа в: Как правильно набрать «См. уравнение (n)»

\documentclass[12pt]{report}   

\usepackage[UKenglish]{babel}
\usepackage{graphicx} 
\usepackage{epstopdf}    
\usepackage{gensymb}
\usepackage{amssymb}
\usepackage{stmaryrd}
\usepackage{amsmath}  
\usepackage{siunitx}
\usepackage{placeins}
\usepackage{letltxmacro}


\LetLtxMacro{\oldeqref}{\eqref}
\RenewDocumentCommand\eqref{D<>{Equation}om}{%
\IfNoValueTF{#2}
{#1~\oldeqref{#3}}
{(#2 #1~\textup{\ref{#3}})}%
}

\begin{document}

\begin{equation}
\label{eq:test}
x=2y;
\end{equation}%

what this looks like:

this is Equation~\eqref{eq:test}

this is \eqref[Equation]{eq:test}

%this is \eqref[Equation][: terms 1 and 2]{eq:test}



\end{document}

Этот ответ делает большую часть того, что я хочу сделать, но я хотел бы изменить его так, чтобы

 \eqref[]{eqlable} 

может также принимать форму

\eqref[][]{eqlabel} 

так что запись может быть добавлена ​​как до, так и после номера уравнения в скобках. Кроме того, я бы не хотел, чтобы там было "Уравнение", так как я уже написал это в своем документе (когда мне не нужны скобки), и добавление этого удваивает его. Если я удалю это из вышеприведенного - у меня получится странный пробел.

Определение новой команды также сработало бы (и я видел другие ответы, основанные на этом), но я не знаю, как отредактировать любой из них, чтобы заставить работать текст «до» и «после».

правка: Я бы хотел, чтобы второй вариант выглядел примерно так

   \eqref[Equation][: terms 1 and 2]{eqlabel}

и для получения (Уравнение 1.1: члены 1 и 2). Скобки уже автоматически добавляются, когда я ввожу [] в качестве опции.

и для

Equation~\eqref{eqlabel} 

для получения уравнения (1.1). Это уже работает

любой способ получить члены: 1 и 2 после числа в скобках был бы хорош. я могу изменить способ записи уравнения, чтобы оно соответствовало тому, что работает

решение1

Я думаю, все работает так, как вы хотите :)

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

\documentclass[12pt]{report}   

\usepackage[UKenglish]{babel}
\usepackage{graphicx} 
\usepackage{epstopdf}    
\usepackage{gensymb}
\usepackage{amssymb}
\usepackage{stmaryrd}
\usepackage{amsmath}  
\usepackage{siunitx}
\usepackage{placeins}
\usepackage{letltxmacro}


%\LetLtxMacro{\oldeqref}{\eqref}
% As Christian Hupfer noted, there is no need to use \LetLtxMacro here. Although there is no harm is using it (https://tex.stackexchange.com/questions/88001/when-to-use-letltxmacro)
\let\oldeqref\eqref
\RenewDocumentCommand\eqref{oom}{%
\IfNoValueTF{#2}{\def\eqafter{}}{\def\eqafter{#2}}%
\IfNoValueTF{#1}
{\oldeqref{#3}}
{(#1 \textup{\ref{#3}}\eqafter)}%
}

\begin{document}

\begin{equation}
\label{eq:test}
x=2y;
\end{equation}%

what this looks like:

this is Equation~\eqref{eq:test}

this is \eqref[Equation]{eq:test}

this is \eqref[Equation][: terms 1 and 2]{eq:test}

\end{document}

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