On 3/25/2016 10:57 PM, Jan Tosovsky wrote:
On 2016-03-25 Hans Hagen wrote:
On 3/25/2016 2:40 PM, Jan Tosovsky wrote:
On 2016-03-24 Hans Hagen wrote:
On 3/24/2016 8:36 PM, Jan Tosovsky wrote:

We basically need:
<text><glue min-width='XX' max-width='hsize-3*indent'>

and I thought this is exactly what \parfillskip ensures
\parfillskip XX plus (hsize - 3*indent)


the fil is taken into account when calculating the best break
points and then the XX is fixed but plus/minus can lead to if
being less or more, all relative to other fill (distributed)

so, XX plus (hsize - 3*indent) is not a fixed value, it's XX or
more

take this:

\ruledhbox to 10cm {x\hskip0pt plus 1cm x}

the skip will stretch more than 1cm

I can see.

But sorry for my ignorance, as far as I understand, \parfillskip
is added to the end of the paragraph, so we have rather
\ruledhbox to 10cm {x\hskip0pt plus 1cm} % without that 'x' at the
end, so no 'glue' distribution is performed

there is but not enough stretch so there will be a warning ... you
can see it from

\ruledhbox to 10cm {x}
\ruledhbox to 10cm {x\hskip0pt plus 1cm}
\ruledhbox to 10cm {x\hskip0pt plus 1fill}


I get it, thanks.

If '\parfillskip 2em plus (hsize - 3*(2em) - 2em)' is specified, I
still think we should get space of width at least 2em '####' which
can be extended as indicated by hyphens '-' here:

emememememememememememememememememememem
emememememem------------------------####

So there are two last line lengths extrems:
(shortest)
emememememememememememememememememememem
emememememem

(longest)
emememememememememememememememememememem
emememememememememememememememememem

you always add a 2em skip so there will never be a word touching the
right margin in the last line;

yes, but this is my goal (!)

See https://mailman.ntg.nl/pipermail/ntg-context/2016/084858.html - case (2)

I am afraid I hasn't been clear enough yet.


Can I somehow define command globally which takes local block widths?

\parfillskip #1 plus \localhsize-#1-#2, where
#1 gap width
#2 shortest line width

\availablehsize



So the following \parfillskip specification finally seems to be what I was 
looking for as it covers both cases in my original question:

\setupindenting[yes,2em]

\newdimen\lastlineminlength
\newdimen\lastlinemingap

\lastlineminlength=3em
\lastlinemingap=1em

\parfillskip \lastlinemingap plus 
\dimexpr\availablehsize-\lastlineminlength-\lastlinemingap\relax

\edef\ward{\cldloadfile{ward}}

\starttext

\dorecurse{100}{
      \hsize\dimexpr\textwidth-#1mm\relax
      \ward  \par
      \ward  \par
      \startnarrower[left]
          \ward \par
          \ward \par
      \stopnarrower
      \page
}

\stoptext

try \ward{}okay i.e. a short word at the end and you'll see theh

\parfillskip \lastlinemingap plus 1fill

works just as well

As it can be done in one place globally and in almost single line, no special 
new command is necessary (as requested originally).

i've removed the one|two|three and added final|2*final|3*final|4*final

where final is a hspace of one em by default

the only purpose of this feature is to ensure a gap at the end (handy when there is no indentation)

for your case i see no solution apart from heuristic lua magic

Hans


-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
      tel: 038 477 53 69 | www.pragma-ade.com | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to