![](https://wenda.latexstudio.net/data/attach/210121/qnbRs6uT.png) ## 编译环境 操作系统 * [ X] Windows 7/8/10 * [ ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [X ] TexLive `2020` * [ ] MikTeX `版本号` * [ ] CTeX `若需勾选,请把[ ]改成[x]` ## 我的问题 ``` \documentclass[10.5pt,openany,twoside,cap]{ctexbook} \usepackage{longtable,diagbox,makecell,dcolumn,multirow} \newcommand{\tabincell}[2]{\begin{tabular}{@{}#1@{}}#2\end{tabular}}% \begin{document} \begin{tabular}{|p{2cm}<{\centering}|m{2cm}<{\raggedleft}|m{2cm}<{\centering}|m{2cm}<{\centering}|m{2cm}<{\centering}|m{2cm}<{\centering}|} \hline %表格横线 \diagbox[innerwidth=2cm]{科目}{成绩}{姓名} & 第二列 & 第三列 & 第四列 & 第五列 & 第六列\\ \hline 跳高& $2$ & $3$ & $4$ & $5$ & $x^6$\\ \hline 高等数学 &160 & \multicolumn{2}{c|}{\tabincell{c}{合并单元格后文本过长无法\\自行换行,并且无视列宽。}} & 不合并单元格时,文本是否自动换行。 & \\ \hline \multirow{2}{*}{飞行}& 上 & \multirow{2}{*}{\tabincell{c}{ABCDEFG\\HIJKLMN\\OPQRST\\UVWXYZ\\ABCDEFG\\HIJKLMN\\OPQRST\\UVWXYZ}} & 英文不导致变宽但不换行& & 不合并单元格时,本换行显示。\\ \cline{2-2}\cline{4-6} & 下 & & \multicolumn{2}{c|}{\multirow{2}{*}{左右上下合并}} & 12\\ \cline{1-3}\cline{6-6} 料理& 2 & 3 & \multicolumn{2}{c|}{} & 6\\ \hline \end{tabular} \end{document} ``` 问题1:纵向合并后,列高不会随着文本改变,而且对齐方式有问题。 问题2:横向合并后,合并单元格后文本过长无法自行换行,并且无视列宽。 问题3:如果我用\usepackage{tabularx}控制表格宽度,用X的话,怎么设置对齐方式。

2 回答2

0
问题1:纵向合并后,列高不会随着文本改变,而且对齐方式有问题。 这个问题要看实际情况,一般情况下合并行的时候,并不会很多文字的,如果出现,可以加每一行的行距来调节。 问题2:横向合并后,合并单元格后文本过长无法自行换行,并且无视列宽。 合并列的时候,列格式可以指定宽度的,也可以用 array 规定对齐方式的。这个和正常的列格式处理一样的。 问题三给个例子: ``` \newcolumntype{Y}{>{\centering\arraybackslash}X} \begin{tabularx}{\textwidth}{@{}lYYYYY@{}} 1 & 2 & 3 & 4 & 5 & 6\\ \end{tabularx} ```
  • 非常感谢,很有帮助。 – 小白白 2021-01-25 12:50 回复
0
LaTeX 做表格是弱项,功能没 Word 强。 纵向合并用 `\multicolumn` 后,依然可以用 `m{0.3\linewidth}<{\centering\arraybackslash}|` 设置列格式。 横向合并用 `\multirow` 后,可以用 `0.15\linewidth` 替换 `*` 来规定列宽。

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。