我想给出同一定理的不同等价版本,最终证明最后一个版本。第一次陈述定理时,我希望它的数字是 2.0。每次修改它时,我希望数字从 2.n => 2.(n+1)。我尝试这样做
\newcounter{goalbroad}
\newcounter{goal}
\numberwithin{goal}{goalbroad}
\newtheorem{goal}[goal]{Theorem}
然后在第一个之前
\begin{goal}...\end{goal}
我打电话
\setcounter{goalbroad}{\value{thms}}
但是 LaTeX(和 LuaLaTex)就卡在那里了。
到目前为止,我只找到了用相同编号重新表述定理的解释。我的方法出了什么问题?实现这一点的好方法是什么?
答案1
这是一个解决方案amsthm
\documentclass{article}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}
\newtheorem*{innergoal}{Theorem \thegoal}
\newcounter{goal}
\setcounter{goal}{-1}
\newif\ifnotfirstgoal
\newenvironment{goal}
{\ifnotfirstgoal\else
\global\notfirstgoaltrue
\stepcounter{thm}%
\fi
\xdef\thegoal{\thethm.\noexpand\arabic{goal}}%
\refstepcounter{goal}%
\innergoal}
{\endinnergoal}
\begin{document}
First a theorem.
\begin{thm}
$1+1=2$
\end{thm}
State the goal
\begin{goal}\label{g.0}
$1+0=1$
\end{goal}
Restate the goal
\begin{goal}\label{g.1}
$0+1=1$
\end{goal}
Restate the goal
\begin{goal}\label{g.2}
Easy
\end{goal}
Show the references: \ref{g.0}, \ref{g.1}, \ref{g.2}
\end{document}
答案2
计数器和定理的名称似乎位于同一个命名空间中,因此计数器目标和定理目标环境相互冲突。将计数器的名称更改为 goalnarrow 解决了该问题。我仍然有兴趣听到有关原因和首选解决方案的更多信息。
最小工作示例:
我的序言的相关部分如下:
\usepackage[amsthm]{ntheorem}
\newcounter{thms} %theorem counter
\newtheorem{theorem}[thms]{Theorem}
\newcounter{goalbroad}
\newcounter{goalnarrow} %this can't be named goal
\numberwithin{goalnarrow}{goalbroad}
\newtheorem{goal}[goalnarrow]{Theorem}
然后在之后\begin{document}
,对于目标的第一个陈述,
\stepcounter{thms}
\addtocounter{goalbroad}{\value{thms}}
\begin{goal} %Theorem 2.1
$e^{it}=\cos t + i\sin t$
\end{goal}
稍后
\begin{goal} %Theorem 2.2
$t\mapsto e^{it}$ is a covering map from \mathbb{R} to the unit circle in the complex plane.
\end{goal}