Received: from mail.proteosys.com ([213.139.130.197]) by nummer-3.proteosys with Microsoft SMTPSVC(6.0.3790.3959); Sat, 24 Jan 2009 19:41:06 +0100 Received: by mail.proteosys.com (8.13.8/8.13.8) with ESMTP id n0OIf1C7009258 for ; Sat, 24 Jan 2009 19:41:02 +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 n0OIboCE031105 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 24 Jan 2009 19:37:50 +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 n0NN1E1u024137; Sat, 24 Jan 2009 19:37:43 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 15.5) with spool id 174127 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sat, 24 Jan 2009 19:37:43 +0100 Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.210.211]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id n0OIbhK0021653 for ; Sat, 24 Jan 2009 19:37:43 +0100 Received: from web82004.mail.mud.yahoo.com (web82004.mail.mud.yahoo.com [66.163.178.248]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with SMTP id n0OIbaUS007821 for ; Sat, 24 Jan 2009 19:37:37 +0100 Received: (qmail 72294 invoked by uid 60001); 24 Jan 2009 18:37:34 -0000 X-YMail-OSG: P4sUWdYVM1mFL8EyF67bM6rpn6y04h2QV9iEqH8sK54clrulgKMqUNzdPj5k9s.d6n9wPg..A6pKjt9m8wT5OxV9liDR0Gcr9nZLal65UxgcJzu0ZfAKJWZrtAYYBuYnb.VNiB7cPiaH44Pgu14lmGk0pnZqF.bZh6y48.uiVz3BYLxXNjLey0uvsQ-- Received: from [128.252.117.249] by web82004.mail.mud.yahoo.com via HTTP; Sat, 24 Jan 2009 10:37:33 PST X-Mailer: YahooMailRC/1155.45 YahooMailWebService/0.7.260.1 References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Message-ID: <107876.72281.qm@web82004.mail.mud.yahoo.com> Date: Sat, 24 Jan 2009 10:37:33 -0800 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Paul Thompson Subject: Re: comma lists, semicolon lists, vbar lists To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-ProteoSys-SPAM-Score: -2.599 () BAYES_00 X-Scanned-By: MIMEDefang 2.64 on 213.139.130.197 Return-Path: owner-latex-l@LISTSERV.UNI-HEIDELBERG.DE X-OriginalArrivalTime: 24 Jan 2009 18:41:07.0270 (UTC) FILETIME=[51925660:01C97E53] Status: R X-Status: X-Keywords: X-UID: 5635 One lack of LaTeX and friends that I have NEVER understood is that there are no character-manipulation tools. In many languages, there are a large number of such tools. substr - get part of a string scan - break string into pieces by several markers (usually can specify) index - determine if string has substring and there are 20-30 more too Admittedly this goes toward making LaTeX more of a programming language, but it is a thought of something missing. Paul A. Thompson Division of Biostatistics Washington University School of Medicine St Louis, MO 63108 314-747-3793 25 Signal Hill Blvd Belleville, IL 62223-1650 618-394-1246 ----- Original Message ---- From: Will Robertson To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE Sent: Saturday, January 24, 2009 10:06:00 AM Subject: comma lists, semicolon lists, vbar lists Hello, There is currently a module in the expl3 bundle for dealing with lists of tokens separated by commas. While there is a small application of these things in areas such as XeTeX's font feature selection, this is generally designed to offer convenient ways for users to input lists of things. My question for LaTeX3 is, "are commas enough?". The current l3doc macros define the {function} environment that uses vertical bar separated lists of function names: \begin{function}{ \seq_push:Nn | \seq_push:NC } I've written a LaTeX2e package called mlist that deals with "math lists" that I define as two-d lists of items that eventually turn out to be functions or matrices or vectors or whatever: \matr{ a , b ; c , d } Whether we're dealing with commas, semicolons, or vertical bars, the basic functions for manipulating the data would be largely identical. There are two points of view here. One is that we should avoid making things more complex than they already are and highly suggest that if lists like this are going to be defined, then it's comma-lists or it's nothing. The other point of view is that we should allow some flexibility in how users may end up needing to input list-like data, and providing a range of delimited list types will be more convenient for (a) multi-dimensional lists such as used by mlist, and (b) not having to escape the delimiting characters as much; say if the list is likely to contain commas then you can delimit it with vertical bars instead. I lean towards the second philosophy. My tentative proposal is to rename the clist module to, er, something else, and for it to generalise the functions in clist such that functions for new "delimiter"-lists can be instantiated with a single command. I.e., the hypothetical command \def_delimiter_list:nn {clist} {,} would generate the suite of functions that are currently defined in l3clist; \def_delimiter_list:nn {slist} {;} might then define equivalent commands for dealing with semi-colon delimited lists. * * * Alternatively, maybe I'm taking this way too far and all we need is a generalised mapping function that can loop through a token list using an arbitrary substring as a delimiter. That would probably cover the majority of the cases that \def_delimiter_list would be useful for. * * * Any comments or further thoughts? Will