Re: [NTG-context] strange behavior with \groupedcommand in recent versions of LMTX

2020-09-02 Thread Hans Hagen

On 9/2/2020 11:10 AM, mf wrote:

Thanks Hans,
this solves the problem I had with the new implementation of \wordright.
It's not exactly a problem of \wordright, but the combination with 
\groupedcommand.


that is always tricky as what happens is postponing till the group ends

but wordright now kind of hooks into the par construction


Is \nextbox a new entry of latest versions?


no, actually one of the oldest things


I've seen also \nextboxwd, \nextboxht, etc.
So you can measure the next box to come in advance. Is it like that?

Is it a vbox when you're in vertical mode and a hbox when you are in 
horizontal mode?


you just pass the box


Is this interpretation of \dowithnextbox in \dowhatever right?

\dowithnextbox {.1.} \.2. {.3.}
1 COMMAND = {\ifdim\wd\nextbox<\hsize...}
2 CSNAME  = \hbox or \vbox 
3 CONTENT = {#1}

yes

Hans

-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
   tel: 038 477 53 69 | www.pragma-ade.nl | 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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


Re: [NTG-context] strange behavior with \groupedcommand in recent versions of LMTX

2020-09-02 Thread mf

Thanks Hans,
this solves the problem I had with the new implementation of \wordright.
It's not exactly a problem of \wordright, but the combination with 
\groupedcommand.


Is \nextbox a new entry of latest versions?

I've seen also \nextboxwd, \nextboxht, etc.
So you can measure the next box to come in advance. Is it like that?

Is it a vbox when you're in vertical mode and a hbox when you are in 
horizontal mode?


Is this interpretation of \dowithnextbox in \dowhatever right?

\dowithnextbox {.1.} \.2. {.3.}
1 COMMAND = {\ifdim\wd\nextbox<\hsize...}
2 CSNAME  = \hbox
3 CONTENT = {#1}

Massi

Il 01/09/20 19:22, Hans Hagen ha scritto:
>
> fortunately there is a solution that takes less code:
>
> \unexpanded\def\whatever
>{\dosingleempty\dowhatever}
>
> \def\dowhatever[#1]%
>{\dowithnextbox
>   {\ifdim\wd\nextbox<\hsize
>  \wordright{\box\nextbox}%
>  \par
>\else
>  \par
>  \penalty1
>  \startalignment[flushright]\unhbox\nextbox\stopalignment
>\fi}\hbox}
>
> \starttext
>
>\input ward \whatever{same line, right}
>
>\blank
>
>\input ward \whatever{\input tufte }
>
> \stoptext
>
___
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


Re: [NTG-context] strange behavior with \groupedcommand in recent versions of LMTX

2020-09-01 Thread Hans Hagen

On 9/1/2020 5:47 PM, mf wrote:
\unexpanded\def\groupedwordorparagraphright{\dosingleempty\dogroupedwordorparagraphright} 

\def\dogroupedwordorparagraphright[#1]{\groupedcommand{\setbox\scratchbox\hbox\bgroup} 


{\egroup\ifdim\wd\scratchbox < \hsize
     \wordright{\unhbox\scratchbox}
   \else
     \par\penalty1
     \startalignment[flushright]\unhbox\scratchbox\stopalignment
   \fi}}

\unexpanded\def\wordorparagraphright#1{%
   \setbox\scratchbox\hbox{#1}
   \ifdim\wd\scratchbox < \hsize
     \wordright{#1}
   \else
     \par\penalty1
     \startalignment[flushright]\unhbox\scratchbox\stopalignment
   \fi}

\starttext
   \type{\wordorparagraphright} should use \type{\wordright} if its 
argument
   is narrower than \type{\hsize}, or make a right-aligned paragraph 
with it

   when it's wider.

   Below, \type{\wordorparagraphright} is tested with a short text, that
   has enough room on the same line.
   \blank

   Reference:

   \input ward\wordright{same line, right}

   \blank

   Implementation as a grouped command (it doesn't work):

   \input ward\groupedwordorparagraphright{same line, right}

   \blank

   Normal implementation, not as a grouped command (it works):

   \input ward\wordorparagraphright{same line, right}
\stoptext


Unfortunately the grouped version is the one I need, because it's used 
in a register, and it would give an error if not defined through 
\groupedcommand:


\setupregister[myregister]
   [pageleft=\wordorparagraphright\bgroup,pageright=\egroup]



fortunately there is a solution that takes less code:

\unexpanded\def\whatever
  {\dosingleempty\dowhatever}

\def\dowhatever[#1]%
  {\dowithnextbox
 {\ifdim\wd\nextbox<\hsize
\wordright{\box\nextbox}%
\par
  \else
\par
\penalty1
\startalignment[flushright]\unhbox\nextbox\stopalignment
  \fi}\hbox}

\starttext

  \input ward \whatever{same line, right}

  \blank

  \input ward \whatever{\input tufte }

\stoptext

-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
   tel: 038 477 53 69 | www.pragma-ade.nl | 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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


[NTG-context] strange behavior with \groupedcommand in recent versions of LMTX

2020-09-01 Thread mf

Hello list,
this is a MWE that worked right in MkIV and in LMTX versions (at least) 
until April 22nd, 2020.


There's a macro, \wordorparagraphright, that takes one argument, makes a 
hbox with it and measures its width


- if its width is less than \hsize, then it calls \wordright

- if its width is more than \hsize, then it ends the current paragraph 
and starts a right-aligned paragraph with the argument


There are two implementations in the MWE: one is through 
\groupedcommand, and that's the one that worked once and doesn't now.



\unexpanded\def\groupedwordorparagraphright{\dosingleempty\dogroupedwordorparagraphright}
\def\dogroupedwordorparagraphright[#1]{\groupedcommand{\setbox\scratchbox\hbox\bgroup}
{\egroup\ifdim\wd\scratchbox < \hsize
\wordright{\unhbox\scratchbox}
  \else
\par\penalty1
\startalignment[flushright]\unhbox\scratchbox\stopalignment
  \fi}}

\unexpanded\def\wordorparagraphright#1{%
  \setbox\scratchbox\hbox{#1}
  \ifdim\wd\scratchbox < \hsize
\wordright{#1}
  \else
\par\penalty1
\startalignment[flushright]\unhbox\scratchbox\stopalignment
  \fi}

\starttext
  \type{\wordorparagraphright} should use \type{\wordright} if its argument
  is narrower than \type{\hsize}, or make a right-aligned paragraph with it
  when it's wider.

  Below, \type{\wordorparagraphright} is tested with a short text, that
  has enough room on the same line.
  \blank

  Reference:

  \input ward\wordright{same line, right}

  \blank

  Implementation as a grouped command (it doesn't work):

  \input ward\groupedwordorparagraphright{same line, right}

  \blank

  Normal implementation, not as a grouped command (it works):

  \input ward\wordorparagraphright{same line, right}
\stoptext


Unfortunately the grouped version is the one I need, because it's used 
in a register, and it would give an error if not defined through 
\groupedcommand:


\setupregister[myregister]
  [pageleft=\wordorparagraphright\bgroup,pageright=\egroup]

TIA,
Massi
___
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___