\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}