ntheorem 的奇怪行为。

ntheorem 的奇怪行为。

我在使用ntheorem时遇到以下奇怪的现象:

奇怪的现象 http://www.cgti.nl/gf/weird.png

我得到的是 $\Lambda$ 而不是\box。在其他证明中,我可能会得到\box\Lambda。在我最后给出的例子中,\[ \]如果我使用equation,则盒子的高度不正确。

这是我的序言的第一部分:

\documentclass[a4paper,11pt, leqno, draft]{scrreprt}
\usepackage{amsmath, amssymb, bm, mathtools, marvosym}
\usepackage[amsmath, amsthm, thmmarks]{ntheorem}
\usepackage[varg]{txfonts}
\usepackage{theoremref}
\usepackage{graphicx}
\usepackage{fancyref}

发生这种情况的最小示例:

\documentclass[a4paper,11pt, leqno, draft]{scrreprt}
\usepackage{amsmath}
\usepackage[amsmath, amsthm, thmmarks]{ntheorem}
\usepackage[varg]{txfonts}

\theoremstyle{change}
\newcounter{acounter}[chapter]
\def\theacounter{\thechapter.\arabic{acounter}}
\newtheorem{lemma}[acounter]{Lemma}
\begin{document}
\begin{proof}
\[
f = g
\]
\end{proof}
\end{document}

我该如何解决这个问题?问题似乎出在txfonts

答案1

事实上,问题来自于amsmath.stytxfonts.sty都定义命令\openbox

这是的定义txfonts.sty

\DeclareRobustCommand{\openbox}{\begingroup \usefont{U}{txsya}{m}{n}\thr@@\endgroup}

这是 amsthm.sty 中的定义:

\newcommand{\openbox}{\leavevmode
  \hbox to.77778em{%
  \hfil\vrule
  \vbox to.675em{\hrule width.6em\vfil\hrule}%
  \vrule\hfil}}

避免冲突的一种方法是加载txfonts 第一的然后amsthm(作为的包选项ntheorem),并在保存符号包,重命名\openbox命令txfonts以便\openbox保留其amsthm.sty定义。

\documentclass[a4paper,11pt, leqno, draft]{scrreprt}
\usepackage{amsmath}
\usepackage[varg]{txfonts}
\usepackage{savesym}
\savesymbol{openbox}
\usepackage[amsthm,amsmath,thmmarks]{ntheorem}

\theoremstyle{change}
\newcounter{acounter}[chapter]
\def\theacounter{\thechapter.\arabic{acounter}}
\newtheorem{lemma}[acounter]{Lemma}

\begin{document}
\begin{proof}
\[
f = g
\]
\end{proof}
\end{document}

附注一下,ntheorem软件包文档建议如下:

因此,我们建议不要使用 amsthm,因为 ntheorem.sty 中定义类定理环境的功能(遵循 theorem.sty)似乎更直观、更用户友好。

当然,如果您不使用该amsthm选项,则必须定义自己的proof环境。

编辑:这个建议必须谨慎对待:Philippe Goutet在回答这个问题时对amsthm和进行了很好的比较ntheorem定理包:使用哪一个,哪些会冲突?

相关内容