Longtable e ridimensionamento

  • Questo topic ha 6 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 16 anni fa da OldClaudio.
  • Creatore
    Topic
  • #48492
    Up
    0
    Down
    ::


    Salve a tutti. Scusate, ho guardato tutte le guide che ho trovato per quanto riguarda questo pacchetto ma non riesco a comprendere cosa sbaglio. Ho questa tabella

    `
    \begin{longtable}{ p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}}
    \cline{2-11}
    & \multicolumn{ 2}{|c|}{{\bf Lunedì}} & \multicolumn{ 2}{|c|}{{\bf Martedì}} & \multicolumn{ 2}{|c|}{{\bf Mercoledì}} & \multicolumn{ 2}{|c|}{{\bf Giovedì}} & \multicolumn{ 2}{|c}{{\bf Venerdì}} \\

    \endfirsthead

    & \multicolumn{ 2}{|c|}{{\bf Lunedì}} & \multicolumn{ 2}{|c|}{{\bf Martedì}} & \multicolumn{ 2}{|c|}{{\bf Mercoledì}} & \multicolumn{ 2}{|c|}{{\bf Giovedì}} & \multicolumn{ 2}{|c}{{\bf Venerdì}} \\
    \endhead

    \endlastfoot

    & mattina &\resizebox{0.1\columnwidth}{!}{pomeriggio}& mattina &\resizebox{0.1\columnwidth}{!}{pomeriggio}& mattina &\resizebox{0.1\columnwidth}{!}{pomeriggio}& mattina &\resizebox{0.1\columnwidth}{!}{pomeriggio} & \multicolumn{ 2}{c}{giornaliera} \\

    \caption{Proviamo}
    \end{longtable}`

    Ecco, la vorrei ridimensionare. Con un tabular normale avrei messo

    `\resizebox{1\columnwidth}{!}{
    \begin{tabular}{}

    \end{tabular}}`

    ma con longtable mi da errore. Come posso fare?

    Vi ringrazio per l’aiuto.

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


      Il problema è che “longtable” è uno strumento per trattare tabelle che si estendono su più pagine, mentre “\resizebox” non è in grado di trattare “scatole” che si spezzano.

      Comunque hai scelto male gli strumenti, non è questo il modo per trattare le tabelle. Puoi rimpicciolire il carattere, ridurre la larghezza delle colonne, ridurre i margini della pagina, accettare il fatto che se non ci sta non ci sta! 😉

      Se è proprio necessaria una tabella così larga potresti prendere in considerazione l’idea di comporla ruotata di 90° con l’ambiente “landscape” del pacchetto “pdflscape”.

      😉
      LuCa

    • #48494
      Up
      0
      Down
      ::

      Salve a tutti. Scusate, ho guardato tutte le guide che ho trovato per quanto riguarda questo pacchetto ma non riesco a comprendere cosa sbaglio. Ho questa tabella

      `
      \begin{longtable}{ p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}| p{0.1\columnwidth}}
      \cline{2-11}
      & \multicolumn{ 2}{|c|}{{\bf Lunedì}} & \multicolumn{ 2}{|c|}{{\bf Martedì}} & \multicolumn{ 2}{|c|}{{\bf Mercoledì}} & \multicolumn{ 2}{|c|}{{\bf Giovedì}} & \multicolumn{ 2}{|c}{{\bf Venerdì}} \\

      \endfirsthead

      & \multicolumn{ 2}{|c|}{{\bf Lunedì}} & \multicolumn{ 2}{|c|}{{\bf Martedì}} & \multicolumn{ 2}{|c|}{{\bf Mercoledì}} & \multicolumn{ 2}{|c|}{{\bf Giovedì}} & \multicolumn{ 2}{|c}{{\bf Venerdì}} \\
      \endhead

      \endlastfoot

      & mattina &\resizebox{0.1\columnwidth}{!}{pomeriggio}& mattina &\resizebox{0.1\columnwidth}{!}{pomeriggio}& mattina &\resizebox{0.1\columnwidth}{!}{pomeriggio}& mattina &\resizebox{0.1\columnwidth}{!}{pomeriggio} & \multicolumn{ 2}{c}{giornaliera} \\

      \caption{Proviamo}
      \end{longtable}`

      Ecco, la vorrei ridimensionare. Con un tabular normale avrei messo

      `\resizebox{1\columnwidth}{!}{
      \begin{tabular}{}

      \end{tabular}}`

      ma con longtable mi da errore. Come posso fare?

      Vi ringrazio per l’aiuto.

      Temo che tu stia sbagliando approccio al problema. Sarebbe molto meglio che ci spiegassi cosa vuoi fare. Inoltre ho il sospetto che quella tabella derivi da una conversione…È stata fatta con LyX, per caso? Comunque sia, la tabella ha 11 colonne larghe un decimo della larghezza del testo, quindi la tabella è larga 1.1 volte il testo. Ma non puoi rimpicciolire le colonne più di tanto. Potresti invece pensare di ruotare la tabella.
      Poi non ho capito quei \resizebox{0.1\columnwidth}{!}{pomeriggio}… Se volevi ridurre il carattere non è quello il modo corretto. Anche l’uso di \bf fa pensare ad una conversione. Meglio \bfseries o \textbf{testoingrassetto}
      Comprendendo meglio le tue esigenze si potrà trovare una soluzione migliore e probabilmente più semplice.

      Ciao
      Ivan

    • #48495
      Up
      0
      Down
      ::


      Intanto grazie per l’aiuto ad entrambi! 🙂

      -Allora, in pratica ho questa tabella (più lunga di questa ma si ripete nella forma e quindi l’ho tagliata) che dovrebbe cominciare da metà di una pagina. Il risultato attuale, utilizzando invece di longtable tabular mi porta la tabella in fondo al documento, risultato che personalmente non mi piace per niente. Preferirei di gran lunga riuscire a mantenere la lettura senza dover costringere a “navigare” all’interno della pagine del documento e quindi l’unica soluzione che ho trovato è quella che la tabella si divida, mi riempia la metà foglio rimanente, e poi finisca a metà pagina circa nella pagina successiva.

      -Per la larghezza della pagina, è vero, ho messo 1.1 della larghezza della colonna, ma penso che quello possa essere risolto modificando semplicemente 0.1 con 0.08, giusto? Grazie comunque di avermelo fatto notare.

      -Per quanto riguarda il comando \resizebox{0.1\columnwidth}{!}{pomeriggio} l’ho messo perché pomeriggio mi dovrebbe stare all’interno della colonna, e senza quel comando esce dalla colonna. Si può notare infatti come io abbia utilizzato la stessa grandezza 0.1 della colonna! 🙂 E’ una cosa un po’ grezza sicuramente, ma funzionale. Avete soluzioni esteticamente migliori da consigliarmi?

      -La possibile rotazione della tabella non è adatta. La tabella è più lunga che larga, mi verrebbe straschiacciata. Poi, in altre pagine del testo, ho altre tabelle simili che visto che non andavano in fondo al documento ho lasciato lì e avere della tabelle simili (con lo stesso significato), alcune girate, e alcune no non è bello, non trovate?

      Grazie per l’aiuto.

    • #48496
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        La larghezza della tua tabella è certamente un problema; ma il problema più grosso è la sua lunghezza e il tuo desiderio di fare come si fa con Word di mettere la tabella lì dove vuoi tu, spezzandola, senza farla flottare dove la pagina lo consente. Gli ambienti flottanti sono fatti apposta per per sistemare gli oggetti ingombranti; vi mettono sopra o sotto una didascalia numerata in modo che tramite il meccanismo dei \label, \ref e \pageref vi si possa fare riferimento da altri punti del testo. Puoi anche usare il pacchetto varioref per farvi riferimento con il comando \vref, che scriverà nel testo una frase con senso compiuto che indica il numero della tabella ma anche in quale pagina si trova.

        Certo che sta male una lunga tabella che comincia a metà pagina e prosegue fino a metà della pagina successiva. ma, è meglio farla flottare fino alla pagina successiva, eventualmente ricorrendo, se proprio eccede una pagina, al pacchetto afterpage il cui argomento contiene tutto il codice per la longtable, magari composto con il corpo \small oppure anche \footnotesize, se la tabella ridotta in larghezza del 10% sborda fuori dai margini; con \footnotesize viene ridotta in larghezza del 20%; con tante colonne potrebbe valere al pena di ridurre \tabcolsep da 6pt (default) a 2 o 3 pt. Certamente una longtable da spezzare fra più pagine non può venire ridotta con \resizebox, proprio perché per fare questa operazione essa viene inscatolata e la scatola no può più essere spezzata.

        `
        \afterpage{%
        \begin{small}%
        \begin{longtable}…

        \end{longtable}
        \end{small}%
        }
        `

      • #48497
        Up
        0
        Down
        ::


        Intanto grazie a tutti per l’aiuto. Una domanda per Claudio: perchè dovrei usare longatable nel caso utilizzassi il comando afterpage? A quel punto non sarebbe inutile? Domanda per pura curiosità! 😉

        In realtà ho risolto utilizzando meglio le opzioni di table e migliorando l’impaginazione della pagina che era stata impostata usando un sacco di \newline. Il risultato è più bello di dividere le tabelle in due, e sono lieto che mi abbiate scoraggiato al riguardo. 🙂

        Mi rimane però un problema ugualmente.

        Mi finisce un capitolo con 2 immagini da posizionare. Nella pagina dopo la fine del capitolo mi inserisce la prima. In quella successiva mi mette la seconda immagine e parte il capitolo dopo praticamente nelle ultime righe della stessa pagina. C’è un modo per dirgli separa proprio i due capitoli, in modo proprio che finisca di fare il capitolo 3 (capitolo con le figure) e cominci solo dopo il 4o capitolo, dall’inizio del foglio?

        Vi ringrazio ancora per l’aiuto!

      • #48498
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Be’, dicevo di usare aftertable se la tabella era davvero più lunga di una pagina, non se stava in una sola pagina, dove l’opzione [p] è più che sufficiente.

          Le due immagini a fine capitolo sono in due pagine diverse perché non stanno in una sola pagina; se vuoi pou costirngerle ad viaggiare assieme se le metti dentor un unico ambiente figure e ciascuna con la sua didascalia (\caption) sotto magari con un \vspace{\baselieskip} dopo la fine del primo \caption e preceduto e seguito da righe bianche (cuote). Naturalmente se le due figure sono troppo grandi per stare assieme nella griglia di stampa, non solo avrai un messaggio di overfull vbox ma otterrai anche una brutta pagina, troppo lunga che sporge in basso oltre la linea ideale dove finiscono le altre pagine.

          Tuttavia mi sorprende, se ho capito bene quello che scrivi, che ti cominci un capitolo sotto a una figura del capitolo precedente; da un lato è segno che stai usando una classe artigianale; oppure che non stai usando correttamente i comandi di sezionamento (propendo per la rima ipotesi). Sicuramente puoi curare alla svelta l’inconveniente inserendo un \clearpage o un \cleardoublepage prima del comando \chapter. Il punto è che il comando \chapter stesso dovrebbe provvedere a emettere uno di questi due comandi a seconda che tu stia componendo oneside oppure twoside. Entrambi i comandi provvedono a svuotare le code degli oggetti flottanti prima di dare il comando \newpage.

          Ma se è vero quello ch io ho capito che ti succeda, la prima cosa da fare è quella di cambiare classe oppure di aggiustare la classe che stai usando.

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

      Go to top