I want to typeset the numero sign № in Plain TeX.

My first guess is to use

\def\numero{$\rm N^{\underline o}$}


but the line under the o is too long and I don't really want to mess up with arbitrary length values to shorten the box.

And

\def\numero{$\rm N^{\b o}$}


does produce a normal-size o which is not what I want.

Any idea? I am fine with the o being superscript or baseline.

You can use some kerning.

\def\numero{%
\leavevmode
\hbox{%
$\rm N^{\mkern0.8mu\underline{\mkern-0.8mu o\mkern-0.8mu}\mkern0.8mu}$%
}%
}

\numero 1

\bye


Perhaps better, raise a smaller o with a bar under accent.

\def\numero{%
{\rm N}%
\raise1.05ex\hbox{\fiverm \b{o}}%
}

\numero 1

\bye


If you don't want to guess the amount of raising and use pdftex, you can use \fontcharht (or do it the hard way by measuring the height of N and doing some arithmetic).

\def\numero{%
{\rm N}%
\begingroup
\setbox0=\hbox{\fiverm o}%
\raise\dimexpr\fontcharht\fontN-\ht0\hbox{\fiverm \b{o}}%
\endgroup
}

\numero 1


– user227615
Apr 14, 2022 at 20:20
• @user202729 Thanks for noting Apr 15, 2022 at 7:53

When you are using Unicode engine (xetex or luatex) then you can simply load a Unicode font and use № directly. For example:

\input lmfonts

№1

\bye
`

(process this example by luatex or xetex).