Compilare con pacchetto feynmf

  • Creatore
    Topic
  • #94061
    Up
    0
    Down
    ::


    Salve a tutti. Sto provando ad utilizzare il pacchetto feynmf per la prima volta. Tanto per fare una prova o semplicemente copiato e incollato il seguente codice che ho trovato sulla documentazione originale:

    `\begin{fmffile}{diagram}
    \begin{fmfgraph}(40,25)
    \fmfleft{i1,i2}
    \fmfright{o1,o2}
    \fmf{fermion}{i1,v1,o1}
    \fmf{fermion}{i2,v2,o2}
    \fmf{photon}{v1,v2}
    \end{fmfgraph}
    \end{fmffile}`

    Ho ovviamente aggiunto il pacchetto ma, tuttavia, non riesco a compilare. Sapete spiegarmi quale procedure devo seguire?

    Grazie

Visualizzazione 11 filoni di risposte
  • Autore
    Risposte
    • #94062
      Up
      0
      Down
      ::


      Premesso che non conosco per niente METAFONT e METAPOST(sono abituato a utilizzare TiKZ e mi trovo bene :D) se leggi la guida il paragrafo 2.3 scrive che, dopo aver compilato con latex, devi compilare con METAFONT e poi con METAPOST. Dovrebbe esserci il tasto apposito sul tuo editor, se è latex-friendly. Prova a compilare normalmente e poi a compilare con il comando METAPOST da edito o usando i comandi descritti nel paragrafo da shell.

    • #94063
      Up
      0
      Down
      ::


      Si ho già provato. Il problema è che, da quello che ho capito io, la prima compilazione di Latex dovrebbe produrre un file .mp che poi va a sua volta compilato da shell. A questo punto bisognerebbe nuovamente compilare con Latex. A però è proprio la prima compilazione che non va a buon fine ma si interrompe a metà dell’opera.

    • #94064
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Il prblema è che il pacchetto feynMF e anche il pacchetto feynMP sono del 1996, vecchi come il “cucco”. Allora pdflatex non esisteva ancora.

        bisogna estrapolare quanto scritto nella guida e predisporre un file come il seguente:`% !TEX TS-program = pdflatex
        % !TEX encoding = UTF-8 Unicode

        \documentclass{article}

        \usepackage{feynmp}
        \usepackage{graphicx}
        \DeclareGraphicsRule{*}{mps}{*}{}

        \begin{document}

        \unitlength=1mm

        \begin{fmffile}{diagram}
        \begin{fmfgraph}(40,25)
        \fmfleft{i1,i2}
        \fmfright{o1,o2}
        \fmf{fermion}{i1,v1,o1}
        \fmf{fermion}{i2,v2,o2}
        \fmf{photon}{v1,v2}
        \end{fmfgraph}
        \end{fmffile}

        \end{document}`
        Bisogna cioè aggiungere la specifica di caricare il pacchetto graphicx, e bisogna definire una regola per trattare i file in uscita da metapost in un modo che funzioni. Nella fattispecie visto che il codice è vecchissimo, l’uscita del file metapost ha un’estensione numerica; nel mio/tuo caso si chiama diagram.1 e quel valore “1” è cablato nel codice che lo genera. Perciò bisognerebbe dirgli di usare l’estensione mps che viene capita da pdflatex, ma il pacchetto feynMP se anche avesse quell’estensione la filtrerebbe come estensione non conosciuta e emetterebbe il messaggio diagram.1 nont found.

        Percìò bisogna dire che ogni estensione diversa da quelle che già conosce (l’asterisco nel primo argomento del comando \DeclareGraphicsRulle) va trattato come un file mps (secondo argomento) e non occorre specificare la scatola circoscritta , il bounding box, (terzo argomento) e non bisogna passarlo attraverso nessun programma preliminare (quarto argomento). \DeclareGraphicsRule è un comando descritto nella documentazione del pacchetto graphicx da leggere con texdoc grfguide dato da terminale.

        Fatto ciò, bisogna compilare con pdflatex; quindi clicco sul pulsante del mio editor per compilare con pdflatex, poi csempre con l’editor seleziono il file diagram.mp per aprirlo con lo stesso editor, ma questa volata clicco cosul pusante metapost; terminato il lavoro di metapost, circa un secondo, torno sulla festra dell’editor che mi mostra il file sorgente, riclicco sul bottone pdflatex, et voila, ecco il diagramma di Feynmann a posto.

        Peccato che senza specificare il valore di \unitlength sia microscopico; infatti le dimensioni di 40 per 25 implicano l’unità di misura \unitlength che di default vale 1pt; conviene quindi mettere \setlength{\unitlength}{1mm} e il diagramma esce in formato decente. Invece di 1mm si pùo mettere qualunque altra cosa.

        Capisco che volevi solo provare questo pacchetto, ma come vedi anche se lo si può usare, non è molto conveniente; questo a causa della sua intrinseca “vecchiaia”; probabilmente l’autore non ha nessun interesse a modificarlo e aggiornarlo, cosa che non richiederebbe un grosso sforzo, ma il codice che egli usa è delicato e vecchiotto, quindi io non ci metterei le mani; lui se lo volesse fare lo farebbe in quatrro e quattr’otto. Si tratta solo di verificare quale programma si sta usando latex, pdflatex, xwlatex, lualatex,…, e attribuire il nome del file di uscita della compilazione metaposta con il numero che fa parte del nome e l’estensione mps: diagram-1.mps, invece di diagram.1 — metapost è capace di farlo, mnasta che il suo codice sorgente lo psefichi.

        PS: Ho usato metapost, perché produce il file in linguaggio PostScript semplificato in modo diretto; con metafont bisogna fare dei giri interminabili; inoltre il mio TeXShop, l’editor, ha il bottone per eseguire metapost (giustamente) e non ha il bottone per eseguire metafont (per me che talvolta disegno font, questo è un peccato, ma ne posso fare tranquillamente a meno)

      • #94065
        Up
        0
        Down
        ::


        Usate il pacchetto [tt]feynmp-auto[/tt] e vivrete felici 🙂

      • #94066
        Up
        0
        Down
        ::


        Io è un po’ che giro tra diversi pacchetti per disegnare grafici di Feynman. Prima usavo Axodraw con il quale onestamente mi trovo molto bene, però essendo pure quello vecchissimo ora mi crea problemi con i file immagine che mi produce Mathematica. Allora sono passato a feynmf/feynmp. Ora proverò feynmp-auto, è recente?
        Altrimenti mi adatterò a passare tutte le istruzioni necessarie a feynmp.

      • #94067
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          feynmp-auto è del 2013 ed è stato scritto da Enrico Gregorio. Ci puoi contare che funzioni bene.

        • #94068
          Up
          0
          Down
          ::

          einj” post=93643Io è un po’ che giro tra diversi pacchetti per disegnare grafici di Feynman. Prima usavo Axodraw con il quale onestamente mi trovo molto bene, però essendo pure quello vecchissimo ora mi crea problemi con i file immagine che mi produce Mathematica. Allora sono passato a feynmf/feynmp. Ora proverò feynmp-auto, è recente?
          Altrimenti mi adatterò a passare tutte le istruzioni necessarie a feynmp.

          Il pacchetto feynmp-auto è solo un’aggiunta a feynmp che, a sua volta, accetta la stessa sintassi di feynmf. La differenza fra i due è nell’uscita: un file [tt].mp[/tt] per il primo e [tt].mf[/tt] per il secondo.

          Al giorno d’oggi feynmp è più conveniente e più maneggevole. Il pacchetto feynmp-auto aggiunge la compilazione automatica del file Metapost, così, dalla seconda compilazione, il grafico viene incluso da sé. La seconda compilazione è necessaria solo quando si modifica un grafico o se ne aggiunge uno, allo stesso modo di come accade per [tt]\label[/tt] e [tt]\ref[/tt] o per [tt]\cite[/tt].

          Ciao
          Enrico

        • #94069
          Up
          0
          Down
          ::


          Scusate se continuo a rompere, ma proprio non riesco a farlo funzionare. Quello che ho fatto è aggiungere il paccetto feynmp-auto come qualsiasi altro pacchetto. Da quello che ho capito al suo interno dovrebbero già essere implementati tutti i comandi necessari per far girare l’originario pacchetto feynmp. A questo punto aggiungo le seguenti righe di codice, giusto per fare una prova:

          `\begin{fmffile}{pippo}
          \begin{fmfgraph*}(40,30) \fmfpen{thick}
          \fmfleft{i1,i2} \fmfright{o1,o2}
          \fmf{fermion}{i1,v1,o1} \fmf{fermion}{i2,v2,o2}
          \fmf{photon,label=$q$}{v1,v2} \fmfdot{v1,v2}
          \end{fmfgraph*}
          \end{fmfile}
          `

          Compilo utilizzando PdfLatex conTexShop e quello che ottengo é:

          `./HQET.tex:193: Incomplete \iffalse; all text was ignored after line 193.

          \fi
          l.193 \begin{fmffile}{pippo}

          ?`

          Sto facendo qualcosa di molto stupido. Avete idea di cosa? 🙁

        • #94070
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Controlla il mio codice:`% !TEX TS-program = pdflatex
            % !TEX encoding = UTF-8 Unicode

            \documentclass{article}

            \usepackage{feynmp-auto}

            % Il pacchetto feynmp-auto chiama il pacchetto originale feynmp e definisce da solo
            % la graphic rule per gli output di metapost; lancia l'esecuzione di metapost,
            % e ne converte l'output con MP2PDF di ConTeXt. Evita di riconvertire il file
            % ottenuto se il file .mp non è stato modificato dall'ultimo run.
            %
            % In ogni caso bisogna eseguire pdflatex due volte.

            \usepackage{graphicx}
            %\DeclareGraphicsRule{*}{mps}{*}{}% serve solo sen NON si usa feynmp-auto

            \begin{document}

            \unitlength=1mm

            \begin{fmffile}{diagram}
            \begin{fmfgraph*}(40,30)
            \fmfpen{thick}
            \fmfleft{i1,i2}
            \fmfright{o1,o2}
            \fmf{fermion}{i1,v1,o1}
            \fmf{fermion}{i2,v2,o2}
            \fmf{photon,label=$q$}{v1,v2}
            \end{fmfgraph*}
            \end{fmffile}

            \end{document}`che non differisce molto dal tuo, nel senso che contiene anche il resto del file sorgente.

            Compila perfettamente, lavorando con l’editor TeXShop come fai tu, e, eseguendo due compilazioni di pdflatex, produce il risultato atteso.

            IL tuo errore nasce, sembra, da un comando condizionale incompiuto. Ora visto che sei su un Mac come me, l’unica differenza che posso immaginare è che tu abbia una versione del sistema operativo diversa dalla mia e che tu abbia una installazione parziale della distribuzione MacTeX, o comunque una versione non aggiornata.
            Il lavoro su un OS Maverick aggiornato e con la distribuzione di MacTeX aggiornata a ieri l’altro. Il pacchetto feynmp-auto controlla da solo se hai attiva l’opzione -shell-escape in modalità protetta, necessaria per eseguire il programma metapost dietro le quinte. Potrebbe essere questo test che fallisce, ma se fosse così vuol dire che la tua distribuzione di MacTeC è vecchiotta; hai letto la documentazione di feynmp-auto? ci sono scritte cose in merito ai requisiti di sistema necassari epr usarlo, ma solo tu puoi sapere se il tuo sistema ha quei requisiti.

            Controlla bene sia il file sorgente, sia tutti gli altri dati che ti ho indicato sopra. E, nel caso che tu abbia le installazioni dei programmi un po’ vecchiotta, ricordati il consiglio che diamo sempre: distribuzione del sistema TeX completa e aggiornata sempre e comunque, con qualunque piattaforma e sistema operativo.

            Per pura curiosità ho copiato il codice suddetto sul mio vecchio MacBookPro con sistema operativo 10.5.8, ma con MacTeX aggiornatissimo; compila perfettamente.

          • #94071
            Up
            0
            Down
            ::

            einj” post=93646Scusate se continuo a rompere, ma proprio non riesco a farlo funzionare. Quello che ho fatto è aggiungere il paccetto feynmp-auto come qualsiasi altro pacchetto. Da quello che ho capito al suo interno dovrebbero già essere implementati tutti i comandi necessari per far girare l’originario pacchetto feynmp. A questo punto aggiungo le seguenti righe di codice, giusto per fare una prova:

            `\begin{fmffile}{pippo}
            \begin{fmfgraph*}(40,30) \fmfpen{thick}
            \fmfleft{i1,i2} \fmfright{o1,o2}
            \fmf{fermion}{i1,v1,o1} \fmf{fermion}{i2,v2,o2}
            \fmf{photon,label=$q$}{v1,v2} \fmfdot{v1,v2}
            \end{fmfgraph*}
            \end{fmfile}
            `

            Compilo utilizzando PdfLatex conTexShop e quello che ottengo é:

            `./HQET.tex:193: Incomplete \iffalse; all text was ignored after line 193.

            \fi
            l.193 \begin{fmffile}{pippo}

            ?`

            Sto facendo qualcosa di molto stupido. Avete idea di cosa? 🙁

            No, non ho idee, a parte che hai uno scorretto [tt]\end{fmfile}[/tt] che dovrebbe essere [tt]\end{fmffile}[/tt] (nota le due effe).

            Questo va fino in fondo senza problemi.
            `\documentclass[a4paper]{article}
            \usepackage{feynmp-auto}
            \begin{document}
            \begin{fmffile}{pippo}
            \begin{fmfgraph*}(40,30) \fmfpen{thick}
            \fmfleft{i1,i2} \fmfright{o1,o2}
            \fmf{fermion}{i1,v1,o1} \fmf{fermion}{i2,v2,o2}
            \fmf{photon,label=$q$}{v1,v2} \fmfdot{v1,v2}
            \end{fmfgraph*}
            \end{fmffile}
            \end{document}`
            Ciao
            Enrico

          • #94072
            Up
            0
            Down
            ::


            Effettivamente ho copiato il tuo codice su un nuovo file .tex e gira perfettamente anche a me. A questo punto mi viene il dubbio che io abbia qualche altro pacchetto in conflitto. Questo è quello che dichiaro all’inizio del .tex:

            `\documentclass[a4paper,12pt]{article}

            \usepackage[applemac]{inputenc}
            \usepackage[english]{babel}
            \usepackage{amsfonts}
            \usepackage{amsthm}
            \usepackage{graphicx}
            \usepackage{braket}
            \usepackage{bbold}
            \usepackage{amssymb}
            \usepackage{amsmath}
            \usepackage{verbatim}
            \usepackage{quotes}
            \usepackage[margin=2.3cm]{geometry}
            \usepackage{slashed}
            \usepackage{feynmp-auto}`

            Non so, vedrò di risolvere. Grazie mille dell’aiuto comunque!

            EDIT: Ok, ho risolto. Sembra che, non assolutamente per quale motivo, il pacchetto quotes andasse in conflitto. Una volta rimosso quello il problema si è risolto da solo!

          • #94073
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Bene che hai risolto.

              Tuttavia vedo con orrore che usi la codifica applemac. L’unica codifica che dovrebbe essere vietata per legge…:wink:

              Per capire perché e per convertire i tuoi file con una codifica utf8 (o almeno latin1, se utf8 ti imbarazza) leggi la guida tematica sulle codifiche, scaricandola dalla sezione Documentazione, sottosezione guide tematiche.

              Se tu ci avessi mandato anche il più piccolo frammento del tuo testo nel file sorgente, non avremmo potuto aiutarti, grazie a quella codiifca “proprietaria” che impedisce al comunicazione con chiunque non lavori su un Mac. io lavorio su un Mac, ma mi sono guardato bene fin dall’inizio dall’usare applemac, e l’unica volta che ho ricevuto un testo composto con quella codifica ho “incasinato” tutto; per questo ed altri motivi ho scritto insieme ad un altro sostenitore di questo sito al guida tematica che ti ho suggerito.

              Mai più applemac!

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

          Go to top