두 개의 사용자 정의 명령 결합

두 개의 사용자 정의 명령 결합

보고서를 입력할 때 문제가 발생했습니다. 이 문제를 해결하는 방법을 모르겠습니다. 문제는 다음과 같습니다.

다음과 같이 정의된 두 가지 사용자 정의 명령이 있습니다.

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

관련 정보