Difference between revisions of "Titles"

From Wiki
Jump to navigation Jump to search
m (Added a backslash to make the exemple compile)
(36 intermediate revisions by 21 users not shown)
Line 5: Line 5:
 
Titles define the structure of your document. Decide yourself, how deep you want to nest them:
 
Titles define the structure of your document. Decide yourself, how deep you want to nest them:
  
<table>
+
{| class=wikitable
<tr bgcolor="#CCCCCC">
+
! Numbered !! Unnumbered
<th>numbered</th>
+
|-
<th>unnumbered</th>
+
| {{cmd|part}} || &#151;
</tr>
+
|-
<tr>
+
| {{cmd|chapter}} || {{cmd|title}}
<td><cmd>part</cmd>
+
|-
</td><td>&#151;</td>
+
| {{cmd|section}} || {{cmd|subject}}
</tr>
+
|-
<tr>
+
| {{cmd|subsection}} || {{cmd|subsubject}}
<td><cmd>chapter</cmd></td>
+
|-
<td><cmd>title</cmd></td>
+
| {{cmd|subsubsection}} || {{cmd|subsubsubject}}
</tr>
+
|-
<tr>
+
| ... || ...
<td><cmd>section</cmd></td>
+
|}
<td><cmd>subject</cmd></td>
 
</tr>
 
<tr>
 
<td><cmd>subsection</cmd></td>
 
<td><cmd>subsubject</cmd></td>
 
</tr>
 
<tr>
 
<td><cmd>subsubsection</cmd></td>
 
<td><cmd>subsubsubject</cmd></td>
 
</tr>
 
<tr>
 
<td>...</td>
 
<td>...</td>
 
</tr>
 
</table>
 
  
The ''unnumbered'' versions don't appear in a table of contents! But you can
+
The unnumbered versions don't appear in a table of contents! To change that, see the section on [[#Unnumbered_titles_in_table_of_contents|Unnumbered titles in the table of contents]].
switch off the numbering of the ''numbered'' versions with <cmd>setuphead</cmd>
 
to get unnumbered titles ''and'' a toc (confusing?).
 
  
Also note that in the front matter of the document, all titles are unnumbered
+
Also note that in the front matter of the document, all titles are unnumbered by default. The titles from the 'numbered' category still show up in the table of contents, though, and the titles from the 'unnumbered' category still don't.
by default. In this case, the only difference between the "numbered" and
 
"unnumbered" titles is that the latter don't show up in the table of contents.
 
  
 
===Referencing Titles===
 
===Referencing Titles===
Line 57: Line 38:
 
<texcode>
 
<texcode>
 
\at{page}[hasselt-by-night].
 
\at{page}[hasselt-by-night].
 +
</texcode>
  
(see <cmd>at</cmd>)
+
See {{cmd|at}}.
</texcode>
 
  
 
Note that reference labels are limited to ASCII characters in traditional TeX.
 
Note that reference labels are limited to ASCII characters in traditional TeX.
 
This limitation has been removed in ConTeXt mkiv.
 
This limitation has been removed in ConTeXt mkiv.
 +
 +
==New MkIV Sectioning==
 +
 +
ConTeXt MkIV adds several new commands which supersede the older {{cmd|chapter}}, {{cmd|section}} etc.  The new commands are more verbose, but also more flexible, and allow better support for tagged-PDF, XML and ePUB output.
 +
 +
{| class=wikitable
 +
! Traditional !! New
 +
|-
 +
| {{cmd|part}} || {{cmd|startpart}}
 +
|-
 +
| {{cmd|chapter}} || {{cmd|startchapter}}
 +
|-
 +
| {{cmd|section}} || {{cmd|startsection}}
 +
|-
 +
| {{cmd|subsection}} || {{cmd|startsubsection}}
 +
|-
 +
| {{cmd|subsubsection}} || {{cmd|startsubsubsection}}
 +
|-
 +
| {{cmd|title}} || {{cmd|starttitle}}
 +
|-
 +
| {{cmd|subject}} || {{cmd|startsubject}}
 +
|-
 +
| ... || ...
 +
|}
 +
 +
Each of these start-commands has a corresponding stop-command which should be used at the end of the section.  For example:
 +
 +
<context mode=mkiv source=yes text=produces>
 +
% mode=mkiv
 +
\setuppapersize[A5]
 +
 +
\section[sec:old]{Old Section}
 +
 +
This is an old-style \ConTeXt\ section.
 +
 +
\startsection
 +
  [
 +
        title={New Section},
 +
        reference=sec:new,
 +
  ]
 +
 +
This is a new-style section.
 +
\stopsection
 +
</context>
 +
 +
The following keys are available for the start-commands:
 +
 +
{| class=wikitable
 +
! Key !! Description
 +
|-
 +
| reference= || The reference key for cross-referencing (with {{cmd|at}}, {{cmd|in}} etc.)
 +
|-
 +
| title= || The title of the section
 +
|-
 +
| list= || The title to show in the table of contents, if different
 +
|-
 +
| bookmark= || The title to show in the PDF bookmarks, if different
 +
|-
 +
| marking= || The title to use in the section marking, if different
 +
|-
 +
| label= || ?
 +
|}
 +
 +
It is also possible to set per-section variables, and retrieve them with the {{cmd|structureuservariable}} command:
 +
 +
<context mode=mkiv source=yes text=produces>
 +
% mode=mkiv
 +
\setuppapersize[A5]
 +
 +
\startchapter[title={Foo Bar}][foo=bar]
 +
 +
foo is \quote{\structureuservariable{foo}}
 +
 +
\stopchapter
 +
 +
</context>
  
 
==Titling Style==
 
==Titling Style==
  
see <cmd>setuphead</cmd> and some enhanced samples below.
+
see {{cmd|setuphead}} and some enhanced samples below.
  
A FAQ is how to get a line under the title:
+
A FAQ is, how to get a line under the pageheader:
  
 
<texcode>
 
<texcode>
\setupbackgrounds[header][text][bottomframe=on]
+
\setupheader[after=\hrule]
 
</texcode>
 
</texcode>
  
Line 89: Line 146:
  
 
<texcode>
 
<texcode>
\setuphead[chapter][align={flushleft, nothyphenated, verytolerant}] % "flushleft" is the same as "right"
+
\setuphead[chapter][align={flushleft, nothyphenated, verytolerant}]
 
</texcode>
 
</texcode>
  
Line 95: Line 152:
  
 
If you want you may have colors on your document's chapters or sections.
 
If you want you may have colors on your document's chapters or sections.
To do that you should use <cmd>setuphead</cmd>. Take a look at the following
+
To do that you should use {{cmd|setuphead}}. Take a look at the following
 
example:
 
example:
  
Line 152: Line 209:
 
</texcode>
 
</texcode>
  
A new header <cmd>myheader</cmd> is defined and it inherits the properties
+
A new header {{cmd|myheader}} is defined and it inherits the properties
of <cmd>section</cmd> (title, subject, whatever). You can ''define'' several
+
of {{cmd|section}} (title, subject, whatever). You can ''define'' several
 
headers at once!
 
headers at once!
  
==Formatting Titles with <cmd>setuphead</cmd>==
+
==Formatting Titles with {{cmd|setuphead}}==
  
<cmd>setuphead</cmd> accepts a number of parameters which change the style of
+
The following parameters to {{cmd|setuphead}} change the style of
the heading. At least the following commands are available:
+
the heading.  
  
<table>
+
{| class=wikitable
<tr bgcolor="#CCCCCC">
+
|-
<th>text</th>
+
! Text !! Number
<th>number</th>
+
|-
</tr>
+
| textstyle
<tr>
+
| numberstyle
<td><tt>textstyle</tt></td>
+
|-
<td><tt>numberstyle</tt></td>
+
| textcommand
</tr>
+
| numbercommand
<tr>
+
|-
<td><tt>textcommand</tt></td>
+
| deeptextcommand
<td><tt>numbercommand</tt></td>
+
| deepnumbercommand
</tr>
+
|-
<tr>
+
|}
<td><tt>deeptextcommand</tt></td>
 
<td><tt>deepnumbercommand</tt></td>
 
</tr>
 
</table>
 
  
Quite obviously, the number-commands work on the chapter/section/etc. number,
+
Quite obviously, the number commands work on the chapter/section/etc. number,
 
their text counterparts change the text itself. However, there are differences
 
their text counterparts change the text itself. However, there are differences
 
between <tt>style</tt>, <tt>command</tt> and <tt>deepcommand</tt>.
 
