On Sat, 30 Dec 2006, Thomas Engel wrote: > Hello, > > i just playing a little bit with macros. > For adding points to a total sum i use this macros > > \global\newcount\summeP \summeP=0 > % ad the points of each question > \def\getPunkte[#1]{\global\advance\summeP by \number#1} > % show the points on the right side > \def\showP[#1]{\inright{\hskip 10mm \framed{#1} }} > % handle the points > \def\pkt[#1]% > {\showP[#1]% > \getPunkte[#1] } > > this is working well but my problem is I want to use \summeP on the > first page to show the total amount of points for the whole exam. > > I know that this needs a second run of texexec, but I don't know how to > store the value at the end of the file and reread this stored value in a > second run the get the right value.
Here is how to do the second run. I also use ConTeXt macros (\makecounter etc) instead of plain TeX. Be careful of spurious linebreaks. % It may be better to use \setcounter series of macros for managing counters. % First let us define a general macro for adding arbitrary number to a counter \unprotect \def\addtocounter#1#2% #1 name #2 value [EMAIL PROTECTED] \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 % \global\newcount\summeP \makecounter{Points} % I changed summeP to Points just to be consistent % \summeP=0 % \makecounter sets the value of counter to 0. % % ad the points of each question % \def\getPunkte[#1]{\global\advance\summeP by \number#1} % This macro is already been defined using numexpr above. % % show the points on the right side \def\showP[#1]{\inright{\hskip 10mm \framed{#1} }} % % handle the points \def\pkt[#1]% {\showP[#1]% % \getPunkte[#1] } \addtocounter{Points}{#1}} % % Now lets set up the two pass mechanism \def\nofPoints{0} % Number of points from previous run \definetwopasslist {Points} % variable where two pass data is stored % Need to execute this at the start of each file \def\checkPoints {\gettwopassdata{Points} % Retreive the two pass data \iftwopassdatafound \xdef \nofPoints {\twopassdata} \fi \global\let\checkproblems\relax} % An example usage \starttext \checkPoints \title{This exam is of \nofPoints\ Points} % Lets set 10 problems with different points \dorecurse{10} {\pkt[\recurselevel] \input tufte \endgraf} % Now the rest of the magic to take care of the two pass run % Basically this says that rerun if \nofPoints != % \countervalue{Points}. In the next run we set \nofPoints to the % previous value of \countervalue{Points} (the \checkPoints macro in % the beginning), so things should be stable after two runs. \savetwopassdata {Points} {\nofPoints} {\countervalue{Points}} \stoptext HTH, Aditya _______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context