m0_58036599 2023-04-01 20:52 采纳率: 0%
浏览 54
已结题

如何用LaTeX打出如下的表格

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

img

  • 写回答

3条回答 默认 最新

  • Zyb0627 2023-04-02 20:33
    关注

    引用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点,可以根据需要进行调整。
    希望这些解释能够帮助你理解表格的代码!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月3日
  • 修改了问题 4月1日
  • 创建了问题 4月1日