使用 \ifblank 检查多个参数

使用 \ifblank 检查多个参数

我一直在阅读 mathtools 的文档,它们提供了一个示例,使用 etoolbox 声明了一个成对的分隔符,如果该分隔符为空白,则具有默认行为:

\DeclarePairedDelimiterX\norm[1]\lVert\rVert{
    \ifblank{#1}{\:\cdot\:}{#1}
}

然后\norm{x}输入

乳胶标准图像

但打字\norm{}

使用 cdot 的 latex 规范的第二幅图像

这非常方便。

我想知道这如何适用于具有多个参数的情况。例如,假设我有一个简单的例子,例如:

\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命令,这样您以后可以改变主意如何表示空参数。

在此处输入图片描述

相关内容