%D \module %D [ file=t-lua-widow-control, %D version=1.0.0, %%version %D title=lua-widow-control, %D subtitle=\ConTeXt module for lua-widow-control, %D author=gucci-on-fleek, %D date=2021-10-09, %%date %D copyright=gucci-on-fleek, %D license=MPL-2.0+, %D url=https://github.com/gucci-on-fleek/lua-widow-control] \startmodule[lua-widow-control] \unprotect \installnamespace{lwc} \installcommandhandler \????lwc {lwc} \????lwc \newdimen\lwcemergencystretch \appendtoks \lwcemergencystretch=\lwcparameter{emergencystretch} \to\everysetuplwc \appendtoks \doifelse{\lwcparameter{\c!state}}\v!start{ \ctxlua{lwc.enable_callbacks()} }{ \ctxlua{lwc.disable_callbacks()} } \to\everysetuplwc \ctxloadluafile{lua-widow-control} \setuplwc[emergencystretch=3em, \c!state=\v!start] % We can't just set the penalties because they will be reset automatically % at \\starttext. \startsetups[*default] \clubpenalty=1 \widowpenalty=1 \displaywidowpenalty=0 \interlinepenalty=0 \brokenpenalty=0 \stopsetups \setups[*default] % Here, we enable font expansion/contraction. It isn't strictly necessary for % \lwc/'s functionality; however, it is required for the % lengthened paragraphs to not have terrible spacing. \definefontfeature[default][default][expansion=quality] \setupalign[hz] \protect \stopmodule