我想创建一个宽度为页面宽度 100% 的表格,因此我使用 tabularx 包。我需要设置列的宽度,因此我决定将表格分成 20 个单独的列。这样我就可以使用多列为单个单元格分配多个列。我找到了一个例子,并根据我的情况进行了调整。
例如当我:
\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax
其中有 3 个数字:
- 7 水平尺寸:7 列
- 12 tabcolsep :新的多列中有 12 个 tabcolsep
- 6 arrayrulewidth :新的多列内有 6 个 arrayrulewidth
我们可以简化这个:
如果我们想要一个多列{N},我们将有 N hsize、(N-1)*2 tabcolsep 和 N-1 arrayrulewidth
对于以下示例,它是有效的:
\documentclass{article}
% Français
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
% Images
\usepackage{graphicx}
\usepackage{float}
% Tables
\usepackage{array}
\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{multirow}
% Custom Header
\usepackage{fancyhdr}
\usepackage[headheight=55pt]{geometry}
\renewcommand{\headrulewidth}{1pt}
\fancypagestyle{plain}{%
\fancyhead[L]{
\begin{tabular}[b]{l}
\textbf{BLABLABLA} \tabularnewline
BLABLABLA \tabularnewline
BLABLABLA \tabularnewline
\end{tabular}
}%
\fancyhead[R]{
\begin{tabular}[t]{c}
\centering\includegraphics[width=2.2cm]{example-image}%
\end{tabular}
}%
}
\pagestyle{plain}
\usepackage{textcomp}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|}
\hline
1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20 \\ \hline
\multicolumn{12}{|>{\bfseries\centering\hsize=\dimexpr12\hsize+22\tabcolsep+11\arrayrulewidth\relax}X|}{TEST}
&
\multicolumn{8}{>{\bfseries\centering\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{TEST} \\ \hline
\textbf{N°}
&
\multicolumn{7}{>{\bfseries\centering\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Tests}
&
\multicolumn{7}{>{\bfseries\centering\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Res}
&
\multicolumn{3}{>{\bfseries\centering\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}{Modif}
&
\multicolumn{2}{>{\bfseries\centering\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{OK} \\ \hline
1
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{3}{>{\centering\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}{Lorem ipsum}
&
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{OK} \\ \hline
2
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{3}{>{\centering\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}{Lorem ipsum}
&
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{OK} \\ \hline
\end{tabularx}
\end{document}
但是现在,如果我们尝试放置另一个类似的行:
3
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{3}{>{\centering\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}{Lorem ipsum}
&
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{OK} \\ \hline
这给了我:
编辑:您现在可以复制粘贴我的文档代码。
如果您找到了解决方案,请放入其他列来检查它是否运行良好。
如果你问为什么是 20 列,那是因为我想为某个单元格分配一定数量的列。(例如页面宽度的 12/20 或页面宽度的 17/20)
第一行有列(从 1 到 20),只是为了检查列是否不大于正常大小。(调试)
编辑-2:
我同意使用 tabular 而不是 tabularx 但如何做到这一点:
- 表格占满页面宽度
- 细胞必须接受多种细胞系
- 单元格内的数字对应于单元格与表格的比例
(最后一行第一个单元格为多行2)
在这种情况下,如何使用 tabular 而不是 tabularx 来做到这一点?
答案1
如果我添加第四行,我得到
\documentclass{article}
\DeclareUnicodeCharacter{00B0}{??}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|}
\hline
1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20 \\ \hline
\textbf{N°}
&
\multicolumn{7}{>{\bfseries\centering\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Tests}
&
\multicolumn{7}{>{\bfseries\centering\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Res}
&
\multicolumn{3}{>{\bfseries\centering\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}{Modif}
&
\multicolumn{2}{>{\bfseries\centering\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{OK} \\ \hline
1
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{3}{>{\centering\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}{Lorem ipsum}
&
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{OK} \\ \hline
2
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{3}{>{\centering\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}{Lorem ipsum}
&
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{OK} \\ \hline
3
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{3}{>{\centering\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}{Lorem ipsum}
&
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{OK} \\ \hline
4
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{7}{>{\hsize=\dimexpr7\hsize+12\tabcolsep+6\arrayrulewidth\relax}X|}{Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum}
&
\multicolumn{3}{>{\centering\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}{Lorem ipsum}
&
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{OK} \\ \hline
\end{tabularx}
\end{document}
但是你真的需要 20 列吗?如果 1-20 仅用于调试而不是数据,则似乎你实际上只有 5 列。
答案2
感谢@david-carlisle的帮助,也感谢其他人最终找到解决方案。让我们看看以下代码和图片:
\noindent\begin{tabular}{|
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
p{\dimexpr 0.05\linewidth-2\tabcolsep-\arrayrulewidth} |
}
\hline
1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20 \\ \hline
\multicolumn{12}{|p{\dimexpr 0.6\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{8}{p{\dimexpr 0.4\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l} \\ \hline
\multicolumn{20}{|p{\dimexpr \linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l lLorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l} \\ \hline
\multicolumn{20}{|p{\dimexpr \linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l lLorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l} \\ \hline
N°
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{3}{p{\dimexpr 0.15\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum}
&
\multicolumn{2}{p{\dimexpr 0.1\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum} \\ \hline
N°
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{3}{p{\dimexpr 0.15\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum}
&
\multicolumn{2}{p{\dimexpr 0.1\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum} \\ \hline
N°
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{3}{p{\dimexpr 0.15\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum}
&
\multicolumn{2}{p{\dimexpr 0.1\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum} \\ \hline
N°
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{3}{p{\dimexpr 0.15\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum}
&
\multicolumn{2}{p{\dimexpr 0.1\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum} \\ \hline
N°
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{3}{p{\dimexpr 0.15\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum}
&
\multicolumn{2}{p{\dimexpr 0.1\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum} \\ \hline
N°
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{7}{p{\dimexpr 0.35\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l}
&
\multicolumn{3}{p{\dimexpr 0.15\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum}
&
\multicolumn{2}{p{\dimexpr 0.1\linewidth-2\tabcolsep-\arrayrulewidth}|}{Lorem ipsum} \\ \hline
\end{tabular}
代码生成: