内置命令\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}
官方的方法是使用\DeclareMathOperator
。它仅限于序言:
\usepackage{amsmath}
\let\det\relax % "Undefine" \det
\DeclareMathOperator{\det}{det}