表格中 (cmidrule, hhline) 和交替行颜色之间的冲突

表格中 (cmidrule, hhline) 和交替行颜色之间的冲突

对于下面显示的 MWE 中的表格,我需要使用以下选项:

  • 制作交替颜色的行
  • 从第二列到第五列画水平线
  • 为包含文本(多个)和(部分多个)的合并单元格赋予单一颜色

我无法让这两个选项同时起作用。

  • 对于交替行颜色,我使用 \rowcolors{2}{white}{gray!25}
  • 为了控制水平线的延伸,我尝试使用以下两个命令之一:

    \hhline{~----}

    \cmidrule{2-5}

这两个命令都会导致交替行颜色消失。但是,(hhline) 命令会导致另一个问题,即在水平线空白处出现空白。


\documentclass[a4paper,12pt,twoside]{book}
\usepackage[a4paper,top=2.5cm,bottom=2.5cm,margin=2.5cm,bindingoffset=0.5cm]{geometry} 

\usepackage[bidi=basic,layout=lists.tabular]{babel}
\babelfont[english]{rm}{Times New Roman}

\usepackage[table]{xcolor}
\usepackage{tabu,multirow} 
\usepackage{array} 
\newcolumntype{?}[1]{!{\vrule width #1}} 
\usepackage{booktabs}
\setlength{\belowrulesep}{0pt}
\setlength{\belowbottomsep}{0pt}
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\setlength{\abovetopsep}{0pt}
\usepackage{makecell} 
\usepackage{boldline} 
\usepackage{hhline}
\usepackage{rotating}

\begin{document}
\begin{table}[!tb]
\setlength\arrayrulewidth{1pt}
\begin{center}
\caption{Common multiples and submultiples of SI Units}
\label{Tab:SI}
\rowcolors{2}{white}{gray!25}
\begin{tabular}{?{1mm}c|c|c|c|>{\centering\arraybackslash}m{3cm}?{1mm}}
\rowcolor{white}
\toprule[1mm]
\multicolumn{2}{?{1mm}c|}{\textbf{Multiplication factor}} &\textbf{Exponential Form} & \textbf{Multiple Prefix} & \textbf{Multiple Abbreviation / SI SYmbol} \\
\midrule[1.5pt]
 & 1 000 000 000 000 000 000 & $10^{18}$ & exa & E \\
\hhline{~----}
 & 1 000 000 000 000 000 & $10^{15}$ & peta & P \\
\hhline{~----}
 & 1 000 000 000 000 & $10^{12}$ & tera & T \\
\hhline{~----}
 & 1 000 000 000 & $10^{9}$ & giga & G \\
\hhline{~----}
 & 1 000 000 & $10^{6}$ & mega & M \\
\cmidrule{2-5}
 & 1 000 & $10^{3}$ & kilo & k \\
\cmidrule{2-5}
 & 1 00 & $10^{2}$ & hecto & h \\
\cmidrule{2-5}
\multirow{-8}{*}{\rotatebox[origin=c]{90}{\textbf{Multiples}}} & 1 0 & $10^{1}$ & deka & da \\
\midrule[1.5pt]
 & 0.1 & $10^{-1}$ & deci & d \\
\hline
 & 0.01 & $10^{-2}$ & centi & c \\
\hline
 & 0.001 & $10^{-3}$ & milli & m \\
\hline
 & 0.000 001 & $10^{-6}$ & micro & μ \\
\hline
 & 0.000 000 001 & $10^{-9}$ & nano & n \\
\hline
 & 0.000 000 000 001 & $10^{-12}$ & pico & p \\
\hline
 & 0.000 000 000 000 001 & $10^{-15}$ & femto & f \\
\hline
\multirow{-8}{*}{\rotatebox[origin=c]{90}{\textbf{submultiples}}} & 0.000 000 000 000 000 001 & $10^{-18}$ & atto & a \\
\bottomrule[1mm]
\end{tabular}
\end{center}
\end{table}
\end{document}

输出

答案1

对于水平线,我宁愿使用包Xhline中定义的makecell。它们没有着色行的问题,因为它有hhline规则。另外,我会删除所有内容\cline,因为这样表格(至少在我看来)会变得更好看。

编辑: 不幸的是,任何一种\cline原因都会导致您的问题。到目前为止,临时解决方案是不使用它们,然后询问colortbl软件包作者如何修复此错误/缺陷。

在此处输入图片描述

\documentclass[a4paper,12pt,twoside]{book}
\usepackage[a4paper,top=2.5cm,bottom=2.5cm,margin=2.5cm,bindingoffset=0.5cm]{geometry}

\usepackage[table]{xcolor}
\newcommand\ccw{\cellcolor{white}}
\usepackage{array, booktabs, makecell, multirow}
\newcolumntype{?}[1]{!{\vrule width #1}}
\renewcommand\theadfont{\normalsize\bfseries}
\renewcommand\theadgape{}
\usepackage{boldline}
%\usepackage{hhline}
\usepackage{rotating}

\begin{document}
    \begin{table}[!tb]
    \centering
    \renewcommand\arraystretch{1.1}
\caption{Common multiples and submultiples of SI Units}
\label{Tab:SI}
    \rowcolors{2}{white}{gray!10}
\begin{tabular}{?{1pt}c|c|c|c|>{\centering\arraybackslash}m{3cm}?{1pt}}
    \Xhline{1pt}
    &   \thead{Multiplication\\ factor}   
        &   \thead{Exponential\\ Form} 
            &   \thead{Multiple\\ Prefix} 
                &   \textbf{Multiple Abbreviation / SI SYmbol} \\
    \Xhline{0.5pt}
\ccw
    & 1 000 000 000 000 000 000 & $10^{18}$ & exa & E \\
    & 1 000 000 000 000 000 & $10^{15}$ & peta & P \\
\ccw
    & 1 000 000 000 000 & $10^{12}$ & tera & T \\
    & 1 000 000 000 & $10^{9}$ & giga & G \\
\ccw
    & 1 000 000 & $10^{6}$ & mega & M \\
    & 1 000 & $10^{3}$ & kilo & k \\
\ccw
    & 1 00 & $10^{2}$ & hecto & h \\
\multirow{-8}{*}{\rotatebox[origin=c]{90}{\textbf{Multiples}}}
    & 1 0 & $10^{1}$ & deka & da \\
    \Xhline{0.5pt}
\ccw
    & 0.1 & $10^{-1}$ & deci & d \\
    & 0.01 & $10^{-2}$ & centi & c \\
\ccw
    & 0.001 & $10^{-3}$ & milli & m \\
    & 0.000 001 & $10^{-6}$ & micro & μ \\
\ccw
    & 0.000 000 001 & $10^{-9}$ & nano & n \\
    & 0.000 000 000 001 & $10^{-12}$ & pico & p \\
\ccw
& 0.000 000 000 000 001 & $10^{-15}$ & femto & f \\
\multirow{-8}{*}{\rotatebox[origin=c]{90}{\textbf{Multiples}}}
    & 0.000 000 000 000 000 001 & $10^{-18}$ & atto & a \\
    \Xhline{1pt}
\end{tabular}
    \end{table}
\end{document}

答案2

这是使用 来制作该表的一种{NiceTabular}方法nicematrix

在中{NiceTabular},您可以使用命令水平和垂直合并单元格\Block。对于行,您可以指定逻辑行数(而不是像 那样的物理行数\multicolumn)。

使用键hvlines,绘制所有规则,但块(由 构造\Block)除外。

我在构建主数组之后,使用 Tikz 指令绘制了具有严格规则的主框架:

\tikz \draw [thick] (1-|1) rectangle (last-|last) ;

\documentclass[a4paper,12pt,twoside]{book}
\usepackage[a4paper,top=2.5cm,bottom=2.5cm,margin=2.5cm,bindingoffset=0.5cm]{geometry}
\usepackage{nicematrix,tikz}

\begin{document}
\begin{table}[!tb]
\centering
\renewcommand\arraystretch{1.1}
\caption{Common multiples and submultiples of SI Units}
\label{Tab:SI}
    
\begin{NiceTabular}{>{\bfseries}c|c|c|c|c}[hvlines,color-inside]
\RowStyle[cell-space-limits=3pt]{\bfseries}
    &   \Block{}{Multiplication\\ factor}   
        &   \Block{}{Exponential\\ Form} 
            &   \Block{}{Multiple\\ Prefix} 
                &   \Block{}{Multiple\\ Abbreviation\\ / SI SYmbol} \\
\rowcolors{gray!10}{}[cols=2-]
\Block{8-1}{\rotate Multiples }
    & 1 000 000 000 000 000 000 & $10^{18}$ & exa & E \\
    & 1 000 000 000 000 000 & $10^{15}$ & peta & P \\
    & 1 000 000 000 000 & $10^{12}$ & tera & T \\
    & 1 000 000 000 & $10^{9}$ & giga & G \\
    & 1 000 000 & $10^{6}$ & mega & M \\
    & 1 000 & $10^{3}$ & kilo & k \\
    & 1 00 & $10^{2}$ & hecto & h \\
    & 1 0 & $10^{1}$ & deka & da \\
\Block{8-1}{\rotate Multiples}
    & 0.1 & $10^{-1}$ & deci & d \\
    & 0.01 & $10^{-2}$ & centi & c \\
    & 0.001 & $10^{-3}$ & milli & m \\
    & 0.000 001 & $10^{-6}$ & micro & \textmu \\
    & 0.000 000 001 & $10^{-9}$ & nano & n \\
    & 0.000 000 000 001 & $10^{-12}$ & pico & p \\
    & 0.000 000 000 000 001 & $10^{-15}$ & femto & f \\
    & 0.000 000 000 000 000 001 & $10^{-18}$ & atto & a \\
\CodeAfter \tikz \draw [thick] (1-|1) rectangle (last-|last) ; 
\end{NiceTabular}
\end{table}
\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容