On Fri, 4 Apr 2008, Peter Münster wrote:
On Fri, Apr 04 2008, Taco Hoekwater wrote:
% engine=luatex
\startluacode function add_ties (line) return line:gsub(' ','~') end \stopluacode
\def\startfiltered {\ctxlua {callback.register('process_input_buffer', add_ties)}} \def\stopfiltered {\ctxlua {callback.register('process_input_buffer', nil)}}
\starttext \startfiltered Thus, I came to the conclusion that the designer of a new system must not only be the implementer and first large||scale user; the designer should also write the first user manual. \stopfiltered \stoptext
Notice how it breaks only at hyphens? If you think that is because those are the only valid breakpoints, you are actually slightly wrong: there are still 'normal' spaces between 'system' and 'must' and between 'the' and 'designer' (because EOL is converted to a space *after* reading in the line buffer).
The lua function is _much_ too simple. It will happily convert '\ ' into '\~', $a = 2~$ into $a~=~2~$, and "\TEX is" into "\TEX~is".
Hello,
Perhaps this one could be already useable for the OP:
function add_ties(line) line = line:gsub('( %a) ', '%1~') line = line:gsub('^(%a) ', '%1~') line = line:gsub('( %a)$', '%1~%%') return line end
Not working: $a = b + c$.
How about substituting with a macro \nonbreakbablespace (instead of ~) and redefining \nonbreakablespace to \relax using \everymathematics or \mathortext? Aditya