Caccia allo spazio aggiuntivo con TikZ

  • Creatore
    Topic
  • #119722
    robitex
    Amministratore del forum
      Up
      0
      Down
      ::


      Cari amici del forum, sono ancora a caccia del colpevole…
      ho un file pdf di una pagina che contiene solo il rettangolo di contorno spesso 0.4 mm

      Il file si chiama page.pdf e l’ho creato così usando il pacchetto pict2e:
      `% !TeX program = LuaLaTeX
      \documentclass[a4paper]{article}
      \usepackage[margin=0pt]{geometry}
      \usepackage{pict2e}
      \begin{document}
      \setlength{\unitlength}{1mm}
      \noindent\begin{picture}(210,297)
      \linethickness{0.4mm}
      \polygon(0.2,0.2)(209.8,0.2)(209.8,296.8)(0.2,296.8)
      \end{picture}
      \end{document}`

      Come vedete ho considerato metà spessore per descrivere le coordinate del frame.
      Bene. Ho creato un secondo file sorgente che deve includere il file precedente. Ho chiamato il file sorgente insert.tex con il codice:
      `% !TeX program = LuaLaTeX
      \documentclass[a4paper]{article}
      \usepackage[margin=0pt]{geometry}
      \usepackage{pict2e}
      \usepackage{graphicx}
      \begin{document}
      \setlength{\unitlength}{1mm}
      \noindent\begin{picture}(210,297)
      \put(0,0){\includegraphics{page}}
      \end{picture}
      \end{document}`

      Ancora tutto bene. La pagina di insert.pdf ha le dimensioni di un A4 e come previsto la pagina inserita si sovrappone esattamente all’A4 visto che il rettangolo di controllo è effettivamente sul bordo pagina.

      Adesso, concedetemi di utilizzare TikZ al posto di pict2e con la motivazione che nel mio caso reale utilizzo funzionalità che pict2e non ha. Allora il file insert.tex diventa:
      `% !TeX program = LuaLaTeX
      \documentclass[a4paper]{article}
      \usepackage[margin=0pt]{geometry}
      \usepackage{pict2e}
      \usepackage{graphicx}
      \usepackage{tikz}
      \begin{document}
      \noindent\begin{tikzpicture}
      \node at (0,0) {\includegraphics{page}};
      \end{tikzpicture}
      \end{document}`

      Ecco il guaio. Si forma una prima pagina bianca perché l’immagina è più grande del dovuto, e nella seconda se ingrandite l’angolo in alto a sinistra noterete che il rettangolo di controllo è scostato di poco, come mai e come si può evitare?
      Come notizia aggiuntivo, vi dico che ho usato TeX Live 2020 aggiornato per Linux.
      Ciao e grazie a chi mi vorrà rispondere indagando.
      R.

    Visualizzazione 3 filoni di risposte
    • Autore
      Risposte
      • #119723
        Up
        0
        Down
        ::


        Serve inner sep=0pt. A quanto pare l’impostazione di default è inner sep=3pt, che causa quello spazio bianco che vedi nella seconda pagina e il cambio di pagina.
        `% !TeX program = LuaLaTeX
        \documentclass[a4paper]{article}
        \usepackage[margin=0pt]{geometry}
        \usepackage{pict2e}
        \usepackage{graphicx}
        \usepackage{tikz}
        \begin{document}
        \noindent\begin{tikzpicture}
        \node[inner sep=0pt] at (0,0) {\includegraphics{page}};
        \end{tikzpicture}
        \end{document}
        `

        Ciao
        Ivan

      • #119724
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::


          Ottimo lavoro Ivan.
          Grazie. A quell’opzione non pensavo certamente!
          Sei stato anche molto veloce, perciò grazie ancora.
          R.

        • #119725
          Up
          0
          Down
          ::


          Credo che nel tuo caso sia più corretto questo:
          `
          % !TeX program = LuaLaTeX
          \documentclass[a4paper]{article}
          \usepackage[margin=2cm]{geometry}
          \usepackage{pict2e}
          \usepackage{graphicx}
          \usepackage{tikz}
          \begin{document}

          \begin{tikzpicture}[overlay,remember picture]
          \node[inner sep=0pt,anchor=north west] at (current page.north west) {\includegraphics{page}};
          \end{tikzpicture}

          \end{document}`
          Come vedi si può impostare anche un margine non nullo e l’immagine viene posizionata nell’angolo in alto a sinistra (current page.north west). L’opzione anchor=north west serve perché altrimenti in alto a sinistra viene posizionato il centro dell’immagine. In questo modo non hai nemmeno bisogno di \noindent

          Nell’esempio di seguito puoi vedere le due soluzioni in un unico file:

          `% !TeX program = LuaLaTeX
          \documentclass[a4paper]{article}
          \usepackage[margin=2cm]{geometry}
          \usepackage{pict2e}
          \usepackage{graphicx}
          \usepackage{tikz}
          \begin{document}

          \begin{tikzpicture}[overlay,remember picture]
          \node[inner sep=0pt,anchor=north west] at (current page.north west) {\includegraphics{page}};
          \end{tikzpicture}

          \newgeometry{margin=0cm}

          \noindent\begin{tikzpicture}
          \node[inner sep=0pt] at (0,0) {\includegraphics{page}};
          \end{tikzpicture}

          \end{document}`

          Ciao
          Ivan

        • #119726
          robitex
          Amministratore del forum
            Up
            0
            Down
            ::


            Ciao Ivan.
            In effetti ho usato \newgeometry per impostare a zero i margini da una pagina in poi del documento effettivo.
            Da notare che nel tuo primo esempio di codice, grazie all’opzione overlay la grafica vettoriale viene inserita con dimensioni nulle perciò bisogna aggiungere, eventualmente, anche un \pagestyle{empty} per evitare che venga stampato il numero di pagina.

            Queste tecniche hanno tutte utilizzi utili per il puro e semplice assemblaggio di file PDF. Un utilizzo forse imprevisto del sistema TeX ma comunque per me sempre molto molto utile. Varrebbe la pena forse raccogliere queste tecniche includendo pict2e, pdfpages eccetera in un articolo per Ars o in una guida tematica. Credo sia un argomento poco noto alla maggioranza degli utenti.
            Saluti e alla prossima.
            R.

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

        Go to top