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}

\circ
not a binary/relational operator. Use{\circ}