![](https://secure.gravatar.com/avatar/c5ae4f9aa0d3a9bd5376e92b322c3e50.jpg?s=120&d=mm&r=g)
On Fri, 29 May 2020, Jan U. Hasecke wrote:
One and a half question. Why did you set \ChapterCounter explizitly and why is \ChapterCounter part of the datasetvariable?
\dataset... is a high level interface for collecting two-pass data in ConTeXt. Here is a simple example: \definedataset[name] \starttext The values of the three dataset variables are: \startlines \datasetvariable{name}{hash1}{key} \datasetvariable{name}{hash2}{key} \datasetvariable{name}{hash3}{key} \stoplines Now we set the values. \setdataset[name][hash1][key=value1] \setdataset[name][hash2][key=value2] \setdataset[name][hash3][key=value3] \stoptext Note that we are using the values stored in different hash-ids before they are defined. ConTeXt stores the values in the `.tuc` file and uses them. This is what is stored in the `.tuc` file: utilitydata.job.datasets.collected={ ["name"]={ ["hash1"]={ ["key"]="value1", }, ["hash2"]={ ["key"]="value2", }, ["hash3"]={ ["key"]="value3", }, }, } The magic of loading and reusing them happens behind the scenes, so the user doesn't have to worry about it. See https://wiki.contextgarden.net/System_Macros/Key_Value_Assignments#Multi-pas... for more details. Now, suppose you wanted to use the image defined as part of `\startchapter` as the background image of the _current_ page, then you could access the value of the \structureuservariable. For example, \startchapter[title=whatever][image=filename] \structureuservariable{image} \stopchapter But you want to use the value of the image _before_ the start of the chapter. So, Wolfgang is using the two-pass mechanism to store the value of the image in the database named 'chapter` in the hash-location `\ChapterCounter` and then retrieving it before it is defined! Aditya