diff options
Diffstat (limited to 'tex/context/base/node-par.mkiv')
-rw-r--r-- | tex/context/base/node-par.mkiv | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/tex/context/base/node-par.mkiv b/tex/context/base/node-par.mkiv new file mode 100644 index 000000000..cb53e643d --- /dev/null +++ b/tex/context/base/node-par.mkiv @@ -0,0 +1,78 @@ +%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 |