我知道关于类似问题有多个疑问,但我已经尝试了多种提供的解决方案,但就是无法解决问题。
当我在表格中使用 \hskip 时,标题(比特币、比特币现金等)非常偏离中心。如何确保标题位于行的中心?
标题代码如下:
\centering
\adjustbox{max width=\textwidth}{
\begin{tabular}{c@{\hskip 0.3in}cc@{\hskip 0.3in}cc@{\hskip 0.3in}cc@{\hskip 0.3in}cc@{\hskip 0.3in}cc}
\toprule
&\multicolumn{2}{c}{\thead{\textbf{Bitcoin}}}&\multicolumn{2}{c}{\thead{\textbf{Bitcoin Cash}}} & \multicolumn{2}{c}{\thead{\textbf{Ethereum}}} & \multicolumn{2}{c}{\thead{\textbf{Litecoin}}} & \multicolumn{2}{c}{\thead{\textbf{Zcash}}} \\
& Reported & Possible & Reported & Possible & Reported & Possible & Reported & Possible & Reported & Possible \\
\midrule
\bottomrule
\end{tabular}}
\end{table*}
答案1
有一个简单的解决方案,不用使用@{\hspace{<some-length>}
格式合适的额外列。但副作用是您需要在&&
使用此类空格列的任何地方输入内容。
下面我还使用了一些快捷方式来减少输入内容时出现的问题。值得注意的是:
-column类型
\space
,您应该将其留空。它会注入一点空间(在我的定义中5pt
,-2\tabcolsep
是为了补偿那些(基本上将列变成@{}c<{\hskip5pt}@{}
,但 LaTeX 实际上并不认为它们会是@{}
,以便单元格颜色具有正确的边框)。谁想把它放到
\cellcolor{<color>}
各处?所以我定义了\hlCell
。\multicolumn{2}{c}{...}
也变得乏味...\myhead
更简单。
\documentclass[border=3.14]{standalone}
\usepackage[table]{xcolor}
\usepackage{makecell, booktabs}
\newcommand*\myhead[1]{\multicolumn{2}{c}{\thead{\textbf{#1}}}}
\newcolumntype\space{c<{\hskip\dimexpr5pt-2\tabcolsep\relax}}
\newcommand*\hlCell{\cellcolor{red!50!white}}
\begin{document}
\begin{tabular}{c*{5}{\space cc}}
\toprule
&& \myhead{Bitcoin} && \myhead{Bitcoin Cash} && \myhead{Ethereum}
&& \myhead{Litecoin} && \myhead{Zcash} \\
&& Reported & Possible && Reported & Possible && Reported & Possible
&& Reported & Possible && Reported & Possible \\
\midrule
Jan 1, 2019 && \hlCell 4 & \hlCell 3-4 && \hlCell 2 & \hlCell 1-2
&& \hlCell 3 & \hlCell 2-3 && 3 & 3 && 2 & 2 \\
Jan 2, 2019 && \hlCell 4 & \hlCell 3-4 && \hlCell 2 & \hlCell 1-2
&& 3 & 2-3 && 3 & 3 && 2 & 2 \\
\bottomrule
\end{tabular}
\end{document}
如果该表不适合您的边距,请不要使用\adjustbox
或类似的,而是使用最简单的三件事:减少\tabcolsep
,@{}
在列的任一端使用(因此删除最外层的填充),并使用字体大小命令减小字体大小(例如\small
或\footnotesize
)。
结果:
答案2
如果你使用NiceMatrix
?:
\documentclass[12pt,a4paper]{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{nicematrix,booktabs,colortbl}
\usepackage{makecell}
\begin{document}
\begin{table*}
\centering
\scalebox{.75}{
\begin{NiceTabular}[c]{lcccccccccc}
\CodeBefore
\rectanglecolor{gray!50}{3-2}{4-3}
\rectanglecolor{gray!30}{3-4}{4-5}
\cellcolor{gray!20}{3-6,3-7}
\Body
\toprule
&\multicolumn{2}{c}{\thead{\textbf{Bitcoin}}}&\multicolumn{2}{c}{\thead{\textbf{Bitcoin Cash}}} & \multicolumn{2}{c}{\thead{\textbf{Ethereum}}} & \multicolumn{2}{c}{\thead{\textbf{Litecoin}}} & \multicolumn{2}{c}{\thead{\textbf{Zcash}}} \\
& Reported & Possible & Reported & Possible & Reported & Possible & Reported & Possible & Reported & Possible \\
\midrule
Jan 1, 2019 & 4 & 3-4 & & & & & & & & \\
Jan 1, 2019 & 4 & 3-4 & & & & & & & & \\
\bottomrule
\end{NiceTabular}
}
\end{table*}
\end{document}
答案3
使用,您可以在序言中的两列之间添加{NiceTabular}
预期的输出。nicematrix
@{\hspace{2cm}
c
\documentclass[12pt,a4paper,landscape]{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{nicematrix,booktabs}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{table*}
\centering
\begin{NiceTabular}[create-extra-nodes]{lcc@{\hspace{2cm}}cccccccc}
\CodeBefore [create-cell-nodes]
\tikz \node [ fill = red!15 , fit = (3-2-medium) (4-3-medium) ] { } ;
\tikz \node [ fill = red!15 , fit = (3-4-medium) (4-5-medium) ] { } ;
\Body
\toprule
\RowStyle{\bfseries}
&\Block{1-2}{Bitcoin}&&\Block{1-2}{Bitcoin Cash} && \Block{1-2}{Ethereum} && \Block{1-2}{Litecoin} && \Block{1-2}{Zcash} \\
& Reported & Possible & Reported & Possible & Reported & Possible & Reported & Possible & Reported & Possible \\
\midrule
Jan 1, 2019 & 4 & 3-4 & & & & & & & & \\
Jan 1, 2019 & 4 & 3-4 & & & & & & & & \\
\bottomrule
\end{NiceTabular}
\end{table*}
\end{document}