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
- \resetcounter
- \incrementcounter
- \decrementcounter
- \savecounter
- \restorecounter
- \rawcountervalue (not \getcounter)
- \setupheadnumber
Contents
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.