表格 xcolor @{,} \rowcolor 破碎的文字

表格 xcolor @{,} \rowcolor 破碎的文字

我正在使用如下格式的表格:

    \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}

正如您在此处看到的:

残缺文字:5,缺失

5 和 0 被减半。我发现了类似的问题(\rowcolor 截断表格中的单元格)但我无法使用此答案修复我的错误。我该如何解决这个问题?

谢谢

答案1

colortbl很抱歉不能怪作者,xcolor这里的界面很垃圾,不过你可以这样做:

在此处输入图片描述

\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}

答案2

一个实用的替代方法:要以小数点后两位为单位写出十进制数,可以使用两个包:

  • dcolumn
  • siumitx

使用这两种方法,您可以简单地合并rl将列合为一,并将数字写为普通十进制数。由于我更熟悉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}

表格的外观与 David Carlisle 的回答相同:

在此处输入图片描述

升级:看来,上述解决方案更适合新表,对于现有的以下colortbl限制(故障)的逃脱可以是简单的解决方案:

\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}

结果与第一个例子相同:在此处输入图片描述

答案3

如果它是一个更像表格的数组,则使用数学模式:

\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}

在此处输入图片描述

答案4

环境{NiceTabular}提供nicematrix与类似的工具,colortbl但使用 PGF/Tikz 进行绘图。

使用该环境,您可以直接获得您想要的东西(但由于使用 PGF/Tikz 节点,因此您需要多次编译nicematrix)。

\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}

上述代码的输出

相关内容