LaTeX调整表格适配页面宽度出现Illegal characters报错如何解决
报错原因
- 核心原因是
tabular环境的列定义和实际数据列数不匹配:你写的列格式!{\vrule}l!{\vrule}l!{\vrule}l!{\vrule}l!{\vrule}l!{\vrule}l一共定义了6个左对齐列,但表格中每行只有5个数据项,多余的列定义触发了array宏包的「Illegal characters in array arg」报错。 - 次要触发原因:
booktabs宏包的横线命令(\toprule、\midrule)和手动插入的垂直分隔线!{\vrule}排版逻辑冲突,booktabs原生不支持竖线,混用会导致排版异常或报错;如果你的代码里写的是\botrule而非booktabs原生的\bottomrule,拼写错误也会触发相关报错。 - 额外说明:用
\resizebox缩放表格会同步缩放文字大小,多份列数不同的表格会出现字体不统一的问题,不符合正规排版规范。
修复代码示例
方案1:保留竖线,弃用booktabs横线,适配5列需求
如果需要自动适配页面宽度,推荐用tabularx宏包替换tabular,自动调整列宽:
% 导言区先引入宏包 % \usepackage{tabularx} \begin{table} \caption{Values} \centering % X代表自动调整宽度的列,这里设置第一列左对齐,后四列居中对齐,总宽度为行宽 \begin{tabularx}{\linewidth}{|l|*{4}{>{\centering\arraybackslash}X|}} \hline DS & Criterion1 & Criterion2 & Criterion3 & Criterion4 \\ \hline DS1 & V1 & V2 & V3 & V4 \\ \hline DS2 & V5 & V6 & V7 & V8 \\ \hline DS3 & V9 & V10 & V11 & V12 \\ \hline DS4 & V13 & V14 & V15 & V16 \\ \hline \end{tabularx} \end{table}
方案2:保留booktabs风格,弃用竖线(符合学术排版通用规范)
% 导言区引入\usepackage{booktabs} \usepackage{tabularx} \begin{table} \caption{Values} \centering \begin{tabularx}{\linewidth}{l*{4}{>{\centering\arraybackslash}X}} \toprule DS & Criterion1 & Criterion2 & Criterion3 & Criterion4 \\ \midrule DS1 & V1 & V2 & V3 & V4 \\ \midrule DS2 & V5 & V6 & V7 & V8 \\ \midrule DS3 & V9 & V10 & V11 & V12 \\ \midrule DS4 & V13 & V14 & V15 & V16 \\ \bottomrule \end{tabularx} \end{table}
内容的提问来源于stack exchange,提问作者Mus
相关产品推荐
相关产品推荐

