我有一张包含多个单词和列的表格
\documentclass[12pt, twocolumn]{article}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{lipsum}
\begin{document}
\lipsum
\begin{table}[ht]
%\vspace{-.15cm}
\caption{Power Consumption measured in mW}
%\vspace{-.1cm}
\centering
\begin{tabular}{c c c cc c cc }
\toprule
\multirow{2}{*}{\parbox[c]{.1\linewidth}{\centering }}
& Labeled & & \multicolumn{2}{c}{FBF ($q = 16$)} & & \multicolumn{2}{c}{FBF ($q = 64$)} \\
\cmidrule{2-2} \cmidrule{4-5} \cmidrule{7-8}
& size & & {Reduction in size(\%)} & Power & & {Reduction in size(\%)} & Power \\
\midrule
s1 & 125 & & 59.2 & 7.32 & & 26.4 & 0.35 \\
c2 & 81 & & 72.8 & 0.37 & & 25.9 & 0.36 \\
\bottomrule
\end{tabular}
\label{table:power_consumption}
\vspace{-.35cm}
\end{table}
\lipsum
\end{document}
编译时,我有一个表,其列太宽。
我认为Reduction in size(%)
需要进行一些调整。如何使该列变窄?
答案1
这里有一种方法,使用makecell
包、较小的字体大小以及caption
用于在标题和表格之间实现正确垂直间距的包:
\documentclass[twocolumn,12pt]{article}%
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{lipsum}
\usepackage{makecell, caption}
\renewcommand\cellalign{bc}
\begin{document}
\lipsum
\begin{table}[!ht]
\footnotesize\setlength\tabcolsep{4pt}\vspace{2pt}
\captionsetup{labelfont = bf}
\caption{Power Consumption measured in mW}
\centering
\begin{tabular}{@{\,}c@{\,}c@{\,}ccc@{\,}ccc@{\,}}
\toprule
& Labeled & & \multicolumn{2}{c}{FBF ($q = 16$)} & & \multicolumn{2}{c}{FBF ($q = 64$)} \\
\cmidrule{2-2} \cmidrule{4-5} \cmidrule{7-8}
& Size & & \makecell{Reduction\\ in size(\%)} & Power & & \makecell{Reduction\\ in size(\%)} & Power \\
\midrule
s1 & 125 & & 59.2 & 7.32 & & 26.4 & 0.35 \\
c2 & 81 & & 72.8 & 0.37 & & 25.9 & 0.36 \\
\bottomrule
\end{tabular}
\label{table:power_consumption}
\vspace{-2.5ex}
\end{table}
\lipsum
\end{document}
答案2
这是一个提议。我尝试跳出固有的思维框架,因此它并不完全忠实于你最初的设计。
\documentclass[12pt, twocolumn]{article}
\usepackage{booktabs}
\usepackage{lipsum}
\usepackage{siunitx}
\usepackage[tableposition=above]{caption}
\begin{document}
\lipsum
\begin{table}[ht]
%\vspace{-.15cm}
\caption{Power Consumption in mW}
%\vspace{-.1cm}
\centering
\begin{tabular}{c
S[table-format = 3.0]
*3c
}
\toprule
& & & Size & \\
& {Size} & q & Reduction & Power \\
\addlinespace
& {(-)} & (-) & (\si{\percent}) & (\si{mW})\\
\midrule
s1 & 125 & 16 & 59.2 & 7.32 \\
& & 32 & 26.4 & 0.35 \\
\addlinespace
c2 & 81 & 16 & 72.8 & 0.37 \\
& & 32 & 25.9 & 0.36 \\
\bottomrule
\end{tabular}
\label{table:power_consumption}
\vspace{-.35cm}
\end{table}
\lipsum
\end{document}
其结果是:
评论:
在任何情况下,您都可以将长列标题“减小尺寸”分成两行,就像我在代码中所做的那样,使用两行来定义表头。
我还使用该
siuntix
包来对齐“尺寸”列中的数字。我删除了它的使用,
multirow
因为它实际上并不是必要的。caption
使用带有选项的包tableposition=above
来更好地放置表格标题。
答案3
除了更改字体大小和列宽(这并不总是可行的)之外,您还可以让表格跨越两列。这可以通过带星号的版本调用。
\begin{table*}...\end{table*}
在这种情况下,放置字符h
根本不可取。这也适用于图形(如果定义了其他浮动对象)。
documentclass[12pt, twocolumn]{article}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{multirow}
\usepackage{lipsum}
\begin{document}
\lipsum
\begin{table*}[tb]
\caption{Power Consumption measured in mW}
\label{table:power_consumption}
\centering
\begin{tabular}{c c c cc c cc }
\toprule
\multirow{2}{*}{\parbox[c]{.1\linewidth}{\centering }}
& Labeled & & \multicolumn{2}{c}{FBF ($q = 16$)} & & \multicolumn{2}{c}{FBF ($q = 64$)} \\
\cmidrule{2-2} \cmidrule{4-5} \cmidrule{7-8}
& size & & {Reduction in size(\%)} & Power & & {Reduction in size(\%)} & Power \\
\midrule
s1 & 125 & & 59.2 & 7.32 & & 26.4 & 0.35 \\
c2 & 81 & & 72.8 & 0.37 & & 25.9 & 0.36 \\
\bottomrule
\end{tabular}
\end{table*}
\lipsum
\end{document}
答案4
一个解决方案是:
\documentclass[12pt, twocolumn]{article}
\usepackage{booktabs,tabularx}
\usepackage{multirow}
\usepackage{lipsum}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\lipsum
\begin{table}[ht]
\centering
\footnotesize
\setlength{\tabcolsep}{3pt}
\caption{Power Consumption measured in mW}
\label{table:power_consumption}
\begin{tabularx}{\hsize}{@{}ccCcCc@{}}
\toprule
& Labeled
& \multicolumn{2}{c}{FBF ($q = 16$)}
& \multicolumn{2}{c}{FBF ($q = 64$)} \\
\cmidrule(lr){2-2} \cmidrule(lr){3-4} \cmidrule(lr){5-6}
& size & Reduction\newline
in size (\%)
& Power & Reduction\newline
in size (\%)
& Power \\
\midrule
s1 & 125 & 59.2 & 7.32 & 26.4 & 0.35 \\
c2 & 81 & 72.8 & 0.37 & 25.9 & 0.36 \\
\bottomrule
\end{tabularx}
\end{table}
\lipsum
\end{document}
我使用tabularx
包来调整表格宽度以适应列宽,更改字体以\footnotesize
使列变窄。如果您喜欢在单元格中间设置“size”,则需要使用multirow
或类似的解决方案。