Hello,
I wrote some templates for head- and footlines. The code is taken
mainly from the fancyhdr package.
Achim
________________________________________________________________________
_ | \_____/ |
// Achim Blumensath | \ _ \O/ \___/\ |
// [log in to unmask] |-< /_\ =o= \ /\ \|
\X/ (p^2 - m^2)\psi = 0 |_/ \_ /"\ o----|
____________________________________________________________________\___|
% \iffalse
%%
%% (C) Copyright 1999 Achim Blumensath
%% All rights reserved.
%%
%% Not for general distribution. In its present form it is not allowed
%% to put this package onto CD or an archive without consulting the
%% the authors.
%%
%<*dtx>
\ProvidesFile{xhdr.dtx}
%</dtx>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{xhdr}
%<driver>\ProvidesFile{xhdr.drv}
% \fi
% \ProvidesFile{xhdr.dtx}
[2000/01/16 v0.1 header styles]
%
% \iffalse
%<*driver>
\documentclass{ltxdoc}
\usepackage{textcomp}
% \usepackage{xparse,xlists,xlists-samples}
% \usepackage{ldcdoc}
% next three definitions are big hacks to run the file
% without the above packages
%
\newcommand\NoValue{\texttt{\textbackslash NoValue}}
\newenvironment{TemplateInterfaceDescription}[1]
{\subsection{The Template Type `#1'}%
\begingroup\description
\def\TemplateArgument##1##2{\item[Arg: ##1]##2\par}%
\def\TemplateSemantics{\enddescription\endgroup
\subsubsection*{Semantics:}}%
}
{\par\bigskip}
\newenvironment{TemplateDescription}[2]
{\subsection{The Template `#2' (type #1)}%
\subsubsection*{Attributes:}%
\begingroup\description
\def\TemplateKey##1##2##3##4{\item[##1 (##2)]##3%
\ifx\TemplateKey##4\TemplateKey\else
% \hskip0ptplus3em\penalty-500\hskip 0pt plus 1filll Default:~##4%
\hfill\penalty500\hbox{}\hfill Default:~##4%
\nobreak\hskip-\parfillskip\hskip0pt\relax
\fi
\par}%
\def\TemplateSemantics{\enddescription\endgroup
\subsubsection*{Semantics \& Comments:}}%
}
{\par\bigskip}
\begin{document}
\DocInput{xhdr.dtx}
\end{document}
%</driver>
% \fi
%
%
% \GetFileInfo{xhdr.dtx}
%
% \title{The \textsf{xhdr} package\thanks{This file
% has version number \fileversion, last
% revised \filedate.}}
% \author{AB}
% \date{\filedate}
%
% \maketitle
%
% \tableofcontents
%
% \begin{abstract}
% Package for head- and footline styles derived from the
% \textsf{fancyhdr} package.
% \end{abstract}
%
% \section{Interfaces}
%
% \begin{TemplateInterfaceDescription}{header}
%
% \TemplateArgument{1}
% {Page number (\texttt{\textbackslash thepage})}
%
% \TemplateArgument{2}
% {Left mark (\texttt{\textbackslash leftmark})}
%
% \TemplateArgument{3}
% {Right mark (\texttt{\textbackslash rightmark})}
%
% \TemplateSemantics
%
% This template typesets a head- or footline.
%
% \end{TemplateInterfaceDescription}
%
%
% \begin{TemplateDescription}{header}{std}
%
% \TemplateKey{pre-action}{f0}
% {Action to perform before the header, e.g., \texttt{\textbackslash hss}.}
% {empty}
% \TemplateKey{post-action}{f0}
% {Action to perform after the header, e.g., \texttt{\textbackslash hss}.}
% {empty}
% \TemplateKey{left-text}{f3}
% {Text to appear at the left of the header. The arguments are the
% same as the templates arguments.}
% {empty}
% \TemplateKey{center-text}{f3}
% {Text to appear at the center of the header. The arguments are the
% same as the templates arguments.}
% {empty}
% \TemplateKey{right-text}{f3}
% {Text to appear at the right of the header. The arguments are the
% same as the templates arguments.}
% {empty}
% \TemplateKey{valign}{f0}
% {\texttt{b} for headlines, \texttt{t} for footlines.}
% {\texttt{b}}
% \TemplateKey{width}{l}
% {Width of the header.}
% {\texttt{\textbackslash textwidth}}
% \TemplateKey{above-skip}{l}
% {Skip above the header. Should be 0 for headlines.}
% {0.3\texttt{\textbackslash normalbaselineskip}}
% \TemplateKey{above-rule}{l}
% {Height of the rule above the header.}
% {0pt}
% \TemplateKey{below-rule}{l}
% {Height of the rule below the header.}
% {0pt}
%
% \TemplateSemantics
% This implements the \textsf{fancyhdr} layout. Separate instances for
% even/odd and head-/footlines are required.
%
% \end{TemplateDescription}
%
% \DescribeMacro\setheader
% The \verb|\setheader| command determines which headers should be used.
% The arguments are the names of instances for odd head, odd foot,
% even head, and even foot headers.
%
% \section{Implementation}
%
% \begin{macrocode}
%<*package>
\RequirePackage{xparse}
\RequirePackage{template}
\IgnoreWhiteSpace
% \end{macrocode}
%
% \begin{macrocode}
\DeclareTemplateType{header}{3}
\newdimen\HL@width
\newdimen\HL@aboverule
\newdimen\HL@belowrule
\newskip\HL@aboveskip
\DeclareTemplate{header}{std}{3}
{
pre-action =f0 [] \HL@preaction,
post-action =f0 [] \HL@postaction,
left-text =f3 [] \HL@left,
center-text =f3 [] \HL@center,
right-text =f3 [] \HL@right,
valign =f0 [b] \HL@align,
width =l [\DelayEvaluation{\textwidth}]
\HL@width,
above-skip =l [\DelayEvaluation{0.3\normalbaselineskip}]
\HL@aboveskip,
above-rule =l [0pt] \HL@aboverule,
below-rule =l [0pt] \HL@belowrule
}
{
\DoParameterAssignments
\HL@preaction
\hbox to\HL@width{
\@normalsize
\vbox{
\vskip-\HL@aboveskip
\vskip-\HL@aboverule
\hrule\@width\HL@width\@height\HL@aboverule
\vskip\HL@aboveskip
\hbox{
\rlap{\parbox[\HL@align]{\HL@width}
{\raggedright\HL@left{#1}{#2}{#3}\strut}}\hfill
\parbox[\HL@align]{\HL@width}
{\centering\HL@center{#1}{#2}{#3}\strut}\hfill
\llap{\parbox[\HL@align]{\HL@width}
{\raggedleft\HL@right{#1}{#2}{#3}\strut}}
}
\hrule\@width\HL@width\@height\HL@belowrule
\vskip-\HL@belowrule
}
}
\HL@postaction
}
% \end{macrocode}
% Two sample styles.
% \begin{macrocode}
\DeclareInstance{header}{head-plain}{std}
{
above-skip = 0pt,
pre-action = {\if@reversemargin\hss\else\relax\fi},
post-action = {\if@reversemargin\relax\else\hss\fi}
}
\DeclareInstance{header}{foot-plain}{std}
{
center-text = {#1},
valign = t,
pre-action = {\if@reversemargin\hss\else\relax\fi},
post-action = {\if@reversemargin\relax\else\hss\fi}
}
\DeclareInstance{header}{head-headings-odd}{std}
{
left-text = {\small\textsl{#2}},
right-text = {#1},
above-skip = 0pt,
below-rule = 0.4pt,
pre-action = {\if@reversemargin\hss\else\relax\fi},
post-action = {\if@reversemargin\relax\else\hss\fi}
}
\DeclareInstance{header}{head-headings-even}{std}
{
left-text = {#1},
right-text = {\small\textsl{#3}},
above-skip = 0pt,
below-rule = 0.4pt,
pre-action = {\if@reversemargin\relax\else\hss\fi},
post-action = {\if@reversemargin\hss\else\relax\fi}
}
\DeclareInstance{header}{foot-headings-odd}{std}
{
valign = t,
pre-action = {\if@reversemargin\hss\else\relax\fi},
post-action = {\if@reversemargin\relax\else\hss\fi}
}
\DeclareInstance{header}{foot-headings-even}{std}
{
valign = t,
pre-action = {\if@reversemargin\relax\else\hss\fi},
post-action = {\if@reversemargin\hss\else\relax\fi}
}
% \end{macrocode}
%
% \texttt{\textbackslash setheader} determines which instances are used.
% The arguments consist of instace names for odd head, odd foot, even
% head, and even foot.
% \begin{macrocode}
\DeclareDocumentCommand{\setheader}{mmmm}
{
\def\@oddhead{
\UseInstance{header}{#1}{\thepage}{\leftmark}{\rightmark}}
\def\@oddfoot{
\UseInstance{header}{#2}{\thepage}{\leftmark}{\rightmark}}
\def\@evenhead{
\UseInstance{header}{#3}{\thepage}{\leftmark}{\rightmark}}
\def\@evenfoot{
\UseInstance{header}{#4}{\thepage}{\leftmark}{\rightmark}}
}
% \end{macrocode}
%
% \begin{macrocode}
\endinput
% \end{macrocode}
%
% \begin{macrocode}
%</package>
% \end{macrocode}
%
%
% \Finale
%
\endinput
|