## 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 >>]

It is difficult for me to write about these things, as I've said
before, because I have not looked into writing packages.  My point
of view is that of writing a formatter for an XML application that
makes humanoid, interceptable LaTeX source.

As I understand it, the goal for LaTeX 3 is to have several layers,
with well-defined LaTeX specs, including a layer for users to create
commands with \newcommand, a layer one level down for package writers,
and further lower layers although I am unclear about just what these
are.

Case in point: a command for users (only in a math mode)

\setbuilder{arg1}{arg2}

that produces a notational definition of a mathematical set, where
arg1 is a parameter expression and arg2 is a defining-condition
expression.

I would like to explain why this is a bit much to expect at the
\newcommand level and, therefore, what one might want to have
available at the package writer's level as a well-defined
LaTeX method.

With the present "\newcommand" one can do the following *ugly* thing:

\newcommand{\setbuilder}[2]{\left\{{#1}\mid{#2}\right\}}

This is ugly because the vertical bar provided by \mid does not
stretch correctly.

For example, a user's invocation of

$\setbuilder{\frac{m}{n}}{n \neq 0}$

should be equivalent to

$\left\{ \left. \frac{m}{n} \right| n \neq 0 \right\}$

because, in this example, the box height for the parameter expression
is greater than that of the defining-condition expression.

Of course, if the larger of the two box heights was that of the
defining condition, then one would want different arrangements for the
inner \left,\right pair, i.e.,

parameter-expression \left| defining-condition-expression \right.

and one wants \setbuilder handle this branching automatically.  My
impression is that it cannot be done legally with \newcommand.

I am suggesting that one might want to have the package writing layer
provide a well-defined LaTeX way to make branches based on various
sizes associated with the arguments of package-provided commands, so
that it would be easy for a package writer to provide this \setbuilder.
(I do not know if it actually exists somewhere, and I am not asking
that question.)

-- Bill