数学运算符和其下标之间的正确空格是多少?

数学运算符和其下标之间的正确空格是多少?

我正在尝试为数学运算符定义一个命令\mathcal P_\mathrm{ext}。因此,我想到了一些候选者:

  • \mathcal P_\mathrm{ext}(H)
  • \operatorname{\mathcal P}_\mathrm{ext}(H)
  • \DeclareMathOperator{\Pm}{\mathcal P}\Pm_\mathrm{ext}(H)

在此处输入图片描述

有一些不同。当我使用类似这样的命令时,我没有想到\mathcal P和下标之间会有空格\operatorname。我想知道正确的是。或者我应该把下标放在?里面\operatorname(但这样使用似乎很奇怪……)

以下是 MWE:

\documentclass{article}
\usepackage{amsmath, amssymb}
\DeclareMathOperator{\Pm}{\mathcal P}

\begin{document}
\begin{align*}
    &\mathcal P_\mathrm{ext}(H) \\
    &\operatorname{\mathcal P}_\mathrm{ext}(H) \\
    &\Pm_\mathrm{ext}(H)
\end{align*}
\end{document}

答案1

在此处输入图片描述

\documentclass[fleqn]{article}
\usepackage{amsmath, amssymb}
\DeclareMathOperator{\Pm}{\mathcal{P}}
\showoutput
\begin{document}
\begin{align*}
    &\mathcal{P}_{\mathrm{ext}}(H) \\
    &\operatorname{\mathcal P}_{\mathrm{ext}}(H) \\
    &\Pm_{\mathrm{ext}}(H)\\
    &\mathop{\mathcal{P}_{\mathrm{ext}}}(H) 
\end{align*}


a $\log x$


a ${}\log x$

\end{document}

这个具体的例子让答案比原本更棘手。我认为最合乎逻辑的标记应该是,\mathop{\mathcal{P}_{\mathrm{ext}}}因为您希望下标术语本身充当\mathop

但是,您在此处看到不同间距的原因是因为您在对齐的右侧,其中隐式地将表达式作为前缀,{}因此您将从中获得一个很窄的空格,\mathop以将其与(不可见的)前一个术语分开。所以它就像\log我在此处的示例中添加的第二个示例/那么为什么在绝大多数情况下,\mathop的间距是正确的,这里的额外空间可能不正确,应该通过或使用不提供的形式\log将其删除,例如\!\mathop{\Pm}

答案2

如果使用\operatorname{\mathcal{P}}_{\mathrm{ext}},TeX 将无法调整下标的字距。

如果你只需要“ext”作为下标,你可以定义

\DeclareMathOperator{\Pme}{\mathcal{P}_{ext}}

如果下标是可变的,

\newcommand{\Pm}[1]{\operatorname{\mathcal{P}_{#1}}}

并将其称为\Pm{ext}

完整示例:

\documentclass{article}
\usepackage{amsmath}

\DeclareMathOperator{\Pme}{\mathcal{P}_{ext}}

\newcommand{\Pm}[1]{\operatorname{\mathcal{P}_{#1}}}

\begin{document}

$\Pme(H)$

$\Pm{ext}(H)$

\end{document}

在此处输入图片描述

如果您更喜欢以下_符号:

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

\NewDocumentCommand{\Pm}{e{_}}{%
  \operatorname{\mathcal{P}\IfValueT{#1}{_{#1}}}%
}

\begin{document}

$\Pm_{ext}(H)$

\end{document}

在此处输入图片描述

请注意,在上述任何情况下,您只需输入ext,因为它将被排版为的一部分\operatorname\mathrm是不需要的。

相关内容