LaTeX使用multirow和multicolumn制作表格出现排版错乱问题
LaTeX multicolumn/multirow 表格第一列错位修复方案
问题成因
排版错位由4个代码错误直接导致:
- 手动在表头换行符后加
\\[0.5ex]强行拔高行高,打乱了\multirow的垂直位置计算逻辑,导致跨行列文字偏移错位 - 最后一组
\multicolumn的列格式参数写错,将{|c|}写为{|c},缺失右侧竖线声明,破坏了整表的列分隔符对齐规则 - 存在冗余的重复
\cellcolor{amber}声明,虽不直接引发错位但属于无效代码 - 第二处
\multirow错误设置了3em的固定宽度,和第一列默认左对齐的l列宽不匹配,加剧内容错位
修复方案
- 删除表头两行末尾手动添加的
[0.5ex]额外行距,改用\renewcommand{\arraystretch}{1.2}统一设置全表行高,避免干扰multirow的垂直偏移计算 - 修正最后一个multicolumn的格式参数,补全缺失的右侧竖线
- 移除重复的冗余cellcolor声明
- 去掉第二处multirow多余的3em固定宽度参数,改用自适应宽度
*,让内容和第一列宽度适配
修复后完整可编译代码
\documentclass[12pt, letterpaper, twoside, openright]{book} \usepackage{amsmath} \usepackage{multirow} \usepackage{enumitem} \usepackage{booktabs, makecell, longtable} \usepackage{stackengine} \usepackage{tabularx} \usepackage{caption} \usepackage{subcaption} \usepackage[super]{nth} \usepackage{array} \newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} \usepackage[table]{xcolor} \definecolor{amber}{rgb}{1.0, 0.75, 0.0} %giallo ocra \begin{document} \begin{table}[!b] \centering \renewcommand{\arraystretch}{1.2} \begin{tabular}{l|ccc|ccc|ccc} \multirow{2}{*}{Periods and Hours} & \multicolumn{3}{c|}{\cellcolor{amber}Total} & \multicolumn{3}{c|}{\cellcolor{amber}First period} & \multicolumn{3}{c}{\cellcolor{amber}Second Period} \\ & \cellcolor{amber}hypo & \cellcolor{amber}normo & \cellcolor{amber}hyper& \cellcolor{amber}hypo & \cellcolor{amber}normo & \cellcolor{amber}hyper& \cellcolor{amber}hypo & \cellcolor{amber}normo & \cellcolor{amber}hyper\\ \hline \multirow{2}{*}{TIR (\%) PP1} & 54,02 & 14,59 & 31,38 &48,7 &9,48&41,77&59,9&20,29&19,8\\ Hour(h) & 57 & 15 & 33 &27 &5&23&30&10 &10\\ \hline \end{tabular} \end{table} \end{document}
微调提示:如果编译后觉得multirow的文字垂直位置有偏差,可以给multirow加可选垂直偏移参数,例如
\multirow{2}{*}[-1pt]{TIR (\%) PP1}即可向下微调1pt位置,适配不同的行高需求。
内容的提问来源于stack exchange,提问作者sara camp
相关产品推荐
相关产品推荐

