我一直在阅读 mathtools 的文档,它们提供了一个示例,使用 etoolbox 声明了一个成对的分隔符,如果该分隔符为空白,则具有默认行为:
\DeclarePairedDelimiterX\norm[1]\lVert\rVert{
\ifblank{#1}{\:\cdot\:}{#1}
}
然后\norm{x}
输入
但打字\norm{}
却
这非常方便。
我想知道这如何适用于具有多个参数的情况。例如,假设我有一个简单的例子,例如:
\DeclarePairedDelimiterX{\inner}[2]{\langle}{\rangle}{#1,#2}
有没有比检查所有四种缺失参数情况更好的方法?或者有更好的方法吗?
编辑:抱歉,我忘了添加我目前的方法。目前,我有
\DeclarePairedDelimiterX{\inner}[2]{\langle}{\rangle}{
\ifblank{#1}{\:\cdot\:}{#1},
\ifblank{#2}{\:\cdot\:}{#2}
}
我不确定这是否正确,但我的经验不足,不知道还有什么更好的方法。因此,我希望了解更好的方法。
答案1
这是正确的,但是你可以省去etoolbox
,因为当前的 LaTeX 内核具有\IfBlankTF
相同的用途。
\documentclass{article}
\usepackage{mathtools}
\newcommand{\blank}{\:{\cdot}\:}
\DeclarePairedDelimiterX{\inner}[2]{\langle}{\rangle}{%
\IfBlankTF{#1}{\blank}{#1},\IfBlankTF{#2}{\blank}{#2}%
}
\begin{document}
\[
\inner{}{}+\inner{a}{}+\inner{}{b}+\inner{a}{b}
\]
\end{document}
我建议使用抽象\blank
命令,这样您以后可以改变主意如何表示空参数。