这例子演示了如何从 导入符号MnSymbol
。我发现代码很长而且很复杂,不知道是否存在更优雅的方法。此外,可能还有一种方法不需要“浪费宝贵的数学字母资源”。
这邮政建议一种方法(尽管不适用于MnSymbol
)。据我所知,当字体“提供.fd
文件”时,这种替代方法特别合适。这是什么意思?MnSymbol
提供.fd
文件吗?否则,创建这些文件有多难,以便可以使用更少的代码行导入符号?在哪些情况下应该使用pifont
导入字体的方法,而不是不使用任何包的方法(如我的第一个链接所示)?
是否有其他特别适合导入符号的包?这个常问问题建议亚古西洛但它自 2009 年以来就没有更新过,而且似乎没有太多用过的。
我对从 导入特别感兴趣MnSymbol
,更具体地说,导入诸如、\ntriplesim
等符号,但如果这个问题可以得到一般性的回答(针对任何字体),当然更好。\nlessgtr
\ngtreqlessslant
答案1
以下是您提到的三个符号:
\documentclass{article}
\usepackage{amsmath}
\DeclareRobustCommand{\frommnsymbol}[3]{%
%1 = atom type, #2 = mnsymbol font, #3 = character
#1{\text{\usefont{U}{MnSymbol#2}{m}{n}\symbol{#3}}}%
}
%\DeclareFontFamily{U}{MnSymbolA}{}
%\DeclareFontFamily{U}{MnSymbolB}{}
%\DeclareFontFamily{U}{MnSymbolC}{}
\DeclareFontFamily{U}{MnSymbolD}{}
%\DeclareFontFamily{U}{MnSymbolF}{}
%\DeclareFontShape{U}{MnSymbolA}{m}{n}{
% <-6> MnSymbolA5
% <6-7> MnSymbolA6
% <7-8> MnSymbolA7
% <8-9> MnSymbolA8
% <9-10> MnSymbolA9
% <10-12> MnSymbolA10
% <12-> MnSymbolA12}{}
%\DeclareFontShape{U}{MnSymbolB}{m}{n}{
% <-6> MnSymbolB5
% <6-7> MnSymbolB6
% <7-8> MnSymbolB7
% <8-9> MnSymbolB8
% <9-10> MnSymbolB9
% <10-12> MnSymbolB10
% <12-> MnSymbolB12}{}
%\DeclareFontShape{U}{MnSymbolC}{m}{n}{
% <-6> MnSymbolC5
% <6-7> MnSymbolC6
% <7-8> MnSymbolC7
% <8-9> MnSymbolC8
% <9-10> MnSymbolC9
% <10-12> MnSymbolC10
% <12-> MnSymbolC12}{}
\DeclareFontShape{U}{MnSymbolD}{m}{n}{
<-6> MnSymbolD5
<6-7> MnSymbolD6
<7-8> MnSymbolD7
<8-9> MnSymbolD8
<9-10> MnSymbolD9
<10-12> MnSymbolD10
<12-> MnSymbolD12}{}
%\DeclareFontShape{U}{MnSymbolF}{m}{n}{
% <-6> MnSymbolF5
% <6-7> MnSymbolF6
% <7-8> MnSymbolF7
% <8-9> MnSymbolF8
% <9-10> MnSymbolF9
% <10-12> MnSymbolF10
% <12-> MnSymbolF12}{}
\newcommand{\ntriplesim}{\frommnsymbol{\mathrel}{D}{"7E}}
\newcommand{\nlessgtr}{\frommnsymbol{\mathrel}{D}{"C0}}
\newcommand{\ngtreqlessslant}{\frommnsymbol{\mathrel}{D}{"C7}}
\begin{document}
$a\ntriplesim b$ $a\nlessgtr b$ $a\ngtreqlessslant b$
$X_{a\ntriplesim b}$ $X_{a\nlessgtr b}$ $X_{a\ngtreqlessslant b}$
\end{document}
我注释掉了未使用的字体。
字体声明直接借用自MnSymbol.sty
。字母和代码是如何确定的?
我寻找MnSymbol.sty
三个符号
\Decl@Mn@Char\ntriplesim {MnSyD}{\mathrel}
\Decl@Mn@Char\nlessgtr {MnSyD}{\mathrel}
\Decl@Mn@Char\ngtreqlessslant {MnSyD}{\mathrel}
这决定了要使用的字母。不幸的是,MnSymbol
没有使用符号的明确代码,但有一个技巧可以在不计算文件的情况下获取它们:latexdef -p MnSymbol
后面跟着符号的名称将显示必要的代码。
> latexdef -p MnSymbol ntriplesim nlessgtr ngtreqlessslant
\ntriplesim:
\mathchar"377E
\the\ntriplesim:
14206
\nlessgtr:
\mathchar"37C0
\the\nlessgtr:
14272
\ngtreqlessslant:
\mathchar"37C7
\the\ngtreqlessslant:
14279
因此我可以提供表示中的最后两位数字作为字符代码\mathchar
。