%D \module %D [ file=node-par, %D version=2008.09.30, %D title=\CONTEXT\ Node Macros, %D subtitle=Paragraph Building, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA / Hans Hagen \& Ton Otten}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. \writestatus{loading}{ConTeXt Node Macros / Paragraph Building} %D This is very experimental, undocumented, subjected to changes, etc. just as %D the underlying interfaces. % \enableparbuilders % % \startparbuilder[default] % \input tufte \par % \startparbuilder[oneline] % \input tufte \par % \stopparbuilder % \input tufte \par % \stopparbuilder \unprotect \registerctxluafile{node-par}{1.001} \definesystemattribute[parbuilder] \chardef\parbuilderattribute \dogetattributeid{parbuilder} % todo auto-enable % management (enable/disable) is global and will move to lua \newcount\nofparbuilders \unexpanded\def\defineparbuilder[#1]% {\global\advance\nofparbuilders\plusone \ctxlua{parbuilders.register("#1",\number\nofparbuilders)}% \setxvalue{\??ng:#1}{\attribute\parbuilderattribute\nofparbuilders}} \unexpanded\def\startparbuilder[#1]% {\edef\@@currentparbuilder{\number\attribute\parbuilderattribute}% \globalpushmacro\@@currentparbuilder \getvalue{\??ng:#1}% \checkparbuilders} \unexpanded\def\stopparbuilder {\ifhmode\par\fi \globalpopmacro\@@currentparbuilder \attribute\parbuilderattribute\@@currentparbuilder\relax \checkparbuilders} \def\setmainparbuilder[#1]% {\ctxlua{parbuilders.setmain("#1")}} % no high level interface, after all implementing a linebreaker is not something that % the average user will do \defineparbuilder[default] % just for testing \defineparbuilder[oneline] % just for testing \defineparbuilder[basic] % just for testing \def\enableparbuilders {\ctxlua{parbuilders.enable ()}} \def\disableparbuilders{\ctxlua{parbuilders.disable()}} \def\checkparbuilders % can be more efficient as we don't want to do this to often {\ifcase\attribute\parbuilderattribute \disableparbuilders \else \enableparbuilders \fi} \protect \endinput