面向未来的命令

面向未来的命令

我在序言中说过:

\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

相关内容