Print

Print


Robin Fairbairns wrote:
> joseph seemed to me to be addressing the internal macros that implement
> environments, rather than what the user says to invoke the environment.
> 
> the existing system has its problems, not least because one mayn't use
> \newcommand to define a command \end...; this is certainly a bear trap.
> however, there seem relatively few bears around nowadays.  we have had
> _one_ confused user on c.t.t in the last 12 months, that i recall.

The confusion is one point I was thinking about, although as you say
this doesn't necessarily come up a lot. (I've been caught by this one,
in the past, when I wanted macro called \endo, a chemistry term.)

My main point was about keeping internal and user macros well defined
and separated.  As Robin says, whether you stick with \begin{<whatever>}
... \end{<whatever>} or do something different is more a user interface
issue.  (That said, if you go down the ConTeXt-esque route then the
problem essentially disappears as the macros are then in user space.)

The key point for me is that using \<whatever> ... \end<whatever> to
store the code for \begin{<whatever>} ... \end{<whatever>} is bad
because it means that there are two macros \<whatever> and
\end<whatever> that the user doesn't see and isn't really supposed to
use, but that have user space names.  So as there's been discussion
about naming macros, avoiding clashes, etc., it seems like a good time
to talk about this.
-- 
Joseph Wright