具有多行和多列的 Tabularx 表

具有多行和多列的 Tabularx 表

捆绑图像链接:https://i.stack.imgur.com/Ew3tL.jpg

我想要实现这种单元格格式(包括自动换行工作或者手动完成的好方法):

我最终想要得到的结果(使用 MS Word 制作):

在此处输入图片描述

然而,我看到中途的换行符显然在多行单元格中不起作用:

换行会发生什么情况?https://i.stack.imgur.com/znu9V.jpg

在此处输入图片描述

然后我尝试将文本拆分到两个不同的单元格中,但找不到将一个单元格向下移动的方法,因此文本看起来好像在一个单元格内

拆分文本会发生什么情况:https://i.stack.imgur.com/umTmX.jpg

在此处输入图片描述

您能否为我提供一个包含自动换行功能的表格工作示例?最后一列确实比较长。

我拼凑了一些东西但这并不是我想要的:https://i.stack.imgur.com/xU0la.jpg

更正内容用红色标出。最右边的列效果很好,但其他列的效果并不如我所愿。代码如下:

    \documentclass[12pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{multirow, tabularx, ragged2e}
    \newcolumntype{C}{>{\Centering\arraybackslash}X}

    \begin{document}

    \begin{table}[!ht]
    \begin{tabularx}{\textwidth}{|c|C|C|C|C}
    \hline
    \multirow{2}{*}{Text} & \multicolumn{2}{C|}{Text} & Very long text \\ \cline{2-4}
    & \multicolumn{2}{C|}{Text} & Very long text \\ \hline

    \multirow{1}{*}[-3.9em]{Text} & \multicolumn{2}{C|}{Text} & Very long text \\ \cline{2-4}

     Text& \multicolumn{2}{C|}{Text} & Very long text \\ \hline

    & \multirow{2}{*}{text} & text & text \\ \cline{3-4}

    & & text & very long text \\ \cline{2-4}

    Text & \multirow{1}{*}{Text} & Text & text \\ \cline{3-4}

    & \multirow{1}{*}{Text} & text & Very long text \\ \hline
    \end{tabularx}
    \end{table}
    \end{document}

提前感谢!

答案1

在此处输入图片描述

您的问题与您问题下方评论中提供的链接中的问题非常相似。您只需付出一点努力,就可以根据给定的示例设计您的代码。无论如何,我们开始吧:

  • 你的表有四列但是你定义了五列
  • \multirow{1}{*}{...}没有意义。一行单元格的使用是多余的。只会使你的代码变得混乱
  • 对于单元格中的多行文本,\multirow您应该定义此单元格的宽度。您可以在本地完成此操作,例如\multirow{4}{2cm}{....}或定义列宽(如下面 mwe 中所做的那样),然后使用\multieow{4}{=}{...}它来接管定义的列宽。
  • 使用\multicolumn{2}{C|}{Text}意味着此列中的文本可以有一列的宽度。对于单元格中一行文本的宽度,最好使用\multicolumn{2}{c|}{Text}。但是,如果您希望在此单元格中有多行文本,则需要增加其宽度。为此我使用

\newlength\colwidth % new length
\setlength\colwidth{\dimexpr\hsize/4+2\tabcolsep-3\arrayrulewidth\relax}% calculation width 
                                                                       % of one column as
                                                                       % calculated by tabularx
\newcommand\mcxx[1]{\multicolumn{2}{>{\hsize=2\colwidth}C|}{#1}}%

完整的 mwe 是:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{multirow, tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newlength\colwidth
\setlength\colwidth{\dimexpr\hsize/4+2\tabcolsep-3\arrayrulewidth\relax}
\newcommand\mcxx[1]{\multicolumn{2}{>{\hsize=2\colwidth}C|}{#1}}%

\usepackage{lipsum}
\begin{document}

\begin{table}[!ht]
\renewcommand\arraystretch{1.3}
\begin{tabularx}{\textwidth}{|>{\hsize=0.4\hsize}C|
                        *{3}{ >{\hsize=1.2\hsize}C|}
                            }
    \hline
\multirow{2}{=}{Text}   & \mcxx{Text}   & Very long text    \\ \cline{2-4}
                        & \mcxx{Text}   & Very long text    \\ \hline
\multirow{2}{=}{Text}   & \mcxx{Text}   & Very long text    \\ \cline{2-4}
                        & \mcxx{Text}   & Very long text    \\ \hline
\multirow{4}{=}{Test text}
                        & \multirow{2}{=}{text}
                            & Text      & Text              \\ \cline{3-4}
                        &   & Text      & very long text    \\ \cline{2-4}
                        & \multirow{2}{=}{Text\\ text}
                            & Text      & Text              \\ \cline{3-4}
                        &   & text      & Very long text    \\
    \hline
\end{tabularx}
\end{table}
\end{document}

这就是你要找的吗?

相关内容