我正在努力解决一个命令,但它并没有按照我的预期执行。这是我的代码
\newcommand{\expectation}[2][]{\mathrm{E}_{#1}\left[#2\right]}
\begin{document}
I get $\expectation{A}{B}$, but I expect $\mathrm{E}_{A}\left[B\right]$\\
Optional arguments, I get $\expectation{B}$, and I expect $\mathrm{E}\left[B\right]$
\end{document}
这对我来说没什么意义。如果我跳过 newcommand 并直接插入我想要的内容,一切看起来都很好。但带有两个输入的 newcommand 版本做了一些不同的事情。我错过了什么?
(更糟糕的是:我确信昨天一切都按预期进行。但今天却不再如此了)
编辑:原来这是由于 Texstudio 中修复了一个错误。可选参数必须用括号调用
答案1
我会使用该xparse
包,因为它使可选参数的默认行为保持非常易于管理。
\documentclass[10pt]{article}
\usepackage{xparse}
%\ExplSyntaxOn
\DeclareDocumentCommand{\expectation}{ O{} m }{%
$\mathrm{E}_{#1}\left[#2\right]$%
}
%\ExplSyntaxOff
% choose a different way of producing subscripts if you need ExplSyntax
\begin{document}
I get \expectation[A]{B}, but I expect $\mathrm{E}_{A}\left[B\right]$\\
Optional arguments, I get \expectation{B}, and I expect $\mathrm{E}\left[B\right]$
\end{document}