Re: [Tabelle] centrare verticalmente celle multi-righe

#82906
OldClaudio
Partecipante
    Up
    0
    Down
    ::

    _stella” post=82236Non è mia abitudine girarmi i pollici e farmi fare le cose dagli altri. Ho scritto all’inizio che stavo chiedendo aiuto dopo aver tentato per DUE giorni di risolvere il problema da me, evidentemente in due giorni ho fatto un bel po’ di ricerche, ma evidentemente sono troppo STUPIDA per capire.

    Ahimè la guida a cui mi hai rimandato l’ho letta, tre volte, evidentemente non la capisco, mi dispiace.

    Il comando \multirow viene introdotto a pagina 147, ma gli esempi sono fatti tutti con \multicolumn, quindi continuo a non capire come usare il comando.
    La tabella di cui parli poi, non l’ho proprio trovata invece.

    Fatta questa premessa, ti chiedo scusa per il tempo che hai dovuto sprecare per insultarmi.
    Mi hanno sempre insegnato che le persone che si approcciano a qualcosa di nuovo vanno incoraggiate e consigliate, non insultate perchè non capiscono.

    Grazie lo stesso.

    Primo: non ti ho insultato: ti ho detto semplicemente, leggi la documentazione, ti ho detto quale, e che come. Ti ho detto di scrivere inviando un esempio minimo compilabile. Ti ho detto che solo in questo modo qualcuno ti avrebbe potuto aiutare.

    Secondo: non so se ho capito bene quello che vuoi fare; comunque ti informo che nelle tabelle composte bene non si mettono filetti verticali e si mettono pochissimi filetti orizzontali; ti aggiungo ora che questi filetti orizzontali, di diversi spessori, si mettono usando i comandi del pacchetto booktabs. (Tutto ciò è scritto nell’arte di scrivere con LaTeX).

    Nella guida di multirow c’è la sintassi del comando:\quote][\tt]\multirow][/tt]{nrows}[bigstruts]{width}[fixup]{text}[/quote] e subito dopo c’è la spiegazione dei vari parametri obbligatori e facoltativi.

    Nella GuidaGuIT nella pagina 147, che hai trovato, c’è scritto che le celle di una tabella si possono raggruppare nativamente solo orizzontalmente con il comando [tt]\multicolumn[/tt] e che, per raggrupparle verticalmente è necessario usare il pacchetto multirow [omissis] che richiede aggiustamenti manuali e che è meglio non usarlo. Non ci sono esempi, perché, appunto, è meglio non usarlo.

    Per altro “è meglio non usarlo” non vuol dire che sia proibito. È ovvio che, se lo si vuole usare lo stesso, bisogna leggere la documentazione di multirow per capire come fare gli aggiustamenti verticali.

    La tabella insolita, che ti ho indicato nel mio precedente messaggio, ha la sua didascalia elencata nell’Elenco delle tabelle della GuidaGuIT e quell’elenco la pone nella pagina 182.
    Si va nella pagina 182 e vi si trova una tabella piena di graffe. In fondo alla pagina 181 e per tutto il resto della pagina 182 fino all’inizio della pagina 283 c’è il codice con il quale è stata “disegnata” quella tabella.

    Ora non puoi dire di non aver trovato quello che ti ho indicato a parole; a stretto rigore è offensivo che ti debba dire in quale pagine andare a guardare, perché implica che io non ti consideri abbastanza in gamba per saper leggere un indice. No, semplicemente non hai cercato la tabella insolita.

    Ma, sempre se ho capito bene il tuo desiderio, si può fare tutto in modo più semplice rispetto al codice della tabella insolita, dove ci sono sia graffe aperte sia graffe chiuse, le quali intersecano righe diverse della tabella.

    Nel tuo caso, sempre se ho capito bene il tuo problema, è tutto più semplice, ma bisogna conoscere il funzionamento dei comandi di base dell’interprete TeX. È questa la parte difficile e ha ragione @illinguista1972 a dire che con pochi giorni di esperienza LaTeX alle spalle è un problema difficile.

    Sempre che io abbia capito bene il tuo problema, tolti i filetti verticali, usati solo i filetti orizzontali, definito un comando apposta per comporre la cella della prima colonna con la relativa graffa aperta alla sua destra, eccoti il codice:
    `
    % !TEX encoding = UTF-8 Unicode
    % !TEX TS-program = pdflatex

    \documentclass{book}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage[italian]{babel}

    \usepackage{booktabs,multirow}

    % Comando per comporre una cella di larghezza specificata con una grande graffa a destra
    % primo argomento: larghezza della parte scritta
    % secondo argomento: altezza complessiva della graffa
    % terzo argomento: testo da scrivere nella cella
    \newcommand\cellacongraffa[3]{$\vcenter{\hsize#1 #3}\left\{\vcenter to #2\baselineskip{\vss}\right.$}

    \begin{document}

    \begin{table}\def\arraystretch{1.2}\small
    \begin{tabular}{cp{0.35\textwidth}p{0.35\textwidth}}\toprule
    \multirow{15}{0.2\textwidth}{\cellacongraffa{0.18\textwidth}{19}{Bla bla bla bla bla bla bla bla bla bla bla bla}}
    & Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    & Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla\\
    \cmidrule{2-3}
    & Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    & Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla\\
    \midrule
    \multirow{20}{0.2\textwidth}{\cellacongraffa{0.18\textwidth}{23.5}{Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla}}
    & Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    & Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla\\
    \cmidrule{2-3}
    & Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    & Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla\\
    \bottomrule
    \end{tabular}
    \caption{Tabella con multirow}\label{tab:multirow}
    \end{table}

    \end{document}
    `

    No, tu non sei una persona che gira i pollici; hai fatto due giorni di ricerche, senza arrivare a nulla. Il fatto che tu non abbia capito non dipende dal fatto che tu sia stupida (cos’è questa autoflagellazione…); significa solo che hai un’esperienza troppo ridotta per affrontare un problema così complesso.

    Ora che hai la soluzione, sempre che io abbia capito quale sia il tuo problema e che la soluzione che ti mando te lo risolva, capisci quello che ho scritto nel mio codice? Credo di no. Non ancora, perché la tua esperienza è troppo ridotta. Non avertene a male: pochi giorni non bastano, ma vedrai che fra alcuni mesi il codice che ho scritto non ti sarà più misterioso, ma devi accumulare mesi di esperienza, non giorni; e devi leggere tanta documentazione impadronendoti di quello che vi trovi scritto.
    Ci siamo passati tutti attraverso questa trafila; ci riuscirai anche tu.

    Go to top