%D \module %D [ file=lang-ini, %D version=2014.08.10, %D title=\CONTEXT\ Language Macros, %D subtitle=Experimental Patterns, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. %D This is an experimental module. We often have to deal with titles %D that have conflicting demands: %D %D \startitemize %D \startitem They go into a dedicated space (often a graphic). \stopitem %D \startitem The words cannot be hyphenated. \stopitem %D \startitem But as an escape they can get hyphenated. \stopitem %D \startitem In that case we want at least an extra word on the last line. \stopitem %D \stopitemize %D %D These and maybe more cases can be dealt with using dedicated hyphenation %D mechanisms. At he same time we want to experiment with more extensive patterns %D as discussed in {\em TUGboat, Volume 27 (2006), No. 2—Proceedings of EuroTEX2006}. % lua: 5.341 5.354 % tex: 5.174 5.262 \writestatus{loading}{ConTeXt Language Macros / Initialization} \registerctxluafile{lang-hyp}{1.001} %D This command can change! At some point we will keep the setting with the %D paragraph and then the \type {\par} can go. \unexpanded\def\atleastoneword#1% {\begingroup \enabledirectives[hyphenators.method=traditional]% \enabledirectives[hyphenators.rightwordsmin=1]% \lefthyphenmin \plusfour \righthyphenmin\plusfour #1\par \disabledirectives[hyphenators.rightwordsmin]% \enabledirectives[hyphenators.method]% \endgroup} \endinput % \starttext % % \enabledirectives[hyphenators.method=traditional] % % % \dorecurse{1000}{\input tufte \par} % % \setupalign[verytolerant,flushleft] % \setuplayout[width=140pt] \showframe % % longword longword long word longword longwordword \blank % % \enabledirectives[hyphenators.rightwordsmin=1] % % longword longword long word longword longwordword\blank % % \disabledirectives[hyphenators.rightwordsmin] % % longword longword long word longword longwordword\blank % % \atleastoneword{longword longword long word longword longwordword} % % \enabledirectives[hyphenators.method=traditional] % % \stoptext % \startluacode % -- e1ë/e=e reëel re-eel % -- a1atje./a=t,1,3 omaatje oma-tje % -- schif1f/ff=f,5,2 Schiffahrt Schiff-fahrt % % languages.hyphenators.traditional.registerpattern("en","a1b", { start = 1, length = 2, before = "CD", after = "EF" } ) % languages.hyphenators.traditional.registerpattern("en","e1ë", { start = 1, length = 2, before = "e", after = "e" } ) % languages.hyphenators.traditional.registerpattern("en","oo1ë", { start = 2, length = 2, before = "o", after = "e" } ) % languages.hyphenators.traditional.registerpattern("en","qqxc9xkqq",{ start = 3, length = 4, before = "ab", after = "cd" } ) -- replacement start length % % -- print("reëel", injecthyphens(dictionaries.nl,"reëel", 2,2)) % -- print("reeëel", injecthyphens(dictionaries.nl,"reeëel", 2,2)) % -- print("rooëel", injecthyphens(dictionaries.nl,"rooëel", 2,2)) % -- print( "QXcXkQ", injecthyphens(dictionaries.de, "QXcXkQ", 2,2)) % -- print( "QQXcXkQQ", injecthyphens(dictionaries.de, "QQXcXkQQ", 2,2)) % -- print( "QQQXcXkQQQ", injecthyphens(dictionaries.de, "QQQXcXkQQQ", 2,2)) % -- print("QQQQXcXkQQQQ",injecthyphens(dictionaries.de,"QQQQXcXkQQQQ",2,2)) % -- % -- print( "QQXcXkQQ QQXcXkQQ", injecthyphens(dictionaries.de, "QQXcXkQQ QQXcXkQQ", 2,2)) % \stopluacode % % \starttext % % \blank % % xreëel rooëel \par xxabxx xxxabxxx \par % % \hsize1mm \lefthyphenmin2 \righthyphenmin2 % % \blank Capacity \blank capacity \blank xyabxy \blank xreëel \blank rooëel \blank % % xy\discretionary{CD}{EF}{ab}xy % xxacceedxxx % % \stoptext