Tabelle a fine documento

  • Creatore
    Topic
  • #122256
    Up
    0
    Down
    ::


    Buongiorno,
    devo usare latex per scrivere un articolo a due colonne e ho riscontrato un problema per quanto riguarda l’inserimento delle tabelle. Nonostante io le abbia inserite in ambiente table* e tabular non riesco ad allinearle con il testo in pagine ben definite all’interno del documento, ma appaiono alla fine del documento. Come posso risolvere il problema? Ringrazio chi mi aiuterà a risolvere questo problema bloccante.

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #122257
      MatteoF
      Partecipante
        Up
        0
        Down
        ::


        Buongiorno Martina,
        potresti postare un esempio minimo compilabile (emc)?

      • #122258
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Benvenuta nel forum!

          Da quanto dici non si capisce granché del tuo problema, se non che le tabelle composte dentro l’ambiente table* vanno a finire al fondo dell’articolo.

          Se usi table* sai che con l’asterisco la tabella viene composta a piena pagina, cioè a alla larghezza che comprende le due colonne, e che viene sistemata solo in testa alla pagina o in una pagina contenente solo tabelle a larghezza piena. Lo stesso vale per le figure composte dentro l’ambiente figure*.

          Detto questo scrivendo a due colonne è difficile mettere tabelle e figure a larghezza piena vicino al punto di cui se ne parla. La domanda giusta è perché succede che vadano a finire in fondo all’articolo?

          E la risposta non è semplice; in due parole sono troppo alte; ma quel “troppo” è vago. Se vuoi sapere che cosa vuol dire “troppo” devi andare a leggere le guide apposite; nella sezione Documentazione di questo forum trovi molte guide tematiche. Una è intitolata Tabelle, e un’altra è intitolata Il LaTeX Reference Manual commentato. In entrambe sono riportati i parametri che sovraintendono al posizionamento degli oggetti mobili e vi troverai per esempio il valore standard della classe book \dbltopfraction che vale 0.7. Questo vuol dire che se una tabella (o figura} completa della sua didascalia è più alta di 0.7\textheight, viene bloccata e resta in coda alla peggio fino alla fine del documento. E questo spiega perché le tue tabelle sono finite alla fine dell’articolo.

          Ti consiglio di leggerti la guida tematica Tabelle; ci metterai un’oretta o anche meno; ma ti chiarirai l’e idee sul meccanismo complesso che usa LaTeX per emettere gli oggetti mobili (floating objects);

          Ma se gli oggetti mobili sono effettivamente così grandi, ti potrebbe essere utile l’opzione [p] per l’ambiente table* così almeno viene emesso alla prima pagina utile. Potresti cambiare il valore di \dbltopfraction con un valore più vicino a 1.0; potresti usare un font di corpo \small o \footnotesize (ma te lo sconsiglio perché sarebbe veramente troppo piccolo se il font normale è quello di 10pt, di default per la classe article). Insomma ci sarebbero diversi modi per rendere la tabella meno alta. Ti ripeto: prova a leggere la guida tematica Tabelle che puoi liberamente scaricare dalla sezione Documentazione.

        • #122259
          Up
          0
          Down
          ::


          Ringrazio prima di tutto chi mi ha risposto, ecco un esempio di tabella:

          `
          \begin{table*}
          \centering
          \begin{center}
          \resizebox{\linewidth}{!}{
          \begin{tabular}{|l|c|c|c|c|c|r|}
          \hline
          \multicolumn{7}{|c|}{}\\
          \multicolumn{7}{|c|}{\textbf{\Large Accuracy}}\\

          \multicolumn{7}{|c|}{}\\
          \hline
          \multicolumn{1}{|l|}{\textbf{\makecell{primo \\valore}}} & \multicolumn{1}{|c|}{\textbf{Secondo valore}} & \multicolumn{1}{|c|}{\textbf{Terzo valore}}& \multicolumn{1}{|c|}{\textbf{quarto valore}}& \multicolumn{1}{|c|}{\textbf{quinto valore}}& \multicolumn{1}{|c|}{\textbf{sesto valore}}& \multicolumn{1}{|c|}{\textbf{\makecell{settimo \\valore}}}\\

          \hline
          uno & —- & — & —&—&—&—\\
          due & —&— & —&—&—&—\\
          tre & — &— & —&—&—&—\\
          quattro & — &— & —&—&—&—\\
          cinque & — &— & —&—&—&—\\
          sei& — &— & —&—&—&—\\

          sette& — &— & —&—&—&—\\
          otto & — &— & —&—&—&—\\
          nove & — &— & —&—&—&—\\
          dieci & — &— & —&—&—&—\\
          undici& — &— & —&—&—&—\\
          dodici& — &— & —&—&—&—\\
          tredici & — &— & —&—&—&—\\
          quattordici& — &— & —&—&—&—\\
          quindici& — &— & —&—&—&—\\

          \hline
          \end{tabular}
          }
          \caption{Questa è una frase di esempio
          \\
          (1)Questa è una frase di esempio. \\
          (2) Questa è una frase di esempio}
          \label{tab:accuracy}
          \end{center}
          \end{table*}
          `

          La tabella in questione viene posizionata alla fine del documento, in mezzo alla bibliografia. Come si fa a “forzare” una precisa tabella a stare in una determinata posizione, apparendo correttamente inserita all’interno del testo e senza occupare intere pagine? Nel caso di singola colonna c’era l’opzione [H] importando il package float, Ma non trovo un analogo nel caso il documento sia scritto su due colonne.
          P.s. le mie tabelle occupano con tutta la didascalia circa metà pagina

        • #122260
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Cara Martina, vedo che non hai letto né la guida tematica sulle tabelle, né la guida tematica sugli esempi minimi compilabili. L’esempio minimo compilabole comincia con \documentclass e finisce con \end{document}. Il preambolo è minimo nel senso che contiene solo il minimo indispensabile per mettere in luce il tuo problema. Inoltre non ti è chiaro che una tabella a piena larghezza non può essere messa in una colonna. E non è nemmeno possibile interrompere una colonna per inserire una tabella larga due colonne.

            Allora qui metto l’esempio minimo compilabile contenete anche un preambolo minimo. Manca la definizione di \makecell, perché non so come l’hai definita, quindi l’ho tolta dal codice; Ho anche corretto la sequenza dei codici di colonna sia nella riga di apertura dell’ambiente tabular, sia in quei \multicolumn dove il filetto verticale non ci vuole.

            Dopo di che la tabella rimpicciolita con \resizebox e inseriti dentro alcuni capoversi di testo fasullo (pacchetto lipsum o kantlipsum, come ho usato io)
            appare giustamente a fine documento, proprio perché è a piena pagina e non può stare nella prima (ma non potrebbe stare nemmeno nella seconda) colonna.`% !TEX encoding = UTF-8 Unicode
            % !TEX TS-program = pdflatex
            \documentclass[10pt,twocolumn]{article}
            \usepackage{graphicx}
            \usepackage{kantlipsum}
            \usepackage[italian]{babel}

            \begin{document}
            \kant[1]
            \begin{table*}
            \centering
            \begin{center}
            \resizebox{\linewidth}{!}{%
            \begin{tabular}{|l|*5{c|}r|}
            \hline
            \multicolumn{7}{|c|}{}\\
            \multicolumn{7}{|c|}{\textbf{\Large Accuracy}}\\
            \multicolumn{7}{|c|}{}\\
            \hline
            \multicolumn{1}{|l|}{\textbf{primo valore}} & \multicolumn{1}{|c|}{\textbf{Secondo valore}} & \multicolumn{1}{|c|}{\textbf{Terzo valore}}& \multicolumn{1}{|c|}{\textbf{quarto valore}}& \multicolumn{1}{|c|}{\textbf{quinto valore}}& \multicolumn{1}{|c|}{\textbf{sesto valore}}& \multicolumn{1}{|c|}{\textbf{settimo valore}}\\

            \hline
            uno & —- & — & —&—&—&—\\
            due & —&— & —&—&—&—\\
            tre & — &— & —&—&—&—\\
            quattro & — &— & —&—&—&—\\
            cinque & — &— & —&—&—&—\\
            sei& — &— & —&—&—&—\\

            sette& — &— & —&—&—&—\\
            otto & — &— & —&—&—&—\\
            nove & — &— & —&—&—&—\\
            dieci & — &— & —&—&—&—\\
            undici& — &— & —&—&—&—\\
            dodici& — &— & —&—&—&—\\
            tredici & — &— & —&—&—&—\\
            quattordici& — &— & —&—&—&—\\
            quindici& — &— & —&—&—&—\\

            \hline
            \end{tabular}
            }
            \caption{Questa è una frase di esempio
            \\
            (1)Questa è una frase di esempio. \\
            (2) Questa è una frase di esempio}
            \label{tab:accuracy}
            \end{center}
            \end{table*}
            \kant[2-3]
            \end{document}`

            Menzioni il descrittore di posizione H del pacchetto float; Se avessi letto la guida tematica avresti trovato scritto che “il codice H non è da usare mai nemmeno sotto minaccia delle armi”. Componendo a due colonne, poi, ci sono tali e tanti limiti, che sarebbe un delitto ancor più grave cercare di usare H.

            La tipografia è un arte, non è una copia complicata di un word processor come Word, Writer, Pages, tanto per citarne alcuni.

            In certe riviste scientifiche la tipografia che le compone (usando strumenti spesso impropri per comporre la matematica) riesce a introdurre tabelle, figure, equazioni larghe a metà pagina interrompendo entrambe le colonne, ma mettendo in difficoltà il lettore che ci mette un po’ a capire se la colonna prosegue dopo l’interruzione sulla stessa verticale o se bisogna proseguire sull’altra colonna.
            Allora se non si può evitare che la tabella inserita a metà testo vada a finire alla fine del testo, una soluzione potrebbe essere quella di retrocedere il codice della tabella larga quando si compone il testo di una o due pagine prima di quella a cui si fa riferimento (col copia e incolla non è difficile) e con un tentativo o due ecco che la tabella larga va finire in testa alla pagina nella quale si discutono i suoi dati; comunque non ci si riferisce mai alla tabella larga con espressioni del tipo “la seguente tabella” ma vi si fa riferimento con i riferimenti incrociati, per cui dicendo “la tabella \ref{tab:accuacy} il discorso file liscio anche se la tabella si trova in una pagina diversa.

            Scusami se quanto io ti ho scritto potrebbe sembrare una ramanzina; sono il primo a capire che non è facile spiegare le cose a un principiante senza fargli notare i suoi errori. Ma non mi riesce di essere conciso senza andare direttamente sul punto.

          • #122261
            Up
            0
            Down
            ::


            Un paio di avvisi:

            1. [tt]\begin{center}[/tt] e [tt]\end{center}[/tt] vanno tolti subito!

            2. [tt]\resizebox[/tt] su una tabella è un peccato mortalissimo. Penitenziagite!

            3. La maggior parte dei comandi [tt]\multicolumn[/tt] sono ridondanti e scorretti: [tt]|c|[/tt] semmai è [tt]c|[/tt]

            4. Righe vuote? E intestazione comune [tt]\Large[/tt]? Oh, no!

            La [tt]table*[/tt] se ne andrà in cima alla pagina successiva. Dov’è il problema?

            `
            \documentclass[a4paper,twocolumn]{article}
            \usepackage{lipsum}

            \newcommand{\splitcell}[1]{%
            \begin{tabular}{@{}c@{}}#1\end{tabular}%
            }

            \begin{document}

            \lipsum

            \begin{table*}
            \centering

            \begin{tabular}{|l|c|c|c|c|c|r|}
            \hline
            \multicolumn{7}{|c|}{\textbf{Accuracy}}\\
            \hline
            \textbf{\splitcell{primo \\ valore}} &
            \textbf{\splitcell{Secondo \\ valore}} &
            \textbf{\splitcell{Terzo \\ valore}} &
            \textbf{\splitcell{quarto \\ valore}} &
            \textbf{\splitcell{quinto \\ valore}} &
            \textbf{\splitcell{sesto \\ valore}} &
            \textbf{\splitcell{settimo \\valore}} \\
            \hline
            uno & —- & — & —&—&—&—\\
            due & —&— & —&—&—&—\\
            tre & — &— & —&—&—&—\\
            quattro & — &— & —&—&—&—\\
            cinque & — &— & —&—&—&—\\
            sei& — &— & —&—&—&—\\
            sette& — &— & —&—&—&—\\
            otto & — &— & —&—&—&—\\
            nove & — &— & —&—&—&—\\
            dieci & — &— & —&—&—&—\\
            undici& — &— & —&—&—&—\\
            dodici& — &— & —&—&—&—\\
            tredici & — &— & —&—&—&—\\
            quattordici& — &— & —&—&—&—\\
            quindici& — &— & —&—&—&—\\
            \hline
            \end{tabular}

            \caption{Questa è una frase di esempio
            (1)~Questa è una frase di esempio.
            (2)~Questa è una frase di esempio}
            \label{tab:accuracy}

            \end{table*}

            \lipsum

            \end{document}
            `

            Se poi cambi il codice della tabella, caricando il pacchetto [tt]booktabs[/tt], in

            `
            \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lcccccr@{}}
            \toprule
            \multicolumn{7}{c}{Accuracy}\\
            \midrule
            \splitcell{primo \\ valore} &
            \splitcell{Secondo \\ valore} &
            \splitcell{Terzo \\ valore} &
            \splitcell{quarto \\ valore} &
            \splitcell{quinto \\ valore} &
            \splitcell{sesto \\ valore} &
            \splitcell{settimo \\valore} \\
            \cmidrule{1-1}
            \cmidrule{2-2}
            \cmidrule{3-3}
            \cmidrule{4-4}
            \cmidrule{5-5}
            \cmidrule{6-6}
            \cmidrule{7-7}
            uno & —- & — & —&—&—&—\\
            due & —&— & —&—&—&—\\
            tre & — &— & —&—&—&—\\
            quattro & — &— & —&—&—&—\\
            cinque & — &— & —&—&—&—\\
            sei& — &— & —&—&—&—\\
            sette& — &— & —&—&—&—\\
            otto & — &— & —&—&—&—\\
            nove & — &— & —&—&—&—\\
            dieci & — &— & —&—&—&—\\
            undici& — &— & —&—&—&—\\
            dodici& — &— & —&—&—&—\\
            tredici & — &— & —&—&—&—\\
            quattordici& — &— & —&—&—&—\\
            quindici& — &— & —&—&—&—\\
            \bottomrule
            \end{tabular*}
            `

            vedrai che il risultato è nettamente migliore.

            [attachment=2822]Screenshot2025-01-06at17.56.53.png[/attachment]

            Ciao
            Enrico

            Attachments:
            You must be logged in to view attached files.
          • #122262
            Up
            0
            Down
            ::


            Ciao OldClaudio,
            nella sezione Documentazione che mi indichi c’è “Comporre tabelle e matrici (Come usare LATEX per comporre tabelle e matrici ben fatte)” di Claudio Beccari, ti riferisci a quello, giusto?
            Ti ringrazio

          • #122263
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Si.

            • #122264
              Up
              0
              Down
              ::


              Ti ringrazio Egre9 , adesso le tabelle sono ben definite, non vanno più alla fine del documento.

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

          Go to top