提问于:
浏览数:
2653
![](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 回答
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` 替换 `*` 来规定列宽。
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。