我想使用新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}
在序言中,我确实得到了“(”和“)”。有没有比对我需要的每个数学符号都这样做更好的方法?