The title says it all:
In LaTeX tables: How do I make bold horizontal lines (typically \hline
)?
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communityYour question suggests that you might be interested in setting tabular rules (\hline
's) of different weight in order to improve your typography rather than for the purposes of some simple "one-off" adjustment. If so, you should consider the booktabs package (if you haven't already done so). It provides canned weighted rules (\toprule
, \midrule
, etc) which, for typographical reasons, are defined in terms of fractions of em
's rather than pt
's, although these are very easy to define in pt
's as well. Each rule can be locally or globally parameterised for your own specific weighting requirements. The package also provides macros like \heavyrulewidth
and \lightrulewidth
which you can use "as is" or can redefine to suit your particular needs. (Just as the author uses the term 'rule' where others might call it 'line', the author also uses the term 'width' where others might prefer to use 'thickness'.) The package is exceptionally easy to use. As a side-benefit, the documentation contains some very insightful guidelines about the ins and outs of good tabular typography.
tabularx
and booktabs
should co-habitate quite well.
Sep 24, 2010 at 15:21
\usepackage{makecell}
and use e.g.
\Xhline{2\arrayrulewidth}
instead of \hline
longtable
. You should use makecell
after longtable
.
{tabular}
env it worked great as I was already using the {makecell}
pkg
You can also fix the default tickness of \hline
or use a\specialrule
also from booktabs
or ctable
package. (Since the ctable
package imports booktabs
packages, all commands from this package are available as well). This is a MWE:
\documentclass{article}
\usepackage{ctable} % for \specialrule command
\begin{document}
\centering
Default \texttt{\textbackslash hline}:
\begin{tabular}{ccc}
\hline
1 & 2 & 3 \\
\hline
\end{tabular}
\bigskip
Thicker \texttt{\textbackslash hline}:
\setlength{\arrayrulewidth}{.3em}
\bigskip
\begin{tabular}{ccc}
\hline
1 & 2 & 3 \\
\hline
\end{tabular}
\bigskip
Custom \texttt{special rule}s with \texttt{ctable} package:
\begin{tabular}{ccc}
\specialrule{.05em}{1em}{0em}
1 & 2 & 3 \\
\specialrule{.1em}{.05em}{.05em}
1 & 2 & 3 \\
\specialrule{.2em}{.1em}{.1em}
1 & 2 & 3 \\
\specialrule{.3em}{.2em}{.2em}
1 & 2 & 3 \\
\specialrule{.4em}{.3em}{.3em}
1 & 2 & 3 \\
\specialrule{.5em}{.4em}{.4em}
1 & 2 & 3 \\
\specialrule{.6em}{.5em}{0em}
\end{tabular}
\end{document}
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 %
\futurelet\reserved@a\@xhline}
and then use \hlinewd{2pt}
in your tables, for instance.
This should compile:
\documentclass[a4paper,10pt]{article}
\usepackage{tabularx}
\makeatletter
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 %
\futurelet\reserved@a\@xhline}
\makeatother
\begin{document}
\begin{tabular}{ccc}
\hlinewd{2pt}
plo & plo & plo\\ \hlinewd{2pt}
plo & plo & plo\\ \hlinewd{5pt}
plo & plo & plo
\end{tabular}
\end{document}
I suggest you use the \specialrule
command of the booktabs
package, but should read the containing paragraph in the manual. Such a thick rule is generally frowned upon (especially in scientific texts).
An example could be:
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}
\centering
\begin{tabular}{rccc}
\toprule
Thing & Value & Value & Value\\
\midrule
A & 1 & 2 & 3\\
B & 1 & 2 & 3\\
C & 1 & 2 & 3\\
\specialrule{2.5pt}{1pt}{1pt}
D & 1 & 2 & 3\\
E & 1 & 2 & 3\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
A simple solution for completeness sake: setting the length register \arrayrulewidth
with \setlength
allows you to globally set the width of the line produced by \hline
if you place it outside of the tabular
environment.
Changing \arrayrulewidth
inside tabular
however doesn't seem to work.
\documentclass{article}
\begin{document}
\setlength{\arrayrulewidth}{2pt}
\begin{tabular}{llll}
\hline
A & B & C & D
\\\hline
1 & 2 & 3 & 4
\end{tabular}
\end{document}
tabular
but within table
, i.e. between begin{table}
and begin{tabular}
, it works fine
An alternative solution with tblr
and booktabs
environments of tabularray
package: you can set widths and colors for hlines.
\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\begin{document}
\begin{tblr}{rccc}
\hline[2pt,red5]
Thing & Value & Value & Value\\
\hline[1pt]
A & 1 & 2 & 3\\
B & 1 & 2 & 3\\
C & 1 & 2 & 3\\
\hline[1pt]
D & 1 & 2 & 3\\
E & 1 & 2 & 3\\
\hline[2pt,blue5]
\end{tblr}
\bigskip
\begin{booktabs}{colspec={rccc},row{odd}={blue9}}
\toprule
Thing & Value & Value & Value\\
\midrule
A & 1 & 2 & 3\\
B & 1 & 2 & 3\\
C & 1 & 2 & 3\\
\specialrule{2.5pt,teal5}{1pt}{1pt}
D & 1 & 2 & 3\\
E & 1 & 2 & 3\\
\bottomrule
\end{booktabs}
\end{document}