% $DocId: rcs-conf.tex,v 2.6 1995/08/02 12:08:41 schrod Exp $
%------------------------------------------------------------

%
% internal interface of the rcs package
%
% [LaTeX]
% (history at end)


% This file is either a subdocument of the style or a document on
% its own. In the former case it's a chapter, in the latter it's a
% ``normal'' LaTeX progltx document.
%     If it's a subdocument, this file will be included after
% \begin{document}. We can detect this: \document redefines
% \documentclass to be \@twoclasseserror. Then we also have to define
% how this document is ended: Either by \endinput or by an additional
% revision log.
% Of course, this test works only if LaTeX 2e is used for processing.

\expandafter\ifx \csname @twoclasseserror\endcsname \documentclass

        \let\endSubDocument=\endinput

        \chap The internal interface.

\else

        \let\endSubDocument=\relax

        \documentclass{progltx}

        \usepackage{rcs-doc}            % additional document-specific markup
        \usepackage{a4-9}               % Tschichold's A4 layout

        \nofiles

        \begin{document}

        \title{The \texttt{rcs} Package\\
            {\large (Internal Interface)}%
            }
        \author{Joachim Schrod%
            \thanks{Email: \texttt{jschrod@acm.org}}%
            }

        \RCS $DocDate: 1995/08/02 12:08:41 $
        \date{%
            \RCSDocDate\\[3pt] % LaTeX Error: Paragraph terminated too early
            (Revision \RCSStyleRevision{} of \texttt{rcs.sty})%
            }

        \maketitle

        \sect

\fi


You can configure the |rcs| package by redefining control
sequences (cseqs for short). The cseqs which may be redefined form the
\textsl{protected interface}, all of them start with `|Rcs|'. Some cseqs
may be used by you to get information about the state of this module.
These form the \textsl{observer interface}, all cseqs herein start with
`|RCS_|'. Both cseq sets together form the internal interface.

You must not redefine a cseq starting with `|rcs|' or `|RCS|'. In no
case redefine a cseq containing an at~sign or an underscore---all of
them belong to the implementation. Here you have a description of an
internal interface you can rely on, use it (and only it) for
configuration.


\sect \textsl{The protected interface}.

\medskip

\noindent The cseqs of the protected interface fall in two
categories: Configuration of RCS fields and of revision logs.

In general, handlers for RCS fields may be defined, they have the
name |\RcsHandle|\textit{Keyword}. These sequences are responsible for
the filtering of the value of the RCS \textit{Keyword} field. The
unfiltered value itself is provided in the cseq
|\RCSRaw|\textit{Keyword} or in |\RCS_value| (see below).

\smallskip

\noindent The following cseqs my be redefined to configure the |rcs|
package:
%
\begin{quote}
\begin{tabular}{ll}
|\RcsEmptyValue| & used as value for an empty field\\
|\RcsHandleDate| & handler for the \Date{} field\\[1ex]
%
|\RcsLogStyle| & determines general layout of revision log\\
                & must define |\RcsLogHeading|\\
|\RcsLogListStyle| & determines layout of revision log list\\
\itshape |\RcsLogHeading{|text\/|}| & heading of revision log\\
\itshape |\RcsLogDate| date\/|\endDate|
                & typesets date in revision entry intro;\\
                & \textit{date} has the form \textit{yyyy/mm/dd}\\
\itshape |\RcsLogTime{|time\/|}|
                & typesets time in revision entry intro\\
\end{tabular}
\end{quote}


\sect The cseq |\RcsLogListStyle| needs further explanation: The
|rcslog| environment is, in fact, a list environment.
|\RcsLogListStyle| will be used as the second argument of |\list|, it
must define |\makelabel| and setup all list layout parameters.

Even though |rcslog| is implemented via |list|, I don't regard it as
such. For example, I think it should not increase the list level: an
item list in a revision entries should use the first-level item
labels. This is realized by placing the |rcslog| environment on list
level~0. It follows that |\endlist| must not be used for |\endrcslog|,
|\endtrivlist| is used instead. If you redefine |\RcsLogListStyle| in
such a way that this special list level setting is not done any more,
you \emph{must} redefine |\endrcslog| as well. You were warned.

Of course, if you just want to change some paragraph layout values,
it's better to append your definitions to the end of
|\RcsLogListStyle|.


\sect The following macros must be looked at for internationalization:
%
\begin{quote}
\begin{tabular}{ll}
|\RcsLogHeadingName| & log heading text, in front of filename\\
|\RcsUnknownFile| & used for unknown filename\\
|\RcsEmptyLog| & no revision entries are available\\
\itshape |\RcsLogRevision{|rev\/|}{|date\/|}{|time\/|}{|uid\/|}|%
        \hidewidth\null \\
                & introduces a revision entry, must be an |\item|\\
\end{tabular}
\end{quote}



\sect \textsl{The observer interface}.

\medskip

\noindent The following cseqs provide you with information you might
utilize in your configuration.
%
\begin{quote}
\begin{tabular}{ll}
|\rcs@loaded| & the module's RCS revision field\\
              & (This name does not follow the name conventions\\
              & for internal reasons.)\\[1ex]
|\RCS_keyword| & keyword of the last parsed RCS field\\
|\RCS_value| & value of the last parsed RCS field\\
\itshape |\RCS_get_author{|uid\/|}| & gets \textit{uid}'s author name\\
\end{tabular}
\end{quote}



\endSubDocument


\vskip \PltxPreSectSkip

\begin{rcslog}
$DocLog: rcs-conf.tex,v $
\Revision 2.6 1995/08/02 12:08:41 schrod
Transformed this style option into a \LaTeXe{} package.

\Revision 2.5 1995/08/01 22:54:09 schrod
Updated to \LaTeXe{}; |\RcsLoadHook| is not necessary any more as that
functionality is provided by \LaTeX{} now.

Spell checked.

\Revision 2.4 1993/11/08 20:15:12 schrod
Added possibility to configure the layout of the log list
(|\RcsLogListStyle|).

Now the log list is on level~0. Thereby item lists or enumerations in
revision entries get first-level labels. This has consequences for
the configuration, this implementation strategy must therefore be
specified in the internal interface description.

\Revision 2.3 1993/11/03 20:04:05 schrod
Cleaned up for distribution: Added email address to each document,
added copyright info to |rcs.doc|, added acknowledgments. Checked my
English and the spacing.

\Revision 2.2 1993/11/02 18:43:03 schrod
|\RcsLoaded| must not be redefined, belongs therefore to the observer
interface. I don't write it as |\RCS_loaded| though---it must be
usable outside of style files.

Don't need auxiliary files.

\Revision 2.1 1993/11/01 19:49:21 schrod
    Added sub-document that describes the internal interface.

\end{rcslog}


\end{document}

% LocalWords:  rcs yyyy mm dd rcslog rev uid
