elenco allegati numerati

  • Creatore
    Topic
  • #88561
    Up
    0
    Down
    ::


    Ciao, sto cercando di a) accludere ad un testo tutti i documenti (pdf) in esso richiamati, b) attivare un link dal documento richiamato nel testo all’allegato, c) piazzare in calce al testo (e prima degli allegati) un elenco numerato degli allegati (con heading “elenco degli allegati”) anch’essi linkabili, e infine d) numerare con coerenza ciascun allegato apponendo nella pagina iniziale di ognuno in alto sulla destra il numero corriposndente (tipo “”unghia numerata”: a quest’utlimo scopo mi pare di ricordare un pacchetto apposito che però non riesco più a reperire..).

    Credo di aver bisogno dei pacchetti tocloft e pdfpages, che conosco troppo superficialmente per manovrare bene. Infatti, riesco ad ottenere soltanto i punti a) e b), e chiedo un aiuto per realizzare gli altri due, c) e d).
    Grazie.

    Il mio emc:
    `
    \documentclass[12pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{makeidx}
    \usepackage{graphicx}
    \usepackage{lmodern}
    \usepackage{eso-pic}
    \usepackage{everyshi}
    \usepackage{pdfpages}
    \usepackage{hyperref}
    \usepackage{tocloft}
    \newcommand{\listofencl}{Elenco degli allegati}
    \newlistof{allegato}{all}{\listofencl}

    \begin{document}

    Questa è una prova per verificare
    se il \hyperlink{verso1}{link al primo documento}
    allegato funzioni correttamente.

    E se funzioni anche il \hyperlink{verso2}{link al secondo documento allegato}.

    Qui andrebbe l'elenco numerato di tutti i documenti allegati.

    \listofencl

    \includepdf[pages=-,link,linkname=verso1,addtolist={1,allegato,{Titolo del primo documento},all:file1}]{file_1.pdf}
    \includepdf[pages=-,link,linkname=verso2,addtolist={1,allegato,{Titolo del secondo documento},all:file2}]{file_2.pdf}

    \end{document}`

    e gli allegati

    [attachment=780]file_1.pdf[/attachment]

    [attachment=781]file_2.pdf[/attachment]

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 23 filoni di risposte
  • Autore
    Risposte
    • #88562
      franen
      Partecipante
        Up
        0
        Down
        ::


        Il punto b) a me non funzionava…
        Non riuscivi a creare l’elenco degli allegati perché non usavi il comando giusto! Tu scrivevi [tt]\listofencl[/tt], che in realtà è il comando che richiama il nome della lista. La documentazione dice che devi usare il comando [tt]\listof(nomelista)[/tt], quindi [tt]\listofallegato[/tt].
        Così facendo ottieni un elenco con dei collegamenti funzionanti.
        Quelli all’interno del testo invece non (mi) funzionano.
        Utilizzando per i collegamenti i nomi di default di pdfpages (nomefile.numeropagina), e quindi eliminando i comandi [tt]linkname[/tt], tutto funziona.

        Mi manca solo il punt d). Ci penso.
        Ah, hyperref caricalo per ultimo, mi raccomando!

        Fran`\documentclass[12pt,a4paper]{article}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{pdfpages}
        \usepackage{tocloft}
        \newcommand{\listofencl}{Elenco degli allegati}
        \newlistof{allegato}{all}{\listofencl}
        \usepackage{hyperref}
        \begin{document}
        Questa è una prova per verificare
        se il \hyperlink{file_1.pdf.1}{link al primo documento}
        allegato funzioni correttamente.

        E se funzioni anche il \hyperlink{file_2.pdf.1}{link al secondo documento allegato}.

        Qui andrebbe l'elenco numerato di tutti i documenti allegati.

        \listofallegato
        \includepdf[pages=-,link,addtolist={1,allegato,{Titolo del primo documento},all:file1}]{file_1.pdf}
        \includepdf[pages=-,link,addtolist={1,allegato,{Titolo del secondo documento},all:file2}]{file_2.pdf}
        \end{document}`

        Aggiunte:

        Il problema dei nomi dei link

        Ho scoperto perché non funzionavano gli hyperlink con il tuo linkname=xxx.
        Se scrivi [tt]\includepdf[link,linkname=pippo…][/tt] dovrai usare [tt]\hyperlink{pippo.n}{testo}[/tt] perché pdfpages genera hyperlink avento come nome [tt]linkname.numeropagina[/tt]. Così facendo puoi anche creare dei collegamenti a pagine successive alla prima.
        Quindi il codice `Questa è una prova per verificare
        se il \hyperlink{verso1.1}{link al primo documento}
        allegato funzioni correttamente.

        E se funzioni anche il \hyperlink{verso2.1}{link al secondo documento allegato}.

        Qui andrebbe l'elenco numerato di tutti i documenti allegati.

        \listofallegato
        \includepdf[pages=-,link,linkname=verso1,addtolist={1,allegato,{Titolo del primo documento},all:file1}]{file_1.pdf}
        \includepdf[pages=-,link,linkname=verso2,addtolist={1,allegato,{Titolo del secondo documento},all:file2}]{file_2.pdf}`funziona.

        Numerazione degli allegati

        Per sovrascrivere la prima pagina del pdf mi è venuto in mente che si può usare la chiave [tt]pagecommand[/tt] di pdfpages e creare un comando che inserisca il testo che ti interessa, usando un ambiente picture.Il problema è che [tt]pagecommand[/tt] esegue il comando su tutte le pagine del pdf, quindi troveresti il numero dell’allegato su ogni pagina. Si può ovviare spezzando in due parti l’inserimento del pdf: prima inserisci solo la prima pagina con i link e il numero, poi il resto dell’allegato. nell’esempio che ti riporto non ho creato un unghia, ma del semplice testo, lascio a te eventualmente trovare il modo. (il documento verrà stampato? perché in questo caso sconsiglio di usare un unghia, dal momento che le stampanti hanno solitamente un margine di 5-6 mm in cui non possono stampare. A meno che poi non rifili il tutto con una taglierina…)

        Sommando il tutto…

        Un codice pseudo-definitvo per i tuoi 4 problemi è:`\documentclass[12pt,a4paper]{article}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{pdfpages}
        \usepackage{tocloft,xcolor}
        \usepackage{pict2e}[2009/06/01]
        \newcommand{\listofencl}{Elenco degli allegati}
        \newlistof{allegato}{all}{\listofencl}
        \usepackage{hyperref}

        \newcommand{\StampaNumeroAllegato}[1]{%
        \noindent
        \begin{picture}(0,0)
        \put(0,70){\makebox[\textwidth][r]{\textcolor{red}{\Large Allegato #1}}}
        \end{picture}
        }

        \begin{document}
        Questa è una prova per verificare
        se il \hyperlink{verso1.1}{link al primo documento}
        allegato funzioni correttamente.

        E se funzioni anche il \hyperlink{verso2.1}{link al secondo documento allegato}.

        Qui andrebbe l'elenco numerato di tutti i documenti allegati.

        \listofallegato
        \includepdf[pages=-,link,linkname=verso1,addtolist={1,allegato,{Titolo del primo documento},all:file1},pagecommand=\StampaNumeroAllegato{1}]{file_1.pdf}
        \includepdf[pages=1,link,linkname=verso2,addtolist={1,allegato,{Titolo del secondo documento},all:file2},pagecommand=\StampaNumeroAllegato{2}]{file_2.pdf}
        \includepdf[pages=2-,]{file_2.pdf}

        \end{document}`

      • #88563
        Up
        0
        Down
        ::


        Ciao Fran, grazie per le tue risposte. Il risultato è praticamente perfetto. Il comando \StampaNumeroAllegato fa esattamente al caso mio. Ho solo fatto una piccola modifica grafica al numero da sovrascrivere alle prime pagine. In realtà però potrebbe essere problematico inserire manualmente il numero dell’allegato. Infatti può capitare di dover allegare qualche decina di documenti. E soprattutto può capitare di cambiare in corso d’opera l’ordine in cui sono inseriti i pdf, a quel punto dovendo cambiare tutta la numerazione fino a quel momento adottata. Mi chiedo se sia possibile fare in modo che il comando stampi il numero automaticamente in base all’ordine di apparizione di ciascun \includepdf. Qualche idea?

        `\documentclass[12pt,a4paper]{article}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{pdfpages}
        \usepackage{tocloft,xcolor}
        \usepackage{pict2e}[2009/06/01]
        \usepackage{tikz}
        \newcommand*\round[1]{\tikz[baseline=(char.base)]{
        \node[shape=circle,ultra thick,draw,inner sep=5pt] (char) {#1};}}
        \newcommand{\listofencl}{Elenco degli allegati}
        \newlistof{allegato}{all}{\listofencl}
        \usepackage{hyperref}

        \newcommand{\StampaNumeroAllegato}[1]{%
        \noindent
        \begin{picture}(0,0)
        \put(75,100){\makebox[\textwidth][r]{\textcolor{red}{\Large Doc.~n.~{\LARGE \round{\textbf{#1}}}}}}
        \end{picture}
        }

        \begin{document}
        Questa è una prova per verificare
        se il link al primo documento (cfr.~\hyperlink{file1.1}{doc.~n.~1}) funzioni correttamente. Come fare in modo che
        la numerazione fra parentesi sia automatica?

        Lo stesso dovrebbe essere per il \hyperlink{file2.1}{link al secondo documento allegato}. Cioè, oltre al collegamento al
        documento richiamato, si vuole che
        in automatico fra parentesi compaia il numero del documento allegato.
        Così: (\hyperlink{file2.1}{doc.~n.~2}).

        Qui andrebbe l'elenco numerato di tutti i documenti allegati.

        \listofallegato
        \includepdf[pages=-,link,linkname=file1,addtolist={1,allegato,{Titolo del primo documento},all:file1},pagecommand=\StampaNumeroAllegato{1}]{file_1.pdf}

        \includepdf[pages=1,link,linkname=file2,addtolist={1,allegato,{Titolo del secondo documento},all:file2},pagecommand=\StampaNumeroAllegato{2}]{file_2.pdf}
        \includepdf[pages=2-,]{file_2.pdf}

        \end{document}`

      • #88564
        Up
        0
        Down
        ::


        Aggiungi nel tuo preambolo le seguenti righe
        `
        \newcounter{numallegato}
        \setcounter{numallegato}{0}
        \newcommand{\includi}[1][]{\addtocounter{numallegato}{1}\includepdf[#1,pagecommand=\StampaNumeroAllegato{\arabic{numallegato}}]}
        `

        Devi però utilizzare il comando [tt]\includi[/tt] al posto di [tt]\includepdf[/tt]. Ho provato a rinominare [tt]\includepdf[/tt] utilizzando il comando [tt]\let[/tt], ma si blocca la compilazione e non capisco a cosa sia dovuto. Posso chiederti, @franen (o chiunque ne sappia qualcosa), come si potrebbe rinominare? Il codice che ho prodotto è simile a quello sopra:
        `
        \newcounter{numallegato}
        \setcounter{numallegato}{0}
        \let\includi\includepdf
        \renewcommand{\includepdf}[1][]{\addtocounter{numallegato}{1}\includif[#1,pagecommand=\StampaNumeroAllegato{\arabic{numallegato}}]}
        `
        ma si pianta pdflatex subito dopo aver definito il contatore.

      • #88565
        franen
        Partecipante
          Up
          0
          Down
          ::


          Ma se modificassimo leggermente il comando \StampaNumeroAllegato?`newcounter{numallegato}
          \setcounter{numallegato}{0}
          \newcommand{\StampaNumeroAllegato}{%
          \refstepcounter{numallegato}
          \noindent
          \begin{picture}(0,0)
          \put(75,100){\makebox[\textwidth][r]{\textcolor{red}{\Large Doc.~n.~{\LARGE \round{\textbf{\thenumallegato}}}}}}
          \end{picture}
          }` Poi basterebbe usare [tt]\StampaNumeroAllegato[/tt] senza argomento all’interno degli argomenti di \includepdf.


          @skevin93
          , non ho capito come dovrebbe funzionare il nuovo \includepdf (o \includi, è lo stesso). L’argomento che gli si dà è tuttto quello che precede “pagecommand” negli argomenti opzionali? e come si fa a dirgli quale file importare?


          @furbenzio
          . Cosa vuol dire numerazione automatica? Come fa LaTeX a sapere a quale file vuoi riferirti? È la stessa cosa di un \ref a una figura o una tabella, tu devi inserire manualmente una \label che poi richiami dove ti serve. Se fosse difficile ricordare la numerazione degli allegati potresti inserire una \label nella prima pagina dei pdf importati a cui poi puoi collegarti con i soliti [tt]\ref{xxx}[/tt] (qui dovrebbe esserci scritto \ r e f { xxx }, ma escono due punti di domanda….). Vedi qui.

          Fran

        • #88566
          Up
          0
          Down
          ::

          franen” post=88102

          @furbenzio
          . Cosa vuol dire numerazione automatica? Come fa LaTeX a sapere a quale file vuoi riferirti? È la stessa cosa di un \ref a una figura o una tabella, tu devi inserire manualmente una \label che poi richiami dove ti serve. Se fosse difficile ricordare la numerazione degli allegati potresti inserire una \label nella prima pagina dei pdf importati a cui poi puoi collegarti con i soliti \ref{xxx}. Vedi qui.
          Fran

          In effetti ogni pdf included ha già una sua etichetta. Con un \ref, ti puoi agganciare a quella.

          Ma scusate perché non mettere il \StampaNumeroAllegato in un header personalizzato che compaia solo sulla prima pagina di ogni pdf incluso? In questo modo ovviamo alla necessità di includere due volte lo stesso pdf. Il mio tentativo rudimentale di farlo, è fallito. Dove sbaglio?

          `\documentclass[12pt,a4paper]{article}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{pdfpages}
          \usepackage{tocloft,xcolor}
          \usepackage{pict2e}[2009/06/01]
          \usepackage{tikz}
          \usepackage{fancyhdr}
          \newcommand*\round[1]{\tikz[baseline=(char.base)]{
          \node[shape=circle,ultra thick,draw,inner sep=5pt] (char) {#1};}}
          \newcommand{\listofencl}{Elenco degli allegati}
          \newlistof{allegato}{all}{\listofencl}
          \usepackage{hyperref}

          \newcounter{numallegato}
          \setcounter{numallegato}{0}
          \newcommand{\StampaNumeroAllegato}{%
          \refstepcounter{numallegato}
          \noindent
          \begin{picture}(0,0)
          \put(75,100){\makebox[\textwidth][r]{\textcolor{red}{\Large Doc.~n.~{\LARGE \round{\textbf{\thenumallegato}}}}}}
          \end{picture}
          }

          \fancypagestyle{myfirst}{
          \fancyhead{} %% or \fancyhf{}
          \rhead{\StampaNumeroAllegato}
          \renewcommand{\headrulewidth}{0pt}
          }

          \begin{document}
          Questa è una prova per verificare
          se il link al primo documento (cfr. doc. n.~\ref{all:file1}) funzioni correttamente.

          Lo stesso dovrebbe essere per il secondo documento allegato
          (cfr. doc. n.~\ref{all:file2}).

          Qui andrebbe l'elenco numerato di tutti i documenti allegati.

          \listofallegato

          \includepdf[pages=-,openright,link,linkname=file1,addtolist={1,allegato,{Titolo del primo documento},all:file1},pagecommand=\thispagestyle{myfirst}]{file_1.pdf}

          \includepdf[pages=-,openright,link,linkname=file2,addtolist={1,allegato,{Titolo del secondo documento},all:file2},pagecommand=\thispagestyle{myfirst}]{file_2.pdf}

          \end{document}`

          Poi c’è un’altra cosa che mi turba. Se io, come faccio abitualmente, per la numerazione pagine uso LastPage (pag. x di y), come faccio a limitare questa numerazione solo al corpo del documento principale, escludendo dal calcolo delle pagine totali tutte quelle che seguono all’ultima del documento principale e che appartengono ai pdf inclusi?

        • #88567
          franen
          Partecipante
            Up
            0
            Down
            ::


            Il tuo comando fallisce parzialmente: il numero dell’allegato viene stampato, solo che tu non lo vedi perché è abbondantemente fuori dalla pagina, per via del [tt]\put(75,100)[/tt].
            Dovresti scrivere`\newcommand{\StampaNumeroAllegato}{%
            \refstepcounter{numallegato}
            {\textcolor{red}{\Large Doc.~n.~{\LARGE \round{\textbf{\thenumallegato}}}}}
            }` Il problema è che non può funzionare: il valore di [tt]pagecommand[/tt] viene eseguito per ogni pagina, quindi qui hai una serie di inconvenienti:
            – viene eseguito anche sulla pagina bianca che pdfpages inserisce perché l’allegato parta su un pagina dispari;
            – a ogni pagina il contatore viene incrementato di 1.

            Credo che se anche avessi 20 allegati impiegheresti comunque meno tempo a scrivere manualmente i vari \includepdf separando la prima pagina dalle altre.

            Per \lastpage ci penso pomeriggio.

            Fran

          • #88568
            Up
            0
            Down
            ::


            Il mio comando funziona come ha richiesto lui, al meno sul mio computer. Ho dato solo un argomento opzionale perché quando esegue [tt]\includi[/tt], esegue il comando [tt]\includepdf[/tt] aggiungendoci il comando opzionale e poi cerca la prima coppia di graffe, che sono quelle del comando [tt]\includi[/tt] e le usa come argomento principale di [tt]\includepdf[/tt].

            Volendo si poteva scrivere anche
            `
            \newcommand{\includi}[2][]{\stepcounter{numallegato}\includepdf[#1,pagecommand=\StampaNumeroAllegato{\arabic{numallegato}}]{#2}}
            `

            Usando questo nuovo comando si aggiorna il contatore soltanto quando carichi un novo .pdf, e stampa in ogni pagina il numero. Così, indipendentemente dall’ordine di caricamento, i numeri sono sempre crescenti.

            PS: Ho cambiato il comando [tt]\addtocounter{numallegato}{1}[/tt] con il comando [tt]\stepcounter{numallegato}[/tt], che è equivalente.

          • #88569
            franen
            Partecipante
              Up
              0
              Down
              ::


              Perché LaTeX consideri come ultima pagine del documento quella che comprende la lista degli allegati si potrebbe creare un nuovo contatore che registri il valore del contatore page in quel punto e lo scriva nel file ausiliario, cioè quello che fa anche il pacchetto lastpage.
              Quindi scriverei `\listofallegato
              %*******
              \makeatletter
              \immediate\write\@auxout{\string\newlabel{MyLastPage}{{}{\thepage}{}{}{}}}%
              \makeatother
              %*******
              \includepdf[page…`Ti perdi la possibilità di avere un collegamento cliccabile all’ultima pagina (poco male credo). Poi non so quali altri problemi potrebbero esserci.

              Fran

            • #88570
              Up
              0
              Down
              ::


              Se vuoi il numero del documento solo nella prima pagina del pdf allegato, prova questa ulteriore versione del comando [tt]\includi[/tt]
              `
              \newcommand{\includi}[2][]{\stepcounter{numallegato}%
              \includepdf[#1,pages=1,pagecommand=\StampaNumeroAllegato{\thenumallegato}]{#2}%
              \includepdf[pages=2-]{#2}}
              `
              Semplicemente, includi prima la prima pagina del pdf e ci applichi il numero. Poi includi il resto del pdf.

            • #88571
              franen
              Partecipante
                Up
                0
                Down
                ::


                Il problema è che se il file da includere ha una sola pagina si ottiene un errore. Servirebbe fare prima una verifica del numero di pagine del pdf e poi usare \includepdf.
                Solo che non so se sia possibile.

                Fran

              • #88572
                Up
                0
                Down
                ::


                avrebbe forse senso pensare di usare Biblatex? il punto sarebbe: come automatizzare l’inserimento dopo il testo dei pdf in esso citati, facendone una lista numerata in calce al testo medesimo, e scrivendo la label giusta (allegato n. ..) nell’intestazione dell’allegato?

              • #88573
                franen
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Innanzitutto ho trovato un modo per ovviare al problema di dover spezzare in due l’inserimento di pdf fi più pagine: usando [tt]picturecommend*[/tt] al posto di [tt]pagecommend*[/tt]. Il valore assegnato a [tt]picturecommend*[/tt] viene eseguito solo sulla prima pagina importata. [tt]picturecommend*[/tt] crea un ambiente picture con punto base in basso a destra, quindi occorre modificare i valori delle coordinate da dare a \put.
                  Riporto il codice in fondo al messaggio.

                  E ora ti chiedo di chiarirmi meglio la questione dell’automazione. Per quanto ne so non è possibile dire a LaTeX di importare tutti i documenti contenuti, ad esempio, in una cartella. Occorrerebbe un qualche script shell o simili. Ma se tu nominassi i tuoi file “file-1”, “file-2” ecc. potresti fare un ciclo for (o un \whilenum) per includere i tuoi n file. Però se volessi cambiare l’ordine di importazione allora dovresti agire sui nomi dei file.
                  A questo punto avresti inserito i tuoi n pdf e avresti anche le scritte corrette sulla prima pagina di ogni allegato.

                  Però se cambi l’ordine di inserimento degli allegati allora tutti gli eventuali collegamenti ipertestuali che ti eri creato in precedenza punterebbero alla pagina sbagliata, perché i collegamenti stessi erano costruiti con nomi che si basavano sul nome del file. Pertanto dovresti creare i collegamenti usando il sistema che era descritto nel link che avevo postato. Ma sul come rendere automatica anche la creazione dei [tt]\label[/tt], devo pensare.

                  Fran

                  `\documentclass[12pt,a4paper]{article}
                  \usepackage[utf8]{inputenc}
                  \usepackage[italian]{babel}
                  \usepackage{pdfpages}
                  \usepackage{tocloft,xcolor}
                  \usepackage{pict2e}[2009/06/01]
                  \usepackage{tikz}
                  \newcommand*\round[1]{\tikz[baseline=(char.base)]{
                  \node[shape=circle,ultra thick,draw,inner sep=5pt] (char) {#1};}}
                  \newcommand{\listofencl}{Elenco degli allegati}
                  \newlistof{allegato}{all}{\listofencl}
                  \usepackage{hyperref}

                  \newcounter{numallegato}
                  \setcounter{numallegato}{0}
                  \setlength{\unitlength}{1mm}
                  \newcommand{\StampaNumeroAllegato}{%
                  \refstepcounter{numallegato}
                  \noindent
                  \put(0,790){\makebox[200mm][r]{\textcolor{red}{\Large Doc.~n.~{\LARGE \round{\textbf{\thenumallegato}}}}}}
                  }

                  \begin{document}
                  Questa è una prova per verificare
                  se il link al primo documento (cfr.~\hyperlink{file1.1}{doc.~n.~1}) funzioni correttamente. Come fare in modo che
                  la numerazione fra parentesi sia automatica?

                  Lo stesso dovrebbe essere per il \hyperlink{file2.1}{link al secondo documento allegato}. Cioè, oltre al collegamento al
                  documento richiamato, si vuole che
                  in automatico fra parentesi compaia il numero del documento allegato.
                  Così: (\hyperlink{file2.1}{doc.~n.~2}).

                  Qui andrebbe l'elenco numerato di tutti i documenti allegati.

                  \listofallegato
                  \includepdf[pages=-,link,linkname=file1,addtolist={1,allegato,{Titolo del primo documento},all:file1},picturecommand*=\StampaNumeroAllegato]{file_1.pdf}
                  \includepdf[pages=-,link,linkname=file2,addtolist={1,allegato,{Titolo del secondo documento},all:file2},picturecommand*=\StampaNumeroAllegato]{file_2.pdf}
                  \includepdf[pages=-,link,linkname=file1,addtolist={1,allegato,{Titolo del primo documento},all:file1},picturecommand*=\StampaNumeroAllegato]{file_1.pdf}

                  \end{document}`

                • #88574
                  franen
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Con questo emssaggio spero di soddisfare ogni desiderio! 🙂 C’è un modo semi-automatico per inserire gli allegati che non crea problemi con i collegamenti ipertestuali nel caso in cui invertissi l’ordine di inserimento dei file… Spero che l’uso del codice sia abbastanza chiaro.

                    Fran
                    `\documentclass[12pt,a4paper]{article}
                    \usepackage[utf8]{inputenc}
                    \usepackage[italian]{babel}
                    \usepackage{pdfpages}
                    \usepackage{tocloft,xcolor}
                    \usepackage{xparse}
                    \usepackage{pict2e}[2009/06/01]
                    \usepackage{tikz}
                    \newcommand*\round[1]{\tikz[baseline=(char.base)]{
                    \node[shape=circle,ultra thick,draw,inner sep=5pt] (char) {#1};}}
                    \newcommand{\listofencl}{Elenco degli allegati}
                    \newlistof{allegato}{all}{\listofencl}

                    \newcounter{numallegato}
                    \setcounter{numallegato}{0}
                    \newcommand{\StampaNumeroAllegato}{%
                    \stepcounter{numallegato}
                    \noindent
                    \put(0,790){\makebox[200mm][r]{\textcolor{red}{\Large Doc.~n.~{\LARGE \round{\textbf{\thenumallegato}}}}}}
                    }

                    \ExplSyntaxOn
                    % creo la clist dove inserisco i file da includere con i loro label e titoli
                    \clist_new:N \g_attach_files_clist
                    \NewDocumentCommand{\ProcessFiles}{m}
                    {
                    \clist_gclear:N \g_attach_files_clist %pulisco la lista
                    \clist_gset:Nn \g_attach_files_clist { #1 } %Inserisco i dati
                    %ogni elemento viene dato in pasto a \_import_files:w
                    \clist_map_inline:Nn \g_attach_files_clist { \_import_files:w ##1? } %quel punto di domanda serve da delimitatore, vedi la definizione di \_import_files:w
                    }

                    %\_import_files:w “spezzetta'' il suo argomento in 3 parti, la prima è il nome del file, la seconda è il label e la terza è il titolo. Quindi include il pdf. Ho eliminato le chiavi “link'' perché per i collegamenti si può usare il label
                    \cs_new_protected:Npn \_import_files:w #1! #2! #3?
                    {
                    \includepdf[pages=-,addtolist={1,allegato,{#3},all:#2},picturecommand*=\StampaNumeroAllegato]{#1.pdf}
                    }
                    \ExplSyntaxOff
                    \usepackage{hyperref}
                    \begin{document}
                    Questa è una prova per verificare
                    se il link al primo documento (cfr.~doc.~n.~\ref{all:ermeneutica}) funzioni correttamente. Come fare in modo che
                    la numerazione fra parentesi sia automatica?

                    Lo stesso dovrebbe essere per il link all'allegato~\ref{all:ornitologia}.

                    Qui andrebbe l'elenco numerato di tutti i documenti allegati.

                    \listofallegato
                    % qui devi scrivere la lista dei file che vuoi inserire, chiaramente nell'ordine corretto! Ricorda i delimitatori (!) e la virgola finale.
                    \ProcessFiles{%
                    %nomefile!label!Titolo da mettere nell'indice degli allegati,
                    file-1!ermeneutica!Pillole di ermeneutica,%
                    file-2!ornitologia!De ornitologiae%
                    }
                    \end{document}`

                  • #88575
                    Up
                    0
                    Down
                    ::


                    funziona tutto perfettamente, grazie. ma da dove spuntano tutti questi comandi strani? cos’è \clist? punti esclamativi come separatori? dove posso documentarmi? mi sento un po’ spaesato..

                  • #88576
                    franen
                    Partecipante
                      Up
                      0
                      Down
                      ::

                      furbenzio” post=88456cos’è \clist? punti esclamativi come separatori? dove posso documentarmi? mi sento un po’ spaesato..

                      Benvenuto nel nuovo mondo di LaTeX3! Tutti quei comandi strani, pieni di underscore, di parentesi graffe seguite da spazi, li puoi trovare descritti inarticolo texdoc interface3 e texdoc xparse. Invece gli argomenti delimitati sono vecchi quanto TeX! Claudio Beccari ha scritto un articolo qualche tempo fa. La riga `\cs_new_protected:Npn \_import_files:w #1! #2! #3? { … }` è quasi lo stesso che scrivere `\def\ImportFiles#1!#2!#3?{…}` è un modo per scrivere una stringa e avere tre argomenti. Magari veniva più semplice scrivere:`\documentclass[12pt,a4paper]{article}
                      \usepackage[utf8]{inputenc}
                      \usepackage[italian]{babel}
                      \usepackage{pdfpages}
                      \usepackage{tocloft,xcolor}
                      \usepackage{xparse}
                      \usepackage{pict2e}[2009/06/01]
                      \usepackage{tikz}
                      \newcommand*\round[1]{\tikz[baseline=(char.base)]{
                      \node[shape=circle,ultra thick,draw,inner sep=5pt] (char) {#1};}}
                      \newcommand{\listofencl}{Elenco degli allegati}
                      \newlistof{allegato}{all}{\listofencl}

                      \newcounter{numallegato}
                      \setcounter{numallegato}{0}
                      \newcommand{\StampaNumeroAllegato}{%
                      \stepcounter{numallegato}
                      \noindent
                      \put(0,790){\makebox[200mm][r]{\textcolor{red}{\Large Doc.~n.~{\LARGE \round{\textbf{\thenumallegato}}}}}}
                      }
                      \newcommand{\addfile}[3]{%
                      \includepdf[pages=-,addtolist={1,allegato,{#3},all:#2},picturecommand*=\StampaNumeroAllegato]{#1.pdf}}

                      \usepackage{hyperref}
                      \begin{document}
                      Questa è una prova per verificare
                      se il link al primo documento (cfr.~doc.~n.~\ref{all:ermeneutica}) funzioni correttamente. Come fare in modo che
                      la numerazione fra parentesi sia automatica?

                      Lo stesso dovrebbe essere per il link all'allegato~\ref{all:ornitologia}.

                      Qui andrebbe l'elenco numerato di tutti i documenti allegati.

                      \listofallegato

                      \addfile{file-2}{ornitologia}{De ornitologiae}
                      \addfile{file-1}{ermeneutica}{Pillole di ermeneutica}

                      \end{document}` Ma ste cose mi vengono in mente man mano che ci lavoro su 🙂

                      Fran

                    • #88577
                      Up
                      0
                      Down
                      ::


                      Ciao, vorrei apportare una modifica al codice. Come faccio a inserire una numerazione pagine del tipo “x di y” dove il totale (“y”) indichi le sole pagine del documento che cita gli allegati e non anche quelle degli allegati? Poi: come posso aumentare la spaziatura fra gli elementi della \listofallegato? E in genere la formattazione dell’heading “Lista degli allegati”? grazie per l’aiuto

                    • #88578
                      franen
                      Partecipante
                        Up
                        0
                        Down
                        ::


                        Per usare il riferimento all’ultima pagina senza contare gli allegati puoi usare il codice che ti avevo suggerito qualche messaggio fa.
                        Per la distanza fra le voci della lista regola la lunghezza [tt]\cftparskip[/tt]. Per le testatine, dovresti quantomeno dirci come li vorresti, comunque li puoi gestire sempre con fancyhdr.

                        Riporto un esempio che si basa sull’ultima versione del codice che ti avevo proposto.
                        `\documentclass[12pt,a4paper]{article}
                        \usepackage[utf8]{inputenc}
                        \usepackage[italian]{babel}
                        \usepackage{pdfpages,fancyhdr}
                        \usepackage{tocloft,xcolor}
                        \setlength{\cftparskip}{\baselineskip}
                        \usepackage{lipsum}
                        \usepackage{pict2e}[2009/06/01]

                        \fancypagestyle{plain}{%
                        \fancyhf{}
                        \fancyhead[R]{\slshape \rightmark}
                        \fancyfoot[C]{\thepage\ di\ \pageref{MyLastPage}}
                        \renewcommand{\headrulewidth}{0pt}
                        \renewcommand{\footrulewidth}{0pt}}
                        \pagestyle{fancy}
                        \fancyfoot{}
                        \fancyfoot[C]{\thepage\ di\ \pageref{MyLastPage}}
                        \renewcommand{\headrulewidth}{0pt}
                        \renewcommand{\footrulewidth}{0pt}

                        \usepackage{tikz}
                        \newcommand*\round[1]{\tikz[baseline=(char.base)]{
                        \node[shape=circle,ultra thick,draw,inner sep=5pt] (char) {#1};}}
                        \newcommand{\listofencl}{Elenco degli allegati}
                        \newlistof{allegato}{all}{\listofencl}

                        \newcounter{numallegato}
                        \setcounter{numallegato}{0}
                        \newcommand{\StampaNumeroAllegato}{%
                        \stepcounter{numallegato}
                        \noindent
                        \put(0,790){\makebox[200mm][r]{\textcolor{red}{\Large Doc.~n.~{\LARGE \round{\textbf{\thenumallegato}}}}}}
                        }
                        \newcommand{\addfile}[3]{%
                        \includepdf[pages=-,addtolist={1,allegato,{#3},all:#2},picturecommand*=\StampaNumeroAllegato]{#1.pdf}}

                        \usepackage{hyperref}
                        \begin{document}
                        \section{Prima}
                        \lipsum[1-12]
                        Questa è una prova per verificare
                        se il link al primo documento (cfr.~doc.~n.~\ref{all:ermeneutica}) funzioni correttamente. Come fare in modo che
                        la numerazione fra parentesi sia automatica?

                        Lo stesso dovrebbe essere per il link all'allegato~\ref{all:ornitologia}.

                        Qui andrebbe l'elenco numerato di tutti i documenti allegati.

                        \listofallegato
                        \makeatletter
                        \immediate\write\@auxout{\string\newlabel{MyLastPage}{{}{\thepage}{}{}{}}}%
                        \makeatother
                        \addfile{file_2}{ornitologia}{De ornitologiae}
                        \addfile{file_1}{ermeneutica}{Pillole di ermeneutica}
                        \end{document}`

                      • #88579
                        Up
                        0
                        Down
                        ::


                        La soluzione che mi avete suggerito in questa discussione funziona benissimo. Ho implementato alcune modifiche solo estetiche, assegnando un font “scrittura a mano” al comando “StampaNumeroAllegato”, che quindi diventa
                        `\newenvironment{myfont}{\fontfamily{augie}\selectfont}{\par}
                        \newcommand{\StampaNumeroAllegato}{%
                        \stepcounter{numallegato}
                        \noindent
                        \put(15,819){\makebox[200mm][r]{\textcolor{red}{\Large \begin{myfont}Documento \end{myfont}{\LARGE \round{\textbf{\begin{myfont}\thenumallegato \end{myfont}}}}}}}
                        }`

                        Il punto ora è che vorrei lo stesso effetto “a mano” anche per il cerchio che circonda il numero, che al momento è un cerchio perfetto e che invece mi piacerebbe fosse appunto fatto a mano cioè non ben chiuso e dal tratto variabile proprio come sarebbe un cerchio disegnato a mano intorno al numero. Sapete come potrei ottenere un simile risultato?

                      • #88580
                        Up
                        0
                        Down
                        ::


                        Insisto. Il tradizionale pdfpages, che adottavo prima della soluzione pirotecnica con xparse, mi consentiva, manipolando la sua opzione pages=, di selezionare solo alcune delle pagine totali componenti il pdf. Con xparse, è possibile una cosa simile? grazie

                      • #88581
                        Up
                        0
                        Down
                        ::

                        furbenzio” post=99196Insisto. Il tradizionale pdfpages, che adottavo prima della soluzione pirotecnica con xparse, mi consentiva, manipolando la sua opzione pages=, di selezionare solo alcune delle pagine totali componenti il pdf. Con xparse, è possibile una cosa simile? grazie

                        Si e no!

                        No perché stai facendo un confronto impossibile: xparse non è un pacchetto che include pdf come pdfpages.

                        Si perché xparse è un pacchetto che permette di definire comandi personalizzati, quindi se proprio vuoi ti costruisci un comando di alto livello con i delimitatori che vuoi il quale richiama e svolge le classiche operazioni di pdfpages. Per esercizio ha senso, nella pratica probabilmente no.

                        Ciao
                        Claudio

                      • #88582
                        franen
                        Partecipante
                          Up
                          0
                          Down
                          ::


                          Qui non ha importanza il fatto che si usi xparse o altro, il fatto è che nel tuo documento non usi direttamente il comando [tt]\includepdf[/tt], ma lo fai tramite [tt]\addfile[/tt].
                          Se vedi l’attuale definizione di [tt]\addfile[/tt] vedi che è pensato per includere tutte le pagine di un documento. Se si vuole la possibilità di scegliere quali pagine includere allora serve ridefinire quel comando:
                          `\newcommand{\addfile}[4]{%
                          \includepdf[pages={#1},addtolist={1,allegato,{#4},all:#3},picturecommand*=\StampaNumeroAllegato]{#2.pdf}}` e nel testo avrai:`\addfile{-}{222}{ornitologia}{De ornitologiae}
                          \addfile{1-4}{111}{ermeneutica}{Pillole di ermeneutica}` dove il primo argomento è quello che scriveresti dentro a [tt]\includepdf[/tt] per scegliere quali pagine importare.

                        • #88583
                          Up
                          0
                          Down
                          ::


                          Con questo codice ottengo un risultato quasi soddisfacente.
                          `\documentclass[12pt,twoside]{article}
                          \usepackage[utf8]{inputenc}
                          \usepackage[T1]{fontenc}
                          \usepackage[largesmallcaps,easyscsl]{kpfonts}
                          \usepackage[italian]{babel}
                          \usepackage{lipsum}
                          \usepackage{hyperref}
                          \usepackage{pdfpages}

                          \baselineskip=10mm
                          \usepackage[a4paper, left=2.8cm, right=5.3cm, top=3.4cm, lines=25]{geometry}
                          \AtBeginDocument{\baselineskip=10mm}

                          \topmargin=-10mm
                          \marginparwidth=40mm
                          \marginparsep=5mm

                          \usepackage[letterspace=640]{microtype}
                          \usepackage{pict2e}[2009/06/01]
                          \usepackage{tocloft,xcolor}
                          \cftsetrmarg{0cm}
                          \usepackage{xparse}
                          \usepackage{tikz}
                          \newcommand*\round[1]{\tikz[baseline=(char.base)]{
                          \node[shape=circle,ultra thick,draw,inner sep=2.5pt] (char) {#1};}}
                          \newcommand{\listofencl}{\vspace{-1.3cm}}
                          \newlistof{allegato}{all}{\listofencl}
                          \cftpagenumbersoff{allegato}
                          \renewcommand{\cftallegatoaftersnum}{.}
                          \usepackage{siunitx}
                          \newenvironment{myfont}{\fontfamily{augie}\selectfont}{\par}

                          \newcounter{numallegato}
                          \setcounter{numallegato}{0}
                          \newcommand{\StampaNumeroAllegato}{%
                          \stepcounter{numallegato}
                          \noindent
                          \put(15,819){\makebox[200mm][r]{\textcolor{red}{\Large \begin{myfont}Documento \end{myfont}{\LARGE \round{\textbf{\begin{myfont}\thenumallegato \end{myfont}}}}}}}
                          }

                          \ExplSyntaxOn
                          \clist_new:N \g_attach_files_clist
                          \NewDocumentCommand{\ProcessFiles}{m}
                          {
                          \clist_gclear:N \g_attach_files_clist
                          \clist_gset:Nn \g_attach_files_clist { #1 }
                          \clist_map_inline:Nn \g_attach_files_clist { \_import_files:w ##1? }
                          }

                          \cs_new_protected:Npn \_import_files:w #1! #2! #3?
                          {
                          \includepdf[pages=-,
                          %openright,
                          addtolist={1,allegato,{#3},all:#2},picturecommand*=\StampaNumeroAllegato]{#1.pdf}
                          }
                          \ExplSyntaxOff

                          \begin{document}\errorcontextlines=9

                          \listofallegato

                          \makeatletter
                          \immediate\write\@auxout{\string\newlabel{MyLastPage}{{}{\thepage}{}{}{}}}%
                          \makeatother

                          \ProcessFiles{%
                          cv!cv!Un curriculum
                          }

                          \end{document}
                          `

                          Il problema è che avrei bisogno che tutti gli allegati si aprissero a destra (funzione openright di pdfpage) con il numero cerchiato stampato in alto sulla prima pagina.
                          Se però decommento l’opzione openright, il numero viene stampato su una pagina bianca separata dal testo dell’allegato (e non sulla prima pagina dell’allegato stesso). Dove sbaglio?
                          Grazie
                          Carlo
                          [attachment=1362]cv.pdf[/attachment]

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


                            Vedi se ti piace
                            `\cs_new_protected:Npn \_import_files:w #1! #2! #3?
                            {
                            \cleardoublepage%
                            \includepdf[pages=-,
                            addtolist={1,allegato,{#3},all:#2},picturecommand*=\StampaNumeroAllegato]{#1.pdf}
                            }`

                          • #88585
                            Up
                            0
                            Down
                            ::


                            Grazie; vero, bastava un \cleardoublepage. Ho solo aggiunto al preambolo \usepackage{emptypage} per evitare il numero di pagina nella pagina bianca. Grazie ancora per l’aiuto Franen

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

                        Go to top