Print

Print


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
% |\@[log in to unmask]\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.
%