ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Carsten Fechtmann <fecht@zarm-technik.de>
To: ntg-context@ntg.nl
Subject: Bug or feature? Strange counter behaviour in macro
Date: Fri, 11 Jan 2008 19:13:04 +0100	[thread overview]
Message-ID: <FD4571E3-AC92-4BDE-94EE-AFE7A970F6E0@zarm-technik.de> (raw)


Hello everyone,

first off: I am new to ConTeXt (even if not so new to LaTeX)
and would like to transfer some of my old macros to ConTeXt...

I am well aware, that this means re-programming (most) of them.
So be it.

Furthermore, I am not sure if this is really the right way (read  
ConTeXt Way) to do it.
It just looked like a good idea at the time ...

However, I just hit a snuff with the following:

If one places \NewIssue[Some Time] somewhere in the text, it should  
result in a new (issue / timestamp) to be generated, which can then  
placed in a list of issues / changes.

I also want to be able to make use of the last value Issue to be  
placed in the header, same goes for the last timestamp

Now this is how I went out to do this in ConTeXt (maybe wrongly so?)
following the manual and some examples on contextwiki

%---------------  code below  -----------------------
\definesynonyms[Issue][issues][\IssueText][\IssueDate]
\setupsynonyms[Issue][criterium=all]

\newcounter\IssueCounter

\definenumber[IssueNumber]

\def\TempIssueText{%			
%% This was the (seemingly) only way to get any value beside 0
%% 	from \getnumber within doAddIssue
%% Original place for
\incrementnumber[IssueNumber]
	Issue~\getnumber[IssueNumber]:
}
\def\NewIssue{\dosingleargument\doNewIssue}
\def\doNewIssue[#1]{%
	\increment\IssueCounter  % This one works correctly.
%% Alternative place for
%\incrementnumber[IssueNumber]

%% if placed here instead of in \TempIssueText
%% a DIFFERENT, but still wrong result comes out
%% that is: Debug shows the right progression,
%% but ALL "Issue x" Numbers are set to the last one
	Debug: \IssueCounter / \getnumber[IssueNumber]%
%% but alas I can't seem to make this work with the following lines :-(
	\doifempty{#1}{\Issue[\IssueCounter]{\TempIssueText}{\currentdate}}
	\doifnotempty{#1}{\Issue[\IssueCounter]{\TempIssueText}{#1}}
%% Note: Using \dofiemptyelse gives the same result,
%% I just wanted to make sure here that I am /really/ not calling it  
twice,
%% somehow, by being able to disable each case, separately and  
definitely.
	-- \IssueCounter / \getnumber[IssueNumber]
	\crlf
}
% -- -- -- -- -- --
\starttext
\NewIssue[January 9, 2008]
\NewIssue[January 10, 2008]
\NewIssue 			% January 11, 2008

List of issue \# and dates:

\placelistofissues \blank

\IssueDate{\IssueCounter} % produces correct result in either case

\stoptext
%---------------  code above  -----------------------

  Result as printed out by original version
----------------------------------------------
  Debug: 1/ 0 – 1/ 0
  Debug: 2/ 0 – 2/ 0
  Debug: 3/ 0 – 3/ 0

  List of issue # and dates:
  Issue 2: January 9, 2008
  Issue 4: January 10, 2008
  Issue 6: January 11, 2008

  January 11, 2008
------------------------------
So while \IssueCounter is updated correctly and used with the right  
values,
\getnumber[IssueNumber] always sees / reports the original value
However, the value in \placelistofissues are twice what they should be?!

This is changed if one places \incrementnumber[IssueNumber] INSIDE of  
\doAddIssue
Here, \getnumber[IssueNumber] does report the right value (same as  
IssueCounter)
However, in that case the result looks like this:

  Result as printed out by alternative version
----------------------------------------------
Debug: 1/ 1 – 1/ 1
Debug: 2/ 2 – 2/ 2
Debug: 3/ 3 – 3/ 3

List of issue # and dates:

Issue 3: January 9, 2008
Issue 3: January 10, 2008
Issue 3: January 11, 2008

January 11, 2008
------------------------
In short, while now the value of \getnumber[IssueNumber] is correct  
before and after,
its value in \placelistofissues is always the last value, i.e. equal  
to the total number of issues.

And this does NOT even change, when one replaces
	Issue~\getnumber[IssueNumber]:
	Issue~\IssueCounter:
in \TempIssueText

So for some reason, \TempIssueText is called twice ? How? Where?

Unfortunately, my ConTeXt.foo is not yet good enough to make it over  
the TeX.bar here
as I haven't found a way to make this work (preferably with  
\IssueCounter
as all this \XXXnumber stuff does not seem to work the way I think it  
should, anyway...)

And yes, ANY help with this is very welcome by now

Sincerely
Carsten

P.S: Context version is 2007.01.12 15:56 / TeXlive / OS X

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

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


             reply	other threads:[~2008-01-11 18:13 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-11 18:13 Carsten Fechtmann [this message]
2008-01-12 17:44 ` Aditya Mahajan
2008-01-12 19:45   ` Carsten Fechtmann
2008-01-12 22:29     ` Aditya Mahajan
2008-01-12 23:52       ` Carsten Fechtmann
2008-01-13  2:40         ` Aditya Mahajan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=FD4571E3-AC92-4BDE-94EE-AFE7A970F6E0@zarm-technik.de \
    --to=fecht@zarm-technik.de \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).