对于下面显示的 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 节点)。