Re[2]: [NTG-context] No partial contents for parts after the first

2005-11-28 Thread Giuseppe Bilotta
Monday, November 28, 2005 Hans Hagen wrote:

 sure, but i need a small test file -)

\setuphead[part][placehead=yes,resetnumber=no]

\starttext

\part{Part one}

\placecontent

\chapter{One}

\section{One-one}

\chapter{Two}

\section{Two-one}

\part{Part two}

\placecontent

\chapter{Three}

\chapter{Four}

\section{Four-one}

\stoptext




___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


Re[2]: [NTG-context] No partial contents for parts after the first

2005-11-26 Thread Giuseppe Bilotta
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
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context