Centrer dans une ligne

Bonjour
Dans l'environnement tabular suivant :
\begin{tabular}{|c|c|c|c|}
\hline
I& J & Représentation & \hspace*{1cm }$I\cap J$ \hspace*{1cm}\\
\hline

$[0;4]$ & $[2;5]$ &\begin{tikzpicture}[scale=.70]
\draw[gray](-4.5,0)grid(8.5,0);
%\draw[stealth-stealth]|-(4.5,0)node[above]{$x$};
%\foreach \x in {-5,...,4} \draw (\x,-.1)node[below]{\x} -- (\x,0);
\draw[-latex](-6.5,0)--(9.5,0);
\draw (9.5,0)node[above]{$x$};
\foreach \x in {-6,...,9} \draw (\x,-.1)  -- (\x,0);
\foreach \x in {0,1} \draw (\x,-.1)node[below]{\x} -- (\x,0);
\end{tikzpicture} & \\
\hline
$[-1;2]$ & $[0.5;3]$ &\begin{tikzpicture}[scale=.70]
\draw[gray](-4.5,0)grid(8.5,0);
%\draw[stealth-stealth]|-(4.5,0)node[above]{$x$};
%\foreach \x in {-5,...,4} \draw (\x,-.1)node[below]{\x} -- (\x,0);
\draw[-latex](-6.5,0)--(9.5,0);
\draw (9.5,0)node[above]{$x$};
\foreach \x in {-6,...,9} \draw (\x,-.1)  -- (\x,0);
\foreach \x in {0,1} \draw (\x,-.1)node[below]{\x} -- (\x,0);
\end{tikzpicture} & \\
\hline 
\end{tabular}
les intervalles dans les colonnes I et J s'affichent en bas de la ligne.
Je souhaiterais que ces intervalles s'affichent au milieu de la ligne.

Merci d'avance pour votre aide.
Cordialement.
Raptor.

