LaTeX子表格排版求助:如何实现2×5布局?
解决子表格无法同行排列的问题
问题原因
你代码里同一行的subtable之间存在空行,LaTeX会将空行识别为段落分隔符,导致自动换行。另外需要注意:一行内所有subtable的总宽度(含间距)不能超过页面宽度,否则也会触发自动换行。
调整要点
- 删掉同一行
subtable之间的空行,用\hfill分隔,保证子表格均匀分布在一行内 - 调整每个
subtable的宽度,确保一行内总宽度不超出\textwidth - 可选:缩小表格内字体(比如
\footnotesize),避免内容撑爆subtable
修改后的2×2示例代码
\begin{table*} \centering \caption{\textcolor{red}{Confusion matrices for well-known pretrained convolutional neural networks}} % 第一行两个子表格 \begin{subtable}[t]{0.18\textwidth} \centering \footnotesize \begin{tabular}{ccccc} & & \multicolumn{3}{c}{Predicted} \\ & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{K} & \multicolumn{1}{c|}{C} & R \\ \cline{2-5} \multirow{3}{*}{\rotatebox[origin=c]{90}{Actual}} & \multicolumn{1}{c|}{K} & \multicolumn{1}{c|}{60} & \multicolumn{1}{c|}{5} & 7\\ \cline{2-5} & \multicolumn{1}{c|}{C} & \multicolumn{1}{c|}{8} & \multicolumn{1}{c|}{82} & 6\\ \cline{2-5} & \multicolumn{1}{c|}{R} & \multicolumn{1}{c|}{6} & \multicolumn{1}{c|}{3} & 99 \end{tabular} \subcaption{DenseNet 121} \label{tab:conf_densenet121} \end{subtable} \hfill \begin{subtable}[t]{0.18\textwidth} \centering \footnotesize \begin{tabular}{ccccc} & & \multicolumn{3}{c}{Predicted} \\ & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{K} & \multicolumn{1}{c|}{C} & R \\ \cline{2-5} \multirow{3}{*}{\rotatebox[origin=c]{90}{Actual}} & \multicolumn{1}{c|}{K} & \multicolumn{1}{c|}{65} & \multicolumn{1}{c|}{2} & 5\\ \cline{2-5} & \multicolumn{1}{c|}{C} & \multicolumn{1}{c|}{7} & \multicolumn{1}{c|}{86} & 3\\ \cline{2-5} & \multicolumn{1}{c|}{R} & \multicolumn{1}{c|}{4} & \multicolumn{1}{c|}{3} & 101 \end{tabular} \subcaption{DenseNet 201} \label{tab:conf_densenet201} \end{subtable} \vskip\baselineskip % 两行之间留间距 % 第二行两个子表格 \begin{subtable}[t]{0.18\textwidth} \centering \footnotesize \begin{tabular}{ccccc} & & \multicolumn{3}{c}{Predicted} \\ & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{K} & \multicolumn{1}{c|}{C} & R \\ \cline{2-5} \multirow{3}{*}{\rotatebox[origin=c]{90}{Actual}} & \multicolumn{1}{c|}{K} & \multicolumn{1}{c|}{63} & \multicolumn{1}{c|}{4} & 5\\ \cline{2-5} & \multicolumn{1}{c|}{C} & \multicolumn{1}{c|}{5} & \multicolumn{1}{c|}{90} & 1\\ \cline{2-5} & \multicolumn{1}{c|}{R} & \multicolumn{1}{c|}{3} & \multicolumn{1}{c|}{4} & 101 \end{tabular} \subcaption{ResNet50 V2} \label{tab:conf_resnet50v2} \end{subtable} \hfill \begin{subtable}[t]{0.18\textwidth} \centering \footnotesize \begin{tabular}{ccccc} & & \multicolumn{3}{c}{Predicted} \\ & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{K} & \multicolumn{1}{c|}{C} & R \\ \cline{2-5} \multirow{3}{*}{\rotatebox[origin=c]{90}{Actual}} & \multicolumn{1}{c|}{K} & \multicolumn{1}{c|}{62} & \multicolumn{1}{c|}{6} & 4\\ \cline{2-5} & \multicolumn{1}{c|}{C} & \multicolumn{1}{c|}{7} & \multicolumn{1}{c|}{88} & 1\\ \cline{2-5} & \multicolumn{1}{c|}{R} & \multicolumn{1}{c|}{2} & \multicolumn{1}{c|}{4} & 102 \end{tabular} \subcaption{ResNet152 V2} \label{tab:conf_resnet152v2} \end{subtable} \label{tab:confusion} \end{table*}
扩展到2×5布局的方法
要实现2行5列的布局,按以下步骤调整:
- 将每个
subtable的宽度设为0.19\textwidth左右(5个总宽度为0.95,留少量间距避免超出页面) - 同一行的5个
subtable用\hfill分隔,中间不能有空行 - 若表格内容仍过宽,用
\scriptsize进一步缩小字体,或添加\setlength{\tabcolsep}{2pt}减小表格内部列间距
第一行示例代码片段:
% 第一行5个子表格 \begin{subtable}[t]{0.19\textwidth} \centering \scriptsize % 此处放入你的混淆矩阵tabular代码 \subcaption{模型1} \end{subtable} \hfill \begin{subtable}[t]{0.19\textwidth} \centering \scriptsize % 此处放入你的混淆矩阵tabular代码 \subcaption{模型2} \end{subtable} \hfill \begin{subtable}[t]{0.19\textwidth} \centering \scriptsize % 此处放入你的混淆矩阵tabular代码 \subcaption{模型3} \end{subtable} \hfill \begin{subtable}[t]{0.19\textwidth} \centering \scriptsize % 此处放入你的混淆矩阵tabular代码 \subcaption{模型4} \end{subtable} \hfill \begin{subtable}[t]{0.19\textwidth} \centering \scriptsize % 此处放入你的混淆矩阵tabular代码 \subcaption{模型5} \end{subtable}
必要前置包
确保文档开头导入以下包:
\usepackage{subcaption} % 支持subtable环境 \usepackage{multirow} % 支持multirow命令 \usepackage{graphicx} % 支持rotatebox命令 \usepackage{xcolor} % 支持textcolor命令
内容的提问来源于stack exchange,提问作者Ernest
相关产品推荐
相关产品推荐

