因此,我一直在尝试制作一个命令来显示我对限制的非常特殊的符号,但我相信其中的部分涉及文本命令,而其他部分涉及数学命令,我认为我已经正确考虑了每一个,但我仍然收到有关参数不在数学模式的错误:
命令:
\usepackage{amssymb}
\usepackage{graphics}
\DeclareRobustCommand{\rest}[1]{\text{\raisebox{-5.8pt}{\scalebox{1}[2.6]{$\upharpoonright$}_{\ensuremath{#1}}}\hspace{-7pt}}}
可以工作,但我仍然收到有关参数中缺少 $ $ 的错误消息(即使我把它们放在那里)。
我希望从该命令获得的结果与我编写的结果相同:
$$\pi\raisebox{-5.8pt}{\scalebox{1}[2.6]{$\upharpoonright$}}_{H}\hspace{-7pt}(a)$$
当我写作时
$$\pi\rest{H}(a)$$
它看起来应该是这样的:
答案1
您不应使用明确的尺寸,因此命令可以在不同的大小和不同的字体下工作。
我还添加了一个*
版本来处理“深层”函数参数的问题。
\documentclass{article}
\usepackage{mathtools,amssymb}
\usepackage{graphicx}
\NewDocumentCommand{\rest}{sm}{%
\vcenter{\hbox{\scalebox{1}[2.6]{$\upharpoonright$}}}%
\IfBooleanTF{#1}{%
_{\!#2}%
}{%
_{\mathrlap{\!#2}}\,%
}%
}
\begin{document}
\[
\pi\rest{H}(a)
\qquad
\pi\rest*{H}\biggl(\,\sum_{k=1}^n a_k\biggr)
\]
\end{document}
解释:\vcenter
将使对象相对于公式轴居中。下\mathrlap
标被认为具有零宽度,但不会这样\rest*
。
答案2
您根本不需要$
命令中的任何内容:
\documentclass{article}
\usepackage{amssymb}
\usepackage{graphics}
\DeclareRobustCommand{\rest}[1]{\raisebox{-5.8pt}{\scalebox{1}[2.6]{$\upharpoonright$}}_{#1}\hspace{-7pt}}
\begin{document}
$\pi\raisebox{-5.8pt}{\scalebox{1}[2.6]{$\upharpoonright$}}_{H}\hspace{-7pt}(a)$
$\pi\rest{H}(a)$
\end{document}
我还从命令中删除了\pi
和,(a)
因为看起来您希望它们完全可变,并在您在问题中的示例使用它时将它们放在命令之前和之后。