7

I noticed when trying to make a string of 6 \circ symbols that the last one is closer to the one beside it than the rest of them, after playing with it for a while it looks like an even number (greater than 2) of \circ causes this, how can I fix the spacing so it is even?

Example:

\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}

example rendered

  • 1
    One way is to make \circ not a binary/relational operator. Use {\circ} – Sigur Jan 16 '19 at 21:44
  • ... red circ, blue circ. :-) – Mees de Vries Jan 16 '19 at 23:57
13

From the TeXbook (page 187, solution on page 326)

Exercise 19.7
B. L. User tried typing ‘\eqno(*)’ and ‘\eqno(**)’, and he was pleased to discover that this produced the equation numbers ‘(∗)’ and ‘(∗∗)’. [He had been a bit worried that they would come out ‘(*)’ and ‘(**)’ instead.] But then a few months later he tried ‘\eqno(***)’ and got a surprise. What was it?

When you type an asterisk in math mode, plain TeX considers * to be a binary operation. In the cases ‘(*)’ and ‘(**)’, the binary operations are converted to type Ord, because they don't appear in a binary context; but the middle asterisk in ‘(***)’ remains of type Bin. So the result was ‘(∗ ∗ ∗)’. To avoid the extra medium spaces, you can type ‘\eqno(*{*}*)’; or you can change \mathcode`*, if you never use * as a binary operation.

It doesn't matter if we're in an equation number (\eqno); the main issue is math mode where the behavior shows. Since \circ is a binary operation symbol just like *, you get the same.

If you want evenly spaced \circ symbols you can use

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

Even better, define a suitable command:

\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}

enter image description here

| improve this answer | |
  • Great explanation (and excercise too)! – manooooh Jan 16 '19 at 22:09
  • 1
    @manooooh That's due to Knuth. ;-) – egreg Jan 16 '19 at 22:09
10

When you issue \show\circ you'll see it defined as \mathchar"220E. The first number in this definition points to the intrinsic "format" of the character. 2 denotes a binary operator which has a specific spacing around. So, \circ is considered a binary operator and therefore expects operands on either side. Odd-numbered \circs show better alignment as they supply "operands" on either side (barring accommodation for uniform spacing around consecutive \circs):

enter image description here

\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}

If you just want to list a number of \circs with the correct spacing, consider adding a empty math group at the end when using an even number of \circs. Alternatively, use {\circ} or \mathord{\circ} to avoid the surrounding space; \mathord turns its argument into a math ordinal.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.