variabile – espressione – expl3 \fp_to_decimal:N vs. \fp_to_decimal:n in expl3

  • Creatore
    Topic
  • #153723
    bencio
    Partecipante
      Up
      0
      Down
      ::

      Quando provo a usare expl3 mi imbatto anche in cose che proprio non capisco,
      e allora provo a chiedere.

      Mi piaccerebbe capire a che cosa serve la distinzione tra

      \fp_eval:n e \fp_use:N

      e poi la distinzione tra

      \fp_to_decimal:N e \fp_to_decimal:n

      Al di là dell’evidente doppione, che è dichiarato nel manuale (\fp_eval:n e \fp_use:N sono sinonimi di \fp_to_decimal:N e \fp_to_decimal:n), e tralasciando la differenza lessicale tra USARE una variabile e VALUTARE una espressione, il problema vero è perché si debba distinguere in questo contesto fra il trattamento di una variabile e di una espressione.
      Nel momento in cui uso/valuto/converto una variabile la sto trattando come una espressione.
      E’ la più semplice delle espressioni, ma comunque di una espressione si tratta.

      Ci sono contesti (per esempio fare una assegnazione di valore) in cui ci sta una variabile ma non potrebbe stare una espressione, ma ci sono contesti in cui la singola variabile svolge proprio il ruolo di semplicissima espressione da valutare.

      Pongo la questione in modo diverso.

      \fp_to_decimal:N <variabile>
      e
      \fp_to_decimal:n {<espressione semplice costituita solo da una variabile>}

      fanno la stessa cosa ??

      Se esiste una differenza, nel manuale citato quì avanti non è spiegata.
      Se non esiste una differenza, a che cosa serve la prima versione ?? a risparmiare le graffe ??
      Se il risultato è uguale ma la implementazione è diversa per motivi di efficienza, allora OK, ma perchè non dirlo ??
      O forse da qualche parte si trova questa informazione ?

      Si veda
      The LATEX Project “The LATEX3 Interfaces” – versione 2026-09-09 –
      file: interface3.pdf – sezione 30.3 – pagine 268-269.

      E’ possibile che il problema che descrivo si ponga anche per altri comandi.

      Un saluto a tutti

      Battista

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #153724
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::

          Secondo me la differenza si vede quando da pdfLaTeX o LuaLaTeX (o anche XeLaTeX, che però sembra congelato) usi  \NewDocumentCommand \macro{descrittori}{espressione} oppure \NewExpandableDocumentComand\macro{descrittori}{espressione}.
          Il primo esegue le operazioni indicate una volta sola, mentre il secondo, con tempi di esecuzione più lunghi, ripete l’operazione di espansione ogni volta che lo usi; il secondo quindi è da usare nella definizione di comandi più complessi.
          Almeno così l’ho capita io, e nelle macro che mi sono definito ho usato l’una o l’altra funzione a seconda di quel che dovevo fare.
          Chi ne sa di più può essere più chiaro.

        • #153725
          bencio
          Partecipante
            Up
            0
            Down
            ::

            Ringrazio Claudio, però non sono capace di capire il collegamento tra la mia domanda e la sua risposta.

            Battista

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

        Go to top▲