At 12:56 +0200 2001/05/21, Lars Hellström wrote:
>>So the best one could hope for, I think, is to build a layer above those
>>glyphs, say an empty set command that can expand to \emptyset or
>>\varnothing, a set membership command that can expand to either of \in or
>>the two epsilon variations, but there can be no restrictions on the glyphs
>>themselves in the sense that the use of one of them prohibits the other.
>
>My suggestion is rather that the current set of math symbol commands should
>be made into this layer (hence some commands which now produce different
>results would then by default produce identical results).

This is what I say one should not do, because it will screw up the manner
mathematicians may use those glyphs.

However, I suggested an scheme that would put the different names in
different namespaces, and here I use "/" as a namespace separator: Thus a
name in PlainTeX might be named \tex/<name>.

Then the tex namespace in LaTeX3 would have the names \tex/epsilon,
\tex/varepsilon, \tex/emptyset, \ams/varnothing, etc.

If one uses a Unicode based TeX, and these characters have Unicode
representation, then the could be connected to that. But all Unicode
characters should be accessible.

Then on top of that you may define your own LaTeX namespace, which could be
a global namespace with \let\in=\tex/in, etc, or a local \let\latex/in =
\let\tex/in, etc.

This way, the LaTeX variations only appear as suggestions, and it is very
easy for someone to make alterations and add new definitions.

> Finally, for the more common task of selecting which
>glyphic variant of a character to use, there should be a simpler interface
>than giving an explicit code point, perhaps something like
>
>  \chooseglyph{\leq}{slanted}

I think one should be able to specify other attributes as well, if it is a
binary relation etc
\new{symbol}{in}{binary}{\tex/in}
\newsymbol{in}{binary}{\tex/in}
or something.

A user that would want a different variation could do this easily say by
\renew{symbol}{in}{binary}{\tex/varepsilon}
\define{symbol}{in}{binary}{\tex/varepsilon}
or something.

(Depending on how one introduces LaTeX primitives, one may want definition
macros
new     error if name already defined
renew   error if name not defined
define  always overrides old definitions
-- These different types may have an importance when joining together
manuscripts written by different people.)

I recall that the (old) AMS-TeX package had some such commands.

One problem with these ideas is that it might be to slow on such relatively
low level commands. But then the TeX successor should have added a good way
to select namespaces and glyphs.

Hans Aberg