![从其他字体导入符号而不浪费数学字母](https://linux22.com/image/440599/%E4%BB%8E%E5%85%B6%E4%BB%96%E5%AD%97%E4%BD%93%E5%AF%BC%E5%85%A5%E7%AC%A6%E5%8F%B7%E8%80%8C%E4%B8%8D%E6%B5%AA%E8%B4%B9%E6%95%B0%E5%AD%A6%E5%AD%97%E6%AF%8D.png)
我希望从中导入一个符号newtxmath
以供使用kpfonts
无需使用数学字母表。如图所示这个问题如果人们愿意浪费一个数学字母表,那么这样做很容易,但在回答这个问题,egreg似乎说可以通过使用该pifont
包来避免这种情况。
作为参考,这可行,但会用掉数学字母表:
\documentclass{article}
\usepackage{kpfonts}
\makeatletter
\DeclareSymbolFont{ntxletters}{OML}{ntxmi}{m}{it}
\re@DeclareMathSymbol{\newpartial}{\mathord}{ntxletters}{64}
\makeatother
\begin{document}
\[ \partial \newpartial \]
\end{document}
按照 (据我所知) egreg 的说明,我将得到以下信息:
\documentclass{article}
\usepackage{kpfonts}
\usepackage{pifont}
\makeatletter
\newcommand\Pimathsymbol[3][\mathord]{%
#1{\@Pimathsymbol{#2}{#3}}}
\def\@Pimathsymbol#1#2{\mathchoice
{\@Pim@thsymbol{#1}{#2}\tf@size}
{\@Pim@thsymbol{#1}{#2}\tf@size}
{\@Pim@thsymbol{#1}{#2}\sf@size}
{\@Pim@thsymbol{#1}{#2}\ssf@size}}
\def\@Pim@thsymbol#1#2#3{%
\mbox{\fontsize{#3}{#3}\Pisymbol{#1}{#2}}}
\makeatother
\newcommand{\newpartial}{\Pimathsymbol[\mathord]{ntxmmi}{64}}
\begin{document}
\[ \partial \newpartial \]
\end{document}
编译通过但出现以下错误消息:
Some font shapes were not available, defaults substituted.
Font shape `U/ntxmmi/m/n' undefined
(Font) using `U/jkpexa/m/n' instead.
输出也是错误的,用 (下标?) 代替\oiintctrclockwise
。kpfonts
我猜这个符号填满了字体的 64 个位置jkpexa
。
如果我正确理解了 egreg,那么这种方法对于上述链接的问题来说是不够的,因为提问者希望从 导入一个符号mathabx
,而这不提供.fd
文件。但据我所知,newtxmath
做提供(至少一些).fd
文件这里。
(请注意,我使用的是 pdfLaTeX。不确定这是否足以成为标签。)
答案1
这仅适用于“Pi”字体的符号。
如果你不需要符号来尊重\boldmath
,那就很简单了
\newcommand{\newpartial}{\mathord{\text{\usefont{OML}{ntxmi}{m}{it}\symbol{64}}}}
完整例子。
\documentclass{article}
\usepackage{amsmath}
\usepackage{kpfonts}
\newcommand{\newpartial}{}
\DeclareRobustCommand{\newpartial}{%
\mathord{\text{\usefont{OML}{ntxmi}{m}{it}\symbol{64}}}%
}
\begin{document}
\[ \partial \newpartial \]
\end{document}
最好使用,\DeclareRobustCommand
这样如果符号在某些移动参数中得到应用,.aux
文件中就不会出现垃圾。
为了\boldmath
\documentclass{article}
\usepackage{amsmath}
\usepackage{kpfonts}
\usepackage{pdftexcmds}
\newcommand{\newpartial}{%
\mathord{\text{\usefont{OML}{ntxmi}{\mediumorbold}{it}\symbol{64}}}%
}
\makeatletter
\newcommand{\mediumorbold}{%
\ifnum\pdf@strcmp{\math@version}{bold}=0 b\else m\fi
}
\makeatother
\begin{document}
\[ \partial \newpartial \]
\boldmath
\[ \partial \newpartial \]
\end{document}