Rudolf Bahr schrieb am 24.03.2020 um 19:04:
On Tue, Mar 24, 2020 at 04:43:17PM +0100, Wolfgang Schuster wrote:
\setbox0=\vbox{... somehow flushed text ...} wount work, i.e \wd0 or \ht0
will both result in 0. With "unflushed" text this means will work perfectly.

I have no idea where you get 0 (0pt?).

Nor do I, in the meantime. Sorry for my noise, I don't know what sort of
mistakes I did to get "0.0pt".
Corona? :-)

This is my test, which is essentially the same what Aditya suggests:
-----------------------------------------
\starttext

\setbox0=\vbox{\hsize=300pt\input ward }
\copy0

wd0=\the\wd0, ht0=\the\ht0

\vskip12pt

\startalign[flushleft]
\setbox1=\vbox{\hsize=300pt\input ward }
\stopalign
\copy1

wd1=\the\wd1, ht1=\the\ht1

\stoptext
-----------------------------------------
The .pdf-file is appended

When you need the height for the layer offset you can use \dowithnextbox because it hides \setbox etc.

\definelayer[TextBox]

\showframe[text][text]

\starttext

\dowithnextbox
  {\setlayer
     [TextBox]
     [x=\the\dimexpr(\textwidth -\nextboxwd)/3\relax,
      y=\the\dimexpr(\textheight-\nextboxht)/3\relax]
     {\flushnextbox}}
  \hbox{\framed[width=300pt,align=normal]{\samplefile{ward}}}

\flushlayer[TextBox]

\stoptext

Now to your proposal, Wolfgang:

\starttexdefinition NextboxDimension
   \starttabulate
   \NC Width  \EQ \the\nextboxwd \NC\NR
   \NC Height \NC \the\nextboxht \NC\NR
   \stoptabulate
\stoptexdefinition

\starttext

\dowithnextboxcs
   \NextboxDimension
   \vbox
     {\samplefile{ward}}

\dowithnextboxcs
   \NextboxDimension
   \vbox
     {\setupalign[flushright]
      \samplefile{ward}}

\dowithnextboxcs
   \NextboxDimension
   \vbox
     {\hsize=200pt
      \samplefile{ward}}

\dowithnextboxcs
   \NextboxDimension
   \vbox
     {\hsize=200pt
      \setupalign[flushright]
      \samplefile{ward}}

\stoptext

Up to now I cannot say anything about it, because there are some
commands which are new to me. I have to study them first.

The \dowithnextbox command stores the passed argument in the named box \nextbox and performs the content of the first argument (or the command when you use \dowithnextbox*cs*).

The get the width and height of the box you can use \wd\nextbox or the wrapper \nextboxwd. The content of the box can be flushed with \flushnextbox but when you need only a copy of it you have to use \copy\nextbox.

Wolfgang

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : [email protected] / 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
___________________________________________________________________________________

Reply via email to