如何修复物理包中星号命令前的间距

如何修复物理包中星号命令前的间距
\documentclass{article}
\usepackage{physics}
\begin{document}
    \fboxsep=0pt
    This is some \fbox{$\ev*{\hat{O}_P}$} and then some.
\end{document}

在此处输入图片描述

使用时,左尖括号前似乎添加了额外的空格,而右尖括号后则没有空格\ev*。如果我想继续从包中使用此命令,我可以做些什么来修复它physics

通过修复,我的意思是我想要两边右尖括号的间距。

编辑:我意识到,使用非星号版本的命令不会发生这种情况,它\ev{\hat{O}_P}会在两边提供正确的间距。而且,这个问题似乎会延续到其他带星号的命令,例如\ket*{x}和,\bra*{x}这些命令会在输出的左侧添加额外的空间。

答案1

\ev我查看了包中的定义physics。在你的情况下,它基本上可以简化为

\vphantom{\hat{O}_P}\left\langle\smash{\hat{O}_P}\right\rangle

\vphantom{\hat{O}_P}插入一个宽度为零且类型为 mathord 的框,但是当后面跟着一个 mathopen 原子(自动\left生成)时,会插入间距。

的定义\ev完全没有意义。实现者试图通过使用隐藏内容的高度来反转\left和的自动缩放效果,但这样构造将没有高度和深度,因此他们使用重新插入。\right\smash\vphantom

软件包代码中也充满了虚假空格。考虑到实现的质量,解决这个问题的最佳方法是不使用包裹physics

相关内容