Robitex's Blog

Ideas in the web

Un simpatico effetto funzionale in LuaTeX


La domanda

A volte capita di chiedersi all’improvviso se l’idea che ci è appena balenata in mente può effettivamente esser realizzata.

Stavo esaminando alcune caratteristiche di LuaTeX quando una domanda è sorta spontanea: è possibile creare una macro che accetti una funzione matematica scritta dall’utente e la esegua su un argomento anch’esso variabile?

Si tratta quindi di far eseguire una funzione matematica definita sul momento, in pieno stile functional.

La macro dovrebbe accettare due argomenti: il primo è la funzione da usare e il secondo l’argomento numerico su cui eseguire il calcolo:

\applyfun{<funzione>}{<numero>}

Nel documento troveremo poi il risultato cercato. La cosa interessante è che il primo parametro della macro, la funzione, è concettualmente simile al secondo argomento essendo entrambi dei valori.

Per esempio, vorremmo poter scrivere:

Il quadrato di 10 è \applyfun{function (x) return x*x end}{10}!

LuaTeX della famiglia TeX

LuaTeX è un motore di composizione tipografico della gloriosa famiglia TeX. Questi programmi compilano un file di testo scritto dall’utente per fornire il corrispondente documento pdf.

Nel file di testo — detto sorgente — si adopera una sorta di linguaggio istruendo il programma alla gestione di sommari, riferimenti incrociati, titoli, eccetera.

In molti paesi opera un TUG, un TeX User Group. In Italia è attivo da 15 anni il GuIT Gruppo di utilizzatori Italiani di TeX, il cui sito può darvi tutte le informazioni necessarie.

Dimenticavo di dirvi che il sistema TeX è stato uno dei primi esempi di software libero, perciò siete ancor più liberi di usarlo per scrivere i vostri documenti.

La risposta

Ebbene la risposta è positiva! Si, è possibile e se non ci credete compilate con LuaTeX il codice seguente:

% luatex

% definizione della macro
\def\applyfun#1#2{%
\directlua{
local fun = #1
tex.sprint(fun(#2))
}}

Experimental!

\applyfun{function (x) return math.log(x)+10 end}{12}

Ok.

Il quadrato di $\pi$ vale
\applyfun{function (x) return x*x end}{3.14159}.

End job.
\bye

E mi raccomando, non provate a farlo con Word o LibreOffice…
Alla prossima.
R.

Una risposta a “Un simpatico effetto funzionale in LuaTeX

  1. Pingback:Visto nel Web – 206 | Ok, panico

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: