In meiner Präambel steht:
\newcommand{\myvecb}[1]{\vb{#1}}
Angenommen, ich verwende in einem mathematischen Kontext:
\myvecb{F}_y
während ich in einem anderen habe:
\myvecb{F_T}
Mein Problem
Mir ist aufgefallen, dass ich in Zukunft möglicherweise alles \myvecb{F}_y
in ändern möchte \myvecb{F_y}
(oder in einem anderen Kontext vielleicht umgekehrt). Anstatt alles manuell zu machen (weil ein einfaches Ersetzen durch reguläre Ausdrücke aus irgendeinem Grund zu kompliziert sein kann), ist es möglich, die \myvecb
Befehlsdefinition so zu definieren, dass ich das angegebene Problem innerhalb der Definition manipulieren kann?
Antwort1
Dies prüft, ob ein _
folgt. In diesem Fall greift es auf das Folgende zu _{..}
und fügt es als Index darin ein \vb{..}
.
\makeatletter
\newcommand*\myvecb[1]{\@ifnextchar_{\myvecbaux{#1}}{\vb{#1}}}
\def\myvecbaux#1_#2{\vb{#1_{#2}}}
\makeatother