我有一张包含两列的表格。第一列包含文本,第二列包含图像。简短示例:
\documentclass{article}
\begin{document}
\begin{table}[htbp]
\centering
\caption{My caption}
\label{tab:mytab}
\begin{tabular}{|p{1.0cm}|c|}
\hline
\textbf{Number} & \textbf{Images} \\ \hline
Nr. 1 & \raisebox{.5\totalheight}{\includegraphics[width=0.8\textwidth]{foo}} \\ \hline
Nr. 2 & \raisebox{.5\totalheight}{\includegraphics[width=0.8\textwidth]{foo}} \\ \hline
\end{tabular}
\end{table}
\end{document}
我想让文本和图像垂直和水平居中。有人知道怎么做吗?
答案1
借助该包adjustbox
您可以获得:
第一行图片上下边距已添加,第二行图片未添加边距。代码如下:
\documentclass{article}
\usepackage{graphicx}
\usepackage[export]{adjustbox}
\begin{document}
\begin{table}[htbp]
\centering
\caption{My caption}
\label{tab:mytab}
\begin{tabular}{|p{1.5cm}|c|}
\hline
\textbf{Number}
& \textbf{Images} \\
\hline
Nr. 1 & \includegraphics[width=0.8\textwidth,
margin=0pt 1ex 0pt 1ex,valign=m]{example-image} \\
\hline
Nr. 2 & \includegraphics[width=0.8\textwidth,valign=m]{example-image} \\
\hline
\end{tabular}
\end{table}
\end{document}
附录:如果您希望在第一个表的列中也水平居中内容,则需要进行以下更改:
- 在序言中补充
\usepackage{array}
- 在表参数中,列类型
p{...}
应该替换为>{\centering}p{...}
答案2
在提供的示例中,长度 省略了一个减号.5\totalheight
。使用 时,图形图像设置在基线上方\includegraphics
,而tabular
单元格居中。因此,必须移动图形图像向下用其高度的一半来补偿。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{table}[htbp]
\centering
\caption{My caption}
\label{tab:mytab}
\begin{tabular}{|p{1.0cm}|c|}
\hline
\textbf{Number} & \textbf{Images} \\ \hline
Nr. 1 & \raisebox{-.5\totalheight}{\includegraphics[width=0.8\textwidth]{example-image}} \\ \hline
Nr. 2 & \raisebox{-.5\totalheight}{\includegraphics[width=0.8\textwidth]{example-grid-100x100pt}} \\ \hline
\end{tabular}
\end{table}
\end{document}
要得到更加精确居中,图像的向下移动应该由一行文本高度的 1/2 来补偿,因此,移动应该按如下方式进行\raisebox{-.5\dimexpr\totalheight-\ht\strutbox}{...}
。
请注意,我还将第一列加宽至1.3cm
,以便能够Number
容纳单词。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{table}[htbp]
\centering
\caption{My caption}
\label{tab:mytab}
\begin{tabular}{|p{1.3cm}|c|}
\hline
\textbf{Number} & \textbf{Images} \\ \hline
Nr. 1 & \raisebox{-.5\dimexpr\totalheight-\ht\strutbox}{%
\includegraphics[width=0.8\textwidth]{example-image}} \\ \hline
Nr. 2 & \raisebox{-.5\dimexpr\totalheight-\ht\strutbox}{%
\includegraphics[width=0.8\textwidth]{example-grid-100x100pt}}\\ \hline
\end{tabular}
\end{table}
\end{document}