Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by h2774747.stratoserver.net (8.15.2/8.15.2/Debian-3) with ESMTP id x0QCNsHT027227 for ; Sat, 26 Jan 2019 13:23:55 +0100 Received: from relay.uni-heidelberg.de ([129.206.100.212]) by mx-ha.gmx.net (mxgmx016 [212.227.15.9]) with ESMTP (Nemesis) id 1Mv21a-1h52PM49Ro-00qrxr for ; Sat, 26 Jan 2019 13:23:49 +0100 Received: from listserv.uni-heidelberg.de ([129.206.100.94]) by relay.uni-heidelberg.de with ESMTP; 26 Jan 2019 13:23:49 +0100 Received: from listserv (localhost [127.0.0.1]) by listserv.uni-heidelberg.de (Postfix) with ESMTP id 8656E1278B6; Sat, 26 Jan 2019 13:23:42 +0100 (CET) Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 32874283 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sat, 26 Jan 2019 13:23:42 +0100 Delivered-To: LATEX-L@listserv.uni-heidelberg.de Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.119.212]) by listserv.uni-heidelberg.de (Postfix) with ESMTP id 5F2B9127891 for ; Sat, 26 Jan 2019 13:23:42 +0100 (CET) X-IronPort-MID: 8733024 X-IronPort-RemoteIP: 209.85.128.46 X-IronPort-SenderGroup: UNKNOWNLIST X-IronPort-MailFlowPolicy: $ACCEPTED X-IronPort-Reputation: 3.4 IronPort-PHdr: =?us-ascii?q?9a23=3A6awRRxSotrTQvpjHWgGCygcoMdpsv++ubCcI9p?= =?us-ascii?q?oqja5Pea2//pPkeXbS/uhpkESQDdWJ8f9AgvuM9b3mWCkA7JeNvXQIfYZDER?= =?us-ascii?q?MI2o0NhwJ1JsmDBAXgKeLyKTQgFZFAU0Ro53H9LlJUF8biT1jVuHuz6zEJBh?= =?us-ascii?q?zlb0x+IaLoGd2alNy5gsa1/ZCbeABUnHy4aLJ2Ig+xqFDTsdIbmYskNbwwxR?= =?us-ascii?q?vVin5PYeJXw2xzOVuJxVD34YGt/80r6Dxe7tQm8cMISqDmZ+I4QLhfWSwhKH?= =?us-ascii?q?ww7db3uAPrSAKO4j4DVzxTnEYWRQfC6x7+U9H6tS6j7LhH1SKXPNP7QfUPYR?= =?us-ascii?q?r5s/05bhjuhW9HLTM9+XCNzNF2jedbrROtqhh1zpTbJo2YZrJ4eevGcNUWSH?= =?us-ascii?q?AkPI4ZXjFdAo66c4oEDvYQdedeoY7nolISrBy4TQCyDeLrwzVMizf4x6o/m+?= =?us-ascii?q?gmFAjH2kQnEbds+DzWq874LKdUTvq0w6nU5TDEdfVX3zjm9IHSKFYqpreRXv?= =?us-ascii?q?M4cMbcz1UuCxKQlk+Z+umHd3ue0uUAtXTe7vI1D7r+zT567Vgr8n7zmJRkkI?= =?us-ascii?q?TCi4MLx0qR7yh9yZdvY8C+SQt7bN+oHZ9aujuVcYd7EaZACyllvjg3zroetN?= =?us-ascii?q?u1Zi8Pnd4lwAXSc/zBbJKJ7RL/fOOWOzF5gn1+ZLul3VC59g69yaevM6v8mE?= =?us-ascii?q?YPtSdDntTW4zoP0Afe8sjBVeF88Ue98TOIzQbS7O5fPUkuz+zQLNg8wfRj8/?= =?us-ascii?q?hb+VSGFSjwlkLsiaaQfUhx4emk5dPsZbD+r4OdPYt501usCKkll82hDOh9CT?= =?us-ascii?q?AgBDTEq8K70rCrvVf0RLxb1LsrlKicsJ3bKckfrKOjDElZ39Rr7RH3FDqg3N?= =?us-ascii?q?kC+BtPZFtYZBKKiZToMFDSMbj5C/m4mVGljDZswbjPILTgBpzHKnWLnq3meP?= =?us-ascii?q?5x7EtVyQx7yt46hdocCLYaLerzHFDrtdPYEjc8NBaywuDoE8l0zNlYUmXJH6?= =?us-ascii?q?zYeKLevFmU5/4+duyFZYsbojH4eJ1Hr7bliX40n0NYfLH8h8NGLiDlWK08cw?= =?us-ascii?q?PFPymkmNoKHGYUsxBrVuHugUzYFyNVZjOyUqMw6zUxBZipS4vOFeXPyPSM2j?= =?us-ascii?q?m2GppOayVIEFeJRD3qcJ6JQ/dKdziTLc99ujkDT76gTYA6yRi07knxzPx6La?= =?us-ascii?q?CHn09Q/YKmz9Vz6+DJwFsw8id5F8TbzHuMQGFotmYPXTk32q9kvUVnkBGI1u?= =?us-ascii?q?5lgLYLcL4br+MMWQA8O5nGyuV8AN2nQQPNcOCCT1O+S8mnCzU8F4hj+dIFbk?= =?us-ascii?q?djFtnntSjthHb1UZkSkbHDRIY59qvNhT7sIcc4y3vH2KQlhVQ8TY1DOD/ugK?= =?us-ascii?q?k37AXVC4PT9ifR36+3aaQR2jLM/2af3CKPuk9fSgt5TaTCWzgWeELXqd3z4k?= =?us-ascii?q?6KQaWpDPwrNQ5IyMjKLaUvCJWhlVJdWPLqI8jTeUq0kma0QAmNn/aCMNSsdG?= =?us-ascii?q?Ia0yHQTkMDlkFb/HqLMxQ/Gjb0o2/aC28LdxqnaEft/O9i7XKjGxVsnkfaMg?= =?us-ascii?q?s4jerzpkBGzeaRQP4SwL8e7T0srzxlRhCg2dOTC9eBqwdldqhGbpUx7QQity?= =?us-ascii?q?qRugpjM5inN60niEQZdlE9vUT12g13TJpakMcqsFsvyxB0KKSXy09IbWne1p?= =?us-ascii?q?e2J76deQyQtFi/LrXb3F3TyoPc4qAU9PExsEnupimsH0smtmpiipxbjyXa6Z?= =?us-ascii?q?LNAw4fF5n2Vwxkknoy76GfaS476YTO0HRqOqThqT7O1eUiA+49wwqhddNSaf?= =?us-ascii?q?LWJErJC8QfQvOWBqkvklmtYAgDOboKpqszJcWncfSdxKexZqBrm3S7jjYfud?= =?us-ascii?q?wv4ge37yN5D9Xw8dMd2fjChlmCUC36jVGuqdz+g9oCbjZUA2ntkXG5Vr4UXb?= =?us-ascii?q?V7eMMwMUnrI8CzwY8j1ZvkWnod61v6Ql1ahommfh2da1G71gpVhxwa?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DsAwC1UExchi6AVdFkhBhtTiMEMoQ?= =?us-ascii?q?BlW8IJZksA1QMAYRsAoMKGgYGNBIBAwEBAgEBAQEUAQEBCAsLCCkjDIVKAQE?= =?us-ascii?q?BAQIBAQEhDwEFCAEBOAQLCQIYAgImAgI0AQUBHAUBDQgBAYMegXoIBI0zkAo?= =?us-ascii?q?8iipxgS+CdwEBBYJFhF8ICQEIeYs2gVc/gTgMgl+ETYM9gleiSQcCgjMEj3E?= =?us-ascii?q?eiiQNBYd2lDeGbgIEAgQFAgUPIYE8gXczGjQ/gmyCJw4Jg0uKUz8zAY83AQE?= X-IronPort-AV: E=Sophos;i="5.56,525,1539640800"; d="scan'208";a="8733024" X-MGA-submission: =?us-ascii?q?MDF/SX8xbERyakhXtUADVUeYUDJDvPztpxoWTM?= =?us-ascii?q?76H0TAb1yjV4EnLJGhLippTBBO8Xy+dZa/yQejtpXqWYL8c4ArrzI+5j?= =?us-ascii?q?daHGnC6UXJmlEeXI6mEsvPERcTZC2eqWtM+uyLSyxgtOf1+IXi2VYPbA?= =?us-ascii?q?hC6JilfoOXleKQOrhWfqCKsQ=3D=3D?= Received: from mail-wm1-f46.google.com ([209.85.128.46]) by relay2.uni-heidelberg.de with ESMTP/TLS/AES128-GCM-SHA256; 26 Jan 2019 13:23:42 +0100 Received: by mail-wm1-f46.google.com with SMTP id g67so9029459wmd.2 for ; Sat, 26 Jan 2019 04:23:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=ujTgbiHRve+7Yk85b3NGJfSWFZXX9TQl2/+nh6yIwQg=; b=ennALY9A1sQPfMbs8NDFs3DwHUIItbbcHCCf/IfFNu/Avz5ecnv3QzehcYuW6Sa3ZZ 6jqiZ6xWlg3jdqauXGqqkVKGW6+6cYM4yK1SOsZqklg6n2/I0hFeo8TWBtF1w6DAPAqy JzJwfmfOXjGBO0Xek5eubvTgj1hEoCbal9G5+WrL34bShqoACAI3QWxKAXHGIEJEvThg YVlflUrH2gwkiexyx2VFtJQECrZkyAi0tqsRlUBFrNL6bXfCA61qA5xvhakWEp3OV3gT 1KhLV7T9pBldIQARNTeC1g4AbDngRO7X0e99JkOLYwX5DZgB4AfScCAHs+qasVdfF8xB IfZA== X-Gm-Message-State: AJcUukfT6hoJWJTPT+St6xB/WsC7BuWQT7QWtAYVC0Ymrvjqtm9H8Bwn gKYpTE+FK1YNe0iFnZDkv6PosBMi+sA= X-Google-Smtp-Source: ALg8bN6nLLjdIL08BTh14GymlOwCQo+mtJwG9l3oxBX8eyOX0W6IrIZShFAPeGwhiLw/KzKcG6VDDw== X-Received: by 2002:a1c:7d06:: with SMTP id y6mr10152734wmc.7.1548505421080; Sat, 26 Jan 2019 04:23:41 -0800 (PST) Received: from [192.168.1.75] (126.28.189.80.dyn.plus.net. [80.189.28.126]) by smtp.gmail.com with ESMTPSA id y34sm283195721wrd.68.2019.01.26.04.23.39 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 26 Jan 2019 04:23:40 -0800 (PST) References: <536afa93-d39e-8ade-e940-102755737d15@gmail.com> User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit Message-ID: Date: Sat, 26 Jan 2019 12:23:39 +0000 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: Re: l3draw transformations To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <536afa93-d39e-8ade-e940-102755737d15@gmail.com> 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-Spam-Flag: NO X-UI-Filterresults: notjunk:1;V03:K0:Y9/8hQUsl8s=:RxEVJvoe1mF9NIvvimAamjOZSe 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 X-UI-Loop:V01:L3TNDef9jsk=:3JZ2JECnHqLshYba4R+zF52PiL4q2/KYRYrrCk5qfwQ= X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:4ra+MbLzfLY=:xIrsxL4fpzGqnnOo9yoUjf mlaNyyk5oXaw7C51fZyECBipDMrP2ik0MaiJkh402NuVLbTNiJzDPAKwP4BDY4M7HJpq3hJ5L UHVrd3/v5+5qrcUW2IoVdEtC6/eSnxIuoMzZTSELzX666sHyW2Vrw3rTTMdSqV2JKvUwjEI6q JFmlE6Ic2tzrcH7s11vF/9Lhantt7AO/gK6hgGVGPuWKTy9AJHtYM7E30kfHH76PyG+P5XShf MIY1jc/J71UKzhXsQxErqSc5qN57SIKcbEMnScnavg7NUNDNRhqG8GCR3uAFMzazhzjnP0U2c bKzl7Jr2SdnVtH89FuBI6tXbMCECLWBpAoMgJIYA+u5qK/jMK6Uim/DB6ZSxPPcOWkXtq0gt0 wvJmkvK78PQTTXn2dWT+FpDxaqlCR0Rc5aZ32K13VfiNbC5LieyhhoS95Vc0sSIdiCQLugbWw tSf/MjPYEw== X-Scanned-By: MIMEDefang 2.78 on 81.169.212.23 Status: R X-Status: X-Keywords: X-UID: 8161 On 24/01/2019 22:12, Andrew Parsloe wrote: > Reading through the l3draw documentation various matters came to mind: Thanks for taking the time on this: to date there's not been a lot of detailed feedback. > Section 1.9 of l3draw.pdf > Typos > Text: \draw_transform_matrix:nnnnn >       has a fifth "n" > Margin: \draw_transform_xscale:n >       the second occurrence should be \draw_transform_yscale:n and not > greyed out. > Text: \draw_transform_shift:n >       \draw_transform_xshift:n >      delete \draw_transform_shift:n > Margin: \draw_transform_matrix_reset >       needs a concluding colon All corrected for the next release. > Clarification > Perhaps there should be a mention under > \draw_transform_matrix_concat:nnnn that concatenating means matrix > multiplication from the left. Perhaps, though the point below I suspect suggests a rename may be better. > Naming > There is \draw_transform_matrix_concat:nnnn and > \draw_transform_shift_concat:n. The rotate, scale, shift and slant > transforms are also concatenations but not so named (lack the _concat). > I wonder if a better naming scheme might be to drop the _concat from > \draw_transform_matrix_concat:nnnn and \draw_transform_shift_concat:n, > thus treating all the concatenating transforms similarly, and rename the > functions currently called \draw_transform_matrix:nnnn and > \draw_transform_shift:n to something else, perhaps > \draw_transform_matrix_set:nnnn and \draw_transform_shift_set:n? The basic idea here was to try to split up the relative and absolute transformation changes. As you say, shifts and the like are relative to the previous transformation. The "matrix_concat" one is the relative case, the "matrix" alone is a replacement of the entire matrix. So perhaps better is to drop "concat" and have something like \draw_transform_replace:nnnn \draw_transform_absolute_matrix:nnnn or as you say "set". The latter is a bit tricky: in general in expl3, "set" is used for variables where we can \_set:Nn... them. That's not 100% the case, but I've avoided "set" in other places in l3draw. (Still I think needs discussion for things like line width, etc.) > Comma lists? > Was consideration given to using a comma list instead of four separate > braced arguments for \draw_transform_matrix:nnnn? {a}{b}{c}{d} needs > four brace pairs, {a,b,c,d} needs only one. I have a standard US > keyboard (at least I think it is). The { and } characters require the > shift key and a (small) stretch of the little finger to type; commas on > the other hand are easy, no stretch, no shift key. Comma lists are > widely used elsewhere in l3draw for specifying coordinate pairs, e.g. > \draw_path_moveto:n { 1cm , 0cm }. Even {a,b}{c,d} would be better -- > and helpful in separating the rows of the matrix. As the docs say, the API I've gone for is the same as pgf's if possible: that's well-established and works for people. For co-ordinates, it's very common to write them as "(x,y)" with a comma: I did consider at the code level requiring two arguments! However, for matrices, it's more common to write them as space-separated lists if written linear, at least in my experience. Moreover, this is a pretty low-level operation. Joseph