Verwenden des Argumentbefehls als Argument ohne Klammern

Verwenden des Argumentbefehls als Argument ohne Klammern

Es würde mich nicht überraschen, wenn diese Frage schon einmal gestellt wurde, aber meine Suche hat keine Ergebnisse geliefert. Es würde mich auch nicht überraschen, wenn dies nicht möglich wäre, ohne den TeX-Kernel oder etwas in gefährlicher Weise zu hacken. Aber erlauben Sie mir, trotzdem zu fragen.

Ich verwende den folgenden Code wie empfohlen als Abkürzung für fette Buchstaben im MathematikmodusHier:

\documentclass{memoir}
\usepackage{amsmath,bm,amsfonts}

\def\*#1{\bm{\mathrm{#1}}}

\begin{document}
Let $\*v$ be a vector in $\mathbb R^n$ with $A\*v = \*v$.
\end{document}

Dies ist in den meisten Kontexten schön und praktisch, aber manchmal wird es mühsam, \*vin die Argumente anderer Befehle zu schreiben. Beispielsweise möchte ich die Ableitung von \*vals schreiben \dot{\*v}. Ich frage mich, ob es eine Möglichkeit gibt, das Schreiben des {}s zu vermeiden. Konkret möchte ich den Befehl \*so neu definieren, dass

$\dot\*v$

oder auch

$\dot\*{longvector}$

korrekt analysiert werden können.

Antwort1

Vielleicht reicht das für deine Bedürfnisse

\def\*#1{{\bm{\mathrm{#1}}}}
\let\olddot\dot
\def\dot{\expandafter\olddot}

Beachten Sie die zusätzlichen Klammern um den Hauptteil Ihrer \*Makrodefinition: Dadurch wird die Erweiterung von \*wie ein einzelnes Argument aussehen \olddot:

\dot\*v -> \expandafter\olddot\*v -> \olddot{\bm{\mathrm{v}}}

verwandte Informationen