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