![如何使用可选参数嵌套命令?](https://linux22.com/image/332106/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%8F%AF%E9%80%89%E5%8F%82%E6%95%B0%E5%B5%8C%E5%A5%97%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我在制作可以嵌套的规范化器命令时遇到了问题。这是我目前的代码:
\documentclass{article}
\newcommand{\nrml}[2][]{N_{#1}(#2)}
\begin{document}
$\nrml[\nrml{H}]{J}$
\end{document}
它工作正常,但是当我尝试时,$\nrml[\nrml[G]{H}]{J}$
我收到一堆错误代码,第一个是“ \nrml 的参数有一个额外的 }。”我该如何解决这个问题?
编辑:最初发布的代码不正确,已修复。
编辑2:它看起来像是$\nrml[{\nrml[G]{H}}]{J}$
我想做的事情,但我需要用大括号将已经用方括号表示的参数括起来,这似乎很荒谬,而这是我想避免的事情。
答案1
答案2
将外部可选参数括在括号中。问题在于 LaTeX 处理可选参数的方式(请参阅Bug?LaTeX 错误解析嵌套的可选参数)。
\documentclass{article}
\newcommand{\nrml}[2][]{N_{#1}(#2)}
\begin{document}
$\nrml[\nrml{H}]{J}$
$\nrml[{\nrml[G]{H}}]{J}$
\end{document}