* Bug or feature? Strange counter behaviour in macro
@ 2008-01-11 18:13 Carsten Fechtmann
2008-01-12 17:44 ` Aditya Mahajan
0 siblings, 1 reply; 6+ messages in thread
From: Carsten Fechtmann @ 2008-01-11 18:13 UTC (permalink / raw)
To: ntg-context
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Bug or feature? Strange counter behaviour in macro
2008-01-11 18:13 Bug or feature? Strange counter behaviour in macro Carsten Fechtmann
@ 2008-01-12 17:44 ` Aditya Mahajan
2008-01-12 19:45 ` Carsten Fechtmann
0 siblings, 1 reply; 6+ messages in thread
From: Aditya Mahajan @ 2008-01-12 17:44 UTC (permalink / raw)
To: mailing list for ConTeXt users
[-- Attachment #1: Type: TEXT/PLAIN, Size: 5679 bytes --]
Hi Carsten,
On Fri, 11 Jan 2008, Carsten Fechtmann wrote:
> 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.
Have you looked at enumerations? They provide a way to something very
similar to what you want.
> 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.
\defineenuemration[Issue][title=yes]
\Issue[one]{January 9, 2008} blah blah blah
\Issue[two]{January 10, 2008} more blah blah blah
In issue \in[one] we wrote what we did on \about[one]
> 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
Another option may to think of issue as a section (or subsection)
\definehead[Issue][section]
\Issue {Jan 9, 2008} What we did at that time.
\Issue {Jan 10, 2008} something else
\stoptext
Then you can use \setupheadertexts[issue] to get the current issue in the
header.
> Now this is how I went out to do this in ConTeXt (maybe wrongly so?)
> following the manual and some examples on contextwiki
I haven't looked at your code below. First check if one the in-built
stuctural environments of ConTeXt do what you want.
Aditya
> %--------------- 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
> ___________________________________________________________________________________
>
>
>
[-- Attachment #2: Type: text/plain, Size: 487 bytes --]
___________________________________________________________________________________
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Bug or feature? Strange counter behaviour in macro
2008-01-12 17:44 ` Aditya Mahajan
@ 2008-01-12 19:45 ` Carsten Fechtmann
2008-01-12 22:29 ` Aditya Mahajan
0 siblings, 1 reply; 6+ messages in thread
From: Carsten Fechtmann @ 2008-01-12 19:45 UTC (permalink / raw)
To: mailing list for ConTeXt users
Hi Aditya,
thanks for taking the time to answer this. And yes, I looked at what
ConTeXt has already built in.
On 12.01.2008 at 18:44 wrote Aditya Mahajan:
> I haven't looked at your code below. First check if one the in-built
> stuctural environments of ConTeXt do what you want.
As a matter of fact, I am using the following for all the heavy stuff
(implementing that in LaTeX is/was a REAL pain)
\definesynonyms[Issue][issues][\IssueText][\IssueDate]
\setupsynonyms[Issue][criterium=all]
\Issue[1]{Issue 1:}{Some Date}
\Issue[2]{Issue 2:}{\currentdate}
and if I just put the values in by hand, it works like a champ. Sorted
list and all. ;-D
Took me less than 5 minutes to implement (read: find in the manual).
Just gonna _love_ ConTeXt for that!
Now, with such a nice success (and because I have much more "counter"
stuff on the way)
I was feeling lucky ...
and spent the next 5 hours figuring out / searching on the web / going
over the source
how to have the "number" for each issue placed automatically, every
time a new issue date is set.
Yes, sure, I could just _write_ that in, but then I would have to
check myself,
which number is exactly the one I need, and not have the computer do
it for me.
But, hey where is the fun in that? ;-)
What this all burns down is, that I /really/ would like to understand,
how I can pass a value from a counter as (constant) argument to a self-
defined function. As that seems to be the core of the matter/problem
here.
Any suggestions?
Cheers
Carsten
>
___________________________________________________________________________________
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Bug or feature? Strange counter behaviour in macro
2008-01-12 19:45 ` Carsten Fechtmann
@ 2008-01-12 22:29 ` Aditya Mahajan
2008-01-12 23:52 ` Carsten Fechtmann
0 siblings, 1 reply; 6+ messages in thread
From: Aditya Mahajan @ 2008-01-12 22:29 UTC (permalink / raw)
To: mailing list for ConTeXt users
Hi Carsten,
On Sat, 12 Jan 2008, Carsten Fechtmann wrote:
> What this all burns down is, that I /really/ would like to understand,
> how I can pass a value from a counter as (constant) argument to a self-
> defined function. As that seems to be the core of the matter/problem
> here.
You need to understand how synonyms work. It writes enteries to the tuo
file, and then uses that in the second pass to sort things. One way to
make sure that you have the correct entry in the tuo file is to use
expanded:
\definesynonyms[Issue][issues][\IssueText][\IssueDate]
\setupsynonyms[Issue][criterium=all]
\newcounter\IssueCounter
\def\NewIssue{\dosingleargument\doNewIssue}
\def\doNewIssue[#1]%
{\increment\IssueCounter
%Debug: \IssueCounter / \getnumber[IssueNumber]%
\doifelsenothing{#1}
{\expanded{\Issue[\IssueCounter]{\IssueCounter}{\currentdate}}}
{\expanded{\Issue[\IssueCounter]{\IssueCounter}{#1}}}}
% Compare the tuo file with and without expanded and you will know what is
% happening.
\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
Aditya
___________________________________________________________________________________
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Bug or feature? Strange counter behaviour in macro
2008-01-12 22:29 ` Aditya Mahajan
@ 2008-01-12 23:52 ` Carsten Fechtmann
2008-01-13 2:40 ` Aditya Mahajan
0 siblings, 1 reply; 6+ messages in thread
From: Carsten Fechtmann @ 2008-01-12 23:52 UTC (permalink / raw)
To: mailing list for ConTeXt users
Hi Aditya,
yes, looking at the .tuo did the trick. :-D
I had tried things with expanded already, but at that time I still had
> {\expanded{\Issue[\IssueCounter]{Issue~\IssueCounter:}{\currentdate}}}
as command. Which does NOT work (due to the tilde ~ resulting in an
error message then)
The rest was actually fine. Now, without it (i.e. "~") it works!
...
{\expanded{\Issue[\IssueCounter]{Issue: \IssueCounter:}{\currentdate}}}
...
Thanks a lot, that had me seriously baffled ;-)
Carsten
On 12.01.2008 at 23:29 wrote Aditya Mahajan:
> Hi Carsten,
>
> On Sat, 12 Jan 2008, Carsten Fechtmann wrote:
>
>> What this all burns down is, that I /really/ would like to
>> understand,
>> how I can pass a value from a counter as (constant) argument to a
>> self-
>> defined function. As that seems to be the core of the matter/problem
>> here.
>
> You need to understand how synonyms work. It writes enteries to the
> tuo
> file, and then uses that in the second pass to sort things. One way to
> make sure that you have the correct entry in the tuo file is to use
> expanded:
>
> \definesynonyms[Issue][issues][\IssueText][\IssueDate]
> \setupsynonyms[Issue][criterium=all]
>
> \newcounter\IssueCounter
>
> \def\NewIssue{\dosingleargument\doNewIssue}
>
> \def\doNewIssue[#1]%
> {\increment\IssueCounter
> %Debug: \IssueCounter / \getnumber[IssueNumber]%
> \doifelsenothing{#1}
> {\expanded{\Issue[\IssueCounter]{\IssueCounter}{\currentdate}}}
> {\expanded{\Issue[\IssueCounter]{\IssueCounter}{#1}}}}
>
> % Compare the tuo file with and without expanded and you will know
> what is
> % happening.
>
> \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
>
> Aditya
> ___________________________________________________________________________________
> 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
> ___________________________________________________________________________________
___________________________________________________________________________________
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Bug or feature? Strange counter behaviour in macro
2008-01-12 23:52 ` Carsten Fechtmann
@ 2008-01-13 2:40 ` Aditya Mahajan
0 siblings, 0 replies; 6+ messages in thread
From: Aditya Mahajan @ 2008-01-13 2:40 UTC (permalink / raw)
To: mailing list for ConTeXt users
On Sun, 13 Jan 2008, Carsten Fechtmann wrote:
> Hi Aditya,
>
> yes, looking at the .tuo did the trick. :-D
>
> I had tried things with expanded already, but at that time I still had
>> {\expanded{\Issue[\IssueCounter]{Issue~\IssueCounter:}{\currentdate}}}
> as command. Which does NOT work (due to the tilde ~ resulting in an
> error message then)
\nonbreakablespace works instead of ~.
Aditya
___________________________________________________________________________________
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-01-13 2:40 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-01-11 18:13 Bug or feature? Strange counter behaviour in macro Carsten Fechtmann
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
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).