我有一张我定义的表
\begin{tabular}{lllllllllllll}
\includegraphics[width=7.3in]{img1.pdf} &
\includegraphics[width=7.3in]{img2.pdf} &
\includegraphics[width=7.3in]{img3.pdf} &
\includegraphics[width=7.3in]{img4.pdf} &
\includegraphics[width=7.3in]{img5.pdf} &
\includegraphics[width=7.3in]{img6.pdf} \\
\includegraphics[width=7.3in]{img7.pdf} &
\includegraphics[width=7.3in]{img8.pdf} &
\includegraphics[width=7.3in]{img9.pdf} &
\includegraphics[width=7.3in]{img10.pdf} &
\includegraphics[width=7.3in]{img11.pdf} &
\includegraphics[width=7.3in]{img12.pdf} \\
\includegraphics[width=7.3in]{img13.pdf} & \multicolumn{12}{|c}{
\hspace{3cm} \includegraphics[width=92cm]{i3} }
\end{tabular}
并非所有图像的高度都相同。我希望所有图像都与表格单元格的顶部对齐,而不是底部(现在似乎就是这种情况)。我该怎么做?
答案1
如果单元格中只有图像,则可以使用\raisebox
垂直移动所有图像到基线以下,以便它们全部顶部对齐
\raisebox{-\height}{\includegraphics[width=7.3in]{imgX.pdf}}
但是,如果同一行中有文本,它将被放置在图像正上方(基线位于顶角)。在这种更复杂的情况下,请参见如何使单元格文本垂直居中?。
答案2
使用\topincludegraphics
定义如下
\newcommand{\topincludegraphics}[2][]{%
\raisebox{\dimexpr-\height+\ht\strutbox\relax}{\includegraphics[#1]{#2}}}
而不是\includegraphics
;没有的话\ht\strutbox
就会有间隙,因为每个表行总是至少与支柱一样高。
答案3
\documentclass{article}
\usepackage{array}
\newsavebox\topalignbox
\newcolumntype{T}{%
>{\begin{lrbox}\topalignbox
\rule{0pt}{\ht\strutbox}}
c
<{\end{lrbox}%
\raisebox{\dimexpr-\height+\ht\strutbox\relax}%
{\usebox\topalignbox}}}
%%% or
%\newcolumntype{T}{%
% >{\vtop\bgroup\vspace*{-\ht\strutbox}%
% \hbox\bgroup\rule{0pt}{\ht\strutbox}}
% c
% <{\egroup\egroup}}
\begin{document}
\begin{tabular}{|T|T|} \hline
\rule{2cm}{3cm} & \rule{3cm}{4cm} \\ \hline
\rule{4cm}{5cm} & \rule{2cm}{2cm} \\ \hline
aabb & ccdd \\ \hline
\end{tabular}
\end{document}
这有点复杂。它不同于xport 的解决方案因为它简化了宽度计算。核心代码与 egreg 的相同。
对于垂直居中,最好使用原始 TeX \vcenter
:
\documentclass{article}
\usepackage{array}
\newcolumntype{M}{>{$\vcenter\bgroup\hbox\bgroup}c<{\egroup\egroup$}}
\begin{document}
\begin{tabular}{|M|M|} \hline
\rule{2cm}{3cm} & \rule{3cm}{4cm} \\ \hline
\rule{4cm}{5cm} & \rule{2cm}{2cm} \\ \hline
\end{tabular}
\end{document}