Uno strano indent dell’ambiente tabular

  • Creatore
    Topic
  • #3542
    Up
    0
    Down
    ::


    Voglio costruire una tabella (tabular) che sia esattamente larga quanto il testo però, pur mettendo un \noindent prima della tabella, essa risulta non allineata con il resto del testo: la larghezza è giusta, ma tutto l’ambiente tabular risulta traslato verso destra di una certa quantità.

    Cosa devo fare per fare sì che testo e tabular abbiano gli stessi margini?

    Riporto di seguito un semplice esempio (le \hrule servono a rendere più evidente il fenomeno).

    `
    \documentclass{article}
    \newlength{\colonna}%
    \setlength{\colonna}{\textwidth}%
    \addtolength{\colonna}{-50pt}

    \begin{document}

    \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

    \noindent%
    \begin{tabular}{p{50pt}p{\colonna}}%
    prova & prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova prova prova prova prova prova
    prova.
    \end{tabular}

    \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

    \noindent prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova prova prova prova prova prova
    prova prova prova prova prova prova.

    \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

    \end{document}
    `

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #3543
      Up
      0
      Down
      ::

      Voglio costruire una tabella (tabular) che sia esattamente larga quanto il testo però, pur mettendo un \noindent prima della tabella, essa risulta non allineata con il resto del testo: la larghezza è giusta, ma tutto l’ambiente tabular risulta traslato verso destra di una certa quantità.
      Cosa devo fare per fare sì che testo e tabular abbiano gli stessi margini?
      Riporto di seguito un semplice esempio (le \hrule servono a rendere più evidente il fenomeno).
      `\noindent%
      \begin{tabular}{p{50pt}p{\colonna}}%
      prova & prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova.
      \end{tabular}`

      Si tratta di un fenomeno noto e curabile. L’ambiente tabular inserisce prima e dopo ogni colonna una spaziatura, che è metà di \tabularcolsep. Rimedio:`
      \begin{tabular}{@{}p{50pt}p{\colonna}@{}}`Ciao
      Enrico

    • #3544
      Up
      0
      Down
      ::


      Grazie mille.

      Serve un @{} anche tra le colonne.

      `\begin{tabular}{@{}p{50pt}@{}p{\colonna}@{}}`

    • #3545
      Up
      0
      Down
      ::

      Grazie mille.

      Serve un @{} anche tra le colonne.

      `\begin{tabular}{@{}p{50pt}@{}p{\colonna}@{}}`

      Non direi. Quello dipende da come vuoi la tua tabella. Così facendo annulli lo spazio fra le due colonne:non credo, in generale, che vada bene.
      Ciao
      Enrico

    • #3546
      Up
      0
      Down
      ::


      Se non lo metto anche tra le colonne, la tabella risulta più larga del testo (sporge sulla destra).

      I due casi sono ben evidenziati da questo esempio.

      `\documentclass{article}
      \newlength{\colonna}%
      \setlength{\colonna}{\textwidth}%
      \addtolength{\colonna}{-50pt}

      \begin{document}

      \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

      \noindent%
      \begin{tabular}{@{}p{50pt}p{\colonna}@{}}%
      prova & prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova.
      \end{tabular}

      \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

      \noindent prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova.

      \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

      \noindent%
      \begin{tabular}{@{}p{50pt}@{}p{\colonna}@{}}%
      prova & prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova.
      \end{tabular}

      \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

      \end{document}`

      Una possibile soluzione (per avere il giusto margine e mantenere lo spazio tra le due colonne) consiste nel togliere dalla larghezza della seconda colonna (\colonna) lo spazio tra le due colonne 2\tabcolsep.

      Ecco un esempio.

      `\documentclass{article}
      \newlength{\colonna}%
      \setlength{\colonna}{\textwidth}%
      \addtolength{\colonna}{-50pt}%
      \addtolength{\colonna}{-2\tabcolsep}%

      \begin{document}

      \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

      \noindent%
      \begin{tabular}{@{}p{50pt}p{\colonna}@{}}%
      prova & prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova.
      \end{tabular}

      \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

      \noindent prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova prova prova prova prova prova
      prova prova prova prova prova prova.

      \vspace{0.8\baselineskip}\hrule\vspace{0.8\baselineskip}

      \end{document}`

      Grazie molte dell’aiuto. Dove avrei potuto scoprire da solo che tabular usa la variabile \tabcolsep?

    • #3547
      Up
      0
      Down
      ::


      a parte che non sapevo la storia dello spazio e si impara sempre qualcosa di nuovo, secondo me non devi levare lo spazio centrale in maniera esplicita ma sottrarlo alla tua lunghezza colonna. certo devi sapere a priori quante colonne ci sono ed è un poco scomodo. altrimenti, se non vuoi una tabella larga esattamente come il testo la fai larga .95\textwidth e la centri e sei a posto, non la vedi sbordare da nessuna delle due parti e l’impatto grafico è ottimo.
      ciao
      f

    • #3548
      Up
      0
      Down
      ::

      a parte che non sapevo la storia dello spazio e si impara sempre qualcosa di nuovo, secondo me non devi levare lo spazio centrale in maniera esplicita ma sottrarlo alla tua lunghezza colonna. certo devi sapere a priori quante colonne ci sono ed è un poco scomodo. altrimenti, se non vuoi una tabella larga esattamente come il testo la fai larga .95\textwidth e la centri e sei a posto, non la vedi sbordare da nessuna delle due parti e l’impatto grafico è ottimo.
      ciao
      f

      Nel mio caso particolare so che le colonne sono esattamente due e ho bisogno che la tabella sia larga esattamente quanto il testo, quindi mantengo la soluzione scritta sopra. Ovviamente la tua è molto più comoda per un uso su tabelle con numero di colonne variabile.

    • #3549
      Up
      0
      Down
      ::

      Se non lo metto anche tra le colonne, la tabella risulta più larga del testo (sporge sulla destra).
      I due casi sono ben evidenziati da questo esempio.`\documentclass{article}
      \newlength{\colonna}%
      \setlength{\colonna}{\textwidth}%
      \addtolength{\colonna}{-50pt}

      \begin{document}
      …`Grazie molte dell’aiuto. Dove avrei potuto scoprire da solo che tabular usa la variabile \tabcolsep?

      Dal manuale, dove c’è chiaramente scritto. Purtroppo non molti lo leggono. 🙁
      Nella seconda edizione del Companion compare alle pagine 243, 247, 248, 250, 280, 282. Purtroppo non compare nella “mica tanto breve”, anche se la faccenda di @{} c’è.
      Ciao
      Enrico

    • #3550
      Up
      0
      Down
      ::

      Dal manuale, dove c’è chiaramente scritto. Purtroppo non molti lo leggono. 🙁
      Nella seconda edizione del Companion compare alle pagine 243, 247, 248, 250, 280, 282.

      Fino ad adesso ho cercato di basarmi sui manuali freeware reperibili online, ma penso che sia giunto il momento di procurarmi i manuali cartacei. Grazie ancora.

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

Go to top