Si, in effetti è meglio una cosa più manuale. Va beh, l’ho preso come un esercizio.
In generale è meglio evitare di appesantire le macro con argomenti il più delle volte inutili; si rischia, fra l’altro, di non ricordarsi più perché mai ci vanno!
Un collega aveva la passione di definire decine di abbreviazioni per locuzioni ripetute come \sv per “spazio vettoriale” o \svv per “spazi vettoriali”, \svdf per “spazio vettoriale di dimensione finita” e roba simile. Può sembrare che questo permetta un risparmio, ma ha il grosso difetto di rendere illeggibile il documento .tex; e poi, a distanza di tempo, non è facile ricordarsi all’istante il significato delle abbreviazioni meno frequenti.
Anche l’automatizzazione delle etichette è una pratica da evitare. Può sembrare conveniente definirsi qualcosa come
`\newtheorem{teorema}{Teorema}
\newcommand{teo}[2]{\begin{teorema}\label{#1}#2\end{teorema}}`
e poi scrivere
`\teo{pitagora}{La somma dei quadrati dei cateti è uguale al quadrato
dell'ipotenusa.}`
ma riflettendoci meglio si scopre che questo metodo ha vari difetti. Per esempio, rende impossibile fare ricerche globali delle etichette usate, cosa che invece è possibile se ogni etichetta è argomento esplicito di un comando \label. Inoltre la struttura \begin-\end marca meglio il file .tex, rendendo più visibili le varie strutture logiche. Se poi l’enunciato del teorema è molto lungo, si rischia di non trovare più la graffa di chiusura dell’argomento.
Altro esempio da un altro collega:
`\newcommand{\Hom}[3]{\operatorname{Hom}_{#1}(#2,#3)}`
Io preferisco di gran lunga
`\newcommand{\Hom}{\operatorname{Hom}}`
(abbreviabile in \DeclareMathOperator{\Hom}{Hom}) e scrivere $\Hom_{A}(M,N)$ piuttosto che, come il collega, $\Hom AMN$. La marcatura dell’input è molto più evidente nel primo caso, secondo me, ed evita roba come
`\Hom{S^{-1}A}{S^{-1}M}{S^{-1}N}`
che invece diventerebbe
`\Hom_{S^{-1}A}(S^{-1}M,S^{-1}N)`
rispecchiando meglio l’output.
Ne parlo qui. Magari non ti piacerà lo stile “professorale” :), ma forse qualcosa di buono lo trovi.
Ciao
Enrico