我正在编写一个自定义包,并希望将 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
延迟了它的定义。你只需要延迟你的定义。我还使用了i
not \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}