Comando à prova de futuro

Comando à prova de futuro

No meu preâmbulo tenho:

\newcommand{\myvecb}[1]{\vb{#1}}

Suponha que em algum contexto matemático eu use:

\myvecb{F}_y

enquanto em alguns outros eu tenho:

\myvecb{F_T}

Meu problema

Percebi que no futuro talvez queira mudar tudo \myvecb{F}_ypara \myvecb{F_y}(ou, em algum outro contexto, talvez vice-versa). Em vez de fazer tudo manualmente (porque uma simples substituição de regex pode ser muito complicada por algum motivo), é possível definir a \myvecbdefinição de comando de forma que eu possa manipular o problema declarado dentro da definição?

Responder1

Isso verifica se a _está seguindo e, nesse caso, pega o seguinte _{..}e o coloca como um subscrito dentro de \vb{..}.

\makeatletter
\newcommand*\myvecb[1]{\@ifnextchar_{\myvecbaux{#1}}{\vb{#1}‌​}}
\def\myvecbaux#1_#2{\vb{#1_{#2}}}
\makeatother

informação relacionada