Immagine di sfondo per tutte le pagine

  • Creatore
    Topic
  • #28597
    Luca
    Partecipante
      Up
      0
      Down
      ::


      Salve a tutti.
      Avendo capito come fare ad inserire un’immagine di sfondo per una singola pagina, e tralasciando la (seppur importante) questione estetica, mi chiedevo: è possibile definire un’immagine di sfondo per tutte le pagine, ad eccezione però delle prime x, dove nel mio caso x = 2 (dal momento che per il frontespizio ne uso una diversa e per il verso non uso niente)?

      Inoltre, per un risultato migliore, sarebbe possibile differenziare le immagini per le pagine pari e le pagine dispari (sempre a partire dalla x+1esima)?

      Grazie infinite.

    Visualizzazione 15 filoni di risposte
    • Autore
      Risposte
      • #28598
        Up
        0
        Down
        ::

        Salve a tutti.
        Avendo capito come fare ad inserire un’immagine di sfondo per una singola pagina, e tralasciando la (seppur importante) questione estetica, mi chiedevo: è possibile definire un’immagine di sfondo per tutte le pagine, ad eccezione però delle prime x, dove nel mio caso x = 2 (dal momento che per il frontespizio ne uso una diversa e per il verso non uso niente)?

        Inoltre, per un risultato migliore, sarebbe possibile differenziare le immagini per le pagine pari e le pagine dispari (sempre a partire dalla x+1esima)?

        Lo faresti sapere anche a noi come hai inserito l’immagine di sfondo? Così probabilmente potremmo indirizzarti alla soluzione.

        Ciao
        Enrico

      • #28599
        Luca
        Partecipante
          Up
          0
          Down
          ::


          Nel preambolo:
          `\usepackage{graphicx}
          \newcommand\Sfondo[1]{\AddToShipoutPicture*{\AtPageCenter{\makebox (0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}}}`

          Nel testo (dopo il \begin{document}):
          `\newpage %intendo la pagina indicata
          \Sfondo{/…/sfondo.png}`
          ed è tutto, come riportato nella guida.
          Ma il problema è: mica devo fare questo per tutte le pagine??
          Anche perché non funziona per il \tableofcontent …

        • #28600
          Up
          0
          Down
          ::

          Nel preambolo:
          `\usepackage{graphicx}
          \newcommand\Sfondo[1]{\AddToShipoutPicture*{\AtPageCenter{\makebox (0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}}}`

          Nel testo (dopo il \begin{document}):
          `\newpage %intendo la pagina indicata
          \Sfondo{/…/sfondo.png}`
          ed è tutto, come riportato nella guida.
          Ma il problema è: mica devo fare questo per tutte le pagine??
          Anche perché non funziona per il \tableofcontent …

          Con questa macro \Sfondo aggiungi uno sfondo alla sola pagina in cui compare il comando. Puoi modificarla così:
          `\makeatletter
          \newcommand{\Sfondo}{%
          \@ifstar{\def\star@Sfondo{*}\@Sfondo}
          {\def\star@Sfondo{}\@Sfondo}}
          \def\@Sfondo#1{%
          \ClearShipoutPicture
          \expandafter\AddToShipoutPicture\star@Sfondo{\AtPageCenter{%
          \makebox(0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}}}
          \makeatother`
          Dando \Sfondo*{nome} userai per la sola pagina in cui compare lo sfondo indicato; dando \Sfondo{nome} userai quello sfondo da quel punto in poi. Puoi usare il comando \ClearShipoutPicture per cancellare lo sfondo corrente.

          Ciao
          Enrico

        • #28601
          Luca
          Partecipante
            Up
            0
            Down
            ::


            Beh, è davvero perfetto. Grazie. 😀

            Ora però la seconda domanda era: come fare per avere 2 immagini (del tipo \Sfondo ) diverse?
            Insomma, per capirci, una per il recto ed una per il verso. 😯

          • #28602
            Up
            0
            Down
            ::

            Beh, è davvero perfetto. Grazie. 😀

            Ora però la seconda domanda era: come fare per avere 2 immagini (del tipo \Sfondo ) diverse?
            Insomma, per capirci, una per il recto ed una per il verso. 😯

            `\makeatletter
            \newcommand{\Sfondi}[2]{%
            \ifodd\value{page}\@Sfondi{#1}\else\@Sfondi{#2}\fi
            \EveryShipout{\ClearShipoutPicture
            \ifodd\value{page}\@Sfondi{#2}\else\@Sfondi{#1}\fi}}
            \def\@Sfondi#1{\AddToShipoutPicture*{\AtPageCenter{%
            \makebox(0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}}}
            \makeatother`
            Con \Sfondi{dispari}{pari} inserisci lo sfondo corrispondente nelle pagine dispari e pari (naturalmente gli argomenti devono essere i nomi dei file grafici).

            Ciao
            Enrico

          • #28603
            Luca
            Partecipante
              Up
              0
              Down
              ::


              Ottimo! 😀

            • #28604
              Up
              0
              Down
              ::


              a me da questo errore

              [Undefined control sequence. \Sfondo*{logoHumans}]
              Qualche idea?

            • #28605
              Up
              0
              Down
              ::

              a me da questo errore

              [Undefined control sequence. \Sfondo*{logoHumans}]
              Qualche idea?

              Esempio minimo, per favore.

              Ciao
              Enrico

            • #28606
              Up
              0
              Down
              ::


              Salve.

              Ho provato a usare \Sfondi come si vede nel codice seguente

              `\documentclass[a4paper,11pt,openright]{report}
              % imposta i margini in base alla carta intestata
              \usepackage[twoside,%
              bindingoffset=5mm,%
              top=4.5cm,%
              bottom=3.55cm,%
              left=2.8cm,%
              right=3cm,%
              heightrounded]%
              {geometry}

              \usepackage[T1]{fontenc}
              \usepackage[latin1]{inputenc}
              \usepackage[italian]{babel}
              \usepackage[pdftex]{graphicx}
              \usepackage{eso-pic}
              \usepackage{everyshi}
              \usepackage{lipsum}

              \begin{document}
              \makeatletter
              \newcommand{\Sfondi}[2]{%
              \ifodd\value{page}\@Sfondi{#1}\else\@Sfondi{#2}\fi
              \EveryShipout{\ClearShipoutPicture
              \ifodd\value{page}\@Sfondi{#2}\else\@Sfondi{#1}\fi}}
              \def\@Sfondi#1{\AddToShipoutPicture*{\AtPageCenter{%
              \makebox(0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}}}
              \makeatother
              \author{Nome Cognome}
              \title{Prova report}
              \maketitle
              \Sfondi{provbs_L1.pdf}{provbs_R1.pdf}
              \tableofcontents
              \newpage
              \section{Intro}
              \lipsum[1]
              \subsection{Sub1}
              \lipsum[6-7]
              \subsection{Sub2}
              \lipsum[9-10]
              \section{Sec1}
              \lipsum[9-10]
              \section{Sec2}
              \lipsum[16]
              \subsection{End}
              \lipsum[17-19]
              \end{document}
              `

              ma il PDF che si ottiene presenta a pagina 2 le due immagini di sfondo sovrapposte mentre da pagina 3 in poi la sistemazione è corretta. Che cosa sbaglio?

              Grazie e buona giornata,
              Michele

            • #28607
              Up
              0
              Down
              ::


              Avendo aggiunto la riga evidenziata

              `
              \documentclass[a4paper,11pt,openright]{report}
              % imposta i margini in base alla carta intestata
              \usepackage[twoside,%
              bindingoffset=5mm,%
              top=4.5cm,%
              bottom=3.55cm,%
              left=2.8cm,%
              right=3cm,%
              heightrounded]%
              {geometry}

              \usepackage[T1]{fontenc}
              \usepackage[latin1]{inputenc}
              \usepackage[italian]{babel}
              \usepackage[pdftex]{graphicx}
              \usepackage{eso-pic}
              \usepackage{everyshi}
              \usepackage{lipsum}
              \graphicspath{{figure/}}

              \begin{document}
              \makeatletter
              \newcommand{\Sfondi}[2]{%
              \ifodd\value{page}\@Sfondi{#1}\else\@Sfondi{#2}\fi
              \EveryShipout{\ClearShipoutPicture
              \ifodd\value{page}\@Sfondi{#2}\else\@Sfondi{#1}\fi}}
              \def\@Sfondi#1{\AddToShipoutPicture*{\AtPageCenter{%
              \makebox(0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}}}
              \makeatother
              \author{Nome Cognome}
              \title{Prova report}
              \maketitle
              \Sfondi{provbs_L1.pdf}{provbs_R1.pdf}
              \setcounter{page}{1}
              \tableofcontents
              \newpage
              \section{Intro}
              \lipsum[1]
              \subsection{Sub1}
              \lipsum[6-7]
              \subsection{Sub2}
              \lipsum[9-10]
              \section{Sec1}
              \lipsum[9-10]
              \section{Sec2}
              \lipsum[16]
              \subsection{End}
              \lipsum[17-19]
              \end{document}
              `

              non si ha più sovrapposizione. Tuttavia mi pare una soluzione sporca. Che ne pensate?

              Grazie,
              Michele

            • #28608
              Up
              0
              Down
              ::


              Metti questa parte del codice nel preambolo:
              `
              \makeatletter
              \newcommand{\Sfondi}[2]{%
              \ifodd\value{page}\@Sfondi{#1}\else\@Sfondi{#2}\fi
              \EveryShipout{\ClearShipoutPicture
              \ifodd\value{page}\@Sfondi{#2}\else\@Sfondi{#1}\fi}}
              \def\@Sfondi#1{\AddToShipoutPicture*{\AtPageCenter{%
              \makebox(0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}}}
              \makeatother

              \Sfondi{provbs_L1}{provbs_R1}

              \author{Nome Cognome}
              \title{Prova report}
              `
              (Elimina l’estensione .pdf e l’opzione pdftex di graphicx)

              Ciao
              Ivan

            • #28609
              Up
              0
              Down
              ::


              Grazie Ivan. Non ho inteso se con la tua soluzione proposta anche l’istruzione
              `\setcounter{page}{1}`
              debba essere rimossa. Purtroppo se la tolgo ho ancora sovrapposizione.

              Ciao,
              Michele

            • #28610
              Up
              0
              Down
              ::

              Grazie Ivan. Non ho inteso se con la tua soluzione proposta anche l’istruzione
              `\setcounter{page}{1}`
              debba essere rimossa. Purtroppo se la tolgo ho ancora sovrapposizione.

              Ciao,
              Michele

              Non serve, ma va aggiunto \cleardoublepage dopo \maketitle.

              `

              \makeatletter
              \newcommand{\Sfondi}[2]{%
              \ifodd\value{page}\@Sfondi{#1}\else\@Sfondi{#2}\fi
              \EveryShipout{\ClearShipoutPicture
              \ifodd\value{page}\@Sfondi{#2}\else\@Sfondi{#1}\fi}}
              \def\@Sfondi#1{\AddToShipoutPicture*{\AtPageCenter{%
              \makebox(0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}}}
              \makeatother

              \author{Nome Cognome}
              \title{Prova report}

              \begin{document}

              \maketitle
              \cleardoublepage
              \Sfondi{fig1.pdf}{fig2.pdf}

              `

              Ciao
              Ivan

            • #28611
              Up
              0
              Down
              ::


              Ho fatto ma è inutile: la sovrapposizione si sposta nella pagina successiva 🙁
              Non capisco dove stia l’inghippo.

              Grazie ancora,
              Michele

            • #28612
              Up
              0
              Down
              ::

              Ho fatto ma è inutile: la sovrapposizione si sposta nella pagina successiva 🙁
              Non capisco dove stia l’inghippo.

              Grazie ancora,
              Michele

              Trovato: usando la versione non asteriscata del comando non c’è più sovrapposizione.

              `\def\@Sfondi#1{\AddToShipoutPicture*{\AtPageCenter{%
              \makebox(0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}}} `

              Saluti,
              Michele

            • #28613
              Up
              0
              Down
              ::

              Ho fatto ma è inutile: la sovrapposizione si sposta nella pagina successiva 🙁
              Non capisco dove stia l’inghippo.

              Grazie ancora,
              Michele

              Il problema sta nel fatto che eso-pic adesso usa atbegshi e non più everyshi. Meglio usare atbegshi direttamente:
              `\usepackage{atbegshi,picture}
              \makeatletter
              \newcommand{\Sfondi}[2]{%
              \AtBeginShipout{\AtBeginShipoutUpperLeft{%
              \put(0.5\paperwidth,-0.5\paperheight){%
              \ifodd\value{page}\@Sfondi{#1}\else\@Sfondi{#2}\fi}}}}
              \def\@Sfondi#1{%
              \makebox(0,0){\includegraphics[width=\paperwidth, height=\paperheight]{#1}}}
              \makeatother`
              Non caricare più né eso-pic né everyshi. E togli l’opzione pdftex da graphicx. Con
              `\maketitle
              \cleardoublepage
              \Sfondi{}{}`
              otterrai l’alternanza richiesta.

              Ciao
              Enrico

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

          Go to top