tabella con contenuti multiriga nella stessa cella.

  • Creatore
    Topic
  • #37675
    Up
    0
    Down
    ::


    mi è parso di capire che bisogna utilizzare p{..} come analogo di \parbox nell’ambiente tabbing.

    l’ho fatto ma esce una sfilza di errori.

    ecco la tabella

    `

    \newcolumntype{+}{>{\global \let \currentrowstyle \relax}}
    \newcolumntype{^}{>{\currentrowstyle}}
    \newcommand {\rowstyle}[1]{\gdef \currentrowstyle{#1} #1\ignorespaces}

    \begin{table}
    \rowcolors{4}{}{gray!16}
    \caption{Vitamine idrosolubili}
    \centering
    \resizebox{\columnwidth}{!}{
    \begin{tabular}{+l^l^c^l}{p{0.3\textwidth}p{0.2\textwidth}p{0.2\textwidth}p{0.3\textwidth}}
    \toprule
    \rowstyle{\bfseries} Vitamina & Fonti & Dose giornaliera & Manifestazioni \\
    \rowstyle{\bfseries} & & raccomandata & da deficienza \\
    \rowstyle{\bfseries} & & (mg) & \\\midrule
    Acido ascorbico (C) & Agrumi, fragole & 60 & Scorbuto \\
    Tiamina (B\ped{1}) & Lievito, fegato & 1,5 & Beri Beri \\
    Riboflavina (B\ped{2}) & Latte, carne & 1,7 & Cheilosi, Glossite, Congiuntivite \\
    Niacina (PP) & Carne, pesce & 20 & Pellagra \\
    Piridossina (B\ped{6}) & Carne, pesce & 2,2 & Dermatite, anemia, epilessia \\
    Biotina & Tuorlo d'uovo & 0,2 & Dermatite, anemia, alopecia \\
    Acido pantotenico & Diffuso ovunque & 5 & Acromotrichia (nel ratto) \\
    Acido folico & Verdure, funghi & 0,4 & Anemia macrocita meganoblastica, Sprue \\
    Cobalamina (B\ped{12}) & Carne, uova & 0,003 & Anemia Perniciosa \\\bottomrule
    \end{tabular}}
    \end{table}

    `

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #37676
      Up
      0
      Down
      ::

      mi è parso di capire che bisogna utilizzare p{..} come analogo di \parbox nell’ambiente tabbing.

      l’ho fatto ma esce una sfilza di errori.

      E, certo, scrivi senza rispettare la sintassi.
      `
      \begin{table}
      \rowcolors{4}{}{gray!16}
      \caption{Vitamine idrosolubili}
      \medskip
      \centering
      \resizebox{\columnwidth}{!}{%
      \begin{tabular}{llc>{\raggedright\arraybackslash}p{0.3\textwidth}}
      \toprule
      \bfseries Vitamina & \bfseries Fonti &\bfseries Dose giornaliera & \bfseries Manifestazioni \\
      & &\bfseries raccomandata &\bfseries da deficienza \\
      & &\bfseries (mg) & \\
      \midrule
      Acido ascorbico (C) & Agrumi, fragole & 60 & Scorbuto \\
      Tiamina (B\ped{1}) & Lievito, fegato & 1,5 & Beri Beri \\
      Riboflavina (B\ped{2}) & Latte, carne & 1,7 & Cheilosi, Glossite, Congiuntivite \\
      […]
      Cobalamina (B\ped{12}) & Carne, uova & 0,003 & Anemia Perniciosa \\
      \bottomrule
      \end{tabular}}
      \end{table}`
      Non vedo perché fare tante storie con \rowstyle quando basta aggiungere \bfseries dove ti serve. Le spaziature sono come le metterei io, per evitare di spaparanzare la faccenda, ma puoi fare come ti pare. Però non dimenticare il % alla fine della riga \resizebox, che però va usato solo a ragion veduta.

      Ciao
      Enrico

    • #37677
      Up
      0
      Down
      ::


      mi spieghi questa riga per favore?
      `\begin{tabular}{llc>{\raggedright\arraybackslash}p{0.3\textwidth}}`

      ma scusa tu usi le righe staccate come me! in una casella ci dovrebbe essere scritto “dose giornaliera raccomandata” e nell’altra “manifestazione da deficienza”, invece mi hai riproposto:
      `\bfseries Vitamina & \bfseries Fonti &\bfseries Dose giornaliera & \bfseries Manifestazioni \\
      & &\bfseries raccomandata &\bfseries da deficienza \\`

      Le spaziature sono come le metterei io, per evitare di spaparanzare la faccenda

      le ho messe così perchè dappertutto suggeriscono di “mimare” la tabella anche nel sorgente, in modo da aumentarne la visibilità.

      e poi: io credevo che il “%” alla fine di resizebox fosse inutile: non è il simbolo che introduce i commenti? a che serve a fine riga?

      in definitiva: mi pare che tu abbia mantenuto le righe distinte! è così?

    • #37678
      Up
      0
      Down
      ::

      mi spieghi questa riga per favore?
      `\begin{tabular}{llc>{\raggedright\arraybackslash}p{0.3\textwidth}}`

      Dico che voglio due colonne con allineamento a sinistra, una centrate e una larga 3/10 della giustezza con “a capo automatico”. Ma non è il caso di cercare la giustificazione di quelle righe, che sarebbe difficile e darebbe pessimi risultati, quindi con \raggedright dico che il testo va a bandiera; \arraybackslash è necessario perché si tratta dell’ultima colonna.

      ma scusa tu usi le righe staccate come me! in una casella ci dovrebbe essere scritto “dose giornaliera raccomandata” e nell’altra “manifestazione da deficienza”, invece mi hai riproposto:
      `\bfseries Vitamina & \bfseries Fonti &\bfseries Dose giornaliera & \bfseries Manifestazioni \\
      & &\bfseries raccomandata &\bfseries da deficienza \\`

      Per le righe di intestazione è la cosa più semplice.

      Le spaziature sono come le metterei io, per evitare di spaparanzare la faccenda

      le ho messe così perchè dappertutto suggeriscono di “mimare” la tabella anche nel sorgente, in modo da aumentarne la visibilità.

      Non cambia nulla, fa’ come ti sembra meglio. In genere, se il sorgente della tabella lo permette, cerco di mantenere gli allineamenti; non a prezzo di righe lunghissime.

      e poi: io credevo che il “%” alla fine di resizebox fosse inutile: non è il simbolo che introduce i commenti? a che serve a fine riga?

      Non è inutile: la fine della riga equivale a uno spazio, ricordalo sempre; con il % TeX non vede la fine della riga.

      in definitiva: mi pare che tu abbia mantenuto le righe distinte! è così?

      Dov’è il problema? In questo modo non devi tirare a indovinare la larghezza della colonna.

      Ciao
      Enrico

    • #37679
      Up
      0
      Down
      ::


      il problema sta ne fatto che devi ogni volta decidere come ripartire fra più righe le parole che logicamente appartengono alla stessa cella! certo capirai che è un sistema rigidissimo! sarebbe meglio impostare i decimi per tutte le colonne (intestazione compresa) e poi lasciare andare a capo latex!

      perchè non si può usare p{0.X\textwidth} per tutte le colonne? in definitiva è quello che ho fatto nel primo post, ma non funziona! è solo questione del % mancante?

      scusa se ti subisso di domande, sto cercando di capire come funziona…

    • #37680
      Up
      0
      Down
      ::

      il problema sta ne fatto che devi ogni volta decidere come ripartire fra più righe le parole che logicamente appartengono alla stessa cella! certo capirai che è un sistema rigidissimo! sarebbe meglio impostare i decimi per tutte le colonne (intestazione compresa) e poi lasciare andare a capo latex!

      perchè non si può usare p{0.X\textwidth} per tutte le colonne? in definitiva è quello che ho fatto nel primo post, ma non funziona! è solo questione del % mancante?

      scusa se ti subisso di domande, sto cercando di capire come funziona…

      Guarda: inutile ripetere domande alle quali ho già risposto. Il sistema è molto semplice, una volta che prendi la mano; dividere le colonne fissandone l’ampiezza costringe a tirare a indovinare quanto devono essere. Perché, quando la macchina lo sa fare da sé?

      Ciao
      Enrico

    • #37681
      Up
      0
      Down
      ::


      quindi ho 2 sistemi:

      1) dividere il testo in più celle (ed ho fatto così per l’intestazione della tabella).
      così creo una cella fittizia che è divisa come voglio io. la larghezza è determinata automaticamente, ma rimane lo svantaggio di dividere il testo manualmente.

      2)usare p{}, che consente l’ “a capo” automatico, ma costringe a definire l’ampiezza.

      corretto che la macchina fissa automaticamente l’ampiezza, ma costringe la cella a stare solo su una riga: così o la tabella eccede i margini o se la rimpicciolisco con resizebox i caratteri diventano piccolissimi.
      senza contare che resizebox scala con un diverso fattore ogni tabella, cosicchè alla fine ognuna è larga come la colonna, ma ha una dimensione di font diversa da ogni altra.

      davvero non ho capito come coniugare queste 3 cose:
      1)tabella larga quanto la colonna
      2)celle contenenti più righe
      3)dimensione dei caratteri uniforme.

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

Go to top