如何让文本在表格中垂直居中?我查看了建议使用表格 m{} 或 b{} 标签的文档,但这对我来说不起作用。
梅威瑟:
\documentclass[a4paper]{article}
\usepackage{array}
\usepackage{multirow}
\begin{document}
\begin{tabular}{| m{0.2in} | m{0.6in} | m{0.91in} |}
\hline
Lit & Page & Pages\\
\hline
1 & 2 & 5\\
\hline
\end{tabular}
\end{document}
产生的输出:
预期输出:
我已阅读有关 \raisebox 的信息,但我不知道如何将其应用到整个表格,并且手动将其应用到每个单元格很繁琐。
更新 1:用户@Mico 建议使用\setlength\extrarowheight{2pt}
,但它会改变行高,因此这个解决方案并不精确。
是否可以在不改变行高的情况下做到这一点?
答案1
通常,只有当单元格高度大于最低要求高度时,使用m
或b
列类型代替类型才会产生差异。实际上,对于您的示例表,、和会产生完全相同的输出。p
p
m
b
我认为您要找的是\extrarowheight
长度参数。对于tabular
手头的环境,执行\setlength\extrarowheight{2pt}
似乎可以提供大致正确或理想的垂直居中效果。我故意说“大致”,因为最佳效果在很大程度上取决于单元格中的单词:它们是否有很多大写字母,以及有多少个字符有上升部和/或下降部?视觉格式化既是一门艺术,也是一门手艺……
\documentclass[a4paper]{article}
\usepackage{array} % 'multirow' package is not needed
\begin{document}
\begin{tabular}{| m{0.3in} | m{0.6in} | m{0.91in} |}
\hline
Lay & Page & Pages\\
\hline
1 & 2 & 5\\
\hline
\end{tabular}
\medskip
\setlength\extrarowheight{2pt}
\begin{tabular}{| p{0.3in} | p{0.6in} | p{0.91in} |}
\hline
Lay & Page & Pages\\
\hline
1 & 2 & 5\\
\hline
\end{tabular}
\end{document}
答案2
\multirow
如果文本恰好出现在空行之间,请不要使用:
\documentclass[12pt,a4paper]{article}
\usepackage{array,ragged2e}
\let\MC\multicolumn
\newcolumntype{M}[1]{>{\Centering}m{#1}}
\begin{document}
\def\arraystretch{1.25}
\begin{tabular}{| m{0.36in} | m{0.25in} | m{0.2in} | m{0.3in} | m{0.4in} | m{0.39in} | M{0.2in} |
M{0.2in} | M{0.2in} | M{0.6in} | M{0.91in} |}\hline
& & & & & \MC{6}{c|}{}\\\cline{1-5}
& & & & & \MC{6}{c|}{\large Work name}\\\cline{1-5}
& & & & & \MC{6}{c|}{}\\\hline
\MC{2}{|c|}{} & & & & & & Lit & & Page & Pages\\\cline{1-5}\cline{7-11}
\MC{2}{|c|}{} & & & & & & & & 1 & 5 \\\cline{1-5}\cline{7-11}
\MC{2}{|c|}{} & & & & text & \MC{5}{c|}{} \\\cline{1-5}
\MC{2}{|c|}{} & & & & & \MC{5}{c|}{\large IN-8192} \\\cline{1-5}
\MC{2}{|c|}{} & & & & & \MC{5}{c|}{} \\\hline
\end{tabular}
\end{document}
答案3
该cellspace
包允许您定义最小在以字母为前缀的说明符的列中单元格顶部和底部的垂直间距S
(或者C
如果您加载siunitx
):
\documentclass[a4paper]{article}
\usepackage{array}
\usepackage{multirow}
\usepackage{cellspace}
\setlength{\cellspacetoplimit}{4pt}
\begin{document}
\begin{tabular}{| m{0.2in} | m{0.6in} | m{0.91in} |}
\hline
Lit & Page & Pages\\
\hline
1 & 2 & 5\\
\hline
\end{tabular}
\bigskip
\begin{tabular}{| S{m{0.2in}} | S{m{0.6in}} | S{m{0.91in}} |}
\hline
Lit & Page & Pages\\
\hline
1 & 2 & 5\\
\hline
\end{tabular}
\end{document}