是否有任何参考包可以写出方程式?

是否有任何参考包可以写出方程式?

只是一个知识问题。我想知道是否有一个包,通过给方程贴上标签,然后用 \eqref 或任何命令引用它,方程就会完全出现而不是标签。也许重点是复制与方程相同的标签,但我问是否有更简单的方法。

答案1

我不知道有哪个包可以做到这一点,但下面的代码定义了一个新的环境requation,用于“记住方程”,它采用强制标签,然后可以使用\Eqref{<label>}该标签重复方程。默认情况下,会重复原始方程编号,并且有*-version 用于省略方程编号。

编辑在评论中,OP 询问是否可以将此宏用作1+\Eqref{...}+1。在最初的实现中这是不可能的,但我做了一个小的改动,我添加了一个!-version,它可以重现方程而不将其放在环境中equation。因此,-version!允许1+\Eqref!{one}+1并且它也允许\Eqref内联使用。!*修饰符不能一起使用。(事后看来,也许\Eqref{}应该只重现方程,而 -variant*应该将其放在equation具有原始数字的环境中,从而允许!删除 -variant。)我还在环境\label{...}中添加了一个“自动” requation

編輯 II根据 Bruno 在评论中的出色建议,我删除了 -variant !,并\EqRef{...}在数学模式中使用时重新打印方程式。这简化了语法,并且不会改变输出。

结果是你可以写:

在此处输入图片描述

使用代码:

\documentclass{amsart}
\usepackage{environ}
\usepackage{etoolbox}
\usepackage{xparse}
\makeatletter
\NewEnviron{requation}[1]{%
  \csxdef{reqno@#1}{\theequation}% remember equation number
  \protected@csxdef{req@#1}{\BODY}% remember equation
  \equation\BODY\label{#1}\endequation% print equation
}
\newcounter{rememberedequation}
\NewDocumentCommand\Eqref{ s m }{%
  \relax\ifmmode\csuse{req@#2}%
  \else%
    \IfBooleanTF{#1}{\begin{equation*}\csuse{req@#2}\end{equation*}}% no equation number
    {% if no * then we need to fudge the equation number
       \setcounter{rememberedequation}{\value{equation}}% store equation number
       \setcounter{equation}{\csuse{reqno@#2}}% reset equation number
       \begin{equation}\csuse{req@#2}\end{equation}% equation
       \setcounter{equation}{\value{rememberedequation}}% restore equation number
    }%
  \fi%
}
\makeatother

\begin{document}

  \begin{requation}{one}
     1+1=2
  \end{requation}
  First we remember the equation without the equation number:
  \Eqref*{one}
  To see what happens let's put a new unremembered equation in the middle
  \begin{equation}
     2+2=4
  \end{equation}
  Now we remember equation~\eqref{one} with the equation number:
  \Eqref{one}%
  To check that equations are being indexed correctly, here is another unremembered equation
  \begin{equation}
     3+2=5
  \end{equation}
  Finally, we can reuse the remembered equation in-line as $\Eqref{one}$ and we can even
  add something to it with
  \[
      1 + \Eqref{one} +1
  \]
\end{document}

我还没有用“复杂”的方程式测试过这一点,但我认为它应该可行。

相关内容