命令未重新定义

命令未重新定义

我正在编写一个自定义包,并希望将 fraktur 实数和虚数符号设置为标准\mathrm{Re}\mathrm{Im}。我正在尝试以标准和推荐的方式重新定义它们

\let\Re\relax \DeclareMathOperator*{\Re}{\mathrm{Re}}
\let\Im\relax \DeclareMathOperator*{\Im}{\mathrm{Im}}

问题是我仍然得到了 fraktur 字符。在设计/使用自定义包时,是否有任何原因导致上述代码无法执行?例如,另一个包是否会重置我正在尝试执行的操作?

梅威瑟:

\documentclass[10pt,leqno]{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\let\Re\relax \DeclareMathOperator\Re{\mathrm{Re}}
\let\Im\relax \DeclareMathOperator\Im{\mathrm{Im}}
\begin{document}
  \begin{equation*}
    \Im [x + \i] + \Re[y + \i]
  \end{equation*}
\end{document}

答案1

正如我在你发布 MWE 之前所猜测的那样,这是由于unicode-math延迟了它的定义。你只需要延迟你的定义。我还使用了inot \i,因为\i在数学模式下它是无效的(并且是一种不寻常的符号,\imath是数学版本,如果你真的需要它的话)

\documentclass[10pt,leqno]{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\AtBeginDocument{%
\let\Re\relax \DeclareMathOperator\Re{\mathrm{Re}}%
\let\Im\relax \DeclareMathOperator\Im{\mathrm{Im}}%
}
\begin{document}
  \begin{equation*}
    \Im [x + i] + \Re[y + i]
  \end{equation*}
\end{document}

相关内容