Usar el comando de argumento como argumento sin corchetes

Usar el comando de argumento como argumento sin corchetes

No me sorprendería que me hubieran preguntado esto antes, pero mis búsquedas no arrojaron ningún resultado. Tampoco me sorprendería que esto no fuera posible sin realizar algún hackeo realmente peligroso del kernel TeX o algo así. Pero permítanme preguntar de todos modos.

Utilizo el siguiente código como atajo para letras en negrita en modo matemático como se recomiendaaquí:

\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}

Esto es agradable y útil en la mayoría de los contextos, pero a veces resulta tedioso escribir \*vdentro del argumento de otros comandos. Por ejemplo, es posible que desee escribir la derivada de \*vas \dot{\*v}. Me pregunto si hay alguna manera de evitar tener que escribir el {}s. Concretamente lo que quiero es redefinir el comando \*para que

$\dot\*v$

o incluso

$\dot\*{longvector}$

se puede analizar correctamente.

Respuesta1

Quizás esto sea suficiente para tus necesidades.

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

Tenga en cuenta los corchetes adicionales alrededor del cuerpo de su \*definición de macro: esto es para que la expansión de \*parezca un argumento único para \olddot:

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

información relacionada