答案1
如图所示,这是一个相对复杂的表格,因为它需要以下元素:
- 旋转单元格 ->
rotating
包装 - 跨多列的单元格 ->
\multicolumn{<number of columns>}{<alignment>}{<content>}
- 跨多行的单元格 ->
multirow
包
此外,默认情况下,LaTeX 表格不允许足够的垂直间距。使用水平线会加剧此问题。此外,一些水平线通常应该比其他水平线更粗。为了在具有垂直线的表格中考虑这些因素,我使用了makecell
。我还使用了array
标准 LaTeX 语法的基本扩展,它使自定义内容变得更容易一些。
因此,在文件序言中,我们有
\usepackage{rotating,multirow,makecell,array}
加载包。我使用了 3 种不同的规则重量:标准、稍厚和更厚。为方便起见,我们在一个地方定义非标准规则高度,以便可以轻松修改和一致应用它们。
\newlength\xlineht
\newlength\mlineht
\setlength\xlineht{1.2pt}
\setlength\mlineht{.8pt}
为了方便和一致性,我们再次定义了几种额外的列类型。
\newcolumntype{C}{c!{\vrule width \xlineht}}
\newcolumntype{M}{c!{\vrule width \mlineht}}
makecell
允许我们在单元格周围配置一些额外的间距,这是我们需要的。所以我们设置了一些内容。
\setcellgapes{3pt}
我们希望我们的标题是粗体的。
\renewcommand\theadfont{\bfseries}
序言部分就到此为止。现在,我们来看文件本身。
\begin{table}
table
如果希望表格浮动,请将其放入环境中。如果这样做,您可能需要使用\caption{}
and \label{}
,以便可以在文本中引用它。
如果您不想让桌子从放置它的位置移动,请使用环境center
。
\makegapedcells
这会在单元格周围应用额外的间距。
\begin{tabular}{!{\vrule width \xlineht}c|M*{3}{c|}C}
规范如下tabular
:从左侧开始,使用宽度较粗的垂直规则;然后是居中列和标准规则;然后是我们的自定义列之一M
;然后是 3 个居中列,后面跟着标准规则;最后是另一个自定义列C
。
\Xhline{\xlineht}
高度规则较厚,但仍可开始。
\multicolumn{2}{!{\vrule width \xlineht}M}{}& \multicolumn{2}{c|}{\thead{C1}} & \multicolumn{2}{C}{\thead{C2}}\\\cline{3-6}
第一个标题行,用于\multicolumn
跨越 2 列的单元格和\thead
标题内容,后跟部分规则。
\multicolumn{2}{!{\vrule width \xlineht}M}{}& \thead{P1} & \thead{P2} & \thead{P1} & \thead{P2} \\\cline{3-6}
第二个标题行。
\multicolumn{2}{!{\vrule width \xlineht}M}{}& {0.33} & {0.66} & {0.2} & {0.8} \\\Xhline{\mlineht}
第三个标题行的单元格内容未被格式化为标题,后面跟着一条更粗的线。
现在,第一个跨多行的单元格 (9) 也进行了旋转。我们在这里使用\rotatebox
而不是 ,makecell
因为我搞不清楚如何使用makecell
自己的旋转包装器来实现这一点。
\multirowcell{9}{\rotatebox[]{-90}{\theadfont Different alpha}} & 0.1 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{25} \\\cline{2-6}
还有一些跨列内容和部分规则。
我们按照同样的方式继续。
& 0.2 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{67} \\\cline{2-6}
& 0.3 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{890} \\\cline{2-6}
& 0.4 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{34} \\\cline{2-6}
& 0.5 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{23} \\\cline{2-6}
& 0.6 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{25} \\\cline{2-6}
& 0.7 & \multicolumn{2}{c|}{69} & \multicolumn{2}{C}{54} \\\cline{2-6}
& 0.8 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{21} \\\cline{2-6}
& 0.9 & \multicolumn{2}{c|}{69} & \multicolumn{2}{C}{55} \\\hline
这是第二个跨越多列的旋转单元格。
\multirowcell{9}{\rotatebox[]{-90}{\theadfont Different beta}} & 0.1 & \multicolumn{2}{c|}{19} & \multicolumn{2}{C}{69} \\\cline{2-6}
& 0.2 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{83} \\\cline{2-6}
& 0.3 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{35} \\\cline{2-6}
& 0.4 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{64} \\\cline{2-6}
& 0.5 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{46} \\\cline{2-6}
& 0.6 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{12} \\\cline{2-6}
& 0.7 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{16} \\\cline{2-6}
& 0.8 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{71} \\\cline{2-6}
& 0.9 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{38} \\\Xhline{\xlineht}
我们以更厚的规则作为结束。
\end{tabular}
\end{table}
完整代码:
\documentclass{article}
\usepackage{rotating,multirow,makecell,array}
\newlength\xlineht
\newlength\mlineht
\setlength\xlineht{1.2pt}
\setlength\mlineht{.8pt}
\newcolumntype{C}{c!{\vrule width \xlineht}}
\newcolumntype{M}{c!{\vrule width \mlineht}}
\setcellgapes{3pt}
\renewcommand\theadfont{\bfseries}
\begin{document}
\begin{table}
\makegapedcells
\begin{tabular}{!{\vrule width \xlineht}c|M*{3}{c|}C}
\Xhline{\xlineht}
\multicolumn{2}{!{\vrule width \xlineht}M}{}& \multicolumn{2}{c|}{\thead{C1}} & \multicolumn{2}{C}{\thead{C2}}\\\cline{3-6}
\multicolumn{2}{!{\vrule width \xlineht}M}{}& \thead{P1} & \thead{P2} & \thead{P1} & \thead{P2} \\\cline{3-6}
\multicolumn{2}{!{\vrule width \xlineht}M}{}& {0.33} & {0.66} & {0.2} & {0.8} \\\Xhline{\mlineht}
\multirowcell{9}{\rotatebox[]{-90}{\theadfont Different alpha}} & 0.1 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{25} \\\cline{2-6}
& 0.2 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{67} \\\cline{2-6}
& 0.3 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{890} \\\cline{2-6}
& 0.4 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{34} \\\cline{2-6}
& 0.5 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{23} \\\cline{2-6}
& 0.6 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{25} \\\cline{2-6}
& 0.7 & \multicolumn{2}{c|}{69} & \multicolumn{2}{C}{54} \\\cline{2-6}
& 0.8 & \multicolumn{2}{c|}{9} & \multicolumn{2}{C}{21} \\\cline{2-6}
& 0.9 & \multicolumn{2}{c|}{69} & \multicolumn{2}{C}{55} \\\hline
\multirowcell{9}{\rotatebox[]{-90}{\theadfont Different beta}} & 0.1 & \multicolumn{2}{c|}{19} & \multicolumn{2}{C}{69} \\\cline{2-6}
& 0.2 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{83} \\\cline{2-6}
& 0.3 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{35} \\\cline{2-6}
& 0.4 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{64} \\\cline{2-6}
& 0.5 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{46} \\\cline{2-6}
& 0.6 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{12} \\\cline{2-6}
& 0.7 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{16} \\\cline{2-6}
& 0.8 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{71} \\\cline{2-6}
& 0.9 & \multicolumn{2}{c|}{99} & \multicolumn{2}{C}{38} \\\Xhline{\xlineht}
\end{tabular}
\end{table}
\end{document}
但请注意,专业品质的表格通常根本不使用垂直线,而使用水平线则要少得多。有关知情的(可能略显极端的)讨论,请参阅软件包手册booktabs
。
例如,我可能会使用类似这样的东西。
按照 的标准,这有点过于严格了booktabs
,但比原来的要简单和清晰得多。作为奖励,代码要简单得多!对于表格而言,少即是多,幸运的是,少排版要容易得多。
在这种情况下,我们加载booktabs
而不是makecell,array
使用我们自己的标题字体命令
\newcommand*\myheadfont{\bfseries}
删除垂直规则意味着说明tabular
符仅*{6}{c}
适用于 6 个居中列。
使用booktabs
给我们
\toprule
对于顶部的规则;\bottomrule
对于底部的规则;\midrule
中间的规则;\cmidrule(){}
中间的部分规则。
具体来说,我们可以向左和/或向右“修剪”部分规则,以在标题中的连续规则之间创建间隙。
我们现在不使用makecell
,所以我们使用\multirow
跨越多列的单元格,并*
指定自然宽度。
完整代码:
\documentclass{article}
\usepackage{rotating,multirow,booktabs}
\newcommand*\myheadfont{\bfseries}
\begin{document}
\begin{table}
\begin{tabular}{*{6}{c}}
\toprule
&& \multicolumn{2}{c}{\myheadfont C1} & \multicolumn{2}{c}{\myheadfont C2}\\\cmidrule(lr){3-4}\cmidrule(lr){5-6}
&& \myheadfont P1 & \myheadfont P2 & \myheadfont P1 & \myheadfont P2 \\
&& {0.33} & {0.66} & {0.2} & {0.8} \\
\midrule
\multirow{9}*{\rotatebox[]{-90}{\myheadfont Different alpha}} & 0.1 & \multicolumn{2}{c}{9} & \multicolumn{2}{c}{25} \\
& 0.2 & \multicolumn{2}{c}{9} & \multicolumn{2}{c}{67} \\
& 0.3 & \multicolumn{2}{c}{9} & \multicolumn{2}{c}{890} \\
& 0.4 & \multicolumn{2}{c}{9} & \multicolumn{2}{c}{34} \\
& 0.5 & \multicolumn{2}{c}{9} & \multicolumn{2}{c}{23} \\
& 0.6 & \multicolumn{2}{c}{9} & \multicolumn{2}{c}{25} \\
& 0.7 & \multicolumn{2}{c}{69} & \multicolumn{2}{c}{54} \\
& 0.8 & \multicolumn{2}{c}{9} & \multicolumn{2}{c}{21} \\
& 0.9 & \multicolumn{2}{c}{69} & \multicolumn{2}{c}{55} \\\midrule
\multirow{9}*{\rotatebox[]{-90}{\myheadfont Different beta}} & 0.1 & \multicolumn{2}{c}{19} & \multicolumn{2}{c}{69} \\
& 0.2 & \multicolumn{2}{c}{99} & \multicolumn{2}{c}{83} \\
& 0.3 & \multicolumn{2}{c}{99} & \multicolumn{2}{c}{35} \\
& 0.4 & \multicolumn{2}{c}{99} & \multicolumn{2}{c}{64} \\
& 0.5 & \multicolumn{2}{c}{99} & \multicolumn{2}{c}{46} \\
& 0.6 & \multicolumn{2}{c}{99} & \multicolumn{2}{c}{12} \\
& 0.7 & \multicolumn{2}{c}{99} & \multicolumn{2}{c}{16} \\
& 0.8 & \multicolumn{2}{c}{99} & \multicolumn{2}{c}{71} \\
& 0.9 & \multicolumn{2}{c}{99} & \multicolumn{2}{c}{38} \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
我会逐步建立这个,我建议您pdflatex
在每个步骤中编译每个代码片段:
\documentclass{article}
\begin{document}
hello world
\end{document}
现在添加tabular
\documentclass{article}
\begin{document}
\begin{tabular}{cccc}
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
\end{tabular}
\end{document}
添加水平线和垂直线
\documentclass{article}
\begin{document}
\begin{tabular}{|c|c|c|c|}
\hline
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
\hline
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
\hline
\end{tabular}
\end{document}
添加列标题
\documentclass{article}
\begin{document}
\begin{tabular}{|c@{}|@{}c@{}|@{}c@{}|@{}c@{}|}
\hline
& & \begin{tabular}{@{}c@{}|c@{}}
\multicolumn{2}{c}{C1}\\ \hline
P1 & P2 \\ \hline
0.33 & 0.62\\
\end{tabular}
&
\begin{tabular}{c@{}|c@{}}
\multicolumn{2}{c}{C2}\\ \hline
P1 & P2 \\ \hline
0.33 & 0.62\\
\end{tabular}
\\\hline
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
\hline
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
\hline
\end{tabular}
\end{document}
添加multirow
魔法,rotatebox
来自graphicx
\documentclass{article}
\usepackage{multirow}
\usepackage{graphicx}
\begin{document}
\begin{tabular}{|c@{}@{}c@{}|@{}c@{}|@{}c@{}|}
\hline
& & \begin{tabular}{@{}c@{}|c@{}}
\multicolumn{2}{c}{C1}\\ \hline
P1 & P2 \\ \hline
0.33 & 0.62\\
\end{tabular}
&
\begin{tabular}{c@{}|c@{}}
\multicolumn{2}{c}{C2}\\ \hline
P1 & P2 \\ \hline
0.33 & 0.62\\
\end{tabular}
\\\hline
\multirow{6}{1cm}{\rotatebox{90}{different alpha}} & 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
\hline
\multirow{6}{1cm}{\rotatebox{90}{different beta}} & 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
\hline
\end{tabular}
\end{document}
笔记:
以下是我考虑的呈现方式:
\documentclass{article}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{ccSS}
\toprule
& & {\begin{tabular}{cc}
\multicolumn{2}{c}{C1}\\ \midrule
P1 & P2 \\ \midrule
0.33 & 0.62\\
\end{tabular}}
&
{\begin{tabular}{cc}
\multicolumn{2}{c}{C2}\\ \midrule
P1 & P2 \\ \midrule
0.33 & 0.62\\
\end{tabular}}
\\\midrule
\multirow{6}{1cm}{\rotatebox{90}{different alpha}} & 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
\midrule
\multirow{6}{1cm}{\rotatebox{90}{different beta}} & 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
& 0.1 & 9 & 24 \\
\bottomrule
\end{tabular}
\end{document}