Received: from mail.proteosys.com ([213.139.130.197]) by nummer-3.proteosys with Microsoft SMTPSVC(6.0.3790.3959); Tue, 4 Aug 2009 23:40:54 +0200 Received: by mail.proteosys.com (8.14.3/8.14.3) with ESMTP id n74Leq8M023552 for ; Tue, 4 Aug 2009 23:40:53 +0200 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 n74LbIue002338 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 4 Aug 2009 23:37:18 +0200 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 n74FRYCT011091; Tue, 4 Aug 2009 23:37:17 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 15.5) with spool id 301597 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Tue, 4 Aug 2009 23:37:17 +0200 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 n74LbGDP005314 for ; Tue, 4 Aug 2009 23:37:16 +0200 Received: from lon1-post-1.mail.demon.net (lon1-post-1.mail.demon.net [195.173.77.148]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id n74Lb0iX001425 for ; Tue, 4 Aug 2009 23:37:04 +0200 Received: from cremornelane.demon.co.uk ([80.177.25.195] helo=[192.168.0.2]) by lon1-post-1.mail.demon.net with esmtp (Exim 4.69) id 1MYRgq-0002Wq-YH for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Tue, 04 Aug 2009 21:37:00 +0000 User-Agent: Thunderbird 2.0.0.22 (Windows/20090605) MIME-Version: 1.0 References: <4A781594.8060202@elzevir.fr> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Message-ID: <4A78A9FE.5020309@morningstar2.co.uk> Date: Tue, 4 Aug 2009 22:37:02 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: Re: using expl3 for latex2e packages To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <4A781594.8060202@elzevir.fr> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-ProteoSys-SPAM-Score: -6.599 () BAYES_00,RCVD_IN_DNSWL_MED X-Scanned-By: MIMEDefang 2.65 on 213.139.130.197 Return-Path: owner-latex-l@LISTSERV.UNI-HEIDELBERG.DE X-OriginalArrivalTime: 04 Aug 2009 21:40:54.0188 (UTC) FILETIME=[3E6366C0:01CA154C] Status: R X-Status: X-Keywords: X-UID: 5812 Hello Manual, Manuel Pégourié-Gonnard wrote: > As a package author, I could be tempted to use the expl3 "toolkit" and > "philosophy" (naming conventions) right now for my new packages, but my main > concern is the following: is expl3 stable enough for using it in production > packages? Though I try to keep informed, I must admit I don't feel so sure. My interest in LaTeX3 also stems from working with it for my own packages, so I've asked some of this myself in the past. Perhaps the answers have slipped through the net :-) > > L3news02 states that "The expl3 code is now considered to be much more > stable than it was before". expl3.pdf (section 6 "the *experimental* > distribution") says "the interface will change". OTOH, source3 states that "The > syntax conventions and functions provided are now ready for wider use." Who's > right between expl3 and source3? (I assume source3, but...) This probably reflects the fact that things were written at different times. I tried to summarise things in the "snapshot" CTAN announcement, but didn't check everything else through (I wrote what is in source3, but didn't update expl3: sorry). I'll try to sort out these bits and pieces over the next few days, and perhaps do a CTAN release once the text makes sense. For the record here, the idea is that expl3 is stable. That means if you do: \usepackage{expl3} what you get as a package author should not disappear in the future (although things can be added). The recent re-factor is the last one for the existing code. There are a few exceptions: - l3precom and l3chk are not loaded with \usepackage{expl3}, and therefore might change. (Speaking personally, I would drop both entirely.) - Anything to do with creating a format is still "anything might happen". If anything is *removed* from the stable expl3 (very unlikely now) there will be something added to the file "l3obselete.txt" in the documentation. You'll see that it is currently empty, as the dropped functions from TeX Live 2008 are in "l3obselete2008.txt". The idea is that TeX Live 2009 represents a "baseline" expl3. > Another point of concern about using expl3 is that probably we still need to use > other l2e packages too, and then the syntax will be a mix and expl3 and l2e > style. I wonder how to handle it (rename the functions I use with expl3-style > names?). There are some things that definitely need to be added: for example, I think we need some kind of floating-point support, perhaps something for strings, etc. Of course, if anyone fancies writing them ... (I'm planning to look at floating points, based on what pgf/pgfplots does, in the autumn.) At the same time this depends on what you want to achieve. To see that happens at a practical level, I'm moving my own siunitx package over to using expl3 internally as much as possible (http://developer.berlios.de/projects/siunitx/). There, there is a lot of programming and not too much interaction with other packages, so what I've found is: - A lot of stuff is expl3 only. - There are places that need user functions (for example \ensuremath): I'm just using them "as is" and will alter things if they come out differently when a LaTeX3 kernel is written. - For interaction with the LaTeX2e kernel (for example \@ifpackageloaded), I'm accepting that "Latex3-on-LaTeX2e" means using LaTeX2e functions. So I have things like: \msg_new:nnnn { siunitx } { incompatible-package } {% Package `#1' incompatible.% }{% The #1 package and siunitx are incompatible.\\% Use the `emulate=#1' package option when loading siunitx.% } \cs_new_nopar:Nn \siunitx_load_check: { \clist_map_function:nN { SIunits, sistyle, siunits, SIstyle } \siunitx_load_check_aux:n } \cs_new_nopar:Nn \siunitx_load_check_aux:n { \group_begin: \@ifpackageloaded {#1} { \msg_error:nnx { siunitx } { incompatible-package } {#1} } {} \group_end: } \clist_map_function:nN { SIunits, sistyle, siunits, SIstyle, unitsdef, fancyunits } \siunitx_load_check_aux:n \AtBeginDocument { \siunitx_load_check: } which are "as much LaTeX3 as possible". When there is a LaTeX3 kernel, these will have to change (or more likely I'll have a single DTX with LaTeX2e and LaTeX3 variants). One thing I I'm going to need for siunitx is a stable xparse module. I'm *hoping* the team can agree on finalising it soon (more on that later). > Maybe the l3 team could publish advice on how to use expl3 in l2e packages, and > include clear statements about which level of stability can be expected from > which module I guess this should be in expl3.pdf. I'll see that I can do. > (I mean, are newer modules such as l3keyval and l3msg as stable as > more basic modules). As I wrote both of these (I assume you mean l3keys: l3keyval is the lower-level and older stuff), I'm possibly not the best person to answer this! My feeling is that, as both had quite a bit of discussion before they were added in the current state they should be as stable as anything else in expl3. > I you feel it's time for expl3 to be more widely used and start becoming the > standard toolkit for LaTeX programming, maybe more communication could help. > More generally, I feel too few people know about the current l3 achievements and > philosophy, and this problem should be addressed. (Of course the l3 news are a > good point in this direction.) One thing that might be helpful is to ensure that, where possible, the team discuss things here (i.e. in public). I try to remember to do that: hopefully the other team members can be encouraged to do the same. On the xparse issue, there has been some internal discussion. Tomorrow, I'll try to summarise how I think things should go and send it here. > PS: just as there are projects like texworks aiming at "lowering the barrier to > entry" in the TeX world for complete beginners, I think it's important to lower > the barrier to entry in the l3 world for the average (or advanced, to begin > with) l2e package writer. Totally agree. The article in the latest TUGBoat is intended to do that: some discussions with Karl Berry suggest trying to have a regular slot in TUGBoat as at least one way to do this. -- Joseph Wright