between <tt>style</tt>, <tt>command</tt> and <tt>deepcommand</tt>.
  
 
The <tt>style</tt> variants accept a style (<tt>bold</tt>, <tt>cap</tt>, etc.)
 
The <tt>style</tt> variants accept a style (<tt>bold</tt>, <tt>cap</tt>, etc.)
or a font switch (<cmd>em</cmd>, <cmd>tfx</cmd>, etc). <tt>texstyle</tt> prepends
+
or a font switch ({{cmd|em}}, {{cmd|tfx}}, etc). <tt>textstyle</tt> prepends
 
the text with the associated style. <tt>textcommand</tt> is a command name which
 
the text with the associated style. <tt>textcommand</tt> is a command name which
 
is given the text (with all markup) as a parameter. <tt>deeptextcommand</tt> is
 
is given the text (with all markup) as a parameter. <tt>deeptextcommand</tt> is
 
similar to <tt>textcommand</tt> but it acts only on the text (not on the markup).
 
similar to <tt>textcommand</tt> but it acts only on the text (not on the markup).
  
So, if we have <cmd>title{A story}</cmd>, the different parameters have the following results:
+
So, if we have {{cmd|title|2={A story}}}, the different parameters have the following results:
  
<table>
+
{|
<tr>
+
|-
<td><tt>textstyle=\em</tt></td>
+
| textstyle=\em
<td><tt>=></tt></td>
+
| =>
<td><tt>\em A story</tt></td>
+
| \em A story
</tr>
+
|-
<tr>
+
| textstyle=\em, textcommand=\uppercase
<td><tt>textstyle=\em, textcommand=\uppercase</tt></td>
+
| =>
<td><tt>=></tt></td>
+
| \uppercase{\em A story}
<td><tt>\uppercase{\em A story}</tt></td>
+
| =>
<td><tt>=></tt></td>
+
| \em A STORY
<td><tt>\em A STORY</tt></td>
+
|-
</tr>
+
| textstyle=\em, deeptextcommand=\uppercase
<tr>
+
| =>
<td><tt>textstyle=\em, deeptextcommand=\uppercase</tt></td>
+
| \em\uppercase{A story}
<td><tt>=></tt></td>
+
| =>
<td><tt>\em\uppercase{A story}</tt></td>
+
| \em A STORY
<td><tt>=></tt>
+
|-
</td><td><tt>\em A STORY</tt></td>
+
|}
</tr>
 
</table>
 
  
 
What is the difference between <tt>textcommand</tt> and <tt>deeptextcommand</tt>,
 
What is the difference between <tt>textcommand</tt> and <tt>deeptextcommand</tt>,
Line 220: Line 271:
 
it wreaks havoc with markup:
 
it wreaks havoc with markup:
  
<table>
+
{|
<tr>
+
|-
<td><tt>textstyle=\em, textcommand=\WORD</tt></td>
+
| textstyle=\em, textcommand=\WORD
<td><tt>=></tt></td>
+
| =>
<td><tt>\WORD{\em A story}</tt></td>
+
| \WORD{\em A story}
<td><tt>=></tt></td>
+
| =>
<td><tt>\EM A STORY</tt></td>
+
| \EM A STORY
</tr>
+
|-
<tr>
+
| textstyle=\em, deeptextcommand=\WORD
<td><tt>textstyle=\em, deeptextcommand=\WORD</tt></td>
+
| =>
<td><tt>=></tt></td>
+
| \em\WORD{A story}
<td><tt>\em\WORD{A story}</tt></td>
+
| =>
<td><tt>=></tt></td>
+
| \em A STORY
<td><tt>\em A STORY</tt></td>
+
|-
</tr>
+
|}
</table>
 
  
 
In this case using <tt>deeptextcommand</tt> is the correct solution for capitalizing
 
In this case using <tt>deeptextcommand</tt> is the correct solution for capitalizing
headers. (Using <cmd>uppercase</cmd> works in this specific case, but only if you stick
+
headers. (Using {{cmd|uppercase}} works in this specific case, but only if you stick
 
to Latin 1 or Anglo-Saxon characters. Other languages will suffer from lowercase accented
 
to Latin 1 or Anglo-Saxon characters. Other languages will suffer from lowercase accented
 
characters, like CAFé.)
 
characters, like CAFé.)
  
Use <cmd>setuphead[part][conversion=Romannumerals]</cmd>, for example, to employ an
+
Use {{cmd|setuphead}}<tt>[part][conversion=Romannumerals]</tt>, for example, to employ an
 
alternative numbering scheme.
 
alternative numbering scheme.
  
 
=== Truly empty pagebreak before chapters ===
 
=== Truly empty pagebreak before chapters ===
  
Using <cmd>setuppagenumbering[alternative=doublesided]</cmd> makes the chapters start
+
Using {{cmd|setuppagenumbering|2=[alternative=doublesided]}} makes the chapters start
on the right page. However, the blank page is not truely empty, it contains headers and
+
on the right page. However, the blank page is not truly empty, it contains headers and
footers. To get truely empty pages, use the following
+
footers. To get truly empty pages, use the following
  
 
<texcode>
 
<texcode>
Line 280: Line 330:
 
</texcode>
 
</texcode>
  
Explaination (provided by  Willi Egger on the mailing list)
+
'''Explanation''' (provided by  Willi Egger on the mailing list)
  
 
* You define a new pagebreak rule. It has the name <code>mychapterpagebreak</code>. The options set read as: <code>pagebreak=yes</code>, placeheader, use a right page.
 
* You define a new pagebreak rule. It has the name <code>mychapterpagebreak</code>. The options set read as: <code>pagebreak=yes</code>, placeheader, use a right page.
* You set options for the header of type chapter and use for the option  page the before defined new pagebreak.
+
* You set options for the header of type chapter and use for the option  page the afore defined new pagebreak.
* You might want to experiment with the commented lines and see what happens.  For example, the <code>\setupsectionblock</code> commands will give a truly blank page (if needed) after the specified \stop*part command.
+
* You might want to experiment with the commented lines and see what happens.  For example, the {{cmd|setupsectionblock}} commands will give a truly blank page (if needed) after the specified {{code|1=stop*part}} command.
 +
 
 +
==== When using front, body, back matters and appendices ====
  
 +
As Wolfgang explained on the mailing list, when using {{code|1=*frontmatter}}, {{code|1=*bodymatter}}, {{code|1=*backmatter}} and {{code|1=*appendices}}, you need to remove the page they create to get the page before a new chapter or part with no headers and footers.
 +
 +
<texcode>
 +
\setupsectionblock[frontpart][page=]
 +
\setupsectionblock[bodypart] [page=]
 +
\setupsectionblock[backpart] [page=]
 +
\setupsectionblock[appendix] [page=]
 +
\definepagebreak[firstpagebreak][yes,header,footer,right]
 +
\setuphead[chapter][page=firstpagebreak]
 +
\setuppagenumbering[alternative=doublesided]
 +
\starttext
 +
\startfrontmatter
 +
\chapter{front}
 +
\stopfrontmatter
 +
\startbodymatter
 +
\chapter{body}
 +
\stopbodymatter
 +
\startappendices
 +
\chapter{appendix}
 +
\stopappendices
 +
\startbackmatter
 +
\chapter{back}
 +
\stopbackmatter
 +
\stoptext
 +
</texcode>
 
== Independent Section Numbering ==
 
== Independent Section Numbering ==
  
Line 298: Line 375:
  
 
<texcode>
 
<texcode>
\definestructurereset[default][1,1,0][1] % reset part, chapter, but not section
+
\definestructureresetset[default][1,1,0][1] % reset part, chapter, but not section
 
\setuphead[sectionresetset=default]
 
\setuphead[sectionresetset=default]
 
</texcode>
 
</texcode>
Line 304: Line 381:
 
==Unnumbered titles in table of contents==
 
==Unnumbered titles in table of contents==
  
Some times one wants an unnumbered chapter, say introduction, the following might do that trick:
+
Sometimes one wants an unnumbered chapter, say introduction, the following might do that trick:
 +
 
 +
<context source=yes>
 +
\setuppapersize[A5]
  
<texcode>
 
 
\definehead    [intro] [chapter]
 
\definehead    [intro] [chapter]
 
\setuphead      [intro] [number=no]
 
\setuphead      [intro] [number=no]
 +
 
\definecombinedlist    [content][intro,chapter,section]
 
\definecombinedlist    [content][intro,chapter,section]
 
\setuplist      [intro] [headnumber=no]
 
