\begin{document} 破坏了 \Re 的重新定义

\begin{document} 破坏了 \Re 的重新定义

要用普通的“Re”替换哥特式实部运算符,以下方法对我有用:

\documentclass[a4paper,11pt,twoside,fleqn]{report}
[...]
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage[bold-style=ISO]{unicode-math} % must come after ams and symbols
[...]
\begin{document}
\def\Re{\operatorname{Re}}

但是,如果我交换最后两行,我的重新定义\Re将无效。发生了什么?如何\begin{document}覆盖宏重新定义?

答案1

unicode-math中包含许多命令\AtBeginDocument,因此当处理到达\begin{document}命令时,它们首先围绕该点运行。您可以使用相同的技巧自己覆盖定义:

示例输出

\documentclass[a4paper,11pt,twoside,fleqn]{report}

\usepackage{mathtools}
\usepackage[bold-style=ISO]{unicode-math}

\AtBeginDocument{\renewcommand{\Re}{\operatorname{Re}}}
\begin{document}

\( \Re z \)
\end{document}

类似命令如\AtEndOfPackage也在核心 LaTeX 中定义。附加命令\AtBeginEnvironment包括etoolbox

相关内容