捆绑图像链接: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}
这就是你要找的吗?