将 LaTeX 符号重新映射到另一个 unicode 值

将 LaTeX 符号重新映射到另一个 unicode 值

编译下面这段 LaTeX 代码时,∖ 符号不会显示出来。

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}
\begin{document}
This will not show: $\setminus$ \\
This will show: $\smallsetminus$
\end{document}

我知道为什么会发生这种情况:\setminus转换为unicode字符0x29F5,并且该字符不是拉丁现代数学的一部分。我想做的是改用Unicode字符\smallsetminus0x2216。所以我真正寻找的是一种将命令重新映射\smallsetminus到另一个Unicode值而不是unicode-math包定义的Unicode值的方法。我知道获取值的一种可能方法\setminus是使用另一种具有Unicode字符的数学字体0x29F5。添加行

\setmathfont[range={"29F5}]{XITS Math}

给了我一个 ∖ 符号,但我不想对这个字符使用其他字体。

答案1

以下\setminus相当于\smallsetminus

\documentclass{article}  
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}

\AtBeginDocument{\let\setminus\smallsetminus}

\begin{document}
  \[ A \setminus B \qquad A \smallsetminus B \]
\end{document}

\AtBeginDocument必需的,因为unicode-math仅在 处定义其命令。因此序言中的\begin{document}simple将被覆盖。或者,您可以将其放在之后,但这是一种不太“干净”的解决方案,因为它违反了内容和样式的分离。\let\setminus\smallsetminus\let\setminus\smallsetminus\begin{document}

如果你想使用完全不同的符号,你可以这样做

\AtBeginDocument{\def\setminus{-}}

反而。

相关内容