- Questo topic ha 6 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 4 mesi fa da .
-
Topic
-
Buongiorno e buon sabato a tutti,
ho deciso di scrivere questo post perché potrebbe interessare ad altri trovare la soluzione a questo problema.—> Descrizione del sistema
Sto lavorando in Ubuntu 13.10 con teX Live full 2013.
Ho installato da package manager i pacchetti SQLite3 e LuaSQL.
Il database SQLite3 è perfetto per lavorare in coppia con LuaTeX, mentre le applicazioni possibili sono veramente tante e molto interessanti.
Non mi dispiacerebbe affatto che LuaTeX incorporasse SQLite3 o almeno lo distribuisse come fa con altre librerie Lua.—-> Test esterno
Ho scritto questo codice Lua adattato da un post trovato in TeX.Exchange:
`local luasql = require(“luasql.sqlite3”)env = assert(luasql.sqlite3())
— connect to data source
con = assert(env:connect(“luasql-test”))— retrieve a cursor
cur = assert(con:execute”CREATE TABLE people (name TEXT, email TEXT)”)
cur = assert(con:execute”INSERT INTO people VALUES ('Pippo', 'pippo@email.org')”)
cur = assert(con:execute”INSERT INTO people VALUES ('San Remo', 'remo.san@vatican.org')”)
cur = assert(con:execute”INSERT INTO people VALUES ('Ula op', 'ula.op@email.org')”)cur = assert(con:execute”SELECT name, email from people”)
— print all rows, the rows will be indexed by field names
row = cur:fetch ({}, “a”)
print([[\begin{tabular}{@{}ll@{}}\toprule]])
print([[Name & email \\\midrule]])
while row do
print(-2,row.name)
print(“&”)
print(-2, row.email)
print(“\\\\”)
— reusing the table of results
row = cur:fetch (row, “a”)
end
print([[\bottomrule\end{tabular}]])— close everything
cur:close()
con:close()
env:close()`Il test eseguito con Lua 5.2.2 per mezzo del comando $ lua test.lua ha successo.
Viene creato il file del database chiamato luasql-test che all’interno mostra la tabella people.—> Test con texlua
texlua è un programma che lancia il modulo Lua di LuaTeX per eseguire codice Lua puro.
Se lancio il comando $ texlua test.lua questa volta ricevo l’errore seguente:
`texlua testop.lua
$ texlua test.lua
test.lua:1: module 'luasql.sqlite3' not found:
no field package.preload['luasql.sqlite3']
no file '/usr/local/share/lua/5.2/luasql/sqlite3.lua'
no file '/usr/local/share/lua/5.2/luasql/sqlite3/init.lua'
no file '/usr/local/lib/lua/5.2/luasql/sqlite3.lua'
no file '/usr/local/lib/lua/5.2/luasql/sqlite3/init.lua'
no file './luasql/sqlite3.lua'
no file '/usr/local/lib/lua/5.2/luasql/sqlite3.so'
no file '/usr/local/lib/lua/5.2/loadall.so'
no file './luasql/sqlite3.so'
no file '/usr/local/lib/lua/5.2/luasql.so'
no file '/usr/local/lib/lua/5.2/loadall.so'
no file './luasql.so'
>Exit code: 1
`LuaTeX infatti sostituisce il normale processo di caricamento delle librerie di Lua per sfruttare il modulo kpathsea.
L’errore dovrebbe essere normale, tuttavia ho inserito il percorso alla libreria nel file /usr/local/texlive/2013/texmf.cnf:
`CLUAINPUTS = .;/usr/lib/x86_64-linux-gnu/lua/5.2//;$SELFAUTOLOC/lib/{$progname,$engine,}/lua//`Qualcuno vuol provare a trovare la giusta configurazione?
Nel manuale di LuaTeX alla sezione 3.2 dice qualcosa sul percorso di ricerca moduli, mentre sul web si trova ancora poco sull’argomento.Riporto anche il file per LuaLaTeX che dovrebbe effettuare una query sul database e produrre una sorta di report:
`\documentclass{article}
\usepackage{luacode,booktabs}
\begin{document}
\begin{luacode*}
local luasql = require(“luasql.sqlite3”)
env = assert(luasql.sqlite3())— connect to data source
con = assert (env:connect(“luasql-test”))
— retrieve a cursor
cur = assert (con:execute”SELECT name, email from people”)
— print all rows, the rows will be indexed by field names
row = cur:fetch ({}, “a”)
tex.sprint([[\begin{tabular}{@{}ll@{}}\toprule]])
tex.sprint([[Name & email \\\midrule]])
while row do
tex.sprint(-2,row.name)
tex.sprint(“&”)
tex.sprint(-2, row.email)
tex.sprint(“\\\\”)
— reusing the table of results
row = cur:fetch (row, “a”)
end
tex.sprint([[\bottomrule\end{tabular}]])
— close everything
cur:close()
con:close()
env:close()
\end{luacode*}
\end{document}
`L’errore in questo caso è il seguente:
`! LuaTeX error [string “\directlua “]:1: module 'luasql.sqlite3' not found:
no field package.preload['luasql.sqlite3']
[luatexbase.loader] Search failed
[kpse lua searcher] file not found: 'luasql.sqlite3'luasql/sqlite3
no file '/usr/local/lib/lua/5.2/luasql.so'
no file '/usr/local/lib/lua/5.2/loadall.so'
no file './luasql.so'
[oberdiek.luatex.kpse_module_loader]-eroux Search failed
stack traceback:
[C]: in function 'require'
[string “\directlua “]:1: in main chunk.
\luacode@dbg@exec …code@maybe@printdbg {#1} #1 }`Riporto anche un link ad un mio post dove riuscivo facilmente a connettermi da LuaTeX ad un database PostgreSQL:
Grazie e saluti.
R.
- Devi essere connesso per rispondere a questo topic.