diff options
Diffstat (limited to 'graphics')
197 files changed, 9759 insertions, 4072 deletions
diff --git a/graphics/asymptote/ChangeLog b/graphics/asymptote/ChangeLog index d328718705..895ee32655 100644 --- a/graphics/asymptote/ChangeLog +++ b/graphics/asymptote/ChangeLog @@ -1,3 +1,352 @@ +commit 344bbd8514fff4a25cede6be202cee6fdde35988 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Aug 14 22:43:21 2024 -0700 + + Fix warning messages in example. + +commit c4b0cfe1156e53d1d49b2d74a9e90729bf5d6fd7 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Aug 14 22:04:42 2024 -0700 + + Remove legacy defaultrender settings from examples. + +commit 15d31f395333b0bc6fe78b671843a936473a6b9f +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Aug 14 22:01:48 2024 -0700 + + Update to use magick convert and magick animate. + +commit a5f800a1f5e183cf36e398e5d934ec4ceb758edf +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Aug 14 21:58:18 2024 -0700 + + Update introductory talk. + +commit a058c4b32712c63169cabbe8ea4a9b2e4b887203 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Aug 13 00:45:39 2024 -0700 + + Improve camera centering when keepAspect=true. + +commit 46c6537c637a7fcde78d7fd4f5f0ad1f49012642 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 21:59:57 2024 -0700 + + Simplify projection centering code. + +commit af6bcf2dc75c11c90822de683e73821d458e6167 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 20:10:54 2024 -0700 + + Update camera specification in examples. + +commit 6dc3a2fff039c90742c5656d463fa3b1465e667b +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 17:37:55 2024 -0700 + + Update grid3 module. + +commit 54b06839c165a8cdbe5179008decf424a385f1ce +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 15:53:45 2024 -0700 + + Document render argument of surface drawing routines. + +commit 6a1c5d7c138f8908ef96d52c30f354132ddfa813 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 15:53:22 2024 -0700 + + Add missing projection. + +commit e572be209f94aaaf7ecba5d1e5128d89bf759080 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 14:59:16 2024 -0700 + + Use final projection. + +commit 6dd9e271c37e1dc0f5b2d941e0a3c5d556099e98 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 14:57:59 2024 -0700 + + Require explicit projection in internal routine autoscale3. + +commit 6cba1f1da5facb823b86724cb35e9e01314fdd54 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 14:28:24 2024 -0700 + + Only recenter camera on nontrivial scenes. + +commit b730244a19a1b686138491a0c3c4fd9ea3e7ce00 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 13:43:30 2024 -0700 + + Update URL. + +commit 0e5bd5ed9c35c6871b68a08b4909a5d66c1b40f1 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 09:42:40 2024 -0700 + + Use general projections in graph3.asy. + +commit 97af20d196b35e7627ae0e8b1f14462b551a7b61 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Aug 12 04:13:42 2024 -0700 + + Fix last revision. + +commit 560ffb6e408ad5301f26e318594274e7aa08ed3f +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Aug 11 23:34:20 2024 -0700 + + Make -debug report traceback only on error. + +commit 2307614f006498aeb73c2db22fbf3ecced03869f +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Aug 11 18:33:03 2024 -0700 + + Add srand example to documentation. + +commit a39b6e33590e8e0e8afa2192a905d0389d1ca1e6 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Aug 11 15:33:25 2024 -0700 + + Fix reported camera up vector. + +commit 4f02db56c1e6330db61345e6b12298e882b4e553 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Aug 11 14:31:56 2024 -0700 + + Automatically center camera and target within scene by default; + change default value of center for orthographics projections to true. + +commit 9b49913a7b294c322b57b453ad0e5753c18a1cb7 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Aug 9 12:28:26 2024 -0700 + + Add url option to figure function in slide.asy. + +commit 1a683cb01c6bec7948befe5bfc941a2b1d9de788 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Jul 31 04:59:54 2024 -0700 + + Improve camera autoadjust when keepAspect=false. + +commit e4ef069ed7e8586c3d6eedd4989eeb91b3ac44bd +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Jul 25 12:18:34 2024 -0700 + + Improve internal documentation links. + +commit a8b99a80e307976e30cdeb88543262f82b0559ed +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Jul 25 11:52:41 2024 -0700 + + Update module map and example to use templated imports (issue #470). + +commit e51f6aa11fb03151217790643048f3fb3012a6cb +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jul 23 23:24:30 2024 -0700 + + Compute normals for tessellated surfaces after transformation. + Don't tessellate when settings.render=0. + +commit abcc187e719a34a490fe67b5bb0391b577821479 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jul 23 23:23:22 2024 -0700 + + Fix settings.render=0. + +commit 853e24d9bc8e287c273f02438fe809bc2fdd09d0 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jul 22 13:45:42 2024 -0700 + + Enable GLSL error reporting again. + +commit 0a28468d010da5159b1d3cdb921e50b469f629e9 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jul 21 20:32:17 2024 -0700 + + Output triangle group for indexed surfaces given render option tessellate=true. + Fix triangle group normals. + +commit 1f8626d9996fa61ae3be3b1d9469bcb09d15b2f8 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jul 21 18:42:08 2024 -0700 + + Update comment. + +commit cefa9d615389e34183f0830527ede4318c1cb5d8 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jul 21 18:41:41 2024 -0700 + + Simplify code. + +commit a2206f5bab482a023144a6ce919096100b851026 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jul 19 09:46:24 2024 -0700 + + Use triangle group array assignments. + +commit 57c25038f9e1051d7f5c9ca51a59560aa67d317d +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jul 19 09:40:42 2024 -0700 + + Update asygl. + +commit 9399282cf9e1a24fd1ba3f00dcfdc6a790838722 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jul 19 09:31:26 2024 -0700 + + WebGL: Allow triangle data array assignments. + +commit f80311ae7f35f98ecbfcaa4763305fdd0d95a052 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jul 15 23:26:12 2024 -0700 + + WebGL: Condense triangle groups data. + +commit 9523b77d98921e13fb958f78b57d57721df30922 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jul 15 18:40:18 2024 -0700 + + Fix issue #467 (arising from backward incompatibility #450): Missing labels in flattened 3D scene (using settings.render=0) after update to version 2.90. + +commit a65d33455949562694765a5384918da1741f89b4 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jul 15 17:40:44 2024 -0700 + + Update asygl. + +commit 42b211180d7df8ca08a7d331373a650a74917f5d +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jul 15 17:37:18 2024 -0700 + + Fix color normalization. + +commit 7a9f9ad90a87a26d2814607e96a53ee5a23c13b2 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jul 15 17:34:09 2024 -0700 + + Revert "Fix offscreen triangle groups." + + This reverts commit 5841f00d6613e9a32aef986520172738e7bb25a8. + +commit 40f83910cdf2961adaace41a30450ea5b71c7ad9 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jul 14 10:50:38 2024 -0700 + + Update asygl. + +commit 9eb6b146226d1d3a3aee39918b528017acfb8793 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jul 14 10:49:28 2024 -0700 + + Fix flatness calculation. + +commit 5841f00d6613e9a32aef986520172738e7bb25a8 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jul 14 08:54:21 2024 -0700 + + Fix offscreen triangle groups. + +commit 472d8ceb641a7f6fd6e2246b064b81185485195c +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jul 6 22:05:06 2024 -0700 + + Fix triangle constructor. + +commit 9b25d1d94322fe382087823363dd7833cbdb40ce +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jul 2 10:46:36 2024 -0700 + + Fix teapot regularization. + +commit 2da7afc8b7a5b0406c3b6cd507ce7b21489509c8 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jul 1 21:41:32 2024 -0700 + + Make -d option output call traceback (issue #451). + +commit 5dc7992891de07af146317ad053ee56d9ffd938d +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 29 21:13:23 2024 -0700 + + Update asygl. + +commit 4d50ea9cf4c76e7489b5d6c49f84f0267aa28ecb +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 29 21:12:37 2024 -0700 + + AsyGL: Fix stack overflow. + +commit c7e3109ecc4f6f4b193dca1fb80f8cb3c006c9f6 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 29 20:58:00 2024 -0700 + + Revert "Update asygl." + + This reverts commit 8ef173f593d960e79ca79f916acea149e648c6ce. + +commit 8ef173f593d960e79ca79f916acea149e648c6ce +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 29 20:21:56 2024 -0700 + + Update asygl. + +commit 60d6605333f928420dccdac765925685d81bedab +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 29 20:19:54 2024 -0700 + + AsyGL: Travel home on initialization. + +commit da4cf28d54a98253de71615fc4f2dec07aaa8707 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 29 00:00:53 2024 -0700 + + Update asygl. + +commit fb9be22ade7e0ea59d9e4d6ef4485ece2777d95c +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jun 28 23:53:18 2024 -0700 + + AsyGL: Initialize all vertices in triangle arrays, even if they are offscreen. + +commit 9b3c6cafd09457e3e575b770df36003c3ccbbc60 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jun 28 22:52:00 2024 -0700 + + Fix typo. + +commit efc15f4d3cf0f2891ac944d9d0fa3f57a8966fdb +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Jun 26 14:58:12 2024 -0700 + + Fix slide margin and landscape mode. + +commit 7d206b8a70e8c985a67cfe5dddcc455163bde2b7 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 25 17:56:40 2024 -0700 + + XASY: Fix SyntaxWarning (issue #464). + +commit 6e02744a6b93d376e3abe41561d7b0039a8c8d80 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 25 17:50:36 2024 -0700 + + Replace each tab in error messages by 1 space (issue #444). + +commit b016b84079c777364eaa40c20ce5a3d80805980c +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 25 09:29:42 2024 -0700 + + Fix number of colors for prerendering bezier triangles. + +commit c1eb726af8eb4afc6c4872fedef0d05b0cd650bd +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jun 21 13:56:37 2024 -0700 + + Increment version to 2.91. + commit 58246991e2474ffbd1bfe012d5d0a11407da7795 Author: John Bowman <bowman@ualberta.ca> Date: Fri Jun 21 10:33:58 2024 -0700 diff --git a/graphics/asymptote/GUI/icons_rc.py b/graphics/asymptote/GUI/icons_rc.py index 8fca5b33ee..02c1c94daa 100644 --- a/graphics/asymptote/GUI/icons_rc.py +++ b/graphics/asymptote/GUI/icons_rc.py @@ -2797,93 +2797,93 @@ qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x2c\x00\x00\x00\x02\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x72\ \x00\x00\x00\x38\x00\x00\x00\x00\x00\x01\x00\x00\x07\x6f\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x0f\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6d\ +\x00\x00\x01\x91\x54\x90\x93\x6f\ \x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x85\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x12\xa4\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x00\xee\x00\x01\x00\x00\x00\x01\x00\x00\x16\x90\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb3\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xe1\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x72\ \x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xfc\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x24\xa3\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x29\x1a\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xba\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x7f\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x72\ \x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x35\x4d\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x0c\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xe9\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x72\ \x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x43\x00\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x46\x4c\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x48\xe8\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6d\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4c\x02\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x50\x04\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf8\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x72\ \x00\x00\x03\x90\x00\x00\x00\x00\x00\x01\x00\x00\x55\x93\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x00\x58\x03\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x59\xe4\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x25\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x04\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x60\x10\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6d\ +\x00\x00\x01\x91\x54\x90\x93\x6f\ \x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x62\x86\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x65\xe4\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x04\x72\x00\x00\x00\x00\x00\x01\x00\x00\x69\x47\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x04\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x4e\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x72\ \x00\x00\x04\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x94\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x04\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x73\x0f\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x77\x67\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x45\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x6b\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6d\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x05\x58\x00\x00\x00\x00\x00\x01\x00\x00\x82\x1a\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x72\ \x00\x00\x05\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x83\x3a\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x05\x82\x00\x00\x00\x00\x00\x01\x00\x00\x87\x1a\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ \x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x5d\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6d\ +\x00\x00\x01\x91\x54\x90\x93\x6f\ \x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xca\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x71\ \x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x85\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x72\ \x00\x00\x06\x36\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xf5\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6f\ +\x00\x00\x01\x91\x54\x90\x93\x72\ \x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x92\xe7\ -\x00\x00\x01\x90\x3b\xe6\x5e\x6e\ +\x00\x00\x01\x91\x54\x90\x93\x70\ " qt_version = [int(v) for v in QtCore.qVersion().split('.')] diff --git a/graphics/asymptote/GUI/xasy2asy.py b/graphics/asymptote/GUI/xasy2asy.py index 25c75b2ecf..cf1edb8af0 100644 --- a/graphics/asymptote/GUI/xasy2asy.py +++ b/graphics/asymptote/GUI/xasy2asy.py @@ -1536,8 +1536,8 @@ class xasyScript(xasyItem): def getObjectCode(self, asy2psmap=identity()): numeric=r'([-+]?(?:(?:\d*\.\d+)|(?:\d+\.?)))' - rSize=re.compile("size\(\("+numeric+","+numeric+","+numeric+"," - +numeric+","+numeric+","+numeric+"\)\); "+ + rSize=re.compile(r"size\(\("+numeric+","+numeric+","+numeric+"," + +numeric+","+numeric+","+numeric+r"\)\); "+ self.resizeComment) newScript = self.getReplacedKeysCode(self.findNonIdKeys()) diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake index 10947361b6..31617758a6 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake @@ -2,8 +2,8 @@ # Generated by "Unix Makefiles" Generator, CMake Version 3.28 # Relative path conversion top directories. -set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.90/LspCpp") -set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.90/LspCpp") +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.91/LspCpp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.91/LspCpp") # Force unix paths in dependencies. set(CMAKE_FORCE_UNIX_PATHS 1) diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make index cd14a44b53..e420dda128 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make +++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make @@ -56,10 +56,10 @@ RM = /usr/bin/cmake -E rm -f EQUALS = = # The top-level source directory on which CMake was run. -CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp +CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.91/LspCpp # The top-level build directory on which CMake was run. -CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp +CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.91/LspCpp # Utility rule file for doc. @@ -70,8 +70,8 @@ include third_party/uri/CMakeFiles/doc.dir/compiler_depend.make include third_party/uri/CMakeFiles/doc.dir/progress.make third_party/uri/CMakeFiles/doc: - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --blue --bold --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri && /bin/doxygen /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/Doxyfile + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --blue --bold --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri && /bin/doxygen /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/Doxyfile doc: third_party/uri/CMakeFiles/doc doc: third_party/uri/CMakeFiles/doc.dir/build.make @@ -82,10 +82,10 @@ third_party/uri/CMakeFiles/doc.dir/build: doc .PHONY : third_party/uri/CMakeFiles/doc.dir/build third_party/uri/CMakeFiles/doc.dir/clean: - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake .PHONY : third_party/uri/CMakeFiles/doc.dir/clean third_party/uri/CMakeFiles/doc.dir/depend: - cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake "--color=$(COLOR)" + cd /usr/local/src/asymptote-2.91/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.91/LspCpp /usr/local/src/asymptote-2.91/LspCpp/third_party/uri /usr/local/src/asymptote-2.91/LspCpp /usr/local/src/asymptote-2.91/LspCpp/third_party/uri /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake "--color=$(COLOR)" .PHONY : third_party/uri/CMakeFiles/doc.dir/depend diff --git a/graphics/asymptote/LspCpp/third_party/uri/Doxyfile b/graphics/asymptote/LspCpp/third_party/uri/Doxyfile index d5d97f4b56..2608cda2a4 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/Doxyfile +++ b/graphics/asymptote/LspCpp/third_party/uri/Doxyfile @@ -128,7 +128,7 @@ FULL_PATH_NAMES = YES # If left blank the directory from which doxygen is run is used as the # path to strip. -STRIP_FROM_PATH = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/ +STRIP_FROM_PATH = /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/ # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells @@ -626,7 +626,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include +INPUT = /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -658,7 +658,7 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail +EXCLUDE = /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded @@ -821,7 +821,7 @@ COLS_IN_ALPHA_INDEX = 5 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. -IGNORE_PREFIX = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/uri/src/ +IGNORE_PREFIX = /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/uri/src/ #--------------------------------------------------------------------------- # configuration options related to the HTML output diff --git a/graphics/asymptote/LspCpp/third_party/uri/Makefile b/graphics/asymptote/LspCpp/third_party/uri/Makefile index 508a0f8b29..f677d76ec2 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/Makefile +++ b/graphics/asymptote/LspCpp/third_party/uri/Makefile @@ -60,10 +60,10 @@ RM = /usr/bin/cmake -E rm -f EQUALS = = # The top-level source directory on which CMake was run. -CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp +CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.91/LspCpp # The top-level build directory on which CMake was run. -CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp +CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.91/LspCpp #============================================================================= # Targets provided globally by CMake. @@ -135,14 +135,14 @@ install/strip/fast: preinstall/fast # The main all target all: cmake_check_build_system - cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles /usr/local/src/asymptote-2.90/LspCpp/third_party/uri//CMakeFiles/progress.marks - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all - $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles 0 + cd /usr/local/src/asymptote-2.91/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.91/LspCpp/CMakeFiles /usr/local/src/asymptote-2.91/LspCpp/third_party/uri//CMakeFiles/progress.marks + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all + $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.91/LspCpp/CMakeFiles 0 .PHONY : all # The main clean target clean: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean .PHONY : clean # The main clean target @@ -151,22 +151,22 @@ clean/fast: clean # Prepare targets for installation. preinstall: all - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall .PHONY : preinstall # Prepare targets for installation. preinstall/fast: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall .PHONY : preinstall/fast # clear depends depend: - cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 + cd /usr/local/src/asymptote-2.91/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 .PHONY : depend # Convenience name for target. third_party/uri/CMakeFiles/doc.dir/rule: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule .PHONY : third_party/uri/CMakeFiles/doc.dir/rule # Convenience name for target. @@ -175,7 +175,7 @@ doc: third_party/uri/CMakeFiles/doc.dir/rule # fast build rule for target. doc/fast: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build .PHONY : doc/fast # Help Target @@ -202,6 +202,6 @@ help: # No rule that depends on this can have commands that come from listfiles # because they might be regenerated. cmake_check_build_system: - cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 + cd /usr/local/src/asymptote-2.91/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 .PHONY : cmake_check_build_system diff --git a/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake b/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake index b0d4be5b79..654cd14710 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake @@ -1,4 +1,4 @@ -# Install script for directory: /usr/local/src/asymptote-2.90/LspCpp/third_party/uri +# Install script for directory: /usr/local/src/asymptote-2.91/LspCpp/third_party/uri # Set the install prefix if(NOT DEFINED CMAKE_INSTALL_PREFIX) @@ -43,12 +43,12 @@ if(NOT DEFINED CMAKE_OBJDUMP) endif() if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include") + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include") endif() if(NOT CMAKE_INSTALL_LOCAL_ONLY) # Include the install script for each subdirectory. - include("/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/cmake_install.cmake") + include("/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/cmake_install.cmake") endif() diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake index 10947361b6..31617758a6 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake @@ -2,8 +2,8 @@ # Generated by "Unix Makefiles" Generator, CMake Version 3.28 # Relative path conversion top directories. -set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.90/LspCpp") -set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.90/LspCpp") +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.91/LspCpp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.91/LspCpp") # Force unix paths in dependencies. set(CMAKE_FORCE_UNIX_PATHS 1) diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake index 594e10e458..2866cce2ca 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake @@ -8,14 +8,14 @@ set(CMAKE_DEPENDS_LANGUAGES # The set of dependency files which are needed: set(CMAKE_DEPENDS_DEPENDENCY_FILES - "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d" - "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d" - "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d" - "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d" - "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d" - "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d" - "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d" - "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d" + "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d" + "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d" + "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d" + "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d" + "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d" + "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d" + "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d" + "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d" ) # Targets to which this target links which contain Fortran sources. diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make index feab93c641..1cee06521e 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make @@ -56,10 +56,10 @@ RM = /usr/bin/cmake -E rm -f EQUALS = = # The top-level source directory on which CMake was run. -CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp +CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.91/LspCpp # The top-level build directory on which CMake was run. -CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp +CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.91/LspCpp # Include any dependencies generated for this target. include third_party/uri/src/CMakeFiles/network-uri.dir/depend.make @@ -75,114 +75,114 @@ include third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/uri.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o -MF CMakeFiles/network-uri.dir/uri.cpp.o.d -o CMakeFiles/network-uri.dir/uri.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o -MF CMakeFiles/network-uri.dir/uri.cpp.o.d -o CMakeFiles/network-uri.dir/uri.cpp.o -c /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri.cpp.i" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp > CMakeFiles/network-uri.dir/uri.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri.cpp > CMakeFiles/network-uri.dir/uri.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri.cpp.s" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp -o CMakeFiles/network-uri.dir/uri.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri.cpp -o CMakeFiles/network-uri.dir/uri.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/uri_builder.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o -MF CMakeFiles/network-uri.dir/uri_builder.cpp.o.d -o CMakeFiles/network-uri.dir/uri_builder.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o -MF CMakeFiles/network-uri.dir/uri_builder.cpp.o.d -o CMakeFiles/network-uri.dir/uri_builder.cpp.o -c /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_builder.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri_builder.cpp.i" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp > CMakeFiles/network-uri.dir/uri_builder.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_builder.cpp > CMakeFiles/network-uri.dir/uri_builder.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri_builder.cpp.s" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp -o CMakeFiles/network-uri.dir/uri_builder.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_builder.cpp -o CMakeFiles/network-uri.dir/uri_builder.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/uri_errors.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o -MF CMakeFiles/network-uri.dir/uri_errors.cpp.o.d -o CMakeFiles/network-uri.dir/uri_errors.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o -MF CMakeFiles/network-uri.dir/uri_errors.cpp.o.d -o CMakeFiles/network-uri.dir/uri_errors.cpp.o -c /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_errors.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri_errors.cpp.i" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp > CMakeFiles/network-uri.dir/uri_errors.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_errors.cpp > CMakeFiles/network-uri.dir/uri_errors.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri_errors.cpp.s" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp -o CMakeFiles/network-uri.dir/uri_errors.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_errors.cpp -o CMakeFiles/network-uri.dir/uri_errors.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/detail/uri_parse.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -c /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp > CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse.cpp > CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/detail/uri_parse_authority.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -c /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp > CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp > CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/detail/uri_advance_parts.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -c /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp > CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp > CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/detail/uri_normalize.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -c /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_normalize.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp > CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_normalize.cpp > CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_normalize.cpp -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/detail/uri_resolve.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -c /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_resolve.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp > CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_resolve.cpp > CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_resolve.cpp -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s # Object files for target network-uri network__uri_OBJECTS = \ @@ -208,19 +208,19 @@ third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/link.txt - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX static library libnetwork-uri.a" - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean_target.cmake - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/network-uri.dir/link.txt --verbose=$(VERBOSE) + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/usr/local/src/asymptote-2.91/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX static library libnetwork-uri.a" + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean_target.cmake + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/network-uri.dir/link.txt --verbose=$(VERBOSE) # Rule to build all files generated by this target. third_party/uri/src/CMakeFiles/network-uri.dir/build: third_party/uri/src/libnetwork-uri.a .PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/build third_party/uri/src/CMakeFiles/network-uri.dir/clean: - cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean.cmake + cd /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean.cmake .PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/clean third_party/uri/src/CMakeFiles/network-uri.dir/depend: - cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake "--color=$(COLOR)" + cd /usr/local/src/asymptote-2.91/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.91/LspCpp /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.91/LspCpp /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake "--color=$(COLOR)" .PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/depend diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal index 3100d7c219..9a2be24587 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal @@ -2,7 +2,7 @@ # Generated by "Unix Makefiles" Generator, CMake Version 3.28 third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp /usr/include/alloca.h /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h @@ -201,13 +201,13 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_normalize.cpp /usr/include/alloca.h /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h @@ -431,23 +431,23 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm_split.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/algorithm.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/algorithm_split.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_normalize.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse.cpp /usr/include/alloca.h /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h @@ -665,14 +665,14 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/grammar.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/grammar.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse.hpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp /usr/include/alloca.h /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h @@ -890,14 +890,14 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/grammar.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/grammar.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_resolve.cpp /usr/include/alloca.h /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h @@ -1102,21 +1102,21 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm_find.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/algorithm_find.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_resolve.hpp third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri.cpp /usr/include/alloca.h /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h @@ -1340,25 +1340,25 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/algorithm.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_normalize.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_resolve.hpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_builder.cpp /usr/include/alloca.h /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h @@ -1578,22 +1578,22 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/algorithm.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_normalize.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/uri_errors.cpp /usr/include/alloca.h /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h @@ -1734,6 +1734,6 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o /usr/include/wchar.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp - /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make index abe8aebb87..ab5f0b23d4 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make @@ -4,7 +4,7 @@ # compile CXX with /bin/c++ CXX_DEFINES = -CXX_INCLUDES = -I/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src -I/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include +CXX_INCLUDES = -I/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src -I/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/include CXX_FLAGS = -fPIE -D_FILE_OFFSET_BIS=64 -DUSEGC -DLSPCPP_USEGC -I../gc-8.2.4/include -std=c++11 -Wall -Werror -Wno-parentheses -O2 -g -DNDEBUG diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/Makefile b/graphics/asymptote/LspCpp/third_party/uri/src/Makefile index 7948b3894d..80d2789f63 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/Makefile +++ b/graphics/asymptote/LspCpp/third_party/uri/src/Makefile @@ -60,10 +60,10 @@ RM = /usr/bin/cmake -E rm -f EQUALS = = # The top-level source directory on which CMake was run. -CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp +CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.91/LspCpp # The top-level build directory on which CMake was run. -CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp +CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.91/LspCpp #============================================================================= # Targets provided globally by CMake. @@ -135,14 +135,14 @@ install/strip/fast: preinstall/fast # The main all target all: cmake_check_build_system - cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src//CMakeFiles/progress.marks - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/all - $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles 0 + cd /usr/local/src/asymptote-2.91/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.91/LspCpp/CMakeFiles /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src//CMakeFiles/progress.marks + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/all + $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.91/LspCpp/CMakeFiles 0 .PHONY : all # The main clean target clean: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/clean + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/clean .PHONY : clean # The main clean target @@ -151,22 +151,22 @@ clean/fast: clean # Prepare targets for installation. preinstall: all - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall .PHONY : preinstall # Prepare targets for installation. preinstall/fast: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall .PHONY : preinstall/fast # clear depends depend: - cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 + cd /usr/local/src/asymptote-2.91/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 .PHONY : depend # Convenience name for target. third_party/uri/src/CMakeFiles/network-uri.dir/rule: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/CMakeFiles/network-uri.dir/rule + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/CMakeFiles/network-uri.dir/rule .PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/rule # Convenience name for target. @@ -175,7 +175,7 @@ network-uri: third_party/uri/src/CMakeFiles/network-uri.dir/rule # fast build rule for target. network-uri/fast: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/build + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/build .PHONY : network-uri/fast detail/uri_advance_parts.o: detail/uri_advance_parts.cpp.o @@ -183,7 +183,7 @@ detail/uri_advance_parts.o: detail/uri_advance_parts.cpp.o # target to build an object file detail/uri_advance_parts.cpp.o: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o .PHONY : detail/uri_advance_parts.cpp.o detail/uri_advance_parts.i: detail/uri_advance_parts.cpp.i @@ -191,7 +191,7 @@ detail/uri_advance_parts.i: detail/uri_advance_parts.cpp.i # target to preprocess a source file detail/uri_advance_parts.cpp.i: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i .PHONY : detail/uri_advance_parts.cpp.i detail/uri_advance_parts.s: detail/uri_advance_parts.cpp.s @@ -199,7 +199,7 @@ detail/uri_advance_parts.s: detail/uri_advance_parts.cpp.s # target to generate assembly for a file detail/uri_advance_parts.cpp.s: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s .PHONY : detail/uri_advance_parts.cpp.s detail/uri_normalize.o: detail/uri_normalize.cpp.o @@ -207,7 +207,7 @@ detail/uri_normalize.o: detail/uri_normalize.cpp.o # target to build an object file detail/uri_normalize.cpp.o: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o .PHONY : detail/uri_normalize.cpp.o detail/uri_normalize.i: detail/uri_normalize.cpp.i @@ -215,7 +215,7 @@ detail/uri_normalize.i: detail/uri_normalize.cpp.i # target to preprocess a source file detail/uri_normalize.cpp.i: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i .PHONY : detail/uri_normalize.cpp.i detail/uri_normalize.s: detail/uri_normalize.cpp.s @@ -223,7 +223,7 @@ detail/uri_normalize.s: detail/uri_normalize.cpp.s # target to generate assembly for a file detail/uri_normalize.cpp.s: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s .PHONY : detail/uri_normalize.cpp.s detail/uri_parse.o: detail/uri_parse.cpp.o @@ -231,7 +231,7 @@ detail/uri_parse.o: detail/uri_parse.cpp.o # target to build an object file detail/uri_parse.cpp.o: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o .PHONY : detail/uri_parse.cpp.o detail/uri_parse.i: detail/uri_parse.cpp.i @@ -239,7 +239,7 @@ detail/uri_parse.i: detail/uri_parse.cpp.i # target to preprocess a source file detail/uri_parse.cpp.i: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i .PHONY : detail/uri_parse.cpp.i detail/uri_parse.s: detail/uri_parse.cpp.s @@ -247,7 +247,7 @@ detail/uri_parse.s: detail/uri_parse.cpp.s # target to generate assembly for a file detail/uri_parse.cpp.s: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s .PHONY : detail/uri_parse.cpp.s detail/uri_parse_authority.o: detail/uri_parse_authority.cpp.o @@ -255,7 +255,7 @@ detail/uri_parse_authority.o: detail/uri_parse_authority.cpp.o # target to build an object file detail/uri_parse_authority.cpp.o: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o .PHONY : detail/uri_parse_authority.cpp.o detail/uri_parse_authority.i: detail/uri_parse_authority.cpp.i @@ -263,7 +263,7 @@ detail/uri_parse_authority.i: detail/uri_parse_authority.cpp.i # target to preprocess a source file detail/uri_parse_authority.cpp.i: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i .PHONY : detail/uri_parse_authority.cpp.i detail/uri_parse_authority.s: detail/uri_parse_authority.cpp.s @@ -271,7 +271,7 @@ detail/uri_parse_authority.s: detail/uri_parse_authority.cpp.s # target to generate assembly for a file detail/uri_parse_authority.cpp.s: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s .PHONY : detail/uri_parse_authority.cpp.s detail/uri_resolve.o: detail/uri_resolve.cpp.o @@ -279,7 +279,7 @@ detail/uri_resolve.o: detail/uri_resolve.cpp.o # target to build an object file detail/uri_resolve.cpp.o: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o .PHONY : detail/uri_resolve.cpp.o detail/uri_resolve.i: detail/uri_resolve.cpp.i @@ -287,7 +287,7 @@ detail/uri_resolve.i: detail/uri_resolve.cpp.i # target to preprocess a source file detail/uri_resolve.cpp.i: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i .PHONY : detail/uri_resolve.cpp.i detail/uri_resolve.s: detail/uri_resolve.cpp.s @@ -295,7 +295,7 @@ detail/uri_resolve.s: detail/uri_resolve.cpp.s # target to generate assembly for a file detail/uri_resolve.cpp.s: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s .PHONY : detail/uri_resolve.cpp.s uri.o: uri.cpp.o @@ -303,7 +303,7 @@ uri.o: uri.cpp.o # target to build an object file uri.cpp.o: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o .PHONY : uri.cpp.o uri.i: uri.cpp.i @@ -311,7 +311,7 @@ uri.i: uri.cpp.i # target to preprocess a source file uri.cpp.i: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i .PHONY : uri.cpp.i uri.s: uri.cpp.s @@ -319,7 +319,7 @@ uri.s: uri.cpp.s # target to generate assembly for a file uri.cpp.s: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s .PHONY : uri.cpp.s uri_builder.o: uri_builder.cpp.o @@ -327,7 +327,7 @@ uri_builder.o: uri_builder.cpp.o # target to build an object file uri_builder.cpp.o: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o .PHONY : uri_builder.cpp.o uri_builder.i: uri_builder.cpp.i @@ -335,7 +335,7 @@ uri_builder.i: uri_builder.cpp.i # target to preprocess a source file uri_builder.cpp.i: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i .PHONY : uri_builder.cpp.i uri_builder.s: uri_builder.cpp.s @@ -343,7 +343,7 @@ uri_builder.s: uri_builder.cpp.s # target to generate assembly for a file uri_builder.cpp.s: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s .PHONY : uri_builder.cpp.s uri_errors.o: uri_errors.cpp.o @@ -351,7 +351,7 @@ uri_errors.o: uri_errors.cpp.o # target to build an object file uri_errors.cpp.o: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o .PHONY : uri_errors.cpp.o uri_errors.i: uri_errors.cpp.i @@ -359,7 +359,7 @@ uri_errors.i: uri_errors.cpp.i # target to preprocess a source file uri_errors.cpp.i: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i .PHONY : uri_errors.cpp.i uri_errors.s: uri_errors.cpp.s @@ -367,7 +367,7 @@ uri_errors.s: uri_errors.cpp.s # target to generate assembly for a file uri_errors.cpp.s: - cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s + cd /usr/local/src/asymptote-2.91/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s .PHONY : uri_errors.cpp.s # Help Target @@ -418,6 +418,6 @@ help: # No rule that depends on this can have commands that come from listfiles # because they might be regenerated. cmake_check_build_system: - cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 + cd /usr/local/src/asymptote-2.91/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 .PHONY : cmake_check_build_system diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake index fbf9b52637..79a8f6cd03 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake @@ -1,4 +1,4 @@ -# Install script for directory: /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src +# Install script for directory: /usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src # Set the install prefix if(NOT DEFINED CMAKE_INSTALL_PREFIX) @@ -43,6 +43,6 @@ if(NOT DEFINED CMAKE_OBJDUMP) endif() if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/libnetwork-uri.a") + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/usr/local/src/asymptote-2.91/LspCpp/third_party/uri/src/libnetwork-uri.a") endif() diff --git a/graphics/asymptote/ReleaseNotes b/graphics/asymptote/ReleaseNotes index 3afa9be03a..c4e536bd78 100644 --- a/graphics/asymptote/ReleaseNotes +++ b/graphics/asymptote/ReleaseNotes @@ -1,4 +1,22 @@ +Release Notes for Version 2.91 + +By default, orthographic projections now use center=true; +the camera and target are automatically centered within the scene. +The surface constructor for triangles was fixed. +A bug in the WebGL flatness test was fixed. +Triangle group bugs were fixed and now produce compact HTML output. +Triangle groups are used for indexed surfaces drawn with the render option +tessellate=true. +GLSL error reporting was restored. +The reported camera up vector was fixed. +The map module was fixed. +A syntax warning in Xasy was fixed. +Improvements were made to the slide module. +A bug was fixed in the experimental settings.render=0 mode. +The debug option now outputs a traceback. + Release Notes for Version 2.90 + A bug in the approximate transparency rendering code for GPUs without SSBO support was fixed. Support was added for templated accesses involving imported types, @@ -6,7 +24,7 @@ top-level structure types, and static fields. ImageMagick magick convert is now used instead of convert. The add(picture dest, picture src, pair position) function now respects size specifications (backwards incompatible; the previous behaviour can -be obtained with add(dest,src.fit(identity()),position). +be obtained with add(dest,src.fit(identity),position). The terminal is now reset upon exit. The erase command was fixed. Picture scalings in different dimensions are decoupled again. Flycheck syntax checking support for Emacs was added. diff --git a/graphics/asymptote/asy-keywords.el b/graphics/asymptote/asy-keywords.el index 071b63017f..27ff1a41dc 100644 --- a/graphics/asymptote/asy-keywords.el +++ b/graphics/asymptote/asy-keywords.el @@ -2,7 +2,7 @@ ;; This file is automatically generated by asy-list.pl. ;; Changes will be overwritten. ;; -(defvar asy-keywords-version "2.90") +(defvar asy-keywords-version "2.91") (defvar asy-keyword-name '( and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator )) @@ -11,7 +11,7 @@ and controls tension atleast curl if else while for do return break continue str Braid FitResult Label Legend Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse evaluatedpoint file filltype frame grid3 guide horner hsv hyperbola int inversion key light line linefit marginT marker mass node object pair parabola patch path path3 pen picture point position positionedvector projection rational real realschur revolution scaleT schur scientific segment side slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void )) (defvar asy-function-name '( -AND Align Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _schur _shipout _strokepath _texpath aCos aSin aTan abort abs abs2 accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte byteinv calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill fillbox filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale graphwithderiv gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface importv3d incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isometry isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup make3dgrid makeNode makecircle makedraw makepen maketriangle map mapArray mapArrayString margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocenter orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 phi4 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend primitive printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless schur scientific search searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplexInit simplexPhase1 simplexPhase2 simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans )) +AND Align Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _schur _shipout _strokepath _texpath aCos aSin aTan abort abs abs2 accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte byteinv calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centered centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill fillbox filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale graphwithderiv gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface importv3d incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isometry isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup make3dgrid makeNode makecircle makedraw makepen maketriangle map mapArray mapArrayString margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocenter orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 phi4 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend primitive printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless schur scientific search searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplexInit simplexPhase1 simplexPhase2 simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans )) (defvar asy-variable-name '( AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Both Break BrickRed Brown BurlyWood BurntOrange CCW CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold Goldenrod Gray Green GreenYellow Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Infinity Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkFillable MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen Orange OrangeRed Orchid Ox Oy PC PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Peach PeachPuff Periwinkle Peru PineGreen Pink Plum PowderBlue ProcessBlue Purple RELEASE RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna Red RedOrange RedViolet Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor artificialColumn authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize black blue bm bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brown bullet byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator diamond differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxDenominator maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive optimizeTableau orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen sequencereal settings signedtrailingzero solid spinner springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor swap textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity undefined unitcircle unitsquare up urlpen urlskip v3dheadertypes v3dtypes version vertexpen vertexsize viewportmargin viewportsize vline white wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding )) diff --git a/graphics/asymptote/asy.list b/graphics/asymptote/asy.list index 096577c741..a94d20536a 100644 --- a/graphics/asymptote/asy.list +++ b/graphics/asymptote/asy.list @@ -201,6 +201,7 @@ void assert(bool b, string s=<default>); pen Palatino(string series=<default>, string shape=<default>); real incircle(pair a, pair b, pair c, pair d); frame Landscape(frame f); +projection centered(projection P, picture pic=<default>); pen purple; string italic(string s); real atan(real x); @@ -294,7 +295,7 @@ string getc(file f); bool debugging; void shipout(string prefix=<default>, picture pic=<default>, frame orientation(frame)=<default>, string format=<default>, bool wait=<default>, bool view=<default>, string options=<default>, string script=<default>, light light=<default>, projection P=<default>); void shipout(string prefix=<default>, frame f, string format=<default>, bool wait=<default>, bool view=<default>, string options=<default>, string script=<default>, light light=<default>, projection P=<default>, transform t=<default>); -void shipout3(string prefix, frame f, string format=<default>, real width, real height, real angle, real zoom, triple m, triple m, pair shift, pair margin, real[][] t, real[] background, triple[] lights, real[][] diffuse, real[][] specular, bool view=<default>); +void shipout3(string prefix, frame f, string format=<default>, real width, real height, real angle, real zoom, triple m, triple m, pair shift, pair margin, real[][] t, real[][] tup, real[] background, triple[] lights, real[][] diffuse, real[][] specular, bool view=<default>); void shipout3(string prefix, frame f, string format=<default>); string getstring(string name=<default>, string default=<default>, string prompt=<default>, bool store=<default>); int debuggerlines; @@ -2274,8 +2275,8 @@ circle excircle(side side); point orthocenter(point A, point B, point C); point orthocenter(triangle t); line extend(line l); -point intersectionpoint(line l1, line l2); point[] standardizecoordsys(coordsys R=<default>, bool warn=<default> ... point[] M); +point intersectionpoint(line l1, line l2); pair[] intersectionpoints(pair A, pair B, real a, real b, real c, real d, real f, real g); pair[] intersectionpoints(pair A, pair B, real[] equation); point[] intersectionpoints(line l, path g); @@ -2851,20 +2852,20 @@ void(flatguide3)[][] lift(real f(real x, real y), guide[][] g, void join(flatgui void(flatguide3)[][] lift(real f(pair z), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>); triple polar(real r, real theta, real phi); void polargraph(flatguide3)(real r(real, real), real theta(real), real phi(real), int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>); -void xaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>); -void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>); -void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>); -void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>); -void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>); -void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>); +void xaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>, projection P=<default>); +void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>, projection P=<default>); +void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>, projection P=<default>); +void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, projection P=<default>); +void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, projection P=<default>); +void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, projection P=<default>); bool uperiodic(real[][] a); bool uperiodic(triple[][] a); bool vperiodic(real[][] a); bool vperiodic(triple[][] a); -void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); -void axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>); +void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P); +void axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>); void Bounds(picture, axisT)(int type=<default>, int type2=<default>, triple align=<default>, bool extend=<default>); void Bounds(picture, axisT); void XZZero(picture, axisT)(triple align=<default>, bool extend=<default>); @@ -2884,8 +2885,8 @@ void XYEquals(picture, axisT)(real x, real y, triple align=<default>, bool exten triple Dir(real)(triple dir); void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen[] p, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>); void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen p=<default>, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>); -void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); real maxlength(triple f(pair z), pair a, pair b, int nu, int nv); void drawtick(picture pic, real[][] T, path3 g, path3 g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend); triple tickMin3(picture pic); @@ -2898,14 +2899,14 @@ real ScaleZ(picture pic=<default>, real z); real[][] ScaleZ(picture pic=<default>, real[][] P); picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, string name=<default>, render render=<default>); path3 Circle(triple c, real r, triple normal=<default>, int n=<default>); -void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); +void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P); void Spline(flatguide3)(... void(flatguide3)[]); -void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); -void axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>); +void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P); +void axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, projection P=<default>); void label(picture pic, Label L, triple v, real x, align align, string format, pen p); void labelx(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>); void labelx3(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>); @@ -2950,8 +2951,8 @@ real[][][] bispline(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], r real[][][] bispline0(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>); path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>); real[] uniform(real T(real x), real Tinv(real x), real a, real b, int n); -void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(); -void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); +void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P)(); +void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>, projection P); string DefaultFormat(real); string DefaultLogFormat(real)(int base); string DefaultLogFormat(real); @@ -3040,9 +3041,9 @@ tickvalues NoZero(tickvalues); string NoZeroFormat(real); guide Hermite(... guide[])(real[] splinetype(real[], real[])); guide Hermite(... guide[]); -path Circle(pair c, real r, int n=<default>); void xaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>); void yaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>); +path Circle(pair c, real r, int n=<default>); void xaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>); void yaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool autorotate=<default>); bool axiscoverage(int N, transform T, path g, ticklocate locate, real Step, pair side, int sign, real Size, Label F, string ticklabel(real), real norm, real limit); @@ -3447,12 +3448,11 @@ void simplexWrite(rational[][] E, int[] Bindices, int, int); path roundedpath(path A, real R, real S=<default>); problem operator init(); simplex operator init(); -void nextpage(pen p=<default>); +void filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>); void display(frame[] f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); void display(frame f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); void display(string[] s, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); void display(string s, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); -void filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>); void multifigure(string[] slist, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool step=<default>); void subitem(string s, pen p=<default>); pen pagenumberpen; @@ -3471,12 +3471,12 @@ void asyfilecode(bool center=<default>, string s, string options=<default>, stri bool itemstep; real itemskip; void remark(bool center=<default>, string s, pair align=<default>, pen p=<default>, real indent=<default>, bool minipage=<default>, real skip=<default>, filltype filltype=<default>, bool step=<default>); -void usersetting(); void item(string s, pen p=<default>, bool step=<default>); +void usersetting(); bool landscape; pen authorpen; -real codeskip; string cropcode(string s); +real codeskip; void newslide(bool stepping=<default>); bool allowstepping; pair currentposition; @@ -3521,9 +3521,9 @@ void incrementposition(pair z); pen institutionpen; void skip(real n=<default>); bool stepping; +int page; real pagemargin; pen steppagenumberpen; -int page; bool empty(); void currentexitfunction(); void step(); @@ -3533,9 +3533,10 @@ void center(string s, pen p=<default>); void equation(string s, pen p=<default>); void equations(string s, pen p=<default>); void asyinclude(string s, real xsize=<default>, real ysize=<default>); -void figure(string[] s, string options=<default>, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); -void figure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); +void figure(string[] s, string options=<default>, real margin=<default>, string[] captions=<default>, string caption=<default>, string[] url=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); +void figure(string s, string options=<default>, string caption=<default>, string url=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); real figureborder; +void nextpage(pen p=<default>); pen figuremattpen; string bullet; int preamblenodes; @@ -3591,8 +3592,8 @@ patch[] triangletoquads(path3 external, real f(triple), triple grad(triple), tri patch trianglewithnormals(path3 external, triple n1, triple n2, triple n3); int NULL_VERTEX; evaluatedpoint[][][] make3dgrid(triple a, triple b, int nx, int ny, int nz, real f(triple), bool allowzero=<default>); -real B33(real t); real B03(real t); +real B33(real t); evaluatedpoint[][] slice(evaluatedpoint[][] a, int start1, int end1, int start2, int end2); evaluatedpoint[][][] slice(evaluatedpoint[][][] a, int start1, int end1, int start2, int end2, int start3, int end3); positionedvector[][] slice(positionedvector[][] a, int start1, int end1, int start2, int end2); @@ -3615,8 +3616,8 @@ int[] frequency(real[] data, real a, real b, int n); int[][] frequency(real[] x, real[] y, real[] xbins, real[] ybins); int[][] frequency(real[] x, real[] y, pair a, pair b, int nx, int ny=<default>); int[][] frequency(pair[] z, pair a, pair b, int nx, int ny=<default>); -real mean(real[] A); real stdev(real[] A); +real mean(real[] A); int bins(real[] data, int max=<default>); path topbox(pair a, pair b); path halfbox(pair a, pair b); @@ -3639,8 +3640,8 @@ pair[] endpoints(guide[] a); Relation r3; picture tableau(frame[] cards, bool number=<default>); pair min(pair[] z); -Component bp; Braid apply(Relation r, Braid b, int step, int place); +Component bp; Component phi; real gapfactor; Component bm; @@ -3651,8 +3652,8 @@ Braid operator init(); Relation operator init(); Syzygy operator init(); real hwratio; -Relation r4b; Relation r4a; +Relation r4b; pair max(pair[] z); pen Orchid; pen Magenta; @@ -3662,8 +3663,8 @@ pen CarnationPink; pen SpringGreen; pen MidnightBlue; pen OliveGreen; -pen Apricot; pen Aquamarine; +pen Apricot; pen Lavender; pen Cyan; pen Red; @@ -3678,18 +3679,18 @@ pen BlueViolet; pen RedOrange; pen Goldenrod; pen ForestGreen; -pen BurntOrange; pen YellowOrange; pen Maroon; -pen Tan; +pen BurntOrange; pen YellowGreen; +pen Tan; pen Brown; pen RubineRed; pen TealBlue; pen White; pen Purple; -pen Bittersweet; pen Sepia; +pen Bittersweet; pen Orange; pen OrangeRed; pen Fuchsia; @@ -3697,25 +3698,25 @@ pen Peach; pen PineGreen; pen Dandelion; pen VioletRed; -pen Black; pen Violet; +pen Black; pen NavyBlue; pen Rhodamine; -pen ProcessBlue; pen Thistle; +pen ProcessBlue; pen LimeGreen; +pen DarkOrchid; pen Green; pen GreenYellow; -pen DarkOrchid; pen Emerald; -pen Mulberry; pen WildStrawberry; +pen Mulberry; pen RedViolet; pen SkyBlue; pen SeaGreen; pen Periwinkle; -pen Yellow; pen Salmon; +pen Yellow; pen JungleGreen; pen CornflowerBlue; pen RoyalBlue; @@ -3759,18 +3760,18 @@ v3dtypes operator init(); string VERSION; pen Orchid; pen Indigo; +pen Cornsilk; pen Beige; pen SlateBlue; pen SlateGray; -pen Cornsilk; pen Magenta; pen CadetBlue; pen DeepPink; +pen Seashell; pen SpringGreen; pen MidnightBlue; pen Olive; pen OliveDrab; -pen Seashell; pen Aquamarine; pen GhostWhite; pen Lavender; @@ -3782,32 +3783,32 @@ pen PapayaWhip; pen Red; pen Pink; pen MintCream; +pen LavenderBlush; pen DarkTurquoise; +pen Wheat; pen Gray; -pen LavenderBlush; pen MediumBlue; pen MediumOrchid; pen MediumPurple; pen MediumSeaGreen; pen MediumSlateBlue; +pen PeachPuff; pen MediumAquamarine; pen MediumSpringGreen; pen MediumTurquoise; -pen Wheat; pen MediumVioletRed; pen Plum; -pen PeachPuff; pen Blue; pen Gold; pen BlueViolet; pen Goldenrod; pen ForestGreen; -pen Chartreuse; -pen NavajoWhite; -pen Maroon; pen Lime; +pen Maroon; pen SteelBlue; +pen Chartreuse; pen YellowGreen; +pen NavajoWhite; pen Tan; pen DarkMagenta; pen AntiqueWhite; @@ -3820,59 +3821,59 @@ pen Brown; pen BurlyWood; pen Moccasin; pen DarkBlue; +pen LemonChiffon; pen Peru; pen White; pen Purple; pen WhiteSmoke; -pen LemonChiffon; +pen Aqua; pen DimGray; pen Orange; pen OrangeRed; pen Fuchsia; -pen Aqua; pen Bisque; pen Honeydew; +pen Violet; pen RosyBrown; pen Black; -pen Violet; pen Khaki; pen FireBrick; pen Snow; pen Thistle; -pen LimeGreen; pen Sienna; +pen LimeGreen; pen OldLace; +pen DarkOrchid; pen Green; pen GreenYellow; -pen DarkOrchid; pen DarkCyan; pen FloralWhite; pen DarkRed; +pen DarkOliveGreen; +pen DarkOrange; pen BlanchedAlmond; pen PowderBlue; pen DarkGray; pen DarkGreen; pen DarkGoldenrod; -pen DarkOliveGreen; pen SkyBlue; -pen DarkOrange; pen SeaGreen; pen DarkViolet; pen Teal; pen AliceBlue; +pen Silver; pen HotPink; pen DodgerBlue; -pen Silver; pen SaddleBrown; pen Tomato; pen DarkKhaki; +pen SandyBrown; pen LightBlue; +pen Salmon; pen LightCoral; pen LightCyan; pen Yellow; pen LightGreen; -pen SandyBrown; -pen Salmon; pen PaleGreen; pen Linen; pen LightGoldenrodYellow; @@ -3885,12 +3886,12 @@ pen LightSkyBlue; pen LightSlateGray; pen Navy; pen PaleVioletRed; +pen DeepSkyBlue; pen CornflowerBlue; pen LightSteelBlue; pen LightYellow; pen rgbint(int r, int g, int b); pen Coral; -pen DeepSkyBlue; pen MistyRose; pen DarkSalmon; pen DarkSeaGreen; diff --git a/graphics/asymptote/asymptote.spec b/graphics/asymptote/asymptote.spec index c1bf0606aa..c6312accfa 100644 --- a/graphics/asymptote/asymptote.spec +++ b/graphics/asymptote/asymptote.spec @@ -3,7 +3,7 @@ %global __python %{__python3} Name: asymptote -Version: 2.90 +Version: 2.91 Release: 1%{?dist} Summary: Descriptive vector graphics language diff --git a/graphics/asymptote/base/graph3.asy b/graphics/asymptote/base/graph3.asy index b9b872f451..7a55ef863d 100644 --- a/graphics/asymptote/base/graph3.asy +++ b/graphics/asymptote/base/graph3.asy @@ -68,7 +68,7 @@ triple ticklabelshift(triple align, pen p=currentpen) // Signature of routines that draw labelled paths with ticks and tick labels. typedef void ticks3(picture, transform3, Label, path3, path3, pen, arrowbar3, margin3, ticklocate, int[], bool opposite=false, - bool primary=true); + bool primary=true, projection P); // Label a tick on a frame. void labeltick(picture pic, transform3 T, path3 g, @@ -164,7 +164,8 @@ ticks3 Ticks3(int sign, Label F="", ticklabel ticklabel=null, { return new void(picture pic, transform3 t, Label L, path3 g, path3 g2, pen p, arrowbar3 arrow, margin3 margin, ticklocate locate, - int[] divisor, bool opposite, bool primary) { + int[] divisor, bool opposite, bool primary, + projection P=currentprojection) { // Use local copy of context variables: int Sign=opposite ? -1 : 1; int sign=Sign*sign; @@ -261,17 +262,18 @@ ticks3 Ticks3(int sign, Label F="", ticklabel ticklabel=null, return new void(picture pic, transform3 T, Label L, path3 g, path3 g2, pen p, arrowbar3 arrow, margin3 margin=NoMargin3, ticklocate locate, - int[] divisor, bool opposite, bool primary) { + int[] divisor, bool opposite, bool primary, + projection P=currentprojection) { path3 G=T*g; real limit=Step == 0 ? axiscoverage*arclength(G) : 0; tickvalues values=modify(generateticks(sign,F,ticklabel,N,n,Step,step, Size,size,identity(),1, - project(G,currentprojection), + project(G,P), limit,p,locate,divisor, opposite)); Ticks3(sign,F,ticklabel,beginlabel,endlabel,values.major,values.minor, values.N,begin,end,Size,size,extend,pTick,ptick) - (pic,T,L,g,g2,p,arrow,margin,locate,divisor,opposite,primary); + (pic,T,L,g,g2,p,arrow,margin,locate,divisor,opposite,primary,P); }; } @@ -279,7 +281,8 @@ ticks3 NoTicks3() { return new void(picture pic, transform3 T, Label L, path3 g, path3, pen p, arrowbar3 arrow, margin3 margin, - ticklocate, int[], bool opposite, bool primary) { + ticklocate, int[], bool opposite, bool primary, + projection P=currentprojection) { path3 G=T*g; if(primary) draw(pic,margin(G,p).g,p,arrow,margin); else draw(pic,G,p); @@ -478,9 +481,10 @@ void axis(picture pic=currentpicture, Label L="", path3 g, path3 g2=nullpath3, divisor=copy(divisor); locate=locate.copy(); - pic.add(new void (picture f, transform3 t, transform3 T, triple, triple) { + pic.add(new void (picture f, transform3 t, transform3 T, + projection P, triple, triple) { picture d; - ticks(d,t,L,g,g2,p,arrow,margin,locate,divisor,opposite,true); + ticks(d,t,L,g,g2,p,arrow,margin,locate,divisor,opposite,true,P); add(f,t*T*inverse(t)*d); },above=above); @@ -522,12 +526,13 @@ void xaxis3At(picture pic=currentpicture, Label L="", axis axis, real xmin=-infinity, real xmax=infinity, pen p=currentpen, ticks3 ticks=NoTicks3, arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=true, - bool opposite=false, bool opposite2=false, bool primary=true) + bool opposite=false, bool opposite2=false, bool primary=true, + projection P=currentprojection) { int type=axis.type; int type2=axis.type2; triple dir=axis.align.dir3 == O ? - defaultdir(Y,Z,X,opposite^opposite2,currentprojection) : axis.align.dir3; + defaultdir(Y,Z,X,opposite^opposite2,P) : axis.align.dir3; Label L=L.copy(); if(L.align.dir3 == O && L.align.dir == 0) L.align(opposite ? -dir : dir); @@ -536,8 +541,8 @@ void xaxis3At(picture pic=currentpicture, Label L="", axis axis, real y2,z2; int[] divisor=copy(axis.xdivisor); - pic.add(new void(picture f, transform3 t, transform3 T, triple lb, - triple rt) { + pic.add(new void(picture f, transform3 t, transform3 T, projection P, + triple lb, triple rt) { transform3 tinv=inverse(t); triple a=xmin == -infinity ? tinv*(lb.x-min3(p).x,ytrans(t,y), ztrans(t,z)) : (xmin,y,z); @@ -573,7 +578,7 @@ void xaxis3At(picture pic=currentpicture, Label L="", axis axis, ticks(d,t,L,a--b,finite(y0) && finite(z0) ? a2--b2 : nullpath3, p,arrow,margin, ticklocate(a.x,b.x,pic.scale.x,Dir(dir)),divisor, - opposite,primary); + opposite,primary,P); add(f,t*T*tinv*d); },above=above); @@ -621,7 +626,7 @@ void xaxis3At(picture pic=currentpicture, Label L="", axis axis, ticks(d,pic.scaling3(warn=false),L, (a.x,0,0)--(b.x,0,0),(a2.x,0,0)--(b2.x,0,0),p,arrow,margin, ticklocate(a.x,b.x,pic.scale.x,Dir(dir)),divisor, - opposite,primary); + opposite,primary,P); frame f; if(L.s != "") { Label L0=L.copy(); @@ -655,12 +660,13 @@ void yaxis3At(picture pic=currentpicture, Label L="", axis axis, real ymin=-infinity, real ymax=infinity, pen p=currentpen, ticks3 ticks=NoTicks3, arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=true, - bool opposite=false, bool opposite2=false, bool primary=true) + bool opposite=false, bool opposite2=false, bool primary=true, + projection P=currentprojection) { int type=axis.type; int type2=axis.type2; triple dir=axis.align.dir3 == O ? - defaultdir(X,Z,Y,opposite^opposite2,currentprojection) : axis.align.dir3; + defaultdir(X,Z,Y,opposite^opposite2,P) : axis.align.dir3; Label L=L.copy(); if(L.align.dir3 == O && L.align.dir == 0) L.align(opposite ? -dir : dir); @@ -669,8 +675,8 @@ void yaxis3At(picture pic=currentpicture, Label L="", axis axis, real x2,z2; int[] divisor=copy(axis.ydivisor); - pic.add(new void(picture f, transform3 t, transform3 T, triple lb, - triple rt) { + pic.add(new void(picture f, transform3 t, transform3 T, projection P, + triple lb, triple rt) { transform3 tinv=inverse(t); triple a=ymin == -infinity ? tinv*(xtrans(t,x),lb.y-min3(p).y, ztrans(t,z)) : (x,ymin,z); @@ -706,7 +712,7 @@ void yaxis3At(picture pic=currentpicture, Label L="", axis axis, ticks(d,t,L,a--b,finite(x0) && finite(z0) ? a2--b2 : nullpath3, p,arrow,margin, ticklocate(a.y,b.y,pic.scale.y,Dir(dir)),divisor, - opposite,primary); + opposite,primary,P); add(f,t*T*tinv*d); },above=above); @@ -754,7 +760,7 @@ void yaxis3At(picture pic=currentpicture, Label L="", axis axis, ticks(d,pic.scaling3(warn=false),L, (0,a.y,0)--(0,b.y,0),(0,a2.y,0)--(0,a2.y,0),p,arrow,margin, ticklocate(a.y,b.y,pic.scale.y,Dir(dir)),divisor, - opposite,primary); + opposite,primary,P); frame f; if(L.s != "") { Label L0=L.copy(); @@ -788,12 +794,13 @@ void zaxis3At(picture pic=currentpicture, Label L="", axis axis, real zmin=-infinity, real zmax=infinity, pen p=currentpen, ticks3 ticks=NoTicks3, arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=true, - bool opposite=false, bool opposite2=false, bool primary=true) + bool opposite=false, bool opposite2=false, bool primary=true, + projection P=currentprojection) { int type=axis.type; int type2=axis.type2; triple dir=axis.align.dir3 == O ? - defaultdir(X,Y,Z,opposite^opposite2,currentprojection) : axis.align.dir3; + defaultdir(X,Y,Z,opposite^opposite2,P) : axis.align.dir3; Label L=L.copy(); if(L.align.dir3 == O && L.align.dir == 0) L.align(opposite ? -dir : dir); @@ -802,8 +809,8 @@ void zaxis3At(picture pic=currentpicture, Label L="", axis axis, real x2,y2; int[] divisor=copy(axis.zdivisor); - pic.add(new void(picture f, transform3 t, transform3 T, triple lb, - triple rt) { + pic.add(new void(picture f, transform3 t, transform3 T, projection P, + triple lb, triple rt) { transform3 tinv=inverse(t); triple a=zmin == -infinity ? tinv*(xtrans(t,x),ytrans(t,y), lb.z-min3(p).z) : (x,y,zmin); @@ -839,7 +846,7 @@ void zaxis3At(picture pic=currentpicture, Label L="", axis axis, ticks(d,t,L,a--b,finite(x0) && finite(y0) ? a2--b2 : nullpath3, p,arrow,margin, ticklocate(a.z,b.z,pic.scale.z,Dir(dir)),divisor, - opposite,primary); + opposite,primary,P); add(f,t*T*tinv*d); },above=above); @@ -887,7 +894,7 @@ void zaxis3At(picture pic=currentpicture, Label L="", axis axis, ticks(d,pic.scaling3(warn=false),L, (0,0,a.z)--(0,0,b.z),(0,0,a2.z)--(0,0,a2.z),p,arrow,margin, ticklocate(a.z,b.z,pic.scale.z,Dir(dir)),divisor, - opposite,primary); + opposite,primary,P); frame f; if(L.s != "") { Label L0=L.copy(); @@ -945,7 +952,8 @@ void autoscale3(picture pic=currentpicture, axis axis) void xaxis3(picture pic=currentpicture, Label L="", axis axis=YZZero, real xmin=-infinity, real xmax=infinity, pen p=currentpen, ticks3 ticks=NoTicks3, - arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=false) + arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=false, + projection P=currentprojection) { if(xmin > xmax) return; @@ -1001,7 +1009,8 @@ void xaxis3(picture pic=currentpicture, Label L="", axis axis=YZZero, bool back=false; if(axis.type == Both) { - triple v=currentprojection.normal; + projection P=centered(P,pic); + triple v=P.normal; back=dot((0,pic.userMax().y-pic.userMin().y,0),v)*sgn(v.z) > 0; } @@ -1019,7 +1028,8 @@ void xaxis3(picture pic=currentpicture, Label L="", axis axis=YZZero, void yaxis3(picture pic=currentpicture, Label L="", axis axis=XZZero, real ymin=-infinity, real ymax=infinity, pen p=currentpen, ticks3 ticks=NoTicks3, - arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=false) + arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=false, + projection P=currentprojection) { if(ymin > ymax) return; @@ -1076,7 +1086,8 @@ void yaxis3(picture pic=currentpicture, Label L="", axis axis=XZZero, bool back=false; if(axis.type == Both) { - triple v=currentprojection.normal; + projection P=centered(P,pic); + triple v=P.normal; back=dot((pic.userMax().x-pic.userMin().x,0,0),v)*sgn(v.z) > 0; } @@ -1094,7 +1105,8 @@ void yaxis3(picture pic=currentpicture, Label L="", axis axis=XZZero, void zaxis3(picture pic=currentpicture, Label L="", axis axis=XYZero, real zmin=-infinity, real zmax=infinity, pen p=currentpen, ticks3 ticks=NoTicks3, - arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=false) + arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=false, + projection P=currentprojection) { if(zmin > zmax) return; @@ -1150,7 +1162,8 @@ void zaxis3(picture pic=currentpicture, Label L="", axis axis=XYZero, bool back=false; if(axis.type == Both) { - triple v=currentprojection.vector(); + projection P=centered(P,pic); + triple v=P.vector(); back=dot((pic.userMax().x-pic.userMin().x,0,0),v)*sgn(v.y) > 0; } @@ -1200,11 +1213,12 @@ void axes3(picture pic=currentpicture, bool extend=false, triple min=(-infinity,-infinity,-infinity), triple max=(infinity,infinity,infinity), - pen p=currentpen, arrowbar3 arrow=None, margin3 margin=NoMargin3) + pen p=currentpen, arrowbar3 arrow=None, margin3 margin=NoMargin3, + projection P=currentprojection) { - xaxis3(pic,xlabel,YZZero(extend),min.x,max.x,p,arrow,margin); - yaxis3(pic,ylabel,XZZero(extend),min.y,max.y,p,arrow,margin); - zaxis3(pic,zlabel,XYZero(extend),min.z,max.z,p,arrow,margin); + xaxis3(pic,xlabel,YZZero(extend),min.x,max.x,p,arrow,margin,P); + yaxis3(pic,ylabel,XZZero(extend),min.y,max.y,p,arrow,margin,P); + zaxis3(pic,zlabel,XYZero(extend),min.z,max.z,p,arrow,margin,P); } triple Scale(picture pic=currentpicture, triple v) @@ -1659,7 +1673,7 @@ surface surface(picture pic=currentpicture, triple[][] f, bool[][] cond={}) surface s=surface(count); s.index=new int[nx][ny]; - int k=-1; + int k=0; for(int i=0; i < nx; ++i) { bool[] condi,condp; if(!all) { @@ -1670,13 +1684,15 @@ surface surface(picture pic=currentpicture, triple[][] f, bool[][] cond={}) triple[] fp=f[i+1]; int[] indexi=s.index[i]; for(int j=0; j < ny; ++j) { - if(all || (condi[j] && condi[j+1] && condp[j] && condp[j+1])) - s.s[++k]=patch(new triple[] { + if(all || (condi[j] && condi[j+1] && condp[j] && condp[j+1])) { + s.s[k]=patch(new triple[] { Scale(pic,fi[j]), Scale(pic,fp[j]), Scale(pic,fp[j+1]), Scale(pic,fi[j+1])}); - indexi[j]=k; + indexi[j]=k; + ++k; + } } } @@ -2062,11 +2078,13 @@ surface surface(picture pic=currentpicture, triple f(pair z), surface s=surface(sx.length); s.index=new int[nu][nv]; - int k=-1; + int k=0; for(int i=0; i < nu; ++i) { int[] indexi=s.index[i]; - for(int j=0; j < nv; ++j) - indexi[j]=++k; + for(int j=0; j < nv; ++j) { + indexi[j]=k; + ++k; + } } for(int k=0; k < sx.length; ++k) { diff --git a/graphics/asymptote/base/grid3.asy b/graphics/asymptote/base/grid3.asy index 62807847ae..412992f6c4 100644 --- a/graphics/asymptote/base/grid3.asy +++ b/graphics/asymptote/base/grid3.asy @@ -193,7 +193,8 @@ void grid3(picture pic=currentpicture, grid3routines gridroutinej=gridroutine[j]; for(int i=0; i < gridroutinej.length; ++i) { grid3 gt=gridroutinej[i](pic); - pic.add(new void(picture f, transform3 t, transform3 T, triple, triple) { + pic.add(new void(picture f, transform3 t, transform3 T, + projection P, triple, triple) { picture d; ticks3 ticks=Ticks3(1,F="%",ticklabel=null, beginlabel=false,endlabel=false, @@ -202,7 +203,7 @@ void grid3(picture pic=currentpicture, Size=0,size=0,extend=true, pTick=pGrid,ptick=pgrid); ticks(d,t,"",gt.axea,gt.axeb,nullpen,None,NoMargin3,gt.locate, - gt.bds.divisor,opposite=true,primary=false); + gt.bds.divisor,opposite=true,primary=false,P); add(f,t*T*inverse(t)*d); },above=above); addPath(pic,gt.axea,pGrid); diff --git a/graphics/asymptote/base/map.asy b/graphics/asymptote/base/map.asy index 2b2277b956..06c61f7b4b 100644 --- a/graphics/asymptote/base/map.asy +++ b/graphics/asymptote/base/map.asy @@ -1,40 +1,36 @@ -// Create a struct <name> parameterized by types <key> and <value>, -// that maps keys to values, defaulting to the value in <default>. -void mapTemplate(string name, string key, string value, string default) -{ - type(key,"Key"); - type(value,"Value"); - eval("Value default="+default,true); +typedef import(Key, Value); - eval(" - struct keyValue { - Key key; - Value T; - void operator init(Key key) { - this.key=key; - } - void operator init(Key key, Value T) { - this.key=key; - this.T=T; - } +struct keyValue { + Key key; + Value value; + void operator init(Key key) { + this.key=key; } + void operator init(Key key, Value value) { + this.key=key; + this.value=value; + } +} - struct map { - keyValue[] M; - bool operator < (keyValue a, keyValue b) {return a.key < b.key;} +// Map keys to values, defaulting to the value default. - void add(Key key, Value T) { - keyValue m=keyValue(key,T); - M.insert(search(M,m,operator <)+1,m); - } - Value lookup(Key key) { - int i=search(M,keyValue(key),operator <); - if(i >= 0 && M[i].key == key) return M[i].T; - return default; - } +struct map { + keyValue[] M; + int Default; + + void operator init(Value Default) { + this.Default=Default; } -",true); - type("map",name); -} + bool operator < (keyValue a, keyValue b) {return a.key < b.key;} + void add(Key key, Value value) { + keyValue m=keyValue(key,value); + M.insert(search(M,m,operator <)+1,m); + } + Value lookup(Key key) { + int i=search(M,keyValue(key),operator <); + if(i >= 0 && M[i].key == key) return M[i].value; + return Default; + } +} diff --git a/graphics/asymptote/base/mapArray.asy b/graphics/asymptote/base/mapArray.asy index 5a499b8c68..d6d75e9861 100644 --- a/graphics/asymptote/base/mapArray.asy +++ b/graphics/asymptote/base/mapArray.asy @@ -6,4 +6,4 @@ Dst[] map(MapType f, Src[] a) { return sequence( new Dst(int i) {return f(a[i]);}, a.length); -}
\ No newline at end of file +} diff --git a/graphics/asymptote/base/plain_picture.asy b/graphics/asymptote/base/plain_picture.asy index 9df0e5753e..8c1fbd99f9 100644 --- a/graphics/asymptote/base/plain_picture.asy +++ b/graphics/asymptote/base/plain_picture.asy @@ -733,7 +733,7 @@ struct picture { // <<<1 add(new void(frame f, transform t) { picture opic=new picture; d(opic,t); - add(f,opic.fit(identity())); + add(f,opic.fit(identity)); },exact); } @@ -745,12 +745,12 @@ struct picture { // <<<1 },exact,above); } - void add(void d(picture, transform3, transform3, triple, triple), + void add(void d(picture, transform3, transform3, projection, triple, triple), bool exact=false, bool above=true) { add(new void(frame f, transform3 t, transform3 T, picture pic2, projection P, triple lb, triple rt) { picture opic=new picture; - d(opic,t,T,lb,rt); + d(opic,t,T,P,lb,rt); add(f,opic.fit3(identity4,pic2,P)); },exact,above); } @@ -1134,6 +1134,26 @@ pair size(picture pic, bool user=false) return t*M-t*m; } +// Return a projection adjusted to view center of pic from specified direction. +projection centered(projection P, picture pic=currentpicture) { + projection P=P.copy(); + if(P.autoadjust && P.center) { + triple min=pic.userMin3(); + triple max=pic.userMax3(); + if(min != max) { + triple target=0.5*(max+min); + if(pic.keepAspect) + P.camera=target+P.vector(); + else + P.camera=target+realmult(unit(P.vector()),max-min); + P.target=target; + P.normal=P.vector(); + P.calculate(); + } + } + return P; +} + // Frame Alignment <<< pair rectify(pair dir) { @@ -1608,7 +1628,7 @@ void fill(pair origin, picture pic=currentpicture, path[] g, pen p=currentpen) { picture opic; fill(opic,g,p); - add(pic,opic,origin); + add(pic,opic.fit(identity),origin); } void postscript(picture pic=currentpicture, string s) diff --git a/graphics/asymptote/base/plain_prethree.asy b/graphics/asymptote/base/plain_prethree.asy index 8866396255..fefa1e5104 100644 --- a/graphics/asymptote/base/plain_prethree.asy +++ b/graphics/asymptote/base/plain_prethree.asy @@ -143,7 +143,7 @@ struct projection { static private real sqrtEpsilon = sqrt(realEpsilon); // Move the camera so that the box(m,M) rotated about target will always - // lie in front of the clipping plane. + // lie in front of the far clipping plane. bool adjust(triple m, triple M) { triple v=camera-target; real d=distance(m,M); @@ -161,7 +161,7 @@ projection currentprojection; struct light { real[][] diffuse; - real[][] specular; // For PRC only + real[][] specular; pen background=nullpen; // Background color of the 3D canvas. real specularfactor; triple[] position; // Only directional lights are currently implemented. diff --git a/graphics/asymptote/base/plain_shipout.asy b/graphics/asymptote/base/plain_shipout.asy index c784c5f462..0fd1b71c7a 100644 --- a/graphics/asymptote/base/plain_shipout.asy +++ b/graphics/asymptote/base/plain_shipout.asy @@ -122,6 +122,8 @@ void shipout(string prefix=defaultfilename, picture pic=currentpicture, string options="", string script="", light light=currentlight, projection P=currentprojection) { + projection P=centered(P,pic); + if(!uptodate()) { bool inlinetex=settings.inlinetex; bool prc=prc(format) || settings.v3d; diff --git a/graphics/asymptote/base/slide.asy b/graphics/asymptote/base/slide.asy index a695953768..15a2189704 100644 --- a/graphics/asymptote/base/slide.asy +++ b/graphics/asymptote/base/slide.asy @@ -17,6 +17,8 @@ real pageheight=-2pagemargin; bool landscape=orientation == Landscape || orientation == Seascape; if(landscape) { + usepackage("geometry"); + texpreamble("\geometry{landscape}"); orientation=Portrait; pagewidth += settings.paperheight; pageheight += settings.paperwidth; @@ -401,21 +403,26 @@ void display(string s, string caption="", pair align=S, pen p=itempen, void figure(string[] s, string options="", real margin=0, string[] captions=new string[], string caption="", + string[] url=new string[], pair align=S, pen p=itempen, pen figuremattpen=figuremattpen, bool final=true) { string[] S; for(int i=0; i < s.length; ++i) { S[i]=graphic(s[i],options); + if(i < url.length && url[i] != "") + S[i]="\href{"+url[i]+"/"+s[i]+".html}{"+S[i]+"}"; } display(S,margin,captions,caption,align,itempen,figuremattpen,final); } -void figure(string s, string options="", string caption="", pair align=S, +void figure(string s, string options="", string caption="", + string url="", pair align=S, pen p=itempen, pen figuremattpen=figuremattpen, bool final=true) { - figure(new string[] {s},options,caption,align,p,figuremattpen,final); + figure(new string[] {s},options,caption,new string[] {url},align,p, + figuremattpen,final); } void multifigure(string[] slist, string options="", string caption="", @@ -581,7 +588,7 @@ void bibliography(string name) real hmargin,vmargin; if(pdf()) { hmargin=1; - vmargin=0; + vmargin=0.5; } else { hmargin=1.5; vmargin=1; diff --git a/graphics/asymptote/base/three.asy b/graphics/asymptote/base/three.asy index b93833f666..343ca72067 100644 --- a/graphics/asymptote/base/three.asy +++ b/graphics/asymptote/base/three.asy @@ -46,21 +46,21 @@ restricted interaction Billboard=interaction(1); struct render { - // PRC parameters: - real compression; // lossy compression parameter (0=no compression) + real compression; // lossy PRC compression parameter (0=no compression) real granularity; // PRC rendering granularity - bool closed; // use one-sided rendering? - bool tessellate; // use tessellated mesh to store straight patches? + bool closed; // use one-sided PRC rendering? - bool3 merge; // merge nodes before rendering, for faster but - // lower quality PRC rendering (the value default means + bool tessellate; // use tessellated mesh to store straight patches + + bool3 merge; // merge PRC nodes before rendering, for faster but + // lower quality rendering (the value default means // merge opaque patches only). int sphere; // PRC sphere type (PRCsphere or NURBSsphere). // General parameters: - real margin; // shrink amount for rendered openGL viewport, in bp. + real margin; // shrink amount for rendered OpenGL viewport, in bp. bool partnames; // assign part name indices to compound objects bool defaultnames; // assign default names to unnamed objects interaction interaction; // billboard interaction mode @@ -346,7 +346,7 @@ projection perspective(real x, real y, real z, triple up=Z, triple target=O, projection orthographic(triple camera, triple up=Z, triple target=O, real zoom=1, pair viewportshift=0, - bool showtarget=true, bool center=false) + bool showtarget=true, bool center=true) { return projection(camera,up,target,zoom,viewportshift,showtarget, center=center,new transformation(triple camera, triple up, @@ -356,7 +356,7 @@ projection orthographic(triple camera, triple up=Z, triple target=O, projection orthographic(real x, real y, real z, triple up=Z, triple target=O, real zoom=1, pair viewportshift=0, - bool showtarget=true, bool center=false) + bool showtarget=true, bool center=true) { return orthographic((x,y,z),up,target,zoom,viewportshift,showtarget, center=center); @@ -2679,10 +2679,10 @@ struct scene warn=false; } - if(P.absolute) - this.P=P.copy(); - else if(P.showtarget && !pic.empty3()) - draw(pic,P.target,nullpen); + this.P=P.copy(); + + if(!P.absolute && P.showtarget && !pic.empty3()) + draw(pic,this.P.target,nullpen); t=pic.scaling(xsize3,ysize3,zsize3,keepAspect,warn); adjusted=false; @@ -2690,14 +2690,9 @@ struct scene triple M=pic.max(t); if(!P.absolute) { - this.P=t*P; + this.P=t*this.P; if(this.P.autoadjust || this.P.infinity) adjusted=adjusted | this.P.adjust(m,M); - if(this.P.center && settings.render != 0) { - triple target=0.5*(m+M); - this.P.target=target; - this.P.calculate(); - } } bool scale=xsize != 0 || ysize != 0; @@ -2898,11 +2893,13 @@ object embed(string prefix=outprefix(), string label=prefix, if(primitive()) format=settings.v3d ? "v3d" : settings.outformat; + transform3 s=inv*shift(0,0,zcenter); + shipout3(prefix,f,preview ? nativeformat() : format, S.width-defaultrender.margin,S.height-defaultrender.margin, P.infinity ? 0 : 2aTan(Tan(0.5*P.angle)*P.zoom), P.zoom,m,M,P.viewportshift,S.viewportmargin, - tinv*inv*shift(0,0,zcenter),Light.background(),Light.position, + tinv*s,s,Light.background(),Light.position, Light.diffuse,Light.specular, view && !preview); if(settings.v3d) { @@ -3040,13 +3037,13 @@ currentpicture.fitter=new frame(string prefix, picture pic, string format, bool empty3=pic.empty3(); if(!empty3 || pic.queueErase3) { f=embedder(new object(string prefix, string format) { - return embed(prefix=prefix,pic,format,xsize,ysize,keepAspect,view, - options,script,light,P); - },prefix,format,view,light); + return embed(prefix=prefix,pic,format,xsize,ysize,keepAspect,view, + options,script,light,P); + },prefix,format,view,light); pic.queueErase3=false; } - if(is3D(format) || pic.queueErase) + if(is3D(format) || pic.queueErase || settings.render == 0) add(f,pic.fit2(xsize,ysize,keepAspect)); return f; }; diff --git a/graphics/asymptote/base/three_surface.asy b/graphics/asymptote/base/three_surface.asy index c54b0cc490..d5e9ac47a6 100644 --- a/graphics/asymptote/base/three_surface.asy +++ b/graphics/asymptote/base/three_surface.asy @@ -409,14 +409,15 @@ struct patch { // A constructor for a triangle or convex quadrilateral. void operator init(triple[] external, triple[] internal=new triple[], pen[] colors=new pen[], bool3 planar=default) { - init(); - straight=true; if(colors.length != 0) this.colors=copy(colors); if(external.length == 3) { + triangular=true; + this.planar=true; + init(); P=new triple[][] { {external[0]}, {interp(external[0],external[1],1/3), @@ -426,9 +427,8 @@ struct patch { {external[1],interp(external[1],external[2],1/3), interp(external[1],external[2],2/3),external[2]} }; - planar=true; - triangular=true; } else { + init(); if(internal.length == 0 && planar == default) this.planar=normal(external) != O; else this.planar=planar; @@ -788,10 +788,11 @@ struct surface { } void operator init(triple[][][] P, pen[][] colors=new pen[][], + bool3 straight=false, bool3 planar=default, bool triangular=false) { s=sequence(new patch(int i) { - return patch(P[i],colors.length == 0 ? new pen[] : colors[i],planar, - triangular); + return patch(P[i],colors.length == 0 ? new pen[] : colors[i], + straight,planar,triangular); },P.length); } @@ -1420,6 +1421,7 @@ void _draw(frame f, path3 g, triple center=O, material m, int computeNormals(triple[] v, int[][] vi, triple[] n, int[][] ni) { triple lastnormal=O; + n.delete(); for(int i=0; i < vi.length; ++i) { int[] vii=vi[i]; int[] nii=ni[i]; @@ -1433,7 +1435,7 @@ int computeNormals(triple[] v, int[][] vi, triple[] n, int[][] ni) return ni.length; } -// Draw triangles on a frame. +// Draw a triangle group on a frame. void draw(frame f, triple[] v, int[][] vi, triple[] n={}, int[][] ni={}, material m=currentpen, pen[] p={}, int[][] pi={}, light light=currentlight, render render=defaultrender) @@ -1480,21 +1482,25 @@ void draw(frame f, triple[] v, int[][] vi, render.interaction.type); } -// Draw triangles on a picture. +// Draw a triangle group on a picture. void draw(picture pic=currentpicture, triple[] v, int[][] vi, triple[] n={}, int[][] ni={}, material m=currentpen, pen[] p={}, int[][] pi={}, light light=currentlight, render render=defaultrender) { - bool normals=ni.length > 0; - if(!normals) { - ni=new int[vi.length][3]; - normals=computeNormals(v,vi,n,ni) > 0; - } bool colors=pi.length > 0; + // TODO: copy inputs + pic.add(new void(frame f, transform3 t, picture pic, projection P) { triple[] v=t*v; - triple[] n=t*n; + bool normals=ni.length > 0; + if(normals) { + transform3 T=transpose(inverse(shiftless(t))); + n=sequence(new triple(int i) {return unit(T*n[i]);},n.length) ; + } else { + ni=new int[vi.length][3]; + normals=computeNormals(v,vi,n,ni) > 0; + } if(is3D()) { render Render=render(render,interaction(render.interaction, @@ -1539,9 +1545,11 @@ void draw(picture pic=currentpicture, triple[] v, int[][] vi, } },true); - for(int[] vii : vi) - for(int viij : vii) - pic.addPoint(v[viij]); + for(int[] vii : vi) { + pic.addPoint(v[vii[0]]); + pic.addPoint(v[vii[1]]); + pic.addPoint(v[vii[2]]); + } } void tensorshade(transform t=identity(), frame f, patch s, @@ -1684,6 +1692,112 @@ void draw(transform t=identity(), frame f, surface s, int nu=1, int nv=1, draw(t,f,s,nu,nv,surfacepen,meshpen,light,meshlight,name,render,P); } +// draw a triangle group on a frame for the tessellation of a surface +// containing indexed patches. +void drawTessellation(frame f, surface s, + material surfacepen=currentpen, pen meshpen=nullpen, + light light=currentlight, light meshlight=nolight, + string name="", render render=defaultrender) +{ + int nU=s.index.length; + if(nU == 0) return; + int nV=s.index[0].length; + if(nV == 0) return; + + int N=(nU+1)*(nV+1); + triple[] v=new triple[N]; + triple[] n=new triple[N]; + + bool colors=s.s[0].colors.length > 0; + pen[] p; + if(colors) + p=new pen[N]; + + int index(int i,int j) {return (nV+1)*i+j;} + + int k=0; + for(int U=0; U < nU; ++U) { + for(int V=0; V < nV; ++V) { + patch q=s.s[s.index[U][V]]; + v[k]=q.P[0][0]; + n[k]=unit(q.normal00()); + if(colors) + p[k]=q.colors[0]; + ++k; + } + patch q=s.s[s.index[U][nV-1]]; + v[k]=q.P[0][3]; + n[k]=unit(q.normal01()); + if(colors) + p[k]=q.colors[3]; + ++k; + } + + for(int V=0; V < nV; ++V) { + patch q=s.s[s.index[nU-1][V]]; + v[k]=q.P[3][0]; + n[k]=unit(q.normal10()); + if(colors) + p[k]=q.colors[1]; + ++k; + } + patch q=s.s[s.index[nU-1][nV-1]]; + v[k]=q.P[3][3]; + n[k]=unit(q.normal11()); + if(colors) + p[k]=q.colors[2]; + ++k; + + int[][] vi=new int[nU*nV][]; + int k=0; + for(int i=0; i < nU; ++i) { + for(int j=0; j < nV; ++j) { + vi[k]=new int[] {index(i,j),index(i+1,j),index(i+1,j+1)}; + ++k; + vi[k]=new int[] {index(i,j),index(i+1,j+1),index(i,j+1)}; + ++k; + } + } + + draw(f,v,vi,n,vi,surfacepen,p,colors ? vi : new int[][],light); + + if(!invisible(meshpen)) { + if(is3D()) meshpen=thin()+squarecap+meshpen; + bool group=name != "" || render.defaultnames; + for(int k=0; k < s.s.length; ++k) { + patch q=s.s[k]; + if(group) + begingroup3(f,meshname(name),render); + draw(f,q.P[0][0]--q.P[3][0]--q.P[3][3]--q.P[0][3]--cycle, + meshpen,meshlight,partname(k,render),render); + if(group) + endgroup3(f); + } + } +} + +// draw a triangle group on a picture for the tessellation of a surface +// containing indexed patches. +void drawTessellation(picture pic=currentpicture, surface s, + material surfacepen=currentpen, pen meshpen=nullpen, + light light=currentlight, light meshlight=nolight, + string name="", render render=defaultrender) +{ + pic.add(new void(frame f, transform3 t, picture, projection) { + drawTessellation(f,t*s,surfacepen,meshpen,light,meshlight,name,render); + },true); + + pic.addPoint(min(s)); + pic.addPoint(max(s)); + + if(!invisible(meshpen)) { + for(int k=0; k < s.s.length; ++k) { + patch q=s.s[k]; + addPath(pic,q.P[0][0]--q.P[3][0]--q.P[3][3]--q.P[0][3]--cycle,meshpen); + } + } +} + void draw(picture pic=currentpicture, surface s, int nu=1, int nv=1, material[] surfacepen, pen[] meshpen=nullpens, light light=currentlight, light meshlight=nolight, string name="", @@ -1691,12 +1805,8 @@ void draw(picture pic=currentpicture, surface s, int nu=1, int nv=1, { if(s.empty()) return; - bool cyclic=surfacepen.cyclic; surfacepen=copy(surfacepen); - surfacepen.cyclic=cyclic; - cyclic=meshpen.cyclic; meshpen=copy(meshpen); - meshpen.cyclic=cyclic; pic.add(new void(frame f, transform3 t, picture pic, projection P) { surface S=t*s; @@ -1738,11 +1848,15 @@ void draw(picture pic=currentpicture, surface s, int nu=1, int nv=1, light light=currentlight, light meshlight=nolight, string name="", render render=defaultrender) { - material[] surfacepen={surfacepen}; - pen[] meshpen={meshpen}; - surfacepen.cyclic=true; - meshpen.cyclic=true; - draw(pic,s,nu,nv,surfacepen,meshpen,light,meshlight,name,render); + if(render.tessellate && s.index.length > 0 && settings.render != 0) { + drawTessellation(pic,s,surfacepen,meshpen,light,meshlight,name,render); + } else { + material[] surfacepen={surfacepen}; + surfacepen.cyclic=true; + pen[] meshpen={meshpen}; + meshpen.cyclic=true; + draw(pic,s,nu,nv,surfacepen,meshpen,light,meshlight,name,render); + } } void draw(picture pic=currentpicture, surface s, int nu=1, int nv=1, diff --git a/graphics/asymptote/base/v3dheadertypes.asy b/graphics/asymptote/base/v3dheadertypes.asy index aff3ebd34d..d8a2ebd7b4 100644 --- a/graphics/asymptote/base/v3dheadertypes.asy +++ b/graphics/asymptote/base/v3dheadertypes.asy @@ -1,6 +1,6 @@ // Enum class for v3dheadertypes // AUTO-GENERATED from v3dheadertypes.csv -// Generated at 2024-06-21 17:45:18+00:00 +// Generated at 2024-08-15 05:44:42+00:00 struct v3dheadertypes { diff --git a/graphics/asymptote/base/v3dtypes.asy b/graphics/asymptote/base/v3dtypes.asy index 97517ebae2..89bd3c20fd 100644 --- a/graphics/asymptote/base/v3dtypes.asy +++ b/graphics/asymptote/base/v3dtypes.asy @@ -1,6 +1,6 @@ // Enum class for v3dtypes // AUTO-GENERATED from v3dtypes.csv -// Generated at 2024-06-21 17:45:18+00:00 +// Generated at 2024-08-15 05:44:42+00:00 struct v3dtypes { diff --git a/graphics/asymptote/base/webgl/asygl.js b/graphics/asymptote/base/webgl/asygl.js index b5f77299a6..5b9fbfa649 100644 --- a/graphics/asymptote/base/webgl/asygl.js +++ b/graphics/asymptote/base/webgl/asygl.js @@ -1,6 +1,6 @@ /*@license AsyGL: Render Bezier patches and triangles via subdivision with WebGL. - Copyright 2019-2022: John C. Bowman and Supakorn "Jamie" Rassameemasmuang + Copyright 2019-2024: John C. Bowman and Supakorn "Jamie" Rassameemasmuang University of Alberta This program is free software; you can redistribute it and/or modify @@ -36,4 +36,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/ -let vertex="\n#ifdef WEBGL2\n#define IN in\n#define OUT out\n#else\n#define IN attribute\n#define OUT varying\n#endif\n\nIN vec3 position;\n#ifdef WIDTH\nIN float width;\n#endif\n#ifdef NORMAL\nIN vec3 normal;\n#endif\n\nIN float materialIndex;\n\n#ifdef WEBGL2\nflat out int MaterialIndex;\n#ifdef COLOR\nOUT vec4 Color;\n#endif\n\n#else\nOUT vec4 diffuse;\nOUT vec3 specular;\nOUT float roughness,metallic,fresnel0;\nOUT vec4 emissive;\n\nstruct Material {\n vec4 diffuse,emissive,specular;\n vec4 parameters;\n};\n\nuniform Material Materials[Nmaterials];\n#endif\n\n#ifdef COLOR\nIN vec4 color;\n#endif\n\nuniform mat3 normMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\n\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nOUT vec3 ViewPosition;\n#endif\nOUT vec3 Normal;\n#endif\n\nvoid main(void)\n{\n vec4 v=vec4(position,1.0);\n gl_Position=projViewMat*v;\n\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\n ViewPosition=(viewMat*v).xyz;\n#endif\n Normal=normalize(normal*normMat);\n#endif\n\n#ifdef WEBGL2\n MaterialIndex=int(materialIndex);\n#ifdef COLOR\n Color=color;\n#endif\n#else\n#ifdef NORMAL\n Material m;\n#ifdef TRANSPARENT\n m=Materials[int(abs(materialIndex))-1];\n emissive=m.emissive;\n if(materialIndex >= 0.0)\n diffuse=m.diffuse;\n else {\n diffuse=color;\n#if nlights == 0\n emissive += color;\n#endif\n }\n#else\n m=Materials[int(materialIndex)];\n emissive=m.emissive;\n#ifdef COLOR\n diffuse=color;\n#if nlights == 0\n emissive += color;\n#endif\n#else\n diffuse=m.diffuse;\n#endif // COLOR\n#endif // TRANSPARENT\n specular=m.specular.rgb;\n vec4 parameters=m.parameters;\n roughness=1.0-parameters[0];\n metallic=parameters[1];\n fresnel0=parameters[2];\n#else\n emissive=Materials[int(materialIndex)].emissive;\n#endif // NORMAL\n#endif // WEBGL2\n\n#ifdef WIDTH\n gl_PointSize=width;\n#endif\n}\n",fragment="\n#ifdef WEBGL2\n#define IN in\nout vec4 outValue;\n#define OUTVALUE outValue\n#else\n#define IN varying\n#define OUTVALUE gl_FragColor\n#endif\n\n#ifdef WEBGL2\nflat in int MaterialIndex;\n\nstruct Material {\n vec4 diffuse,emissive,specular;\n vec4 parameters;\n};\n\nuniform Material Materials[Nmaterials];\n\nvec4 diffuse;\nvec3 specular;\nfloat roughness,metallic,fresnel0;\nvec4 emissive;\n\n#ifdef COLOR\nin vec4 Color;\n#endif\n\n#else\nIN vec4 diffuse;\nIN vec3 specular;\nIN float roughness,metallic,fresnel0;\nIN vec4 emissive;\n#endif\n\n#ifdef NORMAL\n\n#ifndef ORTHOGRAPHIC\nIN vec3 ViewPosition;\n#endif\nIN vec3 Normal;\n\nvec3 normal;\n\nstruct Light {\n vec3 direction;\n vec3 color;\n};\n\nuniform Light Lights[Nlights];\n\n#ifdef USE_IBL\nuniform sampler2D reflBRDFSampler;\nuniform sampler2D diffuseSampler;\nuniform sampler2D reflImgSampler;\n\nconst float pi=acos(-1.0);\nconst float piInv=1.0/pi;\nconst float twopi=2.0*pi;\nconst float twopiInv=1.0/twopi;\n\n// (x,y,z) -> (r,theta,phi);\n// theta -> [0,pi]: colatitude\n// phi -> [-pi,pi]: longitude\nvec3 cart2sphere(vec3 cart)\n{\n float x=cart.x;\n float y=cart.z;\n float z=cart.y;\n\n float r=length(cart);\n float theta=r > 0.0 ? acos(z/r) : 0.0;\n float phi=atan(y,x);\n\n return vec3(r,theta,phi);\n}\n\nvec2 normalizedAngle(vec3 cartVec)\n{\n vec3 sphericalVec=cart2sphere(cartVec);\n sphericalVec.y=sphericalVec.y*piInv;\n sphericalVec.z=0.75-sphericalVec.z*twopiInv;\n return sphericalVec.zy;\n}\n\nvec3 IBLColor(vec3 viewDir)\n{\n vec3 IBLDiffuse=diffuse.rgb*texture(diffuseSampler,normalizedAngle(normal)).rgb;\n vec3 reflectVec=normalize(reflect(-viewDir,normal));\n vec2 reflCoord=normalizedAngle(reflectVec);\n vec3 IBLRefl=textureLod(reflImgSampler,reflCoord,roughness*ROUGHNESS_STEP_COUNT).rgb;\n vec2 IBLbrdf=texture(reflBRDFSampler,vec2(dot(normal,viewDir),roughness)).rg;\n float specularMultiplier=fresnel0*IBLbrdf.x+IBLbrdf.y;\n vec3 dielectric=IBLDiffuse+specularMultiplier*IBLRefl;\n vec3 metal=diffuse.rgb*IBLRefl;\n return mix(dielectric,metal,metallic);\n}\n#else\nfloat Roughness2;\nfloat NDF_TRG(vec3 h)\n{\n float ndoth=max(dot(normal,h),0.0);\n float alpha2=Roughness2*Roughness2;\n float denom=ndoth*ndoth*(alpha2-1.0)+1.0;\n return denom != 0.0 ? alpha2/(denom*denom) : 0.0;\n}\n\nfloat GGX_Geom(vec3 v)\n{\n float ndotv=max(dot(v,normal),0.0);\n float ap=1.0+Roughness2;\n float k=0.125*ap*ap;\n return ndotv/((ndotv*(1.0-k))+k);\n}\n\nfloat Geom(vec3 v, vec3 l)\n{\n return GGX_Geom(v)*GGX_Geom(l);\n}\n\nfloat Fresnel(vec3 h, vec3 v, float fresnel0)\n{\n float a=1.0-max(dot(h,v),0.0);\n float b=a*a;\n return fresnel0+(1.0-fresnel0)*b*b*a;\n}\n\n// physical based shading using UE4 model.\nvec3 BRDF(vec3 viewDirection, vec3 lightDirection)\n{\n vec3 lambertian=diffuse.rgb;\n vec3 h=normalize(lightDirection+viewDirection);\n\n float omegain=max(dot(viewDirection,normal),0.0);\n float omegaln=max(dot(lightDirection,normal),0.0);\n\n float D=NDF_TRG(h);\n float G=Geom(viewDirection,lightDirection);\n float F=Fresnel(h,viewDirection,fresnel0);\n\n float denom=4.0*omegain*omegaln;\n float rawReflectance=denom > 0.0 ? (D*G)/denom : 0.0;\n\n vec3 dielectric=mix(lambertian,rawReflectance*specular,F);\n vec3 metal=rawReflectance*diffuse.rgb;\n\n return mix(dielectric,metal,metallic);\n}\n#endif\n\n#endif\n\nvoid main(void)\n{\n#ifdef WEBGL2\n#ifdef NORMAL\n Material m;\n#ifdef TRANSPARENT\n m=Materials[abs(MaterialIndex)-1];\n emissive=m.emissive;\n if(MaterialIndex >= 0)\n diffuse=m.diffuse;\n else {\n diffuse=Color;\n#if nlights == 0\n emissive += Color;\n#endif\n }\n#else\n m=Materials[MaterialIndex];\n emissive=m.emissive;\n#ifdef COLOR\n diffuse=Color;\n#if nlights == 0\n emissive += Color;\n#endif\n#else\n diffuse=m.diffuse;\n#endif // COLOR\n#endif // TRANSPARENT\n specular=m.specular.rgb;\n vec4 parameters=m.parameters;\n roughness=1.0-parameters[0];\n metallic=parameters[1];\n fresnel0=parameters[2];\n#else\n emissive=Materials[MaterialIndex].emissive;\n#endif // NORMAL\n#endif // WEBGL2\n\n#if defined(NORMAL) && nlights > 0\n normal=normalize(Normal);\n normal=gl_FrontFacing ? normal : -normal;\n#ifdef ORTHOGRAPHIC\n vec3 viewDir=vec3(0.0,0.0,1.0);\n#else\n vec3 viewDir=-normalize(ViewPosition);\n#endif\n\nvec3 color;\n#ifdef USE_IBL\n color=IBLColor(viewDir);\n#else\n Roughness2=roughness*roughness;\n color=emissive.rgb;\n for(int i=0; i < nlights; ++i) {\n Light Li=Lights[i];\n vec3 L=Li.direction;\n float cosTheta=max(dot(normal,L),0.0);\n vec3 radiance=cosTheta*Li.color;\n color += BRDF(viewDir,L)*radiance;\n }\n#endif\n OUTVALUE=vec4(color,diffuse.a);\n#else\n OUTVALUE=emissive;\n#endif\n}\n";!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var n in i)("object"==typeof exports?exports:t)[n]=i[n]}}("undefined"!=typeof self?self:this,(function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setMatrixArrayType=function(t){e.ARRAY_TYPE=t},e.toRadian=function(t){return t*r},e.equals=function(t,e){return Math.abs(t-e)<=n*Math.max(1,Math.abs(t),Math.abs(e))};var n=e.EPSILON=1e-6;e.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,e.RANDOM=Math.random;var r=Math.PI/180},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mat4=e.mat3=void 0;var n=s(i(2)),r=s(i(3));function s(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}e.mat3=n,e.mat4=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new n.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},e.invert=function(t,e){var i=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],h=e[6],l=e[7],c=e[8],d=c*a-o*l,m=-c*s+o*h,f=l*s-a*h,u=i*d+n*m+r*f;if(!u)return null;return u=1/u,t[0]=d*u,t[1]=(-c*n+r*l)*u,t[2]=(o*n-r*a)*u,t[3]=m*u,t[4]=(c*i-r*h)*u,t[5]=(-o*i+r*s)*u,t[6]=f*u,t[7]=(-l*i+n*h)*u,t[8]=(a*i-n*s)*u,t};var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0))},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new n.ARRAY_TYPE(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.invert=function(t,e){var i=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],h=e[6],l=e[7],c=e[8],d=e[9],m=e[10],f=e[11],u=e[12],p=e[13],v=e[14],x=e[15],g=i*o-n*a,w=i*h-r*a,M=i*l-s*a,b=n*h-r*o,R=n*l-s*o,T=r*l-s*h,y=c*p-d*u,A=c*v-m*u,E=c*x-f*u,I=d*v-m*p,L=d*x-f*p,N=m*x-f*v,O=g*N-w*L+M*I+b*E-R*A+T*y;if(!O)return null;return O=1/O,t[0]=(o*N-h*L+l*I)*O,t[1]=(r*L-n*N-s*I)*O,t[2]=(p*T-v*R+x*b)*O,t[3]=(m*R-d*T-f*b)*O,t[4]=(h*E-a*N-l*A)*O,t[5]=(i*N-r*E+s*A)*O,t[6]=(v*M-u*T-x*w)*O,t[7]=(c*T-m*M+f*w)*O,t[8]=(a*L-o*E+l*y)*O,t[9]=(n*E-i*L-s*y)*O,t[10]=(u*R-p*M+x*g)*O,t[11]=(d*M-c*R-f*g)*O,t[12]=(o*A-a*I-h*y)*O,t[13]=(i*I-n*A+r*y)*O,t[14]=(p*w-u*b-v*g)*O,t[15]=(c*b-d*w+m*g)*O,t},e.multiply=r,e.translate=function(t,e,i){var n=i[0],r=i[1],s=i[2],a=void 0,o=void 0,h=void 0,l=void 0,c=void 0,d=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,x=void 0;e===t?(t[12]=e[0]*n+e[4]*r+e[8]*s+e[12],t[13]=e[1]*n+e[5]*r+e[9]*s+e[13],t[14]=e[2]*n+e[6]*r+e[10]*s+e[14],t[15]=e[3]*n+e[7]*r+e[11]*s+e[15]):(a=e[0],o=e[1],h=e[2],l=e[3],c=e[4],d=e[5],m=e[6],f=e[7],u=e[8],p=e[9],v=e[10],x=e[11],t[0]=a,t[1]=o,t[2]=h,t[3]=l,t[4]=c,t[5]=d,t[6]=m,t[7]=f,t[8]=u,t[9]=p,t[10]=v,t[11]=x,t[12]=a*n+c*r+u*s+e[12],t[13]=o*n+d*r+p*s+e[13],t[14]=h*n+m*r+v*s+e[14],t[15]=l*n+f*r+x*s+e[15]);return t},e.rotate=function(t,e,i,r){var s,a,o,h,l,c,d,m,f,u,p,v,x,g,w,M,b,R,T,y,A,E,I,L,N=r[0],O=r[1],_=r[2],P=Math.sqrt(N*N+O*O+_*_);if(Math.abs(P)<n.EPSILON)return null;N*=P=1/P,O*=P,_*=P,s=Math.sin(i),a=Math.cos(i),o=1-a,h=e[0],l=e[1],c=e[2],d=e[3],m=e[4],f=e[5],u=e[6],p=e[7],v=e[8],x=e[9],g=e[10],w=e[11],M=N*N*o+a,b=O*N*o+_*s,R=_*N*o-O*s,T=N*O*o-_*s,y=O*O*o+a,A=_*O*o+N*s,E=N*_*o+O*s,I=O*_*o-N*s,L=_*_*o+a,t[0]=h*M+m*b+v*R,t[1]=l*M+f*b+x*R,t[2]=c*M+u*b+g*R,t[3]=d*M+p*b+w*R,t[4]=h*T+m*y+v*A,t[5]=l*T+f*y+x*A,t[6]=c*T+u*y+g*A,t[7]=d*T+p*y+w*A,t[8]=h*E+m*I+v*L,t[9]=l*E+f*I+x*L,t[10]=c*E+u*I+g*L,t[11]=d*E+p*I+w*L,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t},e.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},e.fromRotation=function(t,e,i){var r,s,a,o=i[0],h=i[1],l=i[2],c=Math.sqrt(o*o+h*h+l*l);if(Math.abs(c)<n.EPSILON)return null;return o*=c=1/c,h*=c,l*=c,r=Math.sin(e),s=Math.cos(e),a=1-s,t[0]=o*o*a+s,t[1]=h*o*a+l*r,t[2]=l*o*a-h*r,t[3]=0,t[4]=o*h*a-l*r,t[5]=h*h*a+s,t[6]=l*h*a+o*r,t[7]=0,t[8]=o*l*a+h*r,t[9]=h*l*a-o*r,t[10]=l*l*a+s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,e,i,n,r,s,a){var o=1/(i-e),h=1/(r-n),l=1/(s-a);return t[0]=2*s*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*s*h,t[6]=0,t[7]=0,t[8]=(i+e)*o,t[9]=(r+n)*h,t[10]=(a+s)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=a*s*2*l,t[15]=0,t},e.ortho=function(t,e,i,n,r,s,a){var o=1/(e-i),h=1/(n-r),l=1/(s-a);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+i)*o,t[13]=(r+n)*h,t[14]=(a+s)*l,t[15]=1,t};var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0));function r(t,e,i){var n=e[0],r=e[1],s=e[2],a=e[3],o=e[4],h=e[5],l=e[6],c=e[7],d=e[8],m=e[9],f=e[10],u=e[11],p=e[12],v=e[13],x=e[14],g=e[15],w=i[0],M=i[1],b=i[2],R=i[3];return t[0]=w*n+M*o+b*d+R*p,t[1]=w*r+M*h+b*m+R*v,t[2]=w*s+M*l+b*f+R*x,t[3]=w*a+M*c+b*u+R*g,w=i[4],M=i[5],b=i[6],R=i[7],t[4]=w*n+M*o+b*d+R*p,t[5]=w*r+M*h+b*m+R*v,t[6]=w*s+M*l+b*f+R*x,t[7]=w*a+M*c+b*u+R*g,w=i[8],M=i[9],b=i[10],R=i[11],t[8]=w*n+M*o+b*d+R*p,t[9]=w*r+M*h+b*m+R*v,t[10]=w*s+M*l+b*f+R*x,t[11]=w*a+M*c+b*u+R*g,w=i[12],M=i[13],b=i[14],R=i[15],t[12]=w*n+M*o+b*d+R*p,t[13]=w*r+M*h+b*m+R*v,t[14]=w*s+M*l+b*f+R*x,t[15]=w*a+M*c+b*u+R*g,t}}])})),function(){document.asy={canvasWidth:0,canvasHeight:0,absolute:!1,minBound:[0,0,0],maxBound:[0,0,0],orthographic:!1,angleOfView:0,initialZoom:0,viewportShift:[0,0],viewportMargin:[0,0],background:[],zoomFactor:0,zoomPinchFactor:0,zoomPinchCap:0,zoomStep:0,shiftHoldDistance:0,shiftWaitTime:0,vibrateTime:0,ibl:!1,webgl2:!1,imageURL:"",image:"",Transform:[],Centers:[]};let t,e,i,n,r,s,a,o=document.asy,h=[],l=[],c=[],d=0,m=2;const f=Math.acos(-1),u=f/180,p=Math.ceil(1-Math.log2(Number.EPSILON));let v,x,g,w,M,b,R,T=mat4.create(),y=mat4.create(),A=mat4.create(),E=mat4.create(),I=mat3.create(),L=mat3.create(),N=mat4.create(),O=mat4.create(),_={x:0,y:0,z:0},P={x:0,y:0},S={xmin:0,xmax:0,ymin:0,ymax:0,zmin:0,zmax:0},U=!0,V=0,B=!1,D=null,C=null,F=[],z=[],H=[],X=[],G=null,W=null,j=null;function k(){o.embedded||st(),rt(o.ibl)}class Y{constructor(t,e,i,n,r,s){this.diffuse=t,this.emissive=e,this.specular=i,this.shininess=n,this.metallic=r,this.fresnel0=s}setUniform(e,i){let n=n=>t.getUniformLocation(e,"Materials["+i+"]."+n);t.uniform4fv(n("diffuse"),new Float32Array(this.diffuse)),t.uniform4fv(n("emissive"),new Float32Array(this.emissive)),t.uniform4fv(n("specular"),new Float32Array(this.specular)),t.uniform4f(n("parameters"),this.shininess,this.metallic,this.fresnel0,0)}}let $,q,K,Z,Q,J,tt,et,it;class nt{constructor(t,e){this.direction=t,this.color=e}setUniform(e,i){let n=n=>t.getUniformLocation(e,"Lights["+i+"]."+n);t.uniform3fv(n("direction"),new Float32Array(this.direction)),t.uniform3fv(n("color"),new Float32Array(this.color))}}function rt(e=!1){let i=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS);r=Math.floor((i-14)/4),m=Math.min(Math.max(m,c.length),r),pixelOpt=["WIDTH"],materialOpt=["NORMAL"],colorOpt=["NORMAL","COLOR"],transparentOpt=["NORMAL","COLOR","TRANSPARENT"],e&&(materialOpt.push("USE_IBL"),transparentOpt.push("USE_IBL")),xe=Lt(pixelOpt),ge=Lt(materialOpt),we=Lt(colorOpt),Me=Lt(transparentOpt)}function st(){t.deleteProgram(Me),t.deleteProgram(we),t.deleteProgram(ge),t.deleteProgram(xe)}function at(){let i=o.webgl2?window.top.document.asygl2[e]:window.top.document.asygl[e];i.gl=t,i.nlights=l.length,i.Nmaterials=m,i.maxMaterials=r,i.pixelShader=xe,i.materialShader=ge,i.colorShader=we,i.transparentShader=Me}function ot(t,e){let i;return o.webgl2&&(i=t.getContext("webgl2",{alpha:e}),o.embedded&&!i)?(o.webgl2=!1,o.ibl=!1,ht(!1),null):(i||(o.webgl2=!1,o.ibl=!1,i=t.getContext("webgl",{alpha:e})),i||alert("Could not initialize WebGL"),i)}function ht(s=!0){if(o.ibl&&(o.webgl2=!0),e=o.background[3]<1,o.embedded){let a=window.top.document;if(s&&(n=o.canvas.getContext("2d")),i=o.webgl2?a.offscreen2:a.offscreen,i||(i=a.createElement("canvas"),o.webgl2?a.offscreen2=i:a.offscreen=i),o.webgl2?a.asygl2||(a.asygl2=Array(2)):a.asygl||(a.asygl=Array(2)),asygl=o.webgl2?a.asygl2:a.asygl,asygl[e]&&asygl[e].gl)!function(){let i=o.webgl2?window.top.document.asygl2[e]:window.top.document.asygl[e];t=i.gl,d=i.nlights,m=i.Nmaterials,r=i.maxMaterials,xe=i.pixelShader,ge=i.materialShader,we=i.colorShader,Me=i.transparentShader}(),(l.length!=d||Math.min(c.length,r)>m)&&(rt(),at());else{if(rc=ot(i,e),!rc)return;t=rc,rt(),o.webgl2?a.asygl2[e]={}:a.asygl[e]={},at()}}else t=ot(o.canvas,e),rt();$=t.getExtension("OES_element_index_uint"),q=t.TRIANGLES,K=new mt(t.POINTS),Z=new mt(t.LINES),Q=new mt,J=new mt,tt=new mt,et=new mt}function lt(t,e,i,n=[]){let r=o.webgl2?"300 es":"100",s=Array(...n),a=[["nlights",0==V?l.length:0],["Nmaterials",m]],h=[["int","Nlights",Math.max(l.length,1)]];o.webgl2&&s.push("WEBGL2"),o.ibl&&a.push(["ROUGHNESS_STEP_COUNT",8..toFixed(2)]),o.orthographic&&s.push("ORTHOGRAPHIC"),macros_str=a.map(t=>`#define ${t[0]} ${t[1]}`).join("\n"),define_str=s.map(t=>"#define "+t).join("\n"),const_str=h.map(t=>`const ${t[0]} ${t[1]}=${t[2]};`).join("\n"),ext_str=[].map(t=>`#extension ${t}: enable`).join("\n"),shaderSrc=`#version ${r}\n${ext_str}\n${define_str}\n${const_str}\n${macros_str}\n\n\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n \n${e}\n `;let c=t.createShader(i);return t.shaderSource(c,shaderSrc),t.compileShader(c),t.getShaderParameter(c,t.COMPILE_STATUS)?c:(alert(t.getShaderInfoLog(c)),null)}function ct(e,i,n,r=t.ARRAY_BUFFER){return e.length>0&&(0==i&&(i=t.createBuffer(),n=!0),t.bindBuffer(r,i),n&&t.bufferData(r,e,t.STATIC_DRAW)),i}function dt(e,i,n=e.indices){if(0==e.indices.length)return;let r=i!=xe;!function(e,i){let n=i==xe;t.useProgram(i),t.enableVertexAttribArray(Tt),n&&t.enableVertexAttribArray(It);let r=!n&&l.length>0;r&&t.enableVertexAttribArray(yt);t.enableVertexAttribArray(At),i.projViewMatUniform=t.getUniformLocation(i,"projViewMat"),i.viewMatUniform=t.getUniformLocation(i,"viewMat"),i.normMatUniform=t.getUniformLocation(i,"normMat"),(i==we||i==Me)&&t.enableVertexAttribArray(Et);if(r)for(let t=0;t<l.length;++t)l[t].setUniform(i,t);for(let t=0;t<e.materials.length;++t)e.materials[t].setUniform(i,t);t.uniformMatrix4fv(i.projViewMatUniform,!1,E),t.uniformMatrix4fv(i.viewMatUniform,!1,A),t.uniformMatrix3fv(i.normMatUniform,!1,I)}(e,i),null!=W&&(t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,j),t.uniform1i(t.getUniformLocation(i,"reflBRDFSampler"),0),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,W),t.uniform1i(t.getUniformLocation(i,"diffuseSampler"),1),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,G),t.uniform1i(t.getUniformLocation(i,"reflImgSampler"),2));let s=U||e.partial||!e.rendered;e.verticesBuffer=ct(new Float32Array(e.vertices),e.verticesBuffer,s),t.vertexAttribPointer(Tt,3,t.FLOAT,!1,r?24:16,0),r?l.length>0&&t.vertexAttribPointer(yt,3,t.FLOAT,!1,24,12):t.vertexAttribPointer(It,1,t.FLOAT,!1,16,12),e.materialsBuffer=ct(new Int16Array(e.materialIndices),e.materialsBuffer,s),t.vertexAttribPointer(At,1,t.SHORT,!1,2,0),i!=we&&i!=Me||(e.colorsBuffer=ct(new Float32Array(e.colors),e.colorsBuffer,s),t.vertexAttribPointer(Et,4,t.FLOAT,!0,0,0)),e.indicesBuffer=ct($?new Uint32Array(n):new Uint16Array(n),e.indicesBuffer,s,t.ELEMENT_ARRAY_BUFFER),e.rendered=!0,t.drawElements(r?V?t.LINES:e.type:t.POINTS,n.length,$?t.UNSIGNED_INT:t.UNSIGNED_SHORT,0)}class mt{constructor(t){this.type=t||q,this.verticesBuffer=0,this.materialsBuffer=0,this.colorsBuffer=0,this.indicesBuffer=0,this.rendered=!1,this.partial=!1,this.clear()}clear(){this.vertices=[],this.materialIndices=[],this.colors=[],this.indices=[],this.nvertices=0,this.materials=[],this.materialTable=[]}vertex(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(it),this.nvertices++}Vertex(t,e,i=[0,0,0,0]){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(it),this.colors.push(i[0]),this.colors.push(i[1]),this.colors.push(i[2]),this.colors.push(i[3]),this.nvertices++}vertex0(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e),this.materialIndices.push(it),this.nvertices++}iVertex(t,e,i,n=[0,0,0,0]){let r=6*t;this.vertices[r]=e[0],this.vertices[r+1]=e[1],this.vertices[r+2]=e[2],this.vertices[r+3]=i[0],this.vertices[r+4]=i[1],this.vertices[r+5]=i[2],this.materialIndices[t]=it;let s=4*t;this.colors[s]=n[0],this.colors[s+1]=n[1],this.colors[s+2]=n[2],this.colors[s+3]=n[3],this.indices.push(t)}append(t){ft(this.vertices,t.vertices),ft(this.materialIndices,t.materialIndices),ft(this.colors,t.colors),function(t,e,i){let n=t.length,r=e.length;t.length+=e.length;for(let s=0;s<r;++s)t[n+s]=e[s]+i}(this.indices,t.indices,this.nvertices),this.nvertices+=t.nvertices}}function ft(t,e){let i=t.length,n=e.length;t.length+=n;for(let r=0;r<n;++r)t[i+r]=e[r]}class ut{constructor(){this.data=new mt,this.Onscreen=!1,this.m=[]}offscreen(t){let e=E,i=t[0],n=i[0],r=i[1],s=i[2],a=1/(e[3]*n+e[7]*r+e[11]*s+e[15]);this.x=this.X=(e[0]*n+e[4]*r+e[8]*s+e[12])*a,this.y=this.Y=(e[1]*n+e[5]*r+e[9]*s+e[13])*a;for(let i=1,n=t.length;i<n;++i){let n=t[i],r=n[0],s=n[1],a=n[2],o=1/(e[3]*r+e[7]*s+e[11]*a+e[15]),h=(e[0]*r+e[4]*s+e[8]*a+e[12])*o,l=(e[1]*r+e[5]*s+e[9]*a+e[13])*o;h<this.x?this.x=h:h>this.X&&(this.X=h),l<this.y?this.y=l:l>this.Y&&(this.Y=l)}return(this.X<-1.01||this.x>1.01||this.Y<-1.01||this.y>1.01)&&(this.Onscreen=!1,!0)}T(t){let e=this.c[0],i=this.c[1],n=this.c[2],r=t[0]-e,s=t[1]-i,a=t[2]-n;return[r*I[0]+s*I[3]+a*I[6]+e,r*I[1]+s*I[4]+a*I[7]+i,r*I[2]+s*I[5]+a*I[8]+n]}Tcorners(t,e){return[this.T(t),this.T([t[0],t[1],e[2]]),this.T([t[0],e[1],t[2]]),this.T([t[0],e[1],e[2]]),this.T([e[0],t[1],t[2]]),this.T([e[0],t[1],e[2]]),this.T([e[0],e[1],t[2]]),this.T(e)]}setMaterial(t,e){null==t.materialTable[this.MaterialIndex]&&(t.materials.length>=m&&(t.partial=!0,e()),t.materialTable[this.MaterialIndex]=t.materials.length,t.materials.push(c[this.MaterialIndex])),it=t.materialTable[this.MaterialIndex]}render(){let t;var e,i;if(this.setMaterialIndex(),0==this.CenterIndex?(e=this.Min,i=this.Max,t=[e,[e[0],e[1],i[2]],[e[0],i[1],e[2]],[e[0],i[1],i[2]],[i[0],e[1],e[2]],[i[0],e[1],i[2]],[i[0],i[1],e[2]],i]):(this.c=o.Centers[this.CenterIndex-1],t=this.Tcorners(this.Min,this.Max)),this.offscreen(t))return this.data.clear(),void this.notRendered();let n,r=this.controlpoints;if(0==this.CenterIndex){if(!U&&this.Onscreen)return void this.append();n=r}else{let t=r.length;n=Array(t);for(let e=0;e<t;++e)n[e]=this.T(r[e])}let s=o.orthographic?1:this.Min[2]/o.maxBound[2],a=.75*Math.hypot(s*(S.xmax-S.xmin),s*(S.ymax-S.ymin))/b;this.res2=a*a,this.Epsilon=.1*a,this.data.clear(),this.notRendered(),this.Onscreen=!0,this.process(n)}}function pt(t,e){let i=t[0],n=t.length;for(let r=1;r<n;++r)i=e(i,t[r]);return i}class vt extends ut{constructor(t,e,i,n,r,s){super(),this.controlpoints=t,this.CenterIndex=e,this.MaterialIndex=i,this.color=n;let a=t.length;if(n){let t=n[0][3]+n[1][3]+n[2][3];this.transparent=16==a||4==a?t+n[3][3]<1020:t<765}else this.transparent=c[i].diffuse[3]<1;this.vertex=this.transparent?this.data.Vertex.bind(this.data):this.data.vertex.bind(this.data);let o=this.L2norm2(this.controlpoints),h=Math.sqrt(1e3*Number.EPSILON*o);this.epsilon=o*Number.EPSILON,this.Min=r||this.Bounds(this.controlpoints,Math.min,h),this.Max=s||this.Bounds(this.controlpoints,Math.max,h)}setMaterialIndex(){this.transparent?this.setMaterial(tt,Ie):this.color?this.setMaterial(J,Ae):this.setMaterial(Q,ye)}cornerbound(t,e){let i=e(t[0],t[3]);return i=e(i,t[12]),e(i,t[15])}controlbound(t,e){let i=e(t[1],t[2]);return i=e(i,t[4]),i=e(i,t[5]),i=e(i,t[6]),i=e(i,t[7]),i=e(i,t[8]),i=e(i,t[9]),i=e(i,t[10]),i=e(i,t[11]),i=e(i,t[13]),e(i,t[14])}bound(t,e,i,n,r){if(i=e(i,this.cornerbound(t,e)),e(-1,1)*(i-this.controlbound(t,e))>=-n||0==r)return i;--r,n*=2;let s=new Nt(t[0],t[1],t[2],t[3]),a=new Nt(t[4],t[5],t[6],t[7]),o=new Nt(t[8],t[9],t[10],t[11]),h=new Nt(t[12],t[13],t[14],t[15]),l=new Nt(t[0],t[4],t[8],t[12]),c=new Nt(s.m0,a.m0,o.m0,h.m0),d=new Nt(s.m3,a.m3,o.m3,h.m3),m=new Nt(s.m5,a.m5,o.m5,h.m5),f=new Nt(s.m4,a.m4,o.m4,h.m4),u=new Nt(s.m2,a.m2,o.m2,h.m2),p=new Nt(t[3],t[7],t[11],t[15]),v=[t[0],s.m0,s.m3,s.m5,l.m0,c.m0,d.m0,m.m0,l.m3,c.m3,d.m3,m.m3,l.m5,c.m5,d.m5,m.m5];i=this.bound(v,e,i,n,r);let x=[l.m5,c.m5,d.m5,m.m5,l.m4,c.m4,d.m4,m.m4,l.m2,c.m2,d.m2,m.m2,t[12],h.m0,h.m3,h.m5];i=this.bound(x,e,i,n,r);let g=[m.m5,f.m5,u.m5,p.m5,m.m4,f.m4,u.m4,p.m4,m.m2,f.m2,u.m2,p.m2,h.m5,h.m4,h.m2,t[15]];i=this.bound(g,e,i,n,r);let w=[s.m5,s.m4,s.m2,t[3],m.m0,f.m0,u.m0,p.m0,m.m3,f.m3,u.m3,p.m3,m.m5,f.m5,u.m5,p.m5];return this.bound(w,e,i,n,r)}cornerboundtri(t,e){let i=e(t[0],t[6]);return e(i,t[9])}controlboundtri(t,e){let i=e(t[1],t[2]);return i=e(i,t[3]),i=e(i,t[4]),i=e(i,t[5]),i=e(i,t[7]),e(i,t[8])}boundtri(t,e,i,n,r){if(i=e(i,this.cornerboundtri(t,e)),e(-1,1)*(i-this.controlboundtri(t,e))>=-n||0==r)return i;--r,n*=2;let s=new _t(t),a=[s.l003,s.l102,s.l012,s.l201,s.l111,s.l021,s.l300,s.l210,s.l120,s.l030];i=this.boundtri(a,e,i,n,r);let o=[s.l300,s.r102,s.r012,s.r201,s.r111,s.r021,s.r300,s.r210,s.r120,s.r030];i=this.boundtri(o,e,i,n,r);let h=[s.l030,s.u102,s.u012,s.u201,s.u111,s.u021,s.r030,s.u210,s.u120,s.u030];i=this.boundtri(h,e,i,n,r);let l=[s.r030,s.u201,s.r021,s.u102,s.c111,s.r012,s.l030,s.l120,s.l210,s.l300];return this.boundtri(l,e,i,n,r)}Bounds(t,e,i){let n=Array(3),r=t.length,s=Array(r);for(let a=0;a<3;++a){for(let e=0;e<r;++e)s[e]=t[e][a];n[a]=16==r?this.bound(s,e,s[0],i,p):10==r?this.boundtri(s,e,s[0],i,p):pt(s,e)}return[n[0],n[1],n[2]]}L2norm2(t){let e=t[0],i=0,n=t.length;for(let r=1;r<n;++r)i=Math.max(i,St([t[r][0]-e[0],t[r][1]-e[1],t[r][2]-e[2]]));return i}processTriangle(t){let e=t[0],i=t[1],n=t[2],r=Pt(Vt([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[n[0]-e[0],n[1]-e[1],n[2]-e[2]]));if(!this.offscreen([e,i,n])){let t,s,a;this.color?(t=this.data.Vertex(e,r,this.color[0]),s=this.data.Vertex(i,r,this.color[1]),a=this.data.Vertex(n,r,this.color[2])):(t=this.vertex(e,r),s=this.vertex(i,r),a=this.vertex(n,r)),0==V?(this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(a)):(this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(a),this.data.indices.push(a),this.data.indices.push(t)),this.append()}}processQuad(t){let e=t[0],i=t[1],n=t[2],r=t[3],s=Vt([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[n[0]-i[0],n[1]-i[1],n[2]-i[2]]),a=Vt([n[0]-r[0],n[1]-r[1],n[2]-r[2]],[r[0]-e[0],r[1]-e[1],r[2]-e[2]]),o=Pt([s[0]+a[0],s[1]+a[1],s[2]+a[2]]);if(!this.offscreen([e,i,n,r])){let t,s,a,h;this.color?(t=this.data.Vertex(e,o,this.color[0]),s=this.data.Vertex(i,o,this.color[1]),a=this.data.Vertex(n,o,this.color[2]),h=this.data.Vertex(r,o,this.color[3])):(t=this.vertex(e,o),s=this.vertex(i,o),a=this.vertex(n,o),h=this.vertex(r,o)),0==V?(this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(a),this.data.indices.push(t),this.data.indices.push(a),this.data.indices.push(h)):(this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(a),this.data.indices.push(a),this.data.indices.push(h),this.data.indices.push(h),this.data.indices.push(t)),this.append()}}curve(t,e,i,n,r){new wt([t[e],t[i],t[n],t[r]],0,it,this.Min,this.Max).render()}process(t){if(this.transparent&&1!=V&&(it=this.color?-1-it:1+it),10==t.length)return this.process3(t);if(3==t.length)return this.processTriangle(t);if(4==t.length)return this.processQuad(t);if(1==V)return this.curve(t,0,4,8,12),this.curve(t,12,13,14,15),this.curve(t,15,11,7,3),void this.curve(t,3,2,1,0);let e=t[0],i=t[3],n=t[12],r=t[15],s=this.normal(i,t[2],t[1],e,t[4],t[8],n);St(s)<this.epsilon&&(s=this.normal(i,t[2],t[1],e,t[13],t[14],r),St(s)<this.epsilon&&(s=this.normal(r,t[11],t[7],i,t[4],t[8],n)));let a=this.normal(e,t[4],t[8],n,t[13],t[14],r);St(a)<this.epsilon&&(a=this.normal(e,t[4],t[8],n,t[11],t[7],i),St(a)<this.epsilon&&(a=this.normal(i,t[2],t[1],e,t[13],t[14],r)));let o=this.normal(n,t[13],t[14],r,t[11],t[7],i);St(o)<this.epsilon&&(o=this.normal(n,t[13],t[14],r,t[2],t[1],e),St(o)<this.epsilon&&(o=this.normal(e,t[4],t[8],n,t[11],t[7],i)));let h=this.normal(r,t[11],t[7],i,t[2],t[1],e);if(St(h)<this.epsilon&&(h=this.normal(r,t[11],t[7],i,t[4],t[8],n),St(h)<this.epsilon&&(h=this.normal(n,t[13],t[14],r,t[2],t[1],e))),this.color){let l=this.color[0],c=this.color[1],d=this.color[2],m=this.color[3],f=this.data.Vertex(e,s,l),u=this.data.Vertex(n,a,c),p=this.data.Vertex(r,o,d),v=this.data.Vertex(i,h,m);this.Render(t,f,u,p,v,e,n,r,i,!1,!1,!1,!1,l,c,d,m)}else{let l=this.vertex(e,s),c=this.vertex(n,a),d=this.vertex(r,o),m=this.vertex(i,h);this.Render(t,l,c,d,m,e,n,r,i,!1,!1,!1,!1)}this.data.indices.length>0&&this.append()}append(){this.transparent?tt.append(this.data):this.color?J.append(this.data):Q.append(this.data)}notRendered(){this.transparent?tt.rendered=!1:this.color?J.rendered=!1:Q.rendered=!1}Render(t,e,i,n,r,s,a,o,h,l,c,d,m,f,u,p,v){let x=this.Distance(t);if(x[0]<this.res2&&x[1]<this.res2)this.offscreen([s,a,o])||(0==V?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(n)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(n))),this.offscreen([s,o,h])||(0==V?(this.data.indices.push(e),this.data.indices.push(n),this.data.indices.push(r)):(this.data.indices.push(n),this.data.indices.push(r),this.data.indices.push(r),this.data.indices.push(e)));else{if(this.offscreen(t))return;let g=t[0],w=t[3],M=t[12],b=t[15];if(x[0]<this.res2){let x=new Ot(g,t[1],t[2],w),R=new Ot(t[4],t[5],t[6],t[7]),T=new Ot(t[8],t[9],t[10],t[11]),y=new Ot(M,t[13],t[14],b),A=[g,x.m0,x.m3,x.m5,t[4],R.m0,R.m3,R.m5,t[8],T.m0,T.m3,T.m5,M,y.m0,y.m3,y.m5],E=[x.m5,x.m4,x.m2,w,R.m5,R.m4,R.m2,t[7],T.m5,T.m4,T.m2,t[11],y.m5,y.m4,y.m2,b],I=this.normal(A[12],A[13],A[14],A[15],A[11],A[7],A[3]);St(I)<=this.epsilon&&(I=this.normal(A[12],A[13],A[14],A[15],A[2],A[1],A[0]),St(I)<=this.epsilon&&(I=this.normal(A[0],A[4],A[8],A[12],A[11],A[7],A[3])));let L=this.normal(E[3],E[2],E[1],E[0],E[4],E[8],E[12]);St(L)<=this.epsilon&&(L=this.normal(E[3],E[2],E[1],E[0],E[13],E[14],E[15]),St(L)<=this.epsilon&&(L=this.normal(E[15],E[11],E[7],E[3],E[4],E[8],E[12])));let N=this.Epsilon,O=[.5*(a[0]+o[0]),.5*(a[1]+o[1]),.5*(a[2]+o[2])];if(!c)if(c=zt(M,t[13],t[14],b)<this.res2){let t=Pt(this.differential(E[12],E[8],E[4],E[0]));O=[O[0]-N*t[0],O[1]-N*t[1],O[2]-N*t[2]]}else O=A[15];let _=[.5*(h[0]+s[0]),.5*(h[1]+s[1]),.5*(h[2]+s[2])];if(!m)if(m=zt(g,t[1],t[2],w)<this.res2){let t=Pt(this.differential(A[3],A[7],A[11],A[15]));_=[_[0]-N*t[0],_[1]-N*t[1],_[2]-N*t[2]]}else _=E[0];if(f){let t=Array(4),x=Array(4);for(let e=0;e<4;++e)t[e]=.5*(u[e]+p[e]),x[e]=.5*(v[e]+f[e]);let g=this.data.Vertex(O,I,t),w=this.data.Vertex(_,L,x);this.Render(A,e,i,g,w,s,a,O,_,l,c,!1,m,f,u,t,x),this.Render(E,w,g,n,r,_,O,o,h,!1,c,d,m,x,t,p,v)}else{let t=this.vertex(O,I),f=this.vertex(_,L);this.Render(A,e,i,t,f,s,a,O,_,l,c,!1,m),this.Render(E,f,t,n,r,_,O,o,h,!1,c,d,m)}return}if(x[1]<this.res2){let x=new Ot(g,t[4],t[8],M),R=new Ot(t[1],t[5],t[9],t[13]),T=new Ot(t[2],t[6],t[10],t[14]),y=new Ot(w,t[7],t[11],b),A=[g,t[1],t[2],w,x.m0,R.m0,T.m0,y.m0,x.m3,R.m3,T.m3,y.m3,x.m5,R.m5,T.m5,y.m5],E=[x.m5,R.m5,T.m5,y.m5,x.m4,R.m4,T.m4,y.m4,x.m2,R.m2,T.m2,y.m2,M,t[13],t[14],b],I=this.normal(A[0],A[4],A[8],A[12],A[13],A[14],A[15]);St(I)<=this.epsilon&&(I=this.normal(A[0],A[4],A[8],A[12],A[11],A[7],A[3]),St(I)<=this.epsilon&&(I=this.normal(A[3],A[2],A[1],A[0],A[13],A[14],A[15])));let L=this.normal(E[15],E[11],E[7],E[3],E[2],E[1],E[0]);St(L)<=this.epsilon&&(L=this.normal(E[15],E[11],E[7],E[3],E[4],E[8],E[12]),St(L)<=this.epsilon&&(L=this.normal(E[12],E[13],E[14],E[15],E[2],E[1],E[0])));let N=this.Epsilon,O=[.5*(s[0]+a[0]),.5*(s[1]+a[1]),.5*(s[2]+a[2])];if(!l)if(l=zt(g,t[4],t[8],M)<this.res2){let t=Pt(this.differential(E[0],E[1],E[2],E[3]));O=[O[0]-N*t[0],O[1]-N*t[1],O[2]-N*t[2]]}else O=A[12];let _=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!d)if(d=zt(b,t[11],t[7],w)<this.res2){let t=Pt(this.differential(A[15],A[14],A[13],A[12]));_=[_[0]-N*t[0],_[1]-N*t[1],_[2]-N*t[2]]}else _=E[3];if(f){let t=Array(4),x=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),x[e]=.5*(p[e]+v[e]);let g=this.data.Vertex(O,I,t),w=this.data.Vertex(_,L,x);this.Render(A,e,g,w,r,s,O,_,h,l,!1,d,m,f,t,x,v),this.Render(E,g,i,n,w,O,a,o,_,l,c,d,!1,t,u,p,x)}else{let t=this.vertex(O,I),f=this.vertex(_,L);this.Render(A,e,t,f,r,s,O,_,h,l,!1,d,m),this.Render(E,t,i,n,f,O,a,o,_,l,c,d,!1)}return}let R=new Ot(g,t[1],t[2],w),T=new Ot(t[4],t[5],t[6],t[7]),y=new Ot(t[8],t[9],t[10],t[11]),A=new Ot(M,t[13],t[14],b),E=new Ot(g,t[4],t[8],M),I=new Ot(R.m0,T.m0,y.m0,A.m0),L=new Ot(R.m3,T.m3,y.m3,A.m3),N=new Ot(R.m5,T.m5,y.m5,A.m5),O=new Ot(R.m4,T.m4,y.m4,A.m4),_=new Ot(R.m2,T.m2,y.m2,A.m2),P=new Ot(w,t[7],t[11],b),S=[g,R.m0,R.m3,R.m5,E.m0,I.m0,L.m0,N.m0,E.m3,I.m3,L.m3,N.m3,E.m5,I.m5,L.m5,N.m5],U=[E.m5,I.m5,L.m5,N.m5,E.m4,I.m4,L.m4,N.m4,E.m2,I.m2,L.m2,N.m2,M,A.m0,A.m3,A.m5],V=[N.m5,O.m5,_.m5,P.m5,N.m4,O.m4,_.m4,P.m4,N.m2,O.m2,_.m2,P.m2,A.m5,A.m4,A.m2,b],B=[R.m5,R.m4,R.m2,w,N.m0,O.m0,_.m0,P.m0,N.m3,O.m3,_.m3,P.m3,N.m5,O.m5,_.m5,P.m5],D=S[15],C=this.normal(S[0],S[4],S[8],S[12],S[13],S[14],S[15]);St(C)<this.epsilon&&(C=this.normal(S[0],S[4],S[8],S[12],S[11],S[7],S[3]),St(C)<this.epsilon&&(C=this.normal(S[3],S[2],S[1],S[0],S[13],S[14],S[15])));let F=this.normal(U[12],U[13],U[14],U[15],U[11],U[7],U[3]);St(F)<this.epsilon&&(F=this.normal(U[12],U[13],U[14],U[15],U[2],U[1],U[0]),St(F)<this.epsilon&&(F=this.normal(U[0],U[4],U[8],U[12],U[11],U[7],U[3])));let z=this.normal(V[15],V[11],V[7],V[3],V[2],V[1],V[0]);St(z)<this.epsilon&&(z=this.normal(V[15],V[11],V[7],V[3],V[4],V[8],V[12]),St(z)<this.epsilon&&(z=this.normal(V[12],V[13],V[14],V[15],V[2],V[1],V[0])));let H=this.normal(B[3],B[2],B[1],B[0],B[4],B[8],B[12]);St(H)<this.epsilon&&(H=this.normal(B[3],B[2],B[1],B[0],B[13],B[14],B[15]),St(H)<this.epsilon&&(H=this.normal(B[15],B[11],B[7],B[3],B[4],B[8],B[12])));let X=this.normal(V[3],V[2],V[1],D,V[4],V[8],V[12]),G=this.Epsilon,W=[.5*(s[0]+a[0]),.5*(s[1]+a[1]),.5*(s[2]+a[2])];if(!l)if(l=zt(g,t[4],t[8],M)<this.res2){let t=Pt(this.differential(U[0],U[1],U[2],U[3]));W=[W[0]-G*t[0],W[1]-G*t[1],W[2]-G*t[2]]}else W=S[12];let j=[.5*(a[0]+o[0]),.5*(a[1]+o[1]),.5*(a[2]+o[2])];if(!c)if(c=zt(M,t[13],t[14],b)<this.res2){let t=Pt(this.differential(V[12],V[8],V[4],V[0]));j=[j[0]-G*t[0],j[1]-G*t[1],j[2]-G*t[2]]}else j=U[15];let k=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!d)if(d=zt(b,t[11],t[7],w)<this.res2){let t=Pt(this.differential(B[15],B[14],B[13],B[12]));k=[k[0]-G*t[0],k[1]-G*t[1],k[2]-G*t[2]]}else k=V[3];let Y=[.5*(h[0]+s[0]),.5*(h[1]+s[1]),.5*(h[2]+s[2])];if(!m)if(m=zt(g,t[1],t[2],w)<this.res2){let t=Pt(this.differential(S[3],S[7],S[11],S[15]));Y=[Y[0]-G*t[0],Y[1]-G*t[1],Y[2]-G*t[2]]}else Y=B[0];if(f){let t=Array(4),x=Array(4),g=Array(4),w=Array(4),M=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),x[e]=.5*(u[e]+p[e]),g[e]=.5*(p[e]+v[e]),w[e]=.5*(v[e]+f[e]),M[e]=.5*(t[e]+g[e]);let b=this.data.Vertex(W,C,t),R=this.data.Vertex(j,F,x),T=this.data.Vertex(k,z,g),y=this.data.Vertex(Y,H,w),A=this.data.Vertex(D,X,M);this.Render(S,e,b,A,y,s,W,D,Y,l,!1,!1,m,f,t,M,w),this.Render(U,b,i,R,A,W,a,j,D,l,c,!1,!1,t,u,x,M),this.Render(V,A,R,n,T,D,j,o,k,!1,c,d,!1,M,x,p,g),this.Render(B,y,A,T,r,Y,D,k,h,!1,!1,d,m,w,M,g,v)}else{let t=this.vertex(W,C),f=this.vertex(j,F),u=this.vertex(k,z),p=this.vertex(Y,H),v=this.vertex(D,X);this.Render(S,e,t,v,p,s,W,D,Y,l,!1,!1,m),this.Render(U,t,i,f,v,W,a,j,D,l,c,!1,!1),this.Render(V,v,f,n,u,D,j,o,k,!1,c,d,!1),this.Render(B,p,v,u,r,Y,D,k,h,!1,!1,d,m)}}}process3(t){if(1==V)return this.curve(t,0,1,3,6),this.curve(t,6,7,8,9),void this.curve(t,9,5,2,0);let e=t[0],i=t[6],n=t[9],r=this.normal(n,t[5],t[2],e,t[1],t[3],i),s=this.normal(e,t[1],t[3],i,t[7],t[8],n),a=this.normal(i,t[7],t[8],n,t[5],t[2],e);if(this.color){let o=this.color[0],h=this.color[1],l=this.color[2],c=this.data.Vertex(e,r,o),d=this.data.Vertex(i,s,h),m=this.data.Vertex(n,a,l);this.Render3(t,c,d,m,e,i,n,!1,!1,!1,o,h,l)}else{let o=this.vertex(e,r),h=this.vertex(i,s),l=this.vertex(n,a);this.Render3(t,o,h,l,e,i,n,!1,!1,!1)}this.data.indices.length>0&&this.append()}Render3(t,e,i,n,r,s,a,o,h,l,c,d,m){if(this.Distance3(t)<this.res2)this.offscreen([r,s,a])||(0==V?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(n)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(e)));else{if(this.offscreen(t))return;let f=t[0],u=t[1],p=t[2],v=t[3],x=t[4],g=t[5],w=t[6],M=t[7],b=t[8],R=t[9],T=[.5*(R[0]+g[0]),.5*(R[1]+g[1]),.5*(R[2]+g[2])],y=[.5*(R[0]+b[0]),.5*(R[1]+b[1]),.5*(R[2]+b[2])],A=[.5*(g[0]+p[0]),.5*(g[1]+p[1]),.5*(g[2]+p[2])],E=[.5*(b[0]+x[0]),.5*(b[1]+x[1]),.5*(b[2]+x[2])],I=[.5*(b[0]+M[0]),.5*(b[1]+M[1]),.5*(b[2]+M[2])],L=[.5*(p[0]+x[0]),.5*(p[1]+x[1]),.5*(p[2]+x[2])],N=[.5*(p[0]+f[0]),.5*(p[1]+f[1]),.5*(p[2]+f[2])],O=[.5*(x[0]+v[0]),.5*(x[1]+v[1]),.5*(x[2]+v[2])],_=[.5*(M[0]+w[0]),.5*(M[1]+w[1]),.5*(M[2]+w[2])],P=[.5*(f[0]+u[0]),.5*(f[1]+u[1]),.5*(f[2]+u[2])],S=[.5*(u[0]+v[0]),.5*(u[1]+v[1]),.5*(u[2]+v[2])],U=[.5*(v[0]+w[0]),.5*(v[1]+w[1]),.5*(v[2]+w[2])],V=[.5*(T[0]+A[0]),.5*(T[1]+A[1]),.5*(T[2]+A[2])],B=[.5*(y[0]+I[0]),.5*(y[1]+I[1]),.5*(y[2]+I[2])],D=[.5*(A[0]+N[0]),.5*(A[1]+N[1]),.5*(A[2]+N[2])],C=[.5*E[0]+.25*(x[0]+u[0]),.5*E[1]+.25*(x[1]+u[1]),.5*E[2]+.25*(x[2]+u[2])],F=[.5*(I[0]+_[0]),.5*(I[1]+_[1]),.5*(I[2]+_[2])],z=[.5*L[0]+.25*(x[0]+M[0]),.5*L[1]+.25*(x[1]+M[1]),.5*L[2]+.25*(x[2]+M[2])],H=[.25*(g[0]+x[0])+.5*O[0],.25*(g[1]+x[1])+.5*O[1],.25*(g[2]+x[2])+.5*O[2]],X=[.5*(P[0]+S[0]),.5*(P[1]+S[1]),.5*(P[2]+S[2])],G=[.5*(S[0]+U[0]),.5*(S[1]+U[1]),.5*(S[2]+U[2])],W=[.5*(z[0]+X[0]),.5*(z[1]+X[1]),.5*(z[2]+X[2])],j=[.5*(z[0]+G[0]),.5*(z[1]+G[1]),.5*(z[2]+G[2])],k=[.5*(X[0]+G[0]),.5*(X[1]+G[1]),.5*(X[2]+G[2])],Y=[.5*(H[0]+F[0]),.5*(H[1]+F[1]),.5*(H[2]+F[2])],$=[.5*(B[0]+H[0]),.5*(B[1]+H[1]),.5*(B[2]+H[2])],q=[.5*(B[0]+F[0]),.5*(B[1]+F[1]),.5*(B[2]+F[2])],K=[.5*(V[0]+C[0]),.5*(V[1]+C[1]),.5*(V[2]+C[2])],Z=[.5*(D[0]+C[0]),.5*(D[1]+C[1]),.5*(D[2]+C[2])],Q=[.5*(V[0]+D[0]),.5*(V[1]+D[1]),.5*(V[2]+D[2])],J=[f,P,N,X,[.5*(L[0]+P[0]),.5*(L[1]+P[1]),.5*(L[2]+P[2])],D,k,W,Z,Q],tt=[k,G,j,U,[.5*(O[0]+_[0]),.5*(O[1]+_[1]),.5*(O[2]+_[2])],Y,w,_,F,q],et=[Q,K,V,$,[.5*(T[0]+E[0]),.5*(T[1]+E[1]),.5*(T[2]+E[2])],T,q,B,y,R],it=[q,$,Y,K,[.25*(A[0]+I[0]+S[0]+x[0]),.25*(A[1]+I[1]+S[1]+x[1]),.25*(A[2]+I[2]+S[2]+x[2])],j,Q,Z,W,k],nt=this.normal(k,j,Y,q,$,K,Q),rt=this.normal(q,$,K,Q,Z,W,k),st=this.normal(Q,Z,W,k,j,Y,q),at=this.Epsilon,ot=[.5*(s[0]+a[0]),.5*(s[1]+a[1]),.5*(s[2]+a[2])];if(!o)if(o=zt(w,M,b,R)<this.res2){let t=Pt(this.sumdifferential(it[0],it[2],it[5],it[9],it[1],it[3],it[6]));ot=[ot[0]-at*t[0],ot[1]-at*t[1],ot[2]-at*t[2]]}else ot=q;let ht=[.5*(a[0]+r[0]),.5*(a[1]+r[1]),.5*(a[2]+r[2])];if(!h)if(h=zt(f,p,g,R)<this.res2){let t=Pt(this.sumdifferential(it[6],it[3],it[1],it[0],it[7],it[8],it[9]));ht=[ht[0]-at*t[0],ht[1]-at*t[1],ht[2]-at*t[2]]}else ht=Q;let lt=[.5*(r[0]+s[0]),.5*(r[1]+s[1]),.5*(r[2]+s[2])];if(!l)if(l=zt(f,u,v,w)<this.res2){let t=Pt(this.sumdifferential(it[9],it[8],it[7],it[6],it[5],it[2],it[0]));lt=[lt[0]-at*t[0],lt[1]-at*t[1],lt[2]-at*t[2]]}else lt=k;if(c){let t=Array(4),f=Array(4),u=Array(4);for(let e=0;e<4;++e)t[e]=.5*(d[e]+m[e]),f[e]=.5*(m[e]+c[e]),u[e]=.5*(c[e]+d[e]);let p=this.data.Vertex(ot,nt,t),v=this.data.Vertex(ht,rt,f),x=this.data.Vertex(lt,st,u);this.Render3(J,e,x,v,r,lt,ht,!1,h,l,c,u,f),this.Render3(tt,x,i,p,lt,s,ot,o,!1,l,u,d,t),this.Render3(et,v,p,n,ht,ot,a,o,h,!1,f,t,m),this.Render3(it,p,v,x,ot,ht,lt,!1,!1,!1,t,f,u)}else{let t=this.vertex(ot,nt),c=this.vertex(ht,rt),d=this.vertex(lt,st);this.Render3(J,e,d,c,r,lt,ht,!1,h,l),this.Render3(tt,d,i,t,lt,s,ot,o,!1,l),this.Render3(et,c,t,n,ht,ot,a,o,h,!1),this.Render3(it,t,c,d,ot,ht,lt,!1,!1,!1)}}}Distance(t){let e=t[0],i=t[3],n=t[12],r=t[15],s=Ht(e,n,i,r);s=Math.max(zt(e,t[4],t[8],n)),s=Math.max(s,zt(t[1],t[5],t[9],t[13])),s=Math.max(s,zt(i,t[7],t[11],r)),s=Math.max(s,zt(t[2],t[6],t[10],t[14]));let a=Ht(e,i,n,r);return a=Math.max(a,zt(e,t[1],t[2],i)),a=Math.max(a,zt(t[4],t[5],t[6],t[7])),a=Math.max(a,zt(t[8],t[9],t[10],t[11])),a=Math.max(a,zt(n,t[13],t[14],r)),[s,a]}Distance3(t){let e=t[0],i=t[4],n=t[6],r=t[9],s=St([(e[0]+n[0]+r[0])*(1/3)-i[0],(e[1]+n[1]+r[1])*(1/3)-i[1],(e[2]+n[2]+r[2])*(1/3)-i[2]]);return s=Math.max(s,zt(e,t[1],t[3],n)),s=Math.max(s,zt(e,t[2],t[5],r)),Math.max(s,zt(n,t[7],t[8],r))}differential(t,e,i,n){let r=[3*(e[0]-t[0]),3*(e[1]-t[1]),3*(e[2]-t[2])];return St(r)>this.epsilon?r:(r=Ct(t,e,i),St(r)>this.epsilon?r:Ft(t,e,i,n))}sumdifferential(t,e,i,n,r,s,a){let o=this.differential(t,e,i,n),h=this.differential(t,r,s,a);return[o[0]+h[0],o[1]+h[1],o[2]+h[2]]}normal(t,e,i,n,r,s,a){let o=3*(r[0]-n[0]),h=3*(r[1]-n[1]),l=3*(r[2]-n[2]),c=3*(i[0]-n[0]),d=3*(i[1]-n[1]),m=3*(i[2]-n[2]),f=[h*m-l*d,l*c-o*m,o*d-h*c];if(St(f)>this.epsilon)return f;let u=[c,d,m],p=[o,h,l],v=Ct(n,i,e),x=Ct(n,r,s),g=Vt(x,u),w=Vt(p,v);if(f=[g[0]+w[0],g[1]+w[1],g[2]+w[2]],St(f)>this.epsilon)return f;let M=Ft(n,i,e,t),b=Ft(n,r,s,a);g=Vt(p,M),w=Vt(b,u);let R=Vt(x,v);return f=[g[0]+w[0]+R[0],g[1]+w[1]+R[1],g[2]+w[2]+R[2]],St(f)>this.epsilon?f:(g=Vt(b,v),w=Vt(x,M),f=[g[0]+w[0],g[1]+w[1],g[2]+w[2]],St(f)>this.epsilon?f:Vt(b,M))}}function xt(t){return 0<=t&&t<=1}class gt{constructor(t,e,i){const n=1e3*Number.EPSILON,r=n*n;if(Math.abs(t)<=n*Math.abs(e)+r*Math.abs(i))Math.abs(e)>n*Math.abs(i)?(this.roots=1,this.t1=-i/e):0==i?(this.roots=1,this.t1=0):this.roots=0;else{let r=.5*e/t,s=e*r;if(Math.abs(s)<=n*Math.abs(i)){let e=-i/t;e>=0?(this.roots=2,this.t2=Math.sqrt(e),this.t1=-this.t2):this.roots=0}else{let t=-2*i/s;if(t>-1){this.roots=2;let e=r*function(t){return t/(Math.sqrt(1+t)+1)}(t),i=-e-2*r;i<=e?(this.t1=i,this.t2=e):(this.t1=e,this.t2=i)}else-1==t?(this.roots=1,this.t1=this.t2=-r):this.roots=0}}}}class wt extends ut{constructor(t,e,i,n,r){if(super(),this.controlpoints=t,this.CenterIndex=e,this.MaterialIndex=i,n&&r)this.Min=n,this.Max=r;else{let t=this.Bounds(this.controlpoints);this.Min=t[0],this.Max=t[1]}}Bounds(t){let e=Array(3),i=Array(3),n=t.length,r=Array(n);for(let h=0;h<3;++h){for(let e=0;e<n;++e)r[e]=t[e][h];let l,c;if(l=c=r[0],4==n){l=Math.min(l,r[3]),c=Math.max(c,r[3]);let t=(s=r[0],a=r[1],o=r[2],[r[3]-s+3*(a-o),2*(s+o)-4*a,a-s]),e=new gt(t[0],t[1],t[2]);if(0!=e.roots&&xt(e.t1)){let t=Bt(r[0],r[1],r[2],r[3],e.t1);l=Math.min(l,t),c=Math.max(c,t)}if(2==e.roots&&xt(e.t2)){let t=Bt(r[0],r[1],r[2],r[3],e.t2);l=Math.min(l,t),c=Math.max(c,t)}}else{let t=r[1];l=Math.min(l,t),c=Math.max(c,t)}e[h]=l,i[h]=c}var s,a,o;return[[e[0],e[1],e[2]],[i[0],i[1],i[2]]]}setMaterialIndex(){this.setMaterial(Z,Te)}processLine(t){let e=t[0],i=t[1];if(!this.offscreen([e,i])){let t=[0,0,1];this.data.indices.push(this.data.vertex(e,t)),this.data.indices.push(this.data.vertex(i,t)),this.append()}}process(t){if(2==t.length)return this.processLine(t);let e=t[0],i=t[1],n=t[2],r=t[3],s=this.normal(Dt(e,i),Ct(e,i,n)),a=this.normal(Dt(n,r),Ct(r,n,i)),o=this.data.vertex(e,s),h=this.data.vertex(r,a);this.Render(t,o,h),this.data.indices.length>0&&this.append()}append(){Z.append(this.data)}notRendered(){Z.rendered=!1}Render(t,e,i){let n=t[0],r=t[1],s=t[2],a=t[3];if(zt(n,r,s,a)<this.res2)this.offscreen([n,a])||(this.data.indices.push(e),this.data.indices.push(i));else{if(this.offscreen(t))return;let o=[.5*(n[0]+r[0]),.5*(n[1]+r[1]),.5*(n[2]+r[2])],h=[.5*(r[0]+s[0]),.5*(r[1]+s[1]),.5*(r[2]+s[2])],l=[.5*(s[0]+a[0]),.5*(s[1]+a[1]),.5*(s[2]+a[2])],c=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])],d=[.5*(h[0]+l[0]),.5*(h[1]+l[1]),.5*(h[2]+l[2])],m=[.5*(c[0]+d[0]),.5*(c[1]+d[1]),.5*(c[2]+d[2])],f=[n,o,c,m],u=[m,d,l,a],p=this.normal(function(t,e,i,n){return[i[0]+n[0]-t[0]-e[0],i[1]+n[1]-t[1]-e[1],i[2]+n[2]-t[2]-e[2]]}(n,r,s,a),function(t,e,i,n){return[3*t[0]-5*e[0]+i[0]+n[0],3*t[1]-5*e[1]+i[1]+n[1],3*t[2]-5*e[2]+i[2]+n[2]]}(n,r,s,a)),v=this.data.vertex(m,p);this.Render(f,e,v),this.Render(u,v,i)}}normal(t,e){let i=Ut(t,t),n=Ut(t,e);return[i*e[0]-n*t[0],i*e[1]-n*t[1],i*e[2]-n*t[2]]}}class Mt extends ut{constructor(t,e,i){super(),this.controlpoint=t,this.width=e,this.CenterIndex=0,this.MaterialIndex=i,this.Min=t,this.Max=t}setMaterialIndex(){this.setMaterial(K,Re)}process(t){this.data.indices.push(this.data.vertex0(this.controlpoint,this.width)),this.append()}append(){K.append(this.data)}notRendered(){K.rendered=!1}}class bt extends ut{constructor(t,e){super(),this.CenterIndex=t,this.MaterialIndex=e,this.Min=this.Bounds(F,Math.min),this.Max=this.Bounds(F,Math.max),this.controlpoints=F,this.Normals=z,this.Colors=H,this.Indices=X,this.transparent=c[this.MaterialIndex].diffuse[3]<1}Bounds(t,e){let i=Array(3),n=t.length,r=Array(n);for(let s=0;s<3;++s){for(let e=0;e<n;++e)r[e]=t[e][s];i[s]=pt(r,e)}return[i[0],i[1],i[2]]}setMaterialIndex(){this.transparent?this.setMaterial(tt,Ie):this.setMaterial(et,Ee)}process(t){this.data.vertices=new Array(6*t.length),it=this.Colors.length>0?-1-it:1+it;for(let e=0,i=this.Indices.length;e<i;++e){let i=this.Indices[e],n=i[0],r=t[n[0]],s=t[n[1]],a=t[n[2]];if(!this.offscreen([r,s,a])){let t=i.length>1?i[1]:n;if(t&&0!=t.length||(t=n),this.Colors.length>0){let e=i.length>2?i[2]:n;e&&0!=e.length||(e=n);let o=this.Colors[e[0]],h=this.Colors[e[1]],l=this.Colors[e[2]];this.transparent|=o[3]+h[3]+l[3]<765,0==V?(this.data.iVertex(n[0],r,this.Normals[t[0]],o),this.data.iVertex(n[1],s,this.Normals[t[1]],h),this.data.iVertex(n[2],a,this.Normals[t[2]],l)):(this.data.iVertex(n[0],r,this.Normals[t[0]],o),this.data.iVertex(n[1],s,this.Normals[t[1]],h),this.data.iVertex(n[1],s,this.Normals[t[1]],h),this.data.iVertex(n[2],a,this.Normals[t[2]],l),this.data.iVertex(n[2],a,this.Normals[t[2]],l),this.data.iVertex(n[0],r,this.Normals[t[0]],o))}else 0==V?(this.data.iVertex(n[0],r,this.Normals[t[0]]),this.data.iVertex(n[1],s,this.Normals[t[1]]),this.data.iVertex(n[2],a,this.Normals[t[2]])):(this.data.iVertex(n[0],r,this.Normals[t[0]]),this.data.iVertex(n[1],s,this.Normals[t[1]]),this.data.iVertex(n[1],s,this.Normals[t[1]]),this.data.iVertex(n[2],a,this.Normals[t[2]]),this.data.iVertex(n[2],a,this.Normals[t[2]]),this.data.iVertex(n[0],r,this.Normals[t[0]]))}}this.data.nvertices=t.length,this.data.indices.length>0&&this.append()}append(){this.transparent?tt.append(this.data):et.append(this.data)}notRendered(){this.transparent?tt.rendered=!1:et.rendered=!1}}function Rt(){M=-Math.tan(.5*o.angleOfView)*o.maxBound[2],_.x=_.y=0,_.z=.5*(o.minBound[2]+o.maxBound[2]),x=v=o.zoom0,S.zmin=o.minBound[2],S.zmax=o.maxBound[2],P.x=P.y=0,Oe(),U=!0,Ne()}let Tt=0,yt=1,At=2,Et=3,It=4;function Lt(e=[]){let i=lt(t,vertex,t.VERTEX_SHADER,e),n=lt(t,fragment,t.FRAGMENT_SHADER,e),r=t.createProgram();return t.attachShader(r,i),t.attachShader(r,n),t.bindAttribLocation(r,Tt,"position"),t.bindAttribLocation(r,yt,"normal"),t.bindAttribLocation(r,At,"materialIndex"),t.bindAttribLocation(r,Et,"color"),t.bindAttribLocation(r,It,"width"),t.linkProgram(r),t.getProgramParameter(r,t.LINK_STATUS)||alert("Could not initialize shaders"),r}class Nt{constructor(t,e,i,n){this.m0=.5*(t+e);let r=.5*(e+i);this.m2=.5*(i+n),this.m3=.5*(this.m0+r),this.m4=.5*(r+this.m2),this.m5=.5*(this.m3+this.m4)}}class Ot{constructor(t,e,i,n){this.m0=[.5*(t[0]+e[0]),.5*(t[1]+e[1]),.5*(t[2]+e[2])];let r=.5*(e[0]+i[0]),s=.5*(e[1]+i[1]),a=.5*(e[2]+i[2]);this.m2=[.5*(i[0]+n[0]),.5*(i[1]+n[1]),.5*(i[2]+n[2])],this.m3=[.5*(this.m0[0]+r),.5*(this.m0[1]+s),.5*(this.m0[2]+a)],this.m4=[.5*(r+this.m2[0]),.5*(s+this.m2[1]),.5*(a+this.m2[2])],this.m5=[.5*(this.m3[0]+this.m4[0]),.5*(this.m3[1]+this.m4[1]),.5*(this.m3[2]+this.m4[2])]}}class _t{constructor(t){this.l003=t[0];let e=t[1],i=t[2],n=t[3],r=t[4],s=t[5];this.r300=t[6];let a=t[7],o=t[8];this.u030=t[9],this.u021=.5*(this.u030+s),this.u120=.5*(this.u030+o);let h=.5*(s+i),l=.5*(o+r),c=.5*(o+a),d=.5*(i+r);this.l012=.5*(i+this.l003);let m=.5*(r+n);this.r210=.5*(a+this.r300),this.l102=.5*(this.l003+e);let f=.5*(e+n);this.r201=.5*(n+this.r300),this.u012=.5*(this.u021+h),this.u210=.5*(this.u120+c),this.l021=.5*(h+this.l012);let u=.5*l+.25*(r+e);this.r120=.5*(c+this.r210);let p=.5*d+.25*(r+a),v=.25*(s+r)+.5*m;this.l201=.5*(this.l102+f),this.r102=.5*(f+this.r201),this.l210=.5*(p+this.l201),this.r012=.5*(p+this.r102),this.l300=.5*(this.l201+this.r102),this.r021=.5*(v+this.r120),this.u201=.5*(this.u210+v),this.r030=.5*(this.u210+this.r120),this.u102=.5*(this.u012+u),this.l120=.5*(this.l021+u),this.l030=.5*(this.u012+this.l021),this.l111=.5*(d+this.l102),this.r111=.5*(m+this.r210),this.u111=.5*(this.u021+l),this.c111=.25*(h+c+f+r)}}function Pt(t){let e=1/(Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])||1);return[t[0]*e,t[1]*e,t[2]*e]}function St(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function Ut(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Vt(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function Bt(t,e,i,n,r){let s=1-r,a=s*s;return a*s*t+r*(3*(a*e+r*s*i)+r*r*n)}function Dt(t,e){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function Ct(t,e,i){return[3*(t[0]+i[0])-6*e[0],3*(t[1]+i[1])-6*e[1],3*(t[2]+i[2])-6*e[2]]}function Ft(t,e,i,n){return[n[0]-t[0]+3*(e[0]-i[0]),n[1]-t[1]+3*(e[1]-i[1]),n[2]-t[2]+3*(e[2]-i[2])]}function zt(t,e,i,n){let r=[1/3*(n[0]-t[0]),1/3*(n[1]-t[1]),1/3*(n[2]-t[2])];return Math.max(St([e[0]-r[0]-t[0],e[1]-r[1]-t[1],e[2]-r[2]-t[2]]),St([n[0]-r[0]-i[0],n[1]-r[1]-i[1],n[2]-r[2]-i[2]]))}function Ht(t,e,i,n){let r=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],s=[n[0]-i[0],n[1]-i[1],n[2]-i[2]];return Math.max(St(Vt(r,Pt(s))),St(Vt(s,Pt(r))))/9}function Xt(t){return[Math.min(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.min(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.min(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function Gt(t){return[Math.max(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.max(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.max(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function Wt(t){ae||oe(),B=!0,D=t.clientX,C=t.clientY}let jt,kt,Yt=!1;function $t(t){return Math.hypot(t[0].pageX-t[1].pageX,t[0].pageY-t[1].pageY)}function qt(t){t.preventDefault(),ae||oe();let e=t.targetTouches;ue=pe=Yt=!1,fe||(1!=e.length||B||(kt=(new Date).getTime(),touchId=e[0].identifier,D=e[0].pageX,C=e[0].pageY),2!=e.length||B||(touchId=e[0].identifier,jt=$t(e),Yt=!0))}function Kt(t){B=!1}function Zt(t,e,i,n,r){if(t==i&&e==n)return;let[s,a]=function(t,e){let i=ne(t),n=ne(e),r=Ut(i,n);return[r>1?0:r<-1?f:Math.acos(r),Pt(Vt(i,n))]}([t,-e],[i,-n]);mat4.fromRotation(O,2*r*R*s/v,a),mat4.multiply(T,O,T)}function Qt(t,e,i,n){let r=1/v;P.x+=(i-t)*r*s,P.y-=(n-e)*r*a}function Jt(t,e,i,n){o.orthographic?Qt(t,e,i,n):(_.x+=(i-t)*(S.xmax-S.xmin),_.y-=(n-e)*(S.ymax-S.ymin))}function te(){var t,e;t=A,e=T,mat4.fromTranslation(O,[_.x,_.y,_.z]),mat4.invert(N,O),mat4.multiply(t,e,N),mat4.multiply(t,O,t),mat4.translate(A,A,[_.x,_.y,0]),mat3.fromMat4(L,A),mat3.invert(I,L),mat4.multiply(E,y,A)}function ee(){let t=Math.sqrt(Number.MAX_VALUE),e=1/t;v<=e&&(v=e),v>=t&&(v=t),(1.5*v<x||v>1.5*x)&&(U=!0,x=v)}function ie(t){let e=o.zoomStep*a*t;const i=Math.log(.1*Number.MAX_VALUE)/Math.log(o.zoomFactor);Math.abs(e)<i&&(v*=o.zoomFactor**e,ee())}function ne(t){let e=t[0],i=t[1],n=Math.hypot(e,i);return n>1&&(denom=1/n,e*=denom,i*=denom),[e,i,Math.sqrt(Math.max(1-i*i-e*e,0))]}function re(t,e,i,n){ie(e-n)}function se(t,e,i,n=1){let r;switch(i){case 1:r=Zt;break;case 2:r=Qt;break;case 3:r=re;break;case 4:r=Jt;break;default:r=(t,e,i,n)=>{}}r((D-s)/s,(C-a)/a,(t-s)/s,(e-a)/a,n),D=t,C=e,Oe(),Ne()}let ae=0;function oe(){ae=1,o.canvas.addEventListener("wheel",de,!1)}function he(){let t,e,i;[t,e,i]=function(){let t=Array(3),e=Array(3),i=Array(3),n=_.x,r=_.y,s=.5*(S.zmin+S.zmax);for(let a=0;a<3;++a){let h=0,l=0,c=0,d=4*a;for(let t=0;t<4;++t){let e=4*t,i=T[e],a=T[e+1],m=T[e+2],f=T[e+3],u=o.Transform[d+t];h+=u*(f-n*i-r*a-s*m),c+=u*a,l+=u*(f-n*i-r*a)}t[a]=h,e[a]=c,i[a]=l}return[t,e,i]}();let n=o.orthographic?" orthographic(":" perspective(",r="".padStart(n.length),s="currentprojection=\n"+n+"camera=("+t+"),\n"+r+"up=("+e+"),\n"+r+"target=("+i+"),\n"+r+"zoom="+v*o.initialZoom/o.zoom0;return o.orthographic||(s+=",\n"+r+"angle="+2*Math.atan(Math.tan(.5*o.angleOfView)/v)/u),0==g&&0==w||(s+=",\n"+r+"viewportshift=("+g+","+w+")"),o.orthographic||(s+=",\n"+r+"autoadjust=false"),s+=");\n",window.parent.asyProjection=!0,s}function le(t){if(ae||oe(),o.embedded&&ae&&27==t.keyCode)return ae=0,void o.canvas.removeEventListener("wheel",de,!1);let e=[];switch(t.key){case"x":e=[1,0,0];break;case"y":e=[0,1,0];break;case"z":e=[0,0,1];break;case"h":mat4.identity(T),Rt(),window.top.asyWebApplication&&window.top.asyWebApplication.setProjection(""),window.parent.asyProjection=!1;break;case"m":++V,3==V&&(V=0),2!=V&&(o.embedded||st(),rt(o.ibl)),U=!0,Ne();break;case"+":case"=":case">":v*=o.zoomFactor,ce();break;case"-":case"_":case"<":v/=o.zoomFactor,ce();break;case"c":window.top.asyWebApplication||prompt("Ctrl+c Enter to copy currentprojection to clipboard; then append to asy file:",he())}e.length>0&&(mat4.rotate(T,T,.1,e),te(),Ne())}function ce(){ee(),Oe(),Ne()}function de(t){t.preventDefault(),t.deltaY<0?v*=o.zoomFactor:v/=o.zoomFactor,ce()}function me(t){if(!B)return;let e,i=t.clientX,n=t.clientY;e=t.getModifierState("Control")?2:t.getModifierState("Shift")?3:t.getModifierState("Alt")?4:1,se(i,n,e)}let fe=!1,ue=!1,pe=!1;function ve(t){if(t.preventDefault(),fe)return;let e=t.targetTouches;if(!Yt&&1==e.length&&touchId==e[0].identifier){let t=e[0].pageX,i=e[0].pageY,n=t-D,r=i-C,s=n*n+r*r<=o.shiftHoldDistance*o.shiftHoldDistance;if(s&&!ue&&!pe&&(new Date).getTime()-kt>o.shiftWaitTime&&(navigator.vibrate&&window.navigator.vibrate(o.vibrateTime),ue=!0),ue)se(t,i,2);else if(!s){pe=!0,se(e[0].pageX,e[0].pageY,1,.5)}}if(Yt&&!ue&&2==e.length&&touchId==e[0].identifier){let t=$t(e),i=t-jt;fe=!0,i*=o.zoomPinchFactor,i>o.zoomPinchCap&&(i=o.zoomPinchCap),i<-o.zoomPinchCap&&(i=-o.zoomPinchCap),ie(i/b),jt=t,ue=pe=fe=!1,Oe(),Ne()}}let xe,ge,we,Me,be=[];function Re(){dt(K,xe),K.clear()}function Te(){dt(Z,ge),Z.clear()}function ye(){dt(Q,ge),Q.clear()}function Ae(){dt(J,we),J.clear()}function Ee(){dt(et,Me),et.rendered=!1,et.clear()}function Ie(){let e=tt.indices;if(V>0)return dt(tt,Me,e),void tt.clear();if(e.length>0){!function(t){let e=A[2],i=A[6],n=A[10];be.length=t.length;for(let r=0;r<t.length;++r){let s=6*r;be[r]=e*t[s]+i*t[s+1]+n*t[s+2]}}(tt.vertices);let i=e.length/3,n=Array(i).fill().map((t,e)=>e);n.sort((function(t,i){let n=3*t;Ia=e[n],Ib=e[n+1],Ic=e[n+2];let r=3*i;return IA=e[r],IB=e[r+1],IC=e[r+2],be[Ia]+be[Ib]+be[Ic]<be[IA]+be[IB]+be[IC]?-1:1}));let r=Array(e.length);for(let t=0;t<i;++t){let i=3*n[t];r[3*t]=e[i],r[3*t+1]=e[i+1],r[3*t+2]=e[i+2]}t.depthMask(!1),dt(tt,Me,r),tt.rendered=!1,t.depthMask(!0)}tt.clear()}function Le(){Re(),Te(),ye(),Ae(),Ee(),Ie(),requestAnimationFrame(Le)}function Ne(){o.embedded&&(i.width=o.canvasWidth,i.height=o.canvasHeight,_e()),t.clearColor(o.background[0],o.background[1],o.background[2],o.background[3]),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT);for(const t of h)t.render();Le(),o.embedded&&(n.clearRect(0,0,o.canvasWidth,o.canvasHeight),n.drawImage(i,0,0)),0==V&&(U=!1)}function Oe(){!function(t,e,i,n){let r=t/e;g=(i/t+o.viewportShift[0])*v,w=(n/e+o.viewportShift[1])*v;let s=1/v;if(o.orthographic){let t=o.maxBound[0]-o.minBound[0],e=o.maxBound[1]-o.minBound[1];if(t<e*r){let t=.5*e*r*s,i=2*t*g,n=e*s*w;S.xmin=-t-i,S.xmax=t-i,S.ymin=o.minBound[1]*s-n,S.ymax=o.maxBound[1]*s-n}else{let e=.5*t*s/r,i=t*s*g,n=2*e*w;S.xmin=o.minBound[0]*s-i,S.xmax=o.maxBound[0]*s-i,S.ymin=-e-n,S.ymax=e-n}}else{let t=M*s,e=t*r,i=2*e*g,n=2*t*w;S.xmin=-e-i,S.xmax=e-i,S.ymin=-t-n,S.ymax=t-n}}(o.canvasWidth,o.canvasHeight,P.x,P.y),(o.orthographic?mat4.ortho:mat4.frustum)(y,S.xmin,S.xmax,S.ymin,S.ymax,-S.zmax,-S.zmin),te(),window.top.asyWebApplication&&window.top.asyWebApplication.setProjection(he())}function _e(){t.viewportWidth=o.canvasWidth,t.viewportHeight=o.canvasHeight,t.viewport(.5*(o.canvas.width-o.canvasWidth),.5*(o.canvas.height-o.canvasHeight),o.canvasWidth,o.canvasHeight),t.scissor(0,0,o.canvas.width,o.canvas.height)}function Pe(t,e){t>void 0&&(t=void 0),e>void 0&&(e=void 0),P.x*=t/o.canvasWidth,P.y*=e/o.canvasHeight,o.canvasWidth=t,o.canvasHeight=e,o.embedded&&(o.canvas.width=i.width=o.canvasWidth,o.canvas.height=i.height=o.canvasHeight),b=Math.hypot(o.canvasWidth,o.canvasHeight),s=.5*o.canvas.width,a=.5*o.canvas.height,R=1+8*Math.hypot(o.viewportMargin[0],o.viewportMargin[1])/b,_e(),Oe(),U=!0}function Se(){if(o.zoom0=o.initialZoom,window.top.asyWebApplication&&""==window.top.asyWebApplication.getProjection()&&(window.parent.asyProjection=!1),o.absolute&&!o.embedded)o.canvasWidth=o.canvasWith0*window.devicePixelRatio,o.canvasHeight=o.canvasHeight0*window.devicePixelRatio;else{let t=o.canvasWith0/o.canvasHeight0;o.canvasWidth=Math.max(window.innerWidth-10,10),o.canvasHeight=Math.max(window.innerHeight-10,10),!o.orthographic&&!window.parent.asyProjection&&o.canvasWidth<o.canvasHeight*t&&(o.zoom0*=o.canvasWidth/(o.canvasHeight*t))}o.canvas.width=o.canvasWidth,o.canvas.height=o.canvasHeight;window.innerWidth,window.innerHeight;let t=1/o.zoom0;o.viewportShift[0]*=t,o.viewportShift[1]*=t,Pe(o.canvasWidth,o.canvasHeight),Rt()}class Ue{constructor(t,e){if(this.center=t,e){let t=e[0],i=e[1];this.ct=Math.cos(t),this.st=Math.sin(t),this.cp=Math.cos(i),this.sp=Math.sin(i)}}T0(t){return[t[0]+this.center[0],t[1]+this.center[1],t[2]+this.center[2]]}T(t){let e=t[0],i=t[1],n=t[2],r=e*this.ct+n*this.st;return[r*this.cp-i*this.sp+this.center[0],r*this.sp+i*this.cp+this.center[1],-e*this.st+n*this.ct+this.center[2]]}}function Ve(t,e,i){let n=[t(e),t([e[0],e[1],i[2]]),t([e[0],i[1],e[2]]),t([e[0],i[1],i[2]]),t([i[0],e[1],e[2]]),t([i[0],e[1],i[2]]),t([i[0],i[1],e[2]]),t(i)];return[Xt(n),Gt(n)]}let Be=4/3*(Math.sqrt(2)-1);async function De(t){return(await fetch(t)).arrayBuffer()}function Ce(t){return t.getBytes().filter((t,e)=>e%4!=3)}function Fe(e,i,n=t.RGB16F){let r=e.width(),s=e.height(),a=t.createTexture();return t.activeTexture(t.TEXTURE0+i),t.bindTexture(t.TEXTURE_2D,a),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,n,r,s,0,t.RGB,t.FLOAT,Ce(e)),a}window.webGLStart=function(){o.canvas=document.getElementById("Asymptote"),o.embedded=window.top.document!=document,ht(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.enable(t.DEPTH_TEST),t.enable(t.SCISSOR_TEST),o.canvas.onmousedown=Wt,document.onmouseup=Kt,document.onmousemove=me,o.canvas.onkeydown=le,o.embedded||oe(),o.canvas.addEventListener("touchstart",qt,!1),o.canvas.addEventListener("touchend",Kt,!1),o.canvas.addEventListener("touchcancel",Kt,!1),o.canvas.addEventListener("touchleave",Kt,!1),o.canvas.addEventListener("touchmove",ve,!1),document.addEventListener("keydown",le,!1),o.canvasWith0=o.canvasWidth,o.canvasHeight0=o.canvasHeight,mat4.identity(T),0!=window.innerWidth&&0!=window.innerHeight&&Se(),window.addEventListener("resize",Se,!1),o.ibl&&async function(){let e=o.imageURL+o.image+"/";function i(t){return new Promise(e=>setTimeout(e,t))}for(;!Module.EXRLoader;)await i(0);promises=[De(o.imageURL+"refl.exr").then(t=>{let e=new Module.EXRLoader(t);j=Fe(e,0)}),De(e+"diffuse.exr").then(t=>{let e=new Module.EXRLoader(t);W=Fe(e,1)})],refl_promise=[],refl_promise.push(De(e+"refl0.exr"));for(let t=1;t<=8;++t)refl_promise.push(De(e+"refl"+t+"w.exr"));finished_promise=Promise.all(refl_promise).then(e=>{let i=t.createTexture();t.activeTexture(t.TEXTURE0+2),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.bindTexture(t.TEXTURE_2D,i),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAX_LEVEL,e.length-1),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameterf(t.TEXTURE_2D,t.TEXTURE_MIN_LOD,0),t.texParameterf(t.TEXTURE_2D,t.TEXTURE_MAX_LOD,8);for(let i=0;i<e.length;++i){let n=new Module.EXRLoader(e[i]);t.texImage2D(t.TEXTURE_2D,i,t.RGB16F,n.width(),n.height(),0,t.RGB,t.FLOAT,Ce(n))}G=i}),promises.push(finished_promise),await Promise.all(promises)}().then(k).then(Rt)},window.light=function(t,e){l.push(new nt(t,e))},window.material=function(t,e,i,n,r,s){c.push(new Y(t,e,i,n,r,s))},window.patch=function(t,e,i,n){h.push(new vt(t,e,i,n))},window.curve=function(t,e,i){h.push(new wt(t,e,i))},window.pixel=function(t,e,i){h.push(new Mt(t,e,i))},window.triangles=function(t,e){h.push(new bt(t,e)),window.Positions=F=[],window.Normals=z=[],window.Colors=H=[],window.Indices=X=[]},window.sphere=function(t,e,i,n,r){let s,a,o,l,c,d,m=.524670512339254,f=.595936986722291,u=.954967051233925,p=.0820155480083437,v=.996685028842544,x=.0549670512339254,g=.998880711874577,w=.0405017186586849,M=[[[1,0,0],[1,0,m],[f,0,u],[p,0,v],[1,Be,0],[1,Be,m],[f,Be*f,u],[p,Be*p,v],[Be,1,0],[Be,1,m],[Be*f,f,u],[Be*p,p,v],[0,1,0],[0,1,m],[0,f,u],[0,p,v]],[[p,0,v],[p,Be*p,v],[x,0,g],[Be*p,p,v],[w,w,1],[.05*Be,0,1],[0,p,v],[0,x,g],[0,.05*Be,1],[0,0,1]]],b=new Ue(t,r);function R(t){let e=Array(t.length);for(let i=0;i<t.length;++i){let n=t[i];e[i]=c([s*n[0],a*n[1],o*n[2]])}return e}r?(l=1,d=0,c=b.T.bind(b)):(l=-1,d=-e,c=b.T0.bind(b));let T=Ve(c,[-e,-e,d],[e,e,e]),y=T[0],A=T[1];for(let t=-1;t<=1;t+=2){s=t*e;for(let t=-1;t<=1;t+=2){a=t*e;for(let t=l;t<=1;t+=2){o=t*e;for(let t=0;t<2;++t)h.push(new vt(R(M[t]),i,n,null,y,A))}}}},window.disk=function(t,e,i,n,r){let s=1-2*Be/3,a=[[1,0,0],[1,-Be,0],[Be,-1,0],[0,-1,0],[1,Be,0],[s,0,0],[0,-s,0],[-Be,-1,0],[Be,1,0],[0,s,0],[-s,0,0],[-1,-Be,0],[0,1,0],[-Be,1,0],[-1,Be,0],[-1,0,0]],o=new Ue(t,r),l=Ve(o.T.bind(o),[-e,-e,0],[e,e,0]);h.push(new vt(function(t){let i=Array(t.length);for(let n=0;n<t.length;++n){let r=t[n];i[n]=o.T([e*r[0],e*r[1],0])}return i}(a),i,n,null,l[0],l[1]))},window.cylinder=function(t,e,i,n,r,s,a){let o,l,c=[[1,0,0],[1,0,1/3],[1,0,2/3],[1,0,1],[1,Be,0],[1,Be,1/3],[1,Be,2/3],[1,Be,1],[Be,1,0],[Be,1,1/3],[Be,1,2/3],[Be,1,1],[0,1,0],[0,1,1/3],[0,1,2/3],[0,1,1]],d=new Ue(t,s);function m(t){let e=Array(t.length);for(let n=0;n<t.length;++n){let r=t[n];e[n]=d.T([o*r[0],l*r[1],i*r[2]])}return e}let f=Ve(d.T.bind(d),[-e,-e,0],[e,e,i]),u=f[0],p=f[1];for(let t=-1;t<=1;t+=2){o=t*e;for(let t=-1;t<=1;t+=2)l=t*e,h.push(new vt(m(c),n,r,null,u,p))}if(a){let e=d.T([0,0,i]);h.push(new wt([t,e],n,r,t,e))}},window.tube=function(t,e,i,n,r){let s=function(t,e,i,n,r){class s{constructor(t,e,i){this.p=t,this.r=e,this.t=i,this.s=Vt(i,e)}}let a=Number.EPSILON*Math.max(St(t),St(e),St(i),St(n));function o(r){if(1==r){let r=[n[0]-i[0],n[1]-i[1],n[2]-i[2]];return St(r)>a?Pt(r):(r=[2*i[0]-e[0]-n[0],2*i[1]-e[1]-n[1],2*i[2]-e[2]-n[2]],St(r)>a?Pt(r):[n[0]-t[0]+3*(e[0]-i[0]),n[1]-t[1]+3*(e[1]-i[1]),n[2]-t[2]+3*(e[2]-i[2])])}let s=[n[0]-t[0]+3*(e[0]-i[0]),n[1]-t[1]+3*(e[1]-i[1]),n[2]-t[2]+3*(e[2]-i[2])],o=[2*(t[0]+i[0])-4*e[0],2*(t[1]+i[1])-4*e[1],2*(t[2]+i[2])-4*e[2]],h=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],l=r*r,c=[s[0]*l+o[0]*r+h[0],s[1]*l+o[1]*r+h[1],s[2]*l+o[2]*r+h[2]];return St(c)>a?Pt(c):(l=2*r,c=[s[0]*l+o[0],s[1]*l+o[1],s[2]*l+o[2]],St(c)>a?Pt(c):Pt(s))}let h=Array(r.length),l=[e[0]-t[0],e[1]-t[1],e[2]-t[2]];St(l)<a&&(l=[t[0]-2*e[0]+i[0],t[1]-2*e[1]+i[1],t[2]-2*e[2]+i[2]],St(l)<a&&(l=[n[0]-t[0]+3*(e[0]-i[0]),n[1]-t[1]+3*(e[1]-i[1]),n[2]-t[2]+3*(e[2]-i[2])])),l=Pt(l);let c=function(t){let e=Vt(t,[0,1,0]),i=Number.EPSILON*St(t);return St(e)>i?Pt(e):(e=Vt(t,[0,0,1]),St(e)>i?Pt(e):[1,0,0])}(l);h[0]=new s(t,c,l);for(let a=1;a<r.length;++a){let l=h[a-1],c=r[a],d=1-c,m=d*d,f=m*d,u=3*c;m*=u,d*=u*c;let p=c*c*c,v=[f*t[0]+m*e[0]+d*i[0]+p*n[0],f*t[1]+m*e[1]+d*i[1]+p*n[1],f*t[2]+m*e[2]+d*i[2]+p*n[2]],x=[v[0]-l.p[0],v[1]-l.p[1],v[2]-l.p[2]];if(0!=x[0]||0!=x[1]||0!=x[2]){let t=l.r,e=Pt(x),i=l.t,n=Ut(e,i),r=[i[0]-2*n*e[0],i[1]-2*n*e[1],i[2]-2*n*e[2]];i=o(c);let d=2*Ut(e,t),m=[t[0]-d*e[0],t[1]-d*e[1],t[2]-d*e[2]],f=Pt([i[0]-r[0],i[1]-r[1],i[2]-r[2]]),u=2*Ut(f,m);m=[m[0]-u*f[0],m[1]-u*f[1],m[2]-u*f[2]],h[a]=new s(v,Pt(m),Pt(i))}else h[a]=h[a-1]}return h}(t[0],t[1],t[2],t[3],[0,1/3,2/3,1]),a=Be*e,o=[[e,0],[e,a],[a,e],[0,e]];function l(e,r,a,l){let c=Array(16);for(let i=0;i<4;++i){let n=s[i],h=n.r[0],d=n.s[0],m=h*e+d*r,f=h*a+d*l;h=n.r[1],d=n.s[1];let u=h*e+d*r,p=h*a+d*l;h=n.r[2],d=n.s[2];let v=h*e+d*r,x=h*a+d*l,g=t[i],w=g[0];w1=g[1],w2=g[2];for(let t=0;t<4;++t){let e=o[t],n=e[0],r=e[1];c[4*i+t]=[m*n+f*r+w,u*n+p*r+w1,v*n+x*r+w2]}}h.push(new vt(c,i,n))}l(1,0,0,1),l(0,-1,1,0),l(-1,0,0,-1),l(0,1,-1,0),r&&h.push(new wt(t,i,n))},window.Positions=F,window.Normals=z,window.Colors=H,window.Indices=X}(); +let vertex="\n#ifdef WEBGL2\n#define IN in\n#define OUT out\n#else\n#define IN attribute\n#define OUT varying\n#endif\n\nIN vec3 position;\n#ifdef WIDTH\nIN float width;\n#endif\n#ifdef NORMAL\nIN vec3 normal;\n#endif\n\nIN float materialIndex;\n\n#ifdef WEBGL2\nflat out int MaterialIndex;\n#ifdef COLOR\nOUT vec4 Color;\n#endif\n\n#else\nOUT vec4 diffuse;\nOUT vec3 specular;\nOUT float roughness,metallic,fresnel0;\nOUT vec4 emissive;\n\nstruct Material {\n vec4 diffuse,emissive,specular;\n vec4 parameters;\n};\n\nuniform Material Materials[Nmaterials];\n#endif\n\n#ifdef COLOR\nIN vec4 color;\n#endif\n\nuniform mat3 normMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\n\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nOUT vec3 ViewPosition;\n#endif\nOUT vec3 Normal;\n#endif\n\nvoid main(void)\n{\n vec4 v=vec4(position,1.0);\n gl_Position=projViewMat*v;\n\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\n ViewPosition=(viewMat*v).xyz;\n#endif\n Normal=normalize(normal*normMat);\n#endif\n\n#ifdef WEBGL2\n MaterialIndex=int(materialIndex);\n#ifdef COLOR\n Color=color;\n#endif\n#else\n#ifdef NORMAL\n Material m;\n#ifdef TRANSPARENT\n m=Materials[int(abs(materialIndex))-1];\n emissive=m.emissive;\n if(materialIndex >= 0.0)\n diffuse=m.diffuse;\n else {\n diffuse=color;\n#if nlights == 0\n emissive += color;\n#endif\n }\n#else\n m=Materials[int(materialIndex)];\n emissive=m.emissive;\n#ifdef COLOR\n diffuse=color;\n#if nlights == 0\n emissive += color;\n#endif\n#else\n diffuse=m.diffuse;\n#endif // COLOR\n#endif // TRANSPARENT\n specular=m.specular.rgb;\n vec4 parameters=m.parameters;\n roughness=1.0-parameters[0];\n metallic=parameters[1];\n fresnel0=parameters[2];\n#else\n emissive=Materials[int(materialIndex)].emissive;\n#endif // NORMAL\n#endif // WEBGL2\n\n#ifdef WIDTH\n gl_PointSize=width;\n#endif\n}\n",fragment="\n#ifdef WEBGL2\n#define IN in\nout vec4 outValue;\n#define OUTVALUE outValue\n#else\n#define IN varying\n#define OUTVALUE gl_FragColor\n#endif\n\n#ifdef WEBGL2\nflat in int MaterialIndex;\n\nstruct Material {\n vec4 diffuse,emissive,specular;\n vec4 parameters;\n};\n\nuniform Material Materials[Nmaterials];\n\nvec4 diffuse;\nvec3 specular;\nfloat roughness,metallic,fresnel0;\nvec4 emissive;\n\n#ifdef COLOR\nin vec4 Color;\n#endif\n\n#else\nIN vec4 diffuse;\nIN vec3 specular;\nIN float roughness,metallic,fresnel0;\nIN vec4 emissive;\n#endif\n\n#ifdef NORMAL\n\n#ifndef ORTHOGRAPHIC\nIN vec3 ViewPosition;\n#endif\nIN vec3 Normal;\n\nvec3 normal;\n\nstruct Light {\n vec3 direction;\n vec3 color;\n};\n\nuniform Light Lights[Nlights];\n\n#ifdef USE_IBL\nuniform sampler2D reflBRDFSampler;\nuniform sampler2D diffuseSampler;\nuniform sampler2D reflImgSampler;\n\nconst float pi=acos(-1.0);\nconst float piInv=1.0/pi;\nconst float twopi=2.0*pi;\nconst float twopiInv=1.0/twopi;\n\n// (x,y,z) -> (r,theta,phi);\n// theta -> [0,pi]: colatitude\n// phi -> [-pi,pi]: longitude\nvec3 cart2sphere(vec3 cart)\n{\n float x=cart.x;\n float y=cart.z;\n float z=cart.y;\n\n float r=length(cart);\n float theta=r > 0.0 ? acos(z/r) : 0.0;\n float phi=atan(y,x);\n\n return vec3(r,theta,phi);\n}\n\nvec2 normalizedAngle(vec3 cartVec)\n{\n vec3 sphericalVec=cart2sphere(cartVec);\n sphericalVec.y=sphericalVec.y*piInv;\n sphericalVec.z=0.75-sphericalVec.z*twopiInv;\n return sphericalVec.zy;\n}\n\nvec3 IBLColor(vec3 viewDir)\n{\n vec3 IBLDiffuse=diffuse.rgb*texture(diffuseSampler,normalizedAngle(normal)).rgb;\n vec3 reflectVec=normalize(reflect(-viewDir,normal));\n vec2 reflCoord=normalizedAngle(reflectVec);\n vec3 IBLRefl=textureLod(reflImgSampler,reflCoord,roughness*ROUGHNESS_STEP_COUNT).rgb;\n vec2 IBLbrdf=texture(reflBRDFSampler,vec2(dot(normal,viewDir),roughness)).rg;\n float specularMultiplier=fresnel0*IBLbrdf.x+IBLbrdf.y;\n vec3 dielectric=IBLDiffuse+specularMultiplier*IBLRefl;\n vec3 metal=diffuse.rgb*IBLRefl;\n return mix(dielectric,metal,metallic);\n}\n#else\nfloat Roughness2;\nfloat NDF_TRG(vec3 h)\n{\n float ndoth=max(dot(normal,h),0.0);\n float alpha2=Roughness2*Roughness2;\n float denom=ndoth*ndoth*(alpha2-1.0)+1.0;\n return denom != 0.0 ? alpha2/(denom*denom) : 0.0;\n}\n\nfloat GGX_Geom(vec3 v)\n{\n float ndotv=max(dot(v,normal),0.0);\n float ap=1.0+Roughness2;\n float k=0.125*ap*ap;\n return ndotv/((ndotv*(1.0-k))+k);\n}\n\nfloat Geom(vec3 v, vec3 l)\n{\n return GGX_Geom(v)*GGX_Geom(l);\n}\n\nfloat Fresnel(vec3 h, vec3 v, float fresnel0)\n{\n float a=1.0-max(dot(h,v),0.0);\n float b=a*a;\n return fresnel0+(1.0-fresnel0)*b*b*a;\n}\n\n// physical based shading using UE4 model.\nvec3 BRDF(vec3 viewDirection, vec3 lightDirection)\n{\n vec3 lambertian=diffuse.rgb;\n vec3 h=normalize(lightDirection+viewDirection);\n\n float omegain=max(dot(viewDirection,normal),0.0);\n float omegaln=max(dot(lightDirection,normal),0.0);\n\n float D=NDF_TRG(h);\n float G=Geom(viewDirection,lightDirection);\n float F=Fresnel(h,viewDirection,fresnel0);\n\n float denom=4.0*omegain*omegaln;\n float rawReflectance=denom > 0.0 ? (D*G)/denom : 0.0;\n\n vec3 dielectric=mix(lambertian,rawReflectance*specular,F);\n vec3 metal=rawReflectance*diffuse.rgb;\n\n return mix(dielectric,metal,metallic);\n}\n#endif\n\n#endif\n\nvoid main(void)\n{\n#ifdef WEBGL2\n#ifdef NORMAL\n Material m;\n#ifdef TRANSPARENT\n m=Materials[abs(MaterialIndex)-1];\n emissive=m.emissive;\n if(MaterialIndex >= 0)\n diffuse=m.diffuse;\n else {\n diffuse=Color;\n#if nlights == 0\n emissive += Color;\n#endif\n }\n#else\n m=Materials[MaterialIndex];\n emissive=m.emissive;\n#ifdef COLOR\n diffuse=Color;\n#if nlights == 0\n emissive += Color;\n#endif\n#else\n diffuse=m.diffuse;\n#endif // COLOR\n#endif // TRANSPARENT\n specular=m.specular.rgb;\n vec4 parameters=m.parameters;\n roughness=1.0-parameters[0];\n metallic=parameters[1];\n fresnel0=parameters[2];\n#else\n emissive=Materials[MaterialIndex].emissive;\n#endif // NORMAL\n#endif // WEBGL2\n\n#if defined(NORMAL) && nlights > 0\n normal=normalize(Normal);\n normal=gl_FrontFacing ? normal : -normal;\n#ifdef ORTHOGRAPHIC\n vec3 viewDir=vec3(0.0,0.0,1.0);\n#else\n vec3 viewDir=-normalize(ViewPosition);\n#endif\n\nvec3 color;\n#ifdef USE_IBL\n color=IBLColor(viewDir);\n#else\n Roughness2=roughness*roughness;\n color=emissive.rgb;\n for(int i=0; i < nlights; ++i) {\n Light Li=Lights[i];\n vec3 L=Li.direction;\n float cosTheta=max(dot(normal,L),0.0);\n vec3 radiance=cosTheta*Li.color;\n color += BRDF(viewDir,L)*radiance;\n }\n#endif\n OUTVALUE=vec4(color,diffuse.a);\n#else\n OUTVALUE=emissive;\n#endif\n}\n";!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var n in i)("object"==typeof exports?exports:t)[n]=i[n]}}("undefined"!=typeof self?self:this,(function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setMatrixArrayType=function(t){e.ARRAY_TYPE=t},e.toRadian=function(t){return t*r},e.equals=function(t,e){return Math.abs(t-e)<=n*Math.max(1,Math.abs(t),Math.abs(e))};var n=e.EPSILON=1e-6;e.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,e.RANDOM=Math.random;var r=Math.PI/180},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mat4=e.mat3=void 0;var n=s(i(2)),r=s(i(3));function s(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}e.mat3=n,e.mat4=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new n.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},e.invert=function(t,e){var i=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],h=e[6],l=e[7],c=e[8],d=c*a-o*l,m=-c*s+o*h,f=l*s-a*h,u=i*d+n*m+r*f;if(!u)return null;return u=1/u,t[0]=d*u,t[1]=(-c*n+r*l)*u,t[2]=(o*n-r*a)*u,t[3]=m*u,t[4]=(c*i-r*h)*u,t[5]=(-o*i+r*s)*u,t[6]=f*u,t[7]=(-l*i+n*h)*u,t[8]=(a*i-n*s)*u,t};var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0))},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new n.ARRAY_TYPE(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.invert=function(t,e){var i=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],h=e[6],l=e[7],c=e[8],d=e[9],m=e[10],f=e[11],u=e[12],p=e[13],v=e[14],x=e[15],g=i*o-n*a,w=i*h-r*a,M=i*l-s*a,b=n*h-r*o,R=n*l-s*o,T=r*l-s*h,y=c*p-d*u,A=c*v-m*u,E=c*x-f*u,I=d*v-m*p,L=d*x-f*p,N=m*x-f*v,O=g*N-w*L+M*I+b*E-R*A+T*y;if(!O)return null;return O=1/O,t[0]=(o*N-h*L+l*I)*O,t[1]=(r*L-n*N-s*I)*O,t[2]=(p*T-v*R+x*b)*O,t[3]=(m*R-d*T-f*b)*O,t[4]=(h*E-a*N-l*A)*O,t[5]=(i*N-r*E+s*A)*O,t[6]=(v*M-u*T-x*w)*O,t[7]=(c*T-m*M+f*w)*O,t[8]=(a*L-o*E+l*y)*O,t[9]=(n*E-i*L-s*y)*O,t[10]=(u*R-p*M+x*g)*O,t[11]=(d*M-c*R-f*g)*O,t[12]=(o*A-a*I-h*y)*O,t[13]=(i*I-n*A+r*y)*O,t[14]=(p*w-u*b-v*g)*O,t[15]=(c*b-d*w+m*g)*O,t},e.multiply=r,e.translate=function(t,e,i){var n=i[0],r=i[1],s=i[2],a=void 0,o=void 0,h=void 0,l=void 0,c=void 0,d=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,x=void 0;e===t?(t[12]=e[0]*n+e[4]*r+e[8]*s+e[12],t[13]=e[1]*n+e[5]*r+e[9]*s+e[13],t[14]=e[2]*n+e[6]*r+e[10]*s+e[14],t[15]=e[3]*n+e[7]*r+e[11]*s+e[15]):(a=e[0],o=e[1],h=e[2],l=e[3],c=e[4],d=e[5],m=e[6],f=e[7],u=e[8],p=e[9],v=e[10],x=e[11],t[0]=a,t[1]=o,t[2]=h,t[3]=l,t[4]=c,t[5]=d,t[6]=m,t[7]=f,t[8]=u,t[9]=p,t[10]=v,t[11]=x,t[12]=a*n+c*r+u*s+e[12],t[13]=o*n+d*r+p*s+e[13],t[14]=h*n+m*r+v*s+e[14],t[15]=l*n+f*r+x*s+e[15]);return t},e.rotate=function(t,e,i,r){var s,a,o,h,l,c,d,m,f,u,p,v,x,g,w,M,b,R,T,y,A,E,I,L,N=r[0],O=r[1],_=r[2],P=Math.sqrt(N*N+O*O+_*_);if(Math.abs(P)<n.EPSILON)return null;N*=P=1/P,O*=P,_*=P,s=Math.sin(i),a=Math.cos(i),o=1-a,h=e[0],l=e[1],c=e[2],d=e[3],m=e[4],f=e[5],u=e[6],p=e[7],v=e[8],x=e[9],g=e[10],w=e[11],M=N*N*o+a,b=O*N*o+_*s,R=_*N*o-O*s,T=N*O*o-_*s,y=O*O*o+a,A=_*O*o+N*s,E=N*_*o+O*s,I=O*_*o-N*s,L=_*_*o+a,t[0]=h*M+m*b+v*R,t[1]=l*M+f*b+x*R,t[2]=c*M+u*b+g*R,t[3]=d*M+p*b+w*R,t[4]=h*T+m*y+v*A,t[5]=l*T+f*y+x*A,t[6]=c*T+u*y+g*A,t[7]=d*T+p*y+w*A,t[8]=h*E+m*I+v*L,t[9]=l*E+f*I+x*L,t[10]=c*E+u*I+g*L,t[11]=d*E+p*I+w*L,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t},e.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},e.fromRotation=function(t,e,i){var r,s,a,o=i[0],h=i[1],l=i[2],c=Math.sqrt(o*o+h*h+l*l);if(Math.abs(c)<n.EPSILON)return null;return o*=c=1/c,h*=c,l*=c,r=Math.sin(e),s=Math.cos(e),a=1-s,t[0]=o*o*a+s,t[1]=h*o*a+l*r,t[2]=l*o*a-h*r,t[3]=0,t[4]=o*h*a-l*r,t[5]=h*h*a+s,t[6]=l*h*a+o*r,t[7]=0,t[8]=o*l*a+h*r,t[9]=h*l*a-o*r,t[10]=l*l*a+s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,e,i,n,r,s,a){var o=1/(i-e),h=1/(r-n),l=1/(s-a);return t[0]=2*s*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*s*h,t[6]=0,t[7]=0,t[8]=(i+e)*o,t[9]=(r+n)*h,t[10]=(a+s)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=a*s*2*l,t[15]=0,t},e.ortho=function(t,e,i,n,r,s,a){var o=1/(e-i),h=1/(n-r),l=1/(s-a);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+i)*o,t[13]=(r+n)*h,t[14]=(a+s)*l,t[15]=1,t};var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0));function r(t,e,i){var n=e[0],r=e[1],s=e[2],a=e[3],o=e[4],h=e[5],l=e[6],c=e[7],d=e[8],m=e[9],f=e[10],u=e[11],p=e[12],v=e[13],x=e[14],g=e[15],w=i[0],M=i[1],b=i[2],R=i[3];return t[0]=w*n+M*o+b*d+R*p,t[1]=w*r+M*h+b*m+R*v,t[2]=w*s+M*l+b*f+R*x,t[3]=w*a+M*c+b*u+R*g,w=i[4],M=i[5],b=i[6],R=i[7],t[4]=w*n+M*o+b*d+R*p,t[5]=w*r+M*h+b*m+R*v,t[6]=w*s+M*l+b*f+R*x,t[7]=w*a+M*c+b*u+R*g,w=i[8],M=i[9],b=i[10],R=i[11],t[8]=w*n+M*o+b*d+R*p,t[9]=w*r+M*h+b*m+R*v,t[10]=w*s+M*l+b*f+R*x,t[11]=w*a+M*c+b*u+R*g,w=i[12],M=i[13],b=i[14],R=i[15],t[12]=w*n+M*o+b*d+R*p,t[13]=w*r+M*h+b*m+R*v,t[14]=w*s+M*l+b*f+R*x,t[15]=w*a+M*c+b*u+R*g,t}}])})),function(){document.asy={canvasWidth:0,canvasHeight:0,absolute:!1,minBound:[0,0,0],maxBound:[0,0,0],orthographic:!1,angleOfView:0,initialZoom:0,viewportShift:[0,0],viewportMargin:[0,0],background:[],zoomFactor:0,zoomPinchFactor:0,zoomPinchCap:0,zoomStep:0,shiftHoldDistance:0,shiftWaitTime:0,vibrateTime:0,ibl:!1,webgl2:!1,imageURL:"",image:"",Transform:[],Centers:[]};let t,e,i,n,r,s,a,o=document.asy,h=[],l=[],c=[],d=0,m=2;const f=Math.acos(-1),u=f/180,p=Math.ceil(1-Math.log2(Number.EPSILON));let v,x,g,w,M,b,R,T=mat4.create(),y=mat4.create(),A=mat4.create(),E=mat4.create(),I=mat3.create(),L=mat3.create(),N=mat4.create(),O=mat4.create(),_={x:0,y:0,z:0},P={x:0,y:0},S={xmin:0,xmax:0,ymin:0,ymax:0,zmin:0,zmax:0},U=!0,V=0,B=!1,C=null,D=null,F=[],z=[],H=[],X=[],G=null,W=null,j=null;function k(){o.embedded||st(),rt(o.ibl)}class Y{constructor(t,e,i,n,r,s){this.diffuse=t,this.emissive=e,this.specular=i,this.shininess=n,this.metallic=r,this.fresnel0=s}setUniform(e,i){let n=n=>t.getUniformLocation(e,"Materials["+i+"]."+n);t.uniform4fv(n("diffuse"),new Float32Array(this.diffuse)),t.uniform4fv(n("emissive"),new Float32Array(this.emissive)),t.uniform4fv(n("specular"),new Float32Array(this.specular)),t.uniform4f(n("parameters"),this.shininess,this.metallic,this.fresnel0,0)}}let $,q,K,Z,Q,J,tt,et,it;class nt{constructor(t,e){this.direction=t,this.color=e}setUniform(e,i){let n=n=>t.getUniformLocation(e,"Lights["+i+"]."+n);t.uniform3fv(n("direction"),new Float32Array(this.direction)),t.uniform3fv(n("color"),new Float32Array(this.color))}}function rt(e=!1){let i=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS);r=Math.floor((i-14)/4),m=Math.min(Math.max(m,c.length),r),pixelOpt=["WIDTH"],materialOpt=["NORMAL"],colorOpt=["NORMAL","COLOR"],transparentOpt=["NORMAL","COLOR","TRANSPARENT"],e&&(materialOpt.push("USE_IBL"),transparentOpt.push("USE_IBL")),ge=Nt(pixelOpt),we=Nt(materialOpt),Me=Nt(colorOpt),be=Nt(transparentOpt)}function st(){t.deleteProgram(be),t.deleteProgram(Me),t.deleteProgram(we),t.deleteProgram(ge)}function at(){let i=o.webgl2?window.top.document.asygl2[e]:window.top.document.asygl[e];i.gl=t,i.nlights=l.length,i.Nmaterials=m,i.maxMaterials=r,i.pixelShader=ge,i.materialShader=we,i.colorShader=Me,i.transparentShader=be}function ot(t,e){let i;return o.webgl2&&(i=t.getContext("webgl2",{alpha:e}),o.embedded&&!i)?(o.webgl2=!1,o.ibl=!1,ht(!1),null):(i||(o.webgl2=!1,o.ibl=!1,i=t.getContext("webgl",{alpha:e})),i||alert("Could not initialize WebGL"),i)}function ht(s=!0){if(o.ibl&&(o.webgl2=!0),e=o.background[3]<1,o.embedded){let a=window.top.document;if(s&&(n=o.canvas.getContext("2d")),i=o.webgl2?a.offscreen2:a.offscreen,i||(i=a.createElement("canvas"),o.webgl2?a.offscreen2=i:a.offscreen=i),o.webgl2?a.asygl2||(a.asygl2=Array(2)):a.asygl||(a.asygl=Array(2)),asygl=o.webgl2?a.asygl2:a.asygl,asygl[e]&&asygl[e].gl)!function(){let i=o.webgl2?window.top.document.asygl2[e]:window.top.document.asygl[e];t=i.gl,d=i.nlights,m=i.Nmaterials,r=i.maxMaterials,ge=i.pixelShader,we=i.materialShader,Me=i.colorShader,be=i.transparentShader}(),(l.length!=d||Math.min(c.length,r)>m)&&(rt(),at());else{if(rc=ot(i,e),!rc)return;t=rc,rt(),o.webgl2?a.asygl2[e]={}:a.asygl[e]={},at()}}else t=ot(o.canvas,e),rt();$=t.getExtension("OES_element_index_uint"),q=t.TRIANGLES,K=new mt(t.POINTS),Z=new mt(t.LINES),Q=new mt,J=new mt,tt=new mt,et=new mt}function lt(t,e,i,n=[]){let r=o.webgl2?"300 es":"100",s=Array(...n),a=[["nlights",0==V?l.length:0],["Nmaterials",m]],h=[["int","Nlights",Math.max(l.length,1)]];o.webgl2&&s.push("WEBGL2"),o.ibl&&a.push(["ROUGHNESS_STEP_COUNT",8..toFixed(2)]),o.orthographic&&s.push("ORTHOGRAPHIC"),macros_str=a.map(t=>`#define ${t[0]} ${t[1]}`).join("\n"),define_str=s.map(t=>"#define "+t).join("\n"),const_str=h.map(t=>`const ${t[0]} ${t[1]}=${t[2]};`).join("\n"),ext_str=[].map(t=>`#extension ${t}: enable`).join("\n"),shaderSrc=`#version ${r}\n${ext_str}\n${define_str}\n${const_str}\n${macros_str}\n\n\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n \n${e}\n `;let c=t.createShader(i);return t.shaderSource(c,shaderSrc),t.compileShader(c),t.getShaderParameter(c,t.COMPILE_STATUS)?c:(alert(t.getShaderInfoLog(c)),null)}function ct(e,i,n,r=t.ARRAY_BUFFER){return e.length>0&&(0==i&&(i=t.createBuffer(),n=!0),t.bindBuffer(r,i),n&&t.bufferData(r,e,t.STATIC_DRAW)),i}function dt(e,i,n=e.indices){if(0==e.indices.length)return;let r=i!=ge;!function(e,i){let n=i==ge;t.useProgram(i),t.enableVertexAttribArray(yt),n&&t.enableVertexAttribArray(Lt);let r=!n&&l.length>0;r&&t.enableVertexAttribArray(At);t.enableVertexAttribArray(Et),i.projViewMatUniform=t.getUniformLocation(i,"projViewMat"),i.viewMatUniform=t.getUniformLocation(i,"viewMat"),i.normMatUniform=t.getUniformLocation(i,"normMat"),(i==Me||i==be)&&t.enableVertexAttribArray(It);if(r)for(let t=0;t<l.length;++t)l[t].setUniform(i,t);for(let t=0;t<e.materials.length;++t)e.materials[t].setUniform(i,t);t.uniformMatrix4fv(i.projViewMatUniform,!1,E),t.uniformMatrix4fv(i.viewMatUniform,!1,A),t.uniformMatrix3fv(i.normMatUniform,!1,I)}(e,i),null!=W&&(t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,j),t.uniform1i(t.getUniformLocation(i,"reflBRDFSampler"),0),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,W),t.uniform1i(t.getUniformLocation(i,"diffuseSampler"),1),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,G),t.uniform1i(t.getUniformLocation(i,"reflImgSampler"),2));let s=U||e.partial||!e.rendered;e.verticesBuffer=ct(new Float32Array(e.vertices),e.verticesBuffer,s),t.vertexAttribPointer(yt,3,t.FLOAT,!1,r?24:16,0),r?l.length>0&&t.vertexAttribPointer(At,3,t.FLOAT,!1,24,12):t.vertexAttribPointer(Lt,1,t.FLOAT,!1,16,12),e.materialsBuffer=ct(new Int16Array(e.materialIndices),e.materialsBuffer,s),t.vertexAttribPointer(Et,1,t.SHORT,!1,2,0),i!=Me&&i!=be||(e.colorsBuffer=ct(new Float32Array(e.colors),e.colorsBuffer,s),t.vertexAttribPointer(It,4,t.FLOAT,!0,0,0)),e.indicesBuffer=ct($?new Uint32Array(n):new Uint16Array(n),e.indicesBuffer,s,t.ELEMENT_ARRAY_BUFFER),e.rendered=!0,t.drawElements(r?V?t.LINES:e.type:t.POINTS,n.length,$?t.UNSIGNED_INT:t.UNSIGNED_SHORT,0)}class mt{constructor(t){this.type=t||q,this.verticesBuffer=0,this.materialsBuffer=0,this.colorsBuffer=0,this.indicesBuffer=0,this.rendered=!1,this.partial=!1,this.clear()}clear(){this.vertices=[],this.materialIndices=[],this.colors=[],this.indices=[],this.nvertices=0,this.materials=[],this.materialTable=[]}vertex(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(it),this.nvertices++}Vertex(t,e,i=[0,0,0,0]){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(it),this.colors.push(i[0]),this.colors.push(i[1]),this.colors.push(i[2]),this.colors.push(i[3]),this.nvertices++}vertex0(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e),this.materialIndices.push(it),this.nvertices++}iVertex(t,e,i,n,r=[0,0,0,0]){let s=6*t;this.vertices[s]=e[0],this.vertices[s+1]=e[1],this.vertices[s+2]=e[2],this.vertices[s+3]=i[0],this.vertices[s+4]=i[1],this.vertices[s+5]=i[2],this.materialIndices[t]=it;let a=4*t;this.colors[a]=r[0],this.colors[a+1]=r[1],this.colors[a+2]=r[2],this.colors[a+3]=r[3],n&&this.indices.push(t)}append(t){ft(this.vertices,t.vertices),ft(this.materialIndices,t.materialIndices),ft(this.colors,t.colors),function(t,e,i){let n=t.length,r=e.length;t.length+=e.length;for(let s=0;s<r;++s)t[n+s]=e[s]+i}(this.indices,t.indices,this.nvertices),this.nvertices+=t.nvertices}}function ft(t,e){let i=t.length,n=e.length;t.length+=n;for(let r=0;r<n;++r)t[i+r]=e[r]}class ut{constructor(){this.data=new mt,this.Onscreen=!1,this.m=[]}offscreen(t){let e=E,i=t[0],n=i[0],r=i[1],s=i[2],a=1/(e[3]*n+e[7]*r+e[11]*s+e[15]);this.x=this.X=(e[0]*n+e[4]*r+e[8]*s+e[12])*a,this.y=this.Y=(e[1]*n+e[5]*r+e[9]*s+e[13])*a;for(let i=1,n=t.length;i<n;++i){let n=t[i],r=n[0],s=n[1],a=n[2],o=1/(e[3]*r+e[7]*s+e[11]*a+e[15]),h=(e[0]*r+e[4]*s+e[8]*a+e[12])*o,l=(e[1]*r+e[5]*s+e[9]*a+e[13])*o;h<this.x?this.x=h:h>this.X&&(this.X=h),l<this.y?this.y=l:l>this.Y&&(this.Y=l)}return(this.X<-1.01||this.x>1.01||this.Y<-1.01||this.y>1.01)&&(this.Onscreen=!1,!0)}T(t){let e=this.c[0],i=this.c[1],n=this.c[2],r=t[0]-e,s=t[1]-i,a=t[2]-n;return[r*I[0]+s*I[3]+a*I[6]+e,r*I[1]+s*I[4]+a*I[7]+i,r*I[2]+s*I[5]+a*I[8]+n]}Tcorners(t,e){return[this.T(t),this.T([t[0],t[1],e[2]]),this.T([t[0],e[1],t[2]]),this.T([t[0],e[1],e[2]]),this.T([e[0],t[1],t[2]]),this.T([e[0],t[1],e[2]]),this.T([e[0],e[1],t[2]]),this.T(e)]}setMaterial(t,e){null==t.materialTable[this.MaterialIndex]&&(t.materials.length>=m&&(t.partial=!0,e()),t.materialTable[this.MaterialIndex]=t.materials.length,t.materials.push(c[this.MaterialIndex])),it=t.materialTable[this.MaterialIndex]}render(){let t;var e,i;if(this.setMaterialIndex(),0==this.CenterIndex?(e=this.Min,i=this.Max,t=[e,[e[0],e[1],i[2]],[e[0],i[1],e[2]],[e[0],i[1],i[2]],[i[0],e[1],e[2]],[i[0],e[1],i[2]],[i[0],i[1],e[2]],i]):(this.c=o.Centers[this.CenterIndex-1],t=this.Tcorners(this.Min,this.Max)),this.offscreen(t))return this.data.clear(),void this.notRendered();let n,r=this.controlpoints;if(0==this.CenterIndex){if(!U&&this.Onscreen)return void this.append();n=r}else{let t=r.length;n=Array(t);for(let e=0;e<t;++e)n[e]=this.T(r[e])}let s=o.orthographic?1:this.Min[2]/o.maxBound[2],a=.75*Math.hypot(s*(S.xmax-S.xmin),s*(S.ymax-S.ymin))/b;this.res2=a*a,this.Epsilon=.1*a,this.data.clear(),this.notRendered(),this.Onscreen=!0,this.process(n)}}function pt(t,e){let i=t[0],n=t.length;for(let r=1;r<n;++r)i=e(i,t[r]);return i}class vt extends ut{constructor(t,e,i,n,r,s){super(),this.controlpoints=t,this.CenterIndex=e,this.MaterialIndex=i,this.color=n;let a=t.length;if(n){let t=n[0][3]+n[1][3]+n[2][3];this.transparent=16==a||4==a?t+n[3][3]<4:t<3}else this.transparent=c[i].diffuse[3]<1;this.vertex=this.transparent?this.data.Vertex.bind(this.data):this.data.vertex.bind(this.data);let o=this.L2norm2(this.controlpoints),h=Math.sqrt(1e3*Number.EPSILON*o);this.epsilon=o*Number.EPSILON,this.Min=r||this.Bounds(this.controlpoints,Math.min,h),this.Max=s||this.Bounds(this.controlpoints,Math.max,h)}setMaterialIndex(){this.transparent?this.setMaterial(tt,Le):this.color?this.setMaterial(J,Ee):this.setMaterial(Q,Ae)}cornerbound(t,e){let i=e(t[0],t[3]);return i=e(i,t[12]),e(i,t[15])}controlbound(t,e){let i=e(t[1],t[2]);return i=e(i,t[4]),i=e(i,t[5]),i=e(i,t[6]),i=e(i,t[7]),i=e(i,t[8]),i=e(i,t[9]),i=e(i,t[10]),i=e(i,t[11]),i=e(i,t[13]),e(i,t[14])}bound(t,e,i,n,r){if(i=e(i,this.cornerbound(t,e)),e(-1,1)*(i-this.controlbound(t,e))>=-n||0==r)return i;--r,n*=2;let s=new Ot(t[0],t[1],t[2],t[3]),a=new Ot(t[4],t[5],t[6],t[7]),o=new Ot(t[8],t[9],t[10],t[11]),h=new Ot(t[12],t[13],t[14],t[15]),l=new Ot(t[0],t[4],t[8],t[12]),c=new Ot(s.m0,a.m0,o.m0,h.m0),d=new Ot(s.m3,a.m3,o.m3,h.m3),m=new Ot(s.m5,a.m5,o.m5,h.m5),f=new Ot(s.m4,a.m4,o.m4,h.m4),u=new Ot(s.m2,a.m2,o.m2,h.m2),p=new Ot(t[3],t[7],t[11],t[15]),v=[t[0],s.m0,s.m3,s.m5,l.m0,c.m0,d.m0,m.m0,l.m3,c.m3,d.m3,m.m3,l.m5,c.m5,d.m5,m.m5];i=this.bound(v,e,i,n,r);let x=[l.m5,c.m5,d.m5,m.m5,l.m4,c.m4,d.m4,m.m4,l.m2,c.m2,d.m2,m.m2,t[12],h.m0,h.m3,h.m5];i=this.bound(x,e,i,n,r);let g=[m.m5,f.m5,u.m5,p.m5,m.m4,f.m4,u.m4,p.m4,m.m2,f.m2,u.m2,p.m2,h.m5,h.m4,h.m2,t[15]];i=this.bound(g,e,i,n,r);let w=[s.m5,s.m4,s.m2,t[3],m.m0,f.m0,u.m0,p.m0,m.m3,f.m3,u.m3,p.m3,m.m5,f.m5,u.m5,p.m5];return this.bound(w,e,i,n,r)}cornerboundtri(t,e){let i=e(t[0],t[6]);return e(i,t[9])}controlboundtri(t,e){let i=e(t[1],t[2]);return i=e(i,t[3]),i=e(i,t[4]),i=e(i,t[5]),i=e(i,t[7]),e(i,t[8])}boundtri(t,e,i,n,r){if(i=e(i,this.cornerboundtri(t,e)),e(-1,1)*(i-this.controlboundtri(t,e))>=-n||0==r)return i;--r,n*=2;let s=new Pt(t),a=[s.l003,s.l102,s.l012,s.l201,s.l111,s.l021,s.l300,s.l210,s.l120,s.l030];i=this.boundtri(a,e,i,n,r);let o=[s.l300,s.r102,s.r012,s.r201,s.r111,s.r021,s.r300,s.r210,s.r120,s.r030];i=this.boundtri(o,e,i,n,r);let h=[s.l030,s.u102,s.u012,s.u201,s.u111,s.u021,s.r030,s.u210,s.u120,s.u030];i=this.boundtri(h,e,i,n,r);let l=[s.r030,s.u201,s.r021,s.u102,s.c111,s.r012,s.l030,s.l120,s.l210,s.l300];return this.boundtri(l,e,i,n,r)}Bounds(t,e,i){let n=Array(3),r=t.length,s=Array(r);for(let a=0;a<3;++a){for(let e=0;e<r;++e)s[e]=t[e][a];n[a]=16==r?this.bound(s,e,s[0],i,p):10==r?this.boundtri(s,e,s[0],i,p):pt(s,e)}return[n[0],n[1],n[2]]}L2norm2(t){let e=t[0],i=0,n=t.length;for(let r=1;r<n;++r)i=Math.max(i,Ut([t[r][0]-e[0],t[r][1]-e[1],t[r][2]-e[2]]));return i}processTriangle(t){let e=t[0],i=t[1],n=t[2],r=St(Bt([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[n[0]-e[0],n[1]-e[1],n[2]-e[2]]));if(!this.offscreen([e,i,n])){let t,s,a;this.color?(t=this.data.Vertex(e,r,this.color[0]),s=this.data.Vertex(i,r,this.color[1]),a=this.data.Vertex(n,r,this.color[2])):(t=this.vertex(e,r),s=this.vertex(i,r),a=this.vertex(n,r)),0==V?(this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(a)):(this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(a),this.data.indices.push(a),this.data.indices.push(t)),this.append()}}processQuad(t){let e=t[0],i=t[1],n=t[2],r=t[3],s=Bt([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[n[0]-i[0],n[1]-i[1],n[2]-i[2]]),a=Bt([n[0]-r[0],n[1]-r[1],n[2]-r[2]],[r[0]-e[0],r[1]-e[1],r[2]-e[2]]),o=St([s[0]+a[0],s[1]+a[1],s[2]+a[2]]);if(!this.offscreen([e,i,n,r])){let t,s,a,h;this.color?(t=this.data.Vertex(e,o,this.color[0]),s=this.data.Vertex(i,o,this.color[1]),a=this.data.Vertex(n,o,this.color[2]),h=this.data.Vertex(r,o,this.color[3])):(t=this.vertex(e,o),s=this.vertex(i,o),a=this.vertex(n,o),h=this.vertex(r,o)),0==V?(this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(a),this.data.indices.push(t),this.data.indices.push(a),this.data.indices.push(h)):(this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(a),this.data.indices.push(a),this.data.indices.push(h),this.data.indices.push(h),this.data.indices.push(t)),this.append()}}curve(t,e,i,n,r){new wt([t[e],t[i],t[n],t[r]],0,it,this.Min,this.Max).render()}process(t){if(this.transparent&&1!=V&&(it=this.color?-1-it:1+it),10==t.length)return this.process3(t);if(3==t.length)return this.processTriangle(t);if(4==t.length)return this.processQuad(t);if(1==V)return this.curve(t,0,4,8,12),this.curve(t,12,13,14,15),this.curve(t,15,11,7,3),void this.curve(t,3,2,1,0);let e=t[0],i=t[3],n=t[12],r=t[15],s=this.normal(i,t[2],t[1],e,t[4],t[8],n);Ut(s)<this.epsilon&&(s=this.normal(i,t[2],t[1],e,t[13],t[14],r),Ut(s)<this.epsilon&&(s=this.normal(r,t[11],t[7],i,t[4],t[8],n)));let a=this.normal(e,t[4],t[8],n,t[13],t[14],r);Ut(a)<this.epsilon&&(a=this.normal(e,t[4],t[8],n,t[11],t[7],i),Ut(a)<this.epsilon&&(a=this.normal(i,t[2],t[1],e,t[13],t[14],r)));let o=this.normal(n,t[13],t[14],r,t[11],t[7],i);Ut(o)<this.epsilon&&(o=this.normal(n,t[13],t[14],r,t[2],t[1],e),Ut(o)<this.epsilon&&(o=this.normal(e,t[4],t[8],n,t[11],t[7],i)));let h=this.normal(r,t[11],t[7],i,t[2],t[1],e);if(Ut(h)<this.epsilon&&(h=this.normal(r,t[11],t[7],i,t[4],t[8],n),Ut(h)<this.epsilon&&(h=this.normal(n,t[13],t[14],r,t[2],t[1],e))),this.color){let l=this.color[0],c=this.color[1],d=this.color[2],m=this.color[3],f=this.data.Vertex(e,s,l),u=this.data.Vertex(n,a,c),p=this.data.Vertex(r,o,d),v=this.data.Vertex(i,h,m);this.Render(t,f,u,p,v,e,n,r,i,!1,!1,!1,!1,l,c,d,m)}else{let l=this.vertex(e,s),c=this.vertex(n,a),d=this.vertex(r,o),m=this.vertex(i,h);this.Render(t,l,c,d,m,e,n,r,i,!1,!1,!1,!1)}this.data.indices.length>0&&this.append()}append(){this.transparent?tt.append(this.data):this.color?J.append(this.data):Q.append(this.data)}notRendered(){this.transparent?tt.rendered=!1:this.color?J.rendered=!1:Q.rendered=!1}Render(t,e,i,n,r,s,a,o,h,l,c,d,m,f,u,p,v){let x=this.Distance(t);if(x[0]<this.res2&&x[1]<this.res2)this.offscreen([s,a,o])||(0==V?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(n)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(n))),this.offscreen([s,o,h])||(0==V?(this.data.indices.push(e),this.data.indices.push(n),this.data.indices.push(r)):(this.data.indices.push(n),this.data.indices.push(r),this.data.indices.push(r),this.data.indices.push(e)));else{if(this.offscreen(t))return;let g=t[0],w=t[3],M=t[12],b=t[15];if(x[0]<this.res2){let x=new _t(g,t[1],t[2],w),R=new _t(t[4],t[5],t[6],t[7]),T=new _t(t[8],t[9],t[10],t[11]),y=new _t(M,t[13],t[14],b),A=[g,x.m0,x.m3,x.m5,t[4],R.m0,R.m3,R.m5,t[8],T.m0,T.m3,T.m5,M,y.m0,y.m3,y.m5],E=[x.m5,x.m4,x.m2,w,R.m5,R.m4,R.m2,t[7],T.m5,T.m4,T.m2,t[11],y.m5,y.m4,y.m2,b],I=this.normal(A[12],A[13],A[14],A[15],A[11],A[7],A[3]);Ut(I)<=this.epsilon&&(I=this.normal(A[12],A[13],A[14],A[15],A[2],A[1],A[0]),Ut(I)<=this.epsilon&&(I=this.normal(A[0],A[4],A[8],A[12],A[11],A[7],A[3])));let L=this.normal(E[3],E[2],E[1],E[0],E[4],E[8],E[12]);Ut(L)<=this.epsilon&&(L=this.normal(E[3],E[2],E[1],E[0],E[13],E[14],E[15]),Ut(L)<=this.epsilon&&(L=this.normal(E[15],E[11],E[7],E[3],E[4],E[8],E[12])));let N=this.Epsilon,O=[.5*(a[0]+o[0]),.5*(a[1]+o[1]),.5*(a[2]+o[2])];if(!c)if(c=Ht(M,t[13],t[14],b)<this.res2){let t=St(this.differential(E[12],E[8],E[4],E[0]));O=[O[0]-N*t[0],O[1]-N*t[1],O[2]-N*t[2]]}else O=A[15];let _=[.5*(h[0]+s[0]),.5*(h[1]+s[1]),.5*(h[2]+s[2])];if(!m)if(m=Ht(g,t[1],t[2],w)<this.res2){let t=St(this.differential(A[3],A[7],A[11],A[15]));_=[_[0]-N*t[0],_[1]-N*t[1],_[2]-N*t[2]]}else _=E[0];if(f){let t=Array(4),x=Array(4);for(let e=0;e<4;++e)t[e]=.5*(u[e]+p[e]),x[e]=.5*(v[e]+f[e]);let g=this.data.Vertex(O,I,t),w=this.data.Vertex(_,L,x);this.Render(A,e,i,g,w,s,a,O,_,l,c,!1,m,f,u,t,x),this.Render(E,w,g,n,r,_,O,o,h,!1,c,d,m,x,t,p,v)}else{let t=this.vertex(O,I),f=this.vertex(_,L);this.Render(A,e,i,t,f,s,a,O,_,l,c,!1,m),this.Render(E,f,t,n,r,_,O,o,h,!1,c,d,m)}return}if(x[1]<this.res2){let x=new _t(g,t[4],t[8],M),R=new _t(t[1],t[5],t[9],t[13]),T=new _t(t[2],t[6],t[10],t[14]),y=new _t(w,t[7],t[11],b),A=[g,t[1],t[2],w,x.m0,R.m0,T.m0,y.m0,x.m3,R.m3,T.m3,y.m3,x.m5,R.m5,T.m5,y.m5],E=[x.m5,R.m5,T.m5,y.m5,x.m4,R.m4,T.m4,y.m4,x.m2,R.m2,T.m2,y.m2,M,t[13],t[14],b],I=this.normal(A[0],A[4],A[8],A[12],A[13],A[14],A[15]);Ut(I)<=this.epsilon&&(I=this.normal(A[0],A[4],A[8],A[12],A[11],A[7],A[3]),Ut(I)<=this.epsilon&&(I=this.normal(A[3],A[2],A[1],A[0],A[13],A[14],A[15])));let L=this.normal(E[15],E[11],E[7],E[3],E[2],E[1],E[0]);Ut(L)<=this.epsilon&&(L=this.normal(E[15],E[11],E[7],E[3],E[4],E[8],E[12]),Ut(L)<=this.epsilon&&(L=this.normal(E[12],E[13],E[14],E[15],E[2],E[1],E[0])));let N=this.Epsilon,O=[.5*(s[0]+a[0]),.5*(s[1]+a[1]),.5*(s[2]+a[2])];if(!l)if(l=Ht(g,t[4],t[8],M)<this.res2){let t=St(this.differential(E[0],E[1],E[2],E[3]));O=[O[0]-N*t[0],O[1]-N*t[1],O[2]-N*t[2]]}else O=A[12];let _=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!d)if(d=Ht(b,t[11],t[7],w)<this.res2){let t=St(this.differential(A[15],A[14],A[13],A[12]));_=[_[0]-N*t[0],_[1]-N*t[1],_[2]-N*t[2]]}else _=E[3];if(f){let t=Array(4),x=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),x[e]=.5*(p[e]+v[e]);let g=this.data.Vertex(O,I,t),w=this.data.Vertex(_,L,x);this.Render(A,e,g,w,r,s,O,_,h,l,!1,d,m,f,t,x,v),this.Render(E,g,i,n,w,O,a,o,_,l,c,d,!1,t,u,p,x)}else{let t=this.vertex(O,I),f=this.vertex(_,L);this.Render(A,e,t,f,r,s,O,_,h,l,!1,d,m),this.Render(E,t,i,n,f,O,a,o,_,l,c,d,!1)}return}let R=new _t(g,t[1],t[2],w),T=new _t(t[4],t[5],t[6],t[7]),y=new _t(t[8],t[9],t[10],t[11]),A=new _t(M,t[13],t[14],b),E=new _t(g,t[4],t[8],M),I=new _t(R.m0,T.m0,y.m0,A.m0),L=new _t(R.m3,T.m3,y.m3,A.m3),N=new _t(R.m5,T.m5,y.m5,A.m5),O=new _t(R.m4,T.m4,y.m4,A.m4),_=new _t(R.m2,T.m2,y.m2,A.m2),P=new _t(w,t[7],t[11],b),S=[g,R.m0,R.m3,R.m5,E.m0,I.m0,L.m0,N.m0,E.m3,I.m3,L.m3,N.m3,E.m5,I.m5,L.m5,N.m5],U=[E.m5,I.m5,L.m5,N.m5,E.m4,I.m4,L.m4,N.m4,E.m2,I.m2,L.m2,N.m2,M,A.m0,A.m3,A.m5],V=[N.m5,O.m5,_.m5,P.m5,N.m4,O.m4,_.m4,P.m4,N.m2,O.m2,_.m2,P.m2,A.m5,A.m4,A.m2,b],B=[R.m5,R.m4,R.m2,w,N.m0,O.m0,_.m0,P.m0,N.m3,O.m3,_.m3,P.m3,N.m5,O.m5,_.m5,P.m5],C=S[15],D=this.normal(S[0],S[4],S[8],S[12],S[13],S[14],S[15]);Ut(D)<this.epsilon&&(D=this.normal(S[0],S[4],S[8],S[12],S[11],S[7],S[3]),Ut(D)<this.epsilon&&(D=this.normal(S[3],S[2],S[1],S[0],S[13],S[14],S[15])));let F=this.normal(U[12],U[13],U[14],U[15],U[11],U[7],U[3]);Ut(F)<this.epsilon&&(F=this.normal(U[12],U[13],U[14],U[15],U[2],U[1],U[0]),Ut(F)<this.epsilon&&(F=this.normal(U[0],U[4],U[8],U[12],U[11],U[7],U[3])));let z=this.normal(V[15],V[11],V[7],V[3],V[2],V[1],V[0]);Ut(z)<this.epsilon&&(z=this.normal(V[15],V[11],V[7],V[3],V[4],V[8],V[12]),Ut(z)<this.epsilon&&(z=this.normal(V[12],V[13],V[14],V[15],V[2],V[1],V[0])));let H=this.normal(B[3],B[2],B[1],B[0],B[4],B[8],B[12]);Ut(H)<this.epsilon&&(H=this.normal(B[3],B[2],B[1],B[0],B[13],B[14],B[15]),Ut(H)<this.epsilon&&(H=this.normal(B[15],B[11],B[7],B[3],B[4],B[8],B[12])));let X=this.normal(V[3],V[2],V[1],C,V[4],V[8],V[12]),G=this.Epsilon,W=[.5*(s[0]+a[0]),.5*(s[1]+a[1]),.5*(s[2]+a[2])];if(!l)if(l=Ht(g,t[4],t[8],M)<this.res2){let t=St(this.differential(U[0],U[1],U[2],U[3]));W=[W[0]-G*t[0],W[1]-G*t[1],W[2]-G*t[2]]}else W=S[12];let j=[.5*(a[0]+o[0]),.5*(a[1]+o[1]),.5*(a[2]+o[2])];if(!c)if(c=Ht(M,t[13],t[14],b)<this.res2){let t=St(this.differential(V[12],V[8],V[4],V[0]));j=[j[0]-G*t[0],j[1]-G*t[1],j[2]-G*t[2]]}else j=U[15];let k=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!d)if(d=Ht(b,t[11],t[7],w)<this.res2){let t=St(this.differential(B[15],B[14],B[13],B[12]));k=[k[0]-G*t[0],k[1]-G*t[1],k[2]-G*t[2]]}else k=V[3];let Y=[.5*(h[0]+s[0]),.5*(h[1]+s[1]),.5*(h[2]+s[2])];if(!m)if(m=Ht(g,t[1],t[2],w)<this.res2){let t=St(this.differential(S[3],S[7],S[11],S[15]));Y=[Y[0]-G*t[0],Y[1]-G*t[1],Y[2]-G*t[2]]}else Y=B[0];if(f){let t=Array(4),x=Array(4),g=Array(4),w=Array(4),M=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),x[e]=.5*(u[e]+p[e]),g[e]=.5*(p[e]+v[e]),w[e]=.5*(v[e]+f[e]),M[e]=.5*(t[e]+g[e]);let b=this.data.Vertex(W,D,t),R=this.data.Vertex(j,F,x),T=this.data.Vertex(k,z,g),y=this.data.Vertex(Y,H,w),A=this.data.Vertex(C,X,M);this.Render(S,e,b,A,y,s,W,C,Y,l,!1,!1,m,f,t,M,w),this.Render(U,b,i,R,A,W,a,j,C,l,c,!1,!1,t,u,x,M),this.Render(V,A,R,n,T,C,j,o,k,!1,c,d,!1,M,x,p,g),this.Render(B,y,A,T,r,Y,C,k,h,!1,!1,d,m,w,M,g,v)}else{let t=this.vertex(W,D),f=this.vertex(j,F),u=this.vertex(k,z),p=this.vertex(Y,H),v=this.vertex(C,X);this.Render(S,e,t,v,p,s,W,C,Y,l,!1,!1,m),this.Render(U,t,i,f,v,W,a,j,C,l,c,!1,!1),this.Render(V,v,f,n,u,C,j,o,k,!1,c,d,!1),this.Render(B,p,v,u,r,Y,C,k,h,!1,!1,d,m)}}}process3(t){if(1==V)return this.curve(t,0,1,3,6),this.curve(t,6,7,8,9),void this.curve(t,9,5,2,0);let e=t[0],i=t[6],n=t[9],r=this.normal(n,t[5],t[2],e,t[1],t[3],i),s=this.normal(e,t[1],t[3],i,t[7],t[8],n),a=this.normal(i,t[7],t[8],n,t[5],t[2],e);if(this.color){let o=this.color[0],h=this.color[1],l=this.color[2],c=this.data.Vertex(e,r,o),d=this.data.Vertex(i,s,h),m=this.data.Vertex(n,a,l);this.Render3(t,c,d,m,e,i,n,!1,!1,!1,o,h,l)}else{let o=this.vertex(e,r),h=this.vertex(i,s),l=this.vertex(n,a);this.Render3(t,o,h,l,e,i,n,!1,!1,!1)}this.data.indices.length>0&&this.append()}Render3(t,e,i,n,r,s,a,o,h,l,c,d,m){if(this.Distance3(t)<this.res2)this.offscreen([r,s,a])||(0==V?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(n)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(e)));else{if(this.offscreen(t))return;let f=t[0],u=t[1],p=t[2],v=t[3],x=t[4],g=t[5],w=t[6],M=t[7],b=t[8],R=t[9],T=[.5*(R[0]+g[0]),.5*(R[1]+g[1]),.5*(R[2]+g[2])],y=[.5*(R[0]+b[0]),.5*(R[1]+b[1]),.5*(R[2]+b[2])],A=[.5*(g[0]+p[0]),.5*(g[1]+p[1]),.5*(g[2]+p[2])],E=[.5*(b[0]+x[0]),.5*(b[1]+x[1]),.5*(b[2]+x[2])],I=[.5*(b[0]+M[0]),.5*(b[1]+M[1]),.5*(b[2]+M[2])],L=[.5*(p[0]+x[0]),.5*(p[1]+x[1]),.5*(p[2]+x[2])],N=[.5*(p[0]+f[0]),.5*(p[1]+f[1]),.5*(p[2]+f[2])],O=[.5*(x[0]+v[0]),.5*(x[1]+v[1]),.5*(x[2]+v[2])],_=[.5*(M[0]+w[0]),.5*(M[1]+w[1]),.5*(M[2]+w[2])],P=[.5*(f[0]+u[0]),.5*(f[1]+u[1]),.5*(f[2]+u[2])],S=[.5*(u[0]+v[0]),.5*(u[1]+v[1]),.5*(u[2]+v[2])],U=[.5*(v[0]+w[0]),.5*(v[1]+w[1]),.5*(v[2]+w[2])],V=[.5*(T[0]+A[0]),.5*(T[1]+A[1]),.5*(T[2]+A[2])],B=[.5*(y[0]+I[0]),.5*(y[1]+I[1]),.5*(y[2]+I[2])],C=[.5*(A[0]+N[0]),.5*(A[1]+N[1]),.5*(A[2]+N[2])],D=[.5*E[0]+.25*(x[0]+u[0]),.5*E[1]+.25*(x[1]+u[1]),.5*E[2]+.25*(x[2]+u[2])],F=[.5*(I[0]+_[0]),.5*(I[1]+_[1]),.5*(I[2]+_[2])],z=[.5*L[0]+.25*(x[0]+M[0]),.5*L[1]+.25*(x[1]+M[1]),.5*L[2]+.25*(x[2]+M[2])],H=[.25*(g[0]+x[0])+.5*O[0],.25*(g[1]+x[1])+.5*O[1],.25*(g[2]+x[2])+.5*O[2]],X=[.5*(P[0]+S[0]),.5*(P[1]+S[1]),.5*(P[2]+S[2])],G=[.5*(S[0]+U[0]),.5*(S[1]+U[1]),.5*(S[2]+U[2])],W=[.5*(z[0]+X[0]),.5*(z[1]+X[1]),.5*(z[2]+X[2])],j=[.5*(z[0]+G[0]),.5*(z[1]+G[1]),.5*(z[2]+G[2])],k=[.5*(X[0]+G[0]),.5*(X[1]+G[1]),.5*(X[2]+G[2])],Y=[.5*(H[0]+F[0]),.5*(H[1]+F[1]),.5*(H[2]+F[2])],$=[.5*(B[0]+H[0]),.5*(B[1]+H[1]),.5*(B[2]+H[2])],q=[.5*(B[0]+F[0]),.5*(B[1]+F[1]),.5*(B[2]+F[2])],K=[.5*(V[0]+D[0]),.5*(V[1]+D[1]),.5*(V[2]+D[2])],Z=[.5*(C[0]+D[0]),.5*(C[1]+D[1]),.5*(C[2]+D[2])],Q=[.5*(V[0]+C[0]),.5*(V[1]+C[1]),.5*(V[2]+C[2])],J=[f,P,N,X,[.5*(L[0]+P[0]),.5*(L[1]+P[1]),.5*(L[2]+P[2])],C,k,W,Z,Q],tt=[k,G,j,U,[.5*(O[0]+_[0]),.5*(O[1]+_[1]),.5*(O[2]+_[2])],Y,w,_,F,q],et=[Q,K,V,$,[.5*(T[0]+E[0]),.5*(T[1]+E[1]),.5*(T[2]+E[2])],T,q,B,y,R],it=[q,$,Y,K,[.25*(A[0]+I[0]+S[0]+x[0]),.25*(A[1]+I[1]+S[1]+x[1]),.25*(A[2]+I[2]+S[2]+x[2])],j,Q,Z,W,k],nt=this.normal(k,j,Y,q,$,K,Q),rt=this.normal(q,$,K,Q,Z,W,k),st=this.normal(Q,Z,W,k,j,Y,q),at=this.Epsilon,ot=[.5*(s[0]+a[0]),.5*(s[1]+a[1]),.5*(s[2]+a[2])];if(!o)if(o=Ht(w,M,b,R)<this.res2){let t=St(this.sumdifferential(it[0],it[2],it[5],it[9],it[1],it[3],it[6]));ot=[ot[0]-at*t[0],ot[1]-at*t[1],ot[2]-at*t[2]]}else ot=q;let ht=[.5*(a[0]+r[0]),.5*(a[1]+r[1]),.5*(a[2]+r[2])];if(!h)if(h=Ht(f,p,g,R)<this.res2){let t=St(this.sumdifferential(it[6],it[3],it[1],it[0],it[7],it[8],it[9]));ht=[ht[0]-at*t[0],ht[1]-at*t[1],ht[2]-at*t[2]]}else ht=Q;let lt=[.5*(r[0]+s[0]),.5*(r[1]+s[1]),.5*(r[2]+s[2])];if(!l)if(l=Ht(f,u,v,w)<this.res2){let t=St(this.sumdifferential(it[9],it[8],it[7],it[6],it[5],it[2],it[0]));lt=[lt[0]-at*t[0],lt[1]-at*t[1],lt[2]-at*t[2]]}else lt=k;if(c){let t=Array(4),f=Array(4),u=Array(4);for(let e=0;e<4;++e)t[e]=.5*(d[e]+m[e]),f[e]=.5*(m[e]+c[e]),u[e]=.5*(c[e]+d[e]);let p=this.data.Vertex(ot,nt,t),v=this.data.Vertex(ht,rt,f),x=this.data.Vertex(lt,st,u);this.Render3(J,e,x,v,r,lt,ht,!1,h,l,c,u,f),this.Render3(tt,x,i,p,lt,s,ot,o,!1,l,u,d,t),this.Render3(et,v,p,n,ht,ot,a,o,h,!1,f,t,m),this.Render3(it,p,v,x,ot,ht,lt,!1,!1,!1,t,f,u)}else{let t=this.vertex(ot,nt),c=this.vertex(ht,rt),d=this.vertex(lt,st);this.Render3(J,e,d,c,r,lt,ht,!1,h,l),this.Render3(tt,d,i,t,lt,s,ot,o,!1,l),this.Render3(et,c,t,n,ht,ot,a,o,h,!1),this.Render3(it,t,c,d,ot,ht,lt,!1,!1,!1)}}}Distance(t){let e=t[0],i=t[3],n=t[12],r=t[15],s=Xt(e,n,i,r);s=Math.max(s,Ht(e,t[4],t[8],n)),s=Math.max(s,Ht(t[1],t[5],t[9],t[13])),s=Math.max(s,Ht(i,t[7],t[11],r)),s=Math.max(s,Ht(t[2],t[6],t[10],t[14]));let a=Xt(e,i,n,r);return a=Math.max(a,Ht(e,t[1],t[2],i)),a=Math.max(a,Ht(t[4],t[5],t[6],t[7])),a=Math.max(a,Ht(t[8],t[9],t[10],t[11])),a=Math.max(a,Ht(n,t[13],t[14],r)),[s,a]}Distance3(t){let e=t[0],i=t[4],n=t[6],r=t[9],s=Ut([(e[0]+n[0]+r[0])*(1/3)-i[0],(e[1]+n[1]+r[1])*(1/3)-i[1],(e[2]+n[2]+r[2])*(1/3)-i[2]]);return s=Math.max(s,Ht(e,t[1],t[3],n)),s=Math.max(s,Ht(e,t[2],t[5],r)),Math.max(s,Ht(n,t[7],t[8],r))}differential(t,e,i,n){let r=[3*(e[0]-t[0]),3*(e[1]-t[1]),3*(e[2]-t[2])];return Ut(r)>this.epsilon?r:(r=Ft(t,e,i),Ut(r)>this.epsilon?r:zt(t,e,i,n))}sumdifferential(t,e,i,n,r,s,a){let o=this.differential(t,e,i,n),h=this.differential(t,r,s,a);return[o[0]+h[0],o[1]+h[1],o[2]+h[2]]}normal(t,e,i,n,r,s,a){let o=3*(r[0]-n[0]),h=3*(r[1]-n[1]),l=3*(r[2]-n[2]),c=3*(i[0]-n[0]),d=3*(i[1]-n[1]),m=3*(i[2]-n[2]),f=[h*m-l*d,l*c-o*m,o*d-h*c];if(Ut(f)>this.epsilon)return f;let u=[c,d,m],p=[o,h,l],v=Ft(n,i,e),x=Ft(n,r,s),g=Bt(x,u),w=Bt(p,v);if(f=[g[0]+w[0],g[1]+w[1],g[2]+w[2]],Ut(f)>this.epsilon)return f;let M=zt(n,i,e,t),b=zt(n,r,s,a);g=Bt(p,M),w=Bt(b,u);let R=Bt(x,v);return f=[g[0]+w[0]+R[0],g[1]+w[1]+R[1],g[2]+w[2]+R[2]],Ut(f)>this.epsilon?f:(g=Bt(b,v),w=Bt(x,M),f=[g[0]+w[0],g[1]+w[1],g[2]+w[2]],Ut(f)>this.epsilon?f:Bt(b,M))}}function xt(t){return 0<=t&&t<=1}class gt{constructor(t,e,i){const n=1e3*Number.EPSILON,r=n*n;if(Math.abs(t)<=n*Math.abs(e)+r*Math.abs(i))Math.abs(e)>n*Math.abs(i)?(this.roots=1,this.t1=-i/e):0==i?(this.roots=1,this.t1=0):this.roots=0;else{let r=.5*e/t,s=e*r;if(Math.abs(s)<=n*Math.abs(i)){let e=-i/t;e>=0?(this.roots=2,this.t2=Math.sqrt(e),this.t1=-this.t2):this.roots=0}else{let t=-2*i/s;if(t>-1){this.roots=2;let e=r*function(t){return t/(Math.sqrt(1+t)+1)}(t),i=-e-2*r;i<=e?(this.t1=i,this.t2=e):(this.t1=e,this.t2=i)}else-1==t?(this.roots=1,this.t1=this.t2=-r):this.roots=0}}}}class wt extends ut{constructor(t,e,i,n,r){if(super(),this.controlpoints=t,this.CenterIndex=e,this.MaterialIndex=i,n&&r)this.Min=n,this.Max=r;else{let t=this.Bounds(this.controlpoints);this.Min=t[0],this.Max=t[1]}}Bounds(t){let e=Array(3),i=Array(3),n=t.length,r=Array(n);for(let h=0;h<3;++h){for(let e=0;e<n;++e)r[e]=t[e][h];let l,c;if(l=c=r[0],4==n){l=Math.min(l,r[3]),c=Math.max(c,r[3]);let t=(s=r[0],a=r[1],o=r[2],[r[3]-s+3*(a-o),2*(s+o)-4*a,a-s]),e=new gt(t[0],t[1],t[2]);if(0!=e.roots&&xt(e.t1)){let t=Ct(r[0],r[1],r[2],r[3],e.t1);l=Math.min(l,t),c=Math.max(c,t)}if(2==e.roots&&xt(e.t2)){let t=Ct(r[0],r[1],r[2],r[3],e.t2);l=Math.min(l,t),c=Math.max(c,t)}}else{let t=r[1];l=Math.min(l,t),c=Math.max(c,t)}e[h]=l,i[h]=c}var s,a,o;return[[e[0],e[1],e[2]],[i[0],i[1],i[2]]]}setMaterialIndex(){this.setMaterial(Z,ye)}processLine(t){let e=t[0],i=t[1];if(!this.offscreen([e,i])){let t=[0,0,1];this.data.indices.push(this.data.vertex(e,t)),this.data.indices.push(this.data.vertex(i,t)),this.append()}}process(t){if(2==t.length)return this.processLine(t);let e=t[0],i=t[1],n=t[2],r=t[3],s=this.normal(Dt(e,i),Ft(e,i,n)),a=this.normal(Dt(n,r),Ft(r,n,i)),o=this.data.vertex(e,s),h=this.data.vertex(r,a);this.Render(t,o,h),this.data.indices.length>0&&this.append()}append(){Z.append(this.data)}notRendered(){Z.rendered=!1}Render(t,e,i){let n=t[0],r=t[1],s=t[2],a=t[3];if(Ht(n,r,s,a)<this.res2)this.offscreen([n,a])||(this.data.indices.push(e),this.data.indices.push(i));else{if(this.offscreen(t))return;let o=[.5*(n[0]+r[0]),.5*(n[1]+r[1]),.5*(n[2]+r[2])],h=[.5*(r[0]+s[0]),.5*(r[1]+s[1]),.5*(r[2]+s[2])],l=[.5*(s[0]+a[0]),.5*(s[1]+a[1]),.5*(s[2]+a[2])],c=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])],d=[.5*(h[0]+l[0]),.5*(h[1]+l[1]),.5*(h[2]+l[2])],m=[.5*(c[0]+d[0]),.5*(c[1]+d[1]),.5*(c[2]+d[2])],f=[n,o,c,m],u=[m,d,l,a],p=this.normal(function(t,e,i,n){return[i[0]+n[0]-t[0]-e[0],i[1]+n[1]-t[1]-e[1],i[2]+n[2]-t[2]-e[2]]}(n,r,s,a),function(t,e,i,n){return[3*t[0]-5*e[0]+i[0]+n[0],3*t[1]-5*e[1]+i[1]+n[1],3*t[2]-5*e[2]+i[2]+n[2]]}(n,r,s,a)),v=this.data.vertex(m,p);this.Render(f,e,v),this.Render(u,v,i)}}normal(t,e){let i=Vt(t,t),n=Vt(t,e);return[i*e[0]-n*t[0],i*e[1]-n*t[1],i*e[2]-n*t[2]]}}class Mt extends ut{constructor(t,e,i){super(),this.controlpoint=t,this.width=e,this.CenterIndex=0,this.MaterialIndex=i,this.Min=t,this.Max=t}setMaterialIndex(){this.setMaterial(K,Te)}process(t){this.data.indices.push(this.data.vertex0(this.controlpoint,this.width)),this.append()}append(){K.append(this.data)}notRendered(){K.rendered=!1}}class bt extends ut{constructor(t,e){super(),this.CenterIndex=t,this.MaterialIndex=e,this.controlpoints=window.Positions,this.Normals=window.Normals,this.Colors=window.Colors,this.Indices=window.Indices,this.transparent=c[this.MaterialIndex].diffuse[3]<1,this.Min=this.Bounds(this.controlpoints,Math.min),this.Max=this.Bounds(this.controlpoints,Math.max)}Bounds(t,e){let i=Array(3),n=t.length,r=Array(n);for(let s=0;s<3;++s){for(let e=0;e<n;++e)r[e]=t[e][s];i[s]=pt(r,e)}return[i[0],i[1],i[2]]}setMaterialIndex(){this.transparent?this.setMaterial(tt,Le):this.setMaterial(et,Ie)}process(t){this.data.vertices=new Array(6*t.length),it=this.Colors.length>0?-1-it:1+it;for(let e=0,i=this.Indices.length;e<i;++e){let i=this.Indices[e],n=i[0],r=t[n[0]],s=t[n[1]],a=t[n[2]],o=!this.offscreen([r,s,a]),h=i.length>1?i[1]:n;if(h&&0!=h.length||(h=n),this.Colors.length>0){let t=i.length>2?i[2]:n;t&&0!=t.length||(t=n);let e=this.Colors[t[0]],l=this.Colors[t[1]],c=this.Colors[t[2]];this.transparent|=e[3]+l[3]+c[3]<3,0==V?(this.data.iVertex(n[0],r,this.Normals[h[0]],o,e),this.data.iVertex(n[1],s,this.Normals[h[1]],o,l),this.data.iVertex(n[2],a,this.Normals[h[2]],o,c)):(this.data.iVertex(n[0],r,this.Normals[h[0]],o,e),this.data.iVertex(n[1],s,this.Normals[h[1]],o,l),this.data.iVertex(n[1],s,this.Normals[h[1]],o,l),this.data.iVertex(n[2],a,this.Normals[h[2]],o,c),this.data.iVertex(n[2],a,this.Normals[h[2]],o,c),this.data.iVertex(n[0],r,this.Normals[h[0]],o,e))}else 0==V?(this.data.iVertex(n[0],r,this.Normals[h[0]],o),this.data.iVertex(n[1],s,this.Normals[h[1]],o),this.data.iVertex(n[2],a,this.Normals[h[2]],o)):(this.data.iVertex(n[0],r,this.Normals[h[0]],o),this.data.iVertex(n[1],s,this.Normals[h[1]],o),this.data.iVertex(n[1],s,this.Normals[h[1]],o),this.data.iVertex(n[2],a,this.Normals[h[2]],o),this.data.iVertex(n[2],a,this.Normals[h[2]],o),this.data.iVertex(n[0],r,this.Normals[h[0]],o))}this.data.nvertices=t.length,this.data.indices.length>0&&this.append()}append(){this.transparent?tt.append(this.data):et.append(this.data)}notRendered(){this.transparent?tt.rendered=!1:et.rendered=!1}}function Rt(){M=-Math.tan(.5*o.angleOfView)*o.maxBound[2],_.x=_.y=0,_.z=.5*(o.minBound[2]+o.maxBound[2]),x=v=o.zoom0,S.zmin=o.minBound[2],S.zmax=o.maxBound[2],P.x=P.y=0,_e(),U=!0,Oe()}function Tt(){mat4.identity(T),Rt(),window.top.asyWebApplication&&window.top.asyWebApplication.setProjection(""),window.parent.asyProjection=!1}let yt=0,At=1,Et=2,It=3,Lt=4;function Nt(e=[]){let i=lt(t,vertex,t.VERTEX_SHADER,e),n=lt(t,fragment,t.FRAGMENT_SHADER,e),r=t.createProgram();return t.attachShader(r,i),t.attachShader(r,n),t.bindAttribLocation(r,yt,"position"),t.bindAttribLocation(r,At,"normal"),t.bindAttribLocation(r,Et,"materialIndex"),t.bindAttribLocation(r,It,"color"),t.bindAttribLocation(r,Lt,"width"),t.linkProgram(r),t.getProgramParameter(r,t.LINK_STATUS)||alert("Could not initialize shaders"),r}class Ot{constructor(t,e,i,n){this.m0=.5*(t+e);let r=.5*(e+i);this.m2=.5*(i+n),this.m3=.5*(this.m0+r),this.m4=.5*(r+this.m2),this.m5=.5*(this.m3+this.m4)}}class _t{constructor(t,e,i,n){this.m0=[.5*(t[0]+e[0]),.5*(t[1]+e[1]),.5*(t[2]+e[2])];let r=.5*(e[0]+i[0]),s=.5*(e[1]+i[1]),a=.5*(e[2]+i[2]);this.m2=[.5*(i[0]+n[0]),.5*(i[1]+n[1]),.5*(i[2]+n[2])],this.m3=[.5*(this.m0[0]+r),.5*(this.m0[1]+s),.5*(this.m0[2]+a)],this.m4=[.5*(r+this.m2[0]),.5*(s+this.m2[1]),.5*(a+this.m2[2])],this.m5=[.5*(this.m3[0]+this.m4[0]),.5*(this.m3[1]+this.m4[1]),.5*(this.m3[2]+this.m4[2])]}}class Pt{constructor(t){this.l003=t[0];let e=t[1],i=t[2],n=t[3],r=t[4],s=t[5];this.r300=t[6];let a=t[7],o=t[8];this.u030=t[9],this.u021=.5*(this.u030+s),this.u120=.5*(this.u030+o);let h=.5*(s+i),l=.5*(o+r),c=.5*(o+a),d=.5*(i+r);this.l012=.5*(i+this.l003);let m=.5*(r+n);this.r210=.5*(a+this.r300),this.l102=.5*(this.l003+e);let f=.5*(e+n);this.r201=.5*(n+this.r300),this.u012=.5*(this.u021+h),this.u210=.5*(this.u120+c),this.l021=.5*(h+this.l012);let u=.5*l+.25*(r+e);this.r120=.5*(c+this.r210);let p=.5*d+.25*(r+a),v=.25*(s+r)+.5*m;this.l201=.5*(this.l102+f),this.r102=.5*(f+this.r201),this.l210=.5*(p+this.l201),this.r012=.5*(p+this.r102),this.l300=.5*(this.l201+this.r102),this.r021=.5*(v+this.r120),this.u201=.5*(this.u210+v),this.r030=.5*(this.u210+this.r120),this.u102=.5*(this.u012+u),this.l120=.5*(this.l021+u),this.l030=.5*(this.u012+this.l021),this.l111=.5*(d+this.l102),this.r111=.5*(m+this.r210),this.u111=.5*(this.u021+l),this.c111=.25*(h+c+f+r)}}function St(t){let e=1/(Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])||1);return[t[0]*e,t[1]*e,t[2]*e]}function Ut(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function Vt(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Bt(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function Ct(t,e,i,n,r){let s=1-r,a=s*s;return a*s*t+r*(3*(a*e+r*s*i)+r*r*n)}function Dt(t,e){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function Ft(t,e,i){return[3*(t[0]+i[0])-6*e[0],3*(t[1]+i[1])-6*e[1],3*(t[2]+i[2])-6*e[2]]}function zt(t,e,i,n){return[n[0]-t[0]+3*(e[0]-i[0]),n[1]-t[1]+3*(e[1]-i[1]),n[2]-t[2]+3*(e[2]-i[2])]}function Ht(t,e,i,n){let r=[1/3*(n[0]-t[0]),1/3*(n[1]-t[1]),1/3*(n[2]-t[2])];return Math.max(Ut([e[0]-r[0]-t[0],e[1]-r[1]-t[1],e[2]-r[2]-t[2]]),Ut([n[0]-r[0]-i[0],n[1]-r[1]-i[1],n[2]-r[2]-i[2]]))}function Xt(t,e,i,n){let r=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],s=[n[0]-i[0],n[1]-i[1],n[2]-i[2]];return Math.max(Ut(Bt(r,St(s))),Ut(Bt(s,St(r))))/9}function Gt(t){return[Math.min(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.min(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.min(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function Wt(t){return[Math.max(t[0][0],t[1][0],t[2][0],t[3][0],t[4][0],t[5][0],t[6][0],t[7][0]),Math.max(t[0][1],t[1][1],t[2][1],t[3][1],t[4][1],t[5][1],t[6][1],t[7][1]),Math.max(t[0][2],t[1][2],t[2][2],t[3][2],t[4][2],t[5][2],t[6][2],t[7][2])]}function jt(t){oe||he(),B=!0,C=t.clientX,D=t.clientY}let kt,Yt,$t=!1;function qt(t){return Math.hypot(t[0].pageX-t[1].pageX,t[0].pageY-t[1].pageY)}function Kt(t){t.preventDefault(),oe||he();let e=t.targetTouches;pe=ve=$t=!1,ue||(1!=e.length||B||(Yt=(new Date).getTime(),touchId=e[0].identifier,C=e[0].pageX,D=e[0].pageY),2!=e.length||B||(touchId=e[0].identifier,kt=qt(e),$t=!0))}function Zt(t){B=!1}function Qt(t,e,i,n,r){if(t==i&&e==n)return;let[s,a]=function(t,e){let i=re(t),n=re(e),r=Vt(i,n);return[r>1?0:r<-1?f:Math.acos(r),St(Bt(i,n))]}([t,-e],[i,-n]);mat4.fromRotation(O,2*r*R*s/v,a),mat4.multiply(T,O,T)}function Jt(t,e,i,n){let r=1/v;P.x+=(i-t)*r*s,P.y-=(n-e)*r*a}function te(t,e,i,n){o.orthographic?Jt(t,e,i,n):(_.x+=(i-t)*(S.xmax-S.xmin),_.y-=(n-e)*(S.ymax-S.ymin))}function ee(){var t,e;t=A,e=T,mat4.fromTranslation(O,[_.x,_.y,_.z]),mat4.invert(N,O),mat4.multiply(t,e,N),mat4.multiply(t,O,t),mat4.translate(A,A,[_.x,_.y,0]),mat3.fromMat4(L,A),mat3.invert(I,L),mat4.multiply(E,y,A)}function ie(){let t=Math.sqrt(Number.MAX_VALUE),e=1/t;v<=e&&(v=e),v>=t&&(v=t),(1.5*v<x||v>1.5*x)&&(U=!0,x=v)}function ne(t){let e=o.zoomStep*a*t;const i=Math.log(.1*Number.MAX_VALUE)/Math.log(o.zoomFactor);Math.abs(e)<i&&(v*=o.zoomFactor**e,ie())}function re(t){let e=t[0],i=t[1],n=Math.hypot(e,i);return n>1&&(denom=1/n,e*=denom,i*=denom),[e,i,Math.sqrt(Math.max(1-i*i-e*e,0))]}function se(t,e,i,n){ne(e-n)}function ae(t,e,i,n=1){let r;switch(i){case 1:r=Qt;break;case 2:r=Jt;break;case 3:r=se;break;case 4:r=te;break;default:r=(t,e,i,n)=>{}}r((C-s)/s,(D-a)/a,(t-s)/s,(e-a)/a,n),C=t,D=e,_e(),Oe()}let oe=0;function he(){oe=1,o.canvas.addEventListener("wheel",me,!1)}function le(){let t,e,i;[t,e,i]=function(){let t=Array(3),e=Array(3),i=Array(3),n=_.x,r=_.y,s=.5*(S.zmin+S.zmax);for(let a=0;a<3;++a){let h=0,l=0,c=0,d=4*a;for(let t=0;t<4;++t){let e=4*t,i=T[e],a=T[e+1],m=T[e+2],f=T[e+3],u=o.Transform[d+t];h+=u*(f-n*i-r*a-s*m),c+=u*a,l+=u*(f-n*i-r*a)}t[a]=h,e[a]=c,i[a]=l}return[t,e,i]}();let n=o.orthographic?" orthographic(":" perspective(",r="".padStart(n.length),s="currentprojection=\n"+n+"camera=("+t+"),\n"+r+"up=("+e+"),\n"+r+"target=("+i+"),\n"+r+"zoom="+v*o.initialZoom/o.zoom0;return o.orthographic||(s+=",\n"+r+"angle="+2*Math.atan(Math.tan(.5*o.angleOfView)/v)/u),0==g&&0==w||(s+=",\n"+r+"viewportshift=("+g+","+w+")"),o.orthographic||(s+=",\n"+r+"autoadjust=false"),s+=");\n",window.parent.asyProjection=!0,s}function ce(t){if(oe||he(),o.embedded&&oe&&27==t.keyCode)return oe=0,void o.canvas.removeEventListener("wheel",me,!1);let e=[];switch(t.key){case"x":e=[1,0,0];break;case"y":e=[0,1,0];break;case"z":e=[0,0,1];break;case"h":Tt();break;case"m":++V,3==V&&(V=0),2!=V&&(o.embedded||st(),rt(o.ibl)),U=!0,Oe();break;case"+":case"=":case">":v*=o.zoomFactor,de();break;case"-":case"_":case"<":v/=o.zoomFactor,de();break;case"c":window.top.asyWebApplication||prompt("Ctrl+c Enter to copy currentprojection to clipboard; then append to asy file:",le())}e.length>0&&(mat4.rotate(T,T,.1,e),ee(),Oe())}function de(){ie(),_e(),Oe()}function me(t){t.preventDefault(),t.deltaY<0?v*=o.zoomFactor:v/=o.zoomFactor,de()}function fe(t){if(!B)return;let e,i=t.clientX,n=t.clientY;e=t.getModifierState("Control")?2:t.getModifierState("Shift")?3:t.getModifierState("Alt")?4:1,ae(i,n,e)}let ue=!1,pe=!1,ve=!1;function xe(t){if(t.preventDefault(),ue)return;let e=t.targetTouches;if(!$t&&1==e.length&&touchId==e[0].identifier){let t=e[0].pageX,i=e[0].pageY,n=t-C,r=i-D,s=n*n+r*r<=o.shiftHoldDistance*o.shiftHoldDistance;if(s&&!pe&&!ve&&(new Date).getTime()-Yt>o.shiftWaitTime&&(navigator.vibrate&&window.navigator.vibrate(o.vibrateTime),pe=!0),pe)ae(t,i,2);else if(!s){ve=!0,ae(e[0].pageX,e[0].pageY,1,.5)}}if($t&&!pe&&2==e.length&&touchId==e[0].identifier){let t=qt(e),i=t-kt;ue=!0,i*=o.zoomPinchFactor,i>o.zoomPinchCap&&(i=o.zoomPinchCap),i<-o.zoomPinchCap&&(i=-o.zoomPinchCap),ne(i/b),kt=t,pe=ve=ue=!1,_e(),Oe()}}let ge,we,Me,be,Re=[];function Te(){dt(K,ge),K.clear()}function ye(){dt(Z,we),Z.clear()}function Ae(){dt(Q,we),Q.clear()}function Ee(){dt(J,Me),J.clear()}function Ie(){dt(et,be),et.rendered=!1,et.clear()}function Le(){let e=tt.indices;if(V>0)return dt(tt,be,e),void tt.clear();if(e.length>0){!function(t){let e=A[2],i=A[6],n=A[10];Re.length=t.length;for(let r=0;r<t.length;++r){let s=6*r;Re[r]=e*t[s]+i*t[s+1]+n*t[s+2]}}(tt.vertices);let i=e.length/3,n=Array(i).fill().map((t,e)=>e);n.sort((function(t,i){let n=3*t;Ia=e[n],Ib=e[n+1],Ic=e[n+2];let r=3*i;return IA=e[r],IB=e[r+1],IC=e[r+2],Re[Ia]+Re[Ib]+Re[Ic]<Re[IA]+Re[IB]+Re[IC]?-1:1}));let r=Array(e.length);for(let t=0;t<i;++t){let i=3*n[t];r[3*t]=e[i],r[3*t+1]=e[i+1],r[3*t+2]=e[i+2]}t.depthMask(!1),dt(tt,be,r),tt.rendered=!1,t.depthMask(!0)}tt.clear()}function Ne(){Te(),ye(),Ae(),Ee(),Ie(),Le(),requestAnimationFrame(Ne)}function Oe(){o.embedded&&(i.width=o.canvasWidth,i.height=o.canvasHeight,Pe()),t.clearColor(o.background[0],o.background[1],o.background[2],o.background[3]),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT);for(const t of h)t.render();Ne(),o.embedded&&(n.clearRect(0,0,o.canvasWidth,o.canvasHeight),n.drawImage(i,0,0)),0==V&&(U=!1)}function _e(){!function(t,e,i,n){let r=t/e;g=(i/t+o.viewportShift[0])*v,w=(n/e+o.viewportShift[1])*v;let s=1/v;if(o.orthographic){let t=o.maxBound[0]-o.minBound[0],e=o.maxBound[1]-o.minBound[1];if(t<e*r){let t=.5*e*r*s,i=2*t*g,n=e*s*w;S.xmin=-t-i,S.xmax=t-i,S.ymin=o.minBound[1]*s-n,S.ymax=o.maxBound[1]*s-n}else{let e=.5*t*s/r,i=t*s*g,n=2*e*w;S.xmin=o.minBound[0]*s-i,S.xmax=o.maxBound[0]*s-i,S.ymin=-e-n,S.ymax=e-n}}else{let t=M*s,e=t*r,i=2*e*g,n=2*t*w;S.xmin=-e-i,S.xmax=e-i,S.ymin=-t-n,S.ymax=t-n}}(o.canvasWidth,o.canvasHeight,P.x,P.y),(o.orthographic?mat4.ortho:mat4.frustum)(y,S.xmin,S.xmax,S.ymin,S.ymax,-S.zmax,-S.zmin),ee(),window.top.asyWebApplication&&window.top.asyWebApplication.setProjection(le())}function Pe(){t.viewportWidth=o.canvasWidth,t.viewportHeight=o.canvasHeight,t.viewport(.5*(o.canvas.width-o.canvasWidth),.5*(o.canvas.height-o.canvasHeight),o.canvasWidth,o.canvasHeight),t.scissor(0,0,o.canvas.width,o.canvas.height)}function Se(t,e){t>void 0&&(t=void 0),e>void 0&&(e=void 0),P.x*=t/o.canvasWidth,P.y*=e/o.canvasHeight,o.canvasWidth=t,o.canvasHeight=e,o.embedded&&(o.canvas.width=i.width=o.canvasWidth,o.canvas.height=i.height=o.canvasHeight),b=Math.hypot(o.canvasWidth,o.canvasHeight),s=.5*o.canvas.width,a=.5*o.canvas.height,R=1+8*Math.hypot(o.viewportMargin[0],o.viewportMargin[1])/b,Pe(),_e(),U=!0}function Ue(){if(o.zoom0=o.initialZoom,window.top.asyWebApplication&&""==window.top.asyWebApplication.getProjection()&&(window.parent.asyProjection=!1),o.absolute&&!o.embedded)o.canvasWidth=o.canvasWidth0*window.devicePixelRatio,o.canvasHeight=o.canvasHeight0*window.devicePixelRatio;else{let t=o.canvasWidth0/o.canvasHeight0;o.canvasWidth=Math.max(window.innerWidth-10,10),o.canvasHeight=Math.max(window.innerHeight-10,10),!o.orthographic&&!window.parent.asyProjection&&o.canvasWidth<o.canvasHeight*t&&(o.zoom0*=o.canvasWidth/(o.canvasHeight*t))}o.canvas.width=o.canvasWidth,o.canvas.height=o.canvasHeight;window.innerWidth,window.innerHeight;let t=1/o.zoom0;o.viewportShift[0]*=t,o.viewportShift[1]*=t,Se(o.canvasWidth,o.canvasHeight),Rt()}class Ve{constructor(t,e){if(this.center=t,e){let t=e[0],i=e[1];this.ct=Math.cos(t),this.st=Math.sin(t),this.cp=Math.cos(i),this.sp=Math.sin(i)}}T0(t){return[t[0]+this.center[0],t[1]+this.center[1],t[2]+this.center[2]]}T(t){let e=t[0],i=t[1],n=t[2],r=e*this.ct+n*this.st;return[r*this.cp-i*this.sp+this.center[0],r*this.sp+i*this.cp+this.center[1],-e*this.st+n*this.ct+this.center[2]]}}function Be(t,e,i){let n=[t(e),t([e[0],e[1],i[2]]),t([e[0],i[1],e[2]]),t([e[0],i[1],i[2]]),t([i[0],e[1],e[2]]),t([i[0],e[1],i[2]]),t([i[0],i[1],e[2]]),t(i)];return[Gt(n),Wt(n)]}let Ce=4/3*(Math.sqrt(2)-1);async function De(t){return(await fetch(t)).arrayBuffer()}function Fe(t){return t.getBytes().filter((t,e)=>e%4!=3)}function ze(e,i,n=t.RGB16F){let r=e.width(),s=e.height(),a=t.createTexture();return t.activeTexture(t.TEXTURE0+i),t.bindTexture(t.TEXTURE_2D,a),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,n,r,s,0,t.RGB,t.FLOAT,Fe(e)),a}window.webGLStart=function(){o.canvas=document.getElementById("Asymptote"),o.embedded=window.top.document!=document,ht(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.enable(t.DEPTH_TEST),t.enable(t.SCISSOR_TEST),o.canvas.onmousedown=jt,document.onmouseup=Zt,document.onmousemove=fe,o.canvas.onkeydown=ce,o.embedded||he(),o.canvas.addEventListener("touchstart",Kt,!1),o.canvas.addEventListener("touchend",Zt,!1),o.canvas.addEventListener("touchcancel",Zt,!1),o.canvas.addEventListener("touchleave",Zt,!1),o.canvas.addEventListener("touchmove",xe,!1),document.addEventListener("keydown",ce,!1),o.canvasWidth0=o.canvasWidth,o.canvasHeight0=o.canvasHeight,mat4.identity(T),0!=window.innerWidth&&0!=window.innerHeight&&Ue(),window.addEventListener("resize",Ue,!1),o.ibl&&async function(){let e=o.imageURL+o.image+"/";function i(t){return new Promise(e=>setTimeout(e,t))}for(;!Module.EXRLoader;)await i(0);promises=[De(o.imageURL+"refl.exr").then(t=>{let e=new Module.EXRLoader(t);j=ze(e,0)}),De(e+"diffuse.exr").then(t=>{let e=new Module.EXRLoader(t);W=ze(e,1)})],refl_promise=[],refl_promise.push(De(e+"refl0.exr"));for(let t=1;t<=8;++t)refl_promise.push(De(e+"refl"+t+"w.exr"));finished_promise=Promise.all(refl_promise).then(e=>{let i=t.createTexture();t.activeTexture(t.TEXTURE0+2),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.bindTexture(t.TEXTURE_2D,i),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAX_LEVEL,e.length-1),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameterf(t.TEXTURE_2D,t.TEXTURE_MIN_LOD,0),t.texParameterf(t.TEXTURE_2D,t.TEXTURE_MAX_LOD,8);for(let i=0;i<e.length;++i){let n=new Module.EXRLoader(e[i]);t.texImage2D(t.TEXTURE_2D,i,t.RGB16F,n.width(),n.height(),0,t.RGB,t.FLOAT,Fe(n))}G=i}),promises.push(finished_promise),await Promise.all(promises)}().then(k).then(Rt),Tt()},window.light=function(t,e){l.push(new nt(t,e))},window.material=function(t,e,i,n,r,s){c.push(new Y(t,e,i,n,r,s))},window.patch=function(t,e,i,n){h.push(new vt(t,e,i,n))},window.curve=function(t,e,i){h.push(new wt(t,e,i))},window.pixel=function(t,e,i){h.push(new Mt(t,e,i))},window.triangles=function(t,e){h.push(new bt(t,e)),window.Positions=F=[],window.Normals=z=[],window.Colors=H=[],window.Indices=X=[]},window.sphere=function(t,e,i,n,r){let s,a,o,l,c,d,m=.524670512339254,f=.595936986722291,u=.954967051233925,p=.0820155480083437,v=.996685028842544,x=.0549670512339254,g=.998880711874577,w=.0405017186586849,M=[[[1,0,0],[1,0,m],[f,0,u],[p,0,v],[1,Ce,0],[1,Ce,m],[f,Ce*f,u],[p,Ce*p,v],[Ce,1,0],[Ce,1,m],[Ce*f,f,u],[Ce*p,p,v],[0,1,0],[0,1,m],[0,f,u],[0,p,v]],[[p,0,v],[p,Ce*p,v],[x,0,g],[Ce*p,p,v],[w,w,1],[.05*Ce,0,1],[0,p,v],[0,x,g],[0,.05*Ce,1],[0,0,1]]],b=new Ve(t,r);function R(t){let e=Array(t.length);for(let i=0;i<t.length;++i){let n=t[i];e[i]=c([s*n[0],a*n[1],o*n[2]])}return e}r?(l=1,d=0,c=b.T.bind(b)):(l=-1,d=-e,c=b.T0.bind(b));let T=Be(c,[-e,-e,d],[e,e,e]),y=T[0],A=T[1];for(let t=-1;t<=1;t+=2){s=t*e;for(let t=-1;t<=1;t+=2){a=t*e;for(let t=l;t<=1;t+=2){o=t*e;for(let t=0;t<2;++t)h.push(new vt(R(M[t]),i,n,null,y,A))}}}},window.disk=function(t,e,i,n,r){let s=1-2*Ce/3,a=[[1,0,0],[1,-Ce,0],[Ce,-1,0],[0,-1,0],[1,Ce,0],[s,0,0],[0,-s,0],[-Ce,-1,0],[Ce,1,0],[0,s,0],[-s,0,0],[-1,-Ce,0],[0,1,0],[-Ce,1,0],[-1,Ce,0],[-1,0,0]],o=new Ve(t,r),l=Be(o.T.bind(o),[-e,-e,0],[e,e,0]);h.push(new vt(function(t){let i=Array(t.length);for(let n=0;n<t.length;++n){let r=t[n];i[n]=o.T([e*r[0],e*r[1],0])}return i}(a),i,n,null,l[0],l[1]))},window.cylinder=function(t,e,i,n,r,s,a){let o,l,c=[[1,0,0],[1,0,1/3],[1,0,2/3],[1,0,1],[1,Ce,0],[1,Ce,1/3],[1,Ce,2/3],[1,Ce,1],[Ce,1,0],[Ce,1,1/3],[Ce,1,2/3],[Ce,1,1],[0,1,0],[0,1,1/3],[0,1,2/3],[0,1,1]],d=new Ve(t,s);function m(t){let e=Array(t.length);for(let n=0;n<t.length;++n){let r=t[n];e[n]=d.T([o*r[0],l*r[1],i*r[2]])}return e}let f=Be(d.T.bind(d),[-e,-e,0],[e,e,i]),u=f[0],p=f[1];for(let t=-1;t<=1;t+=2){o=t*e;for(let t=-1;t<=1;t+=2)l=t*e,h.push(new vt(m(c),n,r,null,u,p))}if(a){let e=d.T([0,0,i]);h.push(new wt([t,e],n,r,t,e))}},window.tube=function(t,e,i,n,r){let s=function(t,e,i,n,r){class s{constructor(t,e,i){this.p=t,this.r=e,this.t=i,this.s=Bt(i,e)}}let a=Number.EPSILON*Math.max(Ut(t),Ut(e),Ut(i),Ut(n));function o(r){if(1==r){let r=[n[0]-i[0],n[1]-i[1],n[2]-i[2]];return Ut(r)>a?St(r):(r=[2*i[0]-e[0]-n[0],2*i[1]-e[1]-n[1],2*i[2]-e[2]-n[2]],Ut(r)>a?St(r):[n[0]-t[0]+3*(e[0]-i[0]),n[1]-t[1]+3*(e[1]-i[1]),n[2]-t[2]+3*(e[2]-i[2])])}let s=[n[0]-t[0]+3*(e[0]-i[0]),n[1]-t[1]+3*(e[1]-i[1]),n[2]-t[2]+3*(e[2]-i[2])],o=[2*(t[0]+i[0])-4*e[0],2*(t[1]+i[1])-4*e[1],2*(t[2]+i[2])-4*e[2]],h=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],l=r*r,c=[s[0]*l+o[0]*r+h[0],s[1]*l+o[1]*r+h[1],s[2]*l+o[2]*r+h[2]];return Ut(c)>a?St(c):(l=2*r,c=[s[0]*l+o[0],s[1]*l+o[1],s[2]*l+o[2]],Ut(c)>a?St(c):St(s))}let h=Array(r.length),l=[e[0]-t[0],e[1]-t[1],e[2]-t[2]];Ut(l)<a&&(l=[t[0]-2*e[0]+i[0],t[1]-2*e[1]+i[1],t[2]-2*e[2]+i[2]],Ut(l)<a&&(l=[n[0]-t[0]+3*(e[0]-i[0]),n[1]-t[1]+3*(e[1]-i[1]),n[2]-t[2]+3*(e[2]-i[2])])),l=St(l);let c=function(t){let e=Bt(t,[0,1,0]),i=Number.EPSILON*Ut(t);return Ut(e)>i?St(e):(e=Bt(t,[0,0,1]),Ut(e)>i?St(e):[1,0,0])}(l);h[0]=new s(t,c,l);for(let a=1;a<r.length;++a){let l=h[a-1],c=r[a],d=1-c,m=d*d,f=m*d,u=3*c;m*=u,d*=u*c;let p=c*c*c,v=[f*t[0]+m*e[0]+d*i[0]+p*n[0],f*t[1]+m*e[1]+d*i[1]+p*n[1],f*t[2]+m*e[2]+d*i[2]+p*n[2]],x=[v[0]-l.p[0],v[1]-l.p[1],v[2]-l.p[2]];if(0!=x[0]||0!=x[1]||0!=x[2]){let t=l.r,e=St(x),i=l.t,n=Vt(e,i),r=[i[0]-2*n*e[0],i[1]-2*n*e[1],i[2]-2*n*e[2]];i=o(c);let d=2*Vt(e,t),m=[t[0]-d*e[0],t[1]-d*e[1],t[2]-d*e[2]],f=St([i[0]-r[0],i[1]-r[1],i[2]-r[2]]),u=2*Vt(f,m);m=[m[0]-u*f[0],m[1]-u*f[1],m[2]-u*f[2]],h[a]=new s(v,St(m),St(i))}else h[a]=h[a-1]}return h}(t[0],t[1],t[2],t[3],[0,1/3,2/3,1]),a=Ce*e,o=[[e,0],[e,a],[a,e],[0,e]];function l(e,r,a,l){let c=Array(16);for(let i=0;i<4;++i){let n=s[i],h=n.r[0],d=n.s[0],m=h*e+d*r,f=h*a+d*l;h=n.r[1],d=n.s[1];let u=h*e+d*r,p=h*a+d*l;h=n.r[2],d=n.s[2];let v=h*e+d*r,x=h*a+d*l,g=t[i],w=g[0];w1=g[1],w2=g[2];for(let t=0;t<4;++t){let e=o[t],n=e[0],r=e[1];c[4*i+t]=[m*n+f*r+w,u*n+p*r+w1,v*n+x*r+w2]}}h.push(new vt(c,i,n))}l(1,0,0,1),l(0,-1,1,0),l(-1,0,0,-1),l(0,1,-1,0),r&&h.push(new wt(t,i,n))},window.Positions=F,window.Normals=z,window.Colors=H,window.Indices=X}(); diff --git a/graphics/asymptote/bezierpatch.cc b/graphics/asymptote/bezierpatch.cc index 775c282e0c..29ef5c28c5 100644 --- a/graphics/asymptote/bezierpatch.cc +++ b/graphics/asymptote/bezierpatch.cc @@ -800,7 +800,6 @@ void Triangles::queue(size_t nP, const triple* P, size_t nN, const triple* N, notRendered(); data.Vertices.resize(nP); - data.indices.resize(3*nI); MaterialIndex=nC ? -1-materialIndex : 1+materialIndex; @@ -824,7 +823,7 @@ void Triangles::queue(size_t nP, const triple* P, size_t nN, const triple* N, (GLfloat) C1.A}; GLfloat c2[]={(GLfloat) C2.R,(GLfloat) C2.G,(GLfloat) C2.B, (GLfloat) C2.A}; - transparent |= c0[3]+c1[3]+c2[3] < 765; + transparent |= c0[3]+c1[3]+c2[3] < 3.0; data.Vertices[PI0]=VertexData(P0,N[NI[0]],c0); data.Vertices[PI1]=VertexData(P1,N[NI[1]],c1); data.Vertices[PI2]=VertexData(P2,N[NI[2]],c2); @@ -834,11 +833,11 @@ void Triangles::queue(size_t nP, const triple* P, size_t nN, const triple* N, data.Vertices[PI2]=VertexData(P2,N[NI[2]]); } triple Q[]={P0,P1,P2}; + std::vector<GLuint> &q=data.indices; if(!offscreen(3,Q)) { - size_t i3=3*i; - data.indices[i3]=PI0; - data.indices[i3+1]=PI1; - data.indices[i3+2]=PI2; + q.push_back(PI0); + q.push_back(PI1); + q.push_back(PI2); } } append(); diff --git a/graphics/asymptote/camp.l b/graphics/asymptote/camp.l index b62de16f5c..b4074058e8 100644 --- a/graphics/asymptote/camp.l +++ b/graphics/asymptote/camp.l @@ -168,7 +168,7 @@ void reportEOF() { assert(eof); error(); em << eofMessage; - em.sync(); + em.sync(true); } position stringpos; // The position of the start of the string. diff --git a/graphics/asymptote/camperror.cc b/graphics/asymptote/camperror.cc index f124e85d78..945b3ede5e 100644 --- a/graphics/asymptote/camperror.cc +++ b/graphics/asymptote/camperror.cc @@ -22,7 +22,7 @@ void reportError(const string& desc) { em.runtime(vm::getPos()); em << desc; - em.sync(); + em.sync(true); throw handled_error(); } @@ -31,14 +31,14 @@ void reportWarning(const string& desc) { em.warning(vm::getPos()); em << desc; - em.sync(); + em.sync(true); } void reportFatal(const string& desc) { em.fatal(vm::getPos()); em << desc; - em.sync(); + em.sync(true); em.statusError(); try { throw quit(); diff --git a/graphics/asymptote/configure b/graphics/asymptote/configure index 38dd93bbb9..ab27d595a3 100755 --- a/graphics/asymptote/configure +++ b/graphics/asymptote/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Asymptote 2.90. +# Generated by GNU Autoconf 2.71 for Asymptote 2.91. # # Report bugs to <https://github.com/vectorgraphics/asymptote/issues>. # @@ -611,8 +611,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Asymptote' PACKAGE_TARNAME='asymptote' -PACKAGE_VERSION='2.90' -PACKAGE_STRING='Asymptote 2.90' +PACKAGE_VERSION='2.91' +PACKAGE_STRING='Asymptote 2.91' PACKAGE_BUGREPORT='https://github.com/vectorgraphics/asymptote/issues' PACKAGE_URL='' @@ -1326,7 +1326,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Asymptote 2.90 to adapt to many kinds of systems. +\`configure' configures Asymptote 2.91 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1392,7 +1392,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Asymptote 2.90:";; + short | recursive ) echo "Configuration of Asymptote 2.91:";; esac cat <<\_ACEOF @@ -1508,7 +1508,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Asymptote configure 2.90 +Asymptote configure 2.91 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1988,7 +1988,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Asymptote $as_me 2.90, which was +It was created by Asymptote $as_me 2.91, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -10569,7 +10569,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Asymptote $as_me 2.90, which was +This file was extended by Asymptote $as_me 2.91, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10633,7 +10633,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Asymptote config.status 2.90 +Asymptote config.status 2.91 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/graphics/asymptote/configure.ac b/graphics/asymptote/configure.ac index 7e6dd1aaa1..a3d7474546 100644 --- a/graphics/asymptote/configure.ac +++ b/graphics/asymptote/configure.ac @@ -3,7 +3,7 @@ # this file. AC_PREREQ(2) -AC_INIT([Asymptote],[2.90],[https://github.com/vectorgraphics/asymptote/issues]) +AC_INIT([Asymptote],[2.91],[https://github.com/vectorgraphics/asymptote/issues]) VERSION=$PACKAGE_VERSION AC_SUBST(VERSION) m4_include([ax_pthread.m4]) diff --git a/graphics/asymptote/dec.cc b/graphics/asymptote/dec.cc index d969ac5f02..8b48479485 100644 --- a/graphics/asymptote/dec.cc +++ b/graphics/asymptote/dec.cc @@ -212,7 +212,7 @@ bool block::transAsTemplatedField( if (!dec) { em.error(getPos()); em << "expected 'typedef import(<types>);'"; - em.sync(); + em.sync(true); return false; } if(!dec->transAsParamMatcher(e, r, args, caller)) @@ -888,7 +888,7 @@ varEntry *accessModule(position pos, coenv &e, record *r, symbol id) if (!imp) { em.error(pos); em << "could not load module '" << filename << "'"; - em.sync(); + em.sync(true); return 0; } else { @@ -923,7 +923,7 @@ varEntry *accessTemplatedModule(position pos, coenv &e, record *r, symbol id, if (theName == symbol::nullsym) { em.error(theType->getPos()); em << "expected typename="; - em.sync(); + em.sync(true); return nullptr; } computedArgs->push_back(new namedTyEntry( @@ -935,7 +935,7 @@ varEntry *accessTemplatedModule(position pos, coenv &e, record *r, symbol id, if (!imp) { em.error(pos); em << "could not load module '" << id << "'"; - em.sync(); + em.sync(true); return nullptr; } else { @@ -1246,7 +1246,7 @@ void receiveTypedefDec::transAsField(coenv& e, record *r) { } else { em << "templated module access requires template parameters"; } - em.sync(); + em.sync(true); } @@ -1375,7 +1375,7 @@ void includedec::loadFailed(coenv &) { em.warning(getPos()); em << "could not parse file of name '" << filename << "'"; - em.sync(); + em.sync(true); } void includedec::transAsField(coenv &e, record *r) diff --git a/graphics/asymptote/doc/CAD.pdf b/graphics/asymptote/doc/CAD.pdf Binary files differindex 819509abff..f9f1b32c49 100644 --- a/graphics/asymptote/doc/CAD.pdf +++ b/graphics/asymptote/doc/CAD.pdf diff --git a/graphics/asymptote/doc/FAQ/asy-faq.info b/graphics/asymptote/doc/FAQ/asy-faq.info index e66a938dae..af568c7b23 100644 --- a/graphics/asymptote/doc/FAQ/asy-faq.info +++ b/graphics/asymptote/doc/FAQ/asy-faq.info @@ -10,7 +10,7 @@ END-INFO-DIR-ENTRY File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir) ASYMPTOTE FREQUENTLY ASKED QUESTIONS - 2024-06-21 + 2024-08-15 This is the list of Frequently Asked Questions about Asymptote (asy). diff --git a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf Binary files differindex de1fb5b2da..b996dcb3bb 100644 --- a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf +++ b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf diff --git a/graphics/asymptote/doc/asy-latex.pdf b/graphics/asymptote/doc/asy-latex.pdf Binary files differindex e09c0b928e..94469b45fb 100644 --- a/graphics/asymptote/doc/asy-latex.pdf +++ b/graphics/asymptote/doc/asy-latex.pdf diff --git a/graphics/asymptote/doc/asy.1 b/graphics/asymptote/doc/asy.1 index d2686af927..ca1a45e120 100644 --- a/graphics/asymptote/doc/asy.1 +++ b/graphics/asymptote/doc/asy.1 @@ -109,7 +109,7 @@ Compress images in PDF output [true]. -convertOptions str [] .TP .B \-d,\-debug -Enable debugging messages [false]. +Enable debugging messages and traceback [false]. .TP .B \-devicepixelratio n Ratio of physical to logical pixels [1]. diff --git a/graphics/asymptote/doc/asyRefCard.pdf b/graphics/asymptote/doc/asyRefCard.pdf Binary files differindex dcfb6417e4..1a15def5a7 100644 --- a/graphics/asymptote/doc/asyRefCard.pdf +++ b/graphics/asymptote/doc/asyRefCard.pdf diff --git a/graphics/asymptote/doc/asymptote.pdf b/graphics/asymptote/doc/asymptote.pdf Binary files differindex a5de59f7c4..75e8cc5b99 100644 --- a/graphics/asymptote/doc/asymptote.pdf +++ b/graphics/asymptote/doc/asymptote.pdf diff --git a/graphics/asymptote/doc/asymptote.texi b/graphics/asymptote/doc/asymptote.texi index f37789114f..12e125fbf3 100644 --- a/graphics/asymptote/doc/asymptote.texi +++ b/graphics/asymptote/doc/asymptote.texi @@ -201,7 +201,7 @@ Labels and equations are typeset with @code{LaTeX}, for overall document consistency, yielding the same high-quality level of typesetting that @code{LaTeX} provides for scientific text. By default it produces @code{PostScript} output, but it can also generate @code{OpenGL}, @code{PDF}, -@code{SVG}, @code{WebGL}, @code{V3D}, and @code{PRC} vector graphics, +@code{SVG}, @code{WebGL}, @code{V3D}, and legacy @code{PRC} vector graphics, along with any format that the @code{ImageMagick} package can produce. You can even try it out in your Web browser without installing it, using the @code{Asymptote Web Application} @@ -1460,9 +1460,10 @@ In the second form, the elements of @code{z} are taken to be successive nodes of path @code{g}. The pens in @code{p} must belong to the same color space. Illustrations of Gouraud shading are provided in the example file @code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/Gouraud.pdf,,Gouraud}@uref{https://asymptote.sourceforge.io/gallery/PDFs/Gouraud.asy,,.asy}}. -The edge flags used in Gouraud shading are documented here: +The edge flags used in Gouraud shading are documented on pages 270--274 +of the PostScript Language Reference (3rd edition): @quotation -@url{https://www.adobe.com/content/dam/acom/en/devnet/postscript/pdfs/TN5600.SmoothShading.pdf} +@url{https://www.adobe.com/jp/print/postscript/pdfs/PLRM.pdf} @end quotation @cindex Coons shading @@ -1798,7 +1799,7 @@ it approximates a straight line. @cindex @code{and} @cindex @code{atleast} One can change the spline tension from its default value of 1 to any -real value greater than or equal to 0.75 (cf. John D. Hobby, Discrete and +real value greater than or equal to 0.75 (see John D. Hobby, Discrete and Computational Geometry 1, 1986): @verbatim draw((100,0)..tension 2 ..(100,100)..(0,100)); @@ -3913,8 +3914,10 @@ that can be used for importing @code{LaTeX} packages. @end table +@anchor{deferred drawing} @node Deferred drawing @section Deferred drawing +@cindex deferred drawing It is sometimes desirable to have elements of a fixed absolute size, independent of the picture scaling from user to @code{PostScript} coordinates. @@ -5234,7 +5237,9 @@ function (equivalent to @code{fabs(real)}), an @code{abs(pair)} function @cindex @code{histogram} @cindex @code{factorial} @cindex @code{choose} -Random numbers can be seeded with @code{srand(int)} and generated with +Random numbers can be seeded with @code{srand(int)} +(for example, with @code{srand(round((cputime().parent.clock%1)*1e9))}) +and generated with the @code{int rand()} function, which returns a random integer between 0 and the integer @code{randMax}. The @code{unitrand()} function returns a random number uniformly distributed in the interval [0,1]. @@ -6649,7 +6654,6 @@ option to disable this feature. @node simplex, math, plain, Base modules @section @code{simplex} @cindex @code{simplex} -@cindex @code{deferred drawing} This module solves the general linear programming problem using the simplex method. @@ -6658,7 +6662,8 @@ simplex method. @cindex @code{simplex2} @cindex @code{deferred drawing} This module solves a special case of the two-variable linear programming -problem used by the module @code{plain} for automatic sizing of pictures. +problem used by the module @code{plain} for automatic sizing of +pictures (@pxref{deferred drawing}). @node math, interpolate, simplex, Base modules @section @code{math} @@ -6863,11 +6868,9 @@ This module creates a struct parameterized by the types specified in strings @code{key} and @code{value}, mapping keys to values with a specified default: @verbatim -import map; - -mapTemplate(name="map",key="string",value="int",default="-1"); +from map(Key=string, Value=int) access map; -map M; +map M=map(Default=-1); M.add("z",2); M.add("a",3); @@ -8087,7 +8090,7 @@ dimensions except that triples @code{(x,y,z)} are used in place of pairs generalization of John Hobby's spline algorithm is shape-invariant under three-dimensional rotation, scaling, and shifting, and reduces in the planar case to the two-dimensional algorithm used in @code{Asymptote}, -@code{MetaPost}, and @code{MetaFont} [cf.@ J. C. Bowman, Proceedings in +@code{MetaPost}, and @code{MetaFont} [see J. C. Bowman, Proceedings in Applied Mathematics and Mechanics, 7:1, 2010021-2010022 (2007)]. For example, a unit circle in the @math{XY} plane may be filled and @@ -8204,6 +8207,21 @@ other formats. One can request a completely transparent background for 3D @code{WebGL} images with @code{currentlight.background=black+opacity(0.0);} +@code{render} + +A function @code{render()} may be assigned to the optional +@code{render} parameter allows one to pass specialized rendering +options to the surface drawing routines, via arguments such as: +@verbatim + bool tessellate; // use tessellated mesh to store straight patches + real margin; // shrink amount for rendered OpenGL viewport, in bp. + bool partnames; // assign part name indices to compound objects + bool defaultnames; // assign default names to unnamed objects + interaction interaction; // billboard interaction mode +@end verbatim +along with the rendering parameters for the legacy @acronym{PRC} format +described in @code{three.asy}. + @cindex image-based lighting @cindex @code{surface} @cindex @code{ibl} @@ -8235,7 +8253,7 @@ The examples @code{@uref{https://asymptote.sourceforge.io/gallery/3Dwebgl/vertex vertex-dependent colors, which are supported by @code{Asymptote}'s native @code{OpenGL}/@code{WebGL} renderers and the two-dimensional vector output format (@code{settings.render=0}). Since -the @acronym{PRC} output format does not currently support vertex +the legacy @acronym{PRC} output format does not support vertex shading of Bezier surfaces, @acronym{PRC} patches are shaded with the mean of the four vertex colors. @cindex @code{surface} @@ -8449,7 +8467,7 @@ with the setting @code{iconify=true}. @cindex @code{prc} @cindex @code{views} -@item Embed the 3D @acronym{PRC} format in a @acronym{PDF} file +@item Embed the 3D legacy @acronym{PRC} format in a @acronym{PDF} file and view the resulting @acronym{PDF} file with version @code{9.0} or later of @code{Adobe Reader}. This requires @code{settings.outformat="pdf"} and @code{settings.prc=true}, @@ -8510,7 +8528,7 @@ this approach (@pxref{PostScript3D}). @end enumerate -@cindex @code{double deferred drawing} +@cindex double deferred drawing Automatic picture sizing in three dimensions is accomplished with double deferred drawing. The maximal desired dimensions of the scene in each of the three dimensions can optionally be specified with the routine @@ -8644,7 +8662,7 @@ positive @math{y} axis is drawn at this angle in degrees. @cindex @code{target} @cindex @code{showtarget} @cindex @code{center} -@item orthographic(triple camera, triple up=Z, triple target=O, @*@ @ @ @ @ @ @ @ @ @ @ @ @ real zoom=1, pair viewportshift=0, bool showtarget=true, @*@ @ @ @ @ @ @ @ @ @ @ @ @ bool center=false) +@item orthographic(triple camera, triple up=Z, triple target=O, @*@ @ @ @ @ @ @ @ @ @ @ @ @ real zoom=1, pair viewportshift=0, bool showtarget=true, @*@ @ @ @ @ @ @ @ @ @ @ @ @ bool center=true) This projects from three to two dimensions using the view as seen at a point infinitely far away in the direction @code{unit(camera)}, orienting the camera so that, if possible, the vector @code{up} points upwards. Parallel @@ -8653,7 +8671,7 @@ to include @code{target} if @code{showtarget=true}. If @code{center=true}, the target will be adjusted to the center of the bounding volume. -@item orthographic(real x, real y, real z, triple up=Z, triple target=O, @*@ @ @ @ @ @ @ @ @ @ @ @ @ real zoom=1, pair viewportshift=0, bool showtarget=true, @*@ @ @ @ @ @ @ @ @ @ @ @ @ bool center=false) +@item orthographic(real x, real y, real z, triple up=Z, triple target=O, @*@ @ @ @ @ @ @ @ @ @ @ @ @ real zoom=1, pair viewportshift=0, bool showtarget=true, @*@ @ @ @ @ @ @ @ @ @ @ @ @ bool center=true) This is equivalent to @verbatim orthographic((x,y,z),up,target,zoom,viewportshift,showtarget,center) @@ -8671,7 +8689,6 @@ at angle @code{beta}, and the @math{z} axis up. @cindex @code{autoadjust} @item perspective(triple camera, triple up=Z, triple target=O, @*@ @ @ @ @ @ @ @ @ @ @ @ real zoom=1, real angle=0, pair viewportshift=0, @*@ @ @ @ @ @ @ @ @ @ @ @ bool showtarget=true, bool autoadjust=true, @*@ @ @ @ @ @ @ @ @ @ @ @ bool center=autoadjust) @cindex @code{perspective} -@cindex @code{NURBS} This projects from three to two dimensions, taking account of perspective, as seen from the location @code{camera} looking at @code{target}, orienting the camera so that, if possible, the vector @code{up} points upwards. @@ -9108,7 +9125,9 @@ To draw an @math{x} axis in three dimensions, use the routine @verbatim void xaxis3(picture pic=currentpicture, Label L="", axis axis=YZZero, real xmin=-infinity, real xmax=infinity, pen p=currentpen, - ticks3 ticks=NoTicks3, arrowbar3 arrow=None, bool above=false); + ticks3 ticks=NoTicks3, arrowbar3 arrow=None, + margin3 margin=NoMargin3, bool above=false, + projection P=currentprojection); @end verbatim @noindent Analogous routines @code{yaxis} and @code{zaxis} can be used to draw @@ -9120,7 +9139,8 @@ void axes3(picture pic=currentpicture, bool extend=false, triple min=(-infinity,-infinity,-infinity), triple max=(infinity,infinity,infinity), - pen p=currentpen, arrowbar3 arrow=None); + pen p=currentpen, arrowbar3 arrow=None, + margin3 margin=NoMargin3, projection P=currentprojection); @end verbatim @cindex @code{YZEquals} @@ -10480,7 +10500,7 @@ developed the @code{Asymptote Web Application} hosted at @c LocalWords: NoZero NoZeroFormat abbrevation gsOptions namespace redeclared @c LocalWords: atLeast intMin globalwrite quarticroots deconsruct substrings @c LocalWords: usleep currentpatterns trailingzero Orest Shardt DefaultHead -@c LocalWords: SimpleHead HookHead TeXHead multipage NURBS inlinemovie dxmax +@c LocalWords: SimpleHead HookHead TeXHead multipage inlinemovie dxmax @c LocalWords: simpson NoBox truesize autoscale shadestroke recurses mintimes @c LocalWords: nonoverlapping texengine maxtimes maxheight pdb TEXMFCONFIG Jn @c LocalWords: piecewisestraight unitrand graphmarkers antialias nolight newl diff --git a/graphics/asymptote/doc/axis3.asy b/graphics/asymptote/doc/axis3.asy index 90cbdc6ad0..c7c90ae79d 100644 --- a/graphics/asymptote/doc/axis3.asy +++ b/graphics/asymptote/doc/axis3.asy @@ -3,7 +3,7 @@ import graph3; size(0,200); size3(200,IgnoreAspect); -currentprojection=perspective(5,2,2); +currentprojection=perspective(dir(75,20)); scale(Linear,Linear,Log); diff --git a/graphics/asymptote/doc/extra/intro.asy b/graphics/asymptote/doc/extra/intro.asy index 8fe021e0ec..bb23c87f16 100644 --- a/graphics/asymptote/doc/extra/intro.asy +++ b/graphics/asymptote/doc/extra/intro.asy @@ -1,7 +1,7 @@ -orientation=Landscape; - settings.tex="pdflatex"; +orientation=Landscape; + import slide; import three; import animate; @@ -10,14 +10,15 @@ bool long=true; usepackage("mflogo"); -usersetting(); - viewportsize=pagewidth-2pagemargin; -// To generate bibliographic references: +usersetting(); + +// Commands to generate optional bibtex citations: // asy -k intro -// bibtex intro_ +// bibtex intro_ // asy -k intro + bibliographystyle("alpha"); itempen=fontsize(22pt); @@ -30,7 +31,7 @@ titlepage(long ? "Asymptote: The Vector Graphics Language" : "Department of Mathematical and Statistical Sciences\\ University of Alberta\\ %and Instituto Nacional de Matem\'atica Pura e Aplicada (IMPA) -\medskip\Green{Collaborators: Orest Shardt, Michail Vidiassov}", +\smallskip\Green{Collaborators: Orest Shardt, Michail Vidiassov}", "June 30, 2010", "https://asymptote.sourceforge.io/intro.pdf"); @@ -196,6 +197,7 @@ draw(g--cycle,dashed); add(output, currentpicture.fit(), (+0.5inch, 0), E); restore(); +erase(); // Suppress implicit shipout of currentpicture. shipout(output); ")); @@ -350,7 +352,7 @@ item("The resulting shape may be adjusted by modifying optional {\it tension\/} title("Hobby's 2D Control Point Algorithm"); item("Having prescribed outgoing and incoming path directions $e^{i\theta}$ at node~$z_0$ and $e^{i\phi}$ at node $z_1$ relative to the -vector $z_1-z_0$, the control points are determined as:"); +vector $z_1-z_0$, the control points are determined as:"); equations("u&=&z_0+e^{i\theta}(z_1-z_0)f(\theta,-\phi),\nonumber\\ v&=&z_1-e^{i\phi}(z_1-z_0)f(-\phi,\theta),"); @@ -390,7 +392,7 @@ item("Must reduce to 2D algorithm in planar case."); item("Determine directions by applying Hobby's algorithm in the plane containing $z_{k-1}$, $z_k$, $z_{k+1}$."); // Reformulate Hobby's equations in terms of the angle $\psi_k=$ -item("The only ambiguity that can arise is the overall sign of the angles, which relates to viewing each 2D plane from opposing normal directions."); +item("The only ambiguity that can arise is the overall sign of the angles, which relates to viewing each 2D plane from opposing normal directions."); item("A reference vector based on the mean unit normal of successive segments can be used to resolve such ambiguities \cite{Bowman07,Bowman09}"); @@ -436,65 +438,15 @@ title("Smooth 3D surfaces"); asyinclude("../examples/sinc",25cm); title("Curved 3D Arrows"); -asyinclude("../examples/arrows3",20cm); +asyinclude("../examples/arrows3",16cm); title("Slide Presentations"); item("Asymptote has a module for preparing slides."); -item("It even supports embedded high-resolution PDF movies."); code(' title("Slide Presentations"); item("Asymptote has a module for preparing slides."); -item("It even supports embedded high-resolution PDF movies."); '); -remark("\quad\ldots"); - -import graph; - -pen p=linewidth(1); -pen dotpen=linewidth(5); - -pair wheelpoint(real t) {return (t+cos(t),-sin(t));} - -guide wheel(guide g=nullpath, real a, real b, int n) -{ - real width=(b-a)/n; - for(int i=0; i <= n; ++i) { - real t=a+width*i; - g=g--wheelpoint(t); - } - return g; -} - -real t1=0; -real t2=t1+2*pi; - -picture base; -draw(base,circle((0,0),1),p); -draw(base,wheel(t1,t2,100),p+linetype("0 2")); -yequals(base,Label("$y=-1$",1.0),-1,extend=true,p+linetype("4 4")); -xaxis(base,Label("$x$",align=3SW),0,p); -yaxis(base,"$y$",0,1.3,p); -pair z1=wheelpoint(t1); -pair z2=wheelpoint(t2); -dot(base,z1,dotpen); -dot(base,z2,dotpen); - -animation a; - -int n=25; -real dt=(t2-t1)/n; -for(int i=0; i <= n; ++i) { - picture pic; - size(pic,24cm); - real t=t1+dt*i; - add(pic,base); - draw(pic,circle((t,0),1),p+red); - dot(pic,wheelpoint(t),dotpen); - a.add(pic); -} - -display(a.pdf(delay=150,"controls")); title("Automatic Sizing"); item("Figures can be specified in user coordinates, then @@ -584,6 +536,7 @@ pen p=fontsize(30pt); frame f; label(f, \"$E=mc^2$\", p); draw(f, box(min(f),max(f))); +erase(); // Suppress implicit shipout of currentpicture. shipout(f); ")); @@ -681,7 +634,7 @@ item("Rest arguments allow one to write a function that takes an arbitrary number of arguments:"); code(" int sum(... int[] nums) { - int total=0; + int total=0; for(int i=0; i < nums.length; ++i) total += nums[i]; return total; diff --git a/graphics/asymptote/doc/png/asymptote.info b/graphics/asymptote/doc/png/asymptote.info index 672c1369bd..54b3a224ab 100644 --- a/graphics/asymptote/doc/png/asymptote.info +++ b/graphics/asymptote/doc/png/asymptote.info @@ -1,7 +1,7 @@ This is asymptote.info, produced by makeinfo version 7.1 from asymptote.texi. -This file documents ‘Asymptote’, version 2.90. +This file documents ‘Asymptote’, version 2.91. <https://asymptote.sourceforge.io> @@ -22,7 +22,7 @@ File: asymptote.info, Node: Top, Next: Description, Prev: (dir), Up: (dir) Asymptote ********* -This file documents ‘Asymptote’, version 2.90. +This file documents ‘Asymptote’, version 2.91. <https://asymptote.sourceforge.io> @@ -184,9 +184,9 @@ drawing. Labels and equations are typeset with ‘LaTeX’, for overall document consistency, yielding the same high-quality level of typesetting that ‘LaTeX’ provides for scientific text. By default it produces ‘PostScript’ output, but it can also generate ‘OpenGL’, ‘PDF’, -‘SVG’, ‘WebGL’, ‘V3D’, and ‘PRC’ vector graphics, along with any format -that the ‘ImageMagick’ package can produce. You can even try it out in -your Web browser without installing it, using the ‘Asymptote Web +‘SVG’, ‘WebGL’, ‘V3D’, and legacy ‘PRC’ vector graphics, along with any +format that the ‘ImageMagick’ package can produce. You can even try it +out in your Web browser without installing it, using the ‘Asymptote Web Application’ <http://asymptote.ualberta.ca> @@ -1155,9 +1155,9 @@ void gouraudshade(picture pic=currentpicture, path g, bool stroke=false, In the second form, the elements of ‘z’ are taken to be successive nodes of path ‘g’. The pens in ‘p’ must belong to the same color space. Illustrations of Gouraud shading are provided in the example file -‘Gouraud.asy’. The edge flags used in Gouraud shading are documented -here: - <https://www.adobe.com/content/dam/acom/en/devnet/postscript/pdfs/TN5600.SmoothShading.pdf> +‘Gouraud.asy’. The edge flags used in Gouraud shading are documented on +pages 270-274 of the PostScript Language Reference (3rd edition): + <https://www.adobe.com/jp/print/postscript/pdfs/PLRM.pdf> Tensor product shading using clipping path ‘g’, fill rule ‘fillrule’ on patches bounded by the n cyclic paths of length 4 in path array ‘b’, @@ -1419,7 +1419,7 @@ specifying direction, tension, and curl values. The higher the tension, the straighter the curve is, and the more it approximates a straight line. One can change the spline tension from its default value of 1 to any real value greater than or equal to 0.75 -(cf. John D. Hobby, Discrete and Computational Geometry 1, 1986): +(see John D. Hobby, Discrete and Computational Geometry 1, 1986): draw((100,0)..tension 2 ..(100,100)..(0,100)); draw((100,0)..tension 3 and 2 ..(100,100)..(0,100)); draw((100,0)..tension atleast 2 ..(100,100)..(0,100)); @@ -4104,7 +4104,8 @@ its real argument as an integer (-1, 0, or 1). (equivalent to ‘fabs(real)’), an ‘abs(pair)’ function (equivalent to ‘length(pair)’). - Random numbers can be seeded with ‘srand(int)’ and generated with the + Random numbers can be seeded with ‘srand(int)’ (for example, with +‘srand(round((cputime().parent.clock%1)*1e9))’) and generated with the ‘int rand()’ function, which returns a random integer between 0 and the integer ‘randMax’. The ‘unitrand()’ function returns a random number uniformly distributed in the interval [0,1]. A Gaussian random number @@ -5332,7 +5333,8 @@ File: asymptote.info, Node: simplex2, Next: math, Prev: plain, Up: Base modu ============== This module solves a special case of the two-variable linear programming -problem used by the module ‘plain’ for automatic sizing of pictures. +problem used by the module ‘plain’ for automatic sizing of pictures +(*note deferred drawing::). File: asymptote.info, Node: math, Next: interpolate, Prev: simplex, Up: Base modules @@ -5511,11 +5513,9 @@ File: asymptote.info, Node: map, Next: tree, Prev: markers, Up: Base modules This module creates a struct parameterized by the types specified in strings ‘key’ and ‘value’, mapping keys to values with a specified default: -import map; +from map(Key=string, Value=int) access map; -mapTemplate(name="map",key="string",value="int",default="-1"); - -map M; +map M=map(Default=-1); M.add("z",2); M.add("a",3); @@ -7061,7 +7061,7 @@ pairs ‘(x,y)’ for the nodes and direction specifiers. This generalization of John Hobby's spline algorithm is shape-invariant under three-dimensional rotation, scaling, and shifting, and reduces in the planar case to the two-dimensional algorithm used in ‘Asymptote’, -‘MetaPost’, and ‘MetaFont’ [cf. J. C. Bowman, Proceedings in Applied +‘MetaPost’, and ‘MetaFont’ [see J. C. Bowman, Proceedings in Applied Mathematics and Mechanics, 7:1, 2010021-2010022 (2007)]. For example, a unit circle in the XY plane may be filled and drawn @@ -7151,6 +7151,19 @@ transparent for all other formats. One can request a completely transparent background for 3D ‘WebGL’ images with ‘currentlight.background=black+opacity(0.0);’ + ‘render’ + + A function ‘render()’ may be assigned to the optional ‘render’ +parameter allows one to pass specialized rendering options to the +surface drawing routines, via arguments such as: + bool tessellate; // use tessellated mesh to store straight patches + real margin; // shrink amount for rendered OpenGL viewport, in bp. + bool partnames; // assign part name indices to compound objects + bool defaultnames; // assign default names to unnamed objects + interaction interaction; // billboard interaction mode + along with the rendering parameters for the legacy PRC format +described in ‘three.asy’. + Asymptote also supports image-based lighting with the setting ‘settings.ibl=true’. This uses pre-rendered EXR images from the directory specified by ‘-imageDir’ (which defaults to ‘ibl’) or, for @@ -7171,7 +7184,7 @@ how to draw a surface with patch-dependent colors. The examples ‘vertexshading.asy’ and ‘smoothelevation.asy’ illustrate vertex-dependent colors, which are supported by ‘Asymptote’'s native ‘OpenGL’/‘WebGL’ renderers and the two-dimensional vector output format -(‘settings.render=0’). Since the PRC output format does not currently +(‘settings.render=0’). Since the legacy PRC output format does not support vertex shading of Bezier surfaces, PRC patches are shaded with the mean of the four vertex colors. @@ -7326,18 +7339,18 @@ There are six choices for viewing 3D ‘Asymptote’ output: batch mode (‘-noV’) rendering in an iconified window; this can be enabled with the setting ‘iconify=true’. - 4. Embed the 3D PRC format in a PDF file and view the resulting PDF - file with version ‘9.0’ or later of ‘Adobe Reader’. This requires - ‘settings.outformat="pdf"’ and ‘settings.prc=true’, which can be - specified by the command-line options ‘-f pdf’ and ‘-f prc’, put in - the ‘Asymptote’ configuration file (*note configuration file::), or - specified in the script before module ‘three’ (or ‘graph3’) is - imported. The ‘media9’ LaTeX package is also required (*note - embed::). The example ‘100d.asy’ illustrates how one can generate - a list of predefined views (see ‘100d.views’). A stationary - preview image with a resolution of ‘n’ pixels per ‘bp’ can be - embedded with the setting ‘render=n’; this allows the file to be - viewed with other ‘PDF’ viewers. Alternatively, the file + 4. Embed the 3D legacy PRC format in a PDF file and view the resulting + PDF file with version ‘9.0’ or later of ‘Adobe Reader’. This + requires ‘settings.outformat="pdf"’ and ‘settings.prc=true’, which + can be specified by the command-line options ‘-f pdf’ and ‘-f prc’, + put in the ‘Asymptote’ configuration file (*note configuration + file::), or specified in the script before module ‘three’ (or + ‘graph3’) is imported. The ‘media9’ LaTeX package is also required + (*note embed::). The example ‘100d.asy’ illustrates how one can + generate a list of predefined views (see ‘100d.views’). A + stationary preview image with a resolution of ‘n’ pixels per ‘bp’ + can be embedded with the setting ‘render=n’; this allows the file + to be viewed with other ‘PDF’ viewers. Alternatively, the file ‘externalprc.tex’ illustrates how the resulting PRC and rendered image files can be extracted and processed in a separate ‘LaTeX’ file. However, see *note LaTeX usage:: for an easier way to embed @@ -7454,7 +7467,7 @@ These projections to two dimensions are predefined: ‘orthographic(triple camera, triple up=Z, triple target=O, real zoom=1, pair viewportshift=0, bool showtarget=true, - bool center=false)’ + bool center=true)’ This projects from three to two dimensions using the view as seen at a point infinitely far away in the direction ‘unit(camera)’, orienting the camera so that, if possible, the vector ‘up’ points @@ -7465,7 +7478,7 @@ These projections to two dimensions are predefined: ‘orthographic(real x, real y, real z, triple up=Z, triple target=O, real zoom=1, pair viewportshift=0, bool showtarget=true, - bool center=false)’ + bool center=true)’ This is equivalent to orthographic((x,y,z),up,target,zoom,viewportshift,showtarget,center) @@ -7776,7 +7789,9 @@ This module implements three-dimensional versions of the functions in ‘graph.asy’. To draw an x axis in three dimensions, use the routine void xaxis3(picture pic=currentpicture, Label L="", axis axis=YZZero, real xmin=-infinity, real xmax=infinity, pen p=currentpen, - ticks3 ticks=NoTicks3, arrowbar3 arrow=None, bool above=false); + ticks3 ticks=NoTicks3, arrowbar3 arrow=None, + margin3 margin=NoMargin3, bool above=false, + projection P=currentprojection); Analogous routines ‘yaxis’ and ‘zaxis’ can be used to draw y and z axes in three dimensions. There is also a routine for drawing all three axis: @@ -7785,7 +7800,8 @@ void axes3(picture pic=currentpicture, bool extend=false, triple min=(-infinity,-infinity,-infinity), triple max=(infinity,infinity,infinity), - pen p=currentpen, arrowbar3 arrow=None); + pen p=currentpen, arrowbar3 arrow=None, + margin3 margin=NoMargin3, projection P=currentprojection); The predefined three-dimensional axis types are axis YZEquals(real y, real z, triple align=O, bool extend=false); @@ -7838,7 +7854,7 @@ import graph3; size(0,200); size3(200,IgnoreAspect); -currentprojection=perspective(5,2,2); +currentprojection=perspective(dir(75,20)); scale(Linear,Linear,Log); @@ -8531,7 +8547,7 @@ Options (negate boolean options by replacing - with -no): -compact Conserve memory at the expense of speed false -compress Compress images in PDF output [true] -convertOptions str [] --d,-debug Enable debugging messages [false] +-d,-debug Enable debugging messages and traceback [false] -devicepixelratio n Ratio of physical to logical pixels [1] -digits n Default output file precision [7] -divisor n Garbage collect using purge(divisor=n) [2] @@ -9227,7 +9243,7 @@ Index * 2D graphs: graph. (line 6) * 3D graphs: graph3. (line 6) * 3D grids: grid3. (line 6) -* 3D PostScript: three. (line 665) +* 3D PostScript: three. (line 678) * a4: Configuring. (line 63) * abort: Data types. (line 364) * abs: Data types. (line 65) @@ -9237,10 +9253,10 @@ Index * abs2: Data types. (line 65) * abs2 <1>: Data types. (line 144) * absolute: Configuring. (line 38) -* absolute <1>: three. (line 241) +* absolute <1>: three. (line 254) * accel: Paths and guides. (line 126) * accel <1>: Paths and guides. (line 132) -* accel <2>: three. (line 566) +* accel <2>: three. (line 579) * access: Import. (line 6) * access <1>: Import. (line 45) * acknowledgments: Credits. (line 6) @@ -9254,15 +9270,15 @@ Index (line 204) * add <1>: Frames and pictures. (line 218) -* add <2>: three. (line 342) -* addViews: three. (line 459) +* add <2>: three. (line 355) +* addViews: three. (line 472) * adjust: Pens. (line 123) * Ai: Mathematical functions. - (line 48) + (line 49) * Ai_deriv: Mathematical functions. - (line 48) + (line 49) * Airy: Mathematical functions. - (line 48) + (line 49) * alias: Structures. (line 62) * alias <1>: Arrays. (line 183) * Align: label. (line 20) @@ -9279,22 +9295,22 @@ Index * animation: animation. (line 6) * animation <1>: animation. (line 6) * annotate: annotate. (line 6) -* antialias: three. (line 261) +* antialias: three. (line 274) * antialias <1>: Options. (line 188) * append: Files. (line 38) * append <1>: Arrays. (line 39) * arc: Paths and guides. (line 24) * Arc: Paths and guides. (line 37) -* arc <1>: three. (line 353) +* arc <1>: three. (line 366) * ArcArrow: draw. (line 30) -* ArcArrow3: three. (line 632) +* ArcArrow3: three. (line 645) * ArcArrows: draw. (line 30) -* ArcArrows3: three. (line 632) +* ArcArrows3: three. (line 645) * arclength: Paths and guides. (line 153) -* arclength <1>: three. (line 566) +* arclength <1>: three. (line 579) * arcpoint: Paths and guides. (line 163) * arctime: Paths and guides. (line 157) -* arctime <1>: three. (line 566) +* arctime <1>: three. (line 579) * arguments: Default arguments. (line 6) * arithmetic operators: Arithmetic & logical. (line 6) @@ -9308,12 +9324,12 @@ Index * arrow keys: Drawing in interactive mode. (line 11) * arrow keys <1>: GUI usage. (line 6) -* Arrow3: three. (line 632) +* Arrow3: three. (line 645) * arrowbar: draw. (line 26) * arrowhead: draw. (line 50) * arrows: draw. (line 26) * Arrows: draw. (line 26) -* Arrows3: three. (line 632) +* Arrows3: three. (line 645) * as: Import. (line 67) * ascii: Data types. (line 309) * ascii <1>: Data types. (line 309) @@ -9350,26 +9366,26 @@ Index (line 263) * attach <1>: LaTeX usage. (line 47) * attach <2>: graph. (line 407) -* autoadjust: three. (line 428) +* autoadjust: three. (line 441) * autoimport: Options. (line 155) * automatic scaling: graph. (line 711) * automatic scaling <1>: graph. (line 711) * axialshade: fill. (line 43) * axis: graph. (line 925) * axis <1>: graph. (line 1007) -* axis <2>: graph3. (line 66) -* axis <3>: graph3. (line 82) +* axis <2>: graph3. (line 69) +* axis <3>: graph3. (line 85) * azimuth: Data types. (line 154) * babel: babel. (line 6) * background: three. (line 76) * background <1>: three. (line 97) * background color: Frames and pictures. (line 167) -* BackView: three. (line 452) +* BackView: three. (line 465) * Bar: draw. (line 19) -* Bar3: three. (line 632) +* Bar3: three. (line 645) * Bars: draw. (line 19) -* Bars3: three. (line 632) +* Bars3: three. (line 645) * barsize: draw. (line 19) * base modules: Base modules. (line 6) * basealign: Pens. (line 181) @@ -9378,38 +9394,38 @@ Index (line 6) * beep: Data types. (line 382) * BeginArcArrow: draw. (line 30) -* BeginArcArrow3: three. (line 632) +* BeginArcArrow3: three. (line 645) * BeginArrow: draw. (line 26) -* BeginArrow3: three. (line 632) +* BeginArrow3: three. (line 645) * BeginBar: draw. (line 19) -* BeginBar3: three. (line 632) +* BeginBar3: three. (line 645) * BeginDotMargin: draw. (line 87) -* BeginDotMargin3: three. (line 648) +* BeginDotMargin3: three. (line 661) * BeginMargin: draw. (line 68) -* BeginMargin3: three. (line 648) +* BeginMargin3: three. (line 661) * BeginPenMargin: draw. (line 76) -* BeginPenMargin2: three. (line 648) -* BeginPenMargin3: three. (line 648) +* BeginPenMargin2: three. (line 661) +* BeginPenMargin3: three. (line 661) * BeginPoint: label. (line 62) * Bessel: Mathematical functions. - (line 48) + (line 49) * bevel: flowchart. (line 72) * beveljoin: Pens. (line 149) * Bezier curves: Bezier curves. (line 6) -* Bezier patch: three. (line 128) -* Bezier triangle: three. (line 128) -* bezulate: three. (line 146) +* Bezier patch: three. (line 141) +* Bezier triangle: three. (line 141) +* bezulate: three. (line 159) * Bi: Mathematical functions. - (line 48) + (line 49) * Bi_deriv: Mathematical functions. - (line 48) -* Billboard: three. (line 536) + (line 49) +* Billboard: three. (line 549) * binary: Files. (line 80) * binary format: Files. (line 80) * binary operators: Arithmetic & logical. (line 6) * binarytree: binarytree. (line 6) -* black stripes: three. (line 261) +* black stripes: three. (line 274) * Blank: draw. (line 26) * block.bottom: flowchart. (line 19) * block.bottomleft: flowchart. (line 19) @@ -9428,15 +9444,15 @@ Index (line 6) * Bottom: graph. (line 133) * BottomTop: graph. (line 139) -* BottomView: three. (line 452) +* BottomView: three. (line 465) * bounding box: Frames and pictures. (line 167) * bounds: palette. (line 43) -* Bounds: graph3. (line 21) +* Bounds: graph3. (line 24) * box: Frames and pictures. (line 117) -* box <1>: three. (line 375) -* box <2>: three. (line 377) +* box <1>: three. (line 388) +* box <2>: three. (line 390) * bp: Drawing in batch mode. (line 23) * brace: Paths and guides. (line 51) @@ -9452,7 +9468,7 @@ Index * BWRainbow2: palette. (line 18) * C string: Data types. (line 217) * CAD: CAD. (line 6) -* camera: three. (line 422) +* camera: three. (line 435) * casts: Casts. (line 6) * cbrt: Mathematical functions. (line 6) @@ -9460,16 +9476,16 @@ Index * ceil: Mathematical functions. (line 26) * Center: label. (line 67) -* center: three. (line 405) +* center: three. (line 418) * checker: Pens. (line 338) * Chinese: Pens. (line 297) * choose: Mathematical functions. (line 39) * Ci: Mathematical functions. - (line 48) + (line 49) * circle: Paths and guides. (line 10) * Circle: Paths and guides. (line 18) -* circle <1>: three. (line 349) +* circle <1>: three. (line 362) * circle <2>: flowchart. (line 61) * circlebarframe: markers. (line 18) * CJK: Pens. (line 297) @@ -9486,7 +9502,7 @@ Index * cmyk: Pens. (line 38) * colatitude: Data types. (line 159) * color: Pens. (line 23) -* color <1>: graph3. (line 133) +* color <1>: graph3. (line 136) * coloredNodes: tube. (line 25) * coloredpath: tube. (line 18) * coloredSegments: tube. (line 25) @@ -9533,7 +9549,7 @@ Index * cosh: Mathematical functions. (line 6) * cputime: Mathematical functions. - (line 109) + (line 110) * crop: graph. (line 640) * cropping graphs: graph. (line 640) * cross: Data types. (line 106) @@ -9550,7 +9566,7 @@ Index * curlSpecifier: Paths and guides. (line 409) * currentlight: three. (line 76) * currentpen: Pens. (line 6) -* currentprojection: three. (line 449) +* currentprojection: three. (line 462) * curve: slopefield. (line 20) * custom axis types: graph. (line 142) * custom mark routine: graph. (line 578) @@ -9562,7 +9578,7 @@ Index * cyclic: Paths and guides. (line 85) * cyclic <1>: Paths and guides. (line 377) * cyclic <2>: Arrays. (line 39) -* cyclic <3>: three. (line 566) +* cyclic <3>: three. (line 579) * Cyrillic: Pens. (line 291) * dashdotted: Pens. (line 102) * dashed: Pens. (line 102) @@ -9576,7 +9592,7 @@ Index * default arguments: Default arguments. (line 6) * defaultformat: graph. (line 176) * DefaultHead: draw. (line 50) -* DefaultHead3: three. (line 632) +* DefaultHead3: three. (line 645) * defaultpen: Pens. (line 49) * defaultpen <1>: Pens. (line 122) * defaultpen <2>: Pens. (line 127) @@ -9585,7 +9601,7 @@ Index * defaultpen <5>: Pens. (line 416) * defaultpen <6>: Pens. (line 440) * defaultrender: three. (line 46) -* deferred drawing: simplex. (line 6) +* deferred drawing: Deferred drawing. (line 6) * deferred drawing <1>: simplex2. (line 6) * degrees: Data types. (line 78) * degrees <1>: Mathematical functions. @@ -9595,7 +9611,7 @@ Index * delete: Files. (line 154) * delete <1>: Arrays. (line 39) * description: Description. (line 6) -* devicepixelratio: three. (line 184) +* devicepixelratio: three. (line 197) * diagonal: Arrays. (line 324) * diamond: flowchart. (line 54) * diffuse: three. (line 76) @@ -9605,7 +9621,7 @@ Index * dir <1>: Data types. (line 90) * dir <2>: Data types. (line 181) * dir <3>: Paths and guides. (line 109) -* dir <4>: three. (line 566) +* dir <4>: three. (line 579) * direction specifier: Bezier curves. (line 6) * directory: Files. (line 26) * dirSpecifier: Paths and guides. (line 391) @@ -9620,18 +9636,18 @@ Index * dot <3>: Arrays. (line 279) * dot <4>: Arrays. (line 282) * DotMargin: draw. (line 83) -* DotMargin3: three. (line 648) +* DotMargin3: three. (line 661) * DotMargins: draw. (line 89) -* DotMargins3: three. (line 648) +* DotMargins3: three. (line 661) * dotted: Pens. (line 102) -* double deferred drawing: three. (line 327) +* double deferred drawing: three. (line 340) * double precision: Files. (line 80) * draw: Drawing commands. (line 34) * draw <1>: draw. (line 6) * draw <2>: draw. (line 147) * Draw: Frames and pictures. (line 147) -* draw <3>: three. (line 154) +* draw <3>: three. (line 167) * drawer: Deferred drawing. (line 31) * drawing commands: Drawing commands. (line 6) * drawline: math. (line 9) @@ -9644,34 +9660,34 @@ Index * dvisvgmOptions: Options. (line 174) * E: Labels. (line 18) * E <1>: Mathematical functions. - (line 48) + (line 49) * Editing modes: Editing modes. (line 6) * Ei: Mathematical functions. - (line 48) + (line 49) * ellipse: Paths and guides. (line 45) * elliptic functions: Mathematical functions. - (line 48) + (line 49) * else: Programming. (line 27) * emacs: Editing modes. (line 6) * embed: embed. (line 6) -* Embedded: three. (line 536) +* Embedded: three. (line 549) * emissivepen: three. (line 66) * empty: Frames and pictures. (line 7) * EndArcArrow: draw. (line 30) -* EndArcArrow3: three. (line 632) +* EndArcArrow3: three. (line 645) * EndArrow: draw. (line 26) -* EndArrow3: three. (line 632) +* EndArrow3: three. (line 645) * EndBar: draw. (line 19) -* EndBar3: three. (line 632) +* EndBar3: three. (line 645) * EndDotMargin: draw. (line 89) -* EndDotMargin3: three. (line 648) +* EndDotMargin3: three. (line 661) * endl: Files. (line 65) * EndMargin: draw. (line 69) -* EndMargin3: three. (line 648) +* EndMargin3: three. (line 661) * EndPenMargin: draw. (line 78) -* EndPenMargin2: three. (line 648) -* EndPenMargin3: three. (line 648) +* EndPenMargin2: three. (line 661) +* EndPenMargin3: three. (line 661) * EndPoint: label. (line 62) * envelope: label. (line 111) * environment variables: Configuring. (line 90) @@ -9712,17 +9728,17 @@ Index * expm1: Mathematical functions. (line 6) * exponential integral: Mathematical functions. - (line 48) + (line 49) * extendcap: Pens. (line 139) * extension: Paths and guides. (line 246) * extension <1>: MetaPost. (line 10) * external: embed. (line 11) -* extrude: three. (line 560) +* extrude: three. (line 573) * F: Mathematical functions. - (line 48) + (line 49) * fabs: Mathematical functions. (line 6) -* face: three. (line 672) +* face: three. (line 685) * factorial: Mathematical functions. (line 39) * Fedora: UNIX binary distributions. @@ -9751,7 +9767,7 @@ Index * find <1>: Arrays. (line 158) * findall: Arrays. (line 163) * firstcut: Paths and guides. (line 262) -* fit3: three. (line 340) +* fit3: three. (line 353) * fixedscaling: Frames and pictures. (line 68) * floor: Mathematical functions. @@ -9775,7 +9791,7 @@ Index (line 7) * freshnel0: three. (line 66) * from: Import. (line 16) -* FrontView: three. (line 452) +* FrontView: three. (line 465) * function declarations: Functions. (line 79) * Function shading: fill. (line 100) * function shading: fill. (line 100) @@ -9797,10 +9813,10 @@ Index * git: Git. (line 6) * globalwrite: Files. (line 40) * globalwrite <1>: Files. (line 154) -* glOptions: three. (line 261) +* glOptions: three. (line 274) * glOptions <1>: Options. (line 174) * GNU Scientific Library: Mathematical functions. - (line 48) + (line 49) * gouraudshade: fill. (line 63) * Gradient: palette. (line 25) * gradient shading: fill. (line 32) @@ -9820,7 +9836,7 @@ Index * GSL: Compiling from UNIX source. (line 62) * gsl: Mathematical functions. - (line 48) + (line 49) * gsOptions: Options. (line 174) * GUI: GUI. (line 6) * GUI installation: GUI installation. (line 6) @@ -9839,16 +9855,16 @@ Index * hex <1>: Pens. (line 64) * hexadecimal: Data types. (line 306) * hexadecimal <1>: Pens. (line 62) -* hidden surface removal: three. (line 672) +* hidden surface removal: three. (line 685) * histogram: Mathematical functions. (line 39) * history: Files. (line 147) * history <1>: Interactive mode. (line 54) * historylines: Interactive mode. (line 58) * HookHead: draw. (line 50) -* HookHead3: three. (line 632) +* HookHead3: three. (line 645) * Horizontal: flowchart. (line 77) -* HTML5: three. (line 233) +* HTML5: three. (line 246) * htmlviewer: Configuring. (line 15) * htmlviewer <1>: Configuring. (line 38) * htmlviewerOptions: Options. (line 174) @@ -9856,22 +9872,22 @@ Index * hypot: Mathematical functions. (line 6) * I: Mathematical functions. - (line 48) + (line 49) * i_scaled: Mathematical functions. - (line 48) -* ibl: three. (line 104) -* iconify: three. (line 261) + (line 49) +* ibl: three. (line 117) +* iconify: three. (line 274) * identity: Transforms. (line 24) * identity <1>: Mathematical functions. (line 6) * identity <2>: Arrays. (line 321) -* identity4: three. (line 504) +* identity4: three. (line 517) * if: Programming. (line 27) * IgnoreAspect: Frames and pictures. (line 50) * image: palette. (line 33) * image <1>: palette. (line 61) -* image-based lighting: three. (line 104) +* image-based lighting: three. (line 117) * ImageMagick: Configuring. (line 69) * ImageMagick <1>: animation. (line 6) * ImageMagick <2>: Options. (line 188) @@ -9881,7 +9897,7 @@ Index * implicit scaling: Implicit scaling. (line 6) * implicitsurface: smoothcontour3. (line 16) * import: Import. (line 45) -* importv3d: three. (line 318) +* importv3d: three. (line 331) * inches: Figure size. (line 18) * incircle: Data types. (line 120) * include: Import. (line 131) @@ -9893,7 +9909,7 @@ Index * initializers: Variable initializers. (line 6) * inline: LaTeX usage. (line 47) -* InOutTicks: graph3. (line 35) +* InOutTicks: graph3. (line 38) * input: Files. (line 10) * input <1>: Files. (line 12) * input <2>: Interactive mode. (line 45) @@ -9904,16 +9920,16 @@ Index * inside: Paths and guides. (line 294) * inside <1>: Paths and guides. (line 299) * inside <2>: Paths and guides. (line 305) -* insphere: three. (line 595) +* insphere: three. (line 608) * inst: Debugger. (line 35) * installation: Installation. (line 6) * int: Data types. (line 30) * integer division: Arithmetic & logical. (line 20) * integral: Mathematical functions. - (line 82) + (line 83) * integrate: Mathematical functions. - (line 82) + (line 83) * interactive mode: Drawing in interactive mode. (line 6) * interactive mode <1>: Interactive mode. (line 6) @@ -9923,34 +9939,34 @@ Index * interpolate: interpolate. (line 6) * intersect: Paths and guides. (line 195) * intersect <1>: math. (line 13) -* intersect <2>: three. (line 566) +* intersect <2>: three. (line 579) * intersectionpoint: Paths and guides. (line 238) * intersectionpoint <1>: math. (line 17) -* intersectionpoint <2>: three. (line 566) +* intersectionpoint <2>: three. (line 579) * intersectionpoints: Paths and guides. (line 242) -* intersectionpoints <1>: three. (line 566) -* intersectionpoints <2>: three. (line 579) +* intersectionpoints <1>: three. (line 579) +* intersectionpoints <2>: three. (line 592) * intersections: Paths and guides. (line 206) * intersections <1>: Paths and guides. (line 213) -* intersections <2>: three. (line 566) -* intersections <3>: three. (line 572) -* InTicks: graph3. (line 35) +* intersections <2>: three. (line 579) +* intersections <3>: three. (line 585) +* InTicks: graph3. (line 38) * intMax: Data types. (line 30) * intMin: Data types. (line 30) * inverse: Transforms. (line 16) * inverse <1>: Arrays. (line 327) -* invert: three. (line 494) +* invert: three. (line 507) * invisible: Pens. (line 43) * isnan: Data types. (line 35) * J: Mathematical functions. (line 6) * J <1>: Mathematical functions. - (line 48) + (line 49) * Japanese: Pens. (line 297) * K: Mathematical functions. - (line 48) + (line 49) * k_scaled: Mathematical functions. - (line 48) + (line 49) * Kate: Editing modes. (line 48) * KDE editor: Editing modes. (line 48) * keepAspect: Frames and pictures. @@ -9958,7 +9974,7 @@ Index * keepAspect <1>: Frames and pictures. (line 50) * keepAspect <2>: LaTeX usage. (line 47) -* keyboard bindings:: three. (line 211) +* keyboard bindings:: three. (line 224) * keys: Arrays. (line 39) * keyword: Named arguments. (line 37) * keyword-only: Named arguments. (line 37) @@ -9969,7 +9985,7 @@ Index * label <1>: label. (line 6) * Label <1>: label. (line 21) * Label <2>: graph. (line 331) -* label <2>: three. (line 530) +* label <2>: three. (line 543) * labelmargin: label. (line 6) * labelpath: labelpath. (line 6) * labelpath3: labelpath3. (line 6) @@ -9996,19 +10012,19 @@ Index * LeftSide: label. (line 67) * LeftTicks: graph. (line 161) * LeftTicks <1>: graph. (line 234) -* LeftView: three. (line 452) +* LeftView: three. (line 465) * legend: Drawing commands. (line 34) * legend <1>: draw. (line 99) * legend <2>: graph. (line 425) * Legendre: Mathematical functions. - (line 48) + (line 49) * length: Data types. (line 65) * length <1>: Data types. (line 144) * length <2>: Data types. (line 239) * length <3>: Paths and guides. (line 76) * length <4>: Paths and guides. (line 374) * length <5>: Arrays. (line 39) -* length <6>: three. (line 566) +* length <6>: three. (line 579) * letter: Configuring. (line 63) * lexorder: math. (line 63) * lexorder <1>: math. (line 66) @@ -10063,11 +10079,11 @@ Index * map <1>: Arrays. (line 140) * map <2>: map. (line 6) * Margin: draw. (line 69) -* Margin3: three. (line 648) -* Margin3 <1>: three. (line 648) +* Margin3: three. (line 661) +* Margin3 <1>: three. (line 661) * Margins: draw. (line 70) -* margins: three. (line 333) -* Margins3: three. (line 648) +* margins: three. (line 346) +* Margins3: three. (line 661) * mark: graph. (line 481) * markangle: markers. (line 35) * marker: graph. (line 481) @@ -10084,12 +10100,12 @@ Index (line 7) * max <2>: Arrays. (line 230) * max <3>: Arrays. (line 240) -* max <4>: three. (line 566) +* max <4>: three. (line 579) * maxbound: Data types. (line 134) * maxbound <1>: Data types. (line 205) -* maxtile: three. (line 261) +* maxtile: three. (line 274) * maxtimes: Paths and guides. (line 233) -* maxviewport: three. (line 261) +* maxviewport: three. (line 274) * metallic: three. (line 66) * MetaPost: MetaPost. (line 6) * MetaPost ... : Bezier curves. (line 70) @@ -10099,9 +10115,9 @@ Index * MetaPost whatever: MetaPost. (line 10) * Microsoft Windows: Microsoft Windows. (line 6) * MidArcArrow: draw. (line 30) -* MidArcArrow3: three. (line 632) +* MidArcArrow3: three. (line 645) * MidArrow: draw. (line 26) -* MidArrow3: three. (line 632) +* MidArrow3: three. (line 645) * MidPoint: label. (line 62) * midpoint: Paths and guides. (line 180) * min: Paths and guides. (line 275) @@ -10109,7 +10125,7 @@ Index (line 7) * min <2>: Arrays. (line 225) * min <3>: Arrays. (line 235) -* min <4>: three. (line 566) +* min <4>: three. (line 579) * minbound: Data types. (line 131) * minbound <1>: Data types. (line 202) * minipage: label. (line 125) @@ -10118,16 +10134,16 @@ Index * miterlimit: Pens. (line 159) * mktemp: Files. (line 48) * mm: Figure size. (line 18) -* mobile browser: three. (line 233) +* mobile browser: three. (line 246) * mode: Files. (line 80) * mode <1>: Files. (line 93) * monotonic: graph. (line 36) * mouse: GUI. (line 6) -* mouse bindings: three. (line 192) +* mouse bindings: three. (line 205) * mouse wheel: GUI usage. (line 6) * Move: Pens. (line 428) * MoveQuiet: Pens. (line 434) -* multisample: three. (line 184) +* multisample: three. (line 197) * N: Labels. (line 18) * name: Files. (line 93) * named arguments: Named arguments. (line 6) @@ -10141,9 +10157,9 @@ Index * newl: Files. (line 65) * newpage: Drawing commands. (line 27) * newton: Mathematical functions. - (line 66) + (line 67) * newton <1>: Mathematical functions. - (line 73) + (line 74) * next: Debugger. (line 41) * nobasealign: Pens. (line 181) * NoFill: Frames and pictures. @@ -10152,31 +10168,30 @@ Index * noglobalread <1>: Files. (line 40) * nolight: three. (line 76) * NoMargin: draw. (line 67) -* NoMargin3: three. (line 648) +* NoMargin3: three. (line 661) * None: draw. (line 19) * None <1>: draw. (line 26) * none: Files. (line 65) -* normal: three. (line 552) +* normal: three. (line 565) * nosafe: Options. (line 209) * NOT: Arithmetic & logical. (line 68) * notaknot: graph. (line 36) * NoTicks: graph. (line 161) -* NoTicks3: graph3. (line 35) +* NoTicks3: graph3. (line 38) * null: Structures. (line 6) * nullpen: label. (line 21) * nullpen <1>: Frames and pictures. (line 127) * nullpen <2>: Frames and pictures. (line 136) -* NURBS: three. (line 432) -* O: three. (line 345) +* O: three. (line 358) * obj: obj. (line 6) * object: label. (line 111) -* oblique: three. (line 388) -* obliqueX: three. (line 395) -* obliqueY: three. (line 401) -* obliqueZ: three. (line 388) +* oblique: three. (line 401) +* obliqueX: three. (line 408) +* obliqueY: three. (line 414) +* obliqueZ: three. (line 401) * ode: ode. (line 6) * offset: Pens. (line 123) * offset <1>: Options. (line 214) @@ -10186,7 +10201,7 @@ Index * opacity: Pens. (line 307) * opacity <1>: three. (line 66) * open: Files. (line 12) -* OpenGL: three. (line 184) +* OpenGL: three. (line 197) * operator: User-defined operators. (line 6) * operator --: graph. (line 30) @@ -10203,20 +10218,20 @@ Index * OR: Arithmetic & logical. (line 68) * orient: Data types. (line 108) -* orient <1>: three. (line 583) +* orient <1>: three. (line 596) * orientation: Frames and pictures. (line 90) -* orthographic: three. (line 405) -* outformat: three. (line 184) +* orthographic: three. (line 418) +* outformat: three. (line 197) * outprefix: Frames and pictures. (line 78) * output: Files. (line 38) * output <1>: Options. (line 188) -* OutTicks: graph3. (line 35) +* OutTicks: graph3. (line 38) * overloading functions: Functions. (line 55) * overwrite: Pens. (line 413) * P: Mathematical functions. - (line 48) + (line 49) * pack: label. (line 109) * packing: Rest arguments. (line 30) * pad: Frames and pictures. @@ -10228,11 +10243,11 @@ Index * papertype: Configuring. (line 63) * paperwidth: Configuring. (line 63) * parallelogram: flowchart. (line 47) -* parametric surface: graph3. (line 99) +* parametric surface: graph3. (line 102) * parametrized curve: graph. (line 640) * partialsum: math. (line 49) * partialsum <1>: math. (line 52) -* patch-dependent colors: three. (line 119) +* patch-dependent colors: three. (line 132) * path: Paths. (line 6) * path <1>: Paths and guides. (line 7) * path <2>: three. (line 42) @@ -10251,15 +10266,15 @@ Index * pdfviewerOptions: Options. (line 174) * pen: Pens. (line 6) * PenMargin: draw. (line 78) -* PenMargin2: three. (line 648) -* PenMargin3: three. (line 648) +* PenMargin2: three. (line 661) +* PenMargin3: three. (line 661) * PenMargins: draw. (line 79) -* PenMargins2: three. (line 648) -* PenMargins3: three. (line 648) +* PenMargins2: three. (line 661) +* PenMargins3: three. (line 661) * periodic: graph. (line 36) * perl: LaTeX usage. (line 30) * perpendicular: geometry. (line 6) -* perspective: three. (line 432) +* perspective: three. (line 445) * physically based rendering: three. (line 74) * picture: Frames and pictures. (line 26) @@ -10274,16 +10289,16 @@ Index * picture.scale: Frames and pictures. (line 110) * piecewisestraight: Paths and guides. (line 92) -* pixel: three. (line 655) +* pixel: three. (line 668) * Pl: Mathematical functions. - (line 48) + (line 49) * plain: plain. (line 6) -* planar: three. (line 128) -* plane: three. (line 371) -* planeproject: three. (line 549) +* planar: three. (line 141) +* plane: three. (line 384) +* planeproject: three. (line 562) * point: Paths and guides. (line 95) * point <1>: Paths and guides. (line 380) -* point <2>: three. (line 566) +* point <2>: three. (line 579) * polar: Data types. (line 149) * polargraph: graph. (line 89) * polygon: graph. (line 481) @@ -10291,9 +10306,9 @@ Index * Portrait: Frames and pictures. (line 90) * position: three. (line 76) -* position <1>: three. (line 184) +* position <1>: three. (line 197) * postcontrol: Paths and guides. (line 146) -* postcontrol <1>: three. (line 566) +* postcontrol <1>: three. (line 579) * postfix operators: Self & prefix operators. (line 19) * postscript: Frames and pictures. @@ -10302,10 +10317,10 @@ Index * PostScript subpath: Paths. (line 23) * pow10: Mathematical functions. (line 6) -* prc: three. (line 279) +* prc: three. (line 292) * precision: Files. (line 97) * precontrol: Paths and guides. (line 139) -* precontrol <1>: three. (line 566) +* precontrol <1>: three. (line 579) * prefix operators: Self & prefix operators. (line 6) * private: Structures. (line 6) @@ -10337,7 +10352,7 @@ Index * radians: Mathematical functions. (line 17) * radius: Paths and guides. (line 135) -* radius <1>: three. (line 566) +* radius <1>: three. (line 579) * Rainbow: palette. (line 12) * rand: Mathematical functions. (line 39) @@ -10366,7 +10381,7 @@ Index (line 6) * rename: Files. (line 156) * render: three. (line 46) -* render <1>: three. (line 184) +* render <1>: three. (line 197) * render <2>: Options. (line 188) * replace: Data types. (line 270) * resetdefaultpen: Pens. (line 440) @@ -10379,21 +10394,21 @@ Index * reverse <1>: Paths and guides. (line 183) * reverse <2>: Paths and guides. (line 383) * reverse <3>: Arrays. (line 145) -* reverse <4>: three. (line 566) +* reverse <4>: three. (line 579) * rewind: Files. (line 97) * rfind: Data types. (line 247) * rgb: Pens. (line 30) * rgb <1>: Pens. (line 34) * rgb <2>: Pens. (line 62) * Riemann zeta function: Mathematical functions. - (line 48) + (line 49) * Right: graph. (line 273) * RightSide: label. (line 67) * RightTicks: graph. (line 161) * RightTicks <1>: graph. (line 234) -* RightView: three. (line 452) +* RightView: three. (line 465) * Rotate: label. (line 43) -* rotate: three. (line 520) +* rotate: three. (line 533) * Rotate(pair z): label. (line 46) * round: Mathematical functions. (line 26) @@ -10416,8 +10431,8 @@ Index * scale <2>: Transforms. (line 36) * scale <3>: graph. (line 711) * Scale <1>: graph. (line 728) -* scale <4>: three. (line 519) -* scale3: three. (line 517) +* scale <4>: three. (line 532) +* scale3: three. (line 530) * scaled graph: graph. (line 691) * schur: Arrays. (line 271) * schur <1>: Arrays. (line 275) @@ -10448,21 +10463,21 @@ Index * shift: Transforms. (line 26) * shift <1>: Transforms. (line 28) * shift <2>: Transforms. (line 46) -* shift <3>: three. (line 509) +* shift <3>: three. (line 522) * shiftless: Transforms. (line 46) * shininess: three. (line 66) * shipout: Frames and pictures. (line 78) -* showtarget: three. (line 405) +* showtarget: three. (line 418) * Si: Mathematical functions. - (line 48) + (line 49) * signedint: Files. (line 80) * signedint <1>: Files. (line 93) * SimpleHead: draw. (line 50) * simplex: simplex. (line 6) * simplex2: simplex2. (line 6) * simpson: Mathematical functions. - (line 82) + (line 83) * sin: Mathematical functions. (line 6) * Sin: Mathematical functions. @@ -10474,9 +10489,9 @@ Index * singlereal <1>: Files. (line 93) * sinh: Mathematical functions. (line 6) -* SixViews: three. (line 467) -* SixViewsFR: three. (line 467) -* SixViewsUS: three. (line 467) +* SixViews: three. (line 480) +* SixViewsFR: three. (line 480) +* SixViewsUS: three. (line 480) * size: Figure size. (line 6) * size <1>: Paths and guides. (line 81) * size <2>: Paths and guides. (line 371) @@ -10484,9 +10499,9 @@ Index (line 35) * size <4>: Frames and pictures. (line 61) -* size <5>: three. (line 566) +* size <5>: three. (line 579) * size <6>: Options. (line 188) -* size3: three. (line 330) +* size3: three. (line 343) * Slant: label. (line 49) * slant: Transforms. (line 38) * sleep: Data types. (line 376) @@ -10499,7 +10514,7 @@ Index * slopefield: slopefield. (line 6) * smoothcontour3: smoothcontour3. (line 6) * sncndn: Mathematical functions. - (line 48) + (line 49) * solid: Pens. (line 102) * solids: solids. (line 6) * solve: Arrays. (line 299) @@ -10511,7 +10526,7 @@ Index * specularfactor: three. (line 76) * specularpen: three. (line 66) * Spline: graph. (line 33) -* Spline <1>: graph3. (line 99) +* Spline <1>: graph3. (line 102) * split: Data types. (line 279) * sqrt: Mathematical functions. (line 6) @@ -10530,7 +10545,7 @@ Index * stop: Debugger. (line 10) * straight: Paths and guides. (line 88) * Straight: graph. (line 30) -* straight <1>: three. (line 566) +* straight <1>: three. (line 579) * strftime: Data types. (line 321) * strftime <1>: Data types. (line 346) * string: Data types. (line 208) @@ -10542,7 +10557,7 @@ Index * struct: Structures. (line 6) * structures: Structures. (line 6) * subpath: Paths and guides. (line 186) -* subpath <1>: three. (line 566) +* subpath <1>: three. (line 579) * subpictures: Frames and pictures. (line 100) * substr: Data types. (line 262) @@ -10551,11 +10566,11 @@ Index * Suppress: Pens. (line 420) * SuppressQuiet: Pens. (line 424) * surface: three. (line 46) -* surface <1>: three. (line 104) -* surface <2>: three. (line 128) -* surface <3>: three. (line 142) -* surface <4>: graph3. (line 99) -* surface <5>: graph3. (line 128) +* surface <1>: three. (line 117) +* surface <2>: three. (line 141) +* surface <3>: three. (line 155) +* surface <4>: graph3. (line 102) +* surface <5>: graph3. (line 131) * SVG: Options. (line 193) * system: Data types. (line 354) * system <1>: Options. (line 209) @@ -10569,7 +10584,7 @@ Index (line 20) * tanh: Mathematical functions. (line 6) -* target: three. (line 405) +* target: three. (line 418) * tell: Files. (line 97) * template: Templated imports. (line 6) * tension: Bezier curves. (line 56) @@ -10577,7 +10592,7 @@ Index * tensionSpecifier: Paths and guides. (line 403) * tensor product shading: fill. (line 78) * tensorshade: fill. (line 78) -* tessellation: three. (line 154) +* tessellation: three. (line 167) * tex: Frames and pictures. (line 292) * tex <1>: Options. (line 188) @@ -10585,7 +10600,7 @@ Index * TeX string: Data types. (line 208) * texcommand: Configuring. (line 69) * TeXHead: draw. (line 50) -* TeXHead3: three. (line 632) +* TeXHead3: three. (line 645) * texpath: Configuring. (line 69) * texpath <1>: label. (line 122) * texpreamble: Frames and pictures. @@ -10595,13 +10610,13 @@ Index * textbook graph: graph. (line 361) * tgz: UNIX binary distributions. (line 6) -* thick: three. (line 166) -* thin: three. (line 166) +* thick: three. (line 179) +* thin: three. (line 179) * this: Structures. (line 6) * three: three. (line 6) -* ThreeViews: three. (line 467) -* ThreeViewsFR: three. (line 467) -* ThreeViewsUS: three. (line 467) +* ThreeViews: three. (line 480) +* ThreeViewsFR: three. (line 480) +* ThreeViewsUS: three. (line 480) * tick: graph. (line 331) * ticks: graph. (line 161) * Ticks: graph. (line 161) @@ -10616,12 +10631,12 @@ Index * times: Paths and guides. (line 220) * times <1>: Paths and guides. (line 224) * Top: graph. (line 136) -* TopView: three. (line 452) +* TopView: three. (line 465) * trace: Debugger. (line 50) * trailingzero: graph. (line 176) * transform: Transforms. (line 6) -* transform <1>: three. (line 541) -* transform3: three. (line 504) +* transform <1>: three. (line 554) +* transform3: three. (line 517) * transparency: Pens. (line 307) * transparent: three. (line 97) * transpose: Arrays. (line 212) @@ -10629,15 +10644,15 @@ Index * tree: tree. (line 6) * trembling: trembling. (line 6) * triangle: geometry. (line 6) -* triangles: three. (line 154) +* triangles: three. (line 167) * triangulate: contour. (line 192) * tridiagonal: Arrays. (line 286) * trigonometric integrals: Mathematical functions. - (line 48) + (line 49) * triple: Data types. (line 137) * TrueMargin: draw. (line 90) -* TrueMargin3: three. (line 648) -* tube: three. (line 166) +* TrueMargin3: three. (line 661) +* tube: three. (line 179) * tube <1>: tube. (line 6) * tutorial: Tutorial. (line 6) * type1cm: Pens. (line 245) @@ -10656,10 +10671,10 @@ Index * unit: Data types. (line 83) * unit <1>: Data types. (line 174) * unitbox: Paths. (line 44) -* unitbox <1>: three. (line 377) +* unitbox <1>: three. (line 390) * unitcircle: Paths. (line 17) * unitcircle <1>: Paths. (line 17) -* unitcircle <2>: three. (line 345) +* unitcircle <2>: three. (line 358) * unitrand: Mathematical functions. (line 39) * unitsize: Figure size. (line 39) @@ -10669,7 +10684,7 @@ Index (line 6) * unpacking: Rest arguments. (line 39) * unravel: Import. (line 29) -* up: three. (line 405) +* up: three. (line 418) * update: Files. (line 38) * UpsideDown: Frames and pictures. (line 90) @@ -10682,7 +10697,7 @@ Index * user-defined operators: User-defined operators. (line 6) * usleep: Data types. (line 379) -* v3d: three. (line 300) +* v3d: three. (line 313) * value: math. (line 34) * value <1>: math. (line 37) * var: Variable initializers. @@ -10691,24 +10706,24 @@ Index (line 6) * vectorfield: graph. (line 1023) * vectorfield <1>: graph. (line 1062) -* vectorfield3: graph3. (line 167) +* vectorfield3: graph3. (line 170) * vectorization: Arrays. (line 343) * verbatim: Frames and pictures. (line 284) -* vertex-dependent colors: three. (line 119) +* vertex-dependent colors: three. (line 132) * Vertical: flowchart. (line 77) * Viewport: three. (line 76) * viewportheight: LaTeX usage. (line 47) -* viewportmargin: three. (line 333) -* viewportsize: three. (line 333) +* viewportmargin: three. (line 346) +* viewportsize: three. (line 346) * viewportwidth: LaTeX usage. (line 47) -* views: three. (line 279) +* views: three. (line 292) * vim: Editing modes. (line 32) * virtual functions: Structures. (line 124) * void: Data types. (line 10) * W: Labels. (line 18) * warn: Configuring. (line 79) -* WebGL: three. (line 233) +* WebGL: three. (line 246) * whatever: Paths and guides. (line 246) * Wheel: palette. (line 22) * wheel mouse: GUI. (line 6) @@ -10720,7 +10735,7 @@ Index * word: Arrays. (line 374) * write: Files. (line 57) * write <1>: Arrays. (line 413) -* X: three. (line 345) +* X: three. (line 358) * xasy: GUI. (line 6) * xaxis3: graph3. (line 7) * xdr: Files. (line 80) @@ -10733,20 +10748,20 @@ Index * xpart: Data types. (line 94) * xpart <1>: Data types. (line 185) * xscale: Transforms. (line 30) -* xscale3: three. (line 511) +* xscale3: three. (line 524) * xtick: graph. (line 331) -* XY: three. (line 526) -* XY <1>: three. (line 541) -* XYEquals: graph3. (line 21) -* XYZero: graph3. (line 21) -* XZEquals: graph3. (line 21) +* XY: three. (line 539) +* XY <1>: three. (line 554) +* XYEquals: graph3. (line 24) +* XYZero: graph3. (line 24) +* XZEquals: graph3. (line 24) * XZero: graph. (line 261) -* XZZero: graph3. (line 21) +* XZZero: graph3. (line 24) * Y: Mathematical functions. (line 6) * Y <1>: Mathematical functions. - (line 48) -* Y <2>: three. (line 345) + (line 49) +* Y <2>: three. (line 358) * yaxis3: graph3. (line 7) * YEquals: graph. (line 129) * yequals: graph. (line 279) @@ -10754,190 +10769,191 @@ Index * ypart: Data types. (line 97) * ypart <1>: Data types. (line 188) * yscale: Transforms. (line 32) -* yscale3: three. (line 513) +* yscale3: three. (line 526) * ytick: graph. (line 331) -* YX: three. (line 541) -* YZ: three. (line 541) -* YZEquals: graph3. (line 21) +* YX: three. (line 554) +* YZ: three. (line 554) +* YZEquals: graph3. (line 24) * YZero: graph. (line 124) -* YZZero: graph3. (line 21) -* Z: three. (line 345) +* YZZero: graph3. (line 24) +* Z: three. (line 358) * zaxis3: graph3. (line 7) * zero_Ai: Mathematical functions. - (line 48) + (line 49) * zero_Ai_deriv: Mathematical functions. - (line 48) + (line 49) * zero_Bi: Mathematical functions. - (line 48) + (line 49) * zero_Bi_deriv: Mathematical functions. - (line 48) + (line 49) * zero_J: Mathematical functions. - (line 48) + (line 49) * zeroTransform: Transforms. (line 44) * zerowinding: Pens. (line 164) * zeta: Mathematical functions. - (line 48) + (line 49) * zpart: Data types. (line 191) -* zscale3: three. (line 515) -* ZX: three. (line 541) -* ZX <1>: three. (line 541) -* ZY: three. (line 541) +* zscale3: three. (line 528) +* ZX: three. (line 554) +* ZX <1>: three. (line 554) +* ZY: three. (line 554) Tag Table: Node: Top573 Node: Description7668 -Node: Installation12075 -Node: UNIX binary distributions13220 -Node: MacOS X binary distributions14395 -Node: Microsoft Windows15007 -Node: Configuring16247 -Node: Search paths20762 -Node: Compiling from UNIX source21854 -Node: Editing modes25157 -Node: Git27735 -Node: Building the documentation28258 -Node: Uninstall28824 -Node: Tutorial29180 -Node: Drawing in batch mode30051 -Node: Drawing in interactive mode30975 -Node: Figure size32046 -Node: Labels33733 -Node: Paths34625 -Ref: unitcircle35265 -Node: Drawing commands37258 -Node: draw39126 -Ref: arrows40402 -Node: fill46708 -Ref: gradient shading47790 -Node: clip52636 -Node: label53413 -Ref: Label54327 -Ref: baseline58241 -Ref: envelope58977 -Node: Bezier curves60529 -Node: Programming64497 -Ref: array iteration66357 -Node: Data types66524 -Ref: format78182 -Node: Paths and guides82850 -Ref: circle83112 -Ref: extension93464 -Node: Pens100657 -Ref: fillrule108796 -Ref: basealign109754 -Ref: transparency115119 -Ref: makepen118840 -Ref: overwrite119746 -Node: Transforms121005 -Node: Frames and pictures123100 -Ref: size124772 -Ref: unitsize125839 -Ref: shipout126968 -Ref: filltype129354 -Ref: add132983 -Ref: add about133956 -Ref: tex137074 -Node: Deferred drawing137985 -Node: Files141276 -Ref: cd142366 -Ref: scroll147512 -Node: Variable initializers150621 -Node: Structures153502 -Node: Operators158816 -Node: Arithmetic & logical159132 -Node: Self & prefix operators161688 -Node: User-defined operators162548 -Node: Implicit scaling163487 -Node: Functions164050 -Ref: stack overflow167195 -Node: Default arguments167481 -Node: Named arguments168253 -Node: Rest arguments170903 -Node: Mathematical functions174060 -Node: Arrays180924 -Ref: sort189022 -Ref: tridiagonal192580 -Ref: solve193895 -Node: Slices198215 -Node: Casts202235 -Node: Import204649 -Node: Templated imports210291 -Node: Static212185 -Node: LaTeX usage215143 -Node: Base modules221744 -Node: plain224309 -Node: simplex225015 -Node: simplex2225219 -Node: math225488 -Node: interpolate228419 -Node: geometry228710 -Node: trembling229406 -Node: stats229683 -Node: patterns229954 -Node: markers230197 -Node: map232097 -Node: tree232533 -Node: binarytree232717 -Node: drawtree233392 -Node: syzygy233601 -Node: feynman233883 -Node: roundedpath234169 -Node: animation234459 -Ref: animate234907 -Node: embed236083 -Node: slide237093 -Node: MetaPost237436 -Node: babel238212 -Node: labelpath238460 -Node: labelpath3239324 -Node: annotate239651 -Node: CAD240141 -Node: graph240459 -Ref: ticks248075 -Ref: pathmarkers262263 -Ref: marker262737 -Ref: markuniform263103 -Ref: errorbars265010 -Ref: automatic scaling270187 -Node: palette282007 -Ref: images282129 -Ref: image286593 -Ref: logimage287114 -Ref: penimage288224 -Ref: penfunctionimage288487 -Node: three289263 -Ref: PostScript3D321652 -Node: obj323446 -Node: graph3323707 -Ref: GaussianSurface329578 -Node: grid3330756 -Node: solids331592 -Node: tube332616 -Node: flowchart334999 -Node: contour339718 -Node: contour3346318 -Node: smoothcontour3346642 -Node: slopefield348409 -Node: ode349954 -Node: Options350223 -Ref: configuration file358661 -Ref: settings358661 -Ref: texengines360009 -Ref: magick360009 -Node: Interactive mode363404 -Ref: history365633 -Node: GUI367004 -Node: GUI installation367574 -Node: GUI usage368570 -Node: Command-Line Interface369637 -Node: Language server protocol371125 -Node: PostScript to Asymptote372606 -Node: Help373433 -Node: Debugger375163 -Node: Credits377011 -Node: Index378268 +Node: Installation12082 +Node: UNIX binary distributions13227 +Node: MacOS X binary distributions14402 +Node: Microsoft Windows15014 +Node: Configuring16254 +Node: Search paths20769 +Node: Compiling from UNIX source21861 +Node: Editing modes25164 +Node: Git27742 +Node: Building the documentation28265 +Node: Uninstall28831 +Node: Tutorial29187 +Node: Drawing in batch mode30058 +Node: Drawing in interactive mode30982 +Node: Figure size32053 +Node: Labels33740 +Node: Paths34632 +Ref: unitcircle35272 +Node: Drawing commands37265 +Node: draw39133 +Ref: arrows40409 +Node: fill46715 +Ref: gradient shading47797 +Node: clip52672 +Node: label53449 +Ref: Label54363 +Ref: baseline58277 +Ref: envelope59013 +Node: Bezier curves60565 +Node: Programming64532 +Ref: array iteration66392 +Node: Data types66559 +Ref: format78217 +Node: Paths and guides82885 +Ref: circle83147 +Ref: extension93499 +Node: Pens100692 +Ref: fillrule108831 +Ref: basealign109789 +Ref: transparency115154 +Ref: makepen118875 +Ref: overwrite119781 +Node: Transforms121040 +Node: Frames and pictures123135 +Ref: size124807 +Ref: unitsize125874 +Ref: shipout127003 +Ref: filltype129389 +Ref: add133018 +Ref: add about133991 +Ref: tex137109 +Ref: deferred drawing138020 +Node: Deferred drawing138020 +Node: Files141311 +Ref: cd142401 +Ref: scroll147547 +Node: Variable initializers150656 +Node: Structures153537 +Node: Operators158851 +Node: Arithmetic & logical159167 +Node: Self & prefix operators161723 +Node: User-defined operators162583 +Node: Implicit scaling163522 +Node: Functions164085 +Ref: stack overflow167230 +Node: Default arguments167516 +Node: Named arguments168288 +Node: Rest arguments170938 +Node: Mathematical functions174095 +Node: Arrays181030 +Ref: sort189128 +Ref: tridiagonal192686 +Ref: solve194001 +Node: Slices198321 +Node: Casts202341 +Node: Import204755 +Node: Templated imports210397 +Node: Static212291 +Node: LaTeX usage215249 +Node: Base modules221850 +Node: plain224415 +Node: simplex225121 +Node: simplex2225325 +Node: math225621 +Node: interpolate228552 +Node: geometry228843 +Node: trembling229539 +Node: stats229816 +Node: patterns230087 +Node: markers230330 +Node: map232230 +Node: tree232650 +Node: binarytree232834 +Node: drawtree233509 +Node: syzygy233718 +Node: feynman234000 +Node: roundedpath234286 +Node: animation234576 +Ref: animate235024 +Node: embed236200 +Node: slide237210 +Node: MetaPost237553 +Node: babel238329 +Node: labelpath238577 +Node: labelpath3239441 +Node: annotate239768 +Node: CAD240258 +Node: graph240576 +Ref: ticks248192 +Ref: pathmarkers262380 +Ref: marker262854 +Ref: markuniform263220 +Ref: errorbars265127 +Ref: automatic scaling270304 +Node: palette282124 +Ref: images282246 +Ref: image286710 +Ref: logimage287231 +Ref: penimage288341 +Ref: penfunctionimage288604 +Node: three289380 +Ref: PostScript3D322409 +Node: obj324203 +Node: graph3324464 +Ref: GaussianSurface330491 +Node: grid3331669 +Node: solids332505 +Node: tube333529 +Node: flowchart335912 +Node: contour340631 +Node: contour3347231 +Node: smoothcontour3347555 +Node: slopefield349322 +Node: ode350867 +Node: Options351136 +Ref: configuration file359588 +Ref: settings359588 +Ref: texengines360936 +Ref: magick360936 +Node: Interactive mode364331 +Ref: history366560 +Node: GUI367931 +Node: GUI installation368501 +Node: GUI usage369497 +Node: Command-Line Interface370564 +Node: Language server protocol372052 +Node: PostScript to Asymptote373533 +Node: Help374360 +Node: Debugger376090 +Node: Credits377938 +Node: Index379195 End Tag Table diff --git a/graphics/asymptote/drawsurface.cc b/graphics/asymptote/drawsurface.cc index 104b545668..ef330a07b7 100644 --- a/graphics/asymptote/drawsurface.cc +++ b/graphics/asymptote/drawsurface.cc @@ -497,9 +497,9 @@ bool drawBezierTriangle::write(abs3Doutfile *out) } else { double prerender=renderResolution(); if(prerender) { - GLfloat c[16]; + GLfloat c[12]; if(colors) - for(size_t i=0; i < 4; ++i) + for(size_t i=0; i < 3; ++i) storecolor(c,4*i,colors[i]); S.init(prerender,colors ? c : NULL); S.render(controls,straight,c); diff --git a/graphics/asymptote/drawsurface.h b/graphics/asymptote/drawsurface.h index d68f179759..80d9d9415f 100644 --- a/graphics/asymptote/drawsurface.h +++ b/graphics/asymptote/drawsurface.h @@ -642,9 +642,9 @@ public: for(size_t i=0; i < nN; i++) N[i]=s->N[i]; } else { - double T[]={t[0],t[1],t[2], - t[4],t[5],t[6], - t[8],t[9],t[10]}; + double T[]={t[0],t[4],t[8], + t[1],t[5],t[9], + t[2],t[6],t[10]}; run::inverse(T,3); for(size_t i=0; i < nN; i++) N[i]=unit(Transform3(s->N[i],T)); diff --git a/graphics/asymptote/errormsg.cc b/graphics/asymptote/errormsg.cc index c9248a6299..e55a2c4d6b 100644 --- a/graphics/asymptote/errormsg.cc +++ b/graphics/asymptote/errormsg.cc @@ -20,6 +20,8 @@ static nullPosInitializer nullPosInit; bool errorstream::interrupt=false; +using camp::newl; + ostream& operator<< (ostream& out, const position& pos) { if (!pos) @@ -34,7 +36,7 @@ ostream& operator<< (ostream& out, const position& pos) while(count > 0 && getline(fin,s)) { count--; } - s=std::regex_replace(s,std::regex("\t")," "); + s=std::regex_replace(s,std::regex("\t")," "); out << s << endl; for(size_t i=1; i < pos.column; ++i) out << " "; @@ -42,7 +44,7 @@ ostream& operator<< (ostream& out, const position& pos) } out << filename << ": "; - out << pos.line << "." << pos.column << ": "; + out << pos.line << "." << pos.column; if(settings::getSetting<bool>("xasy")) { camp::openpipeout(); @@ -62,7 +64,7 @@ void errorstream::clear() void errorstream::message(position pos, const string& s) { if (floating) out << endl; - out << pos << s; + out << pos << ": " << s; floating = true; } @@ -122,9 +124,24 @@ void errorstream::cont() floating = false; } -void errorstream::sync() +void errorstream::sync(bool reportTraceback) { if (floating) out << endl; + + if(reportTraceback && traceback.size()) { + bool first=true; + for(auto p=this->traceback.rbegin(); p != this->traceback.rend(); ++p) { + if(p->filename() != "-") { + if(first) { + out << newl << "TRACEBACK:"; + first=false; + } + cout << newl << (*p) << endl; + } + } + traceback.clear(); + } + floating = false; } diff --git a/graphics/asymptote/errormsg.h b/graphics/asymptote/errormsg.h index eb03faa5cb..95edbeedaf 100644 --- a/graphics/asymptote/errormsg.h +++ b/graphics/asymptote/errormsg.h @@ -174,6 +174,9 @@ class errorstream { public: static bool interrupt; // Is there a pending interrupt? + using traceback_t = mem::list<position> ; + traceback_t traceback; + errorstream(ostream& out = cerr) : out(out), anyErrors(false), anyWarnings(false), floating(false), anyStatusErrors(false) {} @@ -222,7 +225,7 @@ public: // Reporting errors to the stream may be incomplete. This draws the // appropriate newlines or file excerpts that may be needed at the end. - void sync(); + void sync(bool reportTraceback=false); void cont(); diff --git a/graphics/asymptote/examples/AiryDisk.asy b/graphics/asymptote/examples/AiryDisk.asy index 855abfaa95..03c50ecd55 100644 --- a/graphics/asymptote/examples/AiryDisk.asy +++ b/graphics/asymptote/examples/AiryDisk.asy @@ -2,7 +2,7 @@ import graph3; import gsl; size(10cm,15cm,IgnoreAspect); -currentprojection=orthographic(150,50,1); +currentprojection=orthographic(dir(70,60)); real f(pair z) {real r=abs(z); return r == 0 ? 1 : (2.0*J(1,r)/r)^2;} diff --git a/graphics/asymptote/examples/RiemannSphere.asy b/graphics/asymptote/examples/RiemannSphere.asy index 40f9d065a3..3fd08cded9 100644 --- a/graphics/asymptote/examples/RiemannSphere.asy +++ b/graphics/asymptote/examples/RiemannSphere.asy @@ -2,7 +2,6 @@ import graph3; import solids; currentlight=White; -defaultrender.merge=true; size(10cm,0); diff --git a/graphics/asymptote/examples/RiemannSurface.asy b/graphics/asymptote/examples/RiemannSurface.asy index 92f94bdc72..2a4ba5e4db 100644 --- a/graphics/asymptote/examples/RiemannSurface.asy +++ b/graphics/asymptote/examples/RiemannSurface.asy @@ -4,7 +4,7 @@ import palette; size(200,300,keepAspect=false); //settings.nothin=true; -currentprojection=orthographic(10,10,30); +currentprojection=orthographic(dir(70,60)); currentlight=(10,10,5); triple f(pair t) {return (exp(t.x)*cos(t.y),exp(t.x)*sin(t.y),t.y);} diff --git a/graphics/asymptote/examples/RiemannSurfaceRoot.asy b/graphics/asymptote/examples/RiemannSurfaceRoot.asy index 65098ac935..a824629e05 100644 --- a/graphics/asymptote/examples/RiemannSurfaceRoot.asy +++ b/graphics/asymptote/examples/RiemannSurfaceRoot.asy @@ -6,7 +6,7 @@ int n=3; size(200,300,keepAspect=false); -currentprojection=orthographic(10,10,30); +currentprojection=orthographic(dir(60,60)); currentlight=(10,10,5); triple f(pair t) {return (t.x*cos(t.y),t.x*sin(t.y),t.x^(1/n)*sin(t.y/n));} diff --git a/graphics/asymptote/examples/arrows3.asy b/graphics/asymptote/examples/arrows3.asy index b71c08406a..b3b72166cd 100644 --- a/graphics/asymptote/examples/arrows3.asy +++ b/graphics/asymptote/examples/arrows3.asy @@ -2,8 +2,6 @@ import three; size(15cm); -defaultrender.merge=true; - currentprojection=perspective(24,14,13); currentlight=light(gray(0.5),specularfactor=3, (0.5,-0.5,-0.25),(0.5,0.5,0.25),(0.5,0.5,1),(-0.5,-0.5,-1)); diff --git a/graphics/asymptote/examples/clockarray.asy b/graphics/asymptote/examples/clockarray.asy index be7fd899a0..3e4387d388 100644 --- a/graphics/asymptote/examples/clockarray.asy +++ b/graphics/asymptote/examples/clockarray.asy @@ -3,8 +3,6 @@ int ny=4; real xmargin=1cm; real ymargin=xmargin; -size(settings.paperwidth,settings.paperheight); - picture pic; real width=settings.paperwidth/nx-xmargin; real height=settings.paperheight/ny-ymargin; @@ -36,4 +34,3 @@ pair size=size(f)+(xmargin,ymargin); for(int i=0; i < nx; ++i) for(int j=0; j < ny; ++j) add(shift(realmult(size,(i,j)))*f); - diff --git a/graphics/asymptote/examples/cyclohexane.asy b/graphics/asymptote/examples/cyclohexane.asy index 11b01551c8..fb29287040 100644 --- a/graphics/asymptote/examples/cyclohexane.asy +++ b/graphics/asymptote/examples/cyclohexane.asy @@ -36,8 +36,6 @@ triple h12=rotate(120,c6,c5)*h11; pen Black=gray(0.4); -defaultrender=render(compression=Zero,merge=true); - draw(shift(c1)*carbon,Black); draw(shift(c2)*carbon,Black); draw(shift(c3)*carbon,Black); @@ -45,7 +43,6 @@ draw(shift(c4)*carbon,Black); draw(shift(c5)*carbon,Black); draw(shift(c6)*carbon,Black); - material White=material(diffusepen=gray(0.4),emissivepen=gray(0.6)); draw(shift(h1)*hydrogen,White); @@ -61,7 +58,6 @@ draw(shift(h10)*hydrogen,White); draw(shift(h11)*hydrogen,White); draw(shift(h12)*hydrogen,White); - pen thick=linewidth(10); draw(c1--c2--c3--c4--c5--c6--cycle,thick); diff --git a/graphics/asymptote/examples/elevation.asy b/graphics/asymptote/examples/elevation.asy index 32dbde86c0..e7495c1320 100644 --- a/graphics/asymptote/examples/elevation.asy +++ b/graphics/asymptote/examples/elevation.asy @@ -6,8 +6,6 @@ currentprojection=orthographic(0.8,1,1); size(400,300,IgnoreAspect); -defaultrender.merge=true; - real f(pair z) {return cos(2*pi*z.x)*sin(2*pi*z.y);} surface s=surface(f,(-1/2,-1/2),(1/2,1/2),50,Spline); diff --git a/graphics/asymptote/examples/extrudedcontour.asy b/graphics/asymptote/examples/extrudedcontour.asy index 29b12b5c38..75edda6f67 100644 --- a/graphics/asymptote/examples/extrudedcontour.asy +++ b/graphics/asymptote/examples/extrudedcontour.asy @@ -2,9 +2,7 @@ import contour; import palette; import graph3; -defaultrender.merge=true; - -currentprojection=orthographic(25,10,10); +currentprojection=orthographic(dir(60,25)); size(0,12cm); real a=3; real b=4; @@ -22,4 +20,3 @@ surface s=surface(f,(0,0),(10,10),20,Spline); s.colors(palette(s.map(zpart),Rainbow()+opacity(0.5))); draw(s); axes3("$x$","$y$","$z$",Arrow3); - diff --git a/graphics/asymptote/examples/filesurface.asy b/graphics/asymptote/examples/filesurface.asy index bfa500ebf5..f51b0cd3e6 100644 --- a/graphics/asymptote/examples/filesurface.asy +++ b/graphics/asymptote/examples/filesurface.asy @@ -3,34 +3,21 @@ import palette; size3(200,IgnoreAspect); +currentprojection=perspective(dir(68,225)); + file in=input("filesurface.dat").line(); real[] x=in; real[] y=in; real[][] z=in; -surface s=surface(z,x,y,linear,linear); -real[] level=uniform(min(z)*(1-sqrtEpsilon),max(z)*(1+sqrtEpsilon),4); +surface s=surface(z,x,y); +real[] level=uniform(min(z)*(1-sqrtEpsilon),max(z)*(1+sqrtEpsilon),256); s.colors(palette(s.map(new real(triple v) {return find(level >= v.z);}), Rainbow())); -draw(s,meshpen=thick(),render(merge=true)); - -triple m=currentpicture.userMin(); -triple M=currentpicture.userMax(); -triple target=0.5*(m+M); +draw(s,meshpen=thick(),render(tessellate=true)); xaxis3("$x$",Bounds,InTicks); yaxis3("$y$",Bounds,InTicks(Step=1,step=0.1)); zaxis3("$z$",Bounds,InTicks); - -/* - picture palette; - size3(palette,1cm); - draw(palette,unitcube,red); - frame F=palette.fit3(); - add(F,(M.x,m.y,m.z)); -*/ - -currentprojection=perspective(camera=target+realmult(dir(68,225),M-m), - target=target); diff --git a/graphics/asymptote/examples/gamma3.asy b/graphics/asymptote/examples/gamma3.asy index 6fc56065cb..87ec463de9 100644 --- a/graphics/asymptote/examples/gamma3.asy +++ b/graphics/asymptote/examples/gamma3.asy @@ -2,7 +2,7 @@ import graph3; import palette; size(12cm,IgnoreAspect); -currentprojection=orthographic(1,-2,1); +currentprojection=orthographic(dir(80,290)); real X=4.5; real M=abs(gamma((X,0))); @@ -22,7 +22,7 @@ real Arg(triple v) } s.colors(palette(s.map(Arg),Wheel())); -draw(s,render(compression=Low,merge=true)); +draw(s,render(tessellate=false)); real xmin=point((-1,-1,-1)).x; real xmax=point((1,1,1)).x; diff --git a/graphics/asymptote/examples/pdb.asy b/graphics/asymptote/examples/pdb.asy index 68cec9e367..ff773beea2 100644 --- a/graphics/asymptote/examples/pdb.asy +++ b/graphics/asymptote/examples/pdb.asy @@ -7,8 +7,9 @@ import cpkcolors; currentlight=White; //currentlight=nolight; -defaultrender.merge=true; // Fast low-quality rendering -//defaultrender.merge=false; // Slow high-quality rendering +//defaultrender.merge=true; // Fast low-quality PRC rendering +//defaultrender.merge=false; // Slow high-quality PRC rendering + bool pixel=false; // Set to true to draw dots as pixels. real width=6; diff --git a/graphics/asymptote/examples/projectelevation.asy b/graphics/asymptote/examples/projectelevation.asy index 6ffe512663..6e6bc2bed3 100644 --- a/graphics/asymptote/examples/projectelevation.asy +++ b/graphics/asymptote/examples/projectelevation.asy @@ -2,9 +2,10 @@ import graph3; import grid3; import palette; -currentprojection=orthographic(0.8,1,2); size(400,300,IgnoreAspect); +currentprojection=orthographic(dir(50,50)); + real f(pair z) {return cos(2*pi*z.x)*sin(2*pi*z.y);} surface s=surface(f,(-1/2,-1/2),(1/2,1/2),50,Spline); @@ -12,6 +13,6 @@ surface s=surface(f,(-1/2,-1/2),(1/2,1/2),50,Spline); surface S=planeproject(unitsquare3)*s; S.colors(palette(s.map(zpart),Rainbow())); draw(S,nolight); -draw(s,lightgray+opacity(0.7)); +draw(s,lightgray+opacity(0.7),render(tessellate=false)); grid3(XYZgrid); diff --git a/graphics/asymptote/examples/slidedemo.asy b/graphics/asymptote/examples/slidedemo.asy index 107564601f..99833e0ee6 100644 --- a/graphics/asymptote/examples/slidedemo.asy +++ b/graphics/asymptote/examples/slidedemo.asy @@ -1,3 +1,5 @@ +settings.tex="pdflatex"; + // Slide demo. // Command-line options to enable stepping and/or reverse video: // asy [-u stepping=true] [-u reverse=true] [-u itemstep=true] slidedemo diff --git a/graphics/asymptote/examples/smoothelevation.asy b/graphics/asymptote/examples/smoothelevation.asy index a7995b7079..310e2c201d 100644 --- a/graphics/asymptote/examples/smoothelevation.asy +++ b/graphics/asymptote/examples/smoothelevation.asy @@ -6,7 +6,7 @@ currentlight=Viewport; if(settings.render <= 0) settings.prc=false; -currentprojection=orthographic(1,2,13); +currentprojection=orthographic(dir(40,60)); size(400,300,IgnoreAspect); @@ -15,7 +15,7 @@ real f(pair z) {return cos(2*pi*z.x)*sin(2*pi*z.y);} surface s=surface(f,(-1/2,-1/2),(1/2,1/2),20,Spline); s.colors(palette(s.map(zpart),Rainbow())); -draw(s); +draw(s,render(tessellate=false)); scale(true); diff --git a/graphics/asymptote/examples/soccerball.asy b/graphics/asymptote/examples/soccerball.asy index 68a95edbdc..b83245b10f 100644 --- a/graphics/asymptote/examples/soccerball.asy +++ b/graphics/asymptote/examples/soccerball.asy @@ -3,8 +3,6 @@ size(400); currentlight.background=palegreen; settings.digits=15; -defaultrender=render(compression=Zero,merge=true); - real c=(1+sqrt(5))/2; triple[] z={(c,1,0),(-c,1,0),(-c,-1,0),(c,-1,0)}; diff --git a/graphics/asymptote/examples/splitpatch.asy b/graphics/asymptote/examples/splitpatch.asy index 1fa9325f4c..ff870c7b85 100644 --- a/graphics/asymptote/examples/splitpatch.asy +++ b/graphics/asymptote/examples/splitpatch.asy @@ -80,8 +80,6 @@ triple[][] B= split S=split(B,A); -defaultrender.merge=true; - for(int i=0; i < S.S[0].s.length; ++i) draw(surface(S.S[0].s[i]),Pen(i)); diff --git a/graphics/asymptote/examples/teapot.asy b/graphics/asymptote/examples/teapot.asy index 7a12cc3a66..26a2b129af 100644 --- a/graphics/asymptote/examples/teapot.asy +++ b/graphics/asymptote/examples/teapot.asy @@ -203,21 +203,21 @@ triple[][][] Q0={ }; -surface regularize(triple[][] P, real fraction=0.02) +surface regularize(triple[][] P, real fraction=0.002) { triple[][][] B=hsplit(P,fraction); triple[][] T=B[0]; - surface s=surface(T[0][0]..controls T[0][1] and T[0][2].. - T[0][3]..controls T[1][3] and T[2][3].. - T[3][3]..controls T[3][2] and T[3][1]..cycle); + surface s=surface(T[0][0]..controls T[3][1] and T[3][2].. + T[3][3]..controls T[2][3] and T[1][3].. + T[0][3]..controls T[0][2] and T[0][1]..cycle); s.append(surface(patch(B[1]))); return s; } surface S=surface(Q); for(triple[][] q : Q0) - // S.append(regularize(q)); - S.append(surface(patch(q))); + S.append(regularize(q)); +// S.append(surface(patch(q))); pen color; real metallic; diff --git a/graphics/asymptote/examples/truncatedIcosahedron.asy b/graphics/asymptote/examples/truncatedIcosahedron.asy index 092f96a4e6..d69cec9382 100644 --- a/graphics/asymptote/examples/truncatedIcosahedron.asy +++ b/graphics/asymptote/examples/truncatedIcosahedron.asy @@ -2,8 +2,6 @@ import graph3; size(200); -defaultrender.merge=true; - real c=(1+sqrt(5))/2; triple[] z={(c,1,0),(-c,1,0),(-c,-1,0),(c,-1,0)}; @@ -64,6 +62,3 @@ for(int i=0; i < P.length; ++i) { draw(surface(reverse(operator--(...fiveout)--cycle)^^ operator--(...fivein)--cycle,planar=true),cyan); } - - - diff --git a/graphics/asymptote/examples/twistedtubes.asy b/graphics/asymptote/examples/twistedtubes.asy index ee25cd0bd3..316b875cca 100644 --- a/graphics/asymptote/examples/twistedtubes.asy +++ b/graphics/asymptote/examples/twistedtubes.asy @@ -22,8 +22,6 @@ s2.colors(palette(s2.map(f),Rainbow)); s3.colors(palette(s3.map(f),Rainbow)); s4.colors(palette(s4.map(f),Rainbow)); -defaultrender.merge=true; - draw(s1); draw(s2); draw(s3); diff --git a/graphics/asymptote/exp.cc b/graphics/asymptote/exp.cc index 8f8ebae097..f683330158 100644 --- a/graphics/asymptote/exp.cc +++ b/graphics/asymptote/exp.cc @@ -103,7 +103,7 @@ void exp::testCachedType(coenv &e) { em.compiler(getPos()); em << "cached type '" << *ct << "' doesn't match actual type '" << *t << "'"; - em.sync(); + em.sync(true); } } } diff --git a/graphics/asymptote/genv.cc b/graphics/asymptote/genv.cc index 65e132ef56..f58294101c 100644 --- a/graphics/asymptote/genv.cc +++ b/graphics/asymptote/genv.cc @@ -121,7 +121,7 @@ void genv::checkRecursion(string filename) { inTranslation.end()) { em.sync(); em << "error: recursive loading of module '" << filename << "'\n"; - em.sync(); + em.sync(true); throw handled_error(); } } diff --git a/graphics/asymptote/glrender.cc b/graphics/asymptote/glrender.cc index c64dc26d0d..a4d1761948 100644 --- a/graphics/asymptote/glrender.cc +++ b/graphics/asymptote/glrender.cc @@ -439,6 +439,7 @@ void home(bool webgl=false) } double T[16]; +double Tup[16]; #ifdef HAVE_GL @@ -568,7 +569,7 @@ void initComputeShaders() shaderParams.push_back(s.str().c_str()); s2 << "BLOCKSIZE " << gl::blockSize << "u" << endl; shaderParams.push_back(s2.str().c_str()); - GLuint rc=compileAndLinkShader(shaders,shaderParams,true,false,true); + GLuint rc=compileAndLinkShader(shaders,shaderParams,true,false,true,true); if(rc == 0) { GPUindexing=false; // Compute shaders are unavailable. if(settings::verbose > 2) @@ -662,7 +663,8 @@ void initShaders() if(GPUcompress) shaderParams.push_back("GPUCOMPRESS"); shaders[1]=ShaderfileModePair(count.c_str(),GL_FRAGMENT_SHADER); - camp::countShader=compileAndLinkShader(shaders,shaderParams,true); + camp::countShader=compileAndLinkShader(shaders,shaderParams, + true,false,false,true); if(camp::countShader) shaderParams.push_back("HAVE_SSBO"); #else @@ -697,8 +699,8 @@ void initShaders() shaderParams.push_back("NORMAL"); if(interlock) shaderParams.push_back("HAVE_INTERLOCK"); - camp::materialShader[0]=compileAndLinkShader(shaders,shaderParams,ssbo, - interlock); + camp::materialShader[0]=compileAndLinkShader(shaders,shaderParams, + ssbo,interlock,false,true); if(interlock && !camp::materialShader[0]) { shaderParams.pop_back(); interlock=false; @@ -1660,7 +1662,9 @@ void showCamera() cout << "," << endl << indent << "angle=" << P.angle; if(P.viewportshift != pair(0.0,0.0)) cout << "," << endl << indent << "viewportshift=" << P.viewportshift*Zoom; - if(!orthographic) + if(orthographic) + cout << ",center=false"; + else cout << "," << endl << indent << "autoadjust=false"; cout << ");" << endl; } @@ -1781,7 +1785,7 @@ projection camera(bool user) double R3=Rotate[j4+3]; double T4ij=T[i4+j]; sumCamera += T4ij*(R3-cx*R0-cy*R1-cz*R2); - sumUp += T4ij*R1; + sumUp += Tup[i4+j]*R1; sumTarget += T4ij*(R3-cx*R0-cy*R1); } vCamera[i]=sumCamera; @@ -1907,7 +1911,7 @@ bool NVIDIA() void glrender(const string& prefix, const picture *pic, const string& format, double width, double height, double angle, double zoom, const triple& m, const triple& M, const pair& shift, - const pair& margin, double *t, + const pair& margin, double *t, double *tup, double *background, size_t nlightsin, triple *lights, double *diffuse, double *specular, bool view, int oldpid) { @@ -1987,6 +1991,9 @@ void glrender(const string& prefix, const picture *pic, const string& format, for(int i=0; i < 16; ++i) T[i]=t[i]; + for(int i=0; i < 16; ++i) + Tup[i]=tup[i]; + static bool initialized=false; if(!(initialized && (interact::interactive || diff --git a/graphics/asymptote/glrender.h b/graphics/asymptote/glrender.h index 1c140584a9..2b3285b157 100644 --- a/graphics/asymptote/glrender.h +++ b/graphics/asymptote/glrender.h @@ -171,7 +171,8 @@ projection camera(bool user=true); void glrender(const string& prefix, const camp::picture* pic, const string& format, double width, double height, double angle, double zoom, const camp::triple& m, const camp::triple& M, - const camp::pair& shift, const camp::pair& margin, double *t, + const camp::pair& shift, const camp::pair& margin, + double *t, double *tup, double *background, size_t nlights, camp::triple *lights, double *diffuse, double *specular, bool view, int oldpid=0); diff --git a/graphics/asymptote/impdatum.cc b/graphics/asymptote/impdatum.cc index 9a4d09d1bf..5597b3ee95 100644 --- a/graphics/asymptote/impdatum.cc +++ b/graphics/asymptote/impdatum.cc @@ -401,7 +401,8 @@ ImpDatum *callDatum(ImpDatum *callee, ImpArguments *args) types::ty *t = callex.getType(e); if (t->isError()) { // Run for errors. - runExp(&callex); em.sync(); + runExp(&callex); + em.sync(true); return datumError("invalid call"); } diff --git a/graphics/asymptote/jsfile.cc b/graphics/asymptote/jsfile.cc index 7dc95c9bb6..6afbd9efc7 100644 --- a/graphics/asymptote/jsfile.cc +++ b/graphics/asymptote/jsfile.cc @@ -207,9 +207,10 @@ void jsfile::finish(string name) size_t ncenters=drawElement::centers.size(); if(ncenters > 0) { out << s << "Centers=["; - for(size_t i=0; i < ncenters; ++i) + size_t last=ncenters-1; + for(size_t i=0; i < last; ++i) out << newl << drawElement::centers[i] << ","; - out << newl << "];" << newl; + out << newl << drawElement::centers[last] << newl << "];" << newl; } out << "</script>" << newl << "</head>" @@ -235,21 +236,23 @@ void jsfile::addIndices(const uint32_t *I) void jsfile::addRawPatch(triple const* controls, size_t n, const prc::RGBAColour *c, size_t nc) { - out << "patch([" << newl; - size_t last=n-1; - for(size_t i=0; i < last; ++i) - out << controls[i] << "," << newl; - out << controls[last] << newl << "]," - << drawElement::centerIndex << "," << materialIndex; - if(c) { - out << ",[" << newl; - for(size_t i=0; i < nc; ++i) { - addColor(c[i]); - out << "," << newl; + if(n) { + out << "patch([" << newl; + size_t last=n-1; + for(size_t i=0; i < last; ++i) + out << controls[i] << "," << newl; + out << controls[last] << newl << "]," + << drawElement::centerIndex << "," << materialIndex; + if(c) { + out << ",[" << newl; + for(size_t i=0; i < nc; ++i) { + addColor(c[i]); + out << "," << newl; + } + out << "]"; } - out << "]"; + out << ");" << newl << newl; } - out << ");" << newl << newl; } void jsfile::addCurve(const triple& z0, const triple& c0, @@ -294,35 +297,60 @@ void jsfile::addTriangles(size_t nP, const triple* P, size_t nN, size_t nI, const uint32_t (*PI)[3], const uint32_t (*NI)[3], const uint32_t (*CI)[3]) { - for(size_t i=0; i < nP; ++i) - out << "Positions.push(" << P[i] << ");" << newl; - - for(size_t i=0; i < nN; ++i) - out << "Normals.push(" << N[i] << ");" << newl; + if(nP) { + out << "Positions=["; + size_t last=nP-1; + for(size_t i=0; i < last; ++i) + out << newl << P[i] << ","; + out << newl << P[last] << newl << "];" << newl; + } - for(size_t i=0; i < nC; ++i) { - out << "Colors.push("; - addColor(C[i]); - out << ");" << newl; + if(nN) { + size_t last=nN-1; + out << "Normals=["; + for(size_t i=0; i < last; ++i) + out << newl << N[i] << ","; + out << newl << N[last] << newl << "];" << newl; } - for(size_t i=0; i < nI; ++i) { - out << "Indices.push(["; - const uint32_t *PIi=PI[i]; - const uint32_t *NIi=NI[i]; - bool keepNI=distinct(NIi,PIi); - bool keepCI=nC && distinct(CI[i],PIi); - addIndices(PIi); - if(keepNI || keepCI) { + if(nC) { + size_t last=nC-1; + out << "Colors=["; + for(size_t i=0; i < last; ++i) { + out << newl; + addColor(C[i]); out << ","; - if(keepNI) addIndices(NIi); } - if(keepCI) { - out << ","; - addIndices(CI[i]); + out << newl; + addColor(C[last]); + out << newl << "];" << newl; + } + + if(nI) { + out << "Indices=["; + size_t last=nI-1; + for(size_t i=0; i < nI; ++i) { + const uint32_t *PIi=PI[i]; + const uint32_t *NIi=NI[i]; + bool keepNI=distinct(NIi,PIi); + bool keepCI=nC && distinct(CI[i],PIi); + out << newl << "["; + addIndices(PIi); + if(keepNI || keepCI) { + out << ","; + if(keepNI) addIndices(NIi); + } + if(keepCI) { + out << ","; + addIndices(CI[i]); + } + out << "]"; + if(i < last) + out << ","; } - out << "]);" << newl; + out << newl << "];" << newl; } + out << "triangles(" << drawElement::centerIndex << "," << materialIndex << ");" << newl << newl; diff --git a/graphics/asymptote/lex.yy.cc b/graphics/asymptote/lex.yy.cc index 0f0ea99214..56f0af8529 100644 --- a/graphics/asymptote/lex.yy.cc +++ b/graphics/asymptote/lex.yy.cc @@ -952,7 +952,7 @@ void reportEOF() { assert(eof); error(); em << eofMessage; - em.sync(); + em.sync(true); } position stringpos; // The position of the start of the string. diff --git a/graphics/asymptote/parser.cc b/graphics/asymptote/parser.cc index cdda1f9a28..aa1984a174 100644 --- a/graphics/asymptote/parser.cc +++ b/graphics/asymptote/parser.cc @@ -59,7 +59,7 @@ void error(const string& filename) { em.sync(); em << "error: could not load module '" << filename << "'\n"; - em.sync(); + em.sync(true); throw handled_error(); } } diff --git a/graphics/asymptote/picture.cc b/graphics/asymptote/picture.cc index 8ea6e3bf86..0f583020e1 100644 --- a/graphics/asymptote/picture.cc +++ b/graphics/asymptote/picture.cc @@ -1323,6 +1323,7 @@ struct Communicate : public gc { pair shift; pair margin; double *t; + double *tup; double *background; size_t nlights; triple *lights; @@ -1344,15 +1345,17 @@ void glrenderWrapper() #endif if(allowRender) glrender(com.prefix,com.pic,com.format,com.width,com.height,com.angle, - com.zoom,com.m,com.M,com.shift,com.margin,com.t,com.background, - com.nlights,com.lights,com.diffuse,com.specular,com.view); + com.zoom,com.m,com.M,com.shift,com.margin,com.t,com.tup, + com.background,com.nlights,com.lights,com.diffuse,com.specular, + com.view); #endif } bool picture::shipout3(const string& prefix, const string& format, double width, double height, double angle, double zoom, const triple& m, const triple& M, const pair& shift, - const pair& margin, double *t, double *background, + const pair& margin, double *t, double *tup, + double *background, size_t nlights, triple *lights, double *diffuse, double *specular, bool view) { @@ -1444,6 +1447,7 @@ bool picture::shipout3(const string& prefix, const string& format, com.shift=shift; com.margin=margin; com.t=t; + com.tup=tup; com.background=background; com.nlights=nlights; com.lights=lights; @@ -1483,8 +1487,8 @@ bool picture::shipout3(const string& prefix, const string& format, } #if HAVE_LIBGLM - glrender(prefix,pic,outputformat,width,height,angle,zoom,m,M,shift,margin,t, - background,nlights,lights,diffuse,specular,View,oldpid); + glrender(prefix,pic,outputformat,width,height,angle,zoom,m,M,shift,margin, + t,tup,background,nlights,lights,diffuse,specular,View,oldpid); if(format3d) { string name=buildname(prefix,format); diff --git a/graphics/asymptote/picture.h b/graphics/asymptote/picture.h index 61b3bd8c4f..b0a60be566 100644 --- a/graphics/asymptote/picture.h +++ b/graphics/asymptote/picture.h @@ -91,7 +91,7 @@ public: bool shipout3(const string& prefix, const string& format, double width, double height, double angle, double zoom, const triple& m, const triple& M, const pair& shift, - const pair& margin, double *t, + const pair& margin, double *t, double *tup, double *background, size_t nlights, triple *lights, double *diffuse, double *specular, bool view); diff --git a/graphics/asymptote/revision.cc b/graphics/asymptote/revision.cc index 7f032d5189..c3ea1e5f94 100644 --- a/graphics/asymptote/revision.cc +++ b/graphics/asymptote/revision.cc @@ -1,2 +1,2 @@ -const char *REVISION="2.90"; +const char *REVISION="2.91"; const char *AsyGLVersion="1.02"; diff --git a/graphics/asymptote/runpicture.cc b/graphics/asymptote/runpicture.cc index e8a153463a..e3e75a179b 100644 --- a/graphics/asymptote/runpicture.cc +++ b/graphics/asymptote/runpicture.cc @@ -766,7 +766,7 @@ void gen_runpicture42(stack *Stack) } #line 470 "runpicture.in" -// void shipout3(string prefix, picture *f, string format=emptystring, real width, real height, real angle, real zoom, triple m, triple M, pair shift, pair margin, realarray2 *t, realarray *background, triplearray *lights, realarray2 *diffuse, realarray2 *specular, bool view=true); +// void shipout3(string prefix, picture *f, string format=emptystring, real width, real height, real angle, real zoom, triple m, triple M, pair shift, pair margin, realarray2 *t, realarray2 *tup, realarray *background, triplearray *lights, realarray2 *diffuse, realarray2 *specular, bool view=true); void gen_runpicture43(stack *Stack) { bool view=vm::pop<bool>(Stack,true); @@ -774,6 +774,7 @@ void gen_runpicture43(stack *Stack) realarray2 * diffuse=vm::pop<realarray2 *>(Stack); triplearray * lights=vm::pop<triplearray *>(Stack); realarray * background=vm::pop<realarray *>(Stack); + realarray2 * tup=vm::pop<realarray2 *>(Stack); realarray2 * t=vm::pop<realarray2 *>(Stack); pair margin=vm::pop<pair>(Stack); pair shift=vm::pop<pair>(Stack); @@ -786,44 +787,46 @@ void gen_runpicture43(stack *Stack) string format=vm::pop<string>(Stack,emptystring); picture * f=vm::pop<picture *>(Stack); string prefix=vm::pop<string>(Stack); -#line 475 "runpicture.in" +#line 476 "runpicture.in" size_t n=checkArrays(lights,diffuse); checkEqual(n,checkArray(specular)); - real *T,*Background,*Diffuse,*Specular; + real *T,*Tup,*Background,*Diffuse,*Specular; triple *Lights; copyArray2C(T,t,true,4); + copyArray2C(Tup,tup,true,4); copyArrayC(Background,background); copyArrayC(Lights,lights); copyArray2C(Diffuse,diffuse,false,4,UseGC); copyArray2C(Specular,specular,false,4,UseGC); - f->shipout3(prefix,format,width,height,angle,zoom,m,M,shift,margin,T, + f->shipout3(prefix,format,width,height,angle,zoom,m,M,shift,margin,T,Tup, Background,n,Lights,Diffuse,Specular,view); delete[] Background; delete[] T; + delete[] Tup; } -#line 495 "runpicture.in" +#line 498 "runpicture.in" // void shipout3(string prefix, picture *f, string format=defaultformat3); void gen_runpicture44(stack *Stack) { string format=vm::pop<string>(Stack,defaultformat3); picture * f=vm::pop<picture *>(Stack); string prefix=vm::pop<string>(Stack); -#line 496 "runpicture.in" +#line 499 "runpicture.in" f->shipout3(prefix,format); } -#line 500 "runpicture.in" +#line 503 "runpicture.in" // void xmap(string key, transform t=identity); void gen_runpicture45(stack *Stack) { transform t=vm::pop<transform>(Stack,identity); string key=vm::pop<string>(Stack); -#line 501 "runpicture.in" +#line 504 "runpicture.in" processDataStruct *P=&processData(); xmap_t &xmap=P->xmap; xmap_t::iterator p=xmap.find(key); @@ -837,14 +840,14 @@ void gen_runpicture45(stack *Stack) P->xmapCount++; } -#line 515 "runpicture.in" +#line 518 "runpicture.in" // void deconstruct(picture *f, picture *preamble=NULL, transform T=identity); void gen_runpicture46(stack *Stack) { transform T=vm::pop<transform>(Stack,identity); picture * preamble=vm::pop<picture *>(Stack,NULL); picture * f=vm::pop<picture *>(Stack); -#line 516 "runpicture.in" +#line 519 "runpicture.in" unsigned level=0; bool first=pdf(getSetting<string>("tex")); @@ -959,7 +962,7 @@ void gen_runpicture46(stack *Stack) // Three-dimensional picture and surface operations // Bezier curve -#line 631 "runpicture.in" +#line 634 "runpicture.in" // void _draw(picture *f, path3 g, triple center=Zero, penarray *p, real opacity, real shininess, real metallic, real fresnel0, Int interaction=0); void gen_runpicture47(stack *Stack) { @@ -972,7 +975,7 @@ void gen_runpicture47(stack *Stack) triple center=vm::pop<triple>(Stack,Zero); path3 g=vm::pop<path3>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 634 "runpicture.in" +#line 637 "runpicture.in" size_t n=g.size(); for(unsigned int i=0; i < n; ++i) f->append(new drawPath3(g.subpath((Int) i,Int(i+1)),center,*p,opacity, @@ -981,7 +984,7 @@ void gen_runpicture47(stack *Stack) } // Bezier patch -#line 643 "runpicture.in" +#line 646 "runpicture.in" // void draw(picture *f, triplearray2 *P, triple center, bool straight, penarray *p, real opacity, real shininess, real metallic, real fresnel0, penarray *colors, Int interaction, Int digits, bool primitive=false); void gen_runpicture48(stack *Stack) { @@ -998,7 +1001,7 @@ void gen_runpicture48(stack *Stack) triple center=vm::pop<triple>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 647 "runpicture.in" +#line 650 "runpicture.in" f->append(new drawBezierPatch(*P,center,straight,*p,opacity,shininess, metallic,fresnel0,*colors, (Interaction) intcast(interaction), @@ -1006,7 +1009,7 @@ void gen_runpicture48(stack *Stack) } // Bezier triangle -#line 655 "runpicture.in" +#line 658 "runpicture.in" // void drawbeziertriangle(picture *f, triplearray2 *P, triple center, bool straight, penarray *p, real opacity, real shininess, real metallic, real fresnel0, penarray *colors, Int interaction, Int digits, bool primitive=false); void gen_runpicture49(stack *Stack) { @@ -1023,7 +1026,7 @@ void gen_runpicture49(stack *Stack) triple center=vm::pop<triple>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 660 "runpicture.in" +#line 663 "runpicture.in" f->append(new drawBezierTriangle(*P,center,straight,*p,opacity,shininess, metallic,fresnel0,*colors, (Interaction) intcast(interaction), @@ -1031,7 +1034,7 @@ void gen_runpicture49(stack *Stack) } // General NURBS curve -#line 668 "runpicture.in" +#line 671 "runpicture.in" // void draw(picture *f, triplearray *P, realarray *knot, realarray *weights=emptyarray, pen p); void gen_runpicture50(stack *Stack) { @@ -1040,12 +1043,12 @@ void gen_runpicture50(stack *Stack) realarray * knot=vm::pop<realarray *>(Stack); triplearray * P=vm::pop<triplearray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 670 "runpicture.in" +#line 673 "runpicture.in" f->append(new drawNurbsPath3(*P,knot,weights,p)); } // General NURBS surface -#line 675 "runpicture.in" +#line 678 "runpicture.in" // void draw(picture *f, triplearray2 *P, realarray *uknot, realarray *vknot, realarray2 *weights=emptyarray, penarray *p, real opacity, real shininess,real metallic, real fresnel0, penarray *colors); void gen_runpicture51(stack *Stack) { @@ -1060,13 +1063,13 @@ void gen_runpicture51(stack *Stack) realarray * uknot=vm::pop<realarray *>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 678 "runpicture.in" +#line 681 "runpicture.in" f->append(new drawNurbs(*P,uknot,vknot,weights,*p,opacity,shininess, metallic,fresnel0,*colors)); } // Sphere primitive -#line 684 "runpicture.in" +#line 687 "runpicture.in" // void drawSphere(picture *f, realarray2 *t, bool half=false, penarray *p, real opacity, real shininess, real metallic, real fresnel0, Int type); void gen_runpicture52(stack *Stack) { @@ -1079,13 +1082,13 @@ void gen_runpicture52(stack *Stack) bool half=vm::pop<bool>(Stack,false); realarray2 * t=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 687 "runpicture.in" +#line 690 "runpicture.in" f->append(new drawSphere(*t,half,*p,opacity,shininess,metallic,fresnel0, intcast(type))); } // Cylinder primitive -#line 693 "runpicture.in" +#line 696 "runpicture.in" // void drawCylinder(picture *f, realarray2 *t, penarray *p, real opacity, real shininess, real metallic, real fresnel0, bool core=false); void gen_runpicture53(stack *Stack) { @@ -1097,12 +1100,12 @@ void gen_runpicture53(stack *Stack) penarray * p=vm::pop<penarray *>(Stack); realarray2 * t=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 696 "runpicture.in" +#line 699 "runpicture.in" f->append(new drawCylinder(*t,*p,opacity,shininess,metallic,fresnel0,core)); } // Disk primitive -#line 701 "runpicture.in" +#line 704 "runpicture.in" // void drawDisk(picture *f, realarray2 *t, penarray *p, real opacity, real shininess, real metallic, real fresnel0); void gen_runpicture54(stack *Stack) { @@ -1113,12 +1116,12 @@ void gen_runpicture54(stack *Stack) penarray * p=vm::pop<penarray *>(Stack); realarray2 * t=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 703 "runpicture.in" +#line 706 "runpicture.in" f->append(new drawDisk(*t,*p,opacity,shininess,metallic,fresnel0)); } // Tube primitive -#line 708 "runpicture.in" +#line 711 "runpicture.in" // void drawTube(picture *f, triplearray *g, real width, penarray *p, real opacity, real shininess, real metallic, real fresnel0, triple min, triple max, bool core=false); void gen_runpicture55(stack *Stack) { @@ -1133,13 +1136,13 @@ void gen_runpicture55(stack *Stack) real width=vm::pop<real>(Stack); triplearray * g=vm::pop<triplearray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 711 "runpicture.in" +#line 714 "runpicture.in" f->append(new drawTube(*g,width,*p,opacity,shininess,metallic,fresnel0, min,max,core)); } // Draw pixel -#line 717 "runpicture.in" +#line 720 "runpicture.in" // void drawpixel(picture *f, triple v, pen p, real width=1.0); void gen_runpicture56(stack *Stack) { @@ -1147,12 +1150,12 @@ void gen_runpicture56(stack *Stack) pen p=vm::pop<pen>(Stack); triple v=vm::pop<triple>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 718 "runpicture.in" +#line 721 "runpicture.in" f->append(new drawPixel(v,p,width)); } // Draw triangles -#line 723 "runpicture.in" +#line 726 "runpicture.in" // void draw(picture *f, triplearray *v, Intarray2 *vi, triple center=Zero, triplearray *n, Intarray2 *ni, penarray *p, real opacity, real shininess, real metallic, real fresnel0, penarray *c=emptyarray, Intarray2 *ci=emptyarray, Int interaction); void gen_runpicture57(stack *Stack) { @@ -1170,64 +1173,64 @@ void gen_runpicture57(stack *Stack) Intarray2 * vi=vm::pop<Intarray2 *>(Stack); triplearray * v=vm::pop<triplearray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 728 "runpicture.in" +#line 731 "runpicture.in" f->append(new drawTriangles(*v,*vi,center,*n,*ni,*p,opacity,shininess, metallic,fresnel0,*c,*ci, (Interaction) intcast(interaction))); } -#line 734 "runpicture.in" +#line 737 "runpicture.in" // triple min3(picture *f); void gen_runpicture58(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 735 "runpicture.in" +#line 738 "runpicture.in" {Stack->push<triple>(f->bounds3().Min()); return;} } -#line 739 "runpicture.in" +#line 742 "runpicture.in" // triple max3(picture *f); void gen_runpicture59(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 740 "runpicture.in" +#line 743 "runpicture.in" {Stack->push<triple>(f->bounds3().Max()); return;} } -#line 744 "runpicture.in" +#line 747 "runpicture.in" // triple size3(picture *f); void gen_runpicture60(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 745 "runpicture.in" +#line 748 "runpicture.in" bbox3 b=f->bounds3(); {Stack->push<triple>(b.Max()-b.Min()); return;} } -#line 750 "runpicture.in" +#line 753 "runpicture.in" // pair minratio(picture *f); void gen_runpicture61(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 751 "runpicture.in" +#line 754 "runpicture.in" {Stack->push<pair>(f->ratio(::min)); return;} } -#line 755 "runpicture.in" +#line 758 "runpicture.in" // pair maxratio(picture *f); void gen_runpicture62(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 756 "runpicture.in" +#line 759 "runpicture.in" {Stack->push<pair>(f->ratio(::max)); return;} } -#line 760 "runpicture.in" +#line 763 "runpicture.in" // bool is3D(picture *f); void gen_runpicture63(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 761 "runpicture.in" +#line 764 "runpicture.in" {Stack->push<bool>(f->have3D()); return;} } @@ -1324,46 +1327,46 @@ void gen_runpicture_venv(venv &ve) #line 419 "runpicture.in" addFunc(ve, run::gen_runpicture42, primVoid(), SYM(_shipout), formal(primString(), SYM(prefix), true, false), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primString(), SYM(format), true, false), formal(primBoolean(), SYM(wait), true, false), formal(primBoolean(), SYM(view), true, false), formal(primTransform(), SYM(t), true, false)); #line 470 "runpicture.in" - addFunc(ve, run::gen_runpicture43, primVoid(), SYM(shipout3), formal(primString(), SYM(prefix), false, false), formal(primPicture(), SYM(f), false, false), formal(primString(), SYM(format), true, false), formal(primReal(), SYM(width), false, false), formal(primReal(), SYM(height), false, false), formal(primReal(), SYM(angle), false, false), formal(primReal(), SYM(zoom), false, false), formal(primTriple(), SYM(m), false, false), formal(primTriple(), SYM(m), false, false), formal(primPair(), SYM(shift), false, false), formal(primPair(), SYM(margin), false, false), formal(realArray2(), SYM(t), false, false), formal(realArray(), SYM(background), false, false), formal(tripleArray(), SYM(lights), false, false), formal(realArray2(), SYM(diffuse), false, false), formal(realArray2(), SYM(specular), false, false), formal(primBoolean(), SYM(view), true, false)); -#line 495 "runpicture.in" + addFunc(ve, run::gen_runpicture43, primVoid(), SYM(shipout3), formal(primString(), SYM(prefix), false, false), formal(primPicture(), SYM(f), false, false), formal(primString(), SYM(format), true, false), formal(primReal(), SYM(width), false, false), formal(primReal(), SYM(height), false, false), formal(primReal(), SYM(angle), false, false), formal(primReal(), SYM(zoom), false, false), formal(primTriple(), SYM(m), false, false), formal(primTriple(), SYM(m), false, false), formal(primPair(), SYM(shift), false, false), formal(primPair(), SYM(margin), false, false), formal(realArray2(), SYM(t), false, false), formal(realArray2(), SYM(tup), false, false), formal(realArray(), SYM(background), false, false), formal(tripleArray(), SYM(lights), false, false), formal(realArray2(), SYM(diffuse), false, false), formal(realArray2(), SYM(specular), false, false), formal(primBoolean(), SYM(view), true, false)); +#line 498 "runpicture.in" addFunc(ve, run::gen_runpicture44, primVoid(), SYM(shipout3), formal(primString(), SYM(prefix), false, false), formal(primPicture(), SYM(f), false, false), formal(primString(), SYM(format), true, false)); -#line 500 "runpicture.in" +#line 503 "runpicture.in" addFunc(ve, run::gen_runpicture45, primVoid(), SYM(xmap), formal(primString(), SYM(key), false, false), formal(primTransform(), SYM(t), true, false)); -#line 515 "runpicture.in" +#line 518 "runpicture.in" addFunc(ve, run::gen_runpicture46, primVoid(), SYM(deconstruct), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primTransform(), SYM(t), true, false)); -#line 627 "runpicture.in" +#line 630 "runpicture.in" addFunc(ve, run::gen_runpicture47, primVoid(), SYM(_draw), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(g), false, false), formal(primTriple(), SYM(center), true, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(primInt(), SYM(interaction), true, false)); -#line 642 "runpicture.in" +#line 645 "runpicture.in" addFunc(ve, run::gen_runpicture48, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(penArray(), SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primInt(), SYM(digits), false, false), formal(primBoolean(), SYM(primitive), true, false)); -#line 654 "runpicture.in" +#line 657 "runpicture.in" addFunc(ve, run::gen_runpicture49, primVoid(), SYM(drawbeziertriangle), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(penArray(), SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primInt(), SYM(digits), false, false), formal(primBoolean(), SYM(primitive), true, false)); -#line 667 "runpicture.in" +#line 670 "runpicture.in" addFunc(ve, run::gen_runpicture50, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(p), false, false), formal(realArray(), SYM(knot), false, false), formal(realArray(), SYM(weights), true, false), formal(primPen(), SYM(p), false, false)); -#line 674 "runpicture.in" +#line 677 "runpicture.in" addFunc(ve, run::gen_runpicture51, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(realArray(), SYM(uknot), false, false), formal(realArray(), SYM(vknot), false, false), formal(realArray2(), SYM(weights), true, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(penArray(), SYM(colors), false, false)); -#line 683 "runpicture.in" +#line 686 "runpicture.in" addFunc(ve, run::gen_runpicture52, primVoid(), SYM(drawSphere), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(primBoolean(), SYM(half), true, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(primInt(), SYM(type), false, false)); -#line 692 "runpicture.in" +#line 695 "runpicture.in" addFunc(ve, run::gen_runpicture53, primVoid(), SYM(drawCylinder), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(primBoolean(), SYM(core), true, false)); -#line 700 "runpicture.in" +#line 703 "runpicture.in" addFunc(ve, run::gen_runpicture54, primVoid(), SYM(drawDisk), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false)); -#line 707 "runpicture.in" +#line 710 "runpicture.in" addFunc(ve, run::gen_runpicture55, primVoid(), SYM(drawTube), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(g), false, false), formal(primReal(), SYM(width), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(primTriple(), SYM(min), false, false), formal(primTriple(), SYM(max), false, false), formal(primBoolean(), SYM(core), true, false)); -#line 716 "runpicture.in" +#line 719 "runpicture.in" addFunc(ve, run::gen_runpicture56, primVoid(), SYM(drawpixel), formal(primPicture(), SYM(f), false, false), formal(primTriple(), SYM(v), false, false), formal(primPen(), SYM(p), false, false), formal(primReal(), SYM(width), true, false)); -#line 722 "runpicture.in" +#line 725 "runpicture.in" addFunc(ve, run::gen_runpicture57, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(v), false, false), formal(IntArray2(), SYM(vi), false, false), formal(primTriple(), SYM(center), true, false), formal(tripleArray(), SYM(n), false, false), formal(IntArray2(), SYM(ni), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(penArray(), SYM(c), true, false), formal(IntArray2(), SYM(ci), true, false), formal(primInt(), SYM(interaction), false, false)); -#line 734 "runpicture.in" +#line 737 "runpicture.in" addFunc(ve, run::gen_runpicture58, primTriple(), SYM(min3), formal(primPicture(), SYM(f), false, false)); -#line 739 "runpicture.in" +#line 742 "runpicture.in" addFunc(ve, run::gen_runpicture59, primTriple(), SYM(max3), formal(primPicture(), SYM(f), false, false)); -#line 744 "runpicture.in" +#line 747 "runpicture.in" addFunc(ve, run::gen_runpicture60, primTriple(), SYM(size3), formal(primPicture(), SYM(f), false, false)); -#line 750 "runpicture.in" +#line 753 "runpicture.in" addFunc(ve, run::gen_runpicture61, primPair(), SYM(minratio), formal(primPicture(), SYM(f), false, false)); -#line 755 "runpicture.in" +#line 758 "runpicture.in" addFunc(ve, run::gen_runpicture62, primPair(), SYM(maxratio), formal(primPicture(), SYM(f), false, false)); -#line 760 "runpicture.in" +#line 763 "runpicture.in" addFunc(ve, run::gen_runpicture63, primBoolean(), SYM(is3D), formal(primPicture(), SYM(f), false, false)); } diff --git a/graphics/asymptote/runpicture.in b/graphics/asymptote/runpicture.in index 56431b9be7..421a97db8e 100644 --- a/graphics/asymptote/runpicture.in +++ b/graphics/asymptote/runpicture.in @@ -470,26 +470,29 @@ void _shipout(string prefix=emptystring, picture *f, picture *preamble=NULL, void shipout3(string prefix, picture *f, string format=emptystring, real width, real height, real angle, real zoom, triple m, triple M, pair shift, pair margin, realarray2 *t, + realarray2 *tup, realarray *background, triplearray *lights, realarray2 *diffuse, realarray2 *specular, bool view=true) { size_t n=checkArrays(lights,diffuse); checkEqual(n,checkArray(specular)); - real *T,*Background,*Diffuse,*Specular; + real *T,*Tup,*Background,*Diffuse,*Specular; triple *Lights; copyArray2C(T,t,true,4); + copyArray2C(Tup,tup,true,4); copyArrayC(Background,background); copyArrayC(Lights,lights); copyArray2C(Diffuse,diffuse,false,4,UseGC); copyArray2C(Specular,specular,false,4,UseGC); - f->shipout3(prefix,format,width,height,angle,zoom,m,M,shift,margin,T, + f->shipout3(prefix,format,width,height,angle,zoom,m,M,shift,margin,T,Tup, Background,n,Lights,Diffuse,Specular,view); delete[] Background; delete[] T; + delete[] Tup; } void shipout3(string prefix, picture *f, string format=defaultformat3) diff --git a/graphics/asymptote/runsystem.cc b/graphics/asymptote/runsystem.cc index e9c8c37eec..4b97ab6bc3 100644 --- a/graphics/asymptote/runsystem.cc +++ b/graphics/asymptote/runsystem.cc @@ -304,51 +304,55 @@ void gen_runsystem14(stack *Stack) if(settings::warn(s)) { em.warning(position ? getPos() : nullPos,s); em << t; + em.sync(true); } } // Strip directory from string -#line 191 "runsystem.in" +#line 192 "runsystem.in" // string stripdirectory(string *s); void gen_runsystem15(stack *Stack) { string * s=vm::pop<string *>(Stack); -#line 192 "runsystem.in" +#line 193 "runsystem.in" {Stack->push<string>(stripDir(*s)); return;} } // Strip directory from string -#line 197 "runsystem.in" +#line 198 "runsystem.in" // string stripfile(string *s); void gen_runsystem16(stack *Stack) { string * s=vm::pop<string *>(Stack); -#line 198 "runsystem.in" +#line 199 "runsystem.in" {Stack->push<string>(stripFile(*s)); return;} } // Strip file extension from string -#line 203 "runsystem.in" +#line 204 "runsystem.in" // string stripextension(string *s); void gen_runsystem17(stack *Stack) { string * s=vm::pop<string *>(Stack); -#line 204 "runsystem.in" +#line 205 "runsystem.in" {Stack->push<string>(stripExt(*s)); return;} } // Call ImageMagick convert. -#line 209 "runsystem.in" +#line 210 "runsystem.in" // Int convert(string args=emptystring, string file=emptystring, string format=emptystring); void gen_runsystem18(stack *Stack) { string format=vm::pop<string>(Stack,emptystring); string file=vm::pop<string>(Stack,emptystring); string args=vm::pop<string>(Stack,emptystring); -#line 211 "runsystem.in" +#line 212 "runsystem.in" string name=convertname(file,format); mem::vector<string> cmd; - cmd.push_back(getSetting<string>("convert")); + string s=getSetting<string>("convert"); + cmd.push_back(s); + if(s == "magick") + cmd.push_back("convert"); push_split(cmd,args); cmd.push_back(name); bool quiet=verbose <= 1; @@ -371,33 +375,34 @@ void gen_runsystem18(stack *Stack) } // Call ImageMagick animate. -#line 237 "runsystem.in" +#line 241 "runsystem.in" // Int animate(string args=emptystring, string file=emptystring, string format=emptystring); void gen_runsystem19(stack *Stack) { string format=vm::pop<string>(Stack,emptystring); string file=vm::pop<string>(Stack,emptystring); string args=vm::pop<string>(Stack,emptystring); -#line 239 "runsystem.in" -#ifndef __MSDOS__ +#line 243 "runsystem.in" string name=convertname(file,format); if(view()) { mem::vector<string> cmd; - cmd.push_back(getSetting<string>("animate")); + string s=getSetting<string>("animate"); + cmd.push_back(s); + if(s == "magick") + cmd.push_back("animate"); push_split(cmd,args); cmd.push_back(name); {Stack->push<Int>(System(cmd,0,false,"animate","your animated GIF viewer")); return;} } -#endif {Stack->push<Int>(0); return;} } -#line 253 "runsystem.in" +#line 258 "runsystem.in" // void purge(Int divisor=0); void gen_runsystem20(stack *Stack) { Int divisor=vm::pop<Int>(Stack,0); -#line 254 "runsystem.in" +#line 259 "runsystem.in" purge(divisor); } @@ -437,17 +442,17 @@ void gen_runsystem_venv(venv &ve) addFunc(ve, run::gen_runsystem13, primVoid(), SYM(nowarn), formal(primString(), SYM(s), false, false)); #line 182 "runsystem.in" addFunc(ve, run::gen_runsystem14, primVoid(), SYM(warning), formal(primString(), SYM(s), false, false), formal(primString(), SYM(t), false, false), formal(primBoolean(), SYM(position), true, false)); -#line 190 "runsystem.in" +#line 191 "runsystem.in" addFunc(ve, run::gen_runsystem15, primString(), SYM(stripdirectory), formal(primString(), SYM(s), false, false)); -#line 196 "runsystem.in" +#line 197 "runsystem.in" addFunc(ve, run::gen_runsystem16, primString(), SYM(stripfile), formal(primString(), SYM(s), false, false)); -#line 202 "runsystem.in" +#line 203 "runsystem.in" addFunc(ve, run::gen_runsystem17, primString(), SYM(stripextension), formal(primString(), SYM(s), false, false)); -#line 208 "runsystem.in" +#line 209 "runsystem.in" addFunc(ve, run::gen_runsystem18, primInt(), SYM(convert), formal(primString(), SYM(args), true, false), formal(primString(), SYM(file), true, false), formal(primString(), SYM(format), true, false)); -#line 236 "runsystem.in" +#line 240 "runsystem.in" addFunc(ve, run::gen_runsystem19, primInt(), SYM(animate), formal(primString(), SYM(args), true, false), formal(primString(), SYM(file), true, false), formal(primString(), SYM(format), true, false)); -#line 253 "runsystem.in" +#line 258 "runsystem.in" addFunc(ve, run::gen_runsystem20, primVoid(), SYM(purge), formal(primInt(), SYM(divisor), true, false)); } diff --git a/graphics/asymptote/runsystem.in b/graphics/asymptote/runsystem.in index 306b332ea1..cc06d316f8 100644 --- a/graphics/asymptote/runsystem.in +++ b/graphics/asymptote/runsystem.in @@ -184,6 +184,7 @@ void warning(string s, string t, bool position=false) if(settings::warn(s)) { em.warning(position ? getPos() : nullPos,s); em << t; + em.sync(true); } } @@ -211,7 +212,10 @@ Int convert(string args=emptystring, string file=emptystring, { string name=convertname(file,format); mem::vector<string> cmd; - cmd.push_back(getSetting<string>("convert")); + string s=getSetting<string>("convert"); + cmd.push_back(s); + if(s == "magick") + cmd.push_back("convert"); push_split(cmd,args); cmd.push_back(name); bool quiet=verbose <= 1; @@ -237,16 +241,17 @@ Int convert(string args=emptystring, string file=emptystring, Int animate(string args=emptystring, string file=emptystring, string format=emptystring) { -#ifndef __MSDOS__ string name=convertname(file,format); if(view()) { mem::vector<string> cmd; - cmd.push_back(getSetting<string>("animate")); + string s=getSetting<string>("animate"); + cmd.push_back(s); + if(s == "magick") + cmd.push_back("animate"); push_split(cmd,args); cmd.push_back(name); return System(cmd,0,false,"animate","your animated GIF viewer"); } -#endif return 0; } diff --git a/graphics/asymptote/settings.cc b/graphics/asymptote/settings.cc index 9a5006cfe4..f7fa46afe0 100644 --- a/graphics/asymptote/settings.cc +++ b/graphics/asymptote/settings.cc @@ -108,7 +108,7 @@ string defaultHTMLViewer="google-chrome"; string defaultGhostscript="gs"; string defaultGhostscriptLibrary=""; string defaultDisplay="display"; -string defaultAnimate="animate"; +string defaultAnimate="magick"; void queryRegistry() {} const string dirsep="/"; @@ -125,7 +125,7 @@ string defaultHTMLViewer="cmd"; string defaultGhostscript; string defaultGhostscriptLibrary; string defaultDisplay="cmd"; -//string defaultAnimate="animate"; +//string defaultAnimate="magick"; string defaultAnimate="cmd"; const string dirsep="\\"; @@ -1321,7 +1321,7 @@ void initSettings() { "Center, Bottom, Top, or Zero page alignment", "C")); - addOption(new boolSetting("debug", 'd', "Enable debugging messages")); + addOption(new boolSetting("debug", 'd', "Enable debugging messages and traceback")); addOption(new incrementSetting("verbose", 'v', "Increase verbosity level (can specify multiple times)", &verbose)); // Resolve ambiguity with --version diff --git a/graphics/asymptote/shaders.cc b/graphics/asymptote/shaders.cc index e1e08a45de..117bbb25de 100644 --- a/graphics/asymptote/shaders.cc +++ b/graphics/asymptote/shaders.cc @@ -19,7 +19,7 @@ int GLSLversion; GLuint compileAndLinkShader(std::vector<ShaderfileModePair> const& shaders, std::vector<std::string> const& defineflags, - bool ssbo, bool interlock, bool compute) + bool ssbo, bool interlock, bool compute, bool test) { GLuint shader = glCreateProgram(); std::vector<GLuint> compiledShaders; @@ -27,8 +27,8 @@ GLuint compileAndLinkShader(std::vector<ShaderfileModePair> const& shaders, size_t n=shaders.size(); for(size_t i=0; i < n; ++i) { GLint newshader=createShaderFile(shaders[i].first,shaders[i].second, - defineflags,ssbo,interlock,compute); - if((ssbo || interlock || compute) && newshader == 0) return 0; + defineflags,ssbo,interlock,compute,test); + if(test && newshader == 0) return 0; glAttachShader(shader,newshader); compiledShaders.push_back(newshader); } @@ -53,7 +53,7 @@ GLuint compileAndLinkShader(std::vector<ShaderfileModePair> const& shaders, GLuint createShader(const std::string& src, int shaderType, const std::string& filename, bool ssbo, bool interlock, - bool compute) + bool compute, bool test) { const GLchar *source=src.c_str(); GLuint shader=glCreateShader(shaderType); @@ -64,7 +64,7 @@ GLuint createShader(const std::string& src, int shaderType, glGetShaderiv(shader, GL_COMPILE_STATUS, &status); if(status != GL_TRUE) { - if(ssbo || interlock || compute) return 0; + if(test) return 0; GLint length; glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &length); @@ -90,7 +90,7 @@ GLuint createShader(const std::string& src, int shaderType, GLuint createShaderFile(std::string file, int shaderType, std::vector<std::string> const& defineflags, - bool ssbo, bool interlock, bool compute) + bool ssbo, bool interlock, bool compute, bool test) { std::ifstream shaderFile; shaderFile.open(file.c_str()); @@ -124,6 +124,7 @@ GLuint createShaderFile(std::string file, int shaderType, exit(-1); } - return createShader(shaderSrc.str(),shaderType,file,ssbo,interlock,compute); + return createShader(shaderSrc.str(),shaderType,file,ssbo,interlock,compute, + test); } #endif diff --git a/graphics/asymptote/shaders.h b/graphics/asymptote/shaders.h index 1ff831d997..734044e2d0 100644 --- a/graphics/asymptote/shaders.h +++ b/graphics/asymptote/shaders.h @@ -25,11 +25,11 @@ typedef std::pair<std::string, int> ShaderfileModePair; GLuint compileAndLinkShader( std::vector<ShaderfileModePair> const& shaders, std::vector<std::string> const& defineflags, bool ssbo=true, - bool interlock=false, bool compute=false); + bool interlock=false, bool compute=false, bool test=false); GLuint createShaderFile(std::string file, int shaderType, std::vector<std::string> const& constflags, - bool ssbo, bool interlock, bool compute); + bool ssbo, bool interlock, bool compute, bool test); enum attrib {positionAttrib=0,normalAttrib,materialAttrib,colorAttrib, widthAttrib}; diff --git a/graphics/asymptote/stack.cc b/graphics/asymptote/stack.cc index 3623e666cb..47b98de430 100644 --- a/graphics/asymptote/stack.cc +++ b/graphics/asymptote/stack.cc @@ -342,6 +342,8 @@ void stack::runWithOrWithoutClosure(lambda *l, vars_t vars, vars_t parent) string& fileName=P.fileName; unsigned int offset=P.xmapCount; + bool traceless=!settings::getSetting<bool>("debug"); + try { for (;;) { const inst &i = *ip; @@ -521,7 +523,14 @@ void stack::runWithOrWithoutClosure(lambda *l, vars_t vars, vars_t parent) case inst::popcall: { /* get the function reference off of the stack */ callable* f = pop<callable*>(); - f->call(this); + if(traceless) + f->call(this); + else { + em.traceback.push_back(curPos); + f->call(this); + if(em.traceback.size()) + em.traceback.pop_back(); + } break; } @@ -649,7 +658,7 @@ void errornothrow(const char* message) { em.error(curPos); em << message; - em.sync(); + em.sync(true); } void error(const char* message) diff --git a/graphics/asymptote/stm.cc b/graphics/asymptote/stm.cc index 17461a01d2..e9907d8d0e 100644 --- a/graphics/asymptote/stm.cc +++ b/graphics/asymptote/stm.cc @@ -134,7 +134,7 @@ void tryToWriteExp(coenv &e, exp *expr) if (t->kind == ty_overloaded) { // Translate the expr in order to print the ambiguity error first. expr->trans(e); - em.sync(); + em.sync(true); assert(em.errors()); // Then, write out all of the types. diff --git a/graphics/asymptote/v3dheadertypes.h b/graphics/asymptote/v3dheadertypes.h index 3e29f8469f..cef91af731 100644 --- a/graphics/asymptote/v3dheadertypes.h +++ b/graphics/asymptote/v3dheadertypes.h @@ -1,6 +1,6 @@ // Enum class for v3dheadertypes // AUTO-GENERATED from v3dheadertypes.csv -// Generated at 2024-06-21 17:44:46+00:00 +// Generated at 2024-08-15 05:44:20+00:00 namespace camp { diff --git a/graphics/asymptote/v3dheadertypes.py b/graphics/asymptote/v3dheadertypes.py index 988128ff44..940856200f 100644 --- a/graphics/asymptote/v3dheadertypes.py +++ b/graphics/asymptote/v3dheadertypes.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Enum class for v3dheadertypes """ AUTO-GENERATED from v3dheadertypes.csv """ -# Generated at 2024-06-21 17:45:18+00:00 +# Generated at 2024-08-15 05:44:42+00:00 class v3dheadertypes: v3dheadertypes_canvasWidth=1 diff --git a/graphics/asymptote/v3dtypes.h b/graphics/asymptote/v3dtypes.h index 9713798875..63e1e793b1 100644 --- a/graphics/asymptote/v3dtypes.h +++ b/graphics/asymptote/v3dtypes.h @@ -1,6 +1,6 @@ // Enum class for v3dtypes // AUTO-GENERATED from v3dtypes.csv -// Generated at 2024-06-21 17:44:46+00:00 +// Generated at 2024-08-15 05:44:20+00:00 namespace camp { diff --git a/graphics/asymptote/v3dtypes.py b/graphics/asymptote/v3dtypes.py index 9dab614b51..ca822e9fbb 100644 --- a/graphics/asymptote/v3dtypes.py +++ b/graphics/asymptote/v3dtypes.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Enum class for v3dtypes """ AUTO-GENERATED from v3dtypes.csv """ -# Generated at 2024-06-21 17:45:18+00:00 +# Generated at 2024-08-15 05:44:42+00:00 class v3dtypes: v3dtypes_material=1 diff --git a/graphics/asymptote/webgl/gl.js b/graphics/asymptote/webgl/gl.js index 00375ee57f..024a886fc6 100644 --- a/graphics/asymptote/webgl/gl.js +++ b/graphics/asymptote/webgl/gl.js @@ -522,7 +522,7 @@ class vertexBuffer { } // indexed colored vertex - iVertex(i,v,n,c=[0,0,0,0]) { + iVertex(i,v,n,onscreen,c=[0,0,0,0]) { let i6=6*i; this.vertices[i6]=v[0]; this.vertices[i6+1]=v[1]; @@ -536,7 +536,8 @@ class vertexBuffer { this.colors[i4+1]=c[1]; this.colors[i4+2]=c[2]; this.colors[i4+3]=c[3]; - this.indices.push(i); + if(onscreen) + this.indices.push(i); } append(data) { @@ -718,7 +719,7 @@ class BezierPatch extends Geometry { if(color) { let sum=color[0][3]+color[1][3]+color[2][3]; this.transparent=(n == 16 || n == 4) ? - sum+color[3][3] < 1020 : sum < 765; + sum+color[3][3] < 4 : sum < 3; } else this.transparent=Materials[MaterialIndex].diffuse[3] < 1; @@ -1811,7 +1812,7 @@ class BezierPatch extends Geometry { // Check the horizontal flatness. let h=Flatness(p0,p12,p3,p15); // Check straightness of the horizontal edges and interior control curves. - h=Math.max(Straightness(p0,p[4],p[8],p12)); + h=Math.max(h,Straightness(p0,p[4],p[8],p12)); h=Math.max(h,Straightness(p[1],p[5],p[9],p[13])); h=Math.max(h,Straightness(p3,p[7],p[11],p15)); h=Math.max(h,Straightness(p[2],p[6],p[10],p[14])); @@ -2158,14 +2159,15 @@ class Triangles extends Geometry { super(); this.CenterIndex=CenterIndex; this.MaterialIndex=MaterialIndex; - this.Min=this.Bounds(Positions,Math.min); - this.Max=this.Bounds(Positions,Math.max); - this.controlpoints=Positions; - this.Normals=Normals; - this.Colors=Colors; - this.Indices=Indices; + this.controlpoints=window.Positions; + this.Normals=window.Normals; + this.Colors=window.Colors; + this.Indices=window.Indices; this.transparent=Materials[this.MaterialIndex].diffuse[3] < 1; + + this.Min=this.Bounds(this.controlpoints,Math.min); + this.Max=this.Bounds(this.controlpoints,Math.max); } Bounds(p,m) { @@ -2188,6 +2190,7 @@ class Triangles extends Geometry { } process(p) { + this.data.vertices=new Array(6*p.length); // Override materialIndex to encode color vs material materialIndex=this.Colors.length > 0 ? @@ -2199,41 +2202,40 @@ class Triangles extends Geometry { let P0=p[PI[0]]; let P1=p[PI[1]]; let P2=p[PI[2]]; - if(!this.offscreen([P0,P1,P2])) { - let NI=index.length > 1 ? index[1] : PI; - if(!NI || NI.length == 0) NI=PI; - if(this.Colors.length > 0) { - let CI=index.length > 2 ? index[2] : PI; - if(!CI || CI.length == 0) CI=PI; - let C0=this.Colors[CI[0]]; - let C1=this.Colors[CI[1]]; - let C2=this.Colors[CI[2]]; - this.transparent |= C0[3]+C1[3]+C2[3] < 765; - if(wireframe == 0) { - this.data.iVertex(PI[0],P0,this.Normals[NI[0]],C0); - this.data.iVertex(PI[1],P1,this.Normals[NI[1]],C1); - this.data.iVertex(PI[2],P2,this.Normals[NI[2]],C2); - } else { - this.data.iVertex(PI[0],P0,this.Normals[NI[0]],C0); - this.data.iVertex(PI[1],P1,this.Normals[NI[1]],C1); - this.data.iVertex(PI[1],P1,this.Normals[NI[1]],C1); - this.data.iVertex(PI[2],P2,this.Normals[NI[2]],C2); - this.data.iVertex(PI[2],P2,this.Normals[NI[2]],C2); - this.data.iVertex(PI[0],P0,this.Normals[NI[0]],C0); - } + let onscreen=!this.offscreen([P0,P1,P2]); + let NI=index.length > 1 ? index[1] : PI; + if(!NI || NI.length == 0) NI=PI; + if(this.Colors.length > 0) { + let CI=index.length > 2 ? index[2] : PI; + if(!CI || CI.length == 0) CI=PI; + let C0=this.Colors[CI[0]]; + let C1=this.Colors[CI[1]]; + let C2=this.Colors[CI[2]]; + this.transparent |= C0[3]+C1[3]+C2[3] < 3; + if(wireframe == 0) { + this.data.iVertex(PI[0],P0,this.Normals[NI[0]],onscreen,C0); + this.data.iVertex(PI[1],P1,this.Normals[NI[1]],onscreen,C1); + this.data.iVertex(PI[2],P2,this.Normals[NI[2]],onscreen,C2); } else { - if(wireframe == 0) { - this.data.iVertex(PI[0],P0,this.Normals[NI[0]]); - this.data.iVertex(PI[1],P1,this.Normals[NI[1]]); - this.data.iVertex(PI[2],P2,this.Normals[NI[2]]); - } else { - this.data.iVertex(PI[0],P0,this.Normals[NI[0]]); - this.data.iVertex(PI[1],P1,this.Normals[NI[1]]); - this.data.iVertex(PI[1],P1,this.Normals[NI[1]]); - this.data.iVertex(PI[2],P2,this.Normals[NI[2]]); - this.data.iVertex(PI[2],P2,this.Normals[NI[2]]); - this.data.iVertex(PI[0],P0,this.Normals[NI[0]]); - } + this.data.iVertex(PI[0],P0,this.Normals[NI[0]],onscreen,C0); + this.data.iVertex(PI[1],P1,this.Normals[NI[1]],onscreen,C1); + this.data.iVertex(PI[1],P1,this.Normals[NI[1]],onscreen,C1); + this.data.iVertex(PI[2],P2,this.Normals[NI[2]],onscreen,C2); + this.data.iVertex(PI[2],P2,this.Normals[NI[2]],onscreen,C2); + this.data.iVertex(PI[0],P0,this.Normals[NI[0]],onscreen,C0); + } + } else { + if(wireframe == 0) { + this.data.iVertex(PI[0],P0,this.Normals[NI[0]],onscreen); + this.data.iVertex(PI[1],P1,this.Normals[NI[1]],onscreen); + this.data.iVertex(PI[2],P2,this.Normals[NI[2]],onscreen); + } else { + this.data.iVertex(PI[0],P0,this.Normals[NI[0]],onscreen); + this.data.iVertex(PI[1],P1,this.Normals[NI[1]],onscreen); + this.data.iVertex(PI[1],P1,this.Normals[NI[1]],onscreen); + this.data.iVertex(PI[2],P2,this.Normals[NI[2]],onscreen); + this.data.iVertex(PI[2],P2,this.Normals[NI[2]],onscreen); + this.data.iVertex(PI[0],P0,this.Normals[NI[0]],onscreen); } } } @@ -3224,10 +3226,10 @@ function resize() window.parent.asyProjection=false; if(W.absolute && !W.embedded) { - W.canvasWidth=W.canvasWith0*window.devicePixelRatio; + W.canvasWidth=W.canvasWidth0*window.devicePixelRatio; W.canvasHeight=W.canvasHeight0*window.devicePixelRatio; } else { - let Aspect=W.canvasWith0/W.canvasHeight0; + let Aspect=W.canvasWidth0/W.canvasHeight0; W.canvasWidth=Math.max(window.innerWidth-windowTrim,windowTrim); W.canvasHeight=Math.max(window.innerHeight-windowTrim,windowTrim); @@ -3788,7 +3790,7 @@ function webGLStart() W.canvas.addEventListener("touchmove",handleTouchMove,false); document.addEventListener("keydown",handleKey,false); - W.canvasWith0=W.canvasWidth; + W.canvasWidth0=W.canvasWidth; W.canvasHeight0=W.canvasHeight; mat4.identity(rotMat); @@ -3800,6 +3802,8 @@ function webGLStart() if(W.ibl) initIBL().then(SetIBL).then(redrawScene); + + home(); } window.webGLStart=webGLStart; diff --git a/graphics/asymptote/webgl/license b/graphics/asymptote/webgl/license index 1dae2c49bd..915200ff7c 100644 --- a/graphics/asymptote/webgl/license +++ b/graphics/asymptote/webgl/license @@ -1,6 +1,6 @@ /*@license AsyGL: Render Bezier patches and triangles via subdivision with WebGL. - Copyright 2019-2022: John C. Bowman and Supakorn "Jamie" Rassameemasmuang + Copyright 2019-2024: John C. Bowman and Supakorn "Jamie" Rassameemasmuang University of Alberta This program is free software; you can redistribute it and/or modify diff --git a/graphics/pgf/contrib/circuitikz/doc/changelog.tex b/graphics/pgf/contrib/circuitikz/doc/changelog.tex index 0806a20b78..19a5cd01f3 100644 --- a/graphics/pgf/contrib/circuitikz/doc/changelog.tex +++ b/graphics/pgf/contrib/circuitikz/doc/changelog.tex @@ -5,6 +5,38 @@ full list of changes. \begin{itemize} \item + Version 1.7.0 (2024-08-03) + + There are no big changes here, but the change to the resistor code + (maybe one of the most used by the package) well deserves a minor + version bump. A couple of new components, and several minor fixes. + + \begin{itemize} + \tightlist + \item + New component: new kind of current tap (suggested by + \href{https://github.com/circuitikz/circuitikz/issues/807}{EEpchi + and Dr4UX on GitHub}) + \item + New arrow tip \texttt{Jack\ Tap} to help drawing jack connectors + (suggested by + \href{https://github.com/circuitikz/circuitikz/issues/806}{Anisio + Rogerio Braga}) + \item + Change the drawing of the thermocouple (suggested by + \href{https://github.com/circuitikz/circuitikz/issues/811}{Dr4UX on + GitHub}) + \item + Change and enhancement to the drawing of the American resistors + (triggered by + \href{https://github.com/circuitikz/circuitikz/issues/814}{Dr4UX on + GitHub}), fixing a long-standing small asymmetry that nobody noticed + \item + Minor adjustment for joins in \texttt{viscoe} component + \item + Minor additions (\texttt{rectjoinfill}) and fixes in documentation + \end{itemize} +\item Version 1.6.9 (2024-05-25) Several new components and a bug fix for a nasty long-standing bug @@ -495,7 +527,7 @@ full list of changes. Robustify some shapes: do not let arrows option pass to the inner drawing (see \href{https://tex.stackexchange.com/a/632084/38080}{here} and - \href{https://matrix.to/\#/!NuxCISwYQJuyWwNsEI:matrix.org/$vQO6luq1F66LJ79dERmaqKI46qMBcjStqYCPi725uZE?via=matrix.org&via=2krueger.de&via=im.f3l.de}{here}) + \href{https://matrix.to/\#/!NuxCISwYQJuyWwNsEI:matrix.org/$vQO6luq1F66LJ79dERmaqKI46qMBcjStqYCPi725uZE?via=matrix.org\&via=2krueger.de\&via=im.f3l.de}{here}) \item Add warning about global draw options in the manual \item diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf Binary files differindex cc6865c72f..032692e01f 100644 --- a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf +++ b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf Binary files differindex 9f3d2b57e0..023c265d6e 100644 --- a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf +++ b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex index ac116af09e..e0fa8032b1 100644 --- a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex +++ b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex @@ -2200,6 +2200,83 @@ For the \texttt{photoresistor} and the two ``flavors'' of the light-dependent re \end{tikzpicture} \end{LTXexample} +\begingroup % protect changes to resistors +\newcommand\showjoin[1]{% +\begin{tikzpicture}[scale=4, transform shape] + \clip (0.2,-0.05) rectangle (0.6,0.3); + \draw[ultra thick] (0,0) to[R, resistors/thickness=#1] ++(2,0); +\end{tikzpicture}% +} +\newcommand{\splat}{\begin{center}\ttfamily\scriptsize\begin{tabular}{cccc} + \showjoin{1}&\showjoin{2}&\showjoin{3}&\showjoin{4}\\ + thickness=1 & thickness=2 & thickness=3 & thickness=4 \\ + \end{tabular}\end{center}% +} +\newcommand{\rdivider}[1]{\begin{tikzpicture} + \ctikzset{resistors/thickness=#1} + \draw (0,0) node[ground]{} to[V] ++(0,2) to[R] ++(2,0) + to[R] ++(0,-2) to[short,-*] (0,0); +\end{tikzpicture}\qquad} +\newcommand{\divsplat}[1]{#1\par + \begin{center} + \rdivider{1}\rdivider{2}\rdivider{3}\rdivider{4} +\end{center}} + +\paragraph{Details of American (``zig-zag'') resistors.\label{sec:zigzag-details}} American (zig-zag) resistors have a little joining problem\footnote{Noticed by \href{https://github.com/circuitikz/circuitikz/issues/811}{user Dr4UX on GitHub} and later \href{https://github.com/circuitikz/circuitikz/discussions/814}{discussed here}.} with the leading wires if the thickness is greater than two. In the following drawing you can see the problem when the thickness grows from 1 to 4. + +\splat + +Since \texttt{v1.7.0}, one possibility to correct the problem is to change the type of joining of the zig-zag line, using the key \texttt{resistors/zigzag join}, which is a command that by default is void. For example, the following effect is obtained by using + +\begin{lstlisting}[numbers=none] +\ctikzset{resistors/zigzag hook/.code={\pgfsetroundcap}} +\end{lstlisting} +{\ctikzset{resistors/zigzag hook/.code={\pgfsetroundcap}} +\splat} + +or you can even go full rounded + +\begin{lstlisting}[numbers=none] +\ctikzset{resistors/zigzag hook/.code={\pgfsetroundcap\pgfsetroundjoin}} +\end{lstlisting} +{\ctikzset{resistors/zigzag hook/.code={\pgfsetroundcap\pgfsetroundjoin}} +\splat} + +Another possibility is to add a little horizontal ``stub'' to the shape, with the key \texttt{resistors/zigzag stub} (default \texttt{0}), which will add a first part which is a continuation of the wire: +\begin{lstlisting}[numbers=none] +\ctikzset{resistors/zigzag stub=0.05}% this is relative to the resistor's length +\end{lstlisting} +{\ctikzset{resistors/zigzag stub=0.05} +\splat} + +\dots or you can just combine all of them as you prefer. With the standard join/cap options, the look of the resistors for thickness from 1 to 4 is shown here: + +\ctikzset{american} +\divsplat{Standard drawing of American resistors} +\divsplat{With a 5\% stub: \ctikzset{resistors/zigzag stub=0.05}} +\divsplat{With a 20\% stub: \ctikzset{resistors/zigzag stub=0.2}} + + +\bigskip +Finally, here is the detailed shape with thickness 2 (red=0, blue=0.05, green=0.2), magnified six times: + +\vspace*{2cm}% this vspace fences are needed because the transform canvas wreak havoc with the bbox +\begin{tikzpicture}[transform canvas={scale=6}] + \ctikzset{resistors/zigzag stub=0} + \draw[red] (0,0.2) to [resistor, resistors/thickness=4] ++(2,0); + \ctikzset{resistors/zigzag stub=0.05} + \draw[blue] (0,0.1) to [resistor, resistors/thickness=4] ++(2,0); + \ctikzset{resistors/zigzag stub=0.2} + \draw[green] (0,0) to [resistor, resistors/thickness=4] ++(2,0); + % \draw [very thin](1,0.5) -- (1,-0.5); + % \draw [very thin](0,0) -- ++(2,0); + % \draw [very thin](0,0.1) -- ++(2,0); + % \draw [very thin](0,0.2) -- ++(2,0); +\end{tikzpicture} +\vspace*{2cm} + +\endgroup % changes to resistors stops here + \subsection{Capacitors and inductors: dynamical bipoles} @@ -2852,9 +2929,9 @@ Notice that the size of the double-circle sources (and of the triple-circle one) \end{LTXexample} \paragraph{Waveform symbols.} -Internal symbols of sinusoidal, triangular and square sources are drawn with the same line thickness as the component by default. You can modify this by setting the key \texttt{sources/symbols/thickness} for independent sources and the corresponding \texttt{csource/...} for dependent ones. The value used here is relative to the component (i.e. the circle) value. +Internal symbols of sinusoidal, triangular and square sources are drawn with the same line thickness as the component by default. You can modify this by setting the key \texttt{sources/symbol/thickness} for independent sources and the corresponding \texttt{csource/...} for dependent ones. The value used here is relative to the component (i.e. the circle) value. -Normally the symbol is oriented in the same direction as the line, and rotate rigidly with the component; you can change this orientation using the key \texttt{sources/symbols/rotate} or \texttt{csource/...}. The default value is \texttt{90} which correspond to the ``line'' direction (remember, path components are defined as horizontal ones). +Normally the symbol is oriented in the same direction as the line, and rotate rigidly with the component; you can change this orientation using the key \texttt{sources/symbol/rotate} or \texttt{csource/...}. The default value is \texttt{90} which correspond to the ``line'' direction (remember, path components are defined as horizontal ones). If instead of an angle value you use \texttt{auto}, the symbol will be rotated so that the waveform is always vertical, similar to what happens in instruments: \begin{LTXexample}[varwidth=true] @@ -3019,12 +3096,44 @@ Sometimes it is better to use a shape for instruments which is very different fr \footnotetext{Suggested by \texttt{@nobrl} on GitHub} \circuitdescbip{iloop}{Current loop (symbolic)}{}(left/135/0.2, right/45/0.2, center/-90/0.3, i/30/0.4) \circuitdescbip{iloop2}{Current loop (real)}{}(left/135/0.2, right/-45/0.2, center/-90/0.3, i+/135/0.4, i-/45/0.4) + \circuitdescbip{currtap}{Current tap (probe)\footnotemark}{}(tap/-90/0.2) + \footnotetext{Suggested by \href{https://github.com/circuitikz/circuitikz/issues/807}{user EEpchi on GitHub}.} \end{groupdesc} \subsubsection{Instruments customizations}\label{sec:tweak-instruments} You can change the scale of all the instruments (including the current loops) by setting the key \texttt{instruments/scale} to something different from the default \texttt{1.0}. +\paragraph{Current probes.} +You can change the inner dot in several way, by changing the following keys under the \verb!\ctikzset! key \texttt{bipoles/currtap}: +\begin{center} + \begin{tabular}{>{\ttfamily}l>{\ttfamily}lp{0.7\linewidth}} + \toprule + parameter & default & description \\ + \midrule + thickness & default & Set the thickness of the line (\texttt{default}: do not change the class thickness) \\ + color & default & stroke color: \texttt{default} is the same as the component \\ + dash & default & dash pattern: none means solid line, default means keep the global pattern\footnotemark \\ + fill & default & fill the inner dot; \texttt{default} means use the wire color, \texttt{none} do not fill, other keys must be a valid color \\ + dot size& 0.5 & relative size of the inner dot \\ + \bottomrule + \end{tabular} + \footnotetext{Follows the syntax of the pattern sequence \texttt{\textbackslash pgfsetdash} --- see \TikZ{} manual for details; phase is always zero. Basically you pass pairs of dash-length -- blank-length dimensions, see the examples.} +\end{center} + +\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily] +\begin{circuitikz} + \draw (0,2) to[currtap, bipoles/currtap/fill=none, *-] + ++(2,0) to[currtap, bipoles/currtap/.cd, + fill=yellow, color=red, thickness=3, + dash={{1.14pt}{2pt}}] ++(2,0); + \draw (0,0) to[currtap=I, *-, name=ct] ++(2,0) + to[currtap, -*, name=ct2, + bipoles/currtap/dot size=0.3] ++(2,0); + \draw (ct.tap) -- ++(0,-1) (ct2.tap) -- ++(0,-1); +\end{circuitikz} +\end{LTXexample} + \paragraph{Oscilloscope waveform.} You can change the waveform shown in the oscilloscope ``screen''\footnote{Suggested by \href{https://tex.stackexchange.com/q/595062/38080}{Mario Tafur on TeX.SX}}. To change it, you just set the key \texttt{bipoles/oscope/waveform} to one of the available shape. You have available the shapes in the following list (the default is \texttt{ramps}): \begin{LTXexample}[pos=t, basicstyle=\small\ttfamily] @@ -3478,9 +3587,9 @@ While the horizontal line will be drawn with the current path values, you can ch \end{circuitikz} \end{LTXexample} -\subsection{Arrows}\label{sec:arrows} +\subsection{Arrows (fake and real)}\label{sec:arrows} -These are pseudo-arrows used in lot of places in the packages (for transistors, flows, currents, and so on). The first three arrows are magnified by a factor~3 in the boxes below; for the \texttt{trarrow}, the anchor \texttt{tip} is exactly on the tip and \texttt{btip} is slightly receded. +The main arrow shapes in \Circuitikz{} are really shapes, used as pseudo-arrows in lot of places in the packages (for transistors, flows, currents, and so on). The first three arrows are magnified by a factor~3 in the boxes below; for the \texttt{trarrow}, the anchor \texttt{tip} is exactly on the tip and \texttt{btip} is slightly receded. \begin{groupdesc} \circuitdesc[3]{currarrow}{Arrow for current and voltage}{}(center/0/0.2) @@ -3540,6 +3649,30 @@ The arrows are the ones set with the keys \texttt{tunable start arrow} and \text Notice also the need to force a transparency group if you want a semitransparent arrow. +\subsubsection{Arrow tips}\label{sec:arrow-tips} + +In addition to the pseudo-arrows, \Circuitikz{} also adds a couple of ``real'' arrow tips. +The package automatically loads the \texttt{arrows.meta} \TikZ{} library but \emph{not} the deprecated \texttt{arrows} library; in the first versions of the package it used quite a lot the \texttt{latex'} tip, which is not available anymore. To maintain the backward compatibility, the `latexslim` tip has been added, and used by default in several components. This is an old-style arrow tip, with no customization possible. + +The other tip is \texttt{Jack Tap}\footnote{Added after a suggestion from \href{https://github.com/circuitikz/circuitikz/issues/806}{Anisio Rogerio Braga} on GitHub}, which is mainly used to build jack connectors (see section~\ref{sec:jacks}). This is a new-style arrow tip, and accepts the parameter \texttt{length} (default \texttt{0.3 cm}), \texttt{width} (default \texttt{0.15 cm}), and the boolean \texttt{swap}. + + +\begin{LTXexample}[varwidth=true] +\begin{circuitikz} + \draw (0,.25) (0,0) edge[-latexslim] ++(1,0) + ++(0, -0.5) edge[-{Jack Tap[swap]}] ++(1,0) + ++(0, -0.5) edge[-Jack Tap] ++(1,0) + ++(0, -0.5) edge[-{Jack Tap[fill=cyan]}] ++(1,0) + ++(0, -0.5) edge[-{Jack Tap[width=.3cm,fill]}]++(1,0) + ++(0, -0.5) edge[-{Jack Tap[width=.3cm,line join=round, + line cap=round]}, thick] ++(1,0) + ++(0, -0.5) edge[^-^f] ++(1,0) + ++(0, -0.5) edge[vf-v] ++(1,0); +\end{circuitikz} +\end{LTXexample} +You can also have a filled version, by adding the key \texttt{fill} (without arguments\footnote{This usage of the \texttt{fill} key in arrow tips will be added to \TikZ{} in version \texttt{3.1.11}, see \href{https://github.com/pgf-tikz/pgf/pull/1352}{this PR by Henri Menke}; \Circuitikz{} will add it to older versions.}) or \texttt{fill=color} if you want a color different from the stroke ones, and they accept the \texttt{line join} and \texttt{line cap} as most of the standard \TikZ{} arrows. +As you can see, the normal and swapped \texttt{Jack Tap} tips have the shorthands \texttt{v} and \verb|^| (and \texttt{vf} and \verb|^f| for their filled counterparts). Notice that the tips are automatically reversed when they are at the \emph{start} of the path. + \subsection{Terminal shapes}\label{sec:terminals} These are the so-called ``bipole nodes'' shapes, or poles (see section~\ref{sec:bipole-nodes}). These nodes are always filled; the ``open'' versions (starting with an \texttt{o}) are by default filled with the color specified by the key \texttt{open nodes fill} (by default \texttt{white}), but you can override locally it with the \texttt{fill} parameter. @@ -3553,6 +3686,12 @@ These are the so-called ``bipole nodes'' shapes, or poles (see section~\ref{sec: \circuitdesc{osquarepole}{Open square-shape terminal}{} \end{groupdesc} +This is not a pole, but it's used to "fill" nasty corners (look closer, and see ~\ref{sec:line-joins}). + +\begin{groupdesc} + \circuitdesc{rectjoinfill}{Filling square with line width size}{} +\end{groupdesc} + Since version 0.9.0, ``bipole nodes'' shapes have all the standard geographical anchors, so you can do things like these: \begin{LTXexample}[varwidth=true] @@ -3672,6 +3811,33 @@ You can use the \texttt{plug center} anchor to add the IEC ``multiplier'': \end{circuitikz} \end{LTXexample} +\subsubsection{Jack connectors}\label{sec:jacks} + +There are \emph{lots} of different jack connectors symbols --- see the \href{https://github.com/circuitikz/circuitikz/issues/806}{discussion here} for examples. So instead of creating a monster component, it has been decided to add elements to simplify the drawing of such connectors. The first (and for now only) such element is the \texttt{Jack Tap} arrow tip (see section~\ref{sec:arrow-tips}) with its shorthands \texttt{v} and \verb|^|. + +For example, and audio jack can be drawn like this: + +\begin{LTXexample}[pos=t, varwidth=true] +% drawing based on one by Anisio Rogerio Braga +% https://github.com/circuitikz/circuitikz/issues/806 +\newcommand\dx{1.5}\newcommand\dy{1} +\begin{circuitikz} + \draw[-v] (0,\dy/3*4) to[short, o-] ++(\dx,0); + \draw[-Triangle] (0,\dy) node[ocirc]{} -| ++(\dx/3,\dy/3); + \draw[-Triangle] (0,\dy/3*2) node[ocirc]{} -| ++(\dx/3,-\dy/3); + \draw[-^] (0,\dy/3) to[short, o-] ++(2*\dx/3,0); + \draw (0,0.0) to[short, o-] ++(1.75*\dx,0) rectangle ++(0.2,4*\dy/3); +\end{circuitikz}\qquad\qquad +%---% audio jack with an inserted plug +\begin{circuitikz} + \draw[-v] (0,\dy/3*4) to[short, o-] ++(\dx,0.2); + \draw[-Triangle] (0,\dy) node[ocirc]{} -| ++(\dx/3,\dy/3); + \draw[-Triangle] (0,\dy/3*2) node[ocirc]{} -| ++(\dx/3,-\dy/3); + \draw[-^] (0,\dy/3) to[short, o-] ++(2*\dx/3,-0.2); + \draw (0,0.0) to[short, o-] ++(1.75*\dx,0) rectangle ++(0.2,4*\dy/3); +\end{circuitikz} +\end{LTXexample} + \subsection{Block diagram components} \noindent Contributed by Stefan Erhardt. @@ -6596,7 +6762,7 @@ with the parameter \texttt{number inputs} : \end{circuitikz} \end{LTXexample} -You can suppress the drawing of the logic ports input leads by using the boolean key \texttt{logic ports draw input leads} (default \texttt{true}) or, locally, with the style \texttt{no inputs leads} (that can be reverted with \texttt{input leads}), like in the following example. The anchors do not change and you have to take responsibility to make the connection to the ``border''-anchors. +You can suppress the drawing of the logic ports input leads by using the boolean key \texttt{logic ports draw input leads} (default \texttt{true}) or, locally, with the style \texttt{no input leads} (that can be reverted with \texttt{input leads}), like in the following example. The anchors do not change and you have to take responsibility to make the connection to the ``border''-anchors. \begin{LTXexample}[varwidth=true] \begin{circuitikz} @@ -7436,9 +7602,9 @@ External pins' length is controlled by the key \texttt{multipoles/external pins like in chips. In addition, like in logic ports, you can suppress the drawing of the leads by using the boolean key \texttt{logic ports draw input leads} (default \texttt{true}) or, locally, -with the style \texttt{no inputs leads} (that can be reverted with +with the style \texttt{no input leads} (that can be reverted with \texttt{input leads}). -The main difference between setting \texttt{external pins width} to \texttt{0} or using \texttt{no inputs lead} is that in the first case the normal pin anchors and the border anchors will coincide, and in the second case they will not move and stay where they should have been if the leads were drawn. +The main difference between setting \texttt{external pins width} to \texttt{0} or using \texttt{no input lead} is that in the first case the normal pin anchors and the border anchors will coincide, and in the second case they will not move and stay where they should have been if the leads were drawn. You can draw only selected pins and leave out the rest by setting the keys \texttt{multipoles/draw only \emph{side} pins} and the corresponding style @@ -7840,7 +8006,7 @@ You can, if you want, avoid printing the numbers of the pin with \texttt{hide nu \end{LTXexample} -Also, you can suppress the drawing of the pins, by using the style \texttt{no inputs leads} (that can be reverted with \texttt{input leads}). The main difference between setting \texttt{external pins width} to \texttt{0} or using \texttt{no inputs lead} is that in the first case the normal pin anchors and the border anchors will coincide, and in the second case they will not move and stay where they should have been if the leads were drawn. +Also, you can suppress the drawing of the pins, by using the style \texttt{no input leads} (that can be reverted with \texttt{input leads}). The main difference between setting \texttt{external pins width} to \texttt{0} or using \texttt{no input lead} is that in the first case the normal pin anchors and the border anchors will coincide, and in the second case they will not move and stay where they should have been if the leads were drawn. For special use you can suppress the orientation mark with the key \texttt{no topmark} (default \texttt{topmark}). diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty index afa91d4b2b..4f5ce00a0f 100644 --- a/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty +++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty @@ -16,8 +16,8 @@ \providecommand\DeclareRelease[3]{} \providecommand\DeclareCurrentRelease[2]{} -\def\pgfcircversion{1.6.9} -\def\pgfcircversiondate{2024/05/25} +\def\pgfcircversion{1.7.0} +\def\pgfcircversiondate{2024/08/03} \DeclareRelease{0.4}{2012/12/20}{circuitikz-0.4-body.tex} \DeclareRelease{v0.4}{2012/12/20}{circuitikz-0.4-body.tex} diff --git a/graphics/pgf/contrib/circuitikz/tex/pgfcirc.defines.tex b/graphics/pgf/contrib/circuitikz/tex/pgfcirc.defines.tex index 943745bf7a..cca735bf1e 100644 --- a/graphics/pgf/contrib/circuitikz/tex/pgfcirc.defines.tex +++ b/graphics/pgf/contrib/circuitikz/tex/pgfcirc.defines.tex @@ -266,6 +266,58 @@ % %>>> +%% check loaded TikZ/pgf version %<<<` +% +% parse the release date, thanks to Skillmon +% https://github.com/pgf-tikz/pgf/issues/1348#issuecomment-2231681032 +% date can be yyyy-mm-dd or (older TikZ) yyyy/mm/dd +\begingroup + \pgfutil@protected\def\parsedate#1% + {% + \afterassignment\parsedate@month + \pgf@circ@count@a=#1\relax + } + \pgfutil@protected\def\parsedate@month#1% + {% + \afterassignment\parsedate@day + \pgf@circ@count@b=% + } + \pgfutil@protected\def\parsedate@day#1% + {% + \afterassignment\parsedate@cleanup + \pgf@circ@count@c=% + } + \def\parsedate@cleanup#1\relax{}% + \parsedate{\pgfrevisiondate}% + \xdef\ctikz@@pgfyear{\the\pgf@circ@count@a}% + \xdef\ctikz@@pgfmonth{\the\pgf@circ@count@b}% + \xdef\ctikz@@pgfday{\the\pgf@circ@count@c}% +\endgroup +% The following code thanks to Skillmon: +% https://tex.stackexchange.com/a/722570/38080 +% modified by romano to check the date +\def\ctikz@@ifpgfafter@auxi#1#2% + {% + \ifnum#1 + \ctikz@@ifpgfafter@auxii{#2}% + \fi + } +\def\ctikz@@ifpgfafter@auxii#1\fi#2\ctikz@@ifpgfafter#3{\fi#1} +\def\ctikz@@ifpgfafter#1-#2-#3#% + {% + \ctikz@@ifpgfafter@auxi{\ctikz@@pgfyear>#1}\pgfutil@firstoftwo + \ctikz@@ifpgfafter@auxi{\ctikz@@pgfyear<#1}\pgfutil@secondoftwo + \ctikz@@ifpgfafter@auxi{\ctikz@@pgfmonth>#2}\pgfutil@firstoftwo + \ctikz@@ifpgfafter@auxi{\ctikz@@pgfmonth<#2}\pgfutil@secondoftwo + \ctikz@@ifpgfafter@auxi{\ctikz@@pgfday<#3}\pgfutil@secondoftwo + \pgfutil@gobble\ctikz@@ifpgfafter\pgfutil@firstoftwo + } +% +% usage \ctikz@@ifpgfafter 2023-01-16{true}{false} +% ^^^ no spaces here, braces needed. +% +%>>> + %% arrow tips macros and utilities %<<<1 % the default arrow is latexslim, which has been ported over old arrows library (deprecated) @@ -298,9 +350,70 @@ \pgfpathclose \pgfusepathqfill } - \pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim} - +%% Jack Tap, see +%% https://github.com/circuitikz/circuitikz/issues/806 +\pgfdeclarearrow{name=Jack Tap, + parameters = {% + \the\pgfarrowlength,% + \the\pgfarrowwidth,% + \ifpgfarrowswap s\fi% + \ifpgfarrowopen o\fi% + \ifpgfarrowroundjoin j\fi + \ifpgfarrowroundcap c\fi% + }, + setup code = { + \pgfarrowssettipend{.5\pgfarrowlength} + \pgfarrowssetlineend{-.6\pgfarrowlength} + \pgfarrowssetvisualbackend{-.6\pgfarrowlength} + \pgfarrowssetbackend{-.6\pgfarrowlength} + % hull + \pgfarrowshullpoint{.5\pgfarrowlength}{0pt} + \pgfarrowshullpoint{0pt}{\pgfarrowwidth} + \pgfarrowshullpoint{-.6\pgfarrowlength}{0pt} + % Saves: Only the length: + \pgfarrowssavethe\pgfarrowlength + \pgfarrowssavethe\pgfarrowwidth + }, + drawing code = { + \pgfsetdash{}{+0pt} + \pgfarrowlinewidth=\pgflinewidth + \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi + \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi + \pgfpathmoveto{\pgfqpoint{-.6\pgfarrowlength}{0pt}} + \pgfpathlineto{\pgfqpoint{-.5\pgfarrowlength}{0pt}} + \pgfpathlineto{\pgfqpoint{0pt}{\pgfarrowwidth}} + \pgfpathlineto{\pgfqpoint{.5\pgfarrowlength}{0pt}} + \ifpgfarrowopen + \pgfusepathqstroke + \else + \pgfpathclose + \ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi + \fi + }, + defaults = {length = 0.3cm, width=0.15cm, open}, + % cache=false, % breaks everything +} +% the new "fill without arg" will be in TikZ 3.1.11. Apply it here if we have an +% older version +\ctikz@@ifpgfafter 2023-01-16{\relax}{% + % thanks @muzimuzhi https://github.com/pgf-tikz/pgf/issues/1348#issuecomment-2229075269 + % undo the fill/.value required key + \expandafter\let\csname pgfk@/pgf/arrow keys/fill/.@def\endcsname\@undefined + \pgfkeys{/pgf/arrow keys/fill/.code={% + \def\pgf@temp{#1}% + \ifx\pgf@temp\pgf@nonetext% + \pgfarrowsaddtooptions{\pgfarrowopentrue}% + \else\ifx\pgf@temp\pgfkeysnovalue@text% + \pgfarrowsaddtooptions{\pgfarrowopenfalse}% + \else + \pgfarrowsaddtooptions{\pgfarrowopenfalse\def\pgf@arrows@fill@color{#1}}% + \fi\fi + }}% +} +\tikzset{v/.tip={Jack Tap[swap]}, ^/.tip={Jack Tap}, + vf/.tip={Jack Tap[swap,fill]}, ^f/.tip={Jack Tap[fill]}} +% % select the arrows using available defaults. \def\pgfcirc@arrow@default{default} % choose the arrows to use. Use #2 and #3 if the key is equal to "default" @@ -466,7 +579,30 @@ \fi \fi } - +% similar o the above, use the fill parameter to set fill or draw +% for a subset of the shape +\def\pgf@circ@subset@fill@or@draw#1{% + % You *must* be sure that this is called inside a \pgfscope! + \edef\@@none{none}\edef\@@default{default} + \edef\@@tmp{\ctikzvalof{#1/fill}} + \ifx\@@tmp\@@none + \pgfusepath{draw} + \else + \ifx\@@tmp\@@default\else + \pgfsetfillcolor{\@@tmp} + \fi + \pgfusepath{draw, fill} + \fi +} +% ...and for the thickness +\def\pgf@circ@subset@thickness#1{% + % You *must* be sure that this is called inside a \pgfscope! + \edef\@@default{default} + \edef\@@tmp{\ctikzvalof{#1/thickness}} + \ifx\@@tmp\@@default\else + \pgfsetlinewidth{\@@tmp\pgflinewidth}% + \fi +} % set the text color (via \color) if the color is not default or none % needed in some strange case (like bodydiode' dots) \def\pgf@circ@maybe@color#1{% @@ -557,6 +693,7 @@ % #7 - macros drawing the bipole % \long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{ + % \typeout{Declaring bipole:\space #4,} \pgfdeclareshape{#4shape}{ \savedmacro{\ctikzclass}{\edef\ctikzclass{#1}} \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}} @@ -602,97 +739,33 @@ \pgf@y=.5\pgf@y } \anchor{center}{\pgfpointorigin} - \anchor{n}{ - \northeast - \pgf@x=0cm - } - \anchor{north east}{ - \northeast - } - \anchor{north west}{ - \northeast - \pgf@x=-\pgf@x - } - \anchor{ne}{ - \northeast - } - \anchor{nw}{ - \northeast - \pgf@x=-\pgf@x - } - \anchor{e}{ - \northeast - \pgf@y=0cm - } - \anchor{s}{ - \southwest - \pgf@x=0cm - } - \anchor{south east}{ - \southwest - \pgf@x=-\pgf@x - } - \anchor{south west}{ - \southwest - } - \anchor{se}{ - \southwest - \pgf@x=-\pgf@x - } - \anchor{sw}{ - \southwest - } - \anchor{w}{ - \southwest - \pgf@y=0cm - } - \anchor{north}{ - \northeast - \pgf@x=0cm - } - \anchor{east}{ - \northeast - \pgf@y=0cm - } - \anchor{south}{ - \southwest - \pgf@x=0cm - } - \anchor{west}{ - \southwest - \pgf@y=0cm - } - \anchor{right}{ - \northeast - \pgf@y=0cm - } - \anchor{above}{ - \northeast - \pgf@x=0cm - } - \anchor{left}{ - \southwest - \pgf@y=0cm - } - \anchor{below}{ - \southwest - \pgf@x=0cm - } - \anchor{a}{ - \northeast - \pgf@y=0cm - } - \anchor{b}{ - \southwest - \pgf@y=0cm - } + \anchor{n}{\northeast\pgf@x=0cm } + \anchor{north east}{\northeast} + \anchor{north west}{\northeast\pgf@x=-\pgf@x} + \anchor{ne}{\northeast} + \anchor{nw}{\northeast\pgf@x=-\pgf@x} + \anchor{e}{\northeast\pgf@y=0cm } + \anchor{s}{\southwest\pgf@x=0cm } + \anchor{south east}{\southwest\pgf@x=-\pgf@x} + \anchor{south west}{\southwest} + \anchor{se}{\southwest\pgf@x=-\pgf@x} + \anchor{sw}{\southwest} + \anchor{w}{\southwest\pgf@y=0cm } + \anchor{north}{\northeast\pgf@x=0cm } + \anchor{east}{\northeast\pgf@y=0cm } + \anchor{south}{\southwest\pgf@x=0cm } + \anchor{west}{\southwest\pgf@y=0cm } + \anchor{right}{\northeast\pgf@y=0cm } + \anchor{above}{\northeast\pgf@x=0cm } + \anchor{left}{\southwest\pgf@y=0cm } + \anchor{below}{\southwest\pgf@x=0cm } + \anchor{a}{\northeast\pgf@y=0cm } + \anchor{b}{\southwest\pgf@y=0cm } \savedanchor{\textanchor}{% \pgf@y=\ht\pgfnodeparttextbox \pgf@x=-.5\wd\pgfnodeparttextbox } - \anchor{text}{ - \textanchor - } + \anchor{text}{ \textanchor } \anchorborder{% \ifpgf@circuit@bipole@inverted \pgf@circ@res@left=-\pgf@x @@ -711,7 +784,6 @@ #2% \pgf@circ@draw@component{ \pgf@circ@setcolor - \northeast \pgf@circ@res@up = \pgf@y \pgf@circ@res@zero = 0cm diff --git a/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex b/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex index 626ed28812..b30e741458 100644 --- a/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex +++ b/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex @@ -632,13 +632,21 @@ \pgfusepath{draw} \endpgfscope }% - %% Zig-zag resistors +% see https://github.com/circuitikz/circuitikz/discussions/814 +\ctikzset{resistors/zigzag stub/.initial=0} +\ctikzset{resistors/zigzag hook/.code={}} \def\pgf@circ@zigzag#1{% + \pgf@circ@res@temp=\ctikzvalof{resistors/zigzag stub}\pgf@circ@res@step + \advance \pgf@circ@res@step by -2\pgf@circ@res@temp \divide \pgf@circ@res@step by \numexpr4*\zigs\relax \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}} + \ifdim\pgf@circ@res@temp>0pt + \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp -\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}} + \fi \pgf@circ@res@other = \pgf@circ@res@left + \advance\pgf@circ@res@other by \pgf@circ@res@temp \pgf@circ@count@a=\zigs\relax % first half zig \advance\pgf@circ@res@other by \pgf@circ@res@step @@ -655,11 +663,14 @@ \advance\pgf@circ@res@other by 2\pgf@circ@res@step \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}} \advance\pgf@circ@res@other by \pgf@circ@res@step - \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}} + \pgfpathlineto{\pgfpoint{\pgf@circ@res@other+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}} + \ifdim\pgf@circ@res@temp>0pt + \pgfpathlineto{\pgfpoint{\pgf@circ@res@other+\pgf@circ@res@temp+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}} + \fi \pgfsetbeveljoin + \pgfkeys{/tikz/circuitikz/resistors/zigzag hook} \pgfusepath{draw} } - %% Resistor \pgfcircdeclarebipolescaled{resistors} { @@ -672,7 +683,7 @@ { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments - \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth} + \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen} \pgf@circ@zigzag{1} } @@ -692,7 +703,7 @@ { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments - \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth} + \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen} \pgf@circ@zigzag{.5} \pgfscope @@ -731,7 +742,7 @@ { \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments - \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth} + \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen} \pgf@circ@zigzag{1} \pgfscope @@ -761,7 +772,7 @@ {% \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgftransformationadjustments - \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth} + \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen} \pgf@circ@zigzag{.5} \pgfscope @@ -810,7 +821,7 @@ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right/\@@intscale+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{+0pt}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{+0pt}} \pgftransformationadjustments - \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/ldresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth} + \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/ldresistor/width}*\scaledRlen} \pgf@circ@zigzag{\@@hscale} }% @@ -6031,6 +6042,13 @@ \ctikzset{bipoles/qpprobe/voltage/additional shift/.initial=.5} \ctikzset{bipoles/iloop/width/.initial=.40} \ctikzset{bipoles/iloop/height/.initial=.60} +% currtap see https://github.com/circuitikz/circuitikz/issues/807 +\ctikzset{bipoles/currtap/height/.initial=0.4} +\ctikzset{bipoles/currtap/dot size/.initial=0.5} +\ctikzset{bipoles/currtap/fill/.initial=default} +\ctikzset{bipoles/currtap/dash/.initial=none} +\ctikzset{bipoles/currtap/color/.initial=default} +\ctikzset{bipoles/currtap/thickness/.initial=default} \ctikzset{bipoles/oscope/height/.initial=.60} \ctikzset{bipoles/oscope/width/.initial=.60} @@ -6607,6 +6625,28 @@ \pgfusepath{draw} \endpgfscope } +%% currtap +\pgfcircdeclarebipolescaled{instruments} +{ + \savedmacro{\@@dotsize}{\def\@@dotsize{\ctikzvalof{bipoles/currtap/dot size}}} + \anchor{tap}{\northeast\pgf@x=0pt\pgf@y=\@@dotsize\pgf@y\pgf@y=-\pgf@y} +} +{\ctikzvalof{bipoles/currtap/height}} +{currtap} +{\ctikzvalof{bipoles/currtap/height}} +{\ctikzvalof{bipoles/currtap/height}} +{ + \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}} + \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@left}{0pt}} + \pgfpatharc{180}{0}{0.95\pgf@circ@res@right} + \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} + \pgfusepath{draw} + \pgf@circ@subset@color@dash{bipoles/currtap} + \pgf@circ@subset@thickness{bipoles/currtap} + \pgfusepath{draw} + \pgfpathcircle{\pgfpoint{0pt}{0pt}}{\@@dotsize*\pgf@circ@res@up} + \pgf@circ@subset@fill@or@draw{bipoles/currtap} +} % %>>> % Path definitions for Instruments%<<< @@ -6619,8 +6659,8 @@ \pgfcirc@activate@bipole@simple{l}{rmeterwa} \pgfcirc@activate@bipole@simple{l}{smeter} \pgfcirc@activate@bipole@simple{l}{iloop} -% \pgfcirc@activate@bipole@simple{l}{iloop2} that was wrong \pgfcirc@activate@bipole{l}{ilooptwo}{iloop2}{iloop2} +\pgfcirc@activate@bipole@simple{l}{currtap} \pgfcirc@activate@bipole@simple{l}{qvprobe} \pgfcirc@activate@bipole@simple{l}{qiprobe} \pgfcirc@activate@bipole@simple{l}{qpprobe} @@ -6774,16 +6814,22 @@ % spring into the damper \pgfscope - \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} + \pgfscope + \pgftransformationadjustments \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} + \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}} + \pgfpathlineto{\pgfpoint{.95\pgf@circ@res@left}{\pgf@circ@res@zero}} \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}} \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}} + \pgfsetbuttcap + \pgfsetbeveljoin \pgfusepath{stroke} \endpgfscope + \endpgfscope % damper box \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}} @@ -7171,18 +7217,18 @@ {\ctikzvalof{bipoles/thermocouple/height}} {\ctikzvalof{bipoles/thermocouple/width}} { + \pgfsetrectcap \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}} - \pgfusepath{draw} - \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}} - \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}} - \pgfusepath{draw} - \pgfsetlinewidth{\pgfstartlinewidth} - \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}} \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}} \pgfusepath{draw} + \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth} + \pgfsetroundcap + \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}} + \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}} + \pgfusepath{draw} } %% fuse \pgfcircdeclarebipolescaled{misc} diff --git a/graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex b/graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex index e3665b8862..cb95f54ef3 100644 --- a/graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex +++ b/graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex @@ -231,13 +231,15 @@ \compattikzset{#2/.style={\comnpatname #1, #3={##1}}}% } % create a bipole -\def\pgfcirc@activate@bipole#1#2#3#4{% path name, base node name, style name +\def\pgfcirc@activate@bipole#1#2#3#4{% type of label, path name, base node name, style name + % \typeout{Activate bipole:\space #4,} \expandafter\def\csname pgf@circ@#2@path\endcsname##1{\pgf@circ@bipole@path{#3}{##1}}% \pgfcirc@path@to@style{#1}{#2}{#4}{}% no options here, let's see } \def\pgfcirc@activate@bipole@simple#1#2{\pgfcirc@activate@bipole{#1}{#2}{#2}{#2}} % create a bipole with options -\def\pgfcirc@activate@bipole@opt#1#2#3#4#5{% path name, base node name, style name +\def\pgfcirc@activate@bipole@opt#1#2#3#4#5{% type of label, path name, base node name, style name, options + % \typeout{Activate bipole:\space #4,} \expandafter\def\csname pgf@circ@#2@path\endcsname##1{\pgf@circ@bipole@path{#3}{##1}}% \pgfcirc@path@to@style{#1}{#2}{#4}{#5}% no options here, let's see } diff --git a/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex b/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex index 4e4861071f..f85b8ab58b 100644 --- a/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex +++ b/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex @@ -16,8 +16,8 @@ \startmodule[circuitikz] \usemodule[tikz] -\def\pgfcircversion{1.6.9} -\def\pgfcircversiondate{2024/05/25} +\def\pgfcircversion{1.7.0} +\def\pgfcircversiondate{2024/08/03} \writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion} diff --git a/graphics/pgf/contrib/dynkin-diagrams/README b/graphics/pgf/contrib/dynkin-diagrams/README index e43f31e0b8..5abe74143c 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/README +++ b/graphics/pgf/contrib/dynkin-diagrams/README @@ -1,6 +1,6 @@ Dynkin diagrams -v3.1415926535897932384 -2 June 2023 +v3.14159265358979323846 +6 July 2024 Authors: Ben McKay diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib index 9660120699..952e4a90bf 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib @@ -1,6 +1,5 @@ % Encoding: ISO-8859-1 - @Book{Adams:1996, Title = {Lectures on exceptional {L}ie groups}, Author = {Adams, J. F.}, @@ -477,4 +476,67 @@ MRREVIEWER = {Stephen Gelbart}, url = {https://doi.org/10.1007/978-1-4612-0979-9}, } +@Book{Knapp:2002, + author = {Knapp, Anthony W.}, + publisher = {Birkh\"{a}user Boston, Inc., Boston, MA}, + title = {Lie groups beyond an introduction}, + year = {2002}, + edition = {Second}, + isbn = {0-8176-4259-5}, + series = {Progress in Mathematics}, + volume = {140}, + mrclass = {22-01}, + mrnumber = {1920389}, + pages = {xviii+812}, +} + +@Article{Witt:1941, + author = {Witt, Ernst}, + journal = {Abh. Math. Sem. Hansischen Univ.}, + title = {Spiegelungsgruppen und {A}ufz\"ahlung halbeinfacher {L}iescher {R}inge}, + year = {1941}, + issn = {0025-5858}, + pages = {289--322}, + volume = {14}, + doi = {10.1007/BF02940749}, + fjournal = {Abhandlungen aus dem Mathematischen Seminar der Hansischen Universit\"at}, + mrclass = {09.1X}, + mrnumber = {5099}, + mrreviewer = {O.\ F. G. Schilling}, + url = {https://doi.org/10.1007/BF02940749}, +} + +@Article{Johnson.et.al.1999, + author = {Johnson, N. W. and Ratcliffe, J. G. and Kellerhals, R. and Tschantz, S. T.}, + journal = {Transform. Groups}, + title = {The size of a hyperbolic {C}oxeter simplex}, + year = {1999}, + issn = {1083-4362,1531-586X}, + number = {4}, + pages = {329--353}, + volume = {4}, + doi = {10.1007/BF01238563}, + fjournal = {Transformation Groups}, + mrclass = {20F55 (57M60)}, + mrnumber = {1726696}, + mrreviewer = {Andrei\ Yu.\ Vesnin}, + url = {https://doi.org/10.1007/BF01238563}, +} + +@Book{McMullen.Schulte:2002, + author = {McMullen, Peter and Schulte, Egon}, + publisher = {Cambridge University Press, Cambridge}, + title = {Abstract regular polytopes}, + year = {2002}, + isbn = {0-521-81496-0}, + series = {Encyclopedia of Mathematics and its Applications}, + volume = {92}, + doi = {10.1017/CBO9780511546686}, + mrclass = {52B15 (20F55 51F15 51M20)}, + mrnumber = {1965665}, + mrreviewer = {Rade\ \v Zivaljevi\'c}, + pages = {xiv+551}, + url = {https://doi.org/10.1017/CBO9780511546686}, +} + @Comment{jabref-meta: databaseType:bibtex;} diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf Binary files differindex 2109c1ba1c..dceef35936 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty index e45f21ee18..7a92e22048 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty @@ -1,6 +1,6 @@ % The Dynkin Diagrams package. % -% Version 3.141 592 653 589 793 238 4 +% Version 3.141 592 653 589 793 238 46 % % This package draws Dynkin diagrams in LaTeX % documents, using the TikZ package. @@ -13,7 +13,7 @@ % Released under the LaTeX Project Public License v1.3c or later, see % http://www.latex-project.org/lppl.txt \NeedsTeXFormat{LaTeX2e}[1994/06/01] -\ProvidesPackage{dynkin-diagrams}[2023/06/02 Dynkin diagrams] +\ProvidesPackage{dynkin-diagrams}[2024/07/05 Dynkin diagrams] \RequirePackage{tikz} \RequirePackage{xstring} \RequirePackage{etoolbox} @@ -1873,6 +1873,7 @@ }% + %% \dynkinQuadrupleEdge{<p>}{<q>} %% \dynkinQuadrupleEdge*{<p>}{<q>} %% Draws an oriented edge of valence 4 from root <p> to root <q> on the current Dynkin diagram. @@ -2041,6 +2042,8 @@ % Is the right side of the Dynkin diagram folded? \newif\ifdynkin@Coxeter % Should we draw Coxeter diagrams? +\newif\ifdynkin@Coxeter@above +% Should we draw Coxeter diagram extra labels above or below? \newif\ifdynkin@Kac@arrows % Should we draw arrows following Kac? \newif\ifdynkin@odd @@ -2097,6 +2100,8 @@ }, Coxeter/.is if = dynkin@Coxeter, Coxeter=false, + Coxeter above/.is if = dynkin@Coxeter@above, + Coxeter above=true, double edges/.style = { fold style/.style = { draw=black, @@ -2598,6 +2603,10 @@ {% \global\dynkin@rank=\dynkin@string\relax% \global\dynkin@nodes=\dynkin@string\relax% + \ifWitt@symbol% + \global\advance\dynkin@rank by -1\relax% + \global\advance\dynkin@nodes by -1\relax% + \fi \ifdynkin@is@twisted% \IfStrEqCase{\dynkin@series}% {% @@ -2800,7 +2809,6 @@ % Turn Satake codes into Dynkin diagram expressions in \dynkin@string. \dynkin@grok@Satake@codes% }% - % Expand out any digits in \dynkin@string into multiples of the various root marks. \expand@Dynkin@Roots@Digits% % Assign to \dynkin@roots the input string \dynkin@string with all . symbols removed, @@ -2881,20 +2889,41 @@ \global\dynkin@rank@minus@three\the\dynkin@rank@minus@two\relax% \global\advance\dynkin@rank@minus@three by -1\relax% }% + +\newif\ifWitt@symbol \newcount\dynkin@lenny% %% \dynkin@grok@series %% Interprets the dynkin@series, to see if it is extended, twisted, and what twisted series it is. \NewDocumentCommand\dynkin@grok@series{}% {% - \StrLen{\dynkin@series}[\dynkin@lenny] + \StrLen{\dynkin@series}[\dynkin@lenny]\relax% \ifnum\dynkin@lenny>1\relax% \dynkin@error@series% \fi% +% We need to check if the series is a Witt symbol. + \IfSubStr{PSRQTUVW}{\dynkin@series}% + {% + \global\Witt@symboltrue% + \IfStrEqCase{\dynkin@series}% + {% + {P}{\global\xdef\dynkin@series{A}}% + {S}{\global\xdef\dynkin@series{B}}% + {R}{\global\xdef\dynkin@series{C}}% + {Q}{\global\xdef\dynkin@series{D}}% + {T}{\global\xdef\dynkin@series{E}}% + {U}{\global\xdef\dynkin@series{F}}% + {V}{\global\xdef\dynkin@series{G}}% + {W}{\global\xdef\dynkin@series{I}}% + }% + }% + {% + \global\Witt@symbolfalse% + }% \edef\series{\dynkin@series}% \IfStrEqCase{\dynkin@twisted@series}% {% {0}{}% - {1}{ \global\dynkin@is@extendedtrue}% + {1}{\global\dynkin@is@extendedtrue}% {2}{% \IfSubStr{ADE}{\dynkin@series}% {% @@ -3459,19 +3488,6 @@ }% [\global#5=#4\relax]% }% - {G}% - {% - \IfStrEqCase{#3}% - {% - {Carter}{\global#5=% - \stringCharacterInPosition{21}{#4}% - \relax}% - {Dynkin}{\global#5=% - \stringCharacterInPosition{21}{#4}% - \relax}% - }% - [\global#5=#4\relax]% - }% }% [\global#5=#4\relax]% }% @@ -3640,25 +3656,6 @@ }% [\global#5=#3\relax]% }% - {G}% - {% - \IfStrEqCase{#4}% - {% - {Carter}% - {% - \global#5=% - \stringCharacterInPosition{21}{#3}% - \relax% - }% - {Dynkin}% - {% - \global#5=% - \stringCharacterInPosition{21}{#3}% - \relax% - }% - }% - [\global#5=#3\relax]% - }% }% [\global#5=#3\relax]% }% @@ -3777,12 +3774,14 @@ }% {G}% {% - \IfStrEqCase{\dynkin@ordering}% - {% - {Carter}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}% - {Dynkin}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}% - }% - [\global\dynkin@Root@Number=#1\relax]% + \global\dynkin@Root@Number=#1\relax% +% \IfStrEqCase{\dynkin@ordering}% +% {% +% {Carter}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}% +% {Dynkin}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}% +% {Kac}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}% +% }% +% [\global\dynkin@Root@Number=#1\relax]% }% }% [\global\dynkin@Root@Number=#1\relax]% @@ -4338,9 +4337,15 @@ \else% \ifdynkin@Coxeter% \Adynkin% - \dynkinEdgeLabel% - {\the\dynkin@rank@minus@one}% - {\the\dynkin@rank}{4}% + \ifdynkin@Coxeter@above% + \dynkinEdgeLabel% + {\the\dynkin@rank@minus@one}% + {\the\dynkin@rank}{4}% + \else% + \dynkinEdgeLabel*% + {\the\dynkin@rank@minus@one}% + {\the\dynkin@rank}{4}% + \fi% \else % Create the roots. \ifnum\dynkin@ply>1\relax% @@ -4994,7 +4999,11 @@ \dynkinEdge*{SingleEdge}{1}{2}% \dynkinEdge*{SingleEdge}{2}{3}% \dynkinEdge*{SingleEdge}{3}{4}% - \dynkinEdgeLabel{2}{3}{4}% + \ifdynkin@Coxeter@above% + \dynkinEdgeLabel{2}{3}{4}% + \else% + \dynkinEdgeLabel*{2}{3}{4}% + \fi% \else% \dynkinEdge*{SingleEdge}{1}{2}% \dynkinEdge*{SingleEdge}{3}{4}% @@ -5002,6 +5011,9 @@ \fi% \fi% }% + +\newif\ifGtwo@old@dynkin@reverse@arrows + %% \Gdynkin %% Draws a G series Dynkin diagram. \NewDocumentCommand\Gdynkin{}% @@ -5013,14 +5025,72 @@ \dynkin@jump{1}% \dynkinPlaceRootHere*{1}{left}{above}% \dynkinPlaceRootRelativeTo*{2}{1}{southfold}{left}{below}% + \ifdynkin@reverse@arrows% + \global\Gtwo@old@dynkin@reverse@arrowstrue\relax% + \else% + \global\Gtwo@old@dynkin@reverse@arrowsfalse\relax% + \fi% + \IfStrEqCase{\dynkin@ordering}% + {% + {Adams}{% + \ifdynkin@reverse@arrows% + \global\dynkin@reverse@arrowsfalse\relax% + \else% + \global\dynkin@reverse@arrowstrue\relax% + \fi\relax}% + {Bourbaki}{% + \ifdynkin@reverse@arrows% + \global\dynkin@reverse@arrowsfalse\relax% + \else% + \global\dynkin@reverse@arrowstrue\relax% + \fi\relax}% + {Carter}{\relax}% + {Dynkin}{\relax}% + {Kac}{\relax}% + }% + [\relax]% \dynkinEdge*{TripleDownRightSemiCircle}{1}{2}% + \ifGtwo@old@dynkin@reverse@arrows% + \global\dynkin@reverse@arrowstrue\relax% + \else% + \global\dynkin@reverse@arrowsfalse\relax% + \fi% \ifdynkin@arrows% \dynkinLeftFold*{1}{2}% \fi% \else% \dynkinPlaceRootHere*{1}{below}{above}% \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}% - \dynkinTripleEdge*{1}{2}% + \ifdynkin@reverse@arrows% + \global\Gtwo@old@dynkin@reverse@arrowstrue\relax% + \else% + \global\Gtwo@old@dynkin@reverse@arrowsfalse\relax% + \fi% + \IfStrEqCase{\dynkin@ordering}% + {% + {Adams}{% + \ifdynkin@reverse@arrows% + \global\dynkin@reverse@arrowsfalse\relax% + \else% + \global\dynkin@reverse@arrowstrue\relax% + \fi\relax}% + {Bourbaki}{% + \ifdynkin@reverse@arrows% + \global\dynkin@reverse@arrowsfalse\relax% + \else% + \global\dynkin@reverse@arrowstrue\relax% + \fi\relax}% + {Carter}{\relax}% + {Dynkin}{\relax}% + {Kac}{\relax}% + }% + [\relax]% + \dynkinTripleEdge*{1}{2}\relax% + \ifGtwo@old@dynkin@reverse@arrows% + \global\dynkin@reverse@arrowstrue\relax% + \else% + \global\dynkin@reverse@arrowsfalse\relax% + \fi% \fi% \fi% }% @@ -5030,7 +5100,11 @@ \newcommand*{\Hdynkin}% {% \Adynkin% - \dynkinEdgeLabel{1}{2}{5}% + \ifdynkin@Coxeter@above% + \dynkinEdgeLabel{1}{2}{5}% + \else% + \dynkinEdgeLabel*{1}{2}{5}% + \fi% }% %% \Idynkin %% Draws an I series Coxeter diagram. @@ -5038,7 +5112,11 @@ {% \dynkin@rank=2\relax% \Adynkin% - \dynkinEdgeLabel{1}{2}{\dynkin@gonality}% + \ifdynkin@Coxeter@above% + \dynkinEdgeLabel{1}{2}{\dynkin@gonality}% + \else% + \dynkinEdgeLabel*{1}{2}{\dynkin@gonality}% + \fi% }% %% \extendedAdynkin @@ -5183,9 +5261,15 @@ \dynkinEdge*{SingleEdge}% {\the\dynkin@rank@minus@one}% {\the\dynkin@rank}% - \dynkinEdgeLabel% - {\the\dynkin@rank@minus@one}% - {\the\dynkin@rank}{4}% + \ifdynkin@Coxeter@above% + \dynkinEdgeLabel% + {\the\dynkin@rank@minus@one}% + {\the\dynkin@rank}{4}% + \else% + \dynkinEdgeLabel*% + {\the\dynkin@rank@minus@one}% + {\the\dynkin@rank}{4}% + \fi% \else% \ifnum\dynkin@ply<3\relax% \dynkinEdge*{DoubleEdge}% @@ -5211,7 +5295,11 @@ \Cdynkin{}% \ifdynkin@Coxeter% \dynkinEdge*{SingleEdge}{0}{1}% - \dynkinEdgeLabel{0}{1}{4}% + \ifdynkin@Coxeter@above% + \dynkinEdgeLabel{0}{1}{4}% + \else% + \dynkinEdgeLabel*{0}{1}{4}% + \fi% \else% \dynkinEdge*{DoubleEdge}{0}{1}% \fi% @@ -5391,8 +5479,11 @@ \xdef\dynkin@gonality{6}% \dynkinPlaceRootHere*{0}{below}{above}% \dynkinEast% + \let\extended@G@old@order\dynkin@ordering% + \xdef\dynkin@ordering{Carter}% \Gdynkin% \dynkinEdge*{SingleEdge}{0}{1}% + \xdef\dynkin@ordering{\extended@G@old@order}% }% %% \extendedHdynkin @@ -5423,7 +5514,11 @@ \dynkin@rank=1\relax% \Adynkin% \dynkinEdge*{SingleEdge}{0}{1}% - \dynkinEdgeLabel{0}{1}{\infty}% + \ifdynkin@Coxeter@above% + \dynkinEdgeLabel{0}{1}{\infty}% + \else% + \dynkinEdgeLabel*{0}{1}{\infty}% + \fi% }% \newcount\dynkin@height@minus@one% %% \twistedAdynkin @@ -5531,6 +5626,8 @@ \fi% \fi% }% + +\newif\iftwisted@D@old@dynkin@reverse@arrows %% \twistedDdynkin %% Draws a twisted D series affine Dynkin diagram. \NewDocumentCommand\twistedDdynkin{}% @@ -5546,7 +5643,17 @@ \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}{above}% \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}% \dynkinEdge*{SingleEdge}{0}{1}% - \dynkinTripleEdge*{2}{1}% + \ifdynkin@reverse@arrows% + \global\dynkin@reverse@arrowsfalse\relax% + \else% + \global\dynkin@reverse@arrowstrue\relax% + \fi% + \dynkinTripleEdge*{1}{2}% + \ifdynkin@reverse@arrows% + \global\dynkin@reverse@arrowsfalse\relax% + \else% + \global\dynkin@reverse@arrowstrue\relax% + \fi% \else% \ClassError% {Dynkin diagrams}% diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex index 5f4bb33e41..b3f0be4341 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex @@ -1,7 +1,7 @@ \documentclass{amsart} \title[The Dynkin diagrams package]% {The Dynkin diagrams package \\ -Version 3.141\,592\,653\,589\,793\,238\,4} +Version 3.141\,592\,653\,589\,793\,238\,46} %% My name: \makeatletter \DeclareRobustCommand{\scotsMc}{\scotsMcx{c}} @@ -20,7 +20,8 @@ Version 3.141\,592\,653\,589\,793\,238\,4} \author{Ben \scotsMc{}Kay} \address{School of Mathematical Sciences, University College Cork, Cork, Ireland} \email{b.mckay@ucc.ie} -\date{2 June 2023} +\date{6 July 2024} +\thanks{Thanks to Jeffrey Adams, Paul Aspinwall, Mikhail Borovoi, Fran Burstall, Michiel Van Couwenberghe, Xu Gao, Skip Garibaldi, Enrico Gregorio, Mamuka Jibladze, Tasho Kaletha, Jordan Lambert, Sriotchilism O'Zaic, Gopal Prasad, Anthony Pulido, Andres Sambarino, Paul Schwahn, Felix Weinstein, Niels Wen and Gordon Williams.} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenx} \usepackage{etoolbox} @@ -168,6 +169,11 @@ before upper={\widowpenalties=3 10000 10000 150}} \begin{document} \maketitle +\renewcommand\do[1]{\dyn#1} +\renewcommand{\wdtA}{3cm} +\begin{dynkinTable}{The Dynkin diagrams of the reduced simple root systems \cite{Bourbaki:2002} pp. 265--290, plates I--IX}{2.25cm}{2.5cm} +\docsvlist{A{},B{},C{},D{},E6,E7,E8,F4,G2} +\end{dynkinTable} \begin{center} \begin{varwidth}{\textwidth} \tableofcontents @@ -176,6 +182,8 @@ before upper={\widowpenalties=3 10000 10000 150}} \setlength{\arrayrulewidth}{1.5pt} +\newpage + \section{Quick introduction} \begin{tcolorbox}[title={Load the Dynkin diagram package (see options below)}] \begin{Verbatim} @@ -202,7 +210,6 @@ The Dynkin diagram of \(B_3\) is \draw[very thick,red] (root 1) to [out=-45, in=-135] (root 3); \end{dynkinDiagram} \end{tcblisting} -\newpage \section{Interaction with \TikZ} Inside a \TikZ environment, default behaviour is to draw from the origin, so you can draw around the diagram: \begin{tcblisting}{title={Inside a \TikZ environment}} @@ -228,15 +235,6 @@ The Dynkin diagram of \(B_3\) is \end{tikzpicture} \end{tcblisting} -\newpage - -\renewcommand\do[1]{\dyn#1} -\renewcommand{\wdtA}{3cm} -\begin{dynkinTable}{The Dynkin diagrams of the reduced simple root systems \cite{Bourbaki:2002} pp. 265--290, plates I--IX}{2.25cm}{2.5cm} -\docsvlist{A{},B{},C{},D{},E6,E7,E8,F4,G2} -\end{dynkinTable} - - \section{Set options globally} \begin{tcolorbox}[title={Most options set globally \dots}] @@ -251,6 +249,7 @@ The Dynkin diagram of \(B_3\) is densely dashed}} \end{Verbatim} \end{tcolorbox} + You can also pass options to the package in \verb!\usepackage!. \emph{Danger:} spaces in option names are replaced with hyphens: \texttt{edge length=1cm} is \texttt{edge-length=1cm} as a global option; moreover you should drop the extension \verb!/.style! on any option with spaces in its name (but not otherwise). For example, \begin{tcolorbox}[title={\dots or pass global options to the package}] @@ -275,6 +274,9 @@ The Dynkin diagram of \(B_3 \times A_2\) is \dynkins{B3|A2}. The Dynkin diagram of \(B_3 \times A_2\) is \begin{DynkinDiagrams}{B3|A2}\end{DynkinDiagrams} \end{tcblisting} + +\newpage + Each factor can have its own options. \begin{tcblisting}{title={Environment}} The Dynkin diagram of \(B_3 \times A_2\) is @@ -297,11 +299,11 @@ They are spaced out by the length of one edge between successive diagrams; chang \endfoot \endlastfoot A_1\times A_1&\dynkins{A1|A1}&\texttt{\detokenize{\dynkins}\{A1|A1\}}\\ -A_2&\dynkins{A2}&\texttt{\detokenize{\dynkins}\{A2\}}\\ -B_2&\dynkins{B2}&\texttt{\detokenize{\dynkins}\{B2\}}\\ -C_2&\dynkins{C2}&\texttt{\detokenize{\dynkins}\{C2\}}\\ -D_2&\dynkins{D2}&\texttt{\detokenize{\dynkins}\{D2\}}\\ -G_2&\dynkins{G2}&\texttt{\detokenize{\dynkins}\{G2\}}\\ +A_2&\dynkin A2&\texttt{\detokenize{\dynkin} A2}\\ +B_2&\dynkin B2&\texttt{\detokenize{\dynkin} B2}\\ +C_2&\dynkin C2&\texttt{\detokenize{\dynkin} C2}\\ +D_2&\dynkin D2&\texttt{\detokenize{\dynkin} D2}\\ +G_2&\dynkin G2&\texttt{\detokenize{\dynkin} G2}\\ \end{longtable} \section{Coxeter diagrams} @@ -333,6 +335,35 @@ G_2&\dynkins{G2}&\texttt{\detokenize{\dynkins}\{G2\}}\\ [Coxeter,gonality=n]I{}} \end{dynkinTable} +\newpage + +Some people prefer Coxeter diagrams to have these labels appear on the bottom of the diagram, so say \verb!Coxeter above=false!, most likely as a global option. + +\pgfkeys{/Dynkin diagram, +Coxeter above=false} + +\renewcommand\do[1]{\dyn#1} +\begin{dynkinTable}{The Coxeter diagrams of the simple reflection groups}{2.25cm}{6cm} +\forDynkinSemicolonsvlist{\do}{ +[Coxeter]A{}; +[Coxeter]B{}; +[Coxeter]C{}; +[Coxeter]D{}; +[Coxeter]E6; +[Coxeter]E7; +[Coxeter]E8; +[Coxeter]F4; +[Coxeter,gonality=n]G2; +[Coxeter]H2; +[Coxeter]H3; +[Coxeter]H4; +[Coxeter,gonality=n]I{}} +\end{dynkinTable} + +\pgfkeys{/Dynkin diagram, +Coxeter above=true} + + \section{Satake diagrams}\label{section:Satake} \begin{tcblisting}{title={Satake diagrams use the standard name instead of a rank}} \(A_{IIIb}=\dynkin A{IIIb}\) @@ -340,6 +371,8 @@ G_2&\dynkins{G2}&\texttt{\detokenize{\dynkins}\{G2\}}\\ We use a solid gray bar to denote the folding of a Dynkin diagram, rather than the usual double arrow, since the diagrams turn out simpler and easier to read. +\newpage + \renewcommand\do[1]{\dyn#1} \begin{dynkinTable}{The Satake diagrams of the real simple Lie algebras \cite{Helgason:2001} p. 532--534}{2.75cm}{3cm} \docsvlist{A{I},A{II},A{IIIa},A{IIIb},A{IV},B{I},B{II},C{I},C{IIa},C{IIb}, @@ -968,7 +1001,7 @@ D_4 & \dynkin[label,ordering=Kac]E6 \end{tcblisting} Default is Bourbaki. -Sources are Adams \cite{Adams:1996} p. 56--57, Bourbaki \cite{Bourbaki:2002} p. pp. 265--290 plates I-IX, Carter \cite{Carter:2005} p. 540--609, Dynkin \cite{Dynkin:1952}, Kac \cite{Kac:1990} p. 43. +Sources are Adams \cite{Adams:1996} p. 56--57, Bourbaki \cite{Bourbaki:2002} p. 265--290 plates I-IX, Carter \cite{Carter:2005} p. 540--609, Dynkin \cite{Dynkin:1952} (reprinted, translated into English, in Dynkin \cite{Dynkin:2000} p. 180), Kac \cite{Kac:1990} p. 43. \NewDocumentCommand\tablerow{mm}% {% @@ -1108,9 +1141,31 @@ D[3]4,E[2]6} \renewcommand{\do}[1]{\dyn[extended,Coxeter]#1} \begin{dynkinTable}{The extended (affine) Coxeter diagrams}{3cm}{6cm} -\docsvlist{A{},B{},C{},D{},E6,E7,E8,F4,G2,H3,H4,I1} +\docsvlist{A{},B{},C{},D{},E6,E7,E8,F4,G2,H2,H3,H4,I1} \end{dynkinTable} + +\section{Witt symbols} + +The \emph{Witt symbol} \cite{Johnson.et.al.1999,McMullen.Schulte:2002,Witt:1941} is a different notation for the various series: +\[ +\begin{array}{rll} +\text{Witt symbol}&\text{Cartan symbol}\\ +P_{n+1}&A_n\\ +S_{n+1}&B_n\\ +R_{n+1}&C_n\\ +Q_{n+1}&D_n\\ +T_{n+1}&E_n&n=6,7,8\\ +U_5&F_4\\ +V_3&G_2\\ +W_2&I_1 +\end{array} +\] +\begin{tcblisting}{title={Witt symbols}} +\dynkin[extended]P7, \dynkin[extended]Q7, \dynkin[extended]T7 +\end{tcblisting} + + \newpage \section{Kac style} diff --git a/graphics/pgf/contrib/lie-hasse/README b/graphics/pgf/contrib/lie-hasse/README index e63a82cc60..1bd63c4cba 100644 --- a/graphics/pgf/contrib/lie-hasse/README +++ b/graphics/pgf/contrib/lie-hasse/README @@ -2,9 +2,9 @@ ___________________________________ Lie Hasse - v1.0 + v1.01 - 3 February 2020 + 9 July 2024 ___________________________________ Authors : Ben McKay diff --git a/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf b/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf Binary files differindex 5be5791e7f..ed444cc7d1 100644 --- a/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf +++ b/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf diff --git a/graphics/pgf/contrib/lie-hasse/lie-hasse.sty b/graphics/pgf/contrib/lie-hasse/lie-hasse.sty index d1050d8839..6d727c841c 100644 --- a/graphics/pgf/contrib/lie-hasse/lie-hasse.sty +++ b/graphics/pgf/contrib/lie-hasse/lie-hasse.sty @@ -1,24 +1,20 @@ -% The Lie Hasse package. +% The Lie Hasse package. +% Version 1.01 % -% Version 1.0 % +% This package draws Hasse diagrams of root system posets of simple +% Lie algebraS, in LaTeX documents, using the TikZ package. % -% This package draws Hasse diagrams of root system posets of simple -% Lie algebraS, in LaTeX documents, using the TikZ package. +% Benjamin McKay +% b.mckay@ucc.ie % -% Benjamin McKay -% b.mckay@ucc.ie -% -% Released under the LaTeX Project Public License v1.3c or later, see +% Released under the LaTeX Project Public License v1.3c or later, see % http://www.latex-project.org/lppl.txt -% -% -% -% \NeedsTeXFormat{LaTeX2e}[1994/06/01] -\ProvidesPackage{lie-hasse}[2020/02/02 Lie Hasse] +\ProvidesPackage{lie-hasse}[2024/07/09 Lie Hasse] \RequirePackage[rgb]{xcolor} \RequirePackage{dynkin-diagrams} +\RequirePackage[outline]{contour} \usetikzlibrary{ positioning, fadings, @@ -26,7 +22,7 @@ %%% %%% Application programming interface: %%% - +\NewDocumentCommand\edgeQuote{m}{\contour{white}{\(#1\)}} \newif\iflie@hasse@threeD \lie@hasse@threeDtrue \xdef\lie@hasse@three@D@shift{.3}% @@ -40,14 +36,27 @@ \lie@hasse@show@heightfalse \newif\iflie@hasse@attach@dynkin@diagram \lie@hasse@attach@dynkin@diagramfalse - +\newif\iflie@hasse@show@levi +\lie@hasse@show@levitrue +\newif\iflie@hasse@show@unipotent@radical +\lie@hasse@show@unipotent@radicaltrue \pgfkeys{ /Lie Hasse diagram/.is family, /Lie Hasse diagram, - attach Dynkin diagram/.is if = lie@hasse@attach@dynkin@diagram, + attach Dynkin diagram/.is if + = lie@hasse@attach@dynkin@diagram, attach Dynkin diagram/.default = false, - edge/.style={ultra thick}, - edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt}, + edge/.style = { + ultra thick + }, + edge length/.estore in + = \lie@hasse@edge@length, + edge length = 1cm, + edge quotes/.style={ + /Dynkin diagram/text style, + auto, + inner sep=2pt + }, compact edge/.style={}, noncompact edge/.style={opacity=0}, compact root/.code={\dynkinDrawSolidRootMark{#1}}, @@ -67,7 +76,13 @@ show widths/.default = false, show height/.is if = lie@hasse@show@height, show height/.default = false, - z shift/.estore in = \lie@hasse@three@D@shift, + show Levi/.is if = lie@hasse@show@levi, + show Levi/.default = true, + show unipotent radical/.is if + = lie@hasse@show@unipotent@radical, + show unipotent radical/.default = true, + z shift/.estore in + = \lie@hasse@three@D@shift, z shift/.default = .3, top/.style={black!20,opacity=.4}, left/.style={black!20,opacity=.9}, @@ -90,13 +105,17 @@ \dynkin@integer@rank% }% {% - % Turn Satake codes into Dynkin diagram expressions in \dynkin@string. + % Turn Satake codes into Dynkin diagram + % expressions in \dynkin@string. \dynkin@grok@Satake@codes% }% - % Expand out any digits in \dynkin@string into multiples of the various root marks. + % Expand out any digits in \dynkin@string + % into multiples of the various root marks. \expand@Dynkin@Roots@Digits% - % Assign to \dynkin@roots the input string \dynkin@string with all . symbols removed, - % so we only get the symbols representing the marks for the various roots. + % Assign to \dynkin@roots the input string + % \dynkin@string with all . symbols removed, + % so we only get the symbols representing + % the marks for the various roots. \StrDel{\dynkin@string}{.}[\temp]% \xdef\dynkin@roots{\temp}% \StrLen{\dynkin@roots}[\temp]% @@ -115,58 +134,33 @@ {% \pgfkeys{/Lie Hasse diagram/for all roots={#1}{#2}}% }% +\newif\iflie@hasse@B +\newcount\dynkin@rank@plus@one% \NewDocumentCommand\hasse{O{}mm}% {% \ifdefined\filldraw% - \IfStrEq{#1}{}% - {% + \ifx#1\empty\relax% \studyHasseDiagramOfRootSystem{#2}{#3}% - }% - {% + \else% \studyHasseDiagramOfRootSystem[#1]{#2}{#3}% - }% + \fi% \label@item@count 0\relax% \expandafter\forcsvlist% - \expandafter\add@label% + \expandafter\lie@hasse@add@label% \expandafter{\dynkin@label@list}% \ifnum\dynkin@rank=1% \dynkin{A}{1}% \else% + \global\dynkin@rank@plus@one\the\dynkin@rank\relax% + \global\advance\dynkin@rank@plus@one by 1\relax% \add@compact@simple@roots@to@compact@roots{}% \IfStrEqCase{#2}% {%% {A}{\hasse@A}% - {B}{\hasse@BC}% - {C}{\hasse@BC*}% + {B}{\global\lie@hasse@Btrue\hasse@BC}% + {C}{\global\lie@hasse@Bfalse\hasse@BC}% {D}{\hasse@D}% - {E}% - {% - \ifnum\dynkin@rank=6% - \hasse@E@six% - \else% - \ifnum\dynkin@rank=7% - \hasse@E@seven% - \else% - \ifnum\dynkin@rank=8% - \hasse@E@eight% - \else - \ifnum\dynkin@rank>8% - \ClassError% - {Lie Hasse}% - {Rank of E series Hasse diagram: #3{}% - exceeds 8; not defined yet}% - {}% - \fi% - \ifnum\dynkin@rank<6% - \ClassError% - {Lie Hasse}% - {Rank of E series Hasse diagram: #3{} less than 6}% - {}% - \fi% - \fi% - \fi% - \fi% - }% + {E}{\hasse@E@series}% {F}% {% \ifnum\dynkin@rank=4% @@ -194,10 +188,11 @@ {Lie Hasse}% {Lie algebra series #2{} not A,B,C,D,E,F or G}% {}]% + \forAllPositiveRoots{\draw@lie@hasse@root}% \draw@simple@root@labels% \fi% \lie@hasse@write@widths{}% - \forAllPositiveRootsInHasseDiagram{\doRootThing}% + \forAllPositiveRoots{\doRootThing}% \iflie@hasse@attach@dynkin@diagram% \attachDynkin% \fi% @@ -205,13 +200,42 @@ \begin{tikzpicture}\hasse[#1]{#2}{#3}\end{tikzpicture}% \fi% }% +\NewDocumentCommand\hasse@E@series{}% +{% + \ifnum\dynkin@rank=6% + \hasse@E@six% + \else% + \ifnum\dynkin@rank=7% + \hasse@E@seven% + \else% + \ifnum\dynkin@rank=8% + \hasse@E@eight% + \else% + \ifnum\dynkin@rank>8% + \ClassError% + {Lie Hasse}% + {Rank of E series Hasse diagram: \the\dynkin@rank{}% + exceeds 8; not defined yet}% + {}% + \fi% + \ifnum\dynkin@rank<6% + \ClassError% + {Lie Hasse}% + {Rank of E series Hasse diagram: \the\dynkin@rank{}% + less than 6; not define yet}% + {}% + \fi% + \fi% + \fi% + \fi% +}% \NewDocumentCommand\drawRootAsDynkinSum{mm}% {% \rootSum{#1}{#2}{\rs}% \node at (#1;#2) {% \dynkin[% - labels=\rs,% + expand labels=\rs,% /Lie Hasse diagram/embedded Dynkin diagram]% {\dynkin@series}{\the\dynkin@rank}% };% @@ -239,25 +263,38 @@ }% \fi% }% - -\NewDocumentCommand\backwardsGtwo{}% +\NewDocumentCommand\hasseAttachGtwo{}% {% - \dynkin[label,backwards,x shift in edge lengths=-1]{G}{\dynkin@roots}% + \dynkin[vertical shift=0,% + edge length=\lie@hasse@edge@length,% +% label,% +% backwards,% +% x shift in edge lengths=-1 +]{G}{\dynkin@roots}% }% - \newcount\lie@hasse@E@shift% \NewDocumentCommand\attachDynkin{}% {% \IfStrEqCase{\dynkin@series}{% - {A}{\dynkin{A}{\dynkin@roots}}% - {B}{\dynkin{B}{\dynkin@roots}}% - {C}{\dynkin{C}{\dynkin@roots}}% - {D}{\dynkin[y shift in edge lengths=-1.5,label]% - {D}{\dynkin@roots}}% + {A}{\dynkin[vertical shift=0,% + edge length=\lie@hasse@edge@length]% + {A}{\dynkin@roots}}% + {B}{\dynkin[vertical shift=0,% + edge length=\lie@hasse@edge@length]% + {B}{\dynkin@roots}}% + {C}{\dynkin[vertical shift=0,% + edge length=\lie@hasse@edge@length]% + {C}{\dynkin@roots}}% + {D}{\dynkin[vertical shift=0,% + edge length=\lie@hasse@edge@length,% + y shift in edge lengths=-1.5,label]% + {D}{\dynkin@roots}}% {E}% {%% \ifnum\dynkin@rank=6% \dynkin[% + vertical shift=0,% + edge length=\lie@hasse@edge@length,% upsidedown,% labels*={1,...,6},% y shift in edge lengths=.5]% @@ -266,6 +303,8 @@ \lie@hasse@E@shift\the\dynkin@rank\relax% \advance\lie@hasse@E@shift by -2\relax% \dynkin[% + vertical shift=0,% + edge length=\lie@hasse@edge@length,% backwards,% upsidedown,% label,% @@ -274,16 +313,17 @@ {E}{\dynkin@roots}% \fi% }%% - {F}{\dynkin{F}{\dynkin@roots}}% - {G}{\backwardsGtwo{}}% + {F}{\dynkin[vertical shift=0,% + edge length=\lie@hasse@edge@length]% + {F}{\dynkin@roots}}% + {G}{\hasseAttachGtwo}% }% [\ClassError% {Lie Hasse}% - {Lie algebra series \dynkin@series{} not A,B,C,D,E,F or G when attaching Dynkin diagram}% + {Lie algebra series \dynkin@series{} % + not A,B,C,D,E,F or G when attaching Dynkin diagram}% {}]% }% - - \newif\iflie@hasse@multiple@diagrams \newcommand\doHasseDiagram[1]%% {% @@ -291,8 +331,7 @@ \ % \fi% \begin{tikzpicture}% - [show background rectangle,% - baseline=(current bounding box.east)]]% + [show background rectangle,baseline=(current bounding box.east)]% \hasse#1% \iflie@hasse@show@height% \rootSystemHeight{\lie@hasse@height}% @@ -327,33 +366,25 @@ }% \begin{center}% \expandafter\forscsvlist% - \expandafter\doHasseDiagram% - \expandafter{#1}% + \expandafter\doHasseDiagram\expandafter{#1}% \end{center}% }% - - %%% %%% Package internals: %%% - - \pgfdeclarelayer{Dynkin middle} \pgfdeclarelayer{Dynkin above} \pgfsetlayers{background,Dynkin behind,Dynkin middle,Dynkin above,main} - - \newcommand*\label@list@at[1]{\csname FOOBAR-#1\endcsname} \newcommand*\defn@label@list@entry[1]{\expandafter\def\csname FOOBAR-#1\endcsname} \def\add@to@label@list#1#2{\global\defn@label@list@entry{#1}{#2}}% \newcount\label@item@count% \label@item@count 0\relax% -\newcommand\add@label[1]% +\newcommand\lie@hasse@add@label[1]% {% - \advance\label@item@count by 1\relax% + \global\advance\label@item@count by 1\relax% \global\add@to@label@list{\the\label@item@count}{#1}% }% - \xdef\lie@hasse@compact@roots{}% \NewDocumentCommand\if@compact@root{mmm}% {% @@ -369,9 +400,8 @@ \dynkinOrder{\dynkin@series}{\the\dynkin@rank}.Carter::#1->\dynkin@ordering.% {\current@simple@root}% \StrChar{\dynkin@roots}{\current@simple@root}[\lie@hasse@root@marker]% -\IfStrEq{*}{\lie@hasse@root@marker}{#2}{#3}% +\IfStrEq{x}{\lie@hasse@root@marker}{#3}{#2}% }% - \NewDocumentCommand\add@compact@root{m}% {% \if@compact@root{#1}% @@ -382,53 +412,65 @@ \xdef\lie@hasse@compact@roots{\temp@lie@hasse@compact@roots{ }(#1)}% }% }% - \newcount\lie@hasse@sr% -\newcount\drpo% \NewDocumentCommand\add@compact@simple@roots@to@compact@roots{}% {% -\lie@hasse@sr 1\relax% -\drpo\the\dynkin@rank\relax% -\advance\drpo by 1\relax% -\loop% - \if@compact@simple@root{\the\lie@hasse@sr}% - {%% - \add@compact@root{1;\the\lie@hasse@sr}% - }%% - {%% - }%% - \advance\lie@hasse@sr by 1\relax% -\ifnum\lie@hasse@sr<\the\drpo% -\repeat% + \lie@hasse@sr 1\relax% + \loop% + \if@compact@simple@root{\the\lie@hasse@sr}% + {%% + \add@compact@root{1;\the\lie@hasse@sr}% + }%% + {%% + }%% + \advance\lie@hasse@sr by 1\relax% + \ifnum\lie@hasse@sr<\the\dynkin@rank@plus@one% + \repeat% }% - -\newcount\drmo% \newcount\lie@hasse@root@count% \newcount\lie@hasse@root@count@b% \newcount\max@lie@hasse@root@count% \newcount\lie@hasse@reorder - \NewDocumentCommand\lie@hasse@fix@order{mm}% {% \dynkinOrder{\dynkin@series}{\dynkin@rank}.Carter::{#1}->\dynkin@ordering.{#2}% }% - \NewDocumentCommand\draw@one@simple@root@label{mm}% %% \draw@one@simple@root@label{r}{s}, draw at Carter number r %% the root with text s. {% - \node[below,% - label=% - {% - [below,% - lie@hasse@color,% - /Lie Hasse diagram/edge quotes]% - \(\pgfkeys{/Dynkin diagram/label macro=#2}\)% - }% - ]% - at% - (1;#1)% - {};% + \if@compact@simple@root{#1}% + {% + \iflie@hasse@show@levi% + \global\lie@hasse@ok@roottrue% + \else% + \global\lie@hasse@ok@rootfalse% + \fi% + }% + {% + \iflie@hasse@show@unipotent@radical% + \global\lie@hasse@ok@roottrue% + \else% + \global\lie@hasse@ok@rootfalse% + \fi% + }% + \iflie@hasse@ok@root% + \node[% + below,% + label=% + {% + [% + below,% + lie@hasse@color,% + /Lie Hasse diagram/edge quotes% + ]% + \(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{#2}}}\)% + }% + ]% + at% + (1;#1)% + {};% + \fi% }% \NewDocumentCommand\draw@simple@root@labels{}% {% @@ -471,27 +513,56 @@ \pgfmathsetmacro{\lie@hasse@huenum}{#1/\the\dynkin@rank}% \global\definecolor{lie@hasse@color}{hsb}{\lie@hasse@huenum,1,.6}% }% -\NewDocumentCommand\draw@lie@hasse@root{m}% +\NewDocumentCommand\draw@lie@hasse@root{mm}% {% -\if@compact@root{#1}% -{%% -\pgfkeys{/Lie Hasse diagram/compact root=#1}% -}%% -{%% -\pgfkeys{/Lie Hasse diagram/noncompact root=#1}% -}%% + \if@compact@root{#1;#2}% + {%% + \iflie@hasse@show@levi% + \pgfkeys{/Lie Hasse diagram/compact root={#1;#2}}% + \fi% + }%% + {%% + \iflie@hasse@show@unipotent@radical% + \pgfkeys{/Lie Hasse diagram/noncompact root={#1;#2}}% + \fi% + }%% }% -\xdef\lie@hasse@grade@a{} -\xdef\lie@hasse@grade@b{} -\xdef\lie@hasse@index@a{} -\xdef\lie@hasse@index@b{} \newcount\root@gpo% \xdef\label@text{}% +\newif\iflie@hasse@is@levi +\newif\iflie@hasse@ok@root \NewDocumentCommand\draw@lie@hasse@edge{O{}mmmm}% %[edge label options]{from grade}{from index}{to index}{simple root} {% \root@gpo #2\relax% \advance\root@gpo by 1\relax% + \if@compact@root{#2;#3}% + {% + \if@compact@simple@root{#5}% + {% + \global\lie@hasse@is@levitrue% + \add@compact@root{\the\root@gpo;#4}% + }% + {% + \global\lie@hasse@is@levifalse% + }% + }% + {% + \global\lie@hasse@is@levifalse% + }% + \iflie@hasse@is@levi% + \iflie@hasse@show@levi% + \global\lie@hasse@ok@roottrue% + \else% + \global\lie@hasse@ok@rootfalse% + \fi% + \else% + \iflie@hasse@show@unipotent@radical% + \global\lie@hasse@ok@roottrue% + \else% + \global\lie@hasse@ok@rootfalse% + \fi% + \fi% \set@lie@hasse@color{#5}% \lie@hasse@fix@order{#5}{\lie@hasse@root@count@b}% \IfStrEq{\dynkin@label@list}{}% @@ -505,31 +576,33 @@ }% }% \if@compact@simple@root{#5}% - {%%% Compact - \draw[% - lie@hasse@color,% - /Lie Hasse diagram/edge,% - /Lie Hasse diagram/compact edge]% - (#2;#3) --% - node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]% - {\(\pgfkeys{/Dynkin diagram/label macro=\label@text}\)}% - (\the\root@gpo;#4);% - \IfSubStr{\lie@hasse@compact@roots}{#2;#3}% - {%% adding to a compact - \add@compact@root{\the\root@gpo;#4}% - }%% - {%% - }%% + {%%% Compact simple root, i.e. edge + \iflie@hasse@ok@root% + \draw[% + lie@hasse@color,% + /Lie Hasse diagram/edge,% + /Lie Hasse diagram/compact edge]% + (#2;#3)--% + node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]% + {\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label@text}}}\)}% + (\the\root@gpo;#4);% + \fi% + \iflie@hasse@is@levi% + \fi% }%%% {%%% Noncompact - \draw[% - lie@hasse@color,% - /Lie Hasse diagram/edge,% - /Lie Hasse diagram/noncompact edge]% - (#2;#3) --% + \iflie@hasse@ok@root% + \draw + [% + lie@hasse@color,% + /Lie Hasse diagram/edge,% + /Lie Hasse diagram/noncompact edge% + ]% + (#2;#3)--% node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]% - {\(\pgfkeys{/Dynkin diagram/label macro=\label@text}\)}% + {\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label@text}}}\)}% (\the\root@gpo;#4);% + \fi% }%%% }% \newcount\A@series@grade% @@ -555,8 +628,8 @@ \coordinate (\the\A@series@grade;\the\A@series@j) at - ({.5*\the\A@series@x*\dynkin@edge@length}, - {.25*\the\A@series@y*\dynkin@edge@length}) + ({.5*\the\A@series@x*\lie@hasse@edge@length}, + {.25*\the\A@series@y*\lie@hasse@edge@length}) {};% \advance\A@series@j by 1\relax% \advance\A@series@x by 2\relax% @@ -569,59 +642,35 @@ \ifnum\A@series@grade<\the\max@A@series@grade% \repeat% }% -\newcount\A@series@grade% -\newcount\max@A@series@grade% -\NewDocumentCommand\draw@A@roots{}% -{% - \A@series@grade 1\relax% - \max@A@series@grade \the\dynkin@rank\relax% - \advance\max@A@series@grade by 1\relax% - \loop% - \max@A@series@j\the\dynkin@rank\relax% - \advance\max@A@series@j by -\the\A@series@grade\relax% - \advance\max@A@series@j by 2\relax% - \A@series@j 1\relax% - {% - \loop% - \draw@lie@hasse@root% - {\the\A@series@grade;\the\A@series@j}% - \advance\A@series@j by 1\relax% - \ifnum\A@series@j<\the\max@A@series@j% - \repeat% - }% - \advance\A@series@grade by 1\relax% - \ifnum\A@series@grade<\the\max@A@series@grade% - \repeat% -}% \newcount\maxA@i% \newcount\maxA@j% \newcount\A@lbl% -\newcount\A@i% -\newcount\A@j% -\newcount\A@ipo% +\newcount\lie@hasse@i% +\newcount\lie@hasse@j% +\newcount\lie@hasse@ipo% \newcount\A@rj% \newcount\A@rjmo% \NewDocumentCommand\draw@A@edges{}% {% \maxA@i\the\dynkin@rank\relax% - \A@i 1\relax% + \lie@hasse@i 1\relax% \loop% \maxA@j \the\dynkin@rank\relax% - \advance\maxA@j by -\the\A@i\relax% + \advance\maxA@j by -\the\lie@hasse@i\relax% \advance\maxA@j by 1\relax% \ifnum\maxA@j>-1% - \A@j 1\relax% + \lie@hasse@j 1\relax% {% \loop% - \A@lbl\the\A@i\relax% - \advance\A@lbl by \the\A@j\relax% - \A@ipo \A@i\relax% - \advance\A@ipo by 1\relax% + \A@lbl\the\lie@hasse@i\relax% + \advance\A@lbl by \the\lie@hasse@j\relax% + \lie@hasse@ipo \lie@hasse@i\relax% + \advance\lie@hasse@ipo by 1\relax% \draw@lie@hasse@edge[left]% - {\the\A@i}{\the\A@j}% - {\the\A@j}{\the\A@lbl}% + {\the\lie@hasse@i}{\the\lie@hasse@j}% + {\the\lie@hasse@j}{\the\A@lbl}% \A@rj\the\maxA@j\relax% - \advance\A@rj by -\the\A@j\relax% + \advance\A@rj by -\the\lie@hasse@j\relax% \advance\A@rj by 1\relax% \A@rjmo\the\A@rj\relax% \advance\A@rjmo by -1\relax% @@ -629,15 +678,15 @@ \advance\A@lbl by \the\dynkin@rank% \advance\A@lbl by 1% \draw@lie@hasse@edge[right]% - {\the\A@i}{\the\A@rj}% + {\the\lie@hasse@i}{\the\A@rj}% {\the\A@rjmo}{\the\A@lbl}% - \advance\A@j by 1\relax% - \ifnum\A@j<\the\maxA@j% + \advance\lie@hasse@j by 1\relax% + \ifnum\lie@hasse@j<\the\maxA@j% \repeat% }% \fi% - \advance\A@i by 1\relax% - \ifnum\A@i<\the\maxA@i% + \advance\lie@hasse@i by 1\relax% + \ifnum\lie@hasse@i<\the\maxA@i% \repeat% }% %% \hasse@A@width@at@grade{g}{\w} sets the counter \w to @@ -653,7 +702,6 @@ {% \place@A@roots% \draw@A@edges% - \draw@A@roots% }% %% \hasse@BC@width@at@grade{g}{\w} sets the counter \w to %% the value of the width (number of roots) at grade g of @@ -666,138 +714,116 @@ \global\advance#2 by 1\relax% \global\divide#2 by 2\relax% }% -\newcount\tdrmt% -\newcount\tdrmo% +\newcount\twice@dynkin@rank@minus@one% \newcount\max@BC@r% \newcount\BC@r% \newcount\BC@series@x% \newcount\BC@series@y% \NewDocumentCommand\place@BC@roots{}% {% -\drmo \the\dynkin@rank\relax% -\advance\drmo by -1\relax% -\tdrmt \the\drmo\relax% -\advance\tdrmt by \the\drmo\relax% -\tdrmo \the\tdrmt\relax% -\advance\tdrmo 1\relax% -\max@BC@r \the\dynkin@rank\relax% -\advance\max@BC@r by 1\relax% -\BC@r 1\relax% -\loop% - \BC@series@x \the\BC@r\relax% - \advance\BC@series@x by -1\relax% - \advance\BC@series@x by \the\BC@series@x\relax% - \BC@series@y 1\relax% - {%% + \twice@dynkin@rank@minus@one \the\dynkin@rank\relax% + \advance\twice@dynkin@rank@minus@one by \the\dynkin@rank\relax% + \advance\twice@dynkin@rank@minus@one by -1\relax% + \max@BC@r \the\dynkin@rank\relax% + \advance\max@BC@r by 1\relax% + \BC@r 1\relax% \loop% - \coordinate - (\the\BC@series@y;\the\BC@r) - at - ({.5*\the\BC@series@x*\dynkin@edge@length}, - {.5*(\the\BC@series@y-1)*\dynkin@edge@length}) - {};% - \advance\BC@series@y by 1\relax% - \advance\BC@series@x by 1\relax% - \ifnum\BC@series@x<\the\tdrmo\repeat% - }%% - \advance\BC@r by 1\relax% - \ifnum\BC@r<\the\max@BC@r% -\repeat% + \BC@series@x \the\BC@r\relax% + \advance\BC@series@x by -1\relax% + \advance\BC@series@x by \the\BC@series@x\relax% + \BC@series@y 1\relax% + {%% + \loop% + \coordinate + (\the\BC@series@y;\the\BC@r) + at + ({.5*\the\BC@series@x*\lie@hasse@edge@length}, + {.5*(\the\BC@series@y-1)*\lie@hasse@edge@length}) + {};% + \advance\BC@series@y by 1\relax% + \advance\BC@series@x by 1\relax% + \ifnum\BC@series@x<\the\twice@dynkin@rank@minus@one\repeat% + }%% + \advance\BC@r by 1\relax% + \ifnum\BC@r<\the\max@BC@r% + \repeat% +}% +\newcount\BC@height% +\newcount\BC@g% +\NewDocumentCommand\draw@BC@edges{}% +{% + \rootSystemHeight{\BC@height}% + \ifnum\BC@height>1% + \BC@g 1\relax% + \loop% + \draw@BC@edges@at@grade{\the\BC@g}% + \global\advance\BC@g by 1\relax% + \ifnum\BC@g<\BC@height% + \repeat% + \fi% }% -\newcount\max@BC@i% \newcount\BC@i% -\newcount\BC@series@x% -\newcount\BC@series@y% +\newcount\BC@width% +\newcount\BC@width@plus@one% +\NewDocumentCommand\draw@BC@edges@at@grade{m}% +{% + \rootSystemWidthAtGrade{#1}{\BC@width}% + \BC@width@plus@one \BC@width\relax% + \advance \BC@width@plus@one by 1\relax% + \BC@i 1\relax% + {% + \loop% + \draw@BC@edges@at@root{#1}{\the\BC@i}% + \global\advance\BC@i by 1\relax% + \ifnum\BC@i<\BC@width@plus@one\repeat% + }% +}% +\newcount\BC@height% \newcount\BC@ii% -\newcount\BC@series@yy% -\newcount\BC@series@yy% -\newcount\lbl% +\newif\ifBC@draw% +\newcount\lie@hasse@lbl% \newcount\temp@lbl% -\NewDocumentCommand\draw@BC@edges{s}% -{% -\tdrmo \the\dynkin@rank\relax% -\advance\tdrmo by \the\dynkin@rank\relax% -\advance\tdrmo by -1\relax% -\max@BC@i \the\dynkin@rank\relax% -\advance\max@BC@i by 1\relax% -\BC@i 1\relax% -\loop% - \BC@series@x \the\BC@i\relax% - \advance\BC@series@x by \the\BC@i\relax% - \advance\BC@series@x by -2\relax% - \BC@series@y 1\relax% - {%% - \loop% - \ifnum\BC@i>1% - % draw an edge upward to the left - \BC@ii \the\BC@i\relax% - \advance\BC@ii by -1\relax% - \BC@series@yy \the\BC@series@y\relax% - \advance\BC@series@yy by 1\relax% - \draw@lie@hasse@edge[right]% - {\the\BC@series@y}{\the\BC@i}% - {\the\BC@ii}% - {\the\BC@ii}% +\NewDocumentCommand\draw@BC@edges@at@root{mm}% +{% + \ifnum#2>1% + % draw an edge upward to the left + \BC@ii #2\relax% + \advance\BC@ii by -1\relax% + \draw@lie@hasse@edge[right]% + {#1}{#2}% + {\the\BC@ii} + {\the\BC@ii}% + \fi% + \BC@drawtrue% + \ifodd#1 + \ifnum#2=\the\BC@width% + \global\BC@drawfalse% \fi% - \ifnum\BC@series@y>1% - % draw an edge downward to the left - \BC@series@yy \the\BC@series@y\relax% - \advance\BC@series@yy by -1\relax% - \lbl \the\BC@i\relax% - \advance\lbl by \the\BC@series@y\relax% - \advance\lbl by -1\relax% - \ifnum\dynkin@rank<\the\lbl% - \temp@lbl \the\lbl\relax% - \lbl \the\dynkin@rank\relax% - \advance\lbl by \the\dynkin@rank% - \advance\lbl by -\the\temp@lbl% + \fi% + \ifBC@draw% + % draw an edge upward to the right + \lie@hasse@lbl #2\relax% + \advance\lie@hasse@lbl by #1\relax% + \ifnum\dynkin@rank<\the\lie@hasse@lbl% + \temp@lbl \the\lie@hasse@lbl\relax% + \lie@hasse@lbl \the\dynkin@rank\relax% + \advance\lie@hasse@lbl by \the\dynkin@rank% + \advance\lie@hasse@lbl by -\the\temp@lbl% %% For the B series: - \IfBooleanF{#1}{\global\advance\lbl by 1\relax}% - \draw@lie@hasse@edge[left]% - {\the\BC@series@yy}{\the\BC@i}% - {\the\BC@i}% - {\the\lbl}% - \else% - \draw@lie@hasse@edge[left]% - {\the\BC@series@yy}{\the\BC@i}% - {\the\BC@i}% - {\the\lbl}% + \iflie@hasse@B% + \global\advance\lie@hasse@lbl by 1\relax% \fi% + \draw@lie@hasse@edge[left]% + {#1}{#2}% + {#2}% + {\the\lie@hasse@lbl}% + \else% + \draw@lie@hasse@edge[left]% + {#1}{#2}% + {#2}% + {\the\lie@hasse@lbl}% \fi% - \advance\BC@series@y by 1\relax% - \advance\BC@series@x by 1\relax% - \ifnum\BC@series@x<\the\tdrmo\repeat% - }%% - \advance\BC@i by 1\relax% - \ifnum\BC@i<\the\max@BC@i% -\repeat% -}% -\newcount\tdrpt% -\newcount\BC@r% -\newcount\BC@series@y% -\newcount\maxy% -\NewDocumentCommand\draw@BC@roots{}% -{% -\tdrpt \the\dynkin@rank\relax% -\advance\tdrpt by \the\dynkin@rank\relax% -\advance\tdrpt by 2\relax% -\max@BC@r \the\dynkin@rank\relax% -\advance\max@BC@r by 1\relax% -\BC@r 1\relax% -\loop% - \BC@series@y 1\relax% - \maxy \tdrpt\relax% - \advance\maxy -\the\BC@r\relax% - \advance\maxy -\the\BC@r\relax% - {%% - \loop% - \draw@lie@hasse@root{\the\BC@series@y;\the\BC@r}% - \advance\BC@series@y by 1\relax% - \ifnum\BC@series@y<\the\maxy\repeat% - }%% - \advance\BC@r by 1\relax% - \ifnum\BC@r<\the\max@BC@r% -\repeat% + \fi% }% \NewDocumentCommand\hasse@BC{s}% star for C: {% @@ -809,7 +835,6 @@ {% \draw@BC@edges% }% - \draw@BC@roots% }% \NewDocumentCommand\hasse@D{}% {% @@ -818,51 +843,45 @@ \iflie@hasse@threeD% \draw@D@hasse@three@D% \fi% - \draw@D@roots% }% -\newcount\drmt% \NewDocumentCommand\draw@D@hasse@three@D{}% {% - \drmo \the\dynkin@rank\relax% - \advance\drmo by -1\relax% - \drmt \the\dynkin@rank\relax% - \advance\drmt by -2\relax% \begin{pgfonlayer}{Dynkin middle}% \fill[/Lie Hasse diagram/left] - (\the\drmt;1) -- - (\the\drmo;1) -- + (\the\dynkin@rank@minus@two;1) -- + (\the\dynkin@rank@minus@one;1) -- (\the\dynkin@rank;1) -- - (\the\drmo;2) -- + (\the\dynkin@rank@minus@one;2) -- cycle;% \fill[/Lie Hasse diagram/top] - (\the\drmt;1) -- - (1;\the\drmt) -- - (2;\the\drmo) -- - (\the\drmo;2) -- + (\the\dynkin@rank@minus@two;1) -- + (1;\the\dynkin@rank@minus@two) -- + (2;\the\dynkin@rank@minus@one) -- + (\the\dynkin@rank@minus@one;2) -- cycle;% \fill[/Lie Hasse diagram/top] - (\the\drmo;2) -- + (\the\dynkin@rank@minus@one;2) -- (\the\dynkin@rank;1) -- - (3;\the\drmo) -- - (2;\the\drmo) -- + (3;\the\dynkin@rank@minus@one) -- + (2;\the\dynkin@rank@minus@one) -- cycle;% \fill[/Lie Hasse diagram/top] - (\the\drmo;1) -- + (\the\dynkin@rank@minus@one;1) -- (\the\dynkin@rank;1) -- - (3;\the\drmo) -- - (2;\the\drmt) -- + (3;\the\dynkin@rank@minus@one) -- + (2;\the\dynkin@rank@minus@two) -- cycle;% \fill[/Lie Hasse diagram/top] - (\the\drmt;1) -- - (\the\drmo;1) -- - (2;\the\drmt) -- - (1;\the\drmt) -- + (\the\dynkin@rank@minus@two;1) -- + (\the\dynkin@rank@minus@one;1) -- + (2;\the\dynkin@rank@minus@two) -- + (1;\the\dynkin@rank@minus@two) -- cycle;% \fill[/Lie Hasse diagram/left] - (1;\the\drmt) -- - (2;\the\drmt) -- - (3;\the\drmo) -- - (2;\the\drmo) -- + (1;\the\dynkin@rank@minus@two) -- + (2;\the\dynkin@rank@minus@two) -- + (3;\the\dynkin@rank@minus@one) -- + (2;\the\dynkin@rank@minus@one) -- cycle;% \end{pgfonlayer}% }% @@ -883,9 +902,7 @@ \newcount\D@g% \newcount\maxD@grd% \newcount\D@grd% -\newcount\maxxD% -\newcount\iD% -\newcount\xxD% +\newcount\lie@hasse@D@x% \newcount\sum@D% \NewDocumentCommand\place@D@roots{}% {% @@ -918,37 +935,34 @@ \repeat% }% }% -\newcount\drpo% \NewDocumentCommand\place@D@root@at{mm}% {% - \xxD #1\relax% - \advance\xxD by #2\relax% - \advance\xxD by #2\relax% - \advance\xxD by -3\relax% - \drpo \the\dynkin@rank\relax% - \advance\drpo by 1\relax% + \lie@hasse@D@x #1\relax% + \advance\lie@hasse@D@x by #2\relax% + \advance\lie@hasse@D@x by #2\relax% + \advance\lie@hasse@D@x by -3\relax% \sum@D #1\relax% \advance\sum@D by #2\relax% \ifnum\sum@D=\the\dynkin@rank% \global\def\D@root@x% - {\the\xxD-\lie@hasse@three@D@shift}% + {\the\lie@hasse@D@x-\lie@hasse@three@D@shift}% \else% - \ifnum\sum@D=\the\drpo% + \ifnum\sum@D=\the\dynkin@rank@plus@one% \ifnum#1<\the\dynkin@rank% \global\def\D@root@x% - {\the\xxD-2+\lie@hasse@three@D@shift}% + {\the\lie@hasse@D@x-2+\lie@hasse@three@D@shift}% \else% - \global\def\D@root@x{\the\xxD}% + \global\def\D@root@x{\the\lie@hasse@D@x}% \fi% \else% \ifnum\sum@D<\the\dynkin@rank% - \global\def\D@root@x{\the\xxD}% + \global\def\D@root@x{\the\lie@hasse@D@x}% \else% % if \sum@D exceeds rank+1 \ifnum#1<\the\dynkin@rank% - \global\def\D@root@x{\the\xxD-2}% + \global\def\D@root@x{\the\lie@hasse@D@x-2}% \else% - \global\def\D@root@x{\the\xxD}% + \global\def\D@root@x{\the\lie@hasse@D@x}% \fi% \fi% \fi% @@ -956,7 +970,7 @@ \coordinate (#1;#2) at - ({(\D@root@x)*\dynkin@edge@length/2},{(#1-1)*\dynkin@edge@length/2}) + ({(\D@root@x)*\lie@hasse@edge@length/2},{(#1-1)*\lie@hasse@edge@length/2}) {};% }% \NewDocumentCommand\draw@D@edges{}% @@ -983,7 +997,8 @@ \D@r 1\relax% {% \loop% - \draw@D@edges@at{#1}{\the\D@r}{\the\max@D@roots}% +%%% \draw@D@edges@at{#1}{\the\D@r}{\the\max@D@roots}% + \draw@D@edges@at{#1}{\the\D@r}% \advance\D@r by 1\relax% \ifnum\D@r<\the\max@D@roots@plus@one% \repeat% @@ -1000,10 +1015,6 @@ \newcount\hasse@D@label% \NewDocumentCommand\draw@D@edges@at{mm}% {% - \drmo\the\dynkin@rank\relax% - \advance\drmo by -1\relax% - \drpo \the\dynkin@rank\relax% - \advance\drpo by 1\relax% \hasse@D@gpo#1\relax% \advance\hasse@D@gpo by 1\relax% \hasse@D@gpi#1\relax% @@ -1035,7 +1046,7 @@ \xdef\hasse@D@layer{Dynkin above}% \else% % below or middle. - \ifnum\hasse@D@gpi=\the\drpo% + \ifnum\hasse@D@gpi=\the\dynkin@rank@plus@one% \xdef\hasse@D@layer{Dynkin behind}% \fi% \fi% @@ -1045,7 +1056,7 @@ \fi% \fi% \ifnum\dynkin@rank>#1% - \ifnum\hasse@D@gpi<\the\drpo% + \ifnum\hasse@D@gpi<\the\dynkin@rank@plus@one% \else% \global\advance\hasse@D@label -1\relax% \fi% @@ -1069,7 +1080,7 @@ \fi% \fi% \ifnum#1=1% - \ifnum\drmo=#2% + \ifnum\dynkin@rank@minus@one=#2% \global\hasse@Dfalse\relax% \else% \xdef\hasse@D@LR{right}% @@ -1080,13 +1091,13 @@ \ifnum\hasse@D@label>\the\dynkin@rank% \hasse@D@label -\hasse@D@label\relax% \advance\hasse@D@label \the\dynkin@rank\relax% - \advance\hasse@D@label \the\drmo\relax% + \advance\hasse@D@label \the\dynkin@rank@minus@one\relax% \fi% - \ifnum\drmo<#1% + \ifnum\dynkin@rank@minus@one<#1% \else% \ifnum#2=1% \else% - \ifnum\hasse@D@gpi<\the\drpo% + \ifnum\hasse@D@gpi<\the\dynkin@rank@plus@one% \else% \advance\hasse@D@label 1\relax% \fi% @@ -1099,11 +1110,11 @@ \global\advance\hasse@D@target by 1\relax% \fi% \else% - \ifnum\drmo=#1% + \ifnum\dynkin@rank@minus@one=#1% \global\advance\hasse@D@target by -1\relax% \fi% \fi% - \ifnum\hasse@D@gpi=\the\drpo% + \ifnum\hasse@D@gpi=\the\dynkin@rank@plus@one% \ifnum#2>1% \xdef\hasse@D@layer{Dynkin behind}% \xdef\hasse@D@LR{right}% @@ -1112,7 +1123,7 @@ \ifnum\hasse@D@gpi=\the\dynkin@rank% \xdef\hasse@D@layer{Dynkin above}% \else% - \ifnum\hasse@D@gpi=\the\drmo% + \ifnum\hasse@D@gpi=\the\dynkin@rank@minus@one% \xdef\hasse@D@layer{Dynkin above}% \else% \xdef\hasse@D@layer{Dynkin middle}% @@ -1129,7 +1140,7 @@ \end{pgfonlayer}% \fi% % % Draw any other edges. - \ifnum\hasse@D@gpi=\the\drmo% + \ifnum\hasse@D@gpi=\the\dynkin@rank@minus@one% \hasse@D@target#2\relax% \advance\hasse@D@target by 1\relax% \begin{pgfonlayer}{Dynkin behind} @@ -1142,38 +1153,7 @@ }% \newcount\maxD@grd% \newcount\D@grd% -\newcount\maxxD% \newcount\sum@D% -\NewDocumentCommand\draw@D@roots{}% -{% - \drmo \the\dynkin@rank\relax% - \advance\drmo by -1\relax% - \maxD@grd \the\dynkin@rank\relax% - \advance\maxD@grd by \the\dynkin@rank\relax% - \advance\maxD@grd by -2\relax% - \D@grd 1\relax% - \loop% - % Construct the roots at grade \D@grd. - \draw@D@roots@at@grade{\D@grd}% - \advance\D@grd by 1\relax% - \ifnum\D@grd<\the\maxD@grd% - \repeat% -}% -\NewDocumentCommand\draw@D@roots@at@grade{m}% -{% - \hasse@D@width@at@grade{#1}{\max@D@roots}% - \max@D@roots@plus@one \the\max@D@roots\relax% - \advance\max@D@roots@plus@one 1\relax% - \D@r 1\relax% - {% - \loop% - \draw@lie@hasse@root{\the\D@grd;\the\D@r}% - \advance\D@r by 1\relax% - \ifnum\D@r<\the\max@D@roots@plus@one% - \repeat% - }% -}% -%}% \newcount\lie@hasse@grade@no \newcount\lie@hasse@root@no \def\lie@hasse@XX{} @@ -1205,14 +1185,14 @@ \coordinate (\the\lie@hasse@grade@no;\the\lie@hasse@root@no) at - ({\lie@hasse@XX*\dynkin@edge@length/2}, - {(\the\lie@hasse@grade@no-1)*\dynkin@edge@length/2}) {};% + ({\lie@hasse@XX*\lie@hasse@edge@length/2}, + {(\the\lie@hasse@grade@no-1)*\lie@hasse@edge@length/2}) {};% \global\advance\lie@hasse@root@no by 1% }% \NewDocumentCommand\lie@hasse@place@root@list{m}% {% \global\lie@hasse@root@no 1\relax% - \expandafter\forcsvlist\expandafter{\lie@hasse@place@root}{#1}% + \expandafter\forcsvlist\expandafter\lie@hasse@place@root{#1}% \global\advance\lie@hasse@grade@no by 1% }% \NewDocumentCommand\lie@hasse@place@roots{m}% @@ -1224,26 +1204,6 @@ }% \expandafter\docsvlist\expandafter{#1}% }% -\NewDocumentCommand\lie@hasse@draw@root{m}% -{% - \draw@lie@hasse@root{\the\lie@hasse@grade@no;\the\lie@hasse@root@no}% - \global\advance\lie@hasse@root@no by 1% -}% -\NewDocumentCommand\lie@hasse@root@draw@list{m}% -{% - \global\lie@hasse@root@no 1\relax% - \expandafter\forcsvlist\expandafter{\lie@hasse@draw@root}{#1}% - \global\advance\lie@hasse@grade@no by 1% -}% -\NewDocumentCommand\lie@hasse@draw@roots{m}% -{% - \global\lie@hasse@grade@no 1\relax% - \renewcommand*{\do}[1]% - {% - \lie@hasse@root@draw@list{##1}% - }% - \expandafter\docsvlist\expandafter{#1}% -}% \newcount\lie@hasse@grade@no@plus@one% \newcount\lie@hasse@edge@count% \def\lie@hasse@edge@go{% @@ -1256,7 +1216,8 @@ {% \global\advance\lie@hasse@edge@count by 1\relax% \begin{pgfonlayer}{Dynkin above}% - \lie@hasse@finish@edge#1!% +%%? \lie@hasse@finish@edge#1!% + \lie@hasse@finish@edge#1\relax% \end{pgfonlayer}% }% \def\lie@hasse@process@edge@behind#1!% @@ -1289,13 +1250,12 @@ \NewDocumentCommand\lie@hasse@process@edge@lists{m}% {% \global\lie@hasse@grade@no 1\relax% - \expandafter\forcsvlist\expandafter{\lie@hasse@process@edge@list}{#1}% + \expandafter\forcsvlist\expandafter\lie@hasse@process@edge@list{#1}% }% \NewDocumentCommand\hasse@X{mm}% {% \lie@hasse@place@roots{#1}% \lie@hasse@process@edge@lists{#2}% - \lie@hasse@draw@roots{#1}% }% \NewDocumentCommand\hasse@E@six@width@at@grade{mm}% {% @@ -1323,7 +1283,11 @@ #2 1% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% }% -% In the following code, edges are described by grade: in grade g, the expression i+r<j. means an edge from g;i to (g+1);j labelled by root r, with a label on the left; use > instead of < to get the right. Use a star in front to get this edge on the higher layer. +% In the following code, edges are described by grade: +% in grade g, the expression i+r<j. means an edge from +% g;i to (g+1);j labelled by root r, with a label on +% the left; use > instead of < to get the right. Use a +% star in front to get this edge on the higher layer. \NewDocumentCommand\hasse@E@six{}% {% \hasse@X% @@ -1353,13 +1317,45 @@ }%%% \iflie@hasse@threeD% \begin{pgfonlayer}{Dynkin middle}% -\fill[/Lie Hasse diagram/top] (2;1) -- (5;3) -- (2;5) -- (1;5) -- (2;4) -- (1;3) -- (2;2) -- (1;2) -- cycle;% -\fill[/Lie Hasse diagram/top] (2;3) -- (4;1) -- (6;2) -- (4;5) -- cycle;% -\fill[/Lie Hasse diagram/right] (1;3) -- (2;3) -- (4;5) -- (3;5) -- cycle;% -\fill[/Lie Hasse diagram/left] (3;1) -- (4;1) -- (2;3) -- (1;3) -- cycle;% -\fill[/Lie Hasse diagram/left] (4;3) -- (5;1) -- (6;1) -- (5;2) -- cycle;% -\fill[/Lie Hasse diagram/right] (4;3) -- (5;2) -- (6;3) -- (5;4) -- cycle;% -\fill[/Lie Hasse diagram/top] (5;2) -- (7;1) -- (9;1) -- (7;3) -- cycle;% + \fill[/Lie Hasse diagram/top] + (2;1) -- + (5;3) -- + (2;5) -- + (1;5) -- + (2;4) -- + (1;3) -- + (2;2) -- + (1;2) -- cycle;% + \fill[/Lie Hasse diagram/top] + (2;3) -- + (4;1) -- + (6;2) -- + (4;5) -- cycle;% + \fill[/Lie Hasse diagram/right] + (1;3) -- + (2;3) -- + (4;5) -- + (3;5) -- cycle;% + \fill[/Lie Hasse diagram/left] + (3;1) -- + (4;1) -- + (2;3) -- + (1;3) -- cycle;% + \fill[/Lie Hasse diagram/left] + (4;3) -- + (5;1) -- + (6;1) -- + (5;2) -- cycle;% + \fill[/Lie Hasse diagram/right] + (4;3) -- + (5;2) -- + (6;3) -- + (5;4) -- cycle;% + \fill[/Lie Hasse diagram/top] + (5;2) -- + (7;1) -- + (9;1) -- + (7;3) -- cycle;% \end{pgfonlayer}% \fi% }% @@ -1399,7 +1395,6 @@ #2 1% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% }% - \NewDocumentCommand\hasse@E@seven{}% {% \hasse@X% @@ -1457,20 +1452,64 @@ }%%% \iflie@hasse@threeD% \begin{pgfonlayer}{Dynkin middle}% -\fill[/Lie Hasse diagram/top] (2;1) -- (6;3) -- (2;6) -- (1;6) -- (2;5) -- (1;4) -- (2;3) -- (1;3) -- - (2;2) -- (1;2) -- cycle;% -\fill[/Lie Hasse diagram/top] (5;1) -- (7;3) -- (4;6) -- (2;4) -- cycle;% -\fill[/Lie Hasse diagram/top] (7;1) -- (9;3) -- (7;5) -- (5;4) -- cycle;% -\fill[/Lie Hasse diagram/top] (9;1) -- (12;1) -- (13;1) -- (14;1) -- (11;3) -- (7;2) -- cycle;% -\fill[/Lie Hasse diagram/right] (1;4) -- (2;4) -- (4;6) -- (3;6) -- cycle;% -\fill[/Lie Hasse diagram/left] (4;1) -- (5;1) -- (2;4) -- (1;4) -- cycle;% -\fill[/Lie Hasse diagram/left] (4;4) -- (6;1) -- (8;1) -- (7;2) -- (6;2) -- (5;4) -- cycle;% -\fill[/Lie Hasse diagram/right] (4;4) -- (5;4) -- (6;5) -- (5;6) -- cycle;% -\fill[/Lie Hasse diagram/right] (6;2) -- (7;2) -- (9;4) -- (8;4) -- cycle;% + \fill[/Lie Hasse diagram/top] + (2;1) -- + (6;3) -- + (2;6) -- + (1;6) -- + (2;5) -- + (1;4) -- + (2;3) -- + (1;3) -- + (2;2) -- + (1;2) -- cycle;% + \fill[/Lie Hasse diagram/top] + (5;1) -- + (7;3) -- + (4;6) -- + (2;4) -- cycle;% + \fill[/Lie Hasse diagram/top] + (7;1) -- + (9;3) -- + (7;5) -- + (5;4) -- cycle;% + \fill[/Lie Hasse diagram/top] + (9;1) -- + (12;1) -- + (13;1) -- + (14;1) -- + (11;3) -- + (7;2) -- cycle;% + \fill[/Lie Hasse diagram/right] + (1;4) -- + (2;4) -- + (4;6) -- + (3;6) -- cycle;% + \fill[/Lie Hasse diagram/left] + (4;1) -- + (5;1) -- + (2;4) -- + (1;4) -- cycle;% + \fill[/Lie Hasse diagram/left] + (4;4) -- + (6;1) -- + (8;1) -- + (7;2) -- + (6;2) -- + (5;4) -- cycle;% + \fill[/Lie Hasse diagram/right] + (4;4) -- + (5;4) -- + (6;5) -- + (5;6) -- cycle;% + \fill[/Lie Hasse diagram/right] + (6;2) -- + (7;2) -- + (9;4) -- + (8;4) -- cycle;% \end{pgfonlayer}% \fi% }% - \NewDocumentCommand\hasse@E@eight@width@at@grade{mm}% {% \ifnum#1=1% @@ -1527,7 +1566,6 @@ #2 1% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% }% - \NewDocumentCommand\hasse@E@eight{}% {% \hasse@X{% @@ -1754,11 +1792,11 @@ {{0,2,4,6},{1,3,5},{2,3:1,4},{2:1,3,4:1},{1:1,3:1,5:1},{2:1,4:1},{1:1,3:1},{2:1},{2:2},{2:3},{2:4}}% {% grades: {% 1 -1+2<1,*2+3<2,*3+4<3,*2+1>1,*3+2>2,4+3>3}, +1+2<1,*2+3>2,*3+4>3,*2+1<1,*3+2<2,4+3>3}, {% 2 -*1+3<1,*2+4<3,*2+3<2,*2+1<1,3+2>3}, +*1+3<1,*2+4>3,*2+1<1,*2+3>2,3+2>3}, {% 3 -*1+3<1,1+4<2,*2+4<3,*2+1<1,3+1>2,*3+3>3}, +*1+3<1,1+4>2,*2+4>3,*2+1<1,3+1>2,*3+3>3}, {% 4 *1+2<1,*1+4<2,2+3<2,*3+1>2,*3+4>3}, {% 5 @@ -2026,8 +2064,8 @@ }% \global\root@sum@resetfalse% }% -\xdef\my@root@sum{}% -\xdef\my@fixed@root@sum{}% +\xdef\lie@hasse@root@sum{}% +\xdef\lie@hasse@fixed@root@sum{}% \NewDocumentCommand\rootSum{oommm}% {% \IfValueT{#1}% @@ -2053,15 +2091,15 @@ \fi% \IfStrEqCase{\dynkin@series}% {% - {A}{\hasse@A@root@sum{#3}{#4}{\my@root@sum}}% - {B}{\hasse@B@root@sum{#3}{#4}{\my@root@sum}}% - {C}{\hasse@C@root@sum{#3}{#4}{\my@root@sum}}% - {D}{\hasse@D@root@sum{#3}{#4}{\my@root@sum}}% - {E}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}% - {F}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}% - {G}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}% + {A}{\hasse@A@root@sum{#3}{#4}{\lie@hasse@root@sum}}% + {B}{\hasse@B@root@sum{#3}{#4}{\lie@hasse@root@sum}}% + {C}{\hasse@C@root@sum{#3}{#4}{\lie@hasse@root@sum}}% + {D}{\hasse@D@root@sum{#3}{#4}{\lie@hasse@root@sum}}% + {E}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}% + {F}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}% + {G}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}% }% - \StrSubstitute{\my@root@sum}{.}{,}[#5]% + \StrSubstitute{\lie@hasse@root@sum}{.}{,}[#5]% }% %% \rootSystemHeight[G][2]{\h} sets the counter \h to the height of the poset %% of the root system G2. \rootSystemHeight{\h} uses the current root system. @@ -2451,7 +2489,7 @@ 4;1=3.1,% 5;1=3.2}% }% -\NewDocumentCommand\forAllPositiveRootsInHasseDiagram{m}% +\NewDocumentCommand\forAllPositiveRoots{m}% {% \rootSystemHeight{\lie@hasse@height}% \foreach \root@grady in {1,...,\the\lie@hasse@height}% diff --git a/graphics/pgf/contrib/lie-hasse/lie-hasse.tex b/graphics/pgf/contrib/lie-hasse/lie-hasse.tex index 82643fee14..762639c603 100644 --- a/graphics/pgf/contrib/lie-hasse/lie-hasse.tex +++ b/graphics/pgf/contrib/lie-hasse/lie-hasse.tex @@ -1,5 +1,5 @@ \documentclass{amsart} -\title[The Lie Hasse package]{The Lie Hasse package \\ Version 1.0} +\title[The Lie Hasse package]{The Lie Hasse package \\ Version 1.01} %% My name: \makeatletter \DeclareRobustCommand{\scotsMc}{\scotsMcx{c}} @@ -19,8 +19,7 @@ \author{\authorsname} \address{School of Mathematical Sciences, University College Cork, Cork, Ireland} \email{b.mckay@ucc.ie} -\date{3 February 2020} -\usepackage{etex} +\date{9 July 2024} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenx} \usepackage{etoolbox} @@ -87,7 +86,7 @@ root radius=.02cm, edge length=.5cm, edge quotes/.style={opacity=0}% - ]{E}{8}% + ]E8% \end{tikzpicture}% \end{center}% \begin{center} @@ -106,26 +105,26 @@ This package draws the Hasse diagram of the poset of the positive simple roots o \begin{document} The Hasse diagram of \(F_4\) is \begin{center} -\hasse[edge length=1cm]{F}{4} +\hasse F4 \end{center} \end{document} \end{Verbatim} \end{tcolorbox} \par\noindent{}The Hasse diagram of \(F_4\) is \begin{center} -\hasse[edge length=1cm]{F}{4} +\hasse[edge length=1cm]F4 \end{center} Each edge is labelled with the simple root by which vertices differ. \begin{tcblisting}{title={Inside a \TikZ statement}} -\(B_4\) has Dynkin diagram \tikz \dynkin[edge length=.35cm]{B}{4};, Hasse diagram +\(B_4\) has Dynkin diagram \tikz \dynkin{B}{4};, Hasse diagram \begin{center} -\hasse[edge length=1cm]{B}{4} +\hasse[edge length=1cm]B4 \end{center} \end{tcblisting} \begin{tcblisting}{title={Inside a Dynkin diagram environment, diagrams fit together}} The Hasse diagram of \(B_4\) is \begin{dynkinDiagram}[vertical shift=0,edge length=1cm]{B}{4} -\hasse{B}{4} +\hasse[edge length=1cm]B4 \end{dynkinDiagram} \end{tcblisting} We shut off the default vertical shift of the Dynkin diagram, so that it starts at the origin. @@ -133,35 +132,26 @@ There is an option to \verb!\hasse! for this: \begin{tcblisting}{title={Attaching the Dynkin diagram}} The Hasse diagram of \(B_4\) is \begin{center} -\hasse[attach Dynkin diagram=true]{B}{4} +\hasse[attach Dynkin diagram=true]B4 \end{center} \end{tcblisting} Unfortunately, attaching a Dynkin diagram looks terrible for \(D\) or \(E\) series, so a Dynkin diagram appears below. \begin{tcblisting}{title={Attaching the Dynkin diagram}} The Hasse diagram of \(D_5\) is \begin{center} -\hasse[attach Dynkin diagram=true]{D}{5} +\hasse[attach Dynkin diagram=true]D5 \end{center} \end{tcblisting} \begin{tcblisting}{title={Inside a \TikZ environment}} \begin{tikzpicture} -\hasse{A}{4} +\hasse A4 \draw (4;1) circle (5pt); \draw[red] (2;3) circle (5pt); \end{tikzpicture} \end{tcblisting} In this example, we see that the roots of the Hasse diagram are \TikZ{} nodes labelled \(g;i\) for grade \(g\) (i.e. \(g\) units up the page) and index \(i\) (i.e. \(i^{\text{th}}\) root of grade \(g\) drawn on the page, starting from the left). -\section{Inherited options} -The Lie Hasse package inherits options from the Dynkin diagrams package: the edge lengths are set with -\begin{Verbatim} -\tikzset{/Dynkin diagram/edge lengths=1.2cm} -\end{Verbatim} -and similarly the ordering of roots with -\begin{Verbatim} -\tikzset{/Dynkin diagram/ordering=Bourbaki} -\end{Verbatim} - +\newpage \section{Prettier} The package includes a more elaborate \verb!\hasseDiagrams! command, taking a list of semicolon separated Dynkin diagram identfiers. \begin{tcolorbox}[title={With some global options to make prettier diagrams}] @@ -198,11 +188,20 @@ The package includes a more elaborate \verb!\hasseDiagrams! command, taking a li \endgroup Global options: \begin{verbatim} - edge/.style={ultra thick}, - edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt}, +\tikzset{/Lie Hasse, + edge/.style={ultra thick}, + edge quotes/.style={ + /Dynkin diagram/text style, + auto, + inner sep=2pt}, \end{verbatim} allow to change the edges, and to change the way that labels are printed, and how close labels are to the edges. - +To give even greater control, the user can define a command \verb!\edgeQuote! of one argument, which is applied to the label placed on every edge of the Hasse diagram. +The default is +\begin{verbatim} +\NewDocumentCommand\edgeQuote{m}{\contour{white}{#1}} +\end{verbatim} +which ensures that every label, which is black text by default, has a slight white outline to make it easier to read against a coloured background. \section{Root order} @@ -222,6 +221,10 @@ We can use this like: \hasseDiagrams{[ordering=Carter]E6;[ordering=Dynkin]E6} \hasseDiagrams{[ordering=Kac]E6} \endgroup +The Lie Hasse package inherits the ordering of roots from the Dynkin diagrams package, so we can set it with +\begin{Verbatim} +\tikzset{/Dynkin diagram/ordering=Bourbaki} +\end{Verbatim} \section{Graph height and width} The \emph{height} of a Hasse diagram is the number of grades. @@ -238,7 +241,7 @@ to store the height of \(G_2\) in a counter called \verb!\h!, and \end{Verbatim} to store the width of \(G_2\) at grade \(3\) in a counter called \verb!\w!. -Once you use \verb!\dynkin{G}{2}! or \verb!\hasse{G}{2}! or the other commands, like +Once you use \verb!\dynkin G2! or \verb!\hasse G2! or the other commands, like \begin{Verbatim} \rootSystemHeight[G][2]{\h} \end{Verbatim} @@ -260,7 +263,8 @@ The \verb!show height! option: \hasseDiagrams{G2} \end{Verbatim} \tikzset{/Lie Hasse diagram,show name=true,show height=true} -\hasseDiagrams{G2} +\hasse G2 + The \verb!show widths! option: \begin{Verbatim} \tikzset{/Lie Hasse diagram/show widths=true} @@ -293,11 +297,11 @@ Here is the Dynkin diagram of \(E_8\), indicating the order of the roots in Cart Here is the same Dynkin diagram, except showing, at each simple root, the coefficient of that simple root in the highest root. \begin{Verbatim} \rootSum[E][8]{29}{1}{\rs} -\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8} +\dynkin[expand labels=\rs,ordering=Carter,edge length=.35cm]{E}{8} \end{Verbatim} \rootSum[E][8]{29}{1}{\rs} \begin{center} -\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8} +\dynkin[expand labels=\rs,ordering=Carter,edge length=.35cm]{E}{8} \end{center} The option \verb!for all roots! allows execution of code once on every root. @@ -312,7 +316,7 @@ The option \verb!for all roots! allows execution of code once on every root. root radius=.05cm }, for all roots/.code 2 args={\drawRootAsDynkinSum{#1}{#2}}} -\hasseDiagrams{D5} +\hasse D5 \end{Verbatim} \begingroup \tikzset{/Lie Hasse diagram, @@ -341,23 +345,23 @@ A simple example: \end{Verbatim} \newcommand{\foo}[2]% {% - \node[below,scale=.75] at (#1;#2) {\(#1,#2\)};% + \node[below,scale=.5] at (#1;#2) {\(#1,#2\)};% }% Inside a \TikZ{} or \verb!dynkinDiagram! environment: \begin{Verbatim} \tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0}, /Dynkin diagram/edge length=1.5cm} \begin{tikzpicture} - \hasse{D}{6}% - \forAllPositiveRootsInHasseDiagram{\foo}% + \hasse D6% + \forAllPositiveRoots{\foo}% \end{tikzpicture} \end{Verbatim} \begingroup \tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0}, /Dynkin diagram/edge length=1.5cm} \begin{tikzpicture} - \hasse{D}{6}% - \forAllPositiveRootsInHasseDiagram{\foo}% + \hasse D6% + \forAllPositiveRoots{\foo}% \end{tikzpicture} If you put this into the \verb!for all roots! option, it executes on its own: @@ -378,19 +382,19 @@ Opposite sides of any square have the same edge label, by commutativity of addit Hence we don't need to see every edge perfectly. The three dimensional effect is the default: \begin{Verbatim} -\hasse{D}{4}\hasse{E}{6} +\hasse D4\hasse E6 \end{Verbatim} \begin{center} -\hasse{D}{4}\hasse{E}{6} +\hasse D4\hasse E6 \end{center} We can turn it off: \begin{Verbatim} -\hasse[three D=false]{D}{4} -\hasse[three D=false]{E}{6} +\hasse[three D=false] D4 +\hasse[three D=false] E6 \end{Verbatim} \begin{center} -\hasse[three D=false]{D}{4} -\hasse[three D=false]{E}{6} +\hasse[three D=false] D4 +\hasse[three D=false] E6 \end{center} or globally with \verb!\tikzset{/Lie Hasse diagram/three D=false}!. @@ -430,9 +434,9 @@ You can change these: \section{Label the simple roots} Ringel \cite{Ringel:2013} labels his edges like \begin{Verbatim} -\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7} +\hasse[labels={f,e,d,c,u,b,a}]E7 \end{Verbatim} -\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7} +\hasse[labels={f,e,d,c,u,b,a}]E7 \section{Parabolic subgroups} This package offers nothing over Ringel's original pictures, except that the user can pick some simple roots whose associated edges are drawn differently. @@ -440,47 +444,48 @@ The chosen simple roots are called \emph{compact}, following terminology from th We let the reader explore the notation for parabolic subgroups in the Dynkin diagrams package, and use this to declare various roots compact. \begin{Verbatim} \tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false} -\hasseDiagrams{D{**x*x*x*}} +\hasse D{**x*x*x*} \end{Verbatim} \begingroup \tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false} -\hasseDiagrams{D{**x*x*x*}} +\hasse D{**x*x*x*} \endgroup + Our motivation comes from trying to identify the invariant vector subbundles of the tangent bundle of a rational homogeneous variety \cite{MathOverflow:123801}. Such diagrams are often unreadable if we don't turn off the three dimensional graphics. By default, noncompact root edges are not drawn. \begingroup \tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,show name=false,three D=false} \begin{Verbatim} -\hasseDiagrams{E{*xx*x*}} +\hasse E{*xx*x*} \end{Verbatim} -\hasseDiagrams{E{*xx*x*}} +\hasse E{*xx*x*} \begin{Verbatim} -\hasseDiagrams{A{x*x*}} +\hasse A{x*x*} \end{Verbatim} -\hasseDiagrams{A{x*x*}} +\hasse A{x*x*} \begin{Verbatim} -\hasseDiagrams{[parabolic=113]B8} +\hasse[parabolic=113]B8 \end{Verbatim} -\hasseDiagrams{[parabolic=113]B8} +\hasse[parabolic=113]B8 \begin{Verbatim} -\hasseDiagrams{C{**xx*x**}} +\hasse C{**xx*x**} \end{Verbatim} -\hasseDiagrams{C{**xx*x**}} +\hasse C{**xx*x**} \newpage \begin{Verbatim} -\hasseDiagrams{E{*x*x*x**}} +\hasse E{*x*x*x**} \end{Verbatim} -\hasseDiagrams{E{*x*x*x**}} +\hasse E{*x*x*x**} \newpage \begin{Verbatim} -\hasseDiagrams{F{**xx}} +\hasse F{**xx} \end{Verbatim} -\hasseDiagrams{F{**xx}} +\hasse F{**xx} \begin{Verbatim} -\hasseDiagrams{G{*x}} +\hasse G{*x} \end{Verbatim} -\hasseDiagrams{G{*x}} +\hasse G{*x} \endgroup \section{Examples} diff --git a/graphics/pgf/contrib/pgf-periodictable/README b/graphics/pgf/contrib/pgf-periodictable/README index f33f53fa72..f761cd2439 100644 --- a/graphics/pgf/contrib/pgf-periodictable/README +++ b/graphics/pgf/contrib/pgf-periodictable/README @@ -1,4 +1,4 @@ -This is pgf-PeriodicTable, version 2.1.0a (2024/04/03). +This is pgf-PeriodicTable, version 2.1.3 (2024/08/07). The purpose of this package is to provide the Periodic Table of Elements in a simple way. It relies on pgf/TikZ to offer a full or partial periodic table with @@ -22,6 +22,20 @@ ____________________________________________________________ Major changes: +*** v2.1.3 (07/08/2024) *** +The engine's detection mechanism (pdfLaTeX, LuaLaTeX or XeTeX) has been changed to prevent erroneous detection when the packages 'hyperref' or 'bookmark' are loaded and the document is compiled with LuaLaTeX - in this case, pgf-PeriodicTable disturbs the selection of the document font. +Fixed an issue with the Chemical Symbol color when a non-rgb color is used, such as cyan or yellow , which are defined in the xcolor package using the cmyk model (when loaded without options). + +*** v2.1.2 (01/08/2024) *** +Fixed incorrect Spanish translations of some element names. +Minor code improvements to eliminate runtime warnings («LaTeX Font Warning: Font shape `TU/TeXGyreHeros(0)/l/n' undefined» or «Missing character: There is no m (U+006D) in font nullfont!» ... ) + +*** v2.1.1 (07/07/2024) *** +New keys: +- group numbers (to display group numbers in arabic numerals, Roman numerals or both) +- Roman label color (sets the color of the Roman numerals) +- O Roman (the oxidation numbers are presnted in Roman numerals) + *** v2.1.0a (03/04/2024) *** Translation files have been renamed from 'lang.{undefined,nl}.tex' to 'pgfPT.lang.{undefined,nl}.tex' to match the runtime tree of TeX Live (names must be globally unique for reliable searching). diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_O.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_O.tex new file mode 100644 index 0000000000..06f322d5ee --- /dev/null +++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_O.tex @@ -0,0 +1,33 @@ +\vfill% +\subsubsection{\texorpdfstring{\ding{224} The oxidation states}{The oxidation states}}%\vspace{6pt}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% O color +\pgfPTMoption{4}{O color}{black}{% +Sets the color of the oxidation states. +} +\\ [10pt]\pgfPTMbuildcell(5,3)[(1;1-2;Z),(1;3;radio),(2-3;1.5-3.5;CS),(4;1-3;name),(5;1-3;O)]% +\pgfPTbuildcell(5,3)[(1;1-2;Z),(1;3;radio),(2-3;1.5-3.5;CS),(4;1-3;name),(5;1-3;O)]% +\\ [5pt]\pgfPTMmacrobox{pgfPTstyle}[show title=false]% +\pgfPTstyle[show title=false]% +\\ [-1pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},O color=red]% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},O color=red]}}% +\\ [0pt]\pgfPTendoption% +% O font \tiny\bfseries +\pgfPTMoption{4}{O font}{\string\tiny\string\bfseries}{% +Sets the font of the oxidation states. +} +\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},O font=\string\itshape\string\tiny]% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},O font=\itshape\tiny]}}% +\\ [0pt]\pgfPTendoption% +% O Roman +\newpage\vspace{-34pt}\ % +\pgfPTMoption[\mbox{\pgfPTnewinversion{2.1.1}}]{4}{O Roman}{false}{% +When set to \red{true} the oxidation states are displayed in Roman numerals, otherwise they are displayed in arabic numerals. +} +%\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},O Roman]% +%\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},O Roman]}}% +\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list=spd,O Roman,group numbers=CAS]% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list=spd,O Roman,group numbers=CAS]}}% +\\ [5pt]\pgfPTendoption% +\pgfPTresetcell% +\endinput diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_OtherCont.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_OtherCont.tex index e74b8bf418..c90a4cae94 100644 --- a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_OtherCont.tex +++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_OtherCont.tex @@ -12,7 +12,7 @@ For all the \textit{other contents} available for the cells of the periodic tabl \item\red{\textbf{Ei}}:\hspace{.5ex}first ionization energy \item\red{\textbf{eneg}}:\hspace{.5ex}electronegativity (Pauling) \item\red{\textbf{eaff}}:\hspace{.5ex}electroaffnity -\item\red{\textbf{O}}:\hspace{.5ex}oxidation states +%\item\red{\textbf{O}}:\hspace{.5ex}oxidation states \item\red{\textbf{Tmelt}}:\hspace{.5ex}melting point (Kelvin) \item\red{\textbf{TmeltC}}:\hspace{.5ex}melting point (Celsius degrees) \item\red{\textbf{Tboil}}:\hspace{.5ex}boiling point (Kelvin) diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_density.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_density.tex index 2a33c0371e..511bd765c6 100644 --- a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_density.tex +++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_density.tex @@ -14,28 +14,28 @@ Sets the density value text color.} \pgfPTMoption{4}{d font}{\string\tiny\string\bfseries}{% Sets the density value text font. } -\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false]% -\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},Z list={1,...,36},cell style=myd,show title=false]}}% -\\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false,d font=\string\tiny\string\itshape]% +%\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false]% +%\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},Z list={1,...,36},cell style=myd,show title=false]}}% +\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false,d font=\string\tiny\string\itshape]% \\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},Z list={1,...,36},cell style=myd,show title=false,d font=\tiny\itshape]}}% \\ [0pt]\pgfPTendoption% -% d unit=<g/cm3|g/dm3|both> .default=g/dm3 \vfill% +% d unit=<g/cm3|g/dm3|both> .default=g/dm3 \pgfPTMoption[\pgfPTnewinversion{1.0.1}]{4}{d unit}{both}{% Sets the unit for the density of the elements. The two possible values to this key are \red{g/dm3} ($\mathsf{g/dm^3}$), \red{g/cm3} ($\mathsf{g/cm^3}$) and \red{both} ($\mathsf{g/dm^3}$ for elements in the gaseous state and $\mathsf{g/cm^3}$ for all other elements). }% \\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false]% -\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false]}}% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false]}}% \\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false,d unit=g/cm3]% -\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false,d unit=g/cm3]}}% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false,d unit=g/cm3]}}% \\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false,d unit=g/dm3]% -\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false,d unit=g/dm3]}}% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false,d unit=g/dm3]}}% \\ [0pt]\pgfPTendoption% -\vfill\newpage\ \\ [-32pt]% +\newpage\ \\ [-32pt]% % d precision \pgfPTMoption{4}{d precision}{-1}{% Sets the density precision, \ie, the decimal places displayed in their value, performing the respective rounding, without zero padding the value. -\\ [10pt]\tikz{\node[text width=\linewidth-.6666em,fill=orange!5!white,draw=orange,rounded corners=2pt] {\textbf{\red{NOTE}}:\\ Rounding is performed over density values witch actually have a maximum 5 or 8 decimal places, when the values are in $\mathsf{g/dm^3}$ or in $\mathsf{g/cm^3}$, respectively.. So giving this key a value of -1 (the value of the melting or boiling point as-is) or 5 or 8 has the same effect. +\\ [10pt]\tikz{\node[text width=\linewidth-.6666em,fill=orange!5!white,draw=orange,rounded corners=2pt] {\textbf{\red{NOTE}}:\\ Rounding is performed over density values witch actually have a maximum 5 or 8 decimal places, when the values are in $\mathsf{g/dm^3}$ or in $\mathsf{g/cm^3}$, respectively.. So giving this key a value of -1 (the value of the density as-is) or 5 or 8 has the same effect. \\ \textit{Therefore the values provided to this key should be any integer between -1 and 4 ($\mathsf{g/dm^3}$) or 7 ($\mathsf{g/cm^3}$). Any other integer provided will be processed as -1.}};} } \vfill%\\ [10pt] diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_name.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_name.tex index 78f8178826..0fcc955dd2 100644 --- a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_name.tex +++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_name.tex @@ -11,7 +11,7 @@ Sets the color of the element name. \\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},name color=red]}}% \\ [0pt]\pgfPTendoption% % name font -\pgfPTMoption{4}{name font}{\string\fontseries\{l\}\string\selectfont\string\tiny}{% +\pgfPTMoption{4}{name font}{\string\tiny}{% \string\fontseries\{l\}\string\selectfont (removed @v2.1.2) Sets the font of the element name. } \\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},name font=\string\itshape\string\tiny]% diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_periodgroup.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_periodgroup.tex index 59e27e553e..ff09b0b2e1 100644 --- a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_periodgroup.tex +++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_periodgroup.tex @@ -1,4 +1,3 @@ -%\vfill\vfill% \subsubsection{\texorpdfstring{\ding{224} Periods and Groups}{Periods and Groups}}%\vspace{6pt}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % show period numbers @@ -10,17 +9,38 @@ \\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},show period numbers=false]% \\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},show period numbers=false]}}% \\ [5pt]\pgfPTendoption% -%\vfill% -%\newpage\ \\ [-32pt]% % show group numbers \label{option_show group numbers}% \pgfPTMoption{4}{show group numbers}{true}% {When set to \red{true} the group numbers are shown, otherwise they are not shown.}% \\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36}]% -\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36}]}}% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36}]}}% \\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},show group numbers=false]% -\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},show group numbers=false]}}% -\\ [5pt]\pgfPTendoption% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},show group numbers=false]}}% +\\ [0pt]\pgfPTendoption% +\vfill% +% group numbers +\label{option_group numbers}% +\pgfPTMoption[\pgfPTnewinversion{2.1.1}]{4}{group numbers}{arabic}% +{This key controls how group numbering is displayed: +\vspace{4pt}\begin{itemlist} +\item\red{\textbf{arabic}}: group numbers are shown in arabic numerals as recommended by IUPAC since 1988. +\item\red{\textbf{CAS}}: group numbers are shown in Roman numerals and `A' or `B' suffix. This is an older naming scheme, used by the Chemical Abstract Service (CAS), more popular in the United States. +\item\red{\textbf{IUPAC}}: group numbers are shown in Roman numerals and `A' or `B' suffix. This is an older naming scheme, used by IUPAC before 1988, more popular in Europe. +\item\red{\textbf{CAS*}}: combines the option \red{CAS} and \red{arabic}. Roman numerals and `A' or `B' suffix are above the group and the arabic numerals above them. +\item\red{\textbf{IUPAC*}}: combines the option \red{IUPAC} and \red{arabic}. Roman numerals and `A' or `B' suffix are above the group and the arabic numerals above them. +\end{itemlist} +}% +\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=CAS]% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=CAS]}}% +\newpage\vspace{-34pt}\ %\\ [10pt] +\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=IUPAC]% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=IUPAC]}}% +\\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=CAS*]% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=CAS*]}}% +\\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=IUPAC*]% +\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=IUPAC*]}}% +\\ [0pt]\pgfPTendoption% \vfill% % period label color \label{option_period label color}% @@ -28,19 +48,26 @@ {Sets the period label color.}% \\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},period label color=black]% \\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},period label color=black]}}% -\\ [5pt]\pgfPTendoption% -\vfill% -%\newpage\ \\ [-32pt]% +\\ [0pt]\pgfPTendoption% +\newpage\vspace{-34pt}\ %\vfill% % group label color \label{option_group label color}% \pgfPTMoption{4}{group label color}{blue!50!black}% {Sets the group label color.}% -\vfill% -\newpage%\\ [5pt] -\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group label color=black]% +\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group label color=black]% \\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group label color=black]}}% \\ [0pt]\pgfPTendoption% \vfill% +% Roman label color +\label{option_Roman label color}% +\pgfPTMoption[\pgfPTnewinversion{2.1.1}]{4}{Roman label color}{blue!70!black}% +{Sets the Roman group label color.}% +\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=CAS*,Roman label color=purple]% +\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=CAS*,Roman label color=purple]}}% +\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=CAS*,Roman label color=purple, group label color=teal]% +\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=CAS*,Roman label color=purple,group label color=teal]}}% +\\ [0pt]\pgfPTendoption% +\vfill% % label font \label{option_label font}% \pgfPTMoption{4}{label font}{\string\small\string\bfseries}% @@ -62,7 +89,6 @@ The key \red{show period numbers} is set to \red{true}. \\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},per={gr=false,c=green!50!black}]}}% \\ [0pt]\pgfPTendstyle% \vfill% -%\newpage\ \\ [-32pt]% % gr={per=??,c=??,f=??} -> auto sets 'show groups numbers=true'; 'show period numbers' can be set to 'false' by the user % gr/.default={per=true,c=blue!50!black,f=\small\bfseries} % gr (pseudo style) @@ -72,11 +98,10 @@ The key \red{show period numbers} is set to \red{true}. The key \red{show group numbers} is set to \red{true}. \\ [3pt]\makebox[\linewidth][c]{\use{gr=\{per=<true|false>,c=<color>,f=<font commands>\}}}% }% -\vfill% -\newpage%\\ [5pt] -\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},gr={per=false,c=green!50!black}]% +\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},gr={per=false,c=green!50!black}]% \\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},gr={per=false,c=green!50!black}]}}% \\ [0pt]\pgfPTendstyle% +\newpage\vspace{-34pt}\ %% % per+gr={c=??,pc=??,gc=??,f=??} -> auto sets 'show period numbers=true' & 'show groups numbers=true' % per+gr/.default={pc=red!50!black,gc=blue!50!black,f=\small\bfseries} % per+gr (pseudo style) diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex index 70d6e325ca..f53b6659ce 100644 --- a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex +++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex @@ -1,12 +1,15 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Definitions for pgf-PeriodicTable Manual -% Hugo Gomes @ 04/03/2024 v2.1.0a +% Hugo Gomes @ 07/08/2024 v2.1.3 +% Hugo Gomes @ 01/08/2024 v2.1.2 +% Hugo Gomes @ 07/07/2024 v2.1.1 +% Hugo Gomes @ 03/04/2024 v2.1.0a % Hugo Gomes @ 14/02/2024 v2.1.0 % Hugo Gomes @ 29/05/2023 v2.0.1 % Hugo Gomes @ 20/02/2023 v2.0.0 % Hugo Gomes @ 08/11/2022 v1.0.1 % Hugo Gomes @ 10/10/2022 v1.0.0 -\def\pgfPTversion{2.1.0a}% +\def\pgfPTversion{2.1.3}% \def\pgfPTnewinversion#1{new in v#1}% \def\pgfPTchangedinversion#1{changed in v#1}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -21,31 +24,6 @@ \setcounter{secnumdepth}{1}% \setcounter{tocdepth}{4} % -\makeatletter% -\global\renewcommand\thesection{}% -\renewcommand\thesubsection{\@arabic\c@subsection}% -\renewcommand\section{\@startsection{section}{1}{\z@}% - {-3.5ex \@plus -1ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - {\hskip-1.4395em\normalfont\Large\bfseries}}% -\renewcommand*\l@section[2]{% - \ifnum \c@tocdepth >\z@% - \addpenalty\@secpenalty% - \addvspace{1.0em \@plus\p@}% - \setlength\@tempdima{0em}% - \begingroup% - \parindent \z@ \rightskip \@pnumwidth% - \parfillskip -\@pnumwidth% - \leavevmode \bfseries% - \advance\leftskip\@tempdima% - \hskip -\leftskip% - #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par% - \endgroup% - \fi}% -\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{1.5em}}% -\renewcommand*\l@subsubsection{\@dottedtocline{3}{3.0em}{2.4em}}% -\renewcommand*\l@paragraph{\@dottedtocline{4}{4.25em}{1.35em}}% -\makeatother% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pgfdeclarelayer{back}% \pgfsetlayers{back,main}% diff --git a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty index 3768fc4f24..69f65ee602 100644 --- a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty +++ b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty @@ -1,4 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Hugo Gomes @ 07/08/2024 v2.1.3 +% Hugo Gomes @ 01/08/2024 v2.1.2 +% Hugo Gomes @ 07/07/2024 v2.1.1 % Hugo Gomes @ 03/04/2024 v2.1.0a % Hugo Gomes @ 14/02/2024 v2.1.0 % Hugo Gomes @ 29/05/2023 v2.0.1 @@ -7,7 +10,7 @@ % Hugo Gomes @ 10/10/2022 v1.0.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e}% -\ProvidesPackage{pgf-PeriodicTable}[03/04/2024 pgf-PeriodicTable v2.1.0a]%% +\ProvidesPackage{pgf-PeriodicTable}[07/08/2024 pgf-PeriodicTable v2.1.3]%% \RequirePackage{tikz}% \usetikzlibrary{fadings}% \tikzfading[name=aumentax, left color=transparent!80, right color=transparent!1]% @@ -16,11 +19,19 @@ \tikzfading[name=diminuiy, bottom color=transparent!80, top color=transparent!1]% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % check the engine and load font packages -\ifx\pdfliteral\undefined\relax% XeLaTeX or LuaLaTeX -\RequirePackage{fontspec}[2020/02/03]\edef\pgfPT@fontspec{1}% -\else% pdfLaTeX -\RequirePackage[T1]{fontenc}\edef\pgfPT@fontspec{0}% -\fi% +% changed in v2.1.3 +% pdfLaTeX -------------------------------------------------- +\ifx\pdftexversion\undefined\else% +\RequirePackage[T1]{fontenc}\edef\pgfPT@fontspec{0}\edef\pgfPT@engine{0}% +\fi% ----------------------------------------------------------- +% LuaLaTeX -------------------------------------------------- +\ifx\directlua\undefined\else% +\RequirePackage{fontspec}[2020/02/03]\edef\pgfPT@fontspec{1}\edef\pgfPT@engine{1}% +\fi% ----------------------------------------------------------- +% XeLaTeX --------------------------------------------------- +\ifx\XeTeXrevision\undefined\else% +\RequirePackage{fontspec}[2020/02/03]\edef\pgfPT@fontspec{1}\edef\pgfPT@engine{2}% +\fi% ----------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ifs to user language and list of user translations available \newif\ifpgfPT@user@lang\pgfPT@user@langfalse% @@ -190,10 +201,10 @@ font,IUPAC,capitalize element names=false,show title,show period numbers,show gr show legend,legend acronyms,legend back color,show legend pins,show extra legend,legend radio color,% legend CS color,legend Z color,show blocks=false,show families=false,show MNM line,show periodic variations=false,% show label LaAc,title font,title color,cell width,cell height,cell style,label font,period label color,group label color,% -label LaAc font,Z list,CS solid, CS liquid,CS gas,CS synt,CS font,CS render mode,CS outline color,CS outline width,% +label LaAc font,group numbers,Roman label color,Z list,CS solid, CS liquid,CS gas,CS synt,CS font,CS render mode,CS outline color,CS outline width,% Z backcolor,Z color,Z font,Z align,Z padding,Z use box width=false,name color,name font,name align,Ar color,Ar font,Ar label,Ar precision,% R color,R font,Rcov color,Rcov font,Rion color,Rion font,Ei color,Ei font,eneg color,eneg font,eaff color,eaff font,% -O color,O font,Tmelt color,Tmelt font,TmeltC color,TmeltC font,Tboil color,Tboil font,TboilC color,TboilC font,% +O color,O font,O Roman=false,Tmelt color,Tmelt font,TmeltC color,TmeltC font,Tboil color,Tboil font,TboilC color,TboilC font,% eDist color,eDist font,eDist sep,eConfign color,eConfign font,eConfignl color,eConfignl font,d color,d font,Cp color,Cp font,% kT color,kT font,ls color,ls font,ls align,ls,lsa color,lsa font,lsb color,lsb font,lsc color,lsc font,lsca color,lsca font,% DiscY color,DiscY font,DiscY BC scale,DiscC color,DiscC font,spectra color,spectra font,MNM line color,MNM line width,%DiscC, @@ -661,6 +672,16 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT \fi% % O -> Oxidation States \ifpgfPT@O\relax% + \ifpgfPTORoman% new in v2.1.1 + \ifnum\Z=25\relax% Mn + \node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]% + at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\resizebox{.95\linewidth}{\height}{\pgfPT@data@ORoman}} + \vfil}};% + \else% + \node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]% + at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\pgfPT@data@ORoman}\vfil}};% + \fi% + \else% \ifnum\Z=25\relax% Mn \node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]% at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\resizebox{.95\linewidth}{\height}{\pgfPT@data@O}} @@ -669,6 +690,7 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT \node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]% at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\pgfPT@data@O}\vfil}};% \fi% + \fi% \fi% % Tmelt -> Melting Point (Kelvin) \ifpgfPT@Tmelt\relax% @@ -1188,15 +1210,21 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT % groups --> \ifpgfPTgrlabels% \global\pgfPTis@labeldrawnfalse% +\pgfPT@gr@numbers{\pgfPTgrnum}% new in v2.1.1 \ifpgfPTIUPACMMIX% \foreach \group in {1,2,4,5,...,18} {% \edef\pgfPT@@grlist{\csname pgfPT@cells@G\@Roman\group\endcsname}% \foreach \Zsearch in \pgfPT@@grlist{% \foreach \Z in \pgfPT@@cellslist {% \ifnum\Z=\Zsearch\global\pgfPTis@labeldrawntrue% - {\pgfPTlabfont\pgfPTnumberfont\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else\let\pgfPT@printnum\relax\fi% - \node[above,font=\pgfPTlabfont,text=\pgfPTlabgrcolor] at% - ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};}\breakforeach\fi% + {\pgfPTlabfont\pgfPTnumberfont\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else% + \ifpgfPT@grRoman\let\pgfPT@printnum\pgfPT@gr@Roman\colorlet{pgfPT@grcolor}{\pgfPTRomanlabgrcolor}\else\let\pgfPT@printnum\relax\fi\fi% + \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at% + ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}}; + \ifpgfPT@grarabic\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}% + \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at% + ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift+2ex]\Z) {\group};\fi}% + \breakforeach\fi% }% \ifpgfPTis@labeldrawn\global\pgfPTis@labeldrawnfalse\breakforeach\fi% }% @@ -1205,9 +1233,14 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT \foreach \Zsearch in \pgfPT@cells@GIIILaAc{% \foreach \Z in \pgfPT@@cellslist {% \ifnum\Z=\Zsearch\global\pgfPTis@labeldrawntrue% - {\pgfPTlabfont\pgfPTnumberfont\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else\let\pgfPT@printnum\relax\fi% - \node[above,font=\pgfPTlabfont,text=\pgfPTlabgrcolor] at% - ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{3}};}\breakforeach\fi% + {\pgfPTlabfont\pgfPTnumberfont\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else% + \ifpgfPT@grRoman\let\pgfPT@printnum\pgfPT@gr@Roman\colorlet{pgfPT@grcolor}{\pgfPTRomanlabgrcolor}\else\let\pgfPT@printnum\relax\fi\fi% + \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at% + ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{3}}; + \ifpgfPT@grarabic\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}% + \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at% + ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift+2ex]\Z) {3};\fi}% + \breakforeach\fi% }% \ifpgfPTis@labeldrawn\global\pgfPTis@labeldrawnfalse\breakforeach\fi% }% @@ -1217,9 +1250,14 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT \foreach \Zsearch in \pgfPT@@grlist{% \foreach \Z in \pgfPT@@cellslist {% \ifnum\Z=\Zsearch\global\pgfPTis@labeldrawntrue% - {\pgfPTlabfont\pgfPTnumberfont\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else\let\pgfPT@printnum\relax\fi% - \node[above,font=\pgfPTlabfont,text=\pgfPTlabgrcolor] at% - ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};}\breakforeach\fi% + {\pgfPTlabfont\pgfPTnumberfont\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else% + \ifpgfPT@grRoman\let\pgfPT@printnum\pgfPT@gr@Roman\colorlet{pgfPT@grcolor}{\pgfPTRomanlabgrcolor}\else\let\pgfPT@printnum\relax\fi\fi% + \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at% + ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};% + \ifpgfPT@grarabic\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}% + \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at% + ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift+2ex]\Z) {\group};\fi}% + \breakforeach\fi% }% \ifpgfPTis@labeldrawn\global\pgfPTis@labeldrawnfalse\breakforeach\fi% }% @@ -2979,7 +3017,9 @@ rectangle \fi% \pgfPT@element@count=118 \fi\fi% min=1 & max 118 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\@pgfPT@resetlayers% Restoring pgf layers to those used in the document +% corrected in v2.1.2: \@pgfPT@resetlayers -> \pgfsetlayers{\@pgfPT@resetlayers} +% ... Warning: Missing character: There is no m (U+006D) in font nullfont! ... +\pgfsetlayers{\@pgfPT@resetlayers}% Restoring pgf layers to those used in the document \fontseries{\seriesdefault}\fontshape{\shapedefault}\fontfamily{\familydefault}\selectfont% Restoring the font settings to normal mode in the document }% end tikz }% @@ -3054,15 +3094,14 @@ rectangle % renders text via pdfliteral: ------------- % #1 outline width width #2 txt #3 #4 #5 rgb stroke color #6 #7 #8 rgb fill color ----------- % #9 txt render mode (0 - fill 1 - stroke 2 - fill then stroke --------- -\ifx\pdfliteral\undefined\relax% -\ifx\pdfextension\undefined\relax% XeLaTeX -\def\pgfPT@lt[#1](#2)(#3,#4,#5)(#6,#7,#8)(#9){\special{pdf:literal direct #1 w #3 #4 #5 RG #6 #7 #8 rg #9 Tr}#2\special{pdf:literal direct 0 0 0 rg 1 w 0 Tr}}% -\else% LuaLaTeX -\protected\def\pdfliteral{\pdfextension literal} +% changed in v2.1.3 +\ifcase\pgfPT@engine\relax% pdfLaTeX \def\pgfPT@lt[#1](#2)(#3,#4,#5)(#6,#7,#8)(#9){\pdfliteral direct {#1 w #3 #4 #5 RG #6 #7 #8 rg #9 Tr}{#2}\pdfliteral direct {0 0 0 rg 1 w 0 Tr}}% -\fi% -\else% pdfLaTeX +\or% LuaLaTeX +\protected\def\pdfliteral{\pdfextension literal}% \def\pgfPT@lt[#1](#2)(#3,#4,#5)(#6,#7,#8)(#9){\pdfliteral direct {#1 w #3 #4 #5 RG #6 #7 #8 rg #9 Tr}{#2}\pdfliteral direct {0 0 0 rg 1 w 0 Tr}}% +\or% XeLaTeX +\def\pgfPT@lt[#1](#2)(#3,#4,#5)(#6,#7,#8)(#9){\special{pdf:literal direct #1 w #3 #4 #5 RG #6 #7 #8 rg #9 Tr}#2\special{pdf:literal direct 0 0 0 rg 1 w 0 Tr}}% \fi% % END !! \pgfPT@lt -------------------------------------------------------------------------------- % @@ -3073,9 +3112,10 @@ rectangle % auxiliary macros to set the rgb components of one color --------------------------------------- % with use of \extractcolorspecs from xcolor package --------------------------------------------- % each component is stored in \pgfPT@«r, g or b» & «s or f» ------------------------------------- -\def\pgfPT@extract@rgb@stroke#1{\extractcolorspecs{#1}{\pgfPTcolmodel}{\pgfPTcolinfo}\expandafter\pgfPT@set@rgb@stroke\pgfPTcolinfo\relax}% +% v3.1.3: added conversion of the color to rgb :: \colorlet{#1}[rgb]{#1} +\def\pgfPT@extract@rgb@stroke#1{\colorlet{#1}[rgb]{#1}\extractcolorspecs{#1}{\pgfPTcolmodel}{\pgfPTcolinfo}\expandafter\pgfPT@set@rgb@stroke\pgfPTcolinfo\relax}% \def\pgfPT@set@rgb@stroke#1,#2,#3\relax{\def\pgfPT@rs{#1}\def\pgfPT@gs{#2}\def\pgfPT@bs{#3}}% -\def\pgfPT@extract@rgb@fill#1{\extractcolorspecs{#1}{\pgfPTcolmodel}{\pgfPTcolinfo}\expandafter\pgfPT@set@rgb@fill\pgfPTcolinfo\relax}% +\def\pgfPT@extract@rgb@fill#1{\colorlet{#1}[rgb]{#1}\extractcolorspecs{#1}{\pgfPTcolmodel}{\pgfPTcolinfo}\expandafter\pgfPT@set@rgb@fill\pgfPTcolinfo\relax}% \def\pgfPT@set@rgb@fill#1,#2,#3\relax{\def\pgfPT@rf{#1}\def\pgfPT@gf{#2}\def\pgfPT@bf{#3}}% % END !! \pgfPT@«color macros» ------------------------------------------------------------------ % diff --git a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdf b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdf Binary files differindex 7c0b250d7c..e8c9672259 100644 --- a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdf +++ b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdf diff --git a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex index 659f09fd72..c2b22dd9ad 100644 --- a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex +++ b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex @@ -10,7 +10,7 @@ \date{\today} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document}% -\usefont{T1}{verdana}{m}{n}% +\usefont{T1}{vna}{m}{n} \begin{titlepage} \vspace{\stretch{1}}% \maketitle\thispagestyle{empty}% @@ -114,8 +114,8 @@ This option works with the \textrm{Xe\LaTeX} and \textrm{Lua\LaTeX} engines to t \\ [3pt]\pgfPTMline \subsection{Interaction with other packages} \subsubsection{fontspec} -To correctly set the font in each cell contents the command \bs{fontspec} must be used. For example if you want to use \textit{Arial} for the \red{name font}, it must be set using \red{font name=\bs{fontspec}\lb Arial\rb\bs{selectfont}}.\\ All other font selection commands, \eg, \bs{large}, \mbox{\bs{itshape}}, are used as usual. For example if you want to use \textit{Arial}\hfil\ in\hfil\ \textit{large}\hfil\ size\hfil\ and\hfil\ \textit{bold}\hfil\ weight\hfil\ for\hfil\ the \red{name font}, then you type -\\ \makebox[\linewidth][s]{\red{font name=\bs{large}\bs{bfseries}\bs{fontspec}\lb Arial\rb\bs{selectfont}}\hfil\ or\hfil\ \red{font name=\bs{fontspec}\lb Arial\rb}} +To correctly set the font in each cell contents the command \bs{fontspec} must be used. For example if you want to use \textit{Arial} for the \red{name font}, it must be set using \red{name font=\bs{fontspec}\lb Arial\rb\bs{selectfont}}.\\ All other font selection commands, \eg, \bs{large}, \mbox{\bs{itshape}}, are used as usual. For example if you want to use \textit{Arial}\hfil\ in\hfil\ \textit{large}\hfil\ size\hfil\ and\hfil\ \textit{bold}\hfil\ weight\hfil\ for\hfil\ the \red{name font}, then you type +\\ \makebox[\linewidth][s]{\red{name font=\bs{large}\bs{bfseries}\bs{fontspec}\lb Arial\rb\bs{selectfont}}\hfil\ or\hfil\ \red{name font=\bs{fontspec}\lb Arial\rb}} \\ \bs{large}\bs{bfseries}\bs{selectfont}. \subsubsection{ragged2e} Using \texttt{\large\textcolor{green!40!black}{\textbackslash usepackage}\textcolor{blue!70!black}{[}\textcolor{brown!60!black}{document}% @@ -203,6 +203,8 @@ The following options and styles are used for customizing the contents available \input{manualfiles/pgf-PeriodicTableManual_name.tex}% \label{file:Ar}% \input{manualfiles/pgf-PeriodicTableManual_Ar.tex}% +\label{file:O}% +\input{manualfiles/pgf-PeriodicTableManual_O.tex}% \label{file:density}% \input{manualfiles/pgf-PeriodicTableManual_density.tex}% \label{file:ls}% diff --git a/graphics/pgf/contrib/pgf-periodictable/pgfPT.data.tex b/graphics/pgf/contrib/pgf-periodictable/pgfPT.data.tex index 62d62e0f89..0a87ee38dd 100644 --- a/graphics/pgf/contrib/pgf-periodictable/pgfPT.data.tex +++ b/graphics/pgf/contrib/pgf-periodictable/pgfPT.data.tex @@ -142,122 +142,122 @@ }% % ############################ THE DATA ############################# % -\def\pgfPT@data@i{H/CS,1.008/Ar,[1.0078\noexpand\pgfPT@virgula1.0082]/Arstar,0/radio,53/R,32/Rcov,139.9\noexpand\pgfPT@espaco(1-)/Rion,1312/Ei,2.2/eneg,72.77/eaff,\noexpand\pgfPT@pm1/O,13.99/Tmelt,-259.16/TmeltC,20.271/Tboil,-252.879/TboilC,1/eDist,::1s+1/eConfign,::1s+1/eConfignl,0.08988/d,28.836/Cp,0.1805/kT,hex/ls,470/lsa,470/lsb,340/lsc,0.72/lsca,1766/DiscY,21/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@ii{He/CS,4.0026/Ar,4.0026/Arstar,0/radio,31/R,46/Rcov,---/Rion,2372.3/Ei,---/eneg,0/eaff,---/O,---/Tmelt,---/TmeltC,4.222/Tboil,-268.928/TboilC,2/eDist,::1s+2/eConfign,::1s+2/eConfignl,0.1786/d,20.786/Cp,0.1513/kT,fcc/ls,424.4/lsa,/lsb,/lsc,/lsca,1895/DiscY,19/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@iii{Li/CS,6.94/Ar,[6.938\noexpand\pgfPT@virgula6.997] /Arstar,0/radio,167/R,133/Rcov,76\noexpand\pgfPT@espaco(1+)/Rion,520.2/Ei,0.98/eneg,59.63/eaff,+1/O,453.65/Tmelt,180.5/TmeltC,1603/Tboil,1330/TboilC,2\noexpand\pgfPTeDistsep1/eDist,[He]::2s+1/eConfign,[He]::2s+1/eConfignl,534/d,24.86/Cp,84.8/kT,bcc/ls,350.93/lsa,/lsb,/lsc,/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@iv{Be/CS,9.0122/Ar,9.0122/Arstar,0/radio,112/R,10/Rcov,45\noexpand\pgfPT@espaco(2+)/Rion,899.5/Ei,1.57/eneg,0/eaff,+2/O,1560/Tmelt,1287/TmeltC,2742/Tboil,2469/TboilC,2\noexpand\pgfPTeDistsep2/eDist,[He]::2s+2/eConfign,[He]::2s+2/eConfignl,1850/d,16.443/Cp,200/kT,hcp/ls,228.56/lsa,/lsb,358.32/lsc,1.57/lsca,1798/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@v{B/CS,10.81/Ar,[10.806\noexpand\pgfPT@virgula10.821] /Arstar,0/radio,87/R,85/Rcov,27\noexpand\pgfPT@espaco(3+)/Rion,800.6/Ei,2.04/eneg,26.99/eaff,+3/O,2349/Tmelt,2076/TmeltC,4200/Tboil,3927/TboilC,2\noexpand\pgfPTeDistsep3/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfignl,2340/d,11.087/Cp,27.4/kT,rho/ls,505.66/lsa,/lsb,/lsc,/lsca,1808/DiscY,7/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@vi{C/CS,12.011/Ar,[12.009\noexpand\pgfPT@virgula12.012]/Arstar,0/radio,67/R,75/Rcov,16\noexpand\pgfPT@espaco(4+)/Rion,1086.5/Ei,2.55/eneg,121.78/eaff,0\noexpand\pgfPT@virgula\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,3823/Tmelt,3550/TmeltC,4300/Tboil,4027/TboilC,2\noexpand\pgfPTeDistsep4/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfignl,2267/d,8.517/Cp,140/kT,hex/ls,246.12/lsa,/lsb,670.79/lsc,2.73/lsca,3750\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@vii{N/CS,14.007/Ar,[14.006\noexpand\pgfPT@virgula14.008]/Arstar,0/radio,56/R,71/Rcov,146\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula16\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula13\noexpand\pgfPT@espaco(5+)/Rion,1402.3/Ei,3.04/eneg,0/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,63.15/Tmelt,-210/TmeltC,77.355/Tboil,-195.795/TboilC,2\noexpand\pgfPTeDistsep5/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfignl,1.251/d,29.124/Cp,0.02583/kT,hex/ls,386.1/lsa,386.1/lsb,626.5/lsc,1.62/lsca,1772/DiscY,21/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@viii{O/CS,15.999/Ar,[15.999\noexpand\pgfPT@virgula16.000]/Arstar,0/radio,48/R,63/Rcov,140\noexpand\pgfPT@espaco(2-)/Rion,1313.9/Ei,3.44/eneg,140.98/eaff,--2/O,54.36/Tmelt,-218.79/TmeltC,90.188/Tboil,-182.962/TboilC,2\noexpand\pgfPTeDistsep6/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfignl,1.429/d,29.378/Cp,0.02658/kT,mono/ls,540.3/lsa,342.9/lsb,508.6/lsc,0.94/lsca,1771/DiscY,19/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@ix{F/CS,18.998/Ar,18.998/Arstar,0/radio,42/R,64/Rcov,133\noexpand\pgfPT@espaco(1-)/Rion,1681/Ei,3.98/eneg,328.16/eaff,--1/O,53.48/Tmelt,-219.67/TmeltC,85.04/Tboil,-188.11/TboilC,2\noexpand\pgfPTeDistsep7/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfignl,1.7/d,31.304/Cp,0.0277/kT,mono/ls,550/lsa,328/lsb,728/lsc,1.32/lsca,1886/DiscY,5/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@x{Ne/CS,20.18/Ar,20.18/Arstar,0/radio,38/R,67/Rcov,---/Rion,2080.7/Ei,---/eneg,0/eaff,---/O,24.56/Tmelt,-248.59/TmeltC,27.104/Tboil,-246.046/TboilC,2\noexpand\pgfPTeDistsep8/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfignl,0.9002/d,20.786/Cp,0.0491/kT,fcc/ls,442.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@xi{Na/CS,22.99/Ar,22.99/Arstar,0/radio,190/R,155/Rcov,102\noexpand\pgfPT@espaco(1+)/Rion,495.8/Ei,0.93/eneg,52.87/eaff,+1/O,370.944/Tmelt,97.794/TmeltC,1156.09/Tboil,882.94/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ne]::3s+1/eConfign,[Ne]::3s+1/eConfignl,968/d,28.23/Cp,142/kT,bcc/ls,429.06/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xii{Mg/CS,24.305/Ar,[24.304\noexpand\pgfPT@virgula24.307] /Arstar,0/radio,145/R,139/Rcov,72\noexpand\pgfPT@espaco(2+)/Rion,737.7/Ei,1.31/eneg,0/eaff,+2/O,923/Tmelt,650/TmeltC,1363/Tboil,1090/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ne]::3s+2/eConfign,[Ne]::3s+2/eConfignl,1738/d,24.869/Cp,156/kT,hcp/ls,320.94/lsa,/lsb,521.05/lsc,1.62/lsca,1755/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xiii{Al/CS,26.982/Ar,26.982/Arstar,0/radio,118/R,126/Rcov,53.5\noexpand\pgfPT@espaco(3+)/Rion,577.5/Ei,1.61/eneg,41.76/eaff,+3/O,933.47/Tmelt,660.32/TmeltC,2743/Tboil,2470/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfignl,2700/d,24.2/Cp,237/kT,fcc/ls,404.95/lsa,/lsb,/lsc,/lsca,1824/DiscY,2/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xiv{Si/CS,28.085/Ar,[28.084\noexpand\pgfPT@virgula28.086]/Arstar,0/radio,111/R,116/Rcov,40\noexpand\pgfPT@espaco(4+)/Rion,786.5/Ei,1.9/eneg,134.07/eaff,\noexpand\pgfPT@pm4/O,1687/Tmelt,1414/TmeltC,3538/Tboil,3265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep4/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfignl,2330/d,19.789/Cp,149/kT,dia/ls,543.095/lsa,/lsb,/lsc,/lsca,1823/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xv{P/CS,30.974/Ar,30.974/Arstar,0/radio,98/R,111/Rcov,212\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula38\noexpand\pgfPT@espaco(5+)/Rion,1011.8/Ei,2.19/eneg,72.04/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,317.3/Tmelt,44.15/TmeltC,550/Tboil,277/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep5/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfignl,1823/d,23.824/Cp,0.236/kT,tric/ls,1145/lsa,550.3/lsb,1126.1/lsc,0.98/lsca,1669/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xvi{S/CS,32.06/Ar,[32.059\noexpand\pgfPT@virgula32.076]/Arstar,0/radio,88/R,103/Rcov,184\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula37\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula29\noexpand\pgfPT@espaco(6+)/Rion,999.6/Ei,2.58/eneg,200.41/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,388.36/Tmelt,115.21/TmeltC,717.8/Tboil,444.6/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep6/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfignl,1960/d,22.75/Cp,0.205/kT,fcort/ls,1046.5/lsa,1286.6/lsb,2448.6/lsc,2.34/lsca,500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xvii{Cl/CS,35.45/Ar,[35.446\noexpand\pgfPT@virgula35.457]/Arstar,0/radio,79/R,99/Rcov,181\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula12\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula27\noexpand\pgfPT@espaco(7+)/Rion,1251.2/Ei,3.16/eneg,348.58/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,171.6/Tmelt,-101.5/TmeltC,239.11/Tboil,-34.04/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep7/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfignl,3.2/d,33.949/Cp,0.0089/kT,bcort/ls,622.35/lsa,445.61/lsb,817.85/lsc,1.31/lsca,1774/DiscY,18/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@xviii{Ar/CS,39.95/Ar,[39.792\noexpand\pgfPT@virgula39.963]/Arstar,0/radio,71/R,96/Rcov,---/Rion,1520.6/Ei,---/eneg,0/eaff,0/O,83.81/Tmelt,-189.34/TmeltC,87.302/Tboil,-185.848/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfignl,1.784/d,20.786/Cp,0.01772/kT,fcc/ls,525.6/lsa,/lsb,/lsc,/lsca,1894/DiscY,21/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@xix{K/CS,39.098/Ar,39.098/Arstar,0/radio,243/R,196/Rcov,138\noexpand\pgfPT@espaco(1+)/Rion,418.8/Ei,0.82/eneg,48.38/eaff,+1/O,336.7/Tmelt,63.5/TmeltC,1032/Tboil,759/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ar]::4s+1/eConfign,[Ar]::4s+1/eConfignl,890/d,29.6/Cp,102.5/kT,bcc/ls,532.8/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xx{Ca/CS,40.078/Ar,40.078(4) /Arstar,0/radio,194/R,171/Rcov,100\noexpand\pgfPT@espaco(2+)/Rion,589.8/Ei,1/eneg,2.37/eaff,+2/O,1115/Tmelt,842/TmeltC,1757/Tboil,1484/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ar]::4s+2/eConfign,[Ar]::4s+2/eConfignl,1550/d,25.929/Cp,201/kT,fcc/ls,558.84/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxi{Sc/CS,44.956/Ar,44.956/Arstar,0/radio,184/R,148/Rcov,74.5\noexpand\pgfPT@espaco(3+)/Rion,633.1/Ei,1.36/eneg,18/eaff,+3/O,1814/Tmelt,1541/TmeltC,3109/Tboil,2836/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+1\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+1/eConfignl,2985/d,25.52/Cp,15.8/kT,hcp/ls,330.9/lsa,/lsb,527.33/lsc,1.59/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxii{Ti/CS,47.867/Ar,47.867/Arstar,0/radio,176/R,136/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60.5\noexpand\pgfPT@espaco(4+)/Rion,658.8/Ei,1.54/eneg,7.29/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4/O,1941/Tmelt,1668/TmeltC,3560/Tboil,3287/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+2\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+2/eConfignl,4506/d,25.06/Cp,21.9/kT,hcp/ls,295.03/lsa,/lsb,468.31/lsc,1.59/lsca,1791/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxiii{V/CS,50.942/Ar,50.942/Arstar,0/radio,171/R,134/Rcov,79\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula64\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula54\noexpand\pgfPT@espaco(5+)/Rion,650.9/Ei,1.63/eneg,50.91/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,2183/Tmelt,1910/TmeltC,3680/Tboil,3407/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+3\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+3/eConfignl,6110/d,24.89/Cp,30.7/kT,bcc/ls,302.31/lsa,/lsb,/lsc,/lsca,1830/DiscY,23/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxiv{Cr/CS,51.996/Ar,51.996/Arstar,0/radio,166/R,122/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(6+)/Rion,652.9/Ei,1.66/eneg,65.21/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+6/O,2180/Tmelt,1907/TmeltC,2755/Tboil,2482/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+5/eConfignl,7150/d,23.35/Cp,93.9/kT,bcc/ls,288.46/lsa,/lsb,/lsc,/lsca,1797/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxv{Mn/CS,54.938/Ar,54.938/Arstar,0/radio,161/R,119/Rcov,67\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula25.5\noexpand\pgfPT@espaco(6+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(7+)/Rion,717.3/Ei,1.55/eneg,0/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6\noexpand\pgfPT@virgula+7/O,1519/Tmelt,1246/TmeltC,2334/Tboil,2061/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+5/eConfignl,7210/d,26.32/Cp,7.81/kT,bcc/ls,891.39/lsa,/lsb,/lsc,/lsca,1774/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxvi{Fe/CS,55.845/Ar,55.845(2)/Arstar,0/radio,156/R,116/Rcov,61\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula55\noexpand\pgfPT@espaco(3+)/Rion,762.5/Ei,1.83/eneg,14.79/eaff,+2\noexpand\pgfPT@virgula+3/O,1811/Tmelt,1538/TmeltC,3134/Tboil,2861/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+6\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+6/eConfignl,7860/d,25.1/Cp,80.4/kT,bcc/ls,286.64/lsa,/lsb,/lsc,/lsca,2000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxvii{Co/CS,58.933/Ar,58.933/Arstar,0/radio,152/R,111/Rcov,65\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula54.5\noexpand\pgfPT@espaco(3+)/Rion,760.4/Ei,1.88/eneg,63.9/eaff,+2\noexpand\pgfPT@virgula+3/O,1768/Tmelt,1495/TmeltC,3200/Tboil,2927/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+7\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+7/eConfignl,8900/d,24.81/Cp,100/kT,hcp/ls,250.71/lsa,/lsb,406.95/lsc,1.62/lsca,1735/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxviii{Ni/CS,58.693/Ar,58.693/Arstar,0/radio,149/R,110/Rcov,69\noexpand\pgfPT@espaco(2+)/Rion,737.1/Ei,1.91/eneg,111.65/eaff,+2/O,1728/Tmelt,1455/TmeltC,3003/Tboil,2730/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+8\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+8/eConfignl,8908/d,26.07/Cp,90.9/kT,fcc/ls,352.4/lsa,/lsb,/lsc,/lsca,1751/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxix{Cu/CS,63.546/Ar,63.546(3)/Arstar,0/radio,145/R,112/Rcov,77\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula73\noexpand\pgfPT@espaco(2+)/Rion,745.5/Ei,1.9/eneg,119.24/eaff,+1\noexpand\pgfPT@virgula+2/O,1357.77/Tmelt,1084.62/TmeltC,2835/Tboil,2562/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+10/eConfignl,8960/d,24.44/Cp,401/kT,fcc/ls,361.47/lsa,/lsb,/lsc,/lsca,8000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxx{Zn/CS,65.38/Ar,65.38(2)/Arstar,0/radio,142/R,118/Rcov,74\noexpand\pgfPT@espaco(2+)/Rion,906.4/Ei,1.65/eneg,0/eaff,+2/O,692.68/Tmelt,419.53/TmeltC,1180/Tboil,907/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10/eConfignl,7140/d,25.39/Cp,116/kT,hcp/ls,266.49/lsa,/lsb,494.68/lsc,1.86/lsca,1746/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxxi{Ga/CS,69.723/Ar,69.723/Arstar,0/radio,136/R,124/Rcov,62\noexpand\pgfPT@espaco(3+)/Rion,578.8/Ei,1.81/eneg,29.06/eaff,+3/O,302.9146/Tmelt,29.7646/TmeltC,2673/Tboil,2400/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+1/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+1/eConfignl,5910/d,25.86/Cp,40.6/kT,bcort/ls,452.58/lsa,451.86/lsb,765.7/lsc,1.69/lsca,1875/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxxii{Ge/CS,72.63/Ar,72.630(8)/Arstar,0/radio,125/R,121/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)/Rion,762/Ei,2.01/eneg,118.94/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,1211.4/Tmelt,938.25/TmeltC,3106/Tboil,2833/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+2/eConfignl,5323/d,23.222/Cp,60.2/kT,dia/ls,565.791/lsa,/lsb,/lsc,/lsca,1886/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxxiii{As/CS,74.922/Ar,74.922/Arstar,0/radio,114/R,121/Rcov,58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(5+)/Rion,947/Ei,2.18/eneg,77.65/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,1090/Tmelt,817/TmeltC,887/Tboil,614/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+3/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+3/eConfignl,5727/d,24.64/Cp,50.2/kT,rho/ls,375.98/lsa,375.98/lsb,1054.75/lsc,2.81/lsca,1250/DiscY,12/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxxiv{Se/CS,78.971/Ar,78.971(8)/Arstar,0/radio,103/R,116/Rcov,198\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula50\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula42\noexpand\pgfPT@espaco(6+)/Rion,941/Ei,2.55/eneg,194.96/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,494/Tmelt,221/TmeltC,958/Tboil,685/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+4/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+4/eConfignl,4810/d,25.363/Cp,0.519/kT,mono/ls,905.4/lsa,908.3/lsb,1160.1/lsc,1.28/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxxv{Br/CS,79.904/Ar,[79.901\noexpand\pgfPT@virgula79.907]/Arstar,0/radio,94/R,114/Rcov,196\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula31\noexpand\pgfPT@espaco(5+)/Rion,1139.9/Ei,2.96/eneg,324.54/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5/O,265.8/Tmelt,-7.3/TmeltC,332/Tboil,58.8/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+5/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+5/eConfignl,3102.8/d,75.69/Cp,0.122/kT,bcort/ls,672.65/lsa,464.51/lsb,870.23/lsc,1.29/lsca,1825/DiscY,5/DiscC,1/spectra,liquido/cor}% -\def\pgfPT@data@xxxvi{Kr/CS,83.798/Ar,83.798(2)/Arstar,0/radio,88/R,117/Rcov,---/Rion,1350.8/Ei,3/eneg,0/eaff,0/O,115.78/Tmelt,-157.37/TmeltC,119.735/Tboil,-153.415/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+6/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+6/eConfignl,3.749/d,20.786/Cp,0.00943/kT,fcc/ls,570.6/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@xxxvii{Rb/CS,85.468/Ar,85.468/Arstar,0/radio,265/R,210/Rcov,152\noexpand\pgfPT@espaco(1+)/Rion,403/Ei,0.82/eneg,46.88/eaff,+1/O,312.45/Tmelt,39.3/TmeltC,961/Tboil,688/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Kr]::5s+1/eConfign,[Kr]::5s+1/eConfignl,1532/d,31.06/Cp,58.2/kT,bcc/ls,558.5/lsa,/lsb,/lsc,/lsca,1861/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxxviii{Sr/CS,87.62/Ar,87.62/Arstar,0/radio,219/R,185/Rcov,118\noexpand\pgfPT@espaco(2+)/Rion,549.5/Ei,0.95/eneg,5.02/eaff,+2/O,1050/Tmelt,777/TmeltC,1650/Tboil,1382/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Kr]::5s+2/eConfign,[Kr]::5s+2/eConfignl,2640/d,26.4/Cp,35.4/kT,fcc/ls,608.49/lsa,/lsb,/lsc,/lsca,1787/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xxxix{Y/CS,88.906/Ar,88.906/Arstar,0/radio,212/R,163/Rcov,90\noexpand\pgfPT@espaco(3+)/Rion,600/Ei,1.22/eneg,29.6/eaff,+3/O,1799/Tmelt,1526/TmeltC,3203/Tboil,2930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+1\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+1/eConfignl,4472/d,26.53/Cp,17.2/kT,hcp/ls,364.74/lsa,/lsb,573.06/lsc,1.57/lsca,1794/DiscY,4/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xl{Zr/CS,91.224/Ar,91.224(2)/Arstar,0/radio,206/R,154/Rcov,72\noexpand\pgfPT@espaco(4+)/Rion,640.1/Ei,1.33/eneg,41.81/eaff,+4/O,2128/Tmelt,1855/TmeltC,4650/Tboil,4377/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+2\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+2/eConfignl,6520/d,25.36/Cp,22.6/kT,hcp/ls,323.2/lsa,/lsb,514.7/lsc,1.59/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xli{Nb/CS,92.906/Ar,92.906/Arstar,0/radio,198/R,147/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,652.1/Ei,1.6/eneg,88.52/eaff,+5/O,2750/Tmelt,2477/TmeltC,5017/Tboil,4744/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+4\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+4/eConfignl,8570/d,24.6/Cp,53.7/kT,bcc/ls,330.04/lsa,/lsb,/lsc,/lsca,1801/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xlii{Mo/CS,95.95/Ar,95.95/Arstar,0/radio,190/R,138/Rcov,65\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(6+)/Rion,684.3/Ei,2.16/eneg,72.1/eaff,+4\noexpand\pgfPT@virgula+6/O,2896/Tmelt,2623/TmeltC,4912/Tboil,4639/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+5/eConfignl,10280/d,24.06/Cp,138/kT,bcc/ls,314.69/lsa,/lsb,/lsc,/lsca,1781/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xliii{Tc/CS,[98]/Ar,/Arstar,1/radio,183/R,128/Rcov,64.5\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(7+)/Rion,702/Ei,1.9/eneg,53/eaff,+4\noexpand\pgfPT@virgula+7/O,2430/Tmelt,2157/TmeltC,4538/Tboil,4265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+5/eConfignl,11000/d,24.27/Cp,50.6/kT,hcp/ls,273.5/lsa,/lsb,438.8/lsc,1.6/lsca,1937/DiscY,11/DiscC,1/spectra,sintetico/cor}% -\def\pgfPT@data@xliv{Ru/CS,101.07/Ar,101.07/Arstar,0/radio,178/R,125/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62\noexpand\pgfPT@espaco(4+)/Rion,710.2/Ei,2.2/eneg,100.96/eaff,+3\noexpand\pgfPT@virgula+4/O,2607/Tmelt,2334/TmeltC,4423/Tboil,4150/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+7\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+7/eConfignl,12450/d,24.06/Cp,117/kT,hcp/ls,270.55/lsa,/lsb,428.16/lsc,1.58/lsca,1844/DiscY,15/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xlv{Rh/CS,102.91/Ar,102.91/Arstar,0/radio,173/R,125/Rcov,66.5\noexpand\pgfPT@espaco(3+)/Rion,719.7/Ei,2.28/eneg,110.27/eaff,+3/O,2237/Tmelt,1964/TmeltC,3968/Tboil,3695/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+8\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+8/eConfignl,12410/d,24.98/Cp,150/kT,fcc/ls,380.34/lsa,/lsb,/lsc,/lsca,1804/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xlvi{Pd/CS,106.42/Ar,106.42/Arstar,0/radio,169/R,120/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(4+)/Rion,804.4/Ei,2.2/eneg,54.24/eaff,0\noexpand\pgfPT@virgula+2\noexpand\pgfPT@virgula+4/O,1828.05/Tmelt,1554.9/TmeltC,3236/Tboil,2963/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18/eDist,[Kr]::4d+10/eConfign,[Kr]::4d+10/eConfignl,12023/d,25.98/Cp,71.8/kT,fcc/ls,389.02/lsa,/lsb,/lsc,/lsca,1802/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xlvii{Ag/CS,107.87/Ar,107.87/Arstar,0/radio,165/R,128/Rcov,115\noexpand\pgfPT@espaco(1+)/Rion,731/Ei,1.93/eneg,125.86/eaff,+1/O,1234.93/Tmelt,961.78/TmeltC,2483/Tboil,2210/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+10/eConfignl,10490/d,25.35/Cp,429/kT,fcc/ls,408.57/lsa,/lsb,/lsc,/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xlviii{Cd/CS,112.41/Ar,112.41/Arstar,0/radio,161/R,136/Rcov,95\noexpand\pgfPT@espaco(2+)/Rion,867.8/Ei,1.69/eneg,0/eaff,+2/O,594.22/Tmelt,321.07/TmeltC,1040/Tboil,767/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10/eConfignl,8650/d,26.02/Cp,96.6/kT,hcp/ls,297.88/lsa,/lsb,561.67/lsc,1.89/lsca,1817/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xlix{In/CS,114.82/Ar,114.82/Arstar,0/radio,156/R,142/Rcov,80\noexpand\pgfPT@espaco(3+)/Rion,558.3/Ei,1.78/eneg,37.04/eaff,+3/O,429.75/Tmelt,156.6/TmeltC,2345/Tboil,2072/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+1/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+1/eConfignl,7310/d,26.74/Cp,81.8/kT,tetr/ls,325.17/lsa,/lsb,494.59/lsc,1.52/lsca,1863/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@l{Sn/CS,118.71/Ar,118.71/Arstar,0/radio,145/R,140/Rcov,118\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula69\noexpand\pgfPT@espaco(4+)/Rion,708.6/Ei,1.96/eneg,107.3/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,505.08/Tmelt,231.93/TmeltC,2875/Tboil,2602/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+2/eConfignl,7265/d,25.77/Cp,66.8/kT,ctetr/ls,583.1/lsa,/lsb,318.1/lsc,0.55/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@li{Sb/CS,121.76/Ar,121.76/Arstar,0/radio,133/R,140/Rcov,76\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(5+)/Rion,834/Ei,2.05/eneg,101.06/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,903.78/Tmelt,630.63/TmeltC,1908/Tboil,1635/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+3/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+3/eConfignl,6697/d,25.23/Cp,24.4/kT,rho/ls,430.7/lsa,/lsb,1127.3/lsc,2.62/lsca,815/DiscY,12/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lii{Te/CS,127.6/Ar,127.60(3)/Arstar,0/radio,123/R,136/Rcov,221\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula97\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(6+)/Rion,869.3/Ei,2.1/eneg,190.16/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,722.66/Tmelt,449.51/TmeltC,1261/Tboil,988/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+4/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+4/eConfignl,6240/d,25.73/Cp,3/kT,rho/ls,445.72/lsa,/lsb,592.9/lsc,1.33/lsca,1782/DiscY,14/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@liii{I/CS,126.9/Ar,126.9/Arstar,0/radio,115/R,133/Rcov,220\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula95\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(7+)/Rion,1008.4/Ei,2.66/eneg,295.15/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,386.85/Tmelt,113.7/TmeltC,457.4/Tboil,184.3/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+5/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+5/eConfignl,4933/d,54.44/Cp,0.449/kT,bcort/ls,726.97/lsa,479.03/lsb,979.42/lsc,1.35/lsca,1811/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@liv{Xe/CS,131.29/Ar,131.29/Arstar,0/radio,108/R,131/Rcov,---/Rion,1170.4/Ei,2.6/eneg,0/eaff,0/O,161.4/Tmelt,-111.75/TmeltC,165.051/Tboil,-108.099/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+6/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+6/eConfignl,5.894/d,20.786/Cp,0.00565/kT,fcc/ls,620.23/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@lv{Cs/CS,132.91/Ar,132.91/Arstar,0/radio,298/R,232/Rcov,167\noexpand\pgfPT@espaco(1+)/Rion,375.7/Ei,0.79/eneg,45.51/eaff,+1/O,301.7/Tmelt,28.5/TmeltC,944/Tboil,671/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Xe]::6s+1/eConfign,[Xe]::6s+1/eConfignl,1930/d,32.21/Cp,35.9/kT,bcc/ls,614.1/lsa,/lsb,/lsc,/lsca,1860/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lvi{Ba/CS,137.33/Ar,137.33/Arstar,0/radio,253/R,196/Rcov,135\noexpand\pgfPT@espaco(2+)/Rion,502.9/Ei,0.89/eneg,13.95/eaff,+2/O,1000/Tmelt,727/TmeltC,1910/Tboil,1637/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::6s+2/eConfign,[Xe]::6s+2/eConfignl,3510/d,28.07/Cp,18.4/kT,bcc/ls,501.9/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lvii{La/CS,138.91/Ar,138.91/Arstar,0/radio,226/R,180/Rcov,103.2\noexpand\pgfPT@espaco(3+)/Rion,538.1/Ei,1.1/eneg,53.8/eaff,+3/O,1193/Tmelt,920/TmeltC,3737/Tboil,3464/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula5d+1/eConfignl,6162/d,27.11/Cp,13.4/kT,hex/ls,377.2/lsa,/lsb,1214.4/lsc,3.22/lsca,1838/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lviii{Ce/CS,140.12/Ar,140.12/Arstar,0/radio,210/R,163/Rcov,101\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)/Rion,534.4/Ei,1.12/eneg,55/eaff,+3\noexpand\pgfPT@virgula+4/O,1068/Tmelt,795/TmeltC,3716/Tboil,3443/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep19\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+1\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+1\noexpand\pgfPT@virgula5d+1/eConfignl,6770/d,26.94/Cp,11.3/kT,hex/ls,362/lsa,/lsb,599/lsc,1.65/lsca,1803/DiscY,9/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lix{Pr/CS,140.91/Ar,140.91/Arstar,0/radio,247/R,17/Rcov,99\noexpand\pgfPT@espaco(3+)/Rion,527/Ei,1.13/eneg,10.54/eaff,+3/O,1208/Tmelt,935/TmeltC,3403/Tboil,3130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+3/eConfignl,6770/d,27.2/Cp,12.5/kT,hex/ls,367.21/lsa,/lsb,1183.26/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lx{Nd/CS,144.24/Ar,144.24/Arstar,0/radio,206/R,17/Rcov,98.3\noexpand\pgfPT@espaco(3+)/Rion,533.1/Ei,1.14/eneg,9.41/eaff,+3/O,1297/Tmelt,1024/TmeltC,3347/Tboil,3074/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+4/eConfignl,7010/d,27.45/Cp,16.5/kT,hex/ls,365.82/lsa,/lsb,1179.66/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxi{Pm/CS,[145]/Ar,[145]/Arstar,1/radio,205/R,173/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,540/Ei,1.13/eneg,12.45/eaff,+3/O,1315/Tmelt,1042/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep23\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+5/eConfignl,7260/d,---/Cp,17.9/kT,hex/ls,365/lsa,/lsb,1165/lsc,3.19/lsca,1945/DiscY,22/DiscC,1/spectra,sintetico/cor}% -\def\pgfPT@data@lxii{Sm/CS,150.36/Ar,150.36(2)/Arstar,0/radio,238/R,172/Rcov,95.8\noexpand\pgfPT@espaco(3+)/Rion,544.5/Ei,1.17/eneg,15.63/eaff,+3/O,1345/Tmelt,1072/TmeltC,2173/Tboil,1900/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+6/eConfignl,7520/d,29.54/Cp,13.3/kT,rho/ls,362.1/lsa,/lsb,2625/lsc,7.25/lsca,1879/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxiii{Eu/CS,151.96/Ar,151.96/Arstar,0/radio,231/R,168/Rcov,117\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula94.7\noexpand\pgfPT@espaco(3+)/Rion,547.1/Ei,1.2/eneg,11.2/eaff,+2\noexpand\pgfPT@virgula+3/O,1099/Tmelt,826/TmeltC,1802/Tboil,1529/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7/eConfignl,5244/d,27.66/Cp,13.9/kT,bcc/ls,458.1/lsa,/lsb,/lsc,/lsca,1901/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxiv{Gd/CS,157.25/Ar,157.25(3)/Arstar,0/radio,233/R,169/Rcov,93.5\noexpand\pgfPT@espaco(3+)/Rion,593.4/Ei,1.2/eneg,13.22/eaff,+3/O,1585/Tmelt,1312/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7\noexpand\pgfPT@virgula5d+1/eConfignl,7900/d,37.03/Cp,10.6/kT,hcp/ls,363.6/lsa,/lsb,578.26/lsc,1.59/lsca,1880/DiscY,20/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxv{Tb/CS,158.93/Ar,158.93/Arstar,0/radio,225/R,168/Rcov,92.3\noexpand\pgfPT@espaco(3+)/Rion,565.8/Ei,1.2/eneg,12.67/eaff,+3/O,1629/Tmelt,1356/TmeltC,3396/Tboil,3123/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+9\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+9/eConfignl,8230/d,28.91/Cp,11.1/kT,hcp/ls,360.1/lsa,/lsb,569.36/lsc,1.58/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxvi{Dy/CS,162.5/Ar,162.5/Arstar,0/radio,228/R,167/Rcov,91.2\noexpand\pgfPT@espaco(3+)/Rion,573/Ei,1.22/eneg,33.96/eaff,+3/O,1680/Tmelt,1407/TmeltC,2840/Tboil,2567/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+10/eConfignl,8540/d,27.7/Cp,10.7/kT,hcp/ls,359.3/lsa,/lsb,565.37/lsc,1.57/lsca,1886/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxvii{Ho/CS,164.93/Ar,164.93/Arstar,0/radio,226/R,166/Rcov,90.1\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.23/eneg,32.61/eaff,+3/O,1734/Tmelt,1461/TmeltC,2873/Tboil,2600/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+11\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+11/eConfignl,8790/d,27.15/Cp,16.2/kT,hcp/ls,357.73/lsa,/lsb,561.58/lsc,1.57/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxviii{Er/CS,167.26/Ar,167.26/Arstar,0/radio,226/R,165/Rcov,89\noexpand\pgfPT@espaco(3+)/Rion,589.3/Ei,1.24/eneg,30.1/eaff,+3/O,1802/Tmelt,1529/TmeltC,3141/Tboil,2868/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+12\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+12/eConfignl,9066/d,28.12/Cp,14.5/kT,hcp/ls,355.88/lsa,/lsb,558.74/lsc,1.57/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxix{Tm/CS,168.93/Ar,168.93/Arstar,0/radio,222/R,164/Rcov,88\noexpand\pgfPT@espaco(3+)/Rion,596.7/Ei,1.25/eneg,99/eaff,+3/O,1818/Tmelt,1545/TmeltC,2223/Tboil,1950/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+13\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+13/eConfignl,9320/d,27.03/Cp,16.9/kT,hcp/ls,353.75/lsa,/lsb,555.46/lsc,1.57/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxx{Yb/CS,173.05/Ar,173.05/Arstar,0/radio,222/R,170/Rcov,86.8\noexpand\pgfPT@espaco(3+)/Rion,603.4/Ei,1.1/eneg,0/eaff,+3/O,1097/Tmelt,824/TmeltC,1703/Tboil,1430/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14/eConfignl,6900/d,26.74/Cp,38.5/kT,fcc/ls,548.47/lsa,/lsb,/lsc,/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxi{Lu/CS,174.97/Ar,174.97/Arstar,0/radio,217/R,162/Rcov,86.1\noexpand\pgfPT@espaco(3+)/Rion,523.5/Ei,1.27/eneg,23.04/eaff,+3/O,1925/Tmelt,1652/TmeltC,3675/Tboil,3402/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+1/eConfignl,9841/d,26.86/Cp,16.4/kT,hcp/ls,350.31/lsa,/lsb,555.09/lsc,1.58/lsca,1906/DiscY,6/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxii{Hf/CS,178.49/Ar,178.49(2)/Arstar,0/radio,208/R,152/Rcov,71\noexpand\pgfPT@espaco(4+)/Rion,658.5/Ei,1.3/eneg,17.18/eaff,+4/O,2506/Tmelt,2233/TmeltC,4876/Tboil,4603/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+2\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+2/eConfignl,13310/d,25.73/Cp,23/kT,hcp/ls,319.64/lsa,/lsb,505.11/lsc,1.58/lsca,1922/DiscY,2/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxiii{Ta/CS,180.95/Ar,180.95/Arstar,0/radio,200/R,146/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,761/Ei,1.5/eneg,31/eaff,+5/O,3290/Tmelt,3017/TmeltC,5731/Tboil,5458/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+3/eConfignl,16690/d,25.36/Cp,57.5/kT,bcc/ls,330.26/lsa,/lsb,/lsc,/lsca,1802/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxiv{W/CS,183.84/Ar,183.84/Arstar,0/radio,193/R,137/Rcov,66\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(6+)/Rion,770/Ei,2.36/eneg,78.76/eaff,+4\noexpand\pgfPT@virgula+6/O,3695/Tmelt,3422/TmeltC,6203/Tboil,5930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+4/eConfignl,19250/d,24.27/Cp,173/kT,bcc/ls,316.52/lsa,/lsb,/lsc,/lsca,1783/DiscY,17/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxv{Re/CS,186.21/Ar,186.21/Arstar,0/radio,188/R,131/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,760/Ei,1.9/eneg,5.83/eaff,+4/O,3459/Tmelt,3186/TmeltC,5869/Tboil,5596/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+5/eConfignl,21020/d,25.48/Cp,48/kT,hcp/ls,276.1/lsa,/lsb,445.8/lsc,1.62/lsca,1925/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxvi{Os/CS,190.23/Ar,190.23(3)/Arstar,0/radio,185/R,129/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,840/Ei,2.2/eneg,103.99/eaff,+4/O,3306/Tmelt,3033/TmeltC,5285/Tboil,5012/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+6/eConfignl,22590/d,24.7/Cp,87.6/kT,hcp/ls,273.43/lsa,/lsb,431.73/lsc,1.58/lsca,1803/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxvii{Ir/CS,192.22/Ar,192.22/Arstar,0/radio,180/R,122/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,880/Ei,2.2/eneg,150.91/eaff,+3\noexpand\pgfPT@virgula+4/O,2719/Tmelt,2446/TmeltC,4403/Tboil,4130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+7/eConfignl,22560/d,25.1/Cp,147/kT,fcc/ls,383.92/lsa,/lsb,/lsc,/lsca,1803/DiscY,7/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxviii{Pt/CS,195.08/Ar,195.08/Arstar,0/radio,177/R,123/Rcov,80\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,870/Ei,2.28/eneg,205.04/eaff,+2\noexpand\pgfPT@virgula+4/O,2041.4/Tmelt,1768.3/TmeltC,4098/Tboil,3825/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+9\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+9/eConfignl,21450/d,25.86/Cp,71.6/kT,fcc/ls,392.35/lsa,/lsb,/lsc,/lsca,1735/DiscY,13/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxix{Au/CS,196.97/Ar,196.97/Arstar,0/radio,174/R,124/Rcov,137\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula85\noexpand\pgfPT@espaco(3+)/Rion,890.1/Ei,2.54/eneg,222.75/eaff,+1\noexpand\pgfPT@virgula+3/O,1337.33/Tmelt,1064.18/TmeltC,3243/Tboil,2970/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,19300/d,25.418/Cp,318/kT,fcc/ls,407.83/lsa,/lsb,/lsc,/lsca,4000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,100/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxx{Hg/CS,200.59/Ar,200.59/Arstar,0/radio,171/R,133/Rcov,119\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula102\noexpand\pgfPT@espaco(2+)/Rion,1007.1/Ei,2/eneg,0/eaff,+1\noexpand\pgfPT@virgula+2/O,234.32/Tmelt,-38.83/TmeltC,629.88/Tboil,356.73/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,13534/d,27.983/Cp,8.3/kT,rho/ls,300.9/lsa,/lsb,/lsc,/lsca,1500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,liquido/cor}% -\def\pgfPT@data@lxxxi{Tl/CS,204.38/Ar,[204.38\noexpand\pgfPT@virgula204.39]/Arstar,0/radio,156/R,144/Rcov,150\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula88.5\noexpand\pgfPT@espaco(3+)/Rion,589.4/Ei,1.62/eneg,30.88/eaff,+1\noexpand\pgfPT@virgula+3/O,577/Tmelt,304/TmeltC,1746/Tboil,1473/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+1/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+1/eConfignl,11850/d,26.32/Cp,46.1/kT,hcp/ls,345.66/lsa,/lsb,552.48/lsc,1.6/lsca,1861/DiscY,21/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxxii{Pb/CS,207.2/Ar,207.2/Arstar,0/radio,154/R,144/Rcov,119\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula77.5\noexpand\pgfPT@espaco(4+)/Rion,715.6/Ei,1.87/eneg,34.42/eaff,+2\noexpand\pgfPT@virgula+4/O,600.61/Tmelt,327.46/TmeltC,2022/Tboil,1749/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+2/eConfignl,11340/d,26.65/Cp,35.3/kT,fcc/ls,495.02/lsa,/lsb,/lsc,/lsca,3800\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxxiii{Bi/CS,208.98/Ar,208.98/Arstar,0/radio,143/R,151/Rcov,103\noexpand\pgfPT@espaco(3+)/Rion,703/Ei,2.02/eneg,90.92/eaff,+3/O,544.7/Tmelt,271.5/TmeltC,1837/Tboil,1564/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+3/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+3/eConfignl,9780/d,25.52/Cp,7.97/kT,mono/ls,667.4/lsa,611.7/lsb,330.4/lsc,0.5/lsca,1400/DiscY,12/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxxiv{Po/CS,[209]/Ar,/Arstar,1/radio,135/R,145/Rcov,223\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula94\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(6+)/Rion,812.1/Ei,2/eneg,136/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+6/O,527/Tmelt,254/TmeltC,1235/Tboil,962/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+4/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+4/eConfignl,9196/d,26.4/Cp,0/kT,sc/ls,335.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxxv{At/CS,[210]/Ar,/Arstar,1/radio,127/R,147/Rcov,62\noexpand\pgfPT@espaco(7+)/Rion,899.003/Ei,2.2/eneg,233.09/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,575/Tmelt,302/TmeltC,503/Tboil,230/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+5/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+5/eConfignl,---/d,---/Cp,1.7/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1940/DiscY,22/DiscC,0/spectra,solido/cor}% -\def\pgfPT@data@lxxxvi{Rn/CS,[222]/Ar,/Arstar,1/radio,120/R,142/Rcov,---/Rion,1037/Ei,2.2/eneg,0/eaff,+2\noexpand\pgfPT@virgula+6/O,202/Tmelt,-71/TmeltC,211.5/Tboil,-61.7/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+6/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+6/eConfignl,9.73/d,20.786/Cp,0.00361/kT,fcc/ls,---/lsa,/lsb,/lsc,/lsca,1899/DiscY,8/DiscC,1/spectra,gasoso/cor}% -\def\pgfPT@data@lxxxvii{Fr/CS,[223]/Ar,/Arstar,1/radio,---/R,---/Rcov,180\noexpand\pgfPT@espaco(1+)/Rion,380/Ei,0.7/eneg,46.89/eaff,+1/O,281/Tmelt,8/TmeltC,890/Tboil,620/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Rn]::7s+1/eConfign,[Rn]::7s+1/eConfignl,---/d,31.8/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1939/DiscY,5/DiscC,0/spectra,solido/cor}% -\def\pgfPT@data@lxxxviii{Ra/CS,[226]/Ar,/Arstar,1/radio,---/R,201/Rcov,148\noexpand\pgfPT@espaco(2+)/Rion,509.3/Ei,0.9/eneg,9.65/eaff,+2/O,973/Tmelt,700/TmeltC,2010/Tboil,1737/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::7s+2/eConfign,[Rn]::7s+2/eConfignl,5500/d,---/Cp,18.6/kT,bcc/ls,514.8/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@lxxxix{Ac/CS,[227]/Ar,/Arstar,1/radio,---/R,186/Rcov,106.5\noexpand\pgfPT@espaco(3+)/Rion,499/Ei,1.1/eneg,33.77/eaff,+3/O,1323/Tmelt,1050/TmeltC,3471/Tboil,3198/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+1/eConfignl,10000/d,27.2/Cp,12/kT,fcc/ls,587/lsa,/lsb,/lsc,/lsca,1902/DiscY,5/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xc{Th/CS,232.04/Ar,232.04/Arstar,1/radio,---/R,175/Rcov,/Rion,587/Ei,1.3/eneg,58.63/eaff,+4/O,2115/Tmelt,1842/TmeltC,5061/Tboil,4788/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+2/eConfignl,11700/d,26.23/Cp,54/kT,fcc/ls,508.42/lsa,/lsb,/lsc,/lsca,1829/DiscY,18/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xci{Pa/CS,231.04/Ar,231.04/Arstar,1/radio,---/R,169/Rcov,90\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula78\noexpand\pgfPT@espaco(5+)/Rion,568/Ei,1.5/eneg,53.03/eaff,+5/O,1841/Tmelt,1568/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep20\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+2\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+2\noexpand\pgfPT@virgula6d+1/eConfignl,15370/d,---/Cp,47/kT,tetr/ls,392.5/lsa,/lsb,323.8/lsc,0.82/lsca,1913/DiscY,10/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xcii{U/CS,238.03/Ar,238.03/Arstar,1/radio,---/R,170/Rcov,76\noexpand\pgfPT@espaco(5+)/Rion,597.6/Ei,1.38/eneg,30.39/eaff,+4\noexpand\pgfPT@virgula+6/O,1405.3/Tmelt,1132.2/TmeltC,4404/Tboil,4131/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+3\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+3\noexpand\pgfPT@virgula6d+1/eConfignl,19100/d,27.665/Cp,27.5/kT,bcort/ls,285.37/lsa,586.95/lsb,495.48/lsc,1.74/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}% -\def\pgfPT@data@xciii{Np/CS,[237]/Ar,/Arstar,1/radio,---/R,171/Rcov,110\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(7+)/Rion,604.5/Ei,1.36/eneg,45.85/eaff,+5/O,917/Tmelt,644/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+4\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+4\noexpand\pgfPT@virgula6d+1/eConfignl,20200/d,29.46/Cp,6.3/kT,bcort/ls,666.3/lsa,472.3/lsb,488.7/lsc,0.73/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}% -\def\pgfPT@data@xciv{Pu/CS,[244]/Ar,/Arstar,1/radio,---/R,172/Rcov,100\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula74\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(6+)/Rion,584.7/Ei,1.28/eneg,0/eaff,+4/O,912.5/Tmelt,639.4/TmeltC,3501/Tboil,3228/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+6/eConfignl,19816/d,35.5/Cp,6.74/kT,mono/ls,618.3/lsa,482.2/lsb,1096.3/lsc,1.77/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}% -\def\pgfPT@data@xcv{Am/CS,[243]/Ar,/Arstar,1/radio,---/R,166/Rcov,126\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula97.5\noexpand\pgfPT@espaco(3+)/Rion,578/Ei,1.13/eneg,9.93/eaff,+3/O,1449/Tmelt,1176/TmeltC,2880/Tboil,2607/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7/eConfignl,12000/d,62.7/Cp,10/kT,hex/ls,346.81/lsa,/lsb,1124.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}% -\def\pgfPT@data@xcvi{Cm/CS,[247]/Ar,/Arstar,1/radio,---/R,166/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.28/eneg,27.17/eaff,+3/O,1613/Tmelt,1340/TmeltC,3383/Tboil,3110/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7\noexpand\pgfPT@virgula6d+1/eConfignl,13510/d,---/Cp,---/kT,hex/ls,349.6/lsa,/lsb,1133.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}% -\def\pgfPT@data@xcvii{Bk/CS,[247]/Ar,/Arstar,1/radio,---/R,---/Rcov,96\noexpand\pgfPT@espaco(3+)/Rion,601/Ei,1.3/eneg,0/eaff,+3/O,1323/Tmelt,1050/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+9/eConfignl,14780/d,---/Cp,10/kT,hex/ls,341.6/lsa,/lsb,1106.9/lsc,3.24/lsca,1949/DiscY,22/DiscC,1/spectra,sintetico/cor}% -\def\pgfPT@data@xcviii{Cf/CS,[251]/Ar,/Arstar,1/radio,---/R,---/Rcov,95\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula82.1\noexpand\pgfPT@espaco(4+)/Rion,608/Ei,1.3/eneg,0/eaff,+3/O,1173/Tmelt,900/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+10/eConfignl,15100/d,---/Cp,---/kT,hex/ls,338/lsa,/lsb,1102.5/lsc,3.26/lsca,1950/DiscY,22/DiscC,1/spectra,sintetico/cor}% -\def\pgfPT@data@xcix{Es/CS,[252]/Ar,/Arstar,1/radio,---/R,---/Rcov,83.5\noexpand\pgfPT@espaco(3+)/Rion,619/Ei,1.3/eneg,0/eaff,+3/O,1133/Tmelt,860/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+11\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+11/eConfignl,8840/d,---/Cp,---/kT,fcc/ls,575/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,1/spectra,sintetico/cor}% -\def\pgfPT@data@c{Fm/CS,[257]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,627/Ei,1.3/eneg,33.96/eaff,+3/O,1800/Tmelt,1527/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+12\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+12/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@ci{Md/CS,[258]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,635/Ei,1.3/eneg,93.91/eaff,+3/O,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+13\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+13/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1955/DiscY,22/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cii{No/CS,[259]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,642/Ei,1.3/eneg,0/eaff,+2/O,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1966/DiscY,24/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@ciii{Lr/CS,[266]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,470/Ei,1.3/eneg,0/eaff,+3/O,1900/Tmelt,1627/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1961/DiscY,22/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@civ{Rf/CS,[267]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-580/Ei,---/eneg,---/eaff,+4/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1969/DiscY,16/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cv{Db/CS,[268]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-665/Ei,---/eneg,---/eaff,+5/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+3\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1970/DiscY,16/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cvi{Sg/CS,[269]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-757/Ei,---/eneg,---/eaff,+6/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+4\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1974/DiscY,22/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cvii{Bh/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-740/Ei,---/eneg,---/eaff,+7/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+5\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1981/DiscY,8/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cviii{Hs/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-730/Ei,---/eneg,---/eaff,+8/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1984/DiscY,8/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cix{Mt/CS,[278]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-800/Ei,---/eneg,---/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+7/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1982/DiscY,8/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cx{Ds/CS,[281]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-960/Ei,---/eneg,---/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+8\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+8/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cxi{Rg/CS,[282]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1020/Ei,---/eneg,151/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+9/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cxii{Cn/CS,[285]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1155/Ei,---/eneg,---/eaff,+2/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1996/DiscY,8/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cxiii{Nh/CS,[286]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-707.2/Ei,---/eneg,66.6/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2004/DiscY,16/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cxiv{Fl/CS,[289]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-832.2/Ei,---/eneg,---/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1998/DiscY,15/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cxv{Mc/CS,[290]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-538.3/Ei,---/eneg,35.3/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+3/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2003/DiscY,16/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cxvi{Lv/CS,[293]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-663.9/Ei,---/eneg,74.9/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+4/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2000/DiscY,15/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cxvii{Ts/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-736.9/Ei,---/eneg,165.9/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+5/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2009/DiscY,100/DiscC,0/spectra,sintetico/cor}% -\def\pgfPT@data@cxviii{Og/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-860.1/Ei,---/eneg,5.4/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+6/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2002/DiscY,16/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@i{H/CS,1.008/Ar,[1.0078\noexpand\pgfPT@virgula1.0082]/Arstar,0/radio,53/R,32/Rcov,139.9\noexpand\pgfPT@espaco(1-)/Rion,1312/Ei,2.2/eneg,72.77/eaff,\noexpand\pgfPT@pm1/O,\noexpand\pgfPT@pm I/ORoman,13.99/Tmelt,-259.16/TmeltC,20.271/Tboil,-252.879/TboilC,1/eDist,::1s+1/eConfign,::1s+1/eConfignl,0.08988/d,28.836/Cp,0.1805/kT,hex/ls,470/lsa,470/lsb,340/lsc,0.72/lsca,1766/DiscY,21/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@ii{He/CS,4.0026/Ar,4.0026/Arstar,0/radio,31/R,46/Rcov,---/Rion,2372.3/Ei,---/eneg,0/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,4.222/Tboil,-268.928/TboilC,2/eDist,::1s+2/eConfign,::1s+2/eConfignl,0.1786/d,20.786/Cp,0.1513/kT,fcc/ls,424.4/lsa,/lsb,/lsc,/lsca,1895/DiscY,19/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@iii{Li/CS,6.94/Ar,[6.938\noexpand\pgfPT@virgula6.997] /Arstar,0/radio,167/R,133/Rcov,76\noexpand\pgfPT@espaco(1+)/Rion,520.2/Ei,0.98/eneg,59.63/eaff,+1/O,+I/ORoman,453.65/Tmelt,180.5/TmeltC,1603/Tboil,1330/TboilC,2\noexpand\pgfPTeDistsep1/eDist,[He]::2s+1/eConfign,[He]::2s+1/eConfignl,534/d,24.86/Cp,84.8/kT,bcc/ls,350.93/lsa,/lsb,/lsc,/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@iv{Be/CS,9.0122/Ar,9.0122/Arstar,0/radio,112/R,10/Rcov,45\noexpand\pgfPT@espaco(2+)/Rion,899.5/Ei,1.57/eneg,0/eaff,+2/O,+II/ORoman,1560/Tmelt,1287/TmeltC,2742/Tboil,2469/TboilC,2\noexpand\pgfPTeDistsep2/eDist,[He]::2s+2/eConfign,[He]::2s+2/eConfignl,1850/d,16.443/Cp,200/kT,hcp/ls,228.56/lsa,/lsb,358.32/lsc,1.57/lsca,1798/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@v{B/CS,10.81/Ar,[10.806\noexpand\pgfPT@virgula10.821] /Arstar,0/radio,87/R,85/Rcov,27\noexpand\pgfPT@espaco(3+)/Rion,800.6/Ei,2.04/eneg,26.99/eaff,+3/O,+III/ORoman,2349/Tmelt,2076/TmeltC,4200/Tboil,3927/TboilC,2\noexpand\pgfPTeDistsep3/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfignl,2340/d,11.087/Cp,27.4/kT,rho/ls,505.66/lsa,/lsb,/lsc,/lsca,1808/DiscY,7/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@vi{C/CS,12.011/Ar,[12.009\noexpand\pgfPT@virgula12.012]/Arstar,0/radio,67/R,75/Rcov,16\noexpand\pgfPT@espaco(4+)/Rion,1086.5/Ei,2.55/eneg,121.78/eaff,0\noexpand\pgfPT@virgula\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,0\noexpand\pgfPT@virgula\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula\noexpand\pgfPT@pm IV/ORoman,3823/Tmelt,3550/TmeltC,4300/Tboil,4027/TboilC,2\noexpand\pgfPTeDistsep4/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfignl,2267/d,8.517/Cp,140/kT,hex/ls,246.12/lsa,/lsb,670.79/lsc,2.73/lsca,3750\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@vii{N/CS,14.007/Ar,[14.006\noexpand\pgfPT@virgula14.008]/Arstar,0/radio,56/R,71/Rcov,146\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula16\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula13\noexpand\pgfPT@espaco(5+)/Rion,1402.3/Ei,3.04/eneg,0/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+V/ORoman,63.15/Tmelt,-210/TmeltC,77.355/Tboil,-195.795/TboilC,2\noexpand\pgfPTeDistsep5/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfignl,1.251/d,29.124/Cp,0.02583/kT,hex/ls,386.1/lsa,386.1/lsb,626.5/lsc,1.62/lsca,1772/DiscY,21/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@viii{O/CS,15.999/Ar,[15.999\noexpand\pgfPT@virgula16.000]/Arstar,0/radio,48/R,63/Rcov,140\noexpand\pgfPT@espaco(2-)/Rion,1313.9/Ei,3.44/eneg,140.98/eaff,--2/O,--II/ORoman,54.36/Tmelt,-218.79/TmeltC,90.188/Tboil,-182.962/TboilC,2\noexpand\pgfPTeDistsep6/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfignl,1.429/d,29.378/Cp,0.02658/kT,mono/ls,540.3/lsa,342.9/lsb,508.6/lsc,0.94/lsca,1771/DiscY,19/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@ix{F/CS,18.998/Ar,18.998/Arstar,0/radio,42/R,64/Rcov,133\noexpand\pgfPT@espaco(1-)/Rion,1681/Ei,3.98/eneg,328.16/eaff,--1/O,--I/ORoman,53.48/Tmelt,-219.67/TmeltC,85.04/Tboil,-188.11/TboilC,2\noexpand\pgfPTeDistsep7/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfignl,1.7/d,31.304/Cp,0.0277/kT,mono/ls,550/lsa,328/lsb,728/lsc,1.32/lsca,1886/DiscY,5/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@x{Ne/CS,20.18/Ar,20.18/Arstar,0/radio,38/R,67/Rcov,---/Rion,2080.7/Ei,---/eneg,0/eaff,---/O,---/ORoman,24.56/Tmelt,-248.59/TmeltC,27.104/Tboil,-246.046/TboilC,2\noexpand\pgfPTeDistsep8/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfignl,0.9002/d,20.786/Cp,0.0491/kT,fcc/ls,442.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@xi{Na/CS,22.99/Ar,22.99/Arstar,0/radio,190/R,155/Rcov,102\noexpand\pgfPT@espaco(1+)/Rion,495.8/Ei,0.93/eneg,52.87/eaff,+1/O,+I/ORoman,370.944/Tmelt,97.794/TmeltC,1156.09/Tboil,882.94/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ne]::3s+1/eConfign,[Ne]::3s+1/eConfignl,968/d,28.23/Cp,142/kT,bcc/ls,429.06/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xii{Mg/CS,24.305/Ar,[24.304\noexpand\pgfPT@virgula24.307] /Arstar,0/radio,145/R,139/Rcov,72\noexpand\pgfPT@espaco(2+)/Rion,737.7/Ei,1.31/eneg,0/eaff,+2/O,+II/ORoman,923/Tmelt,650/TmeltC,1363/Tboil,1090/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ne]::3s+2/eConfign,[Ne]::3s+2/eConfignl,1738/d,24.869/Cp,156/kT,hcp/ls,320.94/lsa,/lsb,521.05/lsc,1.62/lsca,1755/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xiii{Al/CS,26.982/Ar,26.982/Arstar,0/radio,118/R,126/Rcov,53.5\noexpand\pgfPT@espaco(3+)/Rion,577.5/Ei,1.61/eneg,41.76/eaff,+3/O,+III/ORoman,933.47/Tmelt,660.32/TmeltC,2743/Tboil,2470/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfignl,2700/d,24.2/Cp,237/kT,fcc/ls,404.95/lsa,/lsb,/lsc,/lsca,1824/DiscY,2/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xiv{Si/CS,28.085/Ar,[28.084\noexpand\pgfPT@virgula28.086]/Arstar,0/radio,111/R,116/Rcov,40\noexpand\pgfPT@espaco(4+)/Rion,786.5/Ei,1.9/eneg,134.07/eaff,\noexpand\pgfPT@pm4/O,\noexpand\pgfPT@pm IV/ORoman,1687/Tmelt,1414/TmeltC,3538/Tboil,3265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep4/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfignl,2330/d,19.789/Cp,149/kT,dia/ls,543.095/lsa,/lsb,/lsc,/lsca,1823/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xv{P/CS,30.974/Ar,30.974/Arstar,0/radio,98/R,111/Rcov,212\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula38\noexpand\pgfPT@espaco(5+)/Rion,1011.8/Ei,2.19/eneg,72.04/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+V/ORoman,317.3/Tmelt,44.15/TmeltC,550/Tboil,277/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep5/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfignl,1823/d,23.824/Cp,0.236/kT,tric/ls,1145/lsa,550.3/lsb,1126.1/lsc,0.98/lsca,1669/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xvi{S/CS,32.06/Ar,[32.059\noexpand\pgfPT@virgula32.076]/Arstar,0/radio,88/R,103/Rcov,184\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula37\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula29\noexpand\pgfPT@espaco(6+)/Rion,999.6/Ei,2.58/eneg,200.41/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI/ORoman,388.36/Tmelt,115.21/TmeltC,717.8/Tboil,444.6/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep6/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfignl,1960/d,22.75/Cp,0.205/kT,fcort/ls,1046.5/lsa,1286.6/lsb,2448.6/lsc,2.34/lsca,500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xvii{Cl/CS,35.45/Ar,[35.446\noexpand\pgfPT@virgula35.457]/Arstar,0/radio,79/R,99/Rcov,181\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula12\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula27\noexpand\pgfPT@espaco(7+)/Rion,1251.2/Ei,3.16/eneg,348.58/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VII/ORoman,171.6/Tmelt,-101.5/TmeltC,239.11/Tboil,-34.04/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep7/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfignl,3.2/d,33.949/Cp,0.0089/kT,bcort/ls,622.35/lsa,445.61/lsb,817.85/lsc,1.31/lsca,1774/DiscY,18/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@xviii{Ar/CS,39.95/Ar,[39.792\noexpand\pgfPT@virgula39.963]/Arstar,0/radio,71/R,96/Rcov,---/Rion,1520.6/Ei,---/eneg,0/eaff,0/O,0/ORoman,83.81/Tmelt,-189.34/TmeltC,87.302/Tboil,-185.848/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfignl,1.784/d,20.786/Cp,0.01772/kT,fcc/ls,525.6/lsa,/lsb,/lsc,/lsca,1894/DiscY,21/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@xix{K/CS,39.098/Ar,39.098/Arstar,0/radio,243/R,196/Rcov,138\noexpand\pgfPT@espaco(1+)/Rion,418.8/Ei,0.82/eneg,48.38/eaff,+1/O,+I/ORoman,336.7/Tmelt,63.5/TmeltC,1032/Tboil,759/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ar]::4s+1/eConfign,[Ar]::4s+1/eConfignl,890/d,29.6/Cp,102.5/kT,bcc/ls,532.8/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xx{Ca/CS,40.078/Ar,40.078(4) /Arstar,0/radio,194/R,171/Rcov,100\noexpand\pgfPT@espaco(2+)/Rion,589.8/Ei,1/eneg,2.37/eaff,+2/O,+II/ORoman,1115/Tmelt,842/TmeltC,1757/Tboil,1484/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ar]::4s+2/eConfign,[Ar]::4s+2/eConfignl,1550/d,25.929/Cp,201/kT,fcc/ls,558.84/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxi{Sc/CS,44.956/Ar,44.956/Arstar,0/radio,184/R,148/Rcov,74.5\noexpand\pgfPT@espaco(3+)/Rion,633.1/Ei,1.36/eneg,18/eaff,+3/O,+III/ORoman,1814/Tmelt,1541/TmeltC,3109/Tboil,2836/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+1\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+1/eConfignl,2985/d,25.52/Cp,15.8/kT,hcp/ls,330.9/lsa,/lsb,527.33/lsc,1.59/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxii{Ti/CS,47.867/Ar,47.867/Arstar,0/radio,176/R,136/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60.5\noexpand\pgfPT@espaco(4+)/Rion,658.8/Ei,1.54/eneg,7.29/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+IV/ORoman,1941/Tmelt,1668/TmeltC,3560/Tboil,3287/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+2\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+2/eConfignl,4506/d,25.06/Cp,21.9/kT,hcp/ls,295.03/lsa,/lsb,468.31/lsc,1.59/lsca,1791/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxiii{V/CS,50.942/Ar,50.942/Arstar,0/radio,171/R,134/Rcov,79\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula64\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula54\noexpand\pgfPT@espaco(5+)/Rion,650.9/Ei,1.63/eneg,50.91/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+V/ORoman,2183/Tmelt,1910/TmeltC,3680/Tboil,3407/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+3\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+3/eConfignl,6110/d,24.89/Cp,30.7/kT,bcc/ls,302.31/lsa,/lsb,/lsc,/lsca,1830/DiscY,23/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxiv{Cr/CS,51.996/Ar,51.996/Arstar,0/radio,166/R,122/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(6+)/Rion,652.9/Ei,1.66/eneg,65.21/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+6/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+VI/ORoman,2180/Tmelt,1907/TmeltC,2755/Tboil,2482/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+5/eConfignl,7150/d,23.35/Cp,93.9/kT,bcc/ls,288.46/lsa,/lsb,/lsc,/lsca,1797/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxv{Mn/CS,54.938/Ar,54.938/Arstar,0/radio,161/R,119/Rcov,67\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula25.5\noexpand\pgfPT@espaco(6+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(7+)/Rion,717.3/Ei,1.55/eneg,0/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6\noexpand\pgfPT@virgula+7/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI\noexpand\pgfPT@virgula+VII/ORoman,1519/Tmelt,1246/TmeltC,2334/Tboil,2061/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+5/eConfignl,7210/d,26.32/Cp,7.81/kT,bcc/ls,891.39/lsa,/lsb,/lsc,/lsca,1774/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxvi{Fe/CS,55.845/Ar,55.845(2)/Arstar,0/radio,156/R,116/Rcov,61\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula55\noexpand\pgfPT@espaco(3+)/Rion,762.5/Ei,1.83/eneg,14.79/eaff,+2\noexpand\pgfPT@virgula+3/O,+II\noexpand\pgfPT@virgula+III/ORoman,1811/Tmelt,1538/TmeltC,3134/Tboil,2861/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+6\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+6/eConfignl,7860/d,25.1/Cp,80.4/kT,bcc/ls,286.64/lsa,/lsb,/lsc,/lsca,2000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxvii{Co/CS,58.933/Ar,58.933/Arstar,0/radio,152/R,111/Rcov,65\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula54.5\noexpand\pgfPT@espaco(3+)/Rion,760.4/Ei,1.88/eneg,63.9/eaff,+2\noexpand\pgfPT@virgula+3/O,+II\noexpand\pgfPT@virgula+III/ORoman,1768/Tmelt,1495/TmeltC,3200/Tboil,2927/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+7\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+7/eConfignl,8900/d,24.81/Cp,100/kT,hcp/ls,250.71/lsa,/lsb,406.95/lsc,1.62/lsca,1735/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxviii{Ni/CS,58.693/Ar,58.693/Arstar,0/radio,149/R,110/Rcov,69\noexpand\pgfPT@espaco(2+)/Rion,737.1/Ei,1.91/eneg,111.65/eaff,+2/O,+II/ORoman,1728/Tmelt,1455/TmeltC,3003/Tboil,2730/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+8\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+8/eConfignl,8908/d,26.07/Cp,90.9/kT,fcc/ls,352.4/lsa,/lsb,/lsc,/lsca,1751/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxix{Cu/CS,63.546/Ar,63.546(3)/Arstar,0/radio,145/R,112/Rcov,77\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula73\noexpand\pgfPT@espaco(2+)/Rion,745.5/Ei,1.9/eneg,119.24/eaff,+1\noexpand\pgfPT@virgula+2/O,+I\noexpand\pgfPT@virgula+II/ORoman,1357.77/Tmelt,1084.62/TmeltC,2835/Tboil,2562/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+10/eConfignl,8960/d,24.44/Cp,401/kT,fcc/ls,361.47/lsa,/lsb,/lsc,/lsca,8000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxx{Zn/CS,65.38/Ar,65.38(2)/Arstar,0/radio,142/R,118/Rcov,74\noexpand\pgfPT@espaco(2+)/Rion,906.4/Ei,1.65/eneg,0/eaff,+2/O,+II/ORoman,692.68/Tmelt,419.53/TmeltC,1180/Tboil,907/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10/eConfignl,7140/d,25.39/Cp,116/kT,hcp/ls,266.49/lsa,/lsb,494.68/lsc,1.86/lsca,1746/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxxi{Ga/CS,69.723/Ar,69.723/Arstar,0/radio,136/R,124/Rcov,62\noexpand\pgfPT@espaco(3+)/Rion,578.8/Ei,1.81/eneg,29.06/eaff,+3/O,+III/ORoman,302.9146/Tmelt,29.7646/TmeltC,2673/Tboil,2400/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+1/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+1/eConfignl,5910/d,25.86/Cp,40.6/kT,bcort/ls,452.58/lsa,451.86/lsb,765.7/lsc,1.69/lsca,1875/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxxii{Ge/CS,72.63/Ar,72.630(8)/Arstar,0/radio,125/R,121/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)/Rion,762/Ei,2.01/eneg,118.94/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,+II\noexpand\pgfPT@virgula\noexpand\pgfPT@pm IV/ORoman,1211.4/Tmelt,938.25/TmeltC,3106/Tboil,2833/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+2/eConfignl,5323/d,23.222/Cp,60.2/kT,dia/ls,565.791/lsa,/lsb,/lsc,/lsca,1886/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxxiii{As/CS,74.922/Ar,74.922/Arstar,0/radio,114/R,121/Rcov,58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(5+)/Rion,947/Ei,2.18/eneg,77.65/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+V/ORoman,1090/Tmelt,817/TmeltC,887/Tboil,614/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+3/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+3/eConfignl,5727/d,24.64/Cp,50.2/kT,rho/ls,375.98/lsa,375.98/lsb,1054.75/lsc,2.81/lsca,1250/DiscY,12/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxxiv{Se/CS,78.971/Ar,78.971(8)/Arstar,0/radio,103/R,116/Rcov,198\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula50\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula42\noexpand\pgfPT@espaco(6+)/Rion,941/Ei,2.55/eneg,194.96/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI/ORoman,494/Tmelt,221/TmeltC,958/Tboil,685/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+4/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+4/eConfignl,4810/d,25.363/Cp,0.519/kT,mono/ls,905.4/lsa,908.3/lsb,1160.1/lsc,1.28/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxxv{Br/CS,79.904/Ar,[79.901\noexpand\pgfPT@virgula79.907]/Arstar,0/radio,94/R,114/Rcov,196\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula31\noexpand\pgfPT@espaco(5+)/Rion,1139.9/Ei,2.96/eneg,324.54/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V/ORoman,265.8/Tmelt,-7.3/TmeltC,332/Tboil,58.8/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+5/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+5/eConfignl,3102.8/d,75.69/Cp,0.122/kT,bcort/ls,672.65/lsa,464.51/lsb,870.23/lsc,1.29/lsca,1825/DiscY,5/DiscC,1/spectra,liquido/cor}% +\def\pgfPT@data@xxxvi{Kr/CS,83.798/Ar,83.798(2)/Arstar,0/radio,88/R,117/Rcov,---/Rion,1350.8/Ei,3/eneg,0/eaff,0/O,0/ORoman,115.78/Tmelt,-157.37/TmeltC,119.735/Tboil,-153.415/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+6/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+6/eConfignl,3.749/d,20.786/Cp,0.00943/kT,fcc/ls,570.6/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@xxxvii{Rb/CS,85.468/Ar,85.468/Arstar,0/radio,265/R,210/Rcov,152\noexpand\pgfPT@espaco(1+)/Rion,403/Ei,0.82/eneg,46.88/eaff,+1/O,+I/ORoman,312.45/Tmelt,39.3/TmeltC,961/Tboil,688/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Kr]::5s+1/eConfign,[Kr]::5s+1/eConfignl,1532/d,31.06/Cp,58.2/kT,bcc/ls,558.5/lsa,/lsb,/lsc,/lsca,1861/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxxviii{Sr/CS,87.62/Ar,87.62/Arstar,0/radio,219/R,185/Rcov,118\noexpand\pgfPT@espaco(2+)/Rion,549.5/Ei,0.95/eneg,5.02/eaff,+2/O,+II/ORoman,1050/Tmelt,777/TmeltC,1650/Tboil,1382/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Kr]::5s+2/eConfign,[Kr]::5s+2/eConfignl,2640/d,26.4/Cp,35.4/kT,fcc/ls,608.49/lsa,/lsb,/lsc,/lsca,1787/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xxxix{Y/CS,88.906/Ar,88.906/Arstar,0/radio,212/R,163/Rcov,90\noexpand\pgfPT@espaco(3+)/Rion,600/Ei,1.22/eneg,29.6/eaff,+3/O,+III/ORoman,1799/Tmelt,1526/TmeltC,3203/Tboil,2930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+1\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+1/eConfignl,4472/d,26.53/Cp,17.2/kT,hcp/ls,364.74/lsa,/lsb,573.06/lsc,1.57/lsca,1794/DiscY,4/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xl{Zr/CS,91.224/Ar,91.224(2)/Arstar,0/radio,206/R,154/Rcov,72\noexpand\pgfPT@espaco(4+)/Rion,640.1/Ei,1.33/eneg,41.81/eaff,+4/O,+IV/ORoman,2128/Tmelt,1855/TmeltC,4650/Tboil,4377/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+2\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+2/eConfignl,6520/d,25.36/Cp,22.6/kT,hcp/ls,323.2/lsa,/lsb,514.7/lsc,1.59/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xli{Nb/CS,92.906/Ar,92.906/Arstar,0/radio,198/R,147/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,652.1/Ei,1.6/eneg,88.52/eaff,+5/O,+V/ORoman,2750/Tmelt,2477/TmeltC,5017/Tboil,4744/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+4\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+4/eConfignl,8570/d,24.6/Cp,53.7/kT,bcc/ls,330.04/lsa,/lsb,/lsc,/lsca,1801/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xlii{Mo/CS,95.95/Ar,95.95/Arstar,0/radio,190/R,138/Rcov,65\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(6+)/Rion,684.3/Ei,2.16/eneg,72.1/eaff,+4\noexpand\pgfPT@virgula+6/O,+IV\noexpand\pgfPT@virgula+VI/ORoman,2896/Tmelt,2623/TmeltC,4912/Tboil,4639/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+5/eConfignl,10280/d,24.06/Cp,138/kT,bcc/ls,314.69/lsa,/lsb,/lsc,/lsca,1781/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xliii{Tc/CS,[98]/Ar,/Arstar,1/radio,183/R,128/Rcov,64.5\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(7+)/Rion,702/Ei,1.9/eneg,53/eaff,+4\noexpand\pgfPT@virgula+7/O,+IV\noexpand\pgfPT@virgula+VII/ORoman,2430/Tmelt,2157/TmeltC,4538/Tboil,4265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+5/eConfignl,11000/d,24.27/Cp,50.6/kT,hcp/ls,273.5/lsa,/lsb,438.8/lsc,1.6/lsca,1937/DiscY,11/DiscC,1/spectra,sintetico/cor}% +\def\pgfPT@data@xliv{Ru/CS,101.07/Ar,101.07/Arstar,0/radio,178/R,125/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62\noexpand\pgfPT@espaco(4+)/Rion,710.2/Ei,2.2/eneg,100.96/eaff,+3\noexpand\pgfPT@virgula+4/O,+III\noexpand\pgfPT@virgula+IV/ORoman,2607/Tmelt,2334/TmeltC,4423/Tboil,4150/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+7\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+7/eConfignl,12450/d,24.06/Cp,117/kT,hcp/ls,270.55/lsa,/lsb,428.16/lsc,1.58/lsca,1844/DiscY,15/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xlv{Rh/CS,102.91/Ar,102.91/Arstar,0/radio,173/R,125/Rcov,66.5\noexpand\pgfPT@espaco(3+)/Rion,719.7/Ei,2.28/eneg,110.27/eaff,+3/O,+III/ORoman,2237/Tmelt,1964/TmeltC,3968/Tboil,3695/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+8\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+8/eConfignl,12410/d,24.98/Cp,150/kT,fcc/ls,380.34/lsa,/lsb,/lsc,/lsca,1804/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xlvi{Pd/CS,106.42/Ar,106.42/Arstar,0/radio,169/R,120/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(4+)/Rion,804.4/Ei,2.2/eneg,54.24/eaff,0\noexpand\pgfPT@virgula+2\noexpand\pgfPT@virgula+4/O,0\noexpand\pgfPT@virgula+II\noexpand\pgfPT@virgula+IV/ORoman,1828.05/Tmelt,1554.9/TmeltC,3236/Tboil,2963/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18/eDist,[Kr]::4d+10/eConfign,[Kr]::4d+10/eConfignl,12023/d,25.98/Cp,71.8/kT,fcc/ls,389.02/lsa,/lsb,/lsc,/lsca,1802/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xlvii{Ag/CS,107.87/Ar,107.87/Arstar,0/radio,165/R,128/Rcov,115\noexpand\pgfPT@espaco(1+)/Rion,731/Ei,1.93/eneg,125.86/eaff,+1/O,+I/ORoman,1234.93/Tmelt,961.78/TmeltC,2483/Tboil,2210/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+10/eConfignl,10490/d,25.35/Cp,429/kT,fcc/ls,408.57/lsa,/lsb,/lsc,/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xlviii{Cd/CS,112.41/Ar,112.41/Arstar,0/radio,161/R,136/Rcov,95\noexpand\pgfPT@espaco(2+)/Rion,867.8/Ei,1.69/eneg,0/eaff,+2/O,+II/ORoman,594.22/Tmelt,321.07/TmeltC,1040/Tboil,767/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10/eConfignl,8650/d,26.02/Cp,96.6/kT,hcp/ls,297.88/lsa,/lsb,561.67/lsc,1.89/lsca,1817/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xlix{In/CS,114.82/Ar,114.82/Arstar,0/radio,156/R,142/Rcov,80\noexpand\pgfPT@espaco(3+)/Rion,558.3/Ei,1.78/eneg,37.04/eaff,+3/O,+III/ORoman,429.75/Tmelt,156.6/TmeltC,2345/Tboil,2072/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+1/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+1/eConfignl,7310/d,26.74/Cp,81.8/kT,tetr/ls,325.17/lsa,/lsb,494.59/lsc,1.52/lsca,1863/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@l{Sn/CS,118.71/Ar,118.71/Arstar,0/radio,145/R,140/Rcov,118\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula69\noexpand\pgfPT@espaco(4+)/Rion,708.6/Ei,1.96/eneg,107.3/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,+II\noexpand\pgfPT@virgula\noexpand\pgfPT@pm IV/ORoman,505.08/Tmelt,231.93/TmeltC,2875/Tboil,2602/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+2/eConfignl,7265/d,25.77/Cp,66.8/kT,ctetr/ls,583.1/lsa,/lsb,318.1/lsc,0.55/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@li{Sb/CS,121.76/Ar,121.76/Arstar,0/radio,133/R,140/Rcov,76\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(5+)/Rion,834/Ei,2.05/eneg,101.06/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+V/ORoman,903.78/Tmelt,630.63/TmeltC,1908/Tboil,1635/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+3/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+3/eConfignl,6697/d,25.23/Cp,24.4/kT,rho/ls,430.7/lsa,/lsb,1127.3/lsc,2.62/lsca,815/DiscY,12/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lii{Te/CS,127.6/Ar,127.60(3)/Arstar,0/radio,123/R,136/Rcov,221\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula97\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(6+)/Rion,869.3/Ei,2.1/eneg,190.16/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI/ORoman,722.66/Tmelt,449.51/TmeltC,1261/Tboil,988/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+4/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+4/eConfignl,6240/d,25.73/Cp,3/kT,rho/ls,445.72/lsa,/lsb,592.9/lsc,1.33/lsca,1782/DiscY,14/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@liii{I/CS,126.9/Ar,126.9/Arstar,0/radio,115/R,133/Rcov,220\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula95\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(7+)/Rion,1008.4/Ei,2.66/eneg,295.15/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VII/ORoman,386.85/Tmelt,113.7/TmeltC,457.4/Tboil,184.3/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+5/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+5/eConfignl,4933/d,54.44/Cp,0.449/kT,bcort/ls,726.97/lsa,479.03/lsb,979.42/lsc,1.35/lsca,1811/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@liv{Xe/CS,131.29/Ar,131.29/Arstar,0/radio,108/R,131/Rcov,---/Rion,1170.4/Ei,2.6/eneg,0/eaff,0/O,0/ORoman,161.4/Tmelt,-111.75/TmeltC,165.051/Tboil,-108.099/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+6/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+6/eConfignl,5.894/d,20.786/Cp,0.00565/kT,fcc/ls,620.23/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@lv{Cs/CS,132.91/Ar,132.91/Arstar,0/radio,298/R,232/Rcov,167\noexpand\pgfPT@espaco(1+)/Rion,375.7/Ei,0.79/eneg,45.51/eaff,+1/O,+I/ORoman,301.7/Tmelt,28.5/TmeltC,944/Tboil,671/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Xe]::6s+1/eConfign,[Xe]::6s+1/eConfignl,1930/d,32.21/Cp,35.9/kT,bcc/ls,614.1/lsa,/lsb,/lsc,/lsca,1860/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lvi{Ba/CS,137.33/Ar,137.33/Arstar,0/radio,253/R,196/Rcov,135\noexpand\pgfPT@espaco(2+)/Rion,502.9/Ei,0.89/eneg,13.95/eaff,+2/O,+II/ORoman,1000/Tmelt,727/TmeltC,1910/Tboil,1637/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::6s+2/eConfign,[Xe]::6s+2/eConfignl,3510/d,28.07/Cp,18.4/kT,bcc/ls,501.9/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lvii{La/CS,138.91/Ar,138.91/Arstar,0/radio,226/R,180/Rcov,103.2\noexpand\pgfPT@espaco(3+)/Rion,538.1/Ei,1.1/eneg,53.8/eaff,+3/O,+III/ORoman,1193/Tmelt,920/TmeltC,3737/Tboil,3464/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula5d+1/eConfignl,6162/d,27.11/Cp,13.4/kT,hex/ls,377.2/lsa,/lsb,1214.4/lsc,3.22/lsca,1838/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lviii{Ce/CS,140.12/Ar,140.12/Arstar,0/radio,210/R,163/Rcov,101\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)/Rion,534.4/Ei,1.12/eneg,55/eaff,+3\noexpand\pgfPT@virgula+4/O,+III\noexpand\pgfPT@virgula+IV/ORoman,1068/Tmelt,795/TmeltC,3716/Tboil,3443/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep19\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+1\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+1\noexpand\pgfPT@virgula5d+1/eConfignl,6770/d,26.94/Cp,11.3/kT,hex/ls,362/lsa,/lsb,599/lsc,1.65/lsca,1803/DiscY,9/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lix{Pr/CS,140.91/Ar,140.91/Arstar,0/radio,247/R,17/Rcov,99\noexpand\pgfPT@espaco(3+)/Rion,527/Ei,1.13/eneg,10.54/eaff,+3/O,+III/ORoman,1208/Tmelt,935/TmeltC,3403/Tboil,3130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+3/eConfignl,6770/d,27.2/Cp,12.5/kT,hex/ls,367.21/lsa,/lsb,1183.26/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lx{Nd/CS,144.24/Ar,144.24/Arstar,0/radio,206/R,17/Rcov,98.3\noexpand\pgfPT@espaco(3+)/Rion,533.1/Ei,1.14/eneg,9.41/eaff,+3/O,+III/ORoman,1297/Tmelt,1024/TmeltC,3347/Tboil,3074/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+4/eConfignl,7010/d,27.45/Cp,16.5/kT,hex/ls,365.82/lsa,/lsb,1179.66/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxi{Pm/CS,[145]/Ar,[145]/Arstar,1/radio,205/R,173/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,540/Ei,1.13/eneg,12.45/eaff,+3/O,+III/ORoman,1315/Tmelt,1042/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep23\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+5/eConfignl,7260/d,---/Cp,17.9/kT,hex/ls,365/lsa,/lsb,1165/lsc,3.19/lsca,1945/DiscY,22/DiscC,1/spectra,sintetico/cor}% +\def\pgfPT@data@lxii{Sm/CS,150.36/Ar,150.36(2)/Arstar,0/radio,238/R,172/Rcov,95.8\noexpand\pgfPT@espaco(3+)/Rion,544.5/Ei,1.17/eneg,15.63/eaff,+3/O,+III/ORoman,1345/Tmelt,1072/TmeltC,2173/Tboil,1900/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+6/eConfignl,7520/d,29.54/Cp,13.3/kT,rho/ls,362.1/lsa,/lsb,2625/lsc,7.25/lsca,1879/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxiii{Eu/CS,151.96/Ar,151.96/Arstar,0/radio,231/R,168/Rcov,117\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula94.7\noexpand\pgfPT@espaco(3+)/Rion,547.1/Ei,1.2/eneg,11.2/eaff,+2\noexpand\pgfPT@virgula+3/O,+II\noexpand\pgfPT@virgula+III/ORoman,1099/Tmelt,826/TmeltC,1802/Tboil,1529/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7/eConfignl,5244/d,27.66/Cp,13.9/kT,bcc/ls,458.1/lsa,/lsb,/lsc,/lsca,1901/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxiv{Gd/CS,157.25/Ar,157.25(3)/Arstar,0/radio,233/R,169/Rcov,93.5\noexpand\pgfPT@espaco(3+)/Rion,593.4/Ei,1.2/eneg,13.22/eaff,+3/O,+III/ORoman,1585/Tmelt,1312/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7\noexpand\pgfPT@virgula5d+1/eConfignl,7900/d,37.03/Cp,10.6/kT,hcp/ls,363.6/lsa,/lsb,578.26/lsc,1.59/lsca,1880/DiscY,20/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxv{Tb/CS,158.93/Ar,158.93/Arstar,0/radio,225/R,168/Rcov,92.3\noexpand\pgfPT@espaco(3+)/Rion,565.8/Ei,1.2/eneg,12.67/eaff,+3/O,+III/ORoman,1629/Tmelt,1356/TmeltC,3396/Tboil,3123/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+9\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+9/eConfignl,8230/d,28.91/Cp,11.1/kT,hcp/ls,360.1/lsa,/lsb,569.36/lsc,1.58/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxvi{Dy/CS,162.5/Ar,162.5/Arstar,0/radio,228/R,167/Rcov,91.2\noexpand\pgfPT@espaco(3+)/Rion,573/Ei,1.22/eneg,33.96/eaff,+3/O,+III/ORoman,1680/Tmelt,1407/TmeltC,2840/Tboil,2567/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+10/eConfignl,8540/d,27.7/Cp,10.7/kT,hcp/ls,359.3/lsa,/lsb,565.37/lsc,1.57/lsca,1886/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxvii{Ho/CS,164.93/Ar,164.93/Arstar,0/radio,226/R,166/Rcov,90.1\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.23/eneg,32.61/eaff,+3/O,+III/ORoman,1734/Tmelt,1461/TmeltC,2873/Tboil,2600/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+11\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+11/eConfignl,8790/d,27.15/Cp,16.2/kT,hcp/ls,357.73/lsa,/lsb,561.58/lsc,1.57/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxviii{Er/CS,167.26/Ar,167.26/Arstar,0/radio,226/R,165/Rcov,89\noexpand\pgfPT@espaco(3+)/Rion,589.3/Ei,1.24/eneg,30.1/eaff,+3/O,+III/ORoman,1802/Tmelt,1529/TmeltC,3141/Tboil,2868/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+12\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+12/eConfignl,9066/d,28.12/Cp,14.5/kT,hcp/ls,355.88/lsa,/lsb,558.74/lsc,1.57/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxix{Tm/CS,168.93/Ar,168.93/Arstar,0/radio,222/R,164/Rcov,88\noexpand\pgfPT@espaco(3+)/Rion,596.7/Ei,1.25/eneg,99/eaff,+3/O,+III/ORoman,1818/Tmelt,1545/TmeltC,2223/Tboil,1950/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+13\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+13/eConfignl,9320/d,27.03/Cp,16.9/kT,hcp/ls,353.75/lsa,/lsb,555.46/lsc,1.57/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxx{Yb/CS,173.05/Ar,173.05/Arstar,0/radio,222/R,170/Rcov,86.8\noexpand\pgfPT@espaco(3+)/Rion,603.4/Ei,1.1/eneg,0/eaff,+3/O,+III/ORoman,1097/Tmelt,824/TmeltC,1703/Tboil,1430/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14/eConfignl,6900/d,26.74/Cp,38.5/kT,fcc/ls,548.47/lsa,/lsb,/lsc,/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxi{Lu/CS,174.97/Ar,174.97/Arstar,0/radio,217/R,162/Rcov,86.1\noexpand\pgfPT@espaco(3+)/Rion,523.5/Ei,1.27/eneg,23.04/eaff,+3/O,+III/ORoman,1925/Tmelt,1652/TmeltC,3675/Tboil,3402/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+1/eConfignl,9841/d,26.86/Cp,16.4/kT,hcp/ls,350.31/lsa,/lsb,555.09/lsc,1.58/lsca,1906/DiscY,6/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxii{Hf/CS,178.49/Ar,178.49(2)/Arstar,0/radio,208/R,152/Rcov,71\noexpand\pgfPT@espaco(4+)/Rion,658.5/Ei,1.3/eneg,17.18/eaff,+4/O,+IV/ORoman,2506/Tmelt,2233/TmeltC,4876/Tboil,4603/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+2\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+2/eConfignl,13310/d,25.73/Cp,23/kT,hcp/ls,319.64/lsa,/lsb,505.11/lsc,1.58/lsca,1922/DiscY,2/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxiii{Ta/CS,180.95/Ar,180.95/Arstar,0/radio,200/R,146/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,761/Ei,1.5/eneg,31/eaff,+5/O,+V/ORoman,3290/Tmelt,3017/TmeltC,5731/Tboil,5458/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+3/eConfignl,16690/d,25.36/Cp,57.5/kT,bcc/ls,330.26/lsa,/lsb,/lsc,/lsca,1802/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxiv{W/CS,183.84/Ar,183.84/Arstar,0/radio,193/R,137/Rcov,66\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(6+)/Rion,770/Ei,2.36/eneg,78.76/eaff,+4\noexpand\pgfPT@virgula+6/O,+IV\noexpand\pgfPT@virgula+VI/ORoman,3695/Tmelt,3422/TmeltC,6203/Tboil,5930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+4/eConfignl,19250/d,24.27/Cp,173/kT,bcc/ls,316.52/lsa,/lsb,/lsc,/lsca,1783/DiscY,17/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxv{Re/CS,186.21/Ar,186.21/Arstar,0/radio,188/R,131/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,760/Ei,1.9/eneg,5.83/eaff,+4/O,+IV/ORoman,3459/Tmelt,3186/TmeltC,5869/Tboil,5596/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+5/eConfignl,21020/d,25.48/Cp,48/kT,hcp/ls,276.1/lsa,/lsb,445.8/lsc,1.62/lsca,1925/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxvi{Os/CS,190.23/Ar,190.23(3)/Arstar,0/radio,185/R,129/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,840/Ei,2.2/eneg,103.99/eaff,+4/O,+IV/ORoman,3306/Tmelt,3033/TmeltC,5285/Tboil,5012/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+6/eConfignl,22590/d,24.7/Cp,87.6/kT,hcp/ls,273.43/lsa,/lsb,431.73/lsc,1.58/lsca,1803/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxvii{Ir/CS,192.22/Ar,192.22/Arstar,0/radio,180/R,122/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,880/Ei,2.2/eneg,150.91/eaff,+3\noexpand\pgfPT@virgula+4/O,+III\noexpand\pgfPT@virgula+IV/ORoman,2719/Tmelt,2446/TmeltC,4403/Tboil,4130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+7/eConfignl,22560/d,25.1/Cp,147/kT,fcc/ls,383.92/lsa,/lsb,/lsc,/lsca,1803/DiscY,7/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxviii{Pt/CS,195.08/Ar,195.08/Arstar,0/radio,177/R,123/Rcov,80\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,870/Ei,2.28/eneg,205.04/eaff,+2\noexpand\pgfPT@virgula+4/O,+II\noexpand\pgfPT@virgula+IV/ORoman,2041.4/Tmelt,1768.3/TmeltC,4098/Tboil,3825/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+9\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+9/eConfignl,21450/d,25.86/Cp,71.6/kT,fcc/ls,392.35/lsa,/lsb,/lsc,/lsca,1735/DiscY,13/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxix{Au/CS,196.97/Ar,196.97/Arstar,0/radio,174/R,124/Rcov,137\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula85\noexpand\pgfPT@espaco(3+)/Rion,890.1/Ei,2.54/eneg,222.75/eaff,+1\noexpand\pgfPT@virgula+3/O,+I\noexpand\pgfPT@virgula+III/ORoman,1337.33/Tmelt,1064.18/TmeltC,3243/Tboil,2970/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,19300/d,25.418/Cp,318/kT,fcc/ls,407.83/lsa,/lsb,/lsc,/lsca,4000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,100/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxx{Hg/CS,200.59/Ar,200.59/Arstar,0/radio,171/R,133/Rcov,119\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula102\noexpand\pgfPT@espaco(2+)/Rion,1007.1/Ei,2/eneg,0/eaff,+1\noexpand\pgfPT@virgula+2/O,+I\noexpand\pgfPT@virgula+II/ORoman,234.32/Tmelt,-38.83/TmeltC,629.88/Tboil,356.73/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,13534/d,27.983/Cp,8.3/kT,rho/ls,300.9/lsa,/lsb,/lsc,/lsca,1500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,liquido/cor}% +\def\pgfPT@data@lxxxi{Tl/CS,204.38/Ar,[204.38\noexpand\pgfPT@virgula204.39]/Arstar,0/radio,156/R,144/Rcov,150\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula88.5\noexpand\pgfPT@espaco(3+)/Rion,589.4/Ei,1.62/eneg,30.88/eaff,+1\noexpand\pgfPT@virgula+3/O,+I\noexpand\pgfPT@virgula+III/ORoman,577/Tmelt,304/TmeltC,1746/Tboil,1473/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+1/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+1/eConfignl,11850/d,26.32/Cp,46.1/kT,hcp/ls,345.66/lsa,/lsb,552.48/lsc,1.6/lsca,1861/DiscY,21/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxxii{Pb/CS,207.2/Ar,207.2/Arstar,0/radio,154/R,144/Rcov,119\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula77.5\noexpand\pgfPT@espaco(4+)/Rion,715.6/Ei,1.87/eneg,34.42/eaff,+2\noexpand\pgfPT@virgula+4/O,+II\noexpand\pgfPT@virgula+IV/ORoman,600.61/Tmelt,327.46/TmeltC,2022/Tboil,1749/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+2/eConfignl,11340/d,26.65/Cp,35.3/kT,fcc/ls,495.02/lsa,/lsb,/lsc,/lsca,3800\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxxiii{Bi/CS,208.98/Ar,208.98/Arstar,0/radio,143/R,151/Rcov,103\noexpand\pgfPT@espaco(3+)/Rion,703/Ei,2.02/eneg,90.92/eaff,+3/O,+III/ORoman,544.7/Tmelt,271.5/TmeltC,1837/Tboil,1564/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+3/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+3/eConfignl,9780/d,25.52/Cp,7.97/kT,mono/ls,667.4/lsa,611.7/lsb,330.4/lsc,0.5/lsca,1400/DiscY,12/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxxiv{Po/CS,[209]/Ar,/Arstar,1/radio,135/R,145/Rcov,223\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula94\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(6+)/Rion,812.1/Ei,2/eneg,136/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VI/ORoman,527/Tmelt,254/TmeltC,1235/Tboil,962/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+4/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+4/eConfignl,9196/d,26.4/Cp,0/kT,sc/ls,335.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxxv{At/CS,[210]/Ar,/Arstar,1/radio,127/R,147/Rcov,62\noexpand\pgfPT@espaco(7+)/Rion,899.003/Ei,2.2/eneg,233.09/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VII/ORoman,575/Tmelt,302/TmeltC,503/Tboil,230/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+5/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+5/eConfignl,---/d,---/Cp,1.7/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1940/DiscY,22/DiscC,0/spectra,solido/cor}% +\def\pgfPT@data@lxxxvi{Rn/CS,[222]/Ar,/Arstar,1/radio,120/R,142/Rcov,---/Rion,1037/Ei,2.2/eneg,0/eaff,+2\noexpand\pgfPT@virgula+6/O,+II\noexpand\pgfPT@virgula+VI/ORoman,202/Tmelt,-71/TmeltC,211.5/Tboil,-61.7/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+6/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+6/eConfignl,9.73/d,20.786/Cp,0.00361/kT,fcc/ls,---/lsa,/lsb,/lsc,/lsca,1899/DiscY,8/DiscC,1/spectra,gasoso/cor}% +\def\pgfPT@data@lxxxvii{Fr/CS,[223]/Ar,/Arstar,1/radio,---/R,---/Rcov,180\noexpand\pgfPT@espaco(1+)/Rion,380/Ei,0.7/eneg,46.89/eaff,+1/O,+I/ORoman,281/Tmelt,8/TmeltC,890/Tboil,620/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Rn]::7s+1/eConfign,[Rn]::7s+1/eConfignl,---/d,31.8/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1939/DiscY,5/DiscC,0/spectra,solido/cor}% +\def\pgfPT@data@lxxxviii{Ra/CS,[226]/Ar,/Arstar,1/radio,---/R,201/Rcov,148\noexpand\pgfPT@espaco(2+)/Rion,509.3/Ei,0.9/eneg,9.65/eaff,+2/O,+II/ORoman,973/Tmelt,700/TmeltC,2010/Tboil,1737/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::7s+2/eConfign,[Rn]::7s+2/eConfignl,5500/d,---/Cp,18.6/kT,bcc/ls,514.8/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@lxxxix{Ac/CS,[227]/Ar,/Arstar,1/radio,---/R,186/Rcov,106.5\noexpand\pgfPT@espaco(3+)/Rion,499/Ei,1.1/eneg,33.77/eaff,+3/O,+III/ORoman,1323/Tmelt,1050/TmeltC,3471/Tboil,3198/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+1/eConfignl,10000/d,27.2/Cp,12/kT,fcc/ls,587/lsa,/lsb,/lsc,/lsca,1902/DiscY,5/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xc{Th/CS,232.04/Ar,232.04/Arstar,1/radio,---/R,175/Rcov,/Rion,587/Ei,1.3/eneg,58.63/eaff,+4/O,+IV/ORoman,2115/Tmelt,1842/TmeltC,5061/Tboil,4788/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+2/eConfignl,11700/d,26.23/Cp,54/kT,fcc/ls,508.42/lsa,/lsb,/lsc,/lsca,1829/DiscY,18/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xci{Pa/CS,231.04/Ar,231.04/Arstar,1/radio,---/R,169/Rcov,90\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula78\noexpand\pgfPT@espaco(5+)/Rion,568/Ei,1.5/eneg,53.03/eaff,+5/O,+V/ORoman,1841/Tmelt,1568/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep20\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+2\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+2\noexpand\pgfPT@virgula6d+1/eConfignl,15370/d,---/Cp,47/kT,tetr/ls,392.5/lsa,/lsb,323.8/lsc,0.82/lsca,1913/DiscY,10/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xcii{U/CS,238.03/Ar,238.03/Arstar,1/radio,---/R,170/Rcov,76\noexpand\pgfPT@espaco(5+)/Rion,597.6/Ei,1.38/eneg,30.39/eaff,+4\noexpand\pgfPT@virgula+6/O,+IV\noexpand\pgfPT@virgula+VI/ORoman,1405.3/Tmelt,1132.2/TmeltC,4404/Tboil,4131/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+3\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+3\noexpand\pgfPT@virgula6d+1/eConfignl,19100/d,27.665/Cp,27.5/kT,bcort/ls,285.37/lsa,586.95/lsb,495.48/lsc,1.74/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}% +\def\pgfPT@data@xciii{Np/CS,[237]/Ar,/Arstar,1/radio,---/R,171/Rcov,110\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(7+)/Rion,604.5/Ei,1.36/eneg,45.85/eaff,+5/O,+V/ORoman,917/Tmelt,644/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+4\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+4\noexpand\pgfPT@virgula6d+1/eConfignl,20200/d,29.46/Cp,6.3/kT,bcort/ls,666.3/lsa,472.3/lsb,488.7/lsc,0.73/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}% +\def\pgfPT@data@xciv{Pu/CS,[244]/Ar,/Arstar,1/radio,---/R,172/Rcov,100\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula74\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(6+)/Rion,584.7/Ei,1.28/eneg,0/eaff,+4/O,+IV/ORoman,912.5/Tmelt,639.4/TmeltC,3501/Tboil,3228/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+6/eConfignl,19816/d,35.5/Cp,6.74/kT,mono/ls,618.3/lsa,482.2/lsb,1096.3/lsc,1.77/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}% +\def\pgfPT@data@xcv{Am/CS,[243]/Ar,/Arstar,1/radio,---/R,166/Rcov,126\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula97.5\noexpand\pgfPT@espaco(3+)/Rion,578/Ei,1.13/eneg,9.93/eaff,+3/O,+III/ORoman,1449/Tmelt,1176/TmeltC,2880/Tboil,2607/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7/eConfignl,12000/d,62.7/Cp,10/kT,hex/ls,346.81/lsa,/lsb,1124.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}% +\def\pgfPT@data@xcvi{Cm/CS,[247]/Ar,/Arstar,1/radio,---/R,166/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.28/eneg,27.17/eaff,+3/O,+III/ORoman,1613/Tmelt,1340/TmeltC,3383/Tboil,3110/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7\noexpand\pgfPT@virgula6d+1/eConfignl,13510/d,---/Cp,---/kT,hex/ls,349.6/lsa,/lsb,1133.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}% +\def\pgfPT@data@xcvii{Bk/CS,[247]/Ar,/Arstar,1/radio,---/R,---/Rcov,96\noexpand\pgfPT@espaco(3+)/Rion,601/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1323/Tmelt,1050/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+9/eConfignl,14780/d,---/Cp,10/kT,hex/ls,341.6/lsa,/lsb,1106.9/lsc,3.24/lsca,1949/DiscY,22/DiscC,1/spectra,sintetico/cor}% +\def\pgfPT@data@xcviii{Cf/CS,[251]/Ar,/Arstar,1/radio,---/R,---/Rcov,95\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula82.1\noexpand\pgfPT@espaco(4+)/Rion,608/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1173/Tmelt,900/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+10/eConfignl,15100/d,---/Cp,---/kT,hex/ls,338/lsa,/lsb,1102.5/lsc,3.26/lsca,1950/DiscY,22/DiscC,1/spectra,sintetico/cor}% +\def\pgfPT@data@xcix{Es/CS,[252]/Ar,/Arstar,1/radio,---/R,---/Rcov,83.5\noexpand\pgfPT@espaco(3+)/Rion,619/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1133/Tmelt,860/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+11\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+11/eConfignl,8840/d,---/Cp,---/kT,fcc/ls,575/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,1/spectra,sintetico/cor}% +\def\pgfPT@data@c{Fm/CS,[257]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,627/Ei,1.3/eneg,33.96/eaff,+3/O,+III/ORoman,1800/Tmelt,1527/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+12\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+12/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@ci{Md/CS,[258]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,635/Ei,1.3/eneg,93.91/eaff,+3/O,+III/ORoman,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+13\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+13/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1955/DiscY,22/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cii{No/CS,[259]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,642/Ei,1.3/eneg,0/eaff,+2/O,+II/ORoman,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1966/DiscY,24/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@ciii{Lr/CS,[266]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,470/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1900/Tmelt,1627/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1961/DiscY,22/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@civ{Rf/CS,[267]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-580/Ei,---/eneg,---/eaff,+4/O,+IV/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1969/DiscY,16/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cv{Db/CS,[268]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-665/Ei,---/eneg,---/eaff,+5/O,+V/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+3\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1970/DiscY,16/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cvi{Sg/CS,[269]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-757/Ei,---/eneg,---/eaff,+6/O,+VI/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+4\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1974/DiscY,22/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cvii{Bh/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-740/Ei,---/eneg,---/eaff,+7/O,+VII/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+5\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1981/DiscY,8/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cviii{Hs/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-730/Ei,---/eneg,---/eaff,+8/O,+VIII/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1984/DiscY,8/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cix{Mt/CS,[278]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-800/Ei,---/eneg,---/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+7/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1982/DiscY,8/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cx{Ds/CS,[281]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-960/Ei,---/eneg,---/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+8\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+8/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cxi{Rg/CS,[282]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1020/Ei,---/eneg,151/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+9/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cxii{Cn/CS,[285]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1155/Ei,---/eneg,---/eaff,+2/O,+II/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1996/DiscY,8/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cxiii{Nh/CS,[286]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-707.2/Ei,---/eneg,66.6/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2004/DiscY,16/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cxiv{Fl/CS,[289]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-832.2/Ei,---/eneg,---/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1998/DiscY,15/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cxv{Mc/CS,[290]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-538.3/Ei,---/eneg,35.3/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+3/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2003/DiscY,16/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cxvi{Lv/CS,[293]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-663.9/Ei,---/eneg,74.9/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+4/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2000/DiscY,15/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cxvii{Ts/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-736.9/Ei,---/eneg,165.9/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+5/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2009/DiscY,100/DiscC,0/spectra,sintetico/cor}% +\def\pgfPT@data@cxviii{Og/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-860.1/Ei,---/eneg,5.4/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+6/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2002/DiscY,16/DiscC,0/spectra,sintetico/cor}% \endinput diff --git a/graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex b/graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex index 8c09f620e1..140577bcce 100644 --- a/graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex +++ b/graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex @@ -189,6 +189,12 @@ group label color/.default=blue!50!black,% label LaAc font/.get=\pgfPTlabLaAcfont,% label LaAc font/.store in=\pgfPTlabLaAcfont,% label LaAc font/.default=\footnotesize\itshape,% +group numbers/.get=\pgfPTgrnum,% new in v2.1.1 +group numbers/.store in=\pgfPTgrnum,% +group numbers/.default=arabic,% +Roman label color/.get=\pgfPTRomanlabgrcolor,% new in v2.1.1 +Roman label color/.store in=\pgfPTRomanlabgrcolor,% +Roman label color/.default=blue!70!white,% LaAc/.code=\pgfPT@LaAcstyle{#1},% LaAc/.default={s=true,f=\footnotesize\itshape},% per/.code=\pgfPT@perstyle{#1},% @@ -199,7 +205,30 @@ per+gr/.code=\pgfPT@pergrstyle{#1},% per+gr/.default={pc=red!50!black,gc=blue!50!black,f=\small\bfseries}% }% % setting keys with default values --------------------------------------------------------------- -\pgfkeys{/pgfPerTable/.cd,label font,period label color,group label color,label LaAc font}% +\pgfkeys{/pgfPerTable/.cd,label font,period label color,group label color,label LaAc font,group numbers,Roman label color}% +% Groups in 'old' Roman numerals +% CAS (USA) ; old IUPAC (Europe) -> +\newif\ifpgfPT@grRoman@CAS\newif\ifpgfPT@grRoman\newif\ifpgfPT@grarabic% +\def\pgfPT@gr@numbers#1{\edef\@pgfPT@grnum@atual{#1}\relax% +\edef\@pgfPT@grnum@CAS{CAS}\edef\@pgfPT@grnum@IUPAC{IUPAC}% +\edef\@pgfPT@grnum@CASarabic{CAS*}\edef\@pgfPT@grnum@IUPACarabic{IUPAC*}% +\pgfPT@grRoman@CASfalse\pgfPT@grRomanfalse\pgfPT@grarabicfalse% +\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@CAS\relax\pgfPT@grRoman@CAStrue\pgfPT@grRomantrue\else% +\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@IUPAC\relax\pgfPT@grRomantrue\else% +\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@CASarabic\relax\pgfPT@grRoman@CAStrue\pgfPT@grRomantrue\pgfPT@grarabictrue\else% +\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@IUPACarabic\relax\pgfPT@grRomantrue\pgfPT@grarabictrue\fi\fi\fi\fi% +}% +\def\pgfPT@gr@Roman#1{\edef\@pgfPT@Z@atual{#1}\relax% +\ifpgfPT@grRoman@CAS% CAS +\ifcase\@pgfPT@Z@atual\relax\or I\hspace{.1ex}A\or II\hspace{.1ex}A\or III\hspace{.1ex}B\or IV\hspace{.1ex}B\or V\hspace{.1ex}B\or VI\hspace{.1ex}B\or VII\hspace{.1ex}B\or% +\tikz{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}\or VIII\hspace{.1ex}B\or\tikz[xscale=-1]{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}% +\or I\hspace{.1ex}B\or II\hspace{.1ex}B\or III\hspace{.1ex}A\or IV\hspace{.1ex}A\or V\hspace{.1ex}A\or VI\hspace{.1ex}A\or VII\hspace{.1ex}A\or VIII\hspace{.1ex}A\fi% +\else% old IUPAC +\ifcase\@pgfPT@Z@atual\relax\or I\hspace{.1ex}A\or II\hspace{.1ex}A\or III\hspace{.1ex}A\or IV\hspace{.1ex}A\or V\hspace{.1ex}A\or VI\hspace{.1ex}A\or VII\hspace{.1ex}A\or +\tikz{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}\or VIII\hspace{.1ex}A\or\tikz[xscale=-1]{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}% +\or I\hspace{.1ex}B\or II\hspace{.1ex}B\or III\hspace{.1ex}B\or IV\hspace{.1ex}B\or V\hspace{.1ex}B\or VI\hspace{.1ex}B\or VII\hspace{.1ex}B\or0\fi% +\fi% +}% % end !! PGF keys: labels of periods and groups ------------------------------------------------ % % defining PGF keys: the cells of the periodic table to be drawn ------------------------------- @@ -347,7 +376,7 @@ name color/.store in=\pgfPTnamecolor,% name color/.default=black,% name font/.get=\pgfPTnamefont,% name font/.store in=\pgfPTnamefont,% -name font/.default=\fontseries{l}\selectfont\tiny,% +name font/.default=\tiny,% \fontseries{l}\selectfont (removed @ v2.1.2) name align/.get=\pgfPTnamealign,% new v1.0.0 name align/.store in=\pgfPTnamealign,% left|center|right name align/.default=center% @@ -444,16 +473,18 @@ eaff font/.default=\tiny\bfseries% % setting keys with default values ----------------------------------------------------------------- \pgfkeys{/pgfPerTable/.cd,eaff color,eaff font}% % end !! +\newif\ifpgfPTORoman% new in v2.1.1 \pgfkeys{/pgfPerTable/.cd,% O color/.get=\pgfPTOcolor,% O color/.store in=\pgfPTOcolor,% O color/.default=black,% O font/.get=\pgfPTOfont,% O font/.store in=\pgfPTOfont,% -O font/.default=\tiny\bfseries% +O font/.default=\tiny\bfseries,% +O Roman/.is if=pgfPTORoman% new in v2.1.1 }% % setting keys with default values ----------------------------------------------------------------- -\pgfkeys{/pgfPerTable/.cd,O color,O font}% +\pgfkeys{/pgfPerTable/.cd,O color,O font,O Roman=false}% % end !! \pgfkeys{/pgfPerTable/.cd,% Tmelt color/.get=\pgfPTTmeltcolor,% diff --git a/graphics/pgf/contrib/pgf-periodictable/pgfPT.names.tex b/graphics/pgf/contrib/pgf-periodictable/pgfPT.names.tex index 2c321dcd34..d4135f61b9 100644 --- a/graphics/pgf/contrib/pgf-periodictable/pgfPT.names.tex +++ b/graphics/pgf/contrib/pgf-periodictable/pgfPT.names.tex @@ -27,7 +27,7 @@ \def\pgfPT@nomes@iii{l\'{i}tio/pt,lithium/en,lithium/fr,Lithium/de,litio/it,litio/es,l\'{i}tio/br,\pgfPT@user@CSname@Li/user}% \def\pgfPT@nomes@iv{ber\'{i}lio/pt,beryllium/en,b\'{e}ryllium/fr,Beryllium/de,berillio/it,berilio/es,ber\'{i}lio/br,\pgfPT@user@CSname@Be/user}% \def\pgfPT@nomes@v{boro/pt,boron/en,bore/fr,Bor/de,boro/it,boro/es,boro/br,\pgfPT@user@CSname@B/user}% -\def\pgfPT@nomes@vi{carbono/pt,carbon/en,carbone/fr,Kohlenstoff/de,carbonio/it,carb\'{o}n/es,carbono/br,\pgfPT@user@CSname@C/user}% +\def\pgfPT@nomes@vi{carbono/pt,carbon/en,carbone/fr,Kohlenstoff/de,carbonio/it,carbono/es,carbono/br,\pgfPT@user@CSname@C/user}% \def\pgfPT@nomes@vii{azoto/pt,nitrogen/en,azote/fr,Stickstoff/de,azoto/it,nitr\'{o}geno/es,nitrog\^{e}nio/br,\pgfPT@user@CSname@N/user}% \def\pgfPT@nomes@viii{oxig\'{e}nio/pt,oxygen/en,oxyg\`{e}ne/fr,Sauerstoff/de,ossigeno/it,ox\'{i}geno/es,oxig\^{e}nio/br,\pgfPT@user@CSname@O/user}% \def\pgfPT@nomes@ix{fl\'{u}or/pt,fluorine/en,fluor/fr,Fluor/de,fluoro/it,fl\'{u}or/es,fl\'{u}or/br,\pgfPT@user@CSname@F/user}% @@ -47,7 +47,7 @@ \def\pgfPT@nomes@xxiii{van\'{a}dio/pt,vanadium/en,vanadium/fr,Vanadium/de,vanadio/it,vanadio/es,van\'{a}dio/br,\pgfPT@user@CSname@V/user}% \def\pgfPT@nomes@xxiv{cr\'{o}mio/pt,chromium/en,chrome/fr,Chrom/de,cromo/it,cromo/es,cr\^{o}mio/br,\pgfPT@user@CSname@Cr/user}% \def\pgfPT@nomes@xxv{mangan\'{e}sio/pt,manganese/en,mangan\`{e}se/fr,Mangan/de,manganese/it,manganeso/es,mangan\^{e}s/br,\pgfPT@user@CSname@Mn/user}% -\def\pgfPT@nomes@xxvi{ferro/pt,iron/en,fer/fr,Eisen/de,ferro/it,planchar/es,ferro/br,\pgfPT@user@CSname@Fe/user}% +\def\pgfPT@nomes@xxvi{ferro/pt,iron/en,fer/fr,Eisen/de,ferro/it,hierro/es,ferro/br,\pgfPT@user@CSname@Fe/user}% \def\pgfPT@nomes@xxvii{cobalto/pt,cobalt/en,cobalt/fr,Kobalt/de,cobalto/it,cobalto/es,cobalto/br,\pgfPT@user@CSname@Co/user}% \def\pgfPT@nomes@xxviii{n\'{i}quel/pt,nickel/en,nickel/fr,Nickel/de,nichel/it,n\'{i}quel/es,n\'{i}quel/br,\pgfPT@user@CSname@Ni/user}% \def\pgfPT@nomes@xxix{cobre/pt,copper/en,cuivre/fr,Kupfer/de,rame/it,cobre/es,cobre/br,\pgfPT@user@CSname@Cu/user}% @@ -82,7 +82,7 @@ \def\pgfPT@nomes@lviii{c\'{e}rio/pt,cerium/en,c\'{e}rium/fr,Cer/de,cerio/it,cerio/es,c\'{e}rio/br,\pgfPT@user@CSname@Ce/user}% \def\pgfPT@nomes@lix{praseod\'{i}mio/pt,praseodymium/en,pras\'{e}odyme/fr,Praseodym/de,praseodimio/it,praseodimio/es,praseod\'{i}mio/br,\pgfPT@user@CSname@Pr/user}% \def\pgfPT@nomes@lx{neod\'{i}mio/pt,neodymium/en,n\'{e}odyme/fr,Neodym/de,neodimio/it,neodimio/es,neod\'{i}mio/br,\pgfPT@user@CSname@Nd/user}% -\def\pgfPT@nomes@lxi{prom\'{e}cio/pt,promethium/en,prom\'{e}thium/fr,Promethium/de,prometeo/it,prometeo/es,prom\'{e}cio/br,\pgfPT@user@CSname@Pm/user}% +\def\pgfPT@nomes@lxi{prom\'{e}cio/pt,promethium/en,prom\'{e}thium/fr,Promethium/de,prometeo/it,prometio/es,prom\'{e}cio/br,\pgfPT@user@CSname@Pm/user}% \def\pgfPT@nomes@lxii{sam\'{a}rio/pt,samarium/en,samarium/fr,Samarium/de,samario/it,samario/es,sam\'{a}rio/br,\pgfPT@user@CSname@Sm/user}% \def\pgfPT@nomes@lxiii{eur\'{o}pio/pt,europium/en,europium/fr,Europium/de,europium/it,europio/es,eur\'{o}pio/br,\pgfPT@user@CSname@Eu/user}% \def\pgfPT@nomes@lxiv{gadol\'{i}nio/pt,gadolinium/en,gadolinium/fr,Gadolinium/de,gadolinio/it,gadolinio/es,gadol\'{i}nio/br,\pgfPT@user@CSname@Gd/user}% @@ -124,20 +124,20 @@ \def\pgfPT@nomes@c{f\'{e}rmio/pt,fermium/en,fermium/fr,Rermium/de,fermium/it,fermio/es,f\'{e}rmio/br,\pgfPT@user@CSname@Fm/user}% \def\pgfPT@nomes@ci{mendel\'{e}vio/pt,mendelevium/en,mendelevium/fr,Mendelevium/de,mendelevio/it,mendelevio/es,mendel\'{e}vio/br,\pgfPT@user@CSname@Md/user}% \def\pgfPT@nomes@cii{nob\'{e}lio/pt,nobelium/en,nobelium/fr,Nobelium/de,nobelium/it,nobelio/es,nob\'{e}lio/br,\pgfPT@user@CSname@No/user}% -\def\pgfPT@nomes@ciii{laur\^{e}ncio/pt,lawrencium/en,lawrencium/fr,Lawrencium/de,laurenzio/it,lawrencium/es,laur\^{e}ncio/br,\pgfPT@user@CSname@Lr/user}% +\def\pgfPT@nomes@ciii{laur\^{e}ncio/pt,lawrencium/en,lawrencium/fr,Lawrencium/de,laurenzio/it,lawrencio/es,laur\^{e}ncio/br,\pgfPT@user@CSname@Lr/user}% \def\pgfPT@nomes@civ{rutherf\'{o}rdio/pt,rutherfordium/en,rutherfordium/fr,Rutherfordium/de,rutherfordium/it,rutherfordio/es,rutherf\'{o}rdio/br,\pgfPT@user@CSname@Rf/user}% -\def\pgfPT@nomes@cv{d\'{u}bnio/pt,dubnium/en,dubnium/fr,Dubnium/de,dubnio/it,dubnium/es,d\'{u}bnio/br,\pgfPT@user@CSname@Db/user}% +\def\pgfPT@nomes@cv{d\'{u}bnio/pt,dubnium/en,dubnium/fr,Dubnium/de,dubnio/it,dubnio/es,d\'{u}bnio/br,\pgfPT@user@CSname@Db/user}% \def\pgfPT@nomes@cvi{seab\'{o}rgio/pt,seaborgium/en,seaborgium/fr,Seaborgium/de,seaborgio/it,seaborgio/es,seab\'{o}rgio/br,\pgfPT@user@CSname@Sg/user}% -\def\pgfPT@nomes@cvii{b\'{o}rio/pt,bohrium/en,bohrium/fr,Bohrium/de,bohrio/it,bohrium/es,b\'{o}hrio/br,\pgfPT@user@CSname@Bh/user}% -\def\pgfPT@nomes@cviii{h\'{a}ssio/pt,hassium/en,hassium/fr,Hassium/de,hassio/it,hassium/es,h\'{a}ssio/br,\pgfPT@user@CSname@Hs/user}% +\def\pgfPT@nomes@cvii{b\'{o}rio/pt,bohrium/en,bohrium/fr,Bohrium/de,bohrio/it,bohrio/es,b\'{o}hrio/br,\pgfPT@user@CSname@Bh/user}% +\def\pgfPT@nomes@cviii{h\'{a}ssio/pt,hassium/en,hassium/fr,Hassium/de,hassio/it,hasio/es,h\'{a}ssio/br,\pgfPT@user@CSname@Hs/user}% \def\pgfPT@nomes@cix{meitn\'{e}rio/pt,meitnerium/en,meitnerium/fr,Meitnerium/de,meitnerio/it,meitnerio/es,meitn\'{e}rio/br,\pgfPT@user@CSname@Mt/user}% -\def\pgfPT@nomes@cx{darmst\'{a}dio/pt,darmstadtium/en,darmstadtium/fr,Darmstadtium/de,darmstadtium/it,darmstadtium/es,darmst\'{a}dtio/br,\pgfPT@user@CSname@Ds/user}% +\def\pgfPT@nomes@cx{darmst\'{a}dio/pt,darmstadtium/en,darmstadtium/fr,Darmstadtium/de,darmstadtium/it,darmstatio/es,darmst\'{a}dtio/br,\pgfPT@user@CSname@Ds/user}% \def\pgfPT@nomes@cxi{roentg\'{e}nio/pt,roentgenium/en,roentgenium/fr,R\"{o}ntgenium/de,roentgenio/it,roentgenio/es,roentg\^{e}nio/br,\pgfPT@user@CSname@Rg/user}% \def\pgfPT@nomes@cxii{copern\'{i}cio/pt,copernicium/en,copernicium/fr,Copernicium/de,copernicium/it,copernicio/es,copern\'{i}cio/br,\pgfPT@user@CSname@Cn/user}% \def\pgfPT@nomes@cxiii{nip\'{o}nio/pt,nihonium/en,nihonium/fr,Nihonium/de,nihonium/it,nihonio/es,nip\^{o}nio/br,\pgfPT@user@CSname@Nh/user}% \def\pgfPT@nomes@cxiv{fler\'{o}vio/pt,flerovium/en,flerovium/fr,Flerovium/de,flerovio/it,flerovio/es,fler\'{o}vio/br,\pgfPT@user@CSname@Fl/user}% \def\pgfPT@nomes@cxv{mosc\'{o}vio/pt,moscovium/en,moscovium/fr,Moscovium/de,moscovium/it,moscovio/es,mosc\'{o}vio/br,\pgfPT@user@CSname@Mc/user}% -\def\pgfPT@nomes@cxvi{liverm\'{o}rio/pt,livermorium/en,livermorium/fr,Livermorium/de,livermorio/it,livermorium/es,liverm\'{o}rio/br,\pgfPT@user@CSname@Lv/user}% +\def\pgfPT@nomes@cxvi{liverm\'{o}rio/pt,livermorium/en,livermorium/fr,Livermorium/de,livermorio/it,livermorio/es,liverm\'{o}rio/br,\pgfPT@user@CSname@Lv/user}% \def\pgfPT@nomes@cxvii{tenesso/pt,tennessine/en,tennessine/fr,Tenness/de,tennessine/it,teneso/es,tenesso/br,\pgfPT@user@CSname@Ts/user}% \def\pgfPT@nomes@cxviii{ogan\'{e}sson/pt,oganesson/en,oganesson/fr,Oganesson/de,oganesson/it,oganes\'{o}n/es,oganess\^{o}nio/br,\pgfPT@user@CSname@Og/user}% \endinput% diff --git a/graphics/pgf/contrib/pgf-spectra/README b/graphics/pgf/contrib/pgf-spectra/README index 3f4fef79e2..12c4c6b8ad 100644 --- a/graphics/pgf/contrib/pgf-spectra/README +++ b/graphics/pgf/contrib/pgf-spectra/README @@ -1,4 +1,4 @@ -This is pgf-spectra, version 3.0.1 (27/04/2023). +This is pgf-spectra, version 3.0.1a (07/07/2024). This package provides the \pgfspectra[<options>] command which draws continuous and emission or absorption spectra for 98 elements and their ions. It was developed mainly for the writing of my own documentation and exams sheets supporting directly PDF output format. @@ -7,7 +7,7 @@ It also allows the user to draw a spectrum with their own personal data. The lines data extends from Extreme UV to Near IR (from 10 to 4000 nanometers). It is possible to redshift the lines of a spectrum, by directly entering the redshift value or the velocity and the angle to compute the redshift value. Spectral lines data can be presented in a table or exported to a file. -This package also provides color conversion (correlated color temperature), shadings for use with TikZ and/or PGFPLOTS, color maps for use with PGFPLOTS, +This package also provides color conversion (correlated color temperature), shadings for use with TikZ and/or PGFPLOTS, color maps for use with PGFPLOTS, displaying the spectral lines in a table and exporting the lines data files. ____________________________________________________________ @@ -18,13 +18,24 @@ ____________________________________________________________ ** Licence: released under the LaTeX Project Public License v1.3 or later, see http://www.latex-project.org/lppl.txt ____________________________________________________________ +*** v3.0.1a (07/07/2024) *** +Removed lines data outside the range 10nm - 4000nm (H, He, Be, C, Si, Kr, Sn, I) in LSE data file, which generate a package warning, e.g. +«Package pgf-spectra Warning: invalid wavelength (4051.1602nm). The wavelength must be lesser or equal to 4000nm (NIR)... on input line 27». +Fixed chemical symbol label width producing incorrect alignment on consecutive lines for the spectrum of some elements, e.g. +------------------------------------------------------- +\pgfspectraStyle[axis,begin=400,end=700,axis step=20,axis ticks=9,axis color=lightgray, axis font color=black,label,width=.88\textwidth,height=0.7cm] +\noindent\pgfspectra[element=Cl] + +\noindent\pgfspectra[element=Rn] +------------------------------------------------------- + *** v3.0.1 (27/04/2023) *** -Fixed a small bug dealing with the 'axis label'/'axis label text' background color, which occurred when setting a visible background with the 'back' key, e.g., +Fixed a small bug dealing with the 'axis label'/'axis label text' background color, which occurred when setting a visible background with the 'back' key, e.g., \pgfspectra[element=H,axis label text={wavenumber in nanometer},back=visible50] *** v3.0.0 (25/04/2023) *** -In the \pgfspectra command, syntax for the key 'lines' has been updated: it is now possible to specify a continuous range using 'start wavelength to end +In the \pgfspectra command, syntax for the key 'lines' has been updated: it is now possible to specify a continuous range using 'start wavelength to end wavelength', for instance, 'lines={380 to 500}' or 'lines={380 to 500,633}' or 'lines={633,555,380 to 500}'. New keys for \pgfspectra: - axis label @@ -45,12 +56,12 @@ ____________________________________________________________ Previous versions *** v2.2.0 (21/02/2023) *** -LSE data renormalized to lower values within TeX capabilities. This prevents 'Dimension too large' errors and subsequent errors in spectrum drawing when +LSE data renormalized to lower values within TeX capabilities. This prevents 'Dimension too large' errors and subsequent errors in spectrum drawing when using the 'relative intensity' key. -Added maximum intensities in IR, visible an UV ranges for both data sources (NIST and LSE). Now, when using the 'relative intensity' key, the interval of -wavelengths is detected and the respective maximum intensity is used. For example, if the spectrum is within the visible range, say between 400 and 700 -nanometers, the maximum visible intensity will be used. The same is true for ranges only in IR or UV ranges. But, if the spectrum to be drawn is in more -than one region - for example, from 300 to 1000 or from 400 to 1000 or from 300 to 700 nanometers - the maximum intensity that will be used is defined +Added maximum intensities in IR, visible an UV ranges for both data sources (NIST and LSE). Now, when using the 'relative intensity' key, the interval of +wavelengths is detected and the respective maximum intensity is used. For example, if the spectrum is within the visible range, say between 400 and 700 +nanometers, the maximum visible intensity will be used. The same is true for ranges only in IR or UV ranges. But, if the spectrum to be drawn is in more +than one region - for example, from 300 to 1000 or from 400 to 1000 or from 300 to 700 nanometers - the maximum intensity that will be used is defined as the maximum intensity of all data. Fixed some typos in the manual. diff --git a/graphics/pgf/contrib/pgf-spectra/pgf-spectra.data.LSE.tex b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.data.LSE.tex index 53303b35f6..9bb4004bfb 100644 --- a/graphics/pgf/contrib/pgf-spectra/pgf-spectra.data.LSE.tex +++ b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.data.LSE.tex @@ -31,12 +31,12 @@ % (see Es, Bk...) % \protected\def\pgfspectra@elt@data#1{\relax\ignorespaces\global\pgfspectra@datanotfoundtrue\relax% -\pgfspectra@elt@search{#1}{H}{[92.6226 15 0],[93.0748 20 0],[93.7803 30 0],[94.9743 50 0],[97.2537 100 0],[102.5722 300 0],[121.5668 1000 0],[121.5674 500 0],[383.5384 5 0],[388.9049 6 0],[397.0072 8 0],[410.174 15 0],[434.047 30 0],[486.133 80 0],[656.272 120 0],[656.2852 180 0],[954.597 5 0],[1004.94 7 0],[1093.81 12 0],[1281.81 20 0],[1875.1 40 0],[2165.5301 5 0],[2625.15 8 0],[4051.1602 15 0],[4652.5102 4 0],[7457.8 6 0],[12368.5 3 0]}{ALLx1000x1000x0x0x0x0x0}{UVx1000x1000x0x0x0x0x0}{VISx180x180x0x0x0x0x0}{IVx40x40x0x0x0x0x0}% -\pgfspectra@elt@search{#1}{He}{[23.1454 15 1],[23.2584 20 1],[23.4347 30 1],[23.7331 50 1],[24.3027 100 1],[25.6317 300 1],[30.378 1000 1],[30.3786 500 1],[32.0293 10 0],[50.55 2 0],[50.5684 3 0],[50.5912 4 0],[50.62 5 0],[50.657 7 0],[50.7058 10 0],[50.7718 15 0],[50.8643 20 0],[50.9998 25 0],[51.2098 35 0],[51.5616 50 0],[52.2213 100 0],[53.703 400 0],[58.4334 1000 0],[59.1412 50 0],[95.87 5 1],[97.211 6 1],[99.236 8 1],[102.527 15 1],[108.494 30 1],[121.509 35 1],[121.517 50 1],[164.034 120 1],[164.047 180 1],[238.54 7 1],[251.12 9 1],[257.76 50 0],[272.319 1 0],[273.33 12 1],[276.38 2 0],[281.82 10 0],[282.908 4 0],[294.511 10 0],[301.37 40 0],[318.774 20 0],[320.296 3 1],[320.31 15 1],[335.455 1 0],[344.759 2 0],[358.727 1 0],[361.364 3 0],[363.423 2 0],[370.5 3 0],[373.286 1 0],[381.9607 10 0],[381.976 1 0],[388.865 500 0],[396.4729 20 0],[400.927 1 0],[402.6191 50 0],[402.636 5 0],[412.082 12 0],[412.099 2 0],[414.376 3 0],[438.7929 10 0],[443.755 3 0],[447.1479 200 0],[447.168 25 0],[468.54 6 1],[468.57 30 1],[471.3146 30 0],[471.338 4 0],[492.1931 20 0],[501.5678 100 0],[504.774 10 0],[541.152 5 1],[587.562 500 0],[587.597 100 0],[656.01 8 1],[667.815 100 0],[686.748 3 0],[706.519 200 0],[706.571 30 0],[728.135 50 0],[781.615 1 0],[836.169 2 0],[906.327 2 0],[921.034 2 0],[946.361 10 0],[951.66 4 0],[952.617 3 0],[952.927 1 0],[960.342 1 0],[970.26 3 0],[1002.773 6 0],[1003.116 2 0],[1012.36 15 1],[1013.85 1 0],[1031.123 10 0],[1031.154 2 0],[1066.765 3 0],[1082.909 300 0],[1083.025 1000 0],[1083.034 2000 0],[1091.305 9 0],[1091.71 3 0],[1162.64 4 1],[1196.912 30 0],[1252.752 20 0],[1278.499 50 0],[1279.057 20 0],[1284.596 7 0],[1296.845 10 0],[1298.489 2 0],[1508.364 12 0],[1700.2471 200 0],[1855.5551 1 0],[1863.6801 6 1],[1868.534 500 0],[1869.723 200 0],[1908.9381 100 0],[1954.308 20 0],[2058.1301 1000 0],[2112.007 80 0],[2112.143 10 0],[2113.2029 20 0],[3090.85 3 1],[4047.8898 4 0]}{ALLx2000x2000x1000x0x0x0x0}{UVx1000x1000x1000x0x0x0x0}{VISx500x500x30x0x0x0x0}{IVx2000x2000x15x0x0x0x0}% +\pgfspectra@elt@search{#1}{H}{[92.6226 15 0],[93.0748 20 0],[93.7803 30 0],[94.9743 50 0],[97.2537 100 0],[102.5722 300 0],[121.5668 1000 0],[121.5674 500 0],[383.5384 5 0],[388.9049 6 0],[397.0072 8 0],[410.174 15 0],[434.047 30 0],[486.133 80 0],[656.272 120 0],[656.2852 180 0],[954.597 5 0],[1004.94 7 0],[1093.81 12 0],[1281.81 20 0],[1875.1 40 0],[2165.5301 5 0],[2625.15 8 0]}{ALLx1000x1000x0x0x0x0x0}{UVx1000x1000x0x0x0x0x0}{VISx180x180x0x0x0x0x0}{IVx40x40x0x0x0x0x0}%,[4051.1602 15 0],[4652.5102 4 0],[7457.8 6 0],[12368.5 3 0] +\pgfspectra@elt@search{#1}{He}{[23.1454 15 1],[23.2584 20 1],[23.4347 30 1],[23.7331 50 1],[24.3027 100 1],[25.6317 300 1],[30.378 1000 1],[30.3786 500 1],[32.0293 10 0],[50.55 2 0],[50.5684 3 0],[50.5912 4 0],[50.62 5 0],[50.657 7 0],[50.7058 10 0],[50.7718 15 0],[50.8643 20 0],[50.9998 25 0],[51.2098 35 0],[51.5616 50 0],[52.2213 100 0],[53.703 400 0],[58.4334 1000 0],[59.1412 50 0],[95.87 5 1],[97.211 6 1],[99.236 8 1],[102.527 15 1],[108.494 30 1],[121.509 35 1],[121.517 50 1],[164.034 120 1],[164.047 180 1],[238.54 7 1],[251.12 9 1],[257.76 50 0],[272.319 1 0],[273.33 12 1],[276.38 2 0],[281.82 10 0],[282.908 4 0],[294.511 10 0],[301.37 40 0],[318.774 20 0],[320.296 3 1],[320.31 15 1],[335.455 1 0],[344.759 2 0],[358.727 1 0],[361.364 3 0],[363.423 2 0],[370.5 3 0],[373.286 1 0],[381.9607 10 0],[381.976 1 0],[388.865 500 0],[396.4729 20 0],[400.927 1 0],[402.6191 50 0],[402.636 5 0],[412.082 12 0],[412.099 2 0],[414.376 3 0],[438.7929 10 0],[443.755 3 0],[447.1479 200 0],[447.168 25 0],[468.54 6 1],[468.57 30 1],[471.3146 30 0],[471.338 4 0],[492.1931 20 0],[501.5678 100 0],[504.774 10 0],[541.152 5 1],[587.562 500 0],[587.597 100 0],[656.01 8 1],[667.815 100 0],[686.748 3 0],[706.519 200 0],[706.571 30 0],[728.135 50 0],[781.615 1 0],[836.169 2 0],[906.327 2 0],[921.034 2 0],[946.361 10 0],[951.66 4 0],[952.617 3 0],[952.927 1 0],[960.342 1 0],[970.26 3 0],[1002.773 6 0],[1003.116 2 0],[1012.36 15 1],[1013.85 1 0],[1031.123 10 0],[1031.154 2 0],[1066.765 3 0],[1082.909 300 0],[1083.025 1000 0],[1083.034 2000 0],[1091.305 9 0],[1091.71 3 0],[1162.64 4 1],[1196.912 30 0],[1252.752 20 0],[1278.499 50 0],[1279.057 20 0],[1284.596 7 0],[1296.845 10 0],[1298.489 2 0],[1508.364 12 0],[1700.2471 200 0],[1855.5551 1 0],[1863.6801 6 1],[1868.534 500 0],[1869.723 200 0],[1908.9381 100 0],[1954.308 20 0],[2058.1301 1000 0],[2112.007 80 0],[2112.143 10 0],[2113.2029 20 0],[3090.85 3 1]}{ALLx2000x2000x1000x0x0x0x0}{UVx1000x1000x1000x0x0x0x0}{VISx500x500x30x0x0x0x0}{IVx2000x2000x15x0x0x0x0}%,[4047.8898 4 0] \pgfspectra@elt@search{#1}{Li}{[149.293 3 1],[149.297 5 1],[149.304 1 1],[165.308 3 1],[165.313 5 1],[165.321 1 1],[233.688 3 1],[233.691 5 1],[233.7 2 1],[239.439 1 0],[242.543 3 0],[247.506 10 0],[255.17 24 1],[256.231 15 0],[265.729 2 1],[265.73 3 1],[272.824 0 1],[272.829 5 1],[272.832 2 1],[273.047 3 1],[273.055 1 1],[274.12 5 0],[293.402 2 1],[293.407 2 1],[293.412 5 1],[293.425 1 1],[302.912 3 1],[302.914 3 1],[315.531 3 1],[315.533 4 1],[319.626 1 1],[319.633 9 1],[319.636 4 1],[319.933 5 1],[319.943 2 1],[323.266 17 0],[371.4 1 1],[371.416 5 1],[371.427 6 1],[371.429 8 1],[371.44 7 1],[371.441 10 1],[371.451 1 1],[371.458 0 1],[371.87 3 0],[379.472 6 0],[391.53 20 0],[391.535 20 0],[398.548 10 0],[398.554 10 0],[413.256 40 0],[413.262 40 0],[427.307 20 0],[427.313 20 0],[432.542 5 1],[432.547 5 1],[432.554 1 1],[460.283 13 0],[460.289 13 0],[467.151 0 1],[467.165 6 1],[467.17 2 1],[467.806 3 1],[467.829 1 1],[488.132 4 1],[488.139 4 1],[488.149 1 1],[497.166 8 0],[497.175 8 0],[548.355 600 1],[548.565 600 1],[610.354 320 0],[610.365 320 0],[670.776 3600 0],[670.791 3600 0],[812.623 48 0],[812.645 48 0]}{ALLx3600x3600x600x0x0x0x0}{UVx24x17x24x0x0x0x0}{VISx3600x3600x600x0x0x0x0}{IVx48x48x0x0x0x0x0}% -\pgfspectra@elt@search{#1}{Be}{[7.61 1 2],[7.648 2 2],[7.853 3 2],[7.866 4 2],[7.892 1 2],[8.189 5 2],[8.238 10 2],[8.32 20 2],[8.476 30 2],[8.831 50 2],[10.025 100 2],[50.999 3 2],[54.931 2 2],[58.208 6 2],[66.132 4 2],[67.559 8 2],[72.559 4 2],[72.571 5 1],[74.358 5 1],[74.623 7 2],[76.775 2 2],[77.537 8 1],[84.206 20 1],[92.525 2 1],[94.356 10 1],[97.327 10 1],[102.693 8 1],[103.632 5 1],[104.823 15 1],[111.469 1 2],[114.303 20 1],[119.719 60 1],[121.312 2 2],[121.432 1 2],[136.225 2 2],[140.152 1 2],[142.126 10 2],[142.286 5 2],[143.517 1 2],[144.077 2 2],[151.23 20 1],[151.243 60 1],[166.149 100 0],[175.469 2 2],[177.612 15 1],[177.634 20 1],[191.703 3 2],[192.967 5 0],[194.368 10 0],[195.497 60 2],[196.459 50 0],[198.513 5 0],[199.801 60 0],[205.59 50 0],[205.601 100 0],[207.694 75 2],[208.038 60 2],[211.856 25 2],[212.227 15 2],[212.557 10 0],[212.568 20 0],[212.72 15 2],[213.725 5 2],[214.5 25 0],[217.499 55 0],[217.51 55 0],[219.157 5 2],[234.861 950 0],[235.066 20 0],[235.071 60 0],[235.083 200 0],[241.334 2 1],[241.346 16 1],[245.384 20 1],[249.454 35 0],[249.458 35 0],[249.473 100 0],[250.743 16 1],[261.799 5 1],[261.813 20 1],[265.045 100 0],[265.055 60 0],[265.062 200 0],[265.069 60 0],[265.076 100 0],[269.746 5 1],[269.758 20 1],[272.888 20 1],[273.805 30 0],[289.813 20 0],[289.819 10 0],[289.825 20 0],[298.606 30 0],[298.642 10 0],[301.933 60 0],[301.949 30 0],[301.953 30 0],[301.96 20 0],[304.652 10 1],[304.669 30 1],[311.081 10 0],[311.092 10 0],[311.099 20 0],[313.042 480 1],[313.107 320 1],[319.381 20 0],[319.71 20 1],[319.715 30 1],[320.86 20 0],[322.963 60 0],[323.352 2 1],[324.162 10 1],[324.183 30 1],[326.902 15 0],[327.458 100 1],[327.467 30 1],[328.291 30 0],[332.101 30 0],[332.109 30 0],[332.134 220 0],[334.543 20 0],[336.763 60 0],[345.137 5 0],[345.518 300 0],[347.656 20 0],[351.554 300 0],[355.5 10 0],[372.036 100 2],[373.63 100 0],[381.345 700 0],[386.513 40 0],[386.542 80 0],[386.551 1 0],[386.572 6 0],[386.603 100 0],[424.914 90 2],[425.305 100 0],[425.376 60 0],[436.066 300 1],[436.099 500 1],[440.794 400 0],[448.552 2 2],[448.73 100 2],[449.509 1 2],[449.78 140 2],[457.266 12 0],[467.333 700 1],[467.342 1000 1],[470.937 6 0],[482.816 200 1],[484.916 40 0],[485.822 2 1],[508.775 80 0],[521.812 8 1],[521.833 20 1],[525.586 3 1],[527.028 64 1],[527.081 500 1],[540.304 20 1],[541.021 20 1],[614.201 140 2],[622.911 10 0],[627.943 16 1],[627.973 30 1],[647.354 30 0],[654.789 60 1],[655.836 60 1],[656.452 30 0],[663.644 2 1],[675.672 1 1],[675.713 2 1],[678.656 30 0],[688.422 1 0],[688.444 6 0],[698.275 100 0],[715.44 6 0],[715.465 40 0],[720.913 100 0],[740.12 3 1],[740.143 2 1],[755.19 10 0],[761.868 10 0],[761.888 20 0],[809.006 60 0],[815.899 5 0],[815.924 10 0],[825.407 4 0],[828.707 10 0],[854.736 30 0],[854.767 60 0],[880.137 300 0],[888.218 6 0],[919.045 40 0],[924.392 20 0],[934.389 1 1],[939.274 40 0],[947.643 2 1],[947.703 16 1],[984.732 20 0],[989.563 10 0],[989.596 20 0],[993.978 80 0],[1009.552 16 1],[1009.573 20 1],[1011.992 60 1],[1033.103 80 0],[1106.646 30 0],[1117.373 1 1],[1149.639 120 0],[1162.516 2 1],[1166.025 2 1],[1209.536 100 1],[1209.818 30 1],[1464.392 100 0],[1464.475 60 0],[1615.772 200 0],[1785.5381 80 0],[1785.6631 120 0],[1814.3539 100 0],[3177.5051 160 0],[3177.8699 200 0]}{ALLx1000x950x1000x140x0x0x0}{UVx950x950x480x100x0x0x0}{VISx1000x700x1000x140x0x0x0}{IVx300x300x100x0x0x0x0}% -\pgfspectra@elt@search{#1}{B}{[4.859 30 4],[5.268 10 3],[6.031 30 3],[34.4 160 3],[38.5 450 3],[41.18 40 2],[41.87 285 3],[51.077 20 2],[51.085 40 2],[51.824 150 2],[51.827 75 2],[67.7 110 2],[67.714 160 2],[69.395 70 1],[73.136 40 1],[73.144 40 1],[75.848 40 2],[75.867 70 2],[88.254 110 1],[88.268 110 1],[98.467 40 1],[108.188 110 1],[108.207 110 1],[111.22 70 3],[116.89 450 3],[117.09 70 3],[123.016 110 1],[136.246 220 1],[160.046 70 0],[160.073 120 0],[162.358 160 1],[162.377 110 1],[162.402 220 1],[162.416 70 1],[162.434 160 1],[166.304 100 0],[166.687 150 0],[166.729 200 0],[181.786 150 0],[181.837 200 0],[182.591 300 0],[182.641 300 0],[184.281 110 1],[195.383 20 2],[206.578 550 2],[206.638 250 0],[206.665 250 0],[206.693 100 0],[206.719 300 0],[206.723 450 2],[207.709 160 2],[208.891 500 0],[208.957 500 0],[222.03 70 1],[223.409 40 2],[223.459 70 2],[232.303 40 1],[232.867 40 1],[239.32 40 1],[239.505 220 1],[245.969 40 1],[245.99 40 1],[249.677 1000 0],[249.773 1000 0],[252.47 70 3],[253.03 160 3],[282.168 450 3],[282.457 70 3],[282.585 285 3],[291.808 160 1],[303.226 110 1],[317.933 70 1],[332.318 110 1],[332.36 110 1],[345.129 450 1],[412.193 285 1],[419.479 110 1],[424.298 40 2],[424.361 70 2],[447.21 110 1],[447.285 110 1],[448.705 220 2],[449.773 360 2],[478.421 70 1],[494.038 110 1],[608.044 110 1],[628.547 70 1],[703.02 70 1],[703.19 40 1],[783.525 110 2],[784.141 70 2],[866.722 20 0],[866.857 70 0],[1166.004 800 0],[1166.247 570 0],[1562.908 125 0],[1624.038 200 0],[1624.467 250 0],[1899.433 235 0]}{ALLx1000x1000x450x550x450x30x0}{UVx1000x1000x450x550x450x30x0}{VISx360x0x285x360x0x0x0}{IVx800x800x0x110x0x0x0}% -\pgfspectra@elt@search{#1}{C}{[3.4973 110 4],[4.0268 450 4],[22.719 110 4],[24.491 250 3],[24.866 160 4],[24.874 160 4],[28.914 200 3],[28.923 250 3],[31.242 570 3],[31.246 500 3],[37.169 250 2],[37.175 250 2],[37.178 150 2],[38.403 650 3],[38.418 700 3],[38.6203 500 2],[41.952 400 3],[41.971 500 3],[45.0734 200 2],[45.946 400 2],[45.952 500 2],[45.963 570 2],[51.1522 250 2],[53.5288 250 2],[53.808 300 2],[53.8149 350 2],[53.8312 400 2],[57.4281 350 2],[59.5022 9 1],[68.7053 30 1],[68.7345 50 1],[85.8092 10 1],[85.8559 20 1],[90.3624 30 1],[90.3962 60 1],[90.4142 150 1],[90.448 30 1],[97.703 800 2],[100.986 9 1],[101.008 10 1],[101.037 10 1],[103.6337 80 1],[103.7018 150 1],[115.791 150 0],[115.8019 150 0],[115.8035 150 0],[117.493 370 2],[117.526 350 2],[117.559 330 2],[117.571 500 2],[117.599 350 2],[117.637 370 2],[118.8992 150 0],[118.9447 150 0],[118.9631 200 0],[119.3009 300 0],[119.3031 300 0],[119.324 300 0],[119.3264 300 0],[119.3393 100 0],[119.3649 150 0],[119.3679 150 0],[119.4064 100 0],[119.4488 100 0],[126.1552 100 0],[127.7245 250 0],[127.7282 250 0],[127.7513 300 0],[127.755 300 0],[128.0333 200 0],[131.1363 100 0],[132.3951 9 1],[132.9578 120 0],[132.96 120 0],[133.4532 150 1],[133.5708 300 1],[135.4288 100 0],[135.584 150 0],[136.4164 120 0],[145.9032 100 0],[146.3336 200 0],[146.7402 120 0],[148.1764 150 0],[154.8202 1000 3],[155.0774 900 3],[156.031 150 0],[156.0683 400 0],[156.0708 400 0],[156.1341 100 0],[156.1438 400 0],[165.6266 150 0],[165.6928 120 0],[165.7008 300 0],[165.738 120 0],[165.7907 120 0],[165.8122 150 0],[175.1823 500 0],[193.0905 1000 0],[216.294 250 2],[227.091 40 4],[227.725 5 4],[227.792 20 4],[229.687 800 2],[247.856 800 0],[250.912 250 1],[251.206 350 1],[252.441 200 3],[252.998 300 3],[257.483 250 1],[269.775 150 2],[272.485 110 2],[272.53 150 2],[272.59 150 2],[274.128 350 1],[274.649 250 1],[283.671 1000 1],[283.76 800 1],[298.211 200 2],[299.262 800 1],[387.619 350 1],[387.641 350 1],[387.666 350 1],[391.898 570 1],[392.069 800 1],[405.606 150 2],[406.794 200 2],[406.891 250 2],[407.026 250 2],[407.452 250 1],[407.585 350 1],[416.286 150 2],[418.69 250 2],[426.7 800 1],[426.726 1000 1],[432.556 200 2],[464.742 600 2],[465.025 520 2],[465.147 375 2],[465.83 200 3],[466.586 200 2],[477.175 200 0],[493.205 200 0],[494.388 5 4],[494.456 5 4],[505.217 200 0],[513.294 350 1],[513.328 350 1],[514.349 350 1],[514.516 570 1],[515.109 400 1],[538.034 300 0],[564.807 250 1],[566.247 350 1],[569.592 450 2],[580.133 250 3],[581.198 200 3],[582.642 150 2],[588.977 570 1],[589.159 350 1],[600.113 200 0],[600.603 250 0],[600.718 110 0],[601.068 150 0],[601.322 300 0],[601.484 250 0],[657.805 800 1],[658.288 570 1],[658.761 200 0],[674.438 150 2],[678.39 250 1],[703.725 150 2],[711.318 250 0],[711.519 250 0],[711.563 250 1],[711.699 200 0],[711.99 350 1],[723.132 800 1],[723.642 1000 1],[761.265 150 2],[772.62 90 3],[786.089 200 0],[805.862 200 0],[819.648 300 2],[833.299 150 2],[833.515 520 0],[850.032 300 2],[906.143 250 0],[906.247 200 0],[907.828 200 0],[908.851 250 0],[909.483 450 0],[911.18 300 0],[940.573 800 0],[960.303 150 0],[962.08 250 0],[965.844 300 0],[1068.308 200 0],[1069.125 300 0],[1161.929 12 0],[1162.883 23 0],[1165.885 13 0],[1165.968 47 0],[1166.963 24 0],[1174.822 85 0],[1175.332 142 0],[1175.476 114 0],[1177.754 11 0],[1189.291 17 0],[1189.575 30 0],[1261.41 26 0],[1350.227 20 0],[1439.965 38 0],[1440.325 16 0],[1442.012 61 0],[1442.903 12 0],[1444.224 13 0],[1655.966 12 0],[1689.0381 50 0],[1733.8561 10 0],[1744.86 11 0],[1813.9801 13 0],[1972.199 23 0]}{ALLx1000x1000x1000x800x1000x450x0}{UVx1000x1000x1000x800x1000x450x0}{VISx1000x300x1000x600x250x5x0}{IVx800x800x0x300x0x0x0}% +\pgfspectra@elt@search{#1}{Be}{[10.025 100 2],[50.999 3 2],[54.931 2 2],[58.208 6 2],[66.132 4 2],[67.559 8 2],[72.559 4 2],[72.571 5 1],[74.358 5 1],[74.623 7 2],[76.775 2 2],[77.537 8 1],[84.206 20 1],[92.525 2 1],[94.356 10 1],[97.327 10 1],[102.693 8 1],[103.632 5 1],[104.823 15 1],[111.469 1 2],[114.303 20 1],[119.719 60 1],[121.312 2 2],[121.432 1 2],[136.225 2 2],[140.152 1 2],[142.126 10 2],[142.286 5 2],[143.517 1 2],[144.077 2 2],[151.23 20 1],[151.243 60 1],[166.149 100 0],[175.469 2 2],[177.612 15 1],[177.634 20 1],[191.703 3 2],[192.967 5 0],[194.368 10 0],[195.497 60 2],[196.459 50 0],[198.513 5 0],[199.801 60 0],[205.59 50 0],[205.601 100 0],[207.694 75 2],[208.038 60 2],[211.856 25 2],[212.227 15 2],[212.557 10 0],[212.568 20 0],[212.72 15 2],[213.725 5 2],[214.5 25 0],[217.499 55 0],[217.51 55 0],[219.157 5 2],[234.861 950 0],[235.066 20 0],[235.071 60 0],[235.083 200 0],[241.334 2 1],[241.346 16 1],[245.384 20 1],[249.454 35 0],[249.458 35 0],[249.473 100 0],[250.743 16 1],[261.799 5 1],[261.813 20 1],[265.045 100 0],[265.055 60 0],[265.062 200 0],[265.069 60 0],[265.076 100 0],[269.746 5 1],[269.758 20 1],[272.888 20 1],[273.805 30 0],[289.813 20 0],[289.819 10 0],[289.825 20 0],[298.606 30 0],[298.642 10 0],[301.933 60 0],[301.949 30 0],[301.953 30 0],[301.96 20 0],[304.652 10 1],[304.669 30 1],[311.081 10 0],[311.092 10 0],[311.099 20 0],[313.042 480 1],[313.107 320 1],[319.381 20 0],[319.71 20 1],[319.715 30 1],[320.86 20 0],[322.963 60 0],[323.352 2 1],[324.162 10 1],[324.183 30 1],[326.902 15 0],[327.458 100 1],[327.467 30 1],[328.291 30 0],[332.101 30 0],[332.109 30 0],[332.134 220 0],[334.543 20 0],[336.763 60 0],[345.137 5 0],[345.518 300 0],[347.656 20 0],[351.554 300 0],[355.5 10 0],[372.036 100 2],[373.63 100 0],[381.345 700 0],[386.513 40 0],[386.542 80 0],[386.551 1 0],[386.572 6 0],[386.603 100 0],[424.914 90 2],[425.305 100 0],[425.376 60 0],[436.066 300 1],[436.099 500 1],[440.794 400 0],[448.552 2 2],[448.73 100 2],[449.509 1 2],[449.78 140 2],[457.266 12 0],[467.333 700 1],[467.342 1000 1],[470.937 6 0],[482.816 200 1],[484.916 40 0],[485.822 2 1],[508.775 80 0],[521.812 8 1],[521.833 20 1],[525.586 3 1],[527.028 64 1],[527.081 500 1],[540.304 20 1],[541.021 20 1],[614.201 140 2],[622.911 10 0],[627.943 16 1],[627.973 30 1],[647.354 30 0],[654.789 60 1],[655.836 60 1],[656.452 30 0],[663.644 2 1],[675.672 1 1],[675.713 2 1],[678.656 30 0],[688.422 1 0],[688.444 6 0],[698.275 100 0],[715.44 6 0],[715.465 40 0],[720.913 100 0],[740.12 3 1],[740.143 2 1],[755.19 10 0],[761.868 10 0],[761.888 20 0],[809.006 60 0],[815.899 5 0],[815.924 10 0],[825.407 4 0],[828.707 10 0],[854.736 30 0],[854.767 60 0],[880.137 300 0],[888.218 6 0],[919.045 40 0],[924.392 20 0],[934.389 1 1],[939.274 40 0],[947.643 2 1],[947.703 16 1],[984.732 20 0],[989.563 10 0],[989.596 20 0],[993.978 80 0],[1009.552 16 1],[1009.573 20 1],[1011.992 60 1],[1033.103 80 0],[1106.646 30 0],[1117.373 1 1],[1149.639 120 0],[1162.516 2 1],[1166.025 2 1],[1209.536 100 1],[1209.818 30 1],[1464.392 100 0],[1464.475 60 0],[1615.772 200 0],[1785.5381 80 0],[1785.6631 120 0],[1814.3539 100 0],[3177.5051 160 0],[3177.8699 200 0]}{ALLx1000x950x1000x140x0x0x0}{UVx950x950x480x100x0x0x0}{VISx1000x700x1000x140x0x0x0}{IVx300x300x100x0x0x0x0}%[7.61 1 2],[7.648 2 2],[7.853 3 2],[7.866 4 2],[7.892 1 2],[8.189 5 2],[8.238 10 2],[8.32 20 2],[8.476 30 2],[8.831 50 2], +\pgfspectra@elt@search{#1}{B}{[34.4 160 3],[38.5 450 3],[41.18 40 2],[41.87 285 3],[51.077 20 2],[51.085 40 2],[51.824 150 2],[51.827 75 2],[67.7 110 2],[67.714 160 2],[69.395 70 1],[73.136 40 1],[73.144 40 1],[75.848 40 2],[75.867 70 2],[88.254 110 1],[88.268 110 1],[98.467 40 1],[108.188 110 1],[108.207 110 1],[111.22 70 3],[116.89 450 3],[117.09 70 3],[123.016 110 1],[136.246 220 1],[160.046 70 0],[160.073 120 0],[162.358 160 1],[162.377 110 1],[162.402 220 1],[162.416 70 1],[162.434 160 1],[166.304 100 0],[166.687 150 0],[166.729 200 0],[181.786 150 0],[181.837 200 0],[182.591 300 0],[182.641 300 0],[184.281 110 1],[195.383 20 2],[206.578 550 2],[206.638 250 0],[206.665 250 0],[206.693 100 0],[206.719 300 0],[206.723 450 2],[207.709 160 2],[208.891 500 0],[208.957 500 0],[222.03 70 1],[223.409 40 2],[223.459 70 2],[232.303 40 1],[232.867 40 1],[239.32 40 1],[239.505 220 1],[245.969 40 1],[245.99 40 1],[249.677 1000 0],[249.773 1000 0],[252.47 70 3],[253.03 160 3],[282.168 450 3],[282.457 70 3],[282.585 285 3],[291.808 160 1],[303.226 110 1],[317.933 70 1],[332.318 110 1],[332.36 110 1],[345.129 450 1],[412.193 285 1],[419.479 110 1],[424.298 40 2],[424.361 70 2],[447.21 110 1],[447.285 110 1],[448.705 220 2],[449.773 360 2],[478.421 70 1],[494.038 110 1],[608.044 110 1],[628.547 70 1],[703.02 70 1],[703.19 40 1],[783.525 110 2],[784.141 70 2],[866.722 20 0],[866.857 70 0],[1166.004 800 0],[1166.247 570 0],[1562.908 125 0],[1624.038 200 0],[1624.467 250 0],[1899.433 235 0]}{ALLx1000x1000x450x550x450x30x0}{UVx1000x1000x450x550x450x30x0}{VISx360x0x285x360x0x0x0}{IVx800x800x0x110x0x0x0}%[4.859 30 4],[5.268 10 3],[6.031 30 3], +\pgfspectra@elt@search{#1}{C}{[22.719 110 4],[24.491 250 3],[24.866 160 4],[24.874 160 4],[28.914 200 3],[28.923 250 3],[31.242 570 3],[31.246 500 3],[37.169 250 2],[37.175 250 2],[37.178 150 2],[38.403 650 3],[38.418 700 3],[38.6203 500 2],[41.952 400 3],[41.971 500 3],[45.0734 200 2],[45.946 400 2],[45.952 500 2],[45.963 570 2],[51.1522 250 2],[53.5288 250 2],[53.808 300 2],[53.8149 350 2],[53.8312 400 2],[57.4281 350 2],[59.5022 9 1],[68.7053 30 1],[68.7345 50 1],[85.8092 10 1],[85.8559 20 1],[90.3624 30 1],[90.3962 60 1],[90.4142 150 1],[90.448 30 1],[97.703 800 2],[100.986 9 1],[101.008 10 1],[101.037 10 1],[103.6337 80 1],[103.7018 150 1],[115.791 150 0],[115.8019 150 0],[115.8035 150 0],[117.493 370 2],[117.526 350 2],[117.559 330 2],[117.571 500 2],[117.599 350 2],[117.637 370 2],[118.8992 150 0],[118.9447 150 0],[118.9631 200 0],[119.3009 300 0],[119.3031 300 0],[119.324 300 0],[119.3264 300 0],[119.3393 100 0],[119.3649 150 0],[119.3679 150 0],[119.4064 100 0],[119.4488 100 0],[126.1552 100 0],[127.7245 250 0],[127.7282 250 0],[127.7513 300 0],[127.755 300 0],[128.0333 200 0],[131.1363 100 0],[132.3951 9 1],[132.9578 120 0],[132.96 120 0],[133.4532 150 1],[133.5708 300 1],[135.4288 100 0],[135.584 150 0],[136.4164 120 0],[145.9032 100 0],[146.3336 200 0],[146.7402 120 0],[148.1764 150 0],[154.8202 1000 3],[155.0774 900 3],[156.031 150 0],[156.0683 400 0],[156.0708 400 0],[156.1341 100 0],[156.1438 400 0],[165.6266 150 0],[165.6928 120 0],[165.7008 300 0],[165.738 120 0],[165.7907 120 0],[165.8122 150 0],[175.1823 500 0],[193.0905 1000 0],[216.294 250 2],[227.091 40 4],[227.725 5 4],[227.792 20 4],[229.687 800 2],[247.856 800 0],[250.912 250 1],[251.206 350 1],[252.441 200 3],[252.998 300 3],[257.483 250 1],[269.775 150 2],[272.485 110 2],[272.53 150 2],[272.59 150 2],[274.128 350 1],[274.649 250 1],[283.671 1000 1],[283.76 800 1],[298.211 200 2],[299.262 800 1],[387.619 350 1],[387.641 350 1],[387.666 350 1],[391.898 570 1],[392.069 800 1],[405.606 150 2],[406.794 200 2],[406.891 250 2],[407.026 250 2],[407.452 250 1],[407.585 350 1],[416.286 150 2],[418.69 250 2],[426.7 800 1],[426.726 1000 1],[432.556 200 2],[464.742 600 2],[465.025 520 2],[465.147 375 2],[465.83 200 3],[466.586 200 2],[477.175 200 0],[493.205 200 0],[494.388 5 4],[494.456 5 4],[505.217 200 0],[513.294 350 1],[513.328 350 1],[514.349 350 1],[514.516 570 1],[515.109 400 1],[538.034 300 0],[564.807 250 1],[566.247 350 1],[569.592 450 2],[580.133 250 3],[581.198 200 3],[582.642 150 2],[588.977 570 1],[589.159 350 1],[600.113 200 0],[600.603 250 0],[600.718 110 0],[601.068 150 0],[601.322 300 0],[601.484 250 0],[657.805 800 1],[658.288 570 1],[658.761 200 0],[674.438 150 2],[678.39 250 1],[703.725 150 2],[711.318 250 0],[711.519 250 0],[711.563 250 1],[711.699 200 0],[711.99 350 1],[723.132 800 1],[723.642 1000 1],[761.265 150 2],[772.62 90 3],[786.089 200 0],[805.862 200 0],[819.648 300 2],[833.299 150 2],[833.515 520 0],[850.032 300 2],[906.143 250 0],[906.247 200 0],[907.828 200 0],[908.851 250 0],[909.483 450 0],[911.18 300 0],[940.573 800 0],[960.303 150 0],[962.08 250 0],[965.844 300 0],[1068.308 200 0],[1069.125 300 0],[1161.929 12 0],[1162.883 23 0],[1165.885 13 0],[1165.968 47 0],[1166.963 24 0],[1174.822 85 0],[1175.332 142 0],[1175.476 114 0],[1177.754 11 0],[1189.291 17 0],[1189.575 30 0],[1261.41 26 0],[1350.227 20 0],[1439.965 38 0],[1440.325 16 0],[1442.012 61 0],[1442.903 12 0],[1444.224 13 0],[1655.966 12 0],[1689.0381 50 0],[1733.8561 10 0],[1744.86 11 0],[1813.9801 13 0],[1972.199 23 0]}{ALLx1000x1000x1000x800x1000x450x0}{UVx1000x1000x1000x800x1000x450x0}{VISx1000x300x1000x600x250x5x0}{IVx800x800x0x300x0x0x0}%[3.4973 110 4],[4.0268 450 4], \pgfspectra@elt@search{#1}{N}{[16.6947 52 4],[18.175 400 3],[18.6069 52 4],[18.6153 62 4],[19.17 400 3],[19.29 400 3],[19.687 500 3],[19.723 500 3],[20.26 500 3],[20.594 500 3],[20.597 500 3],[20.603 500 3],[20.9303 90 4],[21.72 500 3],[21.79 500 3],[22.34 500 3],[22.512 800 3],[22.521 800 3],[23.412 600 3],[23.42 600 3],[23.425 600 3],[23.607 550 3],[23.799 500 3],[23.87 500 3],[23.88 600 3],[23.962 500 3],[24.72 900 3],[24.7561 90 4],[24.7706 120 4],[24.843 500 3],[24.846 500 3],[24.848 500 3],[25.795 500 2],[25.85 650 2],[25.919 700 2],[26.009 800 2],[26.045 600 3],[26.128 800 2],[26.291 500 2],[26.523 500 2],[26.527 500 2],[26.6196 150 4],[26.6379 200 4],[26.87 500 2],[27.099 650 3],[28.342 250 3],[28.348 300 3],[28.358 350 3],[28.556 600 3],[29.77 600 3],[29.782 700 3],[30.032 650 3],[30.3123 90 3],[30.328 500 3],[31.4715 150 2],[31.485 200 2],[31.4877 90 2],[31.5053 150 3],[32.2503 120 3],[32.257 150 3],[32.2724 200 3],[32.3175 120 3],[32.326 600 2],[33.505 300 3],[33.835 500 2],[34.02 500 2],[35.193 500 3],[35.198 500 2],[35.306 700 3],[36.2833 120 2],[36.2881 150 2],[36.2946 150 2],[36.2985 90 2],[37.4204 300 2],[37.4441 350 2],[38.748 500 2],[42.077 500 3],[45.1869 250 2],[45.2226 300 2],[46.374 650 3],[64.4634 285 1],[64.4837 360 1],[64.5178 450 1],[64.75 140 0],[66.0286 360 1],[67.1016 170 1],[67.1386 285 1],[67.163 150 1],[67.1773 160 1],[67.2001 170 1],[68.4996 500 2],[68.5513 570 2],[68.5816 650 2],[68.6335 500 2],[69.27 350 0],[71.3518 90 4],[71.386 150 4],[74.6984 285 1],[74.8195 150 4],[74.8291 200 4],[76.3336 500 2],[76.4359 570 2],[76.5148 570 3],[77.1544 250 2],[77.1901 300 2],[77.2385 350 2],[77.2891 200 2],[77.2975 150 2],[77.5965 650 1],[88.567 90 0],[90.9697 90 0],[91.0278 80 0],[91.0645 40 0],[91.5612 450 1],[91.5962 450 1],[91.6012 550 1],[91.6701 650 1],[92.1992 520 3],[92.1992 520 3],[92.2519 500 3],[92.2519 500 3],[92.3057 480 3],[92.4283 520 3],[95.3415 90 0],[95.3655 100 0],[95.397 130 0],[95.5335 1000 3],[96.399 130 0],[96.4626 115 0],[96.5041 70 0],[97.9842 650 2],[97.9919 700 2],[98.979 900 2],[99.1514 700 2],[99.1579 1000 2],[103.616 150 3],[106.7614 90 0],[106.8612 60 0],[107.871 90 3],[108.399 450 1],[108.458 600 1],[108.5546 430 1],[108.5701 650 1],[109.7237 175 0],[109.8095 115 0],[109.826 115 0],[110.036 105 0],[110.0465 40 0],[110.1291 90 0],[113.4165 360 0],[113.4415 385 0],[113.498 410 0],[114.365 105 0],[116.3884 130 0],[116.4206 60 0],[116.4325 105 0],[116.7448 270 0],[116.8334 105 0],[116.8417 60 0],[116.8536 195 0],[117.651 230 0],[117.663 105 0],[117.7695 195 0],[118.3031 500 2],[118.455 570 2],[118.801 90 3],[119.955 410 0],[120.0223 385 0],[120.071 360 0],[122.5026 175 0],[122.537 160 0],[122.841 130 0],[122.879 160 0],[123.8821 1000 4],[124.2804 900 4],[124.3179 360 0],[124.3306 315 0],[131.054 290 0],[131.095 250 0],[131.9 230 0],[131.968 315 0],[132.657 115 0],[132.792 115 0],[138.7371 150 2],[141.194 360 0],[149.2625 700 0],[149.282 490 0],[149.4675 640 0],[154.9336 90 4],[161.633 200 4],[161.969 350 4],[171.855 1000 3],[172.9945 250 2],[174.2729 775 0],[174.5252 700 0],[174.7848 570 2],[175.1218 350 2],[175.1657 650 2],[180.4486 150 2],[180.5669 200 2],[184.642 150 2],[186.037 90 4],[188.506 350 2],[188.522 400 2],[190.799 200 2],[191.955 150 2],[191.977 150 2],[192.065 300 2],[192.084 150 2],[192.13 200 2],[206.401 200 2],[206.442 250 2],[206.868 120 2],[207.109 90 2],[208.034 90 3],[209.553 160 1],[209.62 70 1],[209.686 110 1],[211.759 90 2],[212.15 90 2],[213.018 110 1],[214.278 160 1],[214.731 90 2],[218.82 200 2],[218.838 150 2],[220.609 160 1],[228.669 160 1],[228.844 110 1],[231.649 220 1],[231.669 160 1],[231.705 285 1],[231.809 90 3],[246.127 160 1],[247.769 150 3],[249.683 110 1],[249.697 70 1],[252.022 110 1],[252.079 160 1],[252.223 220 1],[259.094 110 1],[264.565 250 3],[264.618 300 3],[264.696 350 3],[268.218 250 2],[268.92 90 2],[270.984 160 1],[279.922 110 1],[282.364 110 1],[285.916 60 4],[288.527 160 1],[297.452 90 4],[298.078 150 4],[298.131 250 4],[299.843 60 4],[300.683 220 1],[307.825 90 3],[336.734 120 2],[343.715 360 1],[346.337 90 3],[347.871 570 3],[348.299 500 3],[348.496 400 3],[374.754 90 3],[375.467 90 2],[377.105 120 2],[383.837 285 1],[391.9 360 1],[393.852 90 2],[395.585 450 1],[399.5 1000 1],[399.863 150 2],[400.358 200 2],[403.508 360 1],[404.131 550 1],[404.353 360 1],[405.776 150 3],[409.733 250 2],[409.994 140 0],[410.343 200 2],[410.995 185 0],[417.616 285 1],[419.576 120 2],[420.01 150 2],[422.774 285 1],[423.691 285 1],[423.705 220 1],[424.178 450 1],[433.291 90 2],[434.568 120 2],[437.911 300 2],[443.274 285 1],[444.703 650 1],[451.091 90 2],[451.486 120 2],[453.041 360 1],[460.148 550 1],[460.373 350 4],[460.633 90 3],[460.716 450 1],[461.387 360 1],[461.998 250 4],[462.139 450 1],[463.054 870 1],[463.414 90 2],[464.064 120 2],[464.308 550 1],[478.813 285 1],[480.329 450 1],[484.738 180 0],[485.882 90 2],[486.715 150 2],[489.511 285 1],[491.494 160 0],[493.512 210 0],[494.456 200 4],[495.023 160 0],[496.398 350 0],[498.737 285 1],[499.436 450 1],[500.148 650 1],[500.27 360 1],[500.515 870 1],[500.732 550 1],[501.062 450 1],[501.639 360 1],[502.566 360 1],[504.51 550 1],[528.12 185 0],[529.268 140 0],[531.435 90 2],[532.082 200 2],[532.718 150 2],[549.567 450 1],[553.536 285 1],[566.663 650 1],[567.602 550 1],[567.956 870 1],[568.621 450 1],[571.077 450 1],[574.73 285 1],[575.25 700 0],[576.475 240 0],[582.954 265 0],[585.404 235 0],[592.781 360 1],[593.178 550 1],[594.024 285 1],[594.165 650 1],[595.239 285 1],[599.943 160 0],[600.847 210 0],[616.776 285 1],[637.962 360 1],[638.077 150 3],[641.165 185 0],[642.064 210 0],[642.302 210 0],[642.832 210 0],[643.768 185 0],[644.094 235 0],[645.411 90 2],[645.79 185 0],[646.702 120 2],[646.844 300 0],[648.171 265 0],[648.205 750 1],[648.27 360 0],[648.375 300 0],[648.48 325 0],[649.122 160 0],[649.954 210 0],[650.631 185 0],[661.056 750 1],[662.254 185 0],[663.694 185 0],[664.496 235 0],[664.65 185 0],[665.346 235 0],[665.651 210 0],[672.262 185 0],[739.864 210 0],[740.612 160 0],[740.624 265 0],[742.364 685 0],[744.229 785 0],[746.831 900 0],[760.88 185 0],[761.846 60 4],[776.224 450 1],[818.487 400 0],[818.802 400 0],[820.036 250 0],[821.072 300 0],[821.634 570 0],[822.314 400 0],[824.239 400 0],[843.874 550 1],[856.774 500 0],[859.4 570 0],[862.924 650 0],[865.589 500 0],[867.608 220 1],[868.028 700 0],[868.34 650 0],[868.615 500 0],[868.743 110 1],[869.9 110 1],[870.325 500 0],[871.054 160 1],[871.17 570 0],[871.883 500 0],[872.889 250 0],[874.736 200 0],[938.68 500 0],[939.279 570 0],[946.068 250 0],[986.333 200 0],[986.541 160 1],[986.821 110 1],[988.739 160 1],[989.109 220 1],[996.186 160 1],[996.934 220 1],[1002.327 285 1],[1003.545 220 1],[1006.515 220 1],[1007.012 160 1],[1010.513 250 0],[1010.889 300 0],[1011.248 350 0],[1011.464 400 0],[1012.627 110 1],[1053.957 250 0],[1207.451 200 0],[1218.682 380 0],[1228.897 225 0],[1232.876 290 0],[1238.165 310 0],[1243.84 180 0],[1246.125 510 0],[1246.962 920 0],[1342.961 500 0],[1358.133 840 0],[1358.773 180 0],[1360.227 180 0],[1362.418 290 0],[1475.707 250 0],[1486.887 100 0],[1496.66 160 0],[1558.227 180 0],[1751.658 120 0],[1758.4859 100 0],[1787.826 100 0]}{ALLx1000x920x1000x1000x1000x1000x0}{UVx1000x775x650x1000x1000x1000x0}{VISx1000x900x1000x300x150x350x0}{IVx920x920x550x0x0x0x0}% \pgfspectra@elt@search{#1}{O}{[12.4616 80 4],[13.5523 110 4],[13.8109 80 4],[13.9029 110 4],[15.1447 80 4],[15.1477 110 4],[15.1546 150 4],[16.4574 80 4],[16.4657 110 4],[16.4709 80 4],[16.6235 80 4],[16.799 150 4],[17.0219 110 4],[17.2169 450 4],[18.5745 250 4],[19.2751 375 4],[19.2799 450 4],[19.2906 520 4],[19.3003 80 4],[19.4593 200 4],[19.586 150 3],[19.601 200 3],[20.2161 80 4],[20.2224 80 4],[20.2283 80 4],[20.2334 80 4],[20.2393 150 4],[20.378 110 4],[20.382 150 4],[20.385 100 4],[20.389 200 4],[20.394 100 4],[20.718 110 3],[20.724 150 3],[20.7794 300 4],[21.504 150 4],[21.5103 200 4],[21.5245 250 4],[21.6018 250 4],[22.0352 520 4],[22.7372 80 4],[22.7469 80 4],[22.7511 150 4],[22.7549 80 4],[22.7634 80 4],[22.7689 80 4],[23.1823 150 4],[23.346 140 3],[23.35 150 3],[23.352 110 3],[23.356 200 3],[23.36 110 3],[23.836 90 3],[23.857 180 3],[24.8459 110 4],[25.256 110 3],[25.295 110 3],[25.308 150 3],[26.039 300 3],[26.056 250 3],[26.434 80 2],[26.448 110 2],[26.697 110 2],[26.698 150 2],[26.703 150 2],[27.738 150 2],[27.963 300 3],[27.994 375 3],[28.571 110 3],[28.584 150 3],[28.6448 110 4],[29.562 80 2],[29.566 110 2],[29.572 120 2],[30.341 150 2],[30.346 150 2],[30.352 140 2],[30.362 160 2],[30.369 160 2],[30.38 250 2],[30.56 200 2],[30.566 250 2],[30.57 190 2],[30.577 300 2],[30.584 190 2],[30.662 200 3],[30.688 150 3],[32.0979 450 2],[32.845 300 2],[32.874 250 2],[34.531 300 2],[35.514 110 2],[35.533 90 2],[35.547 80 2],[35.902 200 2],[35.922 190 2],[35.938 150 2],[37.38 210 2],[37.4 200 2],[37.408 300 2],[37.416 190 2],[37.433 200 2],[37.444 210 2],[39.5558 450 2],[43.498 300 2],[50.7391 800 2],[50.7683 900 2],[50.8182 1000 2],[52.5795 1000 2],[53.783 250 1],[53.826 300 1],[53.909 220 1],[53.955 200 1],[53.985 150 1],[55.333 700 3],[55.4075 775 3],[55.4514 850 3],[55.5261 700 3],[59.7818 700 2],[59.9598 1000 2],[60.8398 580 3],[60.97 110 2],[60.9829 640 3],[61.004 160 2],[61.075 200 2],[61.085 100 2],[61.6952 270 3],[61.7005 150 3],[61.7036 200 3],[62.4617 520 3],[62.513 580 3],[62.5852 640 3],[62.973 1000 4],[64.4148 150 1],[67.295 200 1],[67.377 150 1],[68.1272 230 4],[68.5544 70 0],[70.2332 800 2],[70.2822 800 2],[70.2899 900 2],[70.385 1000 2],[71.8484 900 1],[71.8562 600 1],[74.4794 70 0],[75.8678 700 4],[75.9441 640 4],[76.0228 580 4],[76.0445 775 4],[76.1128 640 4],[76.2003 700 4],[77.0793 70 0],[77.1056 90 0],[77.4518 520 4],[77.5321 70 0],[77.9734 200 3],[77.9821 315 3],[77.9912 360 3],[77.9997 200 3],[78.7711 640 3],[79.0109 520 3],[79.0199 700 3],[79.1973 70 0],[79.666 300 1],[80.22 200 3],[80.2255 160 3],[80.4267 90 0],[80.4848 70 0],[80.5295 70 0],[80.581 80 0],[83.2762 240 1],[83.2927 600 2],[83.3332 450 1],[83.3742 780 2],[83.4467 600 1],[83.5096 600 2],[83.5292 800 2],[87.7879 40 0],[92.1296 130 3],[92.1366 160 3],[92.2008 80 0],[92.3367 200 3],[92.3433 130 3],[93.5193 90 0],[94.8686 40 0],[97.1738 90 0],[97.6448 40 0],[98.8773 160 0],[99.0204 40 0],[102.5762 250 0],[102.7431 90 0],[103.923 160 0],[104.0942 60 0],[115.2152 40 0],[130.2168 900 0],[130.4858 600 0],[130.6029 300 0],[133.8612 200 3],[134.2992 130 3],[134.3512 230 3],[137.1292 640 4],[147.689 160 2],[150.672 160 4],[159.001 285 2],[159.133 160 2],[164.368 315 4],[170.7996 160 4],[176.012 220 2],[176.042 110 2],[176.322 220 2],[176.448 220 2],[176.778 750 2],[176.824 550 2],[177.167 360 2],[177.3 110 2],[177.385 110 2],[177.916 220 2],[178.103 160 2],[178.485 160 2],[178.966 220 2],[184.826 110 2],[185.662 110 2],[187.278 285 2],[187.287 285 2],[187.494 285 2],[192.004 160 2],[192.075 110 2],[192.152 110 2],[192.349 220 2],[192.382 110 2],[192.694 110 2],[201.327 360 2],[202.696 160 2],[204.567 220 2],[205.274 160 2],[228.342 30 1],[228.489 30 1],[229.332 110 1],[230.035 200 1],[231.305 30 1],[231.612 30 1],[231.679 30 1],[231.968 50 1],[232.215 30 1],[233.931 30 1],[239.044 200 2],[239.433 80 2],[241.16 110 1],[242.284 80 2],[242.555 80 1],[243.356 250 1],[243.606 80 1],[243.883 80 2],[244.426 80 1],[244.555 300 1],[244.9372 200 3],[245.004 200 3],[245.499 200 2],[249.344 200 3],[249.377 200 3],[250.773 200 3],[250.919 230 3],[251.72 200 3],[255.806 200 2],[268.753 80 2],[269.549 110 2],[273.334 300 1],[274.746 110 1],[278.101 1000 4],[278.699 920 4],[278.985 775 4],[283.626 160 3],[292.145 160 3],[294.133 200 4],[294.165 210 4],[295.968 80 2],[297.229 265 0],[298.378 250 2],[301.763 80 2],[302.345 80 2],[304.302 80 2],[304.713 200 2],[305.93 110 2],[306.342 460 3],[307.161 410 3],[312.171 80 2],[312.262 160 1],[312.944 220 1],[313.286 110 2],[313.482 450 1],[313.844 285 1],[314.466 160 4],[320.966 160 3],[323.857 80 2],[326.098 200 2],[326.546 300 2],[326.731 80 2],[327.098 220 1],[327.352 220 1],[327.769 220 1],[328.759 360 1],[330.515 160 1],[330.66 160 1],[331.23 80 2],[334.074 110 2],[334.808 230 3],[334.911 270 3],[335.427 160 3],[337.54 200 3],[337.72 220 1],[337.806 130 3],[338.12 360 3],[338.552 360 3],[339.025 285 1],[339.679 270 3],[340.352 360 3],[340.738 220 1],[340.966 230 3],[340.984 160 1],[341.169 410 3],[341.364 230 3],[344.41 80 2],[345.512 80 2],[347.081 285 1],[348.983 200 3],[349.224 160 3],[356.039 230 3],[356.333 270 3],[369.87 80 2],[370.275 80 2],[370.337 80 2],[370.724 110 2],[371.275 220 1],[371.508 110 2],[372.593 315 3],[372.733 285 1],[372.903 360 3],[373.685 410 3],[373.992 160 1],[374.4 110 2],[374.489 230 3],[374.949 360 1],[375.467 150 2],[375.721 80 2],[375.987 250 2],[379.126 110 2],[380.314 160 1],[382.341 120 0],[391.196 450 1],[391.929 160 1],[394.729 185 0],[394.748 160 0],[394.759 140 0],[395.437 220 1],[395.461 100 0],[396.159 200 2],[397.326 450 1],[398.22 220 1],[406.99 160 1],[407.216 285 1],[407.587 450 1],[408.391 80 1],[408.714 50 1],[408.927 150 1],[409.724 110 1],[410.5 220 1],[411.922 285 1],[412.399 100 4],[413.281 160 1],[414.606 50 1],[415.33 220 1],[418.546 285 1],[418.979 450 1],[423.327 80 0],[425.374 50 1],[425.398 50 1],[427.547 50 1],[430.378 50 1],[431.714 285 1],[433.686 160 1],[434.556 220 1],[434.943 285 1],[436.69 220 1],[436.825 100 0],[439.595 220 1],[441.491 450 1],[441.698 285 1],[444.821 160 1],[445.238 160 1],[446.545 50 1],[446.628 50 1],[446.783 50 1],[446.941 50 1],[459.097 360 1],[459.617 285 1],[460.939 80 1],[463.885 160 1],[464.181 360 1],[464.914 450 1],[465.084 160 1],[466.164 360 1],[467.623 285 1],[469.921 220 1],[470.536 285 1],[492.46 160 1],[493.027 230 4],[494.306 220 1],[532.91 135 0],[532.968 160 0],[533.074 190 0],[543.518 90 0],[543.578 110 0],[543.686 135 0],[557.734 120 0],[559.237 110 2],[559.791 130 4],[595.839 160 0],[595.858 190 0],[599.528 80 0],[604.623 160 0],[604.644 190 0],[604.649 110 0],[610.627 100 0],[615.598 400 0],[615.677 450 0],[615.818 490 0],[625.683 80 0],[626.155 100 0],[636.634 100 0],[637.432 100 0],[645.36 320 0],[645.444 360 0],[645.598 400 0],[650.024 130 4],[660.491 80 0],[665.383 100 0],[700.192 360 0],[700.223 450 0],[715.67 210 0],[725.415 400 0],[725.445 450 0],[725.453 320 0],[747.644 210 0],[747.724 100 0],[747.908 120 0],[748.067 120 0],[770.675 100 0],[777.194 870 0],[777.417 810 0],[777.539 750 0],[788.627 80 0],[794.315 100 0],[794.717 100 0],[794.755 235 0],[795.08 210 0],[795.216 185 0],[798.194 110 0],[798.24 135 0],[798.698 190 0],[798.733 135 0],[799.507 250 0],[822.182 400 0],[822.765 265 0],[823.002 265 0],[823.3 325 0],[823.535 120 0],[842.616 120 0],[844.625 810 0],[844.636 1000 0],[844.676 935 0],[882.043 325 0],[905.701 160 0],[911.829 120 0],[913.471 80 0],[915.014 80 0],[915.148 80 0],[915.601 235 0],[926.081 450 0],[926.084 490 0],[926.094 450 0],[926.258 400 0],[926.267 540 0],[926.277 590 0],[926.594 490 0],[926.601 640 0],[939.919 185 0],[948.116 120 0],[948.288 120 0],[948.743 235 0],[949.271 140 0],[949.797 265 0],[949.93 160 0],[950.559 235 0],[952.196 210 0],[952.336 120 0],[952.396 120 0],[952.828 100 0],[962.213 100 0],[962.529 120 0],[967.738 160 0],[969.466 80 0],[969.491 65 0],[974.15 235 0],[976.065 235 0],[990.905 120 0],[993.698 140 0],[994.041 120 0],[999.531 160 0],[1042.118 120 0],[1128.634 590 0],[1128.691 640 0],[1128.702 490 0],[1128.732 490 0],[1129.51 490 0],[1129.768 540 0],[1130.238 590 0],[1135.869 265 0],[1246.402 490 0],[1257.004 450 0],[1299.077 120 0],[1307.691 160 0],[1316.389 700 0],[1316.485 750 0],[1316.511 640 0],[1621.206 160 0],[1796.6699 120 0],[1802.1211 590 0],[1804.148 120 0],[1804.2189 120 0],[1804.623 120 0],[1822.923 140 0],[1824.3631 540 0],[2617.3561 140 0]}{ALLx1000x1000x900x1000x850x1000x0}{UVx1000x900x900x1000x850x1000x0}{VISx870x870x450x200x0x230x0}{IVx1000x1000x0x0x0x0x0}% \pgfspectra@elt@search{#1}{F}{[13.454 8 4],[14.795 8 4],[14.8 10 4],[15.251 8 4],[15.854 8 4],[16.227 8 4],[16.35 8 4],[16.356 10 4],[16.598 18 4],[16.618 20 4],[16.979 6 3],[16.984 6 3],[17.107 6 3],[17.47 8 4],[17.637 8 3],[17.843 10 4],[17.859 8 4],[18.152 8 3],[18.157 8 3],[18.298 8 4],[18.672 8 4],[18.679 8 4],[18.684 10 4],[18.697 8 4],[18.701 8 4],[18.724 6 3],[19.057 12 4],[19.084 14 4],[19.197 8 4],[19.639 10 3],[19.645 12 3],[19.976 10 3],[19.98 10 3],[19.985 10 3],[19.993 10 3],[20 10 3],[20.009 14 3],[20.101 12 3],[20.106 14 3],[20.11 12 3],[20.116 16 3],[20.122 12 3],[20.555 8 4],[20.825 18 3],[21.385 14 3],[21.406 14 3],[22.077 14 3],[22.694 12 3],[22.71 10 3],[23.012 10 2],[23.322 12 3],[23.339 10 3],[23.986 14 3],[24.002 14 3],[24.008 18 3],[24.015 14 3],[24.028 14 3],[24.037 14 3],[25.103 20 3],[25.572 10 2],[25.577 12 2],[25.586 14 2],[26.171 14 2],[26.175 12 2],[26.381 16 2],[27.023 12 3],[27.969 14 2],[31.522 16 2],[31.554 14 2],[31.575 12 2],[37.53 6 1],[38.09 6 1],[40.704 8 1],[41.965 28 3],[42.005 30 3],[42.073 32 3],[42.951 20 2],[43.015 22 2],[43.022 16 2],[43.076 30 3],[43.091 10 1],[43.155 8 1],[43.564 8 1],[45.718 14 1],[46.429 18 2],[46.437 20 4],[46.511 20 2],[46.537 22 4],[46.598 24 4],[46.699 20 4],[47.195 8 1],[47.2 12 1],[47.271 10 1],[47.302 8 1],[48.46 18 1],[49.057 26 3],[49.1 32 3],[49.738 10 3],[49.783 12 3],[49.88 14 3],[50.616 18 4],[50.808 20 4],[50.839 24 2],[51.364 10 1],[51.397 14 4],[51.408 12 4],[51.494 14 1],[52.459 16 4],[52.529 18 4],[52.63 20 4],[54.685 14 1],[54.787 12 1],[54.832 10 1],[54.852 8 1],[56.769 24 2],[56.775 22 2],[57.064 28 3],[57.13 28 3],[57.139 30 3],[57.266 32 3],[60.567 18 1],[60.629 16 1],[60.68 20 1],[60.692 14 1],[60.747 16 1],[60.806 18 1],[63.014 16 2],[63.02 18 2],[64.767 14 4],[64.777 20 4],[64.787 22 4],[64.797 14 4],[65.403 26 4],[65.612 24 2],[65.687 26 2],[65.723 22 4],[65.733 28 4],[65.833 28 2],[67.612 28 3],[67.715 26 3],[67.722 30 3],[67.899 26 3],[67.921 32 3],[75.704 12 4],[78.039 3 0],[78.052 2 0],[78.238 2 0],[79.188 2.4 0],[79.254 2 0],[79.442 2 0],[80.696 30 0],[80.96 25 0],[95.187 100 0],[95.483 200 0],[95.555 150 0],[95.852 100 0],[97.24 4 0],[97.39 70 0],[97.622 20 0],[97.651 8 0],[97.775 20 0],[108.231 12 4],[108.839 14 4],[112.976 8 1],[121.903 16 2],[126.687 16 2],[126.771 18 2],[129.754 14 2],[132.706 8 1],[132.811 10 1],[133.359 8 1],[134.36 10 1],[134.404 8 1],[135.992 14 2],[140.061 10 1],[140.714 8 1],[149.309 12 1],[149.324 10 1],[149.331 8 1],[149.893 22 2],[150.201 24 2],[150.418 22 2],[150.479 28 2],[150.63 26 2],[150.677 22 2],[155.302 20 2],[155.759 22 2],[156.373 20 2],[156.554 20 2],[162.34 20 2],[165.076 20 2],[167.039 26 2],[167.74 28 2],[170.213 8 1],[171.699 20 2],[174.475 8 1],[174.555 10 1],[174.739 12 1],[177.009 24 2],[177.067 30 2],[177.293 22 2],[177.336 28 2],[179.165 32 2],[180.303 22 2],[180.47 20 2],[180.59 34 2],[183.93 22 2],[183.997 24 2],[184.014 22 2],[190.076 16 2],[202.744 20 2],[203.032 24 2],[217.144 8 3],[221.717 24 2],[222.918 2 4],[225.272 4 4],[229.829 10 3],[245.063 4 4],[245.158 8 3],[245.207 24 2],[245.692 10 3],[246.133 2 4],[246.485 26 2],[247.029 26 2],[247.873 24 2],[248.437 30 2],[254.277 24 2],[255.611 20 1],[258.004 24 2],[258.381 26 2],[259.323 24 2],[259.553 26 2],[259.928 28 2],[262.501 26 2],[262.97 28 2],[265.644 24 2],[269.398 2 4],[270.23 2 4],[270.396 2 4],[270.717 4 4],[275.555 26 2],[275.963 32 2],[278.815 24 2],[281.145 32 2],[282.074 8 3],[282.613 10 3],[283.399 28 2],[283.563 30 2],[286.033 30 2],[286.286 24 2],[287.14 20 1],[288.758 28 2],[288.945 30 2],[290.53 24 2],[291.329 28 2],[291.634 32 2],[293.249 28 2],[299.428 28 2],[299.721 24 2],[299.753 26 2],[299.947 24 2],[303.925 26 2],[303.975 24 2],[304.28 32 2],[304.914 30 2],[305.999 24 1],[311.362 28 2],[311.57 32 2],[312.154 36 2],[312.479 28 2],[313.423 28 2],[314.699 28 2],[315.349 28 1],[317.417 36 2],[317.476 34 2],[320.276 34 1],[321.4 24 2],[326.408 28 1],[341.465 28 1],[341.645 30 1],[341.68 28 1],[341.7 32 1],[347.296 32 1],[347.331 30 1],[347.478 34 1],[350.139 38 1],[350.145 40 1],[350.157 40 1],[350.284 36 1],[350.296 40 1],[350.311 42 1],[350.537 34 1],[350.552 40 1],[350.563 44 1],[352.289 32 1],[353.687 30 1],[354.177 32 1],[359.052 32 1],[359.41 1.2 0],[359.869 34 1],[360.139 36 1],[360.284 38 1],[366.817 2.4 0],[370.453 36 1],[371.035 32 1],[373.957 32 1],[380.583 28 1],[384.709 54 1],[384.999 52 1],[385.167 50 1],[389.848 1 0],[389.883 38 1],[390.193 36 1],[390.382 34 1],[393.069 1.6 0],[393.426 1 0],[394.856 1 0],[397.204 30 1],[397.267 32 1],[397.478 34 1],[402.473 48 1],[402.501 44 1],[402.549 46 1],[408.391 32 1],[410.307 38 1],[410.322 34 1],[410.351 40 1],[410.371 36 1],[410.387 34 1],[410.916 34 1],[411.654 32 1],[411.921 30 1],[420.715 28 1],[422.516 34 1],[424.412 30 1],[424.623 40 1],[424.639 38 1],[424.659 36 1],[424.677 34 1],[424.684 32 1],[427.536 34 1],[427.753 32 1],[427.893 32 1],[429.917 40 1],[442.03 28 2],[442.735 24 2],[443.232 24 2],[444.653 32 1],[444.672 34 1],[444.719 36 1],[447.999 28 2],[473.438 28 1],[485.939 34 1],[493.326 32 1],[496.065 1.2 0],[500.2 28 1],[501.254 30 2],[511.099 32 2],[517.325 30 1],[523.041 3 0],[527.901 2.4 0],[554.052 3.6 0],[555.243 2.4 0],[557.733 2 0],[558.927 32 1],[562.406 4 0],[562.693 2.4 0],[565.915 3 0],[566.753 8 0],[567.167 18 0],[568.914 3.6 0],[570.082 5 0],[570.731 5 0],[575.317 28 2],[576.12 24 2],[595.015 2.4 0],[595.919 5 0],[596.528 14 0],[599.443 10 0],[601.583 30 0],[603.804 16 0],[604.754 180 0],[608.011 20 0],[609.182 30 2],[612.55 28 2],[614.976 160 0],[621.087 80 0],[623.357 26 2],[623.965 2600 0],[624.79 28 1],[634.851 2000 0],[636.305 28 2],[641.365 1600 0],[656.969 90 0],[658.039 60 0],[665.041 80 0],[669.048 360 0],[670.828 80 0],[677.398 1400 0],[679.553 300 0],[683.426 1800 0],[685.603 10000 0],[687.022 1600 0],[690.248 3000 0],[690.982 1200 0],[696.635 800 0],[703.747 9000 0],[712.789 6000 0],[717.99 26 1],[720.236 3000 0],[721.179 26 1],[730.903 200 0],[731.102 3000 0],[731.43 140 0],[733.196 1000 0],[733.677 24 2],[735.494 26 2],[739.869 2000 0],[742.565 800 0],[748.272 440 0],[748.916 500 0],[751.492 180 0],[755.224 1000 0],[757.338 1000 0],[760.717 1400 0],[775.47 3600 0],[780.021 3000 0],[787.918 60 0],[789.859 100 0],[793.631 70 0],[795.632 60 0],[801.601 16 1],[804.093 200 0],[807.552 180 0],[807.752 70 0],[812.656 70 0],[812.926 120 0],[815.951 60 0],[817.934 120 0],[819.124 60 0],[820.863 70 0],[821.473 500 0],[823.077 600 0],[823.219 100 0],[827.462 300 0],[829.858 400 0],[830.24 120 0],[880.758 180 0],[890.092 200 0],[891.278 60 0],[902.549 70 0],[904.21 80 0],[917.868 70 0],[943.367 40 0],[950.53 5 0],[966.204 2.4 0],[973.434 5 0],[982.211 3 0],[990.265 2.4 0],[1004.798 16 1],[1028.545 3 0],[1086.231 4 0]}{ALLx10000x10000x54x36x32x28x0}{UVx200x200x44x36x32x28x0}{VISx10000x10000x54x32x0x0x0}{IVx3000x3000x16x0x0x0x0}% @@ -44,7 +44,7 @@ \pgfspectra@elt@search{#1}{Na}{[10.628 100 4],[10.63 100 4],[10.64 100 4],[10.649 100 4],[10.793 200 4],[10.802 200 4],[11.082 200 4],[11.088 200 4],[11.151 100 4],[11.201 300 4],[11.47 100 4],[11.474 100 4],[11.799 400 4],[12.004 100 4],[12.518 400 4],[12.522 400 4],[12.529 500 4],[12.543 300 4],[12.546 300 4],[12.59 200 4],[12.621 100 4],[12.656 200 4],[12.661 100 4],[12.744 400 4],[12.747 400 4],[12.803 400 4],[12.805 400 4],[13.068 200 4],[13.135 300 4],[13.141 200 4],[13.164 300 4],[13.316 500 4],[13.339 400 4],[13.427 200 4],[13.579 300 4],[13.585 300 4],[13.6551 4 3],[13.6854 4 3],[13.881 200 4],[13.892 300 4],[13.9961 4 3],[14.2232 7 3],[14.2359 6 3],[14.6064 8 3],[14.6302 7 3],[14.864 400 4],[14.886 300 4],[15.0298 9 3],[15.0543 7 3],[15.064 7 3],[15.0687 8 3],[15.113 400 4],[15.1299 7 3],[15.5083 7 3],[15.524 7 3],[15.5448 7 3],[15.551 8 3],[15.6537 8 3],[15.721 300 4],[16.2448 12 3],[16.319 10 3],[16.362 300 4],[16.8411 12 3],[16.8546 10 3],[18.395 5 2],[18.935 5 2],[19.0445 10 3],[19.38 5 2],[19.404 5 2],[19.417 5 2],[19.429 5 2],[19.468 6 2],[19.553 6 2],[19.9772 10 3],[20.215 6 2],[20.219 6 2],[20.249 8 2],[20.271 5 2],[20.272 7 2],[20.276 8 2],[20.306 8 2],[20.328 8 2],[20.333 8 2],[20.549 10 3],[20.73 10 2],[21.534 10 2],[21.586 12 2],[21.612 12 2],[22.987 15 2],[23.059 12 2],[25.052 50 2],[25.137 30 2],[26.69 25 2],[26.765 70 2],[26.787 50 2],[26.863 50 2],[27.208 20 2],[27.245 20 2],[30.015 160 1],[30.02 160 1],[30.132 90 1],[30.144 100 1],[30.245 60 1],[30.715 800 4],[30.826 1000 4],[31.9644 10 3],[33.255 800 4],[33.391 900 4],[36.032 800 4],[36.037 800 4],[36.076 10 3],[37.208 300 1],[37.638 350 1],[37.814 100 2],[38.01 70 2],[40.072 1000 4],[40.8684 12 3],[40.9614 10 3],[41.0372 15 3],[41.1334 10 3],[41.2242 13 3],[44.505 500 4],[44.519 600 4],[45.99 600 4],[46.105 850 4],[46.326 1000 4],[129.397 60 1],[132.774 50 1],[133.676 7 2],[133.736 7 2],[134.067 8 2],[134.239 9 2],[134.273 10 2],[134.754 45 1],[135.528 11 2],[136.19 12 2],[137.234 11 2],[137.469 90 1],[140.468 90 1],[142.089 10 2],[144.419 10 2],[144.931 12 2],[149.521 45 1],[149.601 40 1],[149.773 45 1],[150.641 80 1],[150.691 60 1],[151.31 70 1],[151.963 60 1],[156.287 11 2],[156.529 10 2],[158.05 10 3],[158.218 11 3],[158.233 10 3],[158.398 11 3],[158.414 12 3],[158.699 10 3],[158.705 12 3],[159.818 10 2],[161.395 10 3],[161.592 11 3],[161.857 12 3],[165.547 11 3],[165.792 60 1],[168.894 11 2],[169.929 10 2],[170.197 15 3],[170.241 10 3],[171.112 10 2],[172.827 11 2],[173.111 10 2],[175.548 10 2],[177.657 90 1],[177.824 40 1],[178.304 60 1],[178.719 80 1],[178.885 45 1],[179.841 80 1],[180.126 45 1],[180.707 15 2],[180.709 90 1],[180.838 60 1],[181.077 10 2],[181.167 11 2],[181.681 10 2],[182.17 50 1],[183.387 45 1],[183.522 10 2],[183.522 80 1],[183.789 45 1],[183.894 10 2],[184.182 60 1],[184.436 11 2],[184.502 70 1],[184.753 12 2],[184.759 10 2],[184.956 15 2],[185.015 45 1],[185.038 12 2],[185.119 70 1],[185.317 80 1],[185.592 10 2],[185.671 10 2],[186.121 10 2],[186.645 45 1],[187.337 45 1],[187.508 60 1],[188.066 10 2],[188.191 160 1],[188.509 50 1],[188.574 45 1],[188.739 10 2],[188.747 20 2],[189.075 15 2],[190.016 15 2],[191.845 10 2],[192.396 11 2],[192.626 14 2],[192.724 12 2],[193.274 12 2],[193.389 13 2],[194.352 10 2],[194.643 12 2],[195.091 12 2],[195.124 14 2],[196.076 12 3],[196.508 11 3],[196.76 10 3],[197.716 10 2],[198.557 13 2],[199.568 10 2],[200.421 10 2],[200.522 11 2],[200.847 11 2],[201.187 15 2],[201.417 11 2],[201.703 12 2],[201.839 10 3],[202.856 12 2],[203.113 12 2],[203.59 11 2],[204.166 12 2],[204.329 12 2],[204.482 10 2],[204.544 10 2],[205.148 11 2],[206.036 10 2],[206.66 15 2],[208.291 13 2],[210.633 12 3],[211.453 10 3],[214.072 15 2],[214.454 14 2],[215.576 10 3],[220.283 15 2],[222.593 15 2],[222.853 80 1],[223.033 30 2],[223.219 16 2],[224.67 20 2],[225.147 14 2],[227.842 15 2],[228.566 13 2],[230.358 80 1],[230.999 15 2],[231.565 300 1],[238.699 18 2],[239.328 130 1],[239.403 17 2],[240.101 100 1],[240.659 15 2],[242.099 300 1],[242.473 300 1],[243.914 200 1],[244.15 250 1],[244.872 200 1],[245.218 200 1],[245.931 25 2],[246.885 18 2],[247.473 20 2],[249.315 1000 1],[249.703 25 2],[250.284 300 1],[250.63 450 1],[251.026 17 2],[251.546 600 1],[253.025 15 2],[253.154 600 1],[254.28 14 2],[258.631 550 1],[259.496 600 1],[261.181 850 1],[262.741 300 1],[263.181 300 1],[264.853 160 1],[265.131 200 1],[265.981 200 1],[266.1 850 1],[266.346 200 1],[266.646 350 1],[267.183 1000 1],[267.404 200 1],[267.809 850 1],[280.871 650 1],[280.952 850 1],[281.829 350 1],[282.987 600 1],[283.956 800 1],[284.172 1000 1],[285.281 16 0],[285.301 15 0],[285.651 650 1],[285.949 800 1],[286.102 350 1],[287.128 750 1],[287.295 650 1],[288.115 900 1],[288.626 850 1],[289.395 700 1],[290.114 900 1],[290.472 800 1],[290.492 1100 1],[291.752 1100 1],[291.905 1100 1],[291.985 1200 1],[292.095 1300 1],[292.349 1000 1],[293.088 750 1],[293.408 850 1],[293.774 950 1],[294.266 450 1],[294.57 800 1],[294.75 950 1],[295.124 1200 1],[295.24 1100 1],[296.012 850 1],[296.574 450 1],[297.073 500 1],[297.424 600 1],[297.499 750 1],[297.713 1000 1],[297.966 1100 1],[298.063 1100 1],[298.419 1300 1],[300.415 550 1],[300.744 750 1],[300.914 750 1],[300.948 450 1],[301.54 600 1],[301.734 450 1],[302.907 400 1],[303.708 400 1],[304.56 400 1],[305.367 550 1],[305.535 550 1],[305.616 550 1],[305.738 550 1],[305.795 550 1],[305.872 550 1],[306.025 700 1],[306.135 800 1],[306.438 500 1],[306.622 500 1],[306.654 500 1],[307.433 550 1],[307.832 550 1],[308.025 550 1],[308.706 550 1],[308.826 450 1],[309.204 550 1],[309.273 550 1],[309.445 650 1],[309.555 650 1],[310.358 500 1],[310.44 500 1],[311.145 450 1],[311.369 500 1],[312.294 400 1],[312.442 1700 1],[312.521 600 1],[312.938 600 1],[313.548 2500 1],[313.786 1700 1],[314.571 950 1],[314.928 2000 1],[316.374 2000 1],[317.509 700 1],[317.906 1000 1],[318.979 1700 1],[321.219 1600 1],[323.493 700 1],[325.796 1500 1],[326.021 650 1],[327.422 950 1],[328.56 1700 1],[330.135 1700 1],[330.237 19 0],[330.298 18 0],[330.496 1500 1],[331.804 1000 1],[332.769 950 1],[342.686 6 0],[353.305 1500 1],[363.127 1200 1],[371.107 850 1],[408.137 200 1],[411.37 300 1],[412.308 250 1],[423.326 250 1],[423.899 2 0],[424.037 200 1],[424.09 250 1],[424.208 3 0],[427.364 4 0],[427.679 5 0],[428.784 2 0],[429.101 3 0],[429.248 250 1],[429.286 250 1],[430.881 250 1],[430.904 250 1],[432.091 250 1],[432.14 6 0],[432.462 7 0],[433.729 250 1],[434.149 4 0],[434.411 250 1],[434.474 5 0],[436.86 200 1],[437.522 200 1],[438.749 200 1],[439.003 8 0],[439.281 250 1],[439.334 9 0],[440.512 200 1],[441.989 6 0],[442.325 7 0],[444.67 200 1],[444.741 200 1],[445.474 200 1],[445.523 200 1],[445.721 200 1],[447.463 200 1],[447.88 200 1],[448.167 200 1],[449.015 200 1],[449.087 200 1],[449.418 10 0],[449.766 11 0],[449.962 200 1],[450.697 200 1],[451.921 200 1],[452.498 200 1],[453.332 200 1],[454.163 7 0],[454.519 8 0],[455.153 200 1],[459.092 160 1],[472.223 160 1],[473.11 160 1],[473.25 100 1],[474.167 160 1],[476.879 160 1],[478.879 100 1],[481.475 50 1],[483.526 50 1],[514.311 60 1],[519.165 100 1],[520.333 50 1],[520.855 80 1],[539.063 60 1],[540.046 70 1],[541.455 90 1],[568.2633 5 0],[568.8204 9 0],[588.995 32 0],[589.5924 16 0],[617.525 60 1],[619.926 70 1],[623.468 70 1],[626.001 80 1],[627.474 80 1],[631.08 60 1],[635.283 60 1],[635.805 60 1],[636.115 70 1],[636.641 70 1],[637.891 60 1],[647.529 50 1],[651.421 90 1],[652.468 80 1],[653.07 130 1],[654.404 130 1],[654.575 130 1],[655.243 80 1],[780.978 4 0],[781.024 3 0],[818.3256 5 0],[819.4824 9 0],[864.992 7 0],[865.089 6 0],[915.388 4 0],[946.594 6 0],[996.128 7 0],[1057.228 3 0],[1074.644 10 0],[1074.929 9 0],[1083.487 8 0],[1138.145 11 0],[1140.378 12 0],[1476.748 115 0],[2205.6439 30 0],[2208.367 27 0],[2334.841 24 0],[2337.9131 24 0]}{ALLx2500x115x2500x100x15x1000x0}{UVx2500x19x2500x100x15x1000x0}{VISx300x32x300x0x0x0x0}{IVx115x115x0x0x0x0x0}% \pgfspectra@elt@search{#1}{Mg}{[11.816 40 3],[11.881 80 3],[12.359 70 3],[12.465 240 3],[12.986 300 3],[13.281 300 3],[14.695 400 3],[14.741 300 3],[14.754 300 3],[17.08 15 2],[17.139 15 2],[18.007 350 3],[18.062 400 3],[18.08 400 3],[18.134 350 3],[18.224 15 2],[18.297 12 2],[18.651 20 2],[18.72 20 2],[18.853 10 2],[23.173 100 2],[23.426 80 2],[25.158 5 4],[27.658 35 4],[31.23 10 4],[32.099 4000 3],[32.331 3000 3],[35.109 20 4],[35.22 18 4],[35.309 30 4],[35.33 15 4],[35.422 18 4],[35.533 20 4],[80.041 40 3],[85.729 150 3],[86.674 30 3],[91.903 50 3],[92.978 30 3],[94.67 8 1],[94.677 9 1],[100.876 40 3],[102.596 14 1],[102.611 12 1],[102.641 30 3],[103.741 250 3],[104.437 80 3],[105.576 60 3],[121.099 300 3],[123.994 25 1],[124.04 20 1],[124.851 6 1],[124.993 8 1],[127.124 8 1],[127.194 9 1],[127.272 8 1],[127.343 11 1],[127.483 10 2],[128.07 11 2],[130.671 11 1],[130.788 12 1],[130.828 12 1],[130.944 14 1],[134.219 300 3],[134.657 800 3],[134.668 300 3],[135.205 600 3],[136.545 14 1],[136.726 15 1],[136.77 15 1],[136.942 18 1],[138.446 900 3],[138.577 500 3],[138.753 800 3],[139.127 12 2],[139.339 15 2],[140.468 300 3],[140.936 1000 3],[143.114 10 2],[143.753 500 3],[143.764 1000 3],[144.742 300 3],[145.954 300 3],[145.962 400 3],[147.6 20 1],[147.801 25 1],[148.089 20 1],[148.151 400 3],[148.29 30 1],[149.045 350 3],[149.55 300 3],[157.271 16 2],[158.624 12 2],[160.711 300 3],[164.593 1 0],[165.116 1 0],[165.831 2 0],[166.843 5 0],[168.302 500 3],[168.341 10 0],[168.709 13 2],[169.728 13 2],[169.881 400 3],[170.706 15 0],[172.204 10 2],[173.484 40 1],[173.762 50 1],[173.884 22 2],[174.756 12 2],[174.78 20 0],[174.893 18 2],[175.065 40 1],[175.346 50 1],[177.298 15 2],[178.325 20 2],[179.458 14 2],[180.066 15 2],[182.793 30 0],[184.417 300 3],[185.819 13 2],[187.949 12 2],[190.85 10 2],[192.39 12 2],[193.067 13 2],[193.784 11 2],[202.582 9 0],[203.955 15 2],[205.549 15 2],[206.49 25 2],[208.59 15 2],[209.196 20 2],[209.793 13 2],[211.277 15 2],[213.406 16 2],[217.77 20 2],[232.958 3 1],[239.515 20 2],[244.957 6 1],[246.775 15 2],[249.054 10 2],[251.84 12 3],[252.919 10 2],[253.479 4 3],[255.723 1 0],[256.094 1 0],[256.226 1 0],[256.494 1 0],[257.091 1 0],[257.225 1 0],[257.494 2 0],[257.789 1 0],[258.059 1 0],[258.422 1 0],[258.556 2 0],[258.828 3 0],[259.189 1 0],[259.323 1 0],[259.597 2 0],[260.25 2 0],[260.385 4 0],[260.662 5 0],[261.336 1 0],[261.473 2 0],[261.751 3 0],[262.866 3 0],[263.005 6 0],[263.287 8 0],[264.48 2 0],[264.621 3 0],[264.906 4 0],[266.076 8 1],[266.082 8 1],[266.812 6 0],[266.955 8 0],[267.246 10 0],[269.372 3 0],[269.518 5 0],[269.814 6 0],[273.199 8 0],[273.349 10 0],[273.653 12 0],[276.522 5 0],[276.834 7 0],[277.669 38 0],[277.827 32 0],[277.983 90 0],[278.129 8 0],[278.142 32 0],[278.297 36 0],[279.079 13 1],[279.553 1000 1],[279.806 16 1],[280.27 600 1],[280.976 3 0],[281.111 2 0],[281.178 1 0],[284.672 12 0],[284.675 12 0],[284.834 14 0],[284.842 14 0],[285.165 16 0],[285.166 16 0],[285.213 6000 0],[290.292 2 0],[290.636 4 0],[291.545 3 0],[291.545 3 0],[292.875 2 1],[293.654 3 1],[293.674 10 0],[293.674 10 0],[293.847 12 0],[293.847 12 0],[294.2 2 0],[294.2 13 0],[296.787 1 1],[297.17 1 1],[309.108 20 0],[309.299 22 0],[309.69 14 0],[310.471 9 1],[310.481 8 1],[316.898 6 1],[317.271 6 1],[317.578 7 1],[319.762 2 0],[329.905 12 2],[330.639 13 2],[332.993 17 0],[333.215 6 0],[333.59 12 2],[333.668 9 0],[334.258 11 2],[336.141 12 2],[338.124 10 2],[338.29 11 2],[338.737 11 2],[353.504 7 1],[353.886 8 1],[354.952 7 1],[355.337 8 1],[370.674 10 2],[382.93 140 0],[383.23 300 0],[383.829 500 0],[384.824 8 1],[384.891 1 0],[385.04 7 1],[385.396 2 0],[385.496 1 0],[385.886 2 0],[387.831 3 0],[389.191 2 0],[389.33 2 0],[389.557 3 0],[390.386 4 0],[393.84 6 0],[398.421 1 0],[398.675 8 0],[405.469 2 0],[405.75 10 0],[407.506 3 0],[408.183 2 0],[416.51 4 0],[416.727 15 0],[435.191 20 0],[435.453 6 0],[438.038 6 0],[438.464 9 1],[439.059 10 1],[442.8 8 1],[443.399 9 1],[443.649 5 1],[443.66 4 1],[448.116 14 1],[448.133 13 1],[453.429 6 1],[457.11 28 0],[462.13 3 0],[470.299 7 0],[473.003 10 0],[473.959 6 1],[473.971 5 1],[485.11 7 1],[491.6 10 2],[516.733 75 0],[517.268 220 0],[518.361 400 0],[526.421 8 1],[526.437 7 1],[534.598 1 0],[540.154 9 1],[550.96 2 0],[552.841 6 0],[571.109 30 0],[578.531 5 0],[578.556 4 0],[583.982 10 2],[591.643 7 1],[591.816 6 1],[625.675 15 2],[631.872 10 0],[631.924 9 0],[631.949 7 0],[634.674 10 1],[634.696 9 1],[654.597 11 1],[662.044 5 1],[662.057 6 1],[663.083 2 0],[678.145 7 1],[678.785 8 1],[681.286 7 1],[681.927 8 1],[689.49 4 0],[696.54 6 0],[706.041 8 0],[719.317 10 0],[729.106 10 0],[738.7 5 0],[738.769 12 0],[758.076 4 1],[765.76 20 0],[765.915 19 0],[765.99 17 0],[769.016 8 0],[769.155 15 0],[772.261 1 0],[774.634 1 0],[775.93 1 0],[778.65 5 1],[779.098 4 1],[781.114 3 0],[787.705 12 1],[788.167 2 0],[789.637 13 1],[793.081 7 0],[804.773 3 0],[804.985 5 0],[805.423 7 0],[809.872 10 0],[811.522 9 1],[812.043 8 1],[815.464 1 0],[815.913 2 0],[820.984 10 0],[821.303 20 0],[821.399 10 1],[822.292 7 1],[823.319 7 1],[823.464 11 1],[830.331 7 0],[830.56 9 0],[831.026 10 0],[834.612 15 0],[846.648 2 0],[846.884 5 0],[847.369 7 0],[871.018 10 0],[871.269 12 0],[871.783 13 0],[873.499 10 1],[873.602 17 0],[874.566 11 1],[880.676 14 0],[882.432 10 1],[883.508 11 1],[892.357 20 0],[898.903 7 0],[899.169 9 0],[899.716 10 0],[921.825 14 1],[924.427 13 1],[924.65 12 0],[925.578 30 0],[932.754 10 1],[934.054 10 1],[941.496 25 0],[942.981 17 0],[943.276 19 0],[943.878 20 0],[950.245 8 0],[950.311 7 0],[950.343 5 0],[963.189 12 1],[963.243 11 1],[995.32 15 0],[998.32 15 0],[998.647 17 0],[999.321 18 0],[1009.216 14 1],[1039.176 5 1],[1039.223 6 1],[1081.108 35 0],[1091.423 11 1],[1091.527 7 1],[1095.178 10 1],[1095.332 25 0],[1095.73 27 0],[1096.545 28 0],[1103.21 15 0],[1103.366 14 0],[1125.593 5 1],[1125.635 4 1],[1182.818 45 0],[1208.366 30 0],[1487.762 28 0],[1502.499 35 0],[1504.024 30 0],[1504.77 25 0],[1574.071 6 0],[1574.899 8 0],[1576.584 10 0],[1710.866 30 0],[2639.29 5 0]}{ALLx6000x6000x1000x100x4000x35x0}{UVx6000x6000x1000x100x4000x35x0}{VISx500x500x14x15x0x0x0}{IVx45x45x14x0x0x0x0}% \pgfspectra@elt@search{#1}{Al}{[10.38 300 4],[10.388 400 4],[10.407 250 4],[10.418 250 4],[10.795 600 4],[10.806 300 4],[10.811 300 4],[11.85 250 4],[12.403 400 3],[12.553 900 4],[12.607 800 4],[12.973 700 3],[13.041 800 4],[13.085 1000 4],[13.1 900 4],[13.144 900 4],[13.263 500 4],[16.007 800 3],[16.169 700 3],[27.869 1000 4],[28.139 900 4],[48.6884 70 2],[48.6912 30 2],[51.1138 250 2],[51.1191 150 2],[56.0317 500 2],[56.0433 200 2],[67.0068 100 2],[67.1118 200 2],[69.5829 500 2],[69.6217 400 2],[72.5683 200 2],[72.6915 300 2],[85.5034 400 2],[85.6746 500 2],[89.2024 400 2],[89.3887 50 2],[89.3897 450 2],[102.734 500 3],[104.217 800 3],[104.852 700 3],[105.89 500 3],[106.143 500 3],[106.489 600 3],[106.657 500 3],[106.826 250 4],[106.944 600 3],[108.867 500 4],[109.014 300 4],[110.574 400 3],[111.882 600 3],[112.561 500 3],[113.682 400 3],[115.03 300 4],[116.259 10 2],[116.262 5 2],[116.542 350 4],[116.848 250 4],[117.743 40 1],[119.1812 50 1],[119.85 400 3],[122.055 400 3],[123.719 900 3],[124.021 600 3],[124.086 700 3],[124.879 700 3],[125.762 900 3],[126.418 800 3],[127.276 1000 3],[128.77 500 4],[133.006 400 4],[133.79 400 3],[135.018 150 1],[135.052 400 4],[135.281 100 2],[135.282 5 2],[135.286 70 2],[136.335 400 4],[136.92 600 4],[137.37 300 4],[137.662 500 3],[137.967 600 2],[138.413 800 2],[138.879 500 3],[143.194 600 3],[144.182 700 3],[144.587 400 4],[144.751 800 3],[145.526 300 4],[145.796 600 3],[147.564 600 4],[148.605 300 4],[148.689 700 3],[149.479 800 3],[150.837 700 4],[151.907 400 3],[152.614 1000 4],[153.754 800 3],[153.912 500 4],[153.983 800 1],[155.019 500 3],[155.725 1000 3],[155.903 500 3],[156.416 700 3],[156.9385 100 1],[157.79 300 4],[158.204 900 3],[158.446 800 3],[158.928 400 3],[158.987 350 4],[159.6059 125 1],[160.5766 700 2],[160.665 400 3],[161.1814 100 2],[161.1874 800 2],[161.781 400 3],[162.5627 150 1],[162.754 600 3],[163.682 500 3],[163.906 800 3],[164.4235 100 1],[164.4809 100 1],[167.0787 1000 1],[168.625 100 1],[171.944 800 1],[172.1244 500 1],[172.1271 900 1],[172.4952 500 1],[172.4984 900 1],[176.0104 350 1],[176.1975 300 1],[176.3 290 0],[176.3869 500 1],[176.3952 700 1],[176.564 450 0],[176.5815 300 1],[176.638 450 0],[176.7731 400 1],[176.914 450 0],[181.856 1000 3],[182.8588 600 1],[183.2837 400 1],[183.4808 250 1],[185.4716 1000 2],[185.5929 300 1],[185.8026 700 1],[185.998 120 1],[186.2311 1000 1],[186.279 600 2],[188.116 700 3],[192.9978 200 1],[193.1048 150 1],[193.2377 200 1],[193.4503 400 1],[193.4713 150 1],[193.584 300 2],[193.5863 15 2],[193.5949 200 2],[193.6907 150 1],[193.9261 220 1],[199.0531 700 1],[201.6052 150 1],[201.6234 150 1],[201.6368 100 1],[207.4008 200 1],[209.4264 700 1],[209.4744 150 1],[209.4791 300 1],[209.5104 100 1],[209.5141 200 1],[215.07 60 0],[218.1 60 0],[226.91 400 0],[226.922 120 0],[231.249 60 0],[231.353 70 0],[231.748 90 0],[231.906 60 0],[232.156 140 0],[236.705 460 0],[236.761 110 0],[236.811 110 0],[236.93 180 0],[237.022 140 0],[237.073 70 0],[237.207 160 0],[237.312 850 0],[237.335 170 0],[237.357 110 0],[237.84 60 0],[239.9 110 2],[251.33 60 0],[251.587 400 3],[256.798 240 0],[257.51 480 0],[257.54 60 0],[263.155 80 1],[263.77 110 1],[265.248 150 0],[266.039 200 0],[266.917 160 1],[276.277 285 2],[276.287 220 2],[281.619 650 1],[283.796 90 0],[284.01 90 0],[290.693 450 2],[304.128 150 1],[305.007 360 0],[305.468 60 0],[305.714 450 0],[306.429 90 0],[306.614 60 0],[307.464 150 1],[308.2153 4500 0],[309.271 7200 0],[309.2839 1800 0],[320.82 500 3],[326.721 500 3],[328.513 600 3],[334.446 400 3],[334.852 360 2],[335.088 290 2],[342.892 150 1],[343.935 70 0],[344.364 150 0],[344.486 70 0],[345.822 70 0],[347.354 500 3],[347.981 60 0],[348.263 60 0],[349.223 900 3],[350.846 800 3],[351.128 500 3],[351.756 700 3],[352.703 400 3],[354.108 500 3],[358.656 450 1],[358.707 360 1],[358.745 290 1],[360.163 870 2],[360.193 550 2],[361.236 750 2],[365.106 220 1],[365.11 110 1],[365.498 150 1],[365.5 290 1],[370.211 450 2],[371.312 550 2],[390.068 450 1],[393.2 60 0],[394.4006 4500 0],[396.152 9000 0],[398.014 110 2],[399.586 110 1],[408.245 110 2],[408.861 150 2],[414.237 110 2],[414.992 650 2],[415.017 650 2],[422.681 290 1],[436.464 110 2],[447.989 650 2],[447.997 650 2],[451.256 760 2],[452.894 550 2],[452.919 870 2],[458.582 150 1],[458.819 110 1],[466.68 550 1],[470.115 110 2],[470.141 150 2],[489.876 110 1],[490.277 110 1],[490.41 110 2],[510.752 70 0],[515.101 110 2],[516.389 110 2],[528.021 150 1],[528.377 290 1],[528.585 150 1],[531.232 110 1],[531.607 220 1],[537.184 150 1],[555.706 180 0],[555.795 110 0],[559.323 450 1],[569.66 1200 2],[572.273 1000 2],[585.362 110 1],[597.194 220 1],[600.176 290 1],[600.188 220 1],[600.642 450 1],[605.521 110 2],[606.111 150 1],[606.843 290 1],[606.853 110 1],[607.323 450 1],[618.157 110 1],[618.168 150 1],[618.228 290 1],[618.245 220 1],[618.342 450 1],[620.152 450 1],[620.17 360 1],[622.618 290 1],[623.178 360 1],[624.336 450 1],[633.574 450 1],[669.602 360 0],[669.867 230 0],[708.397 60 0],[708.464 70 0],[736.157 110 0],[736.23 140 0],[760.616 60 0],[761.482 90 0],[763.537 220 2],[766.026 150 2],[768.197 220 2],[783.531 230 0],[783.613 290 0],[788.179 360 2],[788.252 150 2],[790.551 290 2],[799.305 60 0],[800.319 90 0],[806.597 70 0],[807.535 110 0],[824.359 290 2],[827.511 360 2],[864.07 290 1],[877.287 360 0],[877.39 450 0],[882.891 110 0],[884.128 180 0],[891.29 90 0],[892.356 140 0],[908.991 60 0],[913.995 70 0],[929.065 150 1],[929.075 110 1],[957.152 290 2],[960.599 360 2],[1007.629 150 1],[1076.836 110 0],[1078.204 140 0],[1087.298 110 0],[1089.173 230 0],[1125.319 450 0],[1125.488 570 0],[1312.341 570 0],[1315.076 450 0],[1671.8961 230 0],[1675.0561 300 0],[1676.3359 140 0],[2109.3039 300 0],[2116.375 360 0]}{ALLx9000x9000x1000x1200x1000x1000x0}{UVx7200x7200x1000x1000x1000x1000x0}{VISx9000x9000x550x1200x0x0x0}{IVx570x570x290x360x0x0x0}% -\pgfspectra@elt@search{#1}{Si}{[7.861 1 4],[7.89 1 4],[8.081 2 4],[8.111 2 4],[8.518 10 4],[8.558 6 4],[9.045 4 4],[9.085 4 4],[9.644 15 4],[9.714 10 4],[9.821 2 4],[11.786 20 4],[11.897 20 4],[45.782 4 3],[45.816 3 3],[51.512 2 3],[51.635 3 3],[56.661 8 2],[64.576 2 3],[65.222 6 2],[65.333 8 2],[67.348 5 2],[74.994 5 3],[80.007 5 2],[80.51 10 1],[81.505 7 3],[81.813 8 3],[82.052 20 1],[82.341 9 2],[84.372 20 1],[84.577 40 1],[85.014 10 1],[88.34 5 2],[88.972 100 1],[89.2 200 1],[89.941 10 1],[90.174 20 1],[91.301 10 1],[91.385 20 1],[92.981 20 1],[93.909 7 2],[96.795 9 2],[98.987 100 1],[99.268 200 1],[99.352 10 2],[99.479 13 2],[99.739 16 2],[100.537 7 2],[102.07 25 1],[102.369 50 1],[103.116 7 2],[103.392 8 2],[103.705 7 2],[105.705 30 1],[105.75 15 1],[106.663 8 3],[108.322 6 2],[110.837 14 2],[110.997 16 2],[111.323 18 2],[112.249 8 3],[112.744 20 1],[112.791 40 1],[112.834 10 3],[114.055 6 2],[114.158 7 2],[114.228 6 2],[114.431 8 2],[114.496 6 2],[114.511 8 2],[114.518 7 2],[115.5 6 2],[115.596 6 2],[115.81 7 2],[116.026 6 2],[116.158 8 2],[117.437 5 2],[117.443 6 2],[117.8 8 2],[119.042 100 1],[119.328 200 1],[119.45 250 1],[119.739 100 1],[120.651 30 2],[120.653 30 2],[120.752 9 2],[121.046 10 2],[121.612 10 1],[122.391 20 1],[122.425 20 1],[122.497 10 1],[122.681 50 1],[122.689 20 1],[122.699 40 1],[122.76 100 1],[122.844 10 1],[122.862 25 1],[122.875 150 1],[122.939 200 1],[123.543 7 2],[123.592 10 1],[124.674 100 1],[124.843 150 1],[125.009 100 1],[125.043 150 1],[125.116 200 1],[125.528 10 0],[125.649 40 0],[125.88 50 0],[126.042 1000 1],[126.473 2000 1],[126.502 200 1],[128.035 6 2],[129.454 17 2],[129.673 14 2],[129.889 15 2],[129.896 18 2],[130.115 14 2],[130.332 16 2],[130.437 100 1],[130.559 50 1],[130.927 200 1],[130.946 20 1],[131.259 13 2],[134.147 8 2],[134.239 7 2],[134.339 6 2],[134.687 100 1],[134.854 100 1],[135.006 150 1],[135.052 20 1],[135.066 20 1],[135.264 100 1],[135.372 100 1],[136.16 8 2],[136.237 5 2],[136.347 7 2],[136.526 8 2],[136.705 7 2],[136.944 5 2],[137.303 5 2],[138.799 5 2],[139.376 15 3],[140.277 12 3],[140.907 10 1],[141.022 20 1],[141.697 10 1],[141.724 13 2],[143.369 6 2],[143.577 8 2],[143.617 7 2],[144.173 5 2],[144.72 6 2],[145.725 5 2],[147.465 15 1],[148.487 15 1],[148.502 90 1],[148.522 30 1],[148.551 100 1],[150.024 12 2],[150.119 10 2],[150.187 9 2],[150.606 6 2],[150.91 100 1],[151.207 50 1],[151.357 30 1],[151.691 60 1],[152.672 500 1],[153.345 1000 1],[156.245 10 1],[156.285 15 1],[156.377 10 1],[157.387 50 0],[157.482 50 0],[159.241 50 0],[159.455 150 0],[159.493 50 0],[159.795 30 0],[162.287 100 0],[162.571 30 0],[162.943 300 0],[162.992 200 0],[163.113 75 0],[163.398 50 0],[163.461 1 3],[165.335 30 0],[166.452 30 0],[166.637 50 0],[166.762 100 0],[166.852 100 0],[167.259 100 0],[167.332 7 2],[167.52 200 0],[168.268 30 0],[168.682 30 0],[168.929 50 0],[169.079 30 0],[169.329 50 0],[169.551 50 0],[169.62 200 0],[169.794 200 0],[170.042 50 0],[170.063 30 0],[170.286 30 0],[170.443 50 0],[171.083 10 1],[171.13 20 1],[172.253 6 3],[172.738 5 3],[174.388 30 0],[174.74 50 0],[175.311 30 0],[176.366 50 0],[176.503 40 0],[176.56 30 0],[176.606 30 0],[177.063 30 0],[177.092 100 0],[177.683 100 0],[178.323 50 0],[179.912 100 0],[180.8 150 1],[180.909 50 0],[181.407 500 0],[181.692 200 1],[181.745 10 1],[182.245 50 0],[183.651 200 0],[183.801 30 0],[184.115 100 0],[184.144 200 0],[184.255 9 2],[184.377 200 0],[184.551 300 0],[184.61 100 0],[184.747 400 0],[184.814 200 0],[184.874 100 0],[185.067 500 0],[185.179 30 0],[185.246 200 0],[185.315 50 0],[186.932 20 1],[187.023 15 1],[187.31 100 0],[187.484 500 0],[187.581 100 0],[188.185 200 0],[188.77 200 0],[189.325 200 0],[190.133 1000 0],[190.246 100 1],[190.466 50 0],[191.062 50 1],[194.167 50 1],[194.459 15 1],[194.933 10 1],[194.956 100 1],[195.497 100 0],[198.443 30 0],[199.185 50 0],[201.097 30 0],[205.483 50 0],[205.865 50 1],[205.901 50 1],[206.119 40 0],[206.552 30 0],[207.202 200 1],[207.27 200 1],[210.321 30 0],[211.463 30 0],[212.018 3 3],[212.412 100 0],[212.747 4 3],[213.399 10 1],[213.64 30 1],[213.656 50 1],[214.791 50 0],[217.689 5 2],[220.798 110 0],[221.089 115 0],[221.174 110 0],[221.667 120 0],[221.806 120 0],[221.891 50 0],[228.704 5 3],[229.103 35 0],[229.548 6 2],[229.687 10 2],[230.093 8 2],[230.306 55 0],[230.819 10 2],[232.856 2 3],[233.44 30 1],[233.461 30 1],[234.42 10 1],[234.954 10 1],[235.017 20 1],[235.309 20 1],[235.63 100 1],[235.718 30 1],[235.797 50 1],[236.02 10 1],[236.676 2 3],[236.697 30 1],[237.099 3 3],[237.426 20 1],[242.845 10 1],[243.515 300 0],[243.877 65 0],[244.336 65 0],[244.948 11 2],[245.212 70 0],[248.282 2 3],[248.32 6 2],[248.538 1 3],[250.69 425 0],[251.432 375 0],[251.6113 500 0],[251.751 7 3],[251.9202 350 0],[252.4108 425 0],[252.8509 450 0],[253.2381 110 0],[254.182 25 2],[254.609 10 2],[255.921 14 2],[256.3679 30 0],[256.8641 85 0],[257.7151 45 0],[263.1282 190 0],[264.079 11 2],[265.551 14 2],[267.219 1 3],[267.512 4 3],[267.525 4 3],[267.757 1 3],[268.221 10 1],[272.381 3 3],[281.711 9 2],[283.149 7 2],[283.962 5 2],[288.1579 1000 0],[288.751 10 1],[289.513 3 3],[290.428 300 1],[290.447 2 3],[290.569 500 1],[295.915 5 2],[297.0355 55 0],[297.152 1 3],[298.052 5 2],[298.7645 150 0],[300.6739 50 0],[301.309 5 2],[302.0004 75 0],[302.155 20 1],[303 100 1],[303.473 6 2],[303.729 8 2],[304.093 9 2],[304.157 20 1],[304.219 30 1],[304.369 100 1],[304.385 10 1],[304.393 7 2],[304.508 5 2],[304.577 10 1],[304.83 50 1],[305.318 150 1],[306.824 7 2],[308.624 25 2],[308.646 6 2],[309.342 20 2],[309.365 5 2],[309.683 16 2],[312.627 6 2],[314.737 7 2],[314.956 7 3],[316.161 8 2],[316.571 9 3],[318.513 16 2],[318.602 13 2],[318.897 150 1],[319.225 50 1],[319.309 150 1],[319.421 50 1],[319.469 50 1],[319.541 100 1],[319.65 14 2],[319.951 200 1],[320.249 20 1],[320.387 100 1],[321.003 200 1],[321.055 15 2],[321.466 75 1],[321.625 7 2],[321.799 15 1],[322.044 10 1],[322.301 20 1],[323.05 12 2],[323.395 14 2],[324.162 15 2],[324.419 1 3],[325.34 7 2],[325.374 5 2],[325.48 7 2],[325.866 12 2],[327.046 6 2],[327.626 10 2],[327.926 7 2],[333.314 300 1],[333.982 500 1],[348.691 15 2],[352.594 9 2],[356.967 8 2],[359.047 20 2],[362.254 8 2],[363.945 5 2],[364.512 6 2],[368.14 7 2],[368.215 5 2],[376.244 8 3],[377.315 6 3],[379.141 20 2],[379.611 25 2],[380.654 30 2],[384.246 7 2],[385.366 100 1],[385.602 500 1],[386.26 200 1],[390.5523 300 0],[392.447 20 2],[394.749 6 2],[395.574 10 1],[396.384 6 2],[397.746 10 1],[398.124 5 2],[399.177 15 1],[399.801 10 1],[403.139 1 3],[403.806 2 3],[407.545 20 1],[407.678 15 1],[408.885 10 3],[410.186 5 2],[410.242 8 2],[410.2936 70 0],[411.55 5 2],[411.61 9 3],[412.807 300 1],[413.089 500 1],[418.335 10 1],[419.072 100 1],[419.813 50 1],[421.241 7 3],[431.41 3 3],[432.818 5 3],[433.85 9 2],[434.14 8 2],[437.763 8 2],[440.373 2 3],[440.59 6 2],[440.672 8 2],[441.165 1 3],[449.405 6 2],[455.262 30 2],[455.4 8 2],[456.782 25 2],[457.476 20 2],[461.127 1 3],[461.966 7 2],[462.142 100 1],[462.172 150 1],[462.862 3 3],[463.124 9 3],[463.828 7 2],[465.432 10 3],[465.692 3 3],[466.587 8 2],[466.714 1 3],[467.33 2 3],[468.302 9 2],[468.38 7 2],[471.665 16 2],[473.052 7 2],[478.2991 50 0],[479.2212 35 0],[479.2324 80 0],[480.043 8 2],[481.333 15 2],[481.972 16 2],[482.897 18 2],[488.32 15 1],[490.699 20 1],[493.28 20 1],[494.745 1 3],[494.7607 30 0],[495.011 3 3],[500.6061 40 0],[504.103 1000 1],[505.598 1000 1],[509.142 10 2],[511.376 7 2],[511.412 8 2],[518.19 100 1],[518.525 100 1],[519.286 200 1],[519.726 5 2],[520.241 500 1],[529.519 30 1],[530.497 2 3],[530.949 1 3],[540.534 100 1],[541.724 15 1],[542.892 15 1],[543.289 15 1],[543.862 100 1],[544.726 20 1],[545.146 6 2],[545.449 15 1],[545.645 100 1],[546.643 500 1],[546.687 500 1],[546.921 100 1],[547.305 7 2],[549.323 40 0],[549.645 200 1],[551.7535 35 0],[554.074 100 1],[557.666 150 1],[562.2221 30 0],[563.297 100 1],[563.948 200 1],[564.5611 90 0],[566.066 150 1],[566.5554 80 0],[566.956 1000 1],[568.144 30 1],[568.4484 120 0],[568.881 300 1],[569.0425 100 0],[570.1105 90 0],[570.137 200 1],[570.46 7 2],[570.637 100 1],[570.8397 160 0],[571.629 8 2],[573.973 20 2],[574.7667 45 0],[575.3625 45 0],[575.422 45 0],[576.2977 45 0],[577.2145 70 0],[578.0384 70 0],[578.573 30 1],[579.3071 90 0],[579.49 30 1],[579.7859 100 0],[580.047 150 1],[580.674 200 1],[582.78 30 1],[584.613 50 1],[586.748 10 1],[586.84 300 1],[587.3764 40 0],[589.879 10 2],[591.522 150 1],[594.8545 200 0],[595.756 500 1],[597.893 500 1],[606.745 10 1],[608.006 20 1],[608.667 10 1],[612.5021 90 0],[613.1574 85 0],[613.185 90 0],[614.2487 100 0],[614.5015 100 0],[615.5134 160 0],[623.732 160 0],[623.8287 40 0],[624.3813 125 0],[624.4468 125 0],[625.4188 180 0],[631.446 7 2],[633.1954 45 0],[634.71 1000 1],[637.136 1000 1],[652.436 6 2],[652.6609 45 0],[652.7199 45 0],[655.5462 45 0],[666.052 50 1],[666.5 15 1],[666.756 5 3],[667.188 100 1],[669.938 20 1],[670.121 7 3],[671.704 50 1],[672.1853 100 0],[674.164 30 0],[675.028 20 1],[681.845 30 1],[682.982 50 1],[683.156 6 2],[684.8568 30 0],[685.165 7 2],[697.6523 80 0],[699.836 3 3],[700.3567 180 0],[700.5883 180 0],[701.728 30 0],[701.7646 90 0],[703.4903 250 0],[704.794 6 3],[706.841 4 3],[716.469 70 0],[716.5545 200 0],[718.489 70 0],[719.358 65 0],[719.39 30 0],[722.6206 100 0],[723.5326 100 0],[723.582 60 0],[725.0625 180 0],[727.5294 160 0],[728.281 40 0],[728.9173 400 0],[729.026 55 0],[737.3 35 0],[740.5774 375 0],[740.9082 200 0],[741.535 40 0],[741.5946 275 0],[742.3497 425 0],[742.46 85 0],[746.189 5 2],[746.262 8 2],[746.632 9 2],[761.236 12 2],[763.05 2 3],[765.456 4 3],[767.875 4 3],[768.0267 100 0],[771.879 5 3],[772.382 6 3],[772.564 2 3],[773.047 1 3],[774.271 40 0],[775.291 1 3],[780.0008 30 0],[784.88 400 1],[784.972 500 1],[784.9967 30 0],[791.8386 90 0],[793.2349 120 0],[794.4001 140 0],[797.0306 35 0],[803.5619 35 0],[809.3241 70 0],[810.286 9 2],[810.345 11 2],[819.043 7 2],[819.116 6 2],[819.168 8 2],[823.0642 35 0],[824.061 1 3],[826.257 9 2],[826.564 5 2],[826.932 8 2],[827.138 5 2],[827.194 6 2],[844.3982 40 0],[850.1547 40 0],[850.2221 60 0],[853.6165 40 0],[855.678 120 0],[864.8462 50 0],[872.8011 40 0],[874.2451 75 0],[875.2009 100 0],[879.0389 35 0],[895.725 2 3],[901.816 1 3],[941.272 100 1],[941.3506 100 0],[1037.1269 30 0],[1058.5141 120 0],[1060.3431 120 0],[1066.0975 120 0],[1069.4251 30 0],[1072.7408 30 0],[1074.9384 60 0],[1078.455 30 0],[1078.6856 80 0],[1082.7091 140 0],[1084.3854 60 0],[1086.879 30 0],[1086.9541 130 0],[1088.2802 30 0],[1088.5336 30 0],[1097.9308 80 0],[1098.2061 30 0],[1101.7965 80 0],[1118.76 13 0],[1128.984 12 0],[1161.109 12 0],[1198.419 370 0],[1199.157 220 0],[1203.151 440 0],[1210.353 150 0],[1227.068 120 0],[1317.69 11 0],[1588.839 190 0],[1596.004 40 0],[1606.003 95 0],[1609.48 20 0],[1616.371 60 0],[1621.568 11 0],[1638.155 16 0],[1668.077 29 0],[1732.7289 28 0],[1872.29 26 0],[1938.5939 15 0],[1943.2971 48 0],[1949.3381 13 0],[1972.25 110 0],[1992.8881 31 0],[2091.7131 12 0],[2135.424 21 0],[2206.2711 12 0]}{ALLx2000x1000x2000x30x15x20x0}{UVx2000x1000x2000x30x15x20x0}{VISx1000x425x1000x30x10x0x0}{IVx500x440x500x11x2x0x0}% +\pgfspectra@elt@search{#1}{Si}{[11.786 20 4],[11.897 20 4],[45.782 4 3],[45.816 3 3],[51.512 2 3],[51.635 3 3],[56.661 8 2],[64.576 2 3],[65.222 6 2],[65.333 8 2],[67.348 5 2],[74.994 5 3],[80.007 5 2],[80.51 10 1],[81.505 7 3],[81.813 8 3],[82.052 20 1],[82.341 9 2],[84.372 20 1],[84.577 40 1],[85.014 10 1],[88.34 5 2],[88.972 100 1],[89.2 200 1],[89.941 10 1],[90.174 20 1],[91.301 10 1],[91.385 20 1],[92.981 20 1],[93.909 7 2],[96.795 9 2],[98.987 100 1],[99.268 200 1],[99.352 10 2],[99.479 13 2],[99.739 16 2],[100.537 7 2],[102.07 25 1],[102.369 50 1],[103.116 7 2],[103.392 8 2],[103.705 7 2],[105.705 30 1],[105.75 15 1],[106.663 8 3],[108.322 6 2],[110.837 14 2],[110.997 16 2],[111.323 18 2],[112.249 8 3],[112.744 20 1],[112.791 40 1],[112.834 10 3],[114.055 6 2],[114.158 7 2],[114.228 6 2],[114.431 8 2],[114.496 6 2],[114.511 8 2],[114.518 7 2],[115.5 6 2],[115.596 6 2],[115.81 7 2],[116.026 6 2],[116.158 8 2],[117.437 5 2],[117.443 6 2],[117.8 8 2],[119.042 100 1],[119.328 200 1],[119.45 250 1],[119.739 100 1],[120.651 30 2],[120.653 30 2],[120.752 9 2],[121.046 10 2],[121.612 10 1],[122.391 20 1],[122.425 20 1],[122.497 10 1],[122.681 50 1],[122.689 20 1],[122.699 40 1],[122.76 100 1],[122.844 10 1],[122.862 25 1],[122.875 150 1],[122.939 200 1],[123.543 7 2],[123.592 10 1],[124.674 100 1],[124.843 150 1],[125.009 100 1],[125.043 150 1],[125.116 200 1],[125.528 10 0],[125.649 40 0],[125.88 50 0],[126.042 1000 1],[126.473 2000 1],[126.502 200 1],[128.035 6 2],[129.454 17 2],[129.673 14 2],[129.889 15 2],[129.896 18 2],[130.115 14 2],[130.332 16 2],[130.437 100 1],[130.559 50 1],[130.927 200 1],[130.946 20 1],[131.259 13 2],[134.147 8 2],[134.239 7 2],[134.339 6 2],[134.687 100 1],[134.854 100 1],[135.006 150 1],[135.052 20 1],[135.066 20 1],[135.264 100 1],[135.372 100 1],[136.16 8 2],[136.237 5 2],[136.347 7 2],[136.526 8 2],[136.705 7 2],[136.944 5 2],[137.303 5 2],[138.799 5 2],[139.376 15 3],[140.277 12 3],[140.907 10 1],[141.022 20 1],[141.697 10 1],[141.724 13 2],[143.369 6 2],[143.577 8 2],[143.617 7 2],[144.173 5 2],[144.72 6 2],[145.725 5 2],[147.465 15 1],[148.487 15 1],[148.502 90 1],[148.522 30 1],[148.551 100 1],[150.024 12 2],[150.119 10 2],[150.187 9 2],[150.606 6 2],[150.91 100 1],[151.207 50 1],[151.357 30 1],[151.691 60 1],[152.672 500 1],[153.345 1000 1],[156.245 10 1],[156.285 15 1],[156.377 10 1],[157.387 50 0],[157.482 50 0],[159.241 50 0],[159.455 150 0],[159.493 50 0],[159.795 30 0],[162.287 100 0],[162.571 30 0],[162.943 300 0],[162.992 200 0],[163.113 75 0],[163.398 50 0],[163.461 1 3],[165.335 30 0],[166.452 30 0],[166.637 50 0],[166.762 100 0],[166.852 100 0],[167.259 100 0],[167.332 7 2],[167.52 200 0],[168.268 30 0],[168.682 30 0],[168.929 50 0],[169.079 30 0],[169.329 50 0],[169.551 50 0],[169.62 200 0],[169.794 200 0],[170.042 50 0],[170.063 30 0],[170.286 30 0],[170.443 50 0],[171.083 10 1],[171.13 20 1],[172.253 6 3],[172.738 5 3],[174.388 30 0],[174.74 50 0],[175.311 30 0],[176.366 50 0],[176.503 40 0],[176.56 30 0],[176.606 30 0],[177.063 30 0],[177.092 100 0],[177.683 100 0],[178.323 50 0],[179.912 100 0],[180.8 150 1],[180.909 50 0],[181.407 500 0],[181.692 200 1],[181.745 10 1],[182.245 50 0],[183.651 200 0],[183.801 30 0],[184.115 100 0],[184.144 200 0],[184.255 9 2],[184.377 200 0],[184.551 300 0],[184.61 100 0],[184.747 400 0],[184.814 200 0],[184.874 100 0],[185.067 500 0],[185.179 30 0],[185.246 200 0],[185.315 50 0],[186.932 20 1],[187.023 15 1],[187.31 100 0],[187.484 500 0],[187.581 100 0],[188.185 200 0],[188.77 200 0],[189.325 200 0],[190.133 1000 0],[190.246 100 1],[190.466 50 0],[191.062 50 1],[194.167 50 1],[194.459 15 1],[194.933 10 1],[194.956 100 1],[195.497 100 0],[198.443 30 0],[199.185 50 0],[201.097 30 0],[205.483 50 0],[205.865 50 1],[205.901 50 1],[206.119 40 0],[206.552 30 0],[207.202 200 1],[207.27 200 1],[210.321 30 0],[211.463 30 0],[212.018 3 3],[212.412 100 0],[212.747 4 3],[213.399 10 1],[213.64 30 1],[213.656 50 1],[214.791 50 0],[217.689 5 2],[220.798 110 0],[221.089 115 0],[221.174 110 0],[221.667 120 0],[221.806 120 0],[221.891 50 0],[228.704 5 3],[229.103 35 0],[229.548 6 2],[229.687 10 2],[230.093 8 2],[230.306 55 0],[230.819 10 2],[232.856 2 3],[233.44 30 1],[233.461 30 1],[234.42 10 1],[234.954 10 1],[235.017 20 1],[235.309 20 1],[235.63 100 1],[235.718 30 1],[235.797 50 1],[236.02 10 1],[236.676 2 3],[236.697 30 1],[237.099 3 3],[237.426 20 1],[242.845 10 1],[243.515 300 0],[243.877 65 0],[244.336 65 0],[244.948 11 2],[245.212 70 0],[248.282 2 3],[248.32 6 2],[248.538 1 3],[250.69 425 0],[251.432 375 0],[251.6113 500 0],[251.751 7 3],[251.9202 350 0],[252.4108 425 0],[252.8509 450 0],[253.2381 110 0],[254.182 25 2],[254.609 10 2],[255.921 14 2],[256.3679 30 0],[256.8641 85 0],[257.7151 45 0],[263.1282 190 0],[264.079 11 2],[265.551 14 2],[267.219 1 3],[267.512 4 3],[267.525 4 3],[267.757 1 3],[268.221 10 1],[272.381 3 3],[281.711 9 2],[283.149 7 2],[283.962 5 2],[288.1579 1000 0],[288.751 10 1],[289.513 3 3],[290.428 300 1],[290.447 2 3],[290.569 500 1],[295.915 5 2],[297.0355 55 0],[297.152 1 3],[298.052 5 2],[298.7645 150 0],[300.6739 50 0],[301.309 5 2],[302.0004 75 0],[302.155 20 1],[303 100 1],[303.473 6 2],[303.729 8 2],[304.093 9 2],[304.157 20 1],[304.219 30 1],[304.369 100 1],[304.385 10 1],[304.393 7 2],[304.508 5 2],[304.577 10 1],[304.83 50 1],[305.318 150 1],[306.824 7 2],[308.624 25 2],[308.646 6 2],[309.342 20 2],[309.365 5 2],[309.683 16 2],[312.627 6 2],[314.737 7 2],[314.956 7 3],[316.161 8 2],[316.571 9 3],[318.513 16 2],[318.602 13 2],[318.897 150 1],[319.225 50 1],[319.309 150 1],[319.421 50 1],[319.469 50 1],[319.541 100 1],[319.65 14 2],[319.951 200 1],[320.249 20 1],[320.387 100 1],[321.003 200 1],[321.055 15 2],[321.466 75 1],[321.625 7 2],[321.799 15 1],[322.044 10 1],[322.301 20 1],[323.05 12 2],[323.395 14 2],[324.162 15 2],[324.419 1 3],[325.34 7 2],[325.374 5 2],[325.48 7 2],[325.866 12 2],[327.046 6 2],[327.626 10 2],[327.926 7 2],[333.314 300 1],[333.982 500 1],[348.691 15 2],[352.594 9 2],[356.967 8 2],[359.047 20 2],[362.254 8 2],[363.945 5 2],[364.512 6 2],[368.14 7 2],[368.215 5 2],[376.244 8 3],[377.315 6 3],[379.141 20 2],[379.611 25 2],[380.654 30 2],[384.246 7 2],[385.366 100 1],[385.602 500 1],[386.26 200 1],[390.5523 300 0],[392.447 20 2],[394.749 6 2],[395.574 10 1],[396.384 6 2],[397.746 10 1],[398.124 5 2],[399.177 15 1],[399.801 10 1],[403.139 1 3],[403.806 2 3],[407.545 20 1],[407.678 15 1],[408.885 10 3],[410.186 5 2],[410.242 8 2],[410.2936 70 0],[411.55 5 2],[411.61 9 3],[412.807 300 1],[413.089 500 1],[418.335 10 1],[419.072 100 1],[419.813 50 1],[421.241 7 3],[431.41 3 3],[432.818 5 3],[433.85 9 2],[434.14 8 2],[437.763 8 2],[440.373 2 3],[440.59 6 2],[440.672 8 2],[441.165 1 3],[449.405 6 2],[455.262 30 2],[455.4 8 2],[456.782 25 2],[457.476 20 2],[461.127 1 3],[461.966 7 2],[462.142 100 1],[462.172 150 1],[462.862 3 3],[463.124 9 3],[463.828 7 2],[465.432 10 3],[465.692 3 3],[466.587 8 2],[466.714 1 3],[467.33 2 3],[468.302 9 2],[468.38 7 2],[471.665 16 2],[473.052 7 2],[478.2991 50 0],[479.2212 35 0],[479.2324 80 0],[480.043 8 2],[481.333 15 2],[481.972 16 2],[482.897 18 2],[488.32 15 1],[490.699 20 1],[493.28 20 1],[494.745 1 3],[494.7607 30 0],[495.011 3 3],[500.6061 40 0],[504.103 1000 1],[505.598 1000 1],[509.142 10 2],[511.376 7 2],[511.412 8 2],[518.19 100 1],[518.525 100 1],[519.286 200 1],[519.726 5 2],[520.241 500 1],[529.519 30 1],[530.497 2 3],[530.949 1 3],[540.534 100 1],[541.724 15 1],[542.892 15 1],[543.289 15 1],[543.862 100 1],[544.726 20 1],[545.146 6 2],[545.449 15 1],[545.645 100 1],[546.643 500 1],[546.687 500 1],[546.921 100 1],[547.305 7 2],[549.323 40 0],[549.645 200 1],[551.7535 35 0],[554.074 100 1],[557.666 150 1],[562.2221 30 0],[563.297 100 1],[563.948 200 1],[564.5611 90 0],[566.066 150 1],[566.5554 80 0],[566.956 1000 1],[568.144 30 1],[568.4484 120 0],[568.881 300 1],[569.0425 100 0],[570.1105 90 0],[570.137 200 1],[570.46 7 2],[570.637 100 1],[570.8397 160 0],[571.629 8 2],[573.973 20 2],[574.7667 45 0],[575.3625 45 0],[575.422 45 0],[576.2977 45 0],[577.2145 70 0],[578.0384 70 0],[578.573 30 1],[579.3071 90 0],[579.49 30 1],[579.7859 100 0],[580.047 150 1],[580.674 200 1],[582.78 30 1],[584.613 50 1],[586.748 10 1],[586.84 300 1],[587.3764 40 0],[589.879 10 2],[591.522 150 1],[594.8545 200 0],[595.756 500 1],[597.893 500 1],[606.745 10 1],[608.006 20 1],[608.667 10 1],[612.5021 90 0],[613.1574 85 0],[613.185 90 0],[614.2487 100 0],[614.5015 100 0],[615.5134 160 0],[623.732 160 0],[623.8287 40 0],[624.3813 125 0],[624.4468 125 0],[625.4188 180 0],[631.446 7 2],[633.1954 45 0],[634.71 1000 1],[637.136 1000 1],[652.436 6 2],[652.6609 45 0],[652.7199 45 0],[655.5462 45 0],[666.052 50 1],[666.5 15 1],[666.756 5 3],[667.188 100 1],[669.938 20 1],[670.121 7 3],[671.704 50 1],[672.1853 100 0],[674.164 30 0],[675.028 20 1],[681.845 30 1],[682.982 50 1],[683.156 6 2],[684.8568 30 0],[685.165 7 2],[697.6523 80 0],[699.836 3 3],[700.3567 180 0],[700.5883 180 0],[701.728 30 0],[701.7646 90 0],[703.4903 250 0],[704.794 6 3],[706.841 4 3],[716.469 70 0],[716.5545 200 0],[718.489 70 0],[719.358 65 0],[719.39 30 0],[722.6206 100 0],[723.5326 100 0],[723.582 60 0],[725.0625 180 0],[727.5294 160 0],[728.281 40 0],[728.9173 400 0],[729.026 55 0],[737.3 35 0],[740.5774 375 0],[740.9082 200 0],[741.535 40 0],[741.5946 275 0],[742.3497 425 0],[742.46 85 0],[746.189 5 2],[746.262 8 2],[746.632 9 2],[761.236 12 2],[763.05 2 3],[765.456 4 3],[767.875 4 3],[768.0267 100 0],[771.879 5 3],[772.382 6 3],[772.564 2 3],[773.047 1 3],[774.271 40 0],[775.291 1 3],[780.0008 30 0],[784.88 400 1],[784.972 500 1],[784.9967 30 0],[791.8386 90 0],[793.2349 120 0],[794.4001 140 0],[797.0306 35 0],[803.5619 35 0],[809.3241 70 0],[810.286 9 2],[810.345 11 2],[819.043 7 2],[819.116 6 2],[819.168 8 2],[823.0642 35 0],[824.061 1 3],[826.257 9 2],[826.564 5 2],[826.932 8 2],[827.138 5 2],[827.194 6 2],[844.3982 40 0],[850.1547 40 0],[850.2221 60 0],[853.6165 40 0],[855.678 120 0],[864.8462 50 0],[872.8011 40 0],[874.2451 75 0],[875.2009 100 0],[879.0389 35 0],[895.725 2 3],[901.816 1 3],[941.272 100 1],[941.3506 100 0],[1037.1269 30 0],[1058.5141 120 0],[1060.3431 120 0],[1066.0975 120 0],[1069.4251 30 0],[1072.7408 30 0],[1074.9384 60 0],[1078.455 30 0],[1078.6856 80 0],[1082.7091 140 0],[1084.3854 60 0],[1086.879 30 0],[1086.9541 130 0],[1088.2802 30 0],[1088.5336 30 0],[1097.9308 80 0],[1098.2061 30 0],[1101.7965 80 0],[1118.76 13 0],[1128.984 12 0],[1161.109 12 0],[1198.419 370 0],[1199.157 220 0],[1203.151 440 0],[1210.353 150 0],[1227.068 120 0],[1317.69 11 0],[1588.839 190 0],[1596.004 40 0],[1606.003 95 0],[1609.48 20 0],[1616.371 60 0],[1621.568 11 0],[1638.155 16 0],[1668.077 29 0],[1732.7289 28 0],[1872.29 26 0],[1938.5939 15 0],[1943.2971 48 0],[1949.3381 13 0],[1972.25 110 0],[1992.8881 31 0],[2091.7131 12 0],[2135.424 21 0],[2206.2711 12 0]}{ALLx2000x1000x2000x30x15x20x0}{UVx2000x1000x2000x30x15x20x0}{VISx1000x425x1000x30x10x0x0}{IVx500x440x500x11x2x0x0}%[7.861 1 4],[7.89 1 4],[8.081 2 4],[8.111 2 4],[8.518 10 4],[8.558 6 4],[9.045 4 4],[9.085 4 4],[9.644 15 4],[9.714 10 4],[9.821 2 4], \pgfspectra@elt@search{#1}{P}{[25.559 80 4],[25.567 50 4],[28.2301 90 3],[30.4996 90 3],[31.058 110 4],[31.134 150 4],[32.847 300 4],[32.878 250 4],[34.723 150 4],[34.82 200 4],[35.9293 120 3],[35.9899 150 3],[36.1514 120 3],[36.1629 150 3],[37.1299 120 3],[37.1504 150 3],[37.2001 200 3],[37.856 110 4],[38.8318 500 3],[38.95 250 4],[39.07 300 4],[41.003 150 4],[41.4604 120 3],[41.4999 200 3],[41.5805 250 3],[44.4245 250 3],[44.5158 300 3],[47.1146 90 2],[47.56 375 4],[48.4278 90 2],[49.818 120 2],[53.463 110 4],[53.499 80 4],[54.257 520 4],[54.492 600 4],[56.8038 250 3],[56.9853 200 2],[58.1831 200 2],[62.9008 350 3],[62.9914 400 3],[63.1779 500 3],[64.8482 350 3],[67.39 450 4],[75.651 300 3],[77.6353 300 3],[81.024 10 1],[82.3179 650 3],[82.473 700 3],[82.7932 800 3],[84.4646 200 2],[84.5038 150 2],[84.5664 250 2],[84.7019 250 3],[84.7669 300 2],[84.8016 200 2],[84.8465 120 2],[84.8639 150 2],[84.9799 350 3],[85.0392 200 3],[85.2686 250 2],[85.5624 350 2],[85.9406 200 2],[85.9652 500 2],[85.9729 250 2],[86.544 10 1],[86.545 450 4],[87.139 600 4],[87.7476 700 3],[91.3971 300 2],[91.712 300 2],[91.8665 350 2],[92.1849 250 2],[95.0655 1000 3],[99.762 250 4],[99.7999 200 2],[100.038 150 4],[100.3598 250 2],[102.5563 570 3],[102.8096 500 3],[103.0517 570 3],[103.3111 500 3],[103.5517 500 3],[111.798 900 4],[111.8551 570 3],[112.801 700 4],[120.6422 200 3],[124.982 20 1],[130.187 20 1],[130.447 20 1],[130.468 15 1],[130.548 35 1],[130.987 25 1],[131.07 60 1],[133.4808 500 2],[133.5705 200 3],[134.4327 650 2],[134.4845 300 2],[136.6695 500 3],[137.2674 400 3],[137.349 20 0],[137.706 20 0],[137.7282 350 3],[137.793 20 0],[137.94 25 0],[137.962 150 4],[138.0463 250 2],[138.1089 150 2],[138.147 25 0],[138.505 250 4],[143.013 50 0],[144.783 375 4],[145.289 30 1],[148.4507 500 3],[148.7788 400 3],[148.9098 300 3],[149.136 50 0],[149.299 40 0],[150.2228 350 2],[150.4663 250 2],[153.251 80 1],[153.59 120 1],[153.639 80 1],[154.229 120 1],[154.843 60 0],[161.05 450 4],[161.8632 150 2],[161.8907 200 2],[167.107 70 0],[167.168 180 0],[167.248 90 0],[167.461 230 0],[167.971 300 0],[168.599 120 0],[169.406 100 0],[170.641 60 0],[177.499 250 0],[178.287 200 0],[178.768 180 0],[184.719 100 0],[185.122 80 0],[185.891 150 0],[185.943 150 0],[186.2762 250 3],[186.2893 120 3],[186.358 200 3],[188.8523 650 3],[191.0183 200 3],[198.5682 120 3],[198.5851 150 3],[198.6114 200 3],[198.7022 150 3],[202.348 100 0],[203.347 150 0],[213.547 100 0],[213.618 200 0],[214.914 200 0],[215.294 100 0],[215.408 150 0],[218.029 200 4],[218.642 150 4],[242.44 375 4],[244.093 450 4],[244.124 200 4],[247.7823 200 3],[247.807 150 3],[247.8256 250 3],[248.419 100 1],[253.399 500 0],[253.561 700 0],[255.325 600 0],[255.49 500 0],[260.5506 250 3],[260.606 150 1],[261.1147 200 2],[262.618 100 1],[263.2713 300 2],[263.676 90 1],[264.4295 400 3],[268.0133 200 2],[272.4764 300 3],[272.877 400 3],[272.912 200 3],[273.9309 500 3],[273.9872 250 3],[274.0223 200 3],[289.5241 250 2],[296.1 300 4],[296.1242 200 3],[297.855 450 4],[317.509 700 4],[318.6186 250 2],[320.404 520 4],[321.9307 300 2],[323.3536 150 2],[323.3602 400 2],[330.892 150 1],[334.7736 650 3],[336.4467 570 3],[337.1122 400 3],[341.3543 200 3],[341.934 125 1],[342.5 100 1],[355.6546 200 2],[357.7526 200 2],[373.3393 200 3],[390.4812 200 2],[391.4314 250 2],[395.7641 300 2],[397.8307 350 2],[405.744 200 2],[405.9312 400 2],[408.0084 300 2],[408.318 150 4],[409.495 110 4],[417.848 100 1],[422.2195 500 2],[424.672 350 2],[424.9656 300 3],[428.86 200 1],[438.535 200 1],[442.071 400 1],[442.8171 200 2],[445.246 100 1],[446.3 150 1],[446.3668 200 2],[446.798 120 1],[447.526 200 1],[447.9776 250 2],[449.924 200 1],[453.081 120 1],[454.0288 250 3],[454.1112 250 3],[454.8056 150 3],[454.8449 200 3],[455.483 120 1],[455.807 120 1],[458.171 120 1],[458.804 500 1],[458.986 500 1],[460.208 600 1],[462.67 300 1],[465.831 300 1],[486.442 200 1],[492.72 150 1],[494.353 500 1],[495.439 300 1],[496.971 300 1],[515.672 110 4],[519.141 150 1],[523.5499 150 3],[525.352 300 1],[529.613 400 1],[531.607 250 1],[534.475 300 1],[537.82 250 1],[538.688 300 1],[540.972 200 1],[542.591 400 1],[545.074 400 1],[545.831 100 0],[546.12 125 1],[547.775 200 0],[548.355 200 1],[549.973 200 1],[550.719 200 1],[554.114 200 1],[558.327 200 1],[558.834 250 1],[572.771 100 1],[598.9774 150 3],[602.418 500 1],[603.404 400 1],[604.312 500 1],[605.55 250 1],[605.786 100 1],[608.3409 150 2],[608.782 350 1],[609.768 150 0],[614.2605 150 3],[616.559 350 1],[619.901 180 0],[623.229 100 1],[636.727 200 1],[640.9204 150 2],[643.532 250 1],[643.631 130 1],[645.999 600 1],[648.444 150 2],[648.6381 150 2],[650.346 600 1],[650.797 600 1],[671.328 150 1],[671.3939 150 3],[671.5906 120 3],[671.742 120 0],[699.269 150 2],[716.545 100 0],[717.512 150 0],[717.666 120 0],[744.3657 200 3],[750.576 100 0],[784.563 250 1],[811.3528 150 2],[827.807 120 0],[836.784 150 0],[853.146 100 0],[861.385 100 0],[863.762 150 0],[874.154 250 0],[887.217 50 0],[952.578 30 0],[959.354 25 0],[973.474 20 0],[975.073 25 0],[979.679 50 0],[1008.422 25 0],[1052.945 6 0],[1058.152 8 0]}{ALLx1000x700x600x650x1000x900x0}{UVx1000x700x150x650x1000x900x0}{VISx600x200x600x500x300x150x0}{IVx250x250x250x150x0x0x0}% \pgfspectra@elt@search{#1}{S}{[43.74 5 4],[43.82 5 4],[43.96 5 4],[51.93 20 3],[52.01 20 3],[52.08 40 3],[52.2 20 3],[52.25 20 3],[55.12 20 3],[65.25 40 3],[65.3 40 3],[65.36 70 3],[65.4 40 3],[65.56 70 3],[65.59 20 3],[65.73 110 3],[65.83 40 4],[65.98 70 4],[66.09 40 3],[66.14 160 3],[66.32 110 4],[66.37 40 3],[66.48 40 3],[66.61 70 3],[67.62 5 4],[67.73 5 4],[67.81 20 4],[68.03 40 4],[68.09 110 4],[68.16 40 4],[68.62 5 4],[68.69 5 4],[68.98 5 4],[69.17 5 4],[69.35 20 4],[72.95 70 2],[73.242 110 2],[73.52 70 2],[73.85 70 2],[74.49 110 3],[74.84 110 3],[75.02 110 3],[75.38 110 3],[78.65 285 4],[78.9 70 2],[79.67 70 2],[79.83 40 3],[80.05 70 3],[80.4 70 3],[80.97 70 3],[81.6 110 3],[82.49 70 2],[83.63 70 2],[84.92 160 4],[85.22 110 4],[85.48 220 4],[85.79 110 4],[86.05 110 4],[88.36 20 4],[88.45 20 4],[88.58 5 4],[90.09 20 4],[90.28 5 4],[90.59 20 4],[90.69 40 1],[91.05 40 1],[91.27 40 1],[93.74 40 1],[93.77 40 1],[99.6 20 1],[100.05 20 1],[101.44 20 1],[101.95 20 1],[106.27 160 3],[107.3 160 3],[107.35 70 3],[107.71 285 2],[109.66 20 1],[110.23 40 1],[110.84 20 3],[111.09 20 3],[113.1 20 1],[113.16 20 1],[119.4 70 2],[120.1 70 2],[123.41 40 1],[125.05 40 1],[125.38 110 1],[125.95 110 1],[127.0782 275 0],[127.7216 250 0],[129.5653 280 0],[130.2337 275 0],[130.2863 235 0],[130.311 235 0],[130.343 245 0],[130.5883 260 0],[131.0194 265 0],[131.6542 355 0],[131.6618 290 0],[132.3515 375 0],[132.6643 355 0],[138.1552 775 0],[138.551 710 0],[138.8435 960 0],[138.9154 640 0],[139.2588 775 0],[139.6112 1000 0],[140.9337 300 0],[142.503 510 0],[143.328 425 0],[143.6968 300 0],[144.8229 300 0],[147.2972 425 0],[147.3995 550 0],[147.438 300 0],[148.1665 355 0],[148.3039 485 0],[148.3233 300 0],[148.5622 330 0],[148.715 390 0],[162.4 20 3],[162.92 20 3],[166.6688 680 0],[168.753 640 0],[180.7311 710 0],[182.0343 680 0],[182.6245 640 0],[190.0286 710 0],[191.4698 550 0],[238.7 20 3],[239.89 40 3],[246.05 110 2],[248.96 110 2],[249.62 160 2],[249.91 160 2],[250.82 220 2],[262.91 20 1],[263.69 70 2],[266.54 220 2],[267 40 1],[268.05 70 2],[269.18 110 2],[270.28 110 2],[271.89 220 2],[272.14 110 2],[272.68 220 2],[273.11 220 2],[274.1 110 2],[275.69 285 2],[277.52 110 2],[278.55 160 2],[279.74 70 2],[284.77 40 1],[285.6 70 2],[286.35 110 2],[290.43 160 2],[296.48 70 2],[298.6 160 2],[309.75 110 3],[311.77 40 3],[323.42 70 2],[332.49 70 2],[349.73 110 2],[363.2 160 2],[366.2 70 2],[370.94 110 2],[371.78 160 2],[383.83 160 2],[386.76 285 0],[390.2 285 0],[392.86 160 2],[393.33 360 1],[412.08 450 0],[414.23 280 1],[414.51 360 1],[415.31 450 1],[416.27 450 1],[425.36 360 2],[428.5 110 2],[433.27 70 2],[469.41 450 0],[469.54 285 0],[469.62 160 0],[471.62 280 1],[481.55 450 1],[492.41 360 1],[492.53 450 1],[499.35 285 0],[542.86 360 1],[543.28 650 1],[545.38 1000 1],[547.36 1000 1],[550.97 1000 1],[556.49 280 1],[560.61 1000 1],[564 450 1],[564.03 450 1],[564.7 280 1],[565.99 650 1],[566.47 450 1],[570.61 160 0],[581.92 450 1],[605.27 450 0],[628.64 280 1],[628.71 450 1],[630.55 450 1],[631.27 450 1],[638.49 280 1],[639.73 280 1],[639.8 280 1],[641.37 360 1],[674.36 160 0],[674.88 285 0],[675.72 450 0],[757.9 450 0],[762.98 450 0],[768.61 285 0],[769.67 450 0],[792.4 1000 0],[792.88 160 0],[793.03 285 0],[793.17 450 0],[796.74 450 0],[796.74 450 1],[831.47 450 0],[831.47 450 1],[858.56 450 0],[868.05 285 0],[869.47 450 0],[887.45 360 0],[888.25 110 0],[888.42 220 0],[903.59 160 0],[921.29 450 0],[922.81 450 0],[923.75 450 0],[941.35 285 0],[942.19 285 0],[943.71 285 0],[964.99 650 0],[967.23 450 0],[968.08 450 0],[969.37 450 0],[969.73 285 0],[973.97 285 0],[974.19 110 0],[993.23 285 0],[994.98 285 0],[995.89 285 0],[1045.55 285 0],[1045.68 70 0],[1045.95 285 0]}{ALLx1000x1000x1000x360x160x285x0}{UVx1000x1000x110x285x160x285x0}{VISx1000x450x1000x360x0x0x0}{IVx1000x1000x450x0x0x0x0}% \pgfspectra@elt@search{#1}{Cl}{[28.733 30 4],[31.962 30 3],[33.184 20 3],[37.378 30 4],[39.015 40 4],[39.243 50 4],[40.627 10 2],[41.137 40 2],[41.181 40 2],[43.783 40 3],[46.486 40 3],[48.617 80 3],[53.473 80 3],[53.567 70 3],[53.615 60 3],[53.653 30 4],[53.701 40 4],[53.746 30 4],[53.761 90 3],[53.803 50 4],[53.812 60 3],[53.868 40 4],[54.223 80 4],[54.23 60 4],[54.287 40 4],[54.511 100 4],[54.633 60 4],[54.763 100 4],[54.922 50 3],[55.002 40 3],[55.202 70 3],[55.33 60 3],[55.462 70 3],[55.623 60 2],[55.661 70 2],[55.712 70 2],[55.9305 35 1],[56.153 70 2],[56.168 70 2],[56.174 70 2],[57.1904 40 1],[57.4406 80 1],[58.624 50 1],[60.15 50 3],[60.459 50 3],[60.635 50 2],[60.89 40 3],[61.207 40 3],[61.8057 70 1],[61.9982 60 1],[62.0298 80 1],[62.128 40 2],[62.6735 70 1],[63.319 40 4],[63.532 40 4],[63.5881 80 1],[63.6626 100 1],[65.0894 100 1],[65.37 40 3],[65.9811 100 1],[66.1841 130 1],[66.3074 200 1],[67.038 30 2],[67.313 30 2],[68.192 40 4],[68.2053 150 1],[68.317 40 4],[68.7656 150 1],[68.893 40 4],[69.3594 150 1],[72.5271 200 1],[72.8951 250 1],[74.521 40 3],[77.7562 200 1],[78.758 500 1],[78.874 500 1],[79.3342 500 1],[83.143 40 3],[83.484 50 3],[83.497 50 3],[83.9297 600 1],[83.9599 800 1],[84.081 40 3],[84.093 60 3],[84.141 700 1],[85.1691 500 1],[88.313 40 4],[88.8026 200 1],[89.3549 200 1],[89.434 40 4],[89.491 10 4],[93.628 10 2],[96.1499 200 1],[96.992 3 0],[97.321 50 3],[97.756 60 3],[97.79 40 3],[97.8284 4 0],[98.495 70 3],[98.575 40 3],[99.8372 2.5 0],[99.8432 2.5 0],[100.2346 7.5 0],[100.528 50 2],[100.878 60 2],[101.3664 15 0],[101.502 70 2],[102.5553 9 0],[106.3831 600 1],[106.7945 300 1],[107.1036 900 1],[107.1767 600 1],[107.523 500 1],[107.908 500 1],[108.4667 20 0],[108.5171 20 0],[108.5304 25 0],[108.806 40 0],[109.0271 35 0],[109.0982 25 0],[109.2437 25 0],[109.4769 40 0],[109.5148 35 0],[109.5662 35 0],[109.5797 40 0],[109.681 25 0],[109.7369 30 0],[109.8068 20 0],[109.9523 20 0],[110.7528 50 0],[113.9214 80 1],[116.7148 80 0],[117.9293 300 0],[118.8774 120 0],[120.1353 90 0],[133.5726 300 0],[134.724 1000 0],[135.1657 500 0],[136.3447 1200 0],[137.3116 250 0],[137.9528 2000 0],[138.9693 2500 0],[138.9957 2000 0],[139.6527 1200 0],[144.147 50 1],[152.8569 50 1],[153.721 30 3],[153.93 20 3],[154.2942 50 1],[154.519 20 3],[154.915 20 3],[155.8144 50 1],[156.505 50 1],[162.286 20 3],[182.25 60 2],[182.84 50 2],[185.7488 50 1],[190.161 50 2],[198.361 50 2],[199.737 45 1],[200.684 40 2],[203.2116 45 1],[208.8583 35 1],[209.1458 35 1],[225.307 70 2],[226.895 50 2],[227.834 50 2],[228.393 70 2],[232.35 60 2],[233.645 50 2],[234.064 60 2],[235.967 60 2],[237.037 60 2],[241.642 70 2],[242.779 17 1],[243.407 36 1],[244.714 60 2],[244.858 60 2],[248.691 50 2],[249.853 34 1],[250.274 47 1],[253.248 50 2],[254.696 26 1],[254.988 50 1],[256.484 46 1],[258.067 60 2],[260.331 32 1],[260.359 50 2],[263.267 50 2],[263.318 50 2],[265.872 95 1],[266.554 60 2],[267.695 75 1],[268.804 120 1],[270.136 40 3],[271.037 70 2],[272.403 50 3],[275.123 50 3],[277.064 40 3],[278.247 70 3],[283.54 40 3],[291.205 41 1],[296.556 60 2],[299.665 95 1],[300.606 50 1],[305.796 95 1],[306.313 50 3],[307.132 130 1],[307.668 60 3],[309.219 140 1],[310.446 60 2],[312.372 120 1],[313.934 80 2],[316.787 20 3],[319.145 90 2],[328.98 70 2],[331.543 190 1],[332.057 70 2],[332.906 80 2],[332.91 120 1],[334.042 90 2],[335.335 250 1],[339.289 80 2],[339.345 80 2],[353.003 90 2],[356.068 80 2],[360.21 90 2],[361.285 80 2],[362.269 70 2],[365.695 70 2],[367.028 70 2],[368.205 70 2],[370.545 60 2],[370.734 60 2],[372.045 80 2],[372.654 2 0],[374.881 80 2],[374.996 120 1],[377.935 50 2],[378.117 100 1],[379.876 150 1],[380.518 190 1],[380.946 130 1],[382.02 170 1],[382.759 280 1],[383.335 450 1],[384.32 250 1],[384.537 310 1],[384.565 390 1],[384.58 150 1],[385.099 1000 1],[385.137 790 1],[385.165 120 1],[386.083 2500 1],[386.099 440 1],[386.137 100 1],[391.387 150 1],[391.663 110 1],[392.587 50 2],[394.482 2 0],[399.15 70 2],[401.85 60 2],[405.907 60 2],[410.423 50 2],[410.479 2 0],[410.683 50 2],[413.25 1000 1],[420.967 6.5 0],[422.642 5 0],[426.458 6 0],[436.327 10 0],[436.95 10 0],[437.091 40 2],[437.293 500 1],[437.99 10 0],[438.975 10 0],[439.04 9 0],[440.303 9 0],[443.849 10 0],[447.53 9 0],[448.991 150 1],[452.619 10 0],[460.098 8 0],[460.821 50 2],[462.3938 4 0],[465.404 5 0],[466.1208 8 0],[469.1523 4.5 0],[470.314 30 2],[472.1255 4 0],[474.0729 4.5 0],[476.865 430 1],[478.132 1300 1],[479.455 9900 1],[481.006 2900 1],[481.947 1600 1],[486.375 10 2],[489.677 8100 1],[490.478 4700 1],[491.773 2600 1],[497.164 1 2],[499.548 1000 1],[507.826 2600 1],[509.9789 3 0],[521.794 5600 1],[522.136 2300 1],[539.212 1500 1],[542.323 9900 1],[542.351 1000 1],[544.337 1900 1],[544.421 1000 1],[545.702 560 1],[553.2162 4 0],[579.6305 5 0],[579.9914 4.5 0],[585.6742 3 0],[594.858 10 0],[601.9812 5 0],[608.261 3.5 0],[609.469 190 1],[611.443 16 0],[614.0245 20 0],[619.4757 16 0],[639.866 16 0],[643.4833 15 0],[653.143 15 0],[666.167 140 1],[667.843 15 0],[668.602 130 1],[671.341 120 1],[684.029 15 0],[693.2903 30 0],[698.1886 30 0],[708.6814 60 0],[725.662 750 0],[741.411 500 0],[746.237 55 0],[748.947 55 0],[749.2118 70 0],[754.7072 1100 0],[767.242 230 0],[770.2828 45 0],[771.7581 700 0],[774.497 1000 0],[776.916 220 0],[777.109 65 0],[782.136 220 0],[783.075 170 0],[787.822 300 0],[789.334 22 0],[789.931 230 0],[791.508 180 0],[792.4645 300 0],[793.389 210 0],[793.5012 170 0],[795.252 65 0],[797.472 150 0],[797.697 130 0],[798.06 60 0],[799.785 290 0],[801.561 220 0],[802.333 110 0],[805.107 40 0],[808.451 170 0],[808.556 220 0],[808.667 300 0],[808.773 130 0],[809.467 25 0],[819.442 250 0],[819.913 220 0],[820.021 220 0],[820.378 80 0],[821.204 1800 0],[822.045 300 0],[822.174 2000 0],[833.331 1800 0],[836.071 100 1],[836.184 56 1],[837.594 9990 0],[838.267 18 1],[839.202 10 1],[840.6199 40 0],[842.825 1500 0],[846.734 220 0],[855.044 220 0],[857.524 2000 0],[857.802 75 0],[858.597 7500 0],[862.854 45 0],[864.171 30 0],[868.626 350 0],[891.292 220 0],[894.806 300 0],[903.8982 200 0],[904.543 250 0],[906.9656 100 0],[907.317 200 0],[912.115 750 0],[919.1731 300 0],[919.7596 50 0],[928.886 400 0],[939.3862 150 0],[945.21 350 0],[948.6964 50 0],[958.4801 100 0],[959.222 350 0],[963.2509 25 0],[970.2439 100 0],[974.4426 25 0],[980.7057 20 0],[987.597 40 0],[1039.2549 33.1 0],[1043.283 3.8 1],[1050.662 1 1],[1050.912 1.4 1],[1051.246 1.9 1],[1051.417 2.5 1],[1080.147 0.9 1],[1088.542 0.5 1],[1095.571 0.1 1],[1112.305 30 0],[1139.262 23.1 0],[1140.969 26.9 0],[1143.633 100 0],[1172.056 18 0],[1186.676 19.5 0],[1202.17 17.2 0],[1324.38 35 0],[1329.6 31 0],[1334.68 55 0],[1382.17 52.5 0],[1436.97 14.8 0],[1493.17 29.4 0],[1510.8 26.9 0],[1546.51 38.1 0],[1546.76 16.9 0],[1552.03 109.4 0],[1573.01 148.7 0],[1581.84 19.3 0],[1586.97 278 0],[1588.33 27.7 0],[1592.89 34.2 0],[1596 73.5 0],[1597.05 28.3 0],[1607.76 12.9 0],[1619.85 25.9 0],[1937.0301 22.7 0],[1975.5301 71.7 0],[1976.6801 18.5 0],[2019.94 22.7 0],[2037.01 8.5 0],[2447 10 0]}{ALLx9990x9990x9900x90x90x100x0}{UVx2500x2500x900x90x90x100x0}{VISx9900x1100x9900x70x0x0x0}{IVx9990x9990x100x0x0x0x0}% @@ -66,7 +66,7 @@ \pgfspectra@elt@search{#1}{As}{[60.07 25 4],[61.6 40 4],[71.55 120 4],[73.48 150 4],[73.72 60 4],[76.124 165 1],[80.283 165 1],[84.99 185 2],[86.63 185 2],[87.17 510 2],[88.9 325 2],[92.75 325 2],[93.72 325 2],[95.36 325 2],[96.38 325 2],[98.77 250 4],[102.196 340 1],[102.95 250 4],[105.16 40 4],[105.66 60 4],[108.235 340 1],[113.94 500 1],[114.931 615 1],[117.22 120 2],[118.151 555 1],[118.987 555 1],[119.638 615 1],[119.656 615 1],[120.744 340 1],[120.93 185 2],[121.117 800 1],[121.81 800 1],[122.315 340 1],[124.131 760 1],[124.308 965 1],[124.567 870 1],[125.858 800 1],[126.377 965 1],[126.634 800 1],[126.759 800 1],[128.099 715 1],[128.754 715 1],[130.57 715 1],[130.774 340 1],[133.315 760 1],[134.155 965 1],[135.593 760 1],[136.977 965 1],[137.365 800 1],[137.507 1000 1],[137.578 760 1],[139.464 800 1],[140.031 800 1],[144.859 500 1],[155.888 500 1],[157.099 500 1],[159.36 100 0],[166.055 500 1],[175.86 100 0],[180.615 170 0],[186.034 340 1],[189.042 1000 0],[191.294 500 1],[193.759 800 0],[197.262 585 0],[199.035 170 0],[199.113 100 0],[199.543 100 0],[200.334 230 0],[200.919 100 0],[201.332 100 0],[211.299 100 0],[214.408 100 0],[216.552 135 0],[225.31 150 3],[226.32 200 3],[228.812 350 0],[230.1 200 3],[234.984 350 0],[237.077 100 0],[238.118 135 0],[241.75 250 3],[244.61 150 3],[245.4 250 3],[245.653 170 0],[246.14 200 3],[260.2 340 1],[278.022 170 0],[283.0359 300 1],[283.1164 300 1],[286.044 100 0],[288.4406 300 1],[292.63 80 2],[295.9572 615 1],[298.2 185 2],[300.3819 300 1],[310.88 150 3],[311.6516 300 1],[384.26 340 1],[392.26 325 2],[403.72 185 2],[419.0082 715 1],[419.74 615 1],[424.2982 615 1],[431.5657 500 1],[432.3867 500 1],[433.664 500 1],[435.2145 500 1],[435.2864 425 1],[437.117 375 1],[442.7106 615 1],[443.1562 615 1],[445.8469 715 1],[446.1075 340 1],[446.6348 715 1],[447.446 500 1],[449.423 800 1],[450.7659 850 1],[453.974 615 1],[454.3483 715 1],[460.2427 615 1],[462.9787 340 1],[470.7586 340 1],[473.067 340 1],[488.8557 340 1],[506.898 100 0],[510.558 340 1],[510.755 500 1],[512.134 100 0],[514.163 100 0],[523.138 425 1],[533.123 500 1],[540.813 100 0],[545.132 135 0],[549.7727 340 1],[555.809 425 1],[565.132 425 1],[611.007 425 1],[617.027 500 1],[651.174 300 1],[709.227 300 1],[710.272 300 1],[799.053 340 1],[817.451 300 1],[842.891 100 0],[856.471 100 0],[865.414 100 0],[882.173 135 0],[886.966 100 0],[926.728 135 0],[930.061 200 0],[959.795 230 0],[962.67 290 0],[983.376 230 0],[988.605 100 0],[990.055 140 0],[991.571 170 0],[992.305 290 0],[1001.063 100 0],[1002.404 290 0],[1045.309 100 0],[1057.502 100 0],[1061.407 170 0]}{ALLx1000x1000x1000x510x250x250x0}{UVx1000x1000x1000x510x250x250x0}{VISx850x135x850x325x0x0x0}{IVx340x290x340x0x0x0x0}% \pgfspectra@elt@search{#1}{Se}{[59.6 285 4],[60.1 285 4],[60.87 220 4],[61.3 360 4],[61.43 285 4],[63.6 285 3],[65.27 360 3],[65.42 285 3],[67.01 450 3],[67.19 285 3],[70.92 220 2],[70.94 220 2],[72.06 220 2],[72.28 220 3],[72.43 360 2],[72.64 285 2],[73.46 285 3],[73.72 220 2],[74.19 220 2],[74.64 450 3],[75.9 285 3],[75.91 450 4],[77.65 285 3],[77.73 285 2],[78.58 285 4],[79.08 220 2],[80.38 285 3],[80.43 285 4],[80.87 360 4],[81.48 220 4],[82.07 220 4],[82.85 285 1],[83.03 360 4],[83.27 360 1],[83.95 450 4],[84.3 360 2],[84.58 360 4],[87.92 220 2],[90.66 285 1],[91.29 360 1],[95.37 285 2],[95.44 220 2],[95.47 220 2],[95.96 360 3],[97.41 160 2],[97.48 360 2],[99.67 450 3],[101.34 360 1],[101.4 360 1],[103.36 450 1],[104.96 450 1],[105.74 360 1],[107.98 285 2],[109.47 360 4],[109.78 285 1],[109.91 360 2],[111.92 450 2],[114.19 360 1],[115.1 220 4],[115.6 220 1],[115.69 285 1],[116.85 285 1],[119.23 450 1],[120.57 220 1],[122.76 450 4],[123.49 220 1],[129.1 285 1],[130.72 220 3],[130.89 285 1],[131.44 285 3],[140.54 100 0],[140.64 100 0],[140.66 100 0],[143.53 120 0],[143.58 120 0],[144.48 100 0],[144.68 100 0],[144.7 100 0],[144.92 150 0],[145.63 120 0],[150.09 150 0],[153.04 250 0],[153.13 150 0],[153.18 200 0],[154.71 120 0],[156.03 120 0],[157.53 150 0],[157.76 150 0],[157.79 150 0],[157.95 150 0],[158 200 0],[158.75 150 0],[159.32 150 0],[160.65 250 0],[161.07 100 0],[161.13 100 0],[161.74 200 0],[162.12 150 0],[162.27 100 0],[162.62 120 0],[164.34 150 0],[167.12 250 0],[167.53 250 0],[169.07 250 0],[179.33 250 0],[179.53 300 0],[185.52 300 0],[185.88 250 0],[189.86 400 0],[191.38 350 0],[191.92 300 0],[196.09 500 0],[199.51 150 0],[203.98 500 0],[205.75 285 2],[207.48 500 0],[209 220 3],[213.66 285 3],[216.42 500 0],[216.52 160 3],[216.66 160 3],[233.28 150 0],[241.35 600 0],[254.8 300 0],[266.55 360 3],[272.43 285 3],[276.72 285 2],[277.38 220 2],[295.16 160 3],[303.87 220 1],[304.13 220 1],[337.98 285 2],[338.72 450 2],[341.39 450 2],[342.84 285 2],[345.78 450 2],[354.36 360 2],[357.02 285 2],[363.76 450 2],[371.17 360 2],[373.87 450 2],[374.3 285 2],[380.09 450 2],[404.67 360 2],[407.02 285 1],[408.32 220 2],[416.91 450 2],[417.53 360 1],[418.09 450 1],[432.87 120 0],[433.03 100 0],[438.29 285 1],[444.6 285 1],[444.92 220 1],[446.76 285 1],[463.79 220 2],[473.08 500 0],[473.9 400 0],[474.22 300 0],[484.06 285 1],[484.5 360 1],[522.75 450 1],[530.54 360 1],[536.55 100 0],[536.99 120 0],[537.41 110 0],[552.24 285 1],[556.69 285 1],[586.63 285 1],[605.6 450 1],[630.38 285 2],[632.56 200 0],[644.42 360 1],[649.05 285 1],[653.5 285 1],[683.13 150 0],[699.069 120 0],[699.1792 100 0],[701.0809 200 0],[701.3875 150 0],[706.2065 300 0],[757.51 200 0],[758.34 250 0],[759.22 150 0],[760.68 120 0],[800.1 300 0],[803.64 200 0],[806.09 120 0],[806.53 120 0],[808.11 120 0],[809.32 150 0],[809.47 150 0],[814.93 180 0],[815.2 150 0],[815.77 200 0],[816.31 180 0],[818.29 150 0],[818.5 100 0],[819.46 120 0],[844.047 150 0],[845.038 150 0],[874.233 150 0],[891.886 300 0],[896.969 100 0],[900.197 200 0],[903.861 200 0],[908.314 80 0],[908.879 120 0],[914.083 80 0],[918.188 60 0],[927.112 60 0],[943.25 100 0],[982.558 60 0],[1021.725 200 0],[1030.745 377 0],[1032.726 900 0],[1038.636 640 0],[1065.03 124 0],[1193.456 125 0],[1194.687 275 0],[1194.792 100 0],[1195.227 105 0],[1195.264 170 0],[1196.604 100 0],[1197.293 205 0],[1197.307 115 0],[1481.793 315 0],[1491.747 410 0],[1515.144 500 0],[1546.906 115 0],[1547.1 320 0],[1552.097 265 0],[1561.84 395 0],[1562.038 115 0],[1665.9439 360 0],[1681.3779 505 0],[1681.776 165 0],[1686.6539 205 0],[1697.2711 115 0],[2137.424 235 0],[2144.2561 680 0],[2147.348 415 0],[2171.6359 270 0],[2173.06 240 0],[2313.366 105 0],[2338.885 150 0],[2362.817 110 0],[2414.818 265 0],[2415.923 170 0],[2420.4439 185 0],[2438.599 375 0],[2441.367 160 0],[2447.117 225 0],[2501.751 255 0],[2512.743 510 0]}{ALLx900x900x450x450x450x450x0}{UVx600x600x450x450x450x450x0}{VISx500x500x450x450x0x0x0}{IVx900x900x0x0x0x0x0}% \pgfspectra@elt@search{#1}{Br}{[37.973 70 3],[40.037 70 3],[46.837 60 4],[48.211 80 4],[53.197 90 4],[54.543 100 3],[54.79 100 4],[54.977 70 4],[55.976 100 3],[56.919 100 3],[57.659 100 3],[58.51 100 3],[58.671 100 3],[59.751 100 3],[60.009 100 3],[60.127 100 3],[60.703 100 3],[61.11 45 2],[61.785 100 3],[61.987 100 3],[62.04 30 2],[62.103 80 4],[63.014 100 3],[63.222 80 4],[64.223 100 3],[64.544 70 4],[65.264 40 4],[65.754 80 4],[66.153 100 3],[66.554 50 2],[67.719 50 2],[67.78 30 2],[67.962 80 4],[68.351 100 3],[68.768 45 2],[69.02 40 2],[69.699 35 2],[69.772 100 3],[71.168 30 1],[71.539 100 3],[72.7 30 2],[73.1 100 3],[73.64 30 2],[76.963 25 2],[80.012 100 3],[81.295 70 4],[81.366 100 3],[81.548 25 1],[81.779 25 2],[85.081 100 4],[85.527 15 4],[85.619 35 1],[88.923 100 1],[89.664 50 1],[90.599 50 1],[92.256 30 1],[94.897 100 1],[94.9 35 2],[96.04 40 2],[98.49 45 2],[98.493 50 1],[101.21 50 1],[101.554 100 1],[103.702 50 1],[104.16 60 4],[104.9 100 1],[106.476 45 1],[106.915 100 4],[107.187 50 1],[108.054 50 4],[110.15 25 0],[111.213 90 4],[113.459 30 0],[113.629 25 0],[114.356 100 4],[117.723 25 0],[117.89 40 0],[118.928 100 0],[118.938 25 0],[118.95 100 0],[119.837 50 0],[120.976 80 0],[121.073 100 0],[121.601 75 0],[122.113 100 0],[122.187 90 0],[122.324 100 0],[122.441 120 0],[122.69 120 0],[122.805 75 0],[123.243 750 0],[124.39 120 0],[124.959 80 0],[125.166 150 0],[125.58 100 0],[125.92 150 0],[126.166 120 0],[126.62 120 0],[127.482 90 3],[127.948 100 0],[128.626 100 0],[130.991 300 0],[131.35 25 2],[131.674 300 0],[131.737 100 0],[131.77 200 0],[138.46 1200 0],[140.29 25 2],[142.975 15 4],[144.26 40 4],[144.99 300 0],[147.035 15 4],[148.845 5000 0],[153.174 3000 0],[154.065 2500 0],[157.484 3000 0],[157.639 2000 0],[158.231 2500 0],[163.34 7500 0],[170.351 100 3],[213.379 100 3],[214.502 100 3],[225.721 100 3],[227.273 100 3],[228.517 35 1],[228.76 35 1],[229.344 40 2],[230.74 100 3],[231.329 30 2],[231.73 50 1],[233.693 40 1],[238.645 35 1],[238.67 50 1],[238.869 30 1],[238.896 45 1],[238.969 50 1],[239.221 35 1],[239.242 40 1],[240.816 100 3],[241.158 100 3],[246.239 30 2],[248.26 30 2],[248.85 30 1],[249.114 70 3],[249.522 30 1],[249.925 35 2],[252.17 45 1],[252.949 35 2],[254.148 40 1],[255.109 35 2],[255.692 40 1],[257.083 35 2],[257.317 30 2],[258.119 100 3],[258.499 40 2],[258.914 50 2],[259.448 30 2],[259.598 40 2],[260.62 45 2],[260.815 35 2],[261.313 50 2],[261.626 35 2],[262.652 50 2],[262.923 35 2],[263.96 35 2],[266.14 60 3],[267.153 35 2],[269.017 35 1],[271.377 40 1],[273.583 35 2],[274.652 35 1],[277.05 30 2],[278.528 30 2],[280.416 30 2],[280.755 30 1],[282.087 70 3],[284.288 100 3],[289.34 40 1],[290.771 110 3],[291.718 40 1],[292.696 40 2],[293.622 30 2],[296.721 40 1],[296.9 35 2],[297.226 50 1],[298.186 30 1],[298.587 30 1],[298.653 30 1],[299.404 40 2],[301.648 30 1],[302.076 50 2],[303.363 30 2],[303.645 35 2],[304.118 50 3],[307.442 50 2],[309.194 35 2],[311.729 35 2],[314.781 30 2],[317.408 40 2],[332.108 30 2],[333.307 45 2],[334.964 50 2],[338.056 50 3],[338.525 30 2],[342.382 35 1],[344.736 45 2],[348.758 40 2],[350.647 30 2],[351.736 45 2],[354.016 50 2],[355.108 30 2],[356.243 50 2],[360.071 45 2],[360.68 30 1],[369.353 25 2],[371.43 35 1],[381.565 120 0],[382.026 45 2],[383.469 35 1],[387.121 30 1],[389.163 40 1],[390.124 30 1],[390.395 20 2],[391.42 30 1],[391.438 50 1],[391.951 35 1],[392.409 40 1],[392.955 30 1],[393.969 35 1],[395.061 35 1],[398.038 50 1],[399.236 150 0],[402.404 30 1],[413.566 30 1],[414.02 30 1],[417.963 40 1],[419.345 30 1],[422.389 100 1],[423.689 30 1],[429.139 30 1],[436.514 200 0],[436.56 100 1],[442.514 150 0],[444.174 1000 0],[447.261 1000 0],[447.772 2000 0],[449.042 100 0],[450.655 35 2],[451.344 300 0],[451.974 20 2],[452.559 1500 0],[452.96 30 1],[454.292 50 1],[457.574 300 0],[460.136 30 1],[461.458 250 0],[462.27 35 1],[464.202 30 1],[465.198 30 1],[467.87 50 1],[469.317 40 1],[470.485 50 1],[471.976 35 1],[472.036 40 1],[472.82 30 1],[473.541 30 1],[474.264 40 1],[475.228 250 0],[476.6 35 1],[477.94 40 1],[478.031 400 0],[478.519 160 0],[478.55 50 1],[480.233 30 1],[481.67 50 1],[481.846 30 1],[484.481 35 1],[484.875 35 1],[492.112 40 1],[492.879 40 1],[493.066 45 1],[494.551 30 1],[497.976 400 0],[503.874 30 1],[505.464 30 1],[516.438 40 1],[517.587 15 2],[518.001 30 1],[518.235 50 1],[519.39 30 1],[523.823 50 1],[527.268 30 1],[530.41 35 1],[533.057 40 1],[533.205 50 1],[539.548 120 0],[542.278 40 1],[542.499 35 1],[543.507 30 1],[544.68 10 2],[546.622 120 0],[547.847 35 1],[548.879 30 1],[549.506 30 1],[550.669 50 1],[558.994 35 1],[571.871 30 1],[583.078 30 1],[585.208 180 0],[594.048 160 0],[612.214 240 0],[614.86 4000 0],[616.174 30 1],[617.739 200 0],[633.548 150 0],[635.073 6000 0],[635.294 40 1],[641.032 250 0],[648.356 180 0],[651.462 100 0],[654.457 2000 0],[654.809 150 0],[655.98 5000 0],[657.131 100 0],[657.914 180 0],[658.217 2000 0],[662.047 150 0],[663.162 5000 0],[668.228 2000 0],[669.213 1000 0],[672.828 800 0],[676.006 200 0],[677.948 200 0],[678.674 220 0],[679.004 650 0],[679.148 160 0],[686.115 180 0],[700.519 1000 0],[719.28 10 2],[726.045 200 0],[734.851 1000 0],[751.296 4000 0],[759.161 160 0],[759.507 180 0],[761.641 200 0],[767.31 10 2],[780.302 3000 0],[782.723 120 0],[788.145 250 0],[788.157 250 0],[792.581 250 0],[793.868 3000 0],[794.794 300 0],[795.018 300 0],[797.844 800 0],[797.857 1000 0],[798.994 3000 0],[802.635 200 0],[802.654 250 0],[813.152 3000 0],[815.265 100 0],[815.375 1000 0],[815.4 2500 0],[824.686 500 0],[826.496 1500 0],[827.244 7500 0],[833.47 2000 0],[834.37 1000 0],[838.404 120 0],[844.655 4000 0],[847.745 400 0],[851.338 150 0],[855.773 100 0],[856.628 100 0],[863.866 2000 0],[869.853 400 0],[879.347 1000 0],[881.996 1500 0],[882.522 2500 0],[888.898 400 0],[889.762 3000 0],[893.24 600 0],[894.939 180 0],[896.4 900 0],[902.442 35 1],[916.606 3000 0],[917.363 1500 0],[917.816 2000 0],[926.542 4000 0],[932.086 1500 0],[943.404 30 1],[979.348 600 0],[989.64 1000 0],[1014.008 300 0],[1023.774 600 0],[1029.962 100 0],[1037.765 150 0],[1045.796 3000 0],[1074.214 100 0],[1075.592 300 0],[1321.717 170 0],[1435.457 180 0],[1488.87 125 0],[1673.1189 180 0],[1856.8311 120 0],[1973.3619 350 0],[2028.173 100 0],[2062.467 100 0],[2178.724 120 0],[2286.565 400 0],[2351.315 100 0],[2834.65 50 0],[3038.085 50 0],[3163.0131 60 0],[3269.39 12 0],[3418.1871 15 0],[3834.575 15 0],[3996.4359 12 0]}{ALLx7500x7500x100x50x110x100x0}{UVx7500x7500x100x50x110x100x0}{VISx6000x6000x100x45x0x0x0}{IVx7500x7500x35x0x0x0x0}% -\pgfspectra@elt@search{#1}{Kr}{[46.735 30 2],[47.216 150 4],[48.439 100 4],[49.625 250 4],[50.077 120 4],[50.72 200 4],[54.086 30 2],[54.804 60 4],[56.564 30 2],[56.916 30 2],[57.198 30 2],[57.983 30 2],[58.514 30 2],[58.596 30 2],[59.37 30 2],[59.41 30 2],[59.641 30 2],[60.017 40 2],[60.367 30 2],[60.586 50 2],[60.647 35 2],[61.112 50 2],[61.672 35 2],[62.145 40 2],[62.28 45 2],[62.502 50 2],[62.576 30 2],[62.859 45 2],[63.004 50 2],[63.309 35 2],[63.787 120 4],[63.998 50 2],[64.641 60 2],[65.12 50 2],[65.972 50 2],[66.486 30 2],[67.234 40 2],[67.285 35 2],[67.657 35 2],[68.013 35 2],[68.368 35 2],[68.625 45 2],[68.798 45 2],[69.193 45 2],[69.561 50 2],[69.805 30 2],[70.836 50 2],[70.885 600 4],[71.4 50 2],[72.204 100 2],[72.94 60 1],[74.67 30 2],[76.118 200 1],[76.398 100 1],[76.62 60 1],[77.103 200 1],[77.369 60 1],[78.21 200 1],[78.372 100 1],[78.597 60 2],[80.576 7 3],[81.682 18 3],[81.815 60 1],[83.038 60 1],[83.766 50 2],[84.204 22 3],[84.406 100 1],[85.473 50 2],[86.258 60 2],[86.482 60 1],[86.887 60 1],[87.084 40 2],[87.608 50 2],[88.414 200 1],[88.63 1000 1],[89.101 400 1],[89.781 75 2],[91.139 200 1],[91.743 2000 1],[94.544 50 0],[94.654 50 0],[95.106 20 0],[95.34 50 0],[96.337 50 0],[96.497 2000 1],[98.729 50 2],[100.106 100 0],[100.355 100 0],[103.002 100 0],[115.874 30 2],[116.487 200 0],[123.584 650 0],[163.882 6 2],[191.409 6 2],[223.734 3 3],[229.126 6 3],[232.93 3 3],[233.675 4 3],[234.827 4 3],[235.85 3 3],[238.805 3 3],[239.394 40 2],[241.69 4 3],[242.804 3 3],[244.268 5 3],[245.17 4 3],[245.974 6 3],[246.477 100 1],[247.406 5 3],[249.248 60 1],[249.401 40 2],[251.7 4 3],[251.802 5 3],[251.938 6 3],[252.45 5 3],[254.6 5 3],[254.7 6 3],[255.808 4 3],[256.325 30 2],[258.69 3 3],[260.617 5 3],[260.95 10 3],[261.53 8 3],[262.111 7 3],[263.976 60 2],[268.032 30 2],[268.119 40 2],[271.24 80 1],[273.055 3 3],[274.818 8 3],[277.47 6 3],[282.96 3 3],[283.3 100 1],[283.608 3 3],[284.1 30 2],[285.116 30 2],[285.3 5 3],[285.93 3 3],[287.061 50 2],[289.218 100 2],[290.917 30 2],[295.256 50 2],[299.222 60 2],[302.23 50 2],[302.445 80 2],[304.693 50 2],[305.672 30 2],[306.313 60 2],[309.716 40 2],[311.225 60 2],[312.061 30 2],[312.439 100 2],[314.135 60 2],[314.201 3 3],[318.911 100 2],[319.121 80 2],[322.499 6 3],[323.952 40 2],[324.044 40 2],[324.569 300 2],[326.17 3 3],[326.481 150 2],[326.848 100 2],[327.165 30 2],[328.589 30 2],[330.475 30 2],[331.147 50 2],[332.575 200 2],[333.076 60 2],[334.248 50 2],[335.193 100 2],[337.496 40 2],[343.946 100 2],[347.465 70 2],[348.859 100 2],[350.742 200 2],[356.423 100 2],[360.788 100 1],[363.1889 200 1],[364.134 30 2],[365.3928 250 1],[366.5324 80 0],[366.901 150 1],[367.9559 100 0],[368.6182 80 1],[369.065 30 2],[371.802 300 1],[371.8595 200 1],[372.135 150 1],[374.1638 200 1],[374.48 150 1],[375.4245 80 1],[377.8089 500 1],[378.3095 500 1],[380.93 3 3],[386.058 5 3],[386.87 40 2],[387.544 150 1],[390.6177 150 1],[392.0081 200 1],[393.429 5 3],[399.484 100 1],[399.7793 100 1],[405.7037 300 1],[406.5128 300 1],[406.737 50 2],[408.8337 500 1],[409.8729 250 1],[410.9248 100 1],[413.133 40 2],[414.5122 250 1],[415.446 40 2],[425.058 150 1],[427.3969 1000 0],[428.2967 100 0],[429.2923 600 1],[430.049 200 1],[431.781 500 1],[431.8551 400 0],[431.9579 1000 0],[432.298 150 1],[435.1359 100 0],[435.5477 3000 1],[436.2641 500 0],[436.969 200 1],[437.6121 800 0],[438.654 300 1],[439.9965 200 0],[442.5189 100 0],[443.1685 500 1],[443.6812 600 1],[445.3917 600 0],[446.3689 800 0],[447.5014 800 1],[448.988 400 1],[450.2353 600 0],[452.314 400 1],[455.661 200 1],[457.7209 800 1],[458.2978 300 1],[459.28 150 1],[461.5292 500 1],[461.9166 1000 1],[463.3885 800 1],[465.8876 2000 1],[468.0406 500 1],[469.1301 100 1],[469.436 200 1],[473.9002 3000 1],[476.2435 300 1],[476.5744 1000 1],[481.176 300 1],[482.518 300 1],[483.2077 800 1],[484.6612 700 1],[485.72 150 1],[494.559 300 1],[501.645 20 2],[502.24 200 1],[508.652 250 1],[512.573 400 1],[520.832 500 1],[530.866 200 1],[533.341 500 1],[546.817 200 1],[550.143 10 2],[556.2224 500 0],[557.0288 2000 0],[558.0386 80 0],[564.9561 100 0],[568.189 400 1],[569.035 200 1],[583.2855 100 0],[587.0914 3000 0],[599.222 200 1],[599.3849 60 0],[603.717 10 2],[605.6125 60 0],[607.838 10 2],[631.022 10 2],[642.018 300 1],[642.1026 100 0],[645.6288 200 0],[657.007 150 1],[669.9228 60 0],[690.4678 100 0],[721.313 250 1],[722.4104 100 0],[728.7258 80 0],[728.978 400 1],[740.702 400 1],[742.5541 60 0],[743.578 200 1],[748.6862 100 0],[752.446 300 1],[758.7411 1000 0],[760.1544 2000 0],[764.116 150 1],[768.5244 1000 0],[769.4538 1200 0],[773.569 250 1],[774.6827 150 0],[785.4821 800 0],[791.3423 200 0],[792.8597 180 0],[793.322 200 1],[797.362 120 1],[798.2401 100 0],[805.9503 1500 0],[810.4364 4000 0],[811.2899 6000 0],[813.2967 60 0],[819.0054 3000 0],[820.272 200 1],[821.8365 80 0],[826.324 3000 0],[827.2353 100 0],[828.105 1500 0],[829.8107 5000 0],[841.243 100 0],[850.887 3000 0],[876.411 150 0],[877.6748 6000 0],[892.8692 2000 0],[923.848 500 1],[929.382 500 1],[932.099 200 1],[936.195 300 1],[936.2082 100 0],[940.282 200 1],[947.093 200 1],[957.752 500 1],[960.58 500 1],[961.961 400 1],[966.334 200 1],[971.16 200 1],[975.1758 2000 0],[980.314 500 1],[985.6314 500 0],[1022.146 1000 1],[1118.7108 100 0],[1125.7711 200 0],[1125.9126 150 0],[1145.7481 500 0],[1179.2425 150 0],[1181.9377 1500 0],[1199.7105 600 0],[1207.7224 160 0],[1286.1892 100 0],[1317.7412 1100 0],[1362.2415 1000 0],[1363.422 2400 0],[1365.8394 800 0],[1371.1036 200 0],[1373.8851 600 0],[1397.4027 150 0],[1404.5657 550 0],[1410.4298 140 0],[1440.222 180 0],[1442.6793 2000 0],[1451.784 100 0],[1473.4436 1600 0],[1476.2672 550 0],[1476.5472 450 0],[1496.1894 400 0],[1500.5307 120 0],[1520.9526 140 0],[1523.9615 1700 0],[1532.648 130 0],[1533.4958 1500 0],[1537.2037 700 0],[1547.4026 200 0],[1568.102 180 0],[1582.009 120 0],[1672.6514 200 0],[1678.5129 2000 0],[1685.3488 1000 0],[1689.0441 2400 0],[1689.6754 1600 0],[1693.5807 1800 0],[1709.8771 600 0],[1736.7605 700 0],[1740.4443 120 0],[1761.6854 150 0],[1784.2736 650 0],[1800.2229 700 0],[1816.7314 2600 0],[1839.9785 100 0],[1858.0896 150 0],[1869.6295 300 0],[1878.5461 170 0],[1879.7703 200 0],[2020.9879 140 0],[2042.3965 300 0],[2044.6971 140 0],[2116.5471 600 0],[2190.2514 1800 0],[2248.5775 120 0],[2334.0416 180 0],[2426.0506 120 0],[2429.2221 180 0],[2523.382 600 0],[2861.0551 180 0],[2865.5721 1000 0],[2876.9711 150 0],[2882.249 140 0],[2923.6689 300 0],[3066.3539 300 0],[3097.916 300 0],[3930.0602 500 0],[3948.652 1100 0],[3955.725 220 0],[3957.2602 100 0],[3958.8398 1400 0],[3958.9602 1100 0],[3995.4801 500 0],[3996.6602 300 0],[4030.6102 1300 0],[4068.516 250 0]}{ALLx6000x6000x3000x300x22x600x0}{UVx2000x650x2000x300x22x600x0}{VISx3000x3000x3000x50x5x0x0}{IVx6000x6000x1000x0x0x0x0}% +\pgfspectra@elt@search{#1}{Kr}{[46.735 30 2],[47.216 150 4],[48.439 100 4],[49.625 250 4],[50.077 120 4],[50.72 200 4],[54.086 30 2],[54.804 60 4],[56.564 30 2],[56.916 30 2],[57.198 30 2],[57.983 30 2],[58.514 30 2],[58.596 30 2],[59.37 30 2],[59.41 30 2],[59.641 30 2],[60.017 40 2],[60.367 30 2],[60.586 50 2],[60.647 35 2],[61.112 50 2],[61.672 35 2],[62.145 40 2],[62.28 45 2],[62.502 50 2],[62.576 30 2],[62.859 45 2],[63.004 50 2],[63.309 35 2],[63.787 120 4],[63.998 50 2],[64.641 60 2],[65.12 50 2],[65.972 50 2],[66.486 30 2],[67.234 40 2],[67.285 35 2],[67.657 35 2],[68.013 35 2],[68.368 35 2],[68.625 45 2],[68.798 45 2],[69.193 45 2],[69.561 50 2],[69.805 30 2],[70.836 50 2],[70.885 600 4],[71.4 50 2],[72.204 100 2],[72.94 60 1],[74.67 30 2],[76.118 200 1],[76.398 100 1],[76.62 60 1],[77.103 200 1],[77.369 60 1],[78.21 200 1],[78.372 100 1],[78.597 60 2],[80.576 7 3],[81.682 18 3],[81.815 60 1],[83.038 60 1],[83.766 50 2],[84.204 22 3],[84.406 100 1],[85.473 50 2],[86.258 60 2],[86.482 60 1],[86.887 60 1],[87.084 40 2],[87.608 50 2],[88.414 200 1],[88.63 1000 1],[89.101 400 1],[89.781 75 2],[91.139 200 1],[91.743 2000 1],[94.544 50 0],[94.654 50 0],[95.106 20 0],[95.34 50 0],[96.337 50 0],[96.497 2000 1],[98.729 50 2],[100.106 100 0],[100.355 100 0],[103.002 100 0],[115.874 30 2],[116.487 200 0],[123.584 650 0],[163.882 6 2],[191.409 6 2],[223.734 3 3],[229.126 6 3],[232.93 3 3],[233.675 4 3],[234.827 4 3],[235.85 3 3],[238.805 3 3],[239.394 40 2],[241.69 4 3],[242.804 3 3],[244.268 5 3],[245.17 4 3],[245.974 6 3],[246.477 100 1],[247.406 5 3],[249.248 60 1],[249.401 40 2],[251.7 4 3],[251.802 5 3],[251.938 6 3],[252.45 5 3],[254.6 5 3],[254.7 6 3],[255.808 4 3],[256.325 30 2],[258.69 3 3],[260.617 5 3],[260.95 10 3],[261.53 8 3],[262.111 7 3],[263.976 60 2],[268.032 30 2],[268.119 40 2],[271.24 80 1],[273.055 3 3],[274.818 8 3],[277.47 6 3],[282.96 3 3],[283.3 100 1],[283.608 3 3],[284.1 30 2],[285.116 30 2],[285.3 5 3],[285.93 3 3],[287.061 50 2],[289.218 100 2],[290.917 30 2],[295.256 50 2],[299.222 60 2],[302.23 50 2],[302.445 80 2],[304.693 50 2],[305.672 30 2],[306.313 60 2],[309.716 40 2],[311.225 60 2],[312.061 30 2],[312.439 100 2],[314.135 60 2],[314.201 3 3],[318.911 100 2],[319.121 80 2],[322.499 6 3],[323.952 40 2],[324.044 40 2],[324.569 300 2],[326.17 3 3],[326.481 150 2],[326.848 100 2],[327.165 30 2],[328.589 30 2],[330.475 30 2],[331.147 50 2],[332.575 200 2],[333.076 60 2],[334.248 50 2],[335.193 100 2],[337.496 40 2],[343.946 100 2],[347.465 70 2],[348.859 100 2],[350.742 200 2],[356.423 100 2],[360.788 100 1],[363.1889 200 1],[364.134 30 2],[365.3928 250 1],[366.5324 80 0],[366.901 150 1],[367.9559 100 0],[368.6182 80 1],[369.065 30 2],[371.802 300 1],[371.8595 200 1],[372.135 150 1],[374.1638 200 1],[374.48 150 1],[375.4245 80 1],[377.8089 500 1],[378.3095 500 1],[380.93 3 3],[386.058 5 3],[386.87 40 2],[387.544 150 1],[390.6177 150 1],[392.0081 200 1],[393.429 5 3],[399.484 100 1],[399.7793 100 1],[405.7037 300 1],[406.5128 300 1],[406.737 50 2],[408.8337 500 1],[409.8729 250 1],[410.9248 100 1],[413.133 40 2],[414.5122 250 1],[415.446 40 2],[425.058 150 1],[427.3969 1000 0],[428.2967 100 0],[429.2923 600 1],[430.049 200 1],[431.781 500 1],[431.8551 400 0],[431.9579 1000 0],[432.298 150 1],[435.1359 100 0],[435.5477 3000 1],[436.2641 500 0],[436.969 200 1],[437.6121 800 0],[438.654 300 1],[439.9965 200 0],[442.5189 100 0],[443.1685 500 1],[443.6812 600 1],[445.3917 600 0],[446.3689 800 0],[447.5014 800 1],[448.988 400 1],[450.2353 600 0],[452.314 400 1],[455.661 200 1],[457.7209 800 1],[458.2978 300 1],[459.28 150 1],[461.5292 500 1],[461.9166 1000 1],[463.3885 800 1],[465.8876 2000 1],[468.0406 500 1],[469.1301 100 1],[469.436 200 1],[473.9002 3000 1],[476.2435 300 1],[476.5744 1000 1],[481.176 300 1],[482.518 300 1],[483.2077 800 1],[484.6612 700 1],[485.72 150 1],[494.559 300 1],[501.645 20 2],[502.24 200 1],[508.652 250 1],[512.573 400 1],[520.832 500 1],[530.866 200 1],[533.341 500 1],[546.817 200 1],[550.143 10 2],[556.2224 500 0],[557.0288 2000 0],[558.0386 80 0],[564.9561 100 0],[568.189 400 1],[569.035 200 1],[583.2855 100 0],[587.0914 3000 0],[599.222 200 1],[599.3849 60 0],[603.717 10 2],[605.6125 60 0],[607.838 10 2],[631.022 10 2],[642.018 300 1],[642.1026 100 0],[645.6288 200 0],[657.007 150 1],[669.9228 60 0],[690.4678 100 0],[721.313 250 1],[722.4104 100 0],[728.7258 80 0],[728.978 400 1],[740.702 400 1],[742.5541 60 0],[743.578 200 1],[748.6862 100 0],[752.446 300 1],[758.7411 1000 0],[760.1544 2000 0],[764.116 150 1],[768.5244 1000 0],[769.4538 1200 0],[773.569 250 1],[774.6827 150 0],[785.4821 800 0],[791.3423 200 0],[792.8597 180 0],[793.322 200 1],[797.362 120 1],[798.2401 100 0],[805.9503 1500 0],[810.4364 4000 0],[811.2899 6000 0],[813.2967 60 0],[819.0054 3000 0],[820.272 200 1],[821.8365 80 0],[826.324 3000 0],[827.2353 100 0],[828.105 1500 0],[829.8107 5000 0],[841.243 100 0],[850.887 3000 0],[876.411 150 0],[877.6748 6000 0],[892.8692 2000 0],[923.848 500 1],[929.382 500 1],[932.099 200 1],[936.195 300 1],[936.2082 100 0],[940.282 200 1],[947.093 200 1],[957.752 500 1],[960.58 500 1],[961.961 400 1],[966.334 200 1],[971.16 200 1],[975.1758 2000 0],[980.314 500 1],[985.6314 500 0],[1022.146 1000 1],[1118.7108 100 0],[1125.7711 200 0],[1125.9126 150 0],[1145.7481 500 0],[1179.2425 150 0],[1181.9377 1500 0],[1199.7105 600 0],[1207.7224 160 0],[1286.1892 100 0],[1317.7412 1100 0],[1362.2415 1000 0],[1363.422 2400 0],[1365.8394 800 0],[1371.1036 200 0],[1373.8851 600 0],[1397.4027 150 0],[1404.5657 550 0],[1410.4298 140 0],[1440.222 180 0],[1442.6793 2000 0],[1451.784 100 0],[1473.4436 1600 0],[1476.2672 550 0],[1476.5472 450 0],[1496.1894 400 0],[1500.5307 120 0],[1520.9526 140 0],[1523.9615 1700 0],[1532.648 130 0],[1533.4958 1500 0],[1537.2037 700 0],[1547.4026 200 0],[1568.102 180 0],[1582.009 120 0],[1672.6514 200 0],[1678.5129 2000 0],[1685.3488 1000 0],[1689.0441 2400 0],[1689.6754 1600 0],[1693.5807 1800 0],[1709.8771 600 0],[1736.7605 700 0],[1740.4443 120 0],[1761.6854 150 0],[1784.2736 650 0],[1800.2229 700 0],[1816.7314 2600 0],[1839.9785 100 0],[1858.0896 150 0],[1869.6295 300 0],[1878.5461 170 0],[1879.7703 200 0],[2020.9879 140 0],[2042.3965 300 0],[2044.6971 140 0],[2116.5471 600 0],[2190.2514 1800 0],[2248.5775 120 0],[2334.0416 180 0],[2426.0506 120 0],[2429.2221 180 0],[2523.382 600 0],[2861.0551 180 0],[2865.5721 1000 0],[2876.9711 150 0],[2882.249 140 0],[2923.6689 300 0],[3066.3539 300 0],[3097.916 300 0],[3930.0602 500 0],[3948.652 1100 0],[3955.725 220 0],[3957.2602 100 0],[3958.8398 1400 0],[3958.9602 1100 0],[3995.4801 500 0],[3996.6602 300 0]}{ALLx6000x6000x3000x300x22x600x0}{UVx2000x650x2000x300x22x600x0}{VISx3000x3000x3000x50x5x0x0}{IVx6000x6000x1000x0x0x0x0}%,[4030.6102 1300 0],[4068.516 250 0] \pgfspectra@elt@search{#1}{Rb}{[46.585 3 2],[47.488 1 1],[48.1118 4 1],[48.243 3.5 2],[48.247 3 2],[48.283 50 2],[48.484 30 2],[48.966 50 2],[48.996 10 2],[49.348 60 2],[49.743 9 1],[49.782 5 2],[50.028 10 2],[50.833 3 2],[50.8434 2 1],[51.3266 15 1],[51.679 40 2],[53.0173 30 1],[53.364 80 2],[53.3801 7.5 1],[53.586 120 2],[54.2887 4 1],[55.5036 20 1],[55.619 120 2],[55.836 50 2],[56.477 70 2],[56.671 150 2],[57.282 100 2],[57.665 150 2],[57.963 250 2],[58.126 150 2],[58.234 50 2],[58.677 80 2],[58.9419 250 1],[59.142 10 2],[59.365 90 2],[59.494 100 2],[59.518 1 3],[59.588 130 2],[59.849 120 2],[60.209 45 2],[60.551 5 2],[60.728 50 2],[61.331 40 2],[61.967 50 2],[62.083 2 2],[62.224 10 2],[63.006 25 2],[64.3878 150 1],[64.567 50 2],[66.376 2.5 3],[67.481 2 2],[69.7049 300 1],[71.1187 600 1],[71.624 2.5 3],[73.341 2 3],[74.085 5 3],[74.1456 1000 1],[74.986 2 3],[75.375 2 3],[76.904 500 2],[77.154 1 3],[77.689 2.5 3],[81.528 250 2],[81.792 0.9 3],[85.018 1.5 3],[98.8 1 3],[160.412 100 1],[164.496 20 1],[170.752 20 1],[171.685 60 1],[176.05 500 1],[180.347 20 1],[180.968 50 1],[186.533 50 1],[188.942 50 1],[195.424 50 1],[195.654 30 1],[197.142 20 1],[198.319 50 1],[204.223 30 1],[205.221 30 1],[205.28 50 1],[206.892 200 1],[207.15 100 1],[207.595 1000 1],[209.029 100 1],[210.806 20 1],[211.65 30 1],[212.525 100 1],[212.982 40 1],[214.31 20 1],[214.383 3000 1],[215.321 10 2],[216.459 25 2],[219.036 20 1],[219.799 60 1],[219.826 60 1],[220.786 30 1],[221.708 1000 1],[222.379 20 1],[223.772 40 1],[225.065 50 1],[225.143 20 1],[225.419 80 1],[225.455 20 1],[226.354 20 1],[226.394 50 1],[226.8 10 2],[228.682 50 1],[229.171 500 1],[229.88 30 1],[230.012 15 2],[230.414 50 2],[230.445 15 2],[231.246 25 2],[233.301 25 1],[233.339 200 1],[233.707 20 2],[234.19 10 2],[234.537 20 2],[234.981 10 2],[235.311 35 1],[235.396 30 1],[235.697 40 1],[235.804 30 1],[236.427 30 1],[236.432 20 1],[236.515 20 1],[236.751 30 1],[237.321 20 1],[238.044 15 2],[238.129 10 2],[238.534 200 1],[240.594 25 1],[241.846 15 2],[243.417 40 1],[245.914 80 1],[247.22 5000 1],[248.456 30 1],[248.47 70 1],[249.638 200 1],[250.267 20 1],[251.418 25 1],[252.424 100 1],[256.186 30 2],[257.371 10 2],[257.707 10 2],[258.683 20 2],[259.456 20 1],[262.376 40 1],[263.175 100 2],[263.683 35 2],[264.558 40 1],[265.668 10 2],[268.41 100 1],[271.176 100 1],[271.386 10 2],[274.101 25 1],[279.886 50 2],[280.027 15 2],[280.758 50 2],[281.215 50 1],[283.851 35 1],[284.544 10 2],[286.977 15 2],[287.388 75 1],[290.369 50 2],[294.962 15 2],[295.101 10 2],[295.607 200 2],[296.745 50 2],[296.813 15 2],[297.074 50 2],[298.74 25 2],[302.361 35 2],[303.962 20 2],[304.148 20 2],[305.136 100 1],[307.07 25 2],[308.202 0.2 0],[308.684 50 2],[308.858 25 1],[309.849 10 2],[311.136 50 2],[311.257 1 0],[311.306 0.3 0],[311.482 25 2],[311.892 12 2],[314.89 500 1],[315.754 2.5 0],[315.826 0.5 0],[316.1 120 1],[316.934 10 2],[322.26 20 2],[322.798 5 0],[322.916 0.6 0],[327.099 200 1],[328.641 50 2],[332.149 150 1],[333.016 10 2],[334.055 120 1],[334.692 20 2],[334.872 6 0],[335.082 7.5 0],[335.389 75 1],[339.303 120 1],[341.558 75 1],[343.418 100 1],[343.926 25 2],[346.15 150 1],[349.268 10 2],[352.139 300 1],[353.155 300 1],[354.115 100 1],[358.705 10 0],[359.157 4 0],[360.06 500 1],[360.064 1000 1],[363.98 60 1],[364.626 40 1],[364.756 35 1],[366.274 100 1],[366.381 90 1],[366.672 35 1],[367.566 30 1],[369.958 250 1],[374.633 35 1],[379.681 350 1],[380.19 250 1],[382.666 100 1],[386.074 45 1],[390.729 25 1],[392.22 50 1],[392.644 250 1],[394.051 2500 1],[397.815 100 1],[402.949 170 1],[408.388 250 1],[410.428 200 1],[413.611 170 1],[419.308 350 1],[420.18 100 0],[421.553 50 0],[424.44 9000 1],[426.658 50 1],[427.025 25 1],[427.314 1500 1],[428.797 250 1],[429.397 150 1],[430.626 50 1],[434.696 100 1],[437.712 250 1],[444.01 30 1],[446.947 100 1],[449.392 40 1],[451.904 70 1],[453.034 300 1],[453.379 50 1],[454.074 40 1],[457.177 2000 1],[462.242 300 1],[463.189 35 1],[464.857 1000 1],[465.928 50 1],[473.045 100 1],[475.53 100 1],[475.782 40 1],[477.595 3000 1],[478.283 500 1],[485.534 30 1],[488.559 150 1],[508.7987 0.2 0],[513.2471 0.2 0],[515.0134 1 0],[515.208 1000 1],[516.458 30 1],[516.5023 0.1 0],[516.5142 0.2 0],[516.965 0.1 0],[519.5278 1.5 0],[523.3968 0.2 0],[526.0034 2 0],[526.0228 0.1 0],[527.051 20 1],[532.238 0.3 0],[536.2601 4 0],[539.0568 0.4 0],[543.1532 7.5 0],[543.183 0.3 0],[551.255 50 1],[552.278 500 1],[557.8788 0.6 0],[563.599 500 1],[564.7774 4 0],[565.375 2 0],[569.915 300 1],[572.4121 6 0],[572.4614 0.3 0],[573.964 20 1],[607.0755 7.5 0],[613.527 20 1],[615.9626 3 0],[619.908 100 1],[620.6309 7.5 0],[626.94 30 1],[629.8325 12 0],[629.9224 0.5 0],[645.833 1000 1],[655.562 100 1],[656.081 500 1],[677.507 300 1],[727.9997 10 0],[731.652 30 1],[740.8173 15 0],[761.8933 20 0],[775.7651 30 0],[775.9436 6 0],[780.027 9000 0],[792.526 0.5 0],[792.554 0.4 0],[794.76 4500 0],[827.141 4 0],[827.171 3 0],[860.396 200 1],[886.8512 4 0],[886.8852 3 0],[897.888 30 1],[902.177 30 1],[922.464 0.3 0],[923.425 0.2 0],[924.641 50 1],[933.887 30 1],[937.35 20 1],[939.136 30 1],[947.932 100 1],[949.372 70 1],[952.265 3 0],[952.305 0.5 0],[954.018 2 0],[961.299 30 1],[967.154 30 1],[968.905 200 1],[977.606 20 1],[993.476 20 1],[1007.5282 3.5 0],[1007.5708 3 0],[1323.517 10 0],[1344.281 2 0],[1344.357 3 0],[1366.501 7.5 0],[1475.241 100 0],[1528.843 80 0],[1528.948 15 0],[2252.965 2 0],[2293.2471 1 0],[2731.4311 0.4 0],[2790.5369 0.2 0]}{ALLx9000x9000x9000x500x5x0x0}{UVx5000x10x5000x500x5x0x0}{VISx9000x100x9000x0x0x0x0}{IVx9000x9000x200x0x0x0x0}% \pgfspectra@elt@search{#1}{Sr}{[28.431 2.4 3],[29.109 2.4 3],[29.119 2.4 3],[29.322 2.4 3],[29.812 3 3],[30.012 3 3],[30.027 2.4 3],[30.167 2.4 3],[30.718 5 2],[31.611 10 2],[32.161 10 2],[33.067 25 2],[35.162 100 2],[35.88 15 2],[36.349 50 2],[37.121 30 2],[37.853 4 3],[39.244 15 3],[39.3 10 3],[39.49 9 3],[39.622 10 3],[39.992 8 3],[40.385 7 3],[40.694 7 3],[41.293 6 3],[41.307 8 3],[41.532 8 3],[41.978 6 3],[43.021 5 3],[43.065 6 3],[43.724 200 2],[44.273 5 3],[47.176 5 3],[48.42 5 3],[49.179 375 2],[50.704 250 2],[50.814 5 3],[51.438 750 2],[51.728 2 4],[53.419 5 3],[54.051 1.2 4],[56.275 500 2],[57.801 5 4],[62.493 6 4],[64.223 5 4],[64.921 10 4],[65.915 4 4],[66.094 5 4],[66.443 40 3],[66.993 1.8 4],[68.623 7 4],[71.035 20 3],[71.579 1.2 4],[74.782 2.4 4],[86.232 1.8 4],[96.837 4 2],[97.578 4 2],[99.298 5 2],[102.523 10 2],[104.491 7 2],[105.774 4 2],[106.02 5 2],[109.877 4 2],[112.549 7 2],[114.024 4 2],[116.827 4 2],[118.209 4 2],[118.921 4 3],[123.623 10 2],[124.414 6 3],[124.475 4 3],[124.487 4 3],[125.778 4 3],[126.862 4 3],[133.113 4 3],[134.79 6 3],[136.115 4 3],[140.867 5 3],[159.274 4 3],[167.703 5 3],[170.516 4 3],[172.423 4 3],[172.953 5 3],[173.212 4 3],[177.725 4 3],[194.058 4 2],[195.844 6 2],[196.692 6 2],[199.461 4 3],[206.863 5 2],[209.959 10 2],[210.438 4 3],[211.431 5 2],[211.79 4 3],[211.848 6 2],[211.952 10 2],[213.312 10 2],[214.28 6 2],[214.574 4 2],[215.284 280 1],[216.596 280 1],[217.891 6 2],[218.014 6 2],[219.088 10 2],[220.386 10 2],[221.799 4 3],[221.95 10 2],[222.005 10 2],[223.041 4 3],[224.049 4 3],[225.338 4 3],[226.703 10 2],[227.371 20 2],[227.787 10 2],[231.033 6 2],[231.495 10 2],[233.479 10 2],[234.013 20 2],[234.697 10 3],[235.734 4 3],[240.417 10 2],[241.052 6 2],[242.81 32 0],[243.893 4 3],[244.141 5 3],[245.403 10 2],[248.279 6 3],[248.357 5 3],[248.652 20 2],[250.057 3.6 3],[250.359 10 2],[250.802 4 3],[253.403 4 3],[254.802 3.6 3],[255.56 8 3],[256.947 24 0],[257.104 8 3],[257.158 5 3],[258.934 3 3],[259.91 6 2],[262.035 5 3],[262.116 4 3],[262.269 7 2],[264.216 4 3],[264.296 6 2],[264.851 6 2],[265.466 7 2],[272.247 8 2],[278.6 10 2],[282.142 10 2],[283.053 3 3],[287.486 6 2],[292.934 6 2],[293.183 40 0],[293.46 1.8 3],[298.3 6 2],[300.261 20 2],[301.232 40 2],[301.929 2 3],[302.173 20 2],[305.983 6 2],[306.143 10 2],[310.425 6 2],[318.261 10 2],[323.539 20 2],[326.652 1.8 3],[330.173 60 0],[330.272 6 2],[332.999 60 0],[335.125 80 0],[336.633 60 0],[338.071 130 1],[343.076 10 2],[346.446 190 1],[347.489 24 1],[356.643 1.8 3],[374.105 1.8 3],[387.426 6 2],[393.64 6 2],[393.672 6 2],[394.08 60 0],[395.875 6 2],[396.926 120 0],[397.004 60 0],[403.038 260 0],[403.238 60 0],[407.771 9200 1],[409.403 6 2],[409.702 6 2],[410.563 6 2],[416.18 40 1],[421.552 6400 1],[429.857 1.8 3],[430.545 68 1],[433.58 7 2],[443.804 70 0],[460.733 13000 0],[468.508 1.8 3],[472.228 640 0],[474.192 440 0],[478.432 280 0],[481.188 960 0],[483.208 720 0],[485.504 100 0],[486.87 120 0],[487.249 600 0],[487.606 120 0],[487.632 400 0],[489.198 200 0],[496.226 1600 0],[496.794 260 0],[507.109 6 2],[513.034 6 2],[515.607 160 0],[515.826 7 2],[522.22 280 0],[522.511 400 0],[522.927 400 0],[523.855 560 0],[525.69 960 0],[525.771 8 2],[526.221 6 2],[528.832 6 2],[532.982 70 0],[539.103 6 2],[544.348 8 2],[545.084 300 0],[546.39 6 2],[548.084 1400 0],[548.612 220 0],[550.417 700 0],[552.183 520 0],[553.481 400 0],[554.005 400 0],[554.336 50 0],[566.466 6 2],[568.972 6 2],[597.01 40 0],[634.575 50 0],[636.394 50 0],[636.996 70 0],[638.075 200 0],[638.65 180 0],[638.824 120 0],[640.847 1800 0],[644.668 50 0],[646.579 50 0],[650.4 1100 0],[654.679 200 0],[655.026 340 0],[661.726 600 0],[664.354 160 0],[679.105 360 0],[687.838 960 0],[689.259 240 0],[707.01 1100 0],[715.309 12 0],[716.724 50 0],[723.227 40 0],[730.941 500 0],[762.15 100 0],[767.306 80 0],[785 10 0],[786.69 6 0],[787.4 4 0],[842.28 40 0],[850.569 24 1],[868.891 40 1],[871.956 6 1],[917 8 0],[920.45 6 0],[928.39 4 0],[929.41 20 0],[930.66 3 0],[931.92 6 0],[938.045 12 0],[941.125 8 0],[944.895 80 0],[959.6 120 0],[962.47 60 0],[963.81 20 0],[964.77 20 1],[1003.666 60 1],[1032.731 200 1],[1087.27 1.4 1],[1091.488 40 1],[1098.4 2 0],[1122.457 2.6 1],[1124.125 140 0],[1201.476 20 1],[1223.62 4 0],[1244.59 12 1],[1247.96 4 0],[1249.5 8 0],[1265.22 3 0],[1297.47 15 1],[1312.38 20 1],[1352.28 3 0],[1714.09 3 0],[1717.05 6 0],[1744.74 10 0],[1762.6 0.8 1],[1774.3 6 0],[1975.96 3 0],[2026.14 46 0],[2070.0699 24 0],[2076.45 8 0],[2077.8699 3 0],[2602.36 6 0]}{ALLx13000x13000x9200x750x40x10x0}{UVx750x80x280x750x40x10x0}{VISx13000x13000x9200x8x1.8x0x0}{IVx200x140x200x0x0x0x0}% \pgfspectra@elt@search{#1}{Y}{[21.18 0.3 3],[21.451 0.3 3],[21.597 0.6 3],[21.739 0.6 3],[22.171 1.2 3],[22.218 0.3 3],[22.298 0.6 3],[22.884 0.2 3],[22.894 2 3],[22.978 0.3 3],[23.517 0.3 3],[23.577 2.5 3],[24.212 0.1 3],[24.23 3 3],[24.414 0.3 3],[26.372 0.3 3],[26.464 15 3],[27.24 3 3],[27.303 15 3],[27.86 1 3],[28.918 0.5 4],[29.999 5 4],[31.289 0.3 4],[31.335 20 4],[32.047 4 4],[32.169 4 4],[32.558 15 4],[32.657 20 4],[32.834 17.5 4],[33.04 5 4],[33.309 90 4],[33.38 50 4],[33.512 10 4],[33.514 40 4],[33.662 50 4],[33.902 50 4],[34.002 20 4],[34.042 0.5 4],[34.459 50 4],[34.965 10 4],[34.975 0.2 4],[35.136 1 4],[35.398 10 4],[35.556 10 4],[35.586 90 3],[37.042 30 3],[37.205 30 4],[37.996 40 4],[38.682 50 3],[39.777 20 4],[40.345 30 4],[40.881 0.1 4],[40.931 20 4],[41.503 20 4],[41.818 10 4],[41.859 15 4],[41.979 5 4],[42.074 30 4],[42.503 60 3],[42.787 0.1 4],[43.075 5 4],[43.766 10 4],[44.162 0.3 4],[44.296 3 4],[45.197 0.2 4],[45.584 1.5 4],[45.784 8.5 4],[47.31 30 3],[58.498 400 4],[63.097 200 4],[64.368 0.1 2],[64.669 0.4 2],[65.387 0.6 2],[65.698 1 2],[66.874 2.5 2],[67.198 4 2],[69.172 10 2],[69.385 0.4 2],[69.52 20 2],[72.791 0.9 2],[72.847 0.4 2],[72.883 0.2 2],[72.973 2 2],[73.049 60 2],[73.27 1.5 2],[73.436 80 2],[77.078 1.5 2],[77.179 1 2],[80.426 2 2],[80.52 500 2],[80.618 7.5 2],[80.897 15 2],[80.992 700 2],[85.564 10 2],[85.782 6 2],[98.423 2.5 2],[98.796 1.5 2],[98.921 1500 2],[99.637 2500 2],[99.919 2 2],[100.056 15 2],[100.335 2.5 2],[100.658 100 2],[100.786 120 2],[107.752 12 2],[108.135 50 2],[108.463 7.5 2],[108.839 35 2],[109.525 25 2],[109.587 2.5 2],[110.321 15 2],[128.974 300 2],[130.696 250 2],[131.451 500 2],[131.61 150 2],[133.404 400 2],[154.908 0.8 2],[155.381 1.5 2],[163.514 3 2],[164.043 7.5 2],[177.98 20 2],[178.605 60 2],[204.193 1 2],[204.207 0.5 2],[206.058 150 2],[206.898 400 2],[212.798 1000 2],[219.116 1600 2],[220.076 800 2],[220.603 800 2],[224.306 35 1],[226.141 15 2],[226.157 8 2],[228.434 1000 2],[231.992 0.3 2],[232.731 1000 2],[235.42 5 0],[236.723 5000 2],[237.383 3 -1],[238.524 5 -1],[241.393 2.5 1],[241.464 4000 2],[242.22 56 1],[246.061 6 1],[249.042 2.5 0],[254.028 1.2 -1],[254.757 1.4 -1],[255.017 1 -1],[268.165 2 0],[269.421 6 0],[269.539 2.6 0],[271.03 10 2],[271.054 9 2],[272.3 9.5 0],[273.008 2.2 0],[273.485 2.2 1],[274.253 7 0],[276.01 14 0],[278.011 0.5 2],[278.521 3 1],[278.559 1.2 1],[279.12 1.2 0],[279.144 7 2],[280.011 3 1],[280.327 2 2],[280.7 10 2],[281.364 2.6 0],[281.704 9000 2],[281.886 1.8 0],[282.256 4.5 0],[282.537 2.2 1],[282.638 4.5 1],[285.443 7 1],[285.63 2.6 1],[285.787 1.1 1],[286.767 600 2],[288.648 9.5 0],[289.769 1.8 1],[289.882 1.4 1],[291.341 600 2],[291.774 150 2],[291.856 160 2],[291.905 16 0],[293.003 1.8 1],[294.053 1.5 2],[294.601 9900 2],[294.84 39 0],[294.848 2 2],[296.496 35 0],[297.042 600 2],[297.391 1.8 1],[297.459 48 0],[298.055 3 1],[298.426 75 0],[299.526 7 0],[299.694 14 0],[300.526 7 0],[301.393 140 2],[301.885 150 2],[301.895 5.5 0],[302.173 13 0],[302.228 9 0],[302.649 2.6 1],[303.659 3 1],[304.484 4.5 0],[304.537 19 0],[304.711 2.2 0],[305.522 6 1],[308.685 6 1],[309.17 5.5 0],[309.376 2.2 1],[309.588 9.5 1],[311.181 4.5 0],[311.204 5.5 1],[311.428 2.2 0],[312.877 6 1],[312.993 8 1],[313.517 9.5 1],[317.306 11 1],[317.941 22 1],[319.131 7 0],[319.562 230 1],[320.027 220 1],[320.332 220 1],[321.669 390 1],[324.228 620 1],[326.71 0.3 2],[327.68 2.5 2],[328.091 31 1],[330.847 1.9 1],[332.789 470 1],[334.038 5.5 0],[336.2 16 1],[338.859 8.5 0],[339.704 4.5 0],[341.247 8.5 0],[344.882 20 1],[345.095 7 0],[346.788 11 1],[348.573 17 0],[349.609 170 1],[352.153 8 0],[354.601 4.5 1],[354.901 390 1],[355.18 13 0],[355.269 54 0],[355.876 17 0],[357.143 19 0],[357.605 26 0],[358.452 330 1],[358.775 30 0],[358.969 10 0],[359.292 280 0],[360.073 1000 1],[360.192 620 1],[361.105 780 1],[362.094 430 0],[362.871 190 1],[363.312 780 1],[366.461 300 1],[366.849 4.5 1],[369.253 17 0],[371.03 1300 1],[371.812 6 0],[373.861 6 0],[374.755 120 1],[374.989 5 0],[377.433 1000 1],[377.656 140 1],[378.23 5 1],[378.87 740 1],[381.835 130 1],[383.288 400 1],[384.787 7 1],[386.696 50 2],[387.682 8 0],[387.828 48 1],[388.777 3 0],[390.074 300 2],[390.459 6 0],[391.458 400 2],[391.825 5 0],[393.011 6 0],[393.066 24 1],[395.036 440 1],[395.16 15 1],[395.509 6 0],[398.26 360 1],[398.75 4 0],[403.96 380 2],[403.983 94 0],[404.011 300 2],[404.764 240 0],[407.738 940 0],[408.122 9 0],[408.371 200 0],[410.238 990 0],[410.639 6 0],[411.081 8 0],[412.161 12 2],[412.492 32 1],[412.831 890 0],[414.285 750 0],[415.763 10 0],[416.752 240 0],[417.414 200 0],[417.754 800 1],[419.928 12 1],[420.47 38 1],[421.302 8 0],[421.354 4 0],[421.78 16 0],[422.063 28 0],[422.425 8 0],[423.573 60 1],[423.594 220 0],[425.12 30 0],[430.23 36 0],[430.963 280 1],[431.63 5 0],[433.078 11 0],[433.729 3 0],[434.465 6 0],[434.879 44 0],[435.233 6 0],[435.27 6 0],[435.773 12 0],[435.873 80 1],[436.603 12 0],[437.494 1200 1],[437.561 15 0],[437.933 8 0],[438.548 3 0],[438.774 10 0],[439.401 3 0],[439.467 3 0],[439.802 180 1],[442.259 89 1],[443.734 8 0],[444.366 10 0],[444.663 13 0],[446.527 2 0],[447.389 4 0],[447.572 17 0],[447.696 18 0],[447.745 16 0],[448.728 11 0],[448.747 30 0],[449.175 3 0],[449.242 2.5 0],[450.595 50 0],[451.358 5 0],[451.401 8 0],[452.205 4 0],[452.725 89 0],[452.78 44 0],[454.432 10 0],[455.937 10 0],[456.439 3 0],[457.356 6 0],[458.132 3.5 0],[458.177 3 0],[459.655 13 0],[460.48 9.5 0],[461.3 4 0],[464.37 200 0],[465.832 20 0],[465.889 7 0],[466.747 8.5 0],[467.082 6 0],[467.484 200 0],[467.835 6 0],[468.232 26 1],[468.977 8.5 0],[469.681 18 0],[470.885 3.5 0],[472.585 6 0],[472.853 17 0],[473.237 6 0],[473.762 200 2],[474.14 8.5 0],[475.279 16 0],[476.098 41 0],[478.018 1.7 0],[478.104 12 0],[478.658 16 1],[478.689 17 0],[479.93 18 0],[480.431 5 0],[480.481 7 0],[481.738 8.5 -1],[481.82 14 -1],[481.964 14 0],[482.213 12 0],[482.331 19 1],[483.915 6 0],[483.987 77 0],[484.568 55 0],[485.269 41 0],[485.425 12 0],[485.487 89 1],[485.67 5 0],[485.984 33 0],[487.965 5 0],[488.369 190 1],[488.628 5 0],[488.665 4 0],[489.344 9.5 0],[490.012 110 1],[490.611 10 0],[490.9 4.5 0],[492.187 15 0],[493.093 3.5 0],[495.066 4.5 0],[497.43 12 0],[498.213 12 1],[500.697 10 0],[507.021 7.5 0],[507.219 7.5 0],[508.742 110 1],[508.818 3 0],[510.288 750 2],[511.911 21 1],[512.04 130 2],[512.321 45 1],[513.52 18 0],[519.643 12 1],[520.041 96 1],[520.572 150 1],[523.81 1000 2],[524.081 18 0],[526.358 300 2],[528.982 6 1],[532.078 4.5 1],[538.062 7.5 0],[538.364 400 2],[540.278 22 1],[541.703 2.4 0],[542.437 9 0],[543.824 19 0],[546.646 71 0],[546.847 10 0],[547.339 9 1],[548.074 9 1],[549.317 6 0],[549.559 3.5 0],[549.741 24 1],[550.345 30 0],[550.99 25 1],[551.364 6 0],[552.163 12 0],[552.676 2.4 0],[552.754 74 0],[554.163 3.5 0],[554.45 12 0],[554.602 9 1],[555.643 7.5 0],[556.281 600 2],[556.727 60 2],[556.775 6 0],[557.224 400 2],[557.742 18 0],[558.108 2.4 0],[558.187 62 0],[559.096 2.1 0],[559.412 2.1 0],[559.548 40 2],[560.208 300 2],[560.633 12 0],[562.391 1.5 0],[563.013 56 0],[563.225 2.4 0],[563.289 2.1 0],[564.469 12 0],[564.847 12 0],[566.294 74 1],[567.527 9 0],[569.363 1.8 0],[570.673 16 0],[572.061 2.4 0],[572.889 7.5 1],[573.012 15 -1],[573.209 2.1 0],[574.385 9 0],[574.693 1.8 -1],[576.422 2.4 -1],[576.564 7.5 0],[577.395 3.5 0],[578.169 10 1],[580 1.5 -1],[581.858 1.5 -1],[582.187 3 0],[583.227 2.1 0],[583.807 0.9 -1],[585.883 1.5 -1],[587.183 1.5 0],[587.614 2.4 -1],[587.996 2.4 0],[589.394 2.4 -1],[590.296 3.5 0],[591.219 2.4 -1],[593.11 2.4 -1],[593.908 9 -1],[594.572 4.5 0],[595.002 2.4 0],[595.641 7.5 -1],[597.204 130 -1],[598.186 5 0],[598.764 100 -1],[600.36 74 -1],[600.465 12 -1],[600.919 12 0],[601.987 62 -1],[602.341 12 0],[603.66 50 -1],[605.381 42 -1],[607.278 13 -1],[608.8 5 0],[608.935 21 -1],[609.678 16 -1],[610.782 13 -1],[611.473 13 -1],[612.738 7.5 -1],[613.206 140 -1],[613.504 12 0],[613.843 15 0],[614.836 110 -1],[615.172 12 -1],[616.508 82 -1],[618.223 56 -1],[619.173 120 0],[619.982 59 -1],[621.796 45 -1],[622.259 30 0],[623.672 27 -1],[625.105 4.5 0],[627.501 12 -1],[629.546 6 -1],[631.62 2.4 -1],[633.81 2.4 -1],[635.948 1.5 -1],[636.987 1.5 -1],[640.201 7.5 0],[643.5 100 0],[643.718 2.4 0],[650.123 1.8 -1],[651.833 1.8 -1],[653.584 1.8 -1],[653.86 9 0],[655.384 1.2 -1],[655.739 7 0],[657.258 1.2 -1],[657.685 3.5 0],[658.487 2.3 0],[661.375 9.5 1],[662.249 1.4 0],[663.649 1.9 0],[665.061 4 0],[666.44 2.1 0],[668.758 15 0],[669.183 1.4 0],[669.475 0.7 0],[669.926 1.6 0],[670.071 7 0],[671.32 3.5 0],[673.599 4 0],[679.371 19 0],[679.541 7 1],[680.315 1.2 0],[681.516 2.1 0],[683.249 1.4 1],[684.524 4.5 0],[685.824 1.4 1],[688.722 2.9 0],[689.6 2.1 1],[690.826 0.9 0],[693.352 1.4 0],[695.031 2.4 0],[695.168 1 1],[695.804 1 0],[697.988 2.4 0],[700.897 1.3 0],[700.993 1 0],[703.518 1.9 0],[705.294 2.9 0],[705.428 1.3 0],[707.513 0.9 0],[712.792 1.1 0],[719.166 3.5 0],[719.593 1 0],[725.458 200 2],[726.417 3.5 1],[729.308 0.9 0],[733.062 0.9 0],[733.296 0.5 1],[734.646 5 0],[739.877 1.1 0],[745.03 2.9 1],[749.488 1.7 0],[753.671 0.7 0],[755.871 900 2],[756.313 3.5 0],[761.772 0.8 0],[762.294 1.9 0],[765.289 0.7 0],[768.949 0.5 0],[769.8 0.8 0],[771.989 1.9 0],[772.408 1.9 0],[778.842 1.3 0],[779.632 1.3 0],[780.252 0.6 0],[781.216 1.7 0],[785.552 2.9 0],[786.453 600 2],[788.19 11 1],[791.671 800 2],[798.941 40 2],[799.143 1000 2],[799.933 1 0],[817.141 800 2],[832.961 0.9 0],[834.443 2.4 0],[836.564 0.8 0],[845.036 1.7 0],[852.894 0.8 0],[864.509 400 2],[879.621 1000 2],[880.062 9.5 0],[883.585 1.9 1],[911.659 800 2]}{ALLx9900x990x1300x9900x90x400x140}{UVx9900x430x1300x9900x90x400x5}{VISx1200x990x1200x1000x0x0x140}{IVx1000x9.5x11x1000x0x0x0}% @@ -80,10 +80,10 @@ \pgfspectra@elt@search{#1}{Ag}{[70.98 40 2],[71.385 40 2],[71.773 20 2],[71.853 40 2],[72.696 60 2],[73.004 70 2],[73.028 30 2],[73.083 5 1],[73.094 30 2],[73.657 40 2],[73.813 20 2],[74.098 40 2],[74.229 40 2],[74.83 40 2],[75.28 6 1],[75.573 30 2],[75.827 20 2],[76.719 40 2],[76.833 50 2],[76.961 30 2],[77.638 70 2],[78.291 40 2],[78.576 30 2],[78.908 40 2],[79.235 50 2],[79.654 40 2],[79.791 50 2],[79.941 80 2],[80.888 60 2],[81.612 30 2],[82.239 36 2],[83.811 40 2],[100.532 3 1],[106.549 2 1],[107.223 2.4 1],[107.422 50 1],[110.703 30 1],[111.246 30 1],[119.583 12 1],[122.333 10 1],[124.08 10 1],[124.687 10 1],[125.681 11 1],[125.755 11 1],[126.663 10 1],[127.367 14 1],[129.751 13 1],[131.12 17 1],[131.381 11 1],[131.461 10 1],[132.384 12 1],[134.209 12 1],[134.257 10 1],[134.662 14 1],[135.354 10 1],[136.45 30 1],[137.322 24 2],[137.476 24 2],[139.6 20 1],[140.493 22 2],[141.093 20 1],[141.39 24 2],[141.429 24 2],[141.972 18 1],[142.861 24 2],[143.26 19 1],[145.274 24 2],[145.641 40 2],[146.472 20 1],[146.623 10 1],[147.144 20 2],[148.901 60 2],[150.737 10 0],[151.508 30 2],[151.563 20 0],[152.423 20 2],[152.704 24 2],[154.114 30 2],[154.858 10 0],[155.089 30 2],[155.304 26 2],[155.516 20 1],[158.741 26 2],[158.928 24 2],[161.379 20 2],[161.914 26 2],[163.446 20 2],[164.45 20 1],[165.152 12 0],[165.21 10 0],[165.224 20 2],[165.36 26 2],[165.443 60 2],[165.618 140 2],[165.71 30 2],[166.154 20 2],[167.075 26 2],[167.614 30 2],[168.107 20 2],[168.282 24 1],[169.351 100 2],[170.506 40 2],[170.811 2 0],[170.886 30 2],[170.927 10 0],[171.768 26 2],[172.227 40 2],[172.676 30 2],[172.814 50 2],[173.644 25 1],[174.734 40 2],[174.964 24 2],[175.089 30 2],[175.103 150 2],[176.057 20 2],[176.262 30 2],[176.614 2 0],[176.87 30 2],[177.181 20 2],[178.385 20 2],[179.037 15 1],[179.17 20 2],[179.269 20 2],[179.39 30 2],[180.224 30 2],[180.226 30 2],[180.277 20 2],[180.823 60 2],[181.683 50 2],[182.245 30 2],[182.883 70 2],[183.233 50 2],[183.25 24 2],[183.431 20 2],[183.61 50 2],[183.864 30 2],[184.014 80 2],[184.696 20 2],[184.771 4 0],[184.993 24 2],[185.633 30 2],[185.891 24 2],[186.039 20 2],[186.064 20 2],[186.712 70 2],[186.81 30 2],[187.255 20 2],[187.345 80 2],[188.036 50 2],[188.957 60 2],[191.692 80 2],[191.708 120 2],[192.53 40 2],[194.632 30 2],[194.844 20 2],[195.762 140 2],[195.927 24 2],[196.086 20 2],[196.689 80 2],[196.738 20 1],[197.592 120 2],[197.703 100 2],[198.187 30 2],[198.702 40 2],[199.516 26 2],[200.024 120 2],[200.73 60 2],[201.149 40 2],[201.365 30 2],[201.596 30 1],[203.398 30 1],[204.133 30 2],[205.317 30 2],[205.383 30 2],[205.699 40 2],[206.117 40 0],[206.985 20 0],[208.104 40 2],[211.382 16 1],[214.56 12 1],[214.647 60 2],[214.919 30 2],[216.189 120 2],[216.621 30 2],[217 3 0],[218.676 10 1],[221.123 30 2],[222.953 12 1],[223.84 20 2],[224.643 20 1],[224.651 100 2],[224.874 15 1],[228.003 15 1],[228.65 20 2],[230.956 6 0],[231.004 140 2],[231.26 2 0],[231.705 14 1],[232.029 16 1],[232.468 14 1],[233.14 16 1],[235.792 14 1],[237.502 10 0],[238.685 20 2],[239.569 60 2],[241.141 15 1],[241.323 18 1],[243.781 20 1],[244.793 16 1],[246.962 20 2],[247.384 16 1],[250.663 12 1],[256.287 20 2],[257.563 10 0],[266.049 12 1],[272.177 12 0],[276.754 15 1],[282.439 20 0],[292.677 2 0],[293.842 4 0],[309.91 4 0],[313.002 6 0],[317.058 2 0],[318.07 18 1],[321.567 3 0],[322.515 2 0],[323.318 3 0],[326.735 20 1],[328.068 11000 0],[330.567 2 0],[338.289 5600 0],[340.378 2 0],[346.916 6 0],[347.582 14 1],[349.528 16 1],[350.192 4 0],[350.803 4 0],[351.338 3 0],[352.112 2 0],[354.261 10 0],[354.716 2 0],[355.701 2 0],[358.667 4 0],[362.349 2 0],[362.468 10 0],[368.246 15 1],[368.25 6 0],[368.334 16 1],[370.92 10 0],[372.742 2 0],[375.314 4 0],[381.094 40 0],[381.178 10 0],[384.074 20 0],[384.785 3 0],[390.741 10 0],[390.931 10 1],[391.44 10 0],[392.01 14 1],[392.801 2 0],[394.043 2 0],[394.297 2 0],[394.943 12 1],[398.158 20 0],[398.519 14 1],[399.215 2 0],[405.548 20 0],[408.343 2 0],[408.591 16 1],[418.548 20 1],[421.096 18 0],[421.282 20 0],[431.107 10 0],[439.623 4 0],[447.604 10 0],[455.6 4 0],[461.569 6 0],[462.004 16 1],[462.046 10 1],[466.848 12 0],[467.76 6 0],[478.84 20 1],[479.62 4 0],[484.782 6 0],[487.41 20 0],[488.821 4 0],[491.75 2 0],[493.575 2 0],[499.289 4 0],[502.735 16 1],[512.35 3 0],[520.908 200 0],[533.362 2 0],[546.55 200 0],[547.155 20 0],[547.538 4 0],[554.567 4 0],[555.958 2 0],[566.734 20 0],[608.378 2 0],[626.85 2 0],[662.108 4 0],[735.996 4 0],[768.778 64 0],[800.54 5 1],[825.47 3 1],[827.352 100 0],[832.44 4 1],[837.95 3 1],[840.38 5 1],[849.25 3 1],[864.57 6 0],[870.485 2 0],[874.76 2.4 1],[900.09 3 1],[1255.1 2 0],[1681.95 12 0],[1741.6699 4 0],[1830.79 3 0],[1838.2301 3 0]}{ALLx11000x11000x50x150x0x0x0}{UVx11000x11000x50x150x0x0x0}{VISx200x200x20x0x0x0x0}{IVx100x100x5x0x0x0x0}% \pgfspectra@elt@search{#1}{Cd}{[42.701 50 3],[43.788 20 3],[44.785 50 3],[48.09 60 3],[48.949 10 3],[49.3 70 3],[49.513 70 3],[49.814 70 3],[49.853 70 3],[50.409 80 3],[50.42 70 3],[50.45 70 3],[50.631 80 3],[50.801 60 3],[50.895 50 3],[50.955 70 3],[50.981 25 3],[51.14 70 3],[51.3 80 3],[51.45 70 3],[51.942 60 3],[52.097 15 3],[52.441 80 3],[52.447 70 3],[52.477 50 3],[52.51 70 3],[52.519 60 3],[52.707 70 3],[53.079 50 3],[53.109 80 3],[53.151 80 3],[53.429 70 3],[53.677 70 3],[53.724 50 3],[54.09 60 3],[54.174 70 3],[54.26 80 3],[54.655 80 3],[54.801 40 3],[54.833 20 3],[54.89 15 3],[55.127 25 3],[55.29 20 3],[55.306 60 3],[55.405 80 3],[56.026 25 3],[56.416 10 3],[56.701 60 3],[67.739 8 2],[68.458 15 2],[72.07 10 2],[106.223 20 3],[111.816 150 3],[112.6 30 3],[113.408 20 3],[113.904 15 3],[115.464 20 3],[115.573 10 3],[116.465 100 3],[116.578 20 3],[116.73 40 3],[117.973 20 3],[118.307 15 3],[118.34 100 3],[119.413 40 3],[119.563 20 3],[119.647 30 3],[119.893 20 3],[121.538 15 3],[122.352 20 3],[124.606 20 3],[124.656 15 3],[124.994 15 3],[125.6 100 1],[126.647 30 3],[127.441 15 3],[128.563 20 3],[128.758 20 3],[129.643 150 1],[129.946 20 3],[130.436 40 3],[130.607 30 3],[131.689 15 3],[132.185 15 3],[132.555 20 3],[132.65 100 1],[134.097 30 3],[134.615 15 3],[135.478 30 3],[135.811 20 3],[136.255 30 3],[137.048 60 3],[137.091 150 1],[138.098 30 3],[138.36 5 2],[139.21 15 2],[139.678 10 2],[139.765 20 3],[140.368 30 3],[140.658 15 3],[141.628 25 2],[141.889 60 3],[142.029 5 2],[142.054 8 2],[142.983 15 3],[143.286 5 2],[144.608 20 2],[144.754 20 3],[144.755 25 2],[145.263 20 3],[145.574 30 2],[146.597 15 3],[146.614 8 2],[146.667 15 3],[147.197 5 2],[148.295 15 3],[149.179 20 3],[149.181 15 2],[151.101 5 2],[151.165 10 2],[151.313 5 2],[151.426 200 1],[152.355 10 2],[152.84 15 2],[152.93 30 2],[153.21 5 2],[154.517 50 2],[154.757 25 2],[155.007 10 2],[155.045 20 2],[155.089 15 2],[155.218 5 2],[155.648 5 2],[156.066 15 2],[156.603 5 2],[156.898 15 2],[157.02 20 3],[157.158 200 1],[158.239 10 2],[159.873 20 3],[160.042 20 3],[160.159 40 2],[160.487 20 2],[160.664 20 2],[160.728 10 2],[160.891 15 2],[160.961 10 2],[161.251 15 2],[162.287 15 3],[162.527 15 2],[162.854 25 2],[165.187 20 2],[165.563 25 2],[166.86 100 1],[167.815 30 2],[169.97 10 2],[170.247 50 1],[170.716 40 2],[172.193 10 2],[172.295 40 2],[172.441 50 1],[172.566 30 2],[173.9 25 2],[174.569 5 2],[174.767 40 2],[174.815 15 2],[176.882 30 2],[177.306 40 2],[178.584 100 1],[178.919 30 2],[179.34 75 2],[179.61 15 2],[180.057 5 2],[182.341 40 2],[182.77 100 1],[184.466 50 2],[185.113 40 2],[185.137 20 2],[185.585 40 2],[185.667 200 2],[187.408 150 2],[188.649 15 2],[190.348 15 2],[190.998 25 2],[191.057 15 2],[192.223 300 1],[193.959 10 2],[194.354 100 1],[196.554 40 1],[198.689 30 1],[198.881 15 2],[199.543 200 1],[200.06 20 2],[200.407 15 2],[200.749 100 1],[201.612 15 2],[203.245 50 1],[203.623 75 1],[203.983 40 2],[204.561 50 2],[206.125 10 2],[208.791 75 2],[209.6 150 1],[209.745 10 2],[210.047 5 2],[211.16 50 2],[214.441 1000 1],[215.506 50 1],[218.779 100 1],[218.813 5 2],[219.456 1000 1],[221.843 5 2],[222.443 5 2],[226.502 1000 1],[228.8022 1500 0],[231.277 1000 1],[232.107 200 1],[237.682 40 1],[241.824 7 2],[241.869 50 1],[242.636 10 2],[246.973 50 1],[248.793 40 1],[249.1 3 0],[249.558 40 1],[249.981 25 2],[250.891 10 0],[250.911 50 1],[251.622 30 1],[251.859 15 0],[252.5196 25 0],[254.4613 50 0],[255.198 50 1],[255.3465 25 0],[256.5789 3 0],[257.293 500 1],[258.0106 50 0],[258.487 3 0],[259.2026 30 0],[260.2048 25 0],[261.881 15 2],[262.8979 50 0],[263.056 5 2],[263.219 40 0],[263.942 75 0],[265.923 40 1],[266.0325 50 0],[266.82 25 1],[267.262 50 1],[267.754 100 0],[267.7748 25 0],[270.7 50 1],[271.2505 75 0],[273.382 50 0],[274.854 1000 1],[276.3894 100 0],[276.423 50 0],[276.699 20 2],[277.4958 50 0],[280.559 30 2],[282.319 30 1],[283.69 200 0],[285.646 25 1],[286.818 100 0],[288.0767 200 0],[288.1224 50 0],[291.467 200 1],[292.787 50 1],[292.927 200 1],[298.062 1000 0],[298.1362 200 0],[298.1845 50 0],[303.06 50 1],[303.572 10 2],[308.0822 150 0],[308.148 25 1],[308.2593 30 0],[309.234 100 1],[313.3167 200 0],[314.679 50 1],[325.033 150 1],[325.2524 300 0],[326.1055 300 0],[334.321 50 1],[338.549 50 1],[338.888 30 1],[340.3652 800 0],[341.749 50 1],[344.242 50 1],[346.443 100 1],[346.62 1000 0],[346.7655 800 0],[348.308 25 1],[349.544 150 1],[349.9952 25 0],[352.411 100 1],[353.569 100 1],[361.0508 1000 0],[361.2873 800 0],[361.4453 60 0],[364.9558 20 0],[398.1926 10 0],[402.912 100 1],[413.477 200 1],[414.149 50 1],[428.508 100 1],[430.6672 8 0],[441.241 100 1],[441.2989 3 0],[441.563 1000 1],[444.045 30 1],[466.2352 8 0],[467.8149 200 0],[474.469 30 1],[479.9912 300 0],[488.172 50 1],[502.55 50 1],[508.5822 1000 0],[515.466 6 0],[526.801 100 1],[527.16 100 1],[533.748 1000 1],[537.813 1000 1],[538.189 200 1],[584.33 40 1],[588.022 50 1],[609.9142 300 0],[611.149 100 0],[632.5166 100 0],[633.0013 30 0],[635.472 400 1],[635.998 500 1],[643.847 2000 0],[646.494 400 1],[656.765 25 1],[672.578 500 1],[675.919 100 1],[677.8116 30 0],[723.701 50 1],[728.438 100 1],[734.567 1000 0],[806.699 50 1],[820.0309 5 0],[929.2 20 0],[1165.5 15 0],[1449.1 35 0],[1571.2 80 0],[1912.5 55 0],[2437.8 25 0],[2545.5 35 0]}{ALLx2000x2000x1000x200x150x0x0}{UVx1500x1500x1000x200x150x0x0}{VISx2000x2000x1000x0x0x0x0}{IVx80x80x50x0x0x0x0}% \pgfspectra@elt@search{#1}{In}{[36.867 3 4],[37.01 3 4],[37.282 5 4],[37.294 5 4],[37.495 1 4],[37.584 3 4],[37.607 3 4],[37.679 5 4],[37.861 8.5 4],[37.924 1.5 4],[38.027 4.5 4],[38.156 5.5 4],[38.214 4.5 4],[38.276 5.5 4],[38.305 5 4],[38.621 8.5 4],[38.67 5 4],[38.866 1.5 4],[38.891 7 4],[39.003 5.5 4],[39.092 5.5 4],[39.229 4.5 4],[39.246 4.5 4],[39.36 0.5 4],[39.389 12.5 4],[39.574 5.5 4],[39.773 1.5 4],[39.979 5 4],[40.005 4.5 4],[40.057 12.5 4],[40.239 12.5 4],[40.533 1.5 4],[40.728 4.5 4],[40.736 1.5 4],[40.795 4.5 4],[41.743 4.5 4],[41.845 1 4],[42.316 1 4],[67.733 4 3],[68.453 7.5 3],[68.531 3.5 2],[69.162 2.5 2],[72.064 4 3],[78.217 0.5 2],[88.224 5 2],[89.084 5 2],[91.587 5 2],[91.745 1 2],[92.683 2.5 2],[140.308 15 2],[143.485 15 2],[147.034 2 3],[148.77 10 2],[149.414 10 2],[151.262 2.5 3],[152.35 2.5 3],[152.478 5 2],[153.021 10 2],[153.203 3.5 3],[153.295 15 2],[156.892 4 3],[156.933 1.5 3],[160.15 6 3],[160.508 0.5 3],[160.659 3.5 3],[162.542 50 2],[162.848 5 3],[164.228 10 2],[164.8 1 0],[165.18 4 3],[165.562 5 3],[166.738 0.5 3],[167.064 2.5 3],[167.616 0.5 0],[167.807 6 3],[170.202 2 3],[170.253 10 2],[170.711 7.5 3],[171.154 2.5 0],[172.189 3.5 3],[174.123 1 0],[174.765 6 3],[174.81 5 3],[174.883 50 2],[175.849 0.5 0],[176.788 1 2],[176.877 5 3],[177.301 6 3],[178.915 4 3],[179.338 6 3],[181.071 0.5 2],[184.241 15 2],[184.467 6 3],[185.03 20 2],[185.11 4.5 3],[185.584 4.5 3],[185.664 7.5 3],[186.298 7.5 2],[187.408 7.5 3],[190.352 2.5 3],[193.958 2.5 3],[194.331 1.5 3],[200.473 3 3],[210.117 0.5 3],[210.389 5 1],[211.231 4 3],[215.408 15 2],[215.442 1 2],[216.688 5 1],[217.99 1 0],[218.24 1 0],[218.74 1 0],[219.084 1 0],[219.567 7.5 1],[219.741 1 0],[219.952 5 2],[220.224 1 0],[220.528 25 1],[221.114 1.5 0],[222.513 2 3],[223.07 2.5 0],[223.218 2.5 2],[224.166 1.5 0],[225.579 15 1],[225.999 5 0],[226.126 10 2],[226.626 2.5 2],[227.241 2.5 2],[227.284 2.5 2],[227.82 2.5 0],[228.164 20 1],[228.375 1 0],[229.833 1 0],[229.87 1 0],[230.09 5 2],[230.249 1 0],[230.605 50 1],[230.686 12.5 0],[230.932 1.5 0],[230.975 1 0],[231.321 45 1],[231.509 1 0],[232.34 15 1],[232.441 2.5 0],[232.492 1.5 0],[232.795 35 1],[233.276 1.5 0],[233.457 40 1],[234.019 5 0],[234.59 4 0],[234.656 2.5 0],[235.075 25 1],[235.87 2.5 0],[237.814 7.5 0],[237.9 5 0],[238.263 55 1],[238.954 20 0],[239.318 20 1],[239.918 5 0],[240.647 25 1],[240.876 25 1],[241.906 25 1],[241.92 25 1],[242.72 35 1],[242.986 10 0],[243.099 5 0],[243.273 25 1],[244.263 30 1],[244.79 50 1],[245.323 30 1],[246.008 30 0],[246.802 15 0],[248.615 35 1],[248.862 55 1],[248.895 45 1],[249.859 40 1],[249.96 50 1],[250.099 45 1],[250.816 30 1],[251.231 55 1],[252.137 50 0],[252.298 5 0],[252.741 50 2],[255.356 35 1],[255.444 80 1],[256.015 550 0],[256.513 35 1],[259.875 35 1],[260.176 100 0],[260.404 25 1],[265.47 45 1],[266.263 50 1],[266.865 70 1],[267.456 70 1],[268.312 40 1],[271.026 800 0],[271.394 150 0],[272.552 25 2],[272.615 40 2],[274.975 65 1],[275.388 350 0],[277.537 20 0],[279.876 30 1],[281.897 45 1],[283.692 90 0],[285.814 15 0],[286.568 40 1],[289.018 60 1],[293.263 550 0],[294.105 50 1],[295.701 10 0],[296.617 30 1],[298.28 50 2],[299.94 55 1],[300.808 50 2],[300.882 15 2],[303.936 4000 0],[305.115 4 0],[309.98 55 1],[310.18 90 1],[313.86 65 1],[314.275 40 1],[314.67 65 1],[315.577 75 1],[315.84 50 1],[317.63 45 1],[319.811 45 1],[325.609 6500 0],[325.856 1500 0],[329.355 15 2],[333.85 45 1],[335.091 4 2],[337.659 37.5 1],[340.428 50 1],[343.84 55 1],[356.232 2.5 2],[369.391 90 1],[370.813 47.5 1],[371.614 190 1],[371.83 60 1],[371.872 80 1],[372.34 80 1],[379.521 85 1],[379.921 115 1],[383.465 125 1],[384.218 100 1],[385.282 50 2],[388.978 50 1],[390.207 50 1],[392.212 30 1],[393.44 32.5 1],[396.235 125 1],[400.466 60 1],[401.392 70 1],[402.377 50 2],[403.232 75 2],[405.694 205 1],[406.23 25 2],[407.157 50 2],[407.293 50 2],[410.176 8500 0],[420.514 70 1],[421.304 50 1],[421.966 55 1],[425.268 50 2],[437.287 75 1],[450.078 75 1],[450.958 20 2],[451.131 9000 0],[454.901 55 1],[457.085 70 1],[457.802 90 1],[457.84 90 1],[461.608 70 1],[461.717 85 1],[462.014 125 1],[462.07 75 1],[462.73 85 1],[463.704 70 1],[463.816 190 1],[464.458 110 1],[465.562 180 1],[465.674 160 1],[468.111 95 1],[468.48 225 1],[487.837 1.5 0],[490.706 45 1],[492.493 35 1],[497.377 75 1],[510.936 40 1],[511.514 50 1],[511.74 70 1],[512.08 135 1],[512.175 100 1],[512.985 40 1],[517.542 120 1],[518.444 70 1],[524.877 100 2],[525.432 15 0],[526.274 6 0],[530.945 75 1],[541.141 40 1],[541.845 70 1],[543.67 110 1],[549.75 65 1],[550.708 70 1],[551.3 160 1],[552.328 125 1],[553.65 65 1],[555.545 95 1],[557.69 120 1],[563.67 100 1],[564.515 50 2],[570.85 80 1],[570.991 25 0],[572.18 50 1],[572.317 20 2],[572.768 25 0],[581.95 50 2],[585.315 105 1],[590.34 245 1],[591.54 130 1],[591.878 60 1],[606.29 65 1],[609.595 125 1],[610.866 105 1],[611.59 90 1],[612.87 115 1],[612.94 120 1],[613.21 160 1],[614 75 1],[614.323 45 1],[614.81 70 1],[614.95 95 1],[616.115 40 1],[616.245 90 1],[619.772 100 2],[622.428 50 1],[622.83 140 1],[623.11 70 1],[630.48 135 1],[636.23 145 1],[646.9 150 1],[654.12 105 1],[675.188 95 1],[676.59 90 1],[678.372 50 1],[684.744 4 0],[689.15 160 1],[690.013 2 0],[718.29 190 1],[725.5 90 1],[727.65 105 1],[730.34 90 1],[735.06 160 1],[763.27 50 1],[768.29 50 1],[774.07 105 1],[777.696 50 1],[778.9 90 1],[780.68 35 1],[781.45 35 1],[784.09 45 1],[805.078 10 0],[822.7 120 1],[823.866 15 0],[831.492 7.5 0],[843.455 25 1],[867.895 15 0],[868.263 10 0],[870.025 25 0],[881.35 50 1],[883.26 40 1],[889.447 20 0],[917.008 5 0],[919.77 60 1],[920.2 60 1],[921.3 110 1],[924.11 80 1],[934.983 20 0],[937.027 30 0],[942.799 10 0],[997.786 50 0],[1025.703 100 0],[1071.742 30 0],[1074.431 50 0],[1133.472 10 0],[1173.148 10 0],[1291.259 5 0],[1342.996 4.5 0],[1382.448 2.5 0],[1431.625 3 0],[1441.92 1.5 0],[1466.866 3 0],[1471.908 3.5 0],[1650.4311 1 0],[2229.1061 3 0],[2387.9131 3.5 0]}{ALLx9000x9000x245x100x7.5x12.5x0}{UVx6500x6500x190x50x7.5x12.5x0}{VISx9000x9000x245x100x0x0x0}{IVx120x100x120x0x0x0x0}% -\pgfspectra@elt@search{#1}{Sn}{[1.6 7 1],[35.514 120 4],[36.101 150 4],[37.255 100 4],[60.523 50 3],[61.904 50 3],[62.873 50 3],[75.301 100 2],[76.062 50 2],[77.579 75 2],[78.468 50 2],[89.992 1 1],[90.822 50 3],[91.092 200 2],[91.74 2 1],[93.563 1 1],[94.583 3 1],[95.45 4 1],[95.625 500 3],[98.513 7 1],[99.721 4 1],[101.092 50 2],[101.626 2 1],[101.972 500 3],[104.078 4 1],[104.132 1 1],[104.449 1000 3],[104.884 50 2],[105.837 100 3],[105.859 50 3],[106.21 3 1],[107.341 1000 3],[108.75 200 3],[108.935 200 4],[109.692 300 3],[110.324 50 3],[110.819 8 1],[111.934 0 3],[112.068 200 3],[113.279 100 4],[113.929 1000 2],[115.833 1000 2],[115.905 4 1],[116.074 200 4],[116.109 200 2],[116.143 10 1],[116.158 100 2],[116.294 3 1],[117.626 100 4],[118.051 4 1],[118.062 100 2],[118.425 1000 2],[118.992 100 4],[118.999 200 2],[120.406 200 2],[120.572 100 4],[121.052 2000 2],[121.51 100 2],[121.814 100 2],[121.907 9 1],[122.37 13 1],[123.017 100 2],[123.138 100 2],[124.3 11 1],[124.363 500 2],[125.138 2000 4],[125.992 1000 2],[127.631 40 2],[128.381 100 4],[129.086 20 1],[129.436 200 4],[130.22 100 4],[130.597 1000 2],[131.455 1000 3],[131.659 20 1],[132.734 1000 2],[133.47 200 2],[134.605 200 2],[134.765 1000 2],[136.971 200 2],[138.674 1000 2],[140.052 25 1],[141.061 500 2],[143.752 1000 3],[144.977 200 2],[147.515 20 1],[148.922 9 1],[153.29 100 3],[157.036 1000 2],[167.429 50 2],[173.721 10 0],[175.146 15 0],[175.33 10 0],[175.8 7 1],[176.498 20 0],[177.34 20 0],[179.075 30 0],[180.46 80 0],[181.134 15 1],[181.171 500 2],[181.304 30 0],[181.574 40 0],[181.931 25 0],[182.3 120 0],[183.189 9 1],[184.875 50 0],[185.2 30 0],[186.032 200 0],[186.142 20 0],[186.552 20 0],[186.596 30 0],[187.329 15 0],[188.264 30 0],[188.605 80 0],[189.14 100 0],[189.729 20 0],[189.991 12 1],[190.93 50 0],[191.161 40 0],[191.352 20 0],[192.531 80 0],[192.677 20 0],[192.795 15 0],[192.89 40 0],[193.317 25 0],[194.186 500 2],[194.269 20 0],[195.215 150 0],[195.552 50 2],[196.021 15 0],[197.146 30 0],[197.76 50 0],[198.42 80 0],[199.188 15 0],[199.498 20 0],[200.805 25 0],[201.576 30 0],[202.698 30 0],[204.066 50 0],[204.09 20 0],[205.403 50 0],[205.831 70 0],[206.4 20 0],[206.858 80 0],[207.289 100 0],[207.308 100 0],[208.062 25 0],[209.158 30 0],[209.435 40 0],[209.639 200 0],[210.093 100 0],[211.393 100 0],[212.126 50 0],[214.073 25 0],[214.143 20 0],[214.846 15 0],[214.863 1 1],[214.873 40 0],[215.143 20 0],[215.154 30 1],[217.132 80 0],[219.449 150 0],[219.934 300 0],[220.965 400 0],[220.967 4 1],[221.105 40 0],[223.172 80 0],[224.605 400 0],[224.607 6 1],[225.117 60 0],[226.719 30 0],[226.891 400 0],[228.226 20 0],[228.668 200 0],[231.723 600 0],[233.48 300 0],[235.484 1000 0],[235.79 20 0],[236.034 3 1],[236.833 22 1],[238.072 60 0],[238.454 4 1],[240.815 100 0],[242.17 800 0],[242.949 1000 0],[243.352 1 1],[244.898 15 1],[245.524 60 0],[247.64 20 0],[248.339 300 0],[248.348 13 1],[248.699 10 1],[249.57 200 0],[252.261 5 1],[252.392 90 0],[253.117 80 0],[254.655 400 0],[255.801 40 0],[257.158 500 0],[259.442 200 0],[263.694 50 0],[266.124 200 0],[266.493 2 1],[270.651 700 0],[272.782 2 1],[276.178 20 0],[277.981 150 0],[278.503 80 0],[278.796 60 0],[281.259 60 0],[281.358 80 0],[282.552 2 1],[283.999 1400 0],[284.642 1 1],[285.062 200 0],[286.332 1000 0],[291.28 1 1],[291.354 200 0],[291.982 6 1],[299.1 3 1],[299.444 7 1],[300.914 700 0],[301.218 1 1],[302.394 8 1],[303.28 200 0],[303.412 850 0],[304.75 12 1],[309.469 6 1],[314.184 60 0],[317.505 550 0],[321.871 40 0],[326.234 550 0],[328.321 50 1],[333.062 110 0],[335.197 60 1],[340.748 2 1],[347.246 10 1],[353.757 7 1],[357.545 11 1],[358.239 3 1],[362.008 2 1],[362.054 6 1],[365.578 40 0],[371.523 6 1],[380.102 280 0],[384.144 4 1],[429.465 1 1],[452.474 40 0],[457.913 1 1],[458.029 1 1],[487.722 2 1],[494.431 3 1],[497.973 20 0],[507.114 2 1],[507.267 2 1],[517.454 20 0],[533.236 10 1],[556.195 20 1],[558.892 25 1],[559.62 2 1],[563.171 500 0],[575.359 15 0],[579.72 1 1],[579.918 15 1],[592.544 50 0],[597.03 100 0],[603.77 150 0],[605.486 200 -1],[606.9 250 0],[607.346 100 0],[607.748 6 1],[607.97 5 1],[614.971 400 0],[615.46 200 0],[617.15 150 0],[631.078 100 0],[635.435 40 0],[645.35 70 1],[676.145 8 1],[684.405 25 1],[719.14 20 1],[738.779 10 1],[739.86 20 0],[740.862 1 1],[768.53 30 0],[774.18 13 1],[775.497 100 0],[790.4 3 1],[803.05 100 0],[803.93 30 0],[811.409 200 0],[812.1 30 0],[834.935 30 0],[835.704 80 0],[842.272 300 0],[855.26 400 0],[868.17 50 0],[901.895 30 0],[941.086 50 0],[941.537 80 0],[961.64 150 0],[974.11 50 0],[974.28 100 0],[980.538 300 0],[985.052 500 0],[1045.647 25 0],[1080.758 11 0],[1089.4 54 0],[1119.185 70 0],[1127.766 56 0],[1133.697 17 0],[1145.459 200 0],[1161.626 200 0],[1167.077 76 0],[1169.445 25 0],[1173.978 258 0],[1182.518 96 0],[1183.582 106 0],[1193.299 254 0],[1200.95 48 0],[1231.324 111 0],[1233.56 33 0],[1253.087 42 0],[1253.65 42 0],[1278.82 37 0],[1288.85 89 0],[1298.17 187 0],[1300.03 20 0],[1301.85 187 0],[1308.15 68 0],[1346.02 378 0],[1360.82 144 0],[1501.82 13 0],[1546.42 30 0],[1700.05 20 0],[1780.75 10 0],[2062.2199 20 0],[2086.1699 40 0],[2168.6199 8 0],[2213.1699 4 0],[2299.7199 3 0],[2432.7199 4 0],[2473.8199 4 0]}{ALLx2000x1400x70x2000x1000x2000x200}{UVx2000x1400x60x2000x1000x2000x0}{VISx500x500x70x0x0x0x200}{IVx500x500x3x0x0x0x0}% +\pgfspectra@elt@search{#1}{Sn}{[35.514 120 4],[36.101 150 4],[37.255 100 4],[60.523 50 3],[61.904 50 3],[62.873 50 3],[75.301 100 2],[76.062 50 2],[77.579 75 2],[78.468 50 2],[89.992 1 1],[90.822 50 3],[91.092 200 2],[91.74 2 1],[93.563 1 1],[94.583 3 1],[95.45 4 1],[95.625 500 3],[98.513 7 1],[99.721 4 1],[101.092 50 2],[101.626 2 1],[101.972 500 3],[104.078 4 1],[104.132 1 1],[104.449 1000 3],[104.884 50 2],[105.837 100 3],[105.859 50 3],[106.21 3 1],[107.341 1000 3],[108.75 200 3],[108.935 200 4],[109.692 300 3],[110.324 50 3],[110.819 8 1],[111.934 0 3],[112.068 200 3],[113.279 100 4],[113.929 1000 2],[115.833 1000 2],[115.905 4 1],[116.074 200 4],[116.109 200 2],[116.143 10 1],[116.158 100 2],[116.294 3 1],[117.626 100 4],[118.051 4 1],[118.062 100 2],[118.425 1000 2],[118.992 100 4],[118.999 200 2],[120.406 200 2],[120.572 100 4],[121.052 2000 2],[121.51 100 2],[121.814 100 2],[121.907 9 1],[122.37 13 1],[123.017 100 2],[123.138 100 2],[124.3 11 1],[124.363 500 2],[125.138 2000 4],[125.992 1000 2],[127.631 40 2],[128.381 100 4],[129.086 20 1],[129.436 200 4],[130.22 100 4],[130.597 1000 2],[131.455 1000 3],[131.659 20 1],[132.734 1000 2],[133.47 200 2],[134.605 200 2],[134.765 1000 2],[136.971 200 2],[138.674 1000 2],[140.052 25 1],[141.061 500 2],[143.752 1000 3],[144.977 200 2],[147.515 20 1],[148.922 9 1],[153.29 100 3],[157.036 1000 2],[167.429 50 2],[173.721 10 0],[175.146 15 0],[175.33 10 0],[175.8 7 1],[176.498 20 0],[177.34 20 0],[179.075 30 0],[180.46 80 0],[181.134 15 1],[181.171 500 2],[181.304 30 0],[181.574 40 0],[181.931 25 0],[182.3 120 0],[183.189 9 1],[184.875 50 0],[185.2 30 0],[186.032 200 0],[186.142 20 0],[186.552 20 0],[186.596 30 0],[187.329 15 0],[188.264 30 0],[188.605 80 0],[189.14 100 0],[189.729 20 0],[189.991 12 1],[190.93 50 0],[191.161 40 0],[191.352 20 0],[192.531 80 0],[192.677 20 0],[192.795 15 0],[192.89 40 0],[193.317 25 0],[194.186 500 2],[194.269 20 0],[195.215 150 0],[195.552 50 2],[196.021 15 0],[197.146 30 0],[197.76 50 0],[198.42 80 0],[199.188 15 0],[199.498 20 0],[200.805 25 0],[201.576 30 0],[202.698 30 0],[204.066 50 0],[204.09 20 0],[205.403 50 0],[205.831 70 0],[206.4 20 0],[206.858 80 0],[207.289 100 0],[207.308 100 0],[208.062 25 0],[209.158 30 0],[209.435 40 0],[209.639 200 0],[210.093 100 0],[211.393 100 0],[212.126 50 0],[214.073 25 0],[214.143 20 0],[214.846 15 0],[214.863 1 1],[214.873 40 0],[215.143 20 0],[215.154 30 1],[217.132 80 0],[219.449 150 0],[219.934 300 0],[220.965 400 0],[220.967 4 1],[221.105 40 0],[223.172 80 0],[224.605 400 0],[224.607 6 1],[225.117 60 0],[226.719 30 0],[226.891 400 0],[228.226 20 0],[228.668 200 0],[231.723 600 0],[233.48 300 0],[235.484 1000 0],[235.79 20 0],[236.034 3 1],[236.833 22 1],[238.072 60 0],[238.454 4 1],[240.815 100 0],[242.17 800 0],[242.949 1000 0],[243.352 1 1],[244.898 15 1],[245.524 60 0],[247.64 20 0],[248.339 300 0],[248.348 13 1],[248.699 10 1],[249.57 200 0],[252.261 5 1],[252.392 90 0],[253.117 80 0],[254.655 400 0],[255.801 40 0],[257.158 500 0],[259.442 200 0],[263.694 50 0],[266.124 200 0],[266.493 2 1],[270.651 700 0],[272.782 2 1],[276.178 20 0],[277.981 150 0],[278.503 80 0],[278.796 60 0],[281.259 60 0],[281.358 80 0],[282.552 2 1],[283.999 1400 0],[284.642 1 1],[285.062 200 0],[286.332 1000 0],[291.28 1 1],[291.354 200 0],[291.982 6 1],[299.1 3 1],[299.444 7 1],[300.914 700 0],[301.218 1 1],[302.394 8 1],[303.28 200 0],[303.412 850 0],[304.75 12 1],[309.469 6 1],[314.184 60 0],[317.505 550 0],[321.871 40 0],[326.234 550 0],[328.321 50 1],[333.062 110 0],[335.197 60 1],[340.748 2 1],[347.246 10 1],[353.757 7 1],[357.545 11 1],[358.239 3 1],[362.008 2 1],[362.054 6 1],[365.578 40 0],[371.523 6 1],[380.102 280 0],[384.144 4 1],[429.465 1 1],[452.474 40 0],[457.913 1 1],[458.029 1 1],[487.722 2 1],[494.431 3 1],[497.973 20 0],[507.114 2 1],[507.267 2 1],[517.454 20 0],[533.236 10 1],[556.195 20 1],[558.892 25 1],[559.62 2 1],[563.171 500 0],[575.359 15 0],[579.72 1 1],[579.918 15 1],[592.544 50 0],[597.03 100 0],[603.77 150 0],[605.486 200 -1],[606.9 250 0],[607.346 100 0],[607.748 6 1],[607.97 5 1],[614.971 400 0],[615.46 200 0],[617.15 150 0],[631.078 100 0],[635.435 40 0],[645.35 70 1],[676.145 8 1],[684.405 25 1],[719.14 20 1],[738.779 10 1],[739.86 20 0],[740.862 1 1],[768.53 30 0],[774.18 13 1],[775.497 100 0],[790.4 3 1],[803.05 100 0],[803.93 30 0],[811.409 200 0],[812.1 30 0],[834.935 30 0],[835.704 80 0],[842.272 300 0],[855.26 400 0],[868.17 50 0],[901.895 30 0],[941.086 50 0],[941.537 80 0],[961.64 150 0],[974.11 50 0],[974.28 100 0],[980.538 300 0],[985.052 500 0],[1045.647 25 0],[1080.758 11 0],[1089.4 54 0],[1119.185 70 0],[1127.766 56 0],[1133.697 17 0],[1145.459 200 0],[1161.626 200 0],[1167.077 76 0],[1169.445 25 0],[1173.978 258 0],[1182.518 96 0],[1183.582 106 0],[1193.299 254 0],[1200.95 48 0],[1231.324 111 0],[1233.56 33 0],[1253.087 42 0],[1253.65 42 0],[1278.82 37 0],[1288.85 89 0],[1298.17 187 0],[1300.03 20 0],[1301.85 187 0],[1308.15 68 0],[1346.02 378 0],[1360.82 144 0],[1501.82 13 0],[1546.42 30 0],[1700.05 20 0],[1780.75 10 0],[2062.2199 20 0],[2086.1699 40 0],[2168.6199 8 0],[2213.1699 4 0],[2299.7199 3 0],[2432.7199 4 0],[2473.8199 4 0]}{ALLx2000x1400x70x2000x1000x2000x200}{UVx2000x1400x60x2000x1000x2000x0}{VISx500x500x70x0x0x0x200}{IVx500x500x3x0x0x0x0}%[1.6 7 1], \pgfspectra@elt@search{#1}{Sb}{[69.118 10 2],[69.12 1 1],[69.869 10 2],[69.922 3 4],[72.286 15 2],[72.481 8 2],[73.233 15 2],[74.606 1 4],[76.443 1 1],[81.485 1 1],[83.1 6 4],[84.939 1 1],[85.508 2 1],[87.684 4 1],[89.802 1 4],[92.107 4 1],[98.357 6 1],[99.962 15 2],[100.113 6 1],[100.943 6 1],[101.194 40 2],[105.221 6 1],[105.627 8 1],[105.658 10 2],[105.732 8 1],[106.59 40 2],[106.993 20 2],[107.043 20 2],[107.376 5 2],[107.381 6 1],[107.582 30 2],[107.81 5 2],[108.406 20 2],[109.834 10 2],[110.432 8 4],[113.543 10 2],[115.149 30 2],[115.774 40 2],[116.696 12 2],[120.52 50 2],[121.064 50 2],[122.6 12 4],[123.03 6 1],[127.498 8 1],[130.669 20 2],[132.74 8 1],[135.804 6 1],[137.958 8 2],[138.47 8 1],[140.418 20 2],[140.783 6 1],[142.957 10 2],[143.076 10 0],[143.649 8 1],[146.419 10 0],[148.657 20 0],[149.136 40 0],[150.57 12 4],[151.257 50 0],[152.447 12 4],[153.274 120 0],[153.506 80 0],[156.551 6 1],[157.611 8 1],[158.136 7 1],[159.996 80 0],[160.698 10 1],[161.28 200 0],[162.33 100 0],[165.12 50 0],[165.704 20 1],[166.26 100 0],[167.389 15 2],[169.885 50 0],[171.023 3 2],[171.184 15 2],[171.693 80 0],[171.745 150 0],[172.343 150 0],[172.533 15 2],[173.619 100 0],[173.643 8 1],[175.779 50 0],[176.23 12 2],[176.576 100 0],[178.087 100 0],[178.824 100 0],[180.018 150 0],[181.05 50 0],[181.42 80 0],[182.95 100 0],[183.932 12 2],[185.889 60 0],[186.817 50 0],[187.115 300 0],[188.256 150 0],[189.128 70 0],[189.939 70 0],[192.708 100 0],[194.613 10 2],[195.039 200 0],[196.43 80 0],[198.605 60 0],[199.06 6 1],[202.4 50 0],[202.949 60 0],[203.977 70 0],[204.957 150 0],[205.41 3 2],[206.343 50 0],[206.833 1000 0],[207.956 100 0],[209.185 2 2],[209.841 50 0],[211.848 80 0],[212.7 5 2],[212.739 100 0],[213.705 50 0],[213.969 100 0],[214.18 10 1],[214.183 50 0],[214.486 100 0],[215.891 50 0],[217.581 1500 0],[217.919 250 0],[217.925 6 1],[220.132 200 0],[220.845 300 0],[220.85 6 1],[222.073 150 0],[222.198 100 0],[222.493 120 0],[222.515 6 1],[226.251 300 0],[228.898 120 0],[229.344 150 0],[230.646 300 0],[231.147 2500 0],[231.589 150 0],[237.367 400 0],[238.364 300 0],[239.522 100 0],[242.213 150 0],[242.635 250 0],[244.551 400 0],[247.832 400 0],[248.044 150 0],[248.046 8 1],[250.771 5 2],[251.054 100 0],[252.852 2000 0],[252.854 15 1],[256.775 10 1],[257.406 150 0],[259.013 15 2],[259.805 1500 0],[259.809 500 0],[261.231 300 0],[261.42 1 2],[261.717 12 2],[261.763 1 2],[265.26 200 0],[265.655 12 1],[266.939 20 2],[267.064 300 0],[268.276 200 0],[269.225 120 0],[271.89 150 0],[276.995 400 0],[278.587 5 2],[279.027 20 2],[285.109 12 1],[285.111 100 0],[287.792 1000 0],[296.61 12 1],[298.096 15 1],[302.983 500 0],[303.401 12 1],[304.067 12 1],[323.252 600 0],[324.128 20 1],[326.751 700 0],[333.661 20 2],[338.309 12 1],[338.315 100 0],[349.846 15 1],[350.407 50 2],[351.906 15 2],[352.047 12 1],[353.345 15 2],[355.918 40 2],[356.625 40 2],[363.78 25 1],[363.783 250 0],[372.278 20 1],[372.279 200 0],[373.89 30 2],[385.022 20 1],[403.355 200 0],[403.356 20 1],[413.363 20 1],[414.054 15 1],[419.517 15 1],[421.907 20 1],[426.509 40 2],[431.432 20 1],[434.483 12 1],[435.216 50 2],[441.142 12 1],[444.648 12 1],[450.692 12 1],[451.45 15 1],[459.189 30 2],[459.69 30 1],[459.909 20 1],[460.477 15 1],[464.732 30 1],[467.574 20 1],[469.291 30 2],[471.126 40 1],[473.544 12 1],[475.781 20 1],[476.536 20 1],[476.691 12 1],[478.403 30 1],[480.201 20 1],[483.282 20 1],[487.724 20 1],[494.74 15 1],[504.456 15 1],[516.632 12 1],[517.655 15 1],[523.894 20 1],[524.771 1 2],[535.424 20 1],[546.408 15 1],[549.032 30 0],[555.61 40 0],[556.813 15 1],[560.219 30 0],[563.202 100 0],[563.975 30 1],[569.08 1 2],[571.73 1 2],[583.034 60 0],[584.55 3 2],[589.509 15 1],[600.521 100 1],[605.341 20 1],[607.98 30 1],[613.004 50 1],[615.494 20 1],[624.67 5 2],[628.76 3 2],[630.276 12 1],[661.149 20 0],[664.744 30 1],[668.801 15 1],[680.667 6 1],[764.828 30 0],[784.444 80 0],[792.465 200 0],[796.955 40 0],[841.169 60 0],[857.264 150 0],[861.955 100 0],[868.27 30 0],[913.221 30 0],[951.868 400 0],[986.678 30 0],[994.914 400 0],[1007.849 200 0],[1026.101 300 0],[1036.433 50 0],[1048.83 50 0],[1058.56 200 0],[1067.741 1000 0],[1074.194 800 0],[1079.411 80 0],[1083.973 600 0],[1086.858 200 0],[1087.955 400 0],[1101.279 300 0],[1107.995 40 0],[1108.498 30 0],[1110.484 50 0],[1110.852 50 0],[1118.961 30 0],[1126.623 150 0],[1186.337 30 0],[1195.77 1 0],[1211.606 5 0],[1227.66 2 0],[1246.675 2 0]}{ALLx2500x2500x100x50x0x12x0}{UVx2500x2500x25x50x0x12x0}{VISx200x200x100x50x0x0x0}{IVx1000x1000x0x0x0x0x0}% \pgfspectra@elt@search{#1}{Te}{[79.96 3 1],[80.228 4 1],[94.262 3 1],[100.373 3 1],[100.78 3 1],[101.427 2.5 1],[102.279 2.5 1],[105.7 3 1],[105.951 4 1],[106.886 3 1],[107.766 4 1],[109.011 3 1],[114.404 3 1],[115.31 2.5 1],[116.142 5 1],[117.434 5 1],[117.579 6 1],[120.854 4.5 1],[121.3 2.5 1],[122.098 4.5 1],[125.362 4.5 1],[127.052 4.5 1],[127.476 3.5 1],[130.653 4 1],[132.492 5 1],[133.642 3.5 1],[134.52 3.5 1],[136.324 4.5 1],[136.673 4 1],[137.48 5 1],[139.522 3 1],[143.952 3 1],[146.525 3 1],[148.956 3.5 1],[160.799 4 1],[160.841 5 1],[161.315 5 1],[163.891 3 1],[165.54 2.5 0],[168.85 2.5 0],[170 3 0],[170.158 3 1],[170.8 2.5 0],[175.1 3 0],[175.94 2.5 0],[177.5 2.5 0],[179.57 3 0],[179.63 3 0],[182.24 5 0],[182.55 3 0],[185.06 3 0],[185.21 3 0],[185.38 3 0],[185.72 4 0],[186.04 3 0],[196.288 1.5 1],[199.483 3.5 0],[200.02 3 0],[200.202 13000 0],[207.09 4 0],[208.116 3250 0],[214.281 9000 0],[214.725 1600 0],[215.985 180 0],[220.874 4.5 0],[225.549 5 0],[225.902 250 0],[226.552 5 0],[237.306 10 1],[238.326 600 0],[238.578 750 0],[238.782 10 1],[240.163 5 1],[243.647 5 1],[243.869 25 1],[253.072 60 0],[256.782 10 1],[257.496 5 1],[257.61 2.5 1],[257.924 3.5 1],[259.112 5 1],[259.285 5 1],[260.572 5 1],[262.192 2.5 1],[262.486 5 1],[262.796 10 1],[264.189 10 1],[264.848 10 1],[264.966 50 1],[265.77 20 1],[266.11 40 1],[267.713 55 0],[271.158 10 1],[276.965 3 0],[284.117 5 1],[284.615 5 1],[285.829 50 1],[286.1 10 1],[286.882 20 1],[289.541 75 1],[291.989 15 1],[294.211 25 1],[294.668 25 1],[296.729 35 1],[297.367 10 1],[297.59 25 1],[299.704 7.5 1],[301.202 7.5 1],[301.758 25 1],[302.331 10 1],[304.7 35 1],[305.246 10 1],[306.316 5 1],[307.356 7.5 1],[310.444 4 1],[313.258 5 1],[316.066 10 1],[317.514 50 0],[318.983 5 1],[321.121 2.5 1],[325.68 30 1],[326.877 15 1],[328.263 15 1],[332.192 20 1],[332.311 20 1],[332.922 30 1],[335.21 30 1],[336.279 30 1],[337.41 12.5 1],[340.679 75 1],[341.963 10 1],[344.225 25 1],[345.512 20 1],[345.688 10 1],[348.032 10 1],[348.367 20 1],[348.611 10 1],[352.111 25 1],[355.219 25 1],[361.178 50 1],[361.757 25 1],[364.446 20 1],[367.926 10 1],[372.566 15 1],[379.722 20 1],[380.092 10 1],[390.567 10 1],[391.854 10 1],[393.149 15 1],[394.798 10 1],[396.922 20 1],[397.594 12.5 1],[398.177 10 1],[400.652 25 1],[401.169 10 1],[402.973 15 1],[404.717 20 1],[404.888 15 1],[407.348 7.5 1],[410.104 15 1],[412.732 35 1],[416.355 15 1],[416.977 50 1],[417.929 15 1],[421.131 12.5 1],[422.573 40 1],[424.647 15 1],[425.115 10 1],[426.111 50 1],[426.436 15 1],[427.343 30 1],[428.585 40 1],[432.09 20 1],[436.128 15 1],[436.4 75 1],[437.712 15 1],[438.51 37.5 1],[439.6 30 1],[447.863 85 1],[453.707 40 1],[455.778 50 1],[463.062 35 1],[464.112 50 1],[465.437 90 1],[468.691 100 1],[469.638 50 1],[470.653 50 1],[476.605 50 1],[477.156 35 1],[478.487 50 1],[482.714 50 1],[483.128 75 1],[484.29 75 1],[486.512 65 1],[486.624 100 1],[488.522 40 1],[490.444 40 1],[496.188 30 1],[500.082 30 1],[508.3 4 0],[514.87 3.5 0],[544.984 25 1],[548.795 25 1],[557.635 75 1],[564.926 75 1],[566.62 50 1],[570.812 100 1],[573.35 3.5 0],[575.585 75 1],[578.91 4 0],[593.615 25 1],[597.468 50 1],[627.35 4 0],[634.97 4 0],[636.713 25 1],[640.59 4 0],[645.67 3.5 0],[661.34 4 0],[664.858 5 1],[666.02 4 0],[669 4 0],[679 5 0],[683.76 10 0],[685.47 10 0],[701.606 5 1],[703.913 5 1],[719.11 7.5 0],[723.662 5 1],[726.35 10 0],[728.09 4 0],[728.926 5 1],[744.539 5 1],[746.098 6 1],[746.875 7.5 1],[748.126 5 1],[755.68 5 0],[768.861 3 1],[775.91 7.5 0],[781.879 4 1],[786.161 4 1],[792.169 7.5 1],[794.314 7.5 1],[795.034 5 1],[797.29 10 0],[805.615 3 1],[806.14 15 0],[808.25 5 0],[812.244 5 1],[813.039 4 1],[815.447 4 1],[818.644 10 1],[819.094 3 1],[825.15 5 0],[827.353 7.5 1],[827.66 5 0],[829.11 5 0],[835.58 7.5 0],[837.212 5 1],[846.98 3.5 0],[849.22 4 0],[850.08 4 0],[852.14 6 0],[853.568 5 1],[857.578 6 1],[860.463 5 1],[862.168 4 1],[863.21 3.5 0],[867.295 7.5 1],[870.109 6 0],[873.381 5 1],[875.818 102.5 0],[883.152 6 0],[885.115 9 0],[889.792 3 1],[900.437 40.5 0],[904.339 9 0],[919.68 6 0],[920.678 7.5 0],[920.764 8.5 0],[946.9 6 0],[972.274 2830 0],[978.554 92.5 0],[984.23 54.5 0],[986.892 266 0],[990.261 59 0],[995.63 344.5 0],[995.993 18.5 0],[997.713 162.5 0],[997.931 68 0],[998.585 22.5 0],[1005.141 2975 0],[1009.101 2048.5 0],[1009.957 52 0],[1010.605 139.5 0],[1011.808 190.5 0],[1015.106 148 0],[1030.056 198.5 0],[1032.305 102.5 0],[1049.357 372.5 0],[1050.986 98.5 0],[1091.834 940 0],[1100.78 149 0],[1108.956 5100 0],[1116.374 254 0],[1148.723 3310 0],[1197.896 140 0],[1256.624 94 0],[1258.919 194.5 0],[1280.55 80.5 0],[1310.418 200 0],[1324.775 790 0],[1331.663 241.5 0],[1403.709 108.5 0],[1407.253 72 0],[1433.574 217 0],[1441.746 110 0],[1451.351 525 0],[1455.468 64.5 0],[1545.245 740 0],[1554.623 1215 0],[1640.39 1880 0],[1730.3539 980 0],[1829.159 1390 0],[1877.7301 197 0],[1962.352 134.5 0],[2014.7539 119.5 0],[2104.373 510 0],[2160.25 232 0],[2179.9641 18.5 0],[2255.5289 37 0],[2275.566 24 0],[2329.4939 13.5 0],[2397.8699 8.5 0],[2405.9039 12.5 0],[2642.8619 6.5 0],[2653.917 19 0],[2655.374 7.5 0],[2717.926 3.5 0]}{ALLx13000x13000x100x0x0x0x0}{UVx13000x13000x75x0x0x0x0}{VISx100x10x100x0x0x0x0}{IVx5100x5100x10x0x0x0x0}% -\pgfspectra@elt@search{#1}{I}{[36.378 3 4],[38.074 3.6 4],[56.553 4.5 4],[60.186 0.5 3],[60.757 5 4],[61.246 0.6 3],[61.517 0.4 3],[65.422 0.4 3],[65.456 0.4 3],[65.58 0.2 1],[65.9 0.6 1],[66.398 0.8 1],[66.452 0.8 1],[66.506 0.8 1],[66.57 15 1],[66.681 0.6 2],[70.511 0.8 2],[71.955 100 1],[72.298 100 1],[78.464 0.7 2],[78.48 0.7 2],[79.552 0.8 2],[79.816 100 1],[83.41 120 1],[84.78 60 1],[86.597 0.5 2],[87.349 150 1],[87.594 100 1],[87.984 200 1],[88.188 150 1],[89.1 100 1],[89.317 100 1],[91.928 0.7 3],[92.038 0.5 2],[96.117 0.6 2],[100.057 120 1],[100.335 100 1],[101.858 400 1],[103.466 1000 1],[105.474 150 1],[106.634 200 1],[107.521 300 1],[107.858 0.6 2],[109.42 0.8 2],[110.5 500 1],[111.116 250 1],[111.722 150 1],[112.525 350 1],[113.15 200 1],[113.975 120 1],[113.98 1000 1],[115.467 150 1],[115.987 100 1],[116.056 1000 1],[116.648 2000 1],[116.705 150 1],[117.584 500 1],[117.865 1000 1],[118.734 1500 1],[119.085 1000 1],[119.529 1.5 0],[119.888 500 1],[120.022 700 1],[121.841 20 0],[122.089 2000 1],[122.405 60 0],[122.408 60 0],[122.889 50 0],[123.406 2000 1],[124.466 0.4 2],[125.134 60 0],[125.235 0.8 2],[125.915 250 0],[125.951 300 0],[126.127 80 0],[126.757 60 0],[126.76 60 0],[127.526 150 0],[128.94 300 0],[130.034 1000 0],[130.298 300 0],[130.693 0.5 2],[131.395 300 0],[131.754 300 0],[133.019 200 0],[133.652 2000 1],[135.51 500 0],[135.797 300 0],[136.097 500 0],[136.111 300 0],[136.771 250 0],[136.822 250 0],[138.323 400 0],[139.075 300 0],[139.29 200 0],[140.001 200 0],[142.549 800 0],[144.626 500 0],[145.318 500 0],[145.739 500 0],[145.747 500 0],[145.798 1000 0],[145.879 250 0],[145.915 400 0],[146.583 250 0],[148.592 100 0],[149.289 500 0],[150.704 500 0],[151.468 500 0],[151.805 1500 0],[152.645 250 0],[159.358 500 0],[161.76 500 0],[164.078 250 0],[170.207 1500 0],[178.276 1200 0],[179.909 500 0],[183.038 7500 0],[184.445 1500 0],[206.163 200 0],[222.443 0.1 2],[223.812 0.1 2],[224.93 0.5 3],[224.931 0.3 2],[230.938 0.2 2],[234.084 0.4 3],[234.085 0.3 2],[235.043 0.3 2],[235.346 0.2 2],[236.113 0.7 3],[236.774 0.4 2],[236.775 0.5 3],[237.145 0.2 2],[237.245 0.3 2],[237.245 0.6 3],[237.646 0.7 3],[237.647 0.4 2],[238.528 0.4 3],[238.711 0.8 3],[238.712 0.4 2],[239.2 0.6 3],[239.201 0.3 2],[240.305 0.4 3],[240.306 0.2 2],[240.363 0.2 2],[240.801 10 1],[241.485 0.2 2],[241.845 0.2 3],[241.849 0.2 2],[241.885 0.2 2],[241.918 10 1],[242.389 0.3 3],[242.391 0.2 2],[242.61 0.9 3],[242.612 0.5 2],[243.485 0.6 3],[243.488 0.3 2],[246.25 0.2 2],[246.668 0.3 3],[246.669 0.3 2],[246.696 0.3 3],[246.699 0.3 2],[247.535 0.8 3],[247.536 0.6 2],[248.551 0.4 3],[248.924 0.5 3],[248.927 0.4 2],[249.32 0.4 3],[249.321 0.2 2],[249.427 0.2 2],[249.474 10 1],[249.516 0.3 2],[249.607 0.2 2],[250.138 0.2 3],[250.141 0.3 2],[251.374 0.3 3],[251.682 0.2 2],[251.974 0.8 3],[251.975 0.6 2],[252.172 0.4 2],[252.172 0.6 3],[253.198 0.4 3],[253.199 0.3 2],[253.36 10 1],[253.427 20 1],[253.754 0.5 3],[253.756 0.2 2],[254.567 0.8 3],[254.571 0.7 2],[256.624 100 1],[258.279 200 1],[259.346 30 1],[264.077 0.4 2],[264.077 0.4 3],[264.211 0.4 2],[264.211 0.5 3],[265.223 0.8 3],[265.225 0.6 2],[268.898 20 1],[273.012 50 1],[276.515 2 1],[280.859 20 1],[281.845 0.3 3],[281.848 0.2 2],[283.944 0.2 2],[286.467 0.4 2],[286.468 0.6 3],[287.863 150 1],[288.515 0.4 2],[291.097 0.4 3],[291.098 0.3 2],[291.733 0.5 3],[291.735 0.3 2],[293.111 0.2 2],[299.387 100 1],[300.568 0.2 2],[306.917 0.4 3],[306.923 0.3 2],[307.875 500 1],[315.388 0.3 2],[316.103 20 1],[317.011 0.4 3],[317.014 0.3 2],[317.507 100 1],[318.164 0.4 3],[318.166 0.3 2],[321.012 0.4 3],[321.014 0.3 2],[321.348 0.6 3],[321.349 0.4 2],[322.49 0.6 3],[322.493 0.4 2],[330.047 0.2 2],[335.553 30 1],[342.499 25 1],[347.953 0.2 2],[349.741 30 1],[352.69 50 1],[354.69 0.4 3],[354.692 0.3 2],[361.381 0.3 2],[374.214 20 1],[375.44 0.2 2],[375.455 0.2 2],[396.316 0.3 2],[407.714 0.3 2],[410.223 20 0],[412.921 20 0],[413.415 10 0],[432.184 50 0],[445.286 30 1],[459.977 20 1],[463.245 30 1],[466.648 50 1],[467.553 100 1],[476.331 25 0],[486.232 100 0],[491.694 20 0],[498.692 100 1],[506.537 40 1],[511.929 1000 0],[514.973 20 1],[516.12 300 1],[517.619 30 1],[521.627 60 1],[522.897 50 1],[523.457 100 0],[524.571 300 1],[526.936 50 1],[529.978 40 1],[532.28 40 1],[533.822 1000 1],[534.515 500 1],[536.986 100 1],[540.542 80 1],[540.736 80 1],[542.706 60 0],[543.583 300 1],[543.8 100 1],[546.462 200 1],[549.15 80 1],[549.694 100 1],[550.472 100 1],[552.206 60 1],[559.852 60 1],[560.032 100 1],[561.289 150 1],[562.569 1000 1],[567.808 100 1],[569.091 200 1],[570.205 50 1],[571.053 400 1],[573.827 100 1],[576.072 100 1],[576.433 100 0],[577.483 50 1],[578.702 50 1],[589.403 200 0],[595.025 500 1],[598.486 30 0],[602.408 200 0],[606.893 50 1],[607.498 200 1],[608.243 100 0],[612.749 200 1],[619.188 80 0],[620.486 100 1],[621.31 50 0],[624.448 80 0],[625.749 90 1],[629.398 100 0],[631.313 50 0],[633.037 80 0],[633.35 40 0],[633.785 200 0],[633.944 100 0],[635.916 50 0],[656.649 100 0],[658.375 200 0],[658.527 100 0],[661.966 500 0],[666.111 50 0],[666.596 60 1],[669.729 50 0],[671.883 30 1],[673.203 40 0],[681.257 400 1],[695.878 100 1],[698.978 50 0],[708.521 20 1],[712.005 50 0],[712.205 120 0],[714.206 200 0],[716.479 100 0],[719.166 40 0],[722.73 70 0],[723.678 100 0],[723.784 50 0],[735.135 50 1],[740.206 500 0],[741.05 100 0],[741.648 50 0],[746.899 500 0],[749.052 50 0],[755.418 200 0],[755.665 50 0],[770.02 200 0],[779.898 50 1],[789.798 60 0],[796.948 50 0],[800.363 100 0],[804.374 9900 0],[806.57 30 0],[809.076 100 0],[816.938 80 0],[822.257 50 0],[824.005 400 0],[839.33 1000 0],[841.46 15 1],[848.611 100 0],[866.495 150 0],[870.08 50 0],[874.822 25 0],[885.324 100 0],[885.38 200 0],[885.75 300 0],[889.85 100 0],[896.469 40 0],[899.313 40 0],[902.24 500 0],[905.833 1500 0],[909.886 100 0],[911.391 1200 0],[912.803 60 0],[919.53 3 1],[922.774 60 0],[933.505 100 0],[942.671 400 0],[942.715 300 0],[948.033 1 1],[959.822 200 0],[964.961 200 0],[965.306 300 0],[973.173 500 0],[1000.305 50 0],[1013.116 75 0],[1023.882 100 0],[1037.52 40 0],[1039.174 40 0],[1040.549 0.6 1],[1046.654 500 0],[1108.468 0.1 1],[1123.656 40 0],[1155.846 35 0],[1177.834 32 0],[1199.686 45 0],[1203.369 30 0],[1230.458 15 0],[1314.916 6 0],[1395.827 14 0],[1428.702 20 0],[1446 10 0],[1503.257 22.5 0],[1552.865 10.5 0],[1603.733 15 0],[1827.5711 1.5 0],[1834.852 2 0],[1898.241 1.5 0],[1907.017 3.5 0],[1910.5119 11 0],[1937.002 5 0],[2064.8689 1 0],[2218.3029 22 0],[2222.6529 15 0],[2230.9211 3 0],[2442.082 3.2 0],[2736.542 1.2 0],[2757.3051 0.9 0],[3036.193 1 0],[3038.3881 0.8 0],[3429.573 1 0],[3451.3109 0.9 0],[4022.8539 0.3 0],[4163.3801 0.2 0]}{ALLx9900x9900x2000x0.8x0.9x5x0}{UVx7500x7500x2000x0.8x0.9x5x0}{VISx1000x1000x1000x0.3x0x0x0}{IVx9900x9900x15x0x0x0x0}% +\pgfspectra@elt@search{#1}{I}{[36.378 3 4],[38.074 3.6 4],[56.553 4.5 4],[60.186 0.5 3],[60.757 5 4],[61.246 0.6 3],[61.517 0.4 3],[65.422 0.4 3],[65.456 0.4 3],[65.58 0.2 1],[65.9 0.6 1],[66.398 0.8 1],[66.452 0.8 1],[66.506 0.8 1],[66.57 15 1],[66.681 0.6 2],[70.511 0.8 2],[71.955 100 1],[72.298 100 1],[78.464 0.7 2],[78.48 0.7 2],[79.552 0.8 2],[79.816 100 1],[83.41 120 1],[84.78 60 1],[86.597 0.5 2],[87.349 150 1],[87.594 100 1],[87.984 200 1],[88.188 150 1],[89.1 100 1],[89.317 100 1],[91.928 0.7 3],[92.038 0.5 2],[96.117 0.6 2],[100.057 120 1],[100.335 100 1],[101.858 400 1],[103.466 1000 1],[105.474 150 1],[106.634 200 1],[107.521 300 1],[107.858 0.6 2],[109.42 0.8 2],[110.5 500 1],[111.116 250 1],[111.722 150 1],[112.525 350 1],[113.15 200 1],[113.975 120 1],[113.98 1000 1],[115.467 150 1],[115.987 100 1],[116.056 1000 1],[116.648 2000 1],[116.705 150 1],[117.584 500 1],[117.865 1000 1],[118.734 1500 1],[119.085 1000 1],[119.529 1.5 0],[119.888 500 1],[120.022 700 1],[121.841 20 0],[122.089 2000 1],[122.405 60 0],[122.408 60 0],[122.889 50 0],[123.406 2000 1],[124.466 0.4 2],[125.134 60 0],[125.235 0.8 2],[125.915 250 0],[125.951 300 0],[126.127 80 0],[126.757 60 0],[126.76 60 0],[127.526 150 0],[128.94 300 0],[130.034 1000 0],[130.298 300 0],[130.693 0.5 2],[131.395 300 0],[131.754 300 0],[133.019 200 0],[133.652 2000 1],[135.51 500 0],[135.797 300 0],[136.097 500 0],[136.111 300 0],[136.771 250 0],[136.822 250 0],[138.323 400 0],[139.075 300 0],[139.29 200 0],[140.001 200 0],[142.549 800 0],[144.626 500 0],[145.318 500 0],[145.739 500 0],[145.747 500 0],[145.798 1000 0],[145.879 250 0],[145.915 400 0],[146.583 250 0],[148.592 100 0],[149.289 500 0],[150.704 500 0],[151.468 500 0],[151.805 1500 0],[152.645 250 0],[159.358 500 0],[161.76 500 0],[164.078 250 0],[170.207 1500 0],[178.276 1200 0],[179.909 500 0],[183.038 7500 0],[184.445 1500 0],[206.163 200 0],[222.443 0.1 2],[223.812 0.1 2],[224.93 0.5 3],[224.931 0.3 2],[230.938 0.2 2],[234.084 0.4 3],[234.085 0.3 2],[235.043 0.3 2],[235.346 0.2 2],[236.113 0.7 3],[236.774 0.4 2],[236.775 0.5 3],[237.145 0.2 2],[237.245 0.3 2],[237.245 0.6 3],[237.646 0.7 3],[237.647 0.4 2],[238.528 0.4 3],[238.711 0.8 3],[238.712 0.4 2],[239.2 0.6 3],[239.201 0.3 2],[240.305 0.4 3],[240.306 0.2 2],[240.363 0.2 2],[240.801 10 1],[241.485 0.2 2],[241.845 0.2 3],[241.849 0.2 2],[241.885 0.2 2],[241.918 10 1],[242.389 0.3 3],[242.391 0.2 2],[242.61 0.9 3],[242.612 0.5 2],[243.485 0.6 3],[243.488 0.3 2],[246.25 0.2 2],[246.668 0.3 3],[246.669 0.3 2],[246.696 0.3 3],[246.699 0.3 2],[247.535 0.8 3],[247.536 0.6 2],[248.551 0.4 3],[248.924 0.5 3],[248.927 0.4 2],[249.32 0.4 3],[249.321 0.2 2],[249.427 0.2 2],[249.474 10 1],[249.516 0.3 2],[249.607 0.2 2],[250.138 0.2 3],[250.141 0.3 2],[251.374 0.3 3],[251.682 0.2 2],[251.974 0.8 3],[251.975 0.6 2],[252.172 0.4 2],[252.172 0.6 3],[253.198 0.4 3],[253.199 0.3 2],[253.36 10 1],[253.427 20 1],[253.754 0.5 3],[253.756 0.2 2],[254.567 0.8 3],[254.571 0.7 2],[256.624 100 1],[258.279 200 1],[259.346 30 1],[264.077 0.4 2],[264.077 0.4 3],[264.211 0.4 2],[264.211 0.5 3],[265.223 0.8 3],[265.225 0.6 2],[268.898 20 1],[273.012 50 1],[276.515 2 1],[280.859 20 1],[281.845 0.3 3],[281.848 0.2 2],[283.944 0.2 2],[286.467 0.4 2],[286.468 0.6 3],[287.863 150 1],[288.515 0.4 2],[291.097 0.4 3],[291.098 0.3 2],[291.733 0.5 3],[291.735 0.3 2],[293.111 0.2 2],[299.387 100 1],[300.568 0.2 2],[306.917 0.4 3],[306.923 0.3 2],[307.875 500 1],[315.388 0.3 2],[316.103 20 1],[317.011 0.4 3],[317.014 0.3 2],[317.507 100 1],[318.164 0.4 3],[318.166 0.3 2],[321.012 0.4 3],[321.014 0.3 2],[321.348 0.6 3],[321.349 0.4 2],[322.49 0.6 3],[322.493 0.4 2],[330.047 0.2 2],[335.553 30 1],[342.499 25 1],[347.953 0.2 2],[349.741 30 1],[352.69 50 1],[354.69 0.4 3],[354.692 0.3 2],[361.381 0.3 2],[374.214 20 1],[375.44 0.2 2],[375.455 0.2 2],[396.316 0.3 2],[407.714 0.3 2],[410.223 20 0],[412.921 20 0],[413.415 10 0],[432.184 50 0],[445.286 30 1],[459.977 20 1],[463.245 30 1],[466.648 50 1],[467.553 100 1],[476.331 25 0],[486.232 100 0],[491.694 20 0],[498.692 100 1],[506.537 40 1],[511.929 1000 0],[514.973 20 1],[516.12 300 1],[517.619 30 1],[521.627 60 1],[522.897 50 1],[523.457 100 0],[524.571 300 1],[526.936 50 1],[529.978 40 1],[532.28 40 1],[533.822 1000 1],[534.515 500 1],[536.986 100 1],[540.542 80 1],[540.736 80 1],[542.706 60 0],[543.583 300 1],[543.8 100 1],[546.462 200 1],[549.15 80 1],[549.694 100 1],[550.472 100 1],[552.206 60 1],[559.852 60 1],[560.032 100 1],[561.289 150 1],[562.569 1000 1],[567.808 100 1],[569.091 200 1],[570.205 50 1],[571.053 400 1],[573.827 100 1],[576.072 100 1],[576.433 100 0],[577.483 50 1],[578.702 50 1],[589.403 200 0],[595.025 500 1],[598.486 30 0],[602.408 200 0],[606.893 50 1],[607.498 200 1],[608.243 100 0],[612.749 200 1],[619.188 80 0],[620.486 100 1],[621.31 50 0],[624.448 80 0],[625.749 90 1],[629.398 100 0],[631.313 50 0],[633.037 80 0],[633.35 40 0],[633.785 200 0],[633.944 100 0],[635.916 50 0],[656.649 100 0],[658.375 200 0],[658.527 100 0],[661.966 500 0],[666.111 50 0],[666.596 60 1],[669.729 50 0],[671.883 30 1],[673.203 40 0],[681.257 400 1],[695.878 100 1],[698.978 50 0],[708.521 20 1],[712.005 50 0],[712.205 120 0],[714.206 200 0],[716.479 100 0],[719.166 40 0],[722.73 70 0],[723.678 100 0],[723.784 50 0],[735.135 50 1],[740.206 500 0],[741.05 100 0],[741.648 50 0],[746.899 500 0],[749.052 50 0],[755.418 200 0],[755.665 50 0],[770.02 200 0],[779.898 50 1],[789.798 60 0],[796.948 50 0],[800.363 100 0],[804.374 9900 0],[806.57 30 0],[809.076 100 0],[816.938 80 0],[822.257 50 0],[824.005 400 0],[839.33 1000 0],[841.46 15 1],[848.611 100 0],[866.495 150 0],[870.08 50 0],[874.822 25 0],[885.324 100 0],[885.38 200 0],[885.75 300 0],[889.85 100 0],[896.469 40 0],[899.313 40 0],[902.24 500 0],[905.833 1500 0],[909.886 100 0],[911.391 1200 0],[912.803 60 0],[919.53 3 1],[922.774 60 0],[933.505 100 0],[942.671 400 0],[942.715 300 0],[948.033 1 1],[959.822 200 0],[964.961 200 0],[965.306 300 0],[973.173 500 0],[1000.305 50 0],[1013.116 75 0],[1023.882 100 0],[1037.52 40 0],[1039.174 40 0],[1040.549 0.6 1],[1046.654 500 0],[1108.468 0.1 1],[1123.656 40 0],[1155.846 35 0],[1177.834 32 0],[1199.686 45 0],[1203.369 30 0],[1230.458 15 0],[1314.916 6 0],[1395.827 14 0],[1428.702 20 0],[1446 10 0],[1503.257 22.5 0],[1552.865 10.5 0],[1603.733 15 0],[1827.5711 1.5 0],[1834.852 2 0],[1898.241 1.5 0],[1907.017 3.5 0],[1910.5119 11 0],[1937.002 5 0],[2064.8689 1 0],[2218.3029 22 0],[2222.6529 15 0],[2230.9211 3 0],[2442.082 3.2 0],[2736.542 1.2 0],[2757.3051 0.9 0],[3036.193 1 0],[3038.3881 0.8 0],[3429.573 1 0],[3451.3109 0.9 0]}{ALLx9900x9900x2000x0.8x0.9x5x0}{UVx7500x7500x2000x0.8x0.9x5x0}{VISx1000x1000x1000x0.3x0x0x0}{IVx9900x9900x15x0x0x0x0}%,[4022.8539 0.3 0],[4163.3801 0.2 0] \pgfspectra@elt@search{#1}{Xe}{[65.78 8 2],[66.01 8 2],[67.38 9 2],[67.4 9 2],[67.66 9 2],[69.4 10 2],[69.85 20 2],[70.51 12 2],[72.12 10 2],[73.1 15 2],[73.33 10 2],[74.041 350 1],[74.26 15 2],[75.6 10 2],[76.15 10 2],[76.91 10 2],[77.91 25 2],[79.29 15 2],[79.61 12 2],[80.2 15 2],[80.307 350 1],[82.32 25 2],[82.49 30 2],[85.3 25 2],[88.08 600 1],[88.554 350 1],[88.93 15 2],[89.4 20 2],[89.6 20 2],[92.587 600 1],[93.54 250 1],[96.55 10 2],[97.277 800 1],[97.668 700 1],[100.34 35 2],[101.77 35 2],[103.244 500 1],[103.768 700 1],[104.131 1100 1],[104.78 10 2],[104.827 1000 1],[105.192 1200 1],[106.64 12 2],[107.448 2000 1],[108.386 600 1],[110.043 1200 1],[113.03 30 2],[115.847 600 1],[116.963 250 1],[118.305 800 1],[119.204 250 0],[123.21 25 2],[124.476 600 1],[125.02 250 0],[129.559 1000 0],[146.961 600 0],[266.898 80 2],[271.733 100 2],[281.445 30 2],[281.591 40 2],[282.745 30 2],[284.765 40 2],[286.24 30 2],[286.473 200 1],[287.11 80 2],[287.124 60 2],[287.17 30 2],[289.522 150 1],[289.662 30 2],[290.66 50 2],[291.189 40 2],[291.236 80 2],[294.02 40 2],[294.52 60 2],[294.75 40 2],[294.81 40 2],[297.047 80 2],[297.932 400 1],[299.287 40 2],[300.425 30 2],[301.743 100 1],[302.381 100 2],[308.35 40 2],[309.11 50 2],[310.646 30 2],[312.887 300 1],[313.83 100 2],[315.082 80 2],[318.52 40 2],[324.286 100 2],[326.898 80 2],[328.782 30 2],[330.155 80 2],[333.16 40 2],[335.8 30 2],[336.672 200 1],[338.412 80 2],[340.007 2 0],[341.837 2 0],[342 2 0],[344.266 3 0],[344.42 60 2],[345.42 70 2],[345.87 100 2],[346.126 100 1],[346.822 40 2],[346.981 4 0],[347.236 4 0],[350.674 5 0],[352.283 80 2],[354.23 50 2],[354.986 10 0],[355.21 50 2],[355.404 10 0],[356.14 40 2],[357.97 100 2],[358.36 80 2],[359.54 100 2],[360.606 100 2],[360.7 40 2],[361.032 15 0],[361.306 8 0],[361.59 100 2],[362.31 40 2],[362.408 600 2],[363.306 6 0],[366.991 10 0],[367.667 50 2],[368.59 40 0],[369.349 40 0],[377.63 40 2],[378.102 300 2],[384.15 100 2],[387.78 200 2],[388.05 60 2],[390.791 100 1],[392.255 500 2],[395.059 300 2],[403.759 100 1],[405.007 200 2],[405.746 200 1],[406.04 60 2],[409.889 100 1],[410.91 100 2],[414.57 100 2],[415.804 200 1],[418.01 1000 1],[419.315 500 1],[420.848 300 1],[420.947 100 1],[421.372 300 1],[421.56 100 1],[422.3 300 1],[423.825 400 1],[424.538 500 1],[425.157 100 1],[428.59 30 2],[429.64 500 1],[431.051 500 1],[433.052 1000 1],[436.92 200 1],[437.378 100 1],[439.32 500 1],[439.577 500 1],[440.688 200 1],[441.607 150 1],[443.42 50 2],[444.813 500 1],[446.21 100 2],[446.219 1000 1],[448.086 500 1],[452.186 100 1],[456.91 100 2],[457.01 100 2],[464.14 100 2],[467.37 30 2],[468.357 60 2],[472.36 30 2],[473.4152 600 0],[475.73 100 2],[479.2619 150 0],[480.702 500 0],[482.971 400 0],[484.329 300 0],[486.95 40 2],[491.651 500 0],[492.3152 500 0],[497.171 200 1],[497.271 400 1],[498.877 300 1],[499.117 100 1],[502.828 200 0],[504.492 200 1],[508.062 1000 1],[512.242 300 1],[512.57 100 1],[517.882 100 1],[518.804 300 1],[519.137 400 1],[519.21 100 1],[523.9 60 2],[526.044 500 1],[526.195 500 1],[529.222 2000 1],[530.927 300 1],[531.387 1000 1],[533.933 2000 1],[536.32 200 1],[536.71 30 2],[536.807 200 1],[537.239 500 1],[539.28 100 0],[540.1 50 2],[541.915 3000 1],[543.896 800 1],[544.545 300 1],[545.045 200 1],[546.039 400 1],[547.261 1000 1],[549.486 100 1],[552.44 40 2],[552.553 200 1],[553.107 600 1],[556.662 100 0],[561.667 300 1],[565.938 300 1],[566.756 600 1],[567.091 150 1],[569.575 100 0],[569.961 200 1],[571.61 200 1],[572.691 500 1],[575.103 500 1],[575.865 300 1],[577.639 300 1],[581.596 100 1],[582.389 300 0],[582.48 150 0],[587.502 100 0],[589.329 300 1],[589.499 100 0],[590.513 200 1],[593.417 100 0],[594.553 500 1],[597.113 300 1],[597.646 2000 1],[600.892 200 1],[603.62 1000 1],[605.115 2000 1],[609.35 600 1],[609.759 1500 1],[610.143 400 1],[611.508 100 1],[614.645 100 1],[617.83 150 0],[617.966 120 0],[618.242 300 0],[619.407 500 1],[619.826 100 0],[620.597 60 2],[622.002 100 1],[622.17 25 2],[623.82 60 2],[625.905 60 2],[627.082 500 1],[627.754 400 1],[628.441 100 1],[628.601 100 0],[630.086 250 1],[631.806 500 0],[634.396 400 1],[635.635 600 1],[637.528 200 1],[639.799 100 1],[646.97 300 0],[647.284 150 0],[648.776 120 0],[649.872 100 0],[650.418 200 0],[651.283 300 1],[652.865 200 1],[653.316 100 0],[659.501 1000 1],[659.556 100 0],[659.725 400 1],[659.884 100 1],[666.892 150 0],[669.432 300 1],[672.801 200 0],[678.871 150 1],[679.037 100 1],[680.574 1000 1],[682.732 200 0],[687.211 100 0],[688.216 300 0],[691.022 80 1],[692.553 100 0],[694.211 800 1],[697.618 100 0],[699.088 2000 1],[708.215 150 1],[711.96 500 0],[714.75 50 1],[714.903 200 1],[716.483 500 1],[728.434 100 1],[730.18 200 1],[733.93 200 1],[738.6 100 0],[739.379 150 0],[754.845 300 1],[758.468 200 0],[761.857 80 1],[764.202 500 0],[764.391 100 0],[767.066 200 1],[778.704 60 1],[780.265 100 0],[788.132 100 0],[788.74 300 0],[796.734 500 0],[802.967 100 0],[805.726 200 0],[806.134 150 0],[810.198 100 0],[815.18 150 1],[817.102 100 0],[820.634 700 0],[823.1635 10000 0],[826.652 500 0],[828.0116 7000 0],[834.682 2000 0],[834.724 100 1],[840.919 2000 0],[851.519 50 1],[857.601 200 0],[860.423 50 1],[864.854 250 0],[869.22 100 0],[869.686 200 0],[871.619 50 1],[873.939 300 0],[875.82 100 0],[881.941 5000 0],[886.232 300 0],[890.873 200 0],[893.083 200 0],[895.225 1000 0],[898.105 100 0],[898.757 200 0],[904.545 400 0],[916.265 500 0],[916.752 100 0],[937.476 100 0],[951.338 200 0],[959.135 50 1],[968.532 150 0],[969.868 50 1],[971.816 100 0],[979.97 2000 0],[992.319 3000 0],[1083.837 100 0],[1174.201 90 0],[1223.524 375 0],[1225.776 100 0],[1259.02 300 0],[1262.3391 2500 0],[1354.415 250 0],[1365.7055 2000 0],[1414.2444 1250 0],[1424.096 800 0],[1436.499 375 0],[1466.081 140 0],[1473.2806 3000 0],[1509.972 100 0],[1541.8394 2500 0],[1555.713 150 0],[1597.954 250 0],[1603.99 100 0],[1605.328 1000 0],[1655.449 125 0],[1672.815 1500 0],[1732.577 1500 0],[1878.8131 350 0],[2018.7189 150 0],[2026.2242 3000 0],[2147.009 250 0],[2319.333 1250 0],[2327.9539 110 0],[2482.4711 1800 0],[2514.584 175 0],[2626.908 2000 0],[2651.0859 2500 0],[2838.1539 250 0],[2858.225 750 0],[2938.441 300 0],[2944.8061 150 0],[2964.958 100 0],[2981.3619 100 0],[3025.3141 600 0],[3047.5461 1500 0],[3050.4119 100 0],[3079.418 500 0],[3106.923 6000 0],[3133.601 125 0],[3160.791 550 0],[3229.308 100 0],[3273.926 1800 0],[3366.6691 3500 0],[3401.4672 150 0],[3433.527 450 0],[3474.4 170 0],[3507.025 5000 0],[3524.6922 110 0],[3620.9211 250 0],[3623.1738 150 0],[3650.8359 450 0],[3678.8828 850 0],[3868.598 140 0],[3873.782 175 0],[3893.9602 270 0],[3995.5141 120 0]}{ALLx10000x10000x3000x600x0x0x0}{UVx2000x1000x2000x600x0x0x0}{VISx3000x600x3000x500x0x0x0}{IVx10000x10000x150x0x0x0x0}% \pgfspectra@elt@search{#1}{Cs}{[55.691 15 2],[58.415 50 2],[58.44 10 2],[59.1044 5 1],[60.301 240 2],[60.7291 1 1],[60.785 120 2],[60.794 160 2],[61.2786 0.8 1],[61.401 2000 2],[62.115 300 2],[63.586 120 2],[63.767 60 2],[63.817 400 2],[63.9356 40 1],[65.7112 2 1],[65.794 5 2],[66.382 90 2],[66.46 90 2],[66.625 500 2],[66.8386 10 1],[67.306 360 2],[67.96 80 2],[68.755 160 2],[69.16 1000 2],[69.943 160 2],[70.34 30 3],[70.389 700 2],[71.025 200 2],[71.8138 300 1],[72.179 4000 2],[72.22 4000 2],[73.156 1000 2],[73.195 60 2],[73.666 200 2],[74.029 2400 2],[74.223 30 2],[74.994 200 2],[75.038 300 2],[75.518 300 2],[75.882 240 2],[75.99 1.2 2],[77.361 1.4 3],[78.773 60 2],[80.195 15 2],[80.8761 300 1],[81.3837 300 1],[81.402 40 2],[81.735 3 2],[82.034 160 2],[82.364 0.8 3],[82.48 30 3],[82.599 40 2],[83.039 1500 2],[83.739 20 2],[84.337 0.8 2],[84.792 50 2],[86.183 3 3],[87.484 40 3],[89.692 30 3],[90.127 700 1],[92.035 3000 2],[92.166 100 2],[92.302 20 3],[92.6657 800 1],[93.267 5 2],[98.614 40 3],[99.514 10 3],[105.479 5000 2],[106.891 30 3],[117.865 26 1],[119.155 16 1],[202.505 5 1],[203.515 12 1],[207.743 16 1],[208.005 16 1],[208.871 16 1],[209.197 16 1],[209.95 3 1],[211.265 5 1],[214.675 20 1],[217.96 26 1],[218.214 5 1],[218.947 26 1],[221.315 5 1],[222.051 20 1],[222.888 26 1],[225.458 50 1],[225.782 40 1],[225.835 5 1],[226.761 70 1],[227.383 70 1],[228.668 5 1],[230.771 5 1],[231.568 8 1],[232.107 26 1],[234.313 16 1],[235.444 26 1],[235.785 5 1],[236.481 26 1],[239.286 50 1],[241.489 16 1],[243.271 5 1],[244.324 5 1],[247.607 26 1],[248.041 8 1],[251.572 26 1],[252.366 3 1],[253.908 26 1],[253.917 5 1],[255.065 12 1],[255.117 26 1],[256.817 26 1],[256.869 50 1],[257.303 200 1],[257.454 26 1],[257.674 26 1],[259.009 26 1],[260.944 50 1],[261.627 26 1],[262.795 5 1],[263.714 16 1],[264.469 5 1],[264.807 26 1],[265.171 40 1],[266.024 5 1],[266.979 26 1],[267.117 3 1],[267.324 8 1],[268.66 26 1],[268.941 5 1],[270.119 3 1],[272.421 26 1],[273.007 5 1],[273.388 5 1],[274.823 50 1],[274.984 16 1],[275.781 12 1],[276.197 16 1],[276.61 5 1],[277.699 50 1],[278.824 26 1],[278.98 26 1],[279.332 5 1],[279.45 26 1],[279.941 26 1],[281.694 100 1],[282.027 5 1],[282.904 5 1],[282.942 5 1],[284.619 26 1],[285.242 16 1],[286.637 16 1],[288.119 50 1],[288.374 5 1],[289.975 16 1],[291.465 16 1],[293.109 100 1],[294.095 100 1],[294.225 16 1],[294.98 6 1],[296.838 4 1],[297.085 5 1],[300.127 20 1],[301.204 16 1],[302.037 3 1],[306.098 3 1],[306.66 20 1],[308.087 5 1],[309.231 20 1],[318.094 16 1],[326.592 160 1],[326.713 160 1],[327.163 100 1],[332.943 20 1],[336.856 160 1],[355.98 20 1],[356.511 20 1],[365.107 3 1],[368.01 3 1],[368.764 3 1],[369.948 20 1],[373.254 3 1],[373.434 20 1],[375.14 3 1],[378.542 70 1],[380.51 100 1],[387.016 3 1],[387.6143 30 0],[388.8608 16 0],[389.698 200 1],[390.693 70 1],[392.558 100 1],[395.95 70 1],[396.519 100 1],[397.8 30 1],[404.718 70 1],[405.396 40 1],[406.796 100 1],[406.877 100 1],[407.336 14 1],[411.929 12 1],[412.121 100 1],[413.2 20 1],[415.127 70 1],[415.861 70 1],[419.32 12 1],[421.313 100 1],[422.112 40 1],[423.219 100 1],[423.441 70 1],[424.197 20 1],[427.174 20 1],[427.71 400 1],[428.835 200 1],[429.2 40 1],[430.064 100 1],[430.794 10 1],[432.758 10 1],[433.024 70 1],[436.328 400 1],[437.302 100 1],[438.443 80 1],[438.876 20 1],[439.691 40 1],[439.95 70 1],[440.385 70 1],[440.525 200 1],[441.021 70 1],[442.405 20 1],[443.571 70 1],[444.4 20 1],[445.344 40 1],[445.768 40 1],[445.918 40 1],[449.366 20 1],[450.152 200 1],[450.671 40 1],[450.683 20 1],[451.55 20 1],[452.285 30 1],[452.672 200 1],[453.894 160 1],[455.5276 80 0],[456.698 30 1],[457.179 30 1],[459.3169 40 0],[460.376 500 1],[460.999 20 1],[461.613 30 1],[462.309 70 1],[464.651 100 1],[465.654 30 1],[467.028 70 1],[469.561 20 1],[470.179 100 1],[473.298 70 1],[473.966 70 1],[474.913 20 1],[476.362 100 1],[478.636 40 1],[483.016 160 1],[487.002 160 1],[495.284 160 1],[497.259 100 1],[504.38 160 1],[505.27 100 1],[505.987 100 1],[508.177 20 1],[509.66 80 1],[522.7 300 1],[524.937 160 1],[527.404 80 1],[530.661 70 1],[534.916 70 1],[537.097 160 1],[541.969 100 1],[546.5944 1 0],[550.2884 1 0],[556.302 200 1],[563.5212 2.2 0],[566.4018 6 0],[574.5724 1.6 0],[581.418 70 1],[583.116 100 1],[583.8835 1 0],[584.5141 6 0],[592.565 100 1],[601.049 16 0],[603.4089 6 0],[612.862 80 1],[621.31 24 0],[621.7599 3 0],[635.4555 10 0],[641.954 20 1],[643.1969 3 0],[647.2623 3 0],[649.553 40 1],[653.644 40 1],[658.602 6 0],[658.651 40 0],[662.866 7 0],[672.3284 40 0],[682.4652 20 0],[687.0455 20 0],[695.552 80 1],[697.3297 40 0],[698.3491 7 0],[722.8536 40 0],[727.99 12 0],[727.9957 40 0],[760.8903 30 0],[794.3882 60 0],[799.068 12 0],[801.5724 20 0],[805.335 12 0],[807.892 12 0],[807.9033 70 0],[852.1122 200 0],[876.1415 40 0],[894.346 120 0],[917.2322 70 0],[920.8538 20 0],[1002.4359 70 0],[1012.3414 20 0],[1012.3602 80 0],[1358.831 28 0],[1360.257 3 0],[1375.883 3 0],[1469.493 70 0],[1792.3619 2.4 0],[1792.4211 1.8 0],[1916.2529 5 0],[1916.3199 4 0],[2131.1461 10 0],[2131.2289 9 0],[2576.349 20 0],[2576.4699 18 0],[3942.1219 40 0],[3942.4078 36 0]}{ALLx5000x200x800x5000x40x0x0}{UVx5000x0x800x5000x40x0x0}{VISx500x80x500x0x0x0x0}{IVx200x200x0x0x0x0x0}% \pgfspectra@elt@search{#1}{Ba}{[40.382 1 2],[40.712 0.4 2],[42.012 1.4 2],[42.384 0.8 2],[44.895 1.8 2],[45.696 1.6 2],[55.548 2.8 2],[58.757 2.8 2],[64.727 3.6 2],[65.336 1.8 2],[74.312 3 2],[79.489 8000 3],[92.374 10000 3],[109.741 2.4 2],[111.367 3 2],[111.601 2.2 2],[113.305 2.8 2],[115.176 2.4 2],[117.062 2.4 2],[120.729 2.6 2],[121.892 2.2 2],[122.455 2.4 2],[128.853 2.4 2],[129.918 2.2 2],[130.74 2.2 2],[130.887 2.4 2],[131.572 2.4 2],[133.401 2.4 2],[135.471 2.2 2],[136.953 2.2 2],[141.661 2.2 2],[147.885 2.4 2],[148.672 40 1],[150.401 80 1],[151.068 2.4 2],[151.422 2.4 2],[155.438 60 1],[156.561 2.4 2],[156.612 2.4 2],[157.273 40 1],[157.455 2.4 2],[159.68 2.4 2],[161.095 2.4 2],[161.578 2.4 2],[167.451 20 1],[169.437 80 1],[171.153 2.4 2],[186.174 2.4 2],[188.392 2.4 2],[190.415 20 1],[192.47 100 1],[197.476 2.2 2],[199.954 60 1],[200.13 2 2],[200.84 3 2],[202.245 2.6 2],[202.395 80 1],[203.884 2 2],[207.043 2.4 2],[207.168 2.4 2],[207.6 2 2],[208.135 2.4 2],[213.487 2 2],[215.637 3.2 2],[216.076 2 2],[221.47 100 1],[223.033 4 2],[224.561 160 1],[225.473 200 1],[228.068 6 2],[230.424 280 1],[232.351 7 2],[233.11 12 2],[233.527 400 1],[234.758 38 1],[247.673 5 2],[250.507 5 2],[251.228 8 2],[252.383 8 2],[252.851 12 1],[253.092 5 2],[255.954 10 2],[257.048 5 2],[259.664 1.6 0],[263.478 20 1],[268.189 8 2],[270.263 1.6 0],[274.578 6 2],[277.136 3.6 1],[278.528 3 0],[293.895 5 2],[296.005 5 2],[296.248 6 2],[301.422 4 2],[304.342 6 2],[307.158 20 0],[307.914 8 2],[310.392 6 2],[310.821 2 0],[311.922 6 2],[313.26 1.6 0],[313.572 1.6 0],[313.77 2 0],[315.27 6 2],[315.534 2 0],[315.567 2 0],[315.805 2.4 0],[315.854 2.4 0],[316.56 5 0],[317.369 3 0],[318.316 6 0],[318.396 3 0],[319.391 2 0],[319.517 5 2],[320.37 5 0],[322.163 6 0],[322.219 8 0],[323.504 5 2],[326.196 10 0],[326.234 12 0],[328.15 8 0],[328.165 5 2],[328.177 3 0],[328.679 4 2],[332.28 10 0],[335.68 16 0],[336.818 10 2],[336.968 6 2],[337.708 12 0],[337.739 4 0],[342.032 14 0],[342.101 5 0],[342.148 6 0],[346.374 8 0],[350.111 40 0],[352.497 16 0],[353.135 6 0],[354.466 16 0],[354.768 4 0],[355.245 20 1],[356.773 40 1],[357.628 20 1],[357.762 6 0],[357.967 16 0],[359.657 40 1],[363.064 8 0],[363.683 8 0],[364.918 5 2],[368.847 4 0],[373.575 80 1],[381.669 40 1],[384.28 40 1],[385.476 20 1],[388.933 4 0],[389.178 280 1],[389.265 4 0],[390.991 8 0],[391.473 100 1],[392.685 5 2],[393.572 10 0],[393.787 4 0],[393.967 40 1],[394.951 100 1],[399.306 5 2],[399.34 16 0],[399.566 6 0],[403.626 60 1],[405.371 3.6 2],[408.377 40 1],[408.486 6 0],[413.066 300 1],[413.243 4 0],[416.6 40 1],[421.604 100 1],[426.795 160 1],[428.31 20 0],[428.78 60 1],[429.76 40 1],[430.932 160 1],[432.3 4 0],[432.573 120 1],[432.674 40 1],[432.962 60 1],[435.033 16 0],[440.254 12 0],[440.523 80 1],[443.189 8 0],[448.898 12 0],[449.364 10 0],[450.592 8 0],[450.963 40 1],[452.317 12 0],[452.493 26 1],[455.403 13000 1],[457.385 8 0],[457.964 16 0],[459.975 6 0],[461.992 4 0],[462.833 5 0],[464.41 60 1],[467.362 6 0],[469.162 7 0],[469.744 3 2],[470.043 4 0],[470.894 160 1],[472.644 8 0],[484.346 160 1],[484.714 60 1],[485.084 40 1],[487.765 6 0],[489.997 80 1],[490.29 3 0],[493.409 4000 1],[494.735 1.6 0],[495.715 200 1],[499.781 60 1],[501.3 200 1],[504.955 2 2],[509.754 2 2],[510.225 2.4 2],[513.454 2 2],[515.994 4 0],[526.703 4 0],[536.135 160 1],[539.16 200 1],[542.105 40 1],[542.455 20 0],[542.879 40 1],[548.03 60 1],[551.905 40 0],[553.548 200 0],[562.04 4 0],[568.018 2 0],[577.762 80 0],[578.418 160 1],[580.023 20 0],[580.569 4 0],[582.628 30 0],[585.368 560 1],[590.764 3 0],[597.17 20 0],[598.125 160 1],[599.709 20 0],[599.8 2 2],[599.985 60 1],[601.947 20 0],[606.312 40 0],[610.199 2.6 2],[611.078 60 0],[613.583 80 1],[614.172 4000 1],[634.168 30 0],[637.711 2 2],[637.891 100 1],[638.376 2 2],[645.085 18 0],[648.291 30 0],[649.69 2400 1],[649.876 60 0],[652.617 1.6 2],[652.731 30 0],[659.533 600 0],[665.41 30 0],[667.527 300 0],[669.384 360 0],[676.962 200 1],[686.569 120 0],[686.785 60 0],[687.409 200 1],[705.994 1200 0],[709.549 1.6 2],[712.033 480 0],[719.524 120 0],[722.884 120 0],[728.03 600 0],[739.241 240 0],[741.753 60 0],[745.978 180 0],[748.808 120 0],[763.69 90 0],[764.291 120 0],[767.209 360 0],[778.048 240 0],[783.957 36 0],[790.575 300 0],[791.134 120 0],[821.024 180 0],[830.869 1.6 2],[855.997 360 0],[871.074 20 1],[873.771 20 1],[879.976 60 0],[886.098 60 0],[891.499 90 0],[921.969 60 0],[930.808 60 0],[932.458 60 0],[937.006 300 0],[945.592 60 0],[952.176 1.6 2],[958.937 90 0],[960.888 180 0],[964.572 60 0],[983.037 300 0],[1000.108 180 0],[1003.21 120 0],[1023.323 240 0],[1047.126 60 0],[1079.125 24 0],[1101.269 36 0],[1111.442 30 0],[1130.304 48 0],[1169.745 24 0],[1320.73 24 0],[1381.05 24 0],[1407.79 24 0],[1500.04 24 0],[2071.2 24 0],[2551.5699 30 0],[2922.39 30 0]}{ALLx13000x1200x13000x12x10000x0x0}{UVx10000x40x400x12x10000x0x0}{VISx13000x1200x13000x5x0x0x0}{IVx360x360x20x1.6x0x0x0}% @@ -115,7 +115,7 @@ \pgfspectra@elt@search{#1}{Pb}{[36.74 0.2 4],[37.253 0.2 4],[38.787 0.2 4],[39.438 0.2 4],[42.464 0.5 4],[43.103 0.3 4],[43.66 0.3 4],[43.847 0.2 4],[43.891 0.6 4],[45.345 0.4 4],[46.17 0.3 4],[47.536 0.8 3],[47.835 0.7 3],[49.62 0.3 4],[49.638 1 3],[49.994 1.2 3],[51.507 0.9 3],[52.978 1.4 3],[57.016 2 3],[57.39 0.8 3],[58.452 0.8 3],[64.85 1 3],[65.61 0.9 3],[69.442 0.4 4],[69.62 0.8 4],[70.373 2 4],[70.629 0.4 4],[70.766 0.6 4],[73.085 0.5 4],[74.946 1.2 4],[75.252 1 4],[75.58 1 4],[76.109 1 3],[76.276 0.6 4],[76.587 1 4],[76.745 1.8 4],[76.949 1.8 4],[77.142 1.4 4],[78.279 1.4 4],[78.705 1 4],[79.702 1.5 4],[79.98 0.5 4],[80.207 1.8 3],[80.282 1.2 3],[80.963 1.8 4],[81.232 0.5 4],[81.259 1 3],[81.41 0.8 4],[82.009 0.8 4],[82.207 0.8 3],[82.552 0.5 4],[82.741 1 3],[82.932 0.8 4],[83.26 1.2 3],[84.099 0.8 3],[84.288 0.8 3],[84.594 1.2 3],[84.604 0.2 1],[84.988 0.2 1],[85.198 0.5 4],[85.557 0.3 1],[85.764 1.8 3],[85.902 0.8 3],[86.233 1.6 3],[86.3 0.3 1],[86.397 2 4],[86.71 1 4],[87.044 1.4 3],[87.371 0.6 1],[87.796 0.2 1],[87.996 1.2 3],[88.035 0.7 3],[88.05 0.6 4],[88.39 1.8 4],[88.496 1.4 3],[88.499 1.4 3],[88.837 1.4 4],[88.968 0.8 1],[89.072 1.6 3],[89.44 1.4 4],[89.608 1.2 4],[89.63 0.3 1],[90.851 1.2 3],[91.509 0.8 4],[91.571 1.4 4],[91.79 1.2 3],[91.809 1.2 4],[92.028 1.2 4],[92.066 1.2 4],[92.212 1 3],[92.249 1.2 3],[92.452 0.7 3],[92.644 0.5 1],[92.764 1 3],[93.22 1.4 3],[93.7 0.8 3],[94.074 0.6 4],[94.62 0.8 4],[95.093 0.6 4],[95.285 0.7 3],[95.435 1.2 4],[95.495 0.4 4],[95.528 1 4],[95.876 0.2 1],[96.021 0.2 1],[96.101 0.1 2],[96.438 0.4 4],[96.536 0.3 1],[96.723 1 1],[97.256 0.9 1],[98.217 0.8 1],[98.671 1 1],[98.914 0.6 4],[99.589 1 1],[100.181 0.6 1],[100.542 0.8 4],[101.244 0.8 3],[101.661 1 1],[102.861 1.4 3],[103.05 0.3 2],[103.205 2 3],[104.124 1.6 3],[104.414 1.8 3],[104.89 1.2 2],[104.982 1 1],[105.077 1 1],[105.126 1 4],[105.653 1.5 3],[105.926 0.4 4],[106.066 1 1],[106.558 0.9 1],[106.92 0.4 2],[107.209 1.2 3],[107.47 0.3 2],[107.988 0.7 3],[108.081 1.8 3],[108.417 2 3],[108.886 1 4],[108.994 0.6 3],[109.652 0.9 4],[109.947 0.7 3],[110.394 1 1],[110.479 0.6 4],[110.843 1 1],[110.984 1 1],[111.53 0.6 3],[111.608 2 3],[111.867 0.4 2],[111.957 1 1],[112.133 0.4 4],[112.136 1 1],[113.314 1 1],[113.75 1 4],[113.784 1.8 3],[114.277 0.8 3],[114.493 1.4 3],[114.591 0.4 1],[115.236 0.4 4],[115.788 1.2 4],[116.7 0.4 2],[118.543 1.4 4],[118.995 2 3],[120.363 1 1],[123.12 1 1],[123.35 1.1 4],[124.847 1 4],[125.06 0.4 2],[126.69 0.1 2],[126.755 0.8 3],[129.082 0.8 3],[129.11 1 3],[131.305 2 3],[132.392 0.8 3],[133.165 1 1],[133.52 1 1],[134.306 1.2 3],[134.837 1 1],[138.894 1.6 3],[139.702 0.6 3],[140.026 1.8 3],[140.434 1 3],[143.396 1 1],[144.935 0.3 1],[151.076 0.7 3],[151.242 1 1],[153.571 1.4 3],[155.31 2 2],[161.01 0.1 2],[163.575 0.8 4],[167.153 1 1],[168.215 1 1],[171.123 0.4 2],[172.675 2 1],[174 0.2 0],[176.664 0.2 0],[179.467 0.2 0],[179.667 1 1],[179.839 0.8 3],[180.287 0.2 4],[181.297 0.5 0],[182.205 1 1],[184.3 0.2 4],[186.876 0.4 0],[188.867 0.2 4],[189.319 0.8 3],[189.702 0.2 4],[190.477 1 0],[191.433 0.2 4],[191.974 0.4 4],[192.1471 0.7 1],[195.796 0.5 4],[195.934 1.2 3],[197.244 0.4 0],[197.316 1.6 3],[197.788 0.2 0],[199.16 0.2 0],[199.231 0.2 0],[199.858 0.2 4],[199.883 1 4],[202.202 0.5 0],[204.258 1 3],[204.934 1.2 3],[205.088 0.5 0],[205.328 0.8 0],[207.845 0.8 4],[207.922 1.2 3],[211.1758 0.6 0],[211.5066 1 0],[214.255 1 4],[215.196 0.8 3],[215.401 1.5 3],[216.797 1 4],[217 50 0],[217.558 0.7 0],[217.746 1.2 3],[218.7888 0.7 0],[218.9603 0.8 0],[220.3534 1 1],[223.7425 2 0],[224.686 2 0],[224.689 2.5 0],[225.901 2 4],[227.666 1 4],[230.149 0.8 4],[233.2418 15 0],[235.953 1.6 3],[238.8797 18 0],[239.3792 55 0],[239.9597 14 0],[240.194 32 0],[241.1734 32 0],[241.761 1.6 3],[242.481 1.5 4],[244.3829 15 0],[244.6181 16 0],[247.6378 13 0],[252.669 0.8 1],[257.66 0.8 1],[257.726 8 0],[260.838 0.2 1],[261.3655 50 0],[261.4175 90 0],[262.8262 16 0],[263.4256 0.4 1],[265.7094 1 0],[266.3154 70 0],[269.7541 1 0],[280.1995 2500 0],[282.258 10 0],[282.3189 1400 0],[283.3053 3500 0],[284.0557 0.6 1],[286.424 0.4 3],[286.45 0.4 3],[287.3311 1400 0],[288.73 0.3 1],[291.4442 0.3 1],[294.743 0.2 1],[294.853 0.3 1],[296.646 1.5 0],[297.2991 1.5 0],[297.814 0.4 3],[298.0157 1.5 0],[298.6876 0.4 1],[301.639 1 1],[304.385 1 2],[305.256 0.4 3],[308.908 0.4 2],[310.274 0.4 2],[311.8894 15 0],[313.781 1 2],[317.65 1 2],[322.0528 60 0],[322.117 0.4 3],[322.9613 10 0],[324.0186 40 0],[324.284 0.5 2],[326.2355 20 0],[353.017 0.1 2],[357.2729 3500 0],[358.987 0.7 2],[363.9568 5000 0],[367.1491 2000 0],[368.3462 7000 0],[368.931 0.7 2],[370.602 0.3 2],[371.3982 1 1],[372.869 0.5 2],[373.9935 2500 0],[385.408 1.2 2],[395.192 0.8 2],[396.248 0.4 3],[401.9632 1500 0],[403.116 0.3 2],[404.98 0.4 3],[405.7807 9500 0],[406.2136 1400 0],[409.454 0.3 2],[411.076 0.5 1],[411.335 0.4 1],[412.811 0.2 2],[415.282 1 1],[415.7814 1 0],[416.8033 1000 0],[424.214 0.9 1],[424.492 2 1],[427.266 0.8 2],[429.382 0.7 1],[429.665 0.6 1],[434.0413 20 0],[435.274 1 1],[438.646 2 1],[449.615 1 3],[449.934 0.6 2],[453.46 1.6 3],[457.121 0.7 2],[457.9051 1 1],[458.227 1 1],[459.645 0.1 2],[460.54 0.8 3],[476.112 0.6 2],[479.859 0.4 2],[480.936 0.4 4],[482.686 0.1 2],[485.506 0.2 2],[500.5416 100 0],[500.6572 10 0],[504.258 5 1],[506.512 0.3 2],[507.058 1 1],[507.453 1 1],[507.635 1 0],[508.9484 5 0],[509.001 2 0],[510.7242 1 0],[511.164 1 1],[519.156 0.4 2],[520.1437 200 0],[536.764 1 1],[537.2099 1 1],[552.397 0.5 2],[554.425 1 1],[560.885 2 1],[569.2346 4 0],[577.941 0.3 2],[585.796 0.6 2],[589.5624 20 0],[591.454 0.2 3],[600.1862 200 0],[600.958 0.9 1],[601.1667 50 0],[604.117 0.8 1],[605.9356 50 0],[607.574 4 1],[608.1409 4 1],[611.052 5 0],[615.989 1 1],[623.5266 10 0],[665.099 0.5 4],[666.02 5 1],[675.32 0.4 4],[689.211 1 0],[712.894 0.5 0],[719.36 2 1],[722.8965 2000 0],[730.468 0.5 0],[733.015 0.8 0],[734.6676 1 0],[755.897 1 1],[763.256 1 1],[773.296 0.4 1],[780.9259 2 0],[781.797 0.5 0],[782.901 0.6 0],[789.6737 0.5 0],[815.691 0.2 1],[816.8001 1 0],[819.1886 0.6 0],[821.7711 0.5 0],[825.561 0.8 0],[827.269 4 0],[833.554 0.6 1],[839.568 1 1],[840.9384 2 0],[847.8492 1 0],[853.217 0.8 0],[854.495 0.7 1],[870.99 0.7 1],[871.939 0.5 1],[872.281 0.5 0],[885.7457 1 0],[905.082 1 1],[906.343 1 1],[924.528 0.2 1],[929.3476 0.8 0],[938.435 0.5 0],[938.589 0.5 0],[943.805 1.5 0],[960.4297 1.5 0],[960.873 0.6 0],[967.4351 1.5 0],[1029.0458 20 0],[1043.432 0.5 0],[1049.8965 10 0],[1064.9249 5 0],[1075.941 0.5 0],[1075.974 0.7 0],[1088.6688 1.5 0],[1096.953 4 0],[1105.922 0.6 0],[1133.308 0.3 0],[1147.949 0.2 1],[1148.876 0.2 0],[1162.791 0.5 1],[1256.137 0.1 0]}{ALLx9500x9500x5x2x2x2x0}{UVx7000x7000x2x2x2x2x0}{VISx9500x9500x5x1.2x1.6x0.5x0}{IVx20x20x1x0x0x0x0}% \pgfspectra@elt@search{#1}{Bi}{[35.577 1 4],[36.952 1 4],[42.07 6 3],[42.978 1 4],[43.12 6 3],[43.563 1 4],[48.839 2 4],[49.272 1 4],[56.362 3 4],[59.073 1 2],[67.076 5 2],[67.887 2 4],[68.688 6 4],[70.654 1 4],[73.071 5 4],[73.817 10 4],[77.516 4 2],[79.05 6 3],[79.06 6 3],[79.25 8 3],[80.365 6 2],[82.03 10 3],[82.29 9 3],[82.49 12 3],[84.986 6 4],[85.568 5 4],[86.445 15 4],[87.26 15 3],[87.68 8 3],[88.017 6 4],[91.67 9 3],[92.093 7 2],[92.39 12 3],[92.548 6 2],[92.981 6 4],[94.33 15 3],[96.76 9 3],[96.88 8 3],[98.98 8 3],[103.999 25 2],[104.576 50 2],[105.181 30 2],[105.888 15 1],[108.547 20 1],[109.92 10 1],[110.34 24 3],[112.88 7 3],[113.86 6 3],[113.901 20 2],[113.946 15 4],[113.98 6 3],[114.591 15 2],[114.97 7 3],[116.319 8 1],[116.706 8 1],[122.464 50 2],[122.543 10 1],[123.278 15 1],[124.105 10 1],[126.535 10 1],[128.373 15 1],[130.618 10 1],[131.7 60 3],[132.546 20 1],[132.684 40 2],[132.947 20 1],[134.612 60 2],[135.007 20 1],[137.261 25 1],[137.602 15 1],[139.392 20 1],[142.333 35 2],[142.352 35 2],[143.683 45 1],[144.794 25 1],[145.511 50 1],[146.1 60 2],[146.214 25 1],[148.693 35 1],[150.25 20 1],[152.057 40 1],[153.317 40 1],[153.677 30 1],[153.806 35 1],[156.367 20 1],[157.37 40 1],[159.179 60 1],[160.158 25 1],[160.64 60 2],[160.97 40 1],[161.138 40 1],[165.281 20 1],[169.15 20 2],[174.929 20 1],[177.711 80 1],[178.747 60 1],[179.193 70 1],[182.38 70 1],[183.432 20 2],[186.39 10 2],[190.241 100 1],[191 30 3],[191.212 10 2],[195.453 9000 0],[196.013 7000 0],[198.826 10 2],[198.935 25 1],[202.075 20 2],[202.115 20 2],[202.121 7000 0],[206.17 9000 0],[206.89 45 1],[207.322 10 2],[207.337 14 2],[209.3 30 3],[210.342 15 2],[211.026 4600 0],[213.363 2500 0],[214.34 15 1],[214.346 15 1],[218.69 60 1],[221.355 30 2],[221.4 40 1],[222.825 360 0],[223.061 1700 0],[227.658 340 0],[231.1 100 3],[232.6 100 3],[236.812 16 1],[236.825 12 1],[237.6 100 3],[240.088 190 0],[241.46 75 2],[243.76 10 2],[250.1 10 1],[251.569 25 0],[252.449 70 0],[254.45 20 1],[262.791 700 0],[262.9 100 3],[267.7 100 3],[269.3 12 1],[269.676 280 0],[271.33 20 1],[273.05 140 0],[276.7 100 3],[277.2 100 3],[278.052 360 0],[278.6 100 3],[280.342 15 1],[280.37 11 1],[280.53 12 1],[280.962 140 0],[284.2 100 3],[284.74 30 2],[285.56 80 2],[289.798 4000 0],[292.4 100 3],[293.3 100 3],[293.6 100 3],[293.67 15 1],[293.83 3200 0],[295.04 20 1],[296.34 12 1],[298.903 2800 0],[299.334 700 0],[301.2 100 3],[302.464 2400 0],[303.487 60 0],[304.2 100 3],[306.772 9000 0],[307.666 140 0],[311.5 35 2],[323.9 100 3],[339.721 550 0],[343.083 10 1],[343.123 12 1],[345.1 40 2],[347.38 40 2],[348.55 35 2],[351.085 500 0],[354.08 15 2],[359.611 380 0],[361.34 45 2],[364.3 100 3],[365.42 12 1],[368.2 100 3],[369.532 50 2],[369.568 50 2],[373.4 100 3],[379.25 70 1],[381.11 12 1],[381.58 20 1],[384.58 10 1],[386.39 30 1],[386.8 100 3],[407.91 40 1],[409.72 10 1],[412.153 140 0],[412.186 140 0],[422.46 12 2],[425.94 75 1],[427.2 25 1],[430.17 70 1],[432.78 25 2],[433.98 12 1],[434.05 25 1],[434.2 30 3],[437.94 12 1],[447.68 25 1],[456.084 30 2],[456.154 30 2],[470.53 60 1],[472.252 600 0],[473.03 30 1],[474.97 20 1],[479.74 40 2],[490.82 12 1],[491.66 10 1],[496.97 12 1],[499.36 20 1],[507.93 45 2],[509.16 10 1],[512.43 50 1],[514.43 60 1],[520.15 20 1],[520.92 75 1],[527.03 40 1],[534.7 30 3],[539.78 10 1],[555.235 10 0],[559.941 3 0],[565.52 20 1],[571.92 40 1],[574.255 6 0],[581.83 12 1],[586.02 20 1],[597.3 20 1],[605.91 15 1],[612.8 15 1],[613.482 6 0],[647.573 3 0],[647.624 3 0],[649.77 15 1],[657.72 10 1],[660.02 40 1],[662.34 12 2],[680.86 50 1],[699.112 4 0],[703.3 12 1],[703.615 2 0],[738.1 10 1],[738.1 10 2],[750.233 2 0],[755.1 12 2],[759.8 25 2],[763.7 10 1],[763.7 10 2],[775 10 1],[783.87 3 0],[784.033 2 0],[796.5 20 1],[800.8 40 2],[805 12 1],[807 50 2],[810 20 2],[832.8 15 1],[838.8 15 1],[853.2 30 1],[854.454 2 0],[857.974 1 0],[865.3 25 1],[867.1 15 2],[875.488 2 0],[876.154 3 0],[886.3 25 1],[890.781 2 0],[893.4 20 2],[965.704 2000 0],[982.778 40 0],[1010.45 20 0],[1013.88 15 0],[1030.06 20 0],[1053.619 20 0],[1107.244 50 0],[1155.16 15 0],[1171.037 1500 0],[1199.949 40 0],[1216.508 200 0],[1237.464 10 0],[1269.004 200 0],[1281.78 100 0],[1433.05 200 0],[1600.15 50 0],[2255.16 60 0]}{ALLx9000x9000x100x80x100x15x0}{UVx9000x9000x100x80x100x15x0}{VISx600x600x75x45x100x0x0}{IVx2000x2000x30x50x0x0x0}% \pgfspectra@elt@search{#1}{Po}{[213.902 250 0],[220.38 300 -1],[222.067 300 0],[222.213 200 0],[228.422 200 -1],[234.461 250 0],[242.172 250 0],[242.609 300 0],[245.008 1500 0],[248.394 700 0],[249.053 700 0],[250.218 200 -1],[253.495 300 0],[255.733 300 0],[255.801 1500 0],[256.231 400 -1],[257.88 300 -1],[258.764 400 0],[263.701 200 -1],[264.536 300 0],[266.333 700 -1],[267.167 200 0],[276.192 600 0],[280.026 400 0],[282.411 250 0],[286.601 300 0],[291.931 400 0],[295.892 600 0],[300.321 2500 0],[306.931 450 0],[311.595 200 -1],[318.902 400 0],[324.024 600 0],[328.638 250 0],[332.86 600 0],[348.979 300 -1],[349.365 200 -1],[358.833 400 -1],[367.136 200 -1],[386.193 500 0],[405.198 200 -1],[417.052 1200 0],[423.613 250 -1],[441.558 200 -1],[449.321 800 0],[461.144 350 0],[486.712 200 -1],[487.624 400 0],[494.681 450 -1],[532.323 350 0],[574.485 300 0],[796.262 600 0],[843.387 300 0],[861.826 500 0],[922.787 250 -1]}{ALLx2500x2500x0x0x0x0x700}{UVx2500x2500x0x0x0x0x700}{VISx1200x1200x0x0x0x0x450}{IVx600x600x0x0x0x0x250}% -\pgfspectra@elt@search{#1}{At}{[216.225 8 0],[224.401 10 0]}{ALLx10x10x0x0x0x0x0x0}{UVx10x10x0x0x0x0x0x0}{VISx0x0x0x0x0x0x0}{IVx0x0x0x0x0x0x0} +\pgfspectra@elt@search{#1}{At}{[216.225 8 0],[224.401 10 0]}{ALLx10x10x0x0x0x0x0x0}{UVx10x10x0x0x0x0x0x0}{VISx0x0x0x0x0x0x0}{IVx0x0x0x0x0x0x0}% \pgfspectra@elt@search{#1}{Rn}{[351.46 5 0],[373.989 10 0],[375.365 20 0],[391.72 10 0],[394.172 10 0],[395.236 10 0],[422.606 10 0],[430.776 80 0],[433.578 7 0],[434.96 100 0],[443.505 40 0],[445.925 50 0],[450.848 50 0],[457.772 50 0],[460.938 50 0],[472.176 30 0],[572.258 6 0],[606.192 10 0],[620.075 6 0],[638.045 6 0],[655.749 10 0],[660.643 10 0],[662.723 15 0],[666.96 6 0],[670.428 8 0],[675.181 20 0],[680.679 6 0],[683.695 8 0],[683.757 8 0],[689.116 10 0],[699.89 10 0],[705.542 200 0],[726.811 100 0],[729.1 20 0],[732.098 6 0],[741.904 10 0],[745 300 0],[747.089 8 0],[748.313 8 0],[751.413 8 0],[751.692 8 0],[752.393 6 0],[759.755 6 0],[760.128 8 0],[765.748 10 0],[773.843 10 0],[774.664 20 0],[780.982 100 0],[804.9 20 0],[809.951 100 0],[817.384 6 0],[827.096 100 0],[831.451 8 0],[834.974 6 0],[838.105 10 0],[848.748 10 0],[849.489 10 0],[852.095 20 0],[860.007 100 0],[863.976 10 0],[867.583 15 0],[880.775 10 0],[932.702 50 0],[994.857 6 0],[1010.613 5 0]}{ALLx300x300x0x0x0x0x0}{UVx20x20x0x0x0x0x0}{VISx300x300x0x0x0x0x0}{IVx100x100x0x0x0x0x0}% \pgfspectra@elt@search{#1}{Ra}{[236.973 8 1],[246.055 8 1],[247.55 10 1],[258.661 8 1],[264.373 10 1],[270.896 20 1],[279.521 10 1],[281.376 30 1],[303.344 10 1],[310.18 5 0],[364.955 100 1],[381.442 200 1],[419.409 8 1],[424.472 8 1],[434.064 100 1],[443.627 20 1],[453.311 30 1],[464.129 8 0],[468.228 100 1],[469.928 8 0],[482.591 100 0],[485.607 10 0],[485.941 10 1],[492.753 10 1],[509.756 10 0],[520.593 10 0],[528.328 10 0],[532.029 10 0],[539.98 10 0],[540.023 20 0],[540.681 20 0],[548.213 8 0],[550.198 10 0],[555.357 10 0],[555.585 20 0],[561.666 10 0],[566.081 50 0],[581.363 20 1],[620.03 30 0],[633.69 10 0],[644.62 20 0],[648.732 20 0],[659.334 10 1],[671.932 10 1],[698.022 20 0],[711.85 20 0],[714.121 50 0],[722.516 20 0],[731.027 10 0],[783.812 20 0],[801.97 50 1],[817.731 6 0],[833.507 5 0],[993.221 5 0]}{ALLx200x100x200x0x0x0x0}{UVx100x5x100x0x0x0x0}{VISx200x100x200x0x0x0x0}{IVx50x20x50x0x0x0x0}% \pgfspectra@elt@search{#1}{Ac}{[206.2 20 3],[210 8 1],[250.212 30 3],[255.808 100 3],[262.644 1000 2],[268.29 50 2],[271.25 20 1],[272.623 10 1],[276.018 10 1],[278.156 10 1],[279.083 5 3],[279.39 50 3],[279.759 20 1],[280.676 20 1],[283.347 8 1],[284.716 150 1],[289.52 8 1],[289.682 30 1],[292.302 30 1],[295.255 2000 2],[299.417 200 1],[304.33 500 1],[306.936 200 1],[307.807 100 1],[308.604 100 1],[308.737 100 1],[311.283 200 1],[312.016 100 1],[315.309 500 1],[315.441 600 1],[316.481 200 1],[322.47 20 3],[323.059 300 1],[323.77 150 1],[326.091 500 1],[331.801 100 1],[338.353 200 1],[339.278 2000 2],[341.384 200 1],[341.777 500 1],[348.116 500 1],[348.759 3000 2],[348.953 200 1],[352.924 100 1],[353.463 100 1],[355.499 200 1],[356.559 1000 1],[369.488 100 1],[375.667 300 1],[379.982 200 1],[386.312 2000 1],[391.447 100 1],[406.16 400 1],[408.844 3000 1],[416.84 3000 1],[417.998 100 0],[418.312 20 0],[419.44 20 0],[420.969 300 1],[435.913 300 1],[438.453 20 0],[438.641 1000 1],[439.671 20 0],[441.309 2000 2],[446.273 20 0],[450.72 1000 1],[456.987 3000 2],[460.545 500 1],[471.658 10 0],[472.016 400 1],[481.222 300 1],[494.518 100 1],[495.823 100 1],[496.087 100 1],[519.321 8 2],[544.638 150 1],[573.205 300 1],[575.897 400 1],[591.085 1000 1],[616.475 600 1],[616.783 200 1],[624.283 400 1],[635.986 20 0],[669.127 20 0],[729.04 6 0],[786.61 6 0]}{ALLx3000x100x3000x3000x100x0x0}{UVx3000x0x1000x3000x100x0x0}{VISx3000x100x3000x3000x0x0x0}{IVx6x6x0x0x0x0x0}% diff --git a/graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty index 308c9bcc78..2135d34667 100644 --- a/graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty +++ b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty @@ -7,9 +7,10 @@ % Hugo Gomes @ 21/02/2023 (v2.2.0) % Hugo Gomes @ 25/04/2023 (v3.0.0) % Hugo Gomes @ 27/04/2023 (v3.0.1) +% Hugo Gomes @ 07/07/2024 (v3.0.1a) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e}% -\ProvidesPackage{pgf-spectra}[27/04/2023 pgf-spectra v3.0.1]% +\ProvidesPackage{pgf-spectra}[07/07/2024 pgf-spectra v3.0.1a]% \RequirePackage{tikz}% \DeclareOption{LSE}{\input{pgf-spectra.data.LSE.tex}\xdef\pgfspectra@DATASET{1}}% \DeclareOption{NIST}{\input{pgf-spectra.data.NIST.tex}\xdef\pgfspectra@DATASET{0}}% @@ -640,15 +641,15 @@ precision=1,unit={}% NEW v3.0.0 (for data library) \fi% }% \def\pgfspectra@utils@put@label{\ignorespaces% - \ifx\pgfspectra@elt@chemsym\undefined\def\pgfspectra@elt@chemsym{}\fi% + \ifx\pgfspectra@elt@chemsym\undefined\def\pgfspectra@elt@chemsym{}\else\fi% \pgfspectra@get@label@position% \ifnum\pgfspectra@begin>\pgfspectra@end% \ifcase\pgfspectra@label@position% %west \ifpgfspectra@drawaxis%\ifpgfspectra@axislabel% - \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (-2.5*\@pgfspectra@axis@height-\pgfspectra@width,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};% + \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (-2.5*\@pgfspectra@axis@height-\pgfspectra@width,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};% \else% - \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (-\pgfspectra@width,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};% + \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (-\pgfspectra@width,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};% \fi% \or%north west \ifpgfspectra@drawaxis% @@ -693,9 +694,9 @@ precision=1,unit={}% NEW v3.0.0 (for data library) \ifcase\pgfspectra@label@position% %west \ifpgfspectra@drawaxis% - \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (-2.5*\@pgfspectra@axis@height,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};% + \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (-2.5*\@pgfspectra@axis@height,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};% \else% - \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (0,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};% + \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (0,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};% \fi% \or%north west \ifpgfspectra@drawaxis% diff --git a/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdf b/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdf Binary files differindex e003e00f80..a627994bbf 100644 --- a/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdf +++ b/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdf diff --git a/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex b/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex index 1661670404..4ffb5d4c87 100644 --- a/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex +++ b/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex @@ -20,12 +20,12 @@ \setlength{\parindent}{0pt} \setlength{\oddsidemargin}{0pt} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\version{3.0.1}% +\def\version{3.0.1a}% \def\inversion#1{#1}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage[pdfstartview={ },colorlinks=true, linkcolor=black!50!green, citecolor=gray, urlcolor=teal, hyperindex, plainpages=false,bookmarksopenlevel=1,bookmarksopen=true]{hyperref}% \hypersetup{%Start options on pdf -pdftitle = {Manual for pgf-spectra (v\inversion{3.0.1})},% +pdftitle = {Manual for pgf-spectra (v\inversion{3.0.1a})},% pdfsubject = {Emission and absorption lines of the elements},% pdfkeywords = {Draw the spectrum of elements in a simple way via pgf/TikZ environment. It's possible to draw a desired spectrum, continuous or discrete.},% pdfauthor = {\textcopyright Hugo Gomes},% @@ -80,7 +80,7 @@ pdfproducer = {pdfeTeX-1.\the\pdftexversion\pdftexrevision}, \end{titlepage} \newpage% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\pagestyle{empty}% +\pagestyle{empty}\enlargethispage{\baselineskip}% \pdfbookmark[1]{Table of contents}{pdfContents}% \tableofcontents% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -97,6 +97,18 @@ pdfproducer = {pdfeTeX-1.\the\pdftexversion\pdftexrevision}, \vfill\vfill\vfill\newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{What's new} +\vspace{-32pt}\ \subsection*{}{\normalfont\large\bfseries\raisebox{1.25pt}{$\mathbf{\blacktriangleright}$}\ In version 3.0.1a}% +\addcontentsline{toc}{subsection}{In version 3.0.1a}% +\begin{itemize} +\item Removed lines data outside the range $10\,nm$ -- $4000\,nm$ (H, He, Be, C, Si, Kr, Sn, I) in LSE data file, which generate a package warning, e.g. +«\texttt{Package pgf-spectra Warning: invalid wavelength (4051.1602nm). The wavelength must be lesser or\\ equal to 4000nm (NIR)... on input line 27}». +\item Fixed chemical symbol label width producing incorrect alignment on consecutive lines for the spectrum of some elements, e.g. +\\ \makebox[\linewidth][s]{\hrulefill} +\\ \txtspecstyle[axis,begin=400,end=700,axis step=20,axis ticks=9,\\ axis color=lightgray,axis font color=black,label,width=.88\string\textwidth,height=0.7cm] +\\ \bs{noindent}\bs{pgfspectra}\lp\red{element=Cl}\rp +\\ \bs{noindent}\bs{pgfspectra}\lp\red{element=Rn}\rp +\\ \makebox[\linewidth][s]{\hrulefill} +\end{itemize} \vspace{-32pt}\ \subsection*{}{\normalfont\large\bfseries\raisebox{1.25pt}{$\mathbf{\blacktriangleright}$}\ In version 3.0.1}% \addcontentsline{toc}{subsection}{In version 3.0.1}% \begin{itemize} @@ -242,7 +254,7 @@ with the following specific keys% \pgfspectraplotshade[options]{name} \\ [10pt]According to the information on the page the listed lines are based on "Line Spectra of the Ele\-ments", Joseph Reader and Charles H. Corliss CRC Handbook of Chemistry and Physics. This book refers that «The table contains the outstanding spectral lines of neutral ($I$) and singly ionized ($II$) atoms of the elements from hydrogen through plutonium ($Z=1-94$); selected strong lines from doubly ionized ($III$), triply ionized ($IV$), and quadruply ionized ($V$) atoms are also included.» \\ [6pt]\makebox[66pt][s]{}\begin{minipage}{\linewidth-66pt}\color{black!70}\small Note: pst-spectra documentation refers "\textit{Line Spectra of the Elements from the Astronomical Data Center of NASA}" as the source material, but I'm assuming the original source is "\textit{Line Spectra of the Ele\-ments}"\textit{, Joseph Reader and Charles H. Corliss CRC Handbook of Chemistry and Physics}, obtained from \href{http://cdsarc.u-strasbg.fr/viz-bin/Cat?VI/16}{http://cdsarc.u-strasbg.fr/viz-bin/Cat?VI/16}.\end{minipage} \\ [12pt]\tikz{\node[text width=\linewidth-4mm,draw=purple,rounded corners=2pt,fill=black!10!purple!10,inner sep=2mm,text justified] {To use this data set load the package \pack{} with the option \verb|LSE| (acronym to Line Spectra of the Elements):% - \\ [6pt]\large\color{purple}\verb|\usepackage[LSE]{pgf-spectra}|\\ [6pt]\small\color{orange}\hfill Number of lines provided: 46065 (see file pgf-spectraDataLSE.pdf)};} + \\ [6pt]\large\color{purple}\verb|\usepackage[LSE]{pgf-spectra}|\\ [6pt]\small\color{orange}\hfill Number of lines provided: 46031 (see file pgf-spectraDataLSE.pdf)};} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Data based on NIST} \tikz{\node[text width=\linewidth-4mm,draw=teal,rounded corners=2pt,fill=black!10,inner sep=2mm,text centered] {This set was obtained from \href{https://physics.nist.gov/PhysRefData/Handbook/Tables/findinglist.htm}{https://physics.nist.gov/PhysRefData/Handbook/Tables/findinglist.htm}};} @@ -2318,7 +2330,7 @@ colorbar horizontal,colormap access=map] \\ \header \\ [-1pt]\linhaimpar{\hyperlink{optionlib:backcolor}{back color}}{background color of the table header, of the \textit{element(s)} column, of the table border lines and of the lines between rows}{color}{black!10}{any named color or user defined color}% \\ [-1pt]\linhapar{\hyperlink{optionlib:databackcolor}{data back color}}{the background color of each data row}{color}{white}{any named color or user defined color}% -\\ [-1pt]\linhaimpar{\hyperlink{optionlib:elementscolumnwidth}{elements column width}}{the width of the \textit{element(s)} column}{length}{2.5em}{up to maximum \TeX\ dimension (16384pt)}% +\\ [-1pt]\linhaimpar{\hyperlink{optionlib:elementscolumnwidth}{elements column\vskip0pt width}}{the width of the \textit{element(s)} column}{length}{2.5em}{up to maximum \TeX\ dimension (16384pt)}% \\ [-1pt]\linhapar{\hyperlink{optionlib:textcolor}{text color}}{the color of all text in the table}{color}{black}{any named color or user defined color}% \\ [-1pt]\linhaimpar{\hyperlink{optionlib:title}{title}}{the title in the table header}{text}{<REDSHIFTED>\\ SPECTRAL LINES OF ELEMENT(S) \ldots}{}% \\ [-1pt]\linhapar{\hyperlink{optionlib:width}{width}}{the total width of the table}{length}{\textbackslash linewidth}{up to maximum \TeX\ dimension (16384pt)}% diff --git a/graphics/pgf/contrib/pgfplotsthemebeamer/DEPENDS.txt b/graphics/pgf/contrib/pgfplotsthemebeamer/DEPENDS.txt new file mode 100644 index 0000000000..1c4fa2d593 --- /dev/null +++ b/graphics/pgf/contrib/pgfplotsthemebeamer/DEPENDS.txt @@ -0,0 +1,3 @@ +hard beamer +hard tools +hard pgfplots
\ No newline at end of file diff --git a/graphics/pgf/contrib/pgfplotsthemebeamer/README.md b/graphics/pgf/contrib/pgfplotsthemebeamer/README.md new file mode 100644 index 0000000000..47c815caaf --- /dev/null +++ b/graphics/pgf/contrib/pgfplotsthemebeamer/README.md @@ -0,0 +1,39 @@ +# pgfplotsthemebeamer + +[![License](https://img.shields.io/github/license/samcarter/pgfplotsthemebeamer.svg?color=blue)](http://www.latex-project.org/lppl.txt) +[![GitHub tag](https://img.shields.io/github/tag/samcarter/pgfplotsthemebeamer.svg?label=current%20version&color=blue)](https://github.com/samcarter/pgfplotsthemebeamer/releases/latest) +[![CTAN](https://img.shields.io/ctan/v/pgfplotsthemebeamer.svg?color=blue)](https://ctan.org/pkg/pgfplotsthemebeamer) + +A package for using colours from the current beamer theme in pgfplots diagrams. + +This project is licensed under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt . + +The project repository, including a bug tracker, can be found at https://github.com/samcarter/pgfplotsthemebeamer/issues . + +### Usage + +```latex +\documentclass{beamer} + +\usetheme{moloch}% just as an example for a colour theme +\usepackage{pgfplotsthemebeamer} + +\begin{document} + +\begin{frame}[plain] +\centering +\begin{tikzpicture} + \begin{axis}[ + beamercolors + ] + \addplot {x}; \addplot {x-1}; \addplot {x-2}; + \addplot {x-3}; \addplot {x-4}; \addplot {x-5}; + \addplot {x-6}; \addplot {x-7}; \addplot {x-8}; + \end{axis} +\end{tikzpicture} +\end{frame} + +\end{document} +``` + +For more details, please consult the [package documentation](https://github.com/samcarter/pgfplotsthemebeamer/blob/main/DOCUMENTATION.pdf). diff --git a/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer-doc-settings.sty b/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer-doc-settings.sty new file mode 100644 index 0000000000..cd57229fcf --- /dev/null +++ b/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer-doc-settings.sty @@ -0,0 +1,200 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Personal helper theme for package documentations +% Copyright samcarter +% +% This file may be distributed and/or modified +% under the LaTeX Project Public License 1.3c or later +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Usage: +% ln ~/Life/latex/beamertheme-sam/themesam.sty package-doc-settings.sty +% \usepackage[ +% themecolor=samdblue +% ]{\jobname-settings} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Colours +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\RequirePackage{xcolor} +\definecolor{samyellow}{RGB}{246,193,65} +\definecolor{samorange}{RGB}{241,147,45}% pgfplotsthemebeamer +\definecolor{samred}{RGB}{191,26,46}% TikZbricks +\definecolor{sammagenta}{RGB}{170,42,104}% TikZmarmots +\definecolor{samviolet}{RGB}{136,46,114}% TikZlings +\definecolor{samlila}{RGB}{101,67,159}% Rainbow beamer theme +\definecolor{samdblue}{RGB}{0,51,134}% beamer theme +\definecolor{samlblue}{RGB}{22,89,155}% TikZducks +\definecolor{samteal}{RGB}{25,143,157}% Tcolorbox beamer theme +\definecolor{samlgreen}{RGB}{68,170,153}% Jigsaw +\definecolor{samdgreen}{RGB}{78,178,125} +\definecolor{samlgray}{RGB}{160,160,185} +\definecolor{samdgray}{RGB}{60,60,85} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Package options +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\RequirePackage{xkeyval} +\DeclareOptionX{themecolor}[samdblue]{\colorlet{themecolor}{#1}} +\DeclareOptionX{listingcolor}[samlblue]{\colorlet{listingcolor}{#1}} +\ExecuteOptionsX{themecolor,listingcolor} +\ProcessOptionsX + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Packages +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@ifclassloaded{beamer}{}{% + \RequirePackage[english]{babel} + \RequirePackage[paper=a4paper,margin=2.9cm]{geometry} + \RequirePackage{scrlayer-scrpage} + \let\hrulefillx\hrulefill + \RequirePackage[bitstream-charter]{mathdesign} + \let\hrulefill\hrulefillx + \RequirePackage[hang,flushmargin,bottom]{footmisc} + \RequirePackage{footnotehyper} + \makesavenoteenv{tcolorbox} + \RequirePackage[all]{nowidow} + \RequirePackage[colorlinks=true,breaklinks=true,allcolors=themecolor,hyperfootnotes=false]{hyperref} +} +\RequirePackage[T1]{fontenc} +\RequirePackage{xspace} +\RequirePackage{inconsolata}% mono font with bold, but italic is missing +% \RequirePackage[scale=0.85]{cascadia-code} +% \AddToHook{cmd/ttfamily/before}{\fontseries{sl}} +\RequirePackage{iexec} +\usepackage{synthslant}% to fake slented comments in inconsolata + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Listings +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\RequirePackage[ + cachedir=$TMPDIR/minted/ +]{minted} + +% smuggling custom pygmentize style in cache folder +% (a real pygmentise style would need installtion in some python folder) +\begin{filecontents*}[noheader,overwrite]{./sam.pygstyle} +\makeatletter +\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax% + \let\PYG@ul=\relax \let\PYG@tc=\relax% + \let\PYG@bc=\relax \let\PYG@ff=\relax} +\def\PYG@tok#1{\csname PYG@tok@#1\endcsname} +\def\PYG@toks#1+{\ifx\relax#1\empty\else% + \PYG@tok{#1}\expandafter\PYG@toks\fi} +\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{% + \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}} +\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}} + +% optional arguments +\expandafter\def\csname PYG@tok@na\endcsname{\def\PYG@tc##1{\textcolor{black}{##1}}} + +% macros +\expandafter\def\csname PYG@tok@k\endcsname{\def\PYG@tc##1{\textcolor{listingcolor}{\bfseries ##1}}} +% curly brakets +\expandafter\def\csname PYG@tok@nb\endcsname{\def\PYG@tc##1{\textcolor{listingcolor}{\bfseries ##1}}} + +% comments (italics won't work with the inconsolata font) +\expandafter\def\csname PYG@tok@c\endcsname{\def\PYG@tc##1{\textcolor{gray}{\textsynthslant{##1}}}} + +\def\PYGZbs{\char`\\} +\def\PYGZus{\char`\_} +\def\PYGZob{\char`\{} +\def\PYGZcb{\char`\}} +\def\PYGZca{\char`\^} +\def\PYGZam{\char`\&} +\def\PYGZlt{\char`\<} +\def\PYGZgt{\char`\>} +\def\PYGZsh{\char`\#} +\def\PYGZpc{\char`\%} +\def\PYGZdl{\char`\$} +\def\PYGZhy{\char`\-} +\def\PYGZsq{\char`\'} +\def\PYGZdq{\char`\"} +\def\PYGZti{\char`\~} +% for compatibility with earlier versions +\def\PYGZat{@} +\def\PYGZlb{[} +\def\PYGZrb{]} +\makeatother +\end{filecontents*} + +\iexec{mkdir -p $TMPDIR/minted && mv sam.pygstyle $TMPDIR/minted/.} + +\usemintedstyle{sam} +\setminted{ + breaksymbolleft={}, + tabsize=2, + breaklines=true, +} +\newminted[samcode]{latex}{} +\newmintinline[saminline]{latex}{} + +% use non-bold and all coloured for inline code in articles +\ifdefined\insertaspectratio\else + \patchcmd{\minted@inputpyg@inline}{\minted@input}{\color{listingcolor}\renewcommand\textcolor[3][]{##3}\renewcommand\bfseries{}\minted@input}{}{} +\fi + +\RequirePackage[most]{tcolorbox} +\tcbuselibrary{minted} +\tcbset{% + colframe=themecolor, + fonttitle=\bfseries, + sidebyside, + center lower, + righthand width=5.7cm, + bottom=2pt, + top=2pt, + left=3pt, + right=3pt, + sidebyside gap=10pt, + lower separated=false, + listing engine=minted, + minted language=latex, + colback=themecolor!10, + sharp corners, + boxrule=0pt, + before title={\strut} +} + +% avoid page breaks right in front of the tcolorbox +\@ifclassloaded{beamer}{}{ + \tcbuselibrary{hooks} + \tcbset{before pre={\nopagebreak[4]}} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% document settings +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@ifclassloaded{scrartcl}{% + \KOMAoptions{parskip=half} + \addtokomafont{sectioning}{\color{themecolor}} + \addtokomafont{date}{\normalsize} + \addtokomafont{author}{\normalsize} + \setlength{\footnotemargin}{0.7em} +}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Custom macros +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\providecommand*{\CTAN}{\textsc{CTAN}\xspace} +\providecommand*{\TikZ}{Ti\emph{k}Z\xspace} +\providecommand*{\miktex}{MiK\TeX\xspace} +\providecommand*{\texlive}{\TeX{}Live\xspace} +\providecommand*{\tikzbrick}{Ti\emph{k}Zbrick\xspace} +\providecommand*{\tikzducks}{Ti\emph{k}Zducks\xspace} +\providecommand*{\tikzlings}{Ti\emph{k}Zlings\xspace} +\providecommand*{\tikzmarmots}{Ti\emph{k}Zmarmots\xspace} +\providecommand*{\ConTeXt}{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt}
\ No newline at end of file diff --git a/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer-doc.pdf b/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer-doc.pdf Binary files differnew file mode 100644 index 0000000000..a312a05245 --- /dev/null +++ b/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer-doc.pdf diff --git a/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer-doc.tex b/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer-doc.tex new file mode 100644 index 0000000000..3beb6c99b6 --- /dev/null +++ b/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer-doc.tex @@ -0,0 +1,119 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Documentation for the pgfplotsthemebeamer package +% Using colours from the current beamer theme in pgfplots +% Maintained by samcarter +% +% Project repository and bug tracker: +% https://github.com/samcarter/pgfplotstheme-beamer +% +% Released under the LaTeX Project Public License v1.3c or later +% See http://www.latex-project.org/lppl.txt +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% !TeX program = txs:///arara +% arara: latexmk: { +% arara: --> engine: pdflatex, +% arara: --> options: [ +% arara: --> '-shell-escape', +% arara: --> '-synctex=1', +% arara: --> '-interaction=nonstopmode', +% arara: --> ] +% arara: --> } +\documentclass{scrartcl} + +% meta %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\title{The pgfplotsthemebeamer package} +\subtitle{Using colours from the current beamer theme in pgfplots} +\author{% + \texorpdfstring{ + \texttt{samcarter}\\ + \url{https://github.com/samcarter/pgfplotsthemebeamer}\\ + \url{https://ctan.org/pkg/pgfplotsthemebeamer} + }{samcarter}} +\date{Version v0.2 \textendash{} 2024/08/02} + +\usepackage[ + themecolor=samorange +]{\jobname-settings} + +% customisation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\prefix}{./include} +\tcbset{ + compilable listing/.style={listing file={\prefix/\jobname-listing-\thetcblistingcount.tex}}, + run pdflatex/.style={run@system@command={cd\space \prefix;\space pdflatex}{\jobname-listing-\thetcblistingcount.tex}},% +} + +\begin{document} +\maketitle + +\section{Introduction} +\label{intro} + +Beamer themes often use carefully composed colour schemes. The \saminline|pgfplotsthemebeamer| package allows to reuse these colours in diagrams created with \saminline|pfgplots|. This ensures a consistent colour scheme throughout the presentation and avoids unsightly colour clashes. + +The package is included in \TeX{}Live +%and MiK\TeX\ +and available from \textsc{CTAN} (\url{https://www.ctan.org/pkg/pgfplotsthemebeamer}). +The development version of this package is located at \url{https://github.com/samcarter/pgfplotsthemebeamer}. If you have any problems, ideas or other feedback, please make constructive use of the issue tracker. + +Copyright \raisebox{0.2em}{\tiny\fontfamily{cmr}\selectfont\textcopyright} \texttt{samcarter}. Permission is granted to copy, distribute and\slash or modify this software under the terms of the LaTeX project public licence, version 1.3c or later \url{http://www.latex-project.org/lppl.txt}. + +\section{Usage} + +The basic usage is fairly simple. After loading the \saminline|pgfplotsthemebeamer| package, plots can use the \saminline|beamercolor| option to use the colours from the current beamer theme in the diagram: +\begin{tcolorbox}[title={Usage}] +\begin{samcode} +\usepackage{pgfplotsthemebeamer} + +\begin{axis}[ + beamercolors +] +... +\end{axis} +\end{samcode} +\end{tcolorbox} +The graphs will be coloured in the beamer colours \saminline|structure|, \saminline|alerted text| and \saminline|example text|. In most beamer themes, these three colours form an easily distinguishable set of colours. + +Users who would like to use the \saminline|beamercolors| scheme for all \saminline|pgfplots| diagrams in the presentation, can load the package with the \saminline|all| option, which will make this colour scheme the default. +\begin{tcolorbox}[title={Usage}] +\begin{samcode} +\usepackage[all]{pgfplotsthemebeamer} +\end{samcode} +\end{tcolorbox} + +\section{Full example} +\begin{tcblisting}{ + listing only, + freeze pdf, + compilable listing, + run pdflatex, + title={Basic example}, + righthand width=0pt +} +\documentclass{beamer} + +\usetheme{moloch}% just as an example for a colour theme +\usepackage{pgfplotsthemebeamer} + +\begin{document} + +\begin{frame}[plain] +\centering +\begin{tikzpicture} + \begin{axis}[ + beamercolors + ] + \addplot {x}; \addplot {x-1}; \addplot {x-2}; \addplot {x-3}; \addplot {x-4}; \addplot {x-5}; \addplot {x-6}; \addplot {x-7}; \addplot {x-8}; + \end{axis} +\end{tikzpicture} +\end{frame} + +\end{document} +\end{tcblisting} +\vfill +\centering +\setlength{\fboxsep}{0pt}% +\fbox{\includegraphics[width=.75\textwidth]{pgfplotsthemebeamer-doc-listing-1.pdf}}% + +\end{document} diff --git a/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer.sty b/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer.sty new file mode 100644 index 0000000000..23006e89c5 --- /dev/null +++ b/graphics/pgf/contrib/pgfplotsthemebeamer/pgfplotsthemebeamer.sty @@ -0,0 +1,37 @@ +% !TeX root = ./testing/test.tex +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% The pgfplotsthemebeamer package +% Using colours from the current beamer theme in pgfplots +% Maintained by samcarter +% +% Project repository and bug tracker: +% https://github.com/samcarter/pgfplotstheme-beamer +% +% Released under the LaTeX Project Public License v1.3c or later +% See http://www.latex-project.org/lppl.txt +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ProvidesPackage{pgfplotsthemebeamer}[2024/08/02 version v0.2 PGFplots colours based the colours of the current beamer theme] + +% error if used with a class other than beamer +\IfClassLoadedF{beamer}{% + \PackageError{pgfplotsthemebeamer}{This pgfplots theme needs to be used in conjunction with the beamer class}{} +} + +% setting up colours +\RequirePackage{pgfplots} +\pgfplotsset{ + beamercolors/.style={ + cycle multi list={ + mark=*\\mark=x\\mark=square*\\mark=o\\mark=+\\mark=square\\\nextlist + structure.fg\\alerted text.fg\\example text.fg\\ + } + } +} + +% making beamercolors default if package is loaded with `all` option +\DeclareOption{all}{ + \pgfplotsset{beamercolors} +} +\ProcessOptions\relax diff --git a/graphics/pgf/contrib/polyomino/README.md b/graphics/pgf/contrib/polyomino/README.md new file mode 100644 index 0000000000..7f3c8023ad --- /dev/null +++ b/graphics/pgf/contrib/polyomino/README.md @@ -0,0 +1,25 @@ +# `polyomino` + +## Polyominoes using Ti*k*Z and LaTeX3 + +Version 1.0 (2024/08/01) + +This package is based on the package [Ti*k*Z](https://ctan.org/pkg/pgf) and can be used to draw polyominoes. It is possible to define custom styles, pics and grids. + +%% README.md +%% Copyright 2024 Matthias Floré +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Matthias Floré. +% +% This work consists of the files polyomino.pdf, polyomino.sty, +% polyomino.tex and README.md.
\ No newline at end of file diff --git a/graphics/pgf/contrib/polyomino/polyomino.pdf b/graphics/pgf/contrib/polyomino/polyomino.pdf Binary files differnew file mode 100644 index 0000000000..597c00c4db --- /dev/null +++ b/graphics/pgf/contrib/polyomino/polyomino.pdf diff --git a/graphics/pgf/contrib/polyomino/polyomino.sty b/graphics/pgf/contrib/polyomino/polyomino.sty new file mode 100644 index 0000000000..7a85590118 --- /dev/null +++ b/graphics/pgf/contrib/polyomino/polyomino.sty @@ -0,0 +1,286 @@ +%% polyomino.sty +%% Copyright 2024 Matthias Floré +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Matthias Floré. +% +% This work consists of the files polyomino.pdf, polyomino.sty, +% polyomino.tex and README.md. +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{tikz} +\ProvidesExplPackage{polyomino}{2024/08/01}{1.0}{Polyominoes using TikZ and LaTeX3} + +%%> \subsection{Variables and variants} + +\bool_new:N \l__polyomino_grid_bool +\bool_new:N \l__polyomino_pic_bool + +\int_new:N \l__polyomino_col_int +\int_new:N \l__polyomino_dir_int +\int_new:N \l__polyomino_max_int +\int_new:N \l__polyomino_row_int +\int_new:N \l__polyomino_x_int +\int_new:N \l__polyomino_y_int + +\seq_new:N \l__polyomino_add_seq +\seq_new:N \l__polyomino_cols_seq + +\tl_new:N \l__polyomino_path_tl +\tl_new:N \l__polyomino_pic_tl + +\cs_generate_variant:Nn \tl_map_inline:nn { en } + +%%> \subsection{Pgfkeys} + +\pgfkeys + { + / polyomino /. is~family , + / polyomino /. search~also = / polyomino / p_2 , + / polyomino , + at /. initial = { ( 0 , 0 ) } , + empty~cell /. initial = . , + grid /. code = \bool_set:Nn \l__polyomino_grid_bool { \cs:w c_#1_bool \cs_end: } , + grid /. default = true , + grid = false , + grid~style /. style = { grid_style /. style = {#1} } , + grid_style /. style = {} , + row~sep /. initial = { , } , + } + +\pgfkeys + {%a separate key family so that the second argument of the key p only accepts keys which apply to a separate polyomino + / polyomino / p_2 /. is~family , + / polyomino / p_2 , + connected /. code = \bool_set_false:N \l__polyomino_pic_bool , + connected /. value~forbidden , + discrete /. code = \bool_set_true:N \l__polyomino_pic_bool , + discrete /. value~forbidden , + p /. style~2~args = { #1__style /. style = {#2} } ,%2 underscores to avoid the same name as for example the key style_style + pic /. code = + { + \bool_set_true:N \l__polyomino_pic_bool + \tl_set:Nn \l__polyomino_pic_tl {#1} + } , + style /. style = { style_style /. style = {#1} } , + style_style /. style = {} , + } + +%%> \subsection{The command \textbackslash polyomino} + +\NewDocumentCommand \polyomino { O {} m } + { + {%note the double braces {{...}} so that the contents is in a group and in particular, \pgfkeys is applied locally + \pgfkeys { / polyomino , #1 } + \int_zero:N \l__polyomino_col_int + \int_set:Nn \l__polyomino_row_int { 1 } + \seq_clear:N \l__polyomino_cols_seq + \tl_map_inline:en {#2} + %it is convenient that this ignores spaces in #2 + %e argument specifier for the case that #2 is given by a command or contains a command + { + \tl_if_eq:neTF {##1} { \pgfkeysvalueof { / polyomino / row~sep } } + { + \seq_put_right:NV \l__polyomino_cols_seq \l__polyomino_col_int + \int_incr:N \l__polyomino_row_int + \int_zero:N \l__polyomino_col_int + } + { + \int_incr:N \l__polyomino_col_int + \tl_clear_new:c { l__polyomino_\int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int _tl } + \tl_if_eq:neF {##1} { \pgfkeysvalueof { / polyomino / empty~cell } } + { \tl_set:cn { l__polyomino_\int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int _tl } {##1} } + \tl_gclear_new:c { g__polyomino_\int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int _tl } + } + } + \seq_put_right:NV \l__polyomino_cols_seq \l__polyomino_col_int + \int_set:Nn \l__polyomino_max_int { \fp_eval:n { max ( \seq_use:Nn \l__polyomino_cols_seq { , } ) } } + \seq_map_indexed_inline:Nn \l__polyomino_cols_seq + { + \tl_clear_new:c { l__polyomino_##1_0_tl } + \int_step_inline:nnn { ##2 + 1 } { \l__polyomino_max_int + 1 } + { \tl_clear_new:c { l__polyomino_##1_####1_tl } } + } + \int_step_inline:nnn { 0 } { \l__polyomino_max_int + 1 } + { + \tl_clear_new:c { l__polyomino_0_##1_tl } + \tl_clear_new:c { l__polyomino_\int_eval:n { \l__polyomino_row_int + 1 }_##1_tl } + } + \pgfkeys + { + / tikz , + shift /. expanded = { \pgfkeysvalueof { / polyomino / at } } , + shift = { ( 0 , \seq_count:N \l__polyomino_cols_seq ) } + } + \seq_map_indexed_inline:Nn \l__polyomino_cols_seq + { + \int_step_inline:nn {##2} + { + \tl_if_empty:cF { l__polyomino_##1_####1_tl } + { + {%note the double braces {{...}} so that \pgfkeys is applied locally + \pgfkeys { / polyomino / p_2 , \cs:w l__polyomino_##1_####1_tl \cs_end: __style } + \bool_if:NTF \l__polyomino_pic_bool + { \pic [ / polyomino / p_2 / style_style ] at ( ####1 - 0.5 , 0.5 - ##1 ) { code = { \l__polyomino_pic_tl } } ; } + { + \seq_clear:N \l__polyomino_add_seq + \tl_if_eq:ccF { l__polyomino_##1_####1_tl } { l__polyomino_##1_\int_eval:n { ####1 - 1 }_tl } + { + \tl_if_empty:cT { g__polyomino_##1_####1_tl } + { + \int_set:Nn \l__polyomino_dir_int { 1 } + \int_set:Nn \l__polyomino_col_int {####1} + \int_set:Nn \l__polyomino_row_int {##1} + \int_set:Nn \l__polyomino_x_int {####1} + \int_set:Nn \l__polyomino_y_int { 1 - ##1 } + \tl_build_begin:N \l__polyomino_path_tl + \fp_do_until:nn { ####1 - 1 = \l__polyomino_x_int && 1 - ##1 = \l__polyomino_y_int } + { + %concerning \tl_build_put_right:Ne \l__polyomino_path_tl, + %for example (0,0)--(0,1)--(0,2) results in a larger file size than (0,0)--(0,2) + \tl_if_eq:ccTF + { l__polyomino_##1_####1_tl } + { + l__polyomino + _\int_eval:n + { \l__polyomino_row_int + \clist_item:nn { 0 , 1 , 0 , -1 } { \l__polyomino_dir_int } } + _\int_eval:n + { \l__polyomino_col_int + \clist_item:nn { 1 , 0 , -1 , 0 } { \l__polyomino_dir_int } } + _tl + } + { + \tl_if_eq:ccTF + { l__polyomino_##1_####1_tl } + { + l__polyomino + _\int_eval:n + { \l__polyomino_row_int + \clist_item:nn { -1 , 1 , 1 , -1 } { \l__polyomino_dir_int } } + _\int_eval:n + { \l__polyomino_col_int + \clist_item:nn { 1 , 1 , -1 , -1 } { \l__polyomino_dir_int } } + _tl + } + { + \tl_build_put_right:Ne \l__polyomino_path_tl + { -- ( \int_use:N \l__polyomino_x_int , \int_use:N \l__polyomino_y_int ) } + \int_add:Nn \l__polyomino_row_int + { \clist_item:nn { -1 , 1 , 1 , -1 } { \l__polyomino_dir_int } } + \int_add:Nn \l__polyomino_col_int + { \clist_item:nn { 1 , 1 , -1 , -1 } { \l__polyomino_dir_int } } + \int_compare:nNnTF { \l__polyomino_dir_int } = { 1 } + { \int_set:Nn \l__polyomino_dir_int { 4 } } + { \int_decr:N \l__polyomino_dir_int } + } + { + \int_add:Nn \l__polyomino_row_int + { \clist_item:nn { 0 , 1 , 0 , -1 } { \l__polyomino_dir_int } } + \int_add:Nn \l__polyomino_col_int + { \clist_item:nn { 1 , 0 , -1 , 0 } { \l__polyomino_dir_int } } + } + \tl_if_empty:cTF + { g__polyomino_\int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int _tl } + { + \seq_put_right:Ne \l__polyomino_add_seq + { \int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int } + } + { + \bool_set_true:N \l__polyomino_pic_bool + \int_set:Nn \l__polyomino_x_int { ####1 - 1 } + \int_set:Nn \l__polyomino_y_int { 1 - ##1 } + } + } + { + \tl_build_put_right:Ne \l__polyomino_path_tl + { -- ( \int_use:N \l__polyomino_x_int , \int_use:N \l__polyomino_y_int ) } + \int_compare:nNnTF { \l__polyomino_dir_int } = { 4 } + { \int_set:Nn \l__polyomino_dir_int { 1 } } + { \int_incr:N \l__polyomino_dir_int } + } + \bool_if:NF \l__polyomino_pic_bool + { + \int_add:Nn \l__polyomino_x_int { \clist_item:nn { 1 , 0 , -1 , 0 } { \l__polyomino_dir_int } } + \int_add:Nn \l__polyomino_y_int { \clist_item:nn { 0 , -1 , 0 , 1 } { \l__polyomino_dir_int } } + } + } + \tl_build_end:N \l__polyomino_path_tl + \bool_if:NF \l__polyomino_pic_bool + { \fill [ / polyomino / p_2 / style_style ] ( ####1 - 1 , 1 - ##1 ) \l__polyomino_path_tl -- cycle ; } + } + } + \tl_gset:cn { g__polyomino_##1_####1_tl } { c } + \seq_map_inline:Nn \l__polyomino_add_seq + { \tl_gset:cn { g__polyomino_########1_tl } { c } } + } + } + } + } + } + \bool_if:NT \l__polyomino_grid_bool + { + \int_step_inline:nn { \seq_count:N \l__polyomino_cols_seq - 1 } + { + \int_zero:N \l__polyomino_col_int + \int_zero:N \l__polyomino_x_int + \int_set:Nn \l__polyomino_y_int + { \int_min:nn { \seq_item:Nn \l__polyomino_cols_seq {##1} } { \seq_item:Nn \l__polyomino_cols_seq { ##1 + 1 } } } + \int_while_do:nNnn { \l__polyomino_x_int } < { \l__polyomino_y_int } + { + \bool_do_while:nn + { + \tl_if_eq_p:cc + { l__polyomino_##1_\int_use:N \l__polyomino_x_int _tl } + { l__polyomino_\int_eval:n { ##1 + 1 }_\int_use:N \l__polyomino_x_int _tl } + && + ! \tl_if_empty_p:c { g__polyomino_##1_\int_use:N \l__polyomino_x_int _tl } + && + \int_compare_p:nNn { \l__polyomino_x_int } < { \l__polyomino_y_int + 1 } + } + { \int_incr:N \l__polyomino_x_int } + \int_compare:nNnT { \l__polyomino_x_int } > { \l__polyomino_col_int + 1 } + { + \draw [ / polyomino / grid_style ] + ( \int_use:N \l__polyomino_col_int , -##1 ) -- ( \int_use:N \l__polyomino_x_int - 1 , -##1 ) ; + } + \int_set_eq:NN \l__polyomino_col_int \l__polyomino_x_int + } + } + \int_set:Nn \l__polyomino_x_int { \seq_count:N \l__polyomino_cols_seq } + \int_step_inline:nn { \l__polyomino_max_int - 1 } + { + \int_zero:N \l__polyomino_row_int + \int_zero:N \l__polyomino_y_int + \int_while_do:nNnn { \l__polyomino_y_int } < { \l__polyomino_x_int } + { + \bool_do_while:nn + { + \tl_if_eq_p:cc + { l__polyomino_\int_use:N \l__polyomino_y_int _##1_tl } + { l__polyomino_\int_use:N \l__polyomino_y_int _\int_eval:n { ##1 + 1 }_tl } + && + ! \tl_if_empty_p:c { g__polyomino_\int_use:N \l__polyomino_y_int _##1_tl } + && + \int_compare_p:nNn { \l__polyomino_y_int } < { \l__polyomino_x_int + 1 } + && + \int_compare_p:nNn {##1} < { \seq_item:Nn \l__polyomino_cols_seq { \l__polyomino_y_int } + 0 } + } + { \int_incr:N \l__polyomino_y_int } + \int_compare:nNnT { \l__polyomino_y_int } > { \l__polyomino_row_int + 1 } + { + \draw [ / polyomino / grid_style ] + ( ##1 , -\int_use:N \l__polyomino_row_int ) -- ( ##1 , 1 - \int_use:N \l__polyomino_y_int ) ; + } + \int_set_eq:NN \l__polyomino_row_int \l__polyomino_y_int + } + } + } + } + } + +\endinput
\ No newline at end of file diff --git a/graphics/pgf/contrib/polyomino/polyomino.tex b/graphics/pgf/contrib/polyomino/polyomino.tex new file mode 100644 index 0000000000..c512cec895 --- /dev/null +++ b/graphics/pgf/contrib/polyomino/polyomino.tex @@ -0,0 +1,278 @@ +%% polyomino.tex +%% Copyright 2024 Matthias Floré +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Matthias Floré. +% +% This work consists of the files polyomino.pdf, polyomino.sty, +% polyomino.tex and README.md. +\documentclass[a4paper,english,dvipsnames]{ltxdoc} +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage[a4paper,left=2.25cm,right=2.25cm,top=2.5cm,bottom=2.5cm,nohead]{geometry} +\usepackage{parskip} +\usepackage{iftex} +\ifluatex +\else +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\fi +\usepackage{mathtools} +\usepackage{amssymb} +\allowdisplaybreaks +\usepackage{pdflscape} +\usepackage{polyomino} +\input{pgfmanual-en-macros.tex} +\usepackage{codehigh} +\usepackage{fancyhdr} +\pagestyle{fancy} +\renewcommand{\headrulewidth}{0pt} +\fancyhead{} +\ExplSyntaxOn +\NewExpandableDocumentCommand \repeatnumber {} + { \prg_replicate:nn { \thepage } { * } } +\ExplSyntaxOff +\fancyfoot[C]{\IfRefUndefinedExpandable{Thesourcecode}{}{\begin{tikzpicture}[scale=0.9] +\polyomino[ + grid, + p={*}{style={teal,draw=black}} +]{\repeatnumber} +\end{tikzpicture}}} +\usepackage[nottoc]{tocbibind} +\usepackage{imakeidx} +\makeindex[program=makeindex,columns=2,intoc=true] +\indexsetup{othercode={\thispagestyle{fancy}}} +\AtEndPreamble{\hypersetup{% +linktoc=all, +pdfstartview=FitH, +colorlinks=true, +linkcolor=Mahogany, +citecolor=ForestGreen, +urlcolor=MidnightBlue, +bookmarksnumbered=true, +pdftitle={The polyomino package}, +pdfauthor={Matthias Floré}, +pdfsubject={Manual}, +pdfkeywords={polyomino}}} +\setcounter{tocdepth}{2} +\setcounter{secnumdepth}{2} +\title{The \texttt{polyomino} package\\[12pt]\large Polyominoes using \tikzname{} and \LaTeX3} +\author{Matthias Floré} +\date{Version 1.0 (2024/08/01)}%\\[12pt] +\begin{document} +\maketitle +\thispagestyle{fancy} +\begin{abstract} +\noindent This package is based on the package |tikz| (see \cite{TtTaPGFp}) and can be used to draw polyominoes. It is possible to define custom styles, pics and grids.% This is the manual for version . +\end{abstract} +\tableofcontents +\section{Usage} +The package |polyomino| can be used by putting the following in the preamble. +\begin{codeexample}[code only] +\usepackage{polyomino} +\end{codeexample} +The package |polyomino| loads the package |tikz|. +\section{The command \textbackslash polyomino} +\begin{command}{\polyomino\opt{\oarg{options}}\marg{polyomino specification}} +This command can be placed inside a |tikzpicture| environment. The \meta{polyomino specification} is a token list. Spaces in this list are ignored. With the initial settings, a |,| starts a new row. Otherwise each element in this list corresponds to a cell. An element can consist of multiple characters by surrounding it with braces. The \meta{options} can be given with the keys described in Section \ref{Keys}. +\begin{codeexample}[width=8cm] +\pgfkeys{ + /polyomino, + p={F}{style={blue,draw=black,ultra thick}}, + p={I}{style={brown,draw=black,ultra thick}}, + p={L}{style={cyan,draw=black,ultra thick}}, + p={N}{style={gray,draw=black,ultra thick}}, + p={P}{style={lime,draw=black,ultra thick}}, + p={T}{style={magenta,draw=black,ultra thick}}, + p={U}{style={olive,draw=black,ultra thick}}, + p={V}{style={orange,draw=black,ultra thick}}, + p={W}{style={pink,draw=black,ultra thick}}, + p={X}{style={purple,draw=black,ultra thick}}, + p={Y}{style={red,draw=black,ultra thick}}, + p={Z}{style={teal,draw=black,ultra thick}} +} +\begin{tikzpicture} +\polyomino[ + grid +]{ + UUUVVV, + UXUZZV, + XXXFZV, + IXFFZZ, + ILLFFT, + ILNTTT, + ILNWWT, + ILNNWW, + PPPNYW, + PPYYYY +} +\end{tikzpicture} +\end{codeexample} +The algorithm constructs the border of each polyomino. It does not consider holes determined by empty cells. Although it does detect a cell inside a polyomino which has a different style. This is illustrated in the example below. +\begin{codeexample}[width=10cm] +\begin{tikzpicture}[scale=0.8] +\polyomino[ + p={a}{style={gray,draw=black,thick}} +]{ + aaaaa, + a.a.a, + aaaaa +} +\polyomino[ + at={(0,-4)}, + p={a}{style={gray,draw=black,thick}}, + p={*}{style={white,draw=black,thick}} +]{ + aaaaa, + a*a*a, + aaaaa +} +\end{tikzpicture} +\end{codeexample} +\end{command} +\section{Keys}\label{Keys} +The keys in this Section can be given as \meta{options} to the command |\polyomino|. + +There are two key families: |/polyomino| and |/polyomino/p_2|. The key family |/polyomino| is intended for usage in documents whereas |/polyomino/p_2| is not. In the key family |/polyomino|, also keys from the key family |/polyomino/p_2| will be looked up. The second argument from the key |p| only accepts keys from the key family |/polyomino/p_2|. +\begin{key}{/polyomino/at=\marg{point} (initially (0,0))} +This key defines the bottom left coordinate of the polyomino. +\end{key} +\begin{key}{/polyomino/p\_2/connected} +This key sets the |pic| type (which is activated by the key |pic|) to false. This is the initial setting. +\end{key} +\begin{key}{/polyomino/p\_2/discrete} +This key sets the |pic| type (which is activated by the key |pic|) to true. +\end{key} +\begin{key}{/polyomino/empty cell=\marg{token list} (initially .)} +A cell corresponding to the \meta{token list} in the \meta{polyomino specification} will be left empty. + +A cell corresponding to the empty token list will always be left empty. +\end{key} +\begin{key}{/polyomino/grid=\opt{\meta{boolean}} (default true, initially false)} +If true then a grid is drawn. The grid does not apply to borders of polyominoes. The style of this grid is determined by the key |grid style|. A grid does not apply to a cell with a |pic|. +\end{key} +\begin{stylekey}{/polyomino/grid style=\marg{options} (initially \normalfont empty)} +This key determines the style of the grid. +\begin{codeexample}[width=6.5cm] +\begin{tikzpicture}[rotate=90] +\polyomino[ + grid, + grid style={gray,dash pattern=on 3mm off 4mm on 3mm off 0mm}, + p={L}{style={darkgray,draw=black}}, + p={P}{style={green,draw=black}}, + p={T}{style={violet,draw=black}}, + p={V}{style={yellow,draw=black}} +]{ + LTVVV, + LTTTV, + LTPPV, + LLPPP +} +\end{tikzpicture} +\end{codeexample} +\end{stylekey} +\begin{stylekey}{/polyomino/p\_2/p=\marg{name}\marg{options} (initially \normalfont empty)} +This key determines the style of the polyomino with \meta{name} in the \meta{polyomino specification}. + +The \meta{options} only accept keys from the key family |/polyomino/p_2|. + +In the example below, the polyominoes have the same shape but are differentiated by using different names. +\begin{codeexample}[width=10cm] +\begin{tikzpicture} +\pgfkeys{ + /polyomino, + p={a}{}, + p={b}{}, + style={fill=none,draw} +} +\def\example{ + aa, + ab, + ab, + bb +} +\polyomino{\example} +\polyomino[ + at={(2,0)} +]{\example} +\end{tikzpicture} +\end{codeexample} +\end{stylekey} +\begin{key}{/polyomino/p\_2/pic=\marg{code}} +The \meta{code} defines the |pic| which is used for each cell of the polyomino. + +A grid does not apply to a cell with a |pic|. +\begin{codeexample}[width=7cm] +\begin{tikzpicture} +\polyomino[ + empty cell=*, + grid, + p={a}{style={red,draw=black}}, + p={b}{style={blue,draw=black}}, + p={c}{style={orange,draw=black}}, + p={circle}{pic={\fill[green] (0,0) circle[radius=0.4];}}, + row sep=; +]{ + {} * * b {} c ; + a a b b {circle} c ; + {circle} a a b c c +} +\end{tikzpicture} +\end{codeexample} +\begin{codeexample}[width=5cm] +\begin{tikzpicture} +\polyomino[ + p={circle}{ + pic={\path[pic actions] (0,0) circle[radius=0.45];}, + style={right color=cyan,left color=red,draw,dashed} + }, + p={L}{ + pic={ + \fill[yellow!80!black] (-0.5,-0.5) rectangle +(1,1); + \fill[yellow!50,rounded corners] (-0.4,-0.4) rectangle +(0.8,0.8); + } + }, + p={square}{ + pic={\path[pic actions] (-0.45,-0.45) rectangle +(0.9,0.9);}, + style={fill=magenta,draw,rounded corners} + } +]{ + L {circle} {square} {square} , + L {circle} {circle} {square} , + L L {circle} {circle} +} +\end{tikzpicture} +\end{codeexample} +\end{key} +\begin{key}{/polyomino/row sep=\marg{token list} (initially ,)} +The \meta{token list} in the \meta{polyomino specification} will start a new row. +\end{key} +\begin{stylekey}{/polyomino/p\_2/style=\marg{options} (initially \normalfont empty)} +This key determines the style of the polyomino. +\end{stylekey} +\begin{thebibliography}{9} +\bibitem{TtTaPGFp} +Till Tantau, +\emph{The \tikzname{} and {\upshape\pgfname} Packages}, +Manual for version 3.1.10, +\url{https://ctan.org/pkg/pgf}, +2023. +\end{thebibliography} +\printindex +\newgeometry{left=2.25cm,right=2.25cm,top=2.25cm,bottom=2.25cm} +\pagestyle{plain} +\appendix +\begin{landscape} +\section{The source code}\label{Thesourcecode} +\dochighinput[language=latex/latex3]{polyomino.sty} +\end{landscape} +\end{document}
\ No newline at end of file diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf Binary files differindex 6ef7f59476..029671719e 100644 --- a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf +++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex index 88e9abb16a..d89c17bff4 100644 --- a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex +++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex @@ -29,8 +29,8 @@ \hypersetup{pdfborder=0 0 0} \usepackage[margin=2cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.5} -\def\TPdate{22/06/2024} +\def\TPversion{0.1.6} +\def\TPdate{13/07/2024} \usepackage{soul} \usepackage{codehigh} \usepackage{tabularray} @@ -532,7 +532,7 @@ The mandatory arguments correspond to the x-coordinates (in \TikZ\ language) and \subsection{Draw a line}\label{tracstraight} -The idea is to propose a command to draw a line, from: +The idea is to propose a command to draw a line (or an asymptote), from: \begin{itemize} \item of two points (or nodes); @@ -542,6 +542,7 @@ The idea is to propose a command to draw a line, from: \begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} %in the GraphiqueTikz environment \DrawLine[keys]{point or node}{point or node or slope} +\DrawAsymptote[keys]{x value} \end{tcblisting} The optional \MontreCode{[keys]} available are: @@ -564,6 +565,7 @@ The optional \MontreCode{[keys]} available are: \DrawLine[Color=red]{(-2,-1)}{(2,4)} \DrawLine[Color=blue,Start=-5,End=3]{(A)}{(B)} \DrawLine[Color=olive,Slope]{(C)}{0.25} + \DrawAsymptote[Color=brown]{-6} \end{GraphTikz} \end{tcblisting} @@ -1396,7 +1398,7 @@ The last mandatory argument is the work point (abscissa version or node followin \section{Commands specific to two-variable statistics} -\subsection{The point cloud}\label{scatter} +\subsection{The point scatter}\label{scatter} In addition to commands linked to functions, it is also possible to represent double statistical series. @@ -1490,7 +1492,7 @@ In partnership with the \MontreCode{xint-regression} package, loaded by the pack The command, similar to that of defining a curve, is: \begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} -\DrawRegression[keys]<no fct>{type}<rounded>{listex}{listey} +\DrawRegression[keys]<name fct>{type}<rounded>{listex}{listey} \end{tcblisting} The \MontreCode{[keys]} available are, classically: @@ -1651,53 +1653,30 @@ $\begin{cases} \gamma \approx \RoundNb[0]{\Cgamma} \end{cases}$. \end{tcblisting} -% -%\newpage -% -%\section{Liste des commandes} -% -%Les commandes disponibles sont : -% -%\NewDocumentCommand\lstcmd{ m m m }{% -% \item[\texttt{#1}] : \mintinline{latex}|#2|\hfill{}page \pageref{#3} -%} -% -%\begin{description} -% \lstcmd{environnement~~}{\begin{GraphiqueTikz}...\end{GraphiqueTikz}}{creaenvt} -% \lstcmd{axes et grilles}{\TracerAxesGrille}{creaaxesgr} -% \lstcmd{aj val axes X~~}{\RajouterValeursAxeX}{ajoutvals} -% \lstcmd{aj val axes Y~~}{\RajouterValeursAxeY}{ajoutvals} -% \lstcmd{def fonction~~~}{\DefineCurve}{deftracfct} -% \lstcmd{tracé courbe~~~}{\DrawCurve}{deftracfct} -% \lstcmd{def interpo~~~~}{\DefineCurveInterpo}{deftracinterpo} -% \lstcmd{tracé interpo~~}{\DrawCurveInterpo}{deftracinterpo} -% \lstcmd{def spline~~~~~}{\DefineSplineCurve}{deftracfctspline} -% \lstcmd{tracé spline~~~}{\DrawSplineCurve}{deftracfctspline} -% \lstcmd{tracé droite~~~}{\TracerDroite}{tracdroite} -% \lstcmd{def points~~~~~}{\DefinirPts}{defpts} -% \lstcmd{def image~~~~~~}{\DefinirImage}{defpts} -% \lstcmd{marq pts~~~~~~~}{\MarquerPts}{markpts} -% \lstcmd{placer txt~~~~~}{\PlacerTexte}{placetxt} -% \lstcmd{récup absc~~~~~}{\RecupererAbscisse}{recupcoordo} -% \lstcmd{récup ordo~~~~~}{\RecupererOrdonnee}{recupcoordo} -% \lstcmd{récup coordos~~}{\RecupererCoordonnees}{recupcoordo} -% \lstcmd{images~~~~~~~~~}{\PlacerImages}{images} -% \lstcmd{antécédents~~~~}{\TrouverAntecedents}{defanteced} -% \lstcmd{antécédents~~~~}{\PlacerAntecedents}{tracanteced} -% \lstcmd{intersection~~~}{\TrouverIntersections}{intersect} -% \lstcmd{maximum~~~~~~~~}{\TrouverMaximum}{maximum} -% \lstcmd{minimum~~~~~~~~}{\TrouverMinimum}{minimum} -% \lstcmd{intégrale~~~~~~}{\DrawIntegral}{integr} -% \lstcmd{tangente~~~~~~~}{\DrawTangente}{tgte} -% \lstcmd{loi normale~~~~}{\DefinirLoiNormale}{loinormale} -% \lstcmd{loi normale~~~~}{\TracerLoiNormale}{loinormale} -% \lstcmd{loi khideux~~~~}{\DefinirLoiKhiDeux}{loikhideux} -% \lstcmd{loi khideux~~~~}{\TracerLoiKhiDeux}{loikhideux} -% \lstcmd{stats 2 var~~~~}{\TracerNuage}{nuage} -% \lstcmd{regressions~~~~}{\TracerAjustement}{regressions} -% \lstcmd{arrondi~~~~~~~~}{\RoundNb}{numarrond} -% \lstcmd{nb aléat~~~~~~~}{\ChoisirNbAlea}{nbalea} -%\end{description} + +\subsection{Monte-Carle method} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%in the GraphiqueTikz environment +\SimulateMonteCarlo[keys]<function>}{number of points}[\nbptsmcok][\nbptsmcko] +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\begin{GraphTikz}% + [x=10cm,y=10cm,Xmin=0,Xmax=1,Xgrid=0.1,Xgrids=0.05, + Ymin=0,Ymax=1,Ygrid=0.1,Ygrids=0.05] + \DrawAxisGrids[Enlarge=2.5mm,Last]{auto}{auto} + \DefineCurve[Trace,Color=teal,Step=0.001]<f>{sqrt(1-x^2)} + \SimulateMonteCarlo<f>{5000} +\end{GraphTikz} + +There is \textcolor{blue}{\num{\nbptsmcok}} blue points, +there is \textcolor{red}{\num{\nbptsmcko}} red points. + +And $\frac{\num{\nbptsmcok}}{\num{\nbptsmc}} +\approx \RoundNb[4]{\nbptsmcok/\nbptsmc}$ +et $\frac{\pi}{4} \approx \RoundNb[4]{pi/4}$. +\end{tcblisting} \pagebreak @@ -1705,6 +1684,7 @@ $\begin{cases} \begin{quote} \begin{verbatim} +0.1.6 : Vertical asymptote + [in french doc] commands for integrals 0.1.5 : Initial version [en] \end{verbatim} \end{quote} diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf Binary files differindex c53d69179c..ba330fa444 100644 --- a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf +++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex index 9ea6b13200..99d8414cd0 100644 --- a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex +++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex @@ -29,8 +29,8 @@ \hypersetup{pdfborder=0 0 0} \usepackage[margin=2cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.5} -\def\TPdate{22/06/2024} +\def\TPversion{0.1.6} +\def\TPdate{13/07/2024} \usepackage{soul} \usepackage{codehigh} \usepackage{tabularray} @@ -39,7 +39,7 @@ \hl{\vphantom{\texttt{pf}}\texttt{#1}}% } \usepackage[french]{babel} - +\sisetup{group-minimum-digits=4} \renewcommand{\footnoterule}{\vfill\kern -3pt \hrule width 0.4\columnwidth \kern 2.6pt} \begin{document} @@ -209,7 +209,8 @@ Il sera ensuite possible : \item de tracer des courbes ; \item de déterminer graphiquement des images ou des antécédents ; \item de rajouter des éléments de dérivation (tangentes) ou d'intégration (domaine) ; - \item de tracer une droite d'ajustement linéaire ou la courbe d'un autre ajustement. + \item de tracer une droite d'ajustement linéaire ou la courbe d'un autre ajustement ; + \item \dots \end{itemize} \subsection{Packages utilisés, et options du package} @@ -332,10 +333,11 @@ Concernant les styles des \textit{objets}, ils sont donnés ci-dessous. \tikzset{pflgrilles/.style={very thin,lightgray}} \tikzset{pflaxes/.style={line width=0.8pt,->,>=latex}} -%style des points (courbe / nuage /labels) +%style des points (courbe / nuage /labels /montecarlo) \tikzset{pflpoint/.style={line width=0.95pt}} \tikzset{pflpointc/.style={radius=1.75pt}} \tikzset{pflpointnuage/.style={radius=1.75pt}} +\tikzset{pflpointmc/.style={radius=0.875pt}} \tikzset{pflnoeud/.style={}} %pour les inner sep par exemple :-) %style des courbes @@ -544,9 +546,12 @@ L'idée est de proposer une commande pour tracer une droite, à partir : \item d'un point (ou nœud) et de la pente. \end{itemize} +Il existe également une commande pour une asymptote verticale. + \begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} %dans l'environnement GraphiqueTikz \TracerDroite[clés]{point ou nœud}{point ou noeud ou pente} +\TracerAsymptote[clés]{abscisse} \end{tcblisting} Les \MontreCode{[clés]}, optionnelles, disponibles sont : @@ -569,6 +574,7 @@ Les \MontreCode{[clés]}, optionnelles, disponibles sont : \TracerDroite[Couleur=red]{(-2,-1)}{(2,4)} \TracerDroite[Couleur=blue,Debut=-5,Fin=3]{(A)}{(B)} \TracerDroite[Couleur=olive,Pente]{(C)}{0.25} + \TracerAsymptote[Couleur=brown]{-6} \end{GraphiqueTikz} \end{tcblisting} @@ -1415,6 +1421,132 @@ Les \MontreCode{[clés]}, optionnelles, disponibles sont : \pagebreak +\section{Commandes spécifiques des méthodes intégrales} + +\subsection{Méthodes géométriques}\label{methodesintergrales} + +L'idée est de proposer plusieurs méthodes graphiques pour illustrer graphiquement une intégrale, via : + +\begin{itemize} + \item une méthode des rectangles (Gauche, Droite ou Milieu) ; + \item la méthode des trapèzes. +\end{itemize} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%dans l'environnement GraphiqueTikz +\RepresenterMethodeIntegrale[clés]<fonction>{a}{b} +\end{tcblisting} + +Les \MontreCode{Clés} disponibles sont : + +\begin{itemize} + \item \MontreCode{Couleur} : couleur des tracés, \MontreCode{red} par défaut ; + \item \MontreCode{NbSubDiv} : nombre de subdivisions, \MontreCode{10} par défaut ; + \item \MontreCode{Methode} : méthode géométrique utilisée, parmi parmi \MontreCode{RectanglesGauche / RectanglesDroite / RectanglesMilieu / Trapezes} pour spécifier la méthode utilisée, \MontreCode{RectanglesGauche} par défaut ; + \item \MontreCode{Remplir} : booléen, \MontreCode{true} par défaut, pour remplir les éléments graphiques ; + \item \MontreCode{CouleurRemplissage} : couleur de remplissage, définie par rapport à la couleur principale par défaut ; + \item \MontreCode{Opacite} : opacité, \MontreCode{0.25} par défaut, du remplissage. +\end{itemize} + +\smallskip + +Le deuxième argument, optionnel et entre \MontreCode{<...>}, correspond à la fonction \textbf{précédemment définie} ! + +\smallskip + +Les deux derniers arguments, obligatoires, correspondent aux bornes de l'intégrale. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\begin{GraphiqueTikz} + [x=0.66cm,y=0.033cm,Xmin=0,Xmax=21,Xgrille=2,Xgrilles=1, + Ymin=0,Ymax=160,Ygrille=20,Ygrilles=10] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} + \DefinirCourbe[Couleur=red,Nom=cf,Debut=1,Fin=20,Trace]<f>{80*x*exp(-0.2*x)} + \RepresenterMethodeIntegrale[Couleur=teal]<f>{5}{15} +\end{GraphiqueTikz} +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\begin{GraphiqueTikz} + [x=0.66cm,y=0.033cm,Xmin=0,Xmax=21,Xgrille=2,Xgrilles=1, + Ymin=0,Ymax=160,Ygrille=20,Ygrilles=10] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} + \DefinirCourbe[Couleur=red,Nom=cf,Debut=1,Fin=20,Trace]<f>{80*x*exp(-0.2*x)} + \RepresenterMethodeIntegrale + [Methode=RectanglesDroite,Couleur=orange,NbSubDiv=7]<f>{1}{10} +\end{GraphiqueTikz} +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\begin{GraphiqueTikz} + [x=0.66cm,y=0.033cm,Xmin=0,Xmax=21,Xgrille=2,Xgrilles=1, + Ymin=0,Ymax=160,Ygrille=20,Ygrilles=10] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} + \DefinirCourbe[Couleur=red,Nom=cf,Debut=1,Fin=20,Trace]<f>{80*x*exp(-0.2*x)} + \RepresenterMethodeIntegrale + [Methode=RectanglesMilieu,Couleur=yellow,NbSubDiv=25]<f>{1}{20} +\end{GraphiqueTikz} +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\begin{GraphiqueTikz} + [x=0.66cm,y=0.033cm,Xmin=0,Xmax=21,Xgrille=2,Xgrilles=1, + Ymin=0,Ymax=160,Ygrille=20,Ygrilles=10] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} + \DefinirCourbe[Couleur=red,Nom=cf,Debut=1,Fin=20,Trace]<f>{80*x*exp(-0.2*x)} + \RepresenterMethodeIntegrale + [Methode=Trapezes,Couleur=pink,Remplir=false]<f>{1}{20} +\end{GraphiqueTikz} +\end{tcblisting} + +\subsection{Méthode de Monte-Carlo}\label{montecarlo} + +L'idée est de proposer une commande pour simuler un calcul intégral via la méthode de Monte-Carlo. + +Le code se charge de simuler les \textit{tirages}, et les résultats peuvent être stockés dans des macros. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%dans l'environnement GraphiqueTikz +\SimulerMonteCarlo[clés]<fonction>{nb essais}[\nbptsmcok][\nbptsmcko] +\end{tcblisting} + +Les \MontreCode{Clés} disponibles sont : + +\begin{itemize} + \item \MontreCode{Couleurs} : couleurs des points, \MontreCode{blue/red} par défaut ; + \item \MontreCode{BornesX} : bornes \textit{horizontales} pour la simulation, valant \MontreCode{\textbackslash pflxmin,\textbackslash pflxmax} par défaut ; + \item \MontreCode{BornesY} : bornes \textit{verticales} pour la simulation, valant \MontreCode{\textbackslash pflymin,\textbackslash pflymax} par défaut. +\end{itemize} + +Le deuxième argument, optionnel et entre \MontreCode{<...>}, est la fonction \textbf{précédemment définie} à utiliser. + +\smallskip + +Les deux derniers arguments, optionnels et entre \MontreCode{[...]}, sont les macros dans lesquelles sont stockées les résultats de la simulation. Ces macros sont \MontreCode{\textbackslash nbptsmcok} et \MontreCode{\textbackslash nbptsmcko} par défaut. + +À noter que la macro \MontreCode{\textbackslash nbptsmc} permet de récupérer le nombre de points utilisés. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%avec \sisetup{group-minimum-digits=4} pour le formatage des "milliers" + +\begin{GraphiqueTikz}% + [x=10cm,y=10cm,Xmin=0,Xmax=1,Xgrille=0.1,Xgrilles=0.05, + Ymin=0,Ymax=1,Ygrille=0.1,Ygrilles=0.05] + \TracerAxesGrilles[Elargir=2.5mm,Dernier]{auto}{auto} + \DefinirCourbe[Trace,Couleur=teal,Pas=0.001]<f>{sqrt(1-x^2)} + \SimulerMonteCarlo<f>{5000} +\end{GraphiqueTikz} + +Le nombre de points bleus est de \textcolor{blue}{\num{\nbptsmcok}}, +le nombre de points rouges est de \textcolor{red}{\num{\nbptsmcko}}. + +La proportion de points bleus est de $\frac{\num{\nbptsmcok}}{\num{\nbptsmc}} +\approx \ArrondirNum[4]{\nbptsmcok/\nbptsmc}$ +et $\frac{\pi}{4} \approx \ArrondirNum[4]{pi/4}$. +\end{tcblisting} + +\pagebreak + \section{Commandes spécifiques des statistiques à deux variables} \subsection{Le nuage de points}\label{nuage} @@ -1767,6 +1899,7 @@ Les commandes disponibles sont : \lstcmd{def spline~~~~~}{\DefinirCourbeSpline}{deftracfctspline} \lstcmd{tracé spline~~~}{\TracerCourbeSpline}{deftracfctspline} \lstcmd{tracé droite~~~}{\TracerDroite}{tracdroite} + \lstcmd{asymptote vert~}{\TracerAsymptote}{tracdroite} \lstcmd{def points~~~~~}{\DefinirPts}{defpts} \lstcmd{def image~~~~~~}{\DefinirImage}{defpts} \lstcmd{marq pts~~~~~~~}{\MarquerPts}{markpts} @@ -1781,6 +1914,8 @@ Les commandes disponibles sont : \lstcmd{maximum~~~~~~~~}{\TrouverMaximum}{maximum} \lstcmd{minimum~~~~~~~~}{\TrouverMinimum}{minimum} \lstcmd{intégrale~~~~~~}{\TracerIntegrale}{integr} + \lstcmd{méthodes int~~~}{\RepresenterMethodeIntegrale}{methodesintergrales} + \lstcmd{Monte-Carlo~~~~}{\SimulerMonteCarlo}{montecarlo} \lstcmd{tangente~~~~~~~}{\TracerTangente}{tgte} \lstcmd{loi normale~~~~}{\DefinirLoiNormale}{loinormale} \lstcmd{loi normale~~~~}{\TracerLoiNormale}{loinormale} @@ -1798,6 +1933,7 @@ Les commandes disponibles sont : \begin{quote} \begin{verbatim} +0.1.6 : Asymptote verticale + Méthodes intégrales (géom + Monte Carlo) 0.1.5 : Correction d'un bug sur les rajouts de valeurs + Nœud pour une image + [en] version ! 0.1.4 : Placement de texte 0.1.3 : Ajout de régressions avec le package xint-regression diff --git a/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty b/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty index 3de4286c8e..ce321f6d4b 100644 --- a/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty +++ b/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty @@ -2,9 +2,10 @@ % licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{tkz-grapheur}[2024/06/22 0.1.5.Des outils en TikZ pour travailler comme avec un grapheur] +\ProvidesPackage{tkz-grapheur}[2024/07/13 0.1.6.Des outils en TikZ pour travailler comme avec un grapheur] %====HISTORIQUE +% v 0.1.6 Asymptote verticale + Monte Carlo + Méthode intégrales (rectangles, etc) % v 0.1.5 Correction d'un bug avec les valeurs manuelles + Nœud pour une image + [en] version ! % v 0.1.4 Ajout des placements de textes % v 0.1.3 Régressions, avec xintreg (désactivable) @@ -49,7 +50,7 @@ \if@lngenglish \sisetup{mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true} \else - \sisetup{locale=FR,output-decimal-marker={,},mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true} + \sisetup{locale=FR,output-decimal-marker={,},mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true,group-minimum-digits=4} \fi \fi @@ -106,6 +107,7 @@ %====STYLES DE BASE \tikzset{pflnoeud/.style={}} \tikzset{pflpoint/.style={line width=0.95pt}} +\tikzset{pflpointmc/.style={radius=0.875pt}} \tikzset{pflpointc/.style={radius=1.75pt}} \tikzset{pflpointnuage/.style={radius=1.75pt}} \tikzset{pflcadre/.style={line width=0.8pt,gray}} @@ -1012,6 +1014,103 @@ \end{scope} } +%====MONTE CARLO +\defKV[graphiquetikzmontecarlo]{% + Couleurs=\def\graphtikzmccols{#1},% + BornesX=\def\graphtikzmcxbornes{#1},% + BornesY=\def\graphtikzmcybornes{#1} +} + +\setKVdefault[graphiquetikzmontecarlo]{% + Couleurs={blue/red},% + BornesX={\pflxmin,\pflxmax},% + BornesY={\pflymin,\pflymax} +} + +\NewDocumentCommand\SimulerMonteCarlo{ O{} D<>{f} m O{\nbptsmcok} O{\nbptsmcko} }{% + \restoreKV[graphiquetikzmontecarlo]% + \setKV[graphiquetikzmontecarlo]{#1}% + \StrCut{\graphtikzmccols}{/}{\tmpMCcolOK}{\tmpMCcolKO}% + \StrCut{\graphtikzmcxbornes}{,}{\tmpMCxmin}{\tmpMCxmax}% + \StrCut{\graphtikzmcybornes}{,}{\tmpMCymin}{\tmpMCymax}% + \xdef#4{0}% + \xdef#5{0}% + \xdef\nbptsmc{#3}% + \foreach \i in {1,...,#3}{% + \xdef\tmpMCrandX{\xintfloateval{random()*((\tmpMCxmax)-(\tmpMCxmin))+(\tmpMCxmin)}}% + \xdef\tmpMCrandY{\xintfloateval{random()*((\tmpMCymax)-(\tmpMCymin))+(\tmpMCymin)}}% + \xdef\tmpMCrandfX{\xintfloateval{#2(\tmpMCrandX)}}% + \xintifboolexpr{ \tmpMCrandfX > \tmpMCrandY }% + {% + \xdef#4{\xinteval{#4+1}}% + \filldraw[\tmpMCcolOK] (\tmpMCrandX,\tmpMCrandY) circle[pflpointmc] ; + }% + {% + \xdef#5{\xinteval{#5+1}}% + \filldraw[\tmpMCcolKO] (\tmpMCrandX,\tmpMCrandY) circle[pflpointmc] ; + }% + }% +} + +%====MÉTHODES INTÉGRALES + +\defKV[graphiquetikzintegr]{% + Couleur=\def\graphtikzintgrcol{#1},% + CouleurRemplissage=\def\graphtikzintgrcolrempl{#1},% + NbSubDiv=\def\graphtikzintgrnb{#1},% + Methode=\def\graphtikzintgrtype{#1},% + Opacite=\def\graphtikzintgropac{#1} +} + +\setKVdefault[graphiquetikzintegr]{% + Couleur=red,% + NbSubDiv=10,% + Methode=RectanglesGauche,% + Remplir=true,% + CouleurRemplissage={\graphtikzintgrcol!25},% + Opacite=0.25 +} + +\NewDocumentCommand\RepresenterMethodeIntegrale{ O{} D<>{f} m m }{%opts+nom_fct+a+b + \useKVdefault[graphiquetikzintegr]% + \setKV[graphiquetikzintegr]{#1}% + \ifboolKV[graphiquetikzintegr]{Remplir}% + {% + \tikzset{pflfigureintegr/.style={pfltrait,\graphtikzintgrcol,fill=\graphtikzintgrcolrempl,fill opacity=\graphtikzintgropac}}% + }% + {% + \tikzset{pflfigureintegr/.style={pfltrait,\graphtikzintgrcol}}% + }% + \tikzset{figureintegr/.style={pfltrait,\graphtikzintgrcol,fill=\graphtikzintgrcolrempl,fill opacity=\graphtikzintgropac}}% + \def\TmpH{(#4-#3)/\graphtikzintgrnb} + %rectangles gauches + \IfEq{\graphtikzintgrtype}{RectanglesGauche}% + {% + \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}% + \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) ; + }% + {}% + \IfEq{\graphtikzintgrtype}{RectanglesDroite}% + {% + \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}% + \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) ; + }% + {}% + \IfEq{\graphtikzintgrtype}{RectanglesMilieu}% + {% + \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}% + \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+0.5)*\TmpH)}}) ; + }% + {}% + \IfEq{\graphtikzintgrtype}{Trapezes}% + {% + \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}% + \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) -- ({#3+\i*\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{0}) -- cycle ; + }% + {}% +} + + %====INTÉGRALES %v2 avec modification de la clé [Type=...] ? \defKV[GraphiqueTikzIntegr]{% @@ -1961,6 +2060,16 @@ \end{scope} } +%====asymptote +\NewDocumentCommand\TracerAsymptote{ O{} m D<>{} }{% + \restoreKV[GraphiquetikzDroite]% + \setKV[GraphiquetikzDroite]{#1}% + %tracé + \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},#3] ({#2},{\pflymin})--({#2},{\pflymax}) ; +} + + +%====MinMax \defKV[GraphiqueTikzMinMax]{% Pas=\def\pflminmaxstep{#1},% Methode=\def\pflminmaxmethode{#1},% @@ -2117,6 +2226,7 @@ \tikzset{tkzgrphnode/.style={}} \tikzset{tkzgrphpoint/.style={line width=0.95pt}} \tikzset{tkzgrphpointc/.style={radius=1.75pt}} +\tikzset{tkzgrphpointmc/.style={radius=0.875pt}} \tikzset{tkzgrphscatter/.style={radius=1.75pt}} \tikzset{tkzgrphframe/.style={line width=0.8pt,gray}} \tikzset{tkzgrphcurve/.style={line width=1.05pt}} @@ -3898,11 +4008,11 @@ } %====droite -\defKV[GraphiquetikzDroite]{% +\defKV[GraphicTikzLine]{% Name=\def\pfldroitename{#1} } -\setKVdefault[GraphiquetikzDroite]{% +\setKVdefault[GraphicTikzLine]{% Slope=false,% Color=black,% Start={\pflxmin},% @@ -3911,15 +4021,15 @@ } \NewDocumentCommand\DrawLine{ O{} m m D<>{} }{% - \restoreKV[GraphiquetikzDroite]% - \setKV[GraphiquetikzDroite]{#1}% + \restoreKV[GraphicTikzLine]% + \setKV[GraphicTikzLine]{#1}% %1er point \path #2;% \pgfgetlastxy{\macrox}{\macroy}% \xdef\pfldtetikzxA{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}% \xdef\pfldtetikzyA{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}% %2ème point si besoin - \ifboolKV[GraphiquetikzDroite]{Slope}% + \ifboolKV[GraphicTikzLine]{Slope}% {% \xdef\pfldtepente{\xintfloateval{#3}}% }% @@ -3936,24 +4046,33 @@ {% \IfEq{\pfldroitename}{}% {% - \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},#4] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ; + \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},#4] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ; }% {% - \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},#4,name path global=\pfldroitename] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ; + \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},#4,name path global=\pfldroitename] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ; }% }% {% \IfEq{\pfldroitename}{}% {% - \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},domain={\useKV[GraphiquetikzDroite]{Start}}:{\useKV[GraphiquetikzDroite]{End}},samples=2,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ; + \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},domain={\useKV[GraphicTikzLine]{Start}}:{\useKV[GraphicTikzLine]{End}},samples=2,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ; }% {% - \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},domain={\useKV[GraphiquetikzDroite]{Start}}:{\useKV[GraphiquetikzDroite]{End}},samples=2,name path global=\pfldroitename,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ; + \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},domain={\useKV[GraphicTikzLine]{Start}}:{\useKV[GraphicTikzLine]{End}},samples=2,name path global=\pfldroitename,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ; }% }% \end{scope} } +%====asymptote +\NewDocumentCommand\DrawAsymptote{ O{} m D<>{} }{% + \restoreKV[GraphicTikzLine]% + \setKV[GraphicTikzLine]{#1}% + %tracé + \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},#3] ({#2},{\pflymin})--({#2},{\pflymax}) ; +} + +%====minmax \defKV[GraphicTikzMinMax]{% Pas=\def\pflminmaxstep{#1},% Method=\def\pflminmaxmethode{#1},% @@ -4061,4 +4180,42 @@ \draw #2 node[tkzgrphnode,font=\pflnodefonte,text=\pflnodecol,\pfnodepos] {#3} ; } +%====MONTE CARLO +\defKV[GraphicTikzmontecarlo]{% + Colors=\def\graphtikzmccols{#1},% + BoundsX=\def\graphtikzmcxbornes{#1},% + BoundsY=\def\graphtikzmcybornes{#1} +} + +\setKVdefault[GraphicTikzmontecarlo]{% + Colors={blue/red},% + BoundsX={\pflxmin,\pflxmax},% + BoundsY={\pflymin,\pflymax} +} + +\NewDocumentCommand\SimulateMonteCarlo{ O{} D<>{f} m O{\nbptsmcok} O{\nbptsmcko} }{% + \restoreKV[GraphicTikzmontecarlo]% + \setKV[GraphicTikzmontecarlo]{#1}% + \StrCut{\graphtikzmccols}{/}{\tmpMCcolOK}{\tmpMCcolKO}% + \StrCut{\graphtikzmcxbornes}{,}{\tmpMCxmin}{\tmpMCxmax}% + \StrCut{\graphtikzmcybornes}{,}{\tmpMCymin}{\tmpMCymax}% + \xdef#4{0}% + \xdef#5{0}% + \xdef\nbptsmc{#3}% + \foreach \i in {1,...,#3}{% + \xdef\tmpMCrandX{\xintfloateval{random()*((\tmpMCxmax)-(\tmpMCxmin))+(\tmpMCxmin)}}% + \xdef\tmpMCrandY{\xintfloateval{random()*((\tmpMCymax)-(\tmpMCymin))+(\tmpMCymin)}}% + \xdef\tmpMCrandfX{\xintfloateval{#2(\tmpMCrandX)}}% + \xintifboolexpr{ \tmpMCrandfX > \tmpMCrandY }% + {% + \xdef#4{\xinteval{#4+1}}% + \filldraw[\tmpMCcolOK] (\tmpMCrandX,\tmpMCrandY) circle[tkzgrphpointmc] ; + }% + {% + \xdef#5{\xinteval{#5+1}}% + \filldraw[\tmpMCcolKO] (\tmpMCrandX,\tmpMCrandY) circle[tkzgrphpointmc] ; + }% + }% +} + \endinput
\ No newline at end of file diff --git a/graphics/pgf/contrib/wheelchart/README.md b/graphics/pgf/contrib/wheelchart/README.md index ec414f3440..df9f81a74d 100644 --- a/graphics/pgf/contrib/wheelchart/README.md +++ b/graphics/pgf/contrib/wheelchart/README.md @@ -2,9 +2,11 @@ ## Diagrams with circular or other shapes using Ti*k*Z and LaTeX3 -Version 3.0 (2024/03/08) +Version 4.0 (2024/07/28) -This package is based on the package [Ti*k*Z](https://ctan.org/pkg/pgf) and can be used to draw various kinds of diagrams such as a bar chart, doughnut chart, infographic, pie chart, ring chart, square chart, sunburst chart, waffle chart and wheel chart with Ti*k*Z. It provides several options to customize the diagrams. It is also possible to specify a plot for the shape of the chart. Furthermore a legend can be added and the table of contents can be displayed as one of these diagrams. +This package is based on the package [Ti*k*Z](https://ctan.org/pkg/pgf) and can be used to draw various kinds of diagrams such as bar charts, doughnut charts, infographics, pie charts, ring charts, square charts, sunburst charts, waffle charts and wheel charts. + +It provides several options to customize the diagrams. It is also possible to specify a plot for the shape of the chart. Furthermore a legend can be added and the table of contents can be displayed as one of these diagrams. %% README.md %% Copyright 2022-2024 Matthias Floré diff --git a/graphics/pgf/contrib/wheelchart/wheelchart.pdf b/graphics/pgf/contrib/wheelchart/wheelchart.pdf Binary files differindex 2cfa0dd1be..808551f33c 100644 --- a/graphics/pgf/contrib/wheelchart/wheelchart.pdf +++ b/graphics/pgf/contrib/wheelchart/wheelchart.pdf diff --git a/graphics/pgf/contrib/wheelchart/wheelchart.sty b/graphics/pgf/contrib/wheelchart/wheelchart.sty index e2c8543976..21e232b099 100644 --- a/graphics/pgf/contrib/wheelchart/wheelchart.sty +++ b/graphics/pgf/contrib/wheelchart/wheelchart.sty @@ -18,7 +18,7 @@ \NeedsTeXFormat{LaTeX2e} \RequirePackage{tikz} \usetikzlibrary{calc} -\ProvidesExplPackage{wheelchart}{2024/03/08}{3.0}{Diagrams with circular or other shapes using TikZ and LaTeX3} +\ProvidesExplPackage{wheelchart}{2024/07/28}{4.0}{Diagrams with circular or other shapes using TikZ and LaTeX3} %%> \subsection{Variables} @@ -59,6 +59,8 @@ \fp_const:Nn \c__wheelchart_arc_data_end_factor_left_fp { 1 } \fp_const:Nn \c__wheelchart_arc_data_end_factor_right_fp { 0 } \fp_new:N \l__wheelchart_arc_data_line_sep_factor_fp +\fp_new:N \l__wheelchart_arc_data_lines_pos_fp +\fp_new:N \l__wheelchart_arc_data_lines_shift_fp \fp_new:N \l__wheelchart_arc_data_pos_fp \fp_new:N \l__wheelchart_arc_data_radius_plot_false_fp \fp_new:N \l__wheelchart_arc_data_sep_fp @@ -168,6 +170,9 @@ \int_new:N \l__wheelchart_lines_ext_top_dir_int \int_new:N \l__wheelchart_max_list_items_int +\regex_const:Nn \c__wheelchart_braces_regex { \{(.+)\} } +\regex_const:Nn \c__wheelchart_key_braces_regex { [\w\s]+\{(.+)\} } + \seq_new:N \l__wheelchart_arc_data_seq \seq_new:N \l__wheelchart_discrete_coefficients_first_seq \seq_new:N \l__wheelchart_discrete_coefficients_second_seq @@ -180,8 +185,8 @@ { sign ( \l__wheelchart_arc_data_dir_fp ) * ( - \cs:w c__wheelchart_arc_data_start_factor_\l__wheelchart_arc_data_align_tl _fp\cs_end: - + \cs:w c__wheelchart_arc_data_end_factor_\l__wheelchart_arc_data_align_tl _fp\cs_end: + \cs:w c__wheelchart_arc_data_start_factor_\l__wheelchart_arc_data_align_tl _fp \cs_end: + + \cs:w c__wheelchart_arc_data_end_factor_\l__wheelchart_arc_data_align_tl _fp \cs_end: ) } \tl_new:N \l__wheelchart_arc_data_align_tl @@ -262,7 +267,7 @@ \cs_new_protected:Npn \__wheelchart_caption_and_title:nnnnn #1#2#3#4#5 { - \__wheelchart_if_text:nn {#1} + \__wheelchart_if_text:nnn {#1} { o } { \node [ anchor = #2 , align = #3 , / wheelchart / #1_style ] at ( $ (#4) + ( 0 , { #5 * ( \pgfkeysvalueof { / wheelchart / #1~sep } ) } ) $ ) @@ -282,12 +287,12 @@ { \fp_eval:n { - ( 1 - (#1) ) * \cs:w g__wheelchart_slice_inner_start_angle_\WCcount _fp\cs_end: - + (#1) * \cs:w g__wheelchart_slice_inner_end_angle_\WCcount _fp\cs_end: + ( 1 - (#1) ) * \cs:w g__wheelchart_slice_inner_start_angle_\WCcount _fp \cs_end: + + (#1) * \cs:w g__wheelchart_slice_inner_end_angle_\WCcount _fp \cs_end: + \l__wheelchart_counter_or_clockwise_fp * (#2) } } - { \fp_eval:n { \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: - (#4) } } + { \fp_eval:n { \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: - (#4) } } ) ! { \fp_eval:n {#3} } ! ( @@ -295,12 +300,12 @@ { \fp_eval:n { - ( 1 - (#1) ) * \cs:w g__wheelchart_slice_outer_start_angle_\WCcount _fp\cs_end: - + (#1) * \cs:w g__wheelchart_slice_outer_end_angle_\WCcount _fp\cs_end: + ( 1 - (#1) ) * \cs:w g__wheelchart_slice_outer_start_angle_\WCcount _fp \cs_end: + + (#1) * \cs:w g__wheelchart_slice_outer_end_angle_\WCcount _fp \cs_end: + \l__wheelchart_counter_or_clockwise_fp * (#2) } } - { \fp_eval:n { \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: + (#4) } } + { \fp_eval:n { \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: + (#4) } } ) $%note the () around the #i's to keep these contents together } @@ -374,10 +379,10 @@ \path let \p { l__wheelchart_def_angle_1 } = \__wheelchart_point_plot_true:nnnnn { \WCcount } {#1} {#2} { 0 } - { \fp_eval:n { (#4) + 1 / \cs:w g__wheelchart_samples_\WCcount _fp\cs_end: } } , + { \fp_eval:n { (#4) + 1 / \cs:w g__wheelchart_samples_\WCcount _fp \cs_end: } } , \p { l__wheelchart_def_angle_2 } = \__wheelchart_point_plot_true:nnnnn { \WCcount } {#1} {#2} { 1 } - { \fp_eval:n { (#4) + 1 / \cs:w g__wheelchart_samples_\WCcount _fp\cs_end: } } + { \fp_eval:n { (#4) + 1 / \cs:w g__wheelchart_samples_\WCcount _fp \cs_end: } } in [ / utils / exec = { \__wheelchart_def_angle_aux: } ] ; } @@ -392,10 +397,10 @@ { ( 1 - (#2) ) * ( - \cs:w g__wheelchart_slice_outer_start_angle_#1_fp\cs_end: - - \cs:w g__wheelchart_slice_inner_start_angle_#1_fp\cs_end: + \cs:w g__wheelchart_slice_outer_start_angle_#1_fp \cs_end: + - \cs:w g__wheelchart_slice_inner_start_angle_#1_fp \cs_end: ) - + (#2) * ( \cs:w g__wheelchart_slice_outer_end_angle_#1_fp\cs_end: - \cs:w g__wheelchart_slice_inner_end_angle_#1_fp\cs_end: ) + + (#2) * ( \cs:w g__wheelchart_slice_outer_end_angle_#1_fp \cs_end: - \cs:w g__wheelchart_slice_inner_end_angle_#1_fp \cs_end: ) } \cs_new:Npn \__wheelchart_def_angle_plot_false:nnnnn #1#2#3#4#5 @@ -410,11 +415,11 @@ ( sqrt ( - ( \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: + \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: ) ^ 2 - - \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: * + ( \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: + \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: ) ^ 2 + - \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: * ( 2 + 2 * cosd ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} ) - + \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: + + \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: * ( ( @@ -425,25 +430,25 @@ ) ) ) - + \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: * + + \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: * ( - \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: - - \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: + \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: + - \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: * cosd ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} ) ) / \__wheelchart_def_radius:nnn {#1} {#4} {#5} ) - * \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: * sind ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} ) + * \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: * sind ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} ) / ( - ( \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: + \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: ) ^ 2 - - 2 * \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: + ( \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: + \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: ) ^ 2 + - 2 * \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: * ( 1 + cosd ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} ) ) ) ) } - + ( 1 - (#2) ) * ( \cs:w g__wheelchart_slice_inner_start_angle_#1_fp\cs_end: ) - + (#2) * ( \cs:w g__wheelchart_slice_inner_end_angle_#1_fp\cs_end: ) + + ( 1 - (#2) ) * ( \cs:w g__wheelchart_slice_inner_start_angle_#1_fp \cs_end: ) + + (#2) * ( \cs:w g__wheelchart_slice_inner_end_angle_#1_fp \cs_end: ) + \l__wheelchart_counter_or_clockwise_fp * (#3) } } @@ -451,7 +456,7 @@ \cs_new_protected:Npn \__wheelchart_def_coord:nnnn #1#2#3#4 { \path let \p { l__wheelchart_coord } = - ( \cs:w __wheelchart_#2_plot:nn\cs_end: {#4} { \fp_use:c { g__wheelchart_#2_radius_\WCcount _fp } } ) + ( \cs:w __wheelchart_#2_plot:nn \cs_end: {#4} { \fp_use:c { g__wheelchart_#2_radius_\WCcount _fp } } ) in [ / utils / exec = @@ -484,11 +489,11 @@ < \l__wheelchart_gap_fp ? - min ( \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp\cs_end: , \l__wheelchart_gap_max_angle_def_fp ) + min ( \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp \cs_end: , \l__wheelchart_gap_max_angle_def_fp ) : asind ( min ( \l__wheelchart_gap_fp / ( (#2) + 1 - sign (#2) ) , 1 ) ) + \l__wheelchart_gap_polar_fp - %note the min ( ... , 1 ) such that the asind is always defined - %also note the + 1 - sign (#2) such that the denominator is also nonzero if #2 = 0 + %note the min ( ... , 1 ) so that the asind is always defined + %also note the + 1 - sign (#2) so that the denominator is also nonzero if #2 = 0 } } @@ -516,7 +521,7 @@ : \g__wheelchart_new_angle_fp - \g__wheelchart_angle_fp ) - / \cs:w g__wheelchart_samples_1_fp\cs_end: + / \cs:w g__wheelchart_samples_1_fp \cs_end: } \path let \p { l__wheelchart_slices_orientation_1 } = @@ -579,8 +584,8 @@ { \fp_eval:n { - ( 1 - (#2) ) * ( \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: - (#3) ) - + (#2) * ( \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: + (#3) ) + ( 1 - (#2) ) * ( \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: - (#3) ) + + (#2) * ( \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: + (#3) ) } } @@ -591,26 +596,26 @@ { \fp_gset:cn { g__wheelchart_slice_#1_#2_angle_\WCcount _fp } { - \cs:w g__wheelchart_#3angle_fp\cs_end: + + \cs:w g__wheelchart_#3angle_fp \cs_end: + ( \l__wheelchart_counter_or_clockwise_fp * - ( (#4) * \cs:w g__wheelchart_#1_gap_\WCcount _fp\cs_end: + \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp\cs_end: ) + ( (#4) * \cs:w g__wheelchart_#1_gap_\WCcount _fp \cs_end: + \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp \cs_end: ) ) } } { \fp_gset:cn { g__wheelchart_slice_#1_#2_angle_\WCcount _fp } { - \cs:w g__wheelchart_#3angle_fp\cs_end: + + \cs:w g__wheelchart_#3angle_fp \cs_end: + ( \l__wheelchart_counter_or_clockwise_fp * ( - (#4) * \cs:w g__wheelchart_#1_gap_\WCcount _fp\cs_end: + \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp\cs_end: + (#4) * \cs:w g__wheelchart_#1_gap_\WCcount _fp \cs_end: + \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp \cs_end: - asind ( - \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: - * sind ( \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp\cs_end: ) - / \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: + \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: + * sind ( \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp \cs_end: ) + / \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: ) ) ) @@ -620,8 +625,8 @@ \cs_new_protected:Npn \__wheelchart_def_slice_keys:n #1 { - {%note the double {{...}} such that the contents is in a group - %such that pgfkeys which are specific to the current slice are local for this slice + {%note the double braces {{...}} so that the contents is in a group + %and in particular, pgfkeys which are specific to the current slice are local for this slice \clist_if_in:NVT \l__wheelchart_slice_range_local_clist \WCcount { \pgfkeys { / wheelchart , slice_final /. expanded = { \exp_not:v { l__wheelchart_slice_\WCcount _keys_clist } } } @@ -663,24 +668,24 @@ %g__wheelchart_WCcount_counter to be larger than \WCtotalcount \tl_build_end:N \WClegend \cs_set:Npn \WCcount { \theg__wheelchart_WCcount_counter } - \cs_set:Npn \WCpercentage { \cs:w l__wheelchart_WCpercentage_\theg__wheelchart_WCcount_counter\cs_end: } - \cs_set:Npn \WCpercentagerounded { \cs:w l__wheelchart_WCpercentagerounded_\theg__wheelchart_WCcount_counter\cs_end: } + \cs_set:Npn \WCpercentage { \cs:w l__wheelchart_WCpercentage_\theg__wheelchart_WCcount_counter \cs_end: } + \cs_set:Npn \WCpercentagerounded { \cs:w l__wheelchart_WCpercentagerounded_\theg__wheelchart_WCcount_counter \cs_end: } \str_if_eq:eeTF { \l__wheelchart_type_tl } { etoc } { \cs_set:Npn \WCetocthelinkedname - { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_name_\theg__wheelchart_WCcount_counter\cs_end: } + { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_name_\theg__wheelchart_WCcount_counter \cs_end: } \cs_set:Npn \WCetocthelinkednumber - { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_number_\theg__wheelchart_WCcount_counter\cs_end: } + { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_number_\theg__wheelchart_WCcount_counter \cs_end: } \cs_set:Npn \WCetocthelinkedpage - { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_page_\theg__wheelchart_WCcount_counter\cs_end: } + { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_page_\theg__wheelchart_WCcount_counter \cs_end: } \cs_set:Npn \WCetocthename - { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_name_\theg__wheelchart_WCcount_counter\cs_end: } + { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_name_\theg__wheelchart_WCcount_counter \cs_end: } \cs_set:Npn \WCetocthenumber - { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_number_\theg__wheelchart_WCcount_counter\cs_end: } + { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_number_\theg__wheelchart_WCcount_counter \cs_end: } \cs_set:Npn \WCetocthepage - { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_page_\theg__wheelchart_WCcount_counter\cs_end: } + { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_page_\theg__wheelchart_WCcount_counter \cs_end: } \cs_set:Npn \WCetocthenumberofpages - { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_number_of_pages_\theg__wheelchart_WCcount_counter\cs_end: } + { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_number_of_pages_\theg__wheelchart_WCcount_counter \cs_end: } } { \clist_if_empty:NTF \l__wheelchart_header_clist @@ -688,7 +693,7 @@ \int_step_inline:nn { \l__wheelchart_max_list_items_int } { \cs_set:cpn { WCvar\int_to_Alph:n {##1} } - { \cs:w l__wheelchart_item_WCvar\int_to_Alph:n {##1}_\theg__wheelchart_WCcount_counter\cs_end: } + { \cs:w l__wheelchart_item_WCvar\int_to_Alph:n {##1}_\theg__wheelchart_WCcount_counter \cs_end: } } } { @@ -717,13 +722,13 @@ ( atand ( - \cs:w g__wheelchart_#3_y_fp\cs_end: - \cs:w g__wheelchart_#4_y_fp\cs_end: , - \cs:w g__wheelchart_#3_x_fp\cs_end: - \cs:w g__wheelchart_#4_x_fp\cs_end: + \cs:w g__wheelchart_#3_y_fp \cs_end: - \cs:w g__wheelchart_#4_y_fp \cs_end: , + \cs:w g__wheelchart_#3_x_fp \cs_end: - \cs:w g__wheelchart_#4_x_fp \cs_end: ) - atand ( - \cs:w g__wheelchart_#1_y_fp\cs_end: - \cs:w g__wheelchart_#2_y_fp\cs_end: , - \cs:w g__wheelchart_#1_x_fp\cs_end: - \cs:w g__wheelchart_#2_x_fp\cs_end: + \cs:w g__wheelchart_#1_y_fp \cs_end: - \cs:w g__wheelchart_#2_y_fp \cs_end: , + \cs:w g__wheelchart_#1_x_fp \cs_end: - \cs:w g__wheelchart_#2_x_fp \cs_end: ) ) } @@ -969,9 +974,9 @@ \__wheelchart_for_loop:n { \pgfkeysvalueof { / wheelchart / before~slices } - \int_step_inline:nn { \fp_eval:n { round ( \cs:w g__wheelchart_value_\WCcount _fp\cs_end: ) } } - %note that \fp_eval:n { round ( ... ) } is necessary even when the value is an integer because if parse=pgfmath - %then .0 is added and then \int_step_inline:nn { \cs:w g__wheelchart_value_\WCcount _fp\cs_end: } would give the messages + \int_step_inline:nn { \fp_eval:n { round ( \cs:w g__wheelchart_value_\WCcount _fp \cs_end: ) } } + %note that \fp_eval:n { round ( ... ) } is necessary even when the value is an integer because pgfmath + %could have added .0 and then \int_step_inline:nn { \cs:w g__wheelchart_value_\WCcount _fp \cs_end: } would give the messages %Missing character: There is no . in font nullfont! Missing character: There is no 0 in font nullfont! { \int_gincr:N \g__wheelchart_discrete_count_int @@ -1082,7 +1087,7 @@ \cs_set:Npe \WCmidangle { \fp_use:c { g__wheelchart_WCmidangle_\WCcount _fp } } \pgfkeysvalueof { / wheelchart / for~loop~start }%this must be placed after the definition of macros such as \WCpercentage - %such that these macros can be used in the key for loop start + %so that these macros can be used in the key for loop start \begin { scope } [ shift = { ( \WCmidangle \c_colon_str \fp_use:c { g__wheelchart_explode_\WCcount _fp } ) } , @@ -1161,16 +1166,21 @@ \fp_gset:cn { g__wheelchart_#1_\WCcount _fp } { \pgfmathresult } } -\cs_new_protected:Npn \__wheelchart_if_text:nn #1#2 +\cs_new_protected:Npn \__wheelchart_if_text:nnn #1#2#3 { %https://tex.stackexchange.com/questions/42280/expand-away-empty-macros-within-ifthenelse %https://tex.stackexchange.com/questions/44919/proper-way-to-detect-empty-blank-text \begin { pgfinterruptpicture } + \DeclareDocumentCommand \\ {#2} {} + %for arc data, \\ is used with seq_set_split so has no optional argument thus then #2 is empty + %otherwise, #2 is o + %no s because an optional star does not apply in a node + %no ! because a space between \\ and its optional argument is allowed in a node %https://tex.stackexchange.com/questions/459853/savebox-within-tikzpicture-results-in-an-empty-savebox \hbox_gset:Nn \g__wheelchart_if_text_box { \pgfkeysvalueof { / wheelchart / #1 } } \end { pgfinterruptpicture } \dim_compare:nNnT { \box_wd:N \g__wheelchart_if_text_box } > { 0 pt } - { {#2} } + { {#3} } } \cs_new_protected:Npn \__wheelchart_initial:n #1 @@ -1182,7 +1192,7 @@ \tl_if_empty:nTF {#1} { \cs_set:Npn \WCtotalcount { 0 } } { - \cs:w seq_set_split:Ne\l__wheelchart_expand_list_tl\cs_end: + \cs:w seq_set_split:Ne\l__wheelchart_expand_list_tl \cs_end: \l__wheelchart_list_seq { \pgfkeysvalueof { / wheelchart / separator~rows } } {#1} @@ -1190,7 +1200,7 @@ \int_zero:N \l__wheelchart_max_list_items_int \seq_map_indexed_inline:Nn \l__wheelchart_list_seq { - \cs:w seq_set_split:Ne\l__wheelchart_expand_list_items_tl\cs_end: + \cs:w seq_set_split:Ne\l__wheelchart_expand_list_items_tl \cs_end: \l__wheelchart_list_items_seq { \pgfkeysvalueof { / wheelchart / separator~columns } } {##2} @@ -1245,7 +1255,7 @@ \etocsetnexttocdepth { -1 }%only for the next toc \etocsetstyle { \l__wheelchart_etoc_level_tl } {} {} { - \int_compare:nNnT { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int\cs_end: } > { 0 } + \int_compare:nNnT { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int \cs_end: } > { 0 } { \cs_gset:cpe { @@ -1304,7 +1314,7 @@ {} \int_gzero_new:c { g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int } \pgfkeysvalueof { / wheelchart / etoc~code } - \int_compare:nNnT { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int\cs_end: } > { 0 } + \int_compare:nNnT { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int \cs_end: } > { 0 } { \cs_gset:cpe { @@ -1331,32 +1341,32 @@ { \__wheelchart_def_slice_keys:n { \__wheelchart_gdef_count_fp:nn { value } { value } } - \cs_set:Npe \WCtotalnum { \fp_eval:n { \WCtotalnum + \cs:w g__wheelchart_value_\WCcount _fp\cs_end: } } + \cs_set:Npe \WCtotalnum { \fp_eval:n { \WCtotalnum + \cs:w g__wheelchart_value_\WCcount _fp \cs_end: } } } \int_step_inline:nn { \WCtotalcount } { \cs_set:cpe { l__wheelchart_WCpercentage_##1 } - { \fp_eval:n { \cs:w g__wheelchart_value_##1_fp\cs_end: / ( \WCtotalnum / 100 ) } } + { \fp_eval:n { \cs:w g__wheelchart_value_##1_fp \cs_end: / ( \WCtotalnum / 100 ) } } \cs_set:cpe { l__wheelchart_WCpercentagerounded_##1 } - { \fp_eval:n { round ( \cs:w l__wheelchart_WCpercentage_##1\cs_end: , \pgfkeysvalueof { / wheelchart / perc~precision } ) } } + { \fp_eval:n { round ( \cs:w l__wheelchart_WCpercentage_##1 \cs_end: , \pgfkeysvalueof { / wheelchart / perc~precision } ) } } } } \cs_new_protected:Npn \__wheelchart_inner_and_wheel_data:n #1 { - \__wheelchart_if_text:nn { #1~data } + \__wheelchart_if_text:nnn { #1~data } { o } { \__wheelchart_def_fp:nn { #1_data_angle_pos } { #1~data~angle~pos } \__wheelchart_def_fp:nn { #1_data_angle_shift } { #1~data~angle~shift } \__wheelchart_def_fp:nn { #1_data_pos } { #1~data~pos } \__wheelchart_def_fp:nn { #1_data_sep } { #1~data~sep } \node [ align = left , / wheelchart / #1_data_style ] at - \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end: + \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end: { \WCcount } - { \cs:w l__wheelchart_#1_data_angle_pos_fp\cs_end: } - { \cs:w l__wheelchart_#1_data_angle_shift_fp\cs_end: } - { \cs:w l__wheelchart_#1_data_pos_fp\cs_end: } - { \cs:w l__wheelchart_#1_data_sep_fp\cs_end: } + { \cs:w l__wheelchart_#1_data_angle_pos_fp \cs_end: } + { \cs:w l__wheelchart_#1_data_angle_shift_fp \cs_end: } + { \cs:w l__wheelchart_#1_data_pos_fp \cs_end: } + { \cs:w l__wheelchart_#1_data_sep_fp \cs_end: } { \pgfkeysvalueof { / wheelchart / #1~data } } ; } } @@ -1366,13 +1376,13 @@ \cs_new_protected:Npn \__wheelchart_legend_append:nn #1#2 { - \tl_build_put_right:NV \WClegend \l__wheelchart_legend_row_tl%note the V specifier such that \WClegend can also be combined - %with an S column of the package siunitx and such that \WClegend can be used in a tblr environment of the package tabularray + \tl_build_put_right:NV \WClegend \l__wheelchart_legend_row_tl%note the V specifier so that \WClegend can also be combined + %with an S column of the package siunitx and so that \WClegend can be used in a tblr environment of the package tabularray %and then the option expand=\WClegend needs to be given to the tblr environment \tl_build_put_right:Nn \WClegend { \protect \setcounter { g__wheelchart_WCcount_counter } }%note the \protect for in case that %\WClegend would be parsed in a particular way %note that the counter g__wheelchart_WCcount_counter is defined globally and at the end of the previous \l__wheelchart_legend_row_tl - %such that this value is defined and has the right value at the start of the next \l__wheelchart_legend_row_tl + %so that this value is defined and has the right value at the start of the next \l__wheelchart_legend_row_tl %if \WClegend is used in a tblr environment of the package tabularray then \UseTblrLibrary{counter} is required \tl_build_put_right:Ne \WClegend { { \int_eval:n {#1} } } \tl_build_put_right:Nn \WClegend {#2} @@ -1414,8 +1424,8 @@ { atand ( - \cs:w g__wheelchart_#3_y_fp\cs_end: - \cs:w g__wheelchart_#4_y_fp\cs_end: , - \cs:w g__wheelchart_#3_x_fp\cs_end: - \cs:w g__wheelchart_#4_x_fp\cs_end: + \cs:w g__wheelchart_#3_y_fp \cs_end: - \cs:w g__wheelchart_#4_y_fp \cs_end: , + \cs:w g__wheelchart_#3_x_fp \cs_end: - \cs:w g__wheelchart_#4_x_fp \cs_end: ) } \fp_set:Nn \l__wheelchart_slices_arc_coord_fp @@ -1440,7 +1450,7 @@ ) : atand ( ( \l__wheelchart_slices_arc_A_fp - ( 1 / \l__wheelchart_slices_arc_A_fp ) ) / 2 ) - }%note the min ( \l__wheelchart_slices_arc_B_fp , 0 ) such that the acosd is always defined + }%note the min ( \l__wheelchart_slices_arc_B_fp , 0 ) so that the acosd is always defined } } ] @@ -1486,8 +1496,8 @@ * abs ( ( 1 / \l__wheelchart_slices_arc_A_fp ) + \l__wheelchart_slices_arc_A_fp ) * sqrt ( - ( \cs:w g__wheelchart_#3_x_fp\cs_end: - \cs:w g__wheelchart_#4_x_fp\cs_end: ) ^ 2 - + ( \cs:w g__wheelchart_#3_y_fp\cs_end: - \cs:w g__wheelchart_#4_y_fp\cs_end: ) ^ 2 + ( \cs:w g__wheelchart_#3_x_fp \cs_end: - \cs:w g__wheelchart_#4_x_fp \cs_end: ) ^ 2 + + ( \cs:w g__wheelchart_#3_y_fp \cs_end: - \cs:w g__wheelchart_#4_y_fp \cs_end: ) ^ 2 ) } } @@ -1539,11 +1549,11 @@ \fp_eval:n { ( - \cs:w g__wheelchart_#3_x_fp\cs_end: + \cs:w g__wheelchart_#4_x_fp\cs_end: + + \cs:w g__wheelchart_#3_x_fp \cs_end: + \cs:w g__wheelchart_#4_x_fp \cs_end: + ( \g__wheelchart_slices_orientation_fp * ( \l__wheelchart_slices_arrow_coord_fp - 1 ) * \l__wheelchart_slices_arrow_A_fp - * ( \cs:w g__wheelchart_#3_y_fp\cs_end: - \cs:w g__wheelchart_#4_y_fp\cs_end: ) + * ( \cs:w g__wheelchart_#3_y_fp \cs_end: - \cs:w g__wheelchart_#4_y_fp \cs_end: ) ) ) / 2 @@ -1552,11 +1562,11 @@ \fp_eval:n { ( - \cs:w g__wheelchart_#3_y_fp\cs_end: + \cs:w g__wheelchart_#4_y_fp\cs_end: + + \cs:w g__wheelchart_#3_y_fp \cs_end: + \cs:w g__wheelchart_#4_y_fp \cs_end: + ( \g__wheelchart_slices_orientation_fp * ( \l__wheelchart_slices_arrow_coord_fp - 1 ) * \l__wheelchart_slices_arrow_A_fp - * ( \cs:w g__wheelchart_#4_x_fp\cs_end: - \cs:w g__wheelchart_#3_x_fp\cs_end: ) + * ( \cs:w g__wheelchart_#4_x_fp \cs_end: - \cs:w g__wheelchart_#3_x_fp \cs_end: ) ) ) / 2 @@ -1593,10 +1603,10 @@ { \fp_eval:n { - ( 1 - (#1) / max ( round ( \cs:w g__wheelchart_value_\WCcount _fp\cs_end: ) , 1 ) ) - * \cs:w g__wheelchart_slice_#2_start_angle_\WCcount _fp\cs_end: - + (#1) * \cs:w g__wheelchart_slice_#2_end_angle_\WCcount _fp\cs_end: - / max ( round ( \cs:w g__wheelchart_value_\WCcount _fp\cs_end: ) , 1 ) + ( 1 - (#1) / max ( round ( \cs:w g__wheelchart_value_\WCcount _fp \cs_end: ) , 1 ) ) + * \cs:w g__wheelchart_slice_#2_start_angle_\WCcount _fp \cs_end: + + (#1) * \cs:w g__wheelchart_slice_#2_end_angle_\WCcount _fp \cs_end: + / max ( round ( \cs:w g__wheelchart_value_\WCcount _fp \cs_end: ) , 1 ) } } @@ -1617,17 +1627,19 @@ arc_style /. style = {} , arc~around~line /. initial = 1 , arc~around~text /. default = true ,%this key is not set up with /.is choice or \bool_set:Nn - %such that for example \WCvarA can be used as value for this key + %so that for example \WCvarA can be used as value for this key arc~around~text /. initial = false , arc~data /. initial = {} , arc~data~align /. code = { \tl_set:Nn \l__wheelchart_arc_data_align_tl {#1} } ,%this key is not set up with /.is choice - %such that for example \WCvarA can be used as value for this key + %so that for example \WCvarA can be used as value for this key arc~data~align = center , arc~data~angle~pos /. initial = 0.5 , arc~data~angle~shift /. initial = 0 , arc~data~dir /. initial = 1 , arc~data~expand /. initial = n , arc~data~line~sep~factor /. initial = 1 , + arc~data~lines~pos /. initial = 0.5 , + arc~data~lines~shift /. initial = 0 , arc~data~pos /. initial = 1 , arc~data~sep /. initial = 1 ex / 1 cm , arc~data~style /. style = { arc_data_style /. style = {#1} } , @@ -1640,7 +1652,7 @@ arc~sep /. initial = 1 ex / 1 cm , at /. initial = { ( 0 , 0 ) } , before~slices /. initial = {} , - bool_set_true /. code = { \bool_set_true:N #1 } , + bool_set_true /. code = \bool_set_true:N #1 , caption /. initial = {} , caption~left /. initial = {} , caption~left~sep /. initial = 0.5 , @@ -1670,9 +1682,9 @@ data~style /. style = { data_style /. style = {#1} } , data_style /. style = {} , discrete /. is~choice , - discrete / false /. code = { \bool_set_false:N \l__wheelchart_discrete_bool } , + discrete / false /. code = \bool_set_false:N \l__wheelchart_discrete_bool , discrete / false /. value~forbidden , - discrete / true /. code = { \bool_set_true:N \l__wheelchart_discrete_bool } , + discrete / true /. code = \bool_set_true:N \l__wheelchart_discrete_bool , discrete / true /. value~forbidden , discrete /. default = true , discrete = false , @@ -1777,7 +1789,7 @@ legend /. initial = {} , legend~columns /. initial = 1 , legend~entry /. initial = {} , - legend~only /. code = { \bool_set:Nn \l__wheelchart_legend_only_bool { \cs:w c_#1_bool\cs_end: } } , + legend~only /. code = \bool_set:Nn \l__wheelchart_legend_only_bool { \cs:w c_#1_bool \cs_end: } , legend~only /. default = true , legend~only = false , legend~row /. code = @@ -1800,7 +1812,7 @@ } , lines~ext~dirsep /. initial = 0 , lines~ext~fixed /. default = true ,%this key is not set up with /.is choice or \bool_set:Nn - %such that for example \WCvarA can be used as value for this key + %so that for example \WCvarA can be used as value for this key lines~ext~fixed /. initial = false , lines~ext~fixed~left /. initial = { @@ -1808,7 +1820,7 @@ { \l__wheelchart_lines_ext_dir_int * ( - \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: + \l__wheelchart_lines_sep_fp + \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: + \l__wheelchart_lines_sep_fp + \l__wheelchart_lines_fp + \l__wheelchart_lines_ext_fp ) } @@ -1819,7 +1831,7 @@ { \l__wheelchart_lines_ext_dir_int * ( - \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: + \l__wheelchart_lines_sep_fp + \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: + \l__wheelchart_lines_sep_fp + \l__wheelchart_lines_fp + \l__wheelchart_lines_ext_fp ) } @@ -1870,7 +1882,7 @@ outer_plot_style /. style = {} , outer~radius /. initial = 3 , perc~precision /. initial = 0 , - pie /. code = { \bool_set:Nn \l__wheelchart_pie_bool { \cs:w c_#1_bool\cs_end: } } , + pie /. code = \bool_set:Nn \l__wheelchart_pie_bool { \cs:w c_#1_bool \cs_end: } , pie /. default = true , pie = false , plot /. style = @@ -2029,12 +2041,12 @@ } , slices~inner /. initial = { - \fp_compare:nNnT { \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: } > { 0 } + \fp_compare:nNnT { \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: } > { 0 } { \fp_compare:nNnT - { \cs:w g__wheelchart_inner_gap_\WCcount _fp\cs_end: } + { \cs:w g__wheelchart_inner_gap_\WCcount _fp \cs_end: } < - { \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp\cs_end: } + { \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp \cs_end: } { arc [ @@ -2212,7 +2224,7 @@ {} } } , - slices~start~arrow/.style~2~args = + slices~start~arrow /. style~2~args = { slices~start = { @@ -2241,13 +2253,13 @@ (#1) - \fp_eval:n { - \l__wheelchart_counter_or_clockwise_fp * \cs:w g__wheelchart_value_1_fp\cs_end: * 0.5 + \l__wheelchart_counter_or_clockwise_fp * \cs:w g__wheelchart_value_1_fp \cs_end: * 0.5 * ( \l__wheelchart_total_angle_fp / \WCtotalnum ) } } } , start~half /. default = 90 , - title /. initial= {} , + title /. initial = {} , title~left /. initial = {} , title~left~sep /. initial = 0.5 , title~left~style /. style = { title~left_style /. style = {#1} } , @@ -2283,13 +2295,13 @@ { \cs_set:cpn {#1} { \use:e { \clist_item:nn {#2} { \int_mod:nn { \WCcount - 1 } { \clist_count:n {#2} } + 1 } } } - %note the \use:e such that \WClist<name> also works when given as an argument to pgfmath + %note the \use:e so that \WClist<name> also works when given as an argument to pgfmath %if the list contains a macro, for example %\begin{tikzpicture} %\def\n{1} %\wheelchart[ - % value=\WClistA, - % WClistA={\n} + % value=\WClistA, + % WClistA=\n %]{\exampleforthismanual} %\end{tikzpicture} %https://tex.stackexchange.com/questions/671298/clist-item-and-pgfmathsetmacro-causing-an-error @@ -2331,18 +2343,18 @@ { \tl_set:Ne \l__wheelchart_key_name_tl { \pgfkeyscurrentname }%it is necessary to define \l__wheelchart_key_name_tl %because \pgfkeyscurrentname will be overwritten by / errors / unknown~key /. expanded - \regex_match:nVTF { \{(.+)\} } \l__wheelchart_key_name_tl + \regex_match:NVTF \c__wheelchart_braces_regex \l__wheelchart_key_name_tl { \tl_set:Ne \l__wheelchart_key_range_tl { \pgfkeyscurrentname } - \regex_replace_all:nnN { \{(.+)\} } {} \l__wheelchart_key_name_tl - \regex_replace_all:nnN { [\w\s]+\{(.+)\} } { \1 } \l__wheelchart_key_range_tl + \regex_replace_all:NnN \c__wheelchart_braces_regex {} \l__wheelchart_key_name_tl + \regex_replace_all:NnN \c__wheelchart_key_braces_regex { \1 } \l__wheelchart_key_range_tl \str_if_eq:eeTF { \l__wheelchart_key_range_tl } { list } { \pgfkeys { / wheelchart , WC_list = { l__wheelchart_list_\l__wheelchart_key_name_tl } {#1} } \pgfkeys { / wheelchart , - \l__wheelchart_key_name_tl /. expand~once = { \cs:w l__wheelchart_list_\l__wheelchart_key_name_tl\cs_end: } + \l__wheelchart_key_name_tl /. expand~once = { \cs:w l__wheelchart_list_\l__wheelchart_key_name_tl \cs_end: } } } { @@ -2393,12 +2405,12 @@ \NewDocumentCommand \wheelchart { O {} m } { - {%note the double braces {{...}} such that the contents is in a group and such that & can be used in pgfmath in a tabular + {%note the double braces {{...}} so that the contents is in a group and so that & can be used in pgfmath in a tabular \pgfkeys { / wheelchart , #1 } \IfPackageLoadedTF { siunitx } { \cs_set:Npn \WCperc { \qty { \WCpercentagerounded } { \percent } } } { \cs_set:Npn \WCperc { \WCpercentagerounded \, \% } }%the definition of \WCperc is placed inside the command \wheelchart - %such that \WCperc is not defined outside this command + %so that \WCperc is not defined outside this command \bool_if:NTF \l__wheelchart_legend_only_bool { \__wheelchart_initial:n {#2} @@ -2430,7 +2442,7 @@ { \g__wheelchart_angle_fp + ( - \l__wheelchart_counter_or_clockwise_fp * \cs:w g__wheelchart_value_\WCcount _fp\cs_end: + \l__wheelchart_counter_or_clockwise_fp * \cs:w g__wheelchart_value_\WCcount _fp \cs_end: * ( \l__wheelchart_total_angle_fp / \WCtotalnum ) ) } @@ -2455,7 +2467,7 @@ \fp_gset:cn { g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp } { abs ( \g__wheelchart_angle_fp - \g__wheelchart_new_angle_fp ) / 2 } \fp_set:Nn \l__wheelchart_abs_half_angle_minus_new_angle_minus_gap_polar_fp - { \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp\cs_end: - \l__wheelchart_gap_polar_fp } + { \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp \cs_end: - \l__wheelchart_gap_polar_fp } \fp_gzero_new:c { g__wheelchart_outer_gap_\WCcount _fp } \fp_gzero_new:c { g__wheelchart_inner_gap_\WCcount _fp } \bool_if:NTF \l__wheelchart_plot_bool @@ -2466,7 +2478,7 @@ { \fp_set:Nn \l__wheelchart_gap_max_angle_def_fp { - \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: > 0 + \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: > 0 ? 90 : @@ -2490,8 +2502,8 @@ ) ) } - \__wheelchart_def_gap:nn { outer } { \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: } - \__wheelchart_def_gap:nn { inner } { \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: } + \__wheelchart_def_gap:nn { outer } { \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: } + \__wheelchart_def_gap:nn { inner } { \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: } \fp_compare:nNnT { \l__wheelchart_abs_half_angle_minus_new_angle_minus_gap_polar_fp } > { 0.01 } { \fp_gset:cn { g__wheelchart_inner_radius_\WCcount _fp } @@ -2508,7 +2520,7 @@ ) ) , - \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: + \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: ) } } @@ -2523,14 +2535,14 @@ \__wheelchart_gdef_count_fp:nn { data_pos } { data~pos } \__wheelchart_gdef_count_fp:nn { data_sep } { data~sep } \__wheelchart_def_angle:nnnn - { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp\cs_end: } - { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp\cs_end: } - { \cs:w g__wheelchart_data_pos_\WCcount _fp\cs_end: } - { \cs:w g__wheelchart_data_sep_\WCcount _fp\cs_end: } + { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp \cs_end: } + { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp \cs_end: } + { \cs:w g__wheelchart_data_pos_\WCcount _fp \cs_end: } + { \cs:w g__wheelchart_data_sep_\WCcount _fp \cs_end: } \cs_set:Npe \WCdataangle { \pgfmathresult } \__wheelchart_gdef_count_fp:nn { explode } { explode } \pgfkeysvalueof { / wheelchart / for~loop~start }%this must be placed after the definition of macros such as - %\WCpercentage such that these macros can be used in the key for loop start + %\WCpercentage so that these macros can be used in the key for loop start \int_compare:nNnT { \WCcount } = { 1 } { \begin { scope } @@ -2601,7 +2613,7 @@ [ shift /. expanded = { - \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end: + \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end: { \WCcount } { \l__wheelchart_slices_angle_pos_fp } { \l__wheelchart_slices_angle_shift_fp } @@ -2639,9 +2651,9 @@ \__wheelchart_for_loop:n { \bool_if:NT \l__wheelchart_wheel_lines_bool - %this is placed inside \__wheelchart_for_loop:n such that wheel lines can be applied for specific slices + %this is placed inside \__wheelchart_for_loop:n so that wheel lines can be applied for specific slices { - \int_step_inline:nnn { 0 } { \fp_eval:n { round ( \cs:w g__wheelchart_value_\WCcount _fp\cs_end: ) } } + \int_step_inline:nnn { 0 } { \fp_eval:n { round ( \cs:w g__wheelchart_value_\WCcount _fp \cs_end: ) } } %note the \fp_eval:n { round ( ... ) } to avoid the messages Missing character: There is no ... in font nullfont! { \bool_if:NTF \l__wheelchart_plot_bool @@ -2783,14 +2795,14 @@ \fp_compare:nF { \l__wheelchart_lines_fp == 0 && \l__wheelchart_lines_ext_fp == 0 } { \draw [ / wheelchart / lines_style ] let \p { l__wheelchart_lines_1 } = - \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end: + \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end: { \WCcount } - { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp\cs_end: } - { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp\cs_end: } - { \cs:w g__wheelchart_data_pos_\WCcount _fp\cs_end: } + { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp \cs_end: } + { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp \cs_end: } + { \cs:w g__wheelchart_data_pos_\WCcount _fp \cs_end: } { \l__wheelchart_lines_sep_fp + \l__wheelchart_lines_fp } in - \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end: + \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end: { \WCcount } { \l__wheelchart_lines_angle_pos_fp } { \l__wheelchart_lines_angle_shift_fp } @@ -2838,7 +2850,7 @@ { \fp_eval:n { - \l__wheelchart_lines_ext_dir_int * \cs:w g__wheelchart_data_sep_\WCcount _fp\cs_end: + \l__wheelchart_lines_ext_dir_int * \cs:w g__wheelchart_data_sep_\WCcount _fp \cs_end: } } , 0 @@ -2849,7 +2861,7 @@ } ; } - \__wheelchart_if_text:nn { data } + \__wheelchart_if_text:nnn { data } { o } { \fp_compare:nNnTF { \l__wheelchart_lines_ext_fp } = { 0 } { @@ -2876,13 +2888,13 @@ \coordinate [ at = - \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end: + \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end: { \WCcount } - { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp\cs_end: } - { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp\cs_end: } - { \cs:w g__wheelchart_data_pos_\WCcount _fp\cs_end: } + { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp \cs_end: } + { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp \cs_end: } + { \cs:w g__wheelchart_data_pos_\WCcount _fp \cs_end: } { - \cs:w g__wheelchart_data_sep_\WCcount _fp\cs_end: + + \cs:w g__wheelchart_data_sep_\WCcount _fp \cs_end: + ( \l__wheelchart_lines_fp == 0 ? @@ -2902,7 +2914,7 @@ \node [ anchor = \l__wheelchart_data_anchor_tl , align = left , / wheelchart / data_style ] at ( g__wheelchart_data_coordinate ) { \pgfkeysvalueof { / wheelchart / data } } ;%a separate \node and not at the end of the \draw with lines_style - %such that the key lines style is not passed to this \node + %so that the key lines style is not passed to this \node } \__wheelchart_def_fp:nn { arc_around_line } { arc~around~line } \__wheelchart_def_fp:nn { arc_data_angle_pos } { arc~data~angle~pos } @@ -2913,14 +2925,16 @@ \fp_gset:Nn \g__wheelchart_half_ex_over_one_cm_fp { 0.5 ex / 1 cm }% \endpgfinterruptpicture% \fp_gset:Nn \g__wheelchart_arc_data_aux_ii_fp { 0 } - \__wheelchart_if_text:nn { arc~data } + \__wheelchart_if_text:nnn { arc~data } {} { - \cs_set:Npn \WCperc { \WCpercentagerounded { \, } { \% } }%such that \WCperc follows the arc if used in arc data + \cs_set:Npn \WCperc { \WCpercentagerounded { \, } { \% } }%so that \WCperc follows the arc if used in arc data %this redefinition of \WCperc is local to the group of arc data \__wheelchart_def_fp:nn { arc_data_pos } { arc~data~pos } \__wheelchart_def_fp:nn { arc_data_sep } { arc~data~sep } \__wheelchart_def_fp:nn { arc_data_line_sep_factor } { arc~data~line~sep~factor } - \cs:w seq_set_split:Nn\pgfkeysvalueof { / wheelchart / arc~data~expand }\cs_end: + \__wheelchart_def_fp:nn { arc_data_lines_pos } { arc~data~lines~pos } + \__wheelchart_def_fp:nn { arc_data_lines_shift } { arc~data~lines~shift } + \cs:w seq_set_split:Nn\pgfkeysvalueof { / wheelchart / arc~data~expand } \cs_end: \l__wheelchart_arc_data_seq { \\ } { \pgfkeysvalueof { / wheelchart / arc~data } } @@ -2928,13 +2942,17 @@ { \fp_set:Nn \l__wheelchart_arc_data_text_pos_fp { - \l__wheelchart_arc_data_pos_fp + 2 * \g__wheelchart_slices_orientation_fp - * ( 2 * ####1 - \seq_count:N \l__wheelchart_arc_data_seq - 1 ) * sign ( \l__wheelchart_arc_data_dir_fp ) + \l__wheelchart_arc_data_pos_fp + 4 * \g__wheelchart_slices_orientation_fp * + ( + ####1 - 1 - \l__wheelchart_arc_data_lines_pos_fp * ( \seq_count:N \l__wheelchart_arc_data_seq - 1 ) + + \l__wheelchart_arc_data_lines_shift_fp + ) + * sign ( \l__wheelchart_arc_data_dir_fp ) * \l__wheelchart_arc_data_line_sep_factor_fp * \g__wheelchart_half_ex_over_one_cm_fp / ( - \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: - - \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: + \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: + - \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: + 2 * \l__wheelchart_arc_data_sep_fp ) }%the sign is needed because \l__wheelchart_arc_data_dir_fp is not necessarily 1 or -1 @@ -2957,9 +2975,9 @@ / wheelchart / arc_data_style } }%get the length of the path - %note the option overlay such that this does not increase the bounding box + %note the option overlay so that this does not increase the bounding box %note the {} at the start of text and the braces around \fp_gset:Nn ... - %such that the compilation does not stall + %so that the compilation does not stall { 0 } { 1 } { \l__wheelchart_plot_variable_tl } @@ -3033,7 +3051,7 @@ { \l__wheelchart_arc_data_text_pos_fp } { \l__wheelchart_arc_data_sep_fp + \g__wheelchart_half_ex_over_one_cm_fp } + \l__wheelchart_counter_or_clockwise_fp * \l__wheelchart_arc_data_dir_fp - * \cs:w c__wheelchart_arc_data_start_factor_\l__wheelchart_arc_data_align_tl _fp\cs_end: + * \cs:w c__wheelchart_arc_data_start_factor_\l__wheelchart_arc_data_align_tl _fp \cs_end: * \l__wheelchart_arc_data_total_angle_plot_false_fp } \path @@ -3188,7 +3206,7 @@ } \bool_if:NT \l__wheelchart_legend_row_bool { \__wheelchart_def_WClegend: } - \__wheelchart_if_text:nn { middle } + \__wheelchart_if_text:nnn { middle } { o } { \node [ align = center , / wheelchart / middle_style ] at ( 0 , 0 ) { \pgfkeysvalueof { / wheelchart / middle } } ; } \pgfkeysvalueof { / wheelchart / legend } \end { scope } @@ -3203,4 +3221,6 @@ \end { scope } } } - }
\ No newline at end of file + } + +\endinput
\ No newline at end of file diff --git a/graphics/pgf/contrib/wheelchart/wheelchart.tex b/graphics/pgf/contrib/wheelchart/wheelchart.tex index 5f0857f1a6..952fc93a81 100644 --- a/graphics/pgf/contrib/wheelchart/wheelchart.tex +++ b/graphics/pgf/contrib/wheelchart/wheelchart.tex @@ -137,7 +137,7 @@ \setcounter{secnumdepth}{2} \title{The \texttt{wheelchart} package\\[12pt]\large Diagrams with circular or other shapes using \tikzname{} and \LaTeX3} \author{Matthias Floré} -\date{Version 3.0 (2024/03/08)}%\\[12pt] +\date{Version 4.0 (2024/07/28)}%\\[12pt] \begin{document} \iftotalpages% \newsavebox{\fancyfootdefaultbox}% @@ -155,7 +155,11 @@ \maketitle \thispagestyle{fancy} \begin{abstract} -\noindent This package is based on the package |tikz| (see \cite{TtTaPGFp}) and can be used to draw various kinds of diagrams such as a bar chart, doughnut chart, infographic, pie chart, ring chart, square chart, sunburst chart, waffle chart and wheel chart with \tikzname. It provides several options to customize the diagrams. It is also possible to specify a plot for the shape of the chart. Furthermore a legend can be added and the table of contents can be displayed as one of these diagrams. Other tools for creating wheel charts or pie charts can be found in \cite{MpMP}, \cite{JhcIparowcltopotPGFm}, \cite{Tumfdb}, \cite{XdPCbupp} and \cite{RSVpaaMfp}.% This is the manual for version . +\noindent This package is based on the package |tikz| (see \cite{TtTaPGFp}) and can be used to draw various kinds of diagrams such as bar charts, doughnut charts, infographics, pie charts, ring charts, square charts, sunburst charts, waffle charts and wheel charts. + +\noindent It provides several options to customize the diagrams. It is also possible to specify a plot for the shape of the chart. Furthermore a legend can be added and the table of contents can be displayed as one of these diagrams. + +\noindent Other tools for creating wheel charts or pie charts can be found in \cite{MpMP}, \cite{JhcIparowcltopotPGFm}, \cite{Tumfdb}, \cite{XdPCbupp} and \cite{RSVpaaMfp}.% This is the manual for version . \end{abstract} \section*{\contentsname} \iftotalpages @@ -257,7 +261,7 @@ The default wheelchart with these data is shown below. \end{tikzpicture} \end{codeexample} \end{command} -\newpage%such that this section has its own block in the header +\newpage%so that this section has its own block in the header \section{Additional macros} \begin{command}{\WCangle\opt{\oarg{number}}\marg{angle pos}\marg{angle shift}\marg{pos}\marg{sep}} This command gives the angle in degrees of the point which is constructed as follows. @@ -670,6 +674,11 @@ In the example below, it is necessary to use |arc data expand=e| and to place |\ \begin{key}{/wheelchart/arc data line sep factor=\marg{factor} (initially 1)} The contents of the key |arc data| can consist of multiple lines separated by |\\|. The \meta{factor} determines the spacing between these lines. \end{key} +\begin{key}{/wheelchart/arc data lines pos=\marg{factor} (initially 0.5)} +\end{key} +\begin{key}{/wheelchart/arc data lines shift=\marg{value} (initially 0)} +The positioning of the lines of the key |arc data| is determined by the index $k-1-\text{|arc data lines pos|}\cdot(N-1)+\text{|arc data lines shift|}$ where $N$ is the number of lines and $k\in\{1,\dots,N\}$. +\end{key} \begin{key}{/wheelchart/arc data pos=\marg{value} (initially 1)} \end{key} \begin{key}{/wheelchart/arc data sep=\marg{value} (initially 1ex/1cm)} @@ -738,7 +747,6 @@ This key accepts a list of keys which will be applied to the node where the cont \begin{codeexample}[width=10cm] \begin{tikzpicture} \wheelchart[ - at={(5,2)}, caption=Caption, caption style={font=\scshape}, caption left=Caption left, @@ -2909,6 +2917,11 @@ The following example is an answer to the question on \url{https://tex.stackexch \item In v2.0, the key |arc data angle shift| was not taken into account for the key |arc| in combination with the key |arc around text|. This is fixed in v3.0. \item In v2.0, the number of items for each slice in the \meta{wheelchart data} which can be accessed with the macros |\WCvarA| and so on was determined by the number of items for the last slice. For example, |data{1}=\WCvarD| in combination with the \meta{wheelchart data} |1/black/A/a,2/gray/B| was not possible with v2.0. This is not a limitation anymore with v3.0. \end{itemize} +\item[] \textbf{Version 4.0 (2024/07/28)} +\begin{itemize} +\item Added the keys |arc data lines pos| and |arc data lines shift|. +\item Solved an incompatibility if |\\| is used in a key such as |data| inside an environment such as |center|. +\end{itemize} \end{itemize} \begin{thebibliography}{9} \bibitem{JhcIparowcltopotPGFm} diff --git a/graphics/pgf/contrib/wordle/README.md b/graphics/pgf/contrib/wordle/README.md index f1977a1ae7..fdfd996870 100644 --- a/graphics/pgf/contrib/wordle/README.md +++ b/graphics/pgf/contrib/wordle/README.md @@ -1,8 +1,33 @@ -wordle is a package to work with Wordle game. ------------------------------------------------------------ -wordle est un package pour travailler avec le jeu du sutom. ------------------------------------------------------------ -Author : Cédric Pierquet -email : cpierquet@outlook.fr -Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt -Source : https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex
\ No newline at end of file +![v![]()ersion](https://img.shields.io/github/v/tag/AndrewMathas/wordle?color=success&label=version) +<a href="http://www.latex-project.org/lppl.txt"><img src="https://img.shields.io/badge/license-LPPLv1.3c-blueviolet.svg"></a> +<a href="https://www.latex-project.org/"><img src="https://img.shields.io/badge/latex-20B2AA?logo=Latex"></a> + +# Wordle + +A stupidly feature-rich LaTeX package for typesetting **Wordle** puzzles. This package provides a stupidly feature-rich way of creating Wordle puzzles in LaTeX, which [Wikipedia](https://en.wikipedia.org/wiki/Wordle) describes as a hugely popular web-based word game created and developed by Welsh software engineer Josh Wardle. + +This package provides the `wordle` environment, which uses the syntax: + +```tex +% \usepackage{wordle} +\begin{wordle}{ANVIL} + CRANE + NATAL + ANVIL +\end{wordle} +``` + +Ce package fournit un moyen stupidement riche en fonctionnalités de créer des puzzles **Wordle** en LaTeX, que [Wikipedia](https://en.wikipedia.org/wiki/Wordle) décrit comme comme un jeu de lettres en ligne extrêmement populaire, créé et développé par l'ingénieur logiciel gallois Josh Wardle. + +```tex +% \usepackage{wordle} +\begin{GrilleSutom}{REBUS} + ABRIS + ROUTE + REBUS +\end{GrilleSutom} +``` + +### Authors +Andrew Mathas and Cédric Pierquet + diff --git a/graphics/pgf/contrib/wordle/doc/wordle-doc-en.pdf b/graphics/pgf/contrib/wordle/doc/wordle-doc-en.pdf Binary files differdeleted file mode 100644 index aadb07f54b..0000000000 --- a/graphics/pgf/contrib/wordle/doc/wordle-doc-en.pdf +++ /dev/null diff --git a/graphics/pgf/contrib/wordle/doc/wordle-doc-en.tex b/graphics/pgf/contrib/wordle/doc/wordle-doc-en.tex deleted file mode 100644 index 06352f5ad5..0000000000 --- a/graphics/pgf/contrib/wordle/doc/wordle-doc-en.tex +++ /dev/null @@ -1,426 +0,0 @@ -% !TeX TXS-program:compile = txs:///arara -% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} -% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') - -\documentclass[english,a4paper,11pt]{article} -\usepackage[margin=2cm,includefoot]{geometry} -\def\TPversion{0.1.1} -\def\TPdate{03/09/2023} -\usepackage{amssymb,amsfonts,amsmath} -\usepackage[utf8]{inputenc} -%\usepackage[T1]{fontenc} -\usepackage{wordle} -\usepackage{awesomebox} -\usepackage{fontawesome5} -\usepackage{footnote} -\makesavenoteenv{tabular} -\usepackage{enumitem} -\usepackage{tabularray} -\usepackage{fancyvrb} -\usepackage{fancyhdr} -\fancyhf{} -\renewcommand{\headrulewidth}{0pt} -\lfoot{\sffamily\small [wordle]} -\cfoot{\sffamily\small - \thepage{} -} -\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} - -%\usepackage{hvlogos} -\usepackage{xspace} -\usepackage{hologo} -\providecommand\tikzlogo{Ti\textit{k}Z} -\providecommand\TeXLive{\TeX{}Live\xspace} -\providecommand\PSTricks{\textsf{PSTricks}\xspace} -\let\pstricks\PSTricks -\let\TikZ\tikzlogo -\newcommand\TableauDocumentation{% - \begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}} - {\LARGE \LaTeX} & & & & &\\ - & {\LARGE \hologo{pdfLaTeX}} & & & & \\ - & & {\LARGE \hologo{LuaLaTeX}} & & & \\ - & & & {\LARGE \TikZ} & & \\ - & & & & {\LARGE \TeXLive} & \\ - & & & & & {\LARGE \hologo{MiKTeX}} \\ - \end{tblr} -} - -\usepackage{hyperref} -\urlstyle{same} -\hypersetup{pdfborder=0 0 0} -\setlength{\parindent}{0pt} -\definecolor{LightGray}{gray}{0.9} - -\usepackage{babel} -%\AddThinSpaceBeforeFootnotes -%\FrenchFootnotes - -\usepackage{listings} - -\usepackage{newverbs} -\newverbcommand{\motcletex}{\color{cyan!75!black}}{} -\newverbcommand{\packagetex}{\color{violet!75!black}}{} - -\usepackage[most]{tcolorbox} -\tcbuselibrary{listingsutf8} -\newtcblisting{DemoCode}[1][]{% - enhanced,width=0.95\linewidth,center,% - bicolor,size=title,% - colback=cyan!2!white,% - colbacklower=cyan!1!white,% - colframe=cyan!75!black,% - listing options={% - breaklines=true,% - breakatwhitespace=true,% - style=tcblatex,basicstyle=\small\ttfamily,% - tabsize=4,% - commentstyle={\itshape\color{gray}}, - keywordstyle={\color{blue}},% - classoffset=0,% - keywords={},% - alsoletter={-},% - keywordstyle={\color{blue}},% - classoffset=1,% - alsoletter={-},% - morekeywords={center,justify},% - keywordstyle={\color{violet}},% - classoffset=2,% - alsoletter={-},% - morekeywords={WordleGrid},% - keywordstyle={\color{green!50!black}},% - classoffset=3,% - morekeywords={Colors,Rounded,Unit,Font,ColorLetters,Letters,Style,Thickness,BorderColor},% - keywordstyle={\color{orange}} - },% - #1 -} - -\tcbset{vignettes/.style={% - nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,% - boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,% - } -} - -\tcbset{vignetteMaJ/.style={% - fontupper={\vphantom{pf}\footnotesize\ttfamily}, - vignettes,colframe=purple!50!black,coltitle=white,colback=purple!10,% - overlay={\begin{tcbclipinterior}% - \fill[fill=purple!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{black}{\scalebox{0.66}[0.66]{\textbf{Mà J}}}}} ($(interior.north west)+(5pt,0pt)$);% - \end{tcbclipinterior}} - } -} - -\newcommand\Cle[1]{{\small\sffamily\textlangle \textcolor{orange}{#1}\textrangle}} -\newcommand\cmaj[1]{\tcbox[vignetteMaJ]{#1}\xspace} - -\begin{document} - -\setlength{\aweboxleftmargin}{0.07\linewidth} -\setlength{\aweboxcontentwidth}{0.93\linewidth} -\setlength{\aweboxvskip}{8pt} - -\pagestyle{fancy} - -\thispagestyle{empty} - -\vspace{2cm} - -\begin{center} - \begin{minipage}{0.75\linewidth} - \begin{tcolorbox}[colframe=yellow,colback=yellow!15] - \begin{center} - \begin{tabular}{c} - {\Huge \texttt{wordle} [en]}\\ - \\ - {\LARGE Grids of Wordle,} \\ - \\ - {\LARGE made with \textsf{Ti\textit{k}Z}.} \\ - \end{tabular} - - \bigskip - - {\small \texttt{Version \TPversion{} -- \TPdate}} - \end{center} - \end{tcolorbox} -\end{minipage} -\end{center} - -\begin{center} - \begin{tabular}{c} - \texttt{Cédric Pierquet}\\ - {\ttfamily c pierquet -- at -- outlook . fr}\\ - \texttt{\url{https://github.com/cpierquet/wordle}} -\end{tabular} -\end{center} - -\vspace{0.25cm} - -{$\blacktriangleright$~~Create Wordle grids Wordle/Sutom\footnotemark\footnotetext{\url{https://en.wikipedia.org/wiki/Wordle}}.} - -\vspace{0.25cm} - -{$\blacktriangleright$~~Specify colors and font\footnotemark\footnotetext{Ideas from \url{ttps://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex}}. - -\vspace{0.5cm} - -\begin{center} -\begin{WordleGrid}{CRAZE} - GRAIL TRACK CRAMP CRABS CRAZY CRAZE -\end{WordleGrid} -\end{center} - -\begin{center} -\begin{WordleGrid}[Rounded=0,Colors={lightgray,orange,teal},Style=alt,Unit=0.5,Letters=false]{LADLE} - FLAIL LAPEL LADLE -\end{WordleGrid} -% -\hspace{5mm} -% -\begin{WordleGrid}[Rounded=0,Colors={lightgray,orange,teal},Style=alt,Unit=0.5]{LADLE} - FLAIL LAPEL LADLE -\end{WordleGrid} -\end{center} - -\vspace{0.25cm} - -%\hfill{}\textit{Merci à Denis Bitouzé et à Gilles Le Bourhis pour leurs retours et idées !} - -\smallskip - -\vfill - -\hrule - -\medskip - -\TableauDocumentation - -\medskip - -\hrule - -\vspace*{1cm} - -\newpage - -\phantomsection -\hypertarget{matoc}{} - -\tableofcontents - -\vfill - -\section{History} - -\verb|v0.1.1|~:~~~~Bugfix with english version. - -\verb|v0.1.0|~:~~~~Initial version. - -\newpage - -\section{The wordle package} - -\subsection{The game} - -\begin{noteblock} -Wordle is a web-based word game created and developed by Welsh software engineer Josh Wardle. Players have six attempts to guess a five-letter word, with feedback given for each guess in the form of colored tiles indicating when letters match or occupy the correct position. - -Every day, a five-letter word is chosen which players aim to guess within six tries. After every guess, each letter is marked as either green, yellow or gray: green indicates that letter is correct and in the correct position, yellow means it is in the answer but not in the right position, while gray indicates it is not in the answer at all. Multiple instances of the same letter in a guess, such as the "o"s in "robot", will be colored green or yellow only if the letter also appears multiple times in the answer; otherwise, excess repeating letters will be colored gray. - -\smallskip - -\hfill{\scriptsize \url{https://en.wikipedia.org/wiki/Wordle}} -\end{noteblock} - -\subsection{The package} - -\begin{noteblock} -This package can display, in a \textsf{tex} file, a wordle grid (with \TikZ{} and within a \motcletex!minipage!), with ability : - -\begin{itemize} - \item to change dimensions and colors ; - \item to pick style for misplaced letters ; - \item to change borders and corners ; - \item to print or not the letters. -\end{itemize} - -It's possible to "play" with other words than five-letter words ! -\end{noteblock} - -\begin{importantblock} -Most of source code, in \hologo{LaTeX3}, is given by thread from \texttt{tex.stackexchange}, proposed by user \textsf{3141592653589793238}. -\end{importantblock} - -\subsection{Loading of the package, used packages} - -\begin{importantblock} -The package \packagetex!wordle! loads within the preamble. - -There's no option, and \packagetex!xcolor! isn't loaded. -\end{importantblock} - -\begin{DemoCode}[listing only] -\documentclass{article} -\usepackage{wordle} - -\end{DemoCode} - -\begin{noteblock} -\packagetex!wordle! loads the following packages and libraries : - -\begin{itemize} - \item \packagetex!tikz!; - \item \packagetex!simplekv! ; - \item \packagetex!xstring!. -\end{itemize} - -It’s mostly compatible with \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} or \textsf{xelatex} compilation ! -\end{noteblock} - -\vfill~ - -\pagebreak - -\section{WordleGrid environment} - -\subsection{Environment} - -\begin{cautionblock} -The environment to display a Wordle grid is \packagetex!WordleGrid!. - -It works with keys, between \texttt{[...]} and needs to know : - -\begin{itemize} - \item the good word ; - \item the different guesses. -\end{itemize} - -The code create the grid and the colors ! -\end{cautionblock} - -\begin{DemoCode}[listing only] -\begin{WordleGrid}[keys]{good word} - guess n°1 - guess n°2 - guess n°3 -\end{WordleGrid} -\end{DemoCode} - -\begin{noteblock} -the grid is created with a \motcletex!minipage!, with automatic width and spacings ! -\end{noteblock} - -\begin{DemoCode}[] -%default output -\begin{WordleGrid}{REBUS} - ARISE - ROUTE - RULES - REBUS -\end{WordleGrid} -\end{DemoCode} - -\subsection{Keys and options} - -\begin{tipblock} -The first argument, mandatory and between \texttt{[...]}, proposes the following \Cle{keys} : - -\begin{itemize} - \item \Cle{Colors} : = colors of the boxes \Cle{back,misplaced,good} ; - - \hfill{}default : \Cle{WordleBack,WordleBad,WordleGood},% - \item \Cle{Rounded} := arc for corners, in mm ; \hfill{}default : \Cle{0.1} - \item \Cle{Unit} := width of cases, in cm ; \hfill{}default : \Cle{1} - \item \Cle{Font} := font for letters ; \hfill{}default : \Cle{\textbackslash LARGE\textbackslash bfseries\textbackslash sffamily} - \item \Cle{ColorLetters} := color for letters ; \hfill{}default : \Cle{white} - \item \Cle{BorderColor} := color fot the border ; \hfill{}default : \Cle{white} - \item \Cle{Letters} := boolean to print letters ; \hfill{}default : \Cle{true} - \item \Cle{Style} := style within \Cle{default / other} to change the style ; \hfill{}default : \Cle{default} - \item \Cle{Thick} := thickness of the borders, in mm. \hfill{}default : \Cle{0.25} -\end{itemize} -\vspace*{-\baselineskip}\leavevmode -\end{tipblock} - -\begin{tipblock} -The second argument, optional and between \texttt{\{...\}} is the correct word. - -\smallskip - -Different guesses are given within the body of the environment (line by line or space separated). -\end{tipblock} - -\subsection{Examples} - -\begin{DemoCode}[] -\begin{WordleGrid}{BURGH} - ABATE - HERBS - BURLY - BURGH -\end{WordleGrid} -% -\hspace{5mm} -% -\begin{WordleGrid}[Style=alt]{BURGH} - ABATE HERBS BURLY BURGH -\end{WordleGrid} -\end{DemoCode} - -\begin{DemoCode}[] -\begin{WordleGrid} - [Thickness=0.3,BorderColor=black,% - Colors={lightgray,orange,teal}]{BURGH} - ABATE - HERBS - BURLY - BURGH -\end{WordleGrid} -% -\hspace{5mm} -% -\begin{WordleGrid} - [Rounded=0,Thickness=0.3,BorderColor=black,% - Colors={lightgray,orange,teal}]{BURGH} - ABATE - HERBS - BURLY - BURGH -\end{WordleGrid} -\end{DemoCode} - -\begin{DemoCode}[] -\begin{WordleGrid}[Unit=2,Font=\Huge\ttfamily,ColorLetters=black]{BURGH} - ABATE - HERBS - BURLY - BURGH -\end{WordleGrid} -\end{DemoCode} - -\begin{DemoCode}[] -\begin{WordleGrid}% - [Unit=0.75,Rounded=0,Colors={cyan,orange,violet},Letters=false]{BURGH} - ABATE - HERBS - BURLY - BURGH -\end{WordleGrid} -\hspace{5mm} -\begin{WordleGrid}% - [Unit=0.75,Rounded=0,Colors={cyan,orange,violet},Style=alt] - {BURGH} - ABATE - HERBS - BURLY - BURGH -\end{WordleGrid} -\hspace{5mm} -\begin{WordleGrid}% - [Unit=0.75,Rounded=0,Colors={cyan,orange,violet},Style=alt,Letters=false] - {BURGH} - ABATE - HERBS - BURLY - BURGH -\end{WordleGrid} -\end{DemoCode} - -\end{document}
\ No newline at end of file diff --git a/graphics/pgf/contrib/wordle/doc/wordle-doc-fr.pdf b/graphics/pgf/contrib/wordle/doc/wordle-doc-fr.pdf Binary files differdeleted file mode 100644 index 3277ca9a99..0000000000 --- a/graphics/pgf/contrib/wordle/doc/wordle-doc-fr.pdf +++ /dev/null diff --git a/graphics/pgf/contrib/wordle/doc/wordle-doc-fr.tex b/graphics/pgf/contrib/wordle/doc/wordle-doc-fr.tex deleted file mode 100644 index f365cbb459..0000000000 --- a/graphics/pgf/contrib/wordle/doc/wordle-doc-fr.tex +++ /dev/null @@ -1,422 +0,0 @@ -% !TeX TXS-program:compile = txs:///arara -% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} -% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') - -\documentclass[french,a4paper,11pt]{article} -\usepackage[margin=2cm,includefoot]{geometry} -\def\TPversion{0.1.1} -\def\TPdate{3 septembre 2023} -\usepackage{amssymb,amsfonts,amsmath} -\usepackage[utf8]{inputenc} -%\usepackage[T1]{fontenc} -\usepackage{wordle} -\usepackage{awesomebox} -\usepackage{fontawesome5} -\usepackage{footnote} -\makesavenoteenv{tabular} -\usepackage{enumitem} -\usepackage{tabularray} -\usepackage{fancyvrb} -\usepackage{fancyhdr} -\fancyhf{} -\renewcommand{\headrulewidth}{0pt} -\lfoot{\sffamily\small [wordle]} -\cfoot{\sffamily\small - \thepage{} -} -\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} - -%\usepackage{hvlogos} -\usepackage{hologo} -\providecommand\tikzlogo{Ti\textit{k}Z} -\providecommand\TeXLive{\TeX{}Live\xspace} -\providecommand\PSTricks{\textsf{PSTricks}\xspace} -\let\pstricks\PSTricks -\let\TikZ\tikzlogo -\newcommand\TableauDocumentation{% - \begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}} - {\LARGE \LaTeX} & & & & &\\ - & {\LARGE \hologo{pdfLaTeX}} & & & & \\ - & & {\LARGE \hologo{LuaLaTeX}} & & & \\ - & & & {\LARGE \TikZ} & & \\ - & & & & {\LARGE \TeXLive} & \\ - & & & & & {\LARGE \hologo{MiKTeX}} \\ - \end{tblr} -} - -\usepackage{hyperref} -\urlstyle{same} -\hypersetup{pdfborder=0 0 0} -\setlength{\parindent}{0pt} -\definecolor{LightGray}{gray}{0.9} - -\usepackage{babel} -\AddThinSpaceBeforeFootnotes -\FrenchFootnotes - -\usepackage{listings} - -\usepackage{newverbs} -\newverbcommand{\motcletex}{\color{cyan!75!black}}{} -\newverbcommand{\packagetex}{\color{violet!75!black}}{} - -\usepackage[most]{tcolorbox} -\tcbuselibrary{listingsutf8} -\newtcblisting{DemoCode}[1][]{% - enhanced,width=0.95\linewidth,center,% - bicolor,size=title,% - colback=cyan!2!white,% - colbacklower=cyan!1!white,% - colframe=cyan!75!black,% - listing options={% - breaklines=true,% - breakatwhitespace=true,% - style=tcblatex,basicstyle=\small\ttfamily,% - tabsize=4,% - commentstyle={\itshape\color{gray}}, - keywordstyle={\color{blue}},% - classoffset=0,% - keywords={},% - alsoletter={-},% - keywordstyle={\color{blue}},% - classoffset=1,% - alsoletter={-},% - morekeywords={center,justify},% - keywordstyle={\color{violet}},% - classoffset=2,% - alsoletter={-},% - morekeywords={GrilleSutom},% - keywordstyle={\color{green!50!black}},% - classoffset=3,% - morekeywords={Couleurs,Arrondi,Unite,Police,CouleurLettres,Lettres,Style,Epaisseur,CouleurBordure},% - keywordstyle={\color{orange}} - },% - #1 -} - -\tcbset{vignettes/.style={% - nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,% - boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,% - } -} - -\tcbset{vignetteMaJ/.style={% - fontupper={\vphantom{pf}\footnotesize\ttfamily}, - vignettes,colframe=purple!50!black,coltitle=white,colback=purple!10,% - overlay={\begin{tcbclipinterior}% - \fill[fill=purple!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{black}{\scalebox{0.66}[0.66]{\textbf{Mà J}}}}} ($(interior.north west)+(5pt,0pt)$);% - \end{tcbclipinterior}} - } -} - -\newcommand\Cle[1]{{\small\sffamily\textlangle \textcolor{orange}{#1}\textrangle}} -\newcommand\cmaj[1]{\tcbox[vignetteMaJ]{#1}\xspace} - -\begin{document} - -\setlength{\aweboxleftmargin}{0.07\linewidth} -\setlength{\aweboxcontentwidth}{0.93\linewidth} -\setlength{\aweboxvskip}{8pt} - -\pagestyle{fancy} - -\thispagestyle{empty} - -\vspace{2cm} - -\begin{center} - \begin{minipage}{0.75\linewidth} - \begin{tcolorbox}[colframe=yellow,colback=yellow!15] - \begin{center} - \begin{tabular}{c} - {\Huge \texttt{wordle} [fr]}\\ - \\ - {\LARGE Des grilles de Wordle (Sutom),} \\ - \\ - {\LARGE avec \textsf{Ti\textit{k}Z}.} \\ - \end{tabular} - - \bigskip - - {\small \texttt{Version \TPversion{} -- \TPdate}} - \end{center} - \end{tcolorbox} -\end{minipage} -\end{center} - -\begin{center} - \begin{tabular}{c} - \texttt{Cédric Pierquet}\\ - {\ttfamily c pierquet -- at -- outlook . fr}\\ - \texttt{\url{https://github.com/cpierquet/wordle}} -\end{tabular} -\end{center} - -\vspace{0.25cm} - -{$\blacktriangleright$~~Créer des grilles de Wordle/Sutom\footnotemark\footnotetext{\url{https://fr.wikipedia.org/wiki/Wordle}}.} - -\vspace{0.25cm} - -{$\blacktriangleright$~~Gestion des couleurs, de la taille\footnotemark\footnotetext{Idées venant de \url{ttps://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex}}. - -\vspace{1cm} - -\begin{center} -\begin{GrilleSutom}{LUCIOLE} - LAPINES - LUMIERE - LOURDES - LUCIOLE -\end{GrilleSutom} -\end{center} - -\medskip - -\begin{center} -\begin{GrilleSutom}[Arrondi=0,Couleurs={lightgray,orange,teal},Style=alt,Unite=0.5,Lettres=false]{REBUS} - ABRIS - ROUTE - RUDES - REBUS -\end{GrilleSutom} -% -\hspace{5mm} -% -\begin{GrilleSutom}[Arrondi=0,Couleurs={lightgray,orange,teal},Style=alt,Unite=0.5]{REBUS} - ABRIS - ROUTE - RUDES - REBUS -\end{GrilleSutom} -\end{center} - -\vspace{0.5cm} - -%\hfill{}\textit{Merci à Denis Bitouzé et à Gilles Le Bourhis pour leurs retours et idées !} - -\smallskip - -\vfill - -\hrule - -\medskip - -\TableauDocumentation - -\medskip - -\hrule - -\vspace*{1cm} - -\newpage - -\phantomsection -\hypertarget{matoc}{} - -\tableofcontents - -\vfill - -\section{Historique} - -\verb|v0.1.0|~:~~~~Correction d'un bug avec la version anglaise. - -\verb|v0.1.0|~:~~~~Version initiale. - -\newpage - -\section{Le package wordle} - -\subsection{Le principe du jeu} - -\begin{noteblock} -Wordle est un jeu de lettres en ligne gratuit développé en 2021 par Josh Wardle. Ce jeu est une adaptation directe du jeu télévisé américain Lingo (Motus en France) qui propose de faire deviner un mot par plusieurs tentatives, en indiquant pour chacune d'entre-elles la position des lettres bien placées et mal placées. - -Le but du jeu est de deviner un mot spécifique de cinq lettres en un maximum de six tentatives, en tapant des lettres sur un écran de six lignes de cinq cases chacune. La personne qui joue inscrit sur la première ligne un mot de cinq lettres de son choix et entre sa proposition. Après chaque proposition, les lettres apparaissent en couleurs : le fond gris représente les lettres qui ne se trouvent pas dans le mot recherché, le fond jaune représente les lettres qui se trouvent ailleurs dans le mot, et le fond vert représente les lettres qui se trouvent à la bonne place dans le mot à trouver. - -\smallskip - -\hfill{\scriptsize \url{https://fr.wikipedia.org/wiki/Wordle}} -\end{noteblock} - -\subsection{Le package} - -\begin{noteblock} -Le package propose de quoi afficher, dans son document \LaTeX, une grille de Wordle (ou de Sutom) à l'aide de \TikZ{} et d'une \motcletex!minipage!, avec la possibilité : - -\begin{itemize} - \item de spécifier les dimensions, la couleur ; - \item de choisir le style des lettres mal placées ; - \item de personnaliser les bordure et les coins ; - \item d'afficher ou non les lettres. -\end{itemize} - -Contrairement au jeu \og initial \fg, il est possible de travailler avec des mots de longueur différente de 5 ! -\end{noteblock} - -\begin{importantblock} -Une bonne partie du code, en \hologo{LaTeX3}, est issu d'un fil sur \texttt{tex.stackexchange}, et proposé par l'internaute \textsf{3141592653589793238}. -\end{importantblock} - -\subsection{Chargement du package, packages utilisés} - -\begin{importantblock} -Le package se charge, de manière classique, dans le préambule. - -Il n'existe pas d'option pour le package, et \packagetex!xcolor! n'est pas chargé. -\end{importantblock} - -\begin{DemoCode}[listing only] -\documentclass{article} -\usepackage{wordle} - -\end{DemoCode} - -\begin{noteblock} -\packagetex!wordle! charge les packages suivants : - -\begin{itemize} - \item \packagetex!tikz!; - \item \packagetex!simplekv! ; - \item \packagetex!xstring!. -\end{itemize} - -Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}. -\end{noteblock} - -\vfill~ - -\pagebreak - -\section{Environnement GrilleSutom} - -\subsection{Fonctionnement global} - -\begin{cautionblock} -L'environnement dédié à la création de la grille du Sutom est \packagetex!GrilleSutom!. - -Il fonctionne avec un système de clés, entre \texttt{[...]}, et nécessite de préciser : - -\begin{itemize} - \item le bon mot ; - \item les différentes propositions. -\end{itemize} - -Le code se charge de mettre en forme (grâce à une \motcletex!minipage!) la grille et les différentes couleurs d'aide. -\end{cautionblock} - -\begin{DemoCode}[listing only] -\begin{GrilleSutom}[clés]{mot à trouver} - proposition n°1 - proposition n°2 - proposition n°3 -\end{GrilleSutom} -\end{DemoCode} - -\begin{noteblock} -Comme indiqué dans l'introduction, la grille est créée à l'aide d'un environnement \motcletex!minipage!, avec gestion automatique de la largeur et des espacements. -\end{noteblock} - -\begin{DemoCode}[] -%sortie par défaut -\begin{GrilleSutom}{SUTOM} - SAUCE - SAUTS - SUTOM -\end{GrilleSutom} -\end{DemoCode} - -\subsection{Clés et options} - -\begin{tipblock} -Le premier argument, optionnel et entre \texttt{[...]}, propose les \Cle{clés} suivantes : - -\begin{itemize} - \item \Cle{Couleurs} : = couleur des cases, sous la forme \Cle{fond,mal placée,bien placée} ; - - \hfill{}défaut : \Cle{cyan!75!black,yellow,red},% - \item \Cle{Arrondi} := arrondi des coins, en mm ; \hfill{}défaut : \Cle{0.1} - \item \Cle{Unite} := largeur des cases, en cm ; \hfill{}défaut : \Cle{1} - \item \Cle{Police} := police des lettres ; \hfill{}défaut : \Cle{\textbackslash LARGE\textbackslash bfseries\textbackslash sffamily} - \item \Cle{CouleurLettres} := couleur des lettres ; \hfill{}défaut : \Cle{white} - \item \Cle{CouleurBordure} := couleur de la bordure des cases ; \hfill{}défaut : \Cle{white} - \item \Cle{Lettres} := booléen pour afficher les lettre ; \hfill{}défaut : \Cle{true} - \item \Cle{Style} := style parmi \Cle{rond / autre} pour changer le style ; \hfill{}défaut : \Cle{rond} - \item \Cle{Epaisseur} := épaisseur des traits, en mm. \hfill{}défaut : \Cle{0.25} -\end{itemize} -\vspace*{-\baselineskip}\leavevmode -\end{tipblock} - -\begin{tipblock} -Le second argument, obligatoire et entre \texttt{\{...\}} correspond au mot correct à trouver. - -\smallskip - -Les différentes propositions sont à donner (ligne par ligne ou séparées par des espaces) dans le corps de l'environnement. -\end{tipblock} - -\subsection{Exemples} - -\begin{DemoCode}[] -\begin{GrilleSutom}{BOURDON} - BALEINE - BOURBON - BROMURE - BOURDON -\end{GrilleSutom} -% -\hspace{5mm} -% -\begin{GrilleSutom}[Style=alt]{BOURDON} - BALEINE BOURBON BROMURE BOURDON -\end{GrilleSutom} -\end{DemoCode} - -\begin{DemoCode}[] -\begin{GrilleSutom} - [Style=alt,Epaisseur=0.3,CouleurBordure=black,% - Couleurs={lightgray,orange,teal}]% - {BOURDON} - BALEINE BOURBON BROMURE BOURDON -\end{GrilleSutom} -% -\hspace{5mm} -% -\begin{GrilleSutom} - [Arrondi=0,Epaisseur=0.3,CouleurBordure=black,% - Couleurs={lightgray,orange,teal}]% - {BOURDON} - BALEINE BOURBON BROMURE BOURDON -\end{GrilleSutom} -\end{DemoCode} - -\begin{DemoCode}[] -\begin{GrilleSutom}[Unite=2,Police=\Huge\ttfamily,CouleurLettres=black]{BOURDON} - BALEINE - BOURBON - BROMURE - BOURDON -\end{GrilleSutom} -\end{DemoCode} - -\begin{DemoCode}[] -\begin{GrilleSutom}% - [Unite=0.75,Arrondi=0,Couleurs={cyan,orange,violet},% - Style=alt,Lettres=false]{REBUS} - ABRIS - ROUTE - RUDES - REBUS -\end{GrilleSutom} -\hspace{5mm} -\begin{GrilleSutom}% - [Unite=0.75,Arrondi=0,Couleurs={cyan,orange,violet},Style=alt]{REBUS} - ABRIS - ROUTE - RUDES - REBUS -\end{GrilleSutom} -\end{DemoCode} - -\end{document}
\ No newline at end of file diff --git a/graphics/pgf/contrib/wordle/tex/wordle.sty b/graphics/pgf/contrib/wordle/tex/wordle.sty deleted file mode 100644 index 4df1801ba0..0000000000 --- a/graphics/pgf/contrib/wordle/tex/wordle.sty +++ /dev/null @@ -1,298 +0,0 @@ -% Author.........: C. Pierquet -% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf -% Inspiration....: https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{wordle}[2023/09/03 v0.1.1 Wordle grid] -% 0.1.1 Coorection d'un bug sur la version anglaise -% 0.1.0 Version initiale + quelques modèles - -%------Packages utiles -\RequirePackage{tikz} -\RequirePackage{simplekv} -\RequirePackage{xstring} - -%commandes utiles -\usepackage{expl3} -\ExplSyntaxOn - -%boite en [fr] -\cs_new:Npn \l__sutom_boite_lettre:nn #1#2#3 -{ - \ifboolKV[SUTOM]{Lettres}% - {% - \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#2} ; - }% - {% - \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ; - }% -} - -\cs_new:Npn \l__sutom_boite_lettre_rond:nn #1#2#3#4 -{ - \IfStrEq{\SutomStyle}{rond} - {% - \tikz {\draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ; - \ifboolKV[SUTOM]{Lettres}% - {% - \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}] node[font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ; - }% - {% - \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}]; - }% - }% - }% - {% - \ifboolKV[SUTOM]{Lettres}% - {% - \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=0\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ; - }% - {% - \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ; - }% - }% -} - -%boite en [en] -\cs_new:Npn \l__wordle_boite_lettre:nn #1#2#3 -{ - \ifboolKV[WORDLE]{Letters}% - {% - \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#2} ; - }% - {% - \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ; - }% -} - -\cs_new:Npn \l__wordle_boite_lettre_rond:nn #1#2#3#4 -{ - \IfStrEq{\SutomStyle}{default} - {% - \ifboolKV[WORDLE]{Letters}% - {% - \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ; - }% - {% - \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ; - }% - }% - {% - \tikz {\draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ; - \ifboolKV[WORDLE]{Letters}% - {% - \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}] node[font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ; - }% - {% - \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}]; - }% - }% - }% -} - -\seq_new:N \l_wordle_seq % the answer -\prop_new:N \l_wordle_prop % count letters in wordle -\seq_new:N \l_words_seq % list of all words -\prop_new:N \l_word_prop % count letters in word -\int_new:N \l_letter_int % index of current letter in word - -% a conditional for nonnegative prop counter in \l_word_prop -\prg_new_protected_conditional:Npnn \if_wordle_letter_nonnegative:n #1 {TF} -{ - \prop_if_in:NnTF \l_word_prop {#1} - { % letter in in prop - \prop_get:NnN \l_word_prop {#1} \l_tmpa_tl - \int_compare:nNnTF {\l_tmpa_tl} < {0} - {\prg_return_false:} {\prg_return_true:} - } - {\prg_return_false:} -} - -% a conditional for comparing letters -\prg_new_protected_conditional:Npnn \if_wordle_letters_agree:n #1 {T, TF} -{ - \str_set:Nx \l_tmpa_str {\seq_item:Nn \l_wordle_seq {\l_letter_int}} - \str_if_eq:nVTF {#1} \l_tmpa_str {\prg_return_true:} {\prg_return_false:} -} - -% add #3 to <prop=#1>.#2 -\cs_new_protected:Npn \wordle__add_to_prop_counter:Nnn #1#2#3 -{ - \prop_put_if_new:Nnn #1 {#2} {0} - \prop_pop:NnN #1 {#2} \l_tmp_a - \prop_put:Nnx #1 {#2} {\int_eval:n {#3+\l_tmp_a}} -} - -% make \l_wordle_prop<x> = #x's in wordle_seq -\cs_new_protected:Npn \count_letters_in_wordle:n #1 -{ - \wordle__add_to_prop_counter:Nnn \l_wordle_prop {#1} {1}% -} - -% first run: subtract correct matches from letter counts -\cs_new:Npn \count_letters_in_word:n #1 -{ - \int_incr:N \l_letter_int - \if_wordle_letters_agree:nT {#1} - { \wordle__add_to_prop_counter:Nnn \l_word_prop {#1} {-1} }% -} - -%commande [fr] -% on the second run we print a coloured wordle word -\cs_new:Npn \write_letters_in_word:n #1 -{ - \int_incr:N \l_letter_int - \if_wordle_letters_agree:nTF {#1} - { \l__sutom_boite_lettre:nn {\SutomBienPlacee}{#1}{\SutomRounded} } - { - % subtract 1 from the prop counter - \wordle__add_to_prop_counter:Nnn \l_word_prop {#1} {-1} - % if the counter is non-negative this is a pseudo match - \if_wordle_letter_nonnegative:nTF {#1} - { \l__sutom_boite_lettre_rond:nn {\SutomCoulFond}{\SutomCoulMalPlacee}{#1}{\SutomRounded} } - { \l__sutom_boite_lettre:nn {\SutomCoulFond}{#1}{\SutomRounded} } - }% -} - -%commande [en] -% on the second run we print a coloured wordle word -\cs_new:Npn \write_letters_in_wordle:n #1 -{ - \int_incr:N \l_letter_int - \if_wordle_letters_agree:nTF {#1} - { \l__wordle_boite_lettre:nn {\SutomBienPlacee}{#1}{\SutomRounded} } - { - % subtract 1 from the prop counter - \wordle__add_to_prop_counter:Nnn \l_word_prop {#1} {-1} - % if the counter is non-negative this is a pseudo match - \if_wordle_letter_nonnegative:nTF {#1} - { \l__wordle_boite_lettre_rond:nn {\SutomCoulFond}{\SutomCoulMalPlacee}{#1}{\SutomRounded} } - { \l__wordle_boite_lettre:nn {\SutomCoulFond}{#1}{\SutomRounded} } - }% -} - -%clés [fr] -\defKV[SUTOM]{% - Couleurs=\def\SutomCouleurs{#1},% - Arrondi=\def\SutomRounded{#1},% - Unite=\def\SutomUnit{#1},% - Police=\def\SutomFonte{#1},% - CouleurLettres=\def\SutomFonteColor{#1},% - Style=\def\SutomStyle{#1},% - Epaisseur=\def\SutomWidth{#1},% - CouleurBordure=\def\SutomBorder{#1} -} - -\setKVdefault[SUTOM]{% - Couleurs={cyan!75!black,yellow,red},% - Arrondi=0.1,% - Unite=1,% - Police=\LARGE\bfseries\sffamily,% - CouleurLettres=white,% - Lettres=true,% - Style=rond,% - Epaisseur=0.25,% - CouleurBordure=white -} - -%environnement [fr] -\NewDocumentEnvironment{GrilleSutom}{ O{} m b }% -{% - \restoreKV[SUTOM]% - \setKV[SUTOM]{#1}% - \StrBefore{\SutomCouleurs}{,}[\SutomCoulFond]% - \StrBetween[1,2]{\SutomCouleurs}{,}{,}[\SutomCoulMalPlacee]% - \StrBehind[2]{\SutomCouleurs}{,}[\SutomBienPlacee]% - \StrLen{#2}[\SutomNbLettres]% - \def\SutomLarg{\fpeval{1.01*\SutomUnit*\SutomNbLettres}}% - \begin{minipage}{\SutomLarg~cm} - \lineskip=0pt% - \parindent=0pt% - % split the answer into letters - \seq_set_split:Nnn \l_wordle_seq {} {#2} - % we need to count the number of times each letter appears in \l_wordle_seq - \prop_clear:N \l_wordle_prop - \tl_map_function:nN {#2} \count_letters_in_wordle:n - % split the solution into words - \regex_split:nnN {\s} {#3} \l_words_seq - % process the words - \seq_map_inline:Nn \l_words_seq - { - \int_zero:N \l_letter_int - \prop_set_eq:NN \l_word_prop \l_wordle_prop - \tl_map_function:nN {##1} \count_letters_in_word:n - \int_zero:N \l_letter_int - \tl_map_function:nN {##1} \write_letters_in_word:n - \par - } -}% -{% - \end{minipage}% -} - -%clés [en] -\definecolor{WordleBack}{HTML}{797D7F} -\definecolor{WordleBad}{HTML}{CAB557} -\definecolor{WordleGood}{HTML}{6AAB64} - -\defKV[WORDLE]{% - Colors=\def\SutomCouleurs{#1},% - Rounded=\def\SutomRounded{#1},% - Unit=\def\SutomUnit{#1},% - Fonte=\def\SutomFonte{#1},% - ColorLetters=\def\SutomFonteColor{#1},% - Style=\def\SutomStyle{#1},% - Thickness=\def\SutomWidth{#1},% - BorderColor=\def\SutomBorder{#1} -} - -\setKVdefault[WORDLE]{% - Colors={WordleBack,WordleBad,WordleGood},% - Rounded=0.1,% - Unit=1,% - Fonte=\LARGE\bfseries\sffamily,% - CouleurLettres=white,% - Letters=true,% - Style=default,% - Thick=0.25,% - BorderColor=white -} - -%environnement [en] -\NewDocumentEnvironment{WordleGrid}{ O{} m b } -{% - \restoreKV[WORDLE]% - \setKV[WORDLE]{#1}% - \StrBefore{\SutomCouleurs}{,}[\SutomCoulFond]% - \StrBetween[1,2]{\SutomCouleurs}{,}{,}[\SutomCoulMalPlacee]% - \StrBehind[2]{\SutomCouleurs}{,}[\SutomBienPlacee]% - \StrLen{#2}[\SutomNbLettres]% - \def\SutomLarg{\fpeval{1.01*\SutomUnit*\SutomNbLettres}}% - \begin{minipage}{\SutomLarg~cm} - \parindent=0pt - \lineskip=0pt - % split the answer into letters - \seq_set_split:Nnn \l_wordle_seq {} {#2} - % we need to count the number of times each letter appears in \l_wordle_seq - \prop_clear:N \l_wordle_prop - \tl_map_function:nN {#2} \count_letters_in_wordle:n - % split the solution into words - \regex_split:nnN {\s} {#3} \l_words_seq - % process the words - \seq_map_inline:Nn \l_words_seq - { - \int_zero:N \l_letter_int - \prop_set_eq:NN \l_word_prop \l_wordle_prop - \tl_map_function:nN {##1} \count_letters_in_word:n - \int_zero:N \l_letter_int - \tl_map_function:nN {##1} \write_letters_in_wordle:n - \par - } -}% -{% - \end{minipage}% -} - -\ExplSyntaxOff - -\endinput
\ No newline at end of file diff --git a/graphics/pgf/contrib/wordle/wordle-doc-en.pdf b/graphics/pgf/contrib/wordle/wordle-doc-en.pdf Binary files differnew file mode 100644 index 0000000000..7845bc31b5 --- /dev/null +++ b/graphics/pgf/contrib/wordle/wordle-doc-en.pdf diff --git a/graphics/pgf/contrib/wordle/wordle-doc-en.tex b/graphics/pgf/contrib/wordle/wordle-doc-en.tex new file mode 100644 index 0000000000..a638ed9496 --- /dev/null +++ b/graphics/pgf/contrib/wordle/wordle-doc-en.tex @@ -0,0 +1,921 @@ +% !TeX TS-program = pdflatex + +\documentclass[svgnames]{report} +\usepackage{wordle} +\usepackage{manfnt} +\usepackage{enumitem} +\setlist[description]{font=\sffamily\bfseries\color{ForestGreen},labelwidth=\textwidth} +\usepackage{booktabs} +\usepackage[a4paper,margin=18mm]{geometry} +\synctex=1 +\parindent=0pt +\parskip=2mm + +\usepackage{cmap} % fix search and cut-and-paste in Acrobat +\setcounter{secnumdepth}{0} + +\usepackage{listings}\lstset{language=[LaTeX]TeX,framerule=2pt} +\lstset{language=[LaTeX]TeX, + texcsstyle=*\bfseries\color{Peru}, + backgroundcolor=\color{Ivory}, + numbers=none, + breaklines=true, + keywordstyle=\color{Sienna}, + commentstyle=\color{BurlyWood}, + tabsize=2, + morekeywords={Wordle,wordle,GrilleSutom}, + resetmargins=true, +} +% hyperref links to ctan +\newcommand\ctan[1]{\href{https://www.ctan.org/pkg/#1}{\texttt{#1}}} + +\newcommand\Section[1]{\subsection{\textcolor{DarkGreen}{#1}}} + +\ExplSyntaxOn +\NewDocumentCommand\option{ omo }{% + \IfNoValueTF{#1}{\textsf{#2}} + {% + \textbf{\textcolor{Crimson}{#2}} + \str_if_empty:nF {#1}{~(default:~\textcolor{DarkRed}{#1})}% + \IfNoValueF{#3}{\hfill\textcolor{Gray}{[accepts:~#3]}}% + }% + \index{#2}% +} +\ExplSyntaxOff + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{imakeidx} +\indexsetup{level=\section*, toclevel=section, noclearpage} +\makeindex[intoc,columns=3] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[skins,listings]{tcolorbox} +\usetikzlibrary{backgrounds, shapes.geometric} % for tikz={framed,...} + +\DeclareTotalTCBox\keyword{ O{} v }{ + fontupper=\sffamily, + nobeforeafter, + skin=tile, + verbatim, + on line, + tcbox raise base, + top=0pt,bottom=0pt,left=0mm,right=0mm, + colback=OldLace, + colupper=ForestGreen, + #1} +{#2} + +\lstdefinestyle{tikz}{style=tcblatex, + classoffset=0, + texcsstyle=*\color{DarkGoldenrod},% + deletetexcs={begin, end}, + moretexcs={,% + node, + draw, + true, + false + },% + classoffset=1, + keywordstyle=\color{ForestGreen},% + morekeywords={wordle,GrilleSutom}, + classoffset=2, + keywordstyle=\color{Crimson},% + morekeywords={ + absent, + align, + border, + borders, + case, + color, + colors, + colour, + colours, + correct, + empty, + font, + frame, + frames, + letters, + lower, + name, + natural, + noalign, + noletters, + params, + present, + rounded, + rows, + scale, + sensitive, + separation, + shape, + shapes, + size, + strict, + style, + style, + text, + thickness, + tikz, + tile, + upper, + }, + classoffset=3, + keywordstyle=\color{DarkOrange},% + morekeywords={ + hard, + standard, + sutom, + } +} + +\DeclareTCBListing{example}{ !O{} }{% + skin=bicolor, + colframe=MediumSeaGreen, + colbacklower=OldLace, + colback=LawnGreen!20, + lefthand width=50mm, + listing style=tikz, + sidebyside, + sidebyside align=center, + sidebyside gap=4mm, + text and listing, + text outside listing, + boxsep = 0pt, + #1 +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\makeatletter +\author{Andrew Mathas and Cédric Pierquet} +\usepackage{tikz} +\usetikzlibrary{shadows.blur} +\tikzset{shadowed/.style={blur shadow={shadow blur steps=5}, + bottom color=ForestGreen!30, + draw=MediumSeaGreen!70, + shade, + font=\normalfont\Huge\bfseries\scshape, + rounded corners=8pt, + top color=SeaGreen, + }, + boxes/.style={draw=SeaGreen, + fill=Cornsilk, + font=\sffamily\small, + inner sep=5pt, + rectangle, + rounded corners=8pt, + text=DarkGreen, + } +} +\newcommand\Wordle{% + \begin{tikzpicture}[remember picture,overlay] + \node[yshift=-3cm] at (current page.north west) + {\begin{tikzpicture}[remember picture, overlay] + \draw[shadowed](30mm,0) rectangle node[white]{wordle} (\paperwidth-30mm,16mm); + \node[anchor=west,boxes] at (4cm,0cm) {\@author}; + \node[anchor=east,boxes] at (\paperwidth-4cm,0) {Version \wordle@version}; + \end{tikzpicture} + }; + \end{tikzpicture} + \vspace*{20mm} +} + +\def\@oddfoot{\textsc{Wordle} --- \wordle@version~(released~\wordle@release)\hfill\thepage} + +\usepackage[colorlinks=true,linkcolor=blue,urlcolor=MediumBlue]{hyperref} +\hypersetup{ + pdfcreator={ Generated by pdfLaTeX }, + pdfinfo={ + Author ={ Andrew Mathas and Cédric Pierquet}, + Keywords={ wordle }, + License ={ LaTeX Project Public License v1.3c or later }, + Subject ={ LaTeXing Wordle puzzles }, + Title ={ Wordle - \wordle@version } + }, +} +\makeatother + +\begin{document} + + \Wordle + + This package provides a stupidly feature-rich way of creating + \keyword{Wordle} puzzles in \LaTeX, which + \href{https://en.wikipedia.org/wiki/Wordle}{Wikipedia} describes as a + hugely popular web-based word game created and developed by Welsh + software engineer Josh Wardle. This package is an enhanced version of + one of the solutions to a question asked by \textcolor{FireBrick}{valerio\_new} + on + \href{https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex/660056#660056}{tex.stackexchange.com}. + + This package provides the \keyword{wordle} environment, which uses the + syntax: + + \begin{tcblisting}{ + listing only, + skin=bicolor, + colframe=MediumSeaGreen, + colbacklower=OldLace, + colback=LawnGreen!20, + listing style=tikz, + boxsep = 0pt, + } + % \usepackage{wordle} + \begin{wordle}[wordle settings]{solution}[optional tikz commands] + guess1 guess2 ... + \end{wordle} + \end{tcblisting} + \index{environment!wordle} + \index{wordle} + + and the \keyword{GrilleSutom} environment, for \keyword{Sutom}, the French version of + the games: + + \begin{tcblisting}{ + listing only, + skin=bicolor, + colframe=MediumSeaGreen, + colbacklower=OldLace, + colback=LawnGreen!20, + listing style=tikz, + boxsep = 0pt, + } + % \usepackage{wordle} + \begin{GrilleSutom}[sutom settings]{solution}[optional TikZ commands] + guess1 guess2 ... + \end{GrilleSutom} + \end{tcblisting} + \index{environment!GrilleSutom} + \index{GrilleSutom} + \index{sutom} + + The words in the puzzle can be entered on a single lines, or on separate + lines. Here are some examples: + + \begin{example} + \begin{wordle}{ANVIL} + % English version of sutom (wordle) + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + \begin{example} + % French version of wordle (sutom) + \begin{GrilleSutom}{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + As in the online puzzles, the \keyword{wordle} environment + automatically colours the letter tiles + \keyword[colback=WordleCorrect,colupper=White]{green} + when the letter is in the same position as the solution, and as + \keyword[colback=WordlePresent,colupper=White]{gold} when + the letter is in the solution but it is not in the correct position. + Similarly, \keyword{GrilleSutom} colours the correct letters + \keyword[colback=WordleSutomCorrect,colupper=White]{red} + and the present letters + \keyword[colback=WordleSutomPresent,colupper=White]{gold}. + As described below, these colours can be changed to suit your tastes. + + The number of letters in the puzzle is determined by the solution, + being constrained only by the page width. + + \begin{example} + \begin{wordle}[rows=4]{orange} + normal + orders + orange + \end{wordle} + \end{example} + + The letters in the puzzle can be entered in upper case, lower case, or + mixed case. By default, the case of the letters is ignored when + determining the colours of the letter tiles. + + As described below, the \keyword{wordle} and \keyword{GrilleSutom} + environments accept an array of different options that change the + colours, fonts, and shapes of the tile. In addition, you can the case + sensitivity of the environments, add extra rows to the puzzle, disable + special formatting of the \textit{letter tiles}. These options are + given as a comma separated list key-value pairs. They can be set + locally, using the optional argument of the \keyword|wordle| + environment, or they can be set globally (more accurately, in the + current \LaTeX\ group) using the \keyword{\WordleSetup} command + \index{\textbackslash WordleSetup}, or as global package options, via + \keyword{\usepackage[options]{wordle}}. The order of the options does + not matter, except that later options take precedence over earlier + ones, with the exception of \option{tikz} and \option{tile style} keys + which are always applied last. + + The \keyword{wordle} puzzles are drawn using \ctan{TikZ}, with each + letter in the puzzle sitting inside a \ctan{TikZ} node. Many of the + options control the settings of these nodes. + + The descriptions of the options below are grouped according to their + function. + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Wordle styles} + + The \option{style} key can be used to change many characteristics of + the tiles in a \keyword{wordle} puzzle, including their colours, the + fonts and so on. The more common settings can be setting using the + \option{style} keyword. \textit{The style should always be set first + because, otherwise, the style settings may override earlier settings.} + + The following styles are supported: + + \textcolor{DarkOrange}{sutom} + \index{style!sutom} + \index{sutom} + + \begin{example} + \begin{wordle}[style=sutom]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + The \textcolor{DarkOrange}{sutom} style is the default + style for the \keyword{GrilleSutom} environment. + + \textcolor{DarkOrange}{standard} + \index{style!standard} + + \begin{example} + \begin{wordle}[style=standard]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + The \textcolor{DarkOrange}{standard} style is the default style for the + \keyword{wordle} environment. + + \textcolor{DarkOrange}{hard} + \index{style!hard} + + \begin{example} + \begin{wordle}[style=hard]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Options for the individual styles of the letter tiles} + + There are four types of letter tiles in \keyword{wordle}: + \option{absent}, \option{present}, \option{correct} and + \option{empty}, corresponding to letters not in the solution, + incorrectly placed letters, correctly placed letters, and empty + tiles, respectively. The options in this section can be used to set + the text, tile and border colours, shapes, and frames of these tiles. + + The letter tiles in a \keyword{wordle} environment are typeset inside + a \ctan{TikZ} \keyword{\node}. The options below control the different + style settings of these nodes. + + \option[--]{colours}[comma separated list of valid colours] + + The \option{colours} option is a short-hand for specifying the colours + of the \option{absent}, \option{present}, \option{correct} and + \option{empty} tiles, in that order. Later colours can be omitted but + the colours should be given in this order, from left to right. + If only one colour is given then this colour is applied to all tiles. + + \begin{example} + \begin{wordle}[colours={LightGray,Orange,Teal}]{cellar} + pounds + taylor + cellar + \end{wordle} + \end{example} + + The colours can also be set individually using \option{absent colour}, + \option{present colour}, \option{correct colour} and \option{empty + colour}. To support north American dialects, is also possible to use + \option{colors}, \option{absent color}, \option{present color}, + \option{correct color} and \option{empty color}. + + \begin{example} + \begin{wordle}[absent colour=DarkGray,present color=Salmon, + correct color=SeaGreen]{cellar} + pounds + taylor + cellar + \end{wordle} + \end{example} + + \option[white]{borders}[comma separated list of valid colours] + + Similar to the \option{colours} option, this is a short-hand for the + setting border colour of the \option{absent}, \option{present}, + \option{correct} and \option{empty} tiles, in that order. + If only one colour is given then this colour is applied to all tiles. + + \begin{example} + \begin{wordle}[borders={red, orange,blue}]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + You can set the border borders of the individual tiles using + \option{absent border}, \option{present border}, \option{correct + border} and \option{empty border} + + \option[false]{frames}[comma separated list of true/false] + + This is a short-hand for adding a rectangular frame around the + \option{absent}, \option{present}, \option{correct} and \option{empty} + tiles, in that order, with the same background colour as the + \option{absent} file. This is only useful for non-square tiles. + + \begin{example} + \begin{wordle}[frames={false,true,true}, shapes=circle]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + You can set the frames of the individual tiles using + \option{absent frame}, \option{present frame}, + \option{correct frame} and \option{empty~frame}. + + \option[rectangle]{shapes}[comma separated list of TikZ shapes] + + Similar to the \option{colours} option, this is a short-hand for the + setting shape colour of the \option{absent}, \option{present}, + \option{correct} and \option{empty} tiles, in that order. + + \begin{example} + \begin{wordle}[shapes={circle, rectangle, circle}]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + You can set the shape shapes of the individual tiles using + \option{absent shape}, \option{present shape}, + \option{correct shape} and \option{empty shape} + You can use the shapes provided by the \ctan{TikZ} + \texttt{shapes.geometric} package, including \texttt{diamond}, + \texttt{ellipse}, \texttt{trapezium} and \texttt{star}; see + section~71.2 of the \ctan{TikZ} manual. + + \begin{example} + % \usepackage{shapes.geometric} + \begin{wordle}[shapes={diamond, ellipse, star}]{LADLE} + FLAIL + LAPEL + * + LADLE + LOVER + \end{wordle} + \end{example} + + \option[white]{text}[comma separated list of valid colours] + + This is a short-hand for the setting the text colours of the + \option{absent}, \option{present}, \option{correct} and \option{empty} + tiles, in that order. + + \begin{example} + \begin{wordle}[text={red, orange,blue}]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + You can set the text borders of the individual tiles using + \option{absent text}, \option{present border}, \option{correct + text} and \option{empty border} + + + \Section{Common tile characteristics} + + The following options apply to all tiles. + + \option[]{noalign} (default) \qquad + \option[]{align} + + The options tweak the vertical alignment of the letters in each row of + the puzzle. This is only likely to be useful if you have lower case + letters in your puzzle. + + \begin{example} + \begin{wordle}[align]{agony} + groan + angry + agony + \end{wordle} + \end{example} + + \begin{example} + \begin{wordle}[noalign]{agony} % the default + groan + angry + agony + \end{wordle} + \end{example} + + \option[\textbackslash Large\textbackslash bfseries\textbackslash sffamily]{font} + [LaTeX font specification] + + Sets the font used by all \keyword{wordle} letters. Any valid sequence + of \LaTeX\ font commands can be used. + + \begin{example} + \begin{wordle}[font=\large\sffamily]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + \option[1mm]{rounded}[a length] + + Set TikZ \texttt{rounded corners} key for the \keyword{wordle} letter tiles. + + \begin{example} + \begin{wordle}[rounded=2mm]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + \option[0.5mm]{separation}[a length] + + Sets the separation distance between the \keyword{wordle} letter + tiles. + + \begin{example} + \begin{wordle}[separation=2mm, borders=black]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + \option[1]{scale}[a number] + + The \option{scale} option rescales the \keyword{wordle} environment. + The \option{scale} alters the dimensions sets by the \option{rounded}, + \option{separation} \option{size} and \option{thickness} options. If + you change the scale, then you will almost certainly want + to change font size font as well, which you can do using the + \option{font} option: + + \begin{example} + \begin{wordle}[scale=1.5, font=\huge\bfseries]{SIZE} + HELP + WISE + SIZE + \end{wordle} + \end{example} + + \option[8mm]{size}[a length] + + The \option{size} option sets the size of the \keyword{wordle} letter + tiles. Unlike the \option{scale} option, \option{size} only changes + the dimensions of the letter tiles. + + \begin{example} + \begin{wordle}[size=10mm, font=\huge\bfseries]{LADLE} + FLAIL LAPEL * LADLE + \end{wordle} + \end{example} + + \option[0.25mm]{thickness}[a length] + + Sets the border thickness of the \keyword{wordle} letter tiles. By + default, the borders of the tiles are white, which makes this setting + hard to see, so the following example changes the border to red. + + \begin{example} + \begin{wordle}[thickness=1mm, borders=red]{LADLE} + FLAIL + LAPEL + LADLE + \end{wordle} + \end{example} + + \option[--]{tile style}[comma separated list of TikZ style keys] + + A comma-separated list of \ctan{Tikz} node keys that are appended to + the style of the \ctan{TikZ} node that contains each of the + \keyword{wordle} letters. Some of the options given above can be set + directly using the \option{tile style} option. When using the + \option{tile style}, be careful not to break the special formatting of + letters provided by the \keyword{wordle} environment.\par + + With most of the \keyword{wordle} options, the latter options take + precedence, however, the \option{tile style} option is applied last, + so it overrides any competing options. + + % TODO: Fix this because it looks like this style is being applied + % twice because the PDF file shows a rotation of 90 = 2*45... + \begin{example} + \begin{wordle}[tile style={rotate=45}]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Extra rows and columns} + + By default, all of the words in a \keyword{wordle} puzzle are assumed + to have the same number of letters as the solution, and the number of + rows in the puzzle is number of words given in the environment. The + options below give more control over the number of rows and columns in + the puzzle. + + \option[]{letters} (default)\qquad + \option[]{noletters} + + By default, the letters in the puzzle are printed. You can hide the + letters from the puzzle, while still keeping the \keyword{wordle} tile + colouring, using \option{noletters}. + + \begin{example} + \begin{wordle}[letters]{CRAZE} % the default + TRACE + CREAM + CRAZE + \end{wordle} + \end{example} + + \begin{example} + \begin{wordle}[noletters]{CRAZE} + TRACE + CREAM + CRAZE + \end{wordle} + \end{example} + + \option[false]{strict}[true/false/--] + + By default, the \keyword{wordle} environment does not check that each + word in the puzzle has the same length as the solution, so missing + and extra letters receive no special processing. + + \begin{example} + \begin{wordle}[strict=false]{CRAZE} % the default + GRAIL + CRAMPS + CRAM + CRABS + \end{wordle} + \end{example} + + The \option{strict} option enforces the word length in the puzzle by + marking missing letters as incorrect and striking out extra letters. + + \begin{example} + \begin{wordle}[strict]{CRAZE} + GRAIL + CRAMPS + CRAM + CRABS + \end{wordle} + \end{example} + + \option[--]{rows} + + By default, a \keyword{wordle} environment displays the words + in the puzzle environment with one word per row. You can add extra + (blank) rows to the puzzle with the \option{rows} option. + + \begin{example} + \begin{wordle}[rows=4]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + The \option{rows} option only adds extra rows to the puzzle if they + are needed. This option does not prevent ``extra'' rows from + appearing. + + \begin{example} + \begin{wordle}[rows=2]{ANVIL} + CRANE + NATAL + ANVIL + \end{wordle} + \end{example} + + + \option[]{*} + + You can disable the special colouring of letter tiles in a + \keyword{wordle} puzzle by adding an asterisk,~\option{*}, as a + \textit{word}, into the puzzle. + + \begin{example} + \begin{wordle}{ANVIL} + CRANE + NATAL + * % disable wordle colouring + ANNUL + ANVIL + \end{wordle} + \end{example} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Case sensitivity} + \index{case~sensitive} + \index{case~sensitive!lower case} + \index{case~sensitive!natural case} + \index{case~sensitive!upper case} + + By default, the letters are printed in upper and lower case, exactly + as typed, and the letter comparisons are not case sensitive. + + \option[false]{case~sensitive} + + By default the \keyword{wordle} puzzles are not case sensitive, but + you can make them case sensitive using this option. Note that + \keyword{case sensitive} is the same as \keyword{case sensitive=true} + (and the default option is the same as + \keyword{case sensitive=false}). + + \begin{example} + \begin{wordle}[case sensitive=false]{youth} % the default + North + South + Youth + \end{wordle} + \end{example} + + Here is a case sensitive version of this puzzle. + + \begin{example} + \begin{wordle}[case sensitive]{youth} + North + South + Youth + \end{wordle} + \end{example} + + As this puzzle is case sensitive, the \keyword{Y} on the last line is + not marked as being correct because it does not match the \keyword{y} + in the solution. + + \option[]{natural case} (default) \qquad + \option[]{lower case} \qquad + \option[]{upper case} + + The \option{lower case} and \option{upper case} options force all + letters in the puzzle to be in lower or upper case, respectively. + + \begin{example} + \begin{wordle}[lower case]{YOUTH} + North + South + Youth + \end{wordle} + \end{example} + + \begin{example} + \begin{wordle}[upper case]{youth} + North + South + Youth + \end{wordle} + \end{example} + + As these examples show, both of these options disable the case + sensitivity of the tests for colouring the \keyword{wordle} tiles; + that is, they set \option{case sensitive=false}. To balance the + \option{lower case} and \option{upper case} options, the + \option{natural case} option makes the \keyword{wordle} environment + restores the default behaviour, which respects the case of the letters + as typed into the environment. The \option{natural case} option does + not change the \option{case sensitive} setting. + + \begin{example} + \begin{wordle}[natural case]{youth} % the default + North + South + youth + \end{wordle} + \end{example} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Adding \ctan{TikZ} code} + + The \keyword{wordle} environment is a fancy wrapper around a + \keyword{tikzpicture} environment, with some code under the hood that + automatically colours the letter tiles according to how well they + match the solution. The options in this section describe how to access + the underlying \ctan{TikZ} layer. + + \option[]{tikz}[TikZ commands] + + The \option{tikz} option passes \ctan{TikZ} keys to the underlying + \keyword{tikzpicture} environment. The \option{tikz} option is almost + the same as using a \keyword{\tikzset{...}} command before the + \keyword{wordle} environment except that it is applied to the + \keyword{tikpicture} environment, which contains the \keyword{wordle} + puzzle, such that the \option{tikz} keys are applied \textit{after} + all of options above and \textit{before} \option{tile style} is + applied. + + \begin{example} + % \usetikzlibrary{backgrounds} + \begin{wordle}[ + tikz={framed, + background rectangle/.style={ + double,ultra thick, draw=SteelBlue + } + }]{youth} + North South youth + \end{wordle} + \end{example} + + As this example indicates, it is advisable to enclose complicated + \ctan{TikZ} settings inside braces. + + \option[W]{name} + + All of the tiles in a \keyword{wordle} puzzle are given node names of + the form $\langle$\textsf{name}$\rangle$-$\mathsf{r}$-$\mathsf{c}$, + for the tile in row~$\mathsf{r}$ and column~$\mathsf{c}$. By default, + the prefix \textsf{name} is \texttt{W}. Within reason, the + \option{name} prefix can be changed to anything you like using the + \option{name} option. + + One way to use the named nodes for the letter tiles is with + \ctan{TikZ} \texttt{overlay} and \texttt{remember picture} keys: + + \begin{example} + \begin{wordle}[tikz={remember picture}]{CRAZE} + TRACE + CREAM + CRAZE + \end{wordle} + \end{example} + + This makes it possible, for example, to draw arrows to tiles in a + \keyword{wordle} puzzle: + + \begin{example} + \tikz[remember picture]\draw[overlay, very thick, opacity=0.5,->,red](0,0)node{No M!} to [out=90, in=180](W-2-5); + \end{example} + + A second use of the tile node names is in conjunction with \ctan{TikZ} + commands that can be added to a \keyword{wordle} puzzle using the + second optional argument to the environment. As with the \option{tikz} + option, it is advisable to enclose complicated \ctan{TikZ} commands + inside braces. + + \begin{example} + \begin{wordle}[name=M, + tikz={arr/.style={Red,ultra thick,->}} + ]{MACAW} + [{ + \draw[arr](M-1-3.south)--(M-3-2.north)--(M-4-2.north); + \draw[arr](M-1-1.south)--(M-3-5)--(M-4-3.north east); + }] + CRANE HOTLY BASIC MACAW + \end{wordle} + \end{example} + + In practice, we are not convinced that anyone will find a real use for this! + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{The package code} + + The \keyword{wordle} package is a \LaTeX3 package. There are many + comments in the code explaining how the code works. The automatic + colouring of the letter tiles is a fun exercise in \LaTeX3 + programming, which was motivated by a + \href{https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex/660056#660056}{tex.stackexchange.com} post. + + Bug reports and feature requests can be made on \href{https://github.com/AndrewMathas/Wordle}{github}. + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \printindex + +\end{document} diff --git a/graphics/pgf/contrib/wordle/wordle-doc-fr.pdf b/graphics/pgf/contrib/wordle/wordle-doc-fr.pdf Binary files differnew file mode 100644 index 0000000000..09d306b0f3 --- /dev/null +++ b/graphics/pgf/contrib/wordle/wordle-doc-fr.pdf diff --git a/graphics/pgf/contrib/wordle/wordle-doc-fr.tex b/graphics/pgf/contrib/wordle/wordle-doc-fr.tex new file mode 100644 index 0000000000..039bc7a158 --- /dev/null +++ b/graphics/pgf/contrib/wordle/wordle-doc-fr.tex @@ -0,0 +1,767 @@ +% !TeX TS-program = pdflatex + +\documentclass[svgnames]{report} +\usepackage[utf8]{inputenc} +\usepackage{wordle} +\usepackage{manfnt} +\usepackage{enumitem} +\setlist[description]{font=\sffamily\bfseries\color{ForestGreen},labelwidth=\textwidth} +\usepackage{booktabs} +\usepackage[a4paper,margin=18mm]{geometry} +\synctex=1 +\parindent=0pt +\parskip=2mm + +\usepackage{cmap} % fix search and cut-and-paste in Acrobat +\setcounter{secnumdepth}{0} + +\usepackage{listings}\lstset{language=[LaTeX]TeX,framerule=2pt} +\lstset{language=[LaTeX]TeX, + texcsstyle=*\bfseries\color{Peru}, + backgroundcolor=\color{Ivory}, + numbers=none, + breaklines=true, + keywordstyle=\color{Sienna}, + commentstyle=\color{BurlyWood}, + tabsize=2, + morekeywords={Wordle,wordle,GrilleSutom}, + resetmargins=true, +} +% hyperref links to ctan +\newcommand\ctan[1]{\href{https://www.ctan.org/pkg/#1}{\texttt{#1}}} + +\newcommand\Section[1]{\subsection{\textcolor{DarkGreen}{#1}}} + +\ExplSyntaxOn +\NewDocumentCommand\option{ omo }{% + \IfNoValueTF{#1}{\textsf{#2}} + {% + \textbf{\textcolor{Crimson}{#2}} + \str_if_empty:nF {#1}{~(défaut~:~\textcolor{DarkRed}{#1})}% + \IfNoValueF{#3}{\hfill\textcolor{Gray}{[accepte~:~#3]}}% + }% + \index{#2}% +} +\ExplSyntaxOff + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{imakeidx} +\indexsetup{level=\section*, toclevel=section, noclearpage} +\makeindex[intoc,columns=3] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[skins,listings]{tcolorbox} +\usetikzlibrary{backgrounds, shapes.geometric} % for tikz={framed,...} + +\DeclareTotalTCBox\keyword{ O{} v }{ + fontupper=\sffamily, + nobeforeafter, + skin=tile, + verbatim, + on line, + tcbox raise base, + top=0pt,bottom=0pt,left=0mm,right=0mm, + colback=OldLace, + colupper=ForestGreen, + #1} +{#2} + +\lstdefinestyle{tikz}{style=tcblatex, + classoffset=0, + texcsstyle=*\color{DarkGoldenrod},% + deletetexcs={begin, end}, + moretexcs={,% + node, + draw, + true, + false + },% + classoffset=1, + keywordstyle=\color{ForestGreen},% + morekeywords={wordle,GrilleSutom}, + classoffset=2, + keywordstyle=\color{Crimson},% + morekeywords={ + absent, + Strict, + Taille, + Lignes, + Epaisseur, + align, + border, + borders, + Bords, + Cadres, + Style, + Formes, + Separation, + case, + Police, + Arrondi, + Echelle, + NonLettres, + color, + Couleurs, + CouleurBordures, + CouleurLettres, + bordure, + couleur, + colours, + correct, + vide, + font, + frame, + frames, + letters, + lower, + params, + name, + natural, + noalign, + noletters, + present, + rounded, + rows, + scale, + sensitive, + separation, + shape, + shapes, + size, + strict, + style, + style, + text, + thickness, + tikz, + tile, + upper, + }, + classoffset=3, + keywordstyle=\color{DarkOrange},% + morekeywords={ + hard, + standard, + sutom, + } +} + +\DeclareTCBListing{example}{ !O{} }{% + skin=bicolor, + colframe=MediumSeaGreen, + colbacklower=OldLace, + colback=LawnGreen!20, + lefthand width=50mm, + listing style=tikz, + sidebyside, + sidebyside align=center, + sidebyside gap=4mm, + text and listing, + text outside listing, + boxsep = 0pt, + #1 +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\makeatletter +\author{Andrew Mathas \&\ Cédric Pierquet} +\usepackage{tikz} +\usetikzlibrary{shadows.blur} +\tikzset{shadowed/.style={blur shadow={shadow blur steps=5}, + bottom color=ForestGreen!30, + draw=MediumSeaGreen!70, + shade, + font=\normalfont\Huge\bfseries\scshape, + rounded corners=8pt, + top color=SeaGreen, + }, + boxes/.style={draw=SeaGreen, + fill=Cornsilk, + font=\sffamily\small, + inner sep=5pt, + rectangle, + rounded corners=8pt, + text=DarkGreen, + } +} +\newcommand\Wordle{% + \begin{tikzpicture}[remember picture,overlay] + \node[yshift=-3cm] at (current page.north west) + {\begin{tikzpicture}[remember picture, overlay] + \draw[shadowed](30mm,0) rectangle node[white]{wordle} (\paperwidth-30mm,16mm); + \node[anchor=west,boxes] at (4cm,0cm) {\@author}; + \node[anchor=east,boxes] at (\paperwidth-4cm,0) {Version \wordle@version}; + \end{tikzpicture} + }; + \end{tikzpicture} + \vspace*{20mm} +} + +\def\@oddfoot{\textsc{Wordle} --- \wordle@version~(version~du~\wordle@release)\hfill\thepage} + +\usepackage[colorlinks=true,linkcolor=blue,urlcolor=MediumBlue]{hyperref} +\hypersetup{ + pdfcreator={ Generated by pdfLaTeX }, + pdfinfo={ + Author ={ Andrew Mathas et Cédric Pierquet }, + Keywords={ wordle }, + License ={ LaTeX Project Public License v1.3c or later }, + Subject ={ LaTeXing Wordle puzzles }, + Title ={ Wordle - \wordle@version } + }, +} +\makeatother + +\begin{document} + + \Wordle + + Ce package fournit un moyen \textit{stupidement} riche en fonctionnalités de créer des puzzles \keyword{Wordle} en \LaTeX, que \href{https://en.wikipedia.org/wiki/Wordle}{Wikipedia} décrit comme + comme un jeu de lettres en ligne extrêmement populaire, créé et développé par l'ingénieur logiciel gallois Josh Wardle. Ce paquet + est une version améliorée d'une des solutions à une question posée par \textcolor{FireBrick}{valerio\_new} sur \href{https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex/660056#660056}{tex.stackexchange.com}. + + Ce paquet fournit l'environnement \keyword{GrilleSutom}, qui utilise la syntaxe : + + \begin{tcblisting}{ + listing only, + skin=bicolor, + colframe=MediumSeaGreen, + colbacklower=OldLace, + colback=LawnGreen!20, + listing style=tikz, + boxsep = 0pt, + } + % \usepackage{wordle} + \begin{GrilleSutom}[params sutom]{solution}[commandes tikz optionnelles] + essai1 essai2 ... + \end{GrilleSutom} + \end{tcblisting} + \index{environnement!GrilleSutom} + \index{GrilleSutom} + \index{sutom} + + et l'environnement \keyword{wordle}, pour la version anglaise du jeu : + + \begin{tcblisting}{ + listing only, + skin=bicolor, + colframe=MediumSeaGreen, + colbacklower=OldLace, + colback=LawnGreen!20, + listing style=tikz, + boxsep = 0pt, + } + % \usepackage{wordle} + \begin{wordle}[params wordle]{solution}[commandes tikz optionnelles] + essai1 essai2 ... + \end{wordle} + \end{tcblisting} + \index{environnement!wordle} + \index{wordle} + + Les mots du puzzle peuvent être saisis sur une seule ligne ou sur des lignes séparées. Voici quelques exemples : + + \begin{example} + %Version fr du wordle (sutom) + \begin{GrilleSutom}{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + \begin{example} + % Version en du sutom (wordle) + \begin{wordle}{SUTOM} + SAUCE + SAUTS + SUTOM + \end{wordle} + \end{example} + + Comme pour les puzzles en ligne, l'environnement \keyword{GrilleSutom} + colore automatiquement les lettres en + \keyword[colback=WordleSutomCorrect,colupper=White]{rouge} + lorsque la lettre se trouve dans la même position que la solution, et en + \keyword[colback=WordlePresent,colupper=White]{or} lorsque la lettre est dans la solution mais qu'elle n'est pas bien placée. + De même, \keyword{GrilleSutom} colore les lettres correctes en + \keyword[colback=WordleCorrect,colupper=White]{vert} + et les lettres actuelles en + \keyword[colback=WordleCorrect,colupper=White]{or}. + Comme décrites ci-dessous, ces couleurs peuvent être modifiées en fonction de vos goûts. + + Le nombre de lettres du puzzle est déterminé par la solution, et n'est limité que par la largeur de la page. + + \begin{example} + \begin{GrilleSutom}[Lignes=4]{orange} + normal + ordres + orange + \end{GrilleSutom} + \end{example} + + Les lettres du puzzle peuvent être saisies en majuscules, en minuscules ou en mélange de majuscules et de minuscules. Par défaut, la casse des lettres est ignorée lors de la détermination des couleurs des cases de lettres. + + Comme décrit ci-dessous, les environnements \keyword{wordle} et \keyword{GrilleSutom} acceptent une liste d'options différentes qui modifient les couleurs, les polices et les formes de la tuile. De plus, vous pouvez modifier la sensibilité à la casse des environnements, ajouter des lignes supplémentaires au puzzle, désactiver la mise en forme spéciale des \textit{cases de lettres}. Ces options sont données sous la forme d'une liste séparée par des virgules de paires \texttt{clé-valeur}. Elles peuvent être définies localement, en utilisant l'argument optionnel de l'environnement \keyword|wordle|, ou globalement (plus précisément, dans le groupe \LaTeX\ actuel) en utilisant la commande \keyword{\ParamsSutom} \index{\textbackslash ParamsSutom}, ou comme options globales du package, via \keyword{\usepackage[options]{wordle}}. L'ordre des options n'a pas d'importance, sauf que les options ultérieures ont priorité sur les options précédentes, à l'exception des clés \option{tikz} et \option{tile style} qui sont toujours appliquées en dernier. + + Les puzzles \keyword{wordle} sont dessinés à l'aide de \ctan{TikZ}, chaque lettre du puzzle étant placée à l'intérieur d'un nÅ“ud \ctan{TikZ}. De nombreuses options contrôlent les paramètres de ces nÅ“uds. Les descriptions des options ci-dessous sont regroupées en fonction de leur fonction. + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Styles Wordle} + + La clé \option{Style} peut être utilisée pour modifier de nombreuses caractéristiques des cases dans un puzzle \keyword{wordle}, y compris leurs couleurs, les polices et ainsi de suite. Les paramètres les plus courants peuvent être définis à l'aide du mot-clé \option{style}. \textit{Le style doit toujours être défini en premier car, sinon, les paramètres de style peuvent remplacer les paramètres précédents.} + + Les styles suivants sont pris en charge : + + \textcolor{DarkOrange}{sutom} + \index{Style!sutom} + \index{sutom} + + \begin{example} + \begin{GrilleSutom}[Style=sutom]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + En plus de définir les couleurs des cases, les cadres et les formes, le style \textsf{sutom} définit également la taille des cases à 8 mm. Le style \textsf{sutom} est le style par défaut pour l'environnement \keyword{GrilleSutom}. + + \textcolor{DarkOrange}{standard} + \index{style!standard} + + \begin{example} + \begin{GrilleSutom}[Style=standard]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + Le style \textcolor{DarkOrange}{standard} est le style par défaut pour l'environnement \keyword{wordle}. + + \textcolor{DarkOrange}{hard} + \index{style!hard} + + \begin{example} + \begin{GrilleSutom}[Style=hard]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Options pour les styles individuels des cases de lettres} + + Il existe quatre types de cases de lettres dans \keyword{wordle} : + \option{absent}, \option{present}, \option{correct} et + \option{vide}, correspondant respectivement aux lettres qui ne sont pas dans la solution, + aux lettres mal placées, aux lettres correctement placées et aux cases vides. Les options de cette section peuvent être utilisées pour + définir les couleurs du texte, des cases et des bordures, les formes et les cadres de ces cases. + + Les cases de lettres dans un environnement \keyword{wordle} sont composées à l'intérieur + d'un \keyword{\node} \ctan{TikZ}. Les options ci-dessous contrôlent les + différents paramètres de style de ces nÅ“uds. + + \option[--]{Couleurs}[liste de couleurs valides séparées par des virgules] + + L'option \option{Couleurs} est un raccourci pour spécifier les + couleurs des cases \option{absent}, \option{present}, \option{correct} et + \option{vide}, dans cet ordre. Les couleurs suivantes peuvent être omises, mais + les couleurs doivent être données dans cet ordre, de gauche à droite. + Si une seule couleur est donnée, cette couleur est appliquée à toutes les cases. + + \begin{example} + \begin{GrilleSutom}[Couleurs={LightGray,Orange,Teal}]{cellar} + pounds + taylor + cellar + \end{GrilleSutom} + \end{example} + + Les couleurs peuvent également être définies individuellement à l'aide de \option{couleur absent}, \option{couleur present}, \option{couleur correct} et \option{couleur vide}. + + \begin{example} + \begin{GrilleSutom}[couleur absent=DarkGray,couleur present=Salmon, + couleur correct=SeaGreen]{cellar} + pounds + taylor + cellar + \end{GrilleSutom} + \end{example} + + \option[white]{CouleurBordures}[liste de couleurs valides séparées par des virgules] + + de manière similaire à l'option \option{Couleurs}, il s'agit d'un raccourci pour le paramétrage des couleurs des bordures des cases \option{absent}, \option{present}, + \option{correct} et \option{vide}, dans cet ordre. + + Si une seule couleur est donnée, elle est appliquée à toutes les cases. + + \begin{example} + \begin{GrilleSutom}[CouleurBordures={red,orange,blue}]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + Les bordures pour les cases individuelles peuvent être paramétrer via + \option{bordure absent}, \option{bordure present}, \option{bordure correct} et \option{bordure vide}. + + \option[false]{Cadres}[liste de booléens true/false séparées par des virgules] + + Il s'agit d'un raccourci pour ajouter un cadre autour des cases \option{absent}, \option{present}, \option{correct} et \option{vide}, dans cet ordre, avec la même couleur que \option{absent}. C'est utile uniquement pour les cases non carrée. + + \begin{example} + \begin{GrilleSutom}[Cadres={false,true,true},Formes=circle]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + Les cadres pour les cases individuelles peuvent être paramétrer via \option{cadre absent}, \option{cadre present}, + \option{cadre correct} and \option{cadre vide}. + + \option[rectangle]{Formes}[liste de formes TikZ séparées par des virgules] + + De même que pour l'option \option{Couleurs}, c'est un raccourci pour paramétrer les formes des cases \option{absent}, \option{present}, + \option{correct} et \option{vide}, dans cet ordre. + + \begin{example} + \begin{GrilleSutom}[Formes={circle, rectangle, circle}]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + Les formes individuelles peuvent être paramétrer via \option{forme absent}, \option{forme present}, + \option{forme correct} et \option{forme vide}. + + Les formes proposés par le package \ctan{TikZ} + \texttt{shapes.geometric}, incluant \texttt{diamond}, + \texttt{ellipse}, \texttt{trapezium} et \texttt{star} (voir section~71.2 du manuel \ctan{TikZ}). + + \begin{example} + % \usepackage{shapes.geometric} + \begin{GrilleSutom}[Formes={diamond,ellipse,star}]{LADLE} + FLAIL + LAPEL + * + LADLE + LOVER + \end{GrilleSutom} + \end{example} + + \option[white]{CouleurLettres}[liste de couleurs valides séparées par des virgules] + + Il s'agir d'un raccourci pour paramétrer la couleur des lettres des cases \option{absent}, \option{present}, \option{correct} et \option{vide}, dans cet ordre. + + \begin{example} + \begin{GrilleSutom}[CouleurLettres={red,orange,blue}]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + Les cases individuelles peuvent être paramétrer via \option{coultxt absent}, \option{coultxt present}, \option{coultxt correct} et \option{coultxt vide}. + + + \Section{Caractéristiques communes des cases} + + Les options suivantes s'appliquent à toutes les cases. + + \option[]{nonalign} (default) \qquad + \option[]{align} + + Cette option s'occupe de l'alignement vertical des lettres. C'est utile essentiellement lors de l'utilisation de minuscules. + + \begin{example} + \begin{GrilleSutom}[align]{agony} + groan + angry + agony + \end{GrilleSutom} + \end{example} + + \begin{example} + \begin{GrilleSutom}{agony} % nonalign par defaut + groan + angry + agony + \end{GrilleSutom} + \end{example} + + \option[\textbackslash Large\textbackslash bfseries\textbackslash sffamily]{Police} + [Police \LaTeX] + + Cela permet de paramétrer la police de toutes les lettres. Toute commande valide est acceptée. + + \begin{example} + \begin{GrilleSutom}[Police=\large\ttfamily]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + \option[1mm]{Arrondi}[une longueur] + + Cela permet de paramétrer le paramètres \texttt{rounded corners} (de TikZ) pour les cases \keyword{wordle}. + + \begin{example} + \begin{GrilleSutom}[Arrondi=2.5mm]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + \option[0.5mm]{Separation}[une longueur] + + Cela permet de paramétrer la séparation entre les cases du \keyword{wordle}. + + \begin{example} + \begin{GrilleSutom}[Separation=2mm,CouleurBordures=black]{REBUS} + ABRIS + ROUTE + REBUS + \end{GrilleSutom} + \end{example} + + \option[1]{Echelle}[un nombre] + + L'option \option{Echelle} applique un facteur à l'environnement \keyword{wordle}. + Cette option modifie les dimensions définies par les options \option{Arrondi}, + \option{Separation}, \option{Taille} et \option{Epaisseur}. Si vous changez l'échelle, vous voudrez également changer la police de caractères via \option{Police} : + + \begin{example} + \begin{GrilleSutom}[Echelle=1.5,Police=\huge\bfseries]{SIZE} + HELP + WISE + SIZE + \end{GrilleSutom} + \end{example} + + \option[8mm]{Taille}[une longueur] + + L'option \option{Taille} définit la taille des cases. Contrairement à l'option \option{Echelle}, \option{Taille} change uniquement la dimension des cases. + + \begin{example} + \begin{GrilleSutom}[Taille=10mm,Police=\huge\bfseries]{REPU} + ABRI ROUE * REPU + \end{GrilleSutom} + \end{example} + + \option[0.25mm]{Epaisseur}[une longueur]• + + Cela permet de paramétrer la taille des bordures des cases. Par défaut la couleur est blanche, donc pour illustrer cette option elle sera paramétrer en rouge. + + \begin{example} + \begin{GrilleSutom}[Epaisseur=0.75mm,CouleurBordures=red]{LADLE} + FLAIL + LAPEL + LADLE + \end{GrilleSutom} + \end{example} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Lignes et colonnes supplémentaires} + + Par défaut, le nombre de lignes et de colonnes de la grille est fixée par les mots donnés. + + \option[]{Lettres} (défaut)\qquad + \option[]{NonLettres} + + Par dafut, les lettres sont affichées, mais l'option \option{NonLettres} peuvent être cachées. + + \begin{example} + \begin{GrilleSutom}{CRAZE} % the default + TRACE + CREAM + CRAZE + \end{GrilleSutom} + \end{example} + + \begin{example} + \begin{GrilleSutom}[NonLettres]{CRAZE} + TRACE + CREAM + CRAZE + \end{GrilleSutom} + \end{example} + + \option[false]{Strict}[true/false/--] + + Par défaut, l'environnement ne vérifie pas si tous les mots sont la même taille, donc les lettres \textit{en trop} n'ont pas de style particulier. + + \begin{example} + \begin{GrilleSutom}[Strict=false]{CRAZE} % par defaut + GRAIL + CRAMPS + CRAM + CRABS + \end{GrilleSutom} + \end{example} + + L'option booléenne \option{Strict} force un style particulier des lettre \textit{en trop}. + + \begin{example} + \begin{GrilleSutom}[Strict]{CRAZE} + GRAIL + CRAMPS + CRAM + CRABS + \end{GrilleSutom} + \end{example} + + \option[--]{Lignes} + + Par défaut, l'environnement \keyword{wordle} affiche le nombre de lignes en adéquation avec le nombre de mots donnés. L'option \option{Lignes} permet de modifier le nombre de lignes (évenuellement vides). + + \begin{example} + \begin{GrilleSutom}[Lignes=4]{ANVIL} + CRANE + NATAL + ANVIL + \end{GrilleSutom} + \end{example} + + \begin{example} + \begin{GrilleSutom}[Lignes=2]{ANVIL} + CRANE + NATAL + ANVIL + \end{GrilleSutom} + \end{example} + + \option[]{*} + + Le style des case peut être annulé en ajoutant un astérisque,~\option{*}, en tant que mot. + + \begin{example} + \begin{GrilleSutom}{ANVIL} + CRANE + NATAL + * % annule la mise en forme + ANNUL + ANVIL + \end{GrilleSutom} + \end{example} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Sensibilité à la casse} + \index{case~sensitive} + \index{case~sensitive!lower case} + \index{case~sensitive!natural case} + \index{case~sensitive!upper case} + + Par défaut, les lettres peuvent être écrites en majuscule ou en minuscule, comme saisies par l'utilisateur. + + L'option (voir doc en anglais) \option{case~sensitive} permet de spécifier un paramétrage de la casse. + + \begin{example} + \begin{GrilleSutom}[case sensitive=false]{youth} % par defaut + North + South + Youth + \end{GrilleSutom} + \end{example} + + \begin{example} + \begin{GrilleSutom}[case sensitive]{youth} + North + South + Youth + \end{GrilleSutom} + \end{example} + + Les options \textit{fines} \option{natural case} (défaut), \option{lower case}et \option{upper case} permettent de travailler plus finement sur la casse des lettres correctes et/ou mal placées. + + \begin{example} + \begin{GrilleSutom}[lower case]{YOUTH} + North + South + Youth + \end{GrilleSutom} + \end{example} + + \begin{example} + \begin{GrilleSutom}[upper case]{youth} + North + South + Youth + \end{GrilleSutom} + \end{example} + + \begin{example} + \begin{GrilleSutom}[natural case]{youth} % par defaut + North + South + youth + \end{GrilleSutom} + \end{example} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Style \ctan{TikZ} complémentaire} + + \option[]{tikz}[commandes TikZ] + + \begin{example} + % \usetikzlibrary{backgrounds} + \begin{GrilleSutom}[ + tikz={framed, + background rectangle/.style={ + double,ultra thick, draw=SteelBlue + } + }]{youth} + North South youth + \end{GrilleSutom} + \end{example} + + \pagebreak + + \option[W]{Nom} + + \begin{example} + \begin{GrilleSutom}[tikz={remember picture}]{CRAZE} + TRACE + CREAM + CRAZE + \end{GrilleSutom} + \end{example} + + \begin{example} + \tikz[remember picture]\draw[overlay, very thick, opacity=0.5,->,red](0,0)node{Pas de M !!!} to [out=90, in=180](W-2-5); + \end{example} + + \begin{example} + \begin{GrilleSutom}[name=M, + tikz={arr/.style={red,ultra thick,->}} + ]{MACAW} + [{ + \draw[arr](M-1-3.south)--(M-3-2.north)--(M-4-2.north); + \draw[arr](M-1-1.south)--(M-3-5)--(M-4-3.north east); + }] + CRANE HOTLY BASIC MACAW + \end{GrilleSutom} + \end{example} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \Section{Le code} + + Le package \keyword{wordle} est écrit en \LaTeX3. Beaucoup de commentaires permettent d'expliciter le fonctionnement du code. La coloration automatique des cases est un exercice amusant en \LaTeX3, motivépar un message issu de + \href{https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex/660056#660056}{tex.stackexchange.com}. + + Le dépôt \href{https://github.com/AndrewMathas/Wordle}{github.com/AndrewMathas/Wordle} est disponible pour signaler tout bug. + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \printindex + +\end{document} diff --git a/graphics/pgf/contrib/wordle/wordle.sty b/graphics/pgf/contrib/wordle/wordle.sty new file mode 100644 index 0000000000..a463f22837 --- /dev/null +++ b/graphics/pgf/contrib/wordle/wordle.sty @@ -0,0 +1,670 @@ +% --------------------------------------------------------------- +% wordle --- A latex package for typesetting wordle puzzles +% +% E-mail: andrew.mathas@gmail.com and cpierquet@outlook.fr +% Released under the LaTeX Project Public License v1.3c or later +% See http://www.latex-project.org/lppl.txt +% ---------------------------------------------------------------- + +\NeedsTeXFormat{LaTeX2e} + +% Package version +\def\wordle@version{0.3.0} +\def\wordle@release{2024-08-18} + +\providecommand\DeclareRelease[3]{} +\providecommand\DeclareCurrentRelease[2]{} +\DeclareRelease{\wordle@version}{\wordle@release}{wordle.sty} +\DeclareCurrentRelease{}{\wordle@release} + +\ProvidesExplPackage{wordle} {\wordle@release} {\wordle@version} + {A latex package for typesetting wordle puzzles} + +% ---------------------------------------------------------------- +% Required packages +%\RequirePackage{xcolor} +\RequirePackage{tikz} + +% ---------------------------------------------------------------- +% predefined tile colours + +% from https://www.nytimes.com/games/wordle +\definecolor{WordleAbsent} {HTML} {797D7F} +\definecolor{WordlePresent} {HTML} {F7DA21} +\definecolor{WordleCorrect} {HTML} {6AAB64} +\definecolor{WordleEmpty} {HTML} {F5F5DC} + +\definecolor{WordleHardPresent} {HTML} {95BEFA} +\definecolor{WordleHardCorrect} {HTML} {FB9B00} + +% from https://sutom.nocle.fr/# +\definecolor{WordleSutomAbsent} {HTML} {0077B7} +\definecolor{WordleSutomPresent} {HTML} {FFBB00} +\definecolor{WordleSutomCorrect} {HTML} {EB2152} + +% ---------------------------------------------------------------- +% package variables + +\bool_new:N \l__wordle_case_sensitive_bool % case sensitive mode (false by default) +\bool_new:N \l__wordle_strict_bool % strict mode (false by default) + +\dim_new:N \l__wordle_grid_dim +\dim_new:N \l__wordle_rounded_dim +\dim_new:N \l__wordle_sep_dim +\dim_new:N \l__wordle_size_dim +\dim_new:N \l__wordle_thickness_dim + +\int_new:N \l__wordle_rows_int + +\fp_new:N \l__wordle_scale_fp + +\tl_new:N \l__wordle_align_tl +\tl_new:N \l__wordle_depth_tl +\tl_new:N \l__wordle_font_tl +\tl_new:N \l__wordle_name_tl +\tl_new:N \l__wordle_style_tl +\tl_new:N \l__wordle_tikz_tl +\tl_new:N \l__wordle_tile_style_tl + +\tl_new:N \l__wordle_present_border_tl +\tl_new:N \l__wordle_present_colour_tl +\tl_new:N \l__wordle_present_frame_tl +\tl_new:N \l__wordle_present_shape_tl +\tl_new:N \l__wordle_present_text_tl + +\tl_new:N \l__wordle_correct_border_tl +\tl_new:N \l__wordle_correct_colour_tl +\tl_new:N \l__wordle_correct_frame_tl +\tl_new:N \l__wordle_correct_shape_tl +\tl_new:N \l__wordle_correct_text_tl + +\tl_new:N \l__wordle_empty_border_tl +\tl_new:N \l__wordle_empty_colour_tl +\tl_new:N \l__wordle_empty_frame_tl +\tl_new:N \l__wordle_empty_shape_tl +\tl_new:N \l__wordle_empty_text_tl + +\tl_new:N \l__wordle_absent_border_tl +\tl_new:N \l__wordle_absent_colour_tl +\tl_new:N \l__wordle_absent_frame_tl +\tl_new:N \l__wordle_absent_shape_tl +\tl_new:N \l__wordle_absent_text_tl + + +% ---------------------------------------------------------------- +% Assign up to four style attributes from comma separated list to absent, +% present, correct, empty, respectively. If there is only one entry in +% the list then everything is set equal to that entry +\cs_new_nopar:Npn \__wordle_set_style:nn #1#2 +{ + \seq_set_split:Nnn \l_tmpa_seq {,} {#2} + \int_compare:nNnTF {\seq_count:N \l_tmpa_seq} = {1} + { + \tl_set:co {l__wordle_absent_#1_tl} {#2} + \tl_set:co {l__wordle_present_#1_tl} {#2} + \tl_set:co {l__wordle_correct_#1_tl} {#2} + \tl_set:co {l__wordle_empty_#1_tl} {#2} + } + { + \seq_pop_left:NNT \l_tmpa_seq \l_tmpa_tl { \tl_set:co {l__wordle_absent_#1_tl} {\l_tmpa_tl} } + \seq_pop_left:NNT \l_tmpa_seq \l_tmpa_tl { \tl_set:co {l__wordle_present_#1_tl} {\l_tmpa_tl} } + \seq_pop_left:NNT \l_tmpa_seq \l_tmpa_tl { \tl_set:co {l__wordle_correct_#1_tl} {\l_tmpa_tl} } + \seq_pop_left:NNT \l_tmpa_seq \l_tmpa_tl { \tl_set:co {l__wordle_empty_#1_tl} {\l_tmpa_tl} } + } +} + +% apply the wordle styles +\cs_new_nopar:Npn \__wordle_apply_style:n #1 { + \str_case:enF { #1 } + { + {hard} + { + \__wordle_set_style:nn {border} {white} + \__wordle_set_style:nn {colour} {WordleAbsent,WordleHardPresent,WordleHardCorrect,WordleEmpty} + \__wordle_set_style:nn {frame} {false} + \__wordle_set_style:nn {shape} {rectangle} + \__wordle_set_style:nn {text} {white,white,white,black} + } + + {alt} + { % alt appears in the English version of Cedric's manual for sutom + \__wordle_set_style:nn {border} {white} + \__wordle_set_style:nn {colour} {WordleSutomAbsent,WordleSutomPresent,WordleSutomCorrect,WordleEmpty} + \__wordle_set_style:nn {frame} {false,true,false,false} + \__wordle_set_style:nn {shape} {rectangle,circle,rectangle,circle} + \__wordle_set_style:nn {text} {white,white,white,black} + \tl_set:Nn \l_wordle_font_tl {\LARGE\bfseries\sffamily} + + } + + {sutom} + { + \__wordle_set_style:nn {border} {white} + \__wordle_set_style:nn {colour} {WordleSutomAbsent,WordleSutomPresent,WordleSutomCorrect,WordleEmpty} + \__wordle_set_style:nn {frame} {false,true,false,false} + \__wordle_set_style:nn {shape} {rectangle,circle,rectangle,circle} + \__wordle_set_style:nn {text} {white,white,white,black} + \tl_set:Nn \l_wordle_font_tl {\LARGE\bfseries\sffamily} + } + } + { + % default style + \__wordle_set_style:nn {border} {white} + \__wordle_set_style:nn {colour} {WordleAbsent,WordlePresent,WordleCorrect,WordleEmpty} + \__wordle_set_style:nn {frame} {false} + \__wordle_set_style:nn {shape} {rectangle} + \__wordle_set_style:nn {text} {white,white,white,black} + } +} + +% rescale dimensions +\cs_new_nopar:Npn \__wordle_rescale:n #1 +{ + \fp_set:Nn \l__wordle_scale_fp {#1} + \dim_set:Nn \l__wordle_rounded_dim { \fp_eval:n {#1*\dim_to_decimal_in_mm:n {\l__wordle_rounded_dim }}mm } + \dim_set:Nn \l__wordle_sep_dim { \fp_eval:n {#1*\dim_to_decimal_in_mm:n {\l__wordle_sep_dim }}mm } + \dim_set:Nn \l__wordle_size_dim { \fp_eval:n {#1*\dim_to_decimal_in_mm:n {\l__wordle_size_dim }}mm } + \dim_set:Nn \l__wordle_thickness_dim { \fp_eval:n {#1*\dim_to_decimal_in_mm:n {\l__wordle_thickness_dim}}mm } +} + + +% ---------------------------------------------------------------- +% just in case we're running an old version of latex +\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion } + +\IfFormatAtLeastTF { 2022-06-01 } + { \ProcessKeyOptions [ wordle ] } + { + \RequirePackage { l3keys2e } + \ProcessKeysOptions { wordle } + } + +% ---------------------------------------------------------------- +% Define keys for the package options and their defaults + +\keys_define:nn { wordle } +{ + % apply puzzle styles: sets colours of absent, present, correct and empty tiles + style .code:n = { + \seq_set_from_clist:Nn \l_tmpa_seq {#1} + \seq_map_inline:Nn \l_tmpa_seq { \__wordle_apply_style:n { \str_lowercase:n{##1}} } + }, + Style .meta:n = { style = #1 }, + style .initial:n = standard, + + % specifying tile colours and shapes + borders .code:n = { \__wordle_set_style:nn {border} {#1} }, + BorderColor .code:n = { \__wordle_set_style:nn {border} {#1} }, + CouleurBordures.code:n = { \__wordle_set_style:nn {border} {#1} }, + + Couleurs .code:n = { \__wordle_set_style:nn {colour} {#1} }, + colours .code:n = { \__wordle_set_style:nn {colour} {#1} }, + + frames .code:n = { \__wordle_set_style:nn {frame} {#1} }, + Cadres .code:n = { \__wordle_set_style:nn {frame} {#1} }, + frames .default:n = true, + shapes .code:n = { \__wordle_set_style:nn {shape} {#1} }, + Formes .code:n = { \__wordle_set_style:nn {shape} {#1} }, + + % text colour + text .code:n = { \__wordle_set_style:nn {text} {#1} }, + CouleurLettres .code:n = { \__wordle_set_style:nn {text} {#1} }, + + % align letters in puzzle + align .code:n = { + \tl_set:Nn \l__wordle_align_tl {\vphantom{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}} + \tl_set:Nn \l__wordle_depth_tl {text~depth=0pt} + }, + noalign .code:n = { + \tl_set:Nn \l__wordle_align_tl {} + \tl_set:Nn \l__wordle_depth_tl {} + }, + nonalign .meta:n = { noalign }, + align .initial:n = {true}, + + absent .tl_set:N = \l__wordle_absent_colour_tl, + absent~color .tl_set:N = \l__wordle_absent_colour_tl, + couleur~absent .tl_set:N = \l__wordle_absent_colour_tl, + absent~colour .tl_set:N = \l__wordle_absent_colour_tl, + bordure~absent .tl_set:N = \l__wordle_absent_border_tl, + absent~border .tl_set:N = \l__wordle_absent_border_tl, + absent~frame .tl_set:N = \l__wordle_absent_frame_tl, + cadre~absent .tl_set:N = \l__wordle_absent_frame_tl, + absent~frame .default:n = true, + absent~shape .tl_set:N = \l__wordle_absent_shape_tl, + forme~absent .tl_set:N = \l__wordle_absent_shape_tl, + absent~text .tl_set:N = \l__wordle_absent_text_tl, + coultxt~absent .tl_set:N = \l__wordle_absent_text_tl, + + correct .tl_set:N = \l__wordle_correct_colour_tl, + correct~color .tl_set:N = \l__wordle_correct_colour_tl, + correct~colour .tl_set:N = \l__wordle_correct_colour_tl, + couleur~correct.tl_set:N = \l__wordle_correct_colour_tl, + correct~border .tl_set:N = \l__wordle_correct_border_tl, + bordure~correct.tl_set:N = \l__wordle_correct_border_tl, + correct~frame .tl_set:N = \l__wordle_correct_frame_tl, + cadre~correct .tl_set:N = \l__wordle_correct_frame_tl, + correct~frame .default:n = true, + correct~shape .tl_set:N = \l__wordle_correct_shape_tl, + forme~correct .tl_set:N = \l__wordle_correct_shape_tl, + correct~text .tl_set:N = \l__wordle_correct_text_tl, + coultxt~correct.tl_set:N = \l__wordle_correct_text_tl, + + empty .tl_set:N = \l__wordle_empty_colour_tl, + couleur~vide .tl_set:N = \l__wordle_empty_colour_tl, + empty~color .tl_set:N = \l__wordle_empty_colour_tl, + empty~colour .tl_set:N = \l__wordle_empty_colour_tl, + empty~border .tl_set:N = \l__wordle_empty_border_tl, + bordure~vide .tl_set:N = \l__wordle_empty_border_tl, + empty~frame .tl_set:N = \l__wordle_empty_frame_tl, + cadre~vide .tl_set:N = \l__wordle_empty_frame_tl, + empty~frame .default:n = true, + empty~shape .tl_set:N = \l__wordle_empty_shape_tl, + forme~vide .tl_set:N = \l__wordle_empty_shape_tl, + empty~text .tl_set:N = \l__wordle_empty_text_tl, + coultxt~vide. tl_set:N = \l__wordle_empty_text_tl, + + present .tl_set:N = \l__wordle_present_colour_tl, + couleur~present.tl_set:N = \l__wordle_present_colour_tl, + present~color .tl_set:N = \l__wordle_present_colour_tl, + present~colour .tl_set:N = \l__wordle_present_colour_tl, + present~border .tl_set:N = \l__wordle_present_border_tl, + bordure~present.tl_set:N = \l__wordle_present_border_tl, + present~frame .tl_set:N = \l__wordle_present_frame_tl, + cadre~present .tl_set:N = \l__wordle_present_frame_tl, + present~frame .default:n = true, + present~shape .tl_set:N = \l__wordle_present_shape_tl, + forme~present .tl_set:N = \l__wordle_present_shape_tl, + present~text .tl_set:N = \l__wordle_present_text_tl, + coultxt~present.tl_set:N = \l__wordle_present_text_tl, + + % text font + font .tl_set:N = \l__wordle_font_tl, + Fonte .tl_set:N = \l__wordle_font_tl, + Police .tl_set:N = \l__wordle_font_tl, + font .initial:n = \Large\bfseries\sffamily, + + % tile size + size .dim_set:N = \l__wordle_size_dim, + Taille .dim_set:N = \l__wordle_size_dim, + size .initial:n = 8mm, + + % thickness of tile border + thickness .dim_set:N = \l__wordle_thickness_dim, + Epaisseur .dim_set:N = \l__wordle_thickness_dim, + Thick .code:n = {\dim_set:Nn \l__wordle_thickness_dim {#1mm}}, + thickness .initial:n = 0.25mm, + + % rounded-corner = # + rounded .dim_set:N = \l__wordle_rounded_dim, + Arrondi .dim_set:N = \l__wordle_rounded_dim, + rounded .default:n = 4pt, + Rounded .code:n = {\dim_set:Nn \l__wordle_rounded_dim {#1mm}}, + rounded .initial:n = 1mm, + + % separation between tiles + separation .dim_set:N = \l__wordle_sep_dim, + Separation .dim_set:N = \l__wordle_sep_dim, + separation .initial:n = 0.5mm, + + % rescale tiles + scale .code:n = { \__wordle_rescale:n {#1} }, + Echelle .code:n = { \__wordle_rescale:n {#1} }, + scale .initial:n = 1, + Unit .code:n = { \__wordle_rescale:n {#1} }, + Unite .code:n = { \__wordle_rescale:n {#1} }, + + % letter case + case~sensitive .bool_set:N = \l__wordle_case_sensitive_bool, + case~sensitive .default:n = true, + case~sensitive .initial:n = false, + + % letter visibility + letters .code:n = {\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_natural:n}, + Lettres .code:n = {\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_natural:n}, + noletters .code:n = {\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_none:n}, + NonLettres .code:n = {\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_none:n}, + letters .initial:n = true, + + % forced letter case + natural~case .code:n = { + \cs_set_eq:NN \__wordle_letter:n \__wordle_letter_natural:n + }, + lower~case .code:n = { + \cs_set_eq:NN \__wordle_letter:n \__wordle_letter_lower:n + \bool_set_false:N \l__wordle_case_sensitive_bool + }, + upper~case .code:n = { + \cs_set_eq:NN \__wordle_letter:n \__wordle_letter_upper:n + \bool_set_false:N \l__wordle_case_sensitive_bool + }, + + % puzzle specs: rows and columns + rows .int_set:N = \l__wordle_rows_int, + Lignes .int_set:N = \l__wordle_rows_int, + rows .initial:n = 0, + + strict .bool_set:N = \l__wordle_strict_bool, + Strict .bool_set:N = \l__wordle_strict_bool, + strict .default:n = true, + strict .initial:n = false, + + % tikz settings + tile~style .tl_set:N = \l__wordle_tile_style_tl, + Style~case .tl_set:N = \l__wordle_tile_style_tl, + tile~style .initial:n = , + + name .tl_set:N = \l__wordle_name_tl, + Nom .tl_set:N = \l__wordle_name_tl, + name .initial:n = W, + tikz .tl_set:N = \l__wordle_tikz_tl, + tikz .initial:n = , +} + +% user settings +\NewDocumentCommand\WordleSetup{ m }{ \keys_set:nn { wordle } {#1} } +\NewDocumentCommand\ParamsSutom{ m }{ \keys_set:nn { wordle } {#1} } + +% ---------------------------------------------------------------- +% Define TikZ Wordle styles for the letters. Using tikz styles both +% ensures consistency and has the added advantage of taking care of +% expansion issues with the tile settings +\tikzset{/Wordle/.is~family, /Wordle, + tile/.style = { + /tikz, % change back to using tikz keys + inner~sep = \l__wordle_sep_dim, + minimum~height = \l__wordle_size_dim, + minimum~size = \l__wordle_size_dim, + rounded~corners= \l__wordle_rounded_dim, + line~width = \l__wordle_thickness_dim, + font = \l__wordle_font_tl, + % scale = \fp_to_decimal:N \l__wordle_scale_fp, + text = \tl_use:c {l__wordle_#1_text_tl}, + fill = \tl_use:c {l__wordle_#1_colour_tl}, + shape = \tl_use:c {l__wordle_#1_shape_tl}, + }, + frame/.style = { + /Wordle/tile=#1, + /tikz, % change back to using tikz keys + draw = \tl_use:c{l__wordle_#1_border_tl}, + minimum~size = {\l__wordle_size_dim+\l__wordle_thickness_dim}, + fill = \tl_use:c {l__wordle_#1_colour_tl}, + shape = rectangle, + }, +} + +% apply a TikZ setting +\cs_new_nopar:Npn \__wordle_tikzset:n #1 { \exp_args:Nx \tikzset{#1} } + +% ---------------------------------------------------------------- +% preprocessing of the wordle letters +\cs_new_nopar:Npn \__wordle_letter_none:n #1 {} +\cs_new_nopar:Npn \__wordle_letter_natural:n #1 {#1} +\cs_new_nopar:Npn \__wordle_letter_lower:n #1 { \str_lowercase:n {#1} } +\cs_new_nopar:Npn \__wordle_letter_upper:n #1 { \str_uppercase:n {#1} } + +% by default wordle letters are not processed +\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_natural:n + +% Print a letter in a box as a node. There is slightly different behaviour +% depending on whether the tile is frames or we are in strict mode. The way +% that the entry is printed depends is controlled by \__wordle_letter:n. +\cs_new_nopar:Npn \wordle__boxed_letter:nn #1#2 +{ + % determine the node name, which takes the form <W>-<row>-<col> + \tl_set:No \l_tmpa_tl + { + \l__wordle_name_tl-\int_eval:n{1+\l__wordle_row_index_int}-\int_use:N\l__wordle_letter_index_int + } + + % the construction of the node depends on whether the tile is framed + \tl_if_eq:cnTF {l__wordle_#1_frame_tl} {true} + { + % draw the frame + \node[/Wordle/frame=absent] % frame use the absent fill colour + at ({\l__wordle_letter_index_int*\l__wordle_grid_dim},{-\l__wordle_row_index_int*\l__wordle_grid_dim}){}; + % draw the tile + \node[/Wordle/tile=#1] + (\l_tmpa_tl) at ({\l__wordle_letter_index_int*\l__wordle_grid_dim}, + {-\l__wordle_row_index_int*\l__wordle_grid_dim}) + { \l__wordle_align_tl\__wordle_letter:n {#2} }; + } + { + % draw the tile, with a border + \node[/Wordle/frame=#1, /Wordle/tile=#1] + (\l_tmpa_tl) at ({\l__wordle_letter_index_int*\l__wordle_grid_dim}, + {-\l__wordle_row_index_int*\l__wordle_grid_dim}) + { \l__wordle_align_tl\__wordle_letter:n {#2} }; + } + + % if strict then put a slash through any extra letters + \bool_if:NT \l__wordle_strict_bool + { + \int_compare:nNnT {\l__wordle_letter_index_int} > {\seq_count:N \l__wordle_answer_seq } + { + \draw[red,ultra~thick] (\tl_use:N\l_tmpa_tl.south~west)--(\tl_use:N\l_tmpa_tl.north~east); + } + } +} + +\seq_new:N \l__wordle_answer_seq % the answer +\prop_new:N \l__wordle_answer_counts_prop % count letters in wordle +\seq_new:N \l__wordle_solution_seq % list of all words +\prop_new:N \l__wordle_word_counts_prop % count letters in word +\int_new:N \l__wordle_letter_index_int % index of current letter in word +\int_new:N \l__wordle_row_index_int % TikZ row index in solution + +% a conditional for non-negative prop counter in \l__wordle_word_counts_prop +\prg_new_protected_conditional:Npnn \if__wordle_letter_nonnegative:n #1 {TF} +{ + \prop_if_in:NnTF \l__wordle_word_counts_prop {#1} + { % letter in in prop + \prop_get:NnN \l__wordle_word_counts_prop {#1} \l_tmpa_tl + \int_compare:nNnTF {\l_tmpa_tl} < {0} + {\prg_return_false:} {\prg_return_true:} + } + {\prg_return_false:} +} + +\cs_generate_variant:Nn \str_if_eq:nVTF {xVTF} + +% a conditional for comparing letters +\prg_new_protected_conditional:Npnn \if__wordle_letters_agree:n #1 {T, TF} +{ + \str_set:Nx \l_tmpa_str + {\seq_item:Nn \l__wordle_answer_seq {\l__wordle_letter_index_int}} + + + \bool_if:NTF \l__wordle_case_sensitive_bool + {\str_if_eq:nVTF {#1} \l_tmpa_str {\prg_return_true:} {\prg_return_false:}} + {\str_if_eq:xVTF {\str_uppercase:n{#1}} \l_tmpa_str {\prg_return_true:} {\prg_return_false:}} +} + +% add #3 to <prop=#1>.#2 +\cs_new_nopar:Npn \wordle__add_to_prop_counter:Nnn #1#2#3 +{ + \prop_put_if_new:Nnn #1 {#2} {0} + \prop_pop:NnN #1 {#2} \l_tmp_a + \prop_put:Nnx #1 {#2} {\int_eval:n {#3+\l_tmp_a}} +} + +% make \l__wordle_answer_counts_prop<x> = #x's in wordle_seq +\cs_new_nopar:Npn \wordle__count_letters_in_answer:n #1 +{ + \wordle__add_to_prop_counter:Nnn \l__wordle_answer_counts_prop {#1} {1} +} + +% first run: subtract correct matches from letter counts +\cs_new_nopar:Npn \wordle__count_letters_in_word:n #1 +{ + \int_incr:N \l__wordle_letter_index_int + \if__wordle_letters_agree:nT {#1} + { \wordle__add_to_prop_counter:Nnn \l__wordle_word_counts_prop {#1} {-1} } +} + +% on the second run we print a coloured wordle word +\cs_new_nopar:Npn \wordle__write_letters_in_word:n #1 +{ + \int_incr:N \l__wordle_letter_index_int + \if__wordle_letters_agree:nTF {#1} + { \wordle__boxed_letter:nn {correct} {#1} } + { + % subtract 1 from the prop counter + \wordle__add_to_prop_counter:Nnn \l__wordle_word_counts_prop {#1} {-1} + % if the counter is non-negative this is a pseudo match + \if__wordle_letter_nonnegative:nTF {#1} + { \wordle__boxed_letter:nn {present} {#1} } + { \wordle__boxed_letter:nn {absent} {#1} } + } +} + +\cs_generate_variant:Nn \seq_set_split:Nnn {Nnx} +\cs_generate_variant:Nn \cs_set_nopar:Nn {NV} + +% typeset the word "#1", colouring letters using the wordle convention +\cs_new_nopar:Npn \wordle__mark_word:n #1 +{ + \str_if_eq:nnTF {#1} {*} + { + \cs_set_eq:NN \wordle__process_word:n \wordle__empty_word:n + } + { + \prop_set_eq:NN \l__wordle_word_counts_prop \l__wordle_answer_counts_prop + \tl_map_function:nN {#1} \wordle__count_letters_in_word:n + \int_zero:N \l__wordle_letter_index_int + \tl_map_function:nN {#1} \wordle__write_letters_in_word:n + + % if strict then check lengths + \bool_if:NT \l__wordle_strict_bool + { + \int_while_do:nNnn {\l__wordle_letter_index_int} < {\seq_count:N\l__wordle_answer_seq} + { + \int_incr:N \l__wordle_letter_index_int + \wordle__boxed_letter:nn {absent} {\c_space_tl} + } + } + + % increment the row index + \int_incr:N \l__wordle_row_index_int + } +} + +% typeset the word "#1" by putting boxes around each letter +\cs_new_nopar:Npn \wordle__empty_word:n #1 +{ + \tl_map_inline:nn {#1} + { + \int_incr:N \l__wordle_letter_index_int + \wordle__boxed_letter:nn {empty} {##1} + } + % if strict then check lengths + \bool_if:NT \l__wordle_strict_bool + { + \int_while_do:nNnn {\l__wordle_ltter_index_int} < {\seq_count:N\l__wordle_answer_seq} + { + \int_incr:N \l__wordle_letter_index_int + \wordle__boxed_letter:nn {empty} {\c_space_tl} + } + } + \int_incr:N \l__wordle_row_index_int +} + +\cs_set_eq:NN \wordle__process_word:n \wordle__mark_word:n + +\NewDocumentEnvironment{wordle}{ O{} m O{} b } +{ + % apply wordle environment options + \WordleSetup{#1} + \begin{tikzpicture} + + % apply any tikz settings -- we need to some expansion trickery to do this + \__wordle_tikzset:n {\l__wordle_tikz_tl} + \__wordle_tikzset:n {/Wordle/tile/.append~style={\l__wordle_depth_tl,\l__wordle_tile_style_tl}} + + % set grid dimension = box size + separation + \dim_set:Nn \l__wordle_grid_dim {\l__wordle_size_dim+\l__wordle_sep_dim} + + % split the answer into letters + \bool_if:NTF \l__wordle_case_sensitive_bool + { \seq_set_split:Nnn \l__wordle_answer_seq {} {#2} } + { \seq_set_split:Nnx \l__wordle_answer_seq {} {\str_uppercase:n {#2}} } + + % count the number of times letters appear in \l__wordle_answer_seq + \prop_clear:N \l__wordle_answer_counts_prop + \tl_map_function:nN {#2} \wordle__count_letters_in_answer:n + + % split the solution into words + \regex_split:nnN {\s} {#4} \l__wordle_solution_seq + + % process the words + \int_zero:N \l__wordle_row_index_int + \seq_map_inline:Nn \l__wordle_solution_seq + { + \int_zero:N \l__wordle_letter_index_int + \wordle__process_word:n {##1} + } + + % if required, add extra required blank rows + \int_while_do:nNnn {\l__wordle_row_index_int} < {\l__wordle_rows_int} + { + \int_zero:N \l__wordle_letter_index_int + \int_while_do:nNnn {\l__wordle_letter_index_int} < {\seq_count:N\l__wordle_answer_seq} + { + \int_incr:N \l__wordle_letter_index_int + \wordle__boxed_letter:nn {empty} {\c_space_tl} + } + \int_incr:N \l__wordle_row_index_int + } + + % finally, execute the optional TikZ commands + #3 + + \end{tikzpicture} +}{} + +% wrapper environment for Gridwordle +\NewDocumentEnvironment{GridWordle}{ O{} m O{} b } + { + \begin{wordle}[#1]{#2}[#3]#4]\end{wordle} + } + {} + +% wrapper environment for GrilleSutom +\NewDocumentEnvironment{GrilleSutom}{ O{} m O{} b } + { + \begin{wordle}[style=sutom,#1]{#2}[#3]#4\end{wordle} + } + {} + +\endinput + +% ---------------------------------------------------------------- +% CHANGE LOG +% +% Version 0.3 - \wordle@release +% - merged AM & CP packages, adding styles and streamlining options, french keys +% +% Version 0.2 - \wordle@release +% - added documentation and cleaned some of the options +% +% Version 0.1 - 2022-10-01 +% - initial version +% +% ---------------------------------------------------------------- +% +% Copyright (C) 2022-3 by Andrew Mathas <andrew.mathas@gmail.com> +% and Cédric Pierquet cpierquet@outlook.fr +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License (LPPL), either +% version 1.3c of this license or (at your option) any later +% version. The latest version of this license is in the file: +% +% http://www.latex-project.org/lppl.txt +% +% This work is "maintained" (as per LPPL maintenance status) by +% Andrew Mathas. +% +% This work consists of the files: +% wordle.sty +% wordle.tex diff --git a/graphics/pstricks/base/Changes b/graphics/pstricks/base/Changes index 887654e5b9..5871e81cb9 100644 --- a/graphics/pstricks/base/Changes +++ b/graphics/pstricks/base/Changes @@ -1,4 +1,4 @@ -% $Id: Changes 805 2023-11-06 20:31:22Z herbert $ +% $Id: Changes 913 2024-07-09 16:27:10Z herbert $ For all changes see file History! Here are only the last one changes listed. @@ -11,6 +11,8 @@ pstricks.tex -------- versions like 2.47a have only changes in other files, but not in this main package. +3.20 2024-07-09 - changed \clipbox to \psclipbox to prevent clash with + other package which also uses \clipbox 3.19c 2024-02-02 - fix for check of wrong docname "pstricks.tex" in pstricks.sty (RN) 3.19b 2023-11-06 - Revert Code for \DocumentMetadata in pstricks.sty 3.19a 2023-10-30 - Try to suppress the warning with lualatex and a diff --git a/graphics/pstricks/base/doc/pst-news24.pdf b/graphics/pstricks/base/doc/pst-news24.pdf Binary files differindex bbc7bf404d..e102b8a602 100644 --- a/graphics/pstricks/base/doc/pst-news24.pdf +++ b/graphics/pstricks/base/doc/pst-news24.pdf diff --git a/graphics/pstricks/base/doc/pst-news24.tex b/graphics/pstricks/base/doc/pst-news24.tex index 3fb53580ab..bf357b88d4 100644 --- a/graphics/pstricks/base/doc/pst-news24.tex +++ b/graphics/pstricks/base/doc/pst-news24.tex @@ -41,6 +41,12 @@ broken. Added a test for \verb|lualatex| before the default linewidth and color are set. See last line in \verb|pstricks.tex| +Moved macro \Lcs{clipbox} to \Lcs{psclipbox} to prevent a clash with package +\LPack{adjustbox} +from Martin Scharrer. + + + \section{\LuaLaTeX}\label{lua} This version has a stable basic support for the lua package \LPack{luapstricks.lua}, available from \url{https://github.com/zauguin/luapstricks}. diff --git a/graphics/pstricks/base/doc/pstricks-bug.tex b/graphics/pstricks/base/doc/pstricks-bug.tex index b5f9ba2c32..d4e0329dd3 100644 --- a/graphics/pstricks/base/doc/pstricks-bug.tex +++ b/graphics/pstricks/base/doc/pstricks-bug.tex @@ -97,7 +97,7 @@ % 15. When lines are very short, linestyle=dash may cause an error. % PATCH: Input this file. % -% 16. \clipbox does not work. +% 16. \psclipbox does not work. % PATCH: Input this file. % % 17. Various nodes are missing \leavevmode, which can cause irregularities @@ -509,8 +509,8 @@ stroke> % 16. -\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}} -\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}} +\def\psclipbox{\@ifnextchar[{\psclipbox@}{\psclipbox@[\z@]}} +\def\psclipbox@[#1]{\pst@makebox\psclipbox@@{#1}} % 20. \def\mixed@coor#1#2{% diff --git a/graphics/pstricks/base/generic/pstricks.tex b/graphics/pstricks/base/generic/pstricks.tex index 2f87e9895e..66b00657b9 100644 --- a/graphics/pstricks/base/generic/pstricks.tex +++ b/graphics/pstricks/base/generic/pstricks.tex @@ -88,8 +88,8 @@ \let\pgfforeach\foreach % -\def\fileversion{3.19c} -\def\filedate{2024/02/02} +\def\fileversion{3.20} +\def\filedate{2024/07/09} \pst@addfams{pstricks} % %\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{} @@ -2609,13 +2609,13 @@ \AltClipMode \fi -\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}} +\def\psclipbox{\@ifnextchar[{\psclipbox@}{\psclipbox@[\z@]}} % DG modification begin - Apr. 3, 1997 % From paulus@immd5.informatik.uni-erlangen.de (Dietrich Paulus) %\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}} -\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}} +\def\psclipbox@[#1]{\pst@makebox{\psclipbox@@{#1}}} % DG modification end -\def\clipbox@@#1{% +\def\psclipbox@@#1{% \pssetlength\pst@dimg{#1}% \leavevmode\hbox{% \begin@psclip% @@ -4119,10 +4119,19 @@ pop \def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}} \def\pst@@picture[#1]{\@ifnextchar({\pst@@picture@i[#1]}{\pst@@picture@@i[#1]}}% \def\pst@@picture@@i[#1]{% - \gdef\pscoor{(10,10)}% + \def\pic@coor{(0,0)(0,0)}% +% \gdef\pscoor{(10,10)}% \ifPst@calcframe \typeout{>>>Check for file \jobname-\the\numexpr\ps@imagectr+1.psaux}% - \IfFileExists{\jobname-\the\numexpr\ps@imagectr+1.psaux}{\input{\jobname-\the\numexpr\ps@imagectr+1.psaux}}{}% + \IfFileExists{\jobname-\the\numexpr\ps@imagectr+1.psaux} + {\input{\jobname-\the\numexpr\ps@imagectr+1.psaux}% + \xdef\pic@coor{(0,0)\pscoor}% + \typeout{----->>\pic@coor}% + \typeout{----->>\pscoor}% + } + {%\gdef\pscoor{(10,10)} + %\def\pic@coor{(0,0)(0,0)(10,10)} + }% % \typeout{>>>\pscoor}% \fi \edef\@temp{[\noexpand#1]\pscoor}% @@ -4168,7 +4177,7 @@ pop \ifPst@pgffunctions\pstVerb{ pgffunctions }\fi% hv 2013-04-17 } -\def\pic@coor{(0,0)(0,0)(10,10)} +%\def\pic@coor{(0,0)(0,0)(10,10)} \def\endpspicture{% \ifPst@calcframe \ifPSTlualatex @@ -4236,7 +4245,7 @@ pop \advance\pst@dimd\pst@dimb \lower\pst@dimd\box\pst@hbox \kern\pst@dimc}% - \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi + \if@star\setbox\pst@hbox=\hbox{\psclipbox@@\z@}\fi \leavevmode \ifPst@draft \expandafter\ifx\csname @latexerr\endcsname\relax diff --git a/graphics/pstricks/contrib/pst-coil/Changes b/graphics/pstricks/contrib/pst-coil/Changes index d9028ebf31..c9fa1b1dae 100644 --- a/graphics/pstricks/contrib/pst-coil/Changes +++ b/graphics/pstricks/contrib/pst-coil/Changes @@ -2,6 +2,7 @@ pst-coil.sty -------- 2010-02-01 message for loading the pro file pst-coil.tex -------- +v. 1.08 2024-08-13 - added alternative macro \psAltCoil v. 1.07 2015-05-13 - modified psSin v. 1.06 2011-09-18 - fix bug with \pszigzag v. 1.05 2011-07-12 - added optional argument bow for circular diff --git a/graphics/pstricks/contrib/pst-coil/README b/graphics/pstricks/contrib/pst-coil/README index 8f8b07cfa0..0484bb5078 100644 --- a/graphics/pstricks/contrib/pst-coil/README +++ b/graphics/pstricks/contrib/pst-coil/README @@ -9,4 +9,4 @@ pst-coil-doc.bib - The documentation, bibfile -- -Herbert Voss 2006-11-05 +hoss@tug.org 2024-08-13 diff --git a/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.bib b/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.bib index b29fe53b65..1281ed1318 100644 --- a/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.bib +++ b/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.bib @@ -60,7 +60,7 @@ author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Denis Roegel and Herbert Vo{\ss}}, title = {The {\LaTeX} {G}raphics {C}ompanion}, publisher = {{Addison-Wesley Publishing Company}}, - edition = second, + edition = 2, year = {2007}, address = {Reading, Mass.} } diff --git a/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.pdf b/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.pdf Binary files differindex 26f0e655ba..13ae4342bb 100644 --- a/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.pdf +++ b/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.pdf diff --git a/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.tex b/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.tex index 201f8298c0..ebcd0aa051 100644 --- a/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.tex +++ b/graphics/pstricks/contrib/pst-coil/doc/pst-coil-doc.tex @@ -1,9 +1,13 @@ -%% $Id: pst-coil-doc.tex 539 2011-07-12 08:22:33Z herbert $ -\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings - headexclude,footexclude,oneside,dvipsnames,svgnames]{pst-doc} +%% $Id: pst-coil-doc.tex 930 2024-08-13 18:19:44Z herbert $ +\errorcontextlines=100 +%\RequirePackage{pdfmanagement-testphase} +\DocumentMetadata{} +\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small, + headinclude=false,footinclude=false,twoside,english]{pst-doc} \listfiles -\usepackage[utf8]{inputenc} +\addbibresource{\jobname.bib} +\usepackage{csquotes,animate} \usepackage{pst-plot,pst-node,pst-coil} \SpecialCoor \let\pstFV\fileversion @@ -25,7 +29,7 @@ \author{Timothy Van Zandt\\Herbert Vo\ss\\Michael Sharpe} \date{\today} -\maketitle +\settitle \begin{abstract} Coils, springs and zigzag curves @@ -42,7 +46,7 @@ elaborated on at the corresponding places. \vfill \noindent Thanks to: -Marco Daniel, Denis Girou, Uwe Siart. +Marco Daniel, Denis Girou, Manuel Luque, Uwe Siart. \end{abstract} \clearpage @@ -561,6 +565,146 @@ Th other connections behave completely analogue to those dealt with the package \LPack{pst-node} so that no further explanations are needed here. + +\section{Alternative macro} + +The macro \Lcs{psAltCoil} depends on the code from Manuel Luque. It uses a different way +to draw coils with a kind of perspective view. The possible optional parameter are: + +\begin{itemize} + \item \Lkeyword{N}\textsf{=10} : number of coils + \item \Lkeyword{l0}\texttt{=5} : initial length in cm + \item \Lkeyword{R}\texttt{=0.5} : initial radius in cm + \item \Lkeyword{arm}\texttt{=0} : arm length in cm + \item \Lkeyword{alpha}\texttt{=15} : projection angle + \item \Lkeyword{nS}\texttt{=25} : number of steps per coil +\end{itemize} + + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid,arrowsize=0.2,arrowinset=0.1](-2,-1.4)(14,2) +\psAltCoil[N=20,l0=10,alpha=20,arm=0.5,linewidth=0.05]{*-*}(0,0)(11,0) +\psline[linewidth=0.5\pslinewidth](0.5,0)(0.5,1.25) +\psline[linewidth=0.5\pslinewidth](10.5,0)(10.5,1.25) +\psline{<->}(0.5,1)(10.5,1) +\uput[u](5.5,1){l0=10 cm} +\psline[linewidth=0.5\pslinewidth](0,0)(0,1.25) +\psline{>-}(-0.22,1)(0.5,1) +\uput[u](0.25,1){dl} +\psline[linewidth=0.5\pslinewidth](11,0)(11,1.25) +\psline{-<}(10.5,1)(11.25,1) +\uput[u](10.75,1){dl} +\end{pspicture} +\end{LTXexample} + + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid,arrowsize=0.2,arrowinset=0.1](-2,-1.4)(14,2) +\psAltCoil[N=20,l0=10,R=0.5,alpha=20,arm=0.5,linewidth=0.05]{*-*}(-2,0)(14,0) +\psline[linewidth=0.5\pslinewidth](-1.5,0)(-1.5,1.25) +\psline[linewidth=0.5\pslinewidth](13.5,0)(13.5,1.25) +\psline{<->}(-1.5,1)(13.5,1) +\uput[u](5.5,1){L=15 cm} +\psline[linewidth=0.5\pslinewidth](-2,0)(-2,1.25) +\psline{>-}(-2.25,1)(-1.5,1) +\uput[u](-1.75,1){dl} +\psline[linewidth=0.5\pslinewidth](14,0)(14,1.25) +\psline{-<}(13.5,1)(14.25,1) +\uput[u](13.75,1){dl} +\end{pspicture} +\end{LTXexample} + + + +The next animation needs Adobe Acrobat to view: + +\begin{minipage}{4cm} +\psset{unit=0.5} +\def\nFrames{44}% 44 images +\def\calc{ + /Z0 -16 def + /OMEGA 20 0.1 div sqrt def % pulsation des oscillations + /Period TwoPi OMEGA div def % 0.4442883 + /ti \rt\space def + /ZR Z0 -5 OMEGA RadtoDeg ti mul cos mul add def } +\newcommand\bille{% + \psset{linewidth=0.02,fillstyle=solid,fillcolor=yellow!50} + \pscircle*[linecolor=yellow](0,0){0.5} + \psarc[linecolor=black](0,0){0.425}{-110}{90} + \psarc[linecolor=black](0,0){0.3}{-90}{70} + \psarc[linecolor=black](0,0){0.2}{-70}{60}} + +\begin{animateinline}[controls,loop,% + begin={\begin{pspicture}(-2,1)(2,-23)}, + end={\end{pspicture}}]{5}% 5 images/s +\multiframe{\nFrames}{rt=0+0.01}{% + \psframe*(-2,1)(2,-23) + \psframe[fillstyle=hlines,linestyle=none,hatchcolor=white](-1,0)(1,0.2) + \psline[linecolor=white](-1,0)(1,0) + \psdot[linecolor=white](0,0) + \psgrid[subgriddiv=0,gridcolor=white,griddots=10,gridlabels=0pt] + \psAltCoil[arm=0.5,alpha=25,N=20,l0=10,linecolor=white,linewidth=0.05](0,0)(! 0 \calc ZR) + \rput(! 0 \calc ZR 0.5 sub){\pscircle*[linecolor=yellow](0,0){0.5}} +} +\end{animateinline} +\end{minipage}% +\begin{minipage}{\dimexpr\linewidth-4cm} +\begin{verbatim} +\psset{unit=0.75} +\def\nFrames{44}% 44 images +\def\calc{ + /Z0 -16 def + /OMEGA 20 0.1 div sqrt def + /Period TwoPi OMEGA div def % 0.4442883 + /ti \rt\space def % rt variable from animate + /ZR Z0 -5 OMEGA RadtoDeg ti mul cos mul add def } +\begin{animateinline}[controls,loop,% + begin={\begin{pspicture}(-2,1)(2,-23)}, + end={\end{pspicture}}]{5}% 5 images/s +\multiframe{\nFrames}{rt=0+0.01}{% + \psframe*(-2,1)(2,-23) + \psframe[fillstyle=hlines,linestyle=none, + hatchcolor=white](-1,0)(1,0.2) + \psline[linecolor=white](-1,0)(1,0) + \psdot[linecolor=white](0,0) + \psgrid[subgriddiv=0,gridcolor=white,griddots=10,gridlabels=0pt] + \psAltCoil[arm=0.5,alpha=25,N=20,l0=10,linecolor=white, + linewidth=0.05](0,0)(! 0 \calc ZR) + \rput(! 0 \calc ZR 0.5 sub){\pscircle*[linecolor=yellow](0,0){0.5}} +} +\end{animateinline} +\end{verbatim} +\end{minipage} + + + +\begin{LTXexample}[pos=l] +\begin{pspicture}[showgrid](0,0)(6,11) +\psAltCoil[linecolor=blue,N=20,linewidth=0.1, + alpha=-20,arm=1,arrowinset=0.1]{<->}(1,2)(5,10) +\end{pspicture} +\end{LTXexample} + + +\begin{LTXexample}[pos=l] +\begin{pspicture}[showgrid](0,0)(4,6) +\psAltCoil[linecolor=red,N=20](1,5)(3,1) +\end{pspicture} +\end{LTXexample} + + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid](0,-5)(16,5) +\psAltCoil[linecolor=blue,N=25,R=1,l0=5,arm=0.5,alpha=-20, + doubleline=true](0,3)(16,3) +\psAltCoil[linecolor=red,N=8,alpha=25](0,0)(4,0) +\psAltCoil[linecolor=black,N=8,alpha=25](16,0) +\psAltCoil[linecolor=blue,N=15.5,l0=5,arm=0.5,alpha=0](0,-2)(16,-2) +\end{pspicture} +\end{LTXexample} + + + \clearpage \section{List of all optional arguments for \texttt{pst-coil}} @@ -570,8 +714,7 @@ no further explanations are needed here. \nocite{*} \bgroup \RaggedRight -\bibliographystyle{plain} -\bibliography{pst-coil-doc} +\printbibliography \egroup \printindex diff --git a/graphics/pstricks/contrib/pst-coil/dvips/pst-coil.pro b/graphics/pstricks/contrib/pst-coil/dvips/pst-coil.pro index 9513e99194..b5484af58c 100644 --- a/graphics/pstricks/contrib/pst-coil/dvips/pst-coil.pro +++ b/graphics/pstricks/contrib/pst-coil/dvips/pst-coil.pro @@ -41,8 +41,8 @@ /roundValue ED /relativePeriod ED /Periods ED - /y1 ED /x1 ED /y0 ED /x0 ED - y1 y0 sub x1 x0 sub 2 copy Pyth + /y_1 ED /x_1 ED /y_0 ED /x_0 ED + y_1 y_0 sub x_1 x_0 sub 2 copy Pyth dup /TotalLength ED ArmA sub ArmB sub /SinLength ED Atan /RotAngle ED @@ -54,7 +54,7 @@ /dxStep SinLength 360 div def % the default step for x pos /xStep 360 PointsPerPeriod div def % the step for the for loop /mtrx CM def - x0 y0 translate + x_0 y_0 translate RotAngle rotate 1 0 0 0 ArrowA ArmA 0 lineto 1 xStep 360 { % PointsPerPeriod times @@ -77,7 +77,9 @@ BeginAngle 180 div AspectCos mul add BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc EndAngle { CoilLoop } for - EndAngle CoilLoop mtrx setmatrix } def + EndAngle CoilLoop mtrx setmatrix +} def +% /ZigZag { 15 dict begin /ArmB ED /ArmA ED 2 div /w ED @@ -109,7 +111,7 @@ %/psi ang 90 sub theta sub def % angle of B from center if bow>0 /rho HalfLength theta sin div def % radius of circle bow 0 gt { /direc 1 def /thetaB ang 90 sub theta sub def } % travel B to A in pos drn - { /direc -1 def /thetaB ang 90 add theta add def } ifelse % travel B to A in neg drn + { /direc -1 def /thetaB ang 90 add theta add def } ifelse % travel B to A in neg drn %thetaB=angle from center to B rho thetaB 180 add PtoC translate % origin now at center /h h rho div RadtoDeg def @@ -123,9 +125,14 @@ /arg thetaB ArmB direc mul add def % argument for 2nd point % thetaB = direc = bow = HalfLength = theta = rho = arg = h = n = mark rho thetaB PtoC rho arg PtoC /arg arg h 2 div add def - n { w 0 gt { rhoo }{ rhoi } ifelse arg PtoC /w w neg def /arg arg h add def } repeat + n { + w 0 gt { rhoo }{ rhoi } ifelse + arg PtoC + /w w neg def + /arg arg h add def + } repeat rho thetaB theta2 ArmA sub direc mul add PtoC rho thetaB theta2 direc mul add PtoC - } def +} def % end % END pst-coil.pro diff --git a/graphics/pstricks/contrib/pst-coil/latex/pst-coil.sty b/graphics/pstricks/contrib/pst-coil/latex/pst-coil.sty index d5b0311532..1def1526c0 100644 --- a/graphics/pstricks/contrib/pst-coil/latex/pst-coil.sty +++ b/graphics/pstricks/contrib/pst-coil/latex/pst-coil.sty @@ -1,4 +1,4 @@ -%% $Id: pst-coil.sty 539 2011-07-12 08:22:33Z herbert $ +%% $Id: pst-coil.sty 930 2024-08-13 18:19:44Z herbert $ \RequirePackage{pstricks} \ProvidesPackage{pst-coil}[2010/02/01 package wrapper for pst-coil.tex (hv)] diff --git a/graphics/pstricks/contrib/pst-coil/tex/pst-coil.tex b/graphics/pstricks/contrib/pst-coil/tex/pst-coil.tex index cd15fa0537..0aff59732c 100644 --- a/graphics/pstricks/contrib/pst-coil/tex/pst-coil.tex +++ b/graphics/pstricks/contrib/pst-coil/tex/pst-coil.tex @@ -1,4 +1,4 @@ -%% $Id: pst-coil.tex 578 2011-09-18 17:18:46Z herbert $ +%% $Id: pst-coil.tex 930 2024-08-13 18:19:44Z herbert $ %% BEGIN pst-coil.tex %% %% Coils and zigzags with PSTricks @@ -7,7 +7,7 @@ %% %% %% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. -%% 2006-2015 Herbert Voss, hvoss@tug.org +%% 2006-2024 Herbert Voss, hvoss@tug.org %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN @@ -21,8 +21,8 @@ \ifx\PSTnodeLoaded\endinput \else\input pst-node.tex\fi \ifx\PSTXKeyLoaded\endinput \else\input pst-xkey \fi % -\def\fileversion{1.07} -\def\filedate{2015/05/13} +\def\fileversion{1.08} +\def\filedate{2024/08/13} % \edef\TheAtCode{\the\catcode`\@} \catcode`\@=11 @@ -48,7 +48,15 @@ \let\psk@coilarmB\psk@coilarmA} \define@key[psset]{pst-coil}{coilaspect}[45]{\pst@getangle{#1}\psk@coilaspect} \define@key[psset]{pst-coil}{coilinc}[10]{\pst@getangle{#1}\psk@coilinc} -% +%%%%%% alternative macro +\define@key[psset]{pst-coil}{N}[10]{\def\psk@NoOfSpirals{#1 }} +\define@key[psset]{pst-coil}{R}[1]{\def\psk@InitialWidth{#1 }}% in cm +\define@key[psset]{pst-coil}{l0}[10]{\def\psk@InitialLength{#1 }} +\define@key[psset]{pst-coil}{alpha}[15]{\def\psk@coil@Alpha{#1 }} +\define@key[psset]{pst-coil}{arm}[0]{\def\psk@coil@arm{#1 }} +\define@key[psset]{pst-coil}{nS}[25]{\def\psk@coil@NoOfPointsPerCoil{#1 }} +\psset[pst-coil]{N=10,R=0.5,alpha=15,arm=0,l0=5,nS=25} + \psset[pst-coil]{coilaspect=45,coilarm=.5cm,coilheight=1,coilwidth=1cm,coilinc=10} % \def\pscoil{\def\pst@par{}\pst@object{pscoil}} @@ -198,7 +206,7 @@ { \psk@function } \tx@Sin }% - \showpointsfalse% + \showpointsfalse \end@OpenObj} % \def\ncsin{\pst@object{ncsin}} @@ -220,6 +228,49 @@ \def\pcsin{\def\pst@par{}\pst@object{pcsin}} \def\pcsin@i{\pc@object\ncsin@ii} % +\def\psAltCoil{\def\pst@par{}\pst@object{psAltCoil}} +\def\psAltCoil@i{\pst@getarrows\psAltCoil@ii} +\def\psAltCoil@ii(#1){\@ifnextchar({\psAltCoil@iii{1}(#1)}{\psAltCoil@iii{\z@}(0,0)(#1)}} +\def\psAltCoil@iii#1(#2)(#3){% + \begin@OpenObj + \pst@getcoor{#2}\pst@tempa + \pst@getcoor{#3}\pst@tempb + \addto@pscode{% + \pst@tempa \pst@tempb + /y1 ED /x1 ED /y0 ED /x0 ED + x0 y0 translate + y1 y0 sub x1 x0 sub 2 copy Pyth + /Longueur ED + Atan rotate + /NoOfSpirals \psk@NoOfSpirals def % nombre de spires + /Alpha \psk@coil@Alpha def + /R_0 \psk@InitialWidth \pst@number\psunit mul def + /arm \psk@coil@arm \pst@number\psunit mul def + /l_0 \psk@InitialLength \pst@number\psunit mul def + /nS \psk@coil@NoOfPointsPerCoil def + /Pas_0 l_0 NoOfSpirals div def + /Pas Longueur 2 arm mul sub NoOfSpirals div def + % longueur de l'hélice sur un tour + % = sqrt(4*pi^2*R^2+p^2) + /Longueur_Helice_pas 39.47842 R_0 dup mul mul Pas_0 dup mul add sqrt def + % R=1/(2*pi)*sqrt(L^2-p^2) + /Radius 0.1591549 Longueur_Helice_pas dup mul Pas dup mul sub sqrt mul def + /xH {Radius 360 t mul cos mul Radius sub} def + /yH {Radius 360 t mul sin mul} def + /zH {Pas t mul arm add} def + /Inc 1 NoOfSpirals nS mul div def % nS(50) points par spires + 1 setlinejoin + 1 0 0 0 ArrowA arm 0 lineto + 0 Inc NoOfSpirals { + /t ED + zH xH Alpha tan mul sub + yH + lineto + } for + Longueur 0 + ArrowB lineto + }% + \end@OpenObj} % \catcode`\@=\TheAtCode\relax \endinput diff --git a/graphics/pstricks/contrib/pst-diffraction/Changes b/graphics/pstricks/contrib/pst-diffraction/Changes index 9f4fe42b2b..d40c814ac7 100644 --- a/graphics/pstricks/contrib/pst-diffraction/Changes +++ b/graphics/pstricks/contrib/pst-diffraction/Changes @@ -1,4 +1,7 @@ pst-diffraction.tex -------- +2.06a 2024-07-15 - small fix in the documentation +2.06 2024-07-10 - fix for missing contrast option for \psdiffractionCircular (Keno Wehr) +2.05 2024-07-10 - removed unused optional argument gamma 2.04a 2024-06-29 - bugfix for the documentation header - removed german and french docs 2.04 2010-01-05 - fix bug with missing \space for keywords diff --git a/graphics/pstricks/contrib/pst-diffraction/README b/graphics/pstricks/contrib/pst-diffraction/README index 86d7c0bb59..3d95ca6feb 100644 --- a/graphics/pstricks/contrib/pst-diffraction/README +++ b/graphics/pstricks/contrib/pst-diffraction/README @@ -1,7 +1,7 @@ %% Package `pst-diffraction.tex' %% -%% Manuel Luque (ml _at_ pstricks.de) (France) -%% Herbert Voss (hv _at_ pstricks.de) (Germany) +%% Manuel Luque (France) +%% Herbert Voss (hvoss _at_ tug.org) (Germany) %% %% 2024-06-29 %% @@ -19,24 +19,14 @@ Save the files pst-diffraction.sty pst-diffraction.tex -pst-diffraction.pro in any place, where latex or any other TeX program will find it. -The pro file should go into $TEXMF$/dvips/pstricks/. - -pst-diffraction uses the extended version of the keyval package. So -be sure that you -- have installed xkeyval with the special pst-xkey - (CTAN: tex-archive/macros/latex/contrib/xkeyval/) -- do not load another package after pst-diffraction, which loads - the old keyval.sty or pst-key.tex You can run the documentation with -make DE -make E -make FR -or for all make all ;-) this will take a lot of time, because +make + +or for all make all ;-) this may take some time, because the images are very big. If you like to get the documentation file in another format run @@ -50,8 +40,7 @@ to get a PostScript file. But pay attention, that the pst-diffraction files are saved in the above mentioned way, before you run latex on the documentation file. -The intermediate DVI file works only with viewers which can -interprete the embedded PostScript code. +Running the files with lualatex is possible, but may take a lot of +time in fact of the heavy calculations. -For another PDF output read the introduction from -the documentation. +hvoss@tug.org diff --git a/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.bib b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.bib index 737b6dbba9..0d2ecefe77 100644 --- a/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.bib +++ b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.bib @@ -1,45 +1,105 @@ -@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} } +@STRING{tugboat = {TUGboat} } +@STRING{dtk = {Die {\TeX}nische Komödie} } +@STRING{bretter = {Bretter, die die Welt bedeuten } } + +@Book{companion, + author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Dennis Roegel and Herbert Voß}, + title = {The {\LaTeX} Graphics Companion}, + publisher = {Lehmanns Media}, + edition = {2}, + date = {2022}, + location = {Berlin}, + note={Preprint of the english version, 2nd edition} +} + +@Article{girou:01:, + author = {Denis Girou}, + title = {Présentation de PSTricks}, + journal = {Cahier {GUT}enberg}, + year = 1994, + volume = {16}, + month = apr, + pages = {21-70} +} + +@Article{girou:02:, + author = {Timothy Van Zandt and Denis Girou}, + title = {Inside {PST}ricks}, + journal = TUGboat, + year = 1994, + volume = {15}, + month = sep, + pages = {239-246} +} @Book{PostScript, Author = {Kollock, Nikolai G.}, - Title = {PostScript richtig eingesetzt: vom Konzept zum - praktischen Einsatz}, + Title = {PostScript richtig eingesetzt: vom Konzept zum praktischen Einsatz}, Publisher = {IWT}, Address = {Vaterstetten}, year = 1989, } -@Manual{pstricks, - Title = {PSTricks - {\PS} macros for Generic TeX}, - Author = {Timothy Van Zandt}, - Organization = {}, - Address = {\url{http://www.tug.org/application/PSTricks}}, - Note = {}, - year = 1993, +@ctan{multido, +title = {The Multido package}, +subtitle = {A loop facility for Generic TeX}, +author = {Van Zandt, Timothy and Voß, Herbert and Niepraschk, Rolf}, +url = {macros/latex/multido}, +urldate = {2018-09-01}, +version = {1.42} } -@Manual{pdftricks, - Title = {PSTricks Support for pdf}, - Author = {Herbert Voss}, - Organization = {}, - Address = {\url{http://PSTricks.de/pdf/pdfoutput.phtml}}, - Note = {}, - year = 2002, +@Book{PSTricks2, + author = {Herbert Voß}, + title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, + edition = {7}, + publisher = {DANTE {\eV} and Lehmanns Media}, + date = {2016}, + address = {Heidelberg and Hamburg} } -@Manual{miwi, - Title = {References for \TeX{} and Friends}, - Author = {Michael Wiedmann and Peter Karp}, - Organization = {}, - Address = {\url{http://www.miwie.org/tex-refs/}}, - Note = {}, - year = 2003, +@Book{PSTricksE, + author = {Herbert Voß}, + title = {\texttt{PSTricks} -- Graphics and PostScript for \LaTeX}, + edition = {1}, + publisher = {UIT}, + date = {2011}, + address = {Cambridge -- UK} +} + +@Book{LTXquick, + author = {Herbert Voß}, + title = {{\LaTeX} quick reference}, + edition = {1}, + publisher = {UIT}, + year = {2012}, + address = {Cambridge -- UK} +} + +@Book{presentations, + author = {Herbert Voß}, + title = {Presentations with \LaTeX}, + edition = {2}, + publisher = {DANTE {\eV} and Lehmanns Media}, + year = {2019}, + address = {Heidelberg and Berlin} } +@Book{tbt, + author = {Victor Eijkhout}, + title = {\TeX\ by Topic -- {A} \TeX{}nician Reference}, + edition = {1}, + publisher = {DANTE {\eV} and Lehmanns Media}, + year = {2014}, + address = {Heidelberg and Berlin} +} + + + @Article{dtk02.1:voss:mathematischen, - author = {Herbert Vo{\ss}}, + author = {Herbert Voß}, title = {Die mathematischen {F}unktionen von {P}ostscript}, journal = dtk, year = 2002, @@ -49,7 +109,6 @@ month = mar, pages = {40-47}, annote = bretter, - keywords = {}, abstract = { \PS, faktisch genauso alt wie {\TeX}, ist im Verh{\"a}ltnis dazu allgemein noch weniger bekannt, wenn es darum geht zu beurteilen, was es denn nun im eigentlichen @@ -61,31 +120,30 @@ gezeigt. } } -@Book{companion, - author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Denis Roegel and Herbert Vo{\ss}}, - title = {The {\LaTeX} {G}raphics {C}ompanion}, - publisher = {{Addison-Wesley Publishing Company}}, - edition = 2, - year = {2007}, - address = {Reading, Mass.} + +@Book{PostScript, + Author = {Kollock, Nikolai G.}, + Title = {PostScript richtig eingesetzt: vom Konzept zum + praktischen Einsatz}, + Publisher = {IWT}, + Address = {Vaterstetten}, + year = 1989, } -@Book{PSTricks2, - author = {Herbert Vo\ss}, - title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, - edition = {4.}, - publisher = {DANTE -- Lehmanns}, - year = {2007}, - address = {Heidelberg/Hamburg} +@online{pstricks, + Title = {PSTricks - {\PS} macros for Generic TeX}, + Author = {Timothy Van Zandt}, + Organization = {}, + url = {http://www.tug.org/application/PSTricks}, + year = 1993, } -@Book{LaTeXRef, - author = {Herbert Vo\ss}, - title = {\LaTeX\ Referenz}, - edition = {1.}, - publisher = {DANTE -- Lehmanns}, - year = {2007}, - address = {Heidelberg/Hamburg} + +@online{pdftricks, + Title = {PSTricks Support for pdf}, + Author = {Herbert Voß}, + url = {http://PSTricks.de/pdf/pdfoutput.phtml}, + year = 2002, } @Book{diffraction, @@ -107,12 +165,11 @@ publisher = {Society of {P}hoto {O}ptical} } -@Manual{Fresnel, +@online{Fresnel, Title = {Augustin Fresnel}, Author = {Manuel Luque}, Organization = {}, - Address = {\url{http://melusine.eu.org/syracuse/mluque/fresnel/augustin/fresnel.html}}, - Note = {}, + url = {http://melusine.eu.org/syracuse/mluque/fresnel/augustin/fresnel.html}, year = 2004 } diff --git a/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.pdf b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.pdf Binary files differindex 33256a5b76..d6e0b803ac 100644 --- a/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.pdf +++ b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.pdf diff --git a/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.tex b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.tex index f38f06f02e..382907d86c 100644 --- a/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.tex +++ b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.tex @@ -1,13 +1,16 @@ %% $Id: pst-diffraction-docE.tex 134 2009-09-27 12:28:50Z herbert $ -\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings, - headexclude,footexclude,oneside]{pst-doc} -\usepackage{pst-grad,pst-diffraction} -\let\pstDiffractionFV\fileversion +\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small, + headinclude=false,footinclude=false,twoside,english]{pst-doc} -\usepackage{libertinus} +%\usepackage{libertinus} \usepackage{biblatex} \addbibresource{pst-diffraction-doc.bib} +\usepackage{xurl,pst-grad,pst-diffraction} +\let\pstDiffractionFV\fileversion + + + \lstset{pos=t,wide=true,language=PSTricks, morekeywords={psdiffractionRectangle,psdiffractionCircle,psdiffractionCircular},basicstyle=\footnotesize\ttfamily} \lstdefinestyle{syntax}{backgroundcolor=\color{blue!20},numbers=none,xleftmargin=0pt,xrightmargin=0pt, @@ -16,6 +19,15 @@ frame=single} \newcommand*\psp{\texttt{pspicture}\xspace} % + +\renewcommand\bgImage{% +\begin{pspicture}(-3.5,-3.5)(3.5,3.5) +\psdiffractionCircular[f=10,showFunc=true] +\end{pspicture} +} + +\def\eV{e.\kern-1pt{}V\kern-1pt} + \begin{document} \title{\texttt{pst-diffraction}} @@ -24,21 +36,18 @@ apertures; v.\pstDiffractionFV} \author{Manuel Luque \\ Herbert Vo\ss} \docauthor{Herbert Voß} \date{\today} -\maketitle +%\maketitle +\settitle \tableofcontents - -\clearpage - -\begin{abstract} -\noindent +\psset{unit=1cm} \vfill\noindent Thanks to: Julien Cubizolles, Doris Wagner, Timothy Van Zandt, Keno Wehr, Michael Zedler. -\end{abstract} + \section{Optical setup} @@ -136,7 +145,7 @@ By default the settings are as follows: \begin{tabular}{@{}lll@{}} \Lkeyword{a}=0.2e-3 in m; & \Lkeyword{k}=1; & \Lkeyword{f}=5 in m;\\ -\Lkeyword{lambda}=650 in nm; & \Lkeyword{pixel}=0.5; & \Lkeyword{contrast}=38, greates value;\\ +\Lkeyword{lambda}=650 in nm; & \Lkeyword{pixel}=0.5; & \Lkeyword{contrast}=38, greatest value;\\ \Lkeyword{colorMode}=3; & \Lkeyword{IIID}=\false. \end{tabular} @@ -156,7 +165,7 @@ By default the settings are as follows: \end{pspicture} \hfill \begin{pspicture}(-1.5,-2.5)(3.5,3.5) -\psdiffractionRectangle[IIID,Alpha=30,f=2.5] +\psdiffractionRectangle[IIID,Alpha=30,f=2.5]% for Alpha see package pst-3dplot \end{pspicture} \end{lstlisting} @@ -200,6 +209,7 @@ By default the settings are as follows: \hfill \begin{pspicture}(-1.5,-2)(3.5,3) \psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=2,f=10,lambda=515,colorMode=1] +% % for Alpha see package pst-3dplot \end{pspicture} \end{lstlisting} @@ -211,6 +221,7 @@ By default the settings are as follows: \hfill \begin{pspicture}(-3.5,-1)(3.5,4) \psdiffractionRectangle[IIID,Alpha=10,a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450] +% % for Alpha see package pst-3dplot \end{pspicture} \begin{lstlisting}[style=example] @@ -220,6 +231,7 @@ By default the settings are as follows: \hfill \begin{pspicture}(-3.5,-1)(3.5,4) \psdiffractionRectangle[IIID,Alpha=10,a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450] +% % for Alpha see package pst-3dplot \end{pspicture} \end{lstlisting} @@ -230,7 +242,7 @@ It is also possible to render the diffraction pattern of two congruent rectangle by using the option \Lkeyword{twoSlit}. By default this option is deactivated. The distance of the two rectangles is specified by the option $s$. -The default for $s$ is $12e^{-3}\,\mathrm{m}$. +The default for $s$ is $12\cdot10^{-3}\,\mathrm{m}$. \begin{center} @@ -249,12 +261,14 @@ The default for $s$ is $12e^{-3}\,\mathrm{m}$. \begin{center} \begin{pspicture}(-2,-1)(4,4) \psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3] +% % for Alpha see package pst-3dplot \end{pspicture} \end{center} \begin{lstlisting}[pos=t,style=example,wide=false] \begin{pspicture}(-2,-1)(4,4) \psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3] +% % for Alpha see package pst-3dplot \end{pspicture} \end{lstlisting} @@ -271,9 +285,9 @@ cropped if its height exceeds the margin of the environment \Lenv{pspicture*}). \hspace*{-1cm}% \begin{LTXexample}[pos=t,style=example,wide=false] -\begin{pspicture}(-3.5,-3.5)(3.5,3.5) +\begin{pspicture*}(-3.5,-3.5)(3.5,3.5) \psdiffractionCircular[r=0.5e-3,f=10,pixel=0.5,lambda=520] -\end{pspicture} +\end{pspicture*} % \begin{pspicture}(-3.5,-1.5)(3.5,3.5) \psdiffractionCircular[IIID,r=0.5e-3,f=10,pixel=0.5,lambda=520] @@ -281,6 +295,20 @@ cropped if its height exceeds the margin of the environment \Lenv{pspicture*}). \end{LTXexample} +\begin{LTXexample}[pos=t,style=example,wide=false] +\begin{pspicture}(-3.5,-3.5)(3.5,3.5) +\psdiffractionCircular[f=10] +\end{pspicture} +\hfill +\begin{pspicture}(-3.5,-3.5)(3.5,3.5) +\psdiffractionCircular[f=10,showFunc=true] +\end{pspicture} +\end{LTXexample} + + + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Diffraction from two circular apertures} Only the case of equal radii is provided, this common radius can be defined like in the @@ -291,7 +319,7 @@ Furthermore one has to give the half distance of the circles measured from their The rendering process could take some time in this case\dots -\begin{pspicture}(-3,-3.5)(3.5,3.5) +\begin{pspicture}(-3.5,-3.5)(4,3.5) \psdiffractionCircular[r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole] \end{pspicture} % @@ -312,7 +340,7 @@ The rendering process could take some time in this case\dots \hspace*{-1cm}% -\begin{pspicture}(-3,-3)(3.5,4) +\begin{pspicture}(-4,-3)(4,4) \psdiffractionCircular[r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0] \end{pspicture} % @@ -336,21 +364,22 @@ or $d=\frac{2r}{1.22}$ (see \url{http://www.unice.fr/DeptPhys/optique/diff/trouscirc/diffrac.html}). \hspace*{-1cm}% -\begin{pspicture}(-3,-3.5)(3,3.5) +\begin{pspicture}(-4,-3.5)(3,4.5) \psdiffractionCircular[r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole] \end{pspicture} % -\begin{pspicture}(-3.5,-1.5)(3.5,3) +\begin{pspicture}(-5,-2)(3.5,3) \psdiffractionCircular[IIID,r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole] \end{pspicture} +\bigskip \begin{lstlisting}[style=example] \begin{pspicture}(-3,-3.5)(3,3.5) \psdiffractionCircular[r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole] \end{pspicture} % -\begin{pspicture}(-3.5,-1.5)(3.5,3) +\begin{pspicture}(-5,-1.5)(3.5,3) \psdiffractionCircular[IIID,r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole] \end{pspicture} \end{lstlisting} @@ -377,7 +406,7 @@ option \Lkeyword{colorMode}=0. \makebox[\linewidth]{% \begin{pspicture}(-3,-3)(3,2.5) -\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=38] +\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=18] \end{pspicture} \quad \begin{pspicture}(-3,-3)(3,2.5) @@ -391,7 +420,7 @@ option \Lkeyword{colorMode}=0. \begin{lstlisting}[style=example] \begin{pspicture}(-3,-3)(3,2.5) -\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=38] +\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=18] \end{pspicture} \quad \begin{pspicture}(-3,-3)(3,2.5) @@ -433,9 +462,8 @@ option \Lkeyword{colorMode}=0. -\clearpage -\section{List of all optional arguments for \texttt{pst-diff}} -\Loption{pst-diff} is the short form for the keywords in the package \LPack{pst-diffraction}. +\section{List of all optional arguments for \texttt{pst-diffraction}} +%\Loption{pst-diff} is the short form for the keywords in the package \LPack{pst-diffraction}. \xkvview{family=pst-diff,columns={key,type,default}} @@ -444,7 +472,6 @@ option \Lkeyword{colorMode}=0. \raggedright \nocite{*} \printbibliography -%\bibliography{pst-diffraction-doc} \printindex diff --git a/graphics/pstricks/contrib/pst-diffraction/tex/pst-diffraction.tex b/graphics/pstricks/contrib/pst-diffraction/tex/pst-diffraction.tex index 345fba99c4..2ff137b0a8 100644 --- a/graphics/pstricks/contrib/pst-diffraction/tex/pst-diffraction.tex +++ b/graphics/pstricks/contrib/pst-diffraction/tex/pst-diffraction.tex @@ -25,8 +25,8 @@ \ifx\PSTThreeDplotLoaded\endinput\else\input pst-3dplot.tex\fi \ifx\PSTXKeyLoaded\endinput\else \input pst-xkey.tex \fi % -\def\fileversion{2.04a} -\def\filedate{2024/06/29} +\def\fileversion{2.06a} +\def\filedate{2024/07/15} \message{`PST-diffraction v\fileversion, \filedate\space (ML,hv)}% \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax \pst@addfams{pst-diff} @@ -40,7 +40,7 @@ \define@key[psset]{pst-diff}{s}{\def\psk@Diffraction@Slit@s{#1 }} % distance entre les fentes \define@key[psset]{pst-diff}{lambda}{\pst@checknum{#1}\psk@Diffraction@Slit@Lambda }% en nm \define@key[psset]{pst-diff}{f}{\pst@checknum{#1}\psk@Diffraction@Slit@F }% focus en m -\define@key[psset]{pst-diff}{gamma}{\pst@checknum{#1}\psk@Diffraction@gamma@G } +%\define@key[psset]{pst-diff}{gamma}{\pst@checknum{#1}\psk@Diffraction@gamma@G } \define@key[psset]{pst-diff}{pixel}{\pst@checknum{#1}\psk@Diffraction@Slit@pixel } \define@key[psset]{pst-diff}{colorMode}{\pst@getint{#1}\psk@Diffraction@colorMode } % 0 black and white inverse @@ -65,7 +65,8 @@ \psset[pst-diff]{a=0.2e-3,f=5,k=1,r=1e-3, d=6e-3,s=12e-3,h=0.5e-3, lambda=650,pixel=0.5, - contrast=38,gamma=0.8,twoHole=false,twoSlit=false,colorMode=3, scale=1, + contrast=38,%gamma=0.8, + twoHole=false,twoSlit=false,colorMode=3, scale=1, IIID=false, showFunc=false} % % load the pstricks-add.pro only, if not already done @@ -82,7 +83,7 @@ /focus \psk@Diffraction@Slit@F def /widthSlit \psk@Diffraction@Slit@A def /heightSlit \psk@Diffraction@Slit@k widthSlit mul def - /Gamma \psk@Diffraction@gamma@G def + %/Gamma \psk@Diffraction@gamma@G def /pixel \psk@Diffraction@Slit@pixel def /SlitSeparation \psk@Diffraction@Slit@s def \psk@Diffraction@Slit@Lambda tx@addDict begin wavelengthToRGB Red Green Blue end @@ -162,7 +163,7 @@ \addto@pscode{% % les dimensions sont en mètres /focus \psk@Diffraction@Slit@F def - /Gamma \psk@Diffraction@gamma@G def + %/Gamma \psk@Diffraction@gamma@G def /pixel \psk@Diffraction@Slit@pixel def /contrast 1e\psk@Diffraction@Slit@contrast def /r \psk@Diffraction@Circular@r def @@ -253,7 +254,8 @@ /y { yPts 2845 div } bind def /R { x dup mul y dup mul add sqrt } bind def % R en m /m Coeff R mul def - 1 1e38 m J1Card Facteur x mul cos dup mul mul neg exp sub + % 1 1e38 m J1Card Facteur x mul cos dup mul mul neg exp sub + 1 contrast m J1Card Facteur x mul cos dup mul mul neg exp sub % fix by Keno Wehr dup /intensity ED dup dup Red mul 3 -1 roll @@ -283,7 +285,7 @@ \ifPst@Diffraction@IIID \else newpath R_limite neg %1.5 mul - cm dup moveto + cm dup moveto R_limite 2 mul cm 0 rlineto 0 R_limite 2 mul cm rlineto R_limite neg 2 mul cm 0 rlineto @@ -294,7 +296,8 @@ R_limite -0.001 0 { /Radius exch def /m Coeff Radius 0.01 mul mul def - 1 1e38 m J1Card neg exp sub +% 1 1e38 m J1Card neg exp sub + 1 contrast m J1Card neg exp sub % fix by keno wehr dup /intensity ED dup dup Red mul 3 -1 roll % R @@ -396,7 +399,7 @@ % les dimensions sont en mètres /f \psk@Diffraction@Slit@F def /h \psk@Diffraction@Triangle@h def - /Gamma \psk@Diffraction@gamma@G def + %/Gamma \psk@Diffraction@gamma@G def /L { \psk@Diffraction@Slit@Lambda 1e-9 mul} bind def % longueur d'onde en m /pixel \psk@Diffraction@Slit@pixel def /k { TwoPi f L mul div } bind def diff --git a/graphics/pstricks/contrib/pst-node/Changes b/graphics/pstricks/contrib/pst-node/Changes index cac34e6912..6ef6294b36 100644 --- a/graphics/pstricks/contrib/pst-node/Changes +++ b/graphics/pstricks/contrib/pst-node/Changes @@ -1,5 +1,7 @@ ----- pst-node.tex -1.43 2021-09-15 - fix for lualatex and empty value in \psk@nrot +1.45 2024-07-10 - fix \algparnode (Erich Schmidt) +1.44 2024-07-04 - modified \psparnode and \algparnode (Erich Schmidt) +1.43 2022-10-31 - fix for lualatex and empty value in \psk@nrot 1.42a 2020-04-01 - fix typo in the documentation 1.42 2019-03-03 - bugfix for \rnode inside \psframebox* 1.41 2017-12-30 - added \psnpolygon @@ -56,12 +58,14 @@ ----- pst-node.sty +1.02 2024-07-10 - update package versions (hv) 1.01 2012-09-18 - update package versions (hv) 1.00 2011-06-05 - make ancient variant 97 available (hv) 2008-12-12 first version (hv) ----- pst-node.pro +1.15a 2024-07-10 - typos 1.15 2014-01-27 - comment out empty lines 1.14 2012-09-18 - add subroutines for global dict 1.13 2011-11-21 - fix bug for xelatex and scaling diff --git a/graphics/pstricks/contrib/pst-node/README b/graphics/pstricks/contrib/pst-node/README index 3f4fd08e59..29b62ef30c 100644 --- a/graphics/pstricks/contrib/pst-node/README +++ b/graphics/pstricks/contrib/pst-node/README @@ -1,13 +1,10 @@ -This version of pst-node uses the xkeyval package, the extended -version of keyval. - Save the files pst-node.sty|.tex|.pro in a directory, which is part of your local TeX node. Then do not forget to run texhash to update this node if these packages are new to your TeX distribution. For more information see the documentation of your LaTeX distribution on installing packages into your LaTeX distribution or the TeX Frequently Asked Questions: -(http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages). +(https://texfaq.org/#installing). pst-node needs pstricks, which should be part of your local TeX installation, otherwise get it from a CTAN server, f.ex. diff --git a/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.bib b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.bib new file mode 100644 index 0000000000..f2a5d82e84 --- /dev/null +++ b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.bib @@ -0,0 +1,35 @@ +@Manual{pstricks2007, + Title = {PSTricks - {\PS} macros for Generic TeX. Version 1.5}, + Author = {Timothy Van Zandt}, + Organization = {}, + Address = + {\url{http://www.tug.org/tex-archive/graphics/pstricks/base/doc/pst-user.pdf}}, + Note = {}, + year = 2007, +} + + +@Manual{siart, + Title = {Befehls\"ubersicht f\"ur \texttt{PSTricks} (Version + 0.93}, + Author = {Uwe Siart}, + Organization = {}, + Address = + {\url{http://www.siart.de/typografie/pstricks-referenz.pdf}}, + Note = {}, + year = 2009, +} + + + + +@Book{PSTricks2, + author = {Herbert Vo\ss}, + title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, + edition = {fünfte}, + publisher = {DANTE -- Lehmanns}, + year = {2008}, + address = {Heidelberg/Hamburg} +} + + diff --git a/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.pdf b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.pdf Binary files differnew file mode 100644 index 0000000000..cb72a62b43 --- /dev/null +++ b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.pdf diff --git a/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.tex b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.tex new file mode 100644 index 0000000000..8ca96eab4e --- /dev/null +++ b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.tex @@ -0,0 +1,1155 @@ +%% $Id: psmatrix-docDE.tex 696 2017-12-30 19:01:07Z herbert $ +\listfiles +\documentclass[11pt,ngerman,a4paper,BCOR10mm,DIV12,bibliography=totoc,parskip,smallheadings, + headexclude,footexclude,oneside]{pst-doc} +\usepackage[utf8]{inputenc} +\usepackage{babel} + +%\setlength{\parindent}{0pt} +%\setlength{\parskip}{1ex plus 0.2ex minus 0.1ex} + +\usepackage{pst-node,pst-grad,pstricks-add,pst-blur,float} +\def\tab#1{\tabular{@{}l@{}}#1\endtabular} +\def\OptEinh{\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Einheit}}\kern1pt} + +\let\myFV\fileversion + +\usepackage{tabularx} +\usepackage{longtable} + +\addbibresource{\jobname.bib} + + +\lstset{explpreset={pos=l,rframe=},frame=,backgroundcolor=\color{white},literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 + {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ãœ}{{\"U}}1 + {ß}{\ss}1} + + +\usepackage{bibgerm} + +%\psset{subgriddiv=0,gridlabels=7pt,gridcolor=black!15} +%\hypersetup{pdfauthor={Christine Roemer},pdftitle={psmatrix}} +% +\def\bgImage{\hspace*{1cm}% +\begin{psmatrix}[colsep=0.8cm,rowsep=0.4cm,mcol=c,emnode=r] + & & semantische Ebene & & + \psshadowbox[framearc=0.25]{Bedeutung}\\ + & & morphologische Ebene & & \\ +[name=A]\tab{pragmatische\\Ebene} & [name=B]& & & \\ + & & syntaktische Ebene & & \\ + & & \tab{phonetisch-phonologische Ebene\\graphische Ebene} + & & \psshadowbox[framearc=0.25]{Formativ} +\end{psmatrix} +\psset{nodesep=3pt,arrowscale=1.5,arrows=->, + armA=6mm,angleB=180} +\ncline{A}{B} +\ncangles{A}{1,3} \ncangles{A}{2,3} +\ncangles{A}{4,3} \ncangles{A}{5,3} +\ncline{1,3}{1,5} \ncline{5,3}{5,5} +\ncline{<->}{1,5}{5,5}% +} + +\lstset{basicstyle=\ttfamily\footnotesize} + +\begin{document} +\author{Timothy van Zandt\\Herbert Vo\ss} +\docauthor{Christine R\"omer} +\date{\today} +\title{Schematische \"Ubersichten mit \texttt{psmatrix}} + +\maketitle% + +\tableofcontents + +\clearpage +\begin{abstract} +Mit der +\texttt{psmatrix}-Umgebung\index{psmatrix@\texttt{psmatrix}-Umgebung} k\"onnen au{\ss}erhalb +einer mathematischen +Umgebung vielfältige schematische \"Ubersichten gesetzt werden. Das Makro \texttt{psmatrix} +wird nicht extra geladen. Es ist in verschiedene Pakete des +PSTricks-Verbundes\index{PSTricks-Verbund} +(\texttt{pstricks,\\pst-node,pst-grad})\index{pstricks@\texttt{pstricks}} +\index{pst-node@\texttt{pst-node}} \index{pst-grad@\texttt{pst-grad}} integriert + und wird mit ihnen aufgerufen. + +\vfill\noindent +Danke f\"ur die Unterst\"utzung bei der Erstellung dieser Dokumentation an Herbert Vo\ss. +\end{abstract} + + +\section{Einf\"uhrung} + +Mit der +\texttt{psmatrix}-Umgebung\index{psmatrix@\texttt{psmatrix}-Umgebung} k\"onnen +au{\ss}erhalb einer mathematischen +Umgebung schematische \"Ubersichten gesetzt werden. Sie basiert auf dem +Tabellenmakro \texttt{array}\index{array@\texttt{array}} und gleicht ihm deshalb in der +Syntax. Es hat jedoch nicht dessen +Einschr\"ankungen bez\"uglich Verbindungen über die Zellen und Zeilen hinweg. Das Makro +\texttt{psmatrix} +wird nicht extra geladen. Es ist in verschiedene Pakete des +PSTricks-Verbundes\index{PSTricks-Verbund} +(\texttt{pstricks,\\pst-node,pst-grad})\index{pstricks@\texttt{pstricks}} +\index{pst-node@\texttt{pst-node}} \index{pst-grad@\texttt{pst-grad}} integriert und +wird mit ihnen aufgerufen. + +\section{Erstellen einer Matrix} +\subsection{Einordnung} + +Das Makro \bs{\texttt{psmatrix}} arbeitet sowohl in einer \TeX - als auch +\LaTeX-Umgebung: + +\begin{BDef} +\Lcs{psmatrix}\OptArgs \ldots\ \Lcs{endpsmatrix} & \% TeX-Version\\ +\LBEG{psmatrix}\OptArgs \ldots \ \LEND{psmatrix} & \% LaTeX-Version +\end{BDef} + +Da mit der \TeX-Version einige Einschr\"ankungen verbunden sind, wird nur auf +die \LaTeX-Variante eingegangen. Das Grundprinzip des Strukturaufbaus +stellt eine Knoten- und Knotenverbindungszuordnung dar. Diese kann mehrfach +geschachtelt und sowohl bei der Knotenbelegung als auch +Verbindungsdarstellung in verschiedener Weise ausgestalltet werden. Dazu +stellt der PSTricksverbund zahlreiche Makros bereit. + +\subsection{Matrixgrundstruktur}\index{Matrixgrundstruktur} + +Die Knoten werden in der Art einer Tabelle innerhalb der +\texttt{psmatrix}-Umgebung\index{psmatrix@\texttt{psmatrix}-Umgebung} angeordnet. + +\begin{LTXexample}[width=.3\linewidth] +\begin{psmatrix}[rowsep=0.2cm] +1 & 2 & 3 \\ +X & Y & Z +\end{psmatrix} +\end{LTXexample} + + +\section{Zuordnung Knoten zu Verbindungen} + +Die Matrix entsteht durch die Zuordnung von Knoten zu Verbindungen. Die +Knoten werden in die Zellen in der \texttt{psmatrix}-Umgebung eingetragen +(siehe obiges Beispiel). Nach \bs{\texttt{end}}\{\texttt{psmatrix}\} werden die gew\"unschten +Linien definiert. Grunds\"atzlich geschieht dies nach dem Schema + +\psframebox{\bs +nc\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Verbindung}} +[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}] +\{Koordinaten ZelleA\}\{Koordinaten ZelleB\}} + +Die Koordinaten\index{Zellen-Koordinaten} werden, wenn den Zellen keine +Namen gegeben werden (siehe +Parameter \texttt{name}), +durch abz\"ahlen gewonnen: jeweils erst die Zeile und danach durch Komma abgetrennt +die Zelle. + +\vspace{4mm} +\begin{LTXexample}[width=.3\linewidth] +\begin{psmatrix}[rowsep=0.2cm] +1 & 2 & 3 \\ +X & Y & Z +\end{psmatrix} +\ncline[linecolor=red]{1,1}{2,2} +\ncline[linecolor=green]{1,3}{2,2} +\ncline[linestyle=dotted]{<-}{1,2}{2,1} +\ncline[linestyle=dashed]{->}{1,2}{2,3} +\end{LTXexample} + + +\section{Knotenparameter} +\subsection{mnode}\index{mnode@\texttt{mnode}} + +Der Parameter \texttt{mnode=<Knotenart>} legt die Knotenart fest. Das kann lokal für +einzelne Knoten oder global für die ganze Matrix erfolgen (siehe folgende +Beispiele). Dazu muss neben +dem Paket \texttt{pstricks}\index{pstricks@\texttt{pstricks}} auch +\texttt{pst-node}\index{pst-node@\texttt{pst-node}} geladen werden. + +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[mnode=circle,rowsep=0.2cm,colsep=1cm] +1 & 2 \\ +X & Y +\end{psmatrix} +\end{LTXexample} + +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[mnode=circle,rowsep=0.2cm,colsep=1cm] +1 & 2 \\ +[mnode=dia] X & Y +\end{psmatrix} +\end{LTXexample} + +Folgende \textbf{Knotenarten}\index{Knotenarten} stehen zur Verf\"ugung. Ihr Aufruf erfolgt mit +\texttt{mnode=} über die in Klammern angegebenen K\"urzel. + +\begin{compactitem} + \item \texttt{Rnode} (R):\index{Rnode@\texttt{Rnode} (R)} + Es wird damit das Eingetragene zur Basislinie + positioniert. Mittels Optionen kann dies variiert werden. +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[rowsep=0.2cm,linecolor=blue,radius=0.5] +X & [mnode=R,vref=0pt] Y +\end{psmatrix} +\ncline{1,1}{1,2} +\end{LTXexample} + +\item \texttt{Cnode} (C):\index{Cnode@\texttt{Cnode} (C)} Ungef\"ullte Kreise werden gesetzt. +Deren Radius mit dem Parameter \texttt{radius}\index{radius@\texttt{radius}} modifiziert +werden kann. Es muss irgendetwas eingetragen werden, was dann aber nicht erscheint. +\vspace{2mm} +\begin{LTXexample}[width=.3\linewidth] +\begin{psmatrix}[mnode=C,rowsep=0.2cm,linecolor=blue,radius=0.5] + X & Y +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + +\item \texttt{pnode} (p):\index{pnode@\texttt{pnode} (p)} Ein Knoten mit dem Radius Null, ein +leerer Knoten (siehe folgendes Beispiel, wo der Knoten 1 leer gesetzt wird). + +\item \texttt{Circlenode} +(Circle):\index{Circlenode@\texttt{Circlenode} (Circle)} Ein Knoten, der von einem Kreis +umschlossen +wird, dessen Umfang richtet sich nach dem Inhalt. Er kann mit der Option +\texttt{radius} modifiziert werden (siehe obiges Beispiel). + +\vspace{2mm} +\begin{LTXexample}[width=.42\linewidth] +\begin{psmatrix}[mnode=Circle,radius=1cm,rowsep=0.2cm] + X & Y \\ +[mnode=p] 1 & 2 +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + +\item \texttt{dianode} (dia):\index{dianode@\texttt{dianode} (dia)} Ein Knoten, der von +einer Raute umschlossen +wird, deren Umfang richtet sich nach dem Inhalt + +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[mnode=dia,rowsep=0.2cm,colsep=0.7cm] + X & Y \\ + 1 & 2 +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + +\item \texttt{dotnode} (dot):\index{Rnode@\texttt{dotnode} (dot)} Es wird im unmarkierten +Fall ein gef\"ullter Kreisknoten gesetzt, der +u.\,a. \"uber den Parameter \texttt{dotscale} gesteuert +werden kann. + +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[mnode=dot,rowsep=0.2cm] +[mnode=dot,dotscale=3] X & Y \\ +[mnode=dot,dotscale=2,dotstyle=triangle]1&2 +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + +\item \texttt{rnode} (r):\index{Rnode@\texttt{rnode} (r)} +Unterscheidet sich von \bs{rnode} (R) in der +Festlegung des Knotenzentrums, das ohne optionale Parameter das Zentrum +der umgebenden Box ist. Eingesetzter "`Text"' erscheint pur. + +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[mnode=r,rowsep=0.2cm] + X & Y \\ + 1 & 2 +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + + + +\item \texttt{fnode} (f):\index{fnode@\texttt{fnode} (f)} Ein leerer +Rahmen, dessen Gr\"o{"s}e \"uber +\texttt{framesize=} und +Koordinatenfestlegungen beeinflusst werden kann.%\footnote{Diese Funktion +%ist bisher nur eingeschr\"ankt nutzbar, die K\"astchen einer Zeile werden nicht getrennt. +%Mit "`Text"' gef\"ullte K\"astchen k\"onnen einfach mit \bs{\texttt{fbox}\{ +%\}} oder \bs{\texttt{psframebox}\{ \}} gesetzt werden.} + +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[mnode=f,rowsep=0.2cm] + X & Y \\ + 1 & 2 +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + + +\item \texttt{circlenode} +(circle):\index{circlenode@\texttt{circlenode} (circle)} Entspricht +weitgehend \texttt{Circlenode}. Es +kann aber nicht der Radius ge\"andert werden. + +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[mnode=circle,rowsep=0.2cm,colsep=1cm] + X & Y \\ + 1 & 2 +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + +\item \texttt{ovalnode} (oval):\index{ovalnode@\texttt{ovalnode} (oval)} Ovaler Knoten, +dessen Gr\"o"se aus dem Inhalt resultiert. + +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[mnode=oval,rowsep=0.2cm,colsep=0.7cm] + XX & YY \\ + 1 & 2 +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + + +\item \texttt{trinode} (tri):\index{trinode@\texttt{trinode} (tri)} +Dreieck, dessen Gr\"o"se aus dem Inhalt resultiert. + +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[mnode=tri,rowsep=0.2cm,colsep=0.7cm] + X & Y \\ + 1 & 2 +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + +Mit der Option \texttt{trimode}\index{trimode@\texttt{trimode}} kann die Lage der Dreiecke verändert +werden. Die Sternversion verkleinert die Basis und erzeugt aus +stumpfwinkligen (Winkel zwischen 90 und 180 Grad) spitzwinkelige (kleiner +als 90 Grad) Dreiecke. +\vspace{2mm} +\begin{table}[H] +\centering +\caption{Ver\"anderung der Dreieckslage} +\begin{tabular}{@{}ll@{}} +Befehl & Lage des Dreiecks \\ \hline +\texttt{trimode=U} & Spitze oben \\ +\texttt{trimode=D} & Spitze unten \\ +\texttt{trimode=R} & Spitze rechts \\ +\texttt{trimode=L} & Spitze links +\end{tabular} +\end{table} + +\vspace{2mm} +\begin{LTXexample}[width=.25\linewidth] +\begin{pspicture}(0,-2)(3,2) +\begin{psmatrix}[mnode=tri,rowsep=0.2cm,colsep=0.7cm] + [trimode=U] Dreieck \\ + [trimode=*D]Dreieck +\end{psmatrix} +\end{pspicture} +\end{LTXexample} +\vspace{2mm} + + + \item \texttt{no node} (none):\index{no node@\texttt{no node} (none)} Ohne Knoten, was für das + Einf\"ugen von Verbindungslinien sinnvoll sein kann. + + +\end{compactitem} + + + +\subsection{emnode}\index{emnode@\texttt{emnode}} + +Mit \texttt{emnode} k\"onnen verschiedene Arten (Parameter wie bei +\texttt{mnode} von Knoten für "`leere"' Zellen gesetzt +werden. Es muss also nichts in die Zellen eingetragen werden. Wie +nachfolgendes Beispiel auch belegt, kann es dabei auf der rechten Seite zu +fehlerhaften Ausgaben kommen, weil +\bs{pst-node}\index{pst-node@\texttt{pst-node}} da noch nicht v\"ollig korrekt +arbeitet. + + +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[emnode=circle,rowsep=0.2cm,colsep=2cm] + & \\ + & +\end{psmatrix} +\end{LTXexample} +\vspace{2mm} + +\subsection{nodealign}\index{nodealign@\texttt{nodealign}} + +Der Parameter \texttt{nodealign} kann in [\texttt{nodealign=true}] +abge\"andert werden, um das Zentrum des Knotens auf die Basisebene zu +verschieben (vgl. \cite[S.\,259]{PSTricks2}). + +\section{Parameter zu Zellen und Zeilen} + +\subsection{name}\index{name@\texttt{name}} + +Der Parameter \texttt{name} erm\"oglicht es, jeder Zelle einen +selbstgew\"ahlten Namen zu geben, der am Anfang einer Zelle eingef\"ugt werden +muss. Dies kann beim Setzen von Linien die +Arbeit erleichtern, man muss dann nicht die Positionen ausz\"ahlen. + +\vspace{2mm} +\begin{LTXexample}[width=.4\linewidth] +\begin{psmatrix}[emnode=r,colsep=0.4cm, + rowsep=0.4cm] + & [name=A] Buch & \\ +[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman +\end{psmatrix} +\psset{nodesep=3pt,arrows=->} +\ncline{A}{B} \ncline{A}{C} \ncline{A}{D} +\end{LTXexample} +\vspace{2mm} + + +Au"serdem ist es \"uber diese Zellenfestlegung m\"oglich, auch \Lcs{pcline} und +\Lcs{psline} in einer Matrixumgebung zu benutzen. Diese nehmen die +Koordinatenargumente (hier gleich Zellennamen) aber in runden Klammern, wie +in dem folgenden Beispiel zu sehen ist. + +\vspace{2mm} +\begin{LTXexample}[width=.45\linewidth] +\begin{psmatrix}[emnode=r,colsep=1cm, + rowsep=0.4cm] +[name=A]Buch \psspan{3} & \\[1cm] +[name=B]Fachbuch & [name=C]Lehrbuch & +[name=D]Roman +\end{psmatrix} +\psset{nodesep=3pt,arrows=->,linecolor=red} +\psline(A)(C) +\pcline(A)(B) +\nbput*[nrot=:D]{\footnotesize \texttt{pcline}} +\ncline{A}{D} +\naput*[nrot=:U]{\footnotesize \texttt{ncline}} +\end{LTXexample} + +\Lcs{pcline} geht immer vom Zentrum aus und kann nicht an einer +Umgebungsbox beginnen oder aufh\"oren. Sie kann deshalb von +\texttt{nodesep} nicht beeinflusst werden. Andere Parameter -- +beispielsweise \texttt{offset=},\index{offset@\texttt{offset}} der eine vertikale Verschiebung +erm\"oglicht, -- k\"onnen das aber schon. \Lcs{psline} +reagiert wiederum darauf nicht. + +\vspace{2mm} +\begin{LTXexample}[width=.3\linewidth] +\begin{psmatrix}[emnode=r,colsep=1cm,rowsep=0.4cm] +[name=A]Fachbuch & \\[1cm] + & [name=C]Roman +\end{psmatrix} +\psset{nodesep=3pt,arrows=<-,linecolor=red,offset=0.3cm} +\pcline(A)(C) +\pcline(C)(A) +\end{LTXexample} + +\begin{LTXexample}[width=.3\linewidth] +\begin{psmatrix}[emnode=r,colsep=1cm,rowsep=0.4cm] + [name=A] Fachbuch & \\[1cm] + & [name=C] Roman +\end{psmatrix} +\psset{nodesep=3pt,arrows=->,linecolor=red,offset=1cm} +\psline(A)(C) +\psline(C)(A) +\end{LTXexample} + + + +\subsection{mcol}\index{mcol@\texttt{mcol}} + +Mit \texttt{mcol} kann lokal und global der horizontale +Zellenabstand\index{Zellenabstand!horizontal} +mit den Optionen \texttt{l,r,c} modifiziert werden. + +\vspace{2mm} +\begin{LTXexample}[width=.4\linewidth] +\begin{psmatrix}[emnode=r,colsep=0.4cm, + rowsep=0.4cm,mcol=r] + & [name=A] Buch & \\ +[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman +\end{psmatrix} +\psset{nodesep=3pt,arrows=->} +\ncline{A}{B} \ncline{A}{C} \ncline{A}{D} +\end{LTXexample} +\vspace{2mm} + +\begin{LTXexample}[width=.4\linewidth] +\begin{psmatrix}[emnode=r,colsep=0.4cm, + rowsep=0.4cm,mcol=l] + & [name=A]Buch & \\ +[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman +\end{psmatrix} +\psset{nodesep=3pt,arrows=->} +\ncline{A}{B} \ncline{A}{C} \ncline{A}{D} +\end{LTXexample} + +\subsection{rowsep und colsep}\index{Abstand!Zellen und Zeilen} + +Mit \texttt{rowsep}\index{rowsep@\texttt{rowsep}} kann man den +vertikalen und mit \texttt{colsep}\index{colsep@\texttt{colsep}} +den horizontalen Abstand zwischen +den Zeilen bzw. Zellen regulieren; welchen hinzuf\"ugen oder mit einem +negativen Wert reduzieren (siehe Beispiele bei \texttt{name}). + +\subsection{mnodesize}\index{mnodesize@\texttt{mnodesize}} + +Im Defaultfall wird die Breite der Zellen\index{Zelle!Breite} von deren Inhalt bestimmt; +innerhalb einer Zellenspalte von der mit dem gr\"o"sten Umfang. Mit +\texttt{mnodesize=} kann allen Spalten dieselbe Breite gegeben werden. +Dabei ist zu beachten, dass kein automatischen +Zeilenumbruch\index{Zelle!Zeilenumbruch} in den Zellen +erfolgt. Man kann in eine Zelle jedoch mehrere Zeilen über eine Tabelle +einbringen. + +\begin{LTXexample}[width=.52\linewidth] +\begin{psmatrix}[emnode=r, +colsep=-0.4cm,rowsep=0.6cm, +mnodesize=3cm] +& [name=A] + \begin{tabular}{c}Grafische\\Grundelemente\end{tabular} & \\ +[name=B]Linien & [name=C]Polygone & +[name=D]Rahmen +\end{psmatrix} +\psset{nodesep=3pt,arrows=->} +\ncline{A}{B} \ncline{A}{C} +\ncline{A}{D} +\end{LTXexample} + +Wenn der von \texttt{mnodesize=} festgelegte Raum nicht ausreichend ist +erweitert sich einfach die Zelle. + +\subsection{psspan}\index{psspan@\texttt{psspan}} + +Mit \texttt{psspan\{n\}} k\"onnen Zellen analog zu +\bs{multicolumn}\index{multicolumn@\texttt{\textbackslash{multicolumn}}} mehrere +Zellen\index{Zellen!zusammenfassen} zusammengefasst werden. + +\begin{LTXexample}[width=.4\linewidth] +\begin{psmatrix}[emnode=r,colsep=0.4cm, +rowsep=0.4cm] +[name=A]Buch \psspan{3} & \\ +[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman +\end{psmatrix} +\psset{nodesep=3pt,arrows=->} +\ncline{A}{B} \ncline{A}{C} \ncline{A}{D} +\end{LTXexample} + + +\section{Knotenverbindungen}\index{Knotenverbindung} + +Die Knotenverbindungen beginnen in der Regel mit \texttt{nc} und haben die Syntax: + +\begin{BDef} +\bs{Knotenverbindung}\OptArgs\{Pfeile\}\{KnotenA\}\{KnotenB\} +\end{BDef} + +Sie gehen von einem Knoten zu einem anderen, wenn es nicht anders festgelegt +wurde, ist die Zielorientierung die Knotenmitte. + +Die Knotenverbindungen können über eine Reihe von Parametern geändert +werden (vgl. \cite[S.\,43\,f]{PSTricks2} und \cite{siart}). Einige, die für das Zeichnen von +Strukturen besonders relevant sind, werden in der nachfolgenden Tabelle +aufgelistet:\index{Knotenverbindung!Parameter} + +\begin{table}[H] +\centering +\caption{Parameter f\"ur Knotenverbindungen} +\begin{tabular}{@{}lll@{}} +Name & Werte & Vorgabe \\ \hline +\texttt{linewidth} & <Wert>\OptEinh\ & 0.8pt \\ +\texttt{linecolor} & <Farbe> & black \\ +\texttt{linestyle} & none|solid|dotted|dashed & solid \\ +\texttt{shadow} & <an (true)/aus (false)> & false \\ +\texttt{shadowsize} & <Wert>\OptEinh\ & 3pt \\ +\texttt{shadowangle} & <Winkel> & $-$45 \\ +\texttt{shadowcolor} & <Farbe> & darkgray \\ +\texttt{arrows} & <Pfeiltyp> & -- \\ +\texttt{doubleline} & <true/false> & false +\end{tabular} +\end{table} + +\subsection{ncline} + +Mit \Lcs{ncline} wird eine direkte Linie von einem Knoten zum anderen +gezogen\footnote{Wenn Sie das nächste Beispiel mit den +folgenden Beispielen vergleichen, können Sie auch sehen, dass eine bessere +Positionierung in einer einfachen Box über die Umgebung +\bs{\texttt{pspicture}} +m\"oglich ist. Zumal ohne diese Umgebung die Kurvenlinien \"uber die Box +hinausragen w\"urden, wie dies im ersten Beispiel zu \texttt{ncdiag} der +Fall ist.}. + +\begin{LTXexample}[width=.35\linewidth] +\begin{psmatrix}[emnode=r,colsep=2cm] + KnotenX & KnotenY +\end{psmatrix} +\ncline[linecolor=red]{1,1}{1,2} +\end{LTXexample} + + +\subsection{ncarc}\xLcs{ncarc} + +Eine Kurve verbindet die Knoten. + +\begin{LTXexample}[width=.35\linewidth] +\begin{pspicture}(0,-0.5)(4,1) +\begin{psmatrix}[emnode=r,colsep=2cm] + KnotenX & KnotenY +\end{psmatrix} +\ncarc[linecolor=red]{<->}{1,1}{1,2} +\end{pspicture} +\end{LTXexample} + +Mit der Option \texttt{arcangle=}\index{arcangle@\texttt{arcangle}} kann der +Steigungswinkel\index{Steigungswinkel} erh\"oht werden. + +\begin{LTXexample}[width=.35\linewidth] +\begin{pspicture}(0,-0.5)(4,1) +\begin{psmatrix}[emnode=r,colsep=2cm] + KnotenX & KnotenY +\end{psmatrix} +\ncarc[arcangle=60,linecolor=red]{<->}{1,1}{1,2} +\end{pspicture} +\end{LTXexample} + +In der Sternchenversion wird der von der Kurve eingeschlossenen Raum mit +der Linienfarbe ausgefüllt. + +\begin{LTXexample}[width=.4\linewidth] +\begin{pspicture}(0,-0.5)(4,1) +\begin{psmatrix}[emnode=r,colsep=2cm] + KnotenX & KnotenY +\end{psmatrix} +\ncarc*[arcangle=60,linecolor=red]{<->}{1,1}{1,2} +\end{pspicture} +\end{LTXexample} + + +\subsection{ncdiag} + +Mit \Lcs{ncdiag} wird eine Linie in drei Segmente "`zerlegt"'. Man kann +diese Zerlegung über die Winkelfestlegungen (siehe folgendes Beispiel) +steuern. + +\begin{LTXexample}[width=.4\linewidth] +\begin{psmatrix}[emnode=r,colsep=2cm] + KnotenX & KnotenY +\end{psmatrix} +\ncdiag[angleA=90,angleB=-90,linecolor=red]{<->}{1,1}{1,2} +\end{LTXexample} + +Die Angabe \texttt{arm=0}\index{arm@\texttt{arm}} erzwingt eine gerade Linie. + +\begin{LTXexample}[width=.4\linewidth] +\begin{psmatrix}[emnode=r,colsep=2cm] + KnotenX & KnotenY +\end{psmatrix} +\ncdiag[angleA=-90,angleB=90,arm=0,linecolor=red]{<->}{1,1}{1,2} +\end{LTXexample} + +\subsection{ncdiagg} + +\Lcs{ncdiagg} ist \Lcs{ncdiag} \"ahnlich. Für den Ausgangsknoten wird aber +nur eine Verbindung gezeichnet. + +\begin{LTXexample}[width=.3\linewidth] +\usepackage{pstricks-add} +\begin{pspicture}(-1,-1)(4,6) + \circlenode{A}{A}\quad\circlenode{C}{C} + \rput(0,4){\circlenode{B}{B}} + \rput(1,5){\circlenode{D}{D}} + {\psset{arrowscale=2,linearc=0.2, + linecolor=red,armA=0.5,angleA=90} + \ncdiagg[lineAngle=-160]{->}{A}{B} + \ncput*[nrot=:U]{Linie I} + \ncdiagg[lineAngle=-160]{->}{C}{D} + \ncput*[nrot=:U]{Linie II}} +\end{pspicture} +\end{LTXexample} + +\subsection{ncbar} + +\Lcs{ncbar} arbeitet ähnlich wie \Lcs{ncdiag}. Zwei Knoten werden +durch drei Linienteile verbunden. + +\begin{LTXexample}[width=.4\linewidth] +\begin{pspicture}(0,1)(4,-2) +\begin{psmatrix}[emnode=r] +\psset{arrowscale=2} +Verbinde {\rnode{A}{KnotenX}} mit +{\rnode{B}{KnotenY}}! +\end{psmatrix} +\ncbar[nodesep=3pt,angleA=-90,angleB=90,linecolor=red,arrows=<->,arrowscale=2, +arm=0.8]{A}{B} +\end{pspicture} +\end{LTXexample} + + +\subsection{ncbarr} + +\Lcs{ncbarr} verwendet f\"unf Liniensegmente und erstellt damit eine +S-f\"ormige Verbindung. + +\begin{LTXexample}[width=.3\linewidth] +\begin{psmatrix} + & \circlenode{X}{X}\\[1cm] + & \circlenode{Y}{Y} +\end{psmatrix} +\ncbarr[angleA=0,linecolor=red]{X}{Y} +\end{LTXexample} + + +\subsection{ncangle} + +\Lcs{ncangle} erm\"oglich genauer berechnete dreiteilige Linien. Es +arbeitet analog zu \Lcs{ncdiag}. + +\begin{LTXexample}[width=.37\linewidth] +\begin{pspicture}(0,1)(4,-1) +\begin{psmatrix}[emnode=r,colsep=2cm, + rowsep=0.5cm] +KnotenX & KnotenY \\ +\end{psmatrix} +\ncdiag[angleA=-90,angleB=135,armA=1cm,armB=1cm, +linearc=.5,linecolor=red]{->}{1,1}{1,2} +\end{pspicture} +\end{LTXexample} + +\subsection{ncangles} + +\Lcs{ncangles} produziert viergliedrige Linien. + +\begin{LTXexample}[width=.4\linewidth] +\begin{pspicture}(0,1)(4,-2.3) +\begin{psmatrix}[emnode=r,colsep=2cm, + rowsep=0.5cm] +\psframebox{\emph{KnotenX}} & +\psframebox{\emph{KnotenY}} +\end{psmatrix} +\ncangles[angleA=-90,angleB=135,armA=1cm, + armB=1cm, +linearc=.15,linecolor=red]{->}{1,1}{1,2} +\rput[bl](-5,-0.7){armA} +\rput[rB](-0.4,0.5){armB} +\end{pspicture} +\end{LTXexample} + +\subsection{ncloop} + +\Lcs{ncloop} setzt f\"unfgliedrige Linien. Gegenüber \Lcs{ncangles} +kommt noch die Option \texttt{loopsize}\index{loopsize@\texttt{loopsize}} hinzu, die die +H\"ohe für einen Loop (eine Schlinge) vorgibt. + + +\begin{LTXexample}[width=.45\linewidth] +\begin{pspicture}(-1.5,-1)(4,2) +\rnode[lB]{A}{\psframebox{Knoten mit Schlinge}} +\ncloop[angleB=180,loopsize=1,arm=.5, + linearc=.2,linecolor=red]{->}{A}{A} +\ncput[npos=3.5,nrot=:U]{\psline{|<->|}% + (0.5,-0.2)(-0.5,-0.2)} +\nbput[npos=3.5,nrot=:D,labelsep=.35cm]{% + {\small\texttt{loopsize}}} +\end{pspicture} +\end{LTXexample} + +\subsection{nccurve} + +\Lcs{nccurve} setzt eine B\`ezierkurve zwischen zwei Knoten, die über +die Winkel \texttt{angleA} und \texttt{angleB} sowie den +Kurvenparameter\index{Kurvenparameter} +\texttt{ncurv}\index{nccurv@\texttt{nccurv}} gesteuert werden kann. + +\begin{LTXexample}[width=.4\linewidth] +\begin{psmatrix}[emnode=r,colsep=2cm, +rowsep=0.5cm] +{\rnode{A}{\psframebox{KnotenX}}} & \\ +& {\rnode{B}{\psframebox{KnotenY}}} +\end{psmatrix} +\nccurve[angleB=180,ncurv=0.9, +linecolor=red]{A}{B} +\end{LTXexample} + +\subsection{nccircle} + +\Lcs{nccircle} erzeugt \"uber einem Knoten einen ungef\"ullten oder gef\"ullten +(Sternchenversion) Kreis. + +\vspace{2mm} +\begin{LTXexample}[width=.25\linewidth] +\begin{pspicture}(-1,-1)(3,2) +\begin{psmatrix}[emnode=r] +\rnode{A}{herum} +\end{psmatrix} +\nccircle[nodesep=3pt,linecolor=red]{->}{A}{.8cm} +\kern 5pt +\end{pspicture} +\end{LTXexample} + +\vspace{2mm} +\begin{LTXexample}[width=.25\linewidth] +\begin{pspicture}(-1,-1)(3,2) +\begin{psmatrix}[emnode=r] +\rnode{A}{dar\"uber} +\end{psmatrix} +\nccircle*[nodesep=3pt,linecolor=lightgray]{->}{A}{1cm} +\kern 5pt +\end{pspicture} +\end{LTXexample} + +\subsection{offset} + +Die Option \texttt{offset}\index{offset@\texttt{offset}} verschiebt, wie +schon bei den Erl\"auterungen zu dem Parameter \texttt{name} angesprochen, +die Verbindungslinie parallel zum eigentlich festgelegten Verlauf. Dies ist +besonders bei zwei Linien sinnvoll und effektiv. +Wenn man jede Linien einzeln modifizieren m\"ochte, kann dies mit +\texttt{offsetA}\index{offsetA@\texttt{offsetA}} und +\texttt{offsetB}\index{offsetB@\texttt{offsetB}} +geschehen. Beispielsweise, wenn von +einem Knoten zwei Verbindungen ausgehen sollen. + +\vspace{2mm} +\begin{LTXexample}[width=.2\linewidth] +\begin{psmatrix}[emnode=r,colsep=1cm,rowsep=0.4cm] +[name=A]Buch \\ +[name=B]Fachbuch \\ +[name=C]\LaTeX buch +\end{psmatrix} +\psset{nodesep=3pt,arrows=->,linecolor=red,offset=0.3cm} +\pcline[offsetA=0.3cm](A)(B) +\pcline[offsetB=-0.3cm](A)(C) +\end{LTXexample} + + +\section{Linien beschriften}\index{Linienbeschriftung} + +\subsection{Beschriftung einf\"ugen} + +\psframebox{\parbox{0.65\textwidth}{ +\bs ncput\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{*} +[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}] +\{Beschriftung auf der Linie\}\\ +\bs naput\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{*} +[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}] +\{Beschriftung \"uber der Linie\}\\ +\bs nbput\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{*} +[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}] +\{Beschriftung unter der Linie\} +}} + +\begin{LTXexample}[width=.4\linewidth] +\begin{pspicture}(0,1)(4,-2) +\begin{psmatrix}[emnode=r] +\psset{arrowscale=2} +Verbinde {\rnode{A}{KnotenX}} mit +{\rnode{B}{KnotenY}}! +\end{psmatrix} +\ncbar[nodesep=3pt,angleA=-90,angleB=90, +linecolor=red,arrows=<->,arrowscale=2,arm=0.8] +{A}{B} +\ncput*{auf} +\naput*{\"uber} +\nbput*{unter} +\end{pspicture} +\end{LTXexample} + +Die angegebene Sternchenversion ist besser geeignet, da sie die Linien +überschreibt und damit die Beschriftungen besser sichtbar sind (vgl. mit +der nachfolgenden Beispielversion ohne Sternchen). Das betrifft besonders +die \texttt{naput}-Version. + +\begin{LTXexample}[width=.4\linewidth] +\begin{pspicture}(0,1)(4,-2) +\begin{psmatrix}[emnode=r] +\psset{arrowscale=2} +Verbinde {\rnode{A}{KnotenX}} mit +{\rnode{B}{KnotenY}}! +\end{psmatrix} +\ncbar[nodesep=3pt,angleA=-90,angleB=90, +linecolor=red,arrows=<->,arrowscale=2,arm=0.8] +{A}{B} +\ncput{auf} +\naput{\"uber} +\nbput{unter} +\end{pspicture} +\end{LTXexample} + +Ohne die Angabe von Optionen wird die Beschriftung auf den sichtbaren +Linienteil geschrieben. Sie orientiert sich dabei an der Linienmitte. +Mit \texttt{npos=}\index{npos@\texttt{npos}} und +\text{nrot=}\index{nrot@\texttt{nrot}} kann diese Orientierung ge\"andert werden. + +Mit \Lcs{psset}\{labelset=\} kann der Abstand zwischen Label und Linie +reguliert werden. Wenn der Wert auf 0pt gesetzt wird (also direkt über oder +unter der Linie, sollte f\"ur \Lcs{naput} bzw. \Lcs{nbput} nicht die +Sternchenversion gew\"ahlt werden, die wahrscheinlich ohnehin nur f\"ur +\Lcs{ncput} sinnvoll scheint. Die Nullversion ist immer dann zu nehmen, +wenn es Probleme mit dem Sichtbarmachen des Labels gibt. + +\subsection{npos} + +\texttt{npos} ermöglicht die Platzierung der Beschriftung auf den +verschiedenen Segmenten des entsprechenden Linientyps. Die Zahl gibt vor +dem Punkt die Segmentnummer (0,1,2,\ldots) und nach dem Punkt den Abstand +zum Segmentanfang an. Im folgenden Beispiel bekommt die Beschriftung den +Wert 1.2 und steht damit auf dem zweiten Liniensegment 20\% vom +Segmentanfang. + +\begin{table}[H] +\centering +\caption{Zusammenstellung der Kurzformen für die Drehwinkel}\label{tab:wind} + \begin{tabular}{@{}l|*{8}{>{\ttfamily}c}@{}} + \emph{Buchstabe} & U & L & D & R & N & W & S & E \\\hline + \emph{Bedeutung} & Up& Left&Down&Right&North&West&South&East\\ + \emph{Enstprechung} &0&90&180&270&*0&*90&*180&*270 +% +% \begin{tabular}{@{}>{\ttfamily}llr@{}} +% \textrm{Buchstabe} & Bedeutung & Winkel\\\hline +% U & Up & 0\\ +% L & Left & 90\\ +% D & Down & 180\\ +% R & Right & 270\\ +% N & North & *0\\ +% W & West & *90\\ +% S & South & *180\\ +% E & East & *270 + \end{tabular} +\end{table} + +\begin{LTXexample}[width=.4\linewidth] +\begin{pspicture}(0,1)(4,-2) +\begin{psmatrix}[emnode=r] +\psset{arrowscale=2} +Verbinde {\rnode{A}{KnotenX}} mit +{\rnode{B}{KnotenY}}! +\end{psmatrix} +\ncbar[nodesep=3pt,angleA=-90,angleB=90, +linecolor=red,arrows=<->,arrowscale=2,arm=0.8] +{A}{B} +\ncput*[npos=1.2]{auf} +\end{pspicture} +\end{LTXexample} + + +\subsection{nrot} + +\texttt{nrot=:Winkel/K\"urzel} erm\"oglicht es die Beschriftung zu +drehen: + +\begin{table}[htb] +\centering\tabcolsep=3pt +\caption{Vergleich der verschiedenen Knotenverbindungen bez\"uglich ihrer +Segmentanzahl}\label{tab:segmente} +\hspace*{-1em} +\begin{tabular}{@{} lccc | lccc @{}} +\emph{Verbindung} & \emph{Segm.} & \emph{Bereich} & \emph{Vorgabe} & +\emph{Verbindung} & \emph{Segm.} & \emph{Bereich} & \emph{Vorgabe}\\\hline + \Lcs{ncline} & $1$ & $0\leq npos\leq 1$ & $0.5$ & + \Lcs{nccurve} & $1$ & $0\leq npos\leq 1$ & $0.5$\\ + \Lcs{ncarc} & $1$ & $0\leq npos\leq 1$ & $0.5$ & + \Lcs{ncbar} & $3$ & $0\leq npos\leq 3$ & $1.5$\\ + \Lcs{ncdiag} & $3$ & $0\leq npos\leq 3$ & $1.5$ & + \Lcs{ncdiagg} & $2$ & $0\leq npos\leq 2$ & $0.5$\\ + \Lcs{ncangle} & $3$ & $0\leq npos\leq 3$ & $1.5$ & + \Lcs{ncangles} & $4$ & $0\leq npos\leq 4$ & $1.5$\\ + \Lcs{ncloop} & $5$ & $0\leq npos\leq 5$ & $2.5$ & + \Lcs{nccircle} & $1$ & $0\leq npos\leq 1$ & $0.5$\\ +\end{tabular} +\end{table} + + +\begin{LTXexample}[width=.4\linewidth] +\begin{pspicture}(0,1)(4,-2) +\begin{psmatrix}[emnode=r] +\psset{arrowscale=2} +Verbinde {\rnode{A}{KnotenX}} mit +{\rnode{B}{KnotenY}}! +\end{psmatrix} +\ncbar[nodesep=3pt,angleA=-90,angleB=90, +linecolor=red,arrows=<->,arrowscale=2,arm=0.8] +{A}{B} +\ncput*[nrot=:L]{auf} +\end{pspicture} +\end{LTXexample} + +\section{Strukturbeispiele} + + + +Jetzt sollen noch einige wenige Beispiele von Struktur\"ubersichten +vorgestellt werden, die von mir in der \texttt{pstmatrix}-Umgebung gesetzt wurden. + +\begin{figure}[H]\centering +\begin{psmatrix}[colsep=0.8,rowsep=0.8] +\psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true] +{$\left[\tabular{c}GF: /Pinguin/\\ WA: +N\endtabular\right]$} + & \psframebox[fillcolor=yellow!40,fillstyle=solid]{Vogel} \\ +\psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{\tabular{l}aufrecht\\ gehend\endtabular} + & \psshadowbox[fillcolor=red,fillstyle=solid,shadow=true,blur=true,shadowsize=5pt]{\textbf{Pinguin}} & + \psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{flugunfähig}\\ + & \psframebox[fillcolor=green!40,fillstyle=solid]{Felsenpinguin} +\end{psmatrix} +\ncline{1,1}{2,2} \naput{s} +\ncline{1,2}{2,2} \naput{ob} +\ncline{2,1}{2,2} \naput{a} +\ncline{2,2}{2,3} \naput{a} +\ncline{2,2}{3,2} \naput{ub} +\caption{Ein Frame} +\end{figure} + +\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single] +\usepackage{pst-node,pst-blur} +\begin{psmatrix}[colsep=0.8,rowsep=0.8] +\psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true] +{$\left[\tabular{c}GF: /Pinguin/\\ WA: +N\endtabular\right]$} + & \psframebox[fillcolor=yellow!40,fillstyle=solid]{Vogel} \\ +\psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{\tabular{l}aufrecht\\ gehend\endtabular} + & \psshadowbox[fillcolor=red,fillstyle=solid,shadow=true,blur=true,shadowsize=5pt]{\textbf{Pinguin}} & + \psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{flugunfähig}\\ + & \psframebox[fillcolor=green!40,fillstyle=solid]{Felsenpinguin} +\end{psmatrix} +\ncline{1,1}{2,2} \naput{s} +\ncline{1,2}{2,2} \naput{ob} +\ncline{2,1}{2,2} \naput{a} +\ncline{2,2}{2,3} \naput{a} +\ncline{2,2}{3,2} \naput{ub} +\end{lstlisting} + + +\begin{figure}[H]\centering +\begin{psmatrix}[colsep=0.8,rowsep=0.8] +\psset{shortput=nab,framesep=10pt} + \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Lebewesen} & + \psframebox[fillcolor=yellow!40,fillstyle=solid]{allgemeine Kategorisierung}\\ + \psshadowbox[framearc=0.25,fillcolor=red!40,fillstyle=solid,doubleline=true]{\textbf{Löwe}} +& \psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]{Basisebene}\\ + \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Höhlenlöwe} +& \psframebox[fillcolor=green!30,fillstyle=solid]{spezielle Kategorisierung} +\end{psmatrix} +\psset{nodesep=2pt,arrows=->} +\ncline[arrowscale=2]{1,1}{2,1} +\ncline[arrowscale=2]{2,1}{3,1} +\caption{Eine konzeptuelle Kategorisierung} +\end{figure} + +\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single] +\begin{psmatrix}[colsep=0.8,rowsep=0.8] +\psset{shortput=nab,framesep=10pt} + \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Lebewesen} & + \psframebox[fillcolor=yellow!40,fillstyle=solid]{allgemeine Kategorisierung}\\ + \psshadowbox[framearc=0.25,fillcolor=red!40,fillstyle=solid,doubleline=true]{\textbf{Löwe}} +& \psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]{Basisebene}\\ + \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Höhlenlöwe} +& \psframebox[fillcolor=green!30,fillstyle=solid]{spezielle Kategorisierung} +\end{psmatrix} +\psset{nodesep=2pt,arrows=->} +\ncline[arrowscale=2]{1,1}{2,1} +\ncline[arrowscale=2]{2,1}{3,1} +\end{lstlisting} + +\begin{figure}[H]\centering +\psset{framearc=0.2,shadow=true,fillstyle=solid,shadowcolor=black!55} +\begin{psmatrix}[colsep=0,rowsep=0.9] + & & \psframebox[fillcolor=blue!30]{Synchronie}\\ + & \psframebox[fillcolor=red!30]{Sprache} & \\ + & & \psframebox[fillcolor=blue!30]{Diachronie} \\ +\psframebox[fillcolor=red!30]{Menschliche Rede} & & \\ + & \psframebox[fillcolor=red!30]{Sprechen} & + \end{psmatrix} + \psset{shadow=false} +\ncline[arrows=->,arrowscale=2]{2,2}{1,3} +\ncline[arrows=->,arrowscale=2]{2,2}{3,3} +\ncline[arrows=->,arrowscale=2]{4,1}{2,2} +\ncline[arrows=->,arrowscale=2]{4,1}{5,2} +\caption{F. de Saussure zu Sprache} +\end{figure} + +\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single] +\psset{framearc=0.2,shadow=true,fillstyle=solid,shadowcolor=black!55} +\begin{psmatrix}[colsep=0,rowsep=0.9] + & & \psframebox[fillcolor=blue!30]{Synchronie}\\ + & \psframebox[fillcolor=red!30]{Sprache} & \\ + & & \psframebox[fillcolor=blue!30]{Diachronie} \\ +\psframebox[fillcolor=red!30]{Menschliche Rede} & & \\ + & \psframebox[fillcolor=red!30]{Sprechen} & + \end{psmatrix} + \psset{shadow=false} +\ncline[arrows=->,arrowscale=2]{2,2}{1,3} +\ncline[arrows=->,arrowscale=2]{2,2}{3,3} +\ncline[arrows=->,arrowscale=2]{4,1}{2,2} +\ncline[arrows=->,arrowscale=2]{4,1}{5,2} +\end{lstlisting} + +\begin{figure}[H] \centering +\begin{psmatrix}[emnode=r,colsep=0.5cm,rowsep=0.5cm,mcol=c] + & & & & <Metall> & \\ + & & & [mnode=oval] 18 & &\\ + <WERKZEUG> & & & & & \\ + & & & &[mnode=tri] 12 &\\ + & & & & & <arbeiten> \\ + & & [mnode=C,linestyle=dashed,radius=0.5,mcol=l] & & &\\ + \fbox{12} & & & \fbox{51} & & \\ + & \fbox{36} & & & <Hammer> &\\ + <Feile> & & <Zange> & & & +\end{psmatrix} +\psset{arrowscale=2,labelsep=0pt} +\ncline{->}{1,5}{2,4} +\ncarc{->}{4,5}{2,4}\naput[npos=0.4]{OBJ} +\ncarc{->}{6,3}{4,5}\naput[npos=0.4]{INSTR} +\ncline{<->}{6,3}{3,1} +\ncarc{->}{6,3}{7,1}\naput[npos=0.4]{UB} +\ncarc{->}{6,3}{7,4}\naput[npos=0.4]{UB} +\ncarc{->}{6,3}{8,2}\naput[npos=0.4]{UB} +\ncarc{->}{9,1}{7,1} \ncarc{->}{9,3}{8,2} +\ncarc{->}{8,5}{7,4} \ncline{->}{5,6}{4,5} +\caption{Begriffliches Merkmalsnetz nach Hoffmann} +\end{figure} + +\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single] +\begin{psmatrix}[emnode=r,colsep=0.5cm,rowsep=0.5cm,mcol=c] + & & & & <Metall> & \\ + & & & [mnode=oval] 18 & &\\ + <WERKZEUG> & & & & & \\ + & & & &[mnode=tri] 12 &\\ + & & & & & <arbeiten> \\ + & & [mnode=C,linestyle=dashed,radius=0.5,mcol=l] & & &\\ + \fbox{12} & & & \fbox{51} & & \\ + & \fbox{36} & & & <Hammer> &\\ + <Feile> & & <Zange> & & & +\end{psmatrix} +\psset{arrowscale=2,labelsep=0pt} +\ncline{->}{1,5}{2,4} +\ncarc{->}{4,5}{2,4}\naput[npos=0.4]{OBJ} +\ncarc{->}{6,3}{4,5}\naput[npos=0.4]{INSTR} +\ncline{<->}{6,3}{3,1} +\ncarc{->}{6,3}{7,1}\naput[npos=0.4]{UB} +\ncarc{->}{6,3}{7,4}\naput[npos=0.4]{UB} +\ncarc{->}{6,3}{8,2}\naput[npos=0.4]{UB} +\ncarc{->}{9,1}{7,1} \ncarc{->}{9,3}{8,2} +\ncarc{->}{8,5}{7,4} \ncline{->}{5,6}{4,5} +\end{lstlisting} + +\newpage +\bgroup +\appendix + +%\addcontentsline{toc}{section}{Literaturverzeichnis} + +\nocite{*} +\raggedright + +\printbibliography +\egroup +\clearpage +\addcontentsline{toc}{section}{Index} +\printindex + + +\end{document} + + diff --git a/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdf b/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdf Binary files differindex 8be7b3ec52..f8bebfdf1e 100644 --- a/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdf +++ b/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdf diff --git a/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex b/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex index 5ff16cb6cf..a4d0faa964 100644 --- a/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex +++ b/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex @@ -1,7 +1,8 @@ -\RequirePackage{pdfmanagement-testphase} -\DeclareDocumentMetadata{} -%% $Id: pst-node-doc.tex 438 2022-01-31 17:45:26Z herbert $ -\documentclass[fontsize=11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small, +%\RequirePackage{pdfmanagement-testphase} +\DocumentMetadata{} +%% $Id: pst-node-doc.tex 920 2024-07-11 07:41:04Z herbert $ +\documentclass[fontsize=11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false, + headings=small, headinclude=false,footinclude=false,oneside]{pst-doc} \listfiles @@ -75,7 +76,8 @@ when also running the main package \LPack{pstricks} with this option. \vfill \noindent -Thanks to: Marco Daniel; Denis Girou; Thomas Iyer; Rolf Niepraschk; Sebastian Rahtz; Andi Setiawan; +Thanks to: Marco Daniel; Denis Girou; Thomas Iyer; Rolf Niepraschk; Sebastian Rahtz; +Erich Schmidt; Andi Setiawan; \end{abstract} \clearpage @@ -1356,7 +1358,7 @@ Here is how I used \Lcs{nput} to mark an angle in a previous example: \end{pspicture} \end{LTXexample} -\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%% +%\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%% For the put macros there are several possibilities: @@ -1411,7 +1413,7 @@ will produce the same effect as \end{LTXexample} -\clearpage%%%%%%%%%%%%%%%%%%%%%%%%% +%\clearpage%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Normal behavior with rotation} If there are a point $B$ of type node and a point $A$ of any type then @@ -1589,7 +1591,7 @@ connections: You can include the node connections inside the \Lcs{psmatrix}, in the last entry and right before \Lcs{endpsmatrix}. One advantage to doing this is that -\Lkeyset{shortput=tab} is the default within a \Lcs{psmatrix}. +\Lkeyset{shortput=tab} is the default within a \Lcs{psmatrix}.\label{tab} \begin{LTXexample} $ \begin{psmatrix} @@ -2489,13 +2491,12 @@ For example, \end{pspicture} \end{LTXexample} - \begin{BDef} \Lcs{fnpnode}\Largb{xval}\Largb{expression in x}\Largb{nodename} \end{BDef} - sets a single node on the graph. Eg, + sets a single node on the graph, eg: \begin{verbatim} \fnpnode{.5}{x x 1 add mul 2 div}{P} @@ -2507,7 +2508,12 @@ For example, \end{verbatim} If your expression in \texttt{t} is algebraic, you must specify the keyword \texttt{algebraic}, as in - \Lcs{fnpnode}\verb|[algebraic]{0.5}{x*(x+1)/2}{P}|. + + +\begin{verbatim} +\fnpnode[algebraic]{0.5}{x*(x+1)/2}{P} +\end{verbatim} + \begin{LTXexample}[width=.35\textwidth] \begin{pspicture}[showgrid](-.5,-.5)(2.5,3) @@ -2574,7 +2580,7 @@ turn a list of coordinates into a node sequence P0 P1 ... \begin{LTXexample}[width=.35\textwidth] \begin{pspicture}[showgrid,algebraic](-.5,-.5)(2.5,2) \pnodes{B}(.1,.1)(1;10)(*2 {x^2/4})(0,1.4) -%definesuP0..P3--now join them +% defines P0..P3 -- now join them \psnline[arrowscale=2]{-D>}(0,3){B} \end{pspicture} \end{LTXexample} @@ -2635,7 +2641,7 @@ Conversion between any angle unit and radian unit \begin{LTXexample}[width=.35\textwidth] \begin{pspicture}[showgrid,algebraic](-.5,-.5)(2.5,2) \pnodes{P}(.1,.1)(1;10)(*2 {x^2/4})(0,1.4) -%defines P0..P3--now join them +% defines P0..P3 -- now join them \psncurve[arrowscale=2]{-D>}(0,3){P} \end{pspicture} \end{LTXexample} @@ -2644,7 +2650,7 @@ Conversion between any angle unit and radian unit \begin{LTXexample}[width=.35\textwidth] \begin{pspicture}[showgrid,algebraic](-.5,-.5)(2.5,2) \pnodes{P}(.1,.1)(1;10)(*2 {x^2/4})(0,1.4) -%defines P0..P3--now join them +% defines P0..P3 -- now join them \psnccurve[arrowscale=2]{-D>}(0,3){P} \end{pspicture} \end{LTXexample} @@ -2753,7 +2759,7 @@ line from \verb|<basept>+<nodexpr1>| to \verb|<basept>+<nodexpr2>|. \curvepnode{2}{\pfn}{P}% sets P, Ptang \normalvec(Ptang){Q}\uput[-45](P){P} \psxline[linecolor=red]{<->}(P){-(Ptang)}{1.5(Ptang)} -\psxline[linecolor=blue]{->}(P){}{.5(Q)}%can use } for {(0,0)} +\psxline[linecolor=blue]{->}(P){}{.5(Q)}% can use {} for {(0,0)} \end{pspicture} \end{LTXexample} \vspace{2pc} diff --git a/graphics/pstricks/contrib/pst-node/dvips/pst-node.pro b/graphics/pstricks/contrib/pst-node/dvips/pst-node.pro index b75ef89863..4c7ee95623 100644 --- a/graphics/pstricks/contrib/pst-node/dvips/pst-node.pro +++ b/graphics/pstricks/contrib/pst-node/dvips/pst-node.pro @@ -1,13 +1,13 @@ -% $Id: pst-node.pro 438 2022-01-31 17:45:26Z herbert $ +% $Id: pst-node.pro 919 2024-07-10 18:31:27Z herbert $ %% %% PostScript prologue for pst-node.tex. -%% Version 1.15, 2014/01/27. +%% Version 1.15a, 2024/07/10. %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN archives %% in directory macros/latex/base/lppl.txt. % -%%%% EMPTY lines are not alowed!!! Problem with pst-eps -> \par +%%%% EMPTY lines are not allowed!!! Problem with pst-eps -> \par % % tx@Dict begin % from main pstricks dict diff --git a/graphics/pstricks/contrib/pst-node/latex/pst-node.sty b/graphics/pstricks/contrib/pst-node/latex/pst-node.sty index 43edb5aa2b..4fe6a63aa2 100644 --- a/graphics/pstricks/contrib/pst-node/latex/pst-node.sty +++ b/graphics/pstricks/contrib/pst-node/latex/pst-node.sty @@ -1,10 +1,10 @@ -% $Id: pst-node.sty 438 2022-01-31 17:45:26Z herbert $ +% $Id: pst-node.sty 919 2024-07-10 18:31:27Z herbert $ %% %% This is file `pst-node.sty'. %% %% IMPORTANT NOTICE: %% -%% pst-node.sty Copyright (C) 2004-2017 Herbert Voss <voss@perce.de> +%% pst-node.sty Copyright (C) 2004-2024 Herbert Voss <voss@perce.de> %% Rolf Niepraschk <Rolf.Niepraschk@ptb.de> %% %% This package may be distributed under the terms of the LaTeX Project @@ -14,7 +14,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pst-node} - [2012/09/18 v1.01 LaTeX wrapper for `pst-node' (HV)] + [2024/07/10 v1.02 LaTeX wrapper for `pst-node' (HV)] % \newif\ifpst@OldVersion\pst@OldVersionfalse \DeclareOption{97}{\pst@OldVersiontrue} @@ -32,13 +32,14 @@ \@addtofilelist{pst-node97.pro}}{}% \else \RequirePackage{pstricks} -\ProvidesPackage{pst-node}[2010/04/22 package wrapper for pst-node.tex] +\ProvidesPackage{pst-node}[2024/07/10 package wrapper for pst-node.tex] \input{pst-node.tex} \ProvidesFile{pst-node.tex} [\filedate\space \fileversion\space `pst-node' (tvz,hv)] \IfFileExists{pst-node.pro}{% \ProvidesFile{pst-node.pro} - [2011/09/18 v. 1.14, PostScript prologue file (hv)] + [2024/07/10 v. 1.15a, PostScript prologue file (hv)] \@addtofilelist{pst-node.pro}}{}% \fi + \endinput diff --git a/graphics/pstricks/contrib/pst-node/tex/pst-node.tex b/graphics/pstricks/contrib/pst-node/tex/pst-node.tex index ed3ef60a4b..a653d76eea 100644 --- a/graphics/pstricks/contrib/pst-node/tex/pst-node.tex +++ b/graphics/pstricks/contrib/pst-node/tex/pst-node.tex @@ -1,4 +1,4 @@ -% $Id: pst-node.tex 438 2022-01-31 17:45:26Z herbert $ +% $Id: pst-node.tex 918 2024-07-10 17:41:55Z herbert $ %% %% BEGIN pst-node.tex %% @@ -18,8 +18,8 @@ \ifx\PSTricksLoaded\endinput\else\input pstricks.tex \fi\relax \ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi % -\def\fileversion{1.43} -\def\filedate{2022/01/31} +\def\fileversion{1.45} +\def\filedate{2024/07/10} \message{ v\fileversion, \filedate} % \edef\TheAtCode{\the\catcode`\@} @@ -1386,8 +1386,8 @@ tx@NodeDict \pst@tempg known /dy YB YA sub def /angle dy dx Atan def /linelength \pst@number\pst@dimb \pst@number\psunit div def - XA linelength angle cos mul add YA linelength angle sin mul add ){#4}% -} + XA linelength angle cos mul add YA linelength angle sin mul add ){#4}} +% \def\psRelNode{\pst@object{psRelNode}} \def\psRelNode@i(#1)(#2)#3#4{{% A - B - factor - node name \use@par @@ -1402,10 +1402,10 @@ tx@NodeDict \pst@tempg known /AlphaStrich \psk@angleA\space def /unit \pst@number\psyunit \pst@number\psxunit div def % yunit/xunit % - /dx XB XA sub def - /dy YB YA sub \ifPst@trueAngle\space unit mul \fi\space def - /laenge dy dup mul dx dup mul add sqrt #3 mul def - /Alpha dy dx atan def + /dx__ XB XA sub def + /dy__ YB YA sub \ifPst@trueAngle\space unit mul \fi\space def + /laenge dy__ dup mul dx__ dup mul add sqrt #3 mul def + /Alpha dy__ dx__ atan def /beta Alpha AlphaStrich add def laenge beta cos mul XA add laenge beta sin mul \ifPst@trueAngle\space unit div \fi\space YA add ){#4}% @@ -1537,8 +1537,7 @@ tx@NodeDict \pst@tempg known \def\trim@ #1{\trim@@ @#1 @ #1 @ @@}% \def\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}% \def\unbrace#1{#1}% -\unbrace{\def\trim@@@ #1 } #2@#3{\expandafter\def% - \expandafter #3\expandafter {#1}}% +\unbrace{\def\trim@@@ #1 } #2@#3{\expandafter\def\expandafter #3\expandafter {#1}}% % \def\hasparen#1(#2\@nil{%check if expression contains a (--call with \hasparen#1(\@nil \ifx\relax#2\relax \@parenfalse \else \@parentrue\fi}% @@ -1577,23 +1576,28 @@ tx@NodeDict \pst@tempg known \expandafter\testAlg\my@tempA|\@nil\my@next {#1}{#2}{#3}} % \def\psparnode#1#2#3{% -% #1=t value, #2=x(t) y(t) in PS form,#3=node name, - \pnode(!/t #1 def #2){#3}% - \pnode(!/t #1 .001 sub def #2 - /t #1 .001 add def - #2 3 -1 roll sub 3 1 roll sub neg - 2 copy Pyth dup 3 1 roll div 3 1 roll div ){#3tang}}%unit tangent vector at t + % #1=t value, #2=x(t) y(t) in PS form, #3=node name, + % also returns unit tangent vector at t with node #3tang + \pnode(! /t #1 def #2){#3}% + \pnode(! /t #1 dup abs 1 lt {0.001 sub} {dup 0 gt {0.999} {1.001} ifelse mul} ifelse def + #2 + /t #1 dup abs 1 lt {0.001 add} {dup 0 lt {0.999} {1.001} ifelse mul} ifelse def + #2 + 3 -1 roll sub 3 1 roll exch sub 2 copy exch dup mul exch dup mul add sqrt + dup 3 1 roll div 3 1 roll div){#3tang}% unit tangent vector at t +}% % \def\algparnode#1#2#3{% -% #1=t value, #2=x(t) | y(t) in alg form,#3=node name, -%\pstVerb{tx@Dict begin /t #1 def /Func (#2) AlgParser cvx def end} -%\pnode(!Func){#3}}% - \pstVerb{tx@Dict begin /Func (#2) AlgParser cvx def end } - \pnode(!/t #1 def Func){#3} - \pnode(!/t #1 .001 sub def Func - /t #1 .001 add def - Func 3 -1 roll sub 3 1 roll sub neg - 2 copy Pyth dup 3 1 roll div 3 1 roll div ){#3tang}%unit tangent vector at t +% #1=t value, #2=x(t) | y(t) in alg form, #3=node name, +% also returns unit tangent vector at t with node #3tang + \pstVerb{tx@Dict begin /Func (#2) AlgParser cvx def end }% + \pnode(! /t #1 def Func){#3}% + \pnode(! /t #1 dup abs 1 lt {0.001 sub} {dup 0 gt {0.999} {1.001} ifelse mul} ifelse def + Func + /t #1 dup abs 1 lt {0.001 add}{dup 0 lt {0.999} {1.001} ifelse mul } ifelse def + Func + 3 -1 roll sub 3 1 roll exch sub 2 copy exch dup mul exch dup mul add sqrt + dup 3 1 roll div 3 1 roll div){#3tang}% unit tangent vector at t }% % \def\nodex#1{% @@ -1634,8 +1638,7 @@ tx@NodeDict \pst@tempg known \nodexn{#3}{@TMP@a}% \AplusB(#1)(@TMP@a){@TMP@B}% \psline(@TMP@A)(@TMP@B)% -}% -\ignorespaces}% +}\ignorespaces}% % \def\curvepnodes{\pst@object{curvepnodes}} \def\curvepnodes@i#1#2#3#4{{%optional [plotpoints=xx] @@ -1685,7 +1688,7 @@ tx@NodeDict \pst@tempg known \else \multido{\i=0+1}{\pst@cntc}{\pnode(!/x \pst@number\pst@dima\space def x #3){#4\i}% \advance\pst@dima \pst@dimb}% -\fi% +\fi \expandafter\xdef \csname \PST@root nodecount\endcsname {\the\pst@cnta}% \ifnum\Pst@Debug>0 \typeout{Created nodes #40 .. #4\the\pst@cnta}\fi% }\ignorespaces}% diff --git a/graphics/tpic2pdftex/Makefile.in b/graphics/tpic2pdftex/Makefile.in index 3ee8644210..35ec5ed91b 100644 --- a/graphics/tpic2pdftex/Makefile.in +++ b/graphics/tpic2pdftex/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. +# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2021 Free Software Foundation, Inc. +# Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -70,6 +70,8 @@ am__make_running_with_option = \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -123,10 +125,9 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" SCRIPTS = $(bin_SCRIPTS) @@ -261,6 +262,7 @@ am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ + $$am__collect_skipped_logs \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the @@ -285,6 +287,11 @@ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ +if test -n '$(IGNORE_SKIPPED_LOGS)'; then \ + am__collect_skipped_logs='--collect-skipped-logs no'; \ +else \ + am__collect_skipped_logs=''; \ +fi; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ @@ -345,20 +352,22 @@ distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ + find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ + ; rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best +GZIP_ENV = -9 DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print +distcleancheck_listfiles = \ + find . \( -type f -a \! \ + \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ @@ -414,8 +423,10 @@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ @@ -594,7 +605,6 @@ cscope cscopelist: am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: - $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ @@ -670,10 +680,37 @@ $(TEST_SUITE_LOG): $(TEST_LOGS) result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ + output_system_information () \ + { \ + echo; \ + { uname -a | $(AWK) '{ \ + printf "System information (uname -a):"; \ + for (i = 1; i < NF; ++i) \ + { \ + if (i != 2) \ + printf " %s", $$i; \ + } \ + printf "\n"; \ +}'; } 2>&1; \ + if test -r /etc/os-release; then \ + echo "Distribution information (/etc/os-release):"; \ + sed 8q /etc/os-release; \ + elif test -r /etc/issue; then \ + echo "Distribution information (/etc/issue):"; \ + cat /etc/issue; \ + fi; \ + }; \ + please_report () \ + { \ +echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \ +echo "together with the test-suite.log file (gzipped) and your system"; \ +echo "information. Thanks."; \ + }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ + output_system_information; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ @@ -693,26 +730,25 @@ $(TEST_SUITE_LOG): $(TEST_LOGS) create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ - echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\ if test -n "$(PACKAGE_BUGREPORT)"; then \ - echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: $(dist_check_SCRIPTS) - @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list - @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @$(am__rm_f) $(RECHECK_LOGS) + @$(am__rm_f) $(RECHECK_LOGS:.log=.trs) + @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ - trs_list=`for i in $$bases; do echo $$i.trs; done`; \ - log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(dist_check_SCRIPTS) - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ @@ -741,7 +777,7 @@ distdir: $(BUILT_SOURCES) distdir-am: $(DISTFILES) $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" + $(AM_V_at)$(MKDIR_P) "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -827,7 +863,7 @@ dist dist-all: distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -837,7 +873,7 @@ distcheck: dist *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ @@ -937,17 +973,17 @@ install-strip: "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: - -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) - -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) - -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + -$(am__rm_f) $(TEST_LOGS) + -$(am__rm_f) $(TEST_LOGS:.log=.trs) + -$(am__rm_f) $(TEST_SUITE_LOG) clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + -$(am__rm_f) $(CLEANFILES) distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -1062,3 +1098,10 @@ $(tpic_files): Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/graphics/tpic2pdftex/aclocal.m4 b/graphics/tpic2pdftex/aclocal.m4 index 6f522ebc71..1a674a31f4 100644 --- a/graphics/tpic2pdftex/aclocal.m4 +++ b/graphics/tpic2pdftex/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.5 -*- Autoconf -*- +# generated automatically by aclocal 1.17 -*- Autoconf -*- -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# Copyright (C) 1996-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2021 Free Software Foundation, Inc. +# Copyright (C) 2002-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.]) # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.16' +[am__api_version='1.17' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.5], [], +m4_if([$1], [1.17], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.5])dnl +[AM_AUTOMAKE_VERSION([1.17])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# Copyright (C) 1997-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -273,7 +273,7 @@ AC_CACHE_CHECK([dependency style of $depcc], # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: + # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported @@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -400,7 +400,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -534,7 +534,7 @@ if test -z "$CSCOPE"; then fi AC_SUBST([CSCOPE]) -AC_REQUIRE([AM_SILENT_RULES])dnl +AC_REQUIRE([_AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. @@ -542,47 +542,9 @@ AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. +AC_REQUIRE([_AM_PROG_RM_F]) +AC_REQUIRE([_AM_PROG_XARGS_N]) -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: <https://www.gnu.org/software/coreutils/>. - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. @@ -615,7 +577,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -636,7 +598,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2021 Free Software Foundation, Inc. +# Copyright (C) 2003-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -658,7 +620,7 @@ AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -693,7 +655,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -736,7 +698,7 @@ AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# Copyright (C) 1997-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -770,7 +732,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -799,7 +761,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -846,7 +808,23 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_RM_F +# --------------- +# Check whether 'rm -f' without any arguments works. +# https://bugs.gnu.org/10828 +AC_DEFUN([_AM_PROG_RM_F], +[am__rm_f_notfound= +AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) +AC_SUBST(am__rm_f_notfound) +]) + +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -865,16 +843,169 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# _AM_SLEEP_FRACTIONAL_SECONDS +# ---------------------------- +AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl +AC_CACHE_CHECK([whether sleep supports fractional seconds], + am_cv_sleep_fractional_seconds, [dnl +AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], + [am_cv_sleep_fractional_seconds=no]) +])]) + +# _AM_FILESYSTEM_TIMESTAMP_RESOLUTION +# ----------------------------------- +# Determine the filesystem's resolution for file modification +# timestamps. The coarsest we know of is FAT, with a resolution +# of only two seconds, even with the most recent "exFAT" extensions. +# The finest (e.g. ext4 with large inodes, XFS, ZFS) is one +# nanosecond, matching clock_gettime. However, it is probably not +# possible to delay execution of a shell script for less than one +# millisecond, due to process creation overhead and scheduling +# granularity, so we don't check for anything finer than that. (See below.) +AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl +AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) +AC_CACHE_CHECK([filesystem timestamp resolution], + am_cv_filesystem_timestamp_resolution, [dnl +# Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# <dollar><star>; be careful, easy to get confused.) +if ( + set X `[ls -t conftest.ts[12]]` && + { + test "$[]*" != "X conftest.ts1 conftest.ts2" || + test "$[]*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + _AS_ECHO_UNQUOTED( + ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], + [AS_MESSAGE_LOG_FD]) + AC_MSG_FAILURE([ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment.]) +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$[]2" = conftest.ts3 && + test "$[]3" = conftest.ts2 && + test "$[]4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) +])]) + # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) +[AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) +# This check should not be cached, as it may vary across builds of +# different projects. +AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -893,49 +1024,40 @@ esac # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[]*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$[]2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +AC_MSG_RESULT([$am_build_env_is_sane]) +if test "$am_build_env_is_sane" = no; then + AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi -AC_MSG_RESULT([yes]) + # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & +AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl + ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! -fi +]) AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then @@ -946,18 +1068,18 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2021 Free Software Foundation, Inc. +# Copyright (C) 2009-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl +# _AM_SILENT_RULES +# ---------------- +# Enable less verbose build rules support. +AC_DEFUN([_AM_SILENT_RULES], +[AM_DEFAULT_VERBOSITY=1 +AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) @@ -965,11 +1087,6 @@ AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. @@ -988,14 +1105,6 @@ am__doit: else am_cv_make_support_nested_variables=no fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl @@ -1004,9 +1113,33 @@ AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls +dnl to AM_SILENT_RULES to change the default value. +AC_CONFIG_COMMANDS_PRE([dnl +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +])dnl ]) -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or +# empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_REQUIRE([_AM_SILENT_RULES]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])]) + +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1034,7 +1167,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2021 Free Software Foundation, Inc. +# Copyright (C) 2006-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1053,7 +1186,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2021 Free Software Foundation, Inc. +# Copyright (C) 2004-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1099,15 +1232,19 @@ m4_if([$1], [v7], am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) + if test x$am_uid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) + elif test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) else - AC_MSG_RESULT([no]) - _am_tools=none + AC_MSG_RESULT([no]) + _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) + if test x$gm_gid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) + elif test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none @@ -1184,6 +1321,26 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR +# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_XARGS_N +# ---------------- +# Check whether 'xargs -n' works. It should work everywhere, so the fallback +# is not optimized at all as we never expect to use it. +AC_DEFUN([_AM_PROG_XARGS_N], +[AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl +AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) +AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl + am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' +])dnl +AC_SUBST(am__xargs_n) +]) + m4_include([../../m4/kpse-common.m4]) m4_include([../../m4/kpse-warnings.m4]) m4_include([../../m4/kpse-win32.m4]) diff --git a/graphics/tpic2pdftex/configure.texk b/graphics/tpic2pdftex/configure.texk index 34f8982c14..a54279b813 100755 --- a/graphics/tpic2pdftex/configure.texk +++ b/graphics/tpic2pdftex/configure.texk @@ -667,6 +667,8 @@ CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE +am__xargs_n +am__rm_f_notfound AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V @@ -2406,7 +2408,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -am__api_version='1.16' +am__api_version='1.17' @@ -2509,6 +2511,165 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in #( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# <dollar><star>; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory @@ -2529,49 +2690,45 @@ esac # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf "%s\n" "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in #( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! + ;; +esac fi rm -f conftest.file @@ -2861,17 +3018,13 @@ else fi rmdir .tst 2>/dev/null +AM_DEFAULT_VERBOSITY=1 # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } @@ -2894,15 +3047,45 @@ esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi AM_BACKSLASH='\' +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in #( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in #( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf "%s\n" "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in #( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + @@ -4149,7 +4332,7 @@ else case e in #( # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: + # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported @@ -4467,47 +4650,9 @@ fi -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: <https://www.gnu.org/software/coreutils/>. - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi # am_maintainer_mode @@ -4853,6 +4998,18 @@ printf %s "checking that generated files are newer than configure... " >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' |