1%D \module 2%D [ file=typo-bld, % was node-par, 3%D version=2008.09.30, 4%D title=\CONTEXT\ Typesetting Macros, 5%D subtitle=Paragraph Building, 6%D author=Hans Hagen, 7%D date=\currentdate, 8%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] 9%C 10%C This module is part of the \CONTEXT\ macro||package and is 11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for 12%C details. 13 14\writestatus{loading}{ConTeXt Typesetting Macros / Paragraph Building} 15 16%D This is very experimental, undocumented, subjected to changes, etc. just as 17%D the underlying interfaces. But at least it's cleaned as part of the status-mkiv 18%D cleanup. 19 20% \enabletrackers[builders.hpack.overflow] 21% \enabletrackers[builders.hpack.quality] 22% \enabletrackers[builders.vpack.quality] 23 24% \startparbuilder[default] 25% \input tufte \par 26% \startparbuilder[oneline] 27% \input tufte \par 28% \stopparbuilder 29% \input tufte \par 30% \stopparbuilder 31% 32% \startparbuilder[oneline] 33% \dorecurse{100}{\input ward \par} 34% \stopparbuilder 35 36% \startluacode 37% function builders.paragraphs.constructors.methods.preroll_a(head) 38% local result, info = tex.linebreak(head) 39% tex.prevdepth = info.prevdepth 40% tex.prevgraf = info.prevgraf 41% return result 42% end 43% function builders.paragraphs.constructors.methods.preroll_b(head) 44% local result, info = tex.linebreak(nodes.nuts.copylist(head)) 45% return true 46% end 47% \stopluacode 48% 49% \defineparbuilder[preroll_a] 50% \defineparbuilder[preroll_b] 51% 52% \starttext 53% \setmainparbuilder[default] \input tufte \par \input tufte \page 54% \setmainparbuilder[preroll_a] \input tufte \par \input tufte \page 55% \setmainparbuilder[preroll_b] \input tufte \par \input tufte \page 56% \stoptext 57 58\unprotect 59 60\registerctxluafile{typo-bld}{autosuffix} 61 62\definesystemattribute[parbuilder][public] 63 64\installcorenamespace {parbuilder} 65 66\permanent\protected\def\defineparbuilder [#1]{{#1}} 67\permanent\protected\def\setmainparbuilder[#1]{{#1}} 68 69\permanent\protected\def\startparbuilder [#1]{\ifhmode\par\fi{#1}} 70\permanent\protected\def\stopparbuilder {\ifhmode\par\fi} 71 72%D There is no high level interface because after all implementing a linebreaker 73%D is not something that the average user will do. 74 75\defineparbuilder[default] % just for testing 76\defineparbuilder[oneline] % just for testing 77\defineparbuilder[basic] % just for testing 78 79%D This hooks in otr so we need to pickup. 80 81\permanent\protected\def\enableparbuilders { } % can be public implementor 82\permanent\protected\def\disableparbuilders{} % can be public implementor 83 84\protect \endinput 85 |