Gnuplot, epslatex e pdflatex

  • Creatore
    Topic
  • #59114
    Up
    0
    Down
    ::


    Salve a tutti,

    sto avendo dei problemi a incorporare dei grafici gnuplot (ottenuti con il terminale epslatex). Ho cercato parecchio in giro, ma non sono riuscito a trovare una soluzione.

    L’errore nella compilazione è il seguente:

    `
    (./turbidimetry.tex)
    Runaway argument?
    {\csname LTb\endcsname \put (1210,720){\makebox (0,0)[r]{\strut {} 90\ETC.
    ! File ended while scanning use of \gplgaddtomacro.

    \par
    l.11 \input{turbidimetry}
    `

    Qui c’è il preambolo del documento che sto compilando

    `\documentclass[a4paper,12pt,twoside,twocolumn]{book}
    \usepackage{makeidx}
    \usepackage[pdftex,table,fixpdftex]{xcolor}
    \usepackage{color}
    \usepackage{cite}
    \usepackage{rotating}
    \usepackage[T1]{fontenc}
    \usepackage[utf8x]{inputenc}
    \usepackage[english]{babel}
    \usepackage{graphicx}
    \usepackage{multirow}
    \usepackage{latexsym}
    \usepackage{lscape}
    \usepackage{xtab}
    \usepackage{nomencl}
    \usepackage{multicol}
    \usepackage{amsfonts}
    \usepackage{amsmath}
    \usepackage{amssymb}
    \usepackage[colorlinks=true,linkcolor=Peach]{hyperref}
    \usepackage[all]{hypcap}
    \usepackage{booktabs}
    \usepackage{tabularx}
    \usepackage{array}
    \usepackage[]{subfigure}
    \usepackage{chemstyle}
    \usepackage{rotating}`

    Qui la parte in cui includo il grafico:

    `\begin{figure}[t]
    \begin{center}
    \input{turbidimetry}
    \end{center}
    \caption{Dependence of normalized (by T(t=0)) turbidimetry from time….. }
    \label{SF-turbidimetry}
    \end{figure}`

    Questo lo script di gnuplot per la creazione del grafico
    `reset
    #set term post eps color enhanced font 'Arial, 16' size 8cm,8cm

    set pointsize 0.6
    set style line 1 lt 1 lw 1 lc rgb 'red' pt 4
    set style line 2 lt 1 lw 1 lc rgb 'blue' pt 6
    set style line 3 lt 1 lw 2 lc rgb 'black' pt 8
    set style line 4 lt 1 lw 1 lc rgb 'green' pt 10
    set style line 5 lt 1 lw 1 lc rgb 'navy' pt 12
    set size square
    set xlabel 'time '
    set ylabel 'normalized transmission [%]'
    set samples 50

    set key outside top
    f1(x) = (a1*exp(-(k1*x)**b1) + c1)/(a1+c1)*100
    f2(x) = (a2*exp(-(k2*x)**b2) + c2)/(a2+c2)*100
    f3(x) = (a3*exp(-(k3*x)**b3) + c3)/(a3+c3)*100
    a1=2.989
    a2=3.057
    a3=4.901
    k1=0.003
    k2=0.007
    k3=0.011
    b1=0.358
    b2=0.437
    b3=0.423
    c1=96.26
    c2=94.229
    c3=91.918

    set terminal epslatex input newstyle color
    set o 'turbidimetry.tex'
    p[][90:101] 'average.2.5-1.bka.2' u ($1+0.0122):($2/(a3+c3)*100):(1.0) smooth cspline w p ls 2 t '2.5:1', f3(x) w l ls 2 t '', 'average.3-1.bka.2' u ($1+0.0122):($2/(a2+c2)*100):(1.0) smooth cspline w p ls 3 t '3:1', f2(x) w l ls 3 t '','average.3.5-1.bka.2' u ($1+0.0122):($2/(a1+c1)*100):(1.0) smooth cspline w p ls 4 t '3.5:1', f1(x) w l ls 3 t '', 'average.15-1.bka.2' u ($1+0.0122):($2/0.995):(1.0) smooth cspline w p ls 5 t '15:1', 'average.2-1.bka.2' u ($1+0.0122):($2/0.95739):(1.0) smooth cspline w p ls 1 t '2:1'

    unset output`

    Invece di unset output, ho provato anche con set out, set term png, per andare sul sicuro che l’eps fosse definitivamente “chiuso”, ma il risultato non cambia.

    Ho anche provato a mettere semplicemente un f(x) = sin(x), dove la curva è di colore rosso, e ha funzionato senza problemi…

    Ringrazio in anticipo per qualsiasi aiuto… e auguro un buon finesettimana.

    PS: compilo in pdflatex, quindi prima di compilare comunque converto il file eps in pdf con epstopdf.

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #59115
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::

        Salve a tutti,

        sto avendo dei problemi a incorporare dei grafici gnuplot (ottenuti con il terminale epslatex). Ho cercato parecchio in giro, ma non sono riuscito a trovare una soluzione.

        L’errore nella compilazione è il seguente:

        `
        (./turbidimetry.tex)
        Runaway argument?
        {\csname LTb\endcsname \put (1210,720){\makebox (0,0)[r]{\strut {} 90\ETC.
        ! File ended while scanning use of \gplgaddtomacro.

        \par
        l.11 \input{turbidimetry}
        `

        Qui c’è il preambolo del documento che sto compilando

        `\documentclass[a4paper,12pt,twoside,twocolumn]{book}
        \usepackage{makeidx}
        \usepackage[pdftex,table,fixpdftex]{xcolor}
        \usepackage{color}
        \usepackage{cite}
        \usepackage{rotating}
        \usepackage[T1]{fontenc}
        \usepackage[utf8x]{inputenc}
        \usepackage[english]{babel}
        \usepackage{graphicx}
        \usepackage{multirow}
        \usepackage{latexsym}
        \usepackage{lscape}
        \usepackage{xtab}
        \usepackage{nomencl}
        \usepackage{multicol}
        \usepackage{amsfonts}
        \usepackage{amsmath}
        \usepackage{amssymb}
        \usepackage[colorlinks=true,linkcolor=Peach]{hyperref}
        \usepackage[all]{hypcap}
        \usepackage{booktabs}
        \usepackage{tabularx}
        \usepackage{array}
        \usepackage[]{subfigure}
        \usepackage{chemstyle}
        \usepackage{rotating}`

        Qui la parte in cui includo il grafico:

        `\begin{figure}[t]
        \begin{center}
        \input{turbidimetry}
        \end{center}
        \caption{Dependence of normalized (by T(t=0)) turbidimetry from time….. }
        \label{SF-turbidimetry}
        \end{figure}`

        Questo lo script di gnuplot per la creazione del grafico
        `reset
        #set term post eps color enhanced font 'Arial, 16' size 8cm,8cm

        set pointsize 0.6
        set style line 1 lt 1 lw 1 lc rgb 'red' pt 4
        set style line 2 lt 1 lw 1 lc rgb 'blue' pt 6
        set style line 3 lt 1 lw 2 lc rgb 'black' pt 8
        set style line 4 lt 1 lw 1 lc rgb 'green' pt 10
        set style line 5 lt 1 lw 1 lc rgb 'navy' pt 12
        set size square
        set xlabel 'time '
        set ylabel 'normalized transmission [%]'
        set samples 50

        set key outside top
        f1(x) = (a1*exp(-(k1*x)**b1) + c1)/(a1+c1)*100
        f2(x) = (a2*exp(-(k2*x)**b2) + c2)/(a2+c2)*100
        f3(x) = (a3*exp(-(k3*x)**b3) + c3)/(a3+c3)*100
        a1=2.989
        a2=3.057
        a3=4.901
        k1=0.003
        k2=0.007
        k3=0.011
        b1=0.358
        b2=0.437
        b3=0.423
        c1=96.26
        c2=94.229
        c3=91.918

        set terminal epslatex input newstyle color
        set o 'turbidimetry.tex'
        p[][90:101] 'average.2.5-1.bka.2' u ($1+0.0122):($2/(a3+c3)*100):(1.0) smooth cspline w p ls 2 t '2.5:1', f3(x) w l ls 2 t '', 'average.3-1.bka.2' u ($1+0.0122):($2/(a2+c2)*100):(1.0) smooth cspline w p ls 3 t '3:1', f2(x) w l ls 3 t '','average.3.5-1.bka.2' u ($1+0.0122):($2/(a1+c1)*100):(1.0) smooth cspline w p ls 4 t '3.5:1', f1(x) w l ls 3 t '', 'average.15-1.bka.2' u ($1+0.0122):($2/0.995):(1.0) smooth cspline w p ls 5 t '15:1', 'average.2-1.bka.2' u ($1+0.0122):($2/0.95739):(1.0) smooth cspline w p ls 1 t '2:1'

        unset output`

        Invece di unset output, ho provato anche con set out, set term png, per andare sul sicuro che l’eps fosse definitivamente “chiuso”, ma il risultato non cambia.

        Ho anche provato a mettere semplicemente un f(x) = sin(x), dove la curva è di colore rosso, e ha funzionato senza problemi…

        Ringrazio in anticipo per qualsiasi aiuto… e auguro un buon finesettimana.

        PS: compilo in pdflatex, quindi prima di compilare comunque converto il file eps in pdf con epstopdf.

        Ho letto il tuo codice, ecco alcuni suggerimenti:
        1 – se scrivi in inglese è inutile caricare babel
        2 – carica prima di tutto i pacchetti (in questo ordine) fontenc, inputenc
        3 – non usare l’ambiente center per centrare gli oggetti flottanti ma la macro \centering da inserire subito dopo \begin{figure}

        Per il problema, dovresti mostrare il codice che si trova all’interno del file che carichi con \input all’interno dell’ambiente flottante (a parte il fatto che ciò è inusuale).

        In pratica stai inserendo un normalissimo pdf con \includegraphics.
        Ciao.
        Ps. Ma ti trovi veramente a Berlino?

      • #59116
        Up
        0
        Down
        ::


        grazie per i suggerimenti.

        Questo il codice del file .tex generato da gnuplot.
        `% GNUPLOT: LaTeX picture with Postscript
        \begingroup
        \makeatletter
        \providecommand\color[2][]{%
        \GenericError{(gnuplot) \space\space\space\@spaces}{%
        Package color not loaded in conjunction with
        terminal option `colourtext'%
        }{See the gnuplot documentation for explanation.%
        }{Either use 'blacktext' in gnuplot or load the package
        color.sty in LaTeX.}%
        \renewcommand\color[2][]{}%
        }%
        \providecommand\includegraphics[2][]{%
        \GenericError{(gnuplot) \space\space\space\@spaces}{%
        Package graphicx or graphics not loaded%
        }{See the gnuplot documentation for explanation.%
        }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
        \renewcommand\includegraphics[2][]{}%
        }%
        \providecommand\rotatebox[2]{#2}%
        \@ifundefined{ifGPcolor}{%
        \newif\ifGPcolor
        \GPcolortrue
        }{}%
        \@ifundefined{ifGPblacktext}{%
        \newif\ifGPblacktext
        \GPblacktexttrue
        }{}%
        % define a \g@addto@macro without @ in the name:
        \let\gplgaddtomacro\g@addto@macro
        % define empty templates for all commands taking text:
        \gdef\gplbacktext{}%
        \gdef\gplfronttext{}%
        \makeatother
        \ifGPblacktext
        % no textcolor at all
        \def\colorrgb#1{}%
        \def\colorgray#1{}%
        \else
        % gray or color?
        \ifGPcolor
        \def\colorrgb#1{\color[rgb]{#1}}%
        \def\colorgray#1{\color[gray]{#1}}%
        \expandafter\def\csname LTw\endcsname{\color{white}}%
        \expandafter\def\csname LTb\endcsname{\color{black}}%
        \expandafter\def\csname LTa\endcsname{\color{black}}%
        \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
        \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
        \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
        \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
        \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
        \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
        \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
        \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
        \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
        \else
        % gray
        \def\colorrgb#1{\color{black}}%
        \def\colorgray#1{\color[gray]{#1}}%
        \expandafter\def\csname LTw\endcsname{\color{white}}%
        \expandafter\def\csname LTb\endcsname{\color{black}}%
        \expandafter\def\csname LTa\endcsname{\color{black}}%
        \expandafter\def\csname LT0\endcsname{\color{black}}%
        \expandafter\def\csname LT1\endcsname{\color{black}}%
        \expandafter\def\csname LT2\endcsname{\color{black}}%
        \expandafter\def\csname LT3\endcsname{\color{black}}%
        \expandafter\def\csname LT4\endcsname{\color{black}}%
        \expandafter\def\csname LT5\endcsname{\color{black}}%
        \expandafter\def\csname LT6\endcsname{\color{black}}%
        \expandafter\def\csname LT7\endcsname{\color{black}}%
        \expandafter\def\csname LT8\endcsname{\color{black}}%
        \fi
        \fi
        \setlength{\unitlength}{0.0500bp}%
        \begin{picture}(7200.00,5040.00)%
        \gplgaddtomacro\gplbacktext{%
        \csname LTb\endcsname%
        \put(1210,720){\makebox(0,0)[r]{\strut{} 90}}%
        \put(1210,1455){\makebox(0,0)[r]{\strut{} 92}}%
        \put(1210,2189){\makebox(0,0)[r]{\strut{} 94}}%
        \put(1210,2924){\makebox(0,0)[r]{\strut{} 96}}%
        \put(1210,3658){\makebox(0,0)[r]{\strut{} 98}}%
        \put(1210,4393){\makebox(0,0)[r]{\strut{} 100}}%
        \put(1342,500){\makebox(0,0){\strut{} 0}}%
        \put(1847,500){\makebox(0,0){\strut{} 20}}%
        \put(2352,500){\makebox(0,0){\strut{} 40}}%
        \put(2857,500){\makebox(0,0){\strut{} 60}}%
        \put(3361,500){\makebox(0,0){\strut{} 80}}%
        \put(3866,500){\makebox(0,0){\strut{} 100}}%
        \put(4371,500){\makebox(0,0){\strut{} 120}}%
        \put(4876,500){\makebox(0,0){\strut{} 140}}%
        \put(5381,500){\makebox(0,0){\strut{} 160}}%
        \put(440,2740){\rotatebox{90}{\makebox(0,0){\strut{}normalized transmission [%]}}}%
        \put(3361,170){\makebox(0,0){\strut{}time }}%
        }%
        \gplgaddtomacro\gplfronttext{%
        \csname LTb\endcsname%
        \put(6239,4650){\makebox(0,0)[r]{\strut{}2.5:1}}%
        \csname LTb\endcsname%
        \put(6239,4430){\makebox(0,0)[r]{\strut{}3:1}}%
        \csname LTb\endcsname%
        \put(6239,4210){\makebox(0,0)[r]{\strut{}3.5:1}}%
        \csname LTb\endcsname%
        \put(6239,3990){\makebox(0,0)[r]{\strut{}15:1}}%
        \csname LTb\endcsname%
        \put(6239,3770){\makebox(0,0)[r]{\strut{}2:1}}%
        }%
        \gplbacktext
        \put(0,0){\includegraphics{turbidimetry}}%
        \gplfronttext
        \end{picture}%
        \endgroup`

        All’inizio dice:

        \GenericError{(gnuplot) \space\space\space\@spaces}{%
        Package color not loaded in conjunction with
        terminal option `colourtext’%
        }{See the gnuplot documentation for explanation.%
        }{Either use ‘blacktext’ in gnuplot or load the package
        color.sty in LaTeX.}%

        ma io non ho testo colorato nel grafico, e nel documento latex, il pacchetto color è caricato… Uffa…

        PS: si, ormai vivo da quasi due anni nella meravigliosa Berlino.

      • #59117
        Up
        0
        Down
        ::


        Lo stesso errore comunque c’è anche nel file tex di prova… e li la compilazione non mi da alcun errore…

        Saluti e buona domenica.

      • #59118
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::


          Dimenticavo di dirti che il paccheto hyperref va caricato per ultimo.

          Se leggi attentamente il listato preparato da Gnuplot ti accorgi che contiene macro che normalmente non dovrebbero esserci come ad esempio le definizione con \providecommand.
          Inoltre alcune definizioni sono assai strane come quelle fatte con \csname.

          Ma la cosa che probabilmente produce l’errore è l’uso di macro con il carattere @ che in un sorgente LaTeX è un carattere “riservato” che viene utilizzato per creare comandi “privati” nei pacchetti come una sorta di namespace. Questo fa pensare che gnuplot generi codice non utilizzabile direttamente dall’utente e che quindi tu stia impiegando una procedura non corretta in gnuplot.

          Se includi il codice direttamente nel tuo sorgente succede che il carattere @ viene visto come carattere non regolare.
          Prova ad includere il comando \input{nomefile.tex} tra i comandi \makeatletter e \makeatother, così:
          `
          \makeatletter
          \input{nomefile.tex}
          \makeatother`

          ma ti ripeto deve esserci qualcosa di sbagliato nel modo in cui utilizzi gnuplot.
          Buona domenica anche a te.
          OT. ho visitato Berlino nel 86 quando era ancora divisa in est ed ovest e ne ho un ricordo particolarissimo.

        • #59119
          Up
          0
          Down
          ::


          Purtroppo il risultato non cambia… comunque si, ci deve essere qualcosa che non gli garba nello script di gnuplot… Proverò a commentare pezzi, per vedere dove sta l’errore… Grazie comunque per i suggerimenti.

          OT: Ancora oggi, dopo vent’anni dalla riunificazione, è una città estremamente variegata, viva, dove chiunque può trovare quel che gli più gli piace… E in continuo cambiamento… cambia aspetto in continuazione, anche questo mi affascina.

        • #59120
          admin
          Amministratore del forum
            Up
            0
            Down
            ::

            Purtroppo il risultato non cambia… comunque si, ci deve essere qualcosa che non gli garba nello script di gnuplot… Proverò a commentare pezzi, per vedere dove sta l’errore… Grazie comunque per i suggerimenti.

            OT: Ancora oggi, dopo vent’anni dalla riunificazione, è una città estremamente variegata, viva, dove chiunque può trovare quel che gli più gli piace… E in continuo cambiamento… cambia aspetto in continuazione, anche questo mi affascina.

            L’errore sta nel fatto che usi il simbolo “%” in gnuplot, che in TeX è un commento, che in effetti commenta diverse parentesi graffe che così non chiudono quelle aperte. Ci sono arrivato perché il messaggio d’errore diceva:

            I suspect you have forgotten a `}’, causing me
            to read past where you wanted me to stop.
            I’ll try to recover; but if the error is serious,
            you’d better type `E’ or `X’ now and fix your file.

            Puoi cambiare, nel file turbidimetry.tex, la riga
            `\put(258,2739){\rotatebox{-270}{\makebox(0,0){\strut{}normalized transmission [color=red]%[/color]}}}%`
            in `\put(258,2739){\rotatebox{-270}{\makebox(0,0){\strut{}normalized transmission [color=blue]\%[/color]}}}%`
            e tutto dovrebbe essere al suo posto, oppure nel codice di gnuplot scrivi direttamente \%.

            Sul tuo preambolo c’è qualche considerazione da fare:
            1. l’opzione twoside è predefinita della classe book;
            2. amsmath richiama automaticamente gli altri della sua famiglia (meglio attendendere conferme);
            3. subfigure è obsoleto, meglio subfig;
            4. caricare per primi i pacchetti come indicato da robitex.

            Un’altra considerazione concedimela sulle unità di misura: non si deve mai usare le doppie quadre per indicare le unità di misura, al massimo le tonde.

            Ciao
            Orlando

          • #59121
            Up
            0
            Down
            ::


            Grazie mille, funziona!

            E grazie anche per gli altri suggerimenti… Per quanto riguarda le unità di misura, le indicherò con il segno di divisione… soprattutto per il fatto che ho qualche grafico in cui riporto il logaritmo di una proprietà, e devi quindi mettere le unità dentro… mi spiego:
            ln(I(q)/cm^-1)
            così anche il logaritmo è felice.

            Ultimo problemino, il grafico, così come anche quello di prova, prendono più spazio del dovuto… e un pezzo di grafico va oltre la pagina… devo in qualche modo mettere un box intorno?

            E grazie ancora per l’aiuto,

            Leo

          • #59122
            admin
            Amministratore del forum
              Up
              0
              Down
              ::

              Grazie mille, funziona!

              E grazie anche per gli altri suggerimenti… Per quanto riguarda le unità di misura, le indicherò con il segno di divisione… soprattutto per il fatto che ho qualche grafico in cui riporto il logaritmo di una proprietà, e devi quindi mettere le unità dentro… mi spiego:
              ln(I(q)/cm^-1)
              così anche il logaritmo è felice.

              Ultimo problemino, il grafico, così come anche quello di prova, prendono più spazio del dovuto… e un pezzo di grafico va oltre la pagina… devo in qualche modo mettere un box intorno?

              E grazie ancora per l’aiuto,

              Leo

              Non saprei. Forse è meglio usare l’ambiente figure* che mette la figura centrata tra le due colonne.
              Altra cosa: se scrivi in due colonne con l’opzione twocolumn, perché carichi multicol (che restituisce un warning)?

              Ciao
              Orlando

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

          Go to top