How thick a rule does \hline produce?

How thick a rule does \hline produce (in a bog-standard tabular environment) ?

• Not sure what you mean by "bog-standard", but rules are usually "0.4pt" – A.Ellett Jul 7 '13 at 15:40
• @A.Ellett Just the default width; does it depend on font-size or something else? Where is that value documented? – nutty about natty Jul 7 '13 at 15:42

The default definition of \hline in the LaTeX kernel with:

\def\hline{%
\noalign{\ifnum0=}\fi\hrule \@height \arrayrulewidth \futurelet
\reserved@a\@xhline}


So you can see it has the height \arrayrulewidth. The dimension \arrayrulewidth is initialed in the LaTeX kernel but without any specifications. This is done by the document class. For the most classes the value is 0.4pt:

\setlength\arrayrulewidth{.4\p@}%.4pt

• Any idea why 0.4pt is the default? I always wondered why not 0.3pt or 0.5pt :) – Xavier Jul 7 '13 at 15:44
• @Xavier: This is a question for David or Frank, but 0.4 pt is the default value of TeX for any hrule/vrule – Marco Daniel Jul 7 '13 at 15:45
• @nuttyaboutnatty: "generaly" yes, but always no. It depends on the contents. But normally you don't need the leading zero. – Marco Daniel Jul 7 '13 at 15:50
• The 0.4pt width is the default TeX uses for \hrule or \vrule; it's a built-in value, by the way. Specifying 0.4pt or .4pt is equivalent. – egreg Jul 7 '13 at 15:58
• @egreg -- default_rule_thickness is parameter \sigma_8 (texbook, p.447), so it is drawn from the .tfm file of the symbol fonts. in volume e (computer modern typefaces), p.13, rule_thickness for cmr10 is specified as .4(pt); more explanation of how values for the cm parameters were derived appears on the previous page. i don't believe the "prose" portions of volume e are in distribution (unlike texbook.tex and mfbook.tex'); i know the original book was pasted up, but with the re-issue of the c&t set, this may change; i will ask at the next bug review. – barbara beeton Jul 7 '13 at 18:46

In module 463 of tex.web (the source for “TeX the program”) we find

Here’s a similar procedure that returns a pointer to a rule node. This routine is called just after TeX has seen \hrule or \vrule; therefore *cur_cmd* will be either hrule or vrule. The idea is to store the default rule dimensions in the node, then to override them if ‘height’ or ‘width’ or ‘depth’ specifications are found (in any order).

define default_rule = 26214 { 0.4 pt }

Thus the default value for rule is 0.4 pt. LaTeX offers the \rule interface, which has no default. However the default value of \arrayrulewidth in the standard classes is set to 0.4pt, I suppose for compatibility with TeX's rules. The parameter \arrayrulewidth is what governs the default value for rules in tabular and array environments, either produced by the | specifier, \vline, \hline or \cline.