
Я пытаюсь определить \QED
команду, которая вызывает \square
(определено в amssymb
. Рассмотрим следующий MWE:
\documentclass{article}
\RequirePackage{amsmath}
\RequirePackage{amssymb}
\RequirePackage[scaled=0.96, sups, scosf, osf]{XCharter}
\RequirePackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
\setmathfont{XCharter-Math.otf}
\def\QED{\ensuremath{{\square}}}
\begin{document}
\QED
$\square$
\end{document}
Это компилируется в следующее:
где $\square$
отображается правильно, а не \ensuremath{{\square}}
. Почему?
решение1
unicode-math
определяется \QED
как U+220E ∎ но он делает свое определение \AtBeginDocument
, поэтому перезаписывает ваше определение \QED
и выбранный шрифт не имеет символа.
\documentclass{article}
\RequirePackage{amsmath}
\RequirePackage{amssymb}
\RequirePackage[scaled=0.96, sups, scosf, osf]{XCharter}
\RequirePackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
\setmathfont{XCharter-Math.otf}
\AtBeginDocument{\def\QED{\ensuremath{{\square}}}}
\begin{document}
X
\QED
$\square$
\end{document}