我在 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}