![Kombinieren zweier benutzerdefinierter Befehle](https://rvso.com/image/286990/Kombinieren%20zweier%20benutzerdefinierter%20Befehle.png)
Beim Eintippen meines Berichts ist mir ein Problem aufgefallen. Ich weiß nicht, wie ich es beheben kann. Das Problem ist folgendes:
Ich habe zwei benutzerdefinierte Befehle wie folgt definiert:
\newcommand{\slr}[1][n]{\ensuremath{{\bf SL}(#1,\mathbb{R})}}
\newcommand{\lie}[1][G]{\ensuremath{{\bf L}(#1)}}
Der erste Befehl gibt also eine Ausgabe wie aus ${\bf SL}(n,\mathbb{R})$
und der zweite Befehl eine Ausgabe wie ${\bf L}(G)$
. Hier $n$
und $G$
sind jeweils die Standardargumente.
Wenn ich diese beiden Befehle nun zusammen verwende, hoffe ich,
$${\bf L}({\bf SL}(2,\mathbb{R}))$$
Aus irgendeinem Grund bekomme ich jedoch
$$ {\bf L}({\bf SL}(2),\mathbb{R})$$
Irgendwelche Ideen, was hier los ist?
Antwort1
Das Problem in \lie[\slr[2]]
besteht darin, dass das optionale Argument als \lie
angenommen wird \slr[2
. Sie können das Problem mit lösen 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}
Ich habe es entfernt \ensuremath
, da ich glaube, dass es Ihnen nichts bringt, \lie
im Text anstelle von zu verwenden $\lie$
. Im Gegenteil, ich bin der festen Überzeugung, dass die letztere Form viel besser ist, da Mathematik immer als Mathematik behandelt wird.
Antwort2
Ich kann es nicht sehen:
\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}
Das optionale Argument müssen Sie in Klammern setzen:[{\slr[2]}]