Otared Kavian
5. November 2016 um 18:34
Hi Wolfgang, Hi Mikael,

Thank you both for your great inputs!

I tried to modify the code each of you sent yesterday in order to « couple » automatically each question with its answer, using the keyword « coupling=… », but somehow I am unable to create automatic references by extracting the number of each question or that of each answer, for example by using \rawcountervalue,
or \currentconstructionnumber. Strangely the latter gives the name of the construction and not a number: is it on purpose?
The \currentconstructionnumber command contains the name of the counter but getting the counter value won’t help because it comes too late.
The solution Wolfgang proposes today, using the new keyword referenceprefix, is almost perfect: however would it possible to create a version of
« currentconstructionreference » which creates a reference named for instance
answer:NumberOfCurentConstruction
The referenceprefix key is only usefull when you set the reference by hand.
The reason for which I need such a construction is that in a document with hundreds or more exercise —> hint —> solution, it would be handy to avoid creating each time a manual reference, and then one would navigate from a Question to its Hint and then  back to the Question or go to its Answer.
When you always all three elements (question, hint and answer) you can increment
a counter at the begin of each element and create a page reference which contains
the value of the counter.

Below is a modified version of my previous example for this method.

%%%% begin example
\setupinteraction[state=start]

\define[1]\QuestionTextCommand
  {\doglobal\increment\QuestionCounter
   \pagereference[question:\QuestionCounter]%
   \doifreferencefoundelse{answer:\QuestionCounter}
     {\goto{#1}[answer:\QuestionCounter]}
     {#1}}

\define[1]\AnswerTextCommand
  {\doglobal\increment\AnswerCounter
   \pagereference[answer:\AnswerCounter]%
   \doifreferencefoundelse{question:\AnswerCounter}
     {\goto{#1}[question:\AnswerCounter]}
     {#1}}

\defineenumeration
  [question]
  [text=Question,
   headcommand=\QuestionTextCommand]

\defineenumeration
  [answer]
  [text=Answer,
   headcommand=\AnswerTextCommand]

\defineblock[answer]

\startbuffer
    %
    \startquestion
    \input knuth
    \stopquestion
    %
    \beginanswer
        \startanswer
        \input knuth
        \stopanswer
    \endanswer
    %
\stopbuffer

\starttext

\dorecurse{10}{\getbuffer}

\page

\useblocks[answer]

\stoptext
%%%% end example

Wolfgang