Re: Lunghi tempi di compilazione con PGFPLOTS

#82633
robitex
Amministratore del forum
    Up
    0
    Down
    ::


    Ciao,
    ho fatto una prova ed ha funzionato alla perfezione. Mi è bastato solo leggere il manuale di pgf (lo puoi aprire al volo dando in console il comando texdoc pgf), alla pagina 343, capitolo 32.
    Ti riporto un codice di esempio minimo:
    `\documentclass{article}
    \usepackage{lmodern}
    \usepackage{pgfplots}
    \usepackage{siunitx}
    \usetikzlibrary{external}
    \tikzexternalize % activate !

    \usepgflibrary{arrows}

    \begin{document}
    Qui abbiamo due grafici tratti dall'articolo su pgfplots di De Marco/Giacomelli apparso su ArsTeXnica. Il primo grafico della figura~\ref{plotOne} è una funzione interessante, come anche il grafico della figura~\ref{plotTwo}.

    \begin{figure}
    \centering
    \begin{tikzpicture}
    \begin{axis}[
    % etichette del grafico
    title={La funzione $y=\sin^2 x$},
    xtick={1.5708,3.1416,4.7124,6.2832},
    xticklabels={$\frac{\pi}{2}$,
    $\pi$,$\frac{3\pi}{2}$,$2\pi$},
    ytick={0.5,1},yticklabels={$1/2$,$1$},
    grid=major,
    % dominio 2D
    domain=0:2*pi,
    xmin=0,xmax=6.85,
    ymin=0, ymax=1.2,
    samples=100,
    % assi
    axis x line=bottom,
    axis y line=left,
    every outer x axis line/.append style=
    {-open triangle 90},
    every outer y axis line/.append style=
    {-open triangle 90},
    % dimensioni tela
    width=8cm, height=4.5cm,
    clip=false
    ]
    \addplot {sin(deg(x))^2};
    \node at (axis description cs:0,-0.125) {$0$};
    \node at (axis description cs:0.98,-0.15) {$x$};
    \node at (axis description cs:-0.06,0.95) {$y$};
    \end{axis}
    \end{tikzpicture}
    \caption{Una funzione per lo studio di funzione.}
    \label{plotOne}
    \end{figure}

    \begin{figure}
    \centering
    \begin{tikzpicture}
    % defining personal drawing style
    \pgfplotsset{sl/.style={line width=1pt}}

    \begin{axis}[
    % etichette del grafico
    tick label style={font=\scriptsize},
    xlabel={$T$ (s)},
    ylabel={$S_e/g$},
    xtick={0,0.5,…,3.0},
    grid=major,
    % linee di plottaggio
    no markers,
    % dominio 2D
    smooth,
    xmin=0, xmax=3.00,
    ymin=0, ymax=0.55,
    % dimensioni tela
    width=13cm,
    height=8cm,
    % variabile nelle espressioni: periodo T
    variable=\T
    ]

    \newcommand\spettro[6]{
    \addplot
    {#2*1.10*#3*(T/#4+(1/#3)*(1-T/#4))}
    (current plot end)–(100*#5,1000*#2*1.10*#3);
    \fill (current plot end) circle [radius=0.5pt];
    \addplot {#2*1.10*#3*#5/T};
    \fill (current plot begin) circle [radius=0.5pt];
    \addplot {#2*1.10*#3*#5*#6/T^2};
    \fill (current plot begin) circle [radius=0.5pt];
    }

    \spettro{red}{0.19475}{2.379}{0.099}{0.298}{2.379}% slc
    \spettro{blue}{0.15182}{2.402}{0.096}{0.289}{2.207}% slv
    \spettro{orange}{0.06107}{2.484}{0.084}{0.251}{1.844}% sld
    \spettro{green}{0.04873}{2.462}{0.080}{0.239}{1.795}% slo

    % legenda
    \legend{\textsc{slc},,,
    \textsc{slv},,,
    \textsc{sld},,,
    \textsc{slo},,,}
    % add text info
    \draw (axis cs:2.5,0.53) node

    {\scriptsize Sito: Carrara (MS)};
    \draw (axis cs:2.5,0.50) node

    {\scriptsize Latitudine $\varphi=\ang{44;5;4}$};
    \draw (axis cs:2.5,0.47) node

    {\scriptsize Longitudine $\lambda=\ang{10;6;16}$};
    \draw (axis cs:2.5,0.44) node

    {\scriptsize Categoria di suolo: A};
    \draw (axis cs:2.5,0.41) node

    {\scriptsize Categoria topografica T3 ($S_\mathrm{T}=1{,}10$)};
    \end{axis}
    \end{tikzpicture}
    \caption{Uno spettro per la progettazione antisismica.}
    \label{plotTwo}
    \end{figure}

    \end{document}
    `

    Il codice va compilato con l’opzione -shell-escape: apri una finestra di console (o di terminale), imposta la directory di lavoro a quella dove conservi il sorgente con il comando cd nomedir, poi dai il comando pdflatex -shell-escape nomesorgente.
    A questo punto vengono creati i singoli file pdf che vanno rigenerati solo se cambiano allo stesso modo.
    Nelle compilazioni successive, invece di eseguire il codice dei grafici, verrà eseguito quello per inserire il file pdf corrispondente come immagine.
    Ti segnalo che se non ti sono chiari i modi per dare i comandi da console, basta leggere (rapidamente) la guida tematica alla riga di comando, di un noto autore. Lì è spiegata anche la questione dell’opzione -shell-escape.
    In pratica, questa libreria di TikZ fa quello che intendevo quando ti ho parlato di uno script automatico, ma senza alterare il file sorgente.
    Un saluto.
    R.

    Go to top