![組合兩個自訂命令](https://rvso.com/image/286990/%E7%B5%84%E5%90%88%E5%85%A9%E5%80%8B%E8%87%AA%E8%A8%82%E5%91%BD%E4%BB%A4.png)
我在輸入報告時遇到了問題。我不知道如何解決這個問題。問題如下:
我有兩個這樣定義的自訂命令:
\newcommand{\slr}[1][n]{\ensuremath{{\bf SL}(#1,\mathbb{R})}}
\newcommand{\lie}[1][G]{\ensuremath{{\bf L}(#1)}}
因此第一個命令給出類似的輸出${\bf SL}(n,\mathbb{R})$
,第二個命令給出類似的輸出${\bf L}(G)$
。這裡$n$
和$G$
分別是預設參數。
現在,當我一起使用這兩個命令時,我希望得到
$${\bf L}({\bf SL}(2,\mathbb{R}))$$
然而,由於某些原因我得到的是
$$ {\bf L}({\bf SL}(2),\mathbb{R})$$
對這裡發生的事情有什麼想法嗎?
答案1
的問題\lie[\slr[2]]
是 的可選參數\lie
被視為\slr[2
。您可以透過以下方式解決問題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}
我刪除了,\ensuremath
因為我相信您\lie
在文本中使用而不是$\lie$
;不會獲得任何好處。相反,我堅信後一種形式要好得多,因為數學始終被視為數學。
答案2
我看不到:
\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}
您必須將可選參數放入大括號中:[{\slr[2]}]