定理环境的星号版本未编号 - 使用 ntheorem

定理环境的星号版本未编号 - 使用 ntheorem

我正在尝试从 切换amsthmntheorem。(这是由于amsthm与 babel+Hebrew 不兼容,请参阅这里这里;似乎尚未解决。)

我想要某些环境有星号版本和无星号版本,星号版本没有编号。amsthm我会这样做:

\newtheorem{theorem}{Theorem}
\newtheorem*{theorem*}{Theorem}

这正是我想要的。使用ntheorem,这会导致错误 -theorem*已经定义;删除第二个命令,两个环境都会被编号,不同之处在于theorem*不会包含在定理列表中(反正我不使用)。我尝试了有和没有它的[amsthm]选项ntheorem

我还能做什么,除了放弃,theorem*转而选择类似

\newtheorem*{theoremstar}{Theorem}

答案1

查看ntheorem文档,我看到\renewtheorem提到;所以:

\renewtheorem*{theorem*}{Theorem}

newtheorem是一个可行的技巧。现在,如果我能将和之间的选择宏化就好了renewtheorem,这样我就可以为ntheorem和都使用相同的前导码amsthm

答案2

回复楼主的回答:那

\providecommand{\renewtheorem}{\newtheorem}

因此,在使用时\renewtheorem将其定义为,而使用时不会重新定义?这是一种肮脏的黑客行为,但无论使用或中的哪一个都应该有效。\newtheoremamsthmntheoremamsthmntheorem

更简洁的版本是

\makeatletter
\@ifpackageloaded{amsthm}{what if loaded}{what if not}
\@ifpackageloaded{ntheorem}{what if loaded}{what if not}
\makeatother

答案3

除了您提到的那个,我想不出任何其他可能性,即\newtheorem*{theoremstar}{Theorem}。它看起来有点笨拙,但它有效!

附录2011 年 10 月 2 日:请参阅我的回答这个问题以便更完整地回答您的问题,关于如何创建定理样式,其中定理的“星号”版本没有编号。

相关内容