\setuplist      [intro] [headnumber=no]
Line 322: Line 402:
 
\stopbodymatter
 
\stopbodymatter
 
\stoptext
 
\stoptext
 +
</context>
 +
 +
Note that just putting the introduction in the frontmatter already did the trick for me (on a recent MkIV).
 +
 +
An alternative approach:
 +
<texcode>
 +
\setuphead[title][
 +
    incrementnumber=yes, % keep an internal title counter+list
 +
    number=no]          % don't display the counter
 +
 +
% Manually specify the composition of the section and subsection
 +
% numbers, so subsection 1.1 in the second title won't appear as
 +
% Subsection 2.1.1
 +
\setuphead[section][sectionsegments=section]
 +
\setuphead[subsection][sectionsegments=section:subsection] 
 +
 +
% Redefine the toc list to include titles
 +
\definecombinedlist[content][title, section]
 
</texcode>
 
</texcode>
  
<context>
+
== Complete Section Numbering ==
\definehead    [intro] [chapter]
 
\setuphead      [intro] [number=no]
 
  
\definecombinedlist    [content][intro,chapter,section]
+
You might have documents in which your sections don’t follow the structure, such as in:
\setuplist      [intro] [headnumber=no]
 
  
\starttext
+
<texcode>
\completecontent
+
\section{A}
\startfrontmatter
+
%\subsection{B}
\intro{No number}
+
\subsubsection{C}
\stopfrontmatter
+
</texcode>
 
 
\startbodymatter
 
\chapter{Has number}
 
\stopbodymatter
 
\stoptext
 
</context>
 
  
 +
In that case, you would get <code>1 A</code> <code>1 C</code>. To enable complete section numbering, you would need in this case (using a beta after 2017.08.07 11:30):
  
 +
<texcode>
 +
\setuphead[subsection][criterium=all]
 +
</texcode>
  
 
==Your Own Title Styles==
 
==Your Own Title Styles==
  
Sometimes the possibilities of <cmd>setuphead</cmd> aren't enough.  You can define
+
Sometimes the possibilities of {{cmd|setuphead}} aren't enough.  You can define
 
your own styling commands, as shown in the following examples.
 
your own styling commands, as shown in the following examples.
  
===Expanded chapter titles===
+
===Start the title in the margin===
 +
 
 +
This very simple example shows how to start a title within the margin, rather than at the text's edge
 +
 
 +
<context source=yes>
 +
\setuppapersize[A5]
 +
\setuphead[chapter][alternative=margin]
 +
 
 +
\chapter{Sample chapter}
  
This example illustrates expanded chapter titles.
+
Number is in margin, not at text edge.
 +
</context>
  
