- Questo topic ha 24 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 1 mese fa da
Carlo Marmo.
-
CreatoreTopic
-
4 Settembre 2013 alle 21:07 #88561::
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. -
CreatoreTopic
-
AutoreRisposte
-
-
5 Settembre 2013 alle 5:34 #88562::
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}`
-
6 Settembre 2013 alle 21:27 #88563::
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}`
-
7 Settembre 2013 alle 14:21 #88564::
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.
-
7 Settembre 2013 alle 15:09 #88565::
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
-
7 Settembre 2013 alle 21:20 #88566::
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.
FranIn 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?
-
8 Settembre 2013 alle 4:40 #88567::
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
-
8 Settembre 2013 alle 8:54 #88568::
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.
-
8 Settembre 2013 alle 11:59 #88569::
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
-
8 Settembre 2013 alle 17:09 #88570::
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.
-
8 Settembre 2013 alle 19:26 #88571
-
15 Settembre 2013 alle 8:38 #88572
-
16 Settembre 2013 alle 15:13 #88573::
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}`
-
17 Settembre 2013 alle 11:19 #88574::
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}`
-
18 Settembre 2013 alle 21:03 #88575
-
19 Settembre 2013 alle 4:29 #88576::
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
-
28 Dicembre 2013 alle 17:20 #88577::
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
-
30 Dicembre 2013 alle 8:56 #88578::
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}`
-
23 Dicembre 2014 alle 21:39 #88579::
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?
-
9 Gennaio 2015 alle 16:37 #88580
-
10 Gennaio 2015 alle 13:37 #88581::
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
-
12 Gennaio 2015 alle 6:32 #88582::
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.
-
16 Luglio 2015 alle 16:33 #88583::
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. -
17 Luglio 2015 alle 7:00 #88584
-
17 Luglio 2015 alle 8:00 #88585
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.