Quiero crear una macro que no requiera llaves para aceptar un argumento. Inventemos un ejemplo. Digamos que quiero una macro que acepte un argumento opcional f
y un argumento x
:
\dd[f]{x}
Y que equivale a escribir:
\frac{\mathrm{d} f }{\mathrm{d} x }
La pregunta es, ¿puedo crear una macro tal que no tenga que escribir los corchetes, pero que aun así acepte el argumento?
Sería muy conveniente si pudiera evitar el uso de corchetes. Algo como esto sería excelente:
\dd f,x
¿Hay alguna forma de evitar escribir los corchetes?
Respuesta1
Este tipo de macro es una construcción tex simple y se denomina "macro delimitada". Se desaconseja su uso en látex, al menos en parte porque es fácil cometer errores.
aquí hay un ejemplo que hace lo que pides:
\documentclass{article}
\def\dd #1,#2 {\frac{\mathrm{d} #1 }{\mathrm{d} #2 }}
\begin{document}
\thispagestyle{empty}
$\dd f,x $
\end{document}
observe que si omite el espacio después del segundo argumento en la entrada
$\dd f,x$
obtendrás un error:
! Missing } inserted.
<inserted text>
}
l.5 $\dd f,x$
sin embargo, no tener un "cerrador" definitivo limita el reconocimiento del argumento a un único token de entrada, lo que podría ser muy limitante, aunque no para este ejemplo.
editar: En respuesta a una solicitud de una macro delimitada similar en la que los argumentos puedan ser opcionales, aquí está la misma, modificada para ese propósito. en este caso particular, todo lo que se requiere es que cada argumento esté claramente delimitado.
\documentclass{article}
\def\dd #1,#2;{\frac{\mathrm{d} #1 }{\mathrm{d} #2 }}
\begin{document}
\[\dd f,x; \quad \dd ,x; \quad \dd ,; \]
\end{document}
en este caso, donde es probable que cada argumento sea sólo una letra o secuencia de control (p. ej. \phi
), la omisión de un argumento simplemente lo omite del resultado. (simplemente no escriba un punto en lugar de una coma, como hice yo al configurar el ejemplo).
en situaciones más complicadas, donde los argumentos serían cadenas de varios caracteres, la posible presencia de puntuación en un argumento significa que la elección de los delimitadores debe hacerse con mucho más cuidado; en tales casos, también se podrían encerrar los argumentos afectados entre llaves para que aparezcan como un único tokan para (la)tex, como se sugiere en un comentario de @SeanAllred.
y, si esta macro se va a utilizar en texto, en lugar de en matemáticas, seamuyCuidado con los espacios en la expansión.