我正在起草一份包含重要方程组的文件,我想用罗马数字来枚举它们以突出显示。我考虑过使用子方程环境,但我不知道如何实际更改特定方程组的枚举和样式。此外,之后我想从当前系统派生出一个新系统,并且我想用罗马数字枚举新系统,并在罗马数字右侧添加星号(星号)。我无法通过网络搜索找到答案。我感谢所有帮助者提供的任何帮助。
答案1
(我已经更新了答案,以处理这种可能性——原帖没有提到,但可能对至少一些读者有一定意义——超链接包已加载,并且需要从交叉引用到方程式以及相应方程式的正确超链接。)
在以下解决方案中,我假设hyperref
包已加载。如果此假设不正确,则应删除所有实例\renewcommand\theHequation{...}
。
这里采用的解决方案通过 (a) 将方程计数器重置为0
(或任何适当的值)、(b)\theequation
根据需要重新定义宏以及 (c) 重新定义宏来创建罗马数字和罗马数字加星号方程“数字\theHequation
”。如果您的文档未加载该包,则不需要第三步hyperref
。此外,该解决方案还定义了实用程序宏\SaveEqCtr
并\RestoreEqCtr
允许在方程编号的普通形式和特殊形式之间来回切换。
\documentclass{article}
\usepackage{amsmath} % for gather environment
\usepackage[colorlinks,allcolors=blue]{hyperref} % optional
\usepackage{cleveref} % for \cref macro
% Create a new counter, to enable toggling back and forth
% between ordinary and special forms of equation counters
\newcounter{SaveEqnCntr}
\newcommand\SaveEqCtr{\setcounter{SaveEqnCntr}{\value{equation}}}
\newcommand\RestoreEqCtr{\setcounter{equation}{\value{SaveEqnCntr}}}
\begin{document}
\begin{equation}
0+0=0 \label{a}
\end{equation}
\SaveEqCtr % Store the current value of 'equation' counter (=1)
\begingroup % Limit the scope of the next few directives to the current TeX group
\setcounter{equation}{0}
%% Display equation counter using Roman numerals:
\renewcommand\theequation{\Roman{equation}}
%% If you use 'hyperref', choose a unique identifier, e.g.,
%% the string 'AA', to redefine the '\theHequation' macro
\renewcommand\theHequation{AA\arabic{equation}}
\begin{gather}
1+1=2 \label{b} \\
1+2=3 \label{c} \\
2+1=3 \label{d}
\end{gather}
\endgroup
\RestoreEqCtr % restore 'standard' form of equation counter
\begin{equation}
2+2=4 \label{e}
\end{equation}
\SaveEqCtr % Store the current value of 'equation' counter (=2)
\begingroup % Limit the scope of the next few directives to the current TeX group
\setcounter{equation}{0}
%% Display equation counter using Roman numerals plus a 'star'
\renewcommand\theequation{\Roman{equation}$^{\star}$}
%% If you use 'hyperref', choose a unique identifier, e.g.,
%% the string 'BB', to redefine the '\theHequation' macro
\renewcommand\theHequation{BB\arabic{equation}}
\begin{gather}
3+3=6 \label{f} \\
3+4=7 \label{g} \\
4+3=7 \label{h}
\end{gather}
\endgroup
\RestoreEqCtr % restore 'standard' form of equation counter
\begin{equation}
4+4=8 \label{i}
\end{equation}
\noindent
Cross-references to \cref{b,c,d}, \cref{f,g,h}, and \cref{a,,e,,i}.
\end{document}
答案2
我会使用\tag
。毕竟,您只有一组特殊的方程式,并且每个方程式都需要一个标签。
使用(修改)Mico 的代码
\documentclass{article}
\usepackage{amsmath} % for gather environment
\usepackage{cleveref} % for \cref macro
\newcounter{maineq}
\renewcommand{\themaineq}{\Roman{maineq}}
\NewDocumentCommand{\maineq}{sm}{%
\IfBooleanTF{#1}{% call is \maineq*
\tag{\ref{#2}*}\label{#2*}%
}{% no *
\stepcounter{maineq}%
\tag{\themaineq}\label{#2}%
}%
}
\begin{document}
Cross-references to \cref{good,bad,ugly} and to
\cref{good*,bad*,ugly*}
\begin{equation} 0+0=0 \label{a} \end{equation}
\begin{gather}
1+1=2 \maineq{good} \\
1+2=3 \maineq{bad} \\
2+1=3 \maineq{ugly}
\end{gather}
\begin{equation} 2+2=4 \label{e} \end{equation}
\begin{gather}
3+3=6 \maineq*{good} \\
3+4=7 \maineq*{bad} \\
4+3=7 \maineq*{ugly}
\end{gather}
\begin{equation} 4+4=8 \label{i} \end{equation}
\end{document}
使用cleveref
不是强制性的,使用 进行交叉引用\ref
也同样有效。无论如何,如果您使用hyperref
,您可能需要将 的定义更改为\ref
,准确地说\maineq
\ref*
\NewDocumentCommand{\maineq}{sm}{%
\IfBooleanTF{#1}{% call is \maineq*
\tag{\ref*{#2}*}\label{#2*}%
}{% no *
\stepcounter{maineq}%
\tag{\themaineq}\label{#2}%
}%
}
如果不这样做,带星号的方程式中的标签将是指向原始方程式的超链接。
作为奖励,如果您再次使用\maineq*{good*}
,您将获得两个星号。