自定义符号后的间距会有所不同

自定义符号后的间距会有所不同

情况:我通过以下方式定义了一个带有线的框

\DeclareMathOperator{\lbox}{\text{%
  \tikz[baseline=-.6ex, rounded corners=.01ex]
    {\draw (-.6ex,-.6ex) rectangle (.6ex,.6ex);
     \draw (0,-.6ex) -- (0,.6ex);}}\kern-.2ex}

符号包含在\text-box 中,以便它能够适当缩放到下标和上标。(我不喜欢使用 进行\scalebox缩放的解决方案,因为在大型文件中它需要太长时间。我当然可以使用\mathchoice,但这又需要一些额外的工作。)我\kern-.2ex在末尾放置 ,以便它与下一个符号的距离正确:照原样,框和 phi 之间的距离$\lbox\phi$与 中的相同$\boxempty\phi$

问题:如果lbox后面跟着括号中的某个内容,例如$\lbox(\phi \wedge \psi)$,间距不正确:方框和括号之间的间距太小。使用 时则不会出现这种情况$\boxempty(\phi \wedge \psi)$在此处输入图片描述

问题:我该如何修复这个问题?如何确保后面的间距恒定lbox

答案1

我猜那\boxempty是来自stmaryrd。此符号被定义为二元运算符号,因此其行为类似于+-

对于$-1$,符号之间没有添加空格,但对于 $ab$ , 的两边会有空格-。 的情况也一样\boxempty

您将 $\lbox$ 定义为数学运算符,这意味着在 $\lbox\varphi$ 中,符号之间会插入一个细小的空格,但如果您执行 $\lbox($ (与 的行为相同\sin),则不会插入这样的空格。

\lbox因此,和之间的比较\boxempty是不正确的:它们是具有不同, 不只是物种

如果要\lbox像 一样使用\nabla,那么它应该是一个普通的操作符,因为这是排版传统。并且它应该有一些侧边距(参见图片中边界框的比较)。

\documentclass{article}
\usepackage{amsmath,tikz,stmaryrd}

\newcommand{\lbox}{%
  \mspace{1.5mu}%
  \text{%
    \begin{tikzpicture}[baseline=-.6ex, rounded corners=.01ex]
      \draw (-.6ex,-.6ex) rectangle (.6ex,.6ex);
      \draw (0,-.6ex) -- (0,.6ex);
    \end{tikzpicture}%
  }%
  \mspace{1.5mu}%
}

\begin{document}

\begingroup % compare the bounding boxes
\setlength\fboxsep{0pt}
\fcolorbox{red}{white}{$\lbox$}

\fcolorbox{red}{white}{$\boxempty$}
\endgroup

$\mathord{\boxempty}\varphi$

$\lbox\varphi$

$\lbox(\varphi)$

\end{document}

在此处输入图片描述

相关内容