Problema: multirow non allinea verticalmente il testo

  • Creatore
    Topic
  • #54118
    Up
    0
    Down
    ::


    Ciao a tutti,

    vi spiego il mio problema.

    Ho una tabella dove nella prima colonna sono presenti due celle create con multirow. Non capisco perché il testo, ruotato con \rotatebox, non venga centrato verticalemente.

    Ecco il codice della tabella:
    `
    \documentclass{report}

    \usepackage{graphicx}
    \usepackage{amsmath}
    \usepackage{booktabs}
    \usepackage{multirow}

    \begin{document}

    \centering

    \begin{tabular}{*{4}{c}}
    \toprule
    & Segmento & Fase & Frazione\\
    \midrule
    \multirow{4}*{\rotatebox[origin=c]{90}{Tratta}} & 1-2 & warm-up e decollo & 0.97\\[1ex]
    & 2-3 & salita & 0.985\\[1ex]
    & 3-4 & crociera & $\exp\left({-\dfrac{R\cdot SFC}{V\cdotp E}}\right)$\\[1ex]
    & 4-5 & discesa ed atterraggio & 0.995\\[1ex]
    \midrule
    \multirow{5}*{\rotatebox[origin=c]{90}{Diversione}} & 5-6 & attesa & 1\\[1ex]
    & 6-7 & salita & 1\\[1ex]
    & 7-8 & crociera & $\exp\left({-\dfrac{R\cdot SFC}{V\cdot E}}\right)$\\[1ex]
    & 8-9 & diversione & 1\\[1ex]
    & 9-10 & attesa & $\exp\left({-\dfrac{t_{loi}\cdot SFC}{E}}\right)$\\[1ex]
    \bottomrule
    \end{tabular}
    \end{document}`

    Cliccando qui sotto potete vedere il risultato

    Si può vedere ad occhio come le scritte Tratta e Diversione non siano centrare verticalemnte nella cella creata con multirow. Come mai?

    Grazie in anticipo

    Michele

    P.S. Secondo voi è impostata benela tabella? Si accettano consigli.

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #54119
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Così funziona:
        `
        \documentclass{report}

        \usepackage{graphicx}
        \usepackage{amsmath}
        \usepackage{booktabs}
        \usepackage{multirow}

        \begin{document}

        \centering

        \begin{tabular}{*{4}{c}}
        \toprule
        & Segmento & Fase & Frazione\\
        \midrule
        \multirow{6}*{\rotatebox[origin=c]{90}{Tratta}} & 1-2 & warm-up e decollo & 0.97\\[1ex]
        & 2-3 & salita & 0.985\\[1ex]
        & 3-4 & crociera & $\exp\left({-\dfrac{R\cdot SFC}{V\cdotp E}}\right)$\\[1ex]
        & 4-5 & discesa ed atterraggio & 0.995\\[1ex]
        \midrule
        \multirow{7}*{\rotatebox[origin=c]{90}{Diversione}} & 5-6 & attesa & 1\\[1ex]
        & 6-7 & salita & 1\\[1ex]
        & 7-8 & crociera & $\exp\left({-\dfrac{R\cdot SFC}{V\cdot E}}\right)$\\[1ex]
        & 8-9 & diversione & 1\\[1ex]
        & 9-10 & attesa & $\exp\left({-\dfrac{t_{loi}\cdot SFC}{E}}\right)$\\[1ex]
        \bottomrule
        \end{tabular}
        \end{document}
        `

        \multirow fa quel che può quando le righe della tabella sono tutte della stessa altezza; nel tuo caso bisogna aiutarlo un po’ imbrogliandolo sul numero di righe.

      • #54120
        Up
        0
        Down
        ::


        Grazie mille!!!

        Rimane comunque naturale fare una domanda:

        c’è una qualche “legge” che mi dice quante righe aggiungere per centrare il testo in questi casi o è solo una cosa ad occhio?

        Saluti e buon anno a tutti

        Michele Muccioli

      • #54121
        Up
        0
        Down
        ::


        Ciao azoun,
        vedo che in questo periodo non sono solo io a lavorare con multirow e rotatebox. 😀
        Vorrei chierti un parere. Tu usi sempre una spaziatura aggiuntiva tra le righe o scegli caso per caso, a seconda del risultato, se introdurre spazio o meno? Per caso l’inserimento dello spazio è consigliato a priori?

        Ciao,
        Daniele

      • #54122
        Up
        0
        Down
        ::

        Grazie mille!!!

        Rimane comunque naturale fare una domanda:

        c’è una qualche “legge” che mi dice quante righe aggiungere per centrare il testo in questi casi o è solo una cosa ad occhio?

        Il problema di questa particolare tabella è che le righe non hanno tutte la stessa altezza e quindi \multirow è ingannato.

        Il metodo più sicuro è di non usare multirow. 😉 Io non l’ho mai usato e non ne ho mai sentito la necessità. Mettere quelle scritte in verticale non mi pare un’ottima idea. Io proverei con questo:
        `\renewcommand{\arraystretch}{1.5}
        \begin{tabular}{*{3}{c}}
        \toprule
        Segmento & Fase & Frazione\\
        \midrule
        \addlinespace[1ex]
        Tratta\\
        1-2 & warm-up e decollo & 0.97\\
        2-3 & salita & 0.985\\
        3-4 & crociera & $\exp\left({-\dfrac{R\cdot SFC}{V\cdotp E}}\right)$\\
        4-5 & discesa ed atterraggio & 0.995\\
        \midrule
        \addlinespace[1ex]
        Diversione\\
        5-6 & attesa & 1\\
        6-7 & salita & 1\\
        7-8 & crociera & $\exp\left({-\dfrac{R\cdot SFC}{V\cdot E}}\right)$\\
        8-9 & diversione & 1\\
        9-10 & attesa & $\exp\left({-\dfrac{t_{loi}\cdot SFC}{E}}\right)$\\
        \bottomrule
        \end{tabular}`
        Il \renewcommand sarà dentro un ambiente table o center, quindi il suo effetto non si propaga.

        Ciao
        Enrico

      • #54123
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Sorpassato da diversi altri messaggi rispondo alla tua domanda. La documentazione di multirow dice espressamente che il file e il comando \multirow sono un po’ inaffidabili in merito alla precisione di posizionamento del contenuto. Enrica fa bene a evitare di girare delle scritte e a usare multirow. Anch’io non ricordo l’ultima volta che l’ho usato e ho rotto la tradizione sperimentando ieri con il tuo file 🙂

          Ma la soluzione è proprio quella di andare ad occhio quando non si sa bene come regolare il numero di righe da gestire; ma è altrettanto certo che quando nella tabella compaiono celle di altezza diversa dal normale, la necessità di arrivare alla specificazione di un numero di righe maggiore di quello logico diventa impellente; infatti ieri, quando ho sperimentato con la tua tabella è stata prima cosa che mi è venuta in mente ed ha funzionato subito. Non c’è santo che faccia il miracolo di centrare verticalmente con le altezze disuniformi delle righe adiacenti.

        • #54124
          Up
          0
          Down
          ::

          …Tu usi sempre una spaziatura aggiuntiva tra le righe o scegli caso per caso, a seconda del risultato, se introdurre spazio o meno? Per caso l’inserimento dello spazio è consigliato a priori?

          Vado ad occhio. Ho fatto caso però che quando si inseriscono delle equazioni con delle frazioni in displaystyle bisogna sempre riaggiustare un po’.

          …Il problema di questa particolare tabella è che le righe non hanno tutte la stessa altezza e quindi \multirow è ingannato.

          Immaginavo che fosse una cosa del genere….

          Per quanto riguarda la soluzione che mi hai proposto, ti ringrazio, valuterò…..

          Saluti a tutti

          Michele

        • #54125
          Up
          0
          Down
          ::


          ho provato a riprodurre la tua tabella in tikz.

          `\begin{tabular}{c}
          \toprule
          \begin{tikzpicture}
          \matrix (m) [matrix of nodes]
          {
          & Segmento & Fase & Frazione\\
          \midrule
          \phantom{-} & 1-2 & warm-up e decollo & 0.97\\
          & 2-3 & salita & 0.985\\
          & 3-4 & crociera & $\exp\left({-\dfrac{R\cdot SFC}{V\cdotp E}}\right)$\\[1ex]
          \phantom{-} & 4-5 & discesa ed atterraggio & 0.995\\
          \midrule
          \phantom{-} & 5-6 & attesa & 1\\
          & 6-7 & salita & 1\\
          & 7-8 & crociera & $\exp\left({-\dfrac{R\cdot SFC}{V\cdot E}}\right)$\\
          & 8-9 & diversione & 1\\
          \phantom{-} & 9-10 & attesa & $\exp\left({-\dfrac{t_{loi}\cdot SFC}{E}}\right)$\\
          };
          \node [fit=(m-2-1) (m-5-1)] (tratta) {};
          \node at (tratta) [rotate=90] {Tratta};
          \node [fit=(m-6-1) (m-10-1)] (diversione) {};
          \node at (diversione) [rotate=90] {Diversione};
          \end{tikzpicture} \\
          \bottomrule
          \end{tabular}`

          nel complesso l’idea funziona, ma le midrule sembrano interferire col corretto fitting delle celle per “Tratta”, mentre con “Diversione” il centraggio funziona egregiamente. non so se e’ un bug di tikz o un’utopia pretendere che delle \midrule all’interno della tikzpicture non creino disturbi…
          la cosa piu’ rognosa e’ stata rendersi conto che tikz non dichiara la label per le celle vuote, da cui i \phantom.

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

      Go to top