Print

Print


The set of parameter access letters (c l g C L G R) may need
amending. I was putting together a one-page "quick reference" for
LaTeX3 conventions, and I wanted to put in some examples of variables
that have the different kinds of access. I could not think of any
example for C "constant and TeX will not allow you to change it", and
further investigation still did not turn up anything, unless C was
intended for things like \badness; but I think \badness and similar
are the intended recipients of the R designation, since they are not
constant throughout a TeX run, although they are truly read-only.

So I think the "C" should be discarded, leaving c l g R L G.

Furthermore, the following question should probably be addressed in
the documentation of the access types. It came up during my current
attempts to convert an existing package to LaTeX3 form. I have a
variable, let us pretend that it is called \g_parindent, that is
supposed to have a "global" value that prevails throughout an entire
document. But it is not "constant" because it is OK for the
documentclass to change this variable, or it might be changed
"globally" for some subdocument context such as a footnote, a float,
or an appendix.

And there is a companion variable \l_parindent that is the
current value of this parameter for the current local context.
However---and here is the problem---because of the way that this
variable is used, \l_parindent must sometimes be assigned globally.
So the "l" access specifier appears to be wrong.

I guess the best approach would be to use "g" for both forms of the
variable and use the description part of the name to indicate their
relative meaning:

  \g_master_parindent
  \g_cur_parindent

or something along those lines. So then the list of access letters
does not need to be extended. But this issue seems important enough
that it would be helpful to have it mentioned in the documentation
about the access letters.

And finally, the documentation should probably point out that some of
the TeX primitive parameters are only pseudo-global: The current value
extends beyond the end of the current group but not beyond the end of
the current box. Examples are \prevgraf, \prevdepth, \spacefactor.