Это продолжение ответа в: Как правильно набрать «См. уравнение (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}