我想使用:
\counterwithin*{equation}{section}
\counterwithin*{equation}{subsection}
因为\section*{}
如果部分未编号则\counterwithin*{equation}{section}
无法正常工作,事实上,我使用此命令即使在目录中也执行未编号的部分:
\newcommand{\sect}[1] {\section*{#1}\addcontentsline{toc}{section}{#1}\addtocounter{section}{1}}
但是我怎么说呢......我无法正确地编号我的方程式,因为计数器没有恢复到新的未编号部分。
非常感谢!
答案1
当主计数器“步进”时,绑定到其他计数器的计数器将被重置\stepcounter
。所以我猜
\newcommand{\sect}[1]{%
\stepcounter{section}\addtocounter{section}{-1}%
\section*{#1}%
\addcontentsline{toc}{section}{#1}%
}
才是你真正想要的。除非你想要那个
\section{A}
\sect{B}
\section{C}
给出 3 作为“C”的节号,就像您的代码现在显示的那样。在这种情况下,
\newcommand{\sect}[1]{%
\stepcounter{section}%
\section*{#1}%
\addcontentsline{toc}{section}{#1}%
}
会做。
答案2
有人可能会对这种方法提出异议:
每个重置方程式\section*
都没有关于实际指的是哪个部分的信息,因此交叉引用可能会变得困难,除非hyperref
使用正确的链接。
在这个解决方案中,我申请\xpretocmd
重置\section
方程计数器(无论如何这可能已经完成了),因此对于\section
和来说\section*
。
计数器sectcont
仅用于制作唯一的hyperref
锚点。
\documentclass{article}
\usepackage{chngcntr}
\counterwithout*{equation}{section}
\usepackage{xpatch}
\newcounter{sectcont}
\xpretocmd{\section}{%
\stepcounter{sectcont}%
\setcounter{equation}{0}%
}{}{}
\usepackage{hyperref}
\AtBeginDocument{%
\renewcommand{\theHequation}{equation.\thesectcont.\theequation}
}
\begin{document}
In \ref{eqeinsteinagain} we see...
\clearpage
\section*{Foo}
\begin{equation}
E=mc^2 \label{eqeinstein}
\end{equation}
\begin{equation}
E=mc^2 \label{eqeinsteinother}
\end{equation}
\clearpage
\section*{Foobar}
\begin{equation}
E=mc^2 \label{eqeinsteinagain}
\end{equation}
\begin{equation}
E=mc^2 \label{eqyeteinstein}
\end{equation}
\end{document}