为什么 \det 的上标表现不同?

为什么 \det 的上标表现不同?

内置命令\det只是以罗马字体打印“det”。但是,显示数学中的上标(例如\[\det^N\])直接出现在上方并居中,而不是出现在右上角。我从未见过任何其他类型的上标有这种行为。

为什么\det会有这种特殊行为?我该如何关闭它?

最小工作示例:

\documentclass{article}
\begin{document}
\[\det^2\]
\end{document}

答案1

latex.ltx

\def\log{\mathop{\operator@font log}\nolimits}
\def\lim{\mathop{\operator@font lim}}
\def\det{\mathop{\operator@font det}}

\det定义方式与 相同\lim,但您想要 的行为。这可以通过附加到 的定义来\log实现,例如:\nolimits\det

\documentclass{article}
\usepackage{etoolbox}
\begin{document}
\[ \log_0^1 \textstyle \log_0^1 \]
\[ \lim_0^1 \textstyle \lim_0^1 \]
\[ \det_0^1 \textstyle \det_0^1 \]

\apptocmd{\det}{\nolimits}{}{\errmessage{Could not patch \string\det.}}

\[ \det_0^1 \textstyle \det_0^1 \]
\end{document}

结果

包裹amsmath

下面的包amsmath定义命令如下:

\def\det{\qopname\relax m{det}}
\def\lim{\qopname\relax m{lim}}
\def\log{\qopname\relax o{log}}

因此,\det可以重新定义:

documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ \log_0^1 \textstyle \log_0^1 \]
\[ \lim_0^1 \textstyle \lim_0^1 \]
\[ \det_0^1 \textstyle \det_0^1 \]

\renewcommand*{\det}{\qopname\relax o{det}}

\[ \det_0^1 \textstyle \det_0^1 \]
\end{document}

结果 amsmath

官方的方法是使用\DeclareMathOperator。它仅限于序言:

\usepackage{amsmath}
\let\det\relax % "Undefine" \det
\DeclareMathOperator{\det}{det}

相关内容