情况:我通过以下方式定义了一个带有线的框
\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}