¿Macro toma el argumento sin envolverlo entre corchetes?

¿Macro toma el argumento sin envolverlo entre corchetes?

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

salida del código de ejemplo

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}

salida del código de ejemplo

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.

información relacionada