Ancora problemi con l’espansione di comandi

  • Creatore
    Topic
  • #33472
    strolego
    Partecipante
      Up
      0
      Down
      ::


      Ho ancora una volta problemi con l’espansione dei comandi.
      Ho questo codice:`
      \documentclass{article}
      \usepackage{fp}
      \newcommand{\FPsv}[2][0]{\FPeval\risultato{round(#2:#1)} \risultato}
      `

      Così quando nel documento scrivo \FPsv{3^2} ottengo 9 (o meglio se assegno un valore ad “a”, \FPsv{a^2} mi dà il valore di a^2)

      Ora vorrei assegnare il risultato di \FPsv a qualcosa, in particolare per scriverlo su un file esterno: qualcosa del tipo
      `\def\quadrato{\FPsv{3^2}}
      \immediate\write\prova{\quadrato}`

      e \quadrato è 9 (e non \FPsv{3^2})
      Ovviamente \def non funziona, ma nemmeno con \edef ottengo nulla (anzi ho un errore nella definizione)
      Non posso usare la soluzione “facile” di assegnare a \quadrato il valore \risultato della macro.
      Una soluzione che preveda un comando del tipo:
      ` \immediate\write\prova{\FPsv{3^2}}`
      è più che bene accetta

      Grazie per gli eventuali aiuti.
      Flavio

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #33473
        Up
        0
        Down
        ::

        Ho ancora una volta problemi con l’espansione dei comandi.
        Ho questo codice:`
        \documentclass{article}
        \usepackage{fp}
        \newcommand{\FPsv}[2][0]{\FPeval\risultato{round(#2:#1)} \risultato}
        `

        Così quando nel documento scrivo \FPsv{3^2} ottengo 9 (o meglio se assegno un valore ad “a”, \FPsv{a^2} mi dà il valore di a^2)

        Ora vorrei assegnare il risultato di \FPsv a qualcosa, in particolare per scriverlo su un file esterno: qualcosa del tipo
        `\def\quadrato{\FPsv{3^2}}
        \immediate\write\prova{\quadrato}`

        e \quadrato è 9 (e non \FPsv{3^2})
        Ovviamente \def non funziona, ma nemmeno con \edef ottengo nulla (anzi ho un errore nella definizione)
        Non posso usare la soluzione “facile” di assegnare a \quadrato il valore \risultato della macro.
        Una soluzione che preveda un comando del tipo:
        ` \immediate\write\prova{\FPsv{3^2}}`
        è più che bene accetta

        Grazie per gli eventuali aiuti.
        Flavio

        Il pacchetto fp usa comandi non espandibili per l’aritmetica; \edef certamente non può funzionare. Da’ un’occhiata al pacchetto bigintcalc di Heiko Oberdiek che invece fornisce comandi (con sintassi diversa, temo) che sono espandibili.

        Ciao
        Enrico

      • #33474
        strolego
        Partecipante
          Up
          0
          Down
          ::

          Il pacchetto fp usa comandi non espandibili per l’aritmetica; \edef certamente non può funzionare. Da’ un’occhiata al pacchetto bigintcalc di Heiko Oberdiek che invece fornisce comandi (con sintassi diversa, temo) che sono espandibili.

          Purtroppo tanti motivi (non ultimo la sintassi abbastanza semplice) mi impongono di usare fp.

          Vorrà dire che sarò costretto a non usare il mio comando \FPsv che non fa un’assegnazione non necessaria nel seguito, ma a fare un’assegnazione esplicita con \FPeval
          Grazie e ciao
          Flavio

      Visualizzazione 1 filone di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top