我正在尝试在某些文档中使用 Minion Pro 和 Myriad Pro,并使用随附的 mdsymbol 包来获取数学字体。在编译基本文档时,我收到以下错误:
! LaTeX Error: Command `\mid' already defined.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.2041 ...thSymbol{mid}{\mathrel}{delimiters}{"B6}
! LaTeX Error: Command `\surd' already defined.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.2109 ...thSymbol{surd}{\mathop}{delimiters}{"D3}
这是我的 MWE:
\documentclass{article}
% Font Settings
\usepackage[utf8]{inputenc}
\usepackage{MinionPro}
\usepackage{MyriadPro}
\usepackage{mdsymbol}
\usepackage[scaled=0.85]{sourcecodepro}
\usepackage[english]{babel}
\usepackage[babel,final]{microtype}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}
对于该做什么有什么建议吗?
答案1
问题是Myriad.sty
(所以你真的有MyriadPro.sty
?)和都不mdsymbol.sty
是写得很好的 IMNSHO。鉴于它们是为与 Minion 一起使用而设计的,你会期望它们至少与它兼容。但这两个文件定义的宏的名称与 使用的宏名称相同MirionPro.sty
。然而,与后者不同,后者对宏可能已经定义的可能性很敏感,有问题的.sty
s 都没有注意到这种可能性。
结果是,如果您仔细考虑加载顺序,它就可以工作,但MyriadPro.sty
和的维护者mdsymbol.sty
应该包含适当的检查或挑选可预测的冲突并发出有意义的错误消息。第一个解决方案会更可取。
这对我有用:
\documentclass[british,final]{article}
\usepackage[utf8]{inputenc}
\usepackage{Myriad}% I have Myriad.sty and not MyriadPro.sty
\usepackage{mdsymbol}
\usepackage{MinionPro}
\usepackage[scaled=0.85]{sourcecodepro}
\usepackage{babel}
\usepackage{microtype}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}
请注意,除非有特殊原因,否则最好将语言和文档状态作为类选项传递,并且最好指定语言变体,而不是依赖于english
默认到您想要的变体。
此外,这个 MWE 还可以简化为:microtype
,babel
和sourcecodepro
都是不相关的。
答案2
看起来它没有找到 MinionPro.sty 和 MyriadPro.sty,或者您有其他定义以某种方式发生冲突。您是否在正确的目录中安装了正确的字体?(通常是 /usr/local/teTeX/share/texmf-local)
尝试阅读 README: http://ctan.mirror.garr.it/mirrors/CTAN/fonts/minionpro/README
如果这不是问题,我认为它可能取决于您的 TeX 特定安装,但从您的日志可以清楚地看出您加载了已经定义该命令的内容...尝试最终运行 \meaning\mid 和 \surd 以了解来自哪里......(它应该说 \mid \mathchar"37B6)