Difference between revisions of "Headers and Footers"

From Wiki
Jump to navigation Jump to search
(rlap and llap are macros, not primitives)
Line 58: Line 58:
  
 
You can replace <cmd>uppercase</cmd> by <cmd>WORD</cmd> and so on.
 
You can replace <cmd>uppercase</cmd> by <cmd>WORD</cmd> 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{\vbox{\hsize=\Margin%
 +
  \startalignment[right]
 +
  \getmarking[chapter]
 +
  \stopalignment
 +
}}
 +
\stopsetups
 +
 +
\startsetups[text b]
 +
\raise\MarginRaise\hbox{\vbox{\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
 +
\showsetups
 +
 +
\starttext
 +
 +
\chapter{Chapter Knuth Testing}
 +
 +
\section{Section Knuth Testing}
 +
\dorecurse{20}{\input knuth\par\ }
 +
 +
\stoptext
 +
 +
</texcode>

Revision as of 05:22, 9 November 2005

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:

\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

The use of the TeX macros rlap and llap allows centering of content.


Using capitals

In the previous example, the chapter title and the section title were fetched with the macro \getmarking which wraps around \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:


\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


You can replace \uppercase by \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!


% 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{\vbox{\hsize=\Margin%
  \startalignment[right]
  \getmarking[chapter]
  \stopalignment
}}
\stopsetups

\startsetups[text b]
\raise\MarginRaise\hbox{\vbox{\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
\showsetups

\starttext

\chapter{Chapter Knuth Testing}

\section{Section Knuth Testing}
\dorecurse{20}{\input knuth\par\ }

\stoptext