要用普通的“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
: