Comment éviter les lignes horizontales et verticales brisées lors de l'utilisation de plusieurs lignes et de plusieurs colonnes dans un tableau
J'ai un tableau que je dois mettre dans un papier. Les lignes horizontales et verticales sont des lignes discontinues mais mon superviseur m'a demandé d'avoir des lignes fermées. Je ne suis pas en mesure de le réparer.
\usepackage{tabularx}
\begin{table}[h]
\centering
\caption{my table with broken lines}
\resizebox{\textwidth}{!}{%
\begin{tabular}{@{}|c|c|c|c|c|c|@{}}
\toprule
\multirow{3}{*}{A} & \multirow{3}{*}{B} & \multicolumn{4}{|c|}{M} \\ \cmidrule(l){3-6}
& & \multicolumn{2}{|c|}{C} & \multicolumn{2}{|c|}{D} \\ \cmidrule(l){3-6}
& & \multicolumn{1}{|c|}{e} & \multicolumn{1}{|c|}{f} & \multicolumn{1}{|c|}{e} & \multicolumn{1}{|c|}{f} \\ \midrule
\multicolumn{1}{|c|}{1} & \multicolumn{1}{|c|}{a} & \multicolumn{1}{|c|}{\multirow{4}{*}{100}} & \multicolumn{1}{|c|}{91.02} & \multicolumn{1}{|c|}{\multirow{4}{*}{90}} & \multicolumn{1}{|c|}{209.2} \\ \cmidrule(r){1-2} \cmidrule(lr){4-4} \cmidrule(l){6-6}
\multicolumn{1}{|c|}{2} & \multicolumn{1}{|c|}{b} & \multicolumn{1}{|c|}{} & \multicolumn{1}{|c|}{133.83} & \multicolumn{1}{|c|}{} & \multicolumn{1}{|c|}{239.66} \\ \cmidrule(r){1-2} \cmidrule(lr){4-4} \cmidrule(l){6-6}
\multicolumn{1}{|c|}{3} & \multicolumn{1}{|c|}{b} & \multicolumn{1}{|c|}{} & \multicolumn{1}{|c|}{159.73} & \multicolumn{1}{|c|}{} & \multicolumn{1}{|c|}{373.47} \\ \cmidrule(r){1-2} \cmidrule(lr){4-4} \cmidrule(l){6-6}
4 & \multicolumn{1}{|c|}{c} & \multicolumn{1}{c|}{} & \multicolumn{1}{|c|}{144.1} & \multicolumn{1}{|c|}{} & 317.01 \\ \bottomrule
\end{tabular}
}
\label{tbl:lbl1}
\end{table}
Il apparaît comme ceci.
Réponses
2 Zarko
Comme ça?
\documentclass{article}
\usepackage{makecell, multirow}
\begin{document}
\begin{table}[h]
\centering
\setcellgapes{3pt}
\makegapedcells
\caption{my table with broken lines}
\label{tbl:lbl1}
\begin{tabular}{|*{6}{c|}}
\Xhline{1pt}
\multirow{3.4}{*}{A}
& \multirow{3.4}{*}{B}
& \multicolumn{4}{c|}{M} \\
\cline{3-6}
& & \multicolumn{2}{c|}{C}
& \multicolumn{2}{c|}{D} \\
\cline{3-6}
& & e & f & e & f \\
\hline
1 & a & \multirow{4.5}{*}{100}
& 91.02 & \multirow{4.5}{*}{90}
& 209.2 \\
\cline{1-2} \cline{4-4} \cline{6-6}
2 & b & & 133.83 & & 239.66 \\
\cline{1-2} \cline{4-4} \cline{6-6}
3 & b & & 159.73 & & 373.47 \\
\cline{1-2} \cline{4-4} \cline{6-6}
4 & c & & 144.1 & & 317.01 \\
\Xhline{1pt}
\end{tabular}
\end{table}
\end{document}
ou si vous aimez avoir une table large comme \textwidth
, vous pouvez utiliser tabularx
l'environnement de table (non recommandé):
\documentclass{article}
\usepackage{makecell, multirow, tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{table}[h]
\centering
\setcellgapes{3pt}
\makegapedcells
\caption{my table with broken lines}
\label{tbl:lbl1}
\begin{tabularx}{\linewidth}{|*{6}{C|}}
\Xhline{1pt}
\multirow{4}{*}{A}
& \multirow{4}{*}{B}
& \multicolumn{4}{c|}{M} \\
\cline{3-6}
& & \multicolumn{2}{c|}{C}
& \multicolumn{2}{c|}{D} \\
\cline{3-6}
& & e & f & e & f \\
\hline
1 & a & \multirow{5.5}{=}{\centering 100}
& 91.02 & \multirow{5.5}{=}{\centering 90}
& 209.2 \\
\cline{1-2} \cline{4-4} \cline{6-6}
2 & b & & 133.83 & & 239.66 \\
\cline{1-2} \cline{4-4} \cline{6-6}
3 & b & & 159.73 & & 373.47 \\
\cline{1-2} \cline{4-4} \cline{6-6}
4 & c & & 144.1 & & 317.01 \\
\Xhline{1pt}
\end{tabularx}
\end{table}
\end{document}