Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with ESMTP id s48CtPZG030170 for ; Thu, 8 May 2014 14:55:26 +0200 Received: from relay2.uni-heidelberg.de ([129.206.210.211]) by mx-ha.gmx.net (mxgmx004) with ESMTPS (Nemesis) id 0MY4ps-1WMGUJ1A5Q-00Uq6G for ; Thu, 08 May 2014 14:55:20 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.94]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id s48CpxBG000740 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 8 May 2014 14:52:00 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id s48C72jJ007638; Thu, 8 May 2014 14:51:59 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 10917166 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 8 May 2014 14:51:59 +0200 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id s48CpxaZ027690 for ; Thu, 8 May 2014 14:51:59 +0200 Received: from mail1.bemta14.messagelabs.com (mail1.bemta14.messagelabs.com [193.109.254.115]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id s48CpiVN028228 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Thu, 8 May 2014 14:51:47 +0200 Received: from [85.158.140.195:25150] by server-11.bemta-14.messagelabs.com id C4/97-09902-0ED7B635; Thu, 08 May 2014 12:51:44 +0000 X-Env-Sender: david.carlisle@nag.co.uk X-Msg-Ref: server-14.tower-193.messagelabs.com!1399553499!12294000!1 X-Originating-IP: [213.199.154.13] X-StarScan-Received: X-StarScan-Version: 6.11.3; banners=nag.co.uk,-,- X-VirusChecked: Checked Received: (qmail 17184 invoked from network); 8 May 2014 12:51:39 -0000 Received: from mail-am1lp0013.outbound.protection.outlook.com (HELO emea01-am1-obe.outbound.protection.outlook.com) (213.199.154.13) by server-14.tower-193.messagelabs.com with AES128-SHA encrypted SMTP; 8 May 2014 12:51:39 -0000 Received: from [192.156.217.104] (86.188.197.189) by AM3PR05MB356.eurprd05.prod.outlook.com (10.242.247.26) with Microsoft SMTP Server (TLS) id 15.0.934.12; Thu, 8 May 2014 12:51:37 +0000 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 MIME-Version: 1.0 References: <5367BB2E.1010403@nag.co.uk> Content-Type: multipart/mixed; boundary="------------090001080006060505030700" X-Originating-IP: [86.188.197.189] X-ClientProxiedBy: AM3PR01CA039.eurprd01.prod.exchangelabs.com (10.141.191.29) To AM3PR05MB356.eurprd05.prod.outlook.com (10.242.247.26) X-Forefront-PRVS: 0205EDCD76 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009001)(6009001)(6029001)(6049001)(428001)(479174003)(5423002)(24454002)(199002)(189002)(50986999)(85852003)(83072002)(80022001)(65806001)(74662001)(46102001)(79102001)(42186004)(83506001)(512934002)(76482001)(74502001)(74482001)(92726001)(512944002)(101416001)(84326002)(76176999)(74826001)(81542001)(81342001)(36756003)(4396001)(20776003)(64126003)(33656001)(21056001)(77982001)(59896001)(64706001)(87266999)(54356999)(83322001)(99396002)(65816999)(66066001)(71186001)(65956001)(87976001)(19580395003)(568964001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR05MB356;H:[192.156.217.104];FPR:;MLV:sfv;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (: nag.co.uk does not designate permitted sender hosts) X-OriginatorOrg: nag.co.uk Message-ID: <536B7DD6.2010905@nag.co.uk> Date: Thu, 8 May 2014 13:51:34 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: David Carlisle Subject: Re: New LaTeX2e Release 2014/05/01 : Serious bug in keyval? To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: Envelope-To: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=V3; X-GMX-Antivirus: 0 (no virus found) X-UI-Filterresults: notjunk:1;V01:K0:NWtQSx/RpbI=:sEp5PqlcqHmWXSCpwO6Z0u7RM4 CNgAHSmD5LFkF1BmDeuOkEvIayAdIJFI1Z1KrRFS7vL3Fj3KyXY3TNnvc/VFDj8LVstl0cFWC T0+xVjYle0tJyKNTK2/2wAkDmjXdWEHcdWsr3vrs9Bv2jOGvAyvX3LN22WUn3BQsr+pA6OCJW Cx2ihW2+71pYf/+YL06t+KAkEOKxwwmcIEpdRIkPyWgrwv7gYtYSyoWdb5p6rK83Xg1EcV6Uk bvTgBzaKoLmLVHdO2soveqqDRZcGQT/ikErBb6xMPcnpAvRpe1b/h1A+kdMP9ulKVliFyJdhq l2ZNDBLwHNA2Uo8ngjW7SBpYA/m1jBDatpYiZaZIaodGia9x1FnZHy8T0jMBir5bKj5xUvor0 5Y/Zgwve8DQ/1N8WgHfLByrDiCdOxF2F0yOXuhQgLdHFbQUDrn1ppFELP0kv43zeyIStkLzWl m6IWZihEb/jTqPnbpObhqybESdoarSKdhjvDidBDfFUechjKqttG9eNj/Sc3a7uyXz3Fx1rXx ENj+XxHjusqsGXhSpMlV0nAaOYyyJ0DSmCJo2n2a6lgEt/o90M0yUTJ9bBLFHUxanCcOifTy+ cWfkjZBcRF9NtIaLzC9vyGDTq3QDqVrFDwBelX+YvzlLxGln94LcZWW3+sh+YE908CYHU5kTf xeGglut25xQyurcZuTlPZ5f1I47y3/2/hDy/T12T7km3jeo9a9FeKmys6QNApfc9e3MhSWfCx OM3H49eneKro9qZQ4rL4NtJDOuTlMQsU2x6TrRd1bxmR4ezpjCEMcsvmnBsB+kMz13EeuguC9 /YIiKY//jxa3otNWT2Y0O68MwgMTDnbeKfODs3YXwvCNIVeq4DxxMH/Cj/HHt8EoWOSYlvGo8 xc43tg3+aUYlFchi7nRrFYpSNw6tkT8pGrtAunaZcIT9L3N0DiXs+0L7RsH5MKGW1gU1l+v6i oboV+ogt7fg9nNp6AZOX6CxqHQWHrCqmHv2gYnUNPpjFKoh4KiiQw5pOn/X4+GaGG1RnDN9ej uz1lkjS+k5/6N/mq+p3xIJonVzDq8oFvoBx1db7HlUaYufsEAUF33q3OQvFiaCgh4ZxDoIFmY pPlpZO5fty5PNKXBUrFkzT59yEsgR7AWU2/fXQbnC8j14Eq12h31DfN1oHbKMIYJL0g6MhUhi NaoUhoLDcwcA0VTQwksf08H/hJMjx7QnBn8gJ4FbdBEtVSrAkNoVx9u3aDo3/gBjVXfDa/l/C BKuydB2QSMpZvInRUBOT1gA53+rMDiMOWvF8DlvUbX5DrP5bEsxwwBUFBTUykXcV4k9O1pIAJ eeBTz6DxuRBKAVlPgmE++j7LZVsBOaYXy+xKofzJdeKb1R4Mbif9pt4AY/XxnDefydTl2IcFc 9XVZ/CBx/ZT/oMk4+PwqZ37WcphKjq3qd1GVNQ8ntRchf/eEsiY6zbzVvQL X-UI-Loop:V01:ljxBv+DF9ag=:brsBeMFuKVusgX1HtN/WGYfHydkZfEgck3Nc1Rph6aE= Status: R X-Status: X-Keywords: X-UID: 7404 --------------090001080006060505030700 Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit On 08/05/2014 09:14, Ulrike Fischer wrote: > ... It turns out that the bug was always in keyval, the number of brace groups that are stripped can be affected by whether you put space around =. It was documented as always stripping 2 but sometimes it stripped 1. The change to strip one less brace would have been good, and not broken biblatex had it always stripped 1 group except now it sometimes strips 0 which is why biblatex's indent = {german} produces unknown language {german} error. The original bug is fixable but a more invasive change and I propose not to do it and instead roll back the brace stripping change (leaving the \long change). That means deleting an \@empty and an \expandafter from the new keyval producing the attached If anyone has some real biblatex files and could confirm to me that this doesn't break them I'd be grateful. David ________________________________________________________________________ The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. ________________________________________________________________________ --------------090001080006060505030700 Content-Type: text/plain; charset="windows-1252"; name="keyval.sty" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="keyval.sty" %% %% This is file `keyval.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% keyval.dtx (with options: `package') %% %% keyval.dtx Copyright (C) 1993 1994 1995 1997 1998 1999 2014 David Carlisle %% %% This file is part of the Standard LaTeX `Graphics Bundle'. %% It may be distributed under the terms of the LaTeX Project Public %% License, as described in lppl.txt in the base LaTeX distribution. %% Either version 1.3c or, at your option, any later version. %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{keyval} [2014/05/08 v1.15 key=value parser (DPC)] \long\def\setkeys#1#2{% \def\KV@prefix{KV@#1@}% \let\@tempc\relax \KV@do#2,\relax,} \long\def\KV@do#1,{% \ifx\relax#1\@empty\else \KV@split#1==\relax \expandafter\KV@do\fi} \long\def\KV@split#1=#2=#3\relax{% \KV@@sp@def\@tempa{#1}% \ifx\@tempa\@empty\else \expandafter\let\expandafter\@tempc \csname\KV@prefix\@tempa\endcsname \ifx\@tempc\relax \KV@errx {\@tempa\space undefined}% \else \ifx\@empty#3\@empty \KV@default \else \KV@@sp@def\@tempb{#2}% \expandafter\@tempc\expandafter{\@tempb}\relax \fi \fi \fi} \def\KV@default{% \expandafter\let\expandafter\@tempb \csname\KV@prefix\@tempa @default\endcsname \ifx\@tempb\relax \KV@err{No value specified for \@tempa}% \else \@tempb\relax \fi} \DeclareOption{unknownkeysallowed}{% \def\KV@errx#1{\PackageInfo{keyval}{#1}}} \DeclareOption{unknownkeyserror}{% \def\KV@errx#1{\PackageError{keyval}{#1}\@ehc}} \ExecuteOptions{unknownkeyserror} \let\KV@err\KV@errx \ProcessOptions \def\@tempa#1{% \long\def\KV@@sp@def##1##2{% \futurelet\KV@tempa\KV@@sp@d##2\@nil\@nil#1\@nil\relax##1}% \def\KV@@sp@d{% \ifx\KV@tempa\@sptoken \expandafter\KV@@sp@b \else \expandafter\KV@@sp@b\expandafter#1% \fi}% \long\def\KV@@sp@b#1##1 \@nil{\KV@@sp@c##1}% } \@tempa{ } \long\def\KV@@sp@c#1\@nil#2\relax#3{\KV@toks@{#1}\edef#3{\the\KV@toks@}} \newtoks\KV@toks@ \def\define@key#1#2{% \@ifnextchar[{\KV@def{#1}{#2}}{\long\@namedef{KV@#1@#2}####1}} \def\KV@def#1#2[#3]{% \long\@namedef{KV@#1@#2@default\expandafter}\expandafter {\csname KV@#1@#2\endcsname{#3}}% \long\@namedef{KV@#1@#2}##1} \endinput %% %% End of file `keyval.sty'. --------------090001080006060505030700--