On Fri, 14 Sep 2012, Wolfgang Schuster wrote:


Am 14.09.2012 um 00:36 schrieb Aditya Mahajan <adit...@umich.edu>:

I have been able to isolate the bug to the update on 2012.07.09; specifically 
to this commit.

http://repo.or.cz/w/context.git/blobdiff/6f124794f7dc253f8b83f2517c26ce17e50d66ff..refs/heads/origin:/tex/context/base/strc-num.mkiv

If I replace the current version of strc-num.mkiv with the version from 
2012.07.09:
http://repo.or.cz/w/context.git/blob_plain/6f124794f7dc253f8b83f2517c26ce17e50d66ff:/tex/context/base/strc-num.mkiv

then the numbering is correct.

However, I cannot figure out what is causing the bug in that change.

Part of the problem is this code block:

\def\strc_counters_check_setup#1% does it have to happen here?
 {% this can be done at the lua end / a bit messy here ... todo ...
  \ifcsname\??counter#1\c!number\endcsname
       \doifelsevalue   {\??counter#1\c!number}{#1} 
{\letbeundefined{\??counter#1\c!number}}%
      {\doifvaluenothing{\??counter#1\c!number}     
{\letbeundefined{\??counter#1\c!number}}}%
  \fi
  \ifcsname\??counter#1\c!number\endcsname
    % it's a clone
  \else
    \edef\currentcounterlevel{\thenamedcounterlevel{#1}}%
    \edef\p_start{\counterparameter{#1}\c!start}%
    
\ctxcommand{checkcountersetup("#1",\currentcounterlevel,\ifx\p_start\empty0\else\number\p_start\fi,"\counterparameter{#1}\c!state")}%
  \fi}

ConTeXt uses \p_start to store the current value of the start parameter.
When you set now a value for start in \setuppagenumber the value is kept
in \p_start (because there are no groups). When you start now the itemize
environment the same code is loaded and the start parameter (which hasn’t
been set yet) expands to a very stupid default value which is by another
helper function.

\def\strc_counter_setup_using_parameter#1#2% name \someparameter
 {\edef\p_start{#2\c!start}%
  \setupcounter
    [#1]
    [              \c!start=\ifx\p_start\empty0\else\number\p_start\fi,
                          ...
          \c!numbersegments=#2\c!numbersegments]}


As you can see here the start parameter expands to \p_start when it isn’t empty
what is the case here and because of this you get a wrong value for the item 
numbers.

Thanks for the diagnosis. What will be a good way to fix this? I think that

\expanded{\setupcounter[#1][\c!start=\ifx\p_start\empty0\else\number\p_start\fi.,...]}

should work (but I haven't tested it yet).

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  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to