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 > style? 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). -- Joseph Wright