LATEX-L Archives

Mailing list for the LaTeX3 project

LATEX-L@LISTSERV.UNI-HEIDELBERG.DE

Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Hans Aberg <[log in to unmask]>
Reply To:
Mailing list for the LaTeX3 project <[log in to unmask]>
Date:
Fri, 26 Nov 1999 11:58:02 +0100
Content-Type:
text/plain
Parts/Attachments:
text/plain (76 lines)
One might use the idea of modules. I will try to describe it in connection
with the templates.

One reason to use a module is to collect names of a certain type or
characteristic into a common namespace, while on the same time providing
orthogonality between namespaces. It means that the user can pick a
combination of fragments from different modules, without that the names of
the different modules clash.

The templates in the http://www.latex-project.org/talks/tug99.pdf document
seems to provide some such orthogonality (I am not sure yet on what the
exact semantics is), but I will anyhow try to describe the idea of modules
in this context.

On p 26-27, there are the following examples:

  Template example (1)
  Type: hyphenation
  Args: none
  Semantics: Sets up hyphenation mechanism

  Name: TeX
  Keys: uchyph hyphenpenalty exhyphenpenalty ...
  Name: std
  Keys: hyphen-disable-boolean hyphen-uppercase-boolean ...

  Template example (2)
  Type: initial
  Args: 1,3 (\NoValue or string) 2 (string)
  Semantics: Sets up an initial character at start of paragraph followed by a
  number of characters formatted in a special font. Handles quotes to the left
  of the initial if any.

  Name: std
  Keys: initial-font initial-format text-font
  parshape-list v-adjust h-adjust ...

Now note that the templates of type ``hyphenation'' and ``initial'' both
have the name ``std''. With object thinking, the two objects
``hyphenation'' and ``initial'' both have the subobject std, somehow these
objects are created via the template mechanism, and should thus have the
object names
    hyphenation/std
    initial/std

But it seems reasonable to collect together all these standard ``std''
commands in a specially module named ``std''. Thus one gets a global object
named ``std'' with the subobjects
    std/hyphenation
    std/initial
Similarly, the TeX module might have the names
    TeX/hyphenation
    TeX/initial

One can think of various ways on how the ``std'' module (or object) is used
to instantiate the commands  hyphenation/std  and  initial/std that finally
are used.

Note however that it is possible to use the differences between x/y and y/x
to place the commands in a suitable object.

Also note that if one later wants to mix features from the ``std'' and the
``TeX'' module, that is now possible. So say that one prefers to use the
``std'' module, but some math spacing from the ``TeX'' module is preferred,
then in principle, from the point of view of avoiding name clashes, it is
possible to do that. A document can even first load the two modules, and
then locally choose from the features loaded. (There are some other
technical issues, such as if TeX itself will break by this amass of names
or how to provide a mechanism to conveniently choose use from the different
modules, but my intent is not to discuss that here.)

  Hans Aberg
                  * Email: Hans Aberg <mailto:[log in to unmask]>
                  * Home Page: <http://www.matematik.su.se/~haberg/>
                  * AMS member listing: <http://www.ams.org/cml/>

ATOM RSS1 RSS2