我查看了很多有关表格、垂直对齐的教程,尝试过自己做,也尝试过使用 excel2latex Excel 插件做 - 但我的表格仍然有问题。非常感谢您的帮助。
\begin{table}[htbp]
\centering
\caption{Add caption}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|}
\toprule
\multirow{2}[4]{*}{long text} & \multirow{2}[4]{*}{text} &
\multirow{2}[4] {*}{\begin{sideways}text\end{sideways}} &
\multirow{2}[4] {*}{\begin{sideways}vertical long text\end{sideways}} &
\multicolumn{6}{c|}{long text} \\
\cmidrule{5-10} & & & & 1 & 2 & 3 & 4 & 5 & 6 \\
\midrule
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
\midrule
\multicolumn{10}{|c|}{long long note)} \\
\bottomrule
\end{tabular}
\label{tab:addlabel}
\end{table}
但结果是这样的
请帮我解开这个谜团!
答案1
基于 的解决方案makecell
,允许在表格单元格中换行:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{multirow, makecell, caption}
\usepackage{rotating, graphicx}
\begin{document}
\begin{table}
\setlength{\bigstrutjot}{4pt} % Additional height: 4pt
\settowidth\rotheadsize{long text}
\caption{Add caption}
\begin{tabular}{cccccccccc}
\toprule\addlinespace
\multirowcell{2}{long text \\ long text \\ long text} & \multirowcell{3}{text} & & &
\multicolumn{6}{c}{horizontal long long text} \\[1ex]
\cmidrule(lr){5-10}\addlinespace
& &\raisebox{3ex}[0pt][0pt]{\rotcell[cc]{text}} &
\raisebox{3ex}[0pt][0pt]{\rotcell[cc]{vertical \\ long text}}& 1 & 2 & 3 & 4 & 5 & 6 \\
\addlinespace
\midrule
… & … & … & … & … & … & … & … & … & … \\
… & … & … & … & … & … & … & … & … & … \\
… & … & … & … & … & … & … & … & … & … \\
… & … & … & … & … & … & … & … & … & … \\
… & … & … & … & … & … & … & … & … & … \\
… & … & … & … & … & … & … & … & … & … \\
… & … & … & … & … & … & … & … & … & … \\
\midrule
\multicolumn{10}{c}{long long note)} \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
您正在使用命令\toprule
,\midrule
并且\bottomrule
来自包书签。 在里面包装文档在第 4 节中,作者明确地状态:
[...] 新命令生成的规则无法保证与
{|}
前言中字符生成的垂直线相连接。这是一个功能 [...]。您不应该在表格中使用垂直规则,故事结束。
因此,这种行为是有意为之的,因为您不应该使用垂直规则(垂直线)。 原因已在同一文档中前面介绍过,其中作者给出了创建专业表格的指南:
- 永远不要使用垂直规则。
- 切勿使用双重规则。
- 将单位放在列标题中(而不是表格主体中)。
- 小数点前一定要加一位数字,例如 0.1不是仅 .1
- 不要使用“重复”符号或任何其他类似的惯例来重复先前的值。在许多情况下,空白也同样适用。如果不行,则重复该值
然后,您在 和 侧向 的组合方面遇到了问题multirow
。您可以手动调整,方法是添加\bigstrut
到两个标题行,这会扩大它们的大小。我选择了额外的高度4pt
,在我看来看起来相当不错。然后,通过将文本放在\parbox
例如 1.5 厘米宽度的范围内,可以确保此文本的宽度不超过此宽度。
总的来说,结果非常令人满意:
\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow,bigstrut}
\usepackage{rotating}
\begin{document}
\setlength{\bigstrutjot}{4pt} % Additional height: 4pt
\begin{tabular}{cccccccccc}
\toprule\bigstrut
\multirow{2}{*}{long text} & \multirow{2}[4]{*}{text} &
\multirow{2}{*}[-1ex]{\begin{sideways}text\end{sideways}} &
\multirow{2}{*}[1ex]{\begin{sideways}\parbox{1.5cm}{vertical long text}\end{sideways}} &
\multicolumn{6}{c}{long text} \\
\cmidrule{5-10}\bigstrut & & & & 1 & 2 & 3 & 4 & 5 & 6 \\
\midrule
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
... & ... & ... & ... & ... & ... & ... & ... & ... & ... \\
\midrule
\multicolumn{10}{c}{long long note)} \\
\bottomrule
\end{tabular}
\end{document}
答案3
使用 ConTeXt 这非常简单自然桌。
\setupcaption[table][location=top]
\starttext
\placetable[tab:addlabel]{Add caption}{
\startTABLE[align={middle,lohi}]
\NC[ny=2] long text \NC[ny=2] text \NC[ny=2] \rotate[90]{text} \NC[ny=2] \rotate[90]{vertical long text} \NC[nx=6] long text \NC\NR
\NC 1 \NC 2 \NC 3 \NC 4 \NC 5 \NC 6 \NC\NR
\NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC\NR
\NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC\NR
\NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC\NR
\NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC\NR
\NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC\NR
\NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC\NR
\NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC ... \NC\NR
\NC[nx=10] long long note \NC\NR
\stopTABLE
}
\stoptext