В преамбуле я пишу:
\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