两个独立的方程计数器?

两个独立的方程计数器?

我在 LaTeX 中做作业,遇到了一个新问题。我通常不给方程式编号。在这次作业中,我想给至少一个我稍后会引用的方程式编号。不幸的是,我总是将作业问题陈述复制到顶部,而这次作业中有编号的方程式。我不想手动给方程式(我的或作业的)编号,而是想定义一个新的计数器和 \label - \ref 设置来制作两种类型的方程式引用和计数器。以下是我想出的办法,但结果却出错了:

\newcounter{MyEqNum}
\newcommand{\MyNum}{\refstepcounter{MyEqNum}\rm{\Roman{MyEqNum}}}
%\newcommand{\RefMyEqn}{(\Roman{MyEqNum})}
%\renewcommand{\theequation}{\Roman{MyEqNum}}
\renewcommand{\theequation}{\refstepcounter{MyEqNum}\rm{\Roman{MyEqNum}}}
\begin{equation}
    \frac{\partial^4 U}{\partial x^4} = U^{(4)}(x) = \frac{\rho \omega_n^2}{Y I} U(x)
    \label{eq:My1}
\end{equation}

\begin{equation}
    test
    \label{eq:My2}
\end{equation}

The above result, \eqref{eq:My1} will be used later. Now using modal expansion, and writing the fourth spatial derivative as $\frac{\partial^4 U(x)}{\partial x^4} = U_n^{(4)}(x)$:

在此处输入图片描述

我收到的错误是“无计数器”、“额外的 \endcsname”、“缺少插入 \endcsname”以及一些未定义的控制序列。

注意:原始作业使用了阿拉伯数字,这就是为什么我尝试让第二个标签计数器使用罗马数字。\renewcommand{\theequation}{}每次在编号方案之间来回切换时,我都有点不情愿地写下来,但如果有更好的方法,我很想知道。我宁愿不定义一个新的方程环境,但我认为这可能是正确的方法(我没有定义新环境的经验,有点害怕这种前景)。

-------------------------------------------------------------------------------

编辑:实施@Donald Arseneau 的方法后,我做了一些小改动,使罗马数字能够正常工作。我花了一些时间反复尝试,所以我在这里发布了它。

\makeatletter
\newcounter{MyEqNum}
\newenvironment{mynumbering}{%
  % replace equation numbering with my own counter and style
  %\let\theequation\theMyEqNum
  \renewcommand{\theequation}{\Roman{MyEqNum}}
  \let\c@equation\c@MyEqNum 
  \let\p@equation\p@MyEqNum
}{}

答案1

这里有一份文档,它定义了一个“mynumbering”环境,用于您编写的答案,这些答案与作业问题分开编号。在另一个“equation”环境中进行计数器交换是可行的,但必须对所有编号数学环境重复此操作。

编号的外观应具有独特性,这应通过定义\theequation和来实现\theMyEqNum。我已经展示了如何定义\theequation以产生像“Q1”这样的数字。

\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcounter{MyEqNum}
\newenvironment{mynumbering}{%
  % replace equation numbering with my own counter and style
  \let\theequation\theMyEqNum
  \let\c@equation\c@MyEqNum 
  \let\p@equation\p@MyEqNum
}{}

% Number assignment equations with Q
\renewcommand\theequation{Q\arabic{equation}}

\begin{document}

The question is
\begin{equation}
  2b \lor \neg\, 2b \label{eq:ass1}
\end{equation}
\begin{mynumbering}
\begin{equation}
    \frac{\partial^4 U}{\partial x^4} = U^{(4)}(x) = \frac{\rho \omega_n^2}{Y I} U(x)
    \label{eq:My1}
\end{equation}

\begin{equation}
    test
    \label{eq:My2}
\end{equation}
\end{mynumbering}

The above result, \eqref{eq:My1} will be used later but not the test \eqref{eq:My2}, because the question \eqref{eq:ass1} is proven false.

\end{document}

mynumbering定义中,\theequation\theMyEqNum是格式化计数器值的 cmacros;\c@equation/\c@MyEqNum是实际计数器(计数寄存器);和\p@equation/\p@MyEqNum是交叉引用中使用的文本前缀,但通常为空白。

不幸的是,没有可以切换的 hyperref 封装命令,因此此解决方案不适用于 hyperref。

答案2

您可以定义多种样式并在它们之间保留编号。

newnumbering*如果需要的话,您还可以重新启动一种风格。

\documentclass{article}
\usepackage{amsmath}

\makeatletter % better use internal names

\newenvironment{newnumbering}[1][Roman]
 {
  \def\jr@counter{#1}%
  \jr@setup@numbering{#1}{1}%
 }
 {%
  \setcounter{jr@\jr@counter @equation}{\value{equation}}%
  \setcounter{equation}{\value{jr@equation@save}}%
  \ignorespacesafterend
 }
\newenvironment{newnumbering*}[1][Roman]
 {%
  \def\jr@counter{#1}%
  \jr@setup@numbering{#1}{0}%
 }
 {%
  \setcounter{jr@\jr@counter @equation}{\value{equation}}%
  \setcounter{equation}{\value{jr@equation@save}}%
  \ignorespacesafterend
 }

\newcounter{jr@equation@save}
\newcommand{\jr@setup@numbering}[2]{%
  % define a new counter if not yet done
  \@ifundefined{c@jr@#1@equation}{\newcounter{jr@#1@equation}}{}%
  % save the current equation number
  \setcounter{jr@equation@save}{\value{equation}}%
  \setcounter{equation}{%
    \ifnum#2>0
      \value{jr@#1@equation}%
    \else
      0%
    \fi
  }%
  \renewcommand{\theequation}{\csname#1\endcsname{equation}}%
}
\makeatother

\begin{document}

First a normal numbered equation
\begin{equation}\label{a}
0=0
\end{equation}
then another one
\begin{equation}\label{b}
0=0
\end{equation}

\begin{newnumbering}
An equation in Roman numbers
\begin{equation}\label{c}
1=1
\end{equation}
and another
\begin{equation}\label{d}
1=1
\end{equation}
\end{newnumbering}

Another normal equation
\begin{equation}\label{e}
2=2
\end{equation}

\begin{newnumbering}
Another with Roman numbers
\begin{equation}\label{f}
3=3
\end{equation}
\end{newnumbering}

\begin{newnumbering}[Alph]
Now we try a different one, alphabetic
\begin{equation}\label{g}
4=4
\end{equation}
\end{newnumbering}

\begin{newnumbering*}
This should restart the Roman numbering
\begin{equation}\label{h}
5=5
\end{equation}
\end{newnumbering*}

\eqref{a},
\eqref{b},
\eqref{c},
\eqref{d},
\eqref{e},
\eqref{f},
\eqref{g},
\eqref{h}

\end{document}

在此处输入图片描述

相关内容