Print

Print


Am 09.03.2011 um 15:51 schrieb William Adams:

> On Mar 9, 2011, at 5:38 AM, Frank Mittelbach wrote:
> 
>> Now you can say that if somebody starts of  the document with
>> 
>> \usepackage{expl3,xparse,template} 
>> 
>> say then everything will be fine whether or not the document will be produced
>> by ordinary 2e format or 2x.
>> 
>> But history will tell us that what is likely to happen is that people start
>> writing documents that will not \RequirePackage/\usepackage
> 
> 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.

> 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.