自动在上标周围添加括号

自动在上标周围添加括号

在我的文档中,我必须输入包含上标字母的表达式,并用括号括起来,例如

a^{(k,i)}, b^{(k,i)}, \gamma^{(k,i)}

过了一段时间,每次输入那些括号‘(’和‘)’对我来说变得非常烦人。

我定义了新变量

\newcommand{\ca}[2]{a^{(#1, #2)}}
\newcommand{\cb}[2]{b^{(#1, #2)}}
\newcommand{\cgamma}[2]{\gamma^{(#1, #2)}}

并使用\ca k i\cgamma k i。这确实让我更容易输入方程式,但它缺乏灵活性。首先,我必须为每个字母定义一个新变量。此外,如果我想使用下标并输入\c_3{k,i},那么它就坏了。

我的问题是,实现此功能的正确方法是什么?

编辑:在网上搜索了一段时间后,我找到了一个解决方案

\documentclass{article}
\usepackage{amsmath}
\usepackage{etoolbox}

\makeatletter
\newcommand{\removeabs}[1]{%
  \ifcat\relax\noexpand#1%
    \expandafter\expandafter\expandafter\@gobble\expandafter\string
  \fi
  #1%
}
\makeatother

\newcommand{\doublesupscr}[1]{\expandafter\newcommand\csname c\removeabs{#1}\endcsname[2]{#1^{(##1, ##2)}}}

\newcommand{\singlesupscr}[1]{\expandafter\newcommand\csname c\removeabs{#1}\endcsname[1]{#1^{(##1)}}}


\forcsvlist{\doublesupscr}{a,b,c}
\forcsvlist{\singlesupscr}{\eta, \gamma}


\begin{document}
\begin{equation*}
    \ca k i, \cb k i, \cc k i, \ceta i, \cgamma i
\end{equation*}
\end{document}

这将产生以下输出 代码输出

但是,我想输入类似的内容\ca_3 k i并仍然获得正确的输出。 有没有办法让 newcommand 忽略下标作为参数?

答案1

可能是这样的吗?

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

\NewDocumentCommand{\pv}{m e{_} m}{%
  #1\IfValueT{#2}{_{#2}}^{(#3)}%
}

\begin{document}

$\pv{a}_3{k,i}+\pv{b}{k}+\pv{c}{k,l,m}_4$

\end{document}

在此处输入图片描述

答案2

这是一个简单的解决方案:

\newcommand{\ps}[1]{^{(#1)}}   % parenthesized superscript

现在您可以编写类似的内容$a_3\ps{k,i}$,它类似于不带括号的版本$a_3^{k,i}$

相关内容