我正在使用包\DeclarePairedDelimiterXPP
中的命令mathtools
来声明一些新的分隔符,可以轻松打开和关闭它们的缩放。具体来说,我想声明命令\evalat
,它表示在给定点处对表达式的求值:例如$\left.\frac{x}{2}\right|_{x=1}$
。
正如我之前所说,我希望它具有\DeclarePairedDelimiter
-type 命令提供的缩放选项。这意味着\evalat{\frac{x}{2}}{x=1}
在右侧给出一条非缩放的垂直线,\evalat*{\frac{x}{2}}{x=1}
在右侧给出一条缩放的垂直线,并\evalat[\size]{\frac{x}{2}}{x=1}
给出一个大小为 的垂直条\size
。
我尝试了以下定义:
\DeclarePairedDelimiterXPP{\evalat}[2]{}{.}{|}{_{#2}}{#1}
和
\DeclarePairedDelimiterXPP{\evalat}[2]{}{\left.}{\right|}{_{#2}}{#1}
第一个版本在带星号(自动缩放)的版本中可以正常工作。但是,其无星号版本会显示$.\frac{x}{2}|_{x=1}$
,并且点仍显示在左侧。第二个版本始终缩放分隔符,无论是带星号的版本还是无星号的版本。
我理解为什么这些命令会如此表现,但我不知道如何获得我想要的行为?
附言:这对另一个问题的回答可能是一个后备解决方案,但我宁愿将其_{x=1}
作为命令的参数。
答案1
直接定义命令更简单:
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\NewDocumentCommand{\evalat}{sO{}mm}{%
\IfBooleanTF{#1}
{\kern-\nulldelimiterspace\left.#3\right|_{#4}}
{#3#2|_{#4}}%
}
\begin{document}
\[
\evalat{x^2}{x=1}=1
\qquad
\evalat*{\frac{x^2}{3}}{x=6}=12
\qquad
\evalat[\Big]{\frac{x^2}{3}}{x=6}=12
\]
\end{document}