\documentclass[
a4paper,
11pt,
article
]{memoir}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[widespace]{fourier}
\usepackage{memexsupp}
\pagestyle{headings}
\setsecnumdepth{part}
\setlength\cftbeforechapterskip{0pt}


\makeatletter
\newcommand*\Arg@s[1]{\textnormal{\texttt{#1}}}%
\newcommand*\Arg@n[1]{\textnormal{$\langle$\textit{#1}$\rangle$}}%
\newcommand*\Arg{\@ifstar{\Arg@s}{\Arg@n}}%
\newcommand*\marg@s[1]{\textnormal{\texttt{\{#1\}}}}
\newcommand*\marg@n[1]{%
  \textnormal{\texttt{\{}$\langle$\textit{#1}$\rangle$\texttt{\}}}%
}
\renewcommand*\marg{\@ifstar{\marg@s}{\marg@n}}

\newcommand*\oarg@s[1]{\textnormal{\texttt{[#1]}}}
\newcommand*\oarg@n[1]{%
  \textnormal{\texttt{[}$\langle$\textit{#1}$\rangle$\texttt{]}}%
}
\renewcommand*\oarg{\@ifstar{\oarg@s}{\oarg@n}}
\providecommand*\cs[1]{\textnormal{\texttt{\symbol{'134}#1}}}
\newenvironment{syntax}{%
  \vskip.5\onelineskip%
  \begin{adjustwidth}{\parindent}{0pt}
    \parindent=0pt%
    \obeylines%
    \let\\=\relax%
  }{%
  \end{adjustwidth}%
  \vskip.5\onelineskip%
}
\newoutputstream{SCS}
\newenvironment{SCSexample}{%
  \openoutputfile{\jobname.ex}{SCS}%
  \begingroup
  \writeverbatim{SCS}%
}{%
  \endwriteverbatim\relax%
  \endgroup
  \closeoutputstream{SCS}%
  \verbatiminput{\jobname.ex}%
  {\begin{minipage}{\linewidth-4mm}
      \input{\jobname.ex}\end{minipage}}%
  \par\bigskip\noindent
}
\makeatother


\begin{document}

\title{The Memoir Experimental Support package}
\author{Lars Madsen\thanks{Email: daleif@imf.au.dk}%
\thanks{Version: 0.1, 2008/03/20}}

\maketitle

\tableofcontents*


\chapter{Introduction}
\label{cha:introduction}

This package is meant as a sort of experimental playing
ground for code that at some later point might make it into
the memoir core.

Anyone with an interest in improving the memoir class is
encouraged to participate.

Whenever Peter Wilson decides to include something from this package
into the memoir core, this package will be updated and the macros,
earlier provided here, will be removed. For this reason, we
have prefixed all user macros with >>\verb+MXS+<<.

It is also the idea that the package by it self does not
alter anything in memoir by just loading the package. The
user has to do something actively to use the features in
this package.

\chapter{Making marks for page styles}
\label{cha:making-marks-page}

One of memoirs advantages over the standard classes is it much
improved system of page style. The page styles are often broken out
over different names, such as >>\verb+chapter+<< for chapter title
pages or >>\verb+cleared+<< for blank pages before a right-hand-side
chapter (via \verb+\cleardoublepage+). These styles can easily be
redefined or \emph{aliased}.

The downside of this improved system is that even though page styles
are now easy to handle, creating the \verb+\...mark+ commands is still
hard to understand for a novice, who might just want the standard
headers but without the uppercase stuff.

In an ealier version of this document we suggested some generic macros
for helping users to create these \verb+\...mark+ macros. Those older
macros was not particularly user friendly. In contrast, most users are
more or less happy with the usual \verb+\...mark+ definitions, though
they sometimes would like to change them a little bit. To help with
this we have created the following macros:
\begin{syntax}
  \cs{MXScreatesimplemark}\marg{type}\marg{text}
  \cs{MXScreatemark}\marg{type}\marg{macro-type}\marg{visib.}\marg{prefix}\marg{postfix}
  \cs{MXSaddtopsmarks}\marg{pagestyle}\marg{before}\marg{after}
\end{syntax}
Explanation: 
\begin{verbatim}
  \MXScreatesimplemark{toc}{\contentsname}
\end{verbatim}
is the same as \cs{tocmark} being equal
to 
\begin{verbatim}
  \markboth{\memUChead{\contentsname}}{\memUChead{\contentsname}}
\end{verbatim}
where \verb+\memUChead+ is an internal memoir macro introduced in
MemPatch version 4.9a. Use the simple mark construction for
\texttt{toc}, \texttt{lot}, \texttt{lof}, \texttt{bib} and
\texttt{index}. 

The in pseudo-code the \cs{MXScreatemark} macro corresponds to:
\begin{syntax}\ttfamily
  if section or chapter number required
  \qquad if mainmatter
  \qquad\qquad if \Arg{visib.} equal \emph{true}
  \qquad\qquad\qquad\Arg{prefix}\Arg{corresponding sectional number}\Arg{postfix}
  \qquad\qquad end if
  \qquad end if
  end if
  \Arg{the title given by \cs{chapter} etc.}
\end{syntax}
Whether this is given to \verb+\markright+ or \verb+\markboth+,
depends on the value of \Arg{macro-type}, possible values are:
\emph{both} or \emph{right}. The \Arg{type} here corresponds to
\texttt{chapter}, \texttt{section},  \texttt{subsection}, and
\texttt{subsubsection}. 

Using \cs{MXSaddtopsmarks} one can add code at the beginning or the
end of an existing ps marks registration. The syntax for the last two
arguments is the same as for memoirs \verb+\addto+ macro.

Using the constructions above the marks settings for memoirs default
pagestyle, \emph{headings} can now be written as  (for a twoside setup)
\begin{verbatim}
\makeatletter
\makepsmarks{headings}{
  \MXScreatemark{chapter}{both}{true}{\@chapapp\ }{. \ }
  \MXScreatemark{section}{right}{true}{}{. \ }
  \MXScreatesimplemark{toc}{\contentsname}
  \MXScreatesimplemark{lof}{\listfigurename}
  \MXScreatesimplemark{lot}{\listtablename}
  \MXScreatesimplemark{bib}{\bibname}
  \MXScreatesimplemark{index}{\indexname}
}
\makeatother
\end{verbatim}
where \verb+\@chapapp+ is a standard macro which under normal
circumstances holds the chapter name, but under an appendix holds the
appendix name. Note the dots and the spaces. Quite clearly a lot
easier to understand than the actual code in the memoir source.

As one notices the standard \emph{headings} only includes marks for
chapter and section. But this is easy to fix:
\begin{verbatim}
\MXSaddtopsmarks{headings}{}% not adding anything at the beginning
{
  \MXScreatemark{subsection}{right}{true}{}{. \ }
  \MXScreatemark{subsubsection}{right}{true}{}{. \ }
}
\end{verbatim}
And if we just wanted to add the titles, but not the numbers, then
change \emph{true} to \emph{false}.


% Hence enter \verb+\MXSMakeSectionalMarks+:
% \begin{syntax}
%   \verb+\MXSMakeSectionalMarks+\oarg{secname}
% \end{syntax}
% \Arg{secname} has its usual meaning from \cite{memman}.
% This macro is meant to be used as in
% \begin{syntax}
%   \verb+\makepsmarks{mystyle}{\MXSMakeSectionalMarks[subsection]}+
% \end{syntax}
% Which will create \verb+\...mark+ commands for >>\texttt{chapter}<<,
% >>\texttt{section}<< and >>\texttt{subsection}<<, leaving
% >>\texttt{subsubsection}<< firing blanks.

% Internally \verb+\MXSMakeSectionalMarks+ will use
% \begin{syntax}
%   \verb+\MXSDefineChapterMark+\marg{code}
%   \verb+\MXSDefineSectionMark+\marg{code}
%   \verb+\MXSDefineSubsectionMark+\marg{code}
%   \verb+\MXSDefineSubsubsectionMark+\marg{code}
%   \verb+\MXSMakeListMarks+
% \end{syntax}
% Each of the four first macros provide the normal text for either
% \verb+\leftmark+ (\verb+\chaptermark+ only) or \verb+\rightmark+. One
% slight change is that \verb+\chaptermark+ is defined such that it
% places an identical text in both \verb+\leftmark+ or
% \verb+\rightmark+, and not just the former, as in the usual case. (The
% section mark macros, only writes to \verb+\rightmark+ as usual.)

% \verb+\MXSMakeListMarks+ is defined as:
% \begin{verbatim}
% \newcommand\MXSMakeListMarks{%
%   \def\tocmark{\markboth{\MXSMarksFormat{\contentsname}}%
%     {\MXSMarksFormat{\contentsname}}}%
%   \def\lofmark{\markboth{\MXSMarksFormat{\listfigurename}}%
%     {\MXSMarksFormat{\listfigurename}}}%
%   \def\lotmark{\markboth{\MXSMarksFormat{\listtablename}}%
%     {\MXSMarksFormat{\listtablename}}}%
%   \def\bibmark{\markboth{\MXSMarksFormat{\bibname}}%
%     {\MXSMarksFormat{\bibname}}}%
%   \def\indexmark{\markboth{\MXSMarksFormat{\indexname}}%
%     {\MXSMarksFormat{\indexname}}}%
% }
% \end{verbatim}
% The macro \verb+\MXSMarksFormat+ is also used around the code used
% inside \verb+\chatermark+ throughout \verb+\subsubsectionmark+. By
% default it does nothing. Should you want the standard uppercase memoir
% \emph{headings} style marks, simply say
% \begin{syntax}
%   \verb+\renewcommand\MXSMarksFormat{\MakeUppercase}+
% \end{syntax}
% One word of advice though, do \emph{not} add font changing
% macros into the \verb+\...mark+ definitions. Macros such as
% \verb+\bfseries+ or \verb+\small+ belongs in the page style
% configuration, not in the marks definition.



% \section{What goes on inside inside the \cs{MSXDefineXMark}?}
% \label{sec:what-inside-csdef}

% \chapterprecishere{Explanation for novice users}

% The \verb+\chaptermark+ is a bit complicated, so we will
% leave that for a moment. \verb+\sectionmark+,
% \verb+\subsectionmark+ and \verb+\subsubsection+ mark is
% much simpler to understand. In pseudocode it is:
% \begin{syntax}
%   if sectional number required
%   \qquad \Arg{sectional number plus a dot plus some space}
%   end if
%   \Arg{the title}
% \end{syntax}
% So the code for \verb+\sectionmark+ can be written:
% \begin{verbatim}
% \renewcommand\sectionmark[1]{%
%   \markright{\MXSMarkFormat{%
%     \ifnum\value{secnumdepth}>0
%       \thesection. \ %
%     \fi
%     #1}}%
% }
% \end{verbatim}
% Here >>\texttt{0}<< is the number representation for >>chapter<<, so
% if the >>\texttt{secnumdepth}<< is larger than sero, then we need to
% have section numbers as well. The number sequence goes as
% \texttt{part=-1}, \texttt{chapter=0}, \texttt{section=1},\dots

% Just remember that we will have to use \verb+##1+ in the
% code since the above goes inside
% \verb+\MXSDefineSectionMark+. The code we actually use is
% slightly different, since we save some memory by writing a
% few things using \LaTeX\ internals, but it is essentially
% the same as above. The actual code used for \verb+\DefineSectionMark+
% is
% \begin{verbatim}
% \newcommand\MXSDefineSectionMark{%
%    \def\sectionmark##1{%
%      \markright{\MXSMarksFormat{%
%          \ifnum \c@secnumdepth > \z@
%            \thesection. \ %
%          \fi
%          ##1}}}%
% }
% \end{verbatim}
% But it is equivalent with the code mentioned above (just saves some
% internal memory).



% For \verb+\chaptermark+ there are two complications: First
% we have to write to both \verb+\leftmark+ and
% \verb+\rightmark+ (we just duplicate the code) and because
% \verb+\chatermark+ usually includes the word
% >>\emph{\chaptername}<< we also have to test whether we are
% inside the front matter, where this text should not be
% printed. So the pseudocode here becomes
% \begin{syntax}
%   if chapter number required
%   \qquad if mainmatter
%   \qquad\qquad\Arg{Chapter/Appendix name plus number plus a dot plus some space}
%   \qquad end if
%   end if
%   \Arg{the title}
% \end{syntax}
% Automatic distinction between >>\emph{\chaptername}<< and
% >>\emph{\appendixname}<< is handled through the internal
% macro \verb+\@chapapp+, so we will have to use
% \verb+\makeatletter+  and \verb+\makeatother+ if one have to mess with
%  \verb+\chaptermark+ in the preamble. The code might look like
% this:
% \begin{verbatim}
% \renewcommand\chaptermark[1]{%
%   \markboth{\MXSMarkFormat{%
%     \ifnum\value{secnumdepth} > -1
%       \if@mainmatter
%         \@chapapp\ \thechapter. \ %
%       \fi
%     \fi
%     #1}}{%
%    exact copy of the above
% }}
% \end{verbatim}
% Again remember to use >>\verb+##1+<< when using this inside
% \verb+\MXSDefineChapterMark+. 

\chapter{Chapterprecis in article mode}
\label{cha:chapt-article-mode}

% In article mode vertical space is not added below the chapter title
% (which now simply resembles \cs{section}). So when you use
% \cs{chapterprecishere}, the precis text is listed too high.

% \verb+\MXSArticlePreChapterPrecis+ fixes this by redefining
% \verb+\prechapterprecis+ to not include
% \verb+\vspace*{-2\baselineskip}+, see \cite{memman} p. 121.  
% Just add
% \begin{syntax}
% \verb+\MXSArticlePreChapterPrecis+
% \end{syntax}
% to the preamble, if you are using the memoir article option.  If used
% whenever the `article' options is not in effect, a warning is issued.

Removed, fixed in mempatch 4.9.


\chapter{Multi page titlingpage}
\label{cha:mult-titl}

If one does a naive multi page titlingpage in memoir, such as
\begin{verbatim}
\documentclass{memoir}
\begin{document}
\begin{titlingpage}
\begin{center}
  cover page
\end{center}
\newpage
\begin{center}
  back of cover page
\end{center}
\newpage
\begin{center}
  title page
\end{center}
\newpage
\begin{center}
  back of title page
\end{center}
\end{titlingpage}
\end{document}
\end{verbatim}
You will soon discover that some of these pages actually have headers
or footers in contrast to the fact that the \emph{titlingpage}
environment should use the \emph{titlingpage} page style for its
pages. There is no easy way around this so the \texttt{MXStitlingpage}
environment solves this problem by redefining macros such as
\verb+\newpage+ and \verb+\clearpage+ to locally make sure the
\emph{titlingpage} page style is used on the next page.

Just remember that if you have the habit of using \verb+\cleartorecto+
then you might end up with a page where the page style actually used,
is not \emph{titlingpage} but rather \emph{cleared} (they are
initially aliased to the same page style).

\begin{quote}
  \itshape
  If anyone have better ideas for fixing this problem regarding the
  \emph{titlingpage} environment, please let me know.
\end{quote}


\begin{thebibliography}{9}
\bibitem{memman} Peter Wilson, \emph{The Memoir Class for Configurable
  Typesetting}, The Herres Press, 2004.
\bibitem{memmanadd}
Peter Wilson, \emph{Addendum -- The Memoir Class for Configurable Typesetting;
  User Guide}, 2007. 
\end{thebibliography}


\end{document}



%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 


