Халмос выходит из игры с XCharter/ensuremath

Халмос выходит из игры с XCharter/ensuremath

Я пытаюсь определить \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}

Связанный контент