\leqslant 和 \geqslant 与 unicode-math

\leqslant 和 \geqslant 与 unicode-math

\leq我更喜欢和的倾斜版本\geq,因此我通常会\let\leq=\leqslant在样式文件或序言中的某个位置进行设置。但是,当我使用 LuaLaTex/XeLaTeX 和 时,我注意到了一种奇怪的行为unicode-math。显然,除非我将命令放在 之后,否则该命令\let\leq=\leqslant无效\begin{document}

是否有命令(放在序言中或者文件中.sty)来unicode-math使用倾斜版本?

以下是 MWE:

\documentclass[12pt,a4paper]{article}
\usepackage{unicode-math}
\let\leq=\leqslant

\begin{document}
% \let\leq=\leqslant % It works if I uncomment this
We write $x\leq y$
\end{document}

答案1

C:\texlive\2023\texmf-dist\tex\latex\unicode-math\unicode-math-xetex.sty,你可以找到

\group_begin:
  \file_get:nnN {unicode-math-table.tex} {} \l__um_mathtable_tl
  \cs_set:Npn \UnicodeMathSymbol #1#2#3#4
    {
      \exp_not:n { \__um_sym:nnn {#1} {#2} {#3} }
    }
  \tl_gset:Nx \g__um_mathtable_tl {\l__um_mathtable_tl}
\group_end:
\__um_cs_new:Nn \__um_input_math_symbol_table: {\g__um_mathtable_tl}
\AtBeginDocument{\__um_define_math_chars:}
\__um_cs_new:Nn \__um_define_math_chars:
 {
  \group_begin:
    \cs_set:Npn \__um_sym:nnn ##1##2##3
     {
      \tl_if_in:nnT
       { \mathord \mathalpha \mathbin \mathrel \mathpunct \mathop \mathfence }
       {##3}
      {
        \exp_last_unbraced:NNx \cs_gset_eq:NN ##2 { \char_generate:nn {##1} {12} }
      }
     }
    \__um_input_math_symbol_table:
  \group_end:
 }

unicode-math-table.tex安顿好了\AtBeginDocument


\documentclass[12pt,a4paper]{article}
\usepackage{unicode-math}
\AtBeginDocument{\let\leq=\leqslant}
\begin{document}
We write $x\leq y$
\end{document}

在此处输入图片描述

相关内容