Changes

Jump to navigation Jump to search
4,803 bytes added ,  20:10, 8 June 2020
no edit summary
= Headers with centered content =
ConTeXt offers the possibility to have mirrored headers (for odd and even pages); content can be in two parts, at the inner and outer margin of each page. But how do you get a header that will have one part of its content centered and one part in the outer margin? (This is a common setup for books: chapter title centered, page number in outer margin.) Hans posted this solution to the list:
 
<texcode>
\setuppagenumbering[alternative=doublesided]
 
\setupheadertexts[]
\setupheadertexts[\setups{text a}][][][\setups{text b}]
 
\startsetups[text a]
\rlap{\pagenumber}
\hfill
\getmarking[chapter]
\hfill
\llap{whatever}
\stopsetups
 
\startsetups[text b]
\rlap{whatever}
\hfill
\getmarking[section]
\hfill
\llap{\pagenumber}
\stopsetups
 
</texcode>
 
The use of the TeX macros {{cmd|rlap}} and {{cmd|llap}} allows centering of content. Note that {{cmd|pagenumber}} gets you the number prior to conversion; if you're using {{cmd|setupuserpagenumber}}[numberconversion=...] then you'll want to use {{cmd|userpagenumber}} instead.
 
= Using capitals =
 
In the previous example, the chapter title and the section title were fetched with the macro {{cmd|getmarking}} which wraps around {{cmd|fetchmark}}.
However, in case you need a raw version of the mark, say for instance to put it uppercase, you may use this setup instead:
 
<texcode>
 
\startsetups[text a]
\rlap{\pagenumber}
\hfill
\expanded{\uppercase{\fetchmark[chapter][first]}}
\hfill
\llap{whatever}
\stopsetups
 
\startsetups[text b]
\rlap{whatever}
\hfill
\expanded{\uppercase{\fetchmark[section][first]}}
\hfill
\llap{\pagenumber}
\stopsetups
 
</texcode>
 
 
You can replace {{cmd|uppercase}} by {{cmd|WORD}} and so on.
 
= Marginal headings and centered headings =
 
The following file gives a way to achieve marginal and centered headings for doublesided documents. Experiment to achieve other effects!
 
<texcode>
 
% output=pdf interface=en
 
\setuppapersize [A5][A4]
 
\newdimen\Margin
\Margin=3cm
 
\newdimen\MarginRaise
\MarginRaise=56ex
 
\setuplayout[width=middle,
height=middle,
footer=3\bodyfontsize,
header=\bodyfontsize,
headerdistance=\bodyfontsize,
bottom=3\bodyfontsize,
location={middle,doublesided},
margin=\Margin,
marking=on]
 
\setuppagenumbering[alternative=doublesided,
location={footer,middle}]
 
\setuptexttexts[margin][][\setups{text a}][\setups{text b}][]
\setuptext[style=\tf,state=high]
 
\startsetups[text a]
\raise\MarginRaise\hbox{\vtop{\hsize=\Margin%
\startalignment[right]
\getmarking[chapter]
\stopalignment
}}
\stopsetups
 
\startsetups[text b]
\raise\MarginRaise\hbox{\vtop{\hsize=\Margin%
\startalignment[left]
\getmarking[section]
\stopalignment
}}
\stopsetups
 
\setupbottomtexts[pagenumber]
\setupbottom[style=\tf,state=high]
 
\setupfootertexts%
[][\setups{text c}][\setups{text d}][]
\setupfooter[style=\tf,
state=high]
 
\startsetups[text c]
\midaligned{\raise2\bodyfontsize\hbox{\getmarking[chapter]}}
\stopsetups
 
\startsetups[text d]
\midaligned{\raise2\bodyfontsize\hbox{\getmarking[section]}}
\stopsetups
 
\setupinmargin[align=inner,
style=\tfx\setupinterlinespace]
 
\showframe
 
\starttext
 
\chapter{Chapter Knuth Testing}
 
\section{Section Knuth Testing}
\dorecurse{20}{\input knuth\par\ }
 
\stoptext
 
</texcode>
 
= Skipping headers or footers =
 
You can suppress or bypass a header or footer on a chapter page like this:
<texcode>
% with header=high the text area of the page will extend up
% into the space where the header normaly sits
\setuphead[chapter][header=high,footer=none]
 
% header=empty leaves the header area intact,
% but does not fill it with any text
\setuphead[chapter][header=empty,footer=none]
</texcode>
Works only if the head title starts a new page. Since section does not do this by default, then you must write
<texcode>
\setuphead[section][page=yes,header=high,footer=none]
</texcode>
 
The options for 'header=' and 'footer=' are none,empty,high,nomarking.
 
= Substituting a shorter lemma for a ''section'' header =
 
Given a global setup such as
 
<texcode>
\setupheadertexts%
[][section][chapter][]
</texcode>
 
Sometimes the ''section'' title is too long to fit in the header. Instead of manually inserting a new \setupheadertexts comamnd you may use something like
 
<texcode>
\startsection
[title={Here is a section title too long to fit in the header},
marking={Here is a section title}]
</texcode>
 
Similarly, you can send shorter lemmas to the table of contents or to bookmarks. So the relevant keys include
 
<texcode>
title marking list bookmark
</texcode>
 
= Further reading =
 
* [[Page numbering in words]]
 
[[Category:Basics]]

Navigation menu