[NTG-context] calculating with dimension unit

Wolfgang Schuster schuster.wolfgang at gmail.com
Mon Apr 22 12:43:19 CEST 2013


Am 22.04.2013 um 10:14 schrieb Hans Hagen <pragma at wxs.nl>:

> On 4/22/2013 8:48 AM, Wolfgang Schuster wrote:
>> 
>> Am 22.04.2013 um 01:13 schrieb Jan Heinen <JaHeinen at gmx.de>:
>> 
>>> In a book I produced with ConTeXt last year, I did a lot of calculation to be able to change the layout dynamicaly.
>>> 
>>> With the actual version of ConTeXt I can't compile the book. I have tried a lot of things today ... without success.
>>> I hope my minimal-example helps you to understand, what I want to do - and what I am doing wrong:
>>> 
>>> 
>>> \starttext
>>> \setupexternalfigures[location={local,global,default}]
>>> 
>>> \defineexpandable\ColumnA    {30mm}
>>> \defineexpandable\ColumnB    {40mm}
>>> \defineexpandable\ColumnABi    {\dimexpr(\ColumnA + \ColumnB)}
>>> \defineexpandable\ColumnABii   {\ctxlua{context(\ColumnA + \ColumnB)}}
>>> \newdimen\ColumnABiii \ColumnABiii = \dimexpr(\ColumnA + \ColumnB)
>> 
>> \definemeasure[ColumnA][30mm]
>> \definemeasure[ColumnB][40mm]
>> \definemeasure[ColumnBi][\the\dimexpr(\measure{ColumnA}+\measure{ColumnB})]
> 
> FYI: \the\dimexpr... will look ahead till there's something nonexpandable, and contrary to what one expects
> 
> \dimexpr(...)
> 
> will not stop at the ) so, although with measures it normally goes okay, personally I always use \relax as terminator; the \relax will be eaten up so there is no interference but it guarantees to stop scanning.

AFAIR the etex already mentions it.

> (I've been wondering if we should make measured \the\dimexpr..\relax internally which can save dimexpr at the user end.)

+1

Wolfgang


More information about the ntg-context mailing list