On 19/09/2011 08:14, Kevin Godby wrote:
> I'm inclined to agree with Philipp. Skimming through the existing
> LaTeX 2e packages, it looks like a lot of \newlength lines are
> followed immediately by setting a default value. In some cases,
> commands are provided to modify the length and in other cases, the
> document author is expected to \setlength them in their preamble.
> Most of the cases that I spot-checked were non-constant values.
As Frank has commented, this is very much how LaTeX2e works but not
necessarily what we'd expect to be dominant for LaTeX3.
> I'm not sure what the LaTeX 3 plans are for the keyval stuff is,
> though. How would you handle this situation using the LaTeX 3 coding
For design-level stuff, the template system should be taking a lot of
the work on, while for more flexible stuff there is l3keys. Both are
keyval-based, and separate out 'define' and 'set' stages.
> On the topic of constants: Aside from the c_ prefix indicating to the
> reader/author that the value is to be constant, is there anything that
> prevents one from changing the value? How much overhead would it be
> to have the LaTeX 3 macros check for the c_ prefix and throw an error
> if you try to modify the value?
Currently, we don't check this, and the overhead would be I think too
big for production code. I'm hoping we can go down the route of a set of
'debug' DocStrip guards to generate a slow-but-checking version of
LaTeX3 for testing purposes. Something of this idea is seen in the
'check-declarations' option for loading expl3.
> As for the iow_open question, I think that most languages will
> overwrite the existing file by default. If you want to provide an
> option for appending to the file, I'd create an ioa_open:N macro.
This one seems clear: the arguments for a _new function here are
reasonable. Expect an update to the SVN this week (possibly today,
depends on how busy I am).