<texcode>
+
===Chapter titles in new line===
\def\MyChapterCommand#1#2% #1 is number, #2 is text
+
To have the chapter title simply in a new line a new command needs to be defined that takes care of this. It needs to be wrapped in {{cmd|framed}}.
  {\framed[frame=off,bottomframe=on,topframe=on]
 
    {\vbox{\headtext{chapter} #1\blank#2}}} % \vbox is needed for \blank to work
 
  
\setuphead[chapter][command=\MyChapterCommand, style={\ss\bfa}]
+
<context source=yes>
 +
\setuppapersize[A5]
 +
\setuplabeltext [en] [chapter=Chapter~]
 +
\define[2]\MyChapter
 +
  {\framed[frame=off,width=broad,align=flushleft]{#1\\#2}}
 +
\setuphead [chapter] [command=\MyChapter]
 +
\chapter{Foo Bar}
 +
</context>
  
\setupheadtext[chapter=Chapter] % used by \headtext
+
===Expanded chapter titles===
</texcode>
 
  
so <tt>\chapter{My First Chapter}</tt> looks like:
+
This example illustrates expanded chapter titles.
  
<context>
+
<context source=yes>
\def\MyChapterCommand#1#2%
+
\setuppapersize[A5]
 +
\define[2]\MyChapterCommand%
 
   {\framed[frame=off,bottomframe=on,topframe=on]
 
   {\framed[frame=off,bottomframe=on,topframe=on]
 
     {\vbox{\headtext{chapter} #1\blank#2}}}
 
     {\vbox{\headtext{chapter} #1\blank#2}}}
Line 403: Line 510:
 
===A complex graphical element under the chapter title===
 
===A complex graphical element under the chapter title===
  
<texcode>
+
<context source=yes>
\setupcolors[state=start]
+
  \setuppapersize[A6]
\startuseMPgraphic{HeaderDeco}
 
    numeric w, h, repeats;
 
    path p[];
 
    w := OverlayWidth ; h := OverlayHeight ;
 
    repeats := abs(TextWidth/BodyFontSize);
 
    p[1] := unitsquare xscaled w yscaled h ;
 
    draw p[1] withcolor white;
 
    p[2] := fullcircle scaled BodyFontSize;
 
    p[3] := fullcircle scaled .25BodyFontSize;
 
    draw p[2] shifted (.5BodyFontSize,0);
 
    for i = 1 upto repeats:
 
        if odd i :
 
            filldraw p[3] shifted (i*BodyFontSize+.5BodyFontSize,0);
 
        else :
 
            draw p[2] shifted (i*BodyFontSize+.5BodyFontSize,0);
 
        fi;
 
    endfor;
 
\stopuseMPgraphic
 
 
 
\setuphead[chapter][command=\Myheader]
 
\setupheadtext[chapter=Chapitre]
 
\defineoverlay[HeaderDeco][\uniqueMPgraphic{HeaderDeco}]
 
 
 
\def\Myheader#1#2{%
 
    \framedtext
 
        [width= \overlaywidth,
 
        height=6\bodyfontsize,
 
        background={foreground,HeaderDeco},
 
        offset=0pt,
 
        strut=no,
 
        frame=off,
 
        align=middle]{%
 
            \headtext{chapter} #1
 
            \blank[small]
 
            #2}}
 
 
 
\starttext
 
  \chapter{Here we go!}
 
\stoptext
 
</texcode>
 
 
 
It looks like:
 
 
 
<context>
 
 
   \setupcolors[state=start]
 
   \setupcolors[state=start]
 
   \startuseMPgraphic{HeaderDeco}
 
   \startuseMPgraphic{HeaderDeco}
Line 474: Line 537:
 
   \defineoverlay[HeaderDeco][\uniqueMPgraphic{HeaderDeco}]
 
   \defineoverlay[HeaderDeco][\uniqueMPgraphic{HeaderDeco}]
  
   \def\Myheader#1#2{%
+
   \define[2]\Myheader{%
 
       \framedtext
 
       \framedtext
 
           [width= \overlaywidth,
 
           [width= \overlaywidth,
Line 490: Line 553:
 
   \chapter{Here we go!}
 
   \chapter{Here we go!}
 
\stoptext
 
\stoptext
 +
</context>
 +
 +
===Title page with special background===
 +
 +
If you want the title page of every chapter to have a special background (different from the background of normal pages), here's a very effective trick that Hans has provided on the mailing list. In addition, this will give every chapter its own color scheme (Mkiv only, hence won't compile on contextgarden):
 +
 +
<context source=yes>
 +
\startMPinclusions
 +
    numeric MyTitlePageDone[] ;
 +
\stopMPinclusions
 +
 +
\startuseMPgraphic{background:normal}
 +
  StartPage ;
 +
    fill (topboundary Page -- cycle) enlarged(0,5mm)
 +
    shifted (0,-5mm) withcolor blue ;
 +
  StopPage ;
 +
\stopuseMPgraphic
 +
 +
\defineoverlay
 +
  [background:normal]
 +
  [\useMPgraphic{background:normal}]
 +
 +
\startuseMPgraphic{background:title}
 +
  if unknown MyTitlePageDone.\namedstructureuservariable{chapter}{mycolor} :
 +
    StartPage ;
 +
      fill ((topboundary Page --cycle) enlarged(0,5mm)) shifted (0,-20mm)
 +
            withcolor \MPcolor{color:title:\namedstructureuservariable{chapter}{mycolor}} ;
 +
    StopPage ;
 +
    MyTitlePageDone.\namedstructureuservariable{chapter}{mycolor} := 1 ;
 +
  fi ;
 +
\stopuseMPgraphic
 +
 +
\defineoverlay
 +
  [background:title]
 +
  [\useMPgraphic{background:title}]
 +
 +
\setupbackgrounds
 +
  [page]
 +
  [background={background:normal,background:title}]
 +
 +
\definecolor [color:title:one]      [red]
 +
\definecolor [color:title:two]      [blue]
 +
 +
\starttext
 +
 +
\startchapter[title=One][mycolor=one] \input tufte \page \input knuth \stopchapter
 +
\startchapter[title=Two][mycolor=two] \input tufte \page \input knuth \stopchapter
 +
 +
\stoptext
 +
 
</context>
 
</context>
  
Line 497: Line 610:
 
This is achieved by the following setup:
 
This is achieved by the following setup:
  
<texcode>
+
<context source=yes>
\setuphead
+
\setuppapersize[A5]
  [subject]
 
  [alternative=text,distance=0pt,command=\MyHead]
 
 
 
\def\MyHead#1#2{\inmargin{#1 #2}}
 
</texcode>
 
 
 
This (with 'style=\sc' added in setuphead) gives:
 
 
 
<context>
 
 
\setuphead
 
\setuphead
 
   [subject]
 
   [subject]
 
   [alternative=text,distance=0pt,command=\MyHead,style=\sc]
 
   [alternative=text,distance=0pt,command=\MyHead,style=\sc]
  
\def\MyHead#1#2{\inmargin{#1 #2}}
+
\define[2]\MyHead{\inmargin{#1 #2}}
  
 
\starttext
 
\starttext
  
 
\subject{First Subject}
 
\subject{First Subject}
This is the text in the first subject. This is the text in the first subject.
+
\input weisman
This is the text in the first subject. This is the text in the first subject.
 
This is the text in the first subject. This is the text in the first subject.
 
This is the text in the first subject. This is the text in the first subject.
 
  
 
\subject{Second Subject}
 
\subject{Second Subject}
This is the text in the second subject. This is the text in the second subject.
+
\input ward
This is the text in the second subject. This is the text in the second subject.
 
This is the text in the second subject. This is the text in the second subject.
 
This is the text in the second subject. This is the text in the second subject.
 
  
 
\stoptext
 
\stoptext
 
</context>
 
</context>
  
See the mailing list thread [[http://www.ntg.nl/pipermail/ntg-context/2003/002053.html]] for more on this.
+
See [http://www.ntg.nl/pipermail/ntg-context/2003/002053.html the mailing list thread] for more on this.
  
 
===Headings numbered independent of chapters or other headings===
 
===Headings numbered independent of chapters or other headings===
Line 609: Line 707:
 
===Chapter headers===
 
===Chapter headers===
  
Setup of headers like chapters.
+
This is an example of chapter headings with an enlarged shadow behind them, based on [http://archive.contextgarden.net/message/20041020.100630.d531bb1d.en.html 20/10/2004 a solution by Hans].
  
While reading Pixar docs about Renderman, I've found their headers nice and wanted to copy this style.
+
<context source=yes>
I found a premise in Metafun manual, p.187 (Hello text), and Hans email me ([http://archive.contextgarden.net/message/20041020.100630.d531bb1d.en.html 20/10/2004 ]) on the context list a more simple solution than using metapost. The minimum is to put it here, for others who are like me, wandering for source code.
+
\setuppapersize[A5]
Feel free to adapt code below to your langage specific settings, mine is french.
 
  
<texcode>
 
 
\useencoding[ffr]
 
\useencoding[ffr]
 
\mainlanguage[fr]
 
\mainlanguage[fr]
\enableregime[utf] %for UTF8
 
 
% \enableregime[il1] %for ISO 8859-1 8859-15
 
 
\usetypescript[palatino][texnansi]
 
\setupbodyfont[palatino,rm,12pt]
 
 
\setupcolors[state=start]
 
 
\definefont[BigFontOne][Regular sa 3] %RegularSlanted sa 3(ori)%Sans sa 3:don't work (pb accents)
 
\definefont[BigFontTwo][RegularBold sa 2]  %%RegularSlanted
 
 
\definecolor[BigColorOne][r=.86,g=.850,b=.54]
 
\definecolor[BigColorTwo][r=.43,g=.425,b=.27]
 
 
\setuphead
 
  [chapter]
 
  [deeptextcommand=\MyChapterText,
 
    color=BigColorTwo,
 
    style=\BigFontTwo]
 
 
\def\MyChapterText#1{\rlap{\BigFontOne\BigColorOne#1}\kern15pt#1}
 
 
\starttext
 
 
\chapter[chap:ques]{Question}
 
\chapter[chap:answ]{Answer}
 
\chapter[chap:answ]{Remarque}
 
\chapter[chap:answ]{Cours}
 
\chapter[chap:answ]{Exercice}
 
\chapter[chap:answ]{Travail dirigé}
 
\chapter[chap:answ]{Exposé}
 
\stoptext
 
</texcode>
 
 
I've tryed to change a bit Hans code, by putting \kern15pt, for moving backgroundtext to the left of \rlap alignment, and an unsuccess one to switch same backgroundtext in Sans font (no french accents).
 
 
olivier
 
 
<context>
 
\useencoding[ffr]
 
\mainlanguage[fr]
 
 
% fonts currently don't work this way,
 
% I'll fix that soon. Patrick
 
 
% \usetypescript[palatino][texnansi]
 
% \setupbodyfont[palatino,rm,12pt]
 
  
 
\setupcolors[state=start]
 
\setupcolors[state=start]
Line 687: Line 735:
 
\chapter[chap:ques]{Question}
 
\chapter[chap:ques]{Question}
  
% only one page please, since this is displayed inline. Patrick
 
% \chapter[chap:answ]{Answer}
 
% \chapter[chap:answ]{Remarque}
 
% \chapter[chap:answ]{Cours}
 
% \chapter[chap:answ]{Exercice}
 
% \chapter[chap:answ]{Travail dirigé}
 
% \chapter[chap:answ]{Exposé}
 
 
\stoptext
 
\stoptext
 
</context>
 
</context>
Line 702: Line 743:
  
 
<context source="yes">
 
<context source="yes">
 +
\setuppapersize[A5]
 
\setupexternalfigures[location=default] % needed only for the wiki to the find the figure
 
\setupexternalfigures[location=default] % needed only for the wiki to the find the figure
  
\useexternalfigure[chapter-1][cow.pdf]
+
\useexternalfigure[section-1][cow][width=5cm,height=1cm]
\useexternalfigure[chapter-2][hacker.jpg]
+
\useexternalfigure[section-2][mill.png][width=5cm,height=1cm]
  
 
\setuphead
 
\setuphead
   [chapter]
+
   [section]
   [command=\MyChapterCommand]
+
   [command=\MySectionCommand]
 +
\setuphead
 +
  [subsection]
 +
  [command=]
  
\def\MyChapterCommand#1#2%
+
\define[2]\MySectionCommand%
   {\externalfigure[chapter-\currentheadnumber][height=5cm]}
+
   {\externalfigure[section-\currentheadnumber]}
  
 
\starttext
 
\starttext
  
\chapter{One}
+
\section{One}
\section{First section of Chapter One}
+
\subsection{First subsection of Section One}
 +
\section{Two}
  
 
\stoptext
 
\stoptext
 
</context>
 
</context>
  
However, this "forgets" to put the chapter in the TOC. So you have to set
+
There are a few snags though. MkII "forgets" to put the chapter in the
the <tt>textcommand</tt> and <tt>numbercommand</tt> separately instead
+
TOC. So you have to set the <tt>deeptextcommand</tt> and
(thus retaining the command that puts the chapter in the TOC), rather than
+
<tt>deepnumbercommand</tt> separately instead (thus retaining the
setting the overall <tt>command</tt>, if you need a complete TOC.
+
command that puts the chapter in the TOC), rather than setting the
 +
overall <tt>command</tt>, if you need a complete TOC.
  
 
<texcode>
 
<texcode>
 
\setuphead
 
\setuphead
 
     [chapter]
 
     [chapter]
     [textcommand=\MyChapterTextCommand,
+
     [deeptextcommand=\MyChapterTextCommand,
     numbercommand=\MyChapterNumberCommand]
+
     deepnumbercommand=\gobbleoneargument]     % hide chapter number
 
 
\def\MyChapterNumberCommand#1{} % hide chapter number
 
  
 
\def\MyChapterTextCommand#1%
 
\def\MyChapterTextCommand#1%
Line 741: Line 786:
 
[http://archive.contextgarden.net/message/20050519.215526.df7c5cd1.html]
 
[http://archive.contextgarden.net/message/20050519.215526.df7c5cd1.html]
  
===Chapter head with absolute positioning of following text===
+
Users of MkIV can safely rely on <tt>command</tt> and don't have to bother with the <tt>deep...command</tt> variants. However, {{cmd|currentheadnumber}} does not seem to return anything but 0. Thus, the following code is required to define <tt>\MyChapterCommand</tt> when using MkIV:
  
 
<texcode>
 
<texcode>
\setuphead[chapter][before=\vbox to 4cm\bgroup,after=\vss\egroup]
+
\def\MyChapterCommand#1#2%
\starttext
+
  {\externalfigure[chapter-\namedheadnumber{chapter}][height=5cm]}
\chapter{test} \input tufte
 
\stoptext
 
 
</texcode>
 
</texcode>
  
No matter how many lines the chapter head runs to, the text will always start, e.g. 4cm below the top of the heading:
+
[http://archive.contextgarden.net/message/20100817.102859.206d858e.en.html]
 
 
<context>
 
\setuppapersize[A6][A6]
 
\setuphead[chapter][before=\vbox to 4cm\bgroup,after=\vss\egroup]
 
\setupbodyfont[8pt]
 
\starttext
 
\chapter{test} \input tufte
 
\stoptext
 
</context>
 
  
====Bug and proposed workaround====
+
===Chapter head with absolute positioning of following text===
  
I tried this sample and <cmd>getmarking[chapter]</cmd>, used in my headers,
+
No matter how many lines the chapter head runs to, the text will always start, e.g. 4cm below the top of the heading:
stopped to work properly. Proposed workaround below.
 
--[[User:Sebastian.rooks|SeR]] 00:52, 27 January 2006 (CET)
 
 
 
<texcode>
 
\def\MyChapterCommand#1#2%
 
  {\vbox to 4cm\bgroup
 
    {#1\hskip.75em #2}
 
    \vss
 
    \egroup}
 
 
 
\setuphead[chapter][header=nomarking,command=\MyChapterCommand]
 
\starttext
 
\chapter{test} \input tufte
 
\stoptext
 
</texcode>
 
  
<context>
+
<context source=yes>
 
\setuppapersize[A6][A6]
 
\setuppapersize[A6][A6]
 
\setupbodyfont[8pt]
 
\setupbodyfont[8pt]
Line 788: Line 807:
 
     \vss
 
     \vss
 
     \egroup}
 
     \egroup}
\setuphead[chapter][header=nomarking,command=\MyChapterCommand]
+
\setuphead[chapter][header=nomarking, command=\MyChapterCommand]
 
\starttext
 
\starttext
 
\chapter{test} \input tufte
 
\chapter{test} \input tufte
Line 800: Line 819:
 
Hans came up with this cleverness, showing two alternate ways of doing it:
 
Hans came up with this cleverness, showing two alternate ways of doing it:
  
<context source="yes" text="produces">
+
<context source="yes">
 +
\setuppapersize[A5]
 +
 
 +
% ---- First solution ----
 +
 
 
\def\FirstSolution#1#2%
 
\def\FirstSolution#1#2%
 
   {\vbox\bgroup
 
   {\vbox\bgroup
Line 822: Line 845:
 
   \blackrule[width=\scratchdimen,height=1pt]
 
   \blackrule[width=\scratchdimen,height=1pt]
 
   \egroup}
 
   \egroup}
 +
 +
% ---- Second solution ----
  
 
\doglobal\newcounter\NextLinePos
 
\doglobal\newcounter\NextLinePos
Line 840: Line 865:
 
\def\DoSecondSolution#1%
 
\def\DoSecondSolution#1%
 
   {\bpos{npl:\NextLinePos}#1\epos{npl:\NextLinePos}}
 
   {\bpos{npl:\NextLinePos}#1\epos{npl:\NextLinePos}}
 +
 +
% ---- Trying it out solution ----
  
 
% \showstruts
 
% \showstruts
  
 +
\starttext
 
\setuphead[section][command=\FirstSolution]
 
\setuphead[section][command=\FirstSolution]
 +
    \section{is this nice or not}
 +
    \section{is this nice or not nice, that's the question}
 +
 +
\setuphead[section][command=\SecondSolution,deeptextcommand=\DoSecondSolution]
 +
    \section{is this nice or not}
 +
    \section{is this nice or not nice, that's the question}
 +
\stoptext
 +
</context>
 +
 +
As if that wasn't enough, Taco pointed out that {{cmd|lastlinewidth}}
 +
is the easy route to finding the width of the last line. Use something like:
 +
 +
<texcode>
 +
\optimizedisplayspacingtrue\setlastlinewidth % core-mat macro
 +
\global\advance\lastlinewidth-\hangindent\par % adjust
 +
\blackrule[width=\lastlinewidth,height=1pt]
 +
</texcode>
 +
 +
=== Flushing section head data without typesetting them in the text ===
 +
 +
The following is probably a very special case. Hoever suppose you need to place section information like the title e.g. in the topspace area. You want that the section is still displayed in the TOC, but you do not want that at the spot where {{cmd|startsection|2=[title=...,list=...]}} resides there is any trace of it. The command to be used to hide the section title is:
 +
 +
<texcode>
 +
\setuphead
 +
  [section]
 +
  [placehead=hidden]
 +
</texcode>
 +
 +
Be aware that with this setting indeed the section title is not shown and no white space is inserted. However in this way also the list entry for the TOC is gone. What you can do in such cases is to use the following command in connection with the above mentioned setting:
 +
 +
<texcode>
 +
\setuptexttexts[{\placerawheaddata[section]}
 +
</texcode>
 +
 +
What happens is that the information in the {{cmd|startsection|2=[title=...,list=...]}} command is passed to the texttexts, which are flushed at every page. In order to see when it is flushed you might place e.g. !!! in front of the {{cmd|placerawheaddata|2=[section]}}.
 +
 +
The result is a complete TOC without any trace of the section heading in the text.
 +
 +
'''Test:'''
 +
 +
<texcode>
 +
\setuphead
 +
  [section]
 +
  [placehead=hidden,
 +
    page=yes]
 +
 +
\setuphead
 +
  [subsection]
 +
  [placehead=yes,
 +
    page=yes,
 +
    continue=yes,
 +
    style=\it]
 +
 +
\setuptexttexts[{\placerawheaddata[section]}]
  
 
\starttext
 
\starttext
  
\section{is this nice or not}
+
\placelist[section,subsection] \page
  
\section{is this nice or not nice, that's the question}
+
\startsection[title=First section]
  
\setuphead[section][command=\SecondSolution,deeptextcommand=\DoSecondSolution]
+
  \startsubsection[title=First subsection]
 +
      Lorem ipsum \dots
 +
  \stopsubsection
 +
 
 +
  \startsubsection[title=second subsection]
 +
      Lorem ipsum \dots
 +
  \stopsubsection
 +
 
 +
\stopsection
 +
 
 +
\startsection[title=Second section]
  
\section{is this nice or not}
+
  \startsubsection[title=First subsection]
 +
      Lorem ipsum \dots
 +
  \stopsubsection
  
\section{is this nice or not nice, that's the question}
+
\stopsection
  
 
\stoptext
 
\stoptext
</context>
+
</texcode>  
 +
 
 +
===Section head without chapter number ===
 +
 
 +
If you only want the section number (in mark IV) in the section title you add
 +
 
 +
 
 +
 
 +
<texcode>
 +
\setuphead[section][sectionsegments=section]
 +
\starttext
 +
\chapter{Eric}
 +
\section{Foo 1}
 +
\subsection{Bar one}
 +
\section{Foo 2}
 +
\stoptext
 +
</texcode>
 +
 
 +
But as once you changed one you have to change the lower ones.
 +
So you have to add the definition of sectionsegments in subsection, subsubsection, ...
 +
 
 +
<texcode>
 +
\setuphead[section][sectionsegments=section]
 +
\setuphead[subsection][sectionsegments=section:subsection]
 +
\setuphead[subsubsection][sectionsegments=section:subsubsection]
 +
 
 +
\starttext
 +
\chapter{Eric}
 +
\section{Foo 1}
 +
\subsection{Bar one}
 +
\subsubsection{Barbar one }
 +
\subsubsection{Barbar two}
 +
\subsection{Bar two}
 +
\subsubsection{Barbar one}
 +
\subsubsection{Barbar two}
 +
\section{Foo 2}
 +
\subsection{Bar one}
 +
\subsubsection{Barbar one}
 +
\subsubsection{Barbar two}
 +
\stoptext
 +
</texcode>
 +
 
 +
It's not written here but you can also change the conversion of the numbering with
 +
 
 +
<texcode>
 +
\definestructureconversionset[mySet][A,R,n,n,a,r][n]
 +
\setuphead[chapter,section,subsection,subsubsection,subsubsubsection][sectionconversionset=mySet]
 +
</texcode>
 +
 
 +
The parameters in definestructureconversionset are
 +
 
 +
the set name
  
As if that wasn't enough, Taco pointed out that <cmd>lastlinewidth</cmd>
+
the codes for conversion (one for each level)
is the easy route to finding the width of the last line. Use something like:
 
  
<code>
+
the default conversion for the missing level
\optimizedisplayspacingtrue\setlastlinewidth % core-mat macro
 
\global\advance\lastlinewidth-\hangindent\par % adjust
 
\blackrule[width=\lastlinewidth,height=1pt]
 
</code>
 
  
 +
You can find the conversions codes at [http://wiki.contextgarden.net/Conversions]
  
 
[[Category:Fonts]]
 
[[Category:Fonts]]
 
[[Category:Graphics]]
 
[[Category:Graphics]]
 
[[Category:Text elements]]
 
[[Category:Text elements]]

Revision as of 08:47, 16 July 2018

< Structurals | Visuals >

Default

Titles define the structure of your document. Decide yourself, how deep you want to nest them:

Numbered Unnumbered
\part &#151;
\chapter \title
\section \subject
\subsection \subsubject
\subsubsection \subsubsubject
... ...

The unnumbered versions don't appear in a table of contents! To change that, see the section on Unnumbered titles in the table of contents.

Also note that in the front matter of the document, all titles are unnumbered by default. The titles from the 'numbered' category still show up in the table of contents, though, and the titles from the 'unnumbered' category still don't.

Referencing Titles

Every heading command can take an optional parameter as reference:

\title[hasselt-by-night]{Hasselt by night}

The bracket pair is optional and used for internal References. If you want to refer to this header you type for example

\at{page}[hasselt-by-night].

See \at.

Note that reference labels are limited to ASCII characters in traditional TeX. This limitation has been removed in ConTeXt mkiv.

New MkIV Sectioning

ConTeXt MkIV adds several new commands which supersede the older \chapter, \section etc. The new commands are more verbose, but also more flexible, and allow better support for tagged-PDF, XML and ePUB output.

Traditional New
\part \startpart
\chapter \startchapter
\section \startsection
\subsection \startsubsection
\subsubsection \startsubsubsection
\title \starttitle
\subject \startsubject
... ...

Each of these start-commands has a corresponding stop-command which should be used at the end of the section. For example:

% mode=mkiv
\setuppapersize[A5]

\section[sec:old]{Old Section}

This is an old-style \ConTeXt\ section.

\startsection
   [
        title={New Section},
        reference=sec:new,
   ]

This is a new-style section.
\stopsection

produces

The following keys are available for the start-commands:

Key Description
reference= The reference key for cross-referencing (with \at, \in etc.)
title= The title of the section
list= The title to show in the table of contents, if different
bookmark= The title to show in the PDF bookmarks, if different
marking= The title to use in the section marking, if different
label= ?

It is also possible to set per-section variables, and retrieve them with the \structureuservariable command:

% mode=mkiv
\setuppapersize[A5]

\startchapter[title={Foo Bar}][foo=bar]

foo is \quote{\structureuservariable{foo}}

\stopchapter

produces

Titling Style

see \setuphead and some enhanced samples below.

A FAQ is, how to get a line under the pageheader:

\setupheader[after=\hrule]

To make the section numbers appear as characters, do

\setupsection[section-3][bodypartconversion=Character]

The section-3 corresponds to section. Similarly, section-1 corresponds to part, section-2 corresponds to chapter and so on.

Titling Alignment

Titles should often be left aligned without hyphenation. Try this:

\setuphead[chapter][align={flushleft, nothyphenated, verytolerant}]

Using colors in chapters and sections

If you want you may have colors on your document's chapters or sections. To do that you should use \setuphead. Take a look at the following example:

\setupcolors[state=start] % Important. You won't have colors without it.

\setuphead[chapter][header=empty] % Chapter pages won't have headers

\setupheadertexts[][chapter]      %  The header will be the chapter's name

\starttext

\completecontent

\chapter{Black chapter 1}

\setuphead[section][color=darkcyan]  % This is how you change your chapter's color.

\section{Dark cyan section 1.1}

\page
Test.

\setuphead[chapter][color=darkgreen]

\chapter{Dark green chapter}

\page
Test.

\setuphead[chapter][color=red]

\chapter{Red chapter}

\page
Test.

\stoptext 

Your Own Titling Levels

Of course you can define your own titling commands and probably must adapt the default settings.

\definehead[myheader][section]

\setuphead
  [myheader]
  [numberstyle=bold,
   textstyle=cap,
   before=\hairline\blank,
   after=\nowhitespace\hairline]

\myheader[hasselt-ref]{Hasselt makes headlines}

A new header \myheader is defined and it inherits the properties of \section (title, subject, whatever). You can define several headers at once!

Formatting Titles with \setuphead

The following parameters to \setuphead change the style of the heading.

Text Number
textstyle numberstyle
textcommand numbercommand
deeptextcommand deepnumbercommand

Quite obviously, the number commands work on the chapter/section/etc. number, their text counterparts change the text itself. However, there are differences between style, command and deepcommand.

The style variants accept a style (bold, cap, etc.) or a font switch (\em, \tfx, etc). textstyle prepends the text with the associated style. textcommand is a command name which is given the text (with all markup) as a parameter. deeptextcommand is similar to textcommand but it acts only on the text (not on the markup).

So, if we have \title{A story}, the different parameters have the following results:

textstyle=\em => \em A story
textstyle=\em, textcommand=\uppercase => \uppercase{\em A story} => \em A STORY
textstyle=\em, deeptextcommand=\uppercase => \em\uppercase{A story} => \em A STORY

What is the difference between textcommand and deeptextcommand, then? With this example there is very little difference, as uppercase knows how to handle markup. Sometimes this is not the case. For example, an almost similar command WORD is not compatible with textcommand, because it wreaks havoc with markup:

textstyle=\em, textcommand=\WORD => \WORD{\em A story} => \EM A STORY
textstyle=\em, deeptextcommand=\WORD => \em\WORD{A story} => \em A STORY

In this case using deeptextcommand is the correct solution for capitalizing headers. (Using \uppercase works in this specific case, but only if you stick to Latin 1 or Anglo-Saxon characters. Other languages will suffer from lowercase accented characters, like CAFé.)

Use \setuphead[part][conversion=Romannumerals], for example, to employ an alternative numbering scheme.

Truly empty pagebreak before chapters

Using \setuppagenumbering[alternative=doublesided] makes the chapters start on the right page. However, the blank page is not truly empty, it contains headers and footers. To get truly empty pages, use the following

\definepagebreak
  [mychapterpagebreak]
  [yes,header,right]
 %[yes,header,left]
 %[yes,header,footer,right]

\setuphead
  [chapter]
  [page=mychapterpagebreak]
 %[page=Mychapterpagebreak,header=empty,footer=empty]

%\setupsectionblock[frontpart][page=chapter]
%\setupsectionblock[bodypart][page=chapter]
%\setupsectionblock[backpart][page=chapter]
%\setupsectionblock[appendix][page=chapter]

\setuppagenumbering[alternative=doublesided,location={header,margin}]
\setupheadertexts[{My special headertext}]
\setupfootertexts[This is a text in the footer]
%\setupbackgrounds[header][text][bottomframe=on]

\starttext
  \chapter{testA} \dorecurse{10}{\input tufte }
  \chapter{testB} \dorecurse{10}{\input tufte }
  \chapter{testC} \dorecurse{10}{\input tufte }
\stoptext

Explanation (provided by Willi Egger on the mailing list)

  • You define a new pagebreak rule. It has the name mychapterpagebreak. The options set read as: pagebreak=yes, placeheader, use a right page.
  • You set options for the header of type chapter and use for the option page the afore defined new pagebreak.
  • You might want to experiment with the commented lines and see what happens. For example, the \setupsectionblock commands will give a truly blank page (if needed) after the specified stop*part command.

When using front, body, back matters and appendices

As Wolfgang explained on the mailing list, when using *frontmatter, *bodymatter, *backmatter and *appendices, you need to remove the page they create to get the page before a new chapter or part with no headers and footers.

\setupsectionblock[frontpart][page=]
\setupsectionblock[bodypart] [page=]
\setupsectionblock[backpart] [page=]
\setupsectionblock[appendix] [page=]
\definepagebreak[firstpagebreak][yes,header,footer,right]
\setuphead[chapter][page=firstpagebreak]
\setuppagenumbering[alternative=doublesided]
\starttext
\startfrontmatter
\chapter{front}
\stopfrontmatter
\startbodymatter
\chapter{body}
\stopbodymatter
\startappendices
\chapter{appendix}
\stopappendices
\startbackmatter
\chapter{back}
\stopbackmatter
\stoptext

Independent Section Numbering

If you want section numbering to be independent of chapter numbering, use

\setuphead   [chapter][resetnumber=no]
\setupsection[section][previousnumber=no]

This is handled differently in mkiv (where "resetnumber=no" is silently ignored):

\definestructureresetset[default][1,1,0][1] % reset part, chapter, but not section
\setuphead[sectionresetset=default]

Unnumbered titles in table of contents

Sometimes one wants an unnumbered chapter, say introduction, the following might do that trick:

\setuppapersize[A5]

\definehead     [intro] [chapter]
\setuphead      [intro] [number=no]

\definecombinedlist     [content][intro,chapter,section]
\setuplist      [intro] [headnumber=no]

\starttext
\completecontent
\startfrontmatter
\intro{No number}
\stopfrontmatter

\startbodymatter
\chapter{Has number}
\stopbodymatter
\stoptext

Note that just putting the introduction in the frontmatter already did the trick for me (on a recent MkIV).

An alternative approach:

\setuphead[title][
    incrementnumber=yes, % keep an internal title counter+list
    number=no]           % don't display the counter

% Manually specify the composition of the section and subsection
% numbers, so subsection 1.1 in the second title won't appear as
% Subsection 2.1.1
\setuphead[section][sectionsegments=section]
\setuphead[subsection][sectionsegments=section:subsection]   

% Redefine the toc list to include titles
\definecombinedlist[content][title, section]

Complete Section Numbering

You might have documents in which your sections don’t follow the structure, such as in:

\section{A}
%\subsection{B}
\subsubsection{C}

In that case, you would get 1 A 1 C. To enable complete section numbering, you would need in this case (using a beta after 2017.08.07 11:30):

\setuphead[subsection][criterium=all]

Your Own Title Styles

Sometimes the possibilities of \setuphead aren't enough. You can define your own styling commands, as shown in the following examples.

Start the title in the margin

This very simple example shows how to start a title within the margin, rather than at the text's edge

\setuppapersize[A5]
\setuphead[chapter][alternative=margin]

\chapter{Sample chapter}

Number is in margin, not at text edge.

Chapter titles in new line

To have the chapter title simply in a new line a new command needs to be defined that takes care of this. It needs to be wrapped in \framed.

\setuppapersize[A5]
\setuplabeltext [en] [chapter=Chapter~]
\define[2]\MyChapter
  {\framed[frame=off,width=broad,align=flushleft]{#1\\#2}}
\setuphead [chapter] [command=\MyChapter]
\chapter{Foo Bar}

Expanded chapter titles

This example illustrates expanded chapter titles.

\setuppapersize[A5]
\define[2]\MyChapterCommand%
  {\framed[frame=off,bottomframe=on,topframe=on]
     {\vbox{\headtext{chapter} #1\blank#2}}}

\setuphead[chapter][command=\MyChapterCommand, style={\ss\bfa}]
\setupheadtext[chapter=Chapter]

\chapter{My First Chapter}

Exercise numbers

For a textbook, suppose that you collect the exercises in a section at the end of each chapter, with each exercise a subsection having a short title, and the exercises should be numbered only by the subsection (not 1.6.7 for example, just 7). The usage:

\section{Exercises}

\exercise{Batteries}
What is the cost of energy from a 9V battery?  From a wall socket (the mains)?

The setup code:

\definehead[exercise][subsection]

\setuphead
  [exercise]
  [style=italic, 
   numbercommand={\determineheadnumber[subsection]\currentheadnumber\gobbleoneargument}]

A complex graphical element under the chapter title

   \setuppapersize[A6]
   \setupcolors[state=start]
   \startuseMPgraphic{HeaderDeco}
           numeric w, h, repeats;
           path p[];
           w := OverlayWidth ; h := OverlayHeight ;
           repeats := abs(TextWidth/BodyFontSize);
           p[1] := unitsquare xscaled w yscaled h ;
           draw p[1] withcolor white;
           p[2] := fullcircle scaled BodyFontSize;
           p[3] := fullcircle scaled .25BodyFontSize;
           draw p[2] shifted (.5BodyFontSize,0);
           for i = 1 upto repeats:
               if odd i :
                   filldraw p[3] shifted (i*BodyFontSize+.5BodyFontSize,0);
               else :
                   draw p[2] shifted (i*BodyFontSize+.5BodyFontSize,0);
           fi;
          endfor;
   \stopuseMPgraphic

   \setuphead[chapter][command=\Myheader]
   \setupheadtext
         [chapter=Chapitre]
   \defineoverlay[HeaderDeco][\uniqueMPgraphic{HeaderDeco}]

   \define[2]\Myheader{%
       \framedtext
           [width= \overlaywidth,
           height=6\bodyfontsize,
           background={foreground,HeaderDeco},
           offset=0pt,
           strut=no,
           frame=off,
           align=middle]{%
               \headtext{chapter} #1
               \blank[small]
               #2}}

\starttext
   \chapter{Here we go!}
\stoptext

Title page with special background

If you want the title page of every chapter to have a special background (different from the background of normal pages), here's a very effective trick that Hans has provided on the mailing list. In addition, this will give every chapter its own color scheme (Mkiv only, hence won't compile on contextgarden):

\startMPinclusions
    numeric MyTitlePageDone[] ;
\stopMPinclusions

\startuseMPgraphic{background:normal}
  StartPage ;
    fill (topboundary Page -- cycle) enlarged(0,5mm) 
    shifted (0,-5mm) withcolor blue ;
  StopPage ;
\stopuseMPgraphic

\defineoverlay
  [background:normal]
  [\useMPgraphic{background:normal}]

\startuseMPgraphic{background:title}
  if unknown MyTitlePageDone.\namedstructureuservariable{chapter}{mycolor} :
    StartPage ;
       fill ((topboundary Page --cycle) enlarged(0,5mm)) shifted (0,-20mm)
            withcolor \MPcolor{color:title:\namedstructureuservariable{chapter}{mycolor}} ;
    StopPage ;
    MyTitlePageDone.\namedstructureuservariable{chapter}{mycolor} := 1 ;
  fi ;
\stopuseMPgraphic

\defineoverlay
  [background:title]
  [\useMPgraphic{background:title}]

\setupbackgrounds
  [page]
  [background={background:normal,background:title}]

\definecolor [color:title:one]      [red]
\definecolor [color:title:two]      [blue]

\starttext

\startchapter[title=One][mycolor=one] \input tufte \page \input knuth \stopchapter
\startchapter[title=Two][mycolor=two] \input tufte \page \input knuth \stopchapter

\stoptext

Titles in margin

It is sometimes wanted to place the title of a section/subject etc in the margin next to the section text (instead of above it). This is achieved by the following setup:

\setuppapersize[A5]
\setuphead
   [subject]
   [alternative=text,distance=0pt,command=\MyHead,style=\sc]

\define[2]\MyHead{\inmargin{#1 #2}}

\starttext

\subject{First Subject}
\input weisman

\subject{Second Subject}
\input ward

\stoptext

See the mailing list thread for more on this.

Headings numbered independent of chapters or other headings

If you want a heading that gets numbered without resetting at new sections or chapters (for example, for problems whose numbers increment throughout a book), here is a solution due to Hans on the mailing list:

% use a lower level head

\definehead
[Problem]
[subsubsubsection]

% cleaned up

\setuphead
[Problem]
[style=\ss\bf,
color=red,
before=\blank]

% use a label text

\setuplabeltext
[Problem=Problem ]

% use your own numbers

\setuphead
[Problem]
[ownnumber=yes]

% increment and feed

\newcounter\ProblemNumber

\def\problem#1%
{\doglobal\increment\ProblemNumber
\Problem{\ProblemNumber}{#1}}

% nicer here

\setuplist
[Problem]
[alternative=c,
criterium=all,
width=2em,
interaction=all]

% the test

\starttext

List of Problems

\blank[big] \placelist[Problem] \blank[big]

\section{Tufte}

\input tufte

\problem{First problem}

The first problem description.

\section{Another Tufte}

\input tufte

\problem{Second problem}

Second problem description.

\stoptext

Chapter headers

This is an example of chapter headings with an enlarged shadow behind them, based on 20/10/2004 a solution by Hans.

\setuppapersize[A5]

\useencoding[ffr]
\mainlanguage[fr]

\setupcolors[state=start]

\definefont[BigFontOne][Regular sa 3] %RegularSlanted sa 3(ori)%Sans sa 3:don't work (pb accents)
\definefont[BigFontTwo][RegularBold sa 2]   %%RegularSlanted

\definecolor[BigColorOne][r=.86,g=.850,b=.54]
\definecolor[BigColorTwo][r=.43,g=.425,b=.27]

\setuphead
   [chapter]
   [textcommand=\MyChapterText,
    color=BigColorTwo,
    style=\BigFontTwo]

\def\MyChapterText#1{\rlap{\BigFontOne\BigColorOne#1}\kern15pt#1}

\starttext

\chapter[chap:ques]{Question}

\stoptext

Figures in Headings

This example shows how to completely replace the chapter text and number by an image:

\setuppapersize[A5]
\setupexternalfigures[location=default] % needed only for the wiki to the find the figure

\useexternalfigure[section-1][cow][width=5cm,height=1cm]
\useexternalfigure[section-2][mill.png][width=5cm,height=1cm]

\setuphead
   [section]
   [command=\MySectionCommand]
\setuphead
   [subsection]
   [command=]

\define[2]\MySectionCommand%
   {\externalfigure[section-\currentheadnumber]}

\starttext

\section{One}
\subsection{First subsection of Section One}
\section{Two}

\stoptext

There are a few snags though. MkII "forgets" to put the chapter in the TOC. So you have to set the deeptextcommand and deepnumbercommand separately instead (thus retaining the command that puts the chapter in the TOC), rather than setting the overall command, if you need a complete TOC.

\setuphead
    [chapter]
    [deeptextcommand=\MyChapterTextCommand,
     deepnumbercommand=\gobbleoneargument]      % hide chapter number

\def\MyChapterTextCommand#1%
    {\externalfigure[chapter-\currentheadnumber][height=5cm]}

[1]

Users of MkIV can safely rely on command and don't have to bother with the deep...command variants. However, \currentheadnumber does not seem to return anything but 0. Thus, the following code is required to define \MyChapterCommand when using MkIV:

\def\MyChapterCommand#1#2%
   {\externalfigure[chapter-\namedheadnumber{chapter}][height=5cm]}

[2]

Chapter head with absolute positioning of following text

No matter how many lines the chapter head runs to, the text will always start, e.g. 4cm below the top of the heading:

\setuppapersize[A6][A6]
\setupbodyfont[8pt]
\def\MyChapterCommand#1#2%
  {\vbox to 4cm\bgroup
     {#1\hskip.75em #2}
     \vss
     \egroup}
\setuphead[chapter][header=nomarking, command=\MyChapterCommand]
\starttext
\chapter{test} \input tufte
\stoptext

Section head with underlining to width of last line

A style called for section headings to be followed by a rule which extends only the width of the text. More tricky was the need to make sure that if the text ran onto another line, it was the length of the last line that was to be followed.

Hans came up with this cleverness, showing two alternate ways of doing it:

\setuppapersize[A5]

% ---- First solution ----

\def\FirstSolution#1#2%
  {\vbox\bgroup
   \setbox0\hbox{#1}
   \hsize.4\textwidth
   \beginshapebox#2\endshapebox
   \gdef\SetLastLineWidth{\xdef\LastLineWidth{\the\wd\scratchbox}}%
   \reshapebox
     {\setbox\scratchbox\hbox{\unhbox\shapebox}%
      \SetLastLineWidth
      \globallet\SetLastLineWidth\relax
      \box\scratchbox}%
   \scratchdimen\dimexpr\wd0+.25em+\LastLineWidth\relax
% \setbox2\ruledvbox   {\innerflushshapebox} 
% why is correction needed
   \setbox2\vbox        {\vskip-\lineskip\innerflushshapebox}
   \setbox0\vbox to \ht2{\box0}
   \hbox{\box0\hskip.25em\box2}
   \offinterlineskip
   \vskip.25ex
   \blackrule[width=\scratchdimen,height=1pt]
   \egroup}

% ---- Second solution ----

\doglobal\newcounter\NextLinePos

\def\SecondSolution#1#2%
  {\vbox\bgroup
   \hsize.4\textwidth
   \doglobal\increment\NextLinePos
   \setbox\scratchbox\hbox{#1}
   \hbox{\vtop{\copy\scratchbox}\hskip.25em\vtop{#2}}%
   \offinterlineskip
   \scratchdimen\dimexpr\wd\scratchbox+.25em+
     \MPx{e:npl:\NextLinePos}-\MPx{b:npl:\NextLinePos}\relax
   \vskip.25ex
   \blackrule[width=\scratchdimen,height=1pt]
   \egroup}

\def\DoSecondSolution#1%
  {\bpos{npl:\NextLinePos}#1\epos{npl:\NextLinePos}}

% ---- Trying it out solution ----

% \showstruts

\starttext
\setuphead[section][command=\FirstSolution]
    \section{is this nice or not}
    \section{is this nice or not nice, that's the question}

\setuphead[section][command=\SecondSolution,deeptextcommand=\DoSecondSolution]
    \section{is this nice or not}
    \section{is this nice or not nice, that's the question}
\stoptext

As if that wasn't enough, Taco pointed out that \lastlinewidth is the easy route to finding the width of the last line. Use something like:

\optimizedisplayspacingtrue\setlastlinewidth % core-mat macro
\global\advance\lastlinewidth-\hangindent\par % adjust
\blackrule[width=\lastlinewidth,height=1pt]

Flushing section head data without typesetting them in the text

The following is probably a very special case. Hoever suppose you need to place section information like the title e.g. in the topspace area. You want that the section is still displayed in the TOC, but you do not want that at the spot where \startsection[title=...,list=...] resides there is any trace of it. The command to be used to hide the section title is:

\setuphead
   [section]
   [placehead=hidden] 

Be aware that with this setting indeed the section title is not shown and no white space is inserted. However in this way also the list entry for the TOC is gone. What you can do in such cases is to use the following command in connection with the above mentioned setting:

\setuptexttexts[{\placerawheaddata[section]} 

What happens is that the information in the \startsection[title=...,list=...] command is passed to the texttexts, which are flushed at every page. In order to see when it is flushed you might place e.g. !!! in front of the \placerawheaddata[section].

The result is a complete TOC without any trace of the section heading in the text.

Test:

\setuphead
   [section]
   [placehead=hidden,
    page=yes]

\setuphead
   [subsection]
   [placehead=yes,
    page=yes,
    continue=yes,
    style=\it]

\setuptexttexts[{\placerawheaddata[section]}]

\starttext

\placelist[section,subsection] \page

\startsection[title=First section]

   \startsubsection[title=First subsection]
      Lorem ipsum \dots
   \stopsubsection

   \startsubsection[title=second subsection]
      Lorem ipsum \dots
   \stopsubsection

\stopsection

\startsection[title=Second section]

   \startsubsection[title=First subsection]
      Lorem ipsum \dots
   \stopsubsection

\stopsection

\stoptext

Section head without chapter number

If you only want the section number (in mark IV) in the section title you add


\setuphead[section][sectionsegments=section]
\starttext
\chapter{Eric}
\section{Foo 1}
\subsection{Bar one}
\section{Foo 2}
\stoptext

But as once you changed one you have to change the lower ones. So you have to add the definition of sectionsegments in subsection, subsubsection, ...

\setuphead[section][sectionsegments=section]
\setuphead[subsection][sectionsegments=section:subsection]
\setuphead[subsubsection][sectionsegments=section:subsubsection]

\starttext
\chapter{Eric}
\section{Foo 1}
\subsection{Bar one}
\subsubsection{Barbar one }
\subsubsection{Barbar two}
\subsection{Bar two}
\subsubsection{Barbar one}
\subsubsection{Barbar two}
\section{Foo 2}
\subsection{Bar one}
\subsubsection{Barbar one}
\subsubsection{Barbar two}
\stoptext

It's not written here but you can also change the conversion of the numbering with

\definestructureconversionset[mySet][A,R,n,n,a,r][n] 
\setuphead[chapter,section,subsection,subsubsection,subsubsubsection][sectionconversionset=mySet]

The parameters in definestructureconversionset are

the set name

the codes for conversion (one for each level)

the default conversion for the missing level

You can find the conversions codes at [3]