使用 \RenewDocumentCommand (或其他方式)更改 \eqref 格式

使用 \RenewDocumentCommand (或其他方式)更改 \eqref 格式

这是对以下答案的后续: “参见方程 (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}

相关内容