Re: Lua: funzioni con input una variabile di tipo struttura

#59635
robitex
Amministratore del forum
    Up
    0
    Down
    ::

    Probabilmente mi perdo qualcosa….

    Se compilo questo esempio minimo:
    `
    % !TEX program = LuaLaTeX
    \documentclass{report}
    \begin{document}
    \directlua{
    A = {vertex = {{1,2,3},
    {1,2,3},
    {1,2,3},
    {1,2,3},
    {1,2,3}}}

    tex.print(#A)
    tex.print(#A.vertex)
    tex.print(#A.vertex[1])
    }
    \end{document}`

    ottengo il seguente errore:
    `! LuaTeX error <\directlua >:1: attempt to get length of a number value
    stack traceback:
    <\directlua >:1: in main chunk.`

    Scrivo qualcosa di sbagliato?

    Niente di grave, è solo che in LuaTeX il codice viene prima “visto” da TeX ed i simboli # in TeX sono riservati per definire gli argomenti. Una semplice soluzione è quella di premettere il comando \string per evitare che TeX lo veda come carattere particolare:
    `
    % !TEX program = LuaLaTeX
    \documentclass{report}
    \begin{document}
    \directlua{
    A = {vertex = {{1,2,3},
    {1,2,3},
    {1,2,3},
    {1,2,3},
    {1,2,3}}}

    tex.print(\string#A)
    tex.print(\string#A.vertex)
    tex.print(\string#A.vertex[1])
    }
    \end{document}`

    Nel pacchetto luacode sono indicate le varie modalità per gestire i caratteri speciali dei due linguaggi (per esempio il simbolo di % che in Lua serve per costruire stringhe di formato).
    Scusami, non mi ero accorto che compilavi con LuaLaTeX.

    Alla prossima.
    Ciao

    Go to top