Tabelle a colori alternati: dove mettere \rowcolors?

  • Creatore
    Topic
  • #30819
    Up
    0
    Down
    ::


    Ciao a tutti,
    grazie al fantastico articolo di Lapo Mori, finalmente sono riuscito a realizzare le tabelle che ho sempre sognato.

    Mi rimane solo un dubbio: nell’esempio seguente, che per funzionare funziona, il comando \rowcolors va bene posizionato dove l’ho messo io, oppure è il caso di creare un ambiente apposito o altro?

    `\documentclass{article}

    \usepackage[table]{xcolor}
    \usepackage{array}
    \usepackage{colortbl}
    \usepackage{tabularx}

    \definecolor{grigio}{gray}{.7}
    \definecolor{grigioChiaro}{gray}{.9}

    \newcommand{\intest}[1]{\multicolumn{1}{>{\columncolor{grigio}}c}{\textbf{#1}}}

    \newcolumntype{Z}{>{\centering\arraybackslash}X}
    \renewcommand{\tabularxcolumn}[1]{>{\arraybackslash}m{#1}}

    \begin{document}

    \rowcolors{3}{grigioChiaro}{}
    \begin{tabularx}{.93\linewidth}{*{3}{Z}}
    \intest{Nome} & \intest{Larghezza} & \intest{Altezza} \\
    VGA & 640 & 480 \\
    XGA & 1024 & 768
    \end{tabularx}

    \end{document}`

    L’esempio minimale rappresenta le mie esigenze (a parte qualche riga di meno per non fare confusione); non ho usato né l’ambiente table, dal momento che non ho avuto bisogno di specificare il posizionamento (ci pensa tabularx) o di fare alcun riferimento, né longtable, perché la tabella non viene collocata in concomitanza di un cambio pagina.

    Grazie e a presto!

Visualizzazione 1 filone di risposte
  • Autore
    Risposte
    • #30820
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::

        grazie al fantastico articolo di Lapo Mori, finalmente sono riuscito a realizzare le tabelle che ho sempre sognato.

        Mi rimane solo un dubbio: nell’esempio seguente, che per funzionare funziona, il comando \rowcolors va bene posizionato dove l’ho messo io, oppure è il caso di creare un ambiente apposito o altro?

        Per me la posizione di \rowcolors va bene così. Pagina 85 dell’Arte.

        Per il resto, concordo: quell’articolo è splendido. Sono grato a Lapo che mi ha concesso il permesso di riproporne un’ampia sintesi nella mia guida.

        Ciao,
        L.

      • #30821
        Up
        0
        Down
        ::


        Ciao Lorenzo, e grazie per l’interessamento.

        Per me la posizione di \rowcolors va bene così. Pagina 85 dell’Arte.

        Tra l’altro, alla stessa pagina scopro l’esistenza del comando \cellcolor, che forse, nel comando di intestazione che ho definito, è più adatto:

        `\newcommand{\intest}[1]{\multicolumn{1}{>{\cellcolor{grigio}}c}{\textbf{#1}}}`
        al posto di

        `\newcommand{\intest}[1]{\multicolumn{1}{>{\columncolor{grigio}}c}{\textbf{#1}}}`
        Rimane però un piccolo problema: quando avevo chiesto se era il caso, ad esempio, di creare un ambiente apposito, mi riferivo al tentativo di aumentare la semantica (in fin dei conti, \rowcolors è un comando “puntuale” che mi farebbe piacere inserire nel preambolo, e non prima di ogni tabella). Osserva infatti quello che succede se il numero delle righe diventa dispari:

        `\documentclass{article}

        \usepackage[table]{xcolor}
        \usepackage{array}
        \usepackage{colortbl}
        \usepackage{tabularx}

        \definecolor{grigio}{gray}{.7}
        \definecolor{grigioChiaro}{gray}{.9}

        \newcommand{\intest}[1]{\multicolumn{1}{>{\cellcolor{grigio}}c}{\textbf{#1}}}

        \newcolumntype{Z}{>{\centering\arraybackslash}X}
        \renewcommand{\tabularxcolumn}[1]{>{\arraybackslash}m{#1}}

        \begin{document}

        \rowcolors{3}{grigioChiaro}{}
        \begin{tabularx}{.93\linewidth}{*{3}{Z}}
        \intest{Nome} & \intest{Larghezza} & \intest{Altezza} \\
        VGA & 640 & 480 \\
        XGA & 1024 & 768
        \end{tabularx}

        Bla, bla, bla\dots

        \begin{tabularx}{.93\linewidth}{*{3}{Z}}
        \intest{Nome} & \intest{Larghezza} & \intest{Altezza} \\
        VGA & 640 & 480 \\
        XGA & 1024 & 768 \\
        VGA & 640 & 480
        \end{tabularx}

        Bla, bla, bla\dots

        \begin{tabularx}{.93\linewidth}{*{3}{Z}}
        \intest{Nome} & \intest{Larghezza} & \intest{Altezza} \\
        VGA & 640 & 480 \\
        XGA & 1024 & 768
        \end{tabularx}

        \end{document}`
        Questo non è l’effetto da me desiderato, e per ovviare a questo problema non ho altra scelta che ripetere il comando prima di ciascuna tabella, cosa che volevo evitare:

        `\rowcolors{3}{grigioChiaro}{}
        \begin{tabularx}{.93\linewidth}{*{3}{Z}}
        \intest{Nome} & \intest{Larghezza} & \intest{Altezza} \\
        VGA & 640 & 480 \\
        XGA & 1024 & 768
        \end{tabularx}

        Bla, bla, bla\dots

        \rowcolors{3}{grigioChiaro}{}
        \begin{tabularx}{.93\linewidth}{*{3}{Z}}
        \intest{Nome} & \intest{Larghezza} & \intest{Altezza} \\
        VGA & 640 & 480 \\
        XGA & 1024 & 768 \\
        VGA & 640 & 480
        \end{tabularx}

        Bla, bla, bla\dots

        \rowcolors{3}{grigioChiaro}{}
        \begin{tabularx}{.93\linewidth}{*{3}{Z}}
        \intest{Nome} & \intest{Larghezza} & \intest{Altezza} \\
        VGA & 640 & 480 \\
        XGA & 1024 & 768
        \end{tabularx}`
        Qual è il modo migliore di gestire questa situazione, tenendo conto della semantica?

        Grazie e a presto!

    Visualizzazione 1 filone di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top