![Combinando dois comandos personalizados](https://rvso.com/image/286990/Combinando%20dois%20comandos%20personalizados.png)
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}
Eu removi \ensuremath
porque acredito que você não ganha nada usando \lie
in 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}
Você deve colocar o argumento opcional entre colchetes:[{\slr[2]}]