我在序言中说过:
\newcommand{\myvecb}[1]{\vb{#1}}
假设在某些数学环境中我使用:
\myvecb{F}_y
而在其他一些我有:
\myvecb{F_T}
我的问题
我注意到,将来我可能想要将所有内容更改\myvecb{F}_y
为\myvecb{F_y}
(或者,在其他情况下,可能反之亦然)。 是否可以定义\myvecb
命令定义,以便我可以在定义中操纵所述问题,而不是手动执行所有操作(因为简单的正则表达式替换可能出于某种原因过于复杂)?
答案1
这将检查 a 是否_
在后面,如果是,则抓取后面的内容_{..}
并将其作为下标放在里面\vb{..}
。
\makeatletter
\newcommand*\myvecb[1]{\@ifnextchar_{\myvecbaux{#1}}{\vb{#1}}}
\def\myvecbaux#1_#2{\vb{#1_{#2}}}
\makeatother