Centrare un figura indipendentemente dai margini

  • Creatore
    Topic
  • #72896
    Up
    0
    Down
    ::


    Ciao a tutti,

    in documento che sto redigendo, mi piacerebbe poter inserire degli schemi che ho fatto con TikZ in alcune pagine a sé. Vorrei che, a priori dei margini impostati, in quelle pagine (e in quelle soltanto) la figura risulti esattamente centrata nella pagina (non nella gabbia del testo) sia orizzontalmente che verticalmente. C’è modo di farlo?

    Grazie e buona domenica a tutti,
    Marco.

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #72897
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::

        a priori dei margini impostati,

        😕 😕 😕

      • #72898
        Up
        0
        Down
        ::


        Ciao,

        chiedo venia, al posto di “a priori” nel messaggio precedente, si legga “indipendentemente”. Se anche questo non è chiaro, o erroneo, provo a spiegarmi in termini diversi.

        Vorrei che la figura (o, in questo caso, il disegno realizzato con TikZ) fosse centrata rispetto alla pagina. Se io scrivo questo codice:
        `\begin{figure}
        \centering

        \end{figure}`
        La figura inserita risulta centrata nella gabbia del testo e non rispetto ai “limiti fisici” della pagina. Vorrei invece ottenere quest’ultimo risultato, ma solo per la pagina in questione (quella dove inserisco la figura).

        Ciao e grazie,
        Marco.

      • #72899
        Up
        0
        Down
        ::

        Marco87″ post=71898Ciao,

        chiedo venia, al posto di “a priori” nel messaggio precedente, si legga “indipendentemente”. Se anche questo non è chiaro, o erroneo, provo a spiegarmi in termini diversi.

        Vorrei che la figura (o, in questo caso, il disegno realizzato con TikZ) fosse centrata rispetto alla pagina. Se io scrivo questo codice:
        `\begin{figure}
        \centering

        \end{figure}`
        La figura inserita risulta centrata nella gabbia del testo e non rispetto ai “limiti fisici” della pagina. Vorrei invece ottenere quest’ultimo risultato, ma solo per la pagina in questione (quella dove inserisco la figura).

        Ciao e grazie,
        Marco.

        Non che abbia molto senso.

        Ciao
        Enrico

      • #72900
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Marco, questo l’avevo capito, ma la tua frase precedente, sgrammaticata e con parole scelte male voleva dire “prima di avere fissato i margini”.

          Allora so che c’è un pacchetto che fa quello che vuoi tu, ma non l’ho mai usato e non sono siciro che sia changepage o altro.
          Io faccio così:, in modo meno elegante, e molto ruspante:
          `
          \begingroup\clearpage
          \oddsidemargin=\dimexpr (\oddsidemargin + \evensidemargin) / 2 \relax
          \evensidemargin=\oddsidemargin
          \vspace*{\hfill}
          \centering %per il centraggio orizzontale
          \includegraphics[…]{…}
          \par\vstretch*{\hfill}
          \clearpage
          \endgroup
          `

          Ovviamente, se vuoi puoi definirti un comando; i \begingroup e \endgroup servono per limitare la ridefinizione dei margini a solo questo gruppo, senza che si propaghino alle pagine successive; questa impostazione funziona sia sulle pagine pari sia su quelle dispari.

          Se invece vuoi mettere nel centro del foglio una immagine di sfondo, allora devi usare i pacchetti eso-pic oppure watermark.

          In entrambi i casi pensaci bene, perché cambiare geometria del layout di pagina a metà del documento, sia pure per metterci qualcosa di speciale come una immagine, in generale non è una idea molto buona.

        • #72901
          Up
          0
          Down
          ::


          Ciao Claudio,

          OldClaudiola tua frase precedente, sgrammaticata e con parole scelte male

          Hai ragione.

          Ho provato a usare il codice che mi hai fornito tu, in questo modo:
          `\begingroup\clearpage
          \oddsidemargin=\dimexpr (\oddsidemargin + \evensidemargin) / 2 \relax
          \evensidemargin=\oddsidemargin
          \vspace*{\hfill}
          \centering %per il centraggio orizzontale
          \begin{tikzpicture}

          \end{tikzpicture}
          \par\vstretch*{\hfill}
          \clearpage
          \endgroup`
          Ma mi viene indicato il seguente errore:

          ! Undefined control sequence.
          l.117 \par\vstretch
          *{\hfill}
          The control sequence at the end of the top line
          of your error message was never \def’ed. If you have
          misspelled it (e.g., `\hobx’), type `I’ and the correct
          spelling (e.g., `I\hbox’). Otherwise just continue,
          and I’ll forget about whatever was undefined.
          [3
          ]

          Se tolgo la riga [tt]\par\vstretch*{\hfill},[/tt] allora la compilazione termina senza errori, ma non ottengo il risultato desiderato. Forse conviene che cerchi di ridisegnare gli schemi affinché stiano nei margini impostati…

          Grazie e buona giornata,
          Marco.

        • #72902
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Un volgare errore si “stampa” mio’ volevo scrivere \vspace e volevo evitare il comando \stretuch; oi sai come vanno queste cose quando si fa una cosa e se ne pensa un’altra. ci vuole \vspace*{\hfill} come qualche riga sopra.

            edit Dopo 600 km di guida ero un po’ ritardato mentalmente…:sad:

            Riprendiamo da capo: il trucchetto di \oddsidemargin e \evensidemargin serve per rendere i margini uguali; il tutto racchiuso dentro a \begingroup e \endgroup serve per mantenere locale questo cambiamento’ i duce comandi \clearpage servono per assicurarsi che le code di oggetti flottanti prima e dopo siano vuote. Magari il primo \clearpage potrebbe andare prima di \begingroup.

            A questo punto la gabbai è centrata fra il bordi laterali della paginal la testatina e il piedino sono spostati lateralmente insieme alla gabbai del testo; in veritcale non si è fatto nulla, quindi la gabbia non è necessariamente centrata verticalmente.

            Ora si tratta di mettere la figura al centro della gabbia; a me parrebbe che
            `
            \begin{figure}[p]
            \centering
            \includegraphics[…]{…}
            \end{figure}
            `
            dovrebbe essere sufficiente a centrare la figura inclusa con \includegraphics sia verticalmente sia orizzontalmente dentro la gabbia; se non è questo quello che vuoi allora devi usare eso-pic o simili programmi; anche tikz ha una funzione per centrare una immagine di sfondo nella pagina, non nella gabbia, ma non l’ho mai usato.
            Infine ci sarebbe anche la possibilità di usare l’ambiente picture col quale si può mettere quasliasi cosa in qualunque punto, ma non è proprio la cosa più semplice da fare, anche se con un po’ di pratica non si tratta di una cosa impossibile. Visto che ci sono già programmai come eso-pic che usano picture dietro le quinte, perché rompersi la testa per rifare ciò che è già disponibile?

          • #72903
            Up
            0
            Down
            ::


            Ciao Claudio,

            grazie mille della spiegazione e delle indicazioni. Sostituendo [tt]\par\vstretch*{\hfill}[/tt] con [tt]\par\vspace*{\hfill},[/tt] il risultato è quello che mi aspettavo. Come mi avevate suggerito, comunque, ho evitato questa soluzione. Ho ridisegnato gli schemi in modo da non doverla usare. In ogni caso, credo che appena ho tempo guarderò la documentazione relativa alle tue indicazioni.

            Grazie ancora e ciao,
            Marco.

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

        Go to top