是否有可能使最后两种情况起作用,而不需要将命令调用括在花括号中?
\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]