[RISOLTO] Domanda figure

  • Questo topic ha 13 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 12 anni fa da OldClaudio.
  • Creatore
    Topic
  • #96133
    Up
    0
    Down
    ::


    Giuro che stavolta non è un problema, solo una curiosità 😀
    Quando mi sono approcciato a Latex, una delle perplessità più grandi, credo molto diffusa, era quella relativa alle figure Non capivo perchè non potessero essere messe lì, dovevo volevo. Oggi, a furia di leggere libri, capisco invece quanto è bello stilisticamente che tutte le figure compaiano a inizio pagina, o al più due figure, da sole, in una pagina. Ebbene, per uno scherzo del destino, proprio questa feature che mi è col tempo “piaciuta”, adesso non mi funziona :mrgreen: Nell’Arte di scrivere con Latex, il testo riporta che Latex cerca sempre di mettere le figure prima sopra (t), poi sotto (b) o a parte (p). Ma io, anche in un testo relativamente breve (25 pagine e una decina di figure), senza specificare alcun comando, ho visto che Latex me le piazza un po’ dove capita, spesso al centro, con un risultato oggettivamente brutto. Che è in contrasto con quanto leggo sull’Arte, ma anche altrove. Mi era venuto il dubbio che Latex avesse come comando predefinito h, ma poi ho letto quello di default è tbp. Allora ho anche pensato che è la classe che sto usando, TOPtesi, ad aver modificato l’opzione di default il comando h; ma questo non saprei come verificarlo. Sta di fatto che usando il comando [t] per tutte le figure, il risultato è accettabile, e mi crea solo qualche spazietto vuoto qua e la tra le righe, per creare le condizioni necessarie, credo. Anche se sull’Arte c’è scritto che questa opzione, da sola, è poco accettabile. Il comando [tp] invece non mi soddisfa perchè mette alcune immagine da sole, al centro di una pagina vuota: come se ignorasse il comando t e prendesse solo quello p.
    Possibile che quello che doveva essere un punto di forza di Latex, mi stia deludendo? Aprendo un libro qualsiasi, di 500 e passa pagine, non ho visto una e dico una figura che sfugga a questa logica, le figure sempre in alto o due in una pagina; mi sembra molto strano che il mio testo non venga compilato cosi.
    Che ne dite? E’ normale, oppure c’è qualche impostazione nascosta che sta ostacolando la normale logica?
    Per ora non me ne curo, continuo a scrivere la tesi, magari più in là però diventerà un problema

