具有可变数量参数且在下标中使用的新命令

具有可变数量参数且在下标中使用的新命令

是否有可能使最后两种情况起作用,而不需要将命令调用括在花括号中?

\documentclass{article}

\usepackage{amsmath}
\usepackage{amssymb}

\makeatletter
\def\command{\@ifnextchar\bgroup{\commandOne}{\commandNone}}
\def\commandOne#1{{\boldsymbol#1}}
\def\commandNone{{\boldsymbol\alpha}}
\makeatother

\begin{document}
  \title{Cases}
  \maketitle

  \section*{Case 1}
  $\command$

  \section*{Case 2}
  $\command{\beta}$

  \section*{Case 3}
  $A_{\command}$ % <--- WANTED: $A_\command$

  \section*{Case 4}
  $A_{\command{\beta}}$ % <--- WANTED: $A_\command{\beta}$
\end{document}

如果我删除花括号,会出现以下错误:

! Missing { inserted.

谢谢你!

问候,伊凡

答案1

\makeatletter
\def\command{\bgroup\@ifnextchar\bgroup{\commandOne}{\commandNone}}
\def\commandOne#1{\boldsymbol{#1}\egroup}
\def\commandNone{\boldsymbol\alpha}\egroup}
\makeatother

但不要这样做,最好将括号明确化,也不要让可选参数采用{分隔宏。LaTeX 付出了很多努力来尝试为命令提供一致的语法,并且可选参数应该被[]分隔。

所以

\newcommand\command[1][\alpha]{\boldsymbol{#1}}

\command[\beta]

相关内容