3

I tried to build a "complex" table of a certain size but still have some problems with the multicolumn. As you can see on the attached images, in the table I want to have in the first column "technique" two sub-columns "Methodes au niveau données" and the second sub-column consisting of two lines "sousechantillonage" and " surechantillonage ".

enter image description here

the code is :

\begin{table}[htbp]
\caption{Résumé des approches de traitement de données déséquilibrées}
\label{tab:RelatedWorkSkewed}
\begin{tabular}{|p{2.5cm}|p{2cm}|p{4.5cm}|p{5cm}|}
    \hline
{\bf Techniques} & {\bf Références} & {\bf Avantages} & {\bf Inconvénients}\\
    \hline
\multirow{2}{*}{Méthodes au niveau des données}  & Sous-échantiollonnage & 
\begin{itemize}
    \item Technique simple et largement utilisée dans de nombreux domaines d'applications;
    \item Elle peut être facilement implémenté;
    \item Elle peut aider à améliorer le problème associé au temps d'exécution et au stockage, simplement en éliminant les instances des données de formation.
\end{itemize} & 
\begin{itemize}
\item  Elle entraîne la perte d'informations utiles et significatifs;
\item  Elle peut entraîner des performances médiocres sur des données invisibles.
\end{itemize} \\  \cline{2-4}
    & Sur-échantiollonnage & 
    \begin{itemize}
        \item Elle peut être facilement mis en œuvre;
        \item Elle n'entraîne aucune perte d'information.
    \end{itemize} & 
    \begin{itemize}
        \item Elle augmente la probabilité de sur-apprentissage
        \item Elle introduit un coût de calcul supplémentaire et prend du temps de formation.
    \end{itemize}   
    \\  \hline
        \multirow{2}{*}{Méthodes au niveau de l'algorithme}  & Apprentissage d'ensemble & 
    \begin{itemize}
        \item Plus de résilience au bruit;
        \item Elle évite le problème de sur-ajustement;
    \end{itemize} 
    & 
    \begin{itemize}
        \item Elle prend du temps de formation.
    \end{itemize} \\  \cline{2-4}
    & Apprentissage sensible aux coûts & 
    \begin{itemize}
        \item Technique simple et efficace;
        \item Elle minimise le coût de la classification erronée.
    \end{itemize} & 
    \begin{itemize}
        \item Les coûts de classification erronée (le coût réel des erreurs) sont souvent inconnus.
    \end{itemize}   
    \\  \hline
\end{tabular}
\end{table}

Thanks for your help.

3
  • 2
    Just don't use \multirow here. Also, please note that \bf is deprecated since a long time. Instead you should either use {\bfseries <text>} or \textbf{<text>}. – Skillmon Dec 8 '20 at 10:16
  • 1
    please always provide a test document that shows the problem.Your title and tagging mention longtable but the code fragment that you posted does not use that environment (and doesn't show any package use at all). – David Carlisle Dec 8 '20 at 10:40
  • Welcome to TeX.SE. – Mico Dec 8 '20 at 12:50
4

Some suggestions and comments:

  • Get rid of the \multirow "wrappers" -- all of them.

  • To allow additional hyphenation points in hyphenated words, insert \hspace{0pt} judiciously. E.g., replace Sous-échantillonnage and Sur-échantillonnage with Sous-\hspace{0pt}échantillonnage and Sur-\hspace{0pt}échantillonnage, respectively.

  • Fix some spelling errors that will otherwise prevent LaTeX from finding suitable hyphenation points. For instance, replace both instances of échantiollonnage with échantillonnage.

  • Use the machinery of the enumitem package to typeset the itemized lists in the third and fourth columns compactly. See the code below for a possible solution.

  • Jump headlong into the 21st Century CE by replacing all instances of {\bf ...} with \textbf{...}.

enter image description here

\documentclass{article}
\usepackage[a4paper,margin=2.5cm]{geometry} % set page parameters suitably
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{array,ragged2e}
% allow hyphenation of first words of cells & use ragged-right layout:
\newcolumntype{P}[1]{>{\RaggedRight\hspace{0pt}}p{#1}} 

% create a bespoke list-like environment called "myitemize"
\usepackage{enumitem}
\newlist{myitemize}{itemize}{1}
\setlist[myitemize,1]{label = ---, left = 0pt, 
            before = \begin{minipage}[t]{\hsize},
            after  = \end{minipage} }

\begin{document}
\begin{table}[htbp]
\setlength\extrarowheight{2pt}
\caption{Résumé des approches de traitement de données déséquilibrées\strut}
\label{tab:RelatedWorkSkewed}
\centering
\begin{tabular}{|P{2.5cm}|P{2cm}|P{4.5cm}|P{5cm}|}
    \hline
    \textbf{Techniques} & \textbf{Références} & \textbf{Avantages} & \textbf{Inconvénients}\\
    \hline
    Méthodes au niveau des données  
    & Sous-\hspace{0pt}échantillonnage 
    & \begin{myitemize}
        \item Technique simple et largement utilisée dans de nombreux domaines d'applications;
        \item Elle peut être facilement implémenté;
        \item Elle peut aider à améliorer le problème associé au temps d'exécution et au 
              stockage, simplement en éliminant les instances des données de formation.
      \end{myitemize} 
    & \begin{myitemize}
        \item  Elle entraîne la perte d'informations utiles et significatifs;
        \item  Elle peut entraîner des performances médiocres sur des données invisibles.
      \end{myitemize} \\  
    \cline{2-4}
    & Sur-\hspace{0pt}échantillonnage 
    & \begin{myitemize}
        \item Elle peut être facilement mis en œuvre;
        \item Elle n'entraîne aucune perte d'information.
    \end{myitemize} 
    & \begin{myitemize}
        \item Elle augmente la probabilité de sur-apprentissage
        \item Elle introduit un coût de calcul supplémentaire et prend du temps de formation.
      \end{myitemize}   
    \\  
    \hline
    Méthodes au niveau de l'algorithme  
    & Apprentissage d'ensemble 
    & \begin{myitemize}
        \item Plus de résilience au bruit;
        \item Elle évite le problème de sur-ajustement;
      \end{myitemize} 
    & \begin{myitemize}
        \item Elle prend du temps de formation.
      \end{myitemize} \\  
    \cline{2-4}
    & Apprentissage sensible aux coûts 
    & \begin{myitemize}
        \item Technique simple et efficace;
        \item Elle minimise le coût de la classification erronée.
      \end{myitemize} 
    & \begin{myitemize}
        \item Les coûts de classification erronée (le coût réel des erreurs) sont souvent inconnus.
    \end{myitemize} \\  
    \hline
\end{tabular}
\end{table}
\end{document} 
2
  • I want to have two sub-columns " Méthodes au niveau des données " and "Sous-échantillonnage/Sur-échantillonnage" in the "Techniques" column, for the "Reference" column it is empty, I will fill it in later. Thanks a lot for your help @Mico. – SAM Dec 9 '20 at 12:26
  • @SAM - I'm not sure I understand your modified setup. My answer was based on the material you posted in your initial query. If you need a different layout, the answer I provided is almost certainly deficient. – Mico Dec 9 '20 at 13:46
4

I propose this variant layout, based on tabularx. I replaced the default emdash with an endash, which looks better in this context, in my opinion.

\documentclass[a4paper, french]{article}
\usepackage[T1]{fontenc}
\usepackage{geometry}
\usepackage{babel}
\usepackage{enumitem} 
\usepackage{tabularx, ragged2e, caption, multirow}
\makeatletter
\newcommand{\compress}{\@minipagetrue}
\makeatother

\begin{document}

\begin{table}[htbp]
\setlist[itemize]{label=\bfseries\textendash, nosep, wide=0pt, leftmargin=*, after=\vskip-1.5ex}
\setlength{\extrarowheight}{4pt}
\caption{Résumé des approches de traitement de données déséquilibrées}
\centering
\begin{tabularx}{\linewidth}{|*{2}{p{2cm}|}*{2}{>{\compress\arraybackslash}X|}}
    \hline
{\bfseries Techniques} & {\bfseries Références} & {\bfseries Avantages} & {\bfseries Inconvénients}\\
    \hline\noalign{\vskip1.5ex}
\multicolumn{4}{@{}l}{\itshape Méthodes au niveau des données} \\[1ex]
\hline
\multicolumn{2}{|r|}{Sous-échantillonnage} &
\begin{itemize}[nosep, wide=0pt, leftmargin=*]
    \item Technique simple et largement utilisée dans de nombreux domaines d'applications;
    \item Elle peut être facilement implémenté;
    \item Elle peut aider à améliorer le problème associé au temps d'exécution et au stockage, simplement en éliminant les instances des données de formation.
\end{itemize} &
\begin{itemize}
\item Elle entraîne la perte d'informations utiles et significatifs;
\item Elle peut entraîner des performances médiocres sur des données invisibles.
\end{itemize} \\\hline
    \multicolumn{2}{|r|}{Sur-échantillonnage }&
    \begin{itemize}
        \item Elle peut être facilement mis en œuvre;
        \item Elle n'entraîne aucune perte d'information.
    \end{itemize} &
    \begin{itemize}
        \item Elle augmente la probabilité de sur-apprentissage
        \item Elle introduit un coût de calcul supplémentaire et prend du temps de formation.%\vskip-3ex
    \end{itemize}
    \\ \hline
\noalign{\vskip1.5ex}
        \multicolumn{4}{@{}l}{\itshape Méthodes au niveau de l'algorithme}\\[1ex]
\hline
\multicolumn{2}{|r|}{Apprentissage d'ensemble} &
    \begin{itemize}
        \item Plus de résilience au bruit;
        \item Elle évite le problème de sur-ajustement;
    \end{itemize}
    &
    \begin{itemize}
        \item Elle prend du temps de formation.
    \end{itemize} \\ \hline
   \multicolumn{2}{|r|}{Apprentissage sensible aux coûts} &
    \begin{itemize}
        \item Technique simple et efficace;
        \item Elle minimise le coût de la classification erronée.
    \end{itemize} &
    \begin{itemize}
        \item Les coûts de classification erronée (le coût réel des erreurs) sont souvent inconnus.
    \end{itemize}
    \\\hline
\end{tabularx}
\end{table}

\end{document} 

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.