纯 TeX 中任意符号的下标和上标

纯 TeX 中任意符号的下标和上标

我正在尝试在纯 TeX 中获取带有下标和上标的黑色方块。到目前为止,我成功创建了$\buildrel abc \over\square$

我可以轻松地使用嵌套的\buildrels 来实现所需的结果,但是,上标使用的字体比下标的字体小,因为 TeX 看到的是“下标”上方的\square“上标”。

我该如何解决这个问题?例如,TeX 如何实现\sum上标和下标等比例缩放的宏?

谢谢!

答案1

这应该被声明为\mathop;这里是一个符号与求和符号一样高的实现。

% define the extension font also in smaller sizes (not relevant to the problem)
\font\sevenex=cmex7
\font\fiveex=cmex7 scaled 714
\scriptfont3=\sevenex
\scriptscriptfont3=\fiveex

\catcode`@=11

% \squareop is a math operator like \sum
\def\squareop{\mathop{\mathpalette\square@op\relax}\displaylimits}

\def\square@op#1#2{%
  \,\vcenter{
    \kern1pt
    \hrule
    \kern-.4pt
    \hbox to\square@size{#1}{%
      \vrule height \square@size{#1}%
      \hfill
      \vrule
    }
    \nointerlineskip
    \kern-.4pt
    \hrule
    \kern1pt
  }\,%
}

% here we define the size of the square
\def\square@size#1{%
  \ifx#1\displaystyle 14pt \fi
  \ifx#1\textstyle 10pt \fi
  \ifx#1\scriptstyle 7pt \fi
  \ifx#1\scriptscriptstyle 5pt \fi
}
\catcode`@=12

$$
\sum_{i=1}^n\squareop_{i=1}^n
\quad\textstyle
\sum\squareop_{i=1}^n
\quad\scriptstyle
\sum\squareop_{i=1}^n
\quad\scriptscriptstyle
\sum\squareop_{i=1}^n
$$

\bye

在此处输入图片描述

答案2

TeX 具有以下数学“风格”:

  • \textstyle,这是内联数学的默认样式($...$);
  • \displaystyle,这是显示数学的默认样式($$...$$),与 大致相同\textstyle,只是诸如\mathop之类的原子在它们后面\sum得到\limits,以便限制显示在原子的正上方/下方;
  • \scriptstyle对于第一级下标/上标,默认情况下为cmr7;并且
  • \scriptscriptstyle对于第二级子标/上标,默认情况下为cmr5

我不清楚你的目标是什么,所以也许你追求的\square是一个\mathrel有限制的原子(所以也需要是一个\mathop原子),你可以这样做

\def\relsquare#1#2{\mathrel{\mathop{\square}\limits^{#1}_{#2}}}

并将其与 一起使用$A \relsquare xy B

您随时可以明确地更改活动样式:

\buildrel\displaystyle abc\over{\scriptscriptstyle\square}

顺便说一句,\square在平原中没有定义。

相关内容