}
% define theorem environments
-\newtheorem{Pr@blem}{Problem}
+\newcounter{Pr@blem}
+\newtheorem{Pr@blem}[Pr@blem]{Problem}
\newcommand{\Pr@blemSkip}{0pt} % set to 2\baselineskip when nosolutions, to give breathing room between problems
\newenvironment{problem}{%
\phantomsection%
\addtocounter{Pr@blem}{1}% <- temporarily increment Pr@blem
- \addcontentsline{toc}{section}{Problem \arabic{Pr@blem}}%
+ \addcontentsline{toc}{subsection}{Problem \arabic{Pr@blem}}%
\addtocounter{Pr@blem}{-1}% <- restore to its initial value
\begin{Pr@blem}% <- the Pr@blem counter actually gets implemented here
}{%
% not that you should ever need to as far as I can imagine.
% Note: using a constant theorem name like ProblemSTAR fails on redefine attempt
% Note: you also get matching errors with \begin{Pr@blem#1}\end{Pr@blem\Pr@blemCounter}
-\newcommand{\Pr@blemCounter}{}
+\newcounter{XPr@blem}
\newenvironment{problem*}[1]{%
- \renewcommand{\Pr@blemCounter}{#1}%
\phantomsection%
- \addcontentsline{toc}{section}{Problem #1}%
- \newtheorem*{Pr@blem\Pr@blemCounter}{Problem #1}%
- \begin{Pr@blem\Pr@blemCounter}%
+ \addcontentsline{toc}{subsection}{Problem #1}%
+ \addtocounter{XPr@blem}{1}% <- increment XPr@blem
+ \expandafter\newtheorem*{XPr@blem\arabic{XPr@blem}}{Problem #1}%
+ \expandafter\begin{XPr@blem\arabic{XPr@blem}}%
}{%
- \end{Pr@blem\Pr@blemCounter}%
+ \expandafter\end{XPr@blem\arabic{XPr@blem}}%
\vspace\Pr@blemSkip%
}