Friday, November 25, 2005 Giuseppe Bilotta wrote:
> Thursday, November 24, 2005 Giuseppe Bilotta wrote:
>> I'm using the latest ConTeXt reported here, and I'm noticing
>> that partial contents for the second, third etc part are not
>> available. I have a bunch of files each of which goes like
>> \part{some part}
>> Some text (not always)
>> \placecontent
>> \chapter{some chapter}
>> Each of this file is \input from the master file. However,
>> only in the first part you actually see the (part-specific)
>> content: every other part reports
>> system : part,chapter,section,subsection not found/processed
>> The setup for the contents is as follows:
>> \setupcombinedlist[content]
>> [interaction=all,
>> partnumber=no,
>> alternative=c,
>> level=subsection]
>> \setuphead[part][alternative=middle,placehead=yes,resetnumber=no]
>> The problem is the 'resetnumber': if I take that off,
>> everything works perfectly.
> I've been debugging this, and the reason for the thing not
> coming up for parts after the first is that when
> resetnumber=no the current level is not properly detected:
> in one case you get
> \currentlevel ->:1
> in the other
> \currentlevel ->:2:2:4:2
> Which is obviously wrong. Indeed, the problem is here:
> \listentry{part}{1}{1}{Introduction}{2::1:0:0:0:0:0:0::7}{8}
> \listentry{chapter}{2}{1}{Presentation}{2::1:1:0:0:0:0:0::8}{9}
> \listentry{section}{3}{1.1}{History and
> motivation}{2::1:1:1:0:0:0:0::8}{9}
> \listentry{chapter}{11}{2}{The
> basics}{2::1:2:0:0:0:0:0::12}{13}
> \listentry{section}{12}{2.1}{Notation}{2::1:2:1:0:0:0:0::12}{13}
> (more stuff)
> \listentry{subsection}{78}{2.4.2}{Scaling the
> coordinate system}{2::1:2:4:2:0:0:0::31}{32}
> \listentry{part}{79}{2}{Mathematical
> tools}{2::2:2:4:2:0:0:0::34}{35}
> \listentry{chapter}{82}{3}{Bézier cubic
> analysis}{2::2:3:0:0:0:0:0::35}{36}
> OOOPSIE! Since resetnumber=no, the listentry keeps the old
> settings for chapter, section & the like. This is obviously
> wrong. Even if the number is not reset, the sectionformat
> *must* be reset, since at the beginning of the new
> higher section(level) you are not in the previous one
> anymore. So for example when starting a new part (with
> resetnumber=no), and until
> the first chapter of the new part is started we are in
> chapter 0 for that part, not in chapter
> 'last-chapter-from-previous-part'.
> Can this be fixed?
Ok, I came up with a solution that seems to work:
\def\definesection[#1]%
{\doifundefined{\??se#1}
{\doifelsenothing\firstsection
{\def\firstsection{#1}%
\setevalue{\??se#1\c!before}{\v!text}%
\setevalue{\??se\v!text\c!after}{#1}}
{\setevalue{\??se\commalistelement\c!after}{#1}%
\setevalue{\??se#1\c!before}{\lastsection}%
\setevalue{\??se\lastsection\c!after}{#1}}%
\advance\nofsections \plusone
\setevalue{\??se#1\c!level}{\the\nofsections}%
\letvalue{\??se#1\c!after}\empty
\setvalue{\e!next#1}{\@@nextsectionnumber{#1}}%
\setvalue{#1\c!number}{\@@longsectionnumber{#1}}%
\setvalue{#1\s!format}{\@@longformatnumber{#1}}%
\setevalue{\??by#1}{#1}%
\setevalue{\??by\v!by#1}{#1}%
\makecounter{\??se#1}%
\makecounter{\??se lastvalueof#1}% GB
\edef\lastsection{#1}%
\setvalue{\??sk#1}{#1}%
\letvalue{\??se#1\c!marking}\empty
\setupsection[#1][\c!previousnumber=\v!yes]}}%
% New command preserves the value of the next sectionlevel
% when resetnumber=no
\def\checkpreservevalueafter#1%
{\ifnum\getvalue{\??se#1\c!level}<\the\nofsections
\edef\preservedsection{\getvalue{\??se#1\c!after}}%
\ifconditional\@@resetsubheadnumbers
\setcounter{\??se lastvalueof\preservedsection}%
{0}%
\else
\setcounter{\??se lastvalueof\preservedsection}%
{\countervalue{\??se\preservedsection}}%
\fi
\fi}
\def\@@setsectionnumber#1#2%
{\letgvalueempty{\??se#1\s!start}% signal i.p.v. boolean
\setcounter{\??se#1}{#2}%
\checkpreservevalueafter{#1}
\resetsectioncounters{#1}
\checkpagecounter}
\def\@@nextsectionnumber#1%
{\letgvalueempty{\??se#1\s!start}% signal i.p.v. boolean
\ifnum\countervalue{\??se lastvalueof#1}>\zerocount
\setcounter{\??se#1}{\countervalue{\??se lastvalueof#1}}
\setcounter{\??se lastvalueof#1}{0}
\fi
\pluscounter{\??se#1}%
\checkpreservevalueafter{#1}
\resetsectioncounters{#1}
\checkpagecounter}
This has been tested in a fairly complex document (some
levels with resetnumber=no, some with the usual resetnumber;
sectionblocks etc). It works, and fixes the placecontent not
working. Will this go into mainline?
--
Giuseppe "Oblomov" Bilotta
_______________________________________________
ntg-context mailing list
[email protected]
http://www.ntg.nl/mailman/listinfo/ntg-context