同时使用 newpxmath 和 sans-serif math 时缺少符号

同时使用 newpxmath 和 sans-serif math 时缺少符号

我想使用新px文本新px数学作为主要字体,并将其与无衬线字体结合使用,例如康布赖特,用于次要文本,例如标题、图形标题和 pgfplots 内的标签。

基于这个帖子,我尝试了以下代码:

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage{newpxtext}
\usepackage{newpxmath}
\renewcommand{\sfdefault}{cmbr}

\DeclareMathVersion{sans}
\SetSymbolFont{operators}{sans}{OT1}{cmbr}{m}{n}
\SetSymbolFont{letters}{sans}{OML}{cmbrm}{m}{it}
\SetSymbolFont{symbols}{sans}{OMS}{cmbrs}{m}{n}
\SetMathAlphabet{\mathit}{sans}{OT1}{cmbr}{m}{sl}
\SetMathAlphabet{\mathbf}{sans}{OT1}{cmbr}{bx}{n}
\SetMathAlphabet{\mathtt}{sans}{OT1}{cmtl}{m}{n}
\SetSymbolFont{largesymbols}{sans}{OMX}{iwona}{m}{n}

\DeclareMathVersion{boldsans}
\SetSymbolFont{operators}{boldsans}{OT1}{cmbr}{b}{n}
\SetSymbolFont{letters}{boldsans}{OML}{cmbrm}{b}{it}
\SetSymbolFont{symbols}{boldsans}{OMS}{cmbrs}{b}{n}
\SetMathAlphabet{\mathit}{boldsans}{OT1}{cmbr}{b}{sl}
\SetMathAlphabet{\mathbf}{boldsans}{OT1}{cmbr}{bx}{n}
\SetMathAlphabet{\mathtt}{boldsans}{OT1}{cmtl}{b}{n}
\SetSymbolFont{largesymbols}{boldsans}{OMX}{iwona}{bx}{n}

\newif\IfInSansMode
\let\oldsf\sffamily
\renewcommand*{\sffamily}{\oldsf\mathversion{sans}\InSansModetrue}
\let\oldmd\mdseries
\renewcommand*{\mdseries}{\oldmd\IfInSansMode\mathversion{sans}\fi\relax}
\let\oldbf\bfseries
\renewcommand*{\bfseries}{\oldbf\IfInSansMode\mathversion{boldsans}\else\mathversion{bold}\fi\relax}
\let\oldnorm\normalfont
\renewcommand*{\normalfont}{\oldnorm\InSansModefalse\mathversion{normal}}
\let\oldrm\rmfamily
\renewcommand*{\rmfamily}{\oldrm\InSansModefalse\mathversion{normal}}

\usepackage{titlesec}
\titleformat*{\section}{\Large\bfseries\sffamily}

\newcommand{\samplemath}{
    123$123Ax\alpha+\chi\cdot f(x) b$
    \begin{equation}
        Ax\alpha+\chi\cdot f(x) * b \quad \sum_{i=0}^{\infty} \int_{a}^{b} f_i(x) dx
    \end{equation}
}

\begin{document}
    \section{Section heading with math $\alpha(\pi)$}
    Normal:\samplemath
    \sffamily Sans:\samplemath
    \bfseries Bold-sans:\samplemath
    \normalfont Back to Normal:\samplemath
\end{document}

这给了我以下结果: 在此处输入图片描述

如您所见,括号“(”和“)”以及积分和求和符号都缺失了。否则它会很完美。

如果我\usepackage{newpxmath}从序言中删除,数学字体就会变为默认字体,并且所有符号都会正确显示。

如果我删除\SetSymbolFont{symbols}{sans}{OMS}{cmbrs}{m}{n}\SetSymbolFont{largesymbols}{sans}{OMX}{iwona}{m}{n}出现缺失的符号,但在新px数学衬线字体。

有没有办法使用新px数学并且有带有无衬线数学符号的次要文字?

我发现帖子。如果我添加

\DeclareMathDelimiter{(}{\mathopen} {operators}{"28}{largesymbols}{"00}
\DeclareMathDelimiter{)}{\mathclose}{operators}{"29}{largesymbols}{"01}

在序言中,我确实得到了“(”和“)”。有没有比对我需要的每个数学符号都这样做更好的方法?

相关内容