我想要创建一个如下所示的表格:
这就是我已经取得的进展:
\begin{document}
\begin{table}[!h]
\centering
\begin{tabular}{| m{3,2cm} |m{3,4cm} | m{3,8cm}| m{3,8cm}|}
\hline \hline
& {\textbf{Header1}} & {\textbf{Header2}} & {\textbf{Header3}} \\ [2ex] \hline \hline
{\textbf{Text}} & \centering Text1
\begin{minipage} {0.3\textwidth}
\includegraphics[width=3.2cm, height= 3cm]{image1}
\end{minipage}
& \centering Text2
\begin{minipage} {0.3\textwidth}
\includegraphics[width=3.4cm, height= 3.1cm]{image2}
\end{minipage}
&
Text3
\\ \hline
\end{tabular}
\caption{text}\label{.}
\end{table}
\end{document}
当我尝试使用 \centering 将标题 3 居中时,它会抛出一个错误。当我尝试插入图像 3 时也会出现同样的情况。我不知道为什么?
答案1
我将加载该array
包并使用其\newcolumntype
指令来创建列类型的居中版本m
。请注意,无需将\includegraphics
指令包含在minipage
环境中。
\documentclass{article}
\usepackage[a4paper,margin=2.5cm]{geometry} % set page parameters appropriately
\usepackage[demo]{graphicx} % remove 'demo' option in real document
\usepackage{array} % for '\newcolumntype' macro
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} % centered version of 'm' col. type
\begin{document}
\begin{table}[!h]
\setlength\extrarowheight{2pt} % for a more open "look"
\centering
\begin{tabular}{| C{3.2cm} | C{3.4cm} | C{3.8cm}| C{3.8cm}| }
\cline{2-4}
\multicolumn{1}{c|}{}
& {\textbf{Header1}} & {\textbf{Header2}} & {\textbf{Header3}} \\[0.5ex]
\hline
\textbf{Text0}
& Text1\strut % '\strut' creates some vertical separation to the image below
\includegraphics[width=\linewidth, height= 3.1cm]{image1}
& Text2\strut
\includegraphics[width=\linewidth, height= 3.1cm]{image2}
& Text3\strut
\includegraphics[width=\linewidth, height= 3.1cm]{image3}
\\
\hline
\end{tabular}
\caption{text}\label{.}
\end{table}
\end{document}
答案2
使用包\adjustimage{<settings>}{<image file name>}
中定义的,adjustbox
您可以简单地设置图像的位置及其边距。在下面的 MWE 中,假设所有图像都可以具有相同的宽度(从您的代码片段可以看出,它们之间的差异非常小)。这个假设使表格代码更短:
\documentclass{article}
\usepackage{makecell, tabularx}
\renewcommand\theadfont{\bfseries}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\usepackage[demo,
export]{adjustbox}
\begin{document}
\begin{table}[!h]
\centering
\setlength\tabcolsep{3pt}
\adjustboxset{width=\dimexpr\linewidth, height=32mm,
valign=c, margin=0pt 4pt 0pt 2pt}
\begin{tabularx}{\linewidth}{|>{\bfseries} l |*{3}{C|} }
\hline \hline
& \thead{Header 1} & \thead{Header 2} & \thead{Header 3} \\
\hline \hline
& Text 1 & Text 2 & Text 3 \\
Text & \adjustimage{}{image1}
& \adjustimage{}{image2}
& \adjustimage{}{image3} \\
\hline
\end{tabularx}
\caption{text}
\label{tab:images}
\end{table}
\end{document}
附录:\height
考虑到@Mico 评论,可以通过在 中插入和width
来 更改图像宽度adjustbox
。在这种情况下,article
文档类中的表变得比其标准文本宽度更宽。因此建议使用包更改页面布局geometry
:
\documentclass{article}
\usepackage{geometry}
\usepackage{makecell, tabularx}
\renewcommand\theadfont{\bfseries}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\usepackage[demo,
export]{adjustbox} % it also load grahicx package
\begin{document}
\begin{table}[!h]
\centering
\renewcommand\tabularxcolumn[1]{m{#1}}
\setlength\tabcolsep{3pt}
\adjustboxset{valign=c, margin=0pt 4pt 0pt 2pt}
\begin{tabularx}{\linewidth}{|>{\bfseries\raggedright} X |*{3}{c|} }
\hline \hline
& \thead{Header 1} & \thead{Header 2} & \thead{Header 3} \\
\hline \hline
& Text 1 & Text 2 & Text 3 \\
Text & \adjustimage{width=34mm,height=16mm}{image1}
& \adjustimage{width=38mm,height=16mm}{image2}
& \adjustimage{width=38mm,height=16mm}{image3} \\
\hline
\end{tabularx}
\caption{text}
\label{tab:images}
\end{table}
\end{document}