Print

Print


Javier

 > In fact, both g and l specifiers are wrong, because TeX lacks
 > the concept of variable scope. Only *assignments* are local
 > or global and a certain macro is assigned globally or locally
 > depending on the context. (That makes \global different to \outer
 > and \long, as you can see in the p 210 of the TeXbook.)

i think wrong here is the wrong word. The fact that the underlying
language does in principle allow you to mix local and global
assignments does not mean that on a higher level of abstraction you
want to distinguish variables for global or local use (and discurrage
or even prevent mixing those assignments).

 > The best approach is not to believe that TeX is ModulaX or Java -- just

nobody believes that TeX is that or at least I don't but that doesn't
mean that i want to structure my variables. the fact that, for
example, half of the \newif commands in current latex are meant to be
used always globally but have no indication of needing this access
method has resulted in quite a number of bugs over the years.

or to give a different example, this is like claiming that LaTeX or
plain TeX has no concept of internal commands (ie those with @ in them
since it is not part of the language and everybody can make @ a letter
at any time. or course everybody can but then he/she is conceptually
starting to work with internal commands.

 > >  \g_master_parindent
 > >  \g_cur_parindent
 > >
 > >or something along those lines.
 >
 > And don't forget the intermediate levels when you write a footnote in
 > a minipage in a float in an appendix in a document! ;-)
 >
 > >So I think the "C" should be discarded, leaving c l g R L G.
 >
 > I think all of them should be discarded.


i disagree with both of you: discard RLG but keep the (in my opinion)
helpful distinction between constants and variable intended for local
or for global use. this covers 99.9% of any code you need to write and
helps structuring it a lot for easier understanding and less errors.

if you look at the article produced for TUB you will notice that there
only c l g are described (plus a vague sentence that "these codes
include the following" which indicates that there might be more). this
was because working with this i found that more would not be helpful
but rather over the top.

frank