# What is the thickness of \hrulefill

This seems like a simple question ...

I know from this question that \hrule and presumably \hrulefill have a thickness of 0.4pt. I think \hrule is a primitive, so does that mean that you cannot change the thickness of \hrulefill?

• You can use \hrule height 4pt. See TeXbook chapter 21 page 221. – Marco Daniel Aug 3 '12 at 16:13

The default height for \hrule is 0.4pt (not a parameter whose default value is 0.4pt) so you are correct that it may not be changed via setting a parameter. However \hrulefill is only a macro so you can change it if you wish.

It is defined by

\def\hrulefill{\leavevmode\leaders\hrule\hfill\kern\z@}


so

\def\hrulefill{\leavevmode\leaders\hrule height 2pt\hfill\kern\z@}


would make it thicker

• I am assuming it is not possible to define a primitive that depends on a parameter, since that doesn't seem like it would be a primitive anymore. – StrongBad Aug 4 '12 at 12:20
• Well yes you or I can't define a primitive however it would have been possible for tex-the-program to define the default widths of rules to be a dimen register \defaultrulewidth or some such, but it doesn't. Compare with the primitive \indent which indents by an amount given by the primitive dimen parameter \parindent. Somewhat unusually in TeX, the rule width is a hard wired numerical default. – David Carlisle Aug 4 '12 at 12:29
• Perhaps instead of \z@ we Plain TeX guys could use 0pt? Searching on it brought me to this answer which suggests so. – Daniel Lyons Jun 18 '15 at 15:19
• @DanielLyons you could but \z@ is defined in plain as well (plain.tex line 258) – David Carlisle Jun 18 '15 at 15:40
• I see it there, but I get Undefined control sequence from xetex. – Daniel Lyons Jun 18 '15 at 15:45