如何在一个物体周围画一个与其他物体尺寸相同的框?

如何在一个物体周围画一个与其他物体尺寸相同的框?

\boxed我正在使用纯 TeX,并且从 TeXbook 中提取了一个宏(它在那里被调用\cstok并且略有不同)以在数学模式下将事物放在框周围:

\def\boxed#1{\hbox{\vrule\vtop{\vbox{\hrule\kern 1pt\hbox{$#1$}}
    \kern 1pt\hrule}\vrule}}

我使用这样的宏来制作盒装运算符:

\def\bplus{\mathbin{\boxed+}}
\def\bminus{\mathbin{\boxed-}}
\def\btimes{\mathbin{\boxed\times}}
\def\bdiv{\mathbin{\boxed\div}}

我也想有一个类似的盒装\circ,但显而易见的方法\def\bcirc{\mathbin{\boxed\circ}}会导致在 周围画出一个令人不快的小盒子\circ。有没有一种通用的方法可以让盒子像里面一样大+,但垂直和水平居中\circ

答案1

我保持\boxed宏不变,并添加了\bboxed宏,它尊重固定框架尺寸,例如左右+\mahthpalette如果您需要以正确的大小打印索引和索引的索引,则将宏添加到定义中。

\def\boxed#1{\hbox{\vrule\vtop{\vbox{\hrule\kern 1pt\hbox{$#1$}}
    \kern 1pt\hrule}\vrule}}
\def\bboxed#1#2{\boxed{\ooalign{$#1\phantom{+}\vphantom{#2}$\cr
                                \hss$#1{#2}\vphantom{+}$\hss}}}

\def\bplus{\mathbin{\mathpalette\bboxed+}}
\def\bminus{\mathbin{\mathpalette\bboxed-}}
\def\btimes{\mathbin{\mathpalette\bboxed\times}}
\def\bdiv{\mathbin{\mathpalette\bboxed\div}}
\def\bcirc{\mathbin{\mathpalette\bboxed\circ}}

答案2

您还可以使用 使符号按比例缩放下标和上标\mathpalette。我还添加了尺寸检查,因此框至少与 + 号一样大。

\def\boxedopinner#1#2{%
  \vcenter{%
    \hbox{%
      \kern0.4pt\vrule
      \vtop{%
        \vbox{%
          \hrule
          \kern 1pt
          \setbox0=\hbox{$#1#2$}%
          \setbox2=\hbox{$#1+$}%
          \ifdim\wd0<\wd2 \dimen0=\wd2 \else\dimen0=\wd0 \fi
          \ifdim\ht0<\ht2 \ht0=\ht2\fi
          \ifdim\dp0<\dp2 \dp0=\dp2\fi
          \hbox to\dimen0{\hss\box0\hss}%
          \kern 1pt
          \hrule
        }%
      }%
      \vrule\kern0.4pt
    }%
  }%
}

\def\defineboxedsymbol#1#2#3{%
  \def#1{#2{\mathpalette\boxedopinner#3}}%
}

\defineboxedsymbol\bplus\mathbin+
\defineboxedsymbol\bminus\mathbin-
\defineboxedsymbol\btimes\mathbin\times
\defineboxedsymbol\bdiv\mathbin\div
\defineboxedsymbol\bcirc\mathbin\circ

$a \bplus b + c_{d\bplus e+f}$

$a\bcirc b$

$a\bminus b\btimes c\bdiv d$

\bye

在此处输入图片描述

答案3

你可以尝试一下。

\setbox0\hbox{+}

\def\boxed#1{\hbox{\vrule\vtop{\vbox{\hrule\kern 1pt\hbox to%  
\wd0{\hfil$#1\vphantom+$\hfil}}\kern 1pt\hrule}\vrule}}

\hss可能比上面的 def 更好\hfil,但我还不够专业,无法确定。此方法实际上定义了boxed宏的宽度和最小高度,我可能更喜欢调用它opbox而不是boxed

相关内容