[NTG-context] How to make this section header in ConTeXt?

Hans Hagen pragma at wxs.nl
Sat Jun 17 00:10:08 CEST 2006


Jeroen Heijmans wrote:
> Hi,
>
> I'm new to ConTeXt, but so far most things I wanted to do turned out  
> to be quite easy. However, now I'm trying to make a particular  
> section heading, but I can't get it right:
>
> |---------------------------------------------|
> |  SECTION HEADING            Key 1  Value 1  |
> |                             Key 2  Value 2  |
> |                             Key 3  Value 3  |
> |                             Key 4  Value 4  |
> |  Text                       Key 5  Value 5  |
> |---------------------------------------------|
>
> Or in text, a box containing a section heading in the left top, some  
> additional text in the left bottom, and a table with pairs of values  
> on the right side of the box.
>
> Getting a box with a section heading and some text was easy enough,  
> but I couldn't get the table where and how I wanted it. I also tried  
> to do all of it in a table, but I got errors when trying to put a  
> \section in the table. Any suggestion on how to do this will be  
> highly appreciated.
>   
rough approach

\setvariables
  [chapter]
  [title=,
   text=]

\startsetups chapter:reset

    \dorecurse {10} {
        \setvariables[chapter][key-\recurselevel=,value-\recurselevel=]
    }

\stopsetups

\startsetups chapter:make

    \setbox 0 = \vbox {
        \framed [align=normal,offset=overlay,frame=off] {
            \setuptabulate[before=,after=]
            \starttabulate[|l|l|]
                \dorecurse {10} {
                    \doifsomething{\getvariable{chapter}{key-\recurselevel}} {
                        \expanded { % first one not expanded anyway
                                      \NC \getvariable{chapter}{key-\recurselevel}
                            \noexpand \NC \getvariable{chapter}{value-\recurselevel}
                            \noexpand \NC \NR
                        }
                    }
                }
            \stoptabulate
        }
    }

    \setbox 2 = \hbox {
        \framed [align=normal,offset=overlay,frame=off] {
            \strut \getvariable{chapter}{title}
        }
    }

    \setbox 4 = \hbox {
        \framed [align=normal,offset=overlay,frame=off] {
            \strut \getvariable{chapter}{text}
        }
    }

    \ifdim \dimexpr\ht2+\ht4+\lineheight\relax < \ht0
        \edef\ChapterHeight{\the\ht0}
    \else
        \edef\ChapterHeight{\the\dimexpr\ht2+\ht4+\lineheight\relax}
    \fi

    \definelayer[chapter]
    \setuplayer[chapter][width=\textwidth,height=\ChapterHeight,offset=.5ex]
    \setlayer[chapter][preset=righttop]  {\box0}
    \setlayer[chapter][preset=lefttop]   {\box2}
    \setlayer[chapter][preset=leftbottom]{\box4}

    \framed[offset=overlay]{\tightlayer[chapter]}

    \setups[chapter:reset]

\stopsetups

\setups[chapter:reset]

\starttext

\setvariables
  [chapter]
  [title={some title},
   text={some text},
   key-1=bla,
   value-1=whow,
   key-2=more bla,
   value-2=more whow]

\setups[chapter:make]

\input tufte

\setvariables
  [chapter]
  [title={another title},
   text={another text},
   key-1=bla bla,
   value-1=whow whow,
   key-2=less bla,
   value-2=less whow]

\setups[chapter:make]

\input tufte

\setvariables
  [chapter]
  [title={another title},
   text={another text},
   key-1=bla bla,
   value-1=whow whow,
   key-2=less bla,
   value-2=less whow,
   key-3=bla bla,
   value-3=whow whow,
   key-4=less bla,
   value-4=less whow]

\setups[chapter:make]

\input tufte

\stoptext



-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                             | www.pragma-pod.nl
-----------------------------------------------------------------



More information about the ntg-context mailing list