![Объединение двух пользовательских команд](https://rvso.com/image/286990/%D0%9E%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B4%D0%B2%D1%83%D1%85%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D1%85%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4.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]}]