垂直居中表格单元格?

垂直居中表格单元格?

使表格的每一行居中对齐的最简单方法是什么?我有一个包含图像的表格列,同一行中的其他单元格包含文本。我想知道如何垂直居中对齐图像和文本单元格。目前,每行都是垂直底部对齐的。这是我的代码:

\documentclass[a4paper]{article}
\usepackage[margin=1.0in]{geometry}
\usepackage{booktabs, caption, underscore, url, graphicx}
\captionsetup{font=bf}
\date{2012-03-01}
\begin{document}
\begin{table}[ht]
\centering

\begin{tabular}{cccc} \bottomrule[2pt]
A & B & V & D & E \\ \bottomrule
\includegraphics[scale=0.35]{img1.eps} & 2 & 3 & 4 \\ 
\includegraphics[scale=0.35]{img2.eps} & 2 & 3 & 4  \\ 
\bottomrule[2pt]
\end{tabular}

\end{table}
\end{document}

以下是我想要实现的表格的简要草图:

在此处输入图片描述

第一列包含图像,而其他列包含一行文本。如何使文本与图像中间对齐?

答案1

可以通过列m{<width>}类型垂直居中单元格条目array包裹。通过在列条目前添加\centering\arraybackslash( 也支持array)可实现水平居中。为了完整和简洁起见,下面的 MWE 定义了M可执行上述所有操作的新列类型:

在此处输入图片描述

\documentclass[a4paper]{article}
%\usepackage{showframe}% http://ctan.org/pkg/showframe
\usepackage[margin=1.0in]{geometry}% http://ctan.org/pkg/margin
\usepackage{booktabs}% http://ctan.org/pkg/booktabs
\usepackage{array}% http://ctan.org/pkg/array
\newcolumntype{M}{>{\centering\arraybackslash}m{\dimexpr.25\linewidth-2\tabcolsep}}
\begin{document}
\begin{table}[ht]
  \centering
  \begin{tabular}{MMMM}
    \toprule
    A & B & D & E \\
    \midrule
    \rule{15pt}{10pt} & One & Two & Three \\ 
    \rule{15pt}{10pt} & Three & One & Two \\ 
    \rule{15pt}{10pt} & Two & Three & One \\ 
    \bottomrule
  \end{tabular}
\end{table}
\end{document}​

对于图像,我使用了\rule{15pt}{10pt},尽管上述解决方案适用于任何图像尺寸。

表格宽度也选择为恰好适合文本块,使四列的每一列都具有相同的宽度(.25\linewidth-2\tabcolsep)。要查看此内容,请取消注释showframe包裹突出显示文本块边界。

答案2

图像总是以基线为基准(如果它们没有旋转)。所以你需要降低图形;最简单的方法是说

\raisebox{-.5\height}{\includegraphics[scale=0.35]{img1.eps}}

如果要考虑行高,则需要稍微复杂一点的计算:

\raisebox{\dimexpr-.5\height+.5\ht\strutbox\relax}
  {\includegraphics[scale=0.35]{img1.eps}}

adjustbox软件包具有许多功能,可以简化此类工作;之后\usepackage{adjustbox}你可以说

\adjustbox{valign=m}{\includegraphics[scale=0.35]{img1.eps}}

相关内容