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 -----------------------------------------------------------------