22

I have a table and I want to make the font color red for just one row (not the background). How do I do that? Here's my table:

  \begin{tabular}{ l | l l l l }
        & 1 & 2 & 3 & 4 \\ 
    \hline 
    1   & A & B & C & D \\ 
    2   & A & B & C & D \\ 
    3   & A & B & C & D \\ 
    4   & A & B & C & D \\ 
  \end{tabular}
1

3 Answers 3

16

You could use the tabu environment of the tabu package with the command \rowfont, for example:

\documentclass{article}
\usepackage{tabu}
\usepackage{xcolor}
\begin{document}
  \begin{tabu}{ l | l l l l }
  \rowfont{\color{red}}
        & 1 & 2 & 3 & 4 \\ 
    \hline 
    1   & A & B & C & D \\ 
    2   & A & B & C & D \\ 
    3   & A & B & C & D \\ 
    4   & A & B & C & D \\ 
  \end{tabu}
\end{document}

enter image description here

8
  • 1
    Much better than my idea of a per-column \color{red}.
    – Werner
    Aug 23, 2011 at 17:52
  • 1
    @doncherry: unaltered it behaves very similarly. Differences are explained in the manual, there's a section dedicated to it.
    – Stefan Kottwitz
    Aug 23, 2011 at 19:10
  • 1
    @Eddy: don't worry, installation is not hard, and by trying that you will get further knowledge. You can download it from CTAN, and see How do I install a dtx file, Placing sty files and if you use TeX Live (not Xubuntu repositories) Installing tabu.sty.
    – Stefan Kottwitz
    Aug 23, 2011 at 20:24
  • 2
    Figured out how to do it: 1. Download tabu.dtx and tabu.ins 2. run latex tabu.ins 3. move tabu.sty to $HOME/texmf/tex/latex/commonfiles 4. run texhash $HOME/texmf
    – Eddy
    Aug 28, 2011 at 11:49
  • 1
    Unfortunately, the tabu package appears to be broken and unmaintained these days.
    – mat
    May 13, 2021 at 11:21
32

If you don't want to use the tabu package you can define a \rowstyle command together with supporting column types + and = as follows:

\documentclass{article}

\usepackage{array}
\usepackage{xcolor}

\makeatletter

\newcommand*{\@rowstyle}{}

\newcommand*{\rowstyle}[1]{% sets the style of the next row
  \gdef\@rowstyle{#1}%
  \@rowstyle\ignorespaces%
}

\newcolumntype{=}{% resets the row style
  >{\gdef\@rowstyle{}}%
}

\newcolumntype{+}{% adds the current row style to the next column
  >{\@rowstyle}%
}

\makeatother

\begin{document}

\begin{tabular}{ =l | +l +l +l +l }
  \rowstyle{\color{red}}
      & 1 & 2 & 3 & 4 \\
  \hline
  1   & A & B & C & D \\
  2   & A & B & C & D \\
  3   & A & B & C & D \\
  4   & A & B & C & D \\
\end{tabular}

\end{document}
1
  • 1
    Excellent answer. I hate the tabu package and its documentation. Your solution works with tabular* too! May 31, 2018 at 15:17
3

In {NiceTabular} of nicematrix, you have a command \RowStyle to specify formatting instructions for the current row.

\documentclass{article}

\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{l|llll}
\RowStyle{\color{red}}
    & 1 & 2 & 3 & 4 \\ 
\hline 
1   & A & B & C & D \\ 
2   & A & B & C & D \\ 
3   & A & B & C & D \\ 
4   & A & B & C & D \\ 
\end{NiceTabular}

\end{document}

Output of the first code

There is also a key color for that command \RowStyle. color=red will insert \leavevmode\color{red} with the \leavevmode which is necessary in columns of type p, m, b and X (otherwise, there is an extra vertical space).

\documentclass{article}

\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{l|p{1cm}p{1cm}p{1cm}p{1cm}}
\RowStyle[color=red]{}
    & 1 & 2 & 3 & 4 \\ 
\hline 
1   & A & B & C & D \\ 
2   & A & B & C & D \\ 
3   & A & B & C & D \\ 
4   & A & B & C & D \\ 
\end{NiceTabular}

\end{document}

Output of the second code

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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