我想要一个双正方形交叉口符号在我的 Overleaf 文档中而无需更改主字体(我使用的是 AMS 包和标准 Latin Modern)。
虽然超链接中给出的答案表明\usepackage{mathabx}
(产生了所需的结果),但它让我改变了整个字体类。我如何从这个包中提取符号并确保它与其他符号(例如\cap, \cup
等)的大小相同?
谢谢!
答案1
以下是 的程序mathabx
。
请参阅手册中的
mathabx
符号名称:它是\sqdoublecap
查找
mathabx.dcl
命令以查找\DeclareMathSymbol{\sqdoublecap} {2}{mathb}{"5E}
查找
mathabx.sty
符号mathb
字体\DeclareFontFamily{U}{mathb}{\hyphenchar\font45} \DeclareFontShape{U}{mathb}{m}{n}{ <5> <6> <7> <8> <9> <10> gen * mathb <10.95> mathb10 <12> <14.4> <17.28> <20.74> <24.88> mathb12 }{} \DeclareSymbolFont{mathb}{U}{mathb}{m}{n} \DeclareFontSubstitution{U}{mathb}{m}{n}
我们拥有所有的原料。
添加到文档序言中
\DeclareFontFamily{U}{mathb}{}
\DeclareFontShape{U}{mathb}{m}{n}{
<-5.5> mathb5
<5.5-6.5> mathb6
<6.5-7.5> mathb7
<7.5-8.5> mathb8
<8.5-9.5> mathb9
<9.5-11> mathb10
<11-> mathb12
}{}
\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}
\DeclareFontSubstitution{U}{mathb}{m}{n}
\DeclareMathSymbol{\sqdoublecap}{2}{mathb}{"5E}
\DeclareMathSymbol{\sqdoublecup}{2}{mathb}{"5F}
为何会有这些改变?
\hyphenchar\font
对于符号字体来说没有意义;- 字体采用 Type1 格式,因此我们可以将其定义为任意大小,而不仅仅是传统的固定大小。
我还添加了\sqdoublecup
对称性。
完整示例。
\documentclass{article}
\usepackage{amsmath}
% import from mathabx
\DeclareFontFamily{U}{mathb}{}
\DeclareFontShape{U}{mathb}{m}{n}{
<-5.5> mathb5
<5.5-6.5> mathb6
<6.5-7.5> mathb7
<7.5-8.5> mathb8
<8.5-9.5> mathb9
<9.5-11> mathb10
<11-> mathb12
}{}
\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}
\DeclareFontSubstitution{U}{mathb}{m}{n}
\DeclareMathSymbol{\sqdoublecap}{2}{mathb}{"5E}
\DeclareMathSymbol{\sqdoublecup}{2}{mathb}{"5F}
% end import
\begin{document}
$A\sqcap B\sqdoublecap C$
$A\sqcup B\sqdoublecup C$
\end{document}
噢,那么,它的尺寸和 不一样\sqcap
,是吗?
好的,让我们测量符号:添加
\sbox0{$\sqcap$}\the\ht0
\sbox0{$\sqdoublecap$}\the\ht0
前者为 5.55557pt,后者为 6.83167pt。如果我们除以它,我们得到的结果约为 0.8132。因此我们可以应用这个放大倍数,改变
<-5.5> mathb5
进入
<-5.5> s*[0.8132] mathb5
其余线条也类似。我们现在得到
该死!太小了!显然是边界框的问题。现在我们必须用眼睛来判断。让我们试试0.87
\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}% just for the final comparison
% import from mathabx
\DeclareFontFamily{U}{mathb}{}
\DeclareFontShape{U}{mathb}{m}{n}{
<-5.5> s*[0.87] mathb5
<5.5-6.5> s*[0.87] mathb6
<6.5-7.5> s*[0.87] mathb7
<7.5-8.5> s*[0.87] mathb8
<8.5-9.5> s*[0.87] mathb9
<9.5-11> s*[0.87] mathb10
<11-> s*[0.87] mathb12
}{}
\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}
\DeclareFontSubstitution{U}{mathb}{m}{n}
\DeclareMathSymbol{\sqdoublecap}{2}{mathb}{"5E}
\DeclareMathSymbol{\sqdoublecup}{2}{mathb}{"5F}
% end import
\begin{document}
$A\sqcap B\sqdoublecap C$
$A\sqcup B\sqdoublecup C$
{\ooalign{\color{red}$\sqcap$\cr$\sqdoublecap$\cr}}
\end{document}
最后一行叠加了两个符号,其中一个是红色的。
不是确切地高度和宽度相同,但差异可以忽略不计。
重要的
如果你缺少符号字体(只有 16 个可用的系列,pdftex
其中一些已经被占用),你可以删除\DeclareSymbolFont
和\DeclareMathSymbol
行,用
\DeclareRobustCommand{\sqdoublecap}{\mathbin{\text{\usefont{U}{mathb}{m}{n}\symbol{"5E}}}}
\DeclareRobustCommand{\sqdoublecup}{\mathbin{\text{\usefont{U}{mathb}{m}{n}\symbol{"5F}}}}
不会因为几个符号而浪费符号字体。