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 p7NAC7l6011596 for ; Tue, 23 Aug 2011 12:12:08 +0200 Received: (qmail 31249 invoked by alias); 23 Aug 2011 10:12:02 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 23 Aug 2011 10:12:01 -0000 Received: from relay.uni-heidelberg.de (EHLO relay.uni-heidelberg.de) [129.206.100.212] by mx0.gmx.net (mx036) with SMTP; 23 Aug 2011 12:12:01 +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 p7NA9qnn004478 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 23 Aug 2011 12:09:52 +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 p7NA4OBO001953; Tue, 23 Aug 2011 12:09:51 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 1596619 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Tue, 23 Aug 2011 12:09:51 +0200 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 p7NA9pQJ031250 for ; Tue, 23 Aug 2011 12:09:51 +0200 Received: from ueamailgate02.uea.ac.uk (ueamailgate02.uea.ac.uk [139.222.131.185]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id p7NA9eF1012951 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 23 Aug 2011 12:09:44 +0200 Received: from ueams02.uea.ac.uk (ueams02.uea.ac.uk [139.222.131.131]) by ueamailgate02.uea.ac.uk (8.13.8/8.13.8) with ESMTP id p7NA9d4j007723 for ; Tue, 23 Aug 2011 11:09:39 +0100 Received: from [139.222.115.140] by ueams02.uea.ac.uk with esmtp (Exim 4.69) (envelope-from ) id 1QvnuQ-0003ou-2e for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Tue, 23 Aug 2011 11:08:38 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110812 Thunderbird/6.0 MIME-Version: 1.0 References: <4E4FF538.7070601@morningstar2.co.uk> <9788A2B7-3E8F-4D2C-A52E-10999BCB59FA@gmail.com> <4E516DF2.4040002@morningstar2.co.uk> <104nbkj0nr84x.dlg@nililand.de> <4E523217.2080408@morningstar2.co.uk> <4E52AA87.6090608@morningstar2.co.uk> <1i25hv8yiyx81$.dlg@nililand.de> X-Enigmail-Version: 1.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Bayes-Prob: 0.0001 (Score 0, tokens from: @@RPTN, outgoing) X-CanIt-Geo: ip=139.222.131.131; country=GB; region=I9; city=Norwich; latitude=52.6333; longitude=1.3000; http://maps.google.com/maps?q=52.6333,1.3000&z=6 X-CanItPRO-Stream: UEA:outgoing (inherits from UEA:default,base:default) X-Canit-Stats-ID: 06FnK9DuA - cdd7f754f3e4 - 20110823 X-Scanned-By: CanIt (www . roaringpenguin . com) on 139.222.131.185 Message-ID: <4E537C7A.5040605@morningstar2.co.uk> Date: Tue, 23 Aug 2011 11:10:02 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: Re: couple of l3keys notes To: LATEX-L@listserv.uni-heidelberg.de In-Reply-To: <1i25hv8yiyx81$.dlg@nililand.de> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (eXpurgate); Detail=5D7Q89H36p70EVnmPwpfx3xNeC+yKFx5wIZUWd41tyWk2DGRDFKIlv6Q7VKuVzEKI7WyY LIHT/zEeBKJgzRFls1mTyX7uy7AO+L1oDId9gnRmL+up+wJ/esbdyQbJxfdK1T9D8c3xC8Od4woP 466eoLG9fzmQ75JzyAjOxjF+RppLXiHIs60berQ9ST68fTUKFw+4U56iuI=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: 6825 On 23/08/2011 09:32, Ulrike Fischer wrote: > I don't have enough practice with l3keys to decide this - just > starting. But from the language I would expect a \keys_set_known to > give an error if it encounters something unknown. Also a command to > set keys can set only known keys, so it sound like a pleonasm. Well no, as the special 'unknown' key allows behaviour for a key which is not defined to be set up. > Another question: pdfkeys has the notion of a "key tree" and > "pathes". And you can switch pathes with a command. (.cd I think). > Can/should one do something similar with l3keys? I see the > subgroups, but I'm not sure if they really are the same conzept. Internally, l3keys uses the same storage approach as pgfkeys. The \keys_set:nn macro is rather more like \pgfqkeys than \pgfkeys, in the sense that it includes a root to search from. It is therefore possible to do something like \keys_set:nn { } { foo / key-a = value , bar / key-a = other-value } So it would in principal be quite possible to implement \keys_set:n % No starting path { / foo .cd: , key-a = value , bar .cd: , key-a = other-value } However, at the moment there's not been a good use case for l3keys for such an approach. Explaining keys as a tree is not so easy as dealing with each modules keys separately. The idea is to grow l3keys as functionality is needed, and to date this more complex idea has not really been required. As you observe, the documents do suggest subgrouping keys using "/" as a separator. That is exactly because of the internal storage method of keys, and is intended to make implementing something like the .cd property from pgfkeys relatively straight-forward. -- Joseph Wright