LaTeX初学者,不会用LaTeX打出如下的表格,希望能给出代码并解释一下。
基本要求:
宽度和页面宽度一致,对齐方式要按照图片内容,单元格合并与图片内容一致,第一条线和最后一条线加粗

LaTeX初学者,不会用LaTeX打出如下的表格,希望能给出代码并解释一下。
基本要求:
宽度和页面宽度一致,对齐方式要按照图片内容,单元格合并与图片内容一致,第一条线和最后一条线加粗

引用chatGPT作答,以下是使用LaTeX制作该表格的代码:
\documentclass{article}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{array}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\usepackage{makecell}
\renewcommand\theadfont{\bfseries}
\begin{document}
\begin{table}[htbp]
\centering
\caption{表格标题}
\begin{tabular}{@{\extracolsep{\fill}}M{0.18\linewidth}M{0.14\linewidth}M{0.14\linewidth}M{0.14\linewidth}M{0.14\linewidth}M{0.14\linewidth}@{}}
\toprule[2pt]
\thead{ } & \thead{国家1} & \thead{国家2} & \thead{国家3} & \thead{国家4} & \thead{国家5} \\
\midrule[1.5pt]
\multirow{3}{*}{\rotatebox{90}{大洲1}} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} \\
& \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \makecell{内容1 \\ 内容2} \\
& \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \makecell{内容1 \\ 内容2} \\
\cmidrule{2-6}
\multirow{3}{*}{\rotatebox{90}{大洲2}} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} \\
& \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \makecell{内容1 \\ 内容2} \\
& \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \makecell{内容1 \\ 内容2} \\
\cmidrule{2-6}
\multirow{3}{*}{\rotatebox{90}{大洲3}} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\ 内容2} & \makecell{内容1 \\内容2} & \makecell{内容1 \ 内容2} \
& \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \makecell{内容1 \ 内容2} \
& \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \multicolumn{2}{c}{\includegraphics[width=0.28\linewidth]{example-image-a}} & \makecell{内容1 \ 内容2} \
\bottomrule[2pt]
\end{tabular}%
\label{tab:my_table}%
\end{table}%
\end{document}
解释一下代码:
首先,我们使用\documentclass{article}命令指定了LaTeX文档的类型,然后引入了必要的宏包,包括graphicx(用于插入图片)、booktabs(用于制作漂亮的表格线条)和array(用于自定义表格列样式)。接下来,我们定义了一个M列样式,它会居中内容并自动换行,用于控制表格中大多数列的样式。我们还使用makecell宏包来允许我们在单元格中使用换行符,并使用\theadfont命令定义表格头的字体样式。
在tabular环境中,我们使用@{\extracolsep{\fill}}指定了列之间的间距,并使用M列样式定义了6列。在表格中,我们使用\toprule、\midrule和\bottomrule命令定义表格的粗线条,以及\cmidrule命令定义表格中的中等线条。
在表格中,我们使用\multirow和\makecell命令实现单元格合并和内容换行。对于需要合并单元格的行,我们使用\multicolumn命令,并指定列数和包含的内容。对于需要旋转的表头,我们使用\rotatebox命令,并指定旋转角度。最后,我们使用\includegraphics命令插入图片,并指定图片的宽度。注意,我们在表格中的第二行和第三行中使用了相同的图像,因此我们只需要将其插入一次并使用\multicolumn命令在表格中跨越两列。
此外,我们还使用了\caption命令和\label命令,分别用于给表格添加标题和标签。我们将标签命名为tab:my_table,以便在文档中引用该表格。
最后,我们使用\end{table}命令来结束表格环境,\end{document}命令来结束整个文档。
需要注意的一些细节:
为了使表格的宽度与页面宽度一致,我们使用了\linewidth来指定列宽度和图片宽度。具体来说,每列宽度为\linewidth/6,而每个图像宽度为\linewidth/3。
在表格中使用\cmidrule命令时,我们使用lr参数来指定线条应跨越的列。例如,\cmidrule(lr){1-2}表示在第一列和第二列之间绘制一条中等线条,并将线条向左和向右延伸。
为了使表格的第一条线和最后一条线加粗,我们使用了\toprule[2pt]和\bottomrule[2pt]命令,而不是\toprule和\bottomrule命令。其中2pt参数指定线条宽度为2点,可以根据需要进行调整。
希望这些解释能够帮助你理解表格的代码!