diff options
Diffstat (limited to 'macros/context/contrib/context-lua-widow-control/tex/luatex/lua-widow-control/lua-widow-control.tex')
-rw-r--r-- | macros/context/contrib/context-lua-widow-control/tex/luatex/lua-widow-control/lua-widow-control.tex | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/macros/context/contrib/context-lua-widow-control/tex/luatex/lua-widow-control/lua-widow-control.tex b/macros/context/contrib/context-lua-widow-control/tex/luatex/lua-widow-control/lua-widow-control.tex new file mode 100644 index 0000000000..e25342ee4b --- /dev/null +++ b/macros/context/contrib/context-lua-widow-control/tex/luatex/lua-widow-control/lua-widow-control.tex @@ -0,0 +1,119 @@ +% lua-widow-control +% https://github.com/gucci-on-fleek/lua-widow-control +% SPDX-License-Identifier: MPL-2.0+ +% SPDX-FileCopyrightText: 2022 Max Chernoff + +\wlog{lua-widow-control v3.0.0} %%version + +\ifx\directlua\undefined + \errmessage{% + LuaTeX is required for this package. + Make sure to compile with `luatex'% + } +\fi + +\catcode`@=11 + +% We need to change some code if we're using LuaMetaTeX +\def\lwc@iflmtx{\ifnum\luatexversion>200\relax} + +\input ltluatex % \LuaTeX{}Base + +\clubpenalty=1 +\widowpenalty=1 +\displaywidowpenalty=1 +\brokenpenalty=1 + +\newdimen\lwcemergencystretch +\lwcemergencystretch=3em + +\newdimen\lwcdraftoffset +\lwcdraftoffset=1in + +\newcount\lwcmaxcost +\lwcmaxcost=2147483647 + +\directlua{require "lua-widow-control"} + +% 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. +\lwc@iflmtx\else + \expandglyphsinfont\the\font 20 20 5 + \adjustspacing=2 +\fi + +% Enable \lwc/ by default when the package is loaded. +\lwc@enable + +% Fix some strange LMTX bugs +\lwc@iflmtx + \normalizelinemode=\numexpression\normalizelinemode bor 2\relax +\fi + + +% Expansion of some parts of the document, such as section headings, is quite +% undesirable, so we'll disable \lwc/ for certain commands. + +% We should only reenable \lwc/ at the end if it was already enabled. +\newcount\lwc@disable@count + +\def\lwc@patch@pre{% + \lwc@if@enabled% + \advance\lwc@disable@count by 1% + \lwc@disable% + \fi% +} + +\def\lwc@patch@post{ + \ifnum\lwc@disable@count>0% + \lwc@enable% + \advance\lwc@disable@count by -1% + \fi +} + +\def\lwc@extractcomponents #1:#2->#3\STOP{% + \def\lwc@params{#2}% + \def\lwc@body{#3}% +} + +\def\lwcdisablecmd#1{% + \ifdefined#1% + \expandafter\lwc@extractcomponents\meaning#1\STOP% + \begingroup% + \catcode`@=11% + \expanded{% + \noexpand\scantokens{% + \gdef\noexpand#1\lwc@params{% + \noexpand\lwc@patch@pre\lwc@body\noexpand\lwc@patch@post% + }% + }% + }% + \endgroup% + \fi% +} + +\begingroup + \lwc@iflmtx\else + \suppressoutererror=1 + \fi + \lwcdisablecmd{\beginsection} % Sectioning +\endgroup + +% Make the commands public +\let\lwcenable=\lwc@enable +\let\lwcdisable=\lwc@disable +\let\lwcdebug=\lwc@debug +\def\lwcdraft#1{% + \lwc@show@costs{#1}% + \lwc@show@colours{#1}% +} +\let\lwcshowcosts=\lwc@show@costs +\let\lwcshowcolours=\lwc@show@colours +\let\iflwc=\lwc@if@enabled +\let\lwcnobreak=\lwc@nobreak +\let\lwcpreshipout=\lwc@pre@shipout + + +\catcode`@=12 +\endinput |