Combinando dois comandos personalizados

Combinando dois comandos personalizados

Me deparei com um problema ao digitar meu relatório. Eu não sei como consertar isso. O problema é o seguinte:

Eu tenho dois comandos personalizados definidos assim:

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

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

Para que o primeiro comando forneça uma saída semelhante ${\bf SL}(n,\mathbb{R})$e o segundo comando forneça uma saída semelhante ${\bf L}(G)$. Aqui $n$e $G$estão respectivamente os argumentos padrão.

Agora, quando uso esses dois comandos juntos, espero obter

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

No entanto, por alguma razão, o que estou recebendo é

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

Alguma idéia do que está acontecendo aqui?

Responder1

O problema \lie[\slr[2]]é que o argumento opcional to \lieé considerado \slr[2. Você pode resolver o problema com 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}

insira a descrição da imagem aqui

Eu removi \ensuremathporque acredito que você não ganha nada usando \liein text em vez de $\lie$; pelo contrário, acredito firmemente que a última forma é muito melhor, porque a matemática é sempre tratada como matemática.

Responder2

Eu não consigo ver:

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

insira a descrição da imagem aqui

Você deve colocar o argumento opcional entre colchetes:[{\slr[2]}]

informação relacionada