mathpazo 和 amssymb 之间的冲突

mathpazo 和 amssymb 之间的冲突

我喜欢 Palatino,所以我使用了 mathpple。但它似乎已经过时了。所以我尝试用 mathpazo 替换它。问题是我收到错误消息“字母太多……”当我删除 amssymb 时,它可以正常工作。但 amssymb 很棒……有什么想法吗?

编辑:这个问题比较普遍。在示例中,当您仅删除其中一个包时,问题就会消失。

最小示例:

\documentclass[10pt,a4paper,landscape,twocolumn]{article}

\usepackage[sc]{mathpazo}
\usepackage{amssymb}
\usepackage{skull}
\usepackage{stmaryrd}
\usepackage{wasysym}
\usepackage{bm}
\usepackage{siunitx}
\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}

\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}

答案1

mathpazo.sty

\DeclareSymbolFont{operators}     {OT1}{pplx}{m}{n}
\DeclareSymbolFont{upright}       {OT1}{zplm}{m}{n}
\DeclareSymbolFont{letters}       {OML}{zplm}{m}{it}
\DeclareSymbolFont{symbols}       {OMS}{zplm}{m}{n}
\DeclareSymbolFont{largesymbols}  {OMX}{zplm}{m}{n}

比标准多一个。接下来amssymb.sty(实际上amsfonts.sty)有

\DeclareSymbolFont{AMSa}{U}{msa}{m}{n}
\DeclareSymbolFont{AMSb}{U}{msb}{m}{n}

另一个声明是skull.sty

\DeclareSymbolFont{SKULL}{U}{skulls}{m}{n}

再来一个stmaryrd.sty

\DeclareSymbolFont{stmry}{U}{stmry}{m}{n}

下一个wasysym.sty

\DeclareSymbolFont{wasy}{U}{wasy}{m}{n}

您声明又加了一个,总数是11个。

现在让我们看看mathpazo.sty

\DeclareMathAlphabet{\mathit}     {OT1}{pplx}{m}{it}
\DeclareMathAlphabet{\mathbf}     {OT1}{zplm}{b}{n}
\DeclareMathAlphabet{\mathbold}   {OML}{zplm}{b}{it}

这样总数就到了 14。下一个amssymb.sty(更好,amsfonts.sty):

\DeclareMathAlphabet{\mathfrak}{U}{euf}{m}{n}

但是,还有其他数学字母,即\mathsf\mathtt,它们siunitx会触发 的加载。这样就变成了 17:太多了。

你能做什么?你可以轻松地避免浪费一个数学组skull。如果你加载amsmath(无论如何你都应该加载),你可以\usepackage{skull}

\DeclareFontFamily{U}{skulls}{}
\DeclareFontShape{U}{skulls}{m}{n}{ <-> skull }{}
\DeclareSymbolFont{SKULL}{U}{skulls}{m}{n}
\DeclareRobustCommand{\skull}{\text{\usefont{U}{skulls}{m}{n}\symbol{'101}}}

最好是完全避免这个可怕的符号。

此外,\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}什么也不做,事实上您会收到一条消息说U/cmr/m/n已使用。

答案2

在现代工具链中,您可以加载基于 Palatino 的 OpenType 字体并完全消除此问题。

\usepackage{unicode-math}

\defaultfontfeatures{Scale = MatchLowercase}
\setmainfont{TeX Gyre Pagella}
\setmathfont{Asana Math}

这需要 LuaLaTeX 或 XeLaTeX,并包含mathpazoamssymb和您添加的大多数其他软件包中的所有符号。任何现代数学字体都会比任何传统软件包的组合具有更多的符号和更高的一致性。

如果有的话,你可以用 Palatino Linotype 或 Palatino 替换 TeX Gyre Pagella,或者用 TeX Gyre Pagella Math 替换 Asana Math。

如果您想继续使用旧字体包,您可以用较新的替换mathpazo和,然后加载或作为主字体。有和选项可以释放数学字母。amssymbnewpxmathtgpagellanewpxtextnosymbolscnoamssymbols

相关内容