[luatex] Option handling in LuaLaTeX package

Urs Liska lists at openlilylib.org
Tue Jun 4 11:37:31 CEST 2019


Dear list,

I have a mix of a question and a suggestion regarding option handling in 
Lua-based LaTeX packages.

I contributed to the development of the lyluatex package, whose 1.0 
final has recently been uploaded to CTAN (https://ctan.org/pkg/lyluatex 
and https://github.com/jperon/lyluatex). The package makes extensive use 
of options (package, global and per-entry options), and the main 
developer has produced an impressive infrastructure to handle these.

After I copied and adjusted the relevant code to some of my own package 
I realized we should factor it out so I can access and reuse the 
functionality from arbitrary packages, so we moved the code to two 
separate Lua modules.

After the release I suggested going one step further and moving the 
functionality in a *package* so after a simple \RequirePackage there 
would be the relevant Lua tables available. When lyluatex is loaded the 
helper modules are loaded implicitly.

However, now I think that the helper functionality is in no way related 
to lyluatex and probably generally useful, and so the questions are a) 
is that true? b) is that publicly available already (oops)? and c) what 
would be the best way forward to make it as useful as possible?

We have two modules:

  * lyluatex-lib.lua
    (https://github.com/jperon/lyluatex/blob/master/lyluatex-lib.lua)
  * lyluatex-options.lua
    (https://github.com/jperon/lyluatex/blob/master/lyluatex-options.lua)

Probably the stuff in lyluatex-libs.lua is not really unique, and we 
should rather investigate the lualibs package for existing functionality 
and probably change the code to use that. However, the option handling 
might be something that could be made available separately to simplify 
the creation of Lua-based packages for others as well. A user-oriented 
short description of the functionality is in this section of the manual: 
https://github.com/jperon/lyluatex/blob/master/lyluatex.md#option-handling-option-handling.
An example of a package making use of the functionality is here: 
https://github.com/uliska/lyluatexmp/blob/master/lyluatexmp.sty. Note 
that in line 43 a `lyluatex_options` object is available through the 
implicit loading through lyluatex. 
https://github.com/uliska/lyluatexmp/blob/master/lyluatexmp.lua then 
accesses the options' current values through the xmp_opts table defined 
starting at 
https://github.com/uliska/lyluatexmp/blob/master/lyluatexmp.sty#L44

To reiterate the question: Is this approach to handling options 
something that already exists (so we shouldn't have bothered with the 
implementation in the first place)? If not am I right with the 
assumption that it would be a good idea to make it available as a 
generic package, say `luaoptions`?

Thanks for any suggestions
Urs


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://tug.org/pipermail/luatex/attachments/20190604/f601cb5c/attachment.html>


More information about the luatex mailing list