我是 LaTeX 的初学者,需要用它制作一些非常复杂的表格。我借助 TeX.SE 的帮助完成了绘制这些困难表格的工作。
这次我被表格难住了:除了一列(第 8 列)太宽外,其他都很好用。我试过一些技巧,但这次都不管用。有人能帮我解决这个问题吗?
\documentclass[a4paper,10pt]{article}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{pdflscape}
\usepackage{footnote}
\begin{document}
\begin{landscape}
\begin{center}
\begin{savenotes}
{\renewcommand{\arraystretch}{1.1}
\begin{longtable}{|*{4}{c@{\hskip1pt}|}|*{4}{c@{\hskip1pt}|}|*{1}{c@{\hskip1pt}|}|*{3}{c@{\hskip1pt}|}|*{3}{c@{\hskip1pt}|}|*{1}{c@{\hskip1pt}|}}
\hline
{\bf \multirow{3}{*}{\rotatebox[origin=c]{90}{Nodes}}}& {\bf \multirow{3}{*}{\rotatebox[origin=c]{90}{Clusters}}}& \multirow{3}{1cm}{${|E^*|}$}& \multirow{3}{1.2cm}{\bf{\%age gap of} ${|E_{heu}|}$}& \multicolumn{4}{c|}{\bf \small Percentage of Clusters removed by}& \multirow{3}{1.4cm}{\small \bf No. of nodes removed}& \multicolumn{7}{c|}{\bf \small Time for computing solution (in seconds)} \\\cline{5-8} \cline{10-16}
& & & & \multirow{2}{1cm}{Red 1\&2}& \multirow{2}{1cm}{Red 3}& \multirow{2}{1cm}{Red 4}& \multirow{2}{1cm}{Red 5}& & \multicolumn{3}{c|}{\bf {Before reductions}}& \multicolumn{3}{c|}{\bf {After reductions}}& \multirow{2}{1cm}{\bf {heu}}\\\cline{10-15}
& & & & & & & & & inr & rf-inr & imp & inr & rf-inr& imp& \\\hline
\multirow{3}{*}{6}& 6& 6.00& 0.00& 31.67& 16.67& 0.00& 0.00& 2.80& 0.03& 0.02& 0.02& 0.00& 0.01& 0.01& 0.01\\
& 18& 8.40& 7.14& 1.67& 42.78& 0.00& 0.00& 0.10& 0.03& 0.04& 0.03& 0.02& 0.02& 0.02& 0.02\\
& 30& 10.40& 2.88& 0.00& 56.00& 0.67& 0.00& 0.00& 0.06& 0.05& 0.05& 0.02& 0.02& 0.02& 0.03\\\hline
\multirow{3}{*}{8}& 8& 8.00& 1.25& 37.50& 16.25& 0.00& 0.00& 4.30& 0.06& 0.06& 0.03& 0.01& 0.01& 0.01& 0.01\\
& 24& 12.10& 9.09& 0.00& 37.08& 0.00& 0.00& 0.00& 0.11& 0.09& 0.07& 0.05& 0.05& 0.04& 0.03\\
& 40& 14.60& 12.33& 0.00& 50.25& 0.00& 0.00& 0.00& 0.23& 0.13& 0.10& 0.06& 0.05& 0.04& 0.06\\\hline
\end{longtable}
}
\end{savenotes}
\end{center}
\end{landscape}
\end{document}
答案1
我建议你精简和简化环境中的大部分代码longtable
。我还建议你不是使用粗体完全不需要;真的不需要。双垂直线也不需要。
\documentclass[a4paper,10pt]{article}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{pdflscape} % for 'landscape' env.
\usepackage{footnote} % for 'savenotes' env.
\begin{document}
\begin{landscape}
\centering
\begin{savenotes}
\renewcommand{\arraystretch}{1.1}
\setlength\tabcolsep{4pt}
\begin{longtable}{|*{16}{c|}}
\hline
\multirow{3}{*}{\rotatebox[origin=c]{90}{Nodes}}&
\multirow{3}{*}{\rotatebox[origin=c]{90}{Clusters}} &
\multirow{3}{*}{$|E^*|$}&
\multirow{3}{1.2cm}{{\% age gap of $|E_{heu}|$}}&
\multicolumn{4}{c|}{\small Percent.\ of clusters removed by}&
\multirow{3}{1.3cm}{\small No.\ of nodes removed}&
\multicolumn{7}{c|}{\small Time for computing solution (in seconds)} \\
\cline{5-8} \cline{10-16}
& & & &
\multirow{2}{1cm}{Red 1\&2}&
\multirow{2}{1cm}{Red 3}&
\multirow{2}{1cm}{Red 4}&
\multirow{2}{1cm}{Red 5}& &
\multicolumn{3}{c|}{\small Before reductions}&
\multicolumn{3}{c|}{\small After reductions}&
\multirow{2}{*}{heu}\\
\cline{10-15}
& & & & & & & & & inr & rf-inr & imp & inr & rf-inr& imp & \\
\hline\hline
\endhead
\hline
\endfoot
\multirow{3}{*}{6}& 6& 6.00& 0.00& 31.67& 16.67& 0.00& 0.00& 2.80& 0.03& 0.02& 0.02& 0.00& 0.01& 0.01& 0.01\\
& 18& 8.40& 7.14& 1.67& 42.78& 0.00& 0.00& 0.10& 0.03& 0.04& 0.03& 0.02& 0.02& 0.02& 0.02\\
& 30& 10.40& 2.88& 0.00& 56.00& 0.67& 0.00& 0.00& 0.06& 0.05& 0.05& 0.02& 0.02& 0.02& 0.03\\
\hline
\multirow{3}{*}{8}& 8& 8.00& 1.25& 37.50& 16.25& 0.00& 0.00& 4.30& 0.06& 0.06& 0.03& 0.01& 0.01& 0.01& 0.01\\
& 24& 12.10& 9.09& 0.00& 37.08& 0.00& 0.00& 0.00& 0.11& 0.09& 0.07& 0.05& 0.05& 0.04& 0.03\\
& 40& 14.60& 12.33& 0.00& 50.25& 0.00& 0.00& 0.00& 0.23& 0.13& 0.10& 0.06& 0.05& 0.04& 0.06\\
\end{longtable}
\end{savenotes}
\end{landscape}
\end{document}
答案2
作为补充米科回答:
\documentclass[a4paper,10pt]{article}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{pdflscape}
\usepackage{footnote}
\usepackage{booktabs, makecell, rotating}% <-- added
\settowidth\rotheadsize{\theadfont Clusters}% <-- added
\usepackage{siunitx}
\begin{document}
\begin{landscape}
\begin{center}
\begin{savenotes}
{\renewcommand{\arraystretch}{1.1}
\setlength\tabcolsep{4pt}
\begin{longtable}{c % <-- new columns definition, based on siunitx
S[table-format=2.0]
*{4}{S[table-column-width=11mm,
table-format=2.2]}
*{10}{S[table-column-width=11mm,
table-format=1.2]}
}
\toprule % <-- from booktabs
\multirow[b]{3}{*}[1ex]{\rothead{Nodes}}% <-- from makecell
& {\multirow[b]{3}{*}[1ex]{\rothead{Clusters}}}
& {\multirow[b]{3}{1cm}[-1ex]{$|E^*|$}}
& {\multirow[b]{3}{1.2cm}[-1ex]{\%age gap of $|E_{heu}|$}}
& \multicolumn{4}{c}{Percentage of Clusters removed by}
& {\multirow[b]{3}{1.4cm}[-1ex]{No. of nodes removed}}
& \multicolumn{7}{c}{Time for computing solution (in seconds)} \\
\cmidrule(lr){5-8} \cmidrule(l){10-16}
& & & & {\multirow{2}{*}{\makecell{Red\\ 1\&2}}}
& {\multirow[b]{2}{*}{Red 3}}
& {\multirow[b]{2}{*}{Red 4}}
& {\multirow[b]{2}{*}{Red 5}}
& & \multicolumn{3}{c}{Before reductions}
& \multicolumn{3}{c}{After reductions}
& {\multirow{2}{1cm}{heu}} \\
\cmidrule(lr){10-12} \cmidrule(lr){13-15}
& & & & & & & & & {inr} & {rf-inr} & {imp} & {inr} & {rf-inr} & {imp} & \\
\midrule
\multirow{3}{*}{6}
& 6& 6.00& 0.00& 31.67& 16.67& 0.00& 0.00& 2.80& 0.03& 0.02& 0.02& 0.00& 0.01& 0.01& 0.01\\
& 18& 8.40& 7.14& 1.67& 42.78& 0.00& 0.00& 0.10& 0.03& 0.04& 0.03& 0.02& 0.02& 0.02& 0.02\\
& 30& 10.40& 2.88& 0.00& 56.00& 0.67& 0.00& 0.00& 0.06& 0.05& 0.05& 0.02& 0.02& 0.02& 0.03\\
\midrule
\multirow{3}{*}{8}
& 8& 8.00& 1.25& 37.50& 16.25& 0.00& 0.00& 4.30& 0.06& 0.06& 0.03& 0.01& 0.01& 0.01& 0.01\\
& 24& 12.10& 9.09& 0.00& 37.08& 0.00& 0.00& 0.00& 0.11& 0.09& 0.07& 0.05& 0.05& 0.04& 0.03\\
& 40& 14.60& 12.33& 0.00& 50.25& 0.00& 0.00& 0.00& 0.23& 0.13& 0.10& 0.06& 0.05& 0.04& 0.06\\
\bottomrule
\end{longtable}
}
\end{savenotes}
\end{center}
\end{landscape}
\end{document}
也许你会喜欢这个更专业的表格
注意:您的基本问题可以通过两种方式解决:
- 将文本分成
\multicolumn{4}{c}{Percentage of Clusters removed by}
两行,宽度multicolumn
小于跨列宽度的总和,并保留列定义 - 或者根据建议更改列定义米科并且在这个答案中进一步阐述