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