Philip Taylor writes: > >> Of course one way to do that is if the format has \let\def\@undefined > > How can that work? Assuming that (e.g.) "\newcommand" is > macro -> {... \def ...}, then without a LaTeX equivalent of PostScript's "bind", > you still need access to "\def"; and if "\newcommand" is > macro -> {... \someconcealedversionofdef ...}, then the user can > use "\someconcealedversionofdef" :-( Phil, this is not the question. we all agree that there is no way to hide a primitive from a use of a clever programmer if you want use it yourself. of course if you don't you can really delete it :-) point is that if you try to provide a programming style but keep alternate names around then you will get a mess of code using both or either or ... so it works in the sense that people don't accidentially mix stuff or use dangerous commands --- they do it only if they have enough "criminal" energy. simple example from current latex: if you use \hbox instead of \mbox then a user typically runs into one of two problems at some point: missing \leavevmode or strange effects if color is used (as \hbox in constrast to \mbox is not color-save) if Leslie had moved all such primitives that where never intended to be used on document level to \@@... as he did with those he had to redefine many user problems (solved and resolved over and over again on ctt) would have never happened. of course that would'nt have hindered their use in package files or even in the document via \makeatletter but it would have produced a clear distinction between user-level and programmer level. frank