# [NTG-context] store counter or variable and reread again

Sun Dec 31 00:51:34 CET 2006

On Sat, 30 Dec 2006, Aditya Mahajan wrote:

> On Sat, 30 Dec 2006, Hans Hagen wrote:
>
> >
> > \savecurrentvalue\SomeVar{someval}
>
> I was just copying the way it is done with other macros \lastpage,
> etc. I will look at \savecurrentvalue also.

Ahh, \lastpage uses \savecurrentvalue. I was pretty sure that I copied
the twopass some time back from \lastpage. Maybe I was dreaming, maybe
you are changing the internals too fast for me to keep up. Anyways, to
make ammends, here is the solution using \savecurrentvalue

% It may be better to use \setcounter series of macros.
% First let us define a general macro for adding arbitrary number to a counter

\unprotect
{\@EA\xdef\csname#1\endcsname{\the\numexpr\csname#1\endcsname+#2\relax}}
\protect

% To Hans and Taco: Should the above macro be added to syst-ext?

% Now lets define everything in terms of ConTeXt's counter macros

\makecounter{Points}

% %   show the points on the right side
\def\showP[#1]{\inright{\hskip 10mm \framed{#1} }}

\def\pkt[#1]%
{\showP[#1]%
%

\def\nofPoints{0} % Number of points from previous run

\def\savenofPoints
{\savecurrentvalue\nofPoints{\countervalue{Points}}}

% It is a bit boring to type \savenofPoints everytime

\appendtoks \savenofPoints \to \everystoptext

% An example usage

\starttext

\title{This exam is of \nofPoints\ Points}

% Lets set 10 problems with different points
\dorecurse{10}
{\pkt[\recurselevel] \input tufte \endgraf}

\stoptext

The whole things is much shorter :)

Hans, I just noticed that \everystarttext is executed at the start of
components and products, while \everystoptext is not. Does it make
sense to define \stopcomponet and \stopproduct so that \everystoptext
is executed?