[NTG-context] Preventing double title pages for nested content

Wolfgang Schuster schuster.wolfgang at gmail.com
Wed May 20 00:51:12 CEST 2015


> Am 20.05.2015 um 00:34 schrieb Kate F <kate at elide.org>:
> 
> Hello!
> 
> I'm collating some UNIX-like manpages into a PDF.
> I'm structuring the content like so:
> 
>  \setupcolors[state=start]
> 
>  \definehead[Volume] [part] % red colour: man(1) section
>  \definehead[Library][part] % blue colour: library within section 3
>  \definehead[Manpage][chapter]
> 
>  \setuphead[Volume,Library,Manpage][page=yes,number=no,placehead=yes]
>  \setuphead[Volume][color=red]
>  \setuphead[Library][color=blue]
> 
>  \starttext
>    \placecontent[list={Volume,Library,Manpage}]
> 
>    \startVolume[title=Section 1: Programs]
>        \dorecurse{3}{\startManpage[title=progxyz(1)] \input lorem \stopManpage}
>    \stopVolume
> 
>    \startVolume[title=Section 2: Syscalls]
>        \dorecurse{3}{\startManpage[title=syscallxyz(1)] \input lorem
> \stopManpage}
>    \stopVolume
> 
>    \startVolume[title=Section 3: Libraries]
>        \startLibrary[title=libjpeg]
>            \dorecurse{3}{\startManpage[title=jpegapi_a(3)] \input
> lorem \stopManpage}
>        \stopLibrary
>        \startLibrary[title=libpng]
>            \dorecurse{3}{\startManpage[title=pngapi_a(3)] \input
> lorem \stopManpage}
>        \stopLibrary
>        \startLibrary[title=libbmp]
>            \dorecurse{3}{\startManpage[title=bmpapi_a(3)] \input
> lorem \stopManpage}
>        \stopLibrary
>    \stopVolume
> 
>    \startVolume[title=Section 4: Drivers]
>        \dorecurse{3}{\startManpage[title=drvxyz(1)] \input lorem \stopManpage}
>    \stopVolume
> 
>    \startVolume[title=Section 7mk: Makefiles]
>        \dorecurse{3}{\startManpage[title=xyz.mk(1)] \input lorem \stopManpage}
>    \stopVolume
>  \stoptext
> 
> There I have grouped Volume 3 manpages into libraries. This grouping only
> applies to Volume 3.
> 
> I'd like a single "title" page for each Volume (which I show in red),
> except for section 3, where I'd like a title page for each Library
> (which I show in blue). So the pagination should look like:
> 
>  toc S1 ... S2 ... libjpeg ...  libpng ... libbmp ... S4 ...
> 
> Where S* there is a red title page, S3 is absent, and lib* are blue title pages.
> I'm trying to work out how best to do this.
> 
> Would you recommend I hide Volume 3's title page?
> I think that must be the simplest way, but I don't know how to do it
> using a setup.
> 
> My data is coming from XML, and I'd like to avoid having a special
> \startVolume for Volume 3, if I can. Although perhaps that could help.
> 
> Are there any other ways which might be more sensible?
> 
> I wondered about using \setuphead[something][continue=yes] to fold the
> first blue title pages onto the red title pages, but even if I can do that,
> I think it would make things more difficult for getting the text right on
> those pages.

Change your manpage headings to \chapter and test at the begin of each
new volume for the number of chapters (you can use the list mechanism
for this) in each volume.

%\setuphead[part][placehead=yes,after=\directsetup{chapterentries}]
\setuphead[part][placehead=empty,after=\directsetup{chapterentries}]

\startsetups[chapterentries]
  \determinelistcharacteristics[chapter]
  \ifcase\structurelistsize
    No chapter in this part.
  \or
    One chapter in this part.
  \else
    Two or more chapters in this part.
  \fi
\stopsetups

\starttext

\dorecurse{4}
  {\startpart[title=Part #1]
   \dorecurse{\ifcase#1\or 0\or 3\else 1\fi}
     {\startchapter[title=Chapter ##1]
	  \stopchapter}
   \stoppart}

\stoptext

Wolfgang


More information about the ntg-context mailing list