我正在使用以下几个包编写具有书籍结构的文档:
\documentclass[letterpaper, 10pt, oneside]{book}
\usepackage{XCharter}
\usepackage[xcharter]{newtxmath}
\usepackage[cal=boondox,scr=boondox,bb=boondox,frak=euler]{mathalfa}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{enumerate}
我想使用包proof
中的环境amsthm
,但它会产生以下错误:Command \openbox already defined. \vrule\hfil}}
。我注意到,虽然我的 LaTeX 编辑器没有给出任何文档预览,但实际上生成了一个.pdf
文件,并且编译得很好。
我开始注释掉我以前使用的一些软件包,只是为了调试并查看是什么导致了问题。如果我注释掉\usepackage[xcharter]{newtxmath}
,警告就会消失。
根据错误和给出的答案这个问题,很明显newtxmath
和amsthm
都在定义一个同时调用的命令\openbox
。我该怎么做才能解决这个错误?我真的不想放弃这个newtxmath
包和 XCharter 字体,我喜欢它们。
提前谢谢您。我提供 MWE:
\documentclass[letterpaper, 10pt, oneside]{book}
\usepackage{XCharter}
\usepackage[xcharter]{newtxmath}
\usepackage[cal=boondox,scr=boondox,bb=boondox,frak=euler]{mathalfa}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{enumerate}
\newcommand{\Ccal}{\mathcal{C}}
\newcommand{\Pcal}{\mathcal{P}}
\begin{document}
Suppose $\Omega = \{0,1\}$ and $\Ccal = \{\{0\}\}$. Enumerate $\aleph$, the class of all $\sigma$-fields containing $\Ccal$.
\begin{proof}
There are just two $\sigma$-fields on $\Omega$: the trivial one $\{\emptyset, \Omega\}$ and the discrete one $\Pcal(\Omega) = \{\emptyset, \{0\}, \{1\}, \Omega\}$. So, $\aleph = \{\Pcal(\Omega)\}$.
\end{proof}
\end{document}
答案1
\openbox
由多个包定义
作为一种快速解决方法,你可以\openbox
在加载之前取消定义amsthm
\documentclass[letterpaper, 10pt, oneside]{book}
\usepackage{XCharter}
\usepackage[xcharter]{newtxmath}
\usepackage[cal=boondox,scr=boondox,bb=boondox,frak=euler]{mathalfa}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\let\openbox\undefined
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{enumerate}
\newcommand{\Ccal}{\mathcal{C}}
\newcommand{\Pcal}{\mathcal{P}}
\begin{document}
Suppose $\Omega = \{0,1\}$ and $\Ccal = \{\{0\}\}$. Enumerate $\aleph$, the class of all $\sigma$-fields containing $\Ccal$.
\begin{proof}
There are just two $\sigma$-fields on $\Omega$: the trivial one $\{\emptyset, \Omega\}$ and the discrete one $\Pcal(\Omega) = \{\emptyset, \{0\}, \{1\}, \Omega\}$. So, $\aleph = \{\Pcal(\Omega)\}$.
\end{proof}
\end{document}
答案2
我遇到了同样的问题。当我添加时,amsthm
我注意到它与发生了冲突newtxmath
。我的解决方案是重新排序包。
原始(失败)
\documentclass{minimal}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage[libertine]{newtxmath} % <---- A
\usepackage{amsthm} % <---- B
\newtheorem{lemma}{Lemma}
\begin{document}
\begin{lemma}
Foo
\end{lemma}
\end{document}
结果错误:
! LaTeX Error: Command \openbox already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.427 \vrule\hfil}}
重新排序(作品)
\documentclass{minimal}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsthm} % <---- B
\usepackage{libertine}
\usepackage[libertine]{newtxmath} % <---- A
\newtheorem{lemma}{Lemma}
\begin{document}
\begin{lemma}
Foo
\end{lemma}
\end{document}