10

i am using a formatted table like this:

    \documentclass[a4paper,10pt]{report}    

    \usepackage[table]{xcolor}

    \begin{document}
    \begin{tabular}{|c|r@{,}l|c|c|c|c|}
    \hline
    $B_N$ & \multicolumn{2}{c|}{$C_N$} & $i$ & $j$ & $k$ & $l$ \\
    \hline \rowcolor{gray!35}
    $B_1$ & 5 & 128 & 0 & 1 & 0 & 0 \\ 
    \hline \rowcolor{gray!35}
    $B_2$ & 0 & 281 & 0 & 1 & 0 & 1 \\
    \hline
    $B_{11}$ & 0 & $008 \cdot e$ & 2 & -1 & -1 & 0 \\ 
    \end{tabular}
    \end{document}

And as you can see here:

Broken text: 5, is missing

the 5, and the 0, are cut in half. I found a similar problem (\rowcolor truncating cells in table) but i can not fix my bug with use of this answer. How do i fix this issue ?

Thanks

Someone
  • 329

4 Answers4

10

Sorry blame the author of colortbl not xcolor the interface here is rubbish, however you can do this:

enter image description here

\documentclass[a4paper,10pt]{report}    

    \usepackage[table]{xcolor}

    \begin{document}
    \begin{tabular}{|c|r@{,}l|c|c|c|c|}
    \hline
    $B_N$ & \multicolumn{2}{c|}{$C_N$} & $i$ & $j$ & $k$ & $l$ \\
    \hline \rowcolor{gray!35}
    $B_1$ &
\multicolumn{1}{>{\columncolor{gray!35}[\tabcolsep][6pt]}r@{,}}{5}& 
\multicolumn{1}{@{}>{\columncolor{gray!35}[0pt][\tabcolsep]}l|}{128}&
0 & 1 & 0 & 0 \\ 
    \hline \rowcolor{gray!35}
    $B_2$ & 
\multicolumn{1}{>{\columncolor{gray!35}[\tabcolsep][6pt]}l@{,}}{0} &
\multicolumn{1}{@{}>{\columncolor{gray!35}[0pt][\tabcolsep]}l|}{281}&
 0 & 1 & 0 & 1 \\ 
\hline
    $B_{11}$ & 0 & $008 \cdot e$ & 2 & -1 & -1 & 0 \\
\hline 
    \end{tabular}

\end{document}
David Carlisle
  • 757,742
  • To me is than simpler to add siunitx package and use column type S, erase surplus ampersand in table and wrote numbers as usual we write decimal numbers.. :-) – Zarko Jan 25 '16 at 12:05
  • @Zarko sure (or dcolumn) but there are legitimate uses of @ which can't be replaced by a numeric column and \rowcolor essentially always messes up in that case. (Easier to see it is wrong than see what to do instead) – David Carlisle Jan 25 '16 at 12:09
  • @Zarko although actually you could post an answer along those lines which is a useful practical alternative (and if you stop me getting a tick you will make egreg's day:-) – David Carlisle Jan 25 '16 at 12:11
  • well, i made the minimal example a little too minimal as it seams, sry. i added another line (B_11) since with this line the spacing gets different and the (otherwise working) solution becomes bad. – Someone Jan 25 '16 at 12:12
  • @John.Doe_876 sorry, fixed. – David Carlisle Jan 25 '16 at 12:29
  • This is working, the siunitx works not for me since in B_11 the Math mode is active. B.t.w. i am impressed how fast and easy you come up with a working solution. I am relay thankful :-) – Someone Jan 25 '16 at 12:35
  • @John.Doe_876 I've known for almost 20 years that @ messed things up, I had some advance notice for preparing the answer:-) – David Carlisle Jan 25 '16 at 12:35
  • @John.Doe_876 with siuinitx or dcolumn the numbers are always in math mode so you would not need the $. that's better anyway to always use math mode for numbers. – David Carlisle Jan 25 '16 at 12:38
8

