我想使用包\squareulblack
中的符号(或其他符号)unicode-math
,但我必须继续使用 pdfLaTex 进行编译(因为该文档一直使用此编译器进行开发,现在让它与 XeLaTex 一起工作会很费劲)。
我怎样才能做到这一点?
答案1
该符号由 提供stix2
,但您可能不想将字体更改为基于 Times 的 STIX2 字体。
我们stix2.sty
发现
\stix@MathSymbol{\squareulblack}{\mathord}{arrows3}{"88}
\stix@MathSymbol{\squarelrblack}{\mathord}{arrows3}{"89}
所以我们知道我们需要找到数学符号字体的定义arrows3
\DeclareSymbolFont{arrows3}{LS2}{stix2tt}{m}{n}
所以我们需要声明LS2
编码
\DeclareFontEncoding{LS2}{}{\noaccents@}
\DeclareFontSubstitution{LS2}{stix2}{m}{n}
声明\noaccents@
与我们的目的无关。现在我们可以导入符号了。但是,第一次尝试并没有真正混合在一起\square
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\DeclareFontEncoding{LS2}{}{}
\DeclareFontSubstitution{LS2}{stix2}{m}{n}
\newcommand{\stixtwottsymbol}[1]{%
\text{\usefont{LS2}{stix2tt}{m}{n}\symbol{#1}}%
}
\DeclareRobustCommand{\squareulblack}{%
\mathord{% or \mathrel or \mathbin
\stixtwottsymbol{"88}%
}%
}
\DeclareRobustCommand{\squarelrblack}{%
\mathord{% or \mathrel or \mathbin
\stixtwottsymbol{"89}%
}%
}
\begin{document}
\vrule depth 0.1pt height 0.1pt width 3pt $\squareulblack \square \squarelrblack$
\end{document}
符号变大了,而且不在基线上。让我们来修复这个问题。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
\DeclareFontEncoding{LS2}{}{}
\DeclareFontSubstitution{LS2}{stix2}{m}{n}
\newcommand{\stixtwottsymbol}[1]{%
\text{%
\settoheight{\dimen0}{$\square$}%
\resizebox{!}{\dimen0}{%
\raisebox{\depth}{\usefont{LS2}{stix2tt}{m}{n}\symbol{#1}}%
}%
}%
}
\DeclareRobustCommand{\squareulblack}{%
\mathord{% or \mathrel or \mathbin
\stixtwottsymbol{"88}%
}%
}
\DeclareRobustCommand{\squarelrblack}{%
\mathord{% or \mathrel or \mathbin
\stixtwottsymbol{"89}%
}%
}
\begin{document}
\vrule depth 0.1pt height 0.1pt width 3pt $\squareulblack \square \squarelrblack$
$\scriptstyle \squareulblack \square \squarelrblack$
$\scriptscriptstyle \squareulblack \square \squarelrblack$
\end{document}
结果好多了,不是吗?
先前版本也能够很好地适应其他数学风格。