[L3] Gestire il creep con pdfpages

  • Creatore
    Topic
  • #93638
    franen
    Partecipante
      Up
      0
      Down
      ::


      È da un po’ di tempo che ho voglia di trovare un modo per riuscire a gestire il creep delle pagine direttamente con LaTeX, sena dover passare attraverso altri programmi.
      Qualche anno fa (inizio 2010) avevo scritto a Andras Matthias, autore di pdfpages, per chiedergli se potesse inserire fra le opzioni del pacchetto un modo per impostare il creep delle pagine. Ma mi rispose:

      I was pondering on that some time ago. Unfortunately, the
      current design of pdfpages doesn’t allow this. Too much would
      need to be rewritten. Pdfpages is pretty maxed out. Most things
      that I would like to add would require a total rewrite of
      pdfpages. Well, actually I was thinking about rewriting it
      from scratch… But don’t hold your breath.

      Quindi escludendo a priori di modificare pdfpages (se l’autore ritiene sia compicato modificarlo, figurarsi se mi ci metto io!) ho provato a pensare a un modo per impostare il creep che voglio. Probabilmente pgfpages potrebbe fare di tutto e di più, ma TikZ mi è ancora alquanto oscuro. Pertanto ho provato a scrivere un comando semplice semplice che richiede un po’ di lavoro manuale, una cosa del tipo

      [tt]\MyCreepSignature{#1}{#2}{#3}[/tt]
      dove
      #1 è la prima pagina della segnatura
      #2 è il numero totale di pagine della segnatura
      #3 è il nome del file pdf (già creato) di cui voglio fare l’imposizione

      È uscita una cosa del genere. Provo a spiegare l’idea: avendo una segnatura da n pagine (con n chiaramente multiplo di 4) definisco quali sono le pagine che verranno stampate su ogni foglio. Creo quindi una clist che contiene questi 4 numeri di pagina separati da virgola. Poi metto tutte le clist (una per ogni foglio) in una seq.
      Mappando la seq utilizzo una clist alla volta come argomento di pdfpages (pages={clist}).
      Fin qui tutto bene, il passaggio per la seq è probabilmente inutile, perché si potrebbe invocare \includepdf appena completata una clist, ma mi è comodo così. comunque la sq contiene tutti i numeri corretti e ottengo un pdf con tutte le pagine “scompigliate correttamente”.

      `\documentclass{book}
      \usepackage{pdfpages,xparse}

      \ExplSyntaxOn
      \int_new:N \g_pdfcreep_first_sig_page_int %first page of the signature
      \int_new:N \g_pdfcreep_last_sig_page_int %last page of the signature
      \int_new:N \g_pdfcreep_total_sig_page_int %total pages in the signature
      \int_new:N \g_pdfcreep_iterations_int %number of paper sheets for signature
      \int_new:N \g_pdfcreep_loop_signature_int %int for cycle
      \clist_new:N \l_pdfcreep_equal_creep_clist %clist for storing pages of a sheet
      \seq_new:N \g_pdfcreep_signature_ordered_pages_seq %seq for storing all clist
      \tl_new:N \g_pdfcreep_filename_tl %tl for storing file name

      %page numbers of the pages of one paper sheet (to understand: if I had 4 pages I'd have 4,1,2,3)
      \int_new:N \l_pdfcreep_page_i_int
      \int_new:N \l_pdfcreep_page_ii_int
      \int_new:N \l_pdfcreep_page_iii_int
      \int_new:N \l_pdfcreep_page_iv_int

      \cs_new_protected:Npn \pdfcreep_order_pages:nnn #1#2#3
      {
      \int_gset:Nn \g_pdfcreep_first_sig_page_int {#1}
      \int_gset:Nn \g_pdfcreep_total_sig_page_int {#2}
      \tl_set:Nn \g_pdfcreep_filename_tl {#3}
      \int_gset:Nn \g_pdfcreep_last_sig_page_int
      {\g_pdfcreep_first_sig_page_int + \g_pdfcreep_total_sig_page_int – 1}
      \int_gset:Nn \g_pdfcreep_iterations_int {\g_pdfcreep_total_sig_page_int/4}
      \int_gzero:N \g_pdfcreep_loop_signature_int
      \int_do_while:nn {\g_pdfcreep_loop_signature_int < \g_pdfcreep_iterations_int} { \clist_clear:N \l_pdfcreep_equal_creep_clist \int_set:Nn \l_pdfcreep_page_i_int { \g_pdfcreep_last_sig_page_int - 2*\g_pdfcreep_loop_signature_int } \clist_put_right:NV \l_pdfcreep_equal_creep_clist \l_pdfcreep_page_i_int \int_set:Nn \l_pdfcreep_page_ii_int { \g_pdfcreep_first_sig_page_int + 2*\g_pdfcreep_loop_signature_int } \clist_put_right:NV \l_pdfcreep_equal_creep_clist \l_pdfcreep_page_ii_int \int_set:Nn \l_pdfcreep_page_iii_int { \l_pdfcreep_page_ii_int + 1 } \clist_put_right:NV \l_pdfcreep_equal_creep_clist \l_pdfcreep_page_iii_int \int_set:Nn \l_pdfcreep_page_iv_int { \l_pdfcreep_page_i_int - 1 } \clist_put_right:NV \l_pdfcreep_equal_creep_clist \l_pdfcreep_page_iv_int \int_gincr:N \g_pdfcreep_loop_signature_int \seq_gput_right:NV \g_pdfcreep_signature_ordered_pages_seq \l_pdfcreep_equal_creep_clist } \seq_show:N \g_pdfcreep_signature_ordered_pages_seq \seq_map_inline:Nn \g_pdfcreep_signature_ordered_pages_seq { \includepdf[pages={##1},noautoscale]{\g_pdfcreep_filename_tl} } } \NewDocumentCommand{\MyCreepSignature}{m m m} %#1: first signature page; #2:total sign pages; #3: file name { \pdfcreep_order_pages:nnn {#1}{#2}{#3} } \ExplSyntaxOff \begin{document} \MyCreepSignature{33}{32}{agenda_2015} \end{document}` Il problema si ha quando provo a fare proprio quel che mi serve: dare un offset alle pagine. Il codice dovrebbe diventare: `\seq_map_inline:Nn \g_pdfcreep_signature_ordered_pages_seq { \includepdf[pages={##1},noautoscale,offset=10 0]{\g_pdfcreep_filename_tl} }` dove al posto del 10 c'è un valore che dipende dal numero di pagine per segnatura e da che pagina sto componendo (se sono all'esterno o al centro della segnatura). Il fatto è che non riesco a usare l'opzione offset, perché ottengo l'errore `! Missing number, treated as zero.
      \protect `

      Non so da cosa dipenda, forse dal fatto che richiamo \includepdf dentro a \ExplSyntaxOn?

      Idee?

      (Per completezza:il codice così scritto mi genererebbe un pdf a pagine singole da riprendere poi in un altro file in cui pdfpages metterà 2 pagine per foglio)

      Fran

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

        franen” post=93236[…]

        Il problema si ha quando provo a fare proprio quel che mi serve: dare un offset alle pagine. Il codice dovrebbe diventare:
        `\seq_map_inline:Nn \g_pdfcreep_signature_ordered_pages_seq
        {
        \includepdf[pages={##1},noautoscale,offset=10 0]{\g_pdfcreep_filename_tl}
        }`
        dove al posto del 10 c’è un valore che dipende dal numero di pagine per segnatura e da che pagina sto componendo (se sono all’esterno o al centro della segnatura). Il fatto è che non riesco a usare l’opzione offset, perché ottengo l’errore

        `! Missing number, treated as zero.

        \protect `

        Non so da cosa dipenda, forse dal fatto che richiamo \includepdf dentro a \ExplSyntaxOn?

        Idee?

        (Per completezza:il codice così scritto mi genererebbe un pdf a pagine singole da riprendere poi in un altro file in cui pdfpages metterà 2 pagine per foglio)

        Non ho idea di che cosa sia il “creep”. Ma sull’errore l’idea ce l’ho:
        `\seq_map_inline:Nn \g_pdfcreep_signature_ordered_pages_seq
        {
        \includepdf[pages={##1},noautoscale,offset=10 ~ 0]{\g_pdfcreep_filename_tl}
        }`
        Mancava uno spazio: come sai, gli spazi sono ignorati nell’ambiente di programmazione e, quando te ne serve uno, lo indichi con [tt]~[/tt] (che non ha nulla a che fare con l’uso nel documento).

        Ciao
        Enrico

      • #93640
        franen
        Partecipante
          Up
          0
          Down
          ::


          Oh già… grazie.

          Il creep è quella correzione che si applica durante l’imposizione tipografica per compensare il fatto che le pagine esterne di una segnatura, a causa della piegatura dei fogli, risultano spostate più verso l’interno del libro rispetto alle pagine centrali della segnatura stessa.
          Se non si è capito, magari guardando qui è più chiaro:
          http://www.pressproof.com/Graphics_Library/bindery/bindery_a.html
          http://www.technifoldusa.com/bindery-success-blog/bid/59847/Latest-iPhone-Apps-for-the-Bindery
          http://desktoppub.about.com/b/2006/10/12/calculating-creep-compensation.htm

          Fran

        • #93641
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Finora ho pubblicato il libretto dei corsi della UNI3 che presiedo in formato A5; il libretto, per ovvi motivi ha sempre un numero di facciate multiplo di 4; attualmente contiene 40 facciate che stampo in formato A4 fronte-retro, su carta da stampate da 80 g/m2 e ho misurato che lo spessore di ogni foglio ammonta a 0,1 mm.
            Poi c’è la copertina che stampo a clori fronte retro su un foglio di cartoncino da 150 g/m2.

            Non so come si chiami il creep in italiano, ma è ovvio che chiunque si rende conto che quando prendi un mazzetto di 10 fogli A4 e lo pieghi a metà, mettendolo dentro al copertina piegata a metà, per eseguirne la pinzatura con le solite graffette per pinzatrici, anche se lo fai di piatto, in modo che non ci siano scorrimenti mentre cuci il libretto, quando chiudi il libretto le pagine formano una specie di cuneo sul margine esterno. Quello è l’effetto della mancanza di creep.

            Ma a questo punto, anche se si fosse eseguito lo spostamento della pagina con pfdpages con l’opportuno sostamento verso l’interno dei fogli al centro della segnatura, il tutto tichiede una buona taglierina per rifinire el pagine e togliere quella antipatica sporgenza delle pagine interne. Questo è veramente un trattamento necessario. Ma se viene o non viene eseguito il creep, lo spostamanto dei margini causato dalla sua mancanza o presenza quando si apre il libretto ad una pagina qualsiasi è del tutto trascurabile, a meno che i margini laterali non siano veramante piccoli. con una segnatura interna di 10 fogli la differenza massima di creep da mettere o da non mettere fra il foglio più esterno è quello più interno ammonta a 1 mm; ma la prima apgina e una pagina centrale non vengono ami viste simultaneamente; quindi al massimo la presenza o l’assenza del creep fra due pagine affacciate non apparteneti alo stesso foglio è al masimo di un decimo di millimetro; ancora più trascurabile.

            A meno che non si componga una quaderno di una cinquantina di pagine da chiudere con punti metallici sufficientemente grandi, la presenza del creep o la sua assenza risultano del tutto trascurabili; ma sun una cinquantina di pagine, via via che si va verso il centro del quaderno i margini si spostano fino a 5 mm e questo non passa inosservato.

            In ogni caso che ogni segnatura si di poche o di molte pagine, la rifilatura con un’adeguata taglierina o con altri mezzi altrettanto adeguati ed efficaci, è assolutamente necessaria.

            Ecco; sono molto contento che Francesco sti studiando come eseguire la correzione del creep; per fortuna non è necessario eseguire questa correzione con segnature dimeno di 10 fogli; una segnatura con sedici facciate ha 4 fogli e sicuramente non richiede nessun creep. Per chi produce libretti/quaderni di una sola segnatura con molte più pagine, il creeb è senz’altro importante e necessario; quindi preghiamo Francesco di scriverci una guida tematica o un articolo spe ArsTeXnica (dopo aver scoperto come il creep si chiami in italiano) e quindi ci tenga al corrente dei suoi risultati.

            Lo ringrazio in anticipo. Francesco non fare scherzi: ci conto.

            Claudio

          • #93642
            Up
            0
            Down
            ::


            in italiano si chiama SLITTAMENTO DI PAGINA

          • #93643
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Grazie; certo l’inglese è molto più compatto, ma non tutti conoscono questo termine tecnico. Cercherò di aggiungerlo al glossario della Guida GuIT.
              Claudio

            • #93644
              Up
              0
              Down
              ::


              è il termine della tipografia italiana; il problema con la compensazione dello slittamento di pagina sta nel fatto che non è possibile prevederlo a priori senza conoscere la mano e la grammatura della carta

              per maggiore esattezza i tipografi procedevano in questo modo: stampavano una segnatura e, accavallando i quartini, senza ancora cucirli o incollarli o spillarli, prendevano una lametta e praticavano un taglio dritto attraverso tutte le pagine, poi riaprivano la segnatura e misuravano la distanza dei tagli su ogni pagina dalle altre pagine, ciò forniva, per ogni quartino della segnatura la misura della compensazione da inserire

              nei programmi automatici di imposizione e prestampa, viene previsto un generico valore di massima di compensazione, ma solo la misurazione manuale può assicurarne uno corretto e che, nel caso di margini necessariamente esigui, non causi vistose differenze fra le pagine al centro e quelle all’inizio e alla fine del libro

              bisognerebbe avere un database completo delle marche con l’indicazione della grammatura e della mano per poter raffinare l’approssimazione da dare senza la misura manuale volta per volta

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

          Go to top