The rcs Package

(Internal Interface)

Joachim Schrod^{∗}

August 2, 1995 (Revision 2.10 of rcs.sty)

1. You can configure the rcs package by redefining control sequences (cseqs for short). The cseqs which may be redefined form the 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 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.

2. The protected interface.

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 \RcsHandleKeyword. These sequences are responsible for the filtering of the value of the RCS Keyword field. The unfiltered value itself is provided in the cseq \RCSRawKeyword or in \RCS_value (see below). The following cseqs my be redefined to configure the rcs package:

\RcsEmptyValue  used as value for an empty field
\RcsHandleDate  handler for the Date field
\RcsLogStyle  determines general layout of revision log

                               must define \RcsLogHeading

\RcsLogListStyle  determines layout of revision log list
\RcsLogHeading{text}  heading of revision log
\RcsLogDate date\endDate typesets date in revision entry intro;

date has the form yyyy/mm/dd

\RcsLogTime{time}  typesets time in revision entry intro

∗Email: jschrod@acm.org

3. 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 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.

4. The following macros must be looked at for internationalization:

\RcsLogHeadingName log heading text, in front of filename
\RcsUnknownFile  used for unknown filename
\RcsEmptyLog  no revision entries are available

      \RcsLogRevision{rev}{date}{time}{uid}

introduces a revision entry, must be an \item

5. The observer interface.

The following cseqs provide you with information you might utilize in your configuration.

\rcs@loaded  the module’s RCS revision field

(This name does not follow the name conventions for internal reasons.)

\RCS_keyword  keyword of the last parsed RCS field
\RCS_value  value of the last parsed RCS field
\RCS_get_author{uid} gets uid’s author name

Revision Log for rcs-conf.tex

Revision 2.6 (created at August 2, 1995 by Joachim Schrod)

Transformed this style option into a LaTEX 2ε package. Revision 2.5 (created at August 1, 1995 by Joachim Schrod)

Updated to LaTEX 2ε; \RcsLoadHook is not necessary any more as that functionality is provided by LaTEX now.

Spell checked.

Revision 2.4 (created at November 8, 1993 by Joachim 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 (created at November 3, 1993 by Joachim 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 (created at November 2, 1993 by Joachim 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 (created at November 1, 1993 by Joachim Schrod) Added sub-document that describes the internal interface.