偶数个 \circ 会导致奇怪的间距

偶数个 \circ 会导致奇怪的间距

我注意到,当尝试制作一串 6 个\circ符号时,最后一个符号比其他符号更靠近旁边的符号,玩了一段时间后,它看起来像是偶数(大于 2),导致\circ这种情况,我该如何修复间距以使其均匀?

例子:

\documentclass{article}
\begin{document}
1 circ: $\circ  $

2 circ: $\circ \circ $

3 circ: $\circ \circ \circ$

4 circ: $\circ \circ \circ \circ$

5 circ: $\circ \circ \circ \circ \circ $

6 circ: $\circ \circ \circ \circ \circ \circ $

7 circ: $\circ \circ \circ \circ \circ \circ \circ $

\end{document}

示例呈现

答案1

摘自 TeXbook(第 187 页,解决方案在第 326 页)

练习19.7
BL 用户尝试输入“ \eqno(*)”和“ \eqno(**)”,他很高兴地发现这会产生方程式数字“(∗)”和“(∗∗)”。[他有点担心它们会变成“(*)”和“(**)”。] 但几个月后,他尝试输入“ \eqno(***)”,结果大吃一惊。那是什么?

在数学模式下输入星号时,纯 TeX 会将其 *视为二元运算。在 ' (*)' 和(**)' 的情况下,二元运算将转换为 Ord 类型,因为它们不出现在二进制上下文中;但 ' (***)' 中的中间星号仍为 Bin 类型。因此结果为 '(∗ ∗ ∗)'。为了避免多余的中间空格,您可以输入 ' ';或者,如果您从未将其用作 二元运算,\eqno(*{*}*)则可以更改。\mathcode`**

如果我们在方程式中( ),这无关紧要\eqno;主要问题是数学模式,其中的行为显示出来。由于\circ是一个二进制运算符号,就像 一样*,所以你会得到相同的结果。

如果你想要等距\circ符号,你可以使用

{\circ}\;{\circ}\;{\circ}\;{\circ}

甚至更好的是,定义一个合适的命令:

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\circs}{m}
 {
  \ensuremath
   {{
     {\circ}\prg_replicate:nn { #1 - 1 } { \; {\circ} }
   }}
 }
\ExplSyntaxOff

\begin{document}

$\circs{1}$

$\circs{2}$

$\circs{3}$

$\circs{4}$

$\circs{5}$

$\circs{6}$

$\circs{7}$

\end{document}

在此处输入图片描述

答案2

发出时,\show\circ您会看到它定义为\mathchar"220E。此定义中的第一个数字指向字符的固有“格式”。2表示二元运算符它周围有特定的间距。因此,\circ被视为二元运算符,因此需要两侧都有操作数。奇数\circs 显示出更好的对齐效果,因为它们在两侧提供“操作数”(除非在连续 s 周围提供均匀的间距\circ):

在此处输入图片描述

\documentclass{article}

\begin{document}

1 circ: $\circ$

2 circ: $\circ \circ$

2 circ: $\circ \circ {}$

3 circ: $\circ \circ \circ$

4 circ: $\circ \circ \circ \circ$

4 circ: $\circ \circ \circ \circ {}$

5 circ: $\circ \circ \circ \circ \circ $

6 circ: $\circ \circ \circ \circ \circ \circ$

6 circ: $\circ \circ \circ \circ \circ \circ {}$

7 circ: $\circ \circ \circ \circ \circ \circ \circ$

\end{document}

如果您只想以正确的间距列出多个\circs,请考虑在使用偶数个\circs 时在末尾添加一个空的数学组。或者,使用{\circ}\mathord{\circ}来避免周围的空格;\mathord将其参数转换为数学序数。

相关内容