我已经花了 5 个小时与代码斗争。我该如何
\documentclass[english]{article}
\usepackage[allowlitunits]{siunitx}
\usepackage{booktabs}
\usepackage{tabu}
\usepackage{makecell}
\usepackage{blindtext}
\usepackage{diagbox}
\begin{document}
\newcolumntype{Z}{S[
table-format=1.3,
%tight-spacing=true,
round-mode=places,
round-precision=3]}
\newcommand\mycell[1]{\multicolumn{1}{>{\centering\arraybackslash}c}{\makecell{#1}}}
\begin{table}
\begin{tabu} to \linewidth {X *{8}{Z}}
\toprule
\rowfont[c]\bfseries
\fbox{\diagbox{method}{missing}}
& \mycell{ 5\%\\(mean)} & \mycell{ 5\%\\(var)}
& \mycell{10\%\\(mean)} & \mycell{10\%\\(var)}
& \mycell{20\%\\(mean)} & \mycell{20\%\\(var)}
& \mycell{50\%\\(mean)} & \mycell{50\%\\(var)} \\
\midrule
asdf & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 \\
asdf & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 \\
\bottomrule
\end{tabu}
\end{table}
\blindtext
\end{document}
看起来不太糟糕
而实际上却适合:
- 获取适合的第一列
\diagbox
- 禁忌是否真的适合
\textwidth
事实上,如果我不使用\diagbox
,禁忌仍然太宽:
我不确定第一个 X 是否实际上是我应该使用的。
\textwidth
如果代码是-我只会让禁忌变得宽泛\begin{tabu} to 0.7\textwidth
- 这对我来说没有多大意义。
答案1
编辑(2):
而不是tabu to
使用tabu spread
:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[showframe]{geometry}
\usepackage{siunitx}
\usepackage{array, makecell, tabu}
\usepackage{diagbox}
\newcolumntype{Z}{S[
table-format=1.3,
round-mode=places,
round-precision=3]}
\newcommand\mycell[1]{\multicolumn{1}{c}{\makecell{#1}}}% now text in \mycell (column headers) is bold
\begin{document}
\begin{table}
\centering
\small % <-- smaller font size
\setlength\tabcolsep{1.5pt}% <-- smaller distances between columns
\renewcommand\arraystretch{1.2}% more open table (bigger vertical space between rows)
\begin{tabu} spread 6pt {X *{8}{Z}}
\firsthline
\rowfont[c]\bfseries
\diagbox[width=2.4cm]{method}{missing}
& \mycell{ 5\%\\(mean)} & \mycell{ 5\%\\(variance)}
& \mycell{10\%\\(mean)} & \mycell{10\%\\(variance)}
& \mycell{20\%\\(mean)} & \mycell{20\%\\(variance)}
& \mycell{50\%\\(mean)} & \mycell{50\%\\(variance)} \\
\hline
KNN & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 \\
MICE & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 & 0.1234 \\
\lasthline
\end{tabu}
\end{table}
\end{document}
由于spread
表格具有自然宽度,因此\textwidth
需要手动调整才能使其宽度相等。在上面,MWE\tabcolsep
通过“反复试验method, the same I did with font size and width of
\diagbox”减少。
笔记:
正如我在答案的第一个版本中指出的那样, tabularxtabu
是有缺陷的(this probably source of your trouble) and no more maintained. Instead it I will rather use
。
我删除了第一个版本的答案,显然没有人感兴趣:)