我正在研究基于的自己的 LaTeX(使用 KOMA-Script)课程scrartcl
。
文档结构应该提供章节和小节,以及自己的环境(练习、解决方案、示例等)。
如果没有声明子节,则这些环境将在层次结构中直接遵循该节之后的顺序,如果声明了子节,则将在层次结构中直接遵循该子节之后的顺序。
我正在寻找一种方法来自动重置此类环境的计数器,比如说exc
锻炼环境的计数器,每次计数器section
ORsubsection
发生变化时。
您可以在这里找到一个最简单的示例:
\documentclass{scrartcl}
\usepackage{etoolbox}
\newcounter{exc}[section]
%%% HERE OUGHT TO BE SOMETHING LIKE [section, subsection], IF YOU KNOW, WHAT I MEAN
\newenvironment{exc}%
% begin
{\par%
\refstepcounter{exc}% count
\ifnumequal{\value{subsection}}{0}% find correct level
% subsection level
{\addxcontentsline{toc}{subsection}%
{Ex.~\thesection.\theexc}% add to toc on subsection level
\noindent\mbox{Exercise~\thesection.\theexc}\\[\baselineskip]
}%
% subsubsection level
{\addxcontentsline{toc}{subsubsection}%
{Ex.~\thesubsection.\theexc}% add to toc on subsubsection level
\noindent\mbox{Exercise~\thesubsection.\theexc}\\[\baselineskip]
}%
}%
% end
{\par\clearpage}
\begin{document}
\tableofcontents
\section{Hello}
\begin{exc} Lalala. \end{exc}
\begin{exc} Lalala. \end{exc}
\section{World}
\subsection{my little world}
\begin{exc} Lalala. \end{exc}
\subsection{your big life}
\begin{exc} Lalala. \end{exc} %% HERE'S THE PROBLEM.
\section{Bye!}
\begin{exc} Lalala. \end{exc}
\end{document} `
答案1
在当前的 LaTeX 版本中(自 2015/01/01 起),你只需要
\newcounter{exc}[subsection]
并且计数器将在以下情况exc
下重置:subsection
踏步或者重置本身,即,当section
或被chapter
踩踏时。
对于较旧的版本,您可以加载chngcntr
打包然后执行
\newcounter{exc}[subsection]
\counterwithin*{exc}{chapter}
\counterwithin*{exc}{section}
(感谢@egreg 的提醒!)
答案2
更新\subsection
命令以重置计数器:
\let\oldsubsection\subsection
\renewcommand\subsection{\setcounter{exc}{0}\oldsubsection}