Visualizzazione 12 filoni di risposte
  • Autore
    Risposte
    • #96134
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        TOPtesi cambia le impostazioni di default; lo puoi verificare cercando nel file toptesi.sty le stringhe \fps@figure e \fps@table. Ne puoi certamente cambiare e ripristinare i valori a tbp con i semplici comandi da mettere nel preambolo o in un tuo file di macro personali che richiami con \usepackagecosì:
        `\makeatletter
        \def\fps@figure{tbp} \def\fps@table{tbp}
        \makeatothe`Mi osno scordato di documentare questa feature nella documentazione in italiano.
        Ma è documentato nella documentazione in inglese toptesi.pdf, dove si dice:

        Since we are at it we define the floating bodies placing parameters; not only the
        values “here”, “top of the page” and “bottom of the page”, that we set as default
        ones leaving to the user to explicitly specify the “page of floats”, but also the
        numerical and geometrical parameters that control the float placements. These
        geometrical parameters are critical and everybody has his/her own ideas of what
        are the best values for them. According to my experience these parameters work
        quite well but I would not suggest them for every kind of typewritten document.
        In particular the zero value for the text fraction appears strange, but students have
        the tendency to create large figures (more than large tables) and these tend to clog
        the figure queue. A 100% space for the top of page figures and a requirement of
        0% text allows large floats to exit the queue provided they do not exceed the text
        height.

        Il piazzamento delle figure e degli altri oggetti flottanti è una operazione piuttosto complicata; ho cercato di descriverla nel §29.10.1 della Guida GuIT, ma la spiegazione dura circa 6 pagine. Il meccanismo è rispiegato circa nello stesso modo nella guida tematica Il LaTeX Reference Manual commentato e liberamente tradotto in italiano. La lettura del codice nel file latex.ltx è molto difficile e la sconsiglio, a meno che non si abbiano molti giorni a disposizione (non meno di 10, probabilmente 30 😯 🙁 ❗ )

      • #96135
        Up
        0
        Down
        ::


        tu sei il creatore di TOPtesi?
        Non ho capito se quelle stringhe che hai postato sono per metterle nel preambolo o per le macro.

      • #96136
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Le metti dove vuoi; se le metti in un file di macro oersonali con estensione .sty e da richiamare con \usepackage, puoi omettere i due comandi \makeatletter e \makeatother.

          Si sono l’autore di TOPtesi; quella particolare impostazione per i parametri di posizione dei corpi flottanti è così fin dall prima edizione, prima ancora che YOPtesi finisse su CTAN, direi da una ventina d’anni a questa parte. Con quella impostazione ho scritto i libri di testo epr i miei studenti, ma naturalmente in casi particolari ho esplicitato parametri diversi mediante l’argomento facoltativo dell’apertura dell’ambiente flottante.

          Nota che la frase in inglese che ti ho mandato spiega che quei parametri accompagnano gli altri parametri numerici e dimensionali che regolano il deflusso degli oggetti flottanti; non è che si possano cambiare i parametri di default per il posizonameto senza avere una visione globale del problema.

          Inoltre bisogna sempre curare le dimensioni delle figure e delle tabelle; senza esagerare e ricordando di togliere sempre i margini bianchi nelle figure da immettere con \includegraphics, altrimenti il deflusso degli oggetti flottanti diventa problematico.

          Capisco che la lettura delle guide può essere noiosa, ma ti suggerisco di leggere bene questo argomento degli oggetti flottanti nella guida tematica che ti ho indicato; quella guida è l’ABC di LaTeX; è chiaro che mediante l’uso di pacchetti molte delle cose indicate nella guida possono venire eseguite in modo più agevole, ma quella guida dovrebbe far capire come funziona LaTeX; capito questo, talvolta si capisce anche come funzionano i veri pacchetti.
          Ciao
          Claudio (Old)

        • #96137
          Up
          0
          Down
          ::


          si, avevo fatto quella domanda perchè provando a mettere quel codice nel preambolo, mi dava errore; poi cercando ho visto che il comando esatto è \makeatother , ti eri semplicemente dimenticato la “r” finale.
          Comunque ho provato, il risultato non è molto diverso da mettere i vari “tp” nelle singole immagini…il problema più persistente è che singole figure, che potrebbero stare benissimo in posizione top, vengono spesso messe da sole in una pagina vuota. Il risultato è sinceramente bruttissimo, non tanto stilisticamente visto che vengono centrate, ma quanto a spazio; si ha l’impressione che lo spazio venga sprecato. Inoltre in alcuni paragrafi, andando a capo vengono lasciati degli spazi bianchi.
          Ma magari di questi problemi mi occupo dopo; ancora devo scrivere pezzi, sicuramente il relatore cancellerà/modificherà alcune cose ecc, quindi magari il problema delle figure lo vedo verso la fine.

        • #96138
          Up
          0
          Down
          ::

          deltax” post=95767si, avevo fatto quella domanda perchè provando a mettere quel codice nel preambolo, mi dava errore; poi cercando ho visto che il comando esatto è \makeatother , ti eri semplicemente dimenticato la “r” finale.
          Comunque ho provato, il risultato non è molto diverso da mettere i vari “tp” nelle singole immagini…il problema più persistente è che singole figure, che potrebbero stare benissimo in posizione top, vengono spesso messe da sole in una pagina vuota. Il risultato è sinceramente bruttissimo, non tanto stilisticamente visto che vengono centrate, ma quanto a spazio; si ha l’impressione che lo spazio venga sprecato. Inoltre in alcuni paragrafi, andando a capo vengono lasciati degli spazi bianchi.
          Ma magari di questi problemi mi occupo dopo; ancora devo scrivere pezzi, sicuramente il relatore cancellerà/modificherà alcune cose ecc, quindi magari il problema delle figure lo vedo verso la fine.

          Se LaTeX dedica una pagina a una figura, significa che la figura è troppo grande.

          Ciao
          Tommaso

        • #96139
          Up
          0
          Down
          ::

          illinguista1972″ post=95768

          si, avevo fatto quella domanda perchè provando a mettere quel codice nel preambolo, mi dava errore; poi cercando ho visto che il comando esatto è \makeatother , ti eri semplicemente dimenticato la “r” finale.
          Comunque ho provato, il risultato non è molto diverso da mettere i vari “tp” nelle singole immagini…il problema più persistente è che singole figure, che potrebbero stare benissimo in posizione top, vengono spesso messe da sole in una pagina vuota. Il risultato è sinceramente bruttissimo, non tanto stilisticamente visto che vengono centrate, ma quanto a spazio; si ha l’impressione che lo spazio venga sprecato. Inoltre in alcuni paragrafi, andando a capo vengono lasciati degli spazi bianchi.
          Ma magari di questi problemi mi occupo dopo; ancora devo scrivere pezzi, sicuramente il relatore cancellerà/modificherà alcune cose ecc, quindi magari il problema delle figure lo vedo verso la fine.

          Se LaTeX dedica una pagina a una figura, significa che la figura è troppo grande.

          Ciao
          Tommaso

          non credo, se gli specifico [t] la stessa immagine riesce a metterla in cima alla pagina. Se fosse come dici tu, e specificando [t], non si dovrebbe bloccare il flusso del posizionamento dei floating? (o almeno, cosi mi è parso di capire leggendo le guide)

        • #96140
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Scommeto che le figure che ti compaiono isolate al centro della pagina non sono smarginate. prova e mettere l’\includegraphics con i suoi argomenti nell’argomento del comando \frame; questo comando inserisce una cornice attorio alla figura, senza lasciare margini; se a te la figura composta compre con margini dentro il rettangolo messo da \frame, vuol dire che la figura non è smarginata. e la devi “croppare”; ho usato deliberatamente qusto nome bizzarro, perché devi usare il comando pdfcrop per togliere il margine alla figure, preventivamente trasformata nel formato pdf.

            Scommetto anche che queste figure a cui hai messo il codice di posizione [t], compaiono a fine capitolo o comunquie per effetto di un \clearpage.

          • #96141
            Up
            0
            Down
            ::

            OldClaudio” post=95782Scommeto che le figure che ti compaiono isolate al centro della pagina non sono smarginate. prova e mettere l’\includegraphics con i suoi argomenti nell’argomento del comando \frame; questo comando inserisce una cornice attorio alla figura, senza lasciare margini; se a te la figura composta compre con margini dentro il rettangolo messo da \frame, vuol dire che la figura non è smarginata. e la devi “croppare”; ho usato deliberatamente qusto nome bizzarro, perché devi usare il comando pdfcrop per togliere il margine alla figure, preventivamente trasformata nel formato pdf.

            Scommetto anche che queste figure a cui hai messo il codice di posizione [t], compaiono a fine capitolo o comunquie per effetto di un \clearpage.

            sulla prima cosa, hai ragione. Facendo come dici su una figura, due dei 4 margini della cornice risultano oscurati dalla figura.
            Sulla seconda, ma posso aver capito male, non credo: le figure che vengono messe da sole nelle pagine, non sono mai a fine sezione, ma all’ “interno” del discorso della sezione (con sezione intendo section o subsection).
            Ma il cropping è una cosa che si può fare anche a mano? Perchè io ho provato ad aprire l’immagine che prima mi dava il probleam del trasbordo, a eliminare il più possibile i margini bianchi, ma il problema si ripresenta. Ora, le cose sono due: o quello che ho fatto io manualmente non è il vero cropping, perchè ho capito male cosa si intende, oppure il problema non è quello. Faccio un upload dell’immagine per chiarezza

            Spoiler

            [attachment=1062]QHE.jpg[/attachment]

            In ogni caso ho provato a compilare con la classe book e alcune di quelle figure che con toptesi venivano messe da sole, con book vengono messe top. Bhò.

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


              Ho copiato la tua figura e l’ho salvata in formato png; l’ho aperta conn gimp che mi dice che su uno schermo con una densità di pixel di 73 ppt in entrambe le direzioni, la figura ha una dimensione di 179.54 mm per 149.21mm. In realtà le dimensioni della figura vanno viste in termini di pixel perché ci peensa poi graphicx a tenere conto della densità di riproduzione dlle’immagine, specialmente se specifichi larghexxe o altezze parametrizzate a \textwidth o a \textheight.

              Ma è certo che su parametrizzi la tual figura in modo che la larghezza riprodotta sia pari a \textwidth, che nella classe TOPtesi vale 160mm, la figura risu;ta aoi alta in proporzione e cioè 132.97mm; siccome la \texthight è di 297mm meno i margini superiori e inferiori,meno l’altezza dellle testatine e la distanza dal testo e meno la distanza della linea di base del piedino dalla linea di base del testo, rimandoono circa 230mm; il rapporto fra l’altezza della figura e l’altezza della gaabbia del testo allora diventa pari a circq 132/230 cioè a 0.57. Non semnra un rapposto roppo grande; ma se la figura ha una didascalia lunga, allora le cose dientano gravi; se si supera il valore di 0.7 (valore di default di report e di book) la figura può stare solo in una pagina a se stante. Con TOPtesi il rapporto massimo vale 1, quindi con toptesi la figura dovrebbe andare in una pagina con del testo per conto suo.

              Ma…
              Con LaTeX c’è sempre un ma. tutto sta a vedere se subito dopo la figure compare un titolo di sezione, allora la routine di uscita potrebbe protestare e fare di testa sua.

              Prova a fare così: invoca il pacchetto afterpage e subito dopo la figura, lasciando una riga vuota metti il comando `\afterpage{\clearpage}`Se non hai cambiamenti, prova a spostare questo comando prima della figura. Fammi sapere.

              PS: le unità di misura indicate con 10^{12}cm^{-2} sono (a) ambigue e (errate secondo le norme ISO. Io sono abituato a leggere le unità di misra man non sono capace di capire se quell’indicazione vuol dire 10^{12} unità al centimetro quadrato o se indichino 10^{10} unità al metro quadro o se indichino 10^{14} unità al metro quadro. Proprio per evitare queste ambiguità le norma ISO vietano di usare contemporaneamente i prefissi decimali e le potenze di 10. Vedi di correggere.

              PPs: le etichette degli assi quando vengono ruotate devono venire ruotate sempre nello stesso verso, e in particolare nell’unico verso accettabile, cioè di 90º in senso antiorario. L’etichetta dell’asse di destra da leggere dall’alto in basso è praticamente illeggibile a causa della rotazione sbagliata. Vedi di correggere. Con queste due osservazioni in postscritto, riguarda anche tutte le altre figure.

            • #96143
              Up
              0
              Down
              ::


              non ho capito nulla della tua spiegazione: intendiamoci, per limitatezza tecnica mia.

              Mettendo i comandi suggeriti non cambia nulla, nè mettendoli prima della figura nè dopo.

              E’ vero che quella particolare figura ha una didascalia piuttosto lunga (4 righe), ma ho provato anche con figure che hanno didascalie di una sola riga e vengono posizionate ugualmente da sole. Per quella particolare figura che ho postato ho messo un ridimensionamento a 0.7; ecco come si presenta il codice:

              \begin{figure}
              \centering
              \includegraphics[scale=0.7]{QHE}
              \caption{}
              \label{QHE}
              \end{figure}

              EDIT: mi sta venendo un dubbio, visto che della tua spiegazione mi è parso di capire che, dai calcoli, la figura dovrebbe stare in una pagina con del testo. Ma non è che il copia-incolla che ho fatto da word ha messo dei “comandi”, a me invisibili, di spaziatura?
              Se l’ho sparata grossa perdonatemi :mrgreen:

              EDIT2: riguardo i tuoi appunti sulla figura, quest’ultima non è stata fatta da me, ma è presa da un articolo. Precisamente da http://www.nature.com/nature/journal/v438/n7065/abs/nature04233.html

            • #96144
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Non specificare mai uno scalamento a meno che tu non coosca le dimensioni vere, “naturali” delle figure; invece di scale – 0.7 usa sempre parametrizzazioni alle dimensioni fisiche del tuo testo, per esempio width = 0.7\textwidth.

                Per il resto non saprei proprio dirti; cerca negli articoli di Arstexnica nell’apposita sezione il mio indirizzo di posta e emndami il malloppo; ti grantisco la massima discrezione; devo sperimentare sui file veri per scoprire che cosa non va. Coe sai la classe toptesi mi coinvolge in prima persona, quindi…

              • #96145
                Up
                0
                Down
                ::


                ok, grazie dell’aiuto. Ti invio tutto tramite email. Per la discrezione, ci mancherebbe altro, dall’aiuto che ho ricevuto fin’ora ho potuto constatare la serietà; poi non è che uno stundetello come me possa produrre chissà quale segreto industriale dal valore di milioni di dollari :mrgreen:
                Mentre hai risposto al messaggio, ho fatto un nuovo EDIT del precedente, dove specificavo che la figura non l’ho creata io, ma è presa da un articolo scientifico

              • #96146
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Il problema è stato risolto, ma lo comunico qui sul forum per spiegare qual era l’inghippo e per mostrare la soluzione semplicissima.


                  @deltax
                  desiderava avere tutte le figure in testa alla pagina e a tutte aveva specificato i codici di posizionamento facoltativi dell’ambiente figure o table nella forma tp che vuol dire: “LaTeX, o me lo metti in testa o me lo metti in una pagina a se stante! poche storie!”.
                  E LaTeX non faceva storie; stando a quanto è raccontato nella guida tematica Il LaTeX Reference Manual commentato se LaTeX non può mettere la figura nella pagina corrente in testa alla pagina perché quando incontra il segnaposto per la figura la pagina contiene già troppo testo, non può usare il posizionamento t e usa quello p, specialmente se la pagina è quasi piena di altro materiale, cioè testo, equazioni e quant’altro può stare nella pagina.

                  La soluzione qual è stata; semplice, invece di ridefinire i posizionamenti di default tp mediante i comandi che gli avevo suggerito qualche messaggio fa in questo filone, basta ridefinire quei codici di default con tb; cisì facendo se non c’è posto epr mettere al figura in testa, c’è una possibilità di metterla in calce, che ci sia posto o no, dipende dagli altri parametri di posizionamento; di solito non c’è posto e con la classe TOPtesi usata da @deltax, non c’è posto. dunque la figura viene messa in coda per essere usata nelle pagine successive; infatti nella pagina successiva, la routine di uscita esamina prima di tutto al coda degli oggetti flottanti se la prima che trova nella coda è da mettere in testa, la mette, se ce n’è un’altra e c’à ancora abbastanza spazio per metterne un’altra ce la mette, altrimenti riempie il resto della pagina con il testo accumulato nella “coda del testo” (la scatola 255), e prosegue la composizione delle pagine avendo appunto messo la figura in testa.

                  Tricky? Sì, effettivamente non è semplicissimo sviluppare nella propria mente tutta la dinamica che avviene nella pancia del motore di composizione, ma il consiglio generale che si dà sempre è quello di mettere più di un solo codice di posizionamento e di dare sempre almeno due possibilità a LaTeX per mettere gli oggetti flottanti nelle pagine normali. In un certo senso, se non vengono variati gli altri parametri per il posizionamento (numero massimo di oggetti, altezza massima dei singoli oggetti, altezza minima del testo nella pagina normale) è meglio lasciare invariati i parametri di posizionamento di default che sono tbp. In TOPtesi sono modificati anche gli altri parametri di posizionamento, per cui quelli di default sono ridefiniti con htb. A me le figuure in mezzo al testo, specialmente in una pubblicazione tecnica come una tesi di laurea non solo non danno fastidio, ma mi sembrano molto utili per consentire di leggerne il testo descrittivo avendo la figura sott’occhio nella stessa pagina. Ma @deltax preferiva seguire le norme della buona tipografia “letteraria”, cosa perfettamente lecita, e le impostazioni di TOPtesi andavano modificate leggermente per venire incontro ai suoi desideri.

                  In generale, però, è meglio non toccare né i paramatri h, t, b, p impostati di default dalla classe in uso, né gli altri parametri di posizionamento; usando espressamente i parametri facoltativi per figure o tabelle specifiche. Ma sempre bisogna aver capito il meccnaismo con cui LaTeX mette in posizione gli oggetti mobili, i floating objects, figure, tabelle, e ogni altro tipo di oggetto flottante definibile con il pacchetto float o con i comandi specifici delle classi fortemente personalizzabili, come memoir.

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

              Go to top