Re: Introduzione a LuaLaTeX

#55102
robitex
Amministratore del forum
    Up
    0
    Down
    ::

    Altro esempio preso dalla rete:
    `\documentclass{article}
    \usepackage{luatextra}
    \usepackage{tikz}

    \begin{luacode}
    require(“math”)
    sin=math.sin;cos=math.cos;pi=math.pi
    point = function (f,x) return “(“..x..”,”..f(x)..”)” end;
    path = function (f,a,b,n)
    local step = (b-a)/n; local s = “”;
    for x = a, b – step/2, step do s = s .. point(f,x) .. “–” end;
    s = s .. point(f,b);
    return s
    end;
    \end{luacode}

    \def\plot#1#2#3#4{%
    \directlua{
    do local f = function (x) return #1 end;
    tex.print(path(f,#2,#3,#4)) end;
    }%
    }

    \begin{document}
    \begin{tikzpicture}
    \draw[thin,->] (-.2,0)–(6.5,0)node

    {$x$};
    \draw[thin,->] (0,-2.2)–(0,2.2)node[above]{$y$};
    \draw[thick] \plot{sin(2*x)+cos(x)}{0}{2*pi}{100}node[above]{$y=\sin(2x)+\cos(x)$};
    \end{tikzpicture}
    \end{document}`

    Ciao,
    ansys.

    Interessante. Sarà il punto di partenza per certi esperimenti.
    Grazie!
    Una precisazione:
    Anche se la sintassi delle funzioni anonime di Lua crea confusione in chi è alle prime armi con questo linguaggio.
    (in Lua le funzioni sono valori di prima classe e possono essere assegnate a variabili, anzi la sintassi standard è solo zucchero sintattico per creare una variabile di tipo function)

    Infatti di solito non si scrive così:
    ` point = function (f,x) return “(“..x..”,”..f(x)..”)” end;`

    Ma così (in modo del tutto equivalente):
    ` function point(f,x) return “(“..x..”,”..f(x)..”)” end;`

    Grazie per la segnalazione.
    R.

    Go to top