Print

Print


Philipp 

 > > 
 > > Would it be possible to build the format in such a way that the packages
 > > in question are built into it, but not activated unless such line(s) were
 > > present in the document? 
 > 
 > I thought about this issue, but how should this be done on the technical
 > level? Once you have defined a TeX macro, there is no way to "deactivate"
 > it. I had the hope that it would be possible to require either
 > \NeedsTeXFormat{LaTeX2x} or \usepackage{expl3...}, but I don't think there
 > is a simple way to do this. 

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.

 > > Would there need to be an ``\activatepackage'' command? Or is there some
 > > better command which should be used in LaTeX3? I've complained in the
 > > past of LaTeX2e document pre-ambles being meaningless line-after-line of
 > > \usepackage{foo} and would really like to see a nicer interface here ---
 > > would this be a good opportunity to introduce it? 
 > 
 > This is not possible given the package system of LaTeX 2e: packages are
 > just source code files that are read byte by byte, similar to C header
 > files. After a package has been loaded, all macros defined by the package
 > are defined and stay so forever. A more sound approach is to build a
 > monolithic system and to get rid of TeX programming as far as
 > possible that is what ConTeXt Mk IV does. 

for abitrary packages that would be a little trickier but not impossibe
either. Even if code stays forever, per package there are usually only one or
two definitions that you would need to highjack and rename to make such a
scheme fly. 

I don't agree with the statement that this needs a monolithic system. Yes such
a system makes a lot of things easier, but then there are also advantages in
the openess of the LaTeX world as far as third-party packages are concerned.

cheers
frank