LATEX-L Archives

Mailing list for the LaTeX3 project


Options: Use Classic View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Bruno Le Floch <[log in to unmask]>
Thu, 10 Mar 2011 10:17:42 -0500
text/plain (91 lines)
> there are possibilities of various sophistication. A simple approach
> for just expl3 would be something like \ActivateExplCode
> \DeactivateExplCode where the latter would simply hook into some
> core functions like the arg expansion mechanism, e.g., replacing
> \exp_args:No and a few others with a suitable error message when
> called. And \ActivateExplCode would \cs_set_eq:NN the orig
> definitions back. All you would need to do would be to select the
> right kind of code pieces to make this work.

But that `\ActivateExplCode` cannot be added to the LaTeX2e kernel,
isn't it? If I'm right on that, then in order to be usable with
LaTeX2e, new documents would still need to explicitly
`\usepackage{expl3}`. In order to enforce that, we can do the

- The LaTeX2x format contains all the definitions of expl3, but at the
end, it saves and undefines every experimental command that does not
contain either : or _ in its name.

- The package starts by checking what format called it. If it is
LaTeX2e, then all definitions are made as currently. Otherwise, the
saved definitions are restored.

The idea is that once `\ExplSyntaxOn` is undefined, the user cannot
access most of the experimental features (except by manually changing
catcodes, but that's harder than writing `\usepackage{expl3}`, so
hopefully, people won't do that). Of course, as Frank mentions,
meaningful errors are better, so the LaTeX2x format can define each
user command to be

\PackageError{expl3}{Package not loaded.}{You need to write
\string\usepackage{expl3} in your preamble to use the experimental

On the other hand, if the LaTeX2e kernel _can_ be modified, then e.g.
`\ExplSyntaxOn` could be defined to do
`\usepackage{expl3}\ExplSyntaxOn` by LaTeX2e.

A list of macros with no _ nor : in their name (only those documented
by `\begin{function}{...}` in the implementation part of a l3....dtx
file, and I'm not sure of my script).

% from l3names

% from l3chk

% from l3precom

% from l3calc

-- Bruno