Implementazione gnuplottex con ambiente subfigure

  • Creatore
    Topic
  • #118364
    Up
    0
    Down
    ::


    Salve a tutti,

    ho bisogno di inserire un grafico generato da gnuplot affiancato ad un raster. Sto provando con l’ambiente \subfigure (con cui non ho mai avuto problemi) con un listato del tipo:

    `\documentclass[a4paper,12pt,fleqn]{paper}
    \usepackage[T1]{fontenc} %Codifica Font di Uscita
    \usepackage[utf8]{inputenc} %Codifica Font di Ingresso
    \usepackage[italian]{babel}

    \usepackage{graphicx}
    \usepackage{subfigure}

    \usepackage[shell,subfolder]{gnuplottex}
    \usepackage{color}

    \begin{document}

    \begin{figure}[!hbt]
    \centering
    \subfigure[][]
    {\begin{gnuplot}[terminal=epslatex, terminaloptions={color size 8cm,14cm}]
    plot sin(x)
    \end{gnuplot}}
    \subfigure[][]
    {\includegraphics[width=0.4\textwidth]{figura.png}}
    \end{figure}
    \end{document}`

    ma purtroppo ottengo errori tra cui:
    ! Argument of \verbatim@ has an extra }.\par \end{gnuplot}}
    ! Paragraph ended before \verbatim@ was complete.\par \end{gnuplot}}
    ! Extra }, or forgotten \endgroup. } \end{gnuplot}}
    ! Extra }, or forgotten \endgroup.\@subfloat …use {c@\@captype }\m@ne \fi \egroup \end{gnuplot}}

    e non capisco dove sbaglio 😕 .

    Qualcuno ha qualche idea per risolvere?
    Grazie.

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #118365
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Benvenuto nel forum

        Non ho la più vaga idea del perché non ti funzioni il codice, tuttavia avrei qualche commento da fare.

        a) Perché usi terminal=epslatex, e non terminal=pdf? Può darsi che tu abbia ragioni serie per questa scelta, ma l’unico motivo per il quale epslatex è necessario, è quando devi usare latex-il-programma, che, credo, nessuno oggi usi più se non in rarissime circostanze che oggi non hanno più ragione d’essere. Lamirida de pacchetti esistenti oggi consento di usare pdflatex, xelatex o lualatex, con qualunque tioo fdiimmagine incorporabile dai programmi di composizione del sistema TeX. Siccome non specifichi se stai lavorando con TeX Live o co MiKTeX, lail mio punto interrogativo resta senza risposta.

        b) io non userei gnuplottex, ma da terminale comporrei la figura da tracciare con gnuplot specificando terminal=pdf; ottenuta al figura pdf, oltre ad esaminarla per suo conto per sapere se è corretta, se i font sono a posto, se necessita di un po’ di smarginatura, se le dimensioni naturali della figura son ragionevoli, eccetera, la incorporerei come una normale figura nel documento da comporre.

        c) starie anche attento ad usare i fattori di scala di \includegraphics; in particolare non userei i centimetri di larghezza e altezza di gnuplot, e un fattore di scala (scale=0.4) per l’altro \includegraphics. I fattori di scala per mettere figure affiancate non sono una buona idea perché la oro somma deve essere complessivamante minore di uno, di quanto? dipende da quante sufigure si vogliono mettere in linea; è molto più sicure usare sempre dimensioni esplicite mediante frazioni di \texwith, la larghezza delle gabbia di composizione. quindi se per il diagramam creato con gnuplot usi \includegraphics[width-0.5\textwidth] e per il raster, usi \includegrapchics[width=04\textwidth, sei più o meno sicuro che le due ffigure possono stare assieme affiancato; se non lo stesserom devi diminuire di poco una delle due, ma ci sei quaisi sicuramante con la prima impostazione.

        Ecco, questi sono i miei consigli, e se li segui, anche senza sapere perché ora non ti funzionano, è possibile che tu possa mettere le due immagini affiancate al primo colpo e senza errori.

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


          Ciao.
          Perché non provi pgfplots?
          Può utilizzare gnuplot e il grafico può essere personalizzato in moltissimi modi.
          Oppure puoi utilizzare pgfplots con lualatex e scordarti lo shell escape.
          Come dice il manuale di pgfplot…

          “The differences between \addplot expression and plot gnuplot are:
          • \addplot expression does not require any external programs and requires no additional command
          line options.
          • \addplot expression does not produce a lot of temporary files.
          • \addplot gnuplot uses radians for trigonometric functions while \addplot expression has degrees
          (unless pgf is configured for trig format=rad).
          • \addplot gnuplot is faster than pdflatex. Using lualatex and compat=1.12 (or higher) can
          reach a similar speed.
          • \addplot gnuplot has a larger mathematical library.
          • \addplot gnuplot has a higher accuracy. Note that lualatex and compat=1.12 (or higher) come
          with the same precision.”

          Alla prossima.
          R.

        • #118367
          Up
          0
          Down
          ::

          OldClaudio” post=118812
          a) Perché usi terminal=epslatex, e non terminal=pdf? Può darsi che tu abbia ragioni serie per questa scelta, ma l’unico motivo per il quale epslatex è necessario, è quando devi usare latex-il-programma, che, credo, nessuno oggi usi più se non in rarissime circostanze che oggi non hanno più ragione d’essere. Lamirida de pacchetti esistenti oggi consento di usare pdflatex, xelatex o lualatex, con qualunque tioo fdiimmagine incorporabile dai programmi di composizione del sistema TeX. Siccome non specifichi se stai lavorando con TeX Live o co MiKTeX, lail mio punto interrogativo resta senza risposta.

          – Uso epslatex perchè sulla documentazione è scritto che l’output è migliore, ma in realtà non c’è una ragione specifica potrei provare anche treminal=pdf.
          – Uso TexLive con TexMaker su Mac e compilo con comando pdflatex.

          OldClaudio” post=118812
          b) io non userei gnuplottex, ma da terminale comporrei la figura da tracciare con gnuplot specificando terminal=pdf; ottenuta al figura pdf, oltre ad esaminarla per suo conto per sapere se è corretta, se i font sono a posto, se necessita di un po’ di smarginatura, se le dimensioni naturali della figura son ragionevoli, eccetera, la incorporerei come una normale figura nel documento da comporre.

          È proprio quello che voglio evitare, dover fare avanti è dietro da latex a gnuplot ho da mettere molti grafici simili e così mi sembra un modo più svelto

          Ti ringrazio per le considerazioni fatte al punto c e le terrò presenti.

        • #118368
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Mac + Texmaker? Combinazione sicuramente lecita, ma insolita.
            Avendo installato MacTeX (TexLive + TeXShop e qualche altra facility per Mac, tra le quali TeX Live Utility.app, con la quale gestisco gli aggiornamenti settimanali con la comodità dell’interfaccia tipica del Mac), io uso come editor TeXShop che trovo particolarmente efficace, almeno per il modo che io ho di scrivere i miei file sorgente; Una delle caratteristiche importanti e che apprezzo in modo particolare, è che usa da solo il correttore ortografico giusto a seconda delle lingua in cui è scritto il file sorgente; un’altra caratteristiche è che i creatori di TeXShop hanno inventato le righe magiche (righe di autoconfigurazione) e devo dire che sono formidabili; sono state imitate anche da TeXworks, TeXstudio, Texmaker (tanto per citare alcuni editor multipiattaforma; ce ne sono anche altri specifici per questo o quel sistema operativo) ma non si limitano agli “engine” originali, bensì ogni utente può crearsene anche di propri. Per esempi: nel tuo caso è necessario usare pdflatex con l’opzione –shell-escape; non esiste preconfezionata una versionde di engine con questa opzione preimpostata; bisognerebbe aggiungere questa opzione al comando che TeXstudio o Texmaker invia la sistema operativo, ma poi bisogna ricordarsi di toglierla perché gnuplot non è fra i programmi “sicuri”. Per prudenza è sempre meglio di avere un automatismo che attiva lo shell escape, prorpio per evitare che qualche malware abbia infettato questo o quel programma. I sistemi UNIX come Linux e Mac sono più sicuri dei sistemi WIndows, ma non sono del tutto immuni da malware (in periodo di COVID abbiamo tutti una comprensione migliore del concetto di immunità quindi stiamo o dovremmo stare tutti più attenti).
            Però con TeXShop è possibile definirsi un nuovo engine con l’opzione –shell-escape preimpostata, in modo che quando si vuole comporre con quell’opzione attiva si seleziona quell’engine nella finestrella in alto a sinistra della schermata e premendo il bottone Typeset, la compilazione avviene con quell’engine particolare, tornando da solo poi all’uso del programma privo da shell escape.
            Lo trovo anche utile per scegliere il programma giusto fra bibtex e biber; di default tengo bibtex, ma per i documenti che richiedono bibliografie particolari, imposto la riga magica per scegliere biber, solo per quel particolare documento, semplicemente cliccando Typeset, anche se il gestore bibliografico della finestrella usa il nome bibtex.

            Mi domando, perciò se gli errori che ricevevi erano dovuti alla mancanza dello shell escape, richiesto espressamente dal pacchetto gnuplottex, ma che Texmaker non gestisce.

          • #118369
            Up
            0
            Down
            ::


            Su TexShop non so che dirti sarà sicuramente valido ma io non mi ci trovo molto bene. Per aggirare il probelma dei comandi che uso solo ogni tanto li metto “dentro” al tasto ps2pdf che non uso mai, è artigianale ma funziona.

            Per la possibilità che sia la shell escape il problema lo escludo perchè l’ho messa e poi non dovrei riuscire ad ottenere il grafico nemmeno fuori dall’ambiente subfigure cosa che invece ottengo. Correggetemi se sbaglio.

            Aggiorno la discussione dicendo che ho provato ad usare \subfloat al posto di \subfigure ottenendo gli stessi errori. Provando invece con \subcaption ottengo le due immagini affiancate senza errori di compilazione ma il risultato grafico è davvero pessimo.

            Ho come la sensazione che il prodotto di gnuplottex non voglia finire in un oggetto flottante o qualcosa di simile 😕

          • #118370
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Ma, giusto per sapere, che classe usi? Book?, Report?, Article? Memoir?
              Hai modificato il layout di pagina con geomery o con cose simili?
              Come facciamo a darti una mano se, a parte quella parte di codice che hai iviato con il primo messaggio, non ci dai un esempio minimo compilabile?
              Il disegno di sin(x) non è un problema, ma se la figura raser figura.png, non puoi mandarla, non importa, c’è un pacchetto mwe che dispone di figure fasulle necessarie per replicare i problemi. ma un esempio monimo compilabile, con figura.png sotituita con una delle figure di mwe, non dovrebbe essere difficile da confezionare, allegandolo al tuo prossimo messagio, così ci possiamo cimentare anche noi, e chissà che non se ne esca.

            • #118371
              Up
              0
              Down
              ::


              Ok, scusate pensavo di essere stato esaustivo con il codice messo prima.
              Sto usando la classe paper ma in fututo dovrò usare lo stesso sistema anche per la classe book.
              In questo caso non ho modificato nulla con geometry, ma non escludo che possa essere necessario guadagnare un po’ di margine andando avanti (ho delle tabelle con molte colonne)

              ecco un codice più completo

              `\documentclass[a4paper,12pt,fleqn]{paper}
              \usepackage[T1]{fontenc}
              \usepackage[utf8]{inputenc}
              \usepackage[italian]{babel}
              \usepackage{mwe}

              \usepackage{graphicx}
              \usepackage{subfigure}

              \usepackage[shell,subfolder]{gnuplottex}
              \usepackage{color}

              \begin{document}

              \begin{figure}[!hbt]
              \centering
              \subfigure[][]
              {\begin{gnuplot}[terminal=epslatex, %terminaloptions={color size 8cm,14cm}]
              plot sin(x)
              \end{gnuplot}}
              \subfigure[][]
              {\includegraphics[width=0.4\textwidth]{example-grid-100x100bp}}
              \end{figure}
              \end{document}`

            • #118372
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Credo che l’ambiente gnuplot sia incompatibile con subfig (che dovrebbe essere l’ultima versione disponibile per fare figurine correlate affiancate e con sotto didascalie).
                Lo credo perché il messaggio d’errore fa riferimento a un comando \verbatim@, che lascia intendere che scriva in modo verbatim il suo contenuto in un file per gnuplot; poi all’esecuzione dei comandi di fine ambiente esegue lo shell escape e lancia gnuplot sul file che ha appena scritto; nel codice che metto sotto, se lasci cosè com’è esso traccia il diagramma del seno non affiancato, ma sotto, l’altra figurina (tratta del pacchetto mwe — quella che avevi allegato tu era forse una tua creazione, ma io non ne disponevo — il pacchetto mwe serve proprio per fornire degli esempi di figure riempitive e di testo riempitivo utili per comporre Minimum Working Examples (mwe)). In altre parole l’ambiente gnuplot è fragile e non può stare dentro altri ambienti che trattano ripetitivamente oggetti fragili.
                Infatti se togli i segni di commento dai comandi \subfig e della loro parentesi di chhiusura, in modo che i vari \subfig lavorino, esce l’errore, mentre se lasci i segni di commento dove stanno, il diagramma del seno esce correttamente.
                `% !TEX TS-program = pdfLaTeX-SE
                % !TEX encoding = UTF-8 Unicode
                \documentclass[a4paper,12pt,fleqn]{paper}
                \usepackage[T1]{fontenc}
                \usepackage[utf8]{inputenc}
                \usepackage[italian]{babel}
                \usepackage{mwe}

                \usepackage{graphicx}
                \usepackage{caption,subfig}

                \usepackage[shell,subfolder]{gnuplottex}
                \usepackage{xcolor}

                \begin{document}

                \begin{figure}[!hbt]
                \centering
                %\subfloat{%
                \begin{gnuplot}[terminal=epslatex, terminaloptions=color]
                set key box top left
                set key width 4
                set sample 100
                set xr [-5:5]
                set yr [-1:1]
                set xlabel '$x$'
                set ylabel '$y$'
                plot sin(x) wl lc 1 t '$\sin(x)$'
                \end{gnuplot}
                %}
                %\subfloat{%
                \includegraphics[width=0.4\textwidth]{example-image-a}
                %}
                \end{figure}
                \end{document}
                `Come vedi l’engine pdflatex-SE (dove SE sta per shell escape) è l’ambiente che ho creato per TeXShop per configurarlo solo per la compilazione di questo esempo con l’opzione shett escape attivata. È probabile che così come l’ho scritto non funzioni cone Texmaker (fra Texmaker e TeXstudio, preferisco quest’ultimo, se non altro perché viene aggiornato frequentemente per togliere bug e/o aggiungere altre funzinalità che mancano a Texmaker). Comunque prova a compilare questo codice lascinado i segni di commento dove sono, e vedrai che il diagramma esce correttamente.

                Invece, le dimensioni del diagramma non sono specificate; o se vuoi, non è specificata l’unità di misura del disegno, quindi a priori non sai quanto sia largo il disegno completo; ecco che i miei consigli del punto c) tornano utili.

              • #118373
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Ho appena inviato agli autori di gnuplottex una segnalazione di bug/feature in merito alla fragilità dell’ambiente gnuplot.

                  Vediamo se il messaggio produce qualche effetto.

                  🙂

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

              Go to top