以下示例仅显示正方形和菱形(XeTeX,版本 3.14159265-2.6-0.99998),其他三个符号显示为空格,而如果删除 unicode-math,则符号会正确显示。有没有办法在使用 unicode-math 时正确显示符号?
\documentclass{article}
\usepackage{amssymb}
\usepackage{unicode-math}
\begin{document}
$$a\blacksquare \blacklozenge \blacktriangle \blacktriangledown \bigstar b$$
\end{document}
答案1
我不会跟 混amssymb
在一起unicode-math
。
您可以从另一种数学字体提供缺失的字形。
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont{STIX Two Math}[
range={\mdlgblklozenge,\mdblksquare,\blacktriangle,\blacktriangledown,\bigstar}
]
\providecommand{\blacksquare}{\mdblksquare}
\providecommand{\blacklozenge}{\mdlgblklozenge}
\begin{document}
\[
a\blacksquare \blacklozenge \blacktriangle \blacktriangledown \bigstar b
\]
\end{document}
还有更小的变体;有必要先加载它们然后再决定最后的大小。
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont{STIX Two Math}[
range={
\mdlgblklozenge,
\smblklozenge,
\mdblksquare,
\smblksquare,
\blacktriangle,
\blacktriangledown,
\bigstar,
},
]
\providecommand{\blacksquare}{\smblksquare}
\providecommand{\blacklozenge}{\smblklozenge}
\begin{document}
\[
a\blacksquare \blacklozenge \blacktriangle \blacktriangledown \bigstar b
\]
\end{document}
您不必一定要使用数学字体来表示特定符号。例如,您可以使用标准字体来表示这些符号。
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\newfontface{\altfont}{FreeSerif}
\AtBeginDocument{%
\providecommand{\blacksquare}{\text{\altfont\symbol{"25A0}}}%
\providecommand{\blacklozenge}{\text{\altfont\symbol{"29EB}}}%
\renewcommand{\blacktriangle}{\text{\altfont\symbol{"25B2}}}%
\renewcommand{\blacktriangledown}{\text{\altfont\symbol{"25BC}}}%
\renewcommand{\bigstar}{\text{\altfont\symbol{"2605}}}%
}
\begin{document}
\[
a\blacksquare \blacklozenge \blacktriangle \blacktriangledown \bigstar b
\]
\end{document}
答案2
日志显示
Missing character: There is no ▴ in font [latinmodern-math.otf]/OT:script=math;
language=DFLT;!
Missing character: There is no ▾ in font [latinmodern-math.otf]/OT:script=math;
language=DFLT;!
Missing character: There is no ★ in font [latinmodern-math.otf]/OT:script=math;
language=DFLT;!
因此字体不包含这些字符。您可以尝试不同的主字体,或将这些字符定义为来自 ams 字体
例如我得到
如果我添加
\setmathfont{Stix Two Math}