将新命令视为符号

将新命令视为符号

我已经定义了一个\newcommand

\newcommand{\pt}{\ensuremath{p_{T}}\xspace}

我想写

在此处输入图片描述

为此我尝试:

\begin{equation}
     \pt_{,a}
\end{equation}

这种方法的错误在于:

! Double subscript.

如果我尝试

\begin{equation}
    {\pt}_{,a}
\end{equation}

结果不符合预期:

在此处输入图片描述

是否可以将 的结果\pt视为符号以添加下标,或者是否存在其他不需要将 的内容克隆\pt到 中的解决方案equation

答案1

使用“修饰”参数类型很容易xparse

\documentclass{article}
\usepackage{xparse}

\NewDocumentCommand{\pt}{e{_}}{%
  \IfNoValueTF{#1}{p^{}_{T}}{p^{}_{T,#1}}%
}

\begin{document}

$\pt$

$\pt_{a}$

\end{document}

我省略了\ensuremath\xspace当然;这样的命令是为了数学,因此没有理由允许它在数学公式之外使用。这避免了与之相关的所有怪癖\xspace(有时有效,有时无效)。

在此处输入图片描述

在这个特殊的情况下,你可能需要将逗号稍微塞进 T 中:

\NewDocumentCommand{\pt}{e{_}}{%
  \IfNoValueTF{#1}{p^{}_{T}}{p^{}_{T,#1}}%
}

在此处输入图片描述

使用“经典”方法也可以获得与第二种情况相同的输出:

\makeatletter
\newcommand{\pt}{\@ifnextchar_{\pt@plus}{p^{}_{T}}}
\def\pt@plus_#1{p^{}_{T\!,#1}}
\makeatother

答案2

我能想到的 MWE 最简单的变体是

\newcommand*{\pt}[1]{\ensuremath{p_{T,#1}}\xspace}

然后你可以调用

\pt{a}

相关内容