如何强制内容突出(垂直居中)表格单元格?

如何强制内容突出(垂直居中)表格单元格?

我想强制表格中某个单元格的内容超出单元格宽度指定量。对于c列,负字距调整可以解决问题。但我还想要垂直对齐,而负字距调整不再适用于m列。

最小工作示例:

\documentclass{article}

\usepackage{array}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}

%\begin{tabular}[h]{|M{1in}|M{1in}|M{1in}|}
\begin{tabular}[h]{|c|c|c|}
  \hline
  \rule{0.2in}{1in} &
  \rule{1in}{0.2in} &
  \rule{0.2in}{1in} \\
  \hline
  \rule{1in}{0.2in} &
  \rule{0.2in}{1in} &
  \rule{1in}{0.2in} \\
  \hline
  \rule{0.2in}{1in} &
  \kern-0.5in\rule{1.5in}{0.2in} &
  \rule{0.2in}{1in} \\
  \hline
\end{tabular}

\end{document}

在此处输入图片描述

底部中间的单元格显示了我的意思。切换\begin{tabular}行上的注释以查看它在m列上失败。我该如何让它工作?

动机:我有一列包含一堆内容相似且对齐的图像。它们大多数宽度相同,但有一列更宽,因为额外的空间包含一些额外的信息,如标签。我希望忽略额外的空间,以便图像在文档中保持对齐。我不想简单地使用左对齐或右对齐,因为这会浪费其他单元格中的额外空间。

答案1

\makebox代替使用\kern

\documentclass{article}

\usepackage{array}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}

\begin{tabular}[h]{|M{1in}|M{1in}|M{1in}|}
%\begin{tabular}[h]{|c|c|c|}
  \hline
  \rule{0.2in}{1in} &
  \rule{1in}{0.2in} &
  \rule{0.2in}{1in} \\
  \hline
  \rule{1in}{0.2in} &
  \rule{0.2in}{1in} &
  \rule{1in}{0.2in} \\
  \hline
  \rule{0.2in}{1in} &
  \makebox[1in][r]{\rule{1.5in}{0.2in}} &
  \rule{0.2in}{1in} \\
  \hline
\end{tabular}

\end{document}

解释:\makebox[1in][r]{\rule{1.5in}{0.2in}}将规则放在一个宽度的框中1inr并将其右对齐在框中。

在此处输入图片描述

相关内容