表格中的文本垂直居中,行高最小

表格中的文本垂直居中,行高最小

如何让文本在表格中垂直居中?我查看了建议使用表格 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}

产生的输出:

Produced

预期输出:

Expected

我已阅读有关 \raisebox 的信息,但我不知道如何将其应用到整个表格,并且手动将其应用到每个单元格很繁琐。

更新 1:用户@Mico 建议使用\setlength\extrarowheight{2pt},但它会改变行高,因此这个解决方案并不精确。

是否可以在不改变行高的情况下做到这一点?

答案1

通常,只有当单元格高度大于最低要求高度时,使用mb列类型代替类型才会产生差异。实际上,对于您的示例表,、和会产生完全相同的输出。ppmb

我认为您要找的是\extrarowheight长度参数。对于tabular手头的环境,执行\setlength\extrarowheight{2pt}似乎可以提供大致正确或理想的垂直居中效果。我故意说“大致”,因为最佳效果在很大程度上取决于单元格中的单词:它们是否有很多大写字母,以及有多少个字符有上升部和/或下降部?视觉格式化既是一门艺术,也是一门手艺……

enter image description here

\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}

enter image description here

答案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} 

enter image description here

相关内容