我希望每个单元格中的文本垂直居中。
\documentclass[12pt,a4paper,onesided]{report}
\usepackage{array}
\usepackage{booktabs}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Recognition with Haar Wavelet based image compression for $N=5$ features}
\label{tab: Recognition with Haar Wavelet based image compression for $N=5$ features}
\begin{tabular}{|C{1.8cm}||C{1.8cm}||C{2cm}||C{1.8cm}|C{1.8cm}||C{1.8cm}||C{2.5cm}|}
\toprule \bfseries Training folder
&\bfseries Training Time
&\bfseries Training Accuracy
& \multicolumn{2}{c|}{\bfseries Number of images}
&\bfseries Testing folder
& \bfseries Recognition accuracy\\
& & & \bfseries Training &\bfseries Testing & &\\ \midrule
1 & 0.52 & 70.00 & 10 & 90 & 9 & 14.44 \\
2 & 0.66 & 85.00 & 20 & 80 & 8 & 38.75 \\
3 & 0.74 & 86.66 & 30 & 70 & 7 & 40.00 \\
4 & 0.68 & 85.00 & 40 & 60 & 6 & 48.33 \\
5 & 0.88 & 88.00 & 50 & 50 & 5 & 62.00 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案1
无需定义新列类型或计算列宽的解决方案。只需使用makecell
、caption
和multirow
包以及 plus hhline
即可改善双线的外观。表格可以通过两种方式适应您的边距:减小 tabcolsep
到 4pt 并使用文档的较小字体大小(我给出了 11pt 的示例)或将字体大小减小locally
到 10 pt(\small
12pt 中的命令即可)。
顺便说一句,不要 booktabs
与垂直线一起使用。
\documentclass[11pt,a4paper,onesided]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[showframe, nomarginpar, left=1.5in, right=1in, top=1.5in, bottom=1in,]{geometry}
\usepackage{array}
\usepackage[font = small]{caption}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{makecell}
\renewcommand{\theadfont}{\bfseries}
\renewcommand{\theadalign}{cc}
\setlength{\tabcolsep}{4pt}
\usepackage{hhline}
\begin{document}
Table fontsize: 11 pt
\begin{table}[htbp]
\centering
\caption{Recognition with Haar Wavelet based image compression for $N=5$ features}
\label{tab: Recognition with Haar Wavelet based image compression for $N=5$ features}
\begin{tabular}{*{3}{|c|}|cc|*{2}{|c|}}%{|C{1.8cm}||C{1.8cm}||C{2cm}||C{1.8cm}|C{1.8cm}||C{1.8cm}||C{2.5cm}|}
\hhline{|-||-||-||--||-||-|}
\multirowthead{2}{Training\\ Folder}
&\multirowthead{2}{Training\\ Time}
&\multirowthead{2}{Training\\ Accuracy}
& \multicolumn{2}{c||}{\thead{Number of images}}
&\multirowthead{2}{Testing\\ Folder}
& \multirowthead{2}{Recognition\\ Accuracy}\\
& & & \thead*{Training} & \thead{Testing} & &\\
\hhline{|-||-||-||--||-||-|}
\Gape[6pt][0pt]{1} & 0.52 & 70.00 & 10 & 90 & 9 & 14.44 \\
2 & 0.66 & 85.00 & 20 & 80 & 8 & 38.75 \\
3 & 0.74 & 86.66 & 30 & 70 & 7 & 40.00 \\
4 & 0.68 & 85.00 & 40 & 60 & 6 & 48.33 \\
\Gape[0pt][6pt]{5} & 0.88 & 88.00 & 50 & 50 & 5 & 62.00 \\
\hhline{|-||-||-||--||-||-|}
\end{tabular}
\end{table}
\fontsize{12}{14}\selectfont
Table font size: 10 point
\begin{table}[htbp]
\small
\centering
\caption{Recognition with Haar Wavelet based image compression for $N=5$ features}
%\small
\label{tab: Recognition with Haar Wavelet based image compression for $N=5$ features}
\begin{tabular}{*{3}{|c|}|cc|*{2}{|c|}}%{|C{1.8cm}||C{1.8cm}||C{2cm}||C{1.8cm}|C{1.8cm}||C{1.8cm}||C{2.5cm}|}
\hhline{|-||-||-||--||-||-|}
\multirowthead{2}{Training\\ Folder}
&\multirowthead{2}{Training\\ Time}
&\multirowthead{2}{Training\\ Accuracy}
& \multicolumn{2}{c||}{\thead{Number of images}}
&\multirowthead{2}{Testing\\ Folder}
& \multirowthead{2}{Recognition\\ Accuracy}\\
& & & \thead*{Training} & \thead{Testing} & &\\
\hhline{|-||-||-||--||-||-|}
\Gape[6pt][0pt]{1} & 0.52 & 70.00 & 10 & 90 & 9 & 14.44 \\
2 & 0.66 & 85.00 & 20 & 80 & 8 & 38.75 \\
3 & 0.74 & 86.66 & 30 & 70 & 7 & 40.00 \\
4 & 0.68 & 85.00 & 40 & 60 & 6 & 48.33 \\
\Gape[0pt][6pt]{5} & 0.88 & 88.00 & 50 & 50 & 5 & 62.00 \\
\hhline{|-||-||-||--||-||-|}
\end{tabular}
\end{table}
\end{document}
答案2
这就是你想要的吗?这里的解决方案定义了一个\mc
宏,以文本作为结构的参数multirow
,将文本换行成两行,左对齐。
\newcommand\mc[1]{\multicolumn{1}{l||}{\multirow{2}{0.9cm}{#1}}}
代码
\documentclass[12pt,a4paper]{report}
\usepackage{array,graphicx}
\usepackage[margin=1cm]{geometry}
\usepackage{booktabs,dcolumn,multirow}
\newcolumntype{C}[1]{>{\centering \arraybackslash\hspace{0pt}}m{#1}}
\newcommand\mc[1]{\multicolumn{1}{l||}{\multirow{2}{0.9cm}{#1}}}
\begin{document}
Before:
\begin{table}[htbp]
\centering
\caption{Recognition with Haar Wavelet based image compression for $N=5$ features}
\label{tab: Recognition with Haar Wavelet based image compression for $N=5$ features}
\begin{tabular}{|C{1.8cm}||C{1.8cm}||C{2cm}||C{1.8cm}|C{1.8cm}||C{1.8cm}||C{2.5cm}|}
\toprule \bfseries Training folder
&\bfseries Training Time
&\bfseries Training Accuracy
& \multicolumn{2}{c|}{\bfseries Number of images}
&\bfseries Testing folder
& \bfseries Recognition accuracy\\
& & & \bfseries Training &\bfseries Testing & &\\ \midrule
1 & 0.52 & 70.00 & 10 & 90 & 9 & 14.44 \\
2 & 0.66 & 85.00 & 20 & 80 & 8 & 38.75 \\
3 & 0.74 & 86.66 & 30 & 70 & 7 & 40.00 \\
4 & 0.68 & 85.00 & 40 & 60 & 6 & 48.33 \\
5 & 0.88 & 88.00 & 50 & 50 & 5 & 62.00 \\
\bottomrule
\end{tabular}
\end{table}
After:
\begin{table}[htbp]
\centering
\resizebox{\textwidth}{!}{ % if resizebox is needed
\begin{minipage}{\textwidth} % if resizebox is needed
\caption{Recognition with Haar Wavelet based image compression for $N=5$ features}
\label{tab: Recognition with Haar Wavelet based image compression for $N=5$ features}
\begin{tabular}{|C{1.8cm}||C{1.8cm}||C{2cm}||C{1.8cm}|C{1.8cm}||C{1.8cm}||C{2.5cm}|}
\toprule
\multicolumn{1}{|l||}{\multirow{2}{0.9cm}{\bfseries Training folder}}
&\mc{\bfseries Training Time}
&\mc{\bfseries Training Accuracy}
&\multicolumn{2}{c||}{\bfseries Number of images}
&\mc{\bfseries Testing folder}
&\multicolumn{1}{l|}{\multirow{2}{0.9cm}{\bfseries Recognition accuracy}} \\
& & & \bfseries Training &\bfseries Testing & &\\
\midrule
1 & 0.52 & 70.00 & 10 & 90 & 9 & 14.44 \\
2 & 0.66 & 85.00 & 20 & 80 & 8 & 38.75 \\
3 & 0.74 & 86.66 & 30 & 70 & 7 & 40.00 \\
4 & 0.68 & 85.00 & 40 & 60 & 6 & 48.33 \\
5 & 0.88 & 88.00 & 50 & 50 & 5 & 62.00 \\
\bottomrule
\end{tabular}
\end{minipage} % if resizebox is needed
} % if resizebox is needed
\end{table}
\end{document}