% language=us runpath=texruns:manuals/lua % author : Hans Hagen % copyright : ConTeXt Development Team % license : Creative Commons Attribution ShareAlike 4.0 International % reference : pragma-ade.nl | contextgarden.net | texlive (related) distributions % origin : the ConTeXt distribution % % comment : Because this manual is distributed with TeX distributions it comes with a rather % liberal license. We try to adapt these documents to upgrades in the (sub)systems % that they describe. Using parts of the content otherwise can therefore conflict % with existing functionality and we cannot be held responsible for that. Many of % the manuals contain characteristic graphics and personal notes or examples that % make no sense when used out-of-context. % % comment : Some chapters might have been published in TugBoat, the NTG Maps, the ConTeXt % Group journal or otherwise. Thanks to the editors for corrections. Also thanks % to users for testing, feedback and corrections. \usemodule[art-01,abr-02] \setupbodyfont [10pt] \definecolor [maincolor] [b=.4] \usesymbols [cc] \setuptype [color=maincolor] \setuptyping [color=maincolor] \definefont [TitlePageFont] [file:lmmonolt10-bold.otf] \setuphead [color=maincolor] \setupinteraction [hidden] \startdocument [metadata:author=Hans Hagen, metadata:title={Lua, the context libraries}, author=Hans Hagen, affiliation=PRAGMA ADE, location=Hasselt NL, title=Lua, subtitle=the context libraries, support=www.contextgarden.net, website=www.pragma-ade.nl] \startMPpage StartPage ; numeric w ; w := bbwidth(Page) ; numeric h ; h := bbheight(Page) ; fill Page withcolor \MPcolor{maincolor} ; draw textext.urt("\TitlePageFont \documentvariable{title}") xsized (0.8w) shifted (.1w,.2h) withcolor .80white ; draw textext.top("\TitlePageFont \documentvariable{subtitle}") xsized (0.8w) shifted (.5w,.1h) withcolor .60white ; StopPage ; \stopMPpage \startsubject[title=Contents] \placelist[section][alternative=a] \stopsubject \startsection[title=Introduction] Once we started the \LUATEX\ project it didn't take long for \CONTEXT\ to use the \LUA\ language extensively. And so, rather soon, a bunch of libraries evolved that provided all kind of helpers. Because \LUATEX\ can also act as a \LUA\ interpreter, and because we have \type {mtxrun} as script runner we can also use some of those libraries outside \CONTEXT. So, for me, a rather natural way to run a \LUA\ script is: \starttyping mtxrun --script myscript.lua \stoptyping The advantage of this approach is that you operate in the same file domain as your \TEX\ runs as all file locators are preloaded as well. However, in some cases this is not possible, for instance when you run a stock \LUA\ or some embedded version. For this we provide an alternative mechanism. \stopsection \startsection[title=Making libraries] In the \CONTEXT\ distribution there is a script called \type {mtxlibs.lua} that can create a library for you that has the basic general purpose \CONTEXT\ libraries on board, as well as whatever more you specify. \starttyping lua mtxlibs.lua --selfmerge myproject-a-libs.lua lua mtxlibs.lua --selfmerge myproject-b-libs.lua \ trac-lmx lua mtxlibs.lua --selfmerge myproject-c-libs.lua \ util-sql util-sql-imp-client util-sql-imp-library \stoptyping Here we create three libs. The first one has only the core libraries. You can read more about what they provide in the \type {cld-mkiv.pdf} manual. The second library includes code for creating web pages. The third variant preloads \SQL\ support. You can best run this file in its own directory, in the \CONTEXT\ tree, so that it knows where to find the libraries needed. Of course you can put the result everywhere you want, preferably alongside your normal scripts. As we merge code, this is a rather good way to prevent compatibility issues. After all, some of the code might get improved. You can \type {require("mtxlibs")} directly in which case it will load the core libraries runtime. Of course this means that \LUA\ should be able to figure out where it can find them. \stopsection \startsubject[title={Colofon}] \starttabulate[|B|p|] \NC author \NC \documentvariable{author}, \documentvariable{affiliation}, \documentvariable{location} \NC \NR \NC version \NC \currentdate \NC \NR \NC website \NC \documentvariable{website} \endash\ \documentvariable{support} \NC \NR \NC copyright \NC \symbol[cc][cc-by-sa] \NC \NR \stoptabulate \stopsubject \stopdocument