我想要包括enumerate
环境的数字方程;我的意思是
我想要类似的东西
节.子节.枚举.方程
这可能吗?
我正在使用那个代码
\counterwithin*{equation}{section}
\counterwithin*{equation}{subsection}
\counterwithin*{equation}{enumi}
\renewcommand\theequation{\ifnum\value{enumi}>0 \theenumi\else
\ifnum\value{subsection}>0 \thesubsection\else
\thesection\fi\fi.\arabic{equation}}
但它并不像我预期的那样有效。
答案1
enumerate
我添加了一个条件,通过在你进入时设置开关来检查你是否在环境中\begin{enumerate}
(感谢etoolbox
的\AtBeginEnvironment{enumerate}
)。然后使用此开关来条件添加\theenumi
到\theequation
。其他条件检查您是否在\section
或内\subsection
,并相应地添加计数器表示:
\documentclass{article}
\usepackage{chngcntr,etoolbox}
\newif\ifinenumerate
\AtBeginEnvironment{enumerate}{\inenumeratetrue}
\counterwithin*{equation}{section}
\counterwithin*{equation}{subsection}
\counterwithin*{equation}{enumi}
\makeatletter
\renewcommand\theequation{%
\ifnum\value{subsection}>0 \thesubsection.\else
\ifnum\value{section}>0 \thesection.\fi\fi
\ifinenumerate \theenumi.\fi
\arabic{equation}}
\makeatother
% Just to show the equation number formatting
\newcommand{\printeqnum}[1]{%
\setcounter{equation}{\numexpr#1-1}%
\begin{equation}
f(x) = ax^2 + bx + c
\end{equation}}
\begin{document}
\section{A section}
\printeqnum{4}
\begin{enumerate}
\item \printeqnum{7}
\item \printeqnum{9}
\end{enumerate}
\subsection{A subsection}
\printeqnum{12}
\begin{enumerate}
\item \printeqnum{15}
\item \printeqnum{18}
\end{enumerate}
\end{document}