Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

The title says it all:

In LaTeX tables: How do I make bold horizontal lines (typically \hline)?

share|improve this question

5 Answers 5

up vote 35 down vote accepted

Your 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.

share|improve this answer
    
I think this is the cleanest solution, however for this document I was already using tabularx tables and do not have the time to switch to booktabs :( –  levesque Sep 24 '10 at 14:43
7  
@JCL: strange, tabularx and booktabs should co-habitate quite well. –  Geoffrey Jones Sep 24 '10 at 15:21
2  
@levesque: Geoffrey is right — it's important to note that booktabs is not a new tabular environment; it provides "rules" to use in whatever tabular you're currently using. –  Will Robertson Nov 29 '10 at 23:18
1  
After having really experimented with booktabs, I see that you both were right ;) It really does not imply much work to start using them! –  levesque Apr 4 '11 at 15:44
\usepackage{makecell}

and use e.g.

\Xhline{2\arrayrulewidth}

instead of \hline

share|improve this answer
    
This works wrong for longtable. –  Ivan Bychkov Apr 2 '12 at 12:35
    
@IvanBychkov: This does work for longtable. You should use makecell after longtable. –  Leo Liu Apr 3 '12 at 10:23
    
@LeoLiu - great...this solution was the only one working straightforward! –  Matteo Nov 24 '12 at 9:05
\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}
share|improve this answer
    
I get the following error message :" ! You can't use `\spacefactor' in internal vertical mode. <recently read> \spacefactor ". Is there a package that I need to include? –  levesque Sep 24 '10 at 13:57
1  
where did you put this definition? don't forget \makeatletter \makeatother when necessary. –  pluton Sep 24 '10 at 14:03
    
With my other environment (re)definitions, before the begin document. I don't use the @ character anywhere else in my document than in that definiton. –  levesque Sep 24 '10 at 14:07
    
I just edited the message above. –  pluton Sep 24 '10 at 14:12
    
This works wrong for longtable. –  Ivan Bychkov Apr 2 '12 at 12:32

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:

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}
share|improve this answer

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}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.