Combinando dos comandos personalizados

Combinando dos comandos personalizados

Me encontré con un problema al escribir mi informe. No sé cómo solucionar esto. El problema es el siguiente:

Tengo dos comandos personalizados definidos así:

\newcommand{\slr}[1][n]{\ensuremath{{\bf SL}(#1,\mathbb{R})}}

\newcommand{\lie}[1][G]{\ensuremath{{\bf L}(#1)}}

De modo que el primer comando da una salida como ${\bf SL}(n,\mathbb{R})$y el segundo comando da una salida como ${\bf L}(G)$. Aquí $n$y $G$son respectivamente los argumentos predeterminados.

Ahora, cuando uso estos dos comandos juntos, espero obtener

$${\bf L}({\bf SL}(2,\mathbb{R}))$$

Sin embargo, por alguna razón lo que obtengo es

$$ {\bf L}({\bf SL}(2),\mathbb{R})$$

¿Alguna idea de lo que está pasando aquí?

Respuesta1

El problema \lie[\slr[2]]es que el argumento opcional to \liese considera \slr[2. Puedes resolver el problema con xparse:

\documentclass{article}
\usepackage{amsmath,amssymb,xparse}

\DeclareMathOperator{\slrop}{\mathbf{SL}}
\DeclareMathOperator{\lieop}{\mathbf{L}}

\NewDocumentCommand{\slr}{O{n}}{\slrop(#1,\mathbb{R})}
\NewDocumentCommand{\lie}{O{G}}{\lieop(#1)}

\begin{document}
Here it is: $\lie[\slr]$

With optional argument: $\lie[\slr[2]]$
\end{document}

ingrese la descripción de la imagen aquí

Lo eliminé \ensuremathporque creo que no se gana nada al usarlo \lieen el texto en lugar de $\lie$; por el contrario, creo firmemente que la última forma es mucho mejor, porque las matemáticas siempre se tratan como matemáticas.

Respuesta2

No puedo verlo:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\newcommand\slr[1][n]{\ensuremath{\mathbf{SL}(#1,\mathbb{R})}}
\newcommand\lie[1][G]{\ensuremath{\mathbf{L}}(#1)}

\begin{document}

\[ {\bf L}({\bf SL}(2,\mathbb{R})) \]

\[ \lie[{\slr[2]}] \]

\[ \slr[\lie] \]

\end{document}

ingrese la descripción de la imagen aquí

Tienes que poner el argumento opcional entre llaves:[{\slr[2]}]

información relacionada