我正在尝试在纯 TeX 中获取带有下标和上标的黑色方块。到目前为止,我成功创建了$\buildrel abc \over\square$
。
我可以轻松地使用嵌套的\buildrel
s 来实现所需的结果,但是,上标使用的字体比下标的字体小,因为 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
在平原中没有定义。