我想定义一个\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}