\multirow and colored table

  • Creatore
    Topic
  • #14606
    Up
    0
    Down
    ::


    Ciao a tutti,
    leggendo la guida sulla implementazione di tabelle di Mori ho tentato senza successo di creare una tabella che abbia una \multirow{2} con il background in grigio.

    L’effetto che ottengo è il seguente:

    `
    \rowcolors{1}{tbl_row}{tbl_row}
    \begin{table}[!pt]
    \centering%
    \begin{tabular}{ccccl}
    \hline
    \rowcolor{tbl_head}
    \multicolumn{2}{c}{A} &B &\multicolumn{2}{c}{C} \\
    \hline
    \hiderowcolors
    \multirow{2}*{600.00} &\multirow{2}*{1093.20} &\multirow{2}*{802.00} &\multicolumn{2}{c}{\multirow{2}*{$(1.62\pm 0.15)\times\power{10}{-5}$}} \\
    \showrowcolors
    %\multirow{2}*{1093.20} &\multirow{2}*{1991.83} &\multirow{2}*{1461.25} &\multicolumn{2}{c}{\multirow{2}*{$(3.18\pm 0.37)\times\power{10}{-6}$}}\\
    \hline
    \end{tabular}
    \caption{PIPPO}%
    \label{tab:pippo}%
    \end{table}
    `
    Qualcuno sa come eliminare la sovrapposizione delle righe?
    Non so se sono riuscito a spiegarmi correttamente…

    Grazie

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #14607
      Up
      0
      Down
      ::


      Cerco di spiegarmi meglio.

      Il seguente codice centra il testo fra 2 righe, applica lo sfondo, ma taglia a metà il testo stesso!
      E’ come se venisse sovrapposta una riga vuota colorata…

      Ovvero sia, tutto bene nel caso di \hiderowcolors, mentre il problema si presenta con \showrowcolors

      `
      \begin{table}[!pt]
      \centering%
      \begin{tabular}{cc}
      \hline
      A &B \\
      \hline
      \hiderowcolors
      \multirow{2}*{600.00} &\multirow{2}*{1093.20} \\
      & \\
      \showrowcolors
      \multirow{2}*{10.20} &\multirow{2}*{19.83} \\
      & \\
      \hline
      \end{tabular}
      \caption{PIPPO}%
      \label{tab:pippo}%
      \end{table}
      `

      Questa volta spero di essermi spiegato meglio!!!
      Grazie

    • #14608
      DMW
        Up
        0
        Down
        ::

        Cerco di spiegarmi meglio.

        Il seguente codice centra il testo fra 2 righe, applica lo sfondo, ma taglia a metà il testo stesso!
        E’ come se venisse sovrapposta una riga vuota colorata…

        Ovvero sia, tutto bene nel caso di \hiderowcolors, mentre il problema si presenta con \showrowcolors

        `
        \begin{table}[!pt]
        \centering%
        \begin{tabular}{cc}
        \hline
        A &B \\
        \hline
        \hiderowcolors
        \multirow{2}*{600.00} &\multirow{2}*{1093.20} \\
        & \\
        \showrowcolors
        \multirow{2}*{10.20} &\multirow{2}*{19.83} \\
        & \\
        \hline
        \end{tabular}
        \caption{PIPPO}%
        \label{tab:pippo}%
        \end{table}
        `

        Questa volta spero di essermi spiegato meglio!!!
        Grazie

        Il problema, secondo me è di multirow. Per queste cose usa colortbl ed il pacchetto hhline.

        Comunque ti ho fatto un esempio che sfrutta il fatto che rowcolor prende anche parametri negativi.
        `
        \documentclass{article}

        \usepackage{array}
        \usepackage{xcolor}
        \usepackage{hhline}
        \usepackage{colortbl}
        \newcommand\HHline{\\[-\arrayrulewidth]\hhline}
        \usepackage{multirow}

        \definecolor{jgray}{rgb}{.4,.4,.4}
        \setlength\minrowclearance{-2pt}
        \setlength\arrayrulewidth{1pt}
        \arrayrulecolor{jgray}

        \begin{document}

        \begin{tabular}{|>{\columncolor[gray]{0.8}}p{.25\textwidth}|p{.65\textwidth}|}
        \hline
        \rowcolor{black}
        \color{white}\textbf{Col1}&\color{white}\textbf{Col2}
        \HHline{–}
        \multicolumn{1}{|>{\columncolor[rgb]{0.8,0.8,0.8}}c|}{}&\cellcolor{gray}\color{white}1
        \HHline{~-}
        &\cellcolor{gray}\color{white}2
        \HHline{~-}
        &\cellcolor{gray}\color{white}3
        \HHline{~-}
        \multicolumn{1}{|>{\columncolor[rgb]{0.8,0.8,0.8}}c|}{\multirow{-5}{*}{4 numeri}}
        &\cellcolor{gray}\color{white}4
        \\\hline
        \end{tabular}

        \end{document}

        `
        con il primo
        `
        \multicolumn{1}{|>{\columncolor[rgb]{0.8,0.8,0.8}}c|}{}`
        faccio la prima colonna grigia
        e poi alla fine aggiungo
        `
        \multicolumn{1}{|>{\columncolor[rgb]{0.8,0.8,0.8}}c|}{\multirow{-5}{*}{4 numeri}}`

        per inserire la scritta 4 numeri che altrimenti non si vedrebbe.

        Infatti questo codice non la mette:
        `
        \begin{tabular}{|>{\columncolor[gray]{0.8}}p{.25\textwidth}|p{.65\textwidth}|}
        \hline
        \rowcolor{black}
        \color{white}\textbf{Col1}&\color{white}\textbf{Col2}
        \HHline{–}
        \multicolumn{1}{|>{\columncolor[rgb]{0.8,0.8,0.8}}c|}{\multirow{4}{*}{4 numeri}}&\cellcolor{gray}\color{white}1
        \HHline{~-}
        &\cellcolor{gray}\color{white}2
        \HHline{~-}
        &\cellcolor{gray}\color{white}3
        \HHline{~-}
        &\cellcolor{gray}\color{white}4
        \\\hline
        \end{tabular}`

        se invece vuoi la scritta nella prima riga puoi usare semplicemente:
        `
        \begin{tabular}{|>{\columncolor[gray]{0.8}}p{.25\textwidth}|p{.65\textwidth}|}
        \hline
        \rowcolor{black}
        \color{white}\textbf{Col1}&\color{white}\textbf{Col2}
        \HHline{–}
        4 numeri&\cellcolor{gray}\color{white}1
        \HHline{~-}
        &\cellcolor{gray}\color{white}2
        \HHline{~-}
        &\cellcolor{gray}\color{white}3
        \HHline{~-}
        &\cellcolor{gray}\color{white}4
        \\\hline
        \end{tabular}`

        ______________________________________________________________________
        Infine ti propongo la soluzione migliore che fa uso del pacchetto longtable
        `\documentclass{article}
        %\usepackage{array} %non serve perché lo dovrebbe caricare longtable comunque
        %se lo metti non succede nulla.
        \usepackage{longtable}
        \usepackage{xcolor}
        \usepackage{hhline}
        \usepackage{colortbl}
        \newcommand\HHline{\\[-\arrayrulewidth]\hhline}
        \usepackage{multirow}

        \definecolor{jgray}{rgb}{.4,.4,.4}
        \setlength\minrowclearance{-2pt}
        \setlength\arrayrulewidth{1pt}
        \arrayrulecolor{jgray}

        \begin{document}
        \begin{center}
        \begin{longtable}{|>{\columncolor[gray]{0.8}}p{.25\textwidth}|p{.65\textwidth}|}
        \hline
        \rowcolor{black}
        \color{white}\textbf{Col1}&\color{white}\textbf{Col2}
        \HHline{–}
        \multicolumn{1}{|>{\columncolor[rgb]{0.8,0.8,0.8}}c|}{}&\cellcolor{gray}\color{white}1
        \HHline{~-}
        &\cellcolor{gray}\color{white}2
        \HHline{~-}
        &\cellcolor{gray}\color{white}3
        \HHline{~-}
        \multicolumn{1}{|>{\columncolor[rgb]{0.8,0.8,0.8}}c|}{\multirow{-4}{*}{4 numeri}}
        &\cellcolor{gray}\color{white}4
        \\\hline
        \end{longtable}
        \end{center}
        \end{document} `

        il risultato è ottimo. Ho usato l’ambiente center, comunque poi usare anche \centering, l’importante è mettere una parentesi graffa aperta prima e quella chiusa dopo la tabella.
        `
        testo

        {\centering
        \begin{longtable}…
        \end{longtable}
        }

        \noindent testo
        `

        ciao.

        Andrea

        PS: leggiti la documentazione di colortbl e hhline.

      • #14609
        DMW
          Up
          0
          Down
          ::


          scusa, ma nel tuo caso basta scrivere, con il pacchetto colortbl:
          `
          \begin{table}[!pt]
          \centering%
          \def\arraystretch{1.2}
          \begin{tabular}{ccccl}
          \hline
          \rowcolor{blue}
          \multicolumn{2}{>{\columncolor{blue}}c}{A} &B &\multicolumn{2}{>{\columncolor{blue}}c}{C} \\
          \hline
          \rowcolor{green}
          600.00& 1093.20 &802.00&
          \multicolumn{2}{>{\columncolor{green}}c}{$(1.62\pm 0.15)\times\power{10}{-5}$} \\
          \rowcolor{gray}
          1093.20 &1991.83 &1461.25 &
          \multicolumn{2}{>{\columncolor{gray}}c}{$(3.18\pm 0.37)\times\power{10}{-6}$}\\
          \hline
          \end{tabular}
          \caption{PIPPO}%
          \label{tab:pippo}%
          \end{table}
          `

          oppure con il pacchetto xcolor, con opzione table:

          `\rowcolors{1}{gray}{green}
          \begin{table}[!pt]
          \centering%
          \def\arraystretch{1.2}
          \begin{tabular}{ccccl}
          \hline
          \rowcolor{blue}
          \multicolumn{2}{>{\columncolor{blue}}c}{A} &B &\multicolumn{2}{>{\columncolor{blue}}c}{C} \\
          \hline
          600.00& 1093.20 &802.00&\multicolumn{2}{>{\columncolor{green}}c}{$(1.62\pm 0.15)\times\power{10}{-5}$} \\
          1093.20 &1991.83 &1461.25 &\multicolumn{2}{>{\columncolor{gray}}c}{$(3.18\pm 0.37)\times\power{10}{-6}$}\\
          \hline
          \end{tabular}
          \caption{PIPPO}%
          \label{tab:pippo}%
          \end{table} `
          ciao

          Andrea

        • #14610
          Up
          0
          Down
          ::


          Grazie mille!

          Vado a leggere la documentazione inerente! 😀

      Visualizzazione 3 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top