Received: from mx0.gmx.net (mx0.gmx.net [213.165.64.100]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with SMTP id p2AFKAU6025868 for ; Thu, 10 Mar 2011 16:20:11 +0100 Received: (qmail 22543 invoked by alias); 10 Mar 2011 15:20:05 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 10 Mar 2011 15:20:03 -0000 Received: from relay.uni-heidelberg.de (EHLO relay.uni-heidelberg.de) [129.206.100.212] by mx0.gmx.net (mx010) with SMTP; 10 Mar 2011 16:20:03 +0100 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.94]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p2AFI16h000531 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 10 Mar 2011 16:18:01 +0100 Received: from listserv.uni-heidelberg.de (localhost.localdomain [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p2AE6Mj1022495; Thu, 10 Mar 2011 16:17:49 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 1297702 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 10 Mar 2011 16:17:49 +0100 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p2AFHn52009821 for ; Thu, 10 Mar 2011 16:17:49 +0100 Received: from mail-yi0-f49.google.com (mail-yi0-f49.google.com [209.85.218.49]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p2AFHhS4000422 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=FAIL) for ; Thu, 10 Mar 2011 16:17:48 +0100 Received: by yic15 with SMTP id 15so1258863yic.22 for ; Thu, 10 Mar 2011 07:17:43 -0800 (PST) MIME-Version: 1.0 Received: by 10.236.63.45 with SMTP id z33mr1266549yhc.192.1299770262953; Thu, 10 Mar 2011 07:17:42 -0800 (PST) Received: by 10.146.82.5 with HTTP; Thu, 10 Mar 2011 07:17:42 -0800 (PST) References: <4D738DB1.3020807@gmx.de> <19831.22704.372331.894399@morse.mittelbach-online.de> <56ED2B8C-74D6-4163-A98C-52B8CA052724@frycomm.com> <19831.50558.187028.513243@morse.mittelbach-online.de> Content-Type: text/plain; charset=ISO-8859-1 X-Spam-Whitelist: Message-ID: Date: Thu, 10 Mar 2011 10:17:42 -0500 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Bruno Le Floch Subject: Re: format? To: LATEX-L@listserv.uni-heidelberg.de In-Reply-To: <19831.50558.187028.513243@morse.mittelbach-online.de> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=5D7Q89H36p4U4jfdfC5HDevlx1X2sAZgAaLl3DbFfW0PXxL7WgvovMFXXSEPrACW/b9IW Qp+GhEViZlUW4mdBntgP1X8KwB5tjHCA/yxSZMu7BXBiPs3ujyaoi2xLHDqpg8dk65Dhpb3Lg0c1 iTjGg==V1; X-Resent-By: Forwarder X-Resent-For: rainer.schoepf@gmx.net X-Resent-To: rainer@rainer-schoepf.de Status: R X-Status: X-Keywords: X-UID: 6665 > 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 following. - 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 features.} 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 \ExplSyntaxOn \ExplSyntaxOff \ExplSyntaxNamesOff \ExplSyntaxNamesOn \ProvidesExplFile \ProvidesExplClass \ProvidesExplPackage \filedescription \fileauthor \filetimestamp \fileversion \filedate \filenameext \filename \GetIdInfo % from l3chk \traceoff \traceon \tracingoff \donotcheck \absolutelytracingall \tracingall % from l3precom \dumpLaTeXstate % from l3calc \stepcounter \addtocounter \setcounter \gaddtolength \addtolength \gsetlength \setlength \real \ratio \totalheightof \depthof \heightof \widthof \minof \maxof -- Bruno