Bene.. ho scatenato una maratona 😀
Quello che mi piace della forma è che una volta fatta si è a posto per sempre. Il mio nuovo tentativo farà storcere il naso a qualcuno (per il numero di nuove dimensioni create), ma ci ho impiegato 35 minuti e sinceramente devo ancora impratichirmi su questo argomento. Il bello è che pur programmando male il risultato è altamente personalizzabile…`\documentclass{article}
\usepackage{tikz,lipsum}
\makeatletter
\pgfkeys{/tikz/.cd,
corner size/.initial=10pt,
inner corner size/.initial=5pt,
corner start/.initial=15pt,
corner end/.initial=5pt,
corner up height/.initial=5pt,
corner down height/.initial=15pt,
fine sep/.initial=1.35pt,
}
\newlength\pgf@xd
\newlength\pgf@xe
\newlength\pgf@yf
\newlength\pgf@yg
\newlength\pgf@xh
\newlength\pgf@yh
\newlength\pgf@xi
\newlength\pgf@yi
\pgfdeclareshape{document}{
\inheritsavedanchors[from=rectangle]
\inheritanchorborder[from=rectangle]
\inheritanchor[from=rectangle]{center}
\inheritanchor[from=rectangle]{north}
\inheritanchor[from=rectangle]{north west}
\inheritanchor[from=rectangle]{south}
\inheritanchor[from=rectangle]{west}
\inheritanchor[from=rectangle]{east}
\savedmacro\cornersize{%
\edef\cornersize{\pgfkeysvalueof{/tikz/corner size}}%
}
\savedmacro\innercornersize{%
\edef\innercornersize{\pgfkeysvalueof{/tikz/inner corner size}}%
}
\savedmacro\startcornersize{%
\edef\startcornersize{\pgfkeysvalueof{/tikz/corner start}}%
}
\savedmacro\endcornersize{%
\edef\endcornersize{\pgfkeysvalueof{/tikz/corner end}}%
}
\savedmacro\cornerupheight{%
\edef\cornerupheight{\pgfkeysvalueof{/tikz/corner up height}}%
}
\savedmacro\cornerdownheight{%
\edef\cornerdownheight{\pgfkeysvalueof{/tikz/corner down height}}%
}
\savedmacro\finesep{%
\edef\finesep{\pgfkeysvalueof{/tikz/fine sep}}%
}
% … and possibly more
\backgroundpath{
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
% compute corner of ‘‘flipped page’’
\pgf@xc=\pgf@xb \advance\pgf@xc by-\cornersize
\pgf@yc=\pgf@yb \advance\pgf@yc by-\cornersize
\setlength{\pgf@xd}{\pgf@xb}
\advance\pgf@xd by-\startcornersize
\setlength{\pgf@xe}{\pgf@xb}
\advance\pgf@xe by-\endcornersize
\setlength{\pgf@yf}{\pgf@yb}
\advance\pgf@yf by-\cornerupheight
\setlength{\pgf@yg}{\pgf@yb}
\advance\pgf@yg by-\cornerdownheight
\setlength{\pgf@xh}{\pgf@xb}
\advance\pgf@xh by-\cornersize
\advance\pgf@xh by-\finesep
\setlength{\pgf@yh}{\pgf@yb}
\advance\pgf@yh by-\finesep
\setlength{\pgf@xi}{\pgf@xb}
\advance\pgf@xi by-\finesep
\setlength{\pgf@yi}{\pgf@yb}
\advance\pgf@yi by-\cornersize
\advance\pgf@yi by-\finesep
% construct main path
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} %start
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} % go up
\pgfpathlineto{\pgfpoint{\pgf@xd}{\pgf@yb}} % go straight on untill start corner
\pgfpatharc{90}{0}{\innercornersize}
\pgfpathlineto{\pgfpoint{\pgf@xc}{\pgf@yc}}
\pgfpathlineto{\pgfpoint{\pgf@xe}{\pgf@yc}}
\pgfpatharc{90}{0}{\innercornersize}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
\pgfpathclose
% add little corner
\pgfpathmoveto{\pgfpoint{\pgf@xh}{\pgf@yh}}
\pgfpathlineto{\pgfpoint{\pgf@xi}{\pgf@yi}}
}
}
\makeatother
\begin{document}
\tikzset{document color/.style={top color=cyan!5, bottom color=cyan!20}}
\begin{tikzpicture}
\node[draw,document,document color,minimum height=2cm,text width=1.75cm] (x) {
This is my node
with some text
};
\end{tikzpicture}
\vspace{1cm}
\tikzset{document size/.style={
minimum width=\textwidth,minimum height=0.8\textheight,text width=0.7\textwidth,
corner size=50pt,
inner corner size=25pt,
corner start=75pt,
corner end=25pt,
fine sep/.initial=7pt,
inner sep=2cm,
}}
\begin{tikzpicture}
\node[draw,document,document color,document size] (x) {
\lipsum[1-2]
};
\end{tikzpicture}
\end{document}
` Ecco i risultati; in piccolo:
[attachment=516]Immagine1.jpg[/attachment]
e in grande:
[attachment=518]Immagine_2012-11-16.jpg[/attachment]
Ovviamente si può utilizzare il metodo di Antonio per includere direttamente una pagina in pdf con il pacchetto pdfpages. Ah.. seguendo il suo metodo, per calcolare gli estremi della pagina, potrebbe essere utile sfruttare il pacchetto tikzpagenodes.
Ciao
Claudio