Counters
< Main Page | Inside ConTeXt >
ConTeXt provides a higher layer of API to access various counters. For example, to set the page number to a certain value use \setcounter:
\setcounter[userpage][1]
Other useful commands for working with counters are
Names of Commonly Used Counters
userpage
for visible pagenumberspage
for internal pagenumbersformula
for formula numberstable
for table numbersfigure
for figure numbers
Testing the Value of a Counter
If you need to test the value of a counter, use \rawcountervalue, not \getcounter:
\definecounter[mynumber][] \setcounter[mynumber][42] \doifelse{\getcounter[mynumber]}{42}{ Strange, \type{\getcounter} worked. }{ Using \type{\getcounter} does not work. } \doifelse{\rawcountervalue[mynumber]}{42}{ Ok, the test with \type{\rawcountervalue} worked. }{ Strange, \type{\rawcountervalue} failed. }
results in:
In LMTX, \getcounter seems to be generally defunct.
Coupling Counters
Two counters can be coupled by
\definecounter[one] \definecounter[two][one]
For example
\definecounter[one] \definecounter[two][one] Default value of counter one: \rawcountervalue[one] We increment counter two \incrementcounter[two] New value of counter one: \rawcountervalue[one]
By default counters are reset with each new chapter. To have a counter which isn’t reset you need way=bytext
, and to remove the chapter number from the \getcounter result you have to add prefix=no
.
Example definition:
\definecounter[examplecounter][way=bytext,prefix=no]
Outdated information
Forcing the Reset of a Counter
In 2015, there was a bug that counters were reset (by chapter, page, etc.) only when they were incremented.
To force the reset, you can increment and then decrement a counter before using it.
\definecounter[mycounter][way=bypage] \setcounter[mycounter][10] \rawcountervalue[mycounter] \page % new page, mycounter should be reset \rawcountervalue[mycounter] % no, it's not reset: you still get '10' \incrementcounter[mycounter]\decrementcounter[mycounter] \rawcountervalue[mycounter] % now you should get '0' because it has been reset
\definenumber or \definecounter ?
\definenumber etc. are obsolete aliases for \definecounter etc.