Problemi con tabella

  • Creatore
    Topic
  • #102026
    Up
    0
    Down
    ::


    Salve,
    mi sono appena inscritto quindi ne approfitto per salutare tutti e ringraziare chi avrà voglia di darmi una mano.

    Ho da creare una tabella nella quale le prime due colonne contengono una sola frase mentre le ultime due devono essere divise in più righe.
    Per iniziare ho utilizzato il comando multirow ma lo scritto nella seconda colonna era troppo lungo e mi sfociava nella terza colonna così ho riletto “l’arte” e ho trovato il consiglio di mettere una tabella dentro la tabella.

    il problema è che il testo delle righe intere ora inizia a metà della casella rendendo il tutto non molto bello.

    ` \begin{tabular}{p{0.15\textwidth}p{0.20\textwidth}p{0.35\textwidth}p{0.35\textwidth}}
    \toprule
    Componente & Funzione & Modo di guasto & Possibile causa \\
    \toprule
    Dito & Apertura del coperchio e serraggio del cassonetto &
    \begin{tabular}{p{0.35\textwidth}p{0.35\textwidth}}
    Rottura in corrispondenza della sezione critica & Urti, carichi eccessivi e ambiente corrosivo \\
    \midrule
    Rottura del pezzo & propagazione di una cricca a partire da uno spigolo dovuto ad un errore di disegno
    \end{tabular}

    \end{tabular}`

    potrei risolverlo inserendo uno spazio verticale e centrandolo a mano ma volevo sapere se c’è qualche altro modo che non dipenda dal mio (scarso) senso estetico.

    Grazie,
    Francesco

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #102027
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Prova così`\begin{tabular}{p{0.15\textwidth}p{0.17\textwidth}p{0.35\textwidth}p{0.35\textwidth}}
        \toprule
        Componente & Funzione & Modo di guasto & Possibile causa \\
        \midrule
        Dito & Apertura del coperchio e serraggio del cassonetto &
        \begin{tabular}[t]{@{}p{0.35\textwidth}p{0.35\textwidth}@{}}
        Rottura in corrispondenza della sezione critica & Urti, carichi eccessivi e ambiente corrosivo \tabularnewline
        \midrule
        Rottura del pezzo & propagazione di una cricca a partire da uno spigolo dovuto ad un errore di disegno
        \end{tabular}\tabularnewline
        \bottomrule
        \end{tabular}`

      • #102028
        Up
        0
        Down
        ::


        Molte grazie è decisamente quello che cercavo di fare.
        ho visto i cambiamenti ma non capisco la connessione, cioè come mai la tabella interna mi influenza l’esterno?

        ad ogni modo problema risolto, grazie ancora della disponibilità e velocità Claudio

      • #102029
        Up
        0
        Down
        ::


        Il problema è legato alla posizione di default della tabella interna. Essa è definita dall’argomento facoltativo [tt]\begin{tabular}[posizione][/tt], che può essere [tt]t[/tt], [tt]c[/tt] o [tt]b[/tt]. Di base [tt]tabular[/tt] è impostato su [tt]c[/tt] che indica che la tabella è centrata rispetto alla linea del testo. Invece [tt]t[/tt] e [tt]b[/tt] impostano rispettivamente l’allineamento alla prima riga in alto della tabella o all’ultima. @OldClaudio ti ha suggerito giustamente di cambiare l’allineamento, passando al allineamento in alto, ottenendo il risultato che ti interessava

      • #102030
        Up
        0
        Down
        ::


        sono andato un po’ più avanti ma mi sono incornato su un altro problema:

        `
        \begin{longtable}{p{0.15\textwidth}p{0.30\textwidth}p{0.05\textwidth}p{0.05\textwidth}p{0.05\textwidth}p{0.30\textwidth}}

        \toprule
        \multirow{2}*{Componente} & \multirow{2}*{Modo di guasto} & \multicolumn{1}{c}{\multirow{2}*{\textbf{P}}} & \multicolumn{1}{c}{\multirow{2}*{\textbf{S}}} & \multicolumn{1}{c}{\multirow{2}*{\textbf{R}}} & \multicolumn{1}{c}{Indice di criticità} \\
        & & & & & \multicolumn{1}{c}{$\textbf{P} \cdot \textbf{S} \cdot \textbf{R} $} \\
        \toprule
        Dito & \begin{tabular}[t]{@{}p{0.30\textwidth}p{0.05\textwidth}p{0.05\textwidth}p{0.05\textwidth}p{0.30\textwidth}}
        Rottura in corrispondenza della sezione critica & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{155}
        \tabularnewline
        \midrule
        Rottura del pezzo & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{155}
        \tabularnewline
        \midrule
        Cedimento sedi viti & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{155}
        \tabularnewline
        \midrule
        Cedimento giunzione con cerniera & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{5} & \multicolumn{1}{c}{155}
        \end{tabular}\tabularnewline
        \toprule
        \caption{Tabella valutaizone guasto}
        \end{longtable}
        `

        ho provato a usare un po’ di comandi diversi cercando di tirare fuori la tabella che mi serve ma non riesco a capire come mai la tabella interna non mi copre tutte le 5 colonne ma si ferma alla quarta.

        avete mica consigli da darmi?

      • #102031
        Up
        0
        Down
        ::


        Una tabella del genere potrebbe corrispondere a ciò che cerchi?
        `
        \documentclass[a4paper]{article}
        \usepackage[T1]{fontenc}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{booktabs}
        \begin{document}

        \begin{tabular}{lp{0.30\textwidth}*4{c}}
        \toprule
        Componente & Modo di guasto & P & S & R & \begin{tabular}{@{}c@{}}Indice di criticità\\\textbf{P}$\cdot$ \textbf{S}$\cdot$ \textbf{R} \end{tabular} \\ \midrule
        Dito & Rottura in corrispondenza della sezione critica & 5 & 5 & 5 & 155 \\
        \cmidrule{2-6}
        & Rottura del pezzo & 5 & 5 & 5 & 155 \\
        \cmidrule{2-6}
        & Cedimento sedi viti & 5 & 5 & 5 & 155 \\
        \cmidrule{2-6}
        & Cedimento giunzione con cerniera & 5 & 5 & 5 & 155 \\
        \bottomrule
        \end{tabular}
        \end{document}
        `

      • #102032
        Up
        0
        Down
        ::


        Mi sono accorto che il codice compilato dà due errori di [tt]Underfull box[/tt]. In questo modo lì risolvi.
        `
        \documentclass[a4paper]{article}
        \usepackage[T1]{fontenc}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{booktabs,array}
        \begin{document}

        \begin{tabular}{l>{\raggedright}p{0.30\textwidth}*4{c}}
        \toprule
        Componente & Modo di guasto & P & S & R & \begin{tabular}{@{}c@{}}Indice di criticità\\\textbf{P}$\cdot$ \textbf{S}$\cdot$ \textbf{R} \end{tabular} \\ \midrule
        Dito & Rottura in corrispondenza della sezione critica & 5 & 5 & 5 & 155 \\
        \cmidrule{2-6}
        & Rottura del pezzo & 5 & 5 & 5 & 155 \\
        \cmidrule{2-6}
        & Cedimento sedi viti & 5 & 5 & 5 & 155 \\
        \cmidrule{2-6}
        & Cedimento giunzione con cerniera & 5 & 5 & 5 & 155 \\
        \bottomrule
        \end{tabular}
        \end{document}

        `

      • #102033
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Non hai nessun bisogno di usare longtable; non hai nemmeno bisogno di usare due ambienti tabular annidati.
          La soluzione di @skevin93 potrebbe andare; questa soluzione va anche meglio (secondome, ma a te potrebbe piacere di più quella di @skevin93)`\documentclass{article}
          \usepackage[utf8]{inputenc}
          \usepackage[T1]{fontenc}
          \usepackage{lmodern,textcomp}
          \usepackage{longtable,booktabs,array}
          \usepackage[italian]{babel}

          \begin{document}

          \begin{table}
          \begin{tabular}{p{0.15\textwidth}>{\raggedright}p{0.30\textwidth}ccc>{\centering}m{0.30\textwidth}}
          \toprule
          \multicolumn1l{Componente} & \multicolumn1l{Modo di guasto} & \textbf{P} & \textbf{S} & \textbf{R}
          & Indice di criticità \newline $\textbf{P} \cdot \textbf{S} \cdot \textbf{R} $ \tabularnewline
          \midrule
          Dito & Rottura in corrispondenza della sezione critica & {5} & {5} & {5} & {155}
          \tabularnewline
          \cmidrule{2-6}
          & Rottura del pezzo & {5} & {5} & \multicolumn{1}{c}{5} & {155}
          \tabularnewline
          \cmidrule{2-6}
          & Cedimento sedi viti & {5} & {5} & {5} & {155} \tabularnewline
          \cmidrule{2-6}
          &Cedimento giunzione con cerniera & {5} & {5} & {5} & {155} \tabularnewline
          \bottomrule
          \end{tabular}
          \caption{Tabella valutazione guasto}
          \end{table}
          \end{document}`Aggiusta le larghezze delle sole tre colonne che hanno degli specificatori di larghezza (prima, seconda e sesta); ricordati che ti serve il pacchetto array.

          Come vedi dall’esempio che ti ho proposto, non c’è nessun bisogno di usare multirow e non c’è nessun bisogno di usare una tabella annidata nell’altra.

          Per favore, quando chiedi aiuto cerca di non allegare al tuo messaggio il solo brano di codice che ti dà problemi, ma allega un EMC, Esempio Minimo Compilable; vale a dire un file completo dalla specificazione \documentclass, fino alla specificazione di \end{document}, ma che non contenga tutto il tuo documento, nemmeno tutto il tuo preambolo, ma solo quello che serve per compilare il codice problematico in modo da replicare il problema.

        • #102034
          Up
          0
          Down
          ::


          Mi sono andato a complicare la vita in maniera vergognosa e solo ora me ne rendo conto…grazie ad entrambi.
          (devo ricordarmi più spesso che sono un ingegnere e la mia religione è la semplificazione)

          il comando long table mi serve perchè sono una serie di pezzi e la tabella alla fine passa nella pagina successiva.

          per le linee di codice avevo visto le vostre risposte (e anche quelle negli altri topic) e avevo notato, per le prossime volte terrò a mente.

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

      Go to top