[LuaLaTeX] Il mistero del simbolo inatteso

  • Creatore
    Topic
  • #109797
    robitex
    Amministratore del forum
      Up
      0
      Down
      ::


      Ciao.
      Ho incontrato un errore piuttosto noioso che viene emesso da LuaLaTeX quando compila il seguente sorgente:
      `% !TeX program = LuaLaTeX

      \documentclass{article}

      \newcommand{\print}[1]{\directlua{
      local pi = math.pi
      local expr = #1;

      if expr then
      tex.print(expr)
      else
      error('Invalid Expression')
      end
      }}

      \directlua{
      double = function (x) return 2*x end
      }

      \begin{document}
      \begin{center}
      Il doppio di \( \pi \) è \print{double(pi)}\dots
      \end{center}
      \end{document}`

      L’errore è:
      `[\
      directlua]:1: unexpected symbol near '{'.
      \print …) else error('Invalid Expression') end }`

      Se elimino l’ambiente center, l’errore scompare.
      Se elimino la riga vuota nella definizione di \print mantenendo l’ambiente center, l’errore scompare.
      Se metto il contenuto di center all’interno di una minipage l’errore scompare.

      Sapete spiegarmene il motivo?
      Sarei curioso…
      R.

    Visualizzazione 3 filoni di risposte
    • Autore
      Risposte
      • #109798
        Up
        0
        Down
        ::


        Una riga vuota inserisce [tt]\par[/tt]. Nell’ambiente [tt]center[/tt] la definizione di [tt]\par[/tt] è
        `
        > \par=macro:
        ->\if@newlist \advance \par@deathcycles \@ne \ifnum \par@deathcycles >\@m \@noitemerr {\@@par }\fi \else {\@@par }\fi .
        `
        Mi pare normale che questo crei problemi. 😉

        Ciao
        Enrico

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

          egreg9″ post=110043Una riga vuota inserisce [tt]\par[/tt]. Nell’ambiente [tt]center[/tt] la definizione di [tt]\par[/tt] è
          `
          > \par=macro:
          ->\if@newlist \advance \par@deathcycles \@ne \ifnum \par@deathcycles >\@m \@noitemerr {\@@par }\fi \else {\@@par }\fi .
          `
          Mi pare normale che questo crei problemi. 😉

          Ciao
          Enrico

          Immagino che ridefinire \par a \@@par non sia una buona idea.
          In altre parole, meglio lasciare stare queste definizioni di LaTeX ed evitare linee bianche nel codice.
          Grazie.
          Ciao.
          R.

        • #109800
          Up
          0
          Down
          ::

          robitex” post=110106[…]
          Immagino che ridefinire \par a \@@par non sia una buona idea.
          […]

          Ovviamente no, in generale 🙂 : quella particolare definizione di [tt]\par[/tt] (e, in particolare, il fatto che il [tt]\@@par[/tt] che vi è contenuto sia circondato da parentesi graffe — sia, cioè, avvolto in un gruppo) è vitale per il corretto funzionamento degli ambienti di tipo [tt]\list[/tt]. Tuttavia, l’ambiente [tt]center[/tt] è basato su [tt]\trivlist[/tt], non su [tt]\list[/tt], e in quanto tale, se non sbaglio, non dipende dalla primitiva [tt]\parshape[/tt]; ne consegue che, nel caso particolare di [tt]center[/tt] (o [tt]flushleft[/tt], o [tt]flushright[/tt]), ridefinire [tt]\par[/tt] come [tt]\@@par[/tt] potrebbe essere innocuo. Io, ora come ora, non ho voglia di provare: se vuoi fare un esperimento tu, e raccontarci poi com’è andata… 😉

          Ciao.


          Gustavo

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

            letteracdp” post=110107

            […]
            Immagino che ridefinire \par a \@@par non sia una buona idea.
            […]

            Ovviamente no, in generale 🙂 : quella particolare definizione di [tt]\par[/tt] (e, in particolare, il fatto che il [tt]\@@par[/tt] che vi è contenuto sia circondato da parentesi graffe — sia, cioè, avvolto in un gruppo) è vitale per il corretto funzionamento degli ambienti di tipo [tt]\list[/tt]. Tuttavia, l’ambiente [tt]center[/tt] è basato su [tt]\trivlist[/tt], non su [tt]\list[/tt], e in quanto tale, se non sbaglio, non dipende dalla primitiva [tt]\parshape[/tt]; ne consegue che, nel caso particolare di [tt]center[/tt] (o [tt]flushleft[/tt], o [tt]flushright[/tt]), ridefinire [tt]\par[/tt] come [tt]\@@par[/tt] potrebbe essere innocuo. Io, ora come ora, non ho voglia di provare: se vuoi fare un esperimento tu, e raccontarci poi com’è andata… 😉

            Ciao.


            Gustavo

            Ciao.
            Nenache io ho voglia di farlo…
            Il mio “cruccio” è che dovrebbe filare sempre tutto liscio, e invece…
            Grazie Gustavo.

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

        Go to top