我在使用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.sty
和txfonts.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
定理包:使用哪一个,哪些会冲突?。