Команда, ориентированная на будущее

Команда, ориентированная на будущее

В преамбуле я пишу:

\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

Связанный контент