在 `\DeclarePairedDelimiter` 中包含空分隔符

在 `\DeclarePairedDelimiter` 中包含空分隔符

我想定义一个\restrict{f}{X}能够按照 选项的样式调整大小的mathtools限制运算符\DeclarePairedDelimiter。例如:

  • \restrict*{f}{X}应该自动调整大小
  • \restrict[\Big]{f}{X}应该提供大的垂直条,无论是f什么
  • &C。

我当前拥有的 MWE 抛出一个错误:

\documentclass{article}
\usepackage{mathtools}
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}

\DeclarePairedDelimiterXPP{\restrict}[2]{}{}\rvert
        {\IfNoValueTF{#2}{}{_{#2}}}
        {#1}

\begin{document}
\begin{equation}
        \restrict{f}{X}
        = \restrict*{\frac{f}{1}}{X}
\end{equation}
\end{document}

运行此程序时,我得到了适当的输出,但出现错误:

Missing delimiter (. inserted).

这是有道理的,因为我提供的左分隔符是空标记{}。但是,如果我将其替换为{.},那么对于无星号 \restrict,排版中出现了一个句号,这是我所不希望的。

有没有办法告诉我\DeclarePairedDelimiter我想要一个空的分隔符,或者我必须采取错误抑制的路线?

答案1

不要使用\DeclarePairedDelimiter

\documentclass{article}
\usepackage{mathtools}
\usepackage{mleftright}

\NewDocumentCommand{\restrict}{sO{}mm}{%
  \IfBooleanTF{#1}{% star
    \mleft.\kern-\nulldelimiterspace
    #3
    \mright|%
  }{% no star
    #3#2|%
  }%
  % the subscript
  _{#4}%
}

\begin{document}
\begin{equation}
  \restrict{f}{X} = \restrict*{\frac{f}{1}}{X} = \restrict[\Big]{f}{X}
\end{equation}
\end{document}

在此处输入图片描述

相关内容