As promised this is the first installment of templates and code for galley
formatting, the rest will hopefully follow in couple of days.

The complete document  can be found at

 http://www.latex-project.org/code/experimental/galley/xhj.dtx

as an introduction I've added the first part to this mail below.

I think that this document already serves as a good introduction to the
high-level aspects of the new galley mechanism and though one can't make use
of the code without the low-level interfaces I hope that the documentation
will spawn a lively discussion. A lot of issues and requests for comments are
already added into the documentation.

Enjoy (and please don't just denote agreement with polite silence :-)

Frank

% \begin{abstract}
%   This module contains basic templates for interfacing with the
%   galley mechanism as set up by the module
%   \texttt{galley2}. These templates are intended for class
%   designers and are mostly usable out of the box (i.e., this is one
%   of the modules where providing a suitable number of default
%   instances is probably sensible since they would cover 98\% of all
%   usage. In contrast the \texttt{galley2} module contains only
%   low-level interfaces for
%   direct manipulation of the galley mechanism which are geared
%   towards package writers having special needs which are not
%   fulfilled by the templates in this module.
% \end{abstract}
%
%
%
%
% \section{Introduction}
%
% In \LaTeXplus{} terminology a galley is a rectangular area which
% receives text and other material filling it from
% top.\footnote{The predominant direction depends on the writing
% system and with extensions to \TeX{} such as Omega there are
% possibilities to define galleys with a different filling direction.}
% The vertically extend of a galley is normally not restricted
% (there are exceptions); instead certain chunks are taken off the top
% of an
% already partially filled galley to form columns or similar areas
% on a page. This process is typically asynchronous but there are ways
% to control or change its behavior.
%
% Examples for galleys are `the main galley', where the continuous
% document data gets formatted into  and from which columns and pages are
% constructed, and  `vbox galley's, such as the body of  a minipage
% environment or the body of a float (in \LaTeXe only---the new float
% mechanism for \LaTeXplus{} will employ horizontally oriented float
% bodies). The latter galleys are typically not being split after
% formatting though there can be exceptions.
%
% Low-level interfaces for setting up such galleys and the way objects
% are formatted into them are provided by the module
% \texttt{galley2}.
%
% \subsection{Formatting layers}
%
% The present module is mainly concerned with the
% formatting of text in such galleys.
% The galley mechanism provides interfaces at four different layers
% some of which can be manipulated through the templates provided by
% this module.
%
% \subsubsection{Outer galley dimensions}
%
% In the bottom layer the external dimensions of a galley are
% fixed. In most cases only the horizontal dimension is defined while
% the vertical dimension (i.e., the filling direction) remains
% unspecified. These dimensions are fixed when initiating a new galley,
% using low-level functions, and are not modifiable. The horizontal
% overall width of the current galley is available for inspection in
% the register |\hsize|.\footnote{This is going to change once there
% is a final concept for handling this part of the interface, e.g.,
% the relation of \texttt{\textbackslash hsize},
% \texttt{\textbackslash columnwidth}, and \texttt{\textbackslash
% textwidth}. The latter are actually parameters of the text-page and
% should probably not be handled as it is done in \LaTeXe{}, i.e., by
% also using \texttt{\textbackslash columnwidth} as a measure for the
% current galley width. Perhaps one should introduce a
% \texttt{\textbackslash galleywidth} parameter instead of using
% \texttt{\textbackslash hsize}.}
% There are no templates that only set variable of this layer, though
% higher level
% templates (e.g., a template for providing minipage functionality)
% will of course address this part of the galley mechanism.
%
%
% \subsubsection{Inner galley dimensions}
%
% The second layer defines the inner horizontal galley dimensions of
% the galley, i.e., the measure used for paragraph text and its
% positioning within the galley. The current measure of the galley is
% available for inspection in the register |\linewidth| and the
% indentation from the left outer margin is available in the register
% |\@totalleftmargin|.\footnote{The two registers are already
% available in \LaTeXe{} and their names have been  retained to make
% it easier to use a mixture of old and new code. However at some
% point the interface should be made more uniform by either providing
% two user accessible or two user inaccessible names.}
%
% This layer can (and should) be manipulated by higher-level templates
% through template instances of the type `measure'. These templates
% make long-term changes.
%
%
%
%
% \subsubsection{Paragraph shapes}
%
% The third layer defines the paragraph shape within the measure as
% provided by the second layer. In the absence of any specification
% for that layer the paragraph shape used will be that of a
% rectangular area of the width of the current measure.
%
% For this layer we are restricted by the mechanisms offered by
% \TeX{}. This means that it is possible to define particular
% paragraph shapes such as cutouts only from the top of a paragraph
% but not relative to its bottom.
%
% This layer can (and should) be manipulated by higher-level templates
% through template instances of the type `pshape'. Templates in this
% layer typically make short-term changes only (i.e. applicable only
% to the upcoming paragraph), however templates for long-term changes
% are also permissable though none are provided right now.
%
% A future implementation of the \texttt{galley2} module is probably
% going to support pshapes spanning several paragraphs, however at the
% moment pshapes apply per paragraph only.
%
%
% \subsubsection{Text formatting within the paragraph shape}
%
% The forth (and currently final) layer deals with  the paragraph
% formatting aspects such as hyphenation and justification (h\&j which
% gave the current module its name).
%
% There are several template types in this layer: `hj' is a type that
% sets all aspects of h\&j in a single template whereas the types
% `justification', `linebreak', and `hyphenation' deal with individual
% aspects.
%