An practical alternative: To write decimal numbers alegned at decimal mark you can use two packages:

  • dcolumn
  • siumitx

With both you simple merge r andl column in one and numbers write as ordinary decimal numbers. Since I'm more familiar with siunitx ...

   \documentclass[a4paper,10pt]{report}    
    \usepackage[table]{xcolor}
    \usepackage[output-decimal-marker={,}]{siunitx}

\begin{document}
    \begin{tabular}{|c|S[table-format=1.3]|c|c|c|c|}
    \hline
$B_N$ & {$C_N$} & $i$ & $j$ & $k$ & $l$ \\
    \rowcolor{gray!35}\hline
$B_1$ & 5,128 & 0 & 1 & 0 & 0 \\
    \rowcolor{gray!35}\hline 
$B_2$ & 0,281 & 0 & 1 & 0 & 1 \\
    \hline
    \end{tabular}
\end{document}

The looks of table is the same as in David Carlisle answer:

enter image description here

Upgrade: It seems, that above solution is more appropriate for new tables, for the existing the following escape of colortbl limitation (malfunction) can be simple solution:

\documentclass[a4paper,10pt]{report}
\usepackage[table]{xcolor}

\begin{document}
\begin{tabular}{|c|r<{,\kern-\tabcolsep}>{\kern-\tabcolsep}l|c|c|c|c|}
\hline
$B_N$ & \multicolumn{2}{c|}{$C_N$} & $i$ & $j$ & $k$ & $l$ \\
\hline \rowcolor{gray!35}
$B_1$ & 5 & 128 & 0 & 1 & 0 & 0 \\
\hline \rowcolor{gray!35}
$B_2$ & 0 & 281 & 0 & 1 & 0 & 1 \\
\hline
$B_{11}$ & 0 & $008 \cdot e$ & 2 & -1 & -1 & 0 \\
\hline
\end{tabular}
\end{document}

The result is the same as at the first example:enter image description here

Zarko
  • 296,517
  • @DavidCarlisle, I thing that I found a (rude) solution which overcome colortbl limitation .... See upgrade of my answer. – Zarko Jan 25 '16 at 13:39
  • yes I wondered about using > instead of @ that works as well. The main problem is that \rowcolour has no information about the table preamble (at least no information in a form it can use) so it assumes \tabcolsep space, which isn't the case with @ using >< is easier to handle as it happens "inside" the column just as if those commands had been in the cell, whereas @ really changes the column layout. – David Carlisle Jan 25 '16 at 14:05
3

Use the math mode if it is more an array as a tabular:

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{icomma,rccol}

\begin{document}

$\begin{array}{|c|R{1}{3}|c|c|c|c|}\hline
B_N & \multicolumn{1}{c|}{C_N} & i & j & k & l \\
\rowcolor{gray!35}\hline
B_1 & 5,128 & 0 & 1 & 0 & 0 \\
\rowcolor{gray!35}\hline 
B_2 & 0,281 & 0 & 1 & 0 & 1 \\\hline
\end{array}$

\end{document}

enter image description here

0

The environment {NiceTabular} of nicematrix provides tools similar to those of colortbl but using PGF/Tikz for the drawing.

Using that environment, you have directly what you wish (but you need several compilations since nicematrix uses PGF/Tikz nodes).

\documentclass[a4paper,10pt]{report}

\usepackage{xcolor} \usepackage{nicematrix}

\begin{document} \begin{NiceTabular}{|c|r@{,}l|c|c|c|c|}[color-inside] \hline $B_N$ & \multicolumn{2}{c}{$C_N$} & $i$ & $j$ & $k$ & $l$ \ \hline \rowcolor{gray!35} $B_1$ & 5 & 128 & 0 & 1 & 0 & 0 \ \hline \rowcolor{gray!35} $B_2$ & 0 & 281 & 0 & 1 & 0 & 1 \ \hline $B_{11}$ & 0 & $008 \cdot e$ & 2 & -1 & -1 & 0 \ \hline \end{NiceTabular} \end{document}

Output of the above code

F. Pantigny
  • 40,250