Réponses

  • Bonjour,

    Merci à l'avenir de bien vouloir fournir un exemple complet minimal (donc compilable tel quel, commençant par \documentclass et se terminant par \end{document}) pour nous faire gagner du temps.

    Le problème en question est dû à l'alignement des boîtes sur la ligne de base (mots-clés en anglais : reference point et baseline). On peut le corriger comme ceci (il y a d'autres possibilités, notamment avec le type de colonne 'm' offert par le package array, mais dans ce cas, il faut expliciter la largeur de la colonne, ce que ma solution évite soigneusement) :
    \documentclass[a4paper]{article}
    \usepackage[landscape]{geometry}
    \usepackage{array}
    \usepackage{collcell}
    \usepackage{makecell}
    \usepackage{cellspace}
    \usepackage{tikz}
    
    \renewcommand\theadfont{\bfseries}
    \setlength\cellspacetoplimit{4pt}
    \setlength\cellspacebottomlimit{4pt}
    
    \newcommand*{\boxAndLower}[1]{%
      \raisebox{-1ex}{#1}%
    }
    \newcolumntype{E}{>{\collectcell\boxAndLower}c<{\endcollectcell}}
    
    \begin{document}
    
    \begin{tabular}{|SE|SE|Sc|@{\hspace{1cm}}Sc@{\hspace{1cm}}|}
    \hline
    \multicolumn{1}{|c|}{\thead{$I$}} & \multicolumn{1}{c|}{\thead{$J$}} & \thead{Représentation} & \thead{$I\cap J$}\\
    \hline
    $[0;4]$ & $[2;5]$ &\begin{tikzpicture}[baseline=0, scale=.70]
    \draw[gray](-4.5,0)grid(8.5,0);
    \draw[-latex](-6.5,0)--(9.5,0);
    \draw (9.5,0)node[above]{$x$};
    \foreach \x in {-6,...,9} \draw (\x,-.1)  -- (\x,0);
    \foreach \x in {0,1} \draw (\x,-.1)node[below]{\x} -- (\x,0);
    \end{tikzpicture} & \\
    \hline
    $[-1;2]$ & $[0.5;3]$ &\begin{tikzpicture}[baseline=0, scale=.70]
    \draw[gray](-4.5,0)grid(8.5,0);
    \draw[-latex](-6.5,0)--(9.5,0);
    \draw (9.5,0)node[above]{$x$};
    \foreach \x in {-6,...,9} \draw (\x,-.1)  -- (\x,0);
    \foreach \x in {0,1} \draw (\x,-.1)node[below]{\x} -- (\x,0);
    \end{tikzpicture} & \\
    \hline
    \end{tabular}
    
    \end{document}
    

    Ceci dit, il y a à mon avis trop de lignes dans ce tableau — ça fait des nœuds aux yeux, on s'y perd. Lire la documentation du package booktabs. Voici une proposition avec ce dernier (résultat sur la deuxième capture d'écran) :
    \documentclass[a4paper]{article}
    \usepackage[landscape]{geometry}
    \usepackage{array}
    \usepackage{collcell}
    \usepackage{makecell}
    \usepackage{booktabs}
    \usepackage{tikz}
    
    \renewcommand\theadfont{\bfseries}
    
    \newcommand*{\boxAndLower}[1]{%
    % Pour régler l'interligne, décommenter la ligne \vrule ...  ou mettre par
    % exemple {\renewcommand{\arraystretch}{1.8}% avant le \begin{tabular} et
    % ajouter une accolade fermante après le \end{tabular}.
    %
    %  \vrule width 0pt height 3.5ex depth 4.5ex\relax
      \raisebox{-1ex}{#1}%
    }
    \newcolumntype{E}{>{\collectcell\boxAndLower}c<{\endcollectcell}}
    
    \begin{document}
    
    \begin{tabular}{E E c @{\hspace{1cm}} c @{\hspace{1cm}}}
    \toprule
    \multicolumn{1}{c}{\thead{$I$}} & \multicolumn{1}{c}{\thead{$J$}} &
       \thead{Représentation} & \thead{$I\cap J$}\\
    \midrule
    $[0;4]$ & $[2;5]$ & \begin{tikzpicture}[baseline=0, scale=.70]
    \draw[gray](-4.5,0)grid(8.5,0);
    \draw[-latex](-6.5,0)--(9.5,0);
    \draw (9.5,0)node[above]{$x$};
    \foreach \x in {-6,...,9} \draw (\x,-.1)  -- (\x,0);
    \foreach \x in {0,1} \draw (\x,-.1)node[below]{\x} -- (\x,0);
    \end{tikzpicture} & \\
    $[-1;2]$ & $[0.5;3]$ & \begin{tikzpicture}[baseline=0, scale=.70]
    \draw[gray](-4.5,0)grid(8.5,0);
    \draw[-latex](-6.5,0)--(9.5,0);
    \draw (9.5,0)node[above]{$x$};
    \foreach \x in {-6,...,9} \draw (\x,-.1)  -- (\x,0);
    \foreach \x in {0,1} \draw (\x,-.1)node[below]{\x} -- (\x,0);
    \end{tikzpicture} & \\
    \bottomrule
    \end{tabular}
    
    \end{document}
    
    94506
    94508
  • On peut aussi simplifier en baissant les tikzpictures au lieu de remonter le texte des deux premières colonnes (méthode applicable aux deux exemples que j'ai donnés). Mais pour pouvoir régler finement l'interligne, il faudra ajouter des petites choses...
    \documentclass[a4paper]{article}
    \usepackage[landscape]{geometry}
    \usepackage{array}
    \usepackage{makecell}
    \usepackage{booktabs}
    \usepackage{tikz}
    
    \renewcommand\theadfont{\bfseries}
    
    \begin{document}
    
    {%
      \tikzset{every picture/.style={baseline=-0.9ex, scale=0.7}}%
      %
      \begin{tabular}{ c c c @{\hspace{1cm}} c @{\hspace{1cm}}}
      \toprule
      \thead{$I$} & \thead{$J$} & \thead{Représentation} & \thead{$I\cap J$}\\
      \midrule
      $[0;4]$ & $[2;5]$ & \begin{tikzpicture}
      \draw[gray](-4.5,0)grid(8.5,0);
      \draw[-latex](-6.5,0)--(9.5,0);
      \draw (9.5,0)node[above]{$x$};
      \foreach \x in {-6,...,9} \draw (\x,-.1)  -- (\x,0);
      \foreach \x in {0,1} \draw (\x,-.1)node[below]{\x} -- (\x,0);
      \end{tikzpicture} & \\
      $[-1;2]$ & $[0.5;3]$ & \begin{tikzpicture}
      \draw[gray](-4.5,0)grid(8.5,0);
      \draw[-latex](-6.5,0)--(9.5,0);
      \draw (9.5,0)node[above]{$x$};
      \foreach \x in {-6,...,9} \draw (\x,-.1)  -- (\x,0);
      \foreach \x in {0,1} \draw (\x,-.1)node[below]{\x} -- (\x,0);
      \end{tikzpicture} & \\
      \bottomrule
      \end{tabular}%
    }
    
    \end{document}
    
    94510
Connectez-vous ou Inscrivez-vous pour répondre.