Problema centramento tabella

  • Creatore
    Topic
  • #106119
    Andrea
    Partecipante
      Up
      0
      Down
      ::


      Salve a tutti. Le tabelle mi hanno sempre recato disturbo, le ho sempre trovate molto complicate da scrivere in latex, ma con un po’ di buona volontà ho iniziato a capire qualcosa. Il problema che ho io è questo: Voglio creare una tabella, che però risulta essere un po’ troppo lunga e mi usciva dalla pagina. Così, per accorciarla, ho usato il comanto \multicolumn per andare a capocol testo e creare una cella composta da 3 celle (tipo comando unisci cella di excel). Risultato quasi soddisfacente. Purtroppo, la tabella non risulta centrata a causa della sua lunghezza.
      Inoltre, la didascalia non è centrata con la tabella stessa ma risulta identata col testo. Io credo di poter affermare che “spostare” la tabella un po’ più a sinistra equivale a uscire dai margini preimpostati, ma si può fare qualcosa? ecco il codice:

      `\begin{table}

      \begin{tabular}{|c|c|c|c|c|c|}
      \hline
      \multicolumn{1}{|c|}{\bf Modello} & \multicolumn{1}{|c|}{\bf Prezzo} & \multicolumn{1}{|c|}{\bf Autonomia} & \multicolumn{1}{|c|}{\bf Accelerazione} & \multicolumn{1}{|c|}{\bf Potenza} & \multicolumn{1}{|c|}{\bf Velocità} \\
      \multicolumn{1}{|c|}{\bf (unità} & \multicolumn{1}{|c|}{\bf (\euro)} & \multicolumn{1}{|c|}{\bf (Km)} & \multicolumn{1}{|c|}{\bf 0-100} & \multicolumn{1}{|c|}{\bf (Kw-CV)} & \multicolumn{1}{|c|}{\bf massima}\\
      \multicolumn{1}{|c|}{\bf vendute)} & \multicolumn{1}{|c|}{} & \multicolumn{1}{|c|}{} & \multicolumn{1}{|c|}{\bf (s)} & \multicolumn{1}{|c|}{} & \multicolumn{1}{|c|}{\bf (Km/h)}\\
      \hline
      Nissan Leaf (327) & 23790-35590 & 250 & 11,5 & 80-109 & 145\\
      \hline
      Renault Zoe (238) & 22050 & 170 & 13 & 65-85 & 135\\
      \hline
      Citr\”oen C-Zero (136) & 30690 & 150 & 15.9 & 50-67 & 130\\
      \hline
      Smart Fortwo (104) & 24978-34607 & 145 & 11.5 & 55-75 & 125\\
      \hline
      Tesla Model S 70D (96) & $81940$ & 442 & 5.4 & 246-334 & 225 \\
      \hline

      \end{tabular}
      \caption{Confronto tra le 5 auto elettriche più vendute in Italia nel 2015}
      \end{table}`

      E il risultato:


    Visualizzazione 9 filoni di risposte
    • Autore
      Risposte
      • #106120
        Up
        0
        Down
        ::


        Prima ti metto le mie proposte, è un esempio minimo compilabile un po’ lungo ma cercherò di commentarlo almeno in parte.

        `\documentclass[a4paper,draft]{book}
        \usepackage[italian]{babel}
        \usepackage[utf8]{inputenc}
        \usepackage[T1]{fontenc}
        \usepackage{graphicx}
        \usepackage{booktabs}
        \usepackage{lscape}
        \usepackage{eurosym}
        \usepackage{lipsum}
        \usepackage{dcolumn}
        \usepackage[margin=10pt,font=small,labelfont=bf,labelsep=endash,format=hang,justification= justified]{caption}
        \captionsetup[table]{position=bottom}

        \renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}}
        \renewcommand{\thetable}{\arabic{chapter}.\arabic{table}}

        \begin{document}

        \mainmatter
        \pagestyle{plain}
        \chapter{prova}
        \lipsum[1-2]

        %%%%%%%%%%%%%%%%%%%%%
        %%%SOLUZIONE 1 %%%%%%%%%%%%%%
        %%%%%%%%%%%%%%%%%%%%%

        \begin{table}[htb]
        \centering
        \tiny %oppure usa\scriptsize pervedere cosa succede con draft nel preambolo da togliere per ottenere il file finale
        \begin{tabular}{cccD{.}{,}{2.1}cc}
        \toprule
        \multicolumn{1}{c}{\bf Modello} & \multicolumn{1}{c}{\bf Prezzo} & \multicolumn{1}{c}{\bf Autonomia} & \multicolumn{1}{c}{\bf Accelerazione} & \multicolumn{1}{c}{\bf Potenza} & \multicolumn{1}{c}{\bf Velocità} \\
        \multicolumn{1}{c}{\bf (unità} & \multicolumn{1}{c}{\bf (\euro)} & \multicolumn{1}{c}{\bf (km)} & \multicolumn{1}{c}{\bf 0-100} & \multicolumn{1}{c}{\bf (kW-CV)} & \multicolumn{1}{c}{\bf massima}\\
        \multicolumn{1}{c}{\bf vendute)} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{\bf (s)} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{\bf (km/h)}\\
        \midrule
        Nissan Leaf (327) & 23790-35590 & 250 & 11.5 & 80-109 & 145\\
        \midrule
        Renault Zoe (238) & 22050 & 170 & 13 & 65-85 & 135\\
        \midrule
        Citr\”oen C-Zero (136) & 30690 & 150 & 15.9 & 50-67 & 130\\
        \midrule
        Smart Fortwo (104) & 24978-34607 & 145 & 11.5 & 55-75 & 125\\
        \midrule
        Tesla Model S 70D (96) & $81940$ & 442 & 5.4 & 246-334 & 225 \\
        \bottomrule
        \end{tabular}
        \caption{Confronto tra le 5 auto elettriche più vendute in Italia nel 2015}
        \end{table}
        \lipsum[1]
        %%%%%%%%%%%%%%%%%%%%%%%%
        %%%%%%% SOLUZIONE 2 %%%%%%%%%%
        %%%%%%%%%%%%%%%%%%%%%%%
        \landscape
        \vspace*{\stretch{1}}
        \begin{table}[htb]
        \centering
        \begin{tabular}{cccD{.}{,}{2.1}cc}
        \toprule
        \multicolumn{1}{c}{\bf Modello} & \multicolumn{1}{c}{\bf Prezzo} & \multicolumn{1}{c}{\bf Autonomia} & \multicolumn{1}{c}{\bf Accelerazione} & \multicolumn{1}{c}{\bf Potenza} & \multicolumn{1}{c}{\bf Velocità} \\
        \multicolumn{1}{c}{\bf (unità} & \multicolumn{1}{c}{\bf (\euro)} & \multicolumn{1}{c}{\bf (km)} & \multicolumn{1}{c}{\bf 0-100} & \multicolumn{1}{c}{\bf (kW-CV)} & \multicolumn{1}{c}{\bf massima}\\
        \multicolumn{1}{c}{\bf vendute)} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{\bf (s)} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{\bf (km/h)}\\
        \midrule
        Nissan Leaf (327) & 23790-35590 & 250 & 11.5 & 80-109 & 145\\
        \midrule
        Renault Zoe (238) & 22050 & 170 & 13 & 65-85 & 135\\
        \midrule
        Citr\”oen C-Zero (136) & 30690 & 150 & 15.9 & 50-67 & 130\\
        \midrule
        Smart Fortwo (104) & 24978-34607 & 145 & 11.5 & 55-75 & 125\\
        \midrule
        Tesla Model S 70D (96) & $81940$ & 442 & 5.4 & 246-334 & 225 \\
        \bottomrule
        \end{tabular}
        \caption{Confronto tra le 5 auto elettriche più vendute in Italia nel 2015}
        \end{table}
        \vspace*{\stretch{1}}
        \endlandscape

        \lipsum[1]
        %%%%%%%%%%%%%%%%%%%%%%
        %%%%%%% SOLUZIONE 3 %%%%%%%
        %%%%%%%%%%%%%%%%%%%%%%%
        \begin{table}[htb]
        \centering
        \resizebox{1\textwidth}{!}{%
        \begin{tabular}{cccD{.}{,}{2.1}cc}
        \toprule
        \multicolumn{1}{c}{\bf Modello} & \multicolumn{1}{c}{\bf Prezzo} & \multicolumn{1}{c}{\bf Autonomia} & \multicolumn{1}{c}{\bf Accelerazione} & \multicolumn{1}{c}{\bf Potenza} & \multicolumn{1}{c}{\bf Velocità} \\
        \multicolumn{1}{c}{\bf (unità} & \multicolumn{1}{c}{\bf (\euro)} & \multicolumn{1}{c}{\bf (km)} & \multicolumn{1}{c}{\bf 0-100} & \multicolumn{1}{c}{\bf (kW-CV)} & \multicolumn{1}{c}{\bf massima}\\
        \multicolumn{1}{c}{\bf vendute)} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{\bf (s)} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{\bf (km/h)}\\
        \midrule
        Nissan Leaf (327) & 23790-35590 & 250 & 11.5 & 80-109 & 145\\
        \midrule
        Renault Zoe (238) & 22050 & 170 & 13 & 65-85 & 135\\
        \midrule
        Citr\”oen C-Zero (136) & 30690 & 150 & 15.9 & 50-67 & 130\\
        \midrule
        Smart Fortwo (104) & 24978-34607 & 145 & 11.5 & 55-75 & 125\\
        \midrule
        Tesla Model S 70D (96) & $81940$ & 442 & 5.4 & 246-334 & 225 \\
        \bottomrule
        \end{tabular}}
        \caption{Confronto tra le 5 auto elettriche più vendute in Italia nel 2015}
        \end{table}
        \end{document}`

        Per la prossima volta, se puoi introduci anche il preambolo indispensabile per ottenere quello che tu hai fortunatamente inserito come immagine altrimenti gli utenti fanno più fatica a capire dove ci sono problemi.
        Adesso veniamo a noi
        1) mi sono preso la libertà di correggerti le unità di misura chilometro si scrive con la k minuscola non K, mentre chilowatt ha la k piccola ma W grande perché originario del nome dello scienziato.
        2) Se leggi le varie guide che ci sono nel forum ti consigliano di usare il pacchetto booktabs perché permette di usare \toprule all’inizio, \bottomrule alla fine e \midrule in mezzo; questi hanno il pregio di spaziare meglio le righe, puoi fare la prova.
        3) I filetti verticali per capirci quando tu scrivi |c| sono sconsigliati, quindi li ho rimossi, ma sei libero di biasimarmi.
        4)il pacchetto dcolumn ti permette di usare D{.}{,}{2.1} nel tuo caso, che di fatto allinea i numeri secondo il separatore che viene dichiarato per primo (il punto) e scritto con il secondo (la virgola) siamo in italia la consuetudine è questa.
        5)il pacchetto lscape serve per la tabella ruotata
        6) lipsum l’ho usato solo per mettere un po’ di testo fittizio
        `\documentclass[a4paper,draft]{book}`
        Non sapevo cosa avessi usato come classe quindi ho messo book, ma ti faccio presente il comando draft che serve per compilare le bozze, di fatto ti mostra con un segno nero se un oggetto eccede la gabbia di testo e se dovessi inserire figure, ti mostrerebbe solo un contorno delle dimensioni della figura senza caricarla fisicamente.
        Infine ti consiglio una rapida letta a ArsTeXnica
        Esistono altri modi per compilare la tua tabella? Probabilmente sì, io mi sono limitato a questi, ma se hai domande scrivi pure, potrei aver trascurato alcuni aspetti.
        P.S.
        Anche `\centering`
        è importante perché centra tabella e caption.
        Spero di esserti stato utile mi sono accorto solo ora che tu usi
        `\multicolumn{1}{c}{\bf Prezzo}`
        Su tutte le righe dell’intestazione, poiché definisci già che l’allineamento è centrato, basterebbe
        `\textbf{Prezzo}`
        e probabilmente funziona anche nella cella D

      • #106121
        Andrea
        Partecipante
          Up
          0
          Down
          ::


          Uao, intanto granzie per l’enorme quantità di informazioni che mi stai dando.

          Il preambolo aggiornato con i tuoi pacchetti è il seguente:

          `\documentclass[12pt,a4paper]{book}
          \usepackage[italian]{babel}
          \usepackage[T1]{fontenc}
          \usepackage[utf8x]{inputenc}
          \usepackage{graphicx}
          \usepackage{tikz,pgf}
          \usepackage{ifpdf}
          \usepackage{multirow}
          \usepackage{array}
          \usepackage{color}
          \usepackage{colortbl}
          \usepackage{booktabs}
          \usepackage{tocbibind}
          \usepackage{eurosym}
          \usepackage{relsize}
          \usepackage{lipsum}
          \usepackage{dcolumn}
          \usepackage[margin=10pt,font=small,labelfont=bf,labelsep=endash,format=hang,justification= justified]{caption}
          \captionsetup[table]{position=bottom}
          \usepackage{booktabs}

          \ifpdf
          \usepackage[colorlinks,linkcolor=black,citecolor=black,urlcolor=black,
          bookmarks,bookmarksnumbered]{hyperref}
          \else
          \fi

          \begin{document}…………`

          Ora, mi rendo benissimo conto che un preambolo del genere è un mapazzone enorme e probabilmente alcuni pacchetti non servono per il lavoro che sto svolgendo. Ho usato questo preambolo per latesi di laurea e man mano che inserisco cose nuove aggiungo pacchetti, senza preoccuparmi se effettivamente qualche pacchetto non è necessario. Dato che tutto comunque funziona, li lascio li per pigrizia.

          Un problema che riscontro è però in questo codice:

          `\begin{figure}[htbp]
          \centering
          \begin{minipage}[c]{.40\textwidth}
          \centering
          \includegraphics[width=.96\textwidth]{images/nissanleaf}
          \caption{Nissan Leaf durante la ricarica}
          \end{minipage}%
          \hspace{10mm}%
          \begin{minipage}[c]{.40\textwidth}
          \centering
          \includegraphics[width=0.96\textwidth]{images/teslamodelS}
          \captionstyle{center}
          \caption{Tesla Model S 70D}
          \end{minipage}
          \end{figure}`

          perchè prima usavo nel preambolo

          `\usepackage[scriptsize]{caption2}`

          conscio che caption2 è obsoleto, ma se uso caption mi da dei problemi con \captionstyle{center}, che mi centra bene il prembolo, altrimenti viene uno schifo. Se hai la pazienza di indicarmi una soluzione a questo problema te ne sarei grato, anche perchè la tua terza soluzione è ottima per la mia tabella

        • #106122
          Up
          0
          Down
          ::


          La soluzione sarebbe usare subfig, ma fino a questa sera non posso esserti maggiormente di aiuto. Spero di aver colto il tuo problema

        • #106123
          Andrea
          Partecipante
            Up
            0
            Down
            ::


            Subfigure se non smaglio raggruppa la didascalia dividendo le figure in a, b, c. Soluzione che personalmente non mi piace. Se non ho capito male, il compito di \captionstyle{center} è quello di centrare la didascalia, cosa che ora (comando commentato per compilare senza errori) non avviene:

            con codice

            `\begin{figure}[htbp]
            \centering
            \begin{minipage}[c]{.40\textwidth}
            \centering
            \includegraphics[width=1.2\textwidth]{images/nissanleaf}
            \caption{{\footnotesize Nissan Leaf durante la ricarica}}
            \end{minipage}%
            \hspace{20mm}%
            \begin{minipage}[c]{.40\textwidth}
            \centering
            \includegraphics[width=1.2\textwidth]{images/teslamodelS} %\captionstyle{center}
            \caption{Tesla Model S 70D}
            \end{minipage}
            \end{figure}
            `

            invece, senza il problema che mi crea il tuo preambolo con il nuovo pacchetto caption, il risultato che ho ottenuto su di un altro lavoro è questo:

            con codice:

            `\begin{figure}[htbp]
            \centering
            \begin{minipage}[c]{.40\textwidth}
            \centering
            \includegraphics[width=.99\textwidth]{images/primouomo}
            \caption{\scriptsize{\em Primo Uomo} di William Fetter}
            \end{minipage}%
            \hspace{10mm}%
            \begin{minipage}[c]{.40\textwidth}
            \centering
            \includegraphics[width=.90\textwidth]{images/teiera}
            \captionstyle{center}
            \caption{\scriptsize Esempio di modello 3D di una teiera}
            \end{minipage}
            \end{figure}
            `

          • #106124
            Up
            0
            Down
            ::


            Esatto per risolvere il problema in tal caso devi aspettare che qualcuno che conosce quel pacchetto ti possa aiutare, io in tal senso non posso esserti di grande aiuto.
            Mi viene in mente tuttavia che c’è una dispensa per Linux (ma la cosa non è rilevante) che parla di figure multiple dammi 2 minuti e provo a trovarti almeno il link magari risolvi.

          • #106125
            Up
            0
            Down
            ::


            link
            Questa è una guida e noto che è quello che fai anche tu quindi penso che sostituendo il vecchio pacchetto con il nuovo dovresti risolvere.

          • #106126
            Up
            0
            Down
            ::


            Facendo riferimento alla tua ultima domanda, una soluzione veloce si otterrebbe con il “recente” pacchetto subcaption.
            Riporto il codice modificando un po’ l’esempio esposto nella documentazione del pacchetto:

            `\begin{figure}
            \begin{subfigure}{.45\linewidth}
            \centering
            \includegraphics[width=\columnwidth]{images/nissanleaf}
            \caption{Nissan Leaf durante la ricarica}\label{subfig:nissan}
            \end{subfigure}%
            \hfill %al posto di \hfill puoi mettere uno spazio a tuo piacimento come \hspace{1cm}
            \begin{subfigure}{.45\linewidth}
            \centering
            \includegraphics[width=\columnwidth]{images/teslamodelS}
            \caption{Tesla Model S 70D}\label{subfig:testla}
            \end{subfigure}
            \caption{Didascalia della figura contenente due subfigure(s), che volendo puo' essere vuota}\label{fig:1}
            \end{figure}`

            Come noti ho tolto l’argomento opzionale [htb] perche’ trovo che sia un approccio sbagliato. Una delle tante cose belle di LateX e’ proprio il suo sofisticato sistema di posizionamento delle figure. Lascia fare a LaTeX, e quando hai finito il tuo capitolo (o documento) fai gli ultimi accorgimenti forzando (se poprio devi) la posizione delle immagini.

            Qualora non lo sapessi gia’, per accedere alla documentazione di un pacchetto basta scrivere nel terminale:
            `texdoc `
            senza i segni “<>“. L’esempio che ho modificato lo trovi al paragrafo 3 del documento che si apre se al posto di ci metti subcaption. Leggere le documentazione dei pacchetti aiuta a capire in fondo a cosa servono -se ti servono- oltre alle loro potenzialita’.
            EDIT: aggiungo queste righe di codice che andranno nel preambolo dopo \usepackage{subcaption} per ottenere il risultato richiesto (lasciando l’ultimo caption vuoto \caption{}):
            `\renewcommand\thesubfigure{\bfseries\figurename\space\thefigure.\arabic{subfigure}}
            \captionsetup[subfigure]{labelformat=simple,labelsep=colon,indention=2cm,justification=centering}`

            Per quanto riguarda il tuo preambolo, carichi il pacchetto booktabs due volte, cosi’ come certi pacchetti caricano automaticamente degli altri (ad esempio, prova a commentare la riga del pacchetto graphicx e vedi che il tuo documento si compilera’ lo stesso malgrado stia inserendo immagini). Capisco la tentazione di copiare e incollare preamboli di vecchi documenti (io l’ho fatto per anni), ma potresti incontrare problemi piu’ avanti… Il mio consiglio per le prossime volte e’ di partire quasi da zero (cioe’ lasciando i primi 3 pacchetti), e caricare solo i pacchetti che man mano servono per costruire il documento.

            Saluti,
            Mirko

          • #106127
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              La tua tabella è troppo larga e la si può ridurre solo riducendo il corpo dei font usati; in verticale ci sta male perché occuperebbe quasi tutta la pagina e sarebbe troppo smilza. Non credo che si otterrebbe qualcosa di meglio scambiando righe e colonne.

              Puoi comunque metterla dentro una \makebox di larghezza specificata a \textwidth; la scatola così ottenuta sarebbe senz’altro nella giustezza, ma la tabella che contiene uscirebbe metà a sinistra e metà a destra riducendo l’aspetto sgradevole della tabella che arriva fino al taglio della pagina.

              Ma, per favore, non presentare una tabella con quelle unità di misura: il prefisso kilo si scrive con la k minuscola perché quella maiuscola vuol dire kelvin. I watt richiedono invece la W maiuscola; se poi nei numeri di più di quattro cifre riesci a separare i gruppi di tre cifre con uno spazio fine, sarebbe meglio. Se eviti i CV sarebbe ancora meglio, visto che non sono previsti dalle norme ISO-UNI-EN; le case automobilistiche li usano ancora per motivi di immagine perché il valore numerico della potenza massima è maggiore se espresso in cavalli, piuttosto che in kilowatt; togliendo i CV e il loro valore numerico dalla tabella, questa diventa un po’ meno larga, sempre più della giustezza del testo, ma sporgerebbe di meno e certamente l’uso della \makebox darebbe un risultato ancora meno sgradevole di quello di cui giustamente ti lamenti.

            • #106128
              Andrea
              Partecipante
                Up
                0
                Down
                ::


                Chiedo scusa per le unità di misura, ero convinto di averle scritte correttamente:-?

                Comunque grazie mille per i consigli, ora cercherò di portare al minimo i fastidi 🙂

              • #106129
                Up
                0
                Down
                ::

                calcioscacchi” post=106244Chiedo scusa per le unità di misura, ero convinto di averle scritte correttamente:-?

                Comunque grazie mille per i consigli, ora cercherò di portare al minimo i fastidi 🙂

                `\documentclass[a4paper]{article}
                \usepackage[T1]{fontenc}
                \usepackage[utf8]{inputenc}
                \usepackage[italian]{babel}
                \usepackage{booktabs,lipsum,eurosym,caption}
                \captionsetup{font=small}

                \begin{document}

                \lipsum[2]

                \begin{table}
                \centering\small
                \caption{Confronto tra le caratteristiche delle cinque automobili elettriche più vendute in Italia nel 2015 (tra parentesi, il numero di unità vendute; il prezzo indicato risulta da una media dei modelli).}
                \begin{tabular}{lccccc}
                \toprule
                Marca e modello & Prezzo & Auton. & 0-100\,km/h & Potenza & V max \\
                & (\euro) & (km) & (s) & (CV/kW) & (km/h) \\
                \midrule
                Nissan Leaf (327) & 29690 & 250 & 11,5 & 109/80 & 145 \\
                Renault Zoe (238) & 22050 & 170 & 13 & 85/65 & 135 \\
                Citroën C-Zero (136) & 30690 & 150 & 15,9 & 67/50 & 130 \\
                Smart Fortwo (104) & 29793 & 145 & 11,5 & 75/55 & 125 \\
                Tesla S 70D (96) & 81940 & 442 & 5,4 & 334/246 & 225 \\
                \bottomrule
                \end{tabular}
                \end{table}

                \end{document}`

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

            Go to top