我的问题与这个非常相似:
即使我明确将宽度设置为,表格仍然超出了页面范围\textwidth
。我还遵循了以下解决方案:大卫·卡莱尔并使用X
列来允许单元格内换行,但问题仍然存在。
我怀疑问题出在使用该\multicolumn
命令时,因为我的文档上的其他\longtabu
表格工作正常。
以下是 MWE:
\documentclass[a4paper,10pt,oneside,openany]{book}
\usepackage[utf8]{inputenc} % allow specify input encoding
\usepackage[margin=1in]{geometry} % page dimensions
\usepackage{tabu} % tables that take more than 1 page
\usepackage{longtable} % tabu needs this to be loaded
\begin{document}
\begin{longtabu} to \textwidth {| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]| X[1,c,m]|}
\hline
\multicolumn{16}{|c|}{ \bf Title of table goes here } \endhead
\hline
\multicolumn{8}{| c |}{ Text } &
\multicolumn{2}{| c |}{ Some long text here } &
\multicolumn{2}{| c |}{ Some long text here } &
\multicolumn{2}{| c |}{ Some long text here } &
\multicolumn{2}{| c |}{ Some long text here } \\
\hline
{ 15 } &
{ 14 } &
{ 13 } &
{ 12 } &
{ 11 } &
{ 10 } &
{ 9 } &
{ 8 } &
{ 7 } &
{ 6 } &
{ 5 } &
{ 4 } &
{ 3 } &
{ 2 } &
{ 1 } &
{ 0 } \\
\hline
\end{longtabu}
\end{document}
非常感谢您的帮助!谢谢。
答案1
如果直接计算列宽,则更容易看到跨度条目所需的宽度。在这种情况下,您X
根本不需要,因此可以使用longtable
而不是提供的包装器tabu
。
另外,不要使用,\bf
只能|
在第一的|
列。如果在所有条目中使用两个,\multicolumn
那么您将获得两个相邻的规则,一个位于一列的右侧,另一个位于下一列的左侧。
该算法仅考虑到p
列占用的空间等于提供的宽度加上\tabcolsep
列两侧的空间加上任何垂直规则的宽度。
\documentclass[a4paper,10pt,oneside,openany]{book}
\usepackage[utf8]{inputenc} % allow specify input encoding
\usepackage[margin=1in]{geometry} % page dimensions
\usepackage{array,longtable}
\newlength\mylength
\setlength\mylength{\dimexpr(\textwidth-17\arrayrulewidth-32\tabcolsep)/16\relax}
\begin{document}
\begin{longtable}{|*{16}{>{\centering\arraybackslash}m{\mylength}|}}
\hline
\multicolumn{16}{|c|}{\textbf{Title of table goes here}}
\endhead
\hline
\multicolumn{8}{| c |}{ Text } &
\multicolumn{2}{>{\centering\arraybackslash}m{\dimexpr2\mylength+2\tabcolsep+\arrayrulewidth}|}{ Some long text here } &
\multicolumn{2}{>{\centering\arraybackslash}m{\dimexpr2\mylength+2\tabcolsep+\arrayrulewidth}|}{ Some long text here } &
\multicolumn{2}{>{\centering\arraybackslash}m{\dimexpr2\mylength+2\tabcolsep+\arrayrulewidth}|}{ Some long text here } &
\multicolumn{2}{>{\centering\arraybackslash}m{\dimexpr2\mylength+2\tabcolsep+\arrayrulewidth}|}{ Some long text here }\\
\hline
{ 15 } &
{ 14 } &
{ 13 } &
{ 12 } &
{ 11 } &
{ 10 } &
{ 9 } &
{ 8 } &
{ 7 } &
{ 6 } &
{ 5 } &
{ 4 } &
{ 3 } &
{ 2 } &
{ 1 } &
{ 0 } \\
\hline
\end{longtable}
\end{document}