带有 [amsthm] 选项的 ntheorem 忽略了定理环境的样式

带有 [amsthm] 选项的 ntheorem 忽略了定理环境的样式

我正在使用ntheoremamsthm选项来定义一个类似定理的环境来陈述注释:

\documentclass{article}
\usepackage[amsthm]{ntheorem}
\theoremstyle{plain}
\theoremheaderfont{\normalfont\itshape}
\theorembodyfont{\normalfont}
\newtheorem*{myenv}{Note}

\begin{document}
\begin{myenv}
The quick brown fox jumps over the lazy dog.
\end{myenv}
\end{document}

我应该得到一个以斜体字样的“Note”开头的环境,后面是普通罗马字体的内容。但我得到的是粗体罗马字体的“Note”,正文是斜体:

在此处输入图片描述

尝试定义一种新的定理风格似乎也不起作用:

\newtheoremstyle{nonumberabc}%
  {\item[\normalfont\itshape \hskip\labelsep ##1\theorem@separator]\normalfont}%
  {\item[{\normalfont\itshape \hskip \labelsep ##3}\theorem@separator]\normalfont}
\theoremstyle{abc}
\newtheorem*{myenv}{Note}

这与上述文档给出了相同的结果。

我究竟做错了什么?

如果我放弃该选项,问题就不会发生amsthm- 但这样我就得不到我期望的一些很好的 amsthm 定义......(经过多年使用后,放弃 ntheorem 的 amsthm 在心理上已经够难的了!)最重要的是,我喜欢amsthm证明环境。所以,对于那些建议我放弃的人amsthm- 我怎样才能用 重现具有完全相同行为(包括 QED 框大小等)的证明ntheorem?我不能直接将代码从 中提取出来ntheorem,因为它似乎没有使用自己的 theoremstyle 命令来获取证明环境。相反,它做了其他事情。

答案1

我正在使用带有 amsthm 选项的 ntheorem。我应该得到一个环境,其中“Note”为斜体,内容为普通罗马字体。相反,我得到的是粗体罗马字体的“Note”,正文为斜体。我做错了什么?

我认为您需要提供几个\newtheoremstyle命令才能发出命令\newtheorem{myenv}{Note}。根据软件包的文档ntheorem,如果软件包加载了该amsthm选项,则必须明确定义编号和未编号“定理”环境的定理样式。根据您对“note”环境样式的描述,我建议您在序言中执行以下操作:

\usepackage[amsthm]{ntheorem}
\theorembodyfont{\upshape}
\newtheoremstyle{notes} % for numbered notes
  {\item[\hskip\labelsep \itshape ##1\ ##2.]}%
  {\item[\hskip\labelsep \itshape ##1\ ##2, ##3.]}
\newtheoremstyle{nonumbernotes} % for unnumbered notes
  {\item[\hskip\labelsep \itshape ##1.]}%
  {\item[\hskip\labelsep \itshape ##1, ##3.]}
\theoremstyle{notes} % switch to newly defined theorem style
\newtheorem*{myenv}{Note}

此后,您的myenv环境就不应该再出现任何问题。

答案2

可以将proof环境代码从ntheorem

\documentclass{article}
\usepackage[thmmarks]{ntheorem}% http://ctan.org/pkg/ntheorem

\makeatletter
\newcommand{\openbox}{\leavevmode
  \hbox to.77778em{%
  \hfil\vrule
  \vbox to.675em{\hrule width.6em\vfil\hrule}%
  \vrule\hfil}}
\gdef\proofSymbol{\openbox}
\newcommand{\proofname}{Proof.}
\newcounter{proof}\newcounter{currproofctr}\newcounter{endproofctr}%
\newenvironment{proof}[1][\proofname]{
  \th@nonumberplain
  \def\theorem@headerfont{\itshape}%
  \normalfont
  %\theoremsymbol{\ensuremath{_\blacksquare}}
  \@thm{proof}{proof}{#1}}%
  {\@endtheorem}
\makeatother

\theoremstyle{plain}
\theoremheaderfont{\normalfont\itshape}
\theorembodyfont{\normalfont}
\newtheorem*{myenv}{Note}

\begin{document}
\begin{myenv}
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
\begin{proof}
This statement is true, because the fox did jump over the lazy dog.
\end{proof}
\end{myenv}
\end{document}

具有 amsthm 证明环境的 ntheorem

thmmarks使用的包选项时会显示 QED 符号ntheorem。在 中,ntheorem这是手动定义的\openbox,随后用作\proofSymbol

答案3

包装文档答复如下:

3.2.2 安斯泰姆

这里,用户必须通过\newtheoremstyle 提供的命令来表达他的定义ntheorem.sty,包括使用 \theoremheaderfont\theorembodyfont。选项[amsthm][standard]是冲突的,因为它们都定义了一个环境 proof因此,我们建议不要使用amsthmntheorem.sty,因为在——以下 ——中定义类定理环境的特征theorem.sty似乎更加直观和用户友好。

ntheorem 软件包

要获得类似的证明环境(没有选项),amsthm请执行以下操作:

 \documentclass[english]{article}
\usepackage{babel}
\usepackage{amsmath,amssymb}
\usepackage[thmmarks,amsmath]{ntheorem}
\newcommand{\openbox}{\leavevmode
  \hbox to.77778em{%
  \hfil\vrule
  \vbox to.675em{\hrule width.6em\vfil\hrule}%
  \vrule\hfil}}
\theoremstyle{nonumberplain}

\theoremsymbol{\openbox}
\newtheorem{proof}{Proof}

\theoremsymbol{}
\theoremstyle{plain}
\theoremheaderfont{\normalfont\itshape}
\theorembodyfont{\normalfont}
\newtheorem*{myenv}{Note}



\begin{document}
\begin{myenv}
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
\end{myenv}

\begin{proof}[Alternative Text]
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
\end{proof}
\end{document}

答案4

下列的沃纳的回答这是我的评论,这是一个用于证明环境的代码,其中修复了最终句号问题;这是 Werner 从 `ntheorem' 源代码中提取的代码的轻微调整:

\makeatletter
\newcommand{\openbox}{\leavevmode
  \hbox to.77778em{%
  \hfil\vrule
  \vbox to.675em{\hrule width.6em\vfil\hrule}%
  \vrule\hfil}}
\gdef\proofSymbol{\openbox}
\newcommand{\proofname}{Proof}
\newcounter{proof}\newcounter{currproofctr}\newcounter{endproofctr}%
\newenvironment{proof}[1][\proofname]{
  \th@nonumberplain
  \def\theorem@headerfont{\itshape}%
  \normalfont
  %\theoremsymbol{\ensuremath{_\blacksquare}}
  \@thm{proof}{proof}{{#1}.}}%
  {\@endtheorem}
\makeatother

相关内容