summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-10-24 03:01:00 +0000
committerNorbert Preining <norbert@preining.info>2023-10-24 03:01:00 +0000
commit7fc03b60d145610ff8e62c3d3a0d5fe037f6597d (patch)
tree5a571652d167dc38829a038550b6a7fbb8b57b2c /macros
parent6864ad38da5412fd65e655da307e368cea282091 (diff)
CTAN sync 202310240300
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/acmart/README2
-rw-r--r--macros/latex/contrib/acmart/acmart.dtx15
-rw-r--r--macros/latex/contrib/acmart/acmart.pdfbin911009 -> 944009 bytes
-rw-r--r--macros/latex/contrib/acmart/acmguide.pdfbin434045 -> 434062 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmcp.pdfbin215120 -> 215120 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmengage.pdfbin395888 -> 395888 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmlarge.pdfbin607188 -> 607188 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdfbin629691 -> 629691 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdfbin1051029 -> 1051029 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdfbin619512 -> 619512 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall.pdfbin617005 -> 617005 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmtog.pdfbin564503 -> 564503 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-authordraft.pdfbin1044097 -> 1044098 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-lualatex.pdfbin783354 -> 783354 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-manuscript.pdfbin619302 -> 619302 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdfbin616653 -> 616653 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdfbin1055582 -> 1055582 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf.pdfbin1040314 -> 1040314 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigplan.pdfbin1048750 -> 1048750 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-xelatex.pdfbin659291 -> 659297 bytes
-rw-r--r--macros/latex/contrib/isosafety/README.md9
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV003.pngbin0 -> 1781 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV004.pngbin0 -> 2283 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV009.pngbin0 -> 2668 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV010.pngbin0 -> 2191 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV011.pngbin0 -> 3036 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV012.pngbin0 -> 2395 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV013.pngbin0 -> 1534 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV027.pngbin0 -> 4673 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV028.pngbin0 -> 3033 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV029.pngbin0 -> 3363 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV064.pngbin0 -> 2022 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV067.pngbin0 -> 2416 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E001.pngbin0 -> 6042 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E002.pngbin0 -> 5945 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E003.pngbin0 -> 1192 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E004.pngbin0 -> 5675 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E007.pngbin0 -> 6206 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E008.pngbin0 -> 9927 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E009.pngbin0 -> 7190 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E010.pngbin0 -> 5418 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E011.pngbin0 -> 10680 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E012.pngbin0 -> 6549 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E013.pngbin0 -> 3030 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E014.pngbin0 -> 7122 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E015.pngbin0 -> 6551 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E016.pngbin0 -> 5088 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E017.pngbin0 -> 8842 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E018.pngbin0 -> 5160 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E019.pngbin0 -> 5060 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E020.pngbin0 -> 6426 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E021.pngbin0 -> 6364 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E022.pngbin0 -> 3466 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E023.pngbin0 -> 3147 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E024.pngbin0 -> 7168 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E025.pngbin0 -> 15315 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E026.pngbin0 -> 5712 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E027.pngbin0 -> 7576 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E028.pngbin0 -> 8882 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E029.pngbin0 -> 10068 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E030.pngbin0 -> 5739 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E031.pngbin0 -> 2136 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E032.pngbin0 -> 11255 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E033.pngbin0 -> 2049 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E034.pngbin0 -> 2071 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E035.pngbin0 -> 9069 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E036.pngbin0 -> 10159 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E037.pngbin0 -> 8670 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E038.pngbin0 -> 10883 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E039.pngbin0 -> 8335 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E040.pngbin0 -> 9975 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E041.pngbin0 -> 9755 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E042.pngbin0 -> 10049 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E043.pngbin0 -> 10960 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E044.pngbin0 -> 4116 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E045.pngbin0 -> 5908 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E046.pngbin0 -> 5557 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E047.pngbin0 -> 6264 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E048.pngbin0 -> 6594 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E049.pngbin0 -> 7301 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E050.pngbin0 -> 6562 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E051.pngbin0 -> 11120 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E052.pngbin0 -> 9326 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E053.pngbin0 -> 4710 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E054.pngbin0 -> 12393 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E055.pngbin0 -> 7389 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E056.pngbin0 -> 4809 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E057.pngbin0 -> 4024 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E058.pngbin0 -> 4397 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E059.pngbin0 -> 1556 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E060.pngbin0 -> 7944 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E061.pngbin0 -> 12398 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E062.pngbin0 -> 5683 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E063.pngbin0 -> 4997 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E064.pngbin0 -> 4914 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E065.pngbin0 -> 6516 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E067.pngbin0 -> 7150 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E068.pngbin0 -> 10603 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E069.pngbin0 -> 7999 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E070.pngbin0 -> 4117 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F001.pngbin0 -> 7261 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F002.pngbin0 -> 8165 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F003.pngbin0 -> 8463 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F004.pngbin0 -> 8373 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F005.pngbin0 -> 7900 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F006.pngbin0 -> 9833 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F007.pngbin0 -> 7943 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F008.pngbin0 -> 6795 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F009.pngbin0 -> 9214 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F010.pngbin0 -> 7426 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F011.pngbin0 -> 11115 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F012.pngbin0 -> 7264 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F013.pngbin0 -> 8108 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F014.pngbin0 -> 6784 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F015.pngbin0 -> 8404 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F016.pngbin0 -> 11283 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F017.pngbin0 -> 8540 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F018.pngbin0 -> 7807 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F019.pngbin0 -> 14127 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M001.pngbin0 -> 6728 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M002.pngbin0 -> 11429 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M003.pngbin0 -> 10985 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M004.pngbin0 -> 13851 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M005.pngbin0 -> 5276 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M006.pngbin0 -> 9513 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M007.pngbin0 -> 11478 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M008.pngbin0 -> 9856 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M009.pngbin0 -> 10755 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M010.pngbin0 -> 8598 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M011.pngbin0 -> 11141 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M012.pngbin0 -> 9684 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M013.pngbin0 -> 9843 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M014.pngbin0 -> 8508 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M015.pngbin0 -> 7686 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M016.pngbin0 -> 10228 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M017.pngbin0 -> 13665 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M018.pngbin0 -> 11077 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M019.pngbin0 -> 8182 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M020.pngbin0 -> 8082 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M021.pngbin0 -> 7939 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M022.pngbin0 -> 9107 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M023.pngbin0 -> 9950 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M024.pngbin0 -> 9257 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M025.pngbin0 -> 11770 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M026.pngbin0 -> 11003 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M027.pngbin0 -> 12144 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M028.pngbin0 -> 10550 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M029.pngbin0 -> 8958 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M030.pngbin0 -> 10503 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M031.pngbin0 -> 9994 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M032.pngbin0 -> 11704 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M033.pngbin0 -> 10194 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M034.pngbin0 -> 10465 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M035.pngbin0 -> 13166 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M036.pngbin0 -> 8957 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M037.pngbin0 -> 12392 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M038.pngbin0 -> 13124 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M039.pngbin0 -> 10833 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M040.pngbin0 -> 11502 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M041.pngbin0 -> 10787 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M042.pngbin0 -> 10025 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M043.pngbin0 -> 12908 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M044.pngbin0 -> 10911 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M045.pngbin0 -> 15559 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M046.pngbin0 -> 9584 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M047.pngbin0 -> 12228 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M048.pngbin0 -> 15125 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M049.pngbin0 -> 11786 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M050.pngbin0 -> 8973 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M051.pngbin0 -> 8981 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M052.pngbin0 -> 12950 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M053.pngbin0 -> 11319 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M054.pngbin0 -> 10459 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M055.pngbin0 -> 10608 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M056.pngbin0 -> 9581 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M057.pngbin0 -> 7743 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M058.pngbin0 -> 9110 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M059.pngbin0 -> 9567 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M060.pngbin0 -> 12184 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P001.pngbin0 -> 9302 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P002.pngbin0 -> 14908 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P003.pngbin0 -> 15353 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P004.pngbin0 -> 12488 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P005.pngbin0 -> 12192 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P006.pngbin0 -> 13487 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P007.pngbin0 -> 12116 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P008.pngbin0 -> 13835 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P009.pngbin0 -> 12331 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P010.pngbin0 -> 12159 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P011.pngbin0 -> 14599 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P012.pngbin0 -> 10912 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P013.pngbin0 -> 14862 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P014.pngbin0 -> 14512 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P015.pngbin0 -> 13492 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P016.pngbin0 -> 13899 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P017.pngbin0 -> 11843 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P018.pngbin0 -> 11354 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P019.pngbin0 -> 12929 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P020.pngbin0 -> 13468 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P021.pngbin0 -> 11449 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P022.pngbin0 -> 10965 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P023.pngbin0 -> 10691 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P024.pngbin0 -> 11906 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P025.pngbin0 -> 12296 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P026.pngbin0 -> 14272 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P027.pngbin0 -> 10930 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P028.pngbin0 -> 15087 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P029.pngbin0 -> 12831 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P030.pngbin0 -> 11512 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P031.pngbin0 -> 12264 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P032.pngbin0 -> 14195 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P033.pngbin0 -> 14683 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P034.pngbin0 -> 15893 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P035.pngbin0 -> 15308 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P036.pngbin0 -> 13204 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P037.pngbin0 -> 13338 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P038.pngbin0 -> 17217 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P039.pngbin0 -> 17046 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P040.pngbin0 -> 18336 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P041.pngbin0 -> 10852 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P042.pngbin0 -> 10377 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P043.pngbin0 -> 14367 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P044.pngbin0 -> 14074 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P045.pngbin0 -> 12826 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P046.pngbin0 -> 11779 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P047.pngbin0 -> 15510 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P048.pngbin0 -> 12871 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P049.pngbin0 -> 13413 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P050.pngbin0 -> 11908 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P051.pngbin0 -> 12303 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P052.pngbin0 -> 12702 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P053.pngbin0 -> 13020 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P054.pngbin0 -> 8349 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P055.pngbin0 -> 14145 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P056.pngbin0 -> 13656 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P057.pngbin0 -> 12564 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P058.pngbin0 -> 12715 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P059.pngbin0 -> 15209 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P060.pngbin0 -> 10121 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P061.pngbin0 -> 12950 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P062.pngbin0 -> 14234 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P063.pngbin0 -> 13258 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P064.pngbin0 -> 7860 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P065.pngbin0 -> 15172 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P066.pngbin0 -> 13698 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P067.pngbin0 -> 11238 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P068.pngbin0 -> 12950 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P069.pngbin0 -> 10834 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P070.pngbin0 -> 18725 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P071.pngbin0 -> 11569 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P072.pngbin0 -> 11335 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P073.pngbin0 -> 12047 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P074.pngbin0 -> 13523 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W001.pngbin0 -> 7116 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W002.pngbin0 -> 16455 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W003.pngbin0 -> 7923 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W004.pngbin0 -> 11814 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W005.pngbin0 -> 9434 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W006.pngbin0 -> 8870 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W007.pngbin0 -> 8657 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W008.pngbin0 -> 8804 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W009.pngbin0 -> 11260 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W010.pngbin0 -> 9854 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W011.pngbin0 -> 8470 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W012.pngbin0 -> 8242 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W013.pngbin0 -> 8845 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W014.pngbin0 -> 9948 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W015.pngbin0 -> 9178 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W016.pngbin0 -> 12645 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W017.pngbin0 -> 8371 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W018.pngbin0 -> 9933 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W019.pngbin0 -> 9100 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W020.pngbin0 -> 8966 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W021.pngbin0 -> 8584 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W022.pngbin0 -> 7838 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W023.pngbin0 -> 10287 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W024.pngbin0 -> 7195 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W025.pngbin0 -> 10311 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W026.pngbin0 -> 8797 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W027.pngbin0 -> 10047 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W028.pngbin0 -> 9146 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W029.pngbin0 -> 13347 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W030.pngbin0 -> 9673 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W031.pngbin0 -> 11022 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W032.pngbin0 -> 11108 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W033.pngbin0 -> 9090 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W034.pngbin0 -> 9013 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W035.pngbin0 -> 9152 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W036.pngbin0 -> 14344 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W037.pngbin0 -> 10610 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W038.pngbin0 -> 10323 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W039.pngbin0 -> 9071 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W040.pngbin0 -> 12219 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W041.pngbin0 -> 15523 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W042.pngbin0 -> 11414 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W043.pngbin0 -> 10344 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W044.pngbin0 -> 10874 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W045.pngbin0 -> 9400 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W046.pngbin0 -> 11543 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W047.pngbin0 -> 8623 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W048.pngbin0 -> 8913 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W049.pngbin0 -> 9811 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W050.pngbin0 -> 9191 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W051.pngbin0 -> 9776 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W052.pngbin0 -> 8629 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W053.pngbin0 -> 9054 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W054.pngbin0 -> 8751 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W055.pngbin0 -> 8956 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W056.pngbin0 -> 6936 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W057.pngbin0 -> 9624 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W058.pngbin0 -> 11132 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W059.pngbin0 -> 7906 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W060.pngbin0 -> 8860 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W061.pngbin0 -> 8030 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W062.pngbin0 -> 12733 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W063.pngbin0 -> 10930 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W064.pngbin0 -> 7331 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W065.pngbin0 -> 12767 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W066.pngbin0 -> 11260 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W067.pngbin0 -> 10475 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W068.pngbin0 -> 10602 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W069.pngbin0 -> 9857 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W070.pngbin0 -> 8817 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W071.pngbin0 -> 10554 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W072.pngbin0 -> 11114 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W073.pngbin0 -> 11043 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W074.pngbin0 -> 9990 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W075.pngbin0 -> 10789 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W076.pngbin0 -> 9947 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W077.pngbin0 -> 9157 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W078.pngbin0 -> 9903 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W079.pngbin0 -> 10850 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W080.pngbin0 -> 8845 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety.dtx135
-rw-r--r--macros/latex/contrib/isosafety/isosafety.ins56
-rw-r--r--macros/latex/contrib/isosafety/isosafety.pdfbin0 -> 128680 bytes
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/l3backend/README.md2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx16
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin934368 -> 934024 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-header.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-opacity.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md25
-rw-r--r--macros/latex/contrib/l3kernel/README.md4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx9
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin622212 -> 622183 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1724914 -> 1732906 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3.ins3
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx31
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.pdfbin557935 -> 557935 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin151752 -> 151749 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-functions.dtx282
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx17
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-symbolic.dtx673
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-types.dtx184
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx136
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx20
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin396222 -> 396222 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122959 -> 122959 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150919 -> 150919 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148747 -> 148747 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114754 -> 114754 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112524 -> 112524 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151591 -> 151591 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128344 -> 128344 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163484 -> 163484 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250159 -> 250159 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150302 -> 150302 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170102 -> 170102 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin205020 -> 205020 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.csv4
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin82529 -> 82661 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx13
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin296260 -> 296258 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin242906 -> 242903 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin218060 -> 218059 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx1366
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx41
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx43
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx78
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7389071 -> 7475976 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/source3body.tex7
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin1320885 -> 1340845 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex7840
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/integr_nwks_a.pngbin4779 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/integr_nwks_b.pngbin5332 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_a.pngbin10939 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_b.pngbin10804 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_c.pngbin7252 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_d.pngbin7380 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_e.pngbin9965 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_f.pngbin7670 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_a.pngbin9278 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_b.pngbin13958 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.pngbin11759 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c2.pngbin9989 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.pngbin7316 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.pngbin9599 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-solve_a.pngbin5226 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-solve_b.pngbin9215 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-solve_c.pngbin10175 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-solve_d.pngbin10145 -> 0 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/testscript.py24
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty3
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-graphiques.tex151
-rw-r--r--macros/unicodetex/latex/bithesis/bithesis.dtx43
-rw-r--r--macros/unicodetex/latex/bithesis/bithesis.pdfbin556835 -> 731548 bytes
464 files changed, 2703 insertions, 8693 deletions
diff --git a/macros/latex/contrib/acmart/README b/macros/latex/contrib/acmart/README
index fd697fedf1..3e301435a9 100644
--- a/macros/latex/contrib/acmart/README
+++ b/macros/latex/contrib/acmart/README
@@ -12,6 +12,8 @@ The production version is the one on CTAN and ACM sites.
Changes
+Version 1.93 Added PACMSE
+
Version 1.92 Documentation update
Emergency change: changed order of hyperref and hyperxmp
due to changes in the undelying packages
diff --git a/macros/latex/contrib/acmart/acmart.dtx b/macros/latex/contrib/acmart/acmart.dtx
index 04f90c2a24..85f52456c4 100644
--- a/macros/latex/contrib/acmart/acmart.dtx
+++ b/macros/latex/contrib/acmart/acmart.dtx
@@ -306,7 +306,7 @@
% acmsmall & Small single-column format. Used for ACMJCSS, CIE, CSUR,
% DLT, FAC, GAMES, JACM, JATS, JDIQ, JDS, JEA, JERIC,
% JETC, JRC, PACMCGIT, PACMHCI, PACMMOD, PACMNET,
-% PACMPL, TAAS, TACCESS, TACO,
+% PACMPL, PACMSE, TAAS, TACCESS, TACO,
% TALG, TALLIP (formerly TALIP), TCPS, TDS,
% TEAC, TECS, TELO, THRI, TIIS, TIOT, TISSEC, TIST, TKDD, TMIS,
% TOCE, TOCHI, TOCL,
@@ -2155,6 +2155,7 @@
% PACMOD & PACM on Management of Data\\
% PACMNET & PACM on Networking\\
% PACMPL & PACM on Programming Languages \\
+% PACMSE & PACM on Software Engineering \\
% POMACS & PACM on Measurement and Analysis of Computing Systems \\
% TAAS & ACM Transactions on Autonomous and Adaptive Systems\\
% TACCESS & ACM Transactions on Accessible Computing\\
@@ -2277,7 +2278,7 @@
\ProvidesFile{acmart.dtx}
%</gobble>
%<class>\ProvidesClass{acmart}
-[2023/10/14 v1.92 Typesetting articles for the Association for Computing Machinery]
+[2023/10/22 v1.93 Typesetting articles for the Association for Computing Machinery]
% \end{macrocode}
%
% \changes{v1.00}{2016/04/14}{First released version}
@@ -2391,7 +2392,8 @@
% \changes{1.90a}{2023/06/11}{Changes in the sample keywords and concepts}
% \changes{1.92}{2023/09/30}{Documentation update: use of `anonymous'
% throughout}
-%
+% \changes{v1.93}{2023/10/22}{Added PACMSE journal option}
+%
% And the driver code:
% \begin{macrocode}
%<*gobble>
@@ -4369,6 +4371,7 @@
PACMMOD,%
PACMNET,%
PACMPL,%
+ PACMSE,%
POMACS,%
TAAS,%
TACCESS,%
@@ -4527,6 +4530,12 @@
\def\@permissionCodeOne{2475-1421}%
\@ACM@screentrue
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
+\or % PACMSE
+ \def\@journalName{Proceedings of the ACM on Software Engineering}%
+ \def\@journalNameShort{Proc. ACM Softw. Eng.}%
+ \def\@permissionCodeOne{2994-970X}%
+ \@ACM@screentrue
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
\or % POMACS
\def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
\def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
diff --git a/macros/latex/contrib/acmart/acmart.pdf b/macros/latex/contrib/acmart/acmart.pdf
index 3c8d591498..ddbd0be338 100644
--- a/macros/latex/contrib/acmart/acmart.pdf
+++ b/macros/latex/contrib/acmart/acmart.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/acmguide.pdf b/macros/latex/contrib/acmart/acmguide.pdf
index f4834a3210..a05de826e3 100644
--- a/macros/latex/contrib/acmart/acmguide.pdf
+++ b/macros/latex/contrib/acmart/acmguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf
index bc29adfced..7bbe90e88a 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
index 4c902cdd83..e04738a35f 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
index c47d1cbbce..5897c7d07c 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
index 8df55e0e58..30f9bd362c 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
index b2d841c504..0173d1db05 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
index 0d51cf3ccb..820223b983 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
index 4b42a3336c..94e18b39b4 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
index 43bc1f88c5..d199c8c450 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-authordraft.pdf b/macros/latex/contrib/acmart/samples/sample-authordraft.pdf
index ed02f879fb..2094e4c8b8 100644
--- a/macros/latex/contrib/acmart/samples/sample-authordraft.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-authordraft.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-lualatex.pdf b/macros/latex/contrib/acmart/samples/sample-lualatex.pdf
index 104e54850e..559e6a9a7e 100644
--- a/macros/latex/contrib/acmart/samples/sample-lualatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-lualatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
index 4d1c11cc61..afe006230b 100644
--- a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
index aa30bec994..6a506cf32f 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
index ba18c5413e..72bf2739e5 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
index b6b3e6afa8..5ed27710ae 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
index a3321b42db..36bc1678dd 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-xelatex.pdf b/macros/latex/contrib/acmart/samples/sample-xelatex.pdf
index 9fc189804c..18a01f2b0d 100644
--- a/macros/latex/contrib/acmart/samples/sample-xelatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-xelatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/README.md b/macros/latex/contrib/isosafety/README.md
new file mode 100644
index 0000000000..5cedddab81
--- /dev/null
+++ b/macros/latex/contrib/isosafety/README.md
@@ -0,0 +1,9 @@
+# isosafety
+
+isosafety is a LaTeX package that contains safety colors (ISO 3864) and safety signs (ISO 7010) from the ISO (https://www.iso.org/home.html).
+
+Maintainer: BenSt099 (https://github.com/BenSt099/isosafety)
+
+License: LPPL 1.3c
+
+Note: This is **not** an **official** package from ISO. \ No newline at end of file
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV003.png b/macros/latex/contrib/isosafety/images/ISO-CV003.png
new file mode 100644
index 0000000000..7a6654eb27
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV003.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV004.png b/macros/latex/contrib/isosafety/images/ISO-CV004.png
new file mode 100644
index 0000000000..8934b0aa4e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV004.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV009.png b/macros/latex/contrib/isosafety/images/ISO-CV009.png
new file mode 100644
index 0000000000..f3001d6410
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV009.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV010.png b/macros/latex/contrib/isosafety/images/ISO-CV010.png
new file mode 100644
index 0000000000..46bc76dec4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV010.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV011.png b/macros/latex/contrib/isosafety/images/ISO-CV011.png
new file mode 100644
index 0000000000..18716d14ca
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV011.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV012.png b/macros/latex/contrib/isosafety/images/ISO-CV012.png
new file mode 100644
index 0000000000..ebf43111a2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV012.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV013.png b/macros/latex/contrib/isosafety/images/ISO-CV013.png
new file mode 100644
index 0000000000..69e7fdb649
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV013.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV027.png b/macros/latex/contrib/isosafety/images/ISO-CV027.png
new file mode 100644
index 0000000000..49bedd3edf
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV027.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV028.png b/macros/latex/contrib/isosafety/images/ISO-CV028.png
new file mode 100644
index 0000000000..f454e4fbee
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV028.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV029.png b/macros/latex/contrib/isosafety/images/ISO-CV029.png
new file mode 100644
index 0000000000..8ad6a62f8e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV029.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV064.png b/macros/latex/contrib/isosafety/images/ISO-CV064.png
new file mode 100644
index 0000000000..18c8243d2d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV064.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV067.png b/macros/latex/contrib/isosafety/images/ISO-CV067.png
new file mode 100644
index 0000000000..a6e0a4ceb5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-CV067.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E001.png b/macros/latex/contrib/isosafety/images/ISO-E001.png
new file mode 100644
index 0000000000..b5c45df954
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E001.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E002.png b/macros/latex/contrib/isosafety/images/ISO-E002.png
new file mode 100644
index 0000000000..f12188d46c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E002.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E003.png b/macros/latex/contrib/isosafety/images/ISO-E003.png
new file mode 100644
index 0000000000..b48952818d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E003.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E004.png b/macros/latex/contrib/isosafety/images/ISO-E004.png
new file mode 100644
index 0000000000..2051632145
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E004.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E007.png b/macros/latex/contrib/isosafety/images/ISO-E007.png
new file mode 100644
index 0000000000..a05df10c88
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E007.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E008.png b/macros/latex/contrib/isosafety/images/ISO-E008.png
new file mode 100644
index 0000000000..d68ce41750
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E008.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E009.png b/macros/latex/contrib/isosafety/images/ISO-E009.png
new file mode 100644
index 0000000000..0f416aadc5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E009.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E010.png b/macros/latex/contrib/isosafety/images/ISO-E010.png
new file mode 100644
index 0000000000..4551fc06c3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E010.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E011.png b/macros/latex/contrib/isosafety/images/ISO-E011.png
new file mode 100644
index 0000000000..90bc01caf5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E011.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E012.png b/macros/latex/contrib/isosafety/images/ISO-E012.png
new file mode 100644
index 0000000000..ddae8591f0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E012.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E013.png b/macros/latex/contrib/isosafety/images/ISO-E013.png
new file mode 100644
index 0000000000..eb6b7b0799
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E013.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E014.png b/macros/latex/contrib/isosafety/images/ISO-E014.png
new file mode 100644
index 0000000000..370ba47518
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E014.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E015.png b/macros/latex/contrib/isosafety/images/ISO-E015.png
new file mode 100644
index 0000000000..4b8084dc8e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E015.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E016.png b/macros/latex/contrib/isosafety/images/ISO-E016.png
new file mode 100644
index 0000000000..8e41bdc0d4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E016.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E017.png b/macros/latex/contrib/isosafety/images/ISO-E017.png
new file mode 100644
index 0000000000..1459c49030
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E017.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E018.png b/macros/latex/contrib/isosafety/images/ISO-E018.png
new file mode 100644
index 0000000000..18519c6738
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E018.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E019.png b/macros/latex/contrib/isosafety/images/ISO-E019.png
new file mode 100644
index 0000000000..4c975b2bf5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E019.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E020.png b/macros/latex/contrib/isosafety/images/ISO-E020.png
new file mode 100644
index 0000000000..70e1dc2f7e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E020.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E021.png b/macros/latex/contrib/isosafety/images/ISO-E021.png
new file mode 100644
index 0000000000..039177dcfe
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E021.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E022.png b/macros/latex/contrib/isosafety/images/ISO-E022.png
new file mode 100644
index 0000000000..067acd6f9d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E022.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E023.png b/macros/latex/contrib/isosafety/images/ISO-E023.png
new file mode 100644
index 0000000000..ec0cd0c9ab
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E023.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E024.png b/macros/latex/contrib/isosafety/images/ISO-E024.png
new file mode 100644
index 0000000000..40d4cc7ebf
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E024.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E025.png b/macros/latex/contrib/isosafety/images/ISO-E025.png
new file mode 100644
index 0000000000..87c923bf77
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E025.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E026.png b/macros/latex/contrib/isosafety/images/ISO-E026.png
new file mode 100644
index 0000000000..8cba1cbf1f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E026.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E027.png b/macros/latex/contrib/isosafety/images/ISO-E027.png
new file mode 100644
index 0000000000..0ab274282d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E027.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E028.png b/macros/latex/contrib/isosafety/images/ISO-E028.png
new file mode 100644
index 0000000000..3942bd71c3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E028.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E029.png b/macros/latex/contrib/isosafety/images/ISO-E029.png
new file mode 100644
index 0000000000..c8fd23e6b1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E029.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E030.png b/macros/latex/contrib/isosafety/images/ISO-E030.png
new file mode 100644
index 0000000000..e6cde9baa5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E030.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E031.png b/macros/latex/contrib/isosafety/images/ISO-E031.png
new file mode 100644
index 0000000000..efe8b681fa
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E031.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E032.png b/macros/latex/contrib/isosafety/images/ISO-E032.png
new file mode 100644
index 0000000000..92845dee34
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E032.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E033.png b/macros/latex/contrib/isosafety/images/ISO-E033.png
new file mode 100644
index 0000000000..1804ae4dad
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E033.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E034.png b/macros/latex/contrib/isosafety/images/ISO-E034.png
new file mode 100644
index 0000000000..ea041fb24c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E034.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E035.png b/macros/latex/contrib/isosafety/images/ISO-E035.png
new file mode 100644
index 0000000000..58bba0f0e1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E035.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E036.png b/macros/latex/contrib/isosafety/images/ISO-E036.png
new file mode 100644
index 0000000000..f142c15852
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E036.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E037.png b/macros/latex/contrib/isosafety/images/ISO-E037.png
new file mode 100644
index 0000000000..65a25d7330
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E037.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E038.png b/macros/latex/contrib/isosafety/images/ISO-E038.png
new file mode 100644
index 0000000000..d1e7264b00
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E038.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E039.png b/macros/latex/contrib/isosafety/images/ISO-E039.png
new file mode 100644
index 0000000000..e9f6e2bd55
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E039.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E040.png b/macros/latex/contrib/isosafety/images/ISO-E040.png
new file mode 100644
index 0000000000..05743403fc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E040.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E041.png b/macros/latex/contrib/isosafety/images/ISO-E041.png
new file mode 100644
index 0000000000..55f0327f6f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E041.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E042.png b/macros/latex/contrib/isosafety/images/ISO-E042.png
new file mode 100644
index 0000000000..2d0dec213f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E042.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E043.png b/macros/latex/contrib/isosafety/images/ISO-E043.png
new file mode 100644
index 0000000000..081dd9165d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E043.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E044.png b/macros/latex/contrib/isosafety/images/ISO-E044.png
new file mode 100644
index 0000000000..df721c0938
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E044.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E045.png b/macros/latex/contrib/isosafety/images/ISO-E045.png
new file mode 100644
index 0000000000..63851dd324
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E045.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E046.png b/macros/latex/contrib/isosafety/images/ISO-E046.png
new file mode 100644
index 0000000000..71df53c03c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E046.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E047.png b/macros/latex/contrib/isosafety/images/ISO-E047.png
new file mode 100644
index 0000000000..3e6854b34c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E047.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E048.png b/macros/latex/contrib/isosafety/images/ISO-E048.png
new file mode 100644
index 0000000000..46c1efb598
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E048.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E049.png b/macros/latex/contrib/isosafety/images/ISO-E049.png
new file mode 100644
index 0000000000..e6de2cbea0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E049.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E050.png b/macros/latex/contrib/isosafety/images/ISO-E050.png
new file mode 100644
index 0000000000..758667dc30
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E050.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E051.png b/macros/latex/contrib/isosafety/images/ISO-E051.png
new file mode 100644
index 0000000000..8700e570dd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E051.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E052.png b/macros/latex/contrib/isosafety/images/ISO-E052.png
new file mode 100644
index 0000000000..49c6ea4f04
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E052.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E053.png b/macros/latex/contrib/isosafety/images/ISO-E053.png
new file mode 100644
index 0000000000..6cc6e4cb4c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E053.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E054.png b/macros/latex/contrib/isosafety/images/ISO-E054.png
new file mode 100644
index 0000000000..6c72df2919
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E054.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E055.png b/macros/latex/contrib/isosafety/images/ISO-E055.png
new file mode 100644
index 0000000000..e7fbb181a5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E055.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E056.png b/macros/latex/contrib/isosafety/images/ISO-E056.png
new file mode 100644
index 0000000000..04693cd738
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E056.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E057.png b/macros/latex/contrib/isosafety/images/ISO-E057.png
new file mode 100644
index 0000000000..5cb2cb157f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E057.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E058.png b/macros/latex/contrib/isosafety/images/ISO-E058.png
new file mode 100644
index 0000000000..20a2b18f95
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E058.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E059.png b/macros/latex/contrib/isosafety/images/ISO-E059.png
new file mode 100644
index 0000000000..472483129f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E059.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E060.png b/macros/latex/contrib/isosafety/images/ISO-E060.png
new file mode 100644
index 0000000000..e046a0222f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E060.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E061.png b/macros/latex/contrib/isosafety/images/ISO-E061.png
new file mode 100644
index 0000000000..3223a5cd49
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E061.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E062.png b/macros/latex/contrib/isosafety/images/ISO-E062.png
new file mode 100644
index 0000000000..3125c4b6f0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E062.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E063.png b/macros/latex/contrib/isosafety/images/ISO-E063.png
new file mode 100644
index 0000000000..e80755335b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E063.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E064.png b/macros/latex/contrib/isosafety/images/ISO-E064.png
new file mode 100644
index 0000000000..de8c8a720c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E064.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E065.png b/macros/latex/contrib/isosafety/images/ISO-E065.png
new file mode 100644
index 0000000000..7be5a78cb5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E065.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E067.png b/macros/latex/contrib/isosafety/images/ISO-E067.png
new file mode 100644
index 0000000000..6459f6314d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E067.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E068.png b/macros/latex/contrib/isosafety/images/ISO-E068.png
new file mode 100644
index 0000000000..624eea013c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E068.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E069.png b/macros/latex/contrib/isosafety/images/ISO-E069.png
new file mode 100644
index 0000000000..045609abe3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E069.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E070.png b/macros/latex/contrib/isosafety/images/ISO-E070.png
new file mode 100644
index 0000000000..f2c9bb37f2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-E070.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F001.png b/macros/latex/contrib/isosafety/images/ISO-F001.png
new file mode 100644
index 0000000000..810f94c5bb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F001.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F002.png b/macros/latex/contrib/isosafety/images/ISO-F002.png
new file mode 100644
index 0000000000..3b945029a2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F002.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F003.png b/macros/latex/contrib/isosafety/images/ISO-F003.png
new file mode 100644
index 0000000000..48b9bd6f94
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F003.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F004.png b/macros/latex/contrib/isosafety/images/ISO-F004.png
new file mode 100644
index 0000000000..9f428b1327
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F004.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F005.png b/macros/latex/contrib/isosafety/images/ISO-F005.png
new file mode 100644
index 0000000000..a75a6ea898
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F005.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F006.png b/macros/latex/contrib/isosafety/images/ISO-F006.png
new file mode 100644
index 0000000000..68d7b42813
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F006.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F007.png b/macros/latex/contrib/isosafety/images/ISO-F007.png
new file mode 100644
index 0000000000..5fa6651556
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F007.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F008.png b/macros/latex/contrib/isosafety/images/ISO-F008.png
new file mode 100644
index 0000000000..72bb1097fb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F008.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F009.png b/macros/latex/contrib/isosafety/images/ISO-F009.png
new file mode 100644
index 0000000000..9c192624aa
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F009.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F010.png b/macros/latex/contrib/isosafety/images/ISO-F010.png
new file mode 100644
index 0000000000..5871def6ae
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F010.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F011.png b/macros/latex/contrib/isosafety/images/ISO-F011.png
new file mode 100644
index 0000000000..e68616839f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F011.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F012.png b/macros/latex/contrib/isosafety/images/ISO-F012.png
new file mode 100644
index 0000000000..0ff3c35fcd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F012.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F013.png b/macros/latex/contrib/isosafety/images/ISO-F013.png
new file mode 100644
index 0000000000..eeea27f6f1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F013.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F014.png b/macros/latex/contrib/isosafety/images/ISO-F014.png
new file mode 100644
index 0000000000..b37b41e038
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F014.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F015.png b/macros/latex/contrib/isosafety/images/ISO-F015.png
new file mode 100644
index 0000000000..d5c94be3f2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F015.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F016.png b/macros/latex/contrib/isosafety/images/ISO-F016.png
new file mode 100644
index 0000000000..f34ff095f0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F016.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F017.png b/macros/latex/contrib/isosafety/images/ISO-F017.png
new file mode 100644
index 0000000000..8089216ecd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F017.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F018.png b/macros/latex/contrib/isosafety/images/ISO-F018.png
new file mode 100644
index 0000000000..8c72cd7839
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F018.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F019.png b/macros/latex/contrib/isosafety/images/ISO-F019.png
new file mode 100644
index 0000000000..709d32635d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-F019.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M001.png b/macros/latex/contrib/isosafety/images/ISO-M001.png
new file mode 100644
index 0000000000..2789c0693e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M001.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M002.png b/macros/latex/contrib/isosafety/images/ISO-M002.png
new file mode 100644
index 0000000000..19ece0e04f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M002.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M003.png b/macros/latex/contrib/isosafety/images/ISO-M003.png
new file mode 100644
index 0000000000..c2d7627f1e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M003.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M004.png b/macros/latex/contrib/isosafety/images/ISO-M004.png
new file mode 100644
index 0000000000..5d8e8b649d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M004.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M005.png b/macros/latex/contrib/isosafety/images/ISO-M005.png
new file mode 100644
index 0000000000..6f397035e9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M005.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M006.png b/macros/latex/contrib/isosafety/images/ISO-M006.png
new file mode 100644
index 0000000000..cf3546be05
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M006.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M007.png b/macros/latex/contrib/isosafety/images/ISO-M007.png
new file mode 100644
index 0000000000..7ee28fa608
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M007.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M008.png b/macros/latex/contrib/isosafety/images/ISO-M008.png
new file mode 100644
index 0000000000..af41158b6d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M008.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M009.png b/macros/latex/contrib/isosafety/images/ISO-M009.png
new file mode 100644
index 0000000000..f17811e9ae
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M009.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M010.png b/macros/latex/contrib/isosafety/images/ISO-M010.png
new file mode 100644
index 0000000000..95b9045378
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M010.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M011.png b/macros/latex/contrib/isosafety/images/ISO-M011.png
new file mode 100644
index 0000000000..dd92873028
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M011.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M012.png b/macros/latex/contrib/isosafety/images/ISO-M012.png
new file mode 100644
index 0000000000..e1053c2f5b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M012.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M013.png b/macros/latex/contrib/isosafety/images/ISO-M013.png
new file mode 100644
index 0000000000..e631d9e6e9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M013.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M014.png b/macros/latex/contrib/isosafety/images/ISO-M014.png
new file mode 100644
index 0000000000..9c4d6ac15e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M014.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M015.png b/macros/latex/contrib/isosafety/images/ISO-M015.png
new file mode 100644
index 0000000000..ac20eea60c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M015.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M016.png b/macros/latex/contrib/isosafety/images/ISO-M016.png
new file mode 100644
index 0000000000..3ec1701029
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M016.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M017.png b/macros/latex/contrib/isosafety/images/ISO-M017.png
new file mode 100644
index 0000000000..0db21b468f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M017.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M018.png b/macros/latex/contrib/isosafety/images/ISO-M018.png
new file mode 100644
index 0000000000..d5749e609f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M018.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M019.png b/macros/latex/contrib/isosafety/images/ISO-M019.png
new file mode 100644
index 0000000000..1c3530ec5b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M019.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M020.png b/macros/latex/contrib/isosafety/images/ISO-M020.png
new file mode 100644
index 0000000000..6efc075342
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M020.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M021.png b/macros/latex/contrib/isosafety/images/ISO-M021.png
new file mode 100644
index 0000000000..064ed1a4d7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M021.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M022.png b/macros/latex/contrib/isosafety/images/ISO-M022.png
new file mode 100644
index 0000000000..50e9f2aefa
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M022.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M023.png b/macros/latex/contrib/isosafety/images/ISO-M023.png
new file mode 100644
index 0000000000..948d3015cb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M023.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M024.png b/macros/latex/contrib/isosafety/images/ISO-M024.png
new file mode 100644
index 0000000000..250483a9b8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M024.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M025.png b/macros/latex/contrib/isosafety/images/ISO-M025.png
new file mode 100644
index 0000000000..07537735d1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M025.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M026.png b/macros/latex/contrib/isosafety/images/ISO-M026.png
new file mode 100644
index 0000000000..bef7cd0136
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M026.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M027.png b/macros/latex/contrib/isosafety/images/ISO-M027.png
new file mode 100644
index 0000000000..1c9c7060ab
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M027.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M028.png b/macros/latex/contrib/isosafety/images/ISO-M028.png
new file mode 100644
index 0000000000..08cd7762d6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M028.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M029.png b/macros/latex/contrib/isosafety/images/ISO-M029.png
new file mode 100644
index 0000000000..e3fef9b4d1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M029.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M030.png b/macros/latex/contrib/isosafety/images/ISO-M030.png
new file mode 100644
index 0000000000..e14a9eb391
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M030.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M031.png b/macros/latex/contrib/isosafety/images/ISO-M031.png
new file mode 100644
index 0000000000..65002f4585
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M031.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M032.png b/macros/latex/contrib/isosafety/images/ISO-M032.png
new file mode 100644
index 0000000000..3e7365ffb5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M032.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M033.png b/macros/latex/contrib/isosafety/images/ISO-M033.png
new file mode 100644
index 0000000000..9502007080
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M033.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M034.png b/macros/latex/contrib/isosafety/images/ISO-M034.png
new file mode 100644
index 0000000000..c4ee60f6d6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M034.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M035.png b/macros/latex/contrib/isosafety/images/ISO-M035.png
new file mode 100644
index 0000000000..fe174acff0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M035.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M036.png b/macros/latex/contrib/isosafety/images/ISO-M036.png
new file mode 100644
index 0000000000..511391a33d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M036.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M037.png b/macros/latex/contrib/isosafety/images/ISO-M037.png
new file mode 100644
index 0000000000..0fce26f8b1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M037.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M038.png b/macros/latex/contrib/isosafety/images/ISO-M038.png
new file mode 100644
index 0000000000..f3f4be1581
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M038.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M039.png b/macros/latex/contrib/isosafety/images/ISO-M039.png
new file mode 100644
index 0000000000..cc4ca3d3f3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M039.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M040.png b/macros/latex/contrib/isosafety/images/ISO-M040.png
new file mode 100644
index 0000000000..1c68887a86
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M040.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M041.png b/macros/latex/contrib/isosafety/images/ISO-M041.png
new file mode 100644
index 0000000000..9c13ca060f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M041.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M042.png b/macros/latex/contrib/isosafety/images/ISO-M042.png
new file mode 100644
index 0000000000..4d767610bb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M042.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M043.png b/macros/latex/contrib/isosafety/images/ISO-M043.png
new file mode 100644
index 0000000000..cdef08b738
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M043.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M044.png b/macros/latex/contrib/isosafety/images/ISO-M044.png
new file mode 100644
index 0000000000..f3a509d3db
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M044.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M045.png b/macros/latex/contrib/isosafety/images/ISO-M045.png
new file mode 100644
index 0000000000..0aca9811be
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M045.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M046.png b/macros/latex/contrib/isosafety/images/ISO-M046.png
new file mode 100644
index 0000000000..ec64f37d97
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M046.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M047.png b/macros/latex/contrib/isosafety/images/ISO-M047.png
new file mode 100644
index 0000000000..cb25f8b1b1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M047.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M048.png b/macros/latex/contrib/isosafety/images/ISO-M048.png
new file mode 100644
index 0000000000..4c11307e50
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M048.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M049.png b/macros/latex/contrib/isosafety/images/ISO-M049.png
new file mode 100644
index 0000000000..303eba92ed
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M049.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M050.png b/macros/latex/contrib/isosafety/images/ISO-M050.png
new file mode 100644
index 0000000000..d86359fd64
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M050.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M051.png b/macros/latex/contrib/isosafety/images/ISO-M051.png
new file mode 100644
index 0000000000..72a3bbe407
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M051.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M052.png b/macros/latex/contrib/isosafety/images/ISO-M052.png
new file mode 100644
index 0000000000..2a8057ccd1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M052.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M053.png b/macros/latex/contrib/isosafety/images/ISO-M053.png
new file mode 100644
index 0000000000..0ea6645e60
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M053.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M054.png b/macros/latex/contrib/isosafety/images/ISO-M054.png
new file mode 100644
index 0000000000..144fa656c2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M054.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M055.png b/macros/latex/contrib/isosafety/images/ISO-M055.png
new file mode 100644
index 0000000000..be76007a8a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M055.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M056.png b/macros/latex/contrib/isosafety/images/ISO-M056.png
new file mode 100644
index 0000000000..262c8d27cf
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M056.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M057.png b/macros/latex/contrib/isosafety/images/ISO-M057.png
new file mode 100644
index 0000000000..e2ce2c2795
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M057.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M058.png b/macros/latex/contrib/isosafety/images/ISO-M058.png
new file mode 100644
index 0000000000..c974ac9b8d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M058.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M059.png b/macros/latex/contrib/isosafety/images/ISO-M059.png
new file mode 100644
index 0000000000..9d9310ec3e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M059.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M060.png b/macros/latex/contrib/isosafety/images/ISO-M060.png
new file mode 100644
index 0000000000..96cc4d909e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-M060.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P001.png b/macros/latex/contrib/isosafety/images/ISO-P001.png
new file mode 100644
index 0000000000..3fe4d77f1d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P001.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P002.png b/macros/latex/contrib/isosafety/images/ISO-P002.png
new file mode 100644
index 0000000000..0defefbd16
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P002.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P003.png b/macros/latex/contrib/isosafety/images/ISO-P003.png
new file mode 100644
index 0000000000..737a70db44
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P003.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P004.png b/macros/latex/contrib/isosafety/images/ISO-P004.png
new file mode 100644
index 0000000000..3b66e1318a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P004.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P005.png b/macros/latex/contrib/isosafety/images/ISO-P005.png
new file mode 100644
index 0000000000..bed4aa5646
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P005.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P006.png b/macros/latex/contrib/isosafety/images/ISO-P006.png
new file mode 100644
index 0000000000..acc80d017e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P006.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P007.png b/macros/latex/contrib/isosafety/images/ISO-P007.png
new file mode 100644
index 0000000000..c732046250
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P007.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P008.png b/macros/latex/contrib/isosafety/images/ISO-P008.png
new file mode 100644
index 0000000000..f6cf615b6b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P008.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P009.png b/macros/latex/contrib/isosafety/images/ISO-P009.png
new file mode 100644
index 0000000000..cd74c14d60
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P009.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P010.png b/macros/latex/contrib/isosafety/images/ISO-P010.png
new file mode 100644
index 0000000000..6a758ae27d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P010.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P011.png b/macros/latex/contrib/isosafety/images/ISO-P011.png
new file mode 100644
index 0000000000..993599414a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P011.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P012.png b/macros/latex/contrib/isosafety/images/ISO-P012.png
new file mode 100644
index 0000000000..ec05406b49
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P012.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P013.png b/macros/latex/contrib/isosafety/images/ISO-P013.png
new file mode 100644
index 0000000000..4d279237af
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P013.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P014.png b/macros/latex/contrib/isosafety/images/ISO-P014.png
new file mode 100644
index 0000000000..52990c3e95
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P014.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P015.png b/macros/latex/contrib/isosafety/images/ISO-P015.png
new file mode 100644
index 0000000000..9e279d35f1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P015.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P016.png b/macros/latex/contrib/isosafety/images/ISO-P016.png
new file mode 100644
index 0000000000..50dfa66af8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P016.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P017.png b/macros/latex/contrib/isosafety/images/ISO-P017.png
new file mode 100644
index 0000000000..1821d96651
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P017.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P018.png b/macros/latex/contrib/isosafety/images/ISO-P018.png
new file mode 100644
index 0000000000..c81d5f2a14
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P018.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P019.png b/macros/latex/contrib/isosafety/images/ISO-P019.png
new file mode 100644
index 0000000000..13745df068
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P019.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P020.png b/macros/latex/contrib/isosafety/images/ISO-P020.png
new file mode 100644
index 0000000000..939391dac8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P020.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P021.png b/macros/latex/contrib/isosafety/images/ISO-P021.png
new file mode 100644
index 0000000000..7693e3778e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P021.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P022.png b/macros/latex/contrib/isosafety/images/ISO-P022.png
new file mode 100644
index 0000000000..208b7da0ff
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P022.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P023.png b/macros/latex/contrib/isosafety/images/ISO-P023.png
new file mode 100644
index 0000000000..1cd6e5f31e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P023.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P024.png b/macros/latex/contrib/isosafety/images/ISO-P024.png
new file mode 100644
index 0000000000..d31fd16266
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P024.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P025.png b/macros/latex/contrib/isosafety/images/ISO-P025.png
new file mode 100644
index 0000000000..34e703da3e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P025.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P026.png b/macros/latex/contrib/isosafety/images/ISO-P026.png
new file mode 100644
index 0000000000..f2a6f021ca
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P026.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P027.png b/macros/latex/contrib/isosafety/images/ISO-P027.png
new file mode 100644
index 0000000000..66a94aa792
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P027.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P028.png b/macros/latex/contrib/isosafety/images/ISO-P028.png
new file mode 100644
index 0000000000..c658f4132e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P028.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P029.png b/macros/latex/contrib/isosafety/images/ISO-P029.png
new file mode 100644
index 0000000000..417e20a4de
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P029.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P030.png b/macros/latex/contrib/isosafety/images/ISO-P030.png
new file mode 100644
index 0000000000..f55434bfd6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P030.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P031.png b/macros/latex/contrib/isosafety/images/ISO-P031.png
new file mode 100644
index 0000000000..862a48b5fc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P031.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P032.png b/macros/latex/contrib/isosafety/images/ISO-P032.png
new file mode 100644
index 0000000000..34255be1c1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P032.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P033.png b/macros/latex/contrib/isosafety/images/ISO-P033.png
new file mode 100644
index 0000000000..35124e6c1b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P033.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P034.png b/macros/latex/contrib/isosafety/images/ISO-P034.png
new file mode 100644
index 0000000000..9488fb4ee4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P034.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P035.png b/macros/latex/contrib/isosafety/images/ISO-P035.png
new file mode 100644
index 0000000000..8932997096
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P035.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P036.png b/macros/latex/contrib/isosafety/images/ISO-P036.png
new file mode 100644
index 0000000000..1fb390ebc6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P036.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P037.png b/macros/latex/contrib/isosafety/images/ISO-P037.png
new file mode 100644
index 0000000000..4cda3f058d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P037.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P038.png b/macros/latex/contrib/isosafety/images/ISO-P038.png
new file mode 100644
index 0000000000..4b555a54bc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P038.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P039.png b/macros/latex/contrib/isosafety/images/ISO-P039.png
new file mode 100644
index 0000000000..d9368dfd9b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P039.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P040.png b/macros/latex/contrib/isosafety/images/ISO-P040.png
new file mode 100644
index 0000000000..932564653e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P040.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P041.png b/macros/latex/contrib/isosafety/images/ISO-P041.png
new file mode 100644
index 0000000000..7076ba9628
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P041.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P042.png b/macros/latex/contrib/isosafety/images/ISO-P042.png
new file mode 100644
index 0000000000..41659dbdcf
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P042.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P043.png b/macros/latex/contrib/isosafety/images/ISO-P043.png
new file mode 100644
index 0000000000..b443a9e0e5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P043.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P044.png b/macros/latex/contrib/isosafety/images/ISO-P044.png
new file mode 100644
index 0000000000..674a446ed0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P044.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P045.png b/macros/latex/contrib/isosafety/images/ISO-P045.png
new file mode 100644
index 0000000000..12bad9a4d5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P045.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P046.png b/macros/latex/contrib/isosafety/images/ISO-P046.png
new file mode 100644
index 0000000000..9feaafd19b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P046.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P047.png b/macros/latex/contrib/isosafety/images/ISO-P047.png
new file mode 100644
index 0000000000..b3af2f327c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P047.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P048.png b/macros/latex/contrib/isosafety/images/ISO-P048.png
new file mode 100644
index 0000000000..e3b60aaffd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P048.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P049.png b/macros/latex/contrib/isosafety/images/ISO-P049.png
new file mode 100644
index 0000000000..69a452f92f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P049.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P050.png b/macros/latex/contrib/isosafety/images/ISO-P050.png
new file mode 100644
index 0000000000..3cfceb20b3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P050.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P051.png b/macros/latex/contrib/isosafety/images/ISO-P051.png
new file mode 100644
index 0000000000..79a89ac55b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P051.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P052.png b/macros/latex/contrib/isosafety/images/ISO-P052.png
new file mode 100644
index 0000000000..2c3f77aade
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P052.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P053.png b/macros/latex/contrib/isosafety/images/ISO-P053.png
new file mode 100644
index 0000000000..7ad25a3b41
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P053.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P054.png b/macros/latex/contrib/isosafety/images/ISO-P054.png
new file mode 100644
index 0000000000..93470b9244
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P054.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P055.png b/macros/latex/contrib/isosafety/images/ISO-P055.png
new file mode 100644
index 0000000000..8efffc543c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P055.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P056.png b/macros/latex/contrib/isosafety/images/ISO-P056.png
new file mode 100644
index 0000000000..d3186f25d3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P056.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P057.png b/macros/latex/contrib/isosafety/images/ISO-P057.png
new file mode 100644
index 0000000000..c340e4c3b5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P057.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P058.png b/macros/latex/contrib/isosafety/images/ISO-P058.png
new file mode 100644
index 0000000000..6d285cb73d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P058.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P059.png b/macros/latex/contrib/isosafety/images/ISO-P059.png
new file mode 100644
index 0000000000..88aa78b745
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P059.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P060.png b/macros/latex/contrib/isosafety/images/ISO-P060.png
new file mode 100644
index 0000000000..76443325f1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P060.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P061.png b/macros/latex/contrib/isosafety/images/ISO-P061.png
new file mode 100644
index 0000000000..ce1212819a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P061.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P062.png b/macros/latex/contrib/isosafety/images/ISO-P062.png
new file mode 100644
index 0000000000..dacff3c5d5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P062.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P063.png b/macros/latex/contrib/isosafety/images/ISO-P063.png
new file mode 100644
index 0000000000..92967cadac
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P063.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P064.png b/macros/latex/contrib/isosafety/images/ISO-P064.png
new file mode 100644
index 0000000000..0ff0348c22
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P064.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P065.png b/macros/latex/contrib/isosafety/images/ISO-P065.png
new file mode 100644
index 0000000000..c501c3bfd7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P065.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P066.png b/macros/latex/contrib/isosafety/images/ISO-P066.png
new file mode 100644
index 0000000000..41bfe3743e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P066.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P067.png b/macros/latex/contrib/isosafety/images/ISO-P067.png
new file mode 100644
index 0000000000..59defb42eb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P067.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P068.png b/macros/latex/contrib/isosafety/images/ISO-P068.png
new file mode 100644
index 0000000000..5824733a2f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P068.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P069.png b/macros/latex/contrib/isosafety/images/ISO-P069.png
new file mode 100644
index 0000000000..40e3a64c01
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P069.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P070.png b/macros/latex/contrib/isosafety/images/ISO-P070.png
new file mode 100644
index 0000000000..a866d7fd3f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P070.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P071.png b/macros/latex/contrib/isosafety/images/ISO-P071.png
new file mode 100644
index 0000000000..7f5925154c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P071.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P072.png b/macros/latex/contrib/isosafety/images/ISO-P072.png
new file mode 100644
index 0000000000..b909993c6a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P072.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P073.png b/macros/latex/contrib/isosafety/images/ISO-P073.png
new file mode 100644
index 0000000000..d94b36a9dc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P073.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P074.png b/macros/latex/contrib/isosafety/images/ISO-P074.png
new file mode 100644
index 0000000000..1e5c61ed3d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-P074.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W001.png b/macros/latex/contrib/isosafety/images/ISO-W001.png
new file mode 100644
index 0000000000..1ed9c12496
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W001.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W002.png b/macros/latex/contrib/isosafety/images/ISO-W002.png
new file mode 100644
index 0000000000..72d6efa1a7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W002.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W003.png b/macros/latex/contrib/isosafety/images/ISO-W003.png
new file mode 100644
index 0000000000..e4669ff596
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W003.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W004.png b/macros/latex/contrib/isosafety/images/ISO-W004.png
new file mode 100644
index 0000000000..679539e45c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W004.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W005.png b/macros/latex/contrib/isosafety/images/ISO-W005.png
new file mode 100644
index 0000000000..c8c0826e08
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W005.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W006.png b/macros/latex/contrib/isosafety/images/ISO-W006.png
new file mode 100644
index 0000000000..e087f5b07c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W006.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W007.png b/macros/latex/contrib/isosafety/images/ISO-W007.png
new file mode 100644
index 0000000000..877a1935de
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W007.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W008.png b/macros/latex/contrib/isosafety/images/ISO-W008.png
new file mode 100644
index 0000000000..b28aa352e9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W008.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W009.png b/macros/latex/contrib/isosafety/images/ISO-W009.png
new file mode 100644
index 0000000000..66ad058327
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W009.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W010.png b/macros/latex/contrib/isosafety/images/ISO-W010.png
new file mode 100644
index 0000000000..01d83554e5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W010.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W011.png b/macros/latex/contrib/isosafety/images/ISO-W011.png
new file mode 100644
index 0000000000..1521128a6d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W011.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W012.png b/macros/latex/contrib/isosafety/images/ISO-W012.png
new file mode 100644
index 0000000000..342a47ded0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W012.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W013.png b/macros/latex/contrib/isosafety/images/ISO-W013.png
new file mode 100644
index 0000000000..acca3c326f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W013.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W014.png b/macros/latex/contrib/isosafety/images/ISO-W014.png
new file mode 100644
index 0000000000..e4b2a35b55
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W014.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W015.png b/macros/latex/contrib/isosafety/images/ISO-W015.png
new file mode 100644
index 0000000000..550a5df6a2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W015.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W016.png b/macros/latex/contrib/isosafety/images/ISO-W016.png
new file mode 100644
index 0000000000..01eaccfc4b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W016.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W017.png b/macros/latex/contrib/isosafety/images/ISO-W017.png
new file mode 100644
index 0000000000..dc427bfc37
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W017.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W018.png b/macros/latex/contrib/isosafety/images/ISO-W018.png
new file mode 100644
index 0000000000..ca1468dd8f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W018.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W019.png b/macros/latex/contrib/isosafety/images/ISO-W019.png
new file mode 100644
index 0000000000..c5087fa57c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W019.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W020.png b/macros/latex/contrib/isosafety/images/ISO-W020.png
new file mode 100644
index 0000000000..07dfefa918
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W020.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W021.png b/macros/latex/contrib/isosafety/images/ISO-W021.png
new file mode 100644
index 0000000000..8f6847a06e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W021.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W022.png b/macros/latex/contrib/isosafety/images/ISO-W022.png
new file mode 100644
index 0000000000..875b0cde0b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W022.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W023.png b/macros/latex/contrib/isosafety/images/ISO-W023.png
new file mode 100644
index 0000000000..7dc9fba302
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W023.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W024.png b/macros/latex/contrib/isosafety/images/ISO-W024.png
new file mode 100644
index 0000000000..b0a7cba9a0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W024.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W025.png b/macros/latex/contrib/isosafety/images/ISO-W025.png
new file mode 100644
index 0000000000..084bfc0cd4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W025.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W026.png b/macros/latex/contrib/isosafety/images/ISO-W026.png
new file mode 100644
index 0000000000..eba7c7941a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W026.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W027.png b/macros/latex/contrib/isosafety/images/ISO-W027.png
new file mode 100644
index 0000000000..4f0f402b9a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W027.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W028.png b/macros/latex/contrib/isosafety/images/ISO-W028.png
new file mode 100644
index 0000000000..bceec9df85
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W028.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W029.png b/macros/latex/contrib/isosafety/images/ISO-W029.png
new file mode 100644
index 0000000000..8f9a877c02
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W029.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W030.png b/macros/latex/contrib/isosafety/images/ISO-W030.png
new file mode 100644
index 0000000000..cdf39d29b0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W030.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W031.png b/macros/latex/contrib/isosafety/images/ISO-W031.png
new file mode 100644
index 0000000000..70f1761d1d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W031.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W032.png b/macros/latex/contrib/isosafety/images/ISO-W032.png
new file mode 100644
index 0000000000..f166aa9f9c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W032.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W033.png b/macros/latex/contrib/isosafety/images/ISO-W033.png
new file mode 100644
index 0000000000..6f32b9709c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W033.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W034.png b/macros/latex/contrib/isosafety/images/ISO-W034.png
new file mode 100644
index 0000000000..e7a6073d0d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W034.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W035.png b/macros/latex/contrib/isosafety/images/ISO-W035.png
new file mode 100644
index 0000000000..c3f790dfdc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W035.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W036.png b/macros/latex/contrib/isosafety/images/ISO-W036.png
new file mode 100644
index 0000000000..e503780645
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W036.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W037.png b/macros/latex/contrib/isosafety/images/ISO-W037.png
new file mode 100644
index 0000000000..d1dd451623
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W037.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W038.png b/macros/latex/contrib/isosafety/images/ISO-W038.png
new file mode 100644
index 0000000000..3f20a30eac
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W038.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W039.png b/macros/latex/contrib/isosafety/images/ISO-W039.png
new file mode 100644
index 0000000000..32e942ed37
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W039.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W040.png b/macros/latex/contrib/isosafety/images/ISO-W040.png
new file mode 100644
index 0000000000..23e4250f3e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W040.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W041.png b/macros/latex/contrib/isosafety/images/ISO-W041.png
new file mode 100644
index 0000000000..f14f2617c4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W041.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W042.png b/macros/latex/contrib/isosafety/images/ISO-W042.png
new file mode 100644
index 0000000000..3fb7d5b2ef
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W042.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W043.png b/macros/latex/contrib/isosafety/images/ISO-W043.png
new file mode 100644
index 0000000000..7e760d4bbb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W043.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W044.png b/macros/latex/contrib/isosafety/images/ISO-W044.png
new file mode 100644
index 0000000000..382eb64837
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W044.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W045.png b/macros/latex/contrib/isosafety/images/ISO-W045.png
new file mode 100644
index 0000000000..df0abff844
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W045.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W046.png b/macros/latex/contrib/isosafety/images/ISO-W046.png
new file mode 100644
index 0000000000..8c9e1f15eb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W046.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W047.png b/macros/latex/contrib/isosafety/images/ISO-W047.png
new file mode 100644
index 0000000000..f35e9ba8ab
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W047.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W048.png b/macros/latex/contrib/isosafety/images/ISO-W048.png
new file mode 100644
index 0000000000..d5676bf8ba
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W048.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W049.png b/macros/latex/contrib/isosafety/images/ISO-W049.png
new file mode 100644
index 0000000000..b6c5c008e4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W049.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W050.png b/macros/latex/contrib/isosafety/images/ISO-W050.png
new file mode 100644
index 0000000000..3b18d5395f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W050.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W051.png b/macros/latex/contrib/isosafety/images/ISO-W051.png
new file mode 100644
index 0000000000..0036419ae7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W051.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W052.png b/macros/latex/contrib/isosafety/images/ISO-W052.png
new file mode 100644
index 0000000000..6339d5d65d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W052.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W053.png b/macros/latex/contrib/isosafety/images/ISO-W053.png
new file mode 100644
index 0000000000..185c89d4ca
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W053.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W054.png b/macros/latex/contrib/isosafety/images/ISO-W054.png
new file mode 100644
index 0000000000..695a5ab0dd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W054.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W055.png b/macros/latex/contrib/isosafety/images/ISO-W055.png
new file mode 100644
index 0000000000..7f2a019541
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W055.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W056.png b/macros/latex/contrib/isosafety/images/ISO-W056.png
new file mode 100644
index 0000000000..662ad8f404
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W056.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W057.png b/macros/latex/contrib/isosafety/images/ISO-W057.png
new file mode 100644
index 0000000000..bcbe69857a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W057.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W058.png b/macros/latex/contrib/isosafety/images/ISO-W058.png
new file mode 100644
index 0000000000..1d2dbb6886
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W058.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W059.png b/macros/latex/contrib/isosafety/images/ISO-W059.png
new file mode 100644
index 0000000000..72188b554d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W059.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W060.png b/macros/latex/contrib/isosafety/images/ISO-W060.png
new file mode 100644
index 0000000000..b5bb4877e7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W060.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W061.png b/macros/latex/contrib/isosafety/images/ISO-W061.png
new file mode 100644
index 0000000000..6bafe70030
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W061.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W062.png b/macros/latex/contrib/isosafety/images/ISO-W062.png
new file mode 100644
index 0000000000..3d92585e49
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W062.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W063.png b/macros/latex/contrib/isosafety/images/ISO-W063.png
new file mode 100644
index 0000000000..f980702f70
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W063.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W064.png b/macros/latex/contrib/isosafety/images/ISO-W064.png
new file mode 100644
index 0000000000..2e6001905d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W064.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W065.png b/macros/latex/contrib/isosafety/images/ISO-W065.png
new file mode 100644
index 0000000000..a9aae46f33
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W065.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W066.png b/macros/latex/contrib/isosafety/images/ISO-W066.png
new file mode 100644
index 0000000000..1f5385252e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W066.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W067.png b/macros/latex/contrib/isosafety/images/ISO-W067.png
new file mode 100644
index 0000000000..5d5162be0d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W067.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W068.png b/macros/latex/contrib/isosafety/images/ISO-W068.png
new file mode 100644
index 0000000000..8f00376189
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W068.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W069.png b/macros/latex/contrib/isosafety/images/ISO-W069.png
new file mode 100644
index 0000000000..16a04884b4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W069.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W070.png b/macros/latex/contrib/isosafety/images/ISO-W070.png
new file mode 100644
index 0000000000..99b9edebbe
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W070.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W071.png b/macros/latex/contrib/isosafety/images/ISO-W071.png
new file mode 100644
index 0000000000..af340de7ef
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W071.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W072.png b/macros/latex/contrib/isosafety/images/ISO-W072.png
new file mode 100644
index 0000000000..7e0d5b55be
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W072.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W073.png b/macros/latex/contrib/isosafety/images/ISO-W073.png
new file mode 100644
index 0000000000..d645fc9642
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W073.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W074.png b/macros/latex/contrib/isosafety/images/ISO-W074.png
new file mode 100644
index 0000000000..90fc576c05
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W074.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W075.png b/macros/latex/contrib/isosafety/images/ISO-W075.png
new file mode 100644
index 0000000000..371cf6ccd8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W075.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W076.png b/macros/latex/contrib/isosafety/images/ISO-W076.png
new file mode 100644
index 0000000000..35aae4aa1a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W076.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W077.png b/macros/latex/contrib/isosafety/images/ISO-W077.png
new file mode 100644
index 0000000000..0c06a6ae47
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W077.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W078.png b/macros/latex/contrib/isosafety/images/ISO-W078.png
new file mode 100644
index 0000000000..c8c3d8f4c7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W078.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W079.png b/macros/latex/contrib/isosafety/images/ISO-W079.png
new file mode 100644
index 0000000000..123b8921fd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W079.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W080.png b/macros/latex/contrib/isosafety/images/ISO-W080.png
new file mode 100644
index 0000000000..55695703ae
--- /dev/null
+++ b/macros/latex/contrib/isosafety/images/ISO-W080.png
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety.dtx b/macros/latex/contrib/isosafety/isosafety.dtx
new file mode 100644
index 0000000000..d21aa05a72
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety.dtx
@@ -0,0 +1,135 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2023 by BenSt099
+% -------------------------------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% 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.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{isosafety.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+%<package>\ProvidesPackage{isosafety}
+%<*package>
+ [2023/10/22 v1.0 ISO Safety Colors And Safety Signs]
+
+\RequirePackage{graphicx}
+\RequirePackage{xcolor}
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{isosafety}[2023/10/22]
+\usepackage{hyperref}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{isosafety.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \changes{v1.0}{2023/10/22}{Initial version}
+%
+% \GetFileInfo{isosafety.sty}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+%
+%
+% \title{The \textsf{isosafety} package\thanks{This document
+% corresponds to \textsf{isosafety}~\fileversion, dated \filedate.}}
+% \author{BenSt099 \\ \texttt{github.com/BenSt099}}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This package provides ISO colors and ISO signs according to the ISO standards 3864 and 7010.
+% It can be useful when creating instructions for chemical or physical experiments.
+%
+% \section{Usage}
+%
+% \subsection{ISO colors}
+%
+% There are 6 colors that are also used in the signs: \vspace*{5mm}
+%
+% \begin{tabular}{cc}
+% Warning & {\color{Warning} Warning Color} \\
+% Prohibition & {\color{Prohibition} Prohibition Color} \\
+% Mandatory & {\color{Mandatory} Mandatory Color} \\
+% Rescue & {\color{Rescue} Rescue Color} \\
+% Backgrounds & {\color{Backgrounds} Backgrounds Color} \\
+% Symbol & {\color{Symbol} Symbol Color} \\
+% \end{tabular}
+%
+% \subsection{Colors - Example}
+%
+% \begin{verbatim}
+% {\color{Mandatory} Text with mandatory color}
+% \end{verbatim}
+%
+% \subsection{ISO signs}
+%
+% The signs from ISO are placed in a category, have a letter and a number
+%
+% \begin{itemize}
+% \item Safe condition - Letter E (001 - 070)
+% \item Crescent variant - CV (003, 004, 009, 010, 011, 012, 013, 027, 028, 029, 064, 067)
+% \item Fire Protection - Letter F (001 - 019)
+% \item Mandatory - Letter M (001 - 060)
+% \item Prohibition - Letter P (001 - 074)
+% \item Warning - Letter W (001 - 080)
+% \end{itemize}
+%
+% The command to access these signs has the following syntax:
+%
+% \begin{verbatim}
+% \Isosign{ISO-{Letter}{Number}.png}
+% \end{verbatim}
+%
+% \subsection{Signs - Example}
+%
+% Imagine you want to put the sign of a fire extinguisher in your document.
+% Use the following command:
+%
+% \begin{verbatim}
+% \Isosign{ISO-F001.png}
+% \end{verbatim}
+%
+% \noindent For an overview, take a look at \href{https://en.wikipedia.org/wiki/ISO_7010}{Wikipedia}
+%
+% \StopEventually{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\definecolor{Warning}{HTML}{F9A800}
+\definecolor{Prohibition}{HTML}{9B2423}
+\definecolor{Mandatory}{HTML}{005387}
+\definecolor{Rescue}{HTML}{237F52}
+\definecolor{Backgrounds}{HTML}{ECECE7}
+\definecolor{Symbol}{HTML}{2B2B2C}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\Isosign}[1]{images/ISO-#1.png}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \Finale
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/isosafety/isosafety.ins b/macros/latex/contrib/isosafety/isosafety.ins
new file mode 100644
index 0000000000..024d06df82
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety.ins
@@ -0,0 +1,56 @@
+%%
+%% Copyright (C) 2023 by BenSt099
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 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.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/isosafety}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2023 by BenSt099
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 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.3 or later is part of all distributions of LaTeX version
+2005/12/01 or later.
+
+\endpreamble
+
+\generate{\file{isosafety.sty}{\from{isosafety.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* isosafety.sty *}
+\Msg{* images/* *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file isosafety.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/isosafety/isosafety.pdf b/macros/latex/contrib/isosafety/isosafety.pdf
new file mode 100644
index 0000000000..09009812ad
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index 94da9cacbe..6d7b45437f 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-10-23]
+
+### Changed
+- Update minimal `expl3` version required
+
## [2023-10-10]
### Changed
@@ -301,7 +306,8 @@ this project uses date-based 'snapshot' version identifiers.
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-23...HEAD
+[2023-10-23]: https://github.com/latex3/latex3/compare/2023-10-10...2023-10-23
[2023-10-10]: https://github.com/latex3/latex3/compare/2023-04-19...2023-10-10
[2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
[2023-03-30]: https://github.com/latex3/latex3/compare/2023-01-16...2023-03-30
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index 883bd5d1c6..ff202e7e09 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2023-10-10
+Release 2023-10-23
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index a6f7ea6d1c..190a8cee3f 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2023-10-10}{}
+ {l3backend-dvipdfmx.def}{2023-10-23}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2023-10-10}{}
+ {l3backend-dvips.def}{2023-10-23}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2023-10-10}{}
+ {l3backend-dvisvgm.def}{2023-10-23}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2023-10-10}{}
+ {l3backend-luatex.def}{2023-10-23}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2023-10-10}{}
+ {l3backend-pdftex.def}{2023-10-23}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2023-10-10}{}
+ {l3backend-xetex.def}{2023-10-23}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
@@ -104,7 +104,7 @@
% \begin{macrocode}
\cs_if_exist:NTF \__kernel_dependency_version_check:nn
{
- \__kernel_dependency_version_check:nn {2021-02-18}
+ \__kernel_dependency_version_check:nn {2023-10-10}
%<dvipdfmx> {l3backend-dvipdfmx.def}
%<dvips> {l3backend-dvips.def}
%<dvisvgm> {l3backend-dvisvgm.def}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index 9bc74a1611..71d55492c1 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index 0131abee16..9f36d8eaec 100644
--- a/macros/latex/contrib/l3backend/l3backend-code.pdf
+++ b/macros/latex/contrib/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index 73eee0ca2c..31711d1a4b 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 8fa2fda940..c3b1509791 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index 610785e348..bb452d1ef2 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index 5bd4bb4808..b3ce225cdc 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index 9b994ac16e..a87b767948 100644
--- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index 8d942551bb..15f1796f15 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 590abad03a..919e6779b6 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,27 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-10-23]
+
+### Added
+- `\text_titlecase_all:n(n)`
+- `\token_to_catcode:N`
+- Support for symbolic variables in fp input:
+ `\fp_new_variable:n`, `\fp_set_variable:nn` and `\fp_clear_variable:n`
+- Support for user-defined functions in fp expressions:
+ `\fp_new_function:n`, `\fp_set_function:nnn` and `\fp_clear_function:n`
+
+### Changed
+- Refine action of `\text_titlecase_first:n(n)` to be focussed strictly on
+ first (relevant) codepoint in the input
+
+### Deprecated
+- `\text_titlecase:n(n)` as ambiguous: replaced by `\text_titlecase_all:n(n)`
+
+### Fixed
+- Support arbitrary BCP-47 locales for case-changing overrides (issue \#1239)
+- Retain braces when ending titlecasing with some input structures
+
## [2023-10-10]
### Added
@@ -119,7 +140,6 @@ this project uses date-based 'snapshot' version identifiers.
- `\file_input_raw:n`
- `\int_if_zero:n(TF)`
- `\str_mdfive_hash:n`
-
### Changed
- Remove `\noexpand` inside math mode in `\text_expand:n`
- Re-implement `\dim_to_decimal_in_bp:n` and
@@ -1538,7 +1558,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-23...HEAD
+[2023-10-23]: https://github.com/latex3/latex3/compare/2023-10-10...2023-10-23
[2023-10-10]: https://github.com/latex3/latex3/compare/2023-08-29...2023-10-10
[2023-08-29]: https://github.com/latex3/latex3/compare/2023-08-11...2023-08-29
[2023-08-11]: https://github.com/latex3/latex3/compare/2023-08-03...2023-08-11
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 7b368819d5..5f52ac444b 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-10-10
+Release 2023-10-23
Overview
--------
@@ -57,7 +57,7 @@ since the release of version 1.40.0 in 2007; `\expanded` was added for TeX Live
2019. Similarly, the full set of these utility primitives has been available in
XeTeX from the 2019 TeX Live release, and has always been available in LuaTeX
(some by Lua emulation). The Japanese pTeX and upTeX gained all of the above
-(except `\ifincsname`) for TeX Live 2019 `\ifincsname` for TeX Live 2020.
+(except `\ifincsname`) for TeX Live 2019 and `\ifincsname` for TeX Live 2020.
Starting from release 2023-05-15, the `\expanded` primitive is *required*.
Its slow emulation has been removed.
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index ea13fbeacf..09e21e4710 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-10-10}%
+\def\ExplFileDate{2023-10-23}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -311,9 +311,8 @@
% or private.
%
% To allow clear separation of these two cases, the following convention
-% is used. In private functions and variables, two |_| characters are
-% added to the start of the module name. On the other hand, public
-% interfaces to not have these two |_| character. Thus
+% is used. To denote a private function or a private variable (of the module),
+% two |_| characters are used in front of the module name, e.g.
% \begin{verbatim}
% \module_foo:nnn
% \end{verbatim}
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index af52bd35c0..48ef0d9e7e 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index f8431c7347..d80ff728b7 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index 79d4cec3e9..ded23a7954 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -64,7 +64,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-10}
+\date{Released 2023-10-23}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins
index 52c65e4c8e..24f11d8f7b 100644
--- a/macros/latex/contrib/l3kernel/l3.ins
+++ b/macros/latex/contrib/l3kernel/l3.ins
@@ -92,6 +92,9 @@ and all files in that bundle must be distributed together.
\from{l3fp-trig.dtx} {package}
\from{l3fp-convert.dtx} {package}
\from{l3fp-random.dtx} {package}
+ \from{l3fp-types.dtx} {package}
+ \from{l3fp-symbolic.dtx}{package}
+ \from{l3fp-functions.dtx}{package}
\from{l3fparray.dtx} {package}
\from{l3cctab.dtx} {package}
\from{l3sort.dtx} {package}
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 6b484105fe..00e159d817 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -1045,7 +1045,7 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[EXP, added = 2018-06-18]{\use:e}
+% \begin{function}[EXP, added = 2018-06-18, updated = 2023-07-05]{\use:e}
% \begin{syntax}
% \cs{use:e} \Arg{expandable tokens}
% \end{syntax}
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index e300bccc67..a42f358ae8 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index dfa6b3c451..5757653168 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 6e455b099c..567969d545 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index 4192ec029a..794b53b5f4 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 8fc2f6870b..bd8082cf34 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 94824400de..cf046706b6 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index 3d225b2d22..2cdf604d02 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -330,7 +330,7 @@
%
% \subsection{Coloring math mode material}
%
-% Coloring math mode material using \cs{color_select:nn(n)} has some restrictions
+% Coloring math mode material using \cs[no-index]{color_select:nn(n)} has some restrictions
% and often leads to spacing issues and/or poor input syntax. Avoiding generating
% \tn{mathord} atoms whilst coloring only those parts of the input which are
% required needs careful handling. The functionality here covers this important
@@ -341,7 +341,7 @@
% \cs{color_math:nn} \Arg{color expression}\Arg{content}
% \cs{color_math:nnn} \Arg{model(s)} \Arg{value(s)} \Arg{content}
% \end{syntax}
-% Works as for \cs{color_select:n(n)} but applies color only to the math mode
+% Works as for \cs[no-index]{color_select:n(n)} but applies color only to the math mode
% \meta{content}. The function does not generate a group and the \meta{content}
% therefore retains its math atom states. Sub/superscripts are also properly
% handled.
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index 8efdc986cc..c351529d85 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index c9564f4080..98d8df40e5 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -549,6 +549,21 @@
% \end{macrocode}
% \end{macro}
%
+% \subsection{Deprecated \pkg{l3text} functions}
+%
+% \begin{macro}[EXP]{\text_titlecase:n}
+% \begin{macro}[EXP]{\text_titlecase:nn}
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:n }
+\cs_gset:Npn \text_titlecase:n #1
+ { \text_titlecase_first:n { \text_lowercase:n {#1} } }
+\__kernel_patch_deprecation:nnNNpn { 2023-07-08 } { \text_titlecase_first:nn }
+\cs_gset:Npn \text_titlecase:nn #1#2
+ { \text_titlecase_first:nn {#1} { \text_lowercase:n {#2} } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3tl} functions}
%
% \begin{macrocode}
@@ -574,12 +589,12 @@
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:nn }
\cs_gset:Npn \tl_upper_case:nn #1#2
{ \text_uppercase:nn {#1} {#2} }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
\cs_gset:Npn \tl_mixed_case:n #1
- { \text_titlecase:n {#1} }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:nn }
+ { \text_titlecase_first:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:nn }
\cs_gset:Npn \tl_mixed_case:nn #1#2
- { \text_titlecase:nn {#1} {#2} }
+ { \text_titlecase_first:nn {#1} {#2} }
% \end{macrocode}
% \end{macro}
%
@@ -608,7 +623,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\char_to_nfd:Nm, \char_to_nfd:n}
+% \begin{macro}[EXP]{\char_to_nfd:N, \char_to_nfd:n}
% \begin{macrocode}
\__kernel_patch_deprecation:nnNNpn { 2022-10-09 } { \codepoint_to_nfd:n }
\cs_gset:Npn \char_to_nfd:N #1 { \codepoint_to_nfd:n {`#1} }
@@ -629,8 +644,8 @@
\cs_gset:Npn \char_lower_case:N { \text_lowercase:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:n }
\cs_gset:Npn \char_upper_case:N { \text_uppercase:n }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:n }
-\cs_gset:Npn \char_mixed_case:N { \text_titlecase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
+\cs_gset:Npn \char_mixed_case:N { \text_titlecase_first:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_casefold:n }
\cs_gset:Npn \char_fold_case:N { \str_casefold:n }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:n }
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index ed675106ba..789095d104 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -85,7 +85,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index b8cd8d1e29..2612bef184 100644
--- a/macros/latex/contrib/l3kernel/l3doc.pdf
+++ b/macros/latex/contrib/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index df2b7c63ab..59bd089ae6 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -2,7 +2,7 @@
%
%% File l3dosctrip.dtx
%
-% Copyright (C) 2012,2014-2023 The LaTeX Project
+% Copyright (C) 2012-2023 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index 39d53ac5b9..4f43b61756 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index d4fe6b3a30..3bf2bd6153 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 2d2ae6a183..af83fe4e08 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 637da52ee7..278c71f27c 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index da05eafa39..17d75d1045 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 3db65c9d29..ccd5e63ac1 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index 3c5ad9195b..b79950c267 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-basics.dtx
%
-% Copyright (C) 2011-2014,2016-2023 The LaTeX Project
+% Copyright (C) 2011-2023 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 835f9c4341..70983272dd 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index 5ac216bf4c..f0e691f310 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index b83b37335b..e374e7e288 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-functions.dtx b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
new file mode 100644
index 0000000000..a899f3493a
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
@@ -0,0 +1,282 @@
+% \iffalse
+%
+%% File l3fp-functions.dtx (C) Copyright 2012-2018,2020,2021,2023 The LaTeX Project
+%
+% It 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 file is part of the "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full]{l3doc}
+\usepackage{amsmath}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \pkg{l3fp-functions} package\\ Floating point functions^^A
+% }
+%
+% \author{^^A
+% The \LaTeX{} Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2023-10-23}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3fp-functions} implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=fp>
+% \end{macrocode}
+%
+% \subsection{Declaring functions}
+%
+% \begin{macro}{\fp_new_function:n}
+% \begin{macro}{\@@_new_function:n}
+% \begin{macrocode}
+\cs_new_protected:Npn \fp_new_function:n #1
+ { \exp_args:No \@@_new_function:n { \tl_to_str:n {#1} } }
+\cs_new_protected:Npn \@@_new_function:n #1
+ {
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { invalid-identifier } {#1} }
+ {
+ \cs_if_exist:cT { @@_parse_word_#1:N }
+ {
+ \msg_error:nnn
+ { fp } { id-already-defined } {#1}
+ \cs_undefine:c { @@_parse_word_#1:N }
+ \cs_undefine:c { @@_#1_o:w }
+ }
+ \@@_function_set_parsing:Nn \cs_gset_eq:NN {#1}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+% {\@@_function_set_parsing:Nn, \@@_function_set_parsing_aux:NNn}
+% \begin{macrocode}
+\cs_new:Npn \@@_function_set_parsing:Nn #1#2
+ {
+ \exp_args:NNc \@@_function_set_parsing_aux:NNn #1
+ { @@_parse_word_#2:N } {#2}
+ }
+\cs_new:Npn \@@_function_set_parsing_aux:NNn #1#2#3
+ {
+ \cs_set:Npe \@@_tmp:w
+ {
+ \exp_not:N \@@_parse_function:NNN
+ \exp_not:N \@@_function_o:w
+ \exp_not:c { @@_#3_o:w }
+ }
+ \cs_if_eq:NNF #2 \@@_tmp:w
+ {
+ \cs_if_exist:NTF #2
+ {
+ \msg_warning:nnnn
+ { fp } { id-used-elsewhere } {#3} { function }
+ #1 #2 \@@_tmp:w
+ }
+ {
+ \cs_new_eq:NN #2 \scan_stop: % to declare the function
+ #1 #2 \@@_tmp:w
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_function_o:w}
+% \begin{macrocode}
+\cs_new:Npn \@@_function_o:w #1#2 @
+ {
+ \cs_if_exist:NTF #1
+ { #1 #2 @ }
+ {
+ \exp_after:wN \s_@@_symbolic
+ \exp_after:wN \@@_symbolic_chk:w
+ \exp_after:wN \@@_function_o:w
+ \exp_after:wN #1
+ \exp_after:wN ,
+ \exp_after:wN {
+ \exp:w \exp_end_continue_f:w
+ \@@_exp_after_array_f:w #2 \s_@@_expr_stop
+ \exp_after:wN
+ }
+ \exp_after:wN ;
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Defining functions by their expression}
+%
+% \begin{variable}{\l_@@_function_arg_int}
+% Labels the arguments of a function being defined.
+% \begin{macrocode}
+\int_new:N \l_@@_function_arg_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\fp_set_function:nnn}
+% \begin{macro}{\@@_set_function:Nnnn}
+% \begin{syntax}
+% \cs{fp_set_function:nnn} \Arg{identifier}
+% \Arg{comma-list of variables} \Arg{expression}
+% \end{syntax}
+% Defines the \meta{identifier} to stand for a function which expects
+% some arguments defined by the \meta{comma-list of variables}, and
+% evaluates to the \meta{expression}.
+% \begin{macrocode}
+\cs_new_protected:Npn \fp_set_function:nnn #1
+ {
+ \exp_args:NNo \@@_set_function:Nnnn \cs_set_eq:cN
+ { \tl_to_str:n {#1} }
+ }
+\cs_new_protected:Npn \@@_set_function:Nnnn #1#2#3#4
+ {
+ \@@_id_if_invalid:nTF {#2}
+ { \msg_error:nnn { fp } { invalid-identifier } {#2} }
+ {
+ \cs_if_exist:cF { @@_parse_word_#2:N }
+ { \@@_function_set_parsing:Nn \cs_set_eq:NN {#2} }
+ \group_begin:
+ \int_zero:N \l_@@_function_arg_int
+ \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#3} }
+ {
+ \int_incr:N \l_@@_function_arg_int
+ \exp_args:Ne \@@_clear_variable:n
+ { _ \tex_romannumeral:D \l_@@_function_arg_int }
+ \fp_clear_variable:n {##1}
+ \cs_set_nopar:cpe { l_@@_variable_##1_fp }
+ {
+ \exp_not:N \s__fp_symbolic
+ \exp_not:N \@@_symbolic_chk:w
+ \exp_not:N \@@_function_arg_o:w
+ \int_use:N \l_@@_function_arg_int
+ ########1 , { } ;
+ }
+ }
+ \cs_set:Npn \@@_function_arg_o:w ##1 @
+ {
+ \exp_after:wN \s_@@_symbolic
+ \exp_after:wN \@@_symbolic_chk:w
+ \exp_after:wN \@@_function_arg_o:w
+ \tex_romannumeral:D
+ \@@_exp_after_symbolic_loop:N ##1
+ { , \tex_romannumeral:D \use_none:nn }
+ \exp_after:wN \c_zero_int
+ \exp_after:wN { \exp_after:wN } \exp_after:wN ;
+ }
+ \fp_set:Nn \l_@@_symbolic_fp {#4}
+ \use:e
+ {
+ \exp_not:n { \cs_gset:Npn \@@_tmp:w ##1 }
+ { \exp_not:o { \l_@@_symbolic_fp } }
+ }
+ \use:e
+ {
+ \exp_not:n { \cs_gset:Npn \@@_tmp:w ##1 @ }
+ {
+ \exp_not:N \@@_exp_after_symbolic_f:nw
+ \exp_not:n { { \exp_after:wN \exp_stop_f: } }
+ \exp_not:o { \@@_tmp:w { . , {##1} } }
+ }
+ }
+ \group_end:
+ #1 { @@_#2_o:w } \@@_tmp:w
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {
+% \@@_function_arg_o:w,
+% \@@_function_arg_few:w,
+% \@@_function_arg_get:w
+% }
+% \begin{macrocode}
+\cs_new:Npn \@@_function_arg_o:w #1. #2
+ {
+ \if_meaning:w @ #2
+ \exp_after:wN \@@_function_arg_few:w
+ \fi:
+ \if_int_compare:w #1 = \c_one_int
+ \exp_after:wN \@@_function_arg_get:w
+ \fi:
+ \@@_use_i_until_s:nw
+ {
+ \exp_after:wN \@@_function_arg_o:w
+ \int_value:w \int_eval:n { #1 - 1 } .
+ }
+ #2
+ }
+\cs_new:Npn \@@_function_arg_few:w #1 @ { \exp_after:wN \c_nan_fp }
+\cs_new:Npn \@@_function_arg_get:w #1#2#3; #4 @
+ {
+ \@@_exp_after_array_f:w #3; \s_@@_expr_stop
+ \exp_after:wN \exp_stop_f:
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fp_clear_function:n}
+% \begin{macro}{\@@_clear_function:n}
+% \begin{macrocode}
+\cs_new_protected:Npn \fp_clear_function:n #1
+ { \exp_args:No \@@_clear_function:n { \tl_to_str:n {#1} } }
+\cs_new_protected:Npn \@@_clear_function:n #1
+ {
+ \cs_undefine:c { @@_parse_word_ #1 :N }
+ \@@_function_set_parsing:Nn \cs_set_eq:NN {#1}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% ^^A todo: add check for number of args
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 2f439c2925..5e98d6b62c 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -163,7 +163,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_compare_back_any:ww, \@@_compare_back:ww, \@@_compare_nan:w}
+% \begin{macro}[EXP]{\@@_compare_back:ww, \@@_bcmp:ww, \@@_compare_back_any:ww, \@@_compare_nan:w}
% \begin{quote}
% \cs{@@_compare_back_any:ww} \meta{y} |;| \meta{x} |;|
% \end{quote}
@@ -178,6 +178,17 @@
% a different type, the highest type is a larger number. Finally, if
% $y\leq 0$, then $x>y$, unless both are zero.
% \begin{macrocode}
+\cs_new:Npn \@@_compare_back:ww #1#2; #3#4;
+ {
+ \cs:w
+ @@
+ \@@_type_from_scan:N #1
+ _bcmp
+ \@@_type_from_scan:N #3
+ :ww
+ \cs_end:
+ #1#2; #3#4;
+ }
\cs_new:Npn \@@_compare_back_any:ww #1#2; #3
{
\@@_if_type_fp:NTwFw
@@ -195,7 +206,7 @@
}
#1#2 ; #3
}
-\cs_new:Npn \@@_compare_back:ww
+\cs_new:Npn \@@_bcmp:ww
\s_@@ \@@_chk:w #1 #2 #3;
\s_@@ \@@_chk:w #4 #5 #6;
{
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index 418974d826..58fc4f1f2a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 3e3b5cfdfc..3cff0bdc1a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index f0853f5999..901cb5ba34 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
new file mode 100644
index 0000000000..277ecfabf5
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
@@ -0,0 +1,673 @@
+% \iffalse
+%
+%% File l3fp-symbolic.dtx (C) Copyright 2012-2015,2017,2018,2020,2021,2023 The LaTeX Project
+%
+% It 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 file is part of the "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full]{l3doc}
+\usepackage{amsmath}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \pkg{l3fp-symbolic} package\\ Symbolic expressions^^A
+% }
+%
+% \author{^^A
+% The \LaTeX{} Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2023-10-23}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3fp-symbolic} implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=fp>
+% \end{macrocode}
+%
+% \subsection{Misc}
+%
+% \begin{variable}{\l_@@_symbolic_fp}
+% Scratch floating point.
+% \begin{macrocode}
+\fp_new:N \l_@@_symbolic_fp
+% \end{macrocode}
+% \end{variable}
+%
+% \subsection{Building blocks for expressions}
+%
+% Every symbolic expression has the form \cs{s_@@_symbolic}
+% \cs{@@_symbolic_chk:w} \meta{operation} |,| \Arg{operands} \meta{junk}
+% |;| where the \meta{operation} is a list of \texttt{N}-type tokens,
+% the \meta{operands} is an array of floating point objects, and the
+% \meta{junk} is to be discarded. If the outermost operator (last to be
+% evaluated) is unary, the expression has the form
+% \begin{quote}
+% \cs{s_@@_symbolic} \cs{@@_symbolic_chk:w} \\
+% \cs{@@_types_unary:NNw} |\__fp_|\meta{op}|_o:w| \meta{token} |,| \\
+% |{| \meta{operand} |}| \meta{junk} |;|
+% \end{quote}
+% where the \meta{op} is a unary operation (|set_sign|, |cos|,
+% \ldots{}), and the \meta{token} and \meta{operand} are used as
+% arguments for \cs{@@_\meta{op}_o:w} (or the type-specific analog of
+% this function). If the outermost operator is binary, the expression
+% has the form
+% \begin{quote}
+% \cs{s_@@_symbolic} \cs{@@_symbolic_chk:w} \\
+% \cs{@@_types_binary:Nww} |\__fp_|\meta{op}|_o:ww| |,| \\
+% |{| \meta{operand_1} \meta{operand_2} |}| \meta{junk} |;|
+% \end{quote}
+% where the \meta{op} is an operation (|+|, |&|, \ldots{}), and
+% |\__fp_|\meta{op}|_o:ww| receives the \meta{operands} as arguments.
+% If the expression consists of a single variable, it is stored as
+% \begin{quote}
+% \cs{s_@@_symbolic} \cs{@@_symbolic_chk:w} \\
+% \cs{@@_variable_o:w} \meta{identifier} |,| \\
+% |{| |}| \meta{junk} |;|
+% \end{quote}
+%
+% Symbolic expressions are stored in a prefix form. When encountering a
+% symbolic expression in a floating point computation, we attempt to
+% evaluate the operands as much as possible, and if that yields floating
+% point numbers rather than expressions, we apply the operator which
+% follows (if the function is known).
+%
+% For instance, the expression |a + b * sin(c)| is stored as
+% \begin{verbatim}
+% \s__fp_symbolic \__fp_symbolic_chk:w
+% \__fp_types_binary:Nww \__fp_+_o:ww ,
+% {
+% \s__fp_symbolic \__fp_symbolic_chk:w
+% \__fp_variable_o:w a , { } ;
+% \s__fp_symbolic \__fp_symbolic_chk:w
+% \__fp_types_binary:Nww \__fp_*_o:ww ,
+% {
+% \s__fp_symbolic \__fp_symbolic_chk:w
+% \__fp_variable_o:w b , { } ;
+% \s__fp_symbolic \__fp_symbolic_chk:w
+% \__fp_types_unary:NNw \__fp_sin_o:w \use_i:nn ,
+% {
+% \s__fp_symbolic \__fp_symbolic_chk:w
+% \__fp_variable_o:w c , { } ;
+% } ;
+% } ;
+% } ;
+% \end{verbatim}
+%
+% \begin{variable}{\s_@@_symbolic}
+% Scan mark indicating the start of a symbolic expression.
+% \begin{macrocode}
+\scan_new:N \s_@@_symbolic
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_symbolic_chk:w}
+% Analog of \cs{@@_chk:w} for symbolic expressions.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_symbolic_chk:w #1,#2#3;
+ {
+ \msg_error:nne { fp } { misused-fp }
+ {
+ \@@_to_tl_dispatch:w
+ \s_@@_symbolic \@@_symbolic_chk:w #1,{#2};
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Expanding after a symbolic expression}
+%
+% \begin{macro}[EXP]
+% {\@@_if_has_symbolic:nTF, \@@_if_has_symbolic_aux:w}
+% Tests if |#1| contains \cs{s_@@_symbolic} at top-level. This test
+% should be precise enough to determine if a given an array contains a
+% symbolic expression or only consists in floating points. Used in
+% \cs{@@_exp_after_symbolic_f:nw}.
+% \begin{macrocode}
+\cs_new:Npn \@@_if_has_symbolic:nTF #1
+ {
+ \@@_if_has_symbolic_aux:w
+ #1 \s_@@_mark \use_i:nn
+ \s_@@_symbolic \s_@@_mark \use_ii:nn
+ \s_@@_stop
+ }
+\cs_new:Npn \@@_if_has_symbolic_aux:w
+ #1 \s_@@_symbolic #2 \s_@@_mark #3#4 \s_@@_stop { #3 }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_exp_after_symbolic_f:nw}
+% \begin{macro}[EXP]
+% {\@@_exp_after_symbolic_aux:w, \@@_exp_after_symbolic_loop:N}
+% This function does two things: trigger an \texttt{f}-expansion of
+% the argument~|#1| after the following symbolic expression, and
+% evaluate all pieces of the expression which can be evaluated.
+% \begin{macrocode}
+\cs_new:Npn \@@_exp_after_symbolic_f:nw
+ #1 \s_@@_symbolic \@@_symbolic_chk:w #2, #3#4;
+ {
+ \exp_after:wN \@@_exp_after_symbolic_aux:w
+ \exp:w
+ \@@_exp_after_symbolic_loop:N #2
+ { , \exp:w \use_none:nn }
+ \exp_after:wN \exp_end: \exp_after:wN
+ {
+ \exp:w \exp_end_continue_f:w
+ \@@_exp_after_array_f:w #3 \s_@@_expr_stop
+ \exp_after:wN
+ }
+ \exp_after:wN ;
+ \exp:w \exp_end_continue_f:w #1
+ }
+\cs_new:Npn \@@_exp_after_symbolic_aux:w #1, #2;
+ {
+ \@@_if_has_symbolic:nTF {#2}
+ { \s_@@_symbolic \@@_symbolic_chk:w #1, {#2} ; }
+ { #1 #2 @ \prg_do_nothing: }
+ }
+\cs_new:Npn \@@_exp_after_symbolic_loop:N #1
+ {
+ \exp_after:wN \exp_end:
+ \exp_after:wN #1
+ \exp:w
+ \@@_exp_after_symbolic_loop:N
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Applying infix operators to expressions}
+%
+% \begin{macro}[EXP]{\@@_symbolic_binary_o:Nww}
+% Used when applying infix operators to expressions.
+% \begin{macrocode}
+\cs_new:Npn \@@_symbolic_binary_o:Nww #1 #2; #3;
+ {
+ \@@_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: }
+ \s_@@_symbolic \@@_symbolic_chk:w
+ \@@_types_binary:Nww #1 , { #2; #3; } ;
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{@makeother}{^} %^^A Hack!
+% \begin{@makeother}{|} %^^A Hack!
+% \begin{@makeother}{&} %^^A Hack!
+% \begin{macro}[EXP]
+% {
+% \@@_symbolic_+_symbolic_o:ww,
+% \@@_symbolic_+_o:ww,
+% \@@_+_symbolic_o:ww,
+% \@@_symbolic_-_symbolic_o:ww,
+% \@@_symbolic_-_o:ww,
+% \@@_-_symbolic_o:ww,
+% \@@_symbolic_*_symbolic_o:ww,
+% \@@_symbolic_*_o:ww,
+% \@@_*_symbolic_o:ww,
+% \@@_symbolic_/_symbolic_o:ww,
+% \@@_symbolic_/_o:ww,
+% \@@_/_symbolic_o:ww,
+% \@@_symbolic_^_symbolic_o:ww,
+% \@@_symbolic_^_o:ww,
+% \@@_^_symbolic_o:ww,
+% \@@_symbolic_|_symbolic_o:ww,
+% \@@_symbolic_|_o:ww,
+% \@@_|_symbolic_o:ww,
+% \@@_symbolic_&_symbolic_o:ww,
+% \@@_symbolic_&_o:ww,
+% \@@_&_symbolic_o:ww,
+% }
+% \begin{macrocode}
+\cs_set:Npn \@@_tmp:w #1#2
+ {
+ \cs_new_nopar:cpn
+ { @@_symbolic_#2_symbolic_o:ww }
+ { \@@_symbolic_binary_o:Nww #1 }
+ \cs_new_eq:cc
+ { @@_symbolic_#2 _o:ww }
+ { @@_symbolic_#2_symbolic_o:ww }
+ \cs_new_eq:cc
+ { @@ _#2_symbolic_o:ww }
+ { @@_symbolic_#2_symbolic_o:ww }
+ }
+\tl_map_inline:nn { + - * / ^ & | }
+ { \exp_args:Nc \@@_tmp:w { @@_#1_o:ww } {#1} }
+% \end{macrocode}
+% \end{macro}
+% \end{@makeother}
+% \end{@makeother}
+% \end{@makeother}
+%
+% \subsection{Applying prefix functions to expressions}
+%
+% \begin{macro}[aux, EXP]{\@@_symbolic_unary_o:NNw}
+% Used when applying infix operators to expressions.
+% \begin{macrocode}
+\cs_new:Npn \@@_symbolic_unary_o:NNw #1#2#3; @
+ {
+ \@@_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: }
+ \s_@@_symbolic \@@_symbolic_chk:w
+ \@@_types_unary:NNw #1#2 , { #3; } ;
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {
+% \@@_symbolic_acos_o:w ,
+% \@@_symbolic_acsc_o:w ,
+% \@@_symbolic_asec_o:w ,
+% \@@_symbolic_asin_o:w ,
+% \@@_symbolic_cos_o:w ,
+% \@@_symbolic_cot_o:w ,
+% \@@_symbolic_csc_o:w ,
+% \@@_symbolic_exp_o:w ,
+% \@@_symbolic_ln_o:w ,
+% \@@_symbolic_not_o:w ,
+% \@@_symbolic_sec_o:w ,
+% \@@_symbolic_set_sign_o:w ,
+% \@@_symbolic_sin_o:w ,
+% \@@_symbolic_tan_o:w ,
+% }
+% \begin{macrocode}
+\tl_map_inline:nn
+ {
+ {acos} {acsc} {asec} {asin} {cos} {cot} {csc} {exp} {ln}
+ {not} {sec} {set_sign} {sin} {sqrt} {tan}
+ }
+ {
+ \cs_new_nopar:cpe { @@_symbolic_#1_o:w }
+ {
+ \exp_not:N \@@_symbolic_unary_o:NNw
+ \exp_not:c { @@_#1_o:w }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Conversions}
+%
+% \begin{macro}[EXP]
+% {
+% \@@_symbolic_to_decimal:w,
+% \@@_symbolic_to_int:w,
+% \@@_symbolic_to_scientific:w
+% }
+% \begin{macro}[EXP]{\@@_symbolic_convert:wnnN}
+% Symbolic expressions cannot be converted to decimal, integer, or
+% scientific notation unless they can be reduced to
+% \begin{macrocode}
+\cs_set_protected:Npn \@@_tmp:w #1#2#3
+ {
+ \cs_new_nopar:cpn { @@_symbolic_to_#1:w }
+ {
+ \exp_after:wN \@@_symbolic_convert:wnnN
+ \exp:w \exp_end_continue_f:w
+ \@@_exp_after_symbolic_f:nw { { #2 } { fp_to_#1 } #3 }
+ }
+ }
+\@@_tmp:w { decimal } { 0 } \@@_to_decimal_dispatch:w
+\@@_tmp:w { int } { 0 } \@@_to_int_dispatch:w
+\@@_tmp:w { scientific } { nan } \@@_to_scientific_dispatch:w
+\cs_new:Npn \@@_symbolic_convert:wnnN #1#2; #3#4#5
+ {
+ \str_if_eq:nnTF {#1} { \s_@@_symbolic }
+ { \@@_invalid_operation:nnw {#3} {#4} #1#2; }
+ { #5 #1#2; }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {\@@_symbolic_cs_arg_to_fn:NN, \@@_symbolic_op_arg_to_fn:nN}
+% \begin{macrocode}
+\cs_new:Npn \@@_symbolic_cs_arg_to_fn:NN #1
+ {
+ \exp_args:Nf \@@_symbolic_op_arg_to_fn:nN
+ { \@@_types_cs_to_op:N #1 }
+ }
+\cs_new:Npn \@@_symbolic_op_arg_to_fn:nN #1#2
+ {
+ \str_case:nnF { #1 #2 }
+ {
+ { not ? } { ! }
+ { set_sign 0 } { abs }
+ { set_sign 2 } { - }
+ }
+ {
+ \token_if_eq_meaning:NNTF #2 \use_ii:nn
+ { #1 d } {#1}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_symbolic_to_tl:w}
+% \begin{macro}[rEXP]
+% {
+% \@@_symbolic_unary_to_tl:NNw,
+% \@@_symbolic_binary_to_tl:Nww
+% }
+% Converting a symbolic expression to a token list is possible.
+% \begin{macrocode}
+\cs_new:Npn \@@_symbolic_to_tl:w
+ \s_@@_symbolic \@@_symbolic_chk:w #1#2, #3#4;
+ {
+ \str_case:nnTF {#1}
+ {
+ { \@@_types_unary:NNw } { \@@_symbolic_unary_to_tl:NNw }
+ { \@@_types_binary:Nww } { \@@_symbolic_binary_to_tl:Nww }
+ { \@@_function_o:w } { \@@_symbolic_function_to_tl:Nw }
+ }
+ { #2, #3 @ }
+ { \tl_to_str:n {#2} }
+ }
+\cs_new:Npn \@@_symbolic_unary_to_tl:NNw #1#2 , #3 @
+ {
+ \use:e
+ {
+ \@@_symbolic_cs_arg_to_fn:NN #1#2
+ ( \@@_to_tl_dispatch:w #3 )
+ }
+ }
+\cs_new:Npn \@@_symbolic_binary_to_tl:Nww #1, #2; #3; @
+ {
+ \use:e
+ {
+ ( \@@_to_tl_dispatch:w #2; )
+ \@@_types_cs_to_op:N #1
+ ( \@@_to_tl_dispatch:w #3; )
+ }
+ }
+\cs_new:Npn \@@_symbolic_function_to_tl:Nw #1, #2@
+ {
+ \use:e
+ {
+ \@@_types_cs_to_op:N #1
+ ( \@@_array_to_clist:n {#2} )
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Identifiers}
+%
+% Functions defined here are not necessarily tied to symbolic
+% expressions.
+%
+% \begin{macro}[TF]{\@@_id_if_invalid:n}
+% \begin{macro}[EXP]{\@@_id_if_invalid_aux:N}
+% If |#1| contains a space, it is not a valid identifier. Otherwise,
+% loop through letters in |#1|: if it is not a letter, break the loop
+% and return \texttt{true}. If the end of the loop is reached
+% without finding any non-letter, return \texttt{false}.
+% \begin{macrocode}
+\prg_new_protected_conditional:Npnn
+ \@@_id_if_invalid:n #1 { T , F , TF }
+ {
+ \tl_if_empty:nTF {#1}
+ { \prg_return_true: }
+ {
+ \tl_if_in:onTF { \tl_to_str:n {#1} } { ~ }
+ { \prg_return_true: }
+ {
+ \exp_after:wN \@@_id_if_invalid_aux:N \tl_to_str:n {#1}
+ { ? \prg_break:n \prg_return_false: }
+ \prg_break_point:
+ }
+ }
+ }
+\cs_new:Npn \@@_id_if_invalid_aux:N #1
+ {
+ \use_none:n #1
+ \int_compare:nF { `a <= `#1 <= `z }
+ {
+ \int_compare:nF { `A <= `#1 <= `Z }
+ { \prg_break:n \prg_return_true: }
+ }
+ \@@_id_if_invalid_aux:N
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Declaring variables and assigning values}
+%
+% \begin{macro}[EXP]{\@@_variable_o:w}
+% We do not use \cs{exp_last_unbraced:Nv} to extract the value of
+% |\l__fp_variable_#1_fp| because in \cs{fp_set_variable:nn} we define
+% this \texttt{fp} variable to be something which \texttt{f}-expands
+% to an actual floating point, rather than a genuine floating point.
+% \begin{macrocode}
+\cs_new:Npn \@@_variable_o:w #1 @ #2
+ {
+ \fp_if_exist:cTF { l_@@_variable_#1_fp }
+ {
+ \exp_last_unbraced:Nf \@@_exp_after_array_f:w
+ { \use:c { l_@@_variable_#1_fp } } \s_@@_expr_stop
+ \exp_after:wN \exp_stop_f: #2
+ }
+ {
+ \token_if_eq_meaning:NNTF #2 \prg_do_nothing:
+ {
+ \s_@@_symbolic \@@_symbolic_chk:w
+ \@@_variable_o:w #1 , { } ;
+ }
+ {
+ \exp_after:wN \s_@@_symbolic
+ \exp_after:wN \@@_symbolic_chk:w
+ \exp_after:wN \@@_variable_o:w
+ \exp:w
+ \@@_exp_after_symbolic_loop:N #1
+ { , \exp:w \use_none:nn }
+ \exp_after:wN \exp_end:
+ \exp_after:wN { \exp_after:wN } \exp_after:wN ;
+ #2
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+% {\@@_variable_set_parsing:Nn, \@@_variable_set_parsing_aux:NNn}
+% \begin{macrocode}
+\cs_new:Npn \@@_variable_set_parsing:Nn #1#2
+ {
+ \cs_set_nopar:Npn \@@_tmp:w
+ {
+ \@@_exp_after_symbolic_f:nw { \@@_parse_infix:NN }
+ \s_@@_symbolic \@@_symbolic_chk:w
+ \@@_variable_o:w #2 , { } ;
+ }
+ \exp_args:NNc \@@_variable_set_parsing_aux:NNn #1
+ { @@_parse_word_#2:N } {#2}
+ }
+\cs_new:Npn \@@_variable_set_parsing_aux:NNn #1#2#3
+ {
+ \cs_if_eq:NNF #2 \@@_tmp:w
+ {
+ \cs_if_exist:NTF #2
+ {
+ \msg_warning:nnnn
+ { fp } { id-used-elsewhere } {#3} { variable }
+ #1 #2 \@@_tmp:w
+ }
+ {
+ \cs_new_eq:NN #2 \scan_stop: % to declare the function
+ #1 #2 \@@_tmp:w
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fp_clear_variable:n}
+% \begin{macro}{\@@_clear_variable:n}
+% \begin{macrocode}
+\cs_new_protected:Npn \fp_clear_variable:n #1
+ {
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
+ { \exp_args:No \@@_clear_variable:n { \tl_to_str:n {#1} } }
+ }
+\cs_new_protected:Npn \@@_clear_variable:n #1
+ {
+ \cs_undefine:c { l_@@_variable_#1_fp }
+ \@@_variable_set_parsing:Nn \cs_set_eq:NN {#1}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fp_new_variable:n}
+% \begin{macro}{\@@_new_variable:n}
+% Check that |#1| is a valid identifier. If the identifier is already
+% in use, complain. Then set |\__fp_parse_word_#1:N| to use
+% |\__fp_variable_o:w|.
+% \begin{macrocode}
+\cs_new_protected:Npn \fp_new_variable:n #1
+ {
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
+ { \exp_args:No \@@_new_variable:n { \tl_to_str:n {#1} } }
+ }
+\cs_new_protected:Npn \@@_new_variable:n #1
+ {
+ \cs_if_exist:cT { @@_parse_word_#1:N }
+ {
+ \msg_error:nnn
+ { fp } { id-already-defined } {#1}
+ \cs_undefine:c { @@_parse_word_#1:N }
+ \cs_undefine:c { l_@@_variable_#1_fp }
+ }
+ \@@_variable_set_parsing:Nn \cs_gset_eq:NN {#1}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fp_set_variable:nn}
+% \begin{macro}{\@@_set_variable:nn}
+% Refuse invalid identifiers. If the variable does not exist yet,
+% define it just as in \cs{fp_new_variable:n} (but without unnecessary
+% checks). Then evaluate~|#2|. If the result contains the
+% identifier~|#1|, we would later get a loop in cases such as
+% \begin{quote}
+% \cs{fp_set_variable:nn} |{A}| |{A}|\\
+% \cs{fp_show:n} |{A}|
+% \end{quote}
+% To detect this, define |\l__fp_variable_#1_fp| to raise an
+% internal flag and evaluate to \texttt{nan}. Then re-evaluate
+% \cs{l_@@_symbolic_fp}, and store the result in~|#1|. If the flag is
+% raised, |#1|~was present in \cs{l_@@_symbolic_fp}. In all cases,
+% the |#1|-free result ends up in |\l__fp_variable_#1_fp|.
+% \begin{macrocode}
+\flag_new:n { @@_symbolic }
+\cs_new_protected:Npn \fp_set_variable:nn #1
+ {
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
+ { \exp_args:No \@@_set_variable:nn { \tl_to_str:n {#1} } }
+ }
+\cs_new_protected:Npn \@@_set_variable:nn #1#2
+ {
+ \@@_variable_set_parsing:Nn \cs_set_eq:NN {#1}
+ \fp_set:Nn \l_@@_symbolic_fp {#2}
+ \cs_set_nopar:cpn { l_@@_variable_#1_fp }
+ { \flag_ensure_raised:n { @@_symbolic } \c_nan_fp }
+ \flag_clear:n { @@_symbolic }
+ \fp_set:cn { l_@@_variable_#1_fp } { \l_@@_symbolic_fp }
+ \flag_if_raised:nT { @@_symbolic }
+ {
+ \msg_error:nneee { fp } { id-loop }
+ { \tl_to_str:n {#1} }
+ { \tl_to_str:n {#2} }
+ { \fp_to_tl:N \l_@@_symbolic_fp }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Messages}
+%
+% \begin{macrocode}
+\msg_new:nnnn { fp } { id-invalid }
+ { Floating~point~identifier~'#1'~invalid. }
+ {
+ LaTeX~has~been~asked~to~create~a~new~floating~point~identifier~'#1'~
+ but~this~may~only~contain~ASCII~letters.
+ }
+\msg_new:nnnn { fp } { id-already-defined }
+ { Floating~point~identifier~'#1'~already~defined. }
+ {
+ LaTeX~has~been~asked~to~create~a~new~floating~point~identifier~'#1'~
+ but~this~name~has~already~been~used~elsewhere.
+ }
+\msg_new:nnnn { fp } { id-used-elsewhere }
+ { Floating~point~identifier~'#1'~already~used~for~something~else. }
+ {
+ LaTeX~has~been~asked~to~create~a~new~floating~point~identifier~'#1'~
+ but~this~name~is~used,~and~is~not~a~user-defined~#2.
+ }
+\msg_new:nnnn { fp } { id-loop }
+ { Variable~'#1'~used~in~the~definition~of~'#1'. }
+ {
+ LaTeX~has~been~asked~to~set~the~floating~point~identifier~'#1'~
+ to~the~expression~'#2'.~Evaluating~this~expression~yields~'#3',~
+ which~contains~'#1'~itself.
+ }
+% \end{macrocode}
+%
+% \subsection{Road-map}
+%
+% The following functions are not implemented: |min|, |max|, |?:|,
+% comparisons, |round|, |atan|, |acot|.
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 674ecdfd2d..1bdece9ba7 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-traps.dtx
%
-% Copyright (C) 2011-2014,2016-2023 The LaTeX Project
+% Copyright (C) 2011-2023 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index b7bc6c19ce..c49383a178 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-types.dtx b/macros/latex/contrib/l3kernel/l3fp-types.dtx
new file mode 100644
index 0000000000..693cec5ccc
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3fp-types.dtx
@@ -0,0 +1,184 @@
+% \iffalse
+%
+%% File l3fp-types.dtx (C) Copyright 2012-2015,2017,2018,2020,2021,2023 The LaTeX Project
+%
+% It 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 file is part of the "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full]{l3doc}
+\usepackage{amsmath}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \pkg{l3fp-types} package\\ Floating point types^^A
+% }
+%
+% \author{^^A
+% The \LaTeX{} Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2023-10-23}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3fp-types} implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=fp>
+% \end{macrocode}
+%
+% \subsection{Support for types}
+%
+% Despite lack of documentation, the \pkg{l3fp} internals support types.
+% Each additional type must define
+% \begin{itemize}
+% \item |\s__fp_|\meta{type} and |\__fp_|\meta{type}|_chk:w|;
+% \item |\__fp_exp_after_|\meta{type}|_f:nw|;
+% \item |\__fp_|\meta{type}|_to_|\meta{out}|:w| for \meta{out} among
+% |decimal|, |scientific|, |tl|;
+% \end{itemize}
+% and may define
+% \begin{itemize}
+% \item |\__fp_|\meta{type}|_to_int:w| and |\__fp_|\meta{type}|_to_dim:w|;
+% \item |\__fp_|\meta{op}|_|\meta{type}|_o:w| for any of the \meta{op}
+% that the type implements, among |acos|, |acsc|, |asec|, |asin|,
+% |cos|, |cot|, |csc|, |exp|, |ln|, |not|, |sec|, |set_sign|, |sin|,
+% |tan|;
+% \item |\__fp_|\meta{type_1}|_|\meta{op}|_|\meta{type_2}|_o:ww| for
+% \meta{op} among |^*/-+&|\verb"|" and for every pair of types;
+% \item |\__fp_|\meta{type_1}|_bcmp_|\meta{type_2}|:ww| for every
+% pair of types.
+% \end{itemize}
+% The latter is set up in \pkg{l3fp-logic}.
+%
+% \subsection{Dispatch according to the type}
+%
+% \begin{macro}[EXP]
+% {\@@_types_cs_to_op:N, \@@_types_cs_to_op_auxi:wwwn}
+% From |\__fp_|\meta{op}|_o:w| produce \meta{op}, otherwise~|?|.
+% \begin{macrocode}
+\cs_new:Npe \@@_types_cs_to_op:N #1
+ {
+ \exp_not:N \exp_after:wN \exp_not:N \@@_types_cs_to_op_auxi:wwwn
+ \exp_not:N \token_to_str:N #1 \s_@@_mark
+ \exp_not:N \@@_use_i_delimit_by_s_stop:nw
+ \tl_to_str:n { @@_ _o:w } \s_@@_mark
+ { \exp_not:N \@@_use_i_delimit_by_s_stop:nw ? }
+ \s_@@_stop
+ }
+\use:e
+ {
+ \cs_new:Npn \exp_not:N \@@_types_cs_to_op_auxi:wwwn
+ #1 \tl_to_str:n { @@_ } #2
+ \tl_to_str:n { _o:w } #3 \s_@@_mark #4 { #4 {#2} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_types_unary:NNw}
+% \begin{macro}[EXP]
+% {\@@_types_unary_auxi:nNw, \@@_types_unary_auxii:NnNw}
+% \begin{syntax}
+% \cs{@@_types_unary:NNw} |\__fp_|\meta{function}|_o:w|
+% ~~\meta{token} \meta{operand} |@|
+% \end{syntax}
+% \begin{macrocode}
+\cs_new:Npn \@@_types_unary:NNw #1
+ {
+ \exp_args:Nf \@@_types_unary_auxi:nNw
+ { \@@_types_cs_to_op:N #1 }
+ }
+\cs_new:Npn \@@_types_unary_auxi:nNw #1#2#3
+ {
+ \exp_after:wN \@@_types_unary_auxii:NnNw
+ \cs:w @@_#1 \@@_type_from_scan:N #3 _o:w \cs_end:
+ {#1}
+ #2#3
+ }
+\cs_new:Npn \@@_types_unary_auxii:NnNw #1#2#3
+ {
+ \token_if_eq_meaning:NNTF \scan_stop: #1
+ { \@@_invalid_operation_o:nw {#2} }
+ { #1 #3 }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_types_binary:Nww}
+% \begin{macro}[EXP]
+% {\@@_types_binary_auxi:Nww, \@@_types_binary_auxii:NNww}
+% \begin{syntax}
+% \cs{@@_types_binary:Nww} |\__fp_|\meta{binop}|_o:ww|
+% ~~\meta{operand_1} \meta{operand_2} |@|
+% \end{syntax}
+% \begin{macrocode}
+\cs_new:Npn \@@_types_binary:Nww #1
+ {
+ \exp_last_unbraced:Nf \@@_types_binary_auxi:Nww
+ { \@@_types_cs_to_op:N #1 }
+ }
+\cs_new:Npn \@@_types_binary_auxi:Nww #1#2#3; #4#5; @
+ {
+ \exp_after:wN \@@_types_binary_auxii:NNww
+ \cs:w
+ @@
+ \@@_type_from_scan:N #2
+ _#1
+ \@@_type_from_scan:N #4
+ _o:ww
+ \cs_end:
+ #1 #2#3; #4#5;
+ }
+\cs_new:Npn \@@_types_binary_auxii:NNww #1#2
+ {
+ \token_if_eq_meaning:NNTF \scan_stop: #1
+ { \@@_invalid_operation_o:Nww #2 }
+ {#1}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 60a7b7534f..578d568978 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -658,6 +658,138 @@
% the \meta{code} should make use of the \meta{tl~var}.
% \end{function}
%
+% \section{Symbolic expressions}
+%
+% Floating point expressions support variables: these can only be set locally,
+% so act like standard \cs[no-index]{l_\dots} variables.
+% \begin{quote}\let\obeyedline=\newline\obeylines^^A
+% \cs{fp_new_variable:n} |{ A }|
+% \cs{fp_set:Nn} \cs{l_tmpb_fp} |{ 1 * sin(A) + 3**2 }|
+% \cs{fp_show:n} |{| \cs{l_tmpb_fp} |}|
+% \cs{fp_show:N} \cs{l_tmpb_fp}
+% \cs{fp_set_variable:nn} |{ A }| |{ pi/2 }|
+% \cs{fp_show:n} |{| \cs{l_tmpb_fp} |}|
+% \cs{fp_show:N} \cs{l_tmpb_fp}
+% \cs{fp_set_variable:nn} |{ A }| |{ 0 }|
+% \cs{fp_show:n} |{| \cs{l_tmpb_fp} |}|
+% \cs{fp_show:N} \cs{l_tmpb_fp}
+% \end{quote}
+% defines~|A| to be a variable, then defines \cs{l_tmpb_fp} to stand for
+% |1*sin(A)+9| (note that |3**2| is evaluated, but the |1*|~product is
+% not simplified away). Until \cs{l_tmpb_fp} is changed, \cs{fp_show:N}
+% \cs{l_tmpb_fp} will show |((1*sin(A))+9)| regardless of the value
+% of~|A|. The next step defines~|A| to be equal to~|pi/2|: then
+% \cs{fp_show:n} |{| \cs{l_tmpb_fp} |}| will evaluate \cs{l_tmpb_fp} and
+% show~|10|. We then redefine~|A| to be~|0|: since \cs{l_tmpb_fp} still
+% stands for |1*sin(A)+9|, the value shown is then~|9|. Variables can
+% be set with \cs{fp_set_variable:nn} to arbitrary floating point
+% expressions including other variables.
+%
+% \begin{function}[added = 2023-10-19]{\fp_new_variable:n}
+% \begin{syntax}
+% \cs{fp_new_variable:n} \Arg{identifier}
+% \end{syntax}
+% Declares the \meta{identifier} as a variable, which allows it to be
+% used in floating point expressions. For instance,
+% \begin{quote}
+% \cs{fp_new_variable:n} |{ A }| \\
+% \cs{fp_show:n} |{ A**2 - A + 1 }|
+% \end{quote}
+% shows |(((A^2)-A)+1)|. If the declaration was missing, the parser
+% would complain about an \enquote{\texttt{Unknown fp word 'A'}}. The
+% \meta{identifier} must consist entirely of Latin letters among
+% |[a-zA-Z]|.
+% \end{function}
+%
+% \begin{function}[added = 2023-10-19]{\fp_set_variable:nn}
+% \begin{syntax}
+% \cs{fp_set_variable:nn} \Arg{identifier} \Arg{fp expr}
+% \end{syntax}
+% Defines the \meta{identifier} to stand in any further expression for
+% the result of evaluating the \meta{floating point expression} as
+% much as possible. The result may contain other variables, which are
+% then replaced by their values if they have any. For instance,
+% \begin{quote}\let\obeyedline=\newline\obeylines^^A
+% \cs{fp_new_variable:n} |{ A }|
+% \cs{fp_new_variable:n} |{ B }|
+% \cs{fp_new_variable:n} |{ C }|
+% \cs{fp_set_variable:nn} |{ A } { 3 }|
+% \cs{fp_set_variable:nn} |{ C } { A ** 2 + B * 1 }|
+% \cs{fp_show:n} |{ C + 4 }|
+% \cs{fp_set_variable:nn} |{ A } { 4 }|
+% \cs{fp_show:n} |{ C + 4 }|
+% \end{quote}
+% shows |((9+(B*1))+4)| twice: changing the value of~|A| to~|4| does
+% not alter~|C| because |A|~was replaced by its value~|3| when
+% evaluating |A**2+B*1|.
+% \end{function}
+%
+% \begin{function}[added = 2023-10-19]{\fp_clear_variable:n}
+% \begin{syntax}
+% \cs{fp_clear_variable:n} \Arg{identifier}
+% \end{syntax}
+% Removes any value given by \cs{fp_set_variable:nn} to the variable
+% with this \meta{identifier}. For instance,
+% \begin{quote}\let\obeyedline=\newline\obeylines^^A
+% \cs{fp_new_variable:n} |{ A }|
+% \cs{fp_set_variable:nn} |{ A } { 3 }|
+% \cs{fp_show:n} |{ A ^ 2 }|
+% \cs{fp_clear_variable:n} |{ A }|
+% \cs{fp_show:n} |{ A ^ 2 }|
+% \end{quote}
+% shows~|9|, then~|(A^2)|.
+% \end{function}
+%
+% \section{User-defined functions}
+%
+% It is possible to define new user functions which can be used inside
+% the argument to \cs{fp_eval:n}, etc. These functions may take one or
+% more named arguments, and should be implemented using expansion methods
+% only.
+%
+% \begin{function}[added = 2023-10-19]{\fp_new_function:n}
+% \begin{syntax}
+% \cs{fp_new_function:n} \Arg{identifier}
+% \end{syntax}
+% Declares the \meta{identifier} as a function, which allows it to be
+% used in floating point expressions. For instance,
+% \begin{quote}
+% \cs{fp_new_function:n} |{ foo }| \\
+% \cs{fp_show:n} |{ foo ( 1 + 2 , foo(3), A ) ** 2 } }|
+% \end{quote}
+% shows |(foo(3, foo(3), A))^(2)|. If the declaration was missing,
+% the parser would complain about an \enquote{\texttt{Unknown fp word 'foo'}}.
+% The \meta{identifier} must consist entirely of Latin letters |[a-zA-Z]|.
+% \end{function}
+%
+% \begin{function}[added = 2023-10-19]{\fp_set_function:nnn}
+% \begin{syntax}
+% \cs{fp_set_function:nnn} \Arg{identifier} \Arg{vars} \Arg{fp expr}
+% \end{syntax}
+% Defines the \meta{identifier} to stand in any further expression for
+% the result of evaluating the \meta{floating point expression}, with
+% the \meta{identifier} accepting the \meta{vars} (a comma list).
+% The result may contain other functions, which are
+% then replaced by their results if they have any. For instance,
+% \begin{quote}
+% \cs{fp_new_function:n} |{ foo }| \\
+% \cs{fp_set_function:nnn} |{ npow } { a,b } { a**b }| \\
+% \cs{fp_show:n} |{ npow(16,0.25) } }|
+% \end{quote}
+% shows |2|. The names of the \meta{vars} must
+% consist entirely of Latin letters |[a-zA-Z]|, but are otherwise not
+% restricted: in particular, they are independent of any variables
+% declared by \cs{fp_new_variable:n}.
+% \end{function}
+%
+% \begin{function}[added = 2023-10-19]{\fp_clear_function:n}
+% \begin{syntax}
+% \cs{fp_clear_function:n} \Arg{identifier}
+% \end{syntax}
+% Removes any definition given by \cs{fp_set_function:nnn} to the function
+% with this \meta{identifier}.
+% \end{function}
+%
% \section{Some useful constants, and scratch variables}
%
% \begin{variable}[added = 2012-05-08, module = fp]{\c_zero_fp, \c_minus_zero_fp}
@@ -1417,7 +1549,7 @@
% \begin{function}[EXP, added = 2012-09-26, tested = m3fp-convert003]
% {\fp_max:nn, \fp_min:nn}
% \begin{syntax}
-% \cs{fp_max:nn} \Arg{fp expression 1} \Arg{fp expression 2}
+% \cs{fp_max:nn} \Arg{fp expr_1} \Arg{fp expr_2}
% \end{syntax}
% Evaluates the \meta{fp exprs} as described for
% \cs{fp_eval:n} and leaves the resulting larger (\texttt{max}) or
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 9929135baa..36d84a593d 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index e012e191d2..c1dc697e71 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -94,7 +94,7 @@
% \int_show:n { \l_my_tl + \l_my_int * 3 - ( 3 + 4 * 5 ) }
% \end{verbatim}
% show the same result $-6$ because \cs[no-index]{l_my_tl} expands to
-% the integer denotation~|5| while the integer variable \cs{l_my_int}
+% the integer denotation~|5| while the integer variable \cs[no-index]{l_my_int}
% takes the value~$4$. As the \meta{integer expression} is fully
% expanded from left to right during evaluation, fully expandable and
% restricted-expandable functions can both be used, and \cs{exp_not:n}
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 10458ad602..cbfdc48666 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index d517f72a22..ce3ab20970 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 95ddcd0a38..9fea120c91 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -385,10 +385,10 @@
% \begin{syntax}
% \meta{key} .legacy_if_set:n = \meta{switch}
% \end{syntax}
-% Defines \meta{key} to set legacy \cs{if} \meta{switch} to \meta{value}
+% Defines \meta{key} to set legacy \cs[no-index]{if\meta{switch}} to \meta{value}
% (which must be either \enquote{\texttt{true}} or \enquote{\texttt{false}}).
% The \meta{switch} is the name of the switch \emph{without the leading
-% \cs{if}}.
+% \texttt{if}}.
%
% The \texttt{inverse} versions will set the \meta{switch} to the logical
% opposite of the \meta{value}.
@@ -740,16 +740,12 @@
% \end{function}
%
% \begin{variable}[updated = 2020-02-08]
-% {\l_keys_key_str, \l_keys_path_str, \l_keys_value_tl}
+% {\l_keys_path_str, \l_keys_key_str, \l_keys_value_tl}
% For each key processed, information of the full \emph{path} of the
% key, the \emph{name} of the key and the \emph{value} of the key is
% available within two string and one token list variables.
% These may be used within the code of the key.
%
-% The \emph{value} is everything after the \texttt{=}, which may be
-% empty if no value was given. This is stored in \cs{l_keys_value_tl}, and
-% is not processed in any way by \cs{keys_set:nn}.
-%
% The \emph{path} of the key is a \enquote{full} description of the key,
% and is unique for each key. It consists of the module and full key name,
% thus for example
@@ -767,6 +763,10 @@
% \texttt{/}, and thus is not unique. In the preceding examples, both keys
% have name \texttt{key-a} despite having different paths. This information
% is stored in \cs{l_keys_key_str}.
+%
+% The \emph{value} is everything after the \texttt{=}, which may be
+% empty if no value was given. This is stored in \cs{l_keys_value_tl}, and
+% is not processed in any way by \cs{keys_set:nn}.
% \end{variable}
%
% \section{Handling of unknown keys}
@@ -788,10 +788,10 @@
% {
% \keys_set_known:nn, \keys_set_known:nV,
% \keys_set_known:nv, \keys_set_known:ne,
-% \keys_set_known:no
+% \keys_set_known:no,
% \keys_set_known:nnN, \keys_set_known:nVN,
% \keys_set_known:nvN, \keys_set_known:neN,
-% \keys_set_known:noN
+% \keys_set_known:noN,
% \keys_set_known:nnnN, \keys_set_known:nVnN,
% \keys_set_known:nvnN, \keys_set_known:nenN,
% \keys_set_known:nonN
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index 92b8cdb971..78adefa2da 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -60,7 +60,7 @@
% \cs{legacy_if:nTF} \Arg{name} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \LaTeXe{}/plain \TeX{} conditional (generated by \tn{newif})
-% if \texttt{true} or \texttt{false} and branches accordingly. The
+% is \texttt{true} or \texttt{false} and branches accordingly. The
% \meta{name} of the conditional should \emph{omit} the leading \texttt{if}.
% \end{function}
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index c7832c892d..c0ec4f69a0 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index 4feb4115a1..382aab68dd 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index f299b21579..e85262831f 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 7f0effadb8..b5c1844444 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index 5508abfcc9..4d0a8ae25d 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 13e40ab8bd..7342946a43 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index f80fc2a519..331b9cf1b4 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index c33cbf0cac..b860cf5ff4 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index ffe3a03c6c..7e616f5a29 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index e25a8421bb..77334146c0 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 4159983011..1193adac7e 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index 8d74fc5968..ae70965ba3 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index d4c60d81f7..d9791e7186 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index 7b5dcec9cc..366041530a 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index 1cfeef5b06..410448f654 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index cd159d28f3..127946bd80 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index f583b393ca..9c6172caaf 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv
index 710da8edbe..8b4ead7bf3 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.csv
+++ b/macros/latex/contrib/l3kernel/l3prefixes.csv
@@ -22,6 +22,7 @@ backslash,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,h
bearwear,bearwear,Ulrike Fischer,https://github.com/u-fischer/bearwear,https://github.com/u-fischer/bearwear,https://github.com/u-fischer/bearwear/issues,2020-04-24,2020-04-24,
beuron,beuron,Keno Wehr,https://ctan.org/pkg/beuron,,,2021-08-23,2021-08-23,
bitset,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2020-12-26,2020-12-26,
+block,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2023-10-17,2023-10-17,
bool,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
box,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
bxjh,BXjaholiday,Takuto Asakura,https://github.com/wtsnjp/BXjaholiday,https://github.com/wtsnjp/BXjaholiday.git,https://github.com/wtsnjp/BXjaholiday/issues,2018-02-02,2019-02-02,
@@ -92,6 +93,7 @@ fltr,newlfm,Paul Thomson,,,,2013-01-29,2013-01-29,
fmdug,dashundergaps,Frank Mittelbach,https://www.latex-project.org/,https://github.com/FrankMittelbach/fmitex-dashundergaps.git,https://github.com/FrankMittelbach/fmitex-dashundergaps/issues,2018-06-24,2021-10-11,
fmuft,unicodefonttable,Frank Mittelbach,https://www.latex-project.org/,https://github.com/FrankMittelbach/fmitex-unicodefonttable.git,https://github.com/FrankMittelbach/fmitex-unicodefonttable/issues,2020-02-17,2021-10-11,
fmwao,widows-and-orphans,Frank Mittelbach,https://www.latex-project.org/,https://github.com/FrankMittelbach/fmitex-widows-and-orphans.git,https://github.com/FrankMittelbach/fmitex-widows-and-orphans/issues,2018-09-26,2018-09-26,
+fnote,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2023-10-17,2023-10-17,
fnpct,fnpct,Clemens Niederberger,https://github.com/cgnieder/fnpct/,https://github.com/cgnieder/fnpct.git,https://github.com/cgnieder/fnpct/issues,2013-03-16,2020-04-14,
fontsizes,fontsizes,Julien Rivaud,,,,,2018-06-13,
fontspec,fontspec,Will Robertson,https://github.com/wspr/fontspec,https://github.com/wspr/fontspec.git,https://github.com/wspr/fontspec/issues,2013-03-16,2013-03-16,
@@ -227,6 +229,8 @@ silly,sillypage,Paulo Cereda,https://github.com/cereda/sillypage,https://github.
siunitx,siunitx,Joseph Wright,https://github.com/josephwright/siunitx,https://github.com/josephwright/siunitx.git,https://github.com/josephwright/siunitx/issues,2012-11-04,2012-11-04,
skel,skeldoc,Magnus Lie Hetland,https://github.com/mlhetland/skeldoc.sty,https://github.com/mlhetland/skeldoc.sty.git,https://github.com/mlhetland/skeldoc.sty/issues,2021-01-04,2021-01-04,
skip,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
+slcd,se2thesis,Stephan Lukasczyk,https://github.com/se2p/se2thesis,https://github.com/se2p/se2thesis,https://github.com/se2p/se2thesis/issues,2023-10-18,2023-10-18,
+socket,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2023-10-17,2023-10-17,
sort,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2017-02-13,
space,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
starray,starray,Alceu Frigeri,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray/issues,2023-05-15,2023-05-15,
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 5d41b138f0..de3f86bdb7 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index e3f09d90d3..c676e7343e 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -581,7 +581,7 @@
% \begin{syntax}
% \cs{bool_until_do:Nn} \meta{boolean} \Arg{code}
% \end{syntax}
-% This function firsts checks the logical value of the \meta{boolean}.
+% This function first checks the logical value of the \meta{boolean}.
% If it is \texttt{false} the \meta{code} is placed in the input stream
% and expanded. After the completion of the \meta{code} the truth
% of the \meta{boolean} is re-evaluated. The process then loops
@@ -592,7 +592,7 @@
% \begin{syntax}
% \cs{bool_while_do:Nn} \meta{boolean} \Arg{code}
% \end{syntax}
-% This function firsts checks the logical value of the \meta{boolean}.
+% This function first checks the logical value of the \meta{boolean}.
% If it is \texttt{true} the \meta{code} is placed in the input stream
% and expanded. After the completion of the \meta{code} the truth
% of the \meta{boolean} is re-evaluated. The process then loops
@@ -627,7 +627,7 @@
% \begin{syntax}
% \cs{bool_until_do:nn} \Arg{boolean expression} \Arg{code}
% \end{syntax}
-% This function firsts checks the logical value of the
+% This function first checks the logical value of the
% \meta{boolean expression} (as described for \cs{bool_if:nTF}).
% If it is \texttt{false} the \meta{code} is placed in the input stream
% and expanded. After the completion of the \meta{code} the truth
@@ -639,7 +639,7 @@
% \begin{syntax}
% \cs{bool_while_do:nn} \Arg{boolean expression} \Arg{code}
% \end{syntax}
-% This function firsts checks the logical value of the
+% This function first checks the logical value of the
% \meta{boolean expression} (as described for \cs{bool_if:nTF}).
% If it is \texttt{true} the \meta{code} is placed in the input stream
% and expanded. After the completion of the \meta{code} the truth
@@ -808,7 +808,8 @@
% \cs{prg_break:n} \Arg{code} \ldots{} \cs{prg_break_point:}
% \end{syntax}
% Breaks a recursion which has no \meta{ending code} and which is not
-% a user-breakable mapping (see for instance \cs{prop_get:Nn}), and
+% a user-breakable mapping (see for instance
+% implementation of \cs{int_step_function:nnnN}), and
% inserts the \meta{code} in the input stream.
% \end{function}
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 69cafe1cff..8fb7648af5 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -60,7 +60,7 @@
% Each entry in a property list must have a unique \meta{key}: if an entry is
% added to a property list which already contains the \meta{key} then the new
% entry overwrites the existing one. The \meta{keys} are compared on a
-% string basis, using the same method as \cs{str_if_eq:nn}.
+% string basis, using the same method as \cs{str_if_eq:nnTF}.
%
% Property lists are intended for storing key-based information for use within
% code. This is in contrast to key--value lists, which are a form of
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index 1a1e1aaf1f..d515229582 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index 87dfcec47b..cd7bd9f33b 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -921,7 +921,7 @@
% \item Optimize states with a single \cs[no-index]{__regex_action_free:n}.
% \item Optimize the use of \cs[no-index]{__regex_action_success:} by inserting it
% in state $2$ directly instead of having an extra transition.
-% \item Optimize the use of \cs{int_step_...} functions.
+% \item Optimize the use of \cs[no-index]{int_step_...} functions.
% \item Groups don't capture within regexes for csnames; optimize and
% document.
% \item Better \enquote{show} for anchors, properties, and catcode tests.
@@ -930,7 +930,7 @@
% numbers.
% \item Instead of checking whether the character is special or
% alphanumeric using its character code, check if it is special in
-% regexes with \cs{cs_if_exist} tests.
+% regexes with \cs[no-index]{cs_if_exist} tests.
% \end{itemize}
%
% The following features are likely to be implemented at some point
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index 9572261d46..56662dc623 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 0371b7ecad..3130ef8597 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 6837e7fb0e..0a987712f3 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index f4bfaf2c2c..c4fc416d42 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index 300a779bd1..99c0f980a5 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -752,7 +752,7 @@
% \item Case changing text for typesetting: see the
% \cs[index=text_lowercase:n]{text_lowercase:n(n)},
% \cs[index=text_uppercase:n]{text_uppercase:n(n)} and
-% \cs[index=text_titlecase:n]{text_titlecase:n(n)} functions which
+% \cs[index=text_titlecase_all:n]{text_titlecase_(all|once):n(n)} functions which
% correctly deal with context-dependence and other factors appropriate
% to text case changing.
% \end{itemize}
@@ -1138,7 +1138,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_if_eq:nn}
-% String comparisons rely on the primitive \cs[index=pdfstrcmp]{(pdf)strcmp},
+% String comparisons rely on the primitive \tn[index=pdfstrcmp]{(pdf)strcmp},
% so we define a new name for it.
% \begin{macrocode}
\cs_new_eq:NN \@@_if_eq:nn \tex_strcmp:D
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 16d307e028..945554d2f4 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index 29c2f76864..995a5d3668 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-10}
+\date{Released 2023-10-23}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index 5c4fe8ad1d..f2db75a12a 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index dbb6d858b4..d93e7bc8dc 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-10}
+\date{Released 2023-10-23}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 5e57590767..577e4daa19 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -299,7 +299,7 @@
% enabled. This returns false if unrestricted shell escape is
% enabled. Unrestricted shell escape is not considered a superset
% of restricted shell escape in this case. To find whether any
-% shell escape is enabled use \cs{sys_if_shell:}.
+% shell escape is enabled use \cs{sys_if_shell:TF}.
% \end{function}
%
% \begin{function}[added = 2017-05-27]
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index ebe1f75c91..ffdbc76f29 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index bd166834ac..25a510d9e6 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-10}
+\date{Released 2023-10-23}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index 0e20a797f0..e34e9043a5 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -77,16 +77,17 @@
% {
% \text_lowercase:n,
% \text_uppercase:n,
-% \text_titlecase:n,
+% \text_titlecase_all:n,
% \text_titlecase_first:n
% }
% \begin{macro}[EXP]
% {
% \text_lowercase:nn,
% \text_uppercase:nn,
-% \text_titlecase:nn,
+% \text_titlecase_all:nn,
% \text_titlecase_first:nn
% }
+% \begin{macro}[EXP]{\@@_change_case:nnn}
% The user level functions here are all wrappers around the internal
% functions for case changing.
% \begin{macrocode}
@@ -94,31 +95,34 @@
{ \@@_change_case:nnn { lower } { } {#1} }
\cs_new:Npn \text_uppercase:n #1
{ \@@_change_case:nnn { upper } { } {#1} }
-\cs_new:Npn \text_titlecase:n #1
+\cs_new:Npn \text_titlecase_all:n #1
{ \@@_change_case:nnn { title } { } {#1} }
\cs_new:Npn \text_titlecase_first:n #1
- { \@@_change_case:nnn { titleonly } { } {#1} }
+ { \@@_change_case:nnnn { title } { break } { } {#1} }
\cs_new:Npn \text_lowercase:nn #1#2
{ \@@_change_case:nnn { lower } {#1} {#2} }
\cs_new:Npn \text_uppercase:nn #1#2
{ \@@_change_case:nnn { upper } {#1} {#2} }
-\cs_new:Npn \text_titlecase:nn #1#2
+\cs_new:Npn \text_titlecase_all:nn #1#2
{ \@@_change_case:nnn { title } {#1} {#2} }
\cs_new:Npn \text_titlecase_first:nn #1#2
- { \@@_change_case:nnn { titleonly } {#1} {#2} }
+ { \@@_change_case:nnnn { title } { break } {#1} {#2} }
+\cs_new:Npn \@@_change_case:nnn #1#2#3
+ { \@@_change_case:nnnn {#1} {#1} {#2} {#3} }
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}[EXP]
% {
-% \@@_change_case:nnn ,
-% \@@_change_case_auxi:nnn ,
-% \@@_change_case_auxii:nnn
+% \@@_change_case:nnnn ,
+% \@@_change_case_auxi:nnnn ,
+% \@@_change_case_auxii:nnnn
% }
-% \begin{macro}[EXP]{\@@_change_case_BCP:nnn}
-% \begin{macro}[EXP]{\@@_change_case_BCP:nnw}
-% \begin{macro}[EXP]{\@@_change_case_BCP:nnnnw}
+% \begin{macro}[EXP]{\@@_change_case_BCP:nnnn}
+% \begin{macro}[EXP]{\@@_change_case_BCP:nnnw}
+% \begin{macro}[EXP]{\@@_change_case_BCP:nnnnnw}
% \begin{macro}[EXP]
% {
% \@@_change_case_store:n, \@@_change_case_store:o,
@@ -128,74 +132,69 @@
% \begin{macro}[EXP]{\@@_change_case_store:nw}
% \begin{macro}[EXP]{\@@_change_case_result:n}
% \begin{macro}[EXP]{\@@_change_case_end:w}
-% \begin{macro}[EXP]{\@@_change_case_loop:nnw}
-% \begin{macro}[EXP]{\@@_change_case_break:w}
+% \begin{macro}[EXP]{\@@_change_case_loop:nnnw}
+% \begin{macro}[EXP]{\@@_change_case_break:w, \@@_change_case_break_aux:w}
% \begin{macro}[EXP]
% {
-% \@@_change_case_group_lower:nnn ,
-% \@@_change_case_group_upper:nnn ,
-% \@@_change_case_group_title:nnn ,
-% \@@_change_case_group_titleonly:nnn
+% \@@_change_case_group_lower:nnnn ,
+% \@@_change_case_group_upper:nnnn ,
+% \@@_change_case_group_title:nnnn
% }
-% \begin{macro}[EXP]{\@@_change_case_space:nnw}
% \begin{macro}[EXP]
-% {\@@_change_case_N_type:nnN, \@@_change_case_N_type_aux:nnN}
-% \begin{macro}[EXP]{\@@_change_case_N_type:nnnN}
-% \begin{macro}[EXP]{\@@_change_case_math_search:nnNNN}
-% \begin{macro}[EXP]{\@@_change_case_math_loop:nnNw}
-% \begin{macro}[EXP]{\@@_change_case_math_N_type:nnNN}
-% \begin{macro}[EXP]{\@@_change_case_math_group:nnNn}
-% \begin{macro}[EXP]{\@@_change_case_math_space:nnNw}
-% \begin{macro}[EXP]{\@@_change_case_cs_check:nnN}
-% \begin{macro}[EXP]{\@@_change_case_exclude:nnN}
-% \begin{macro}[EXP]{\@@_change_case_exclude:nnnN}
-% \begin{macro}[EXP]{\@@_change_case_exclude:nnNN}
-% \begin{macro}[EXP]{\@@_change_case_exclude:nnNw}
-% \begin{macro}[EXP]{\@@_change_case_exclude:nnNnn}
-% \begin{macro}[EXP]{\@@_change_case_replace:nnN}
-% \begin{macro}[EXP]{\@@_change_case_replace:nnn, \@@_change_case_replace:vnn}
-% \begin{macro}[EXP]{\@@_change_case_switch:nnN}
+% {\@@_change_case_space:nnnw, \@@_change_case_space_break:nnnw}
% \begin{macro}[EXP]
-% {
-% \@@_change_case_switch_lower:nnNnnnn ,
-% \@@_change_case_switch_upper:nnNnnnn ,
-% \@@_change_case_switch_title:nnNnnnn ,
-% \@@_change_case_switch_titleonly:nnNnnnn
-% }
+% {\@@_change_case_N_type:nnnN, \@@_change_case_N_type_aux:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_N_type:nnnnN}
+% \begin{macro}[EXP]{\@@_change_case_math_search:nnnNNN}
+% \begin{macro}[EXP]{\@@_change_case_math_loop:nnnNw}
+% \begin{macro}[EXP]{\@@_change_case_math_N_type:nnnNN}
+% \begin{macro}[EXP]{\@@_change_case_math_group:nnnNn}
+% \begin{macro}[EXP]{\@@_change_case_math_space:nnnNw}
+% \begin{macro}[EXP]{\@@_change_case_cs_check:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_exclude:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_exclude:nnnnN}
+% \begin{macro}[EXP]{\@@_change_case_exclude:nnnNN}
+% \begin{macro}[EXP]{\@@_change_case_exclude:nnnNw}
+% \begin{macro}[EXP]{\@@_change_case_exclude:nnnNnn}
+% \begin{macro}[EXP]{\@@_change_case_replace:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_replace:nnnn, \@@_change_case_replace:vnnn}
+% \begin{macro}[EXP]{\@@_change_case_switch:nnnN}
% \begin{macro}[EXP]
% {
-% \@@_change_case_letterlike_lower:nnN ,
-% \@@_change_case_letterlike_upper:nnN ,
-% \@@_change_case_letterlike_title:nnN ,
-% \@@_change_case_letterlike_titleonly:nnN
+% \@@_change_case_switch_lower:nnnNnnnn ,
+% \@@_change_case_switch_upper:nnnNnnnn ,
+% \@@_change_case_switch_title:nnnNnnnn
% }
-% \begin{macro}[EXP]{\@@_change_case_letterlike:nnnnN}
+% \begin{macro}[EXP]{\@@_change_case_skip:nnw}
+% \begin{macro}[EXP]{\@@_change_case_skip_N_type:nnN}
+% \begin{macro}[EXP]{\@@_change_case_skip_group:nnn}
+% \begin{macro}[EXP]{\@@_change_case_skip_space:nnw}
% \begin{macro}[EXP]
% {
-% \@@_change_case_custom_lower:nnn ,
-% \@@_change_case_custom_title:nnn ,
-% \@@_change_case_custom_upper:nnn ,
-% \@@_change_case_custom_titleonly:nnn
+% \@@_change_case_letterlike_lower:nnnN ,
+% \@@_change_case_letterlike_upper:nnnN ,
+% \@@_change_case_letterlike_title:nnnN
% }
-% \begin{macro}[EXP]{\@@_change_case_custom:nnn}
+% \begin{macro}[EXP]{\@@_change_case_letterlike:nnnnnN}
% \begin{macro}[EXP]
% {
-% \@@_change_case_codepoint_lower:nnn ,
-% \@@_change_case_codepoint_upper:nnn ,
-% \@@_change_case_codepoint_title:nnn ,
-% \@@_change_case_codepoint_titleonly:nnn
+% \@@_change_case_custom_lower:nnnn ,
+% \@@_change_case_custom_title:nnnn ,
+% \@@_change_case_custom_upper:nnnn
% }
-% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnn}
-% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnw}
-% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_custom:nnnnn}
% \begin{macro}[EXP]
% {
-% \@@_change_case_codepoint_title:nn ,
-% \@@_change_case_codepoint_titleonly:nn
+% \@@_change_case_codepoint_lower:nnnn ,
+% \@@_change_case_codepoint_upper:nnnn ,
+% \@@_change_case_codepoint_title:nnnn
% }
-% \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnnn}
-% \begin{macro}[EXP]
-% {\@@_change_case_codepoint:nnnn, \@@_change_case_codepoint_aux:nnnn}
+% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnn}
+% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnw}
+% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnN}
+% \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnn}
+% \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnnnn}
+% \begin{macro}[EXP]{\@@_change_case_codepoint:nnnnn}
% \begin{macro}[EXP]{\@@_change_case_codepoint:nn}
% \begin{macro}[EXP]
% {
@@ -203,13 +202,15 @@
% \@@_change_case_codepoint:fnn ,
% \@@_change_case_codepoint_aux:nnn
% }
+% \begin{macro}[EXP]{\@@_change_case_codepoint_aux:nnn}
+% \begin{macro}[EXP]{\@@_change_case_codepoint_aux:nn}
+% \begin{macro}[EXP]{\@@_change_case_catcode:nn}
% \begin{macro}[EXP]
% {
-% \@@_change_case_next_lower:nn ,
-% \@@_change_case_next_upper:nn ,
-% \@@_change_case_next_title:nn ,
-% \@@_change_case_next_titleonly:nn ,
-% \@@_change_case_next_end:nn
+% \@@_change_case_next_lower:nnn ,
+% \@@_change_case_next_upper:nnn ,
+% \@@_change_case_next_title:nnn ,
+% \@@_change_case_next_end:nnn
% }
% As for the expansion code, the business end of case changing is the
% handling of \texttt{N}-type tokens. First, we expand the input fully
@@ -231,45 +232,50 @@
% wrap the entire result in exactly one \cs{exp_not:n}, or rather in the
% kernel version.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case:nnn #1#2#3
+\cs_new:Npn \@@_change_case:nnnn #1#2#3#4
{
\__kernel_exp_not:w \exp_after:wN
{
\exp:w
- \exp_args:Ne \@@_change_case_auxi:nnn
- { \text_expand:n {#3} }
- {#1} {#2}
+ \exp_args:Ne \@@_change_case_auxi:nnnn
+ { \text_expand:n {#4} }
+ {#1} {#2} {#3}
}
}
-\cs_new:Npn \@@_change_case_auxi:nnn #1#2#3
- { \exp_args:No \@@_change_case_BCP:nnn { \tl_to_str:n {#3} } {#1} {#2} }
-\cs_new:Npe \@@_change_case_BCP:nnn #1#2#3
+\cs_new:Npn \@@_change_case_auxi:nnnn #1#2#3#4
{
- \exp_not:N \@@_change_case_BCP:nnw
- {#2} {#3} #1 \tl_to_str:n { -x- -x- } \exp_not:N \q_@@_stop
+ \exp_args:No \@@_change_case_BCP:nnnn
+ { \tl_to_str:n {#4} } {#1} {#2} {#3}
+ }
+\cs_new:Npe \@@_change_case_BCP:nnnn #1#2#3#4
+ {
+ \exp_not:N \@@_change_case_BCP:nnnw
+ {#2} {#3} {#4} #1 \tl_to_str:n { -x- -x- } \exp_not:N \q_@@_stop
}
\use:e
{
- \cs_new:Npn \exp_not:N \@@_change_case_BCP:nnw
- #1#2#3 \tl_to_str:n { -x- } #4 \tl_to_str:n { -x- } #5
+ \cs_new:Npn \exp_not:N \@@_change_case_BCP:nnnw
+ #1#2#3#4 \tl_to_str:n { -x- } #5 \tl_to_str:n { -x- } #6
\exp_not:N \q_@@_stop
}
- { \@@_change_case_BCP:nnnnw {#1} {#2} {#4} {#3} #3 - - \q_@@_stop }
-\cs_new:Npn \@@_change_case_BCP:nnnnw #1#2#3#4#5 - #6 - #7 \q_@@_stop
+ { \@@_change_case_BCP:nnnnnw {#1} {#2} {#3} {#5} {#4} #4 - \q_@@_stop }
+\cs_new:Npn \@@_change_case_BCP:nnnnnw #1#2#3#4#5#6 - #7 \q_@@_stop
{
- \cs_if_exist:cTF { @@_change_case_ #2 _ #5 -x- #3 :nnnn }
- { \@@_change_case_auxii:nnn {#1} {#2} { #5 -x- #3 } }
+ \bool_lazy_or:nnTF
+ { \cs_if_exist_p:c { @@_change_case_ #2 _ #6 -x- #4 :nnnnn } }
+ { \tl_if_exist_p:c { l_@@_ #2 case_special_ #6 -x- #4 _tl } }
+ { \@@_change_case_auxii:nnnn {#1} {#2} {#3} { #6 -x- #4 } }
{
- \cs_if_exist:cTF { @@_change_case_ #2 _ #5 :nnnn }
- { \@@_change_case_auxii:nnn {#1} {#2} {#5} }
- { \@@_change_case_auxii:nnn {#1} {#2} {#4} }
+ \cs_if_exist:cTF { @@_change_case_ #2 _ #6 :nnnnn }
+ { \@@_change_case_auxii:nnnn {#1} {#2} {#3} {#6} }
+ { \@@_change_case_auxii:nnnn {#1} {#2} {#3} {#5} }
}
}
-\cs_new:Npn \@@_change_case_auxii:nnn #1#2#3
+\cs_new:Npn \@@_change_case_auxii:nnnn #1#2#3#4
{
\group_align_safe_begin:
- \cs_if_exist_use:c { @@_change_case_boundary_ #2 _ #3 :Nnnw }
- \@@_change_case_loop:nnw {#2} {#3} #1
+ \cs_if_exist_use:c { @@_change_case_boundary_ #2 _ #4 :Nnnnw }
+ \@@_change_case_loop:nnnw {#2} {#3} {#4} #1
\q_@@_recursion_tail \q_@@_recursion_stop
\@@_change_case_result:n { }
}
@@ -290,20 +296,23 @@
% \end{macrocode}
% The main loop is the standard \texttt{tl action} type.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_loop:nnw #1#2#3 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_loop:nnnw #1#2#3#4 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \@@_change_case_N_type:nnN }
+ \tl_if_head_is_N_type:nTF {#4}
+ { \@@_change_case_N_type:nnnN }
{
- \tl_if_head_is_group:nTF {#3}
- { \use:c { @@_change_case_group_ #1 :nnn } }
- { \@@_change_case_space:nnw }
+ \tl_if_head_is_group:nTF {#4}
+ { \use:c { @@_change_case_group_ #1 :nnnn } }
+ { \@@_change_case_space:nnnw }
}
- {#1} {#2} #3 \q_@@_recursion_stop
+ {#1} {#2} {#3} #4 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_break:w #1 \q_@@_recursion_tail \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_break:w
+ { \@@_change_case_break_aux:w \prg_do_nothing: }
+\cs_new:Npn \@@_change_case_break_aux:w
+ #1 \q_@@_recursion_tail \q_@@_recursion_stop
{
- \@@_change_case_store:n {#1}
+ \@@_change_case_store:o {#1}
\@@_change_case_end:w
}
% \end{macrocode}
@@ -315,53 +324,47 @@
% having too much testing, we use a two-step process here to allow the
% titlecase functions to be separate.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_group_lower:nnn #1#2#3
+\cs_new:Npn \@@_change_case_group_lower:nnnn #1#2#3#4
{
\@@_change_case_store:o
{
\exp_after:wN
{
\exp:w
- \@@_change_case_auxii:nnn {#3} {#1} {#2}
+ \@@_change_case_auxii:nnnn {#4} {#1} {#2} {#3}
}
}
- \@@_change_case_loop:nnw {#1} {#2}
+ \@@_change_case_loop:nnnw {#1} {#2} {#3}
}
-\cs_new_eq:NN \@@_change_case_group_upper:nnn
- \@@_change_case_group_lower:nnn
-\cs_new:Npn \@@_change_case_group_title:nnn #1#2#3
+\cs_new_eq:NN \@@_change_case_group_upper:nnnn
+ \@@_change_case_group_lower:nnnn
+\cs_new:Npn \@@_change_case_group_title:nnnn #1#2#3#4
{
\@@_change_case_store:o
{
\exp_after:wN
{
\exp:w
- \@@_change_case_auxii:nnn {#3} {#1} {#2}
+ \@@_change_case_auxii:nnnn {#4} {#1} {#2} {#3}
}
}
- \@@_change_case_loop:nnw { lower } {#2}
- }
-\cs_new:Npn \@@_change_case_group_titleonly:nnn #1#2#3
- {
- \@@_change_case_store:o
- {
- \exp_after:wN
- {
- \exp:w
- \@@_change_case_auxii:nnn {#3} {#1} {#2}
- }
- }
- \@@_change_case_break:w
+ \@@_change_case_skip:nnw {#2} {#3}
}
\use:e
{
- \cs_new:Npn \exp_not:N \@@_change_case_space:nnw #1#2 \c_space_tl
+ \cs_new:Npn \exp_not:N \@@_change_case_space:nnnw #1#2#3 \c_space_tl
}
{
\@@_change_case_store:n { ~ }
- \cs_if_exist_use:c { @@_change_case_boundary_ #1 _ #2 :Nnnw }
- \@@_change_case_loop:nnw {#1} {#2}
+ \cs_if_exist_use:cF { @@_change_case_space_ #2 :nnn }
+ {
+ \cs_if_exist_use:c { @@_change_case_boundary_ #1 _ #3 :Nnnnw }
+ \@@_change_case_loop:nnnw
+ }
+ {#2} {#2} {#3}
}
+\cs_new:Npn \@@_change_case_space_break:nnn #1#2#3
+ { \@@_change_case_break:w }
% \end{macrocode}
% The first step of handling \texttt{N}-type tokens is to filter out the
% end-of-loop. That has to be done separately from the first real step
@@ -371,85 +374,85 @@
% (i.e.~there is no assumption of \enquote{well-behaved} input in terms of
% math mode).
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_N_type:nnN #1#2#3
+\cs_new:Npn \@@_change_case_N_type:nnnN #1#2#3#4
{
- \@@_if_q_recursion_tail_stop_do:Nn #3
+ \@@_if_q_recursion_tail_stop_do:Nn #4
{ \@@_change_case_end:w }
- \@@_change_case_N_type_aux:nnN {#1} {#2} #3
+ \@@_change_case_N_type_aux:nnnN {#1} {#2} {#3} #4
}
-\cs_new:Npn \@@_change_case_N_type_aux:nnN #1#2#3
+\cs_new:Npn \@@_change_case_N_type_aux:nnnN #1#2#3#4
{
- \exp_args:NV \@@_change_case_N_type:nnnN
- \l_text_math_delims_tl {#1} {#2} #3
+ \exp_args:NV \@@_change_case_N_type:nnnnN
+ \l_text_math_delims_tl {#1} {#2} {#3} #4
}
-\cs_new:Npn \@@_change_case_N_type:nnnN #1#2#3#4
+\cs_new:Npn \@@_change_case_N_type:nnnnN #1#2#3#4#5
{
- \@@_change_case_math_search:nnNNN {#2} {#3} #4 #1
+ \@@_change_case_math_search:nnnNNN {#2} {#3} {#4} #5 #1
\q_@@_recursion_tail \q_@@_recursion_tail
\q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_math_search:nnNNN #1#2#3#4#5
+\cs_new:Npn \@@_change_case_math_search:nnnNNN #1#2#3#4#5#6
{
- \@@_if_q_recursion_tail_stop_do:Nn #4
- { \@@_change_case_cs_check:nnN {#1} {#2} #3 }
- \token_if_eq_meaning:NNTF #3 #4
+ \@@_if_q_recursion_tail_stop_do:Nn #5
+ { \@@_change_case_cs_check:nnnN {#1} {#2} {#3} #4 }
+ \token_if_eq_meaning:NNTF #4 #5
{
\@@_use_i_delimit_by_q_recursion_stop:nw
{
- \@@_change_case_store:n {#3}
- \@@_change_case_math_loop:nnNw {#1} {#2} #5
+ \@@_change_case_store:n {#4}
+ \@@_change_case_math_loop:nnnNw {#1} {#2} {#3} #6
}
}
- { \@@_change_case_math_search:nnNNN {#1} {#2} #3 }
+ { \@@_change_case_math_search:nnnNNN {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \@@_change_case_math_loop:nnNw #1#2#3#4 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_math_loop:nnnNw #1#2#3#4#5 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \@@_change_case_math_N_type:nnNN }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \@@_change_case_math_N_type:nnnNN }
{
- \tl_if_head_is_group:nTF {#4}
- { \@@_change_case_math_group:nnNn }
- { \@@_change_case_math_space:nnNw }
+ \tl_if_head_is_group:nTF {#5}
+ { \@@_change_case_math_group:nnnNn }
+ { \@@_change_case_math_space:nnnNw }
}
- {#1} {#2} #3 #4 \q_@@_recursion_stop
+ {#1} {#2} {#3} #4 #5 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_math_N_type:nnNN #1#2#3#4
+\cs_new:Npn \@@_change_case_math_N_type:nnnNN #1#2#3#4#5
{
- \@@_if_q_recursion_tail_stop_do:Nn #4
+ \@@_if_q_recursion_tail_stop_do:Nn #5
{ \@@_change_case_end:w }
- \@@_change_case_store:n {#4}
- \token_if_eq_meaning:NNTF #4 #3
- { \@@_change_case_loop:nnw {#1} {#2} }
- { \@@_change_case_math_loop:nnNw {#1} {#2} #3 }
+ \@@_change_case_store:n {#5}
+ \token_if_eq_meaning:NNTF #5 #4
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} }
+ { \@@_change_case_math_loop:nnnNw {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \@@_change_case_math_group:nnNn #1#2#3#4
+\cs_new:Npn \@@_change_case_math_group:nnnNn #1#2#3#4#5
{
- \@@_change_case_store:n { {#4} }
- \@@_change_case_math_loop:nnNw {#1} {#2} #3
+ \@@_change_case_store:n { {#5} }
+ \@@_change_case_math_loop:nnnNw {#1} {#2} {#3} #4
}
\use:e
{
- \cs_new:Npn \exp_not:N \@@_change_case_math_space:nnNw #1#2#3
+ \cs_new:Npn \exp_not:N \@@_change_case_math_space:nnnNw #1#2#3#4
\c_space_tl
}
{
\@@_change_case_store:n { ~ }
- \@@_change_case_math_loop:nnNw {#1} {#2} #3
+ \@@_change_case_math_loop:nnnNw {#1} {#2} {#3} #4
}
% \end{macrocode}
% Once potential math-mode cases are filtered out the next stage is to
% test if the token grabbed is a control sequence: the two routes the code
% may take are then very different.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_cs_check:nnN #1#2#3
+\cs_new:Npn \@@_change_case_cs_check:nnnN #1#2#3#4
{
- \token_if_cs:NTF #3
- { \@@_change_case_exclude:nnN {#1} {#2} }
+ \token_if_cs:NTF #4
+ { \@@_change_case_exclude:nnnN {#1} {#2} {#3} }
{
\@@_codepoint_process:nN
- { \use:c { @@_change_case_custom_ #1 :nnn } {#1} {#2} }
+ { \use:c { @@_change_case_custom_ #1 :nnnn } {#1} {#2} {#3} }
}
- #3
+ #4
}
% \end{macrocode}
% To deal with a control sequence there is first a need to test if it is
@@ -457,92 +460,115 @@
% done using a loop as for the other special cases. If a hit is found then
% the argument is grabbed and passed through as-is.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_exclude:nnN #1#2#3
+\cs_new:Npn \@@_change_case_exclude:nnnN #1#2#3#4
{
- \exp_args:Ne \@@_change_case_exclude:nnnN
+ \exp_args:Ne \@@_change_case_exclude:nnnnN
{
\exp_not:V \l_text_math_arg_tl
\exp_not:V \l_text_case_exclude_arg_tl
}
- {#1} {#2} #3
+ {#1} {#2} {#3} #4
}
-\cs_new:Npn \@@_change_case_exclude:nnnN #1#2#3#4
+\cs_new:Npn \@@_change_case_exclude:nnnnN #1#2#3#4#5
{
- \@@_change_case_exclude:nnNN {#2} {#3} #4 #1
+ \@@_change_case_exclude:nnnNN {#2} {#3} {#4} #5 #1
\q_@@_recursion_tail \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_exclude:nnNN #1#2#3#4
+\cs_new:Npn \@@_change_case_exclude:nnnNN #1#2#3#4#5
{
- \@@_if_q_recursion_tail_stop_do:Nn #4
- { \@@_change_case_replace:nnN {#1} {#2} #3 }
- \str_if_eq:nnTF {#3} {#4}
+ \@@_if_q_recursion_tail_stop_do:Nn #5
+ { \@@_change_case_replace:nnnN {#1} {#2} {#3} #4 }
+ \str_if_eq:nnTF {#4} {#5}
{
\@@_use_i_delimit_by_q_recursion_stop:nw
- { \@@_change_case_exclude:nnNw {#1} {#2} #3 }
+ { \@@_change_case_exclude:nnnNw {#1} {#2} {#3} #4 }
}
- { \@@_change_case_exclude:nnNN {#1} {#2} #3 }
+ { \@@_change_case_exclude:nnnNN {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \@@_change_case_exclude:nnNw #1#2#3#4#
- { \@@_change_case_exclude:nnNnn {#1} {#2} {#3} {#4} }
-\cs_new:Npn \@@_change_case_exclude:nnNnn #1#2#3#4#5
+\cs_new:Npn \@@_change_case_exclude:nnnNw #1#2#3#4#5#
+ { \@@_change_case_exclude:nnnNnn {#1} {#2} {#3} {#4} {#5} }
+\cs_new:Npn \@@_change_case_exclude:nnnNnn #1#2#3#4#5#6
{
- \tl_if_blank:nTF {#4}
- { \@@_change_case_store:n { #3 {#5} } }
+ \tl_if_blank:nTF {#5}
+ { \@@_change_case_store:n { #4 {#6} } }
{
\@@_change_case_store:o
{
- \exp_after:wN #3
- \exp:w \@@_change_case_auxii:nnn {#4} {#1} {#2}
- {#5}
+ \exp_after:wN #4
+ \exp:w \@@_change_case_auxii:nnnn {#5} {#1} {#2} {#3}
+ {#6}
}
}
- \@@_change_case_loop:nnw {#1} {#2}
+ \@@_change_case_loop:nnnw {#1} {#2} {#3}
}
% \end{macrocode}
% Deal with any specialist replacement for case changing.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_replace:nnN #1#2#3
+\cs_new:Npn \@@_change_case_replace:nnnN #1#2#3#4
{
- \cs_if_exist:cTF { l_@@_case_ \token_to_str:N #3 _tl }
+ \cs_if_exist:cTF { l_@@_case_ \token_to_str:N #4 _tl }
{
- \@@_change_case_replace:vnn
- { l_@@_case_ \token_to_str:N #3 _tl } {#1} {#2}
+ \@@_change_case_replace:vnnn
+ { l_@@_case_ \token_to_str:N #4 _tl } {#1} {#2} {#3}
}
- { \@@_change_case_switch:nnN {#1} {#2} #3 }
+ { \@@_change_case_switch:nnnN {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \@@_change_case_replace:nnn #1#2#3
- { \@@_change_case_loop:nnw {#2} {#3} #1 }
-\cs_generate_variant:Nn \@@_change_case_replace:nnn { v }
+\cs_new:Npn \@@_change_case_replace:nnnn #1#2#3#4
+ { \@@_change_case_loop:nnnw {#2} {#3} {#4} #1 }
+\cs_generate_variant:Nn \@@_change_case_replace:nnnn { v }
% \end{macrocode}
% Allow for manually-controlled case switching.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_switch:nnN #1#2#3
+\cs_new:Npn \@@_change_case_switch:nnnN #1#2#3#4
+ {
+ \cs_if_eq:NNTF #4 \text_case_switch:nnnn
+ { \use:c { @@_change_case_switch_ #1 :nnnNnnnn } }
+ { \use:c { @@_change_case_letterlike_ #1 :nnnN } }
+ {#1} {#2} {#3} #4
+ }
+\cs_new:Npn \@@_change_case_switch_lower:nnnNnnnn #1#2#3#4#5#6#7#8
{
- \cs_if_eq:NNTF #3 \text_case_switch:nnnn
- { \use:c { @@_change_case_switch_ #1 :nnNnnnn } }
- { \use:c { @@_change_case_letterlike_ #1 :nnN } }
- {#1} {#2} #3
+ \@@_change_case_store:n {#7}
+ \@@_change_case_loop:nnnw {#1} {#2} {#3}
}
-\cs_new:Npn \@@_change_case_switch_lower:nnNnnnn #1#2#3#4#5#6#7
+\cs_new:Npn \@@_change_case_switch_upper:nnnNnnnn #1#2#3#4#5#6#7#8
{
\@@_change_case_store:n {#6}
- \@@_change_case_loop:nnw {#1} {#2}
+ \@@_change_case_loop:nnnw {#1} {#2} {#3}
}
-\cs_new:Npn \@@_change_case_switch_upper:nnNnnnn #1#2#3#4#5#6#7
+\cs_new:Npn \@@_change_case_switch_title:nnnNnnnn #1#2#3#4#5#6#7#8
{
- \@@_change_case_store:n {#5}
- \@@_change_case_loop:nnw {#1} {#2}
+ \@@_change_case_store:n {#8}
+ \@@_change_case_skip:nnw {#2} {#3}
}
-\cs_new:Npn \@@_change_case_switch_title:nnNnnnn #1#2#3#4#5#6#7
+% \end{macrocode}
+% Skip over material quickly after titlecase-first-only initials
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case_skip:nnw #1#2#3 \q_@@_recursion_stop
{
- \@@_change_case_store:n {#7}
- \@@_change_case_loop:nnw {#1} {#2}
+ \tl_if_head_is_N_type:nTF {#3}
+ { \@@_change_case_skip_N_type:nnN }
+ {
+ \tl_if_head_is_group:nTF {#3}
+ { \@@_change_case_skip_group:nnn }
+ { \@@_change_case_skip_space:nnw }
+ }
+ {#1} {#2} #3 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_switch_titleonly:nnNnnnn #1#2#3#4#5#6#7
+\cs_new:Npn \@@_change_case_skip_N_type:nnN #1#2#3
{
- \@@_change_case_store:n {#7}
- \@@_change_case_break:w
+ \@@_if_q_recursion_tail_stop_do:Nn #3
+ { \@@_change_case_end:w }
+ \@@_change_case_store:n {#3}
+ \@@_change_case_skip:nnw {#1} {#2}
+ }
+\cs_new:Npn \@@_change_case_skip_group:nnn #1#2#3
+ {
+ \@@_change_case_store:n { {#3} }
+ \@@_change_case_skip:nnw {#1} {#2}
}
+\cs_new:Npn \@@_change_case_skip_space:nnw #1#2
+ { \@@_change_case_space:nnnw {#1} {#1} {#2} }
% \end{macrocode}
% Letter-like commands may still be present: they are set up using a simple
% lookup approach, so can easily be handled with no loop. If there is no
@@ -550,68 +576,64 @@
% are all available only in upper- and lowercase, so titlecasing maps to the
% uppercase version.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_letterlike_lower:nnN #1#2#3
- { \@@_change_case_letterlike:nnnnN {#1} {#1} {#1} {#2} #3 }
-\cs_new_eq:NN \@@_change_case_letterlike_upper:nnN
- \@@_change_case_letterlike_lower:nnN
-\cs_new:Npn \@@_change_case_letterlike_title:nnN #1#2#3
- { \@@_change_case_letterlike:nnnnN { upper } { lower } {#1} {#2} #3 }
-\cs_new:Npn \@@_change_case_letterlike_titleonly:nnN #1#2#3
- { \@@_change_case_letterlike:nnnnN { upper } { end } {#1} {#2} #3 }
-\cs_new:Npn \@@_change_case_letterlike:nnnnN #1#2#3#4#5
- {
- \cs_if_exist:cTF { c_@@_ #1 case_ \token_to_str:N #5 _tl }
+\cs_new:Npn \@@_change_case_letterlike_lower:nnnN #1#2#3#4
+ { \@@_change_case_letterlike:nnnnnN {#1} {#1} {#1} {#2} {#3} #4 }
+\cs_new_eq:NN \@@_change_case_letterlike_upper:nnnN
+ \@@_change_case_letterlike_lower:nnnN
+\cs_new:Npn \@@_change_case_letterlike_title:nnnN #1#2#3#4
+ { \@@_change_case_letterlike:nnnnnN { upper } { end } {#1} {#2} {#3} #4 }
+\cs_new:Npn \@@_change_case_letterlike:nnnnnN #1#2#3#4#5#6
+ {
+ \cs_if_exist:cTF { c_@@_ #1 case_ \token_to_str:N #6 _tl }
{
\@@_change_case_store:v
- { c_@@_ #1 case_ \token_to_str:N #5 _tl }
- \use:c { @@_change_case_next_ #2 :nn } {#2} {#4}
+ { c_@@_ #1 case_ \token_to_str:N #6 _tl }
+ \use:c { @@_change_case_next_ #2 :nnn } {#2} {#4} {#5}
}
{
- \@@_change_case_store:n {#5}
+ \@@_change_case_store:n {#6}
\cs_if_exist:cTF
{
c_@@_
\str_if_eq:nnTF {#1} { lower } { upper } { lower }
- case_ \token_to_str:N #5 _tl
+ case_ \token_to_str:N #6 _tl
}
- { \use:c { @@_change_case_next_ #2 :nn } {#2} {#4} }
- { \@@_change_case_loop:nnw {#3} {#4} }
+ { \use:c { @@_change_case_next_ #2 :nnn } {#2} {#4} {#5} }
+ { \@@_change_case_loop:nnnw {#3} {#4} {#5} }
}
}
% \end{macrocode}
% Check for a customised codepoint result.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_custom_lower:nnn #1#2#3
+\cs_new:Npn \@@_change_case_custom_lower:nnnn #1#2#3#4
{
- \@@_change_case_custom:nnnnn {#1} {#2} {#3} {#1}
- { \use:c { @@_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+ \@@_change_case_custom:nnnnnn {#1} {#1} {#2} {#3} {#4}
+ { \use:c { @@_change_case_codepoint_ #1 :nnnn } {#1} {#2} {#3} {#4} }
}
-\cs_new_eq:NN \@@_change_case_custom_upper:nnn
- \@@_change_case_custom_lower:nnn
-\cs_new:Npn \@@_change_case_custom_title:nnn #1#2#3
+\cs_new_eq:NN \@@_change_case_custom_upper:nnnn
+ \@@_change_case_custom_lower:nnnn
+\cs_new:Npn \@@_change_case_custom_title:nnnn #1#2#3#4
{
- \@@_change_case_custom:nnnnn { title } {#2} {#3} {#1}
+ \@@_change_case_custom:nnnnnn { title } {#1} {#2} {#3} {#4}
{
- \@@_change_case_custom:nnnnn { upper } {#2} {#3} {#1}
- { \use:c { @@_change_case_codepoint_ #1 :nnn } {#1} {#2} {#3} }
+ \@@_change_case_custom:nnnnnn { upper } {#1} {#2} {#3} {#4}
+ { \use:c { @@_change_case_codepoint_ #1 :nnnn } {#1} {#2} {#3} {#4} }
}
}
-\cs_new_eq:NN \@@_change_case_custom_titleonly:nnn
- \@@_change_case_custom_title:nnn
-\cs_new:Npn \@@_change_case_custom:nnnnn #1#2#3#4#5
+\cs_new:Npn \@@_change_case_custom:nnnnnn #1#2#3#4#5#6
{
- \tl_if_exist:cTF { l_@@_ #1 case _ \tl_to_str:n {#3} _ #2 _tl }
+ \tl_if_exist:cTF { l_@@_ #1 case _ \tl_to_str:n {#5} _ #4 _tl }
{
- \@@_change_case_replace:vnn
- { l_@@_ #1 case _ \tl_to_str:n {#3} _ #2 _tl } {#4} {#2}
+ \@@_change_case_replace:vnnn
+ { l_@@_ #1 case _ \tl_to_str:n {#5} _ #4 _tl } {#2} {#3} {#4}
}
{
- \tl_if_exist:cTF { l_@@_ #1 case _ \tl_to_str:n {#3} _tl }
+ \tl_if_exist:cTF { l_@@_ #1 case _ \tl_to_str:n {#5} _tl }
{
- \@@_change_case_replace:vnn
- { l_@@_ #1 case _ \tl_to_str:n {#3} _tl } {#4} {#2}
+ \@@_change_case_replace:vnnn
+ { l_@@_ #1 case _ \tl_to_str:n {#5} _tl } {#2} {#3} {#4}
}
- {#5}
+ {#6}
}
}
% \end{macrocode}
@@ -620,17 +642,17 @@
% is there the special case of a terminal sigma. If not, then we pass to
% a simple codepoint mapping.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_codepoint_lower:nnn #1#2#3
+\cs_new:Npn \@@_change_case_codepoint_lower:nnnn #1#2#3#4
{
- \cs_if_exist_use:cF { @@_change_case_lower_ #2 :nnnn }
- { \@@_change_case_lower_sigma:nnnn }
- {#1} {#1} {#2} {#3}
+ \cs_if_exist_use:cF { @@_change_case_lower_ #3 :nnnnn }
+ { \@@_change_case_lower_sigma:nnnnn }
+ {#1} {#1} {#2} {#3} {#4}
}
-\cs_new:Npn \@@_change_case_codepoint_upper:nnn #1#2#3
+\cs_new:Npn \@@_change_case_codepoint_upper:nnnn #1#2#3#4
{
- \cs_if_exist_use:cF { @@_change_case_upper_ #2 :nnnn }
- { \@@_change_case_codepoint:nnnn }
- {#1} {#1} {#2} {#3}
+ \cs_if_exist_use:cF { @@_change_case_upper_ #3 :nnnnn }
+ { \@@_change_case_codepoint:nnnnn }
+ {#1} {#1} {#2} {#3} {#4}
}
% \end{macrocode}
% If the current character is an uppercase sigma, the a check is made on the
@@ -638,91 +660,87 @@
% then there is a look-ahead phase: the logic here is simply based on letters
% or actives (to cover $8$-bit engines).
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_sigma:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_lower_sigma:nnnnn #1#2#3#4#5
{
- \@@_codepoint_compare:nNnTF {#4} = { "03A3 }
- { \@@_change_case_lower_sigma:nnnw {#2} }
- { \@@_change_case_codepoint:nnnn {#1} {#2} }
- {#3} {#4}
+ \@@_codepoint_compare:nNnTF {#5} = { "03A3 }
+ { \@@_change_case_lower_sigma:nnnnw {#2} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} }
+ {#3} {#4} {#5}
}
-\cs_new:Npn \@@_change_case_lower_sigma:nnnw #1#2#3#4 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_lower_sigma:nnnnw #1#2#3#4#5 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \@@_change_case_lower_sigma:nnnN {#3} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \@@_change_case_lower_sigma:nnnnN {#4} }
{
\@@_change_case_store:e
- { \codepoint_generate:nn { "03C2 } { \@@_char_catcode:N #3 } }
- \@@_change_case_loop:nnw
+ { \codepoint_generate:nn { "03C2 } { \@@_char_catcode:N #4 } }
+ \@@_change_case_loop:nnnw
}
- {#1} {#2} #4 \q_@@_recursion_stop
+ {#1} {#2} {#3} #5 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_lower_sigma:nnnN #1#2#3#4
+\cs_new:Npn \@@_change_case_lower_sigma:nnnnN #1#2#3#4#5
{
\@@_change_case_store:e
{
\bool_lazy_or:nnTF
- { \token_if_letter_p:N #4 }
+ { \token_if_letter_p:N #5 }
{
\bool_lazy_and_p:nn
- { \token_if_active_p:N #4 }
- { \int_compare_p:nNn {`#4} > { "80 } }
+ { \token_if_active_p:N #5 }
+ { \int_compare_p:nNn {`#5} > { "80 } }
}
{ \codepoint_generate:nn { "03C3 } { \@@_char_catcode:N #1 } }
{ \codepoint_generate:nn { "03C2 } { \@@_char_catcode:N #1 } }
}
- \@@_change_case_loop:nnw {#2} {#3} #4
+ \@@_change_case_loop:nnnw {#2} {#3} {#4} #5
}
% \end{macrocode}
% For titlecasing, we need to fully expand the new character to see if it
% is a letter (or active).
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_codepoint_title:nnn #1#2#3
+\cs_new:Npn \@@_change_case_codepoint_title:nnnn #1#2#3#4
{
\bool_if:NTF \l_text_titlecase_check_letter_bool
{
- \tl_if_single:nTF {#3}
+ \tl_if_single:nTF {#4}
{
\bool_lazy_or:nnTF
- { \token_if_letter_p:N #3 }
+ { \token_if_letter_p:N #4 }
{
\bool_lazy_and_p:nn
- { \token_if_active_p:N #3 }
- { ! \int_compare_p:nNn {`#3} < { "80 } }
+ { \token_if_active_p:N #4 }
+ { ! \int_compare_p:nNn {`#4} < { "80 } }
}
- { \use:c { @@_change_case_codepoint_ #1 :nn } }
- { \@@_change_case_codepoint_title:nnnn { title } {#1} }
+ { \@@_change_case_codepoint_title:nnn }
+ { \@@_change_case_codepoint_title:nnnnn { title } {#1} }
}
- { \use:c { @@_change_case_codepoint_ #1 :nn } }
+ { \@@_change_case_codepoint_title:nnn }
}
- { \use:c { @@_change_case_codepoint_ #1 :nn } }
- {#2} {#3}
+ { \@@_change_case_codepoint_title:nnn }
+ {#2} {#3} {#4}
}
-\cs_new_eq:NN \@@_change_case_codepoint_titleonly:nnn
- \@@_change_case_codepoint_title:nnn
-\cs_new:Npn \@@_change_case_codepoint_title:nn #1#2
- { \@@_change_case_codepoint_title:nnnn { title } { lower } {#1} {#2} }
-\cs_new:Npn \@@_change_case_codepoint_titleonly:nn #1#2
- { \@@_change_case_codepoint_title:nnnn { title } { end } {#1} {#2} }
-\cs_new:Npn \@@_change_case_codepoint_title:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_codepoint_title:nnn #1#2#3
+ { \@@_change_case_codepoint_title:nnnnn { title } { end } {#1} {#2} {#3} }
+\cs_new:Npn \@@_change_case_codepoint_title:nnnnn #1#2#3#4#5
{
- \cs_if_exist_use:cF { @@_change_case_title_ #3 :nnnn }
+ \cs_if_exist_use:cF { @@_change_case_title_ #4 :nnnnn }
{
- \cs_if_exist_use:cF { @@_change_case_upper_ #3 :nnnn }
- { \@@_change_case_codepoint:nnnn }
+ \cs_if_exist_use:cF { @@_change_case_upper_ #4 :nnnnn }
+ { \@@_change_case_codepoint:nnnnn }
}
- {#1} {#2} {#3} {#4}
+ {#1} {#2} {#3} {#4} {#5}
}
-\cs_new:Npn \@@_change_case_codepoint:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_codepoint:nnnnn #1#2#3#4#5
{
\bool_lazy_and:nnTF
- { \tl_if_single_p:n {#4} }
- { \token_if_active_p:N #4 }
- { \@@_change_case_store:n {#4} }
+ { \tl_if_single_p:n {#5} }
+ { \token_if_active_p:N #5 }
+ { \@@_change_case_store:n {#5} }
{
\@@_change_case_store:e
- { \@@_change_case_codepoint:nn {#1} {#4} }
+ { \@@_change_case_codepoint:nn {#1} {#5} }
}
- \use:c { @@_change_case_next_ #2 :nn } {#2} {#3}
+ \use:c { @@_change_case_next_ #2 :nnn } {#2} {#3} {#4}
}
\cs_new:Npn \@@_change_case_codepoint:nn #1#2
{
@@ -799,16 +817,14 @@
}
}
}
-\cs_new:Npn \@@_change_case_next_lower:nn #1#2
- { \@@_change_case_loop:nnw {#1} {#2} }
-\cs_new_eq:NN \@@_change_case_next_upper:nn
- \@@_change_case_next_lower:nn
-\cs_new_eq:NN \@@_change_case_next_title:nn
- \@@_change_case_next_lower:nn
-\cs_new_eq:NN \@@_change_case_next_titleonly:nn
- \@@_change_case_next_lower:nn
-\cs_new:Npn \@@_change_case_next_end:nn #1#2
- { \@@_change_case_break:w }
+\cs_new:Npn \@@_change_case_next_lower:nnn #1#2#3
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} }
+\cs_new_eq:NN \@@_change_case_next_upper:nnn
+ \@@_change_case_next_lower:nnn
+\cs_new_eq:NN \@@_change_case_next_title:nnn
+ \@@_change_case_next_lower:nnn
+\cs_new:Npn \@@_change_case_next_end:nnn #1#2#3
+ { \@@_change_case_skip:nnw {#2} {#3} }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -853,6 +869,13 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\text_declare_case_equivalent:Nn}
% Create equivalents to allow replacement.
@@ -914,6 +937,7 @@
{
\tl_clear_new:c { l_@@_ #2 case _ #1 _ #3 _tl }
\tl_set:cn { l_@@_ #2 case _ #1 _ #3 _ tl } {#4}
+ \tl_clear_new:c { l_@@_ #2 case_special_ #3 _tl }
}
% \end{macrocode}
% \end{macro}
@@ -944,55 +968,58 @@
% \end{macro}
%
% \begin{macro}[EXP]
-% {\@@_change_case_upper_de-x-eszett:nnnn, \@@_change_case_upper_de-alt:nnnn}
+% {
+% \@@_change_case_upper_de-x-eszett:nnnnn,
+% \@@_change_case_upper_de-alt:nnnnn
+% }
% A simple alternative version for German.
% \begin{macrocode}
-\cs_new:cpn { @@_change_case_upper_de-x-eszett:nnnn } #1#2#3#4
+\cs_new:cpn { @@_change_case_upper_de-x-eszett:nnnnn } #1#2#3#4#5
{
- \@@_codepoint_compare:nNnTF {#4} = { "00DF }
+ \@@_codepoint_compare:nNnTF {#5} = { "00DF }
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "1E9E }
- { \@@_change_case_catcode:nn {#4} { "1E9E } }
+ { \@@_change_case_catcode:nn {#5} { "1E9E } }
}
- \use:c { @@_change_case_next_ #2 :nn }
- {#2} {#3}
+ \use:c { @@_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new_eq:cc { @@_change_case_upper_de-alt:nnnn }
- { @@_change_case_upper_de-x-eszett:nnnn }
+\cs_new_eq:cc { @@_change_case_upper_de-alt:nnnnn }
+ { @@_change_case_upper_de-x-eszett:nnnnn }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]
% {
-% \@@_change_case_upper_el:nnnn ,
-% \@@_change_case_upper_el_aux:nnnn ,
-% \@@_change_case_upper_el-x-iota:nnnn
+% \@@_change_case_upper_el:nnnnn ,
+% \@@_change_case_upper_el-x-iota:nnnnn ,
+% \@@_change_case_upper_el_aux:nnnnn
% }
-% \begin{macro}[EXP]{\@@_change_case_upper_el:nnn}
-% \begin{macro}[EXP]{\@@_change_case_upper_el:nnnw}
+% \begin{macro}[EXP]{\@@_change_case_upper_el:nnnn}
+% \begin{macro}[EXP]{\@@_change_case_upper_el:nnnnw}
% \begin{macro}[EXP]
-% {\@@_change_case_upper_el:nnnN, \@@_change_case_upper_el_aux:nnnN}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_ypogegrammeni:nnnnnw}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_ypogegrammeni:nnnnnN}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_ypogegrammeni:nnnnnn}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_dialytika:nnn}
+% {\@@_change_case_upper_el:nnnnN, \@@_change_case_upper_el_aux:nnnnN}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_ypogegrammeni:nnnnnnw}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_ypogegrammeni:nnnnnnN}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_ypogegrammeni:nnnnnnn}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_dialytika:nnnn}
% \begin{macro}[EXP]{\@@_change_case_upper_el_dialytika:n}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_hiatus:nnnw}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_hiatus:nnnN}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_hiatus:nnnn}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_hiatus:nnnnw}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_hiatus:nnnnN}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_hiatus:nnnnn}
% \begin{macro}[EXP]
% {
% \@@_change_case_upper_el_ypogegrammeni:n ,
% \@@_change_case_upper_el-x-iota_ypogegrammeni:n
% }
% \begin{macro}[EXP]{\@@_change_case_upper_el_stress:nn}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_gobble:nnw}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_gobble:nnN}
-% \begin{macro}[EXP]{\@@_change_case_upper_el_gobble:nnn}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_gobble:nnnw}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_gobble:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_gobble:nnnn}
% \begin{macro}[EXP,noTF]
% {
% \@@_change_case_if_greek:n ,
@@ -1017,65 +1044,65 @@
% for \pdfTeX{} so is best left unchanged, and the latter has issues concerning
% how \texttt{LGR} outputs the input and output (differently!).
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_el:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_el:nnnnn #1#2#3#4#5
{
\bool_lazy_and:nnTF
- { \@@_change_case_if_greek_p:n {#4} }
+ { \@@_change_case_if_greek_p:n {#5} }
{
! \bool_lazy_or_p:nn
- { \@@_codepoint_compare_p:nNn {#4} = { "0374 } }
- { \@@_codepoint_compare_p:nNn {#4} = { "037E } }
+ { \@@_codepoint_compare_p:nNn {#5} = { "0374 } }
+ { \@@_codepoint_compare_p:nNn {#5} = { "037E } }
}
{
- \@@_change_case_if_greek_spacing_diacritic:nTF {#4}
+ \@@_change_case_if_greek_spacing_diacritic:nTF {#5}
{
- \@@_change_case_store:n {#4}
- \@@_change_case_loop:nnw
+ \@@_change_case_store:n {#5}
+ \@@_change_case_loop:nnnw
}
{
- \exp_args:Ne \@@_change_case_upper_el:nnn
+ \exp_args:Ne \@@_change_case_upper_el:nnnn
{
\codepoint_to_nfd:n
- { \@@_codepoint_from_chars:Nw #4 }
+ { \@@_codepoint_from_chars:Nw #5 }
}
}
- {#2} {#3}
+ {#2} {#3} {#4}
}
{
- \@@_codepoint_compare:nNnTF {#4} = { "0345 }
+ \@@_codepoint_compare:nNnTF {#5} = { "0345 }
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0399 }
{ \char_value_catcode:n { "0399 } }
}
- \@@_change_case_loop:nnw {#2} {#3}
+ \@@_change_case_loop:nnnw {#2} {#3} {#4}
}
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
}
-\cs_new_eq:cN { @@_change_case_upper_el-x-iota:nnnn }
- \@@_change_case_upper_el:nnnn
-\cs_new:Npn \@@_change_case_upper_el:nnn #1#2#3
+\cs_new_eq:cN { @@_change_case_upper_el-x-iota:nnnnn }
+ \@@_change_case_upper_el:nnnnn
+\cs_new:Npn \@@_change_case_upper_el:nnnn #1#2#3#4
{
\@@_codepoint_process:nN
- { \@@_change_case_upper_el:nnnw {#2} {#3} } #1
+ { \@@_change_case_upper_el:nnnnw {#2} {#3} {#4} } #1
}
% \end{macrocode}
% At this stage we have the first NFD codepoint as |#3|. What we need to know
% is whether after that we have another character, either from the NFD or
% directly in the input. If not, we store the changed character at this stage.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_el:nnnw #1#2#3#4 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_upper_el:nnnnw #1#2#3#4#5 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \@@_change_case_upper_el:nnnN {#3} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \@@_change_case_upper_el:nnnnN {#4} }
{
\@@_change_case_store:e
- { \@@_change_case_codepoint:nn { upper } {#3} }
- \@@_change_case_loop:nnw
+ { \@@_change_case_codepoint:nn { upper } {#4} }
+ \@@_change_case_loop:nnnw
}
- {#1} {#2} #4 \q_@@_recursion_stop
+ {#1} {#2} {#3} #5 \q_@@_recursion_stop
}
% \end{macrocode}
% Now, we check the detail of the next codepoint: again we filter out the
@@ -1085,99 +1112,99 @@
% to move any ypogegrammeni to after accents (in case the input is not
% normalised). The ypogegrammeni itself is handled separately.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_el:nnnN #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_el:nnnnN #1#2#3#4#5
{
- \token_if_cs:NTF #4
+ \token_if_cs:NTF #5
{
\@@_change_case_store:e
{ \@@_change_case_codepoint:nn { upper } {#1} }
- \@@_change_case_loop:nnw {#2} {#3} #4
+ \@@_change_case_loop:nnnw {#2} {#3} {#4} #5
}
{
\@@_change_case_if_takes_ypogegrammeni:nTF {#1}
{
- \@@_change_case_upper_el_ypogegrammeni:nnnnnw
- {#1} {#2} {#3} { } { } #4
+ \@@_change_case_upper_el_ypogegrammeni:nnnnnnw
+ {#1} {#2} {#3} {#4} { } { } #5
}
- { \@@_change_case_upper_el_aux:nnnN {#1} {#2} {#3} #4 }
+ { \@@_change_case_upper_el_aux:nnnnN {#1} {#2} {#3} {#4} #5 }
}
}
-\cs_new:Npn \@@_change_case_upper_el_ypogegrammeni:nnnnnw
- #1#2#3#4#5#6 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_upper_el_ypogegrammeni:nnnnnnw
+ #1#2#3#4#5#6#7 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#6}
+ \tl_if_head_is_N_type:nTF {#7}
{
- \@@_change_case_upper_el_ypogegrammeni:nnnnnN
- {#1} {#2} {#3} {#4} {#5}
+ \@@_change_case_upper_el_ypogegrammeni:nnnnnnN
+ {#1} {#2} {#3} {#4} {#5} {#6}
}
- { \@@_change_case_upper_el_aux:nnnN {#1} {#2} {#3} #4#5 }
- #6 \q_@@_recursion_stop
+ { \@@_change_case_upper_el_aux:nnnnN {#1} {#2} {#3} {#4} #5#6 }
+ #7 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_upper_el_ypogegrammeni:nnnnnN #1#2#3#4#5#6
+\cs_new:Npn \@@_change_case_upper_el_ypogegrammeni:nnnnnnN #1#2#3#4#5#6#7
{
- \token_if_cs:NTF #6
- { \@@_change_case_upper_el_aux:nnnN {#1} {#2} {#3} #4#5 }
+ \token_if_cs:NTF #7
+ { \@@_change_case_upper_el_aux:nnnnN {#1} {#2} {#3} {#4} #5#6 }
{
\@@_codepoint_process:nN
{
- \@@_change_case_upper_el_ypogegrammeni:nnnnnn
- {#1} {#2} {#3} {#4} {#5}
+ \@@_change_case_upper_el_ypogegrammeni:nnnnnnn
+ {#1} {#2} {#3} {#4} {#5} {#6}
}
}
- #6
+ #7
}
-\cs_new:Npn \@@_change_case_upper_el_ypogegrammeni:nnnnnn #1#2#3#4#5#6
+\cs_new:Npn \@@_change_case_upper_el_ypogegrammeni:nnnnnnn #1#2#3#4#5#6#7
{
- \@@_codepoint_compare:nNnTF {#6} = { "0345 }
+ \@@_codepoint_compare:nNnTF {#7} = { "0345 }
{
- \@@_change_case_upper_el_ypogegrammeni:nnnnnw
- {#1} {#2} {#3} {#4} {#6}
+ \@@_change_case_upper_el_ypogegrammeni:nnnnnnw
+ {#1} {#2} {#3} {#4} {#5} {#7}
}
{
\bool_lazy_or:nnTF
- { \@@_change_case_if_greek_accent_p:n {#6} }
- { \@@_change_case_if_greek_breathing_p:n {#6} }
+ { \@@_change_case_if_greek_accent_p:n {#7} }
+ { \@@_change_case_if_greek_breathing_p:n {#7} }
{
- \@@_change_case_upper_el_ypogegrammeni:nnnnnw
- {#1} {#2} {#3} {#4#6} {#5}
+ \@@_change_case_upper_el_ypogegrammeni:nnnnnnw
+ {#1} {#2} {#3} {#4} {#5#7} {#6}
}
- { \@@_change_case_upper_el_aux:nnnN {#1} {#2} {#3} #4#5 #6 }
+ { \@@_change_case_upper_el_aux:nnnnN {#1} {#2} {#3} {#4} #5#6 #7 }
}
}
-\cs_new:Npn \@@_change_case_upper_el_aux:nnnN #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_el_aux:nnnnN #1#2#3#4#5
{
\@@_codepoint_process:nN
- { \@@_change_case_upper_el_aux:nnnn {#1} {#2} {#3} } #4
+ { \@@_change_case_upper_el_aux:nnnnn {#1} {#2} {#3} {#4} } #5
}
-\cs_new:Npn \@@_change_case_upper_el_aux:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_el_aux:nnnnn #1#2#3#4#5
{
- \@@_codepoint_compare:nNnTF {#4} = { "0308 }
- { \@@_change_case_upper_el_dialytika:nnn {#2} {#3} {#1} }
+ \@@_codepoint_compare:nNnTF {#5} = { "0308 }
+ { \@@_change_case_upper_el_dialytika:nnnn {#2} {#3} {#4} {#1} }
{
- \@@_change_case_if_greek_accent:nTF {#4}
- { \@@_change_case_upper_el_hiatus:nnnw {#2} {#3} {#1} }
+ \@@_change_case_if_greek_accent:nTF {#5}
+ { \@@_change_case_upper_el_hiatus:nnnnw {#2} {#3} {#4} {#1} }
{
- \@@_change_case_if_greek_breathing:nTF {#4}
- { \@@_change_case_upper_el:nnn {#1} {#2} {#3} }
+ \@@_change_case_if_greek_breathing:nTF {#5}
+ { \@@_change_case_upper_el:nnnn {#1} {#2} {#3} {#4} }
{
- \@@_codepoint_compare:nNnTF {#4} = { "0345 }
+ \@@_codepoint_compare:nNnTF {#5} = { "0345 }
{
\@@_change_case_store:e
- { \use:c { @@_change_case_upper_ #3 _ypogegrammeni:n } {#1} }
- \@@_change_case_loop:nnw {#2} {#3}
+ { \use:c { @@_change_case_upper_ #4 _ypogegrammeni:n } {#1} }
+ \@@_change_case_loop:nnnw {#2} {#3} {#4}
}
{
- \@@_change_case_if_greek_stress:nTF {#4}
+ \@@_change_case_if_greek_stress:nTF {#5}
{
\@@_change_case_store:e
- { \@@_change_case_upper_el_stress:nn {#1} {#4} }
- \@@_change_case_loop:nnw {#2} {#3}
+ { \@@_change_case_upper_el_stress:nn {#1} {#5} }
+ \@@_change_case_loop:nnnw {#2} {#3} {#4}
}
{
\@@_change_case_store:e
{ \@@_change_case_codepoint:nn { upper } {#1} }
- \@@_change_case_loop:nnw {#2} {#3} #4
+ \@@_change_case_loop:nnnw {#2} {#3} {#4} #5
}
}
}
@@ -1189,15 +1216,15 @@
% We know only two letters take it, so we can shortcut here on the second
% part of the tests.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_el_dialytika:nnn #1#2#3
+\cs_new:Npn \@@_change_case_upper_el_dialytika:nnnn #1#2#3#4
{
- \@@_change_case_if_takes_dialytika:nTF {#3}
- { \@@_change_case_upper_el_dialytika:n {#3} }
+ \@@_change_case_if_takes_dialytika:nTF {#4}
+ { \@@_change_case_upper_el_dialytika:n {#4} }
{
\@@_change_case_store:e
- { \@@_change_case_codepoint:nn { upper } {#3} }
+ { \@@_change_case_codepoint:nn { upper } {#4} }
}
- \@@_change_case_upper_el_gobble:nnw {#1} {#2}
+ \@@_change_case_upper_el_gobble:nnnw {#1} {#2} {#3}
}
\cs_new:Npn \@@_change_case_upper_el_dialytika:n #1
{
@@ -1220,41 +1247,41 @@
% Adding a hiatus needs some of the same ideas, but if there is not one we
% skip this code point, hence needing a separate function.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_el_hiatus:nnnw
- #1#2#3#4 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_upper_el_hiatus:nnnnw
+ #1#2#3#4#5 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \@@_change_case_upper_el_hiatus:nnnN {#3} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \@@_change_case_upper_el_hiatus:nnnnN {#4} }
{
\@@_change_case_store:e
- { \@@_change_case_codepoint:nn { upper } {#3} }
- \@@_change_case_loop:nnw
+ { \@@_change_case_codepoint:nn { upper } {#4} }
+ \@@_change_case_loop:nnnw
}
- {#1} {#2} #4 \q_@@_recursion_stop
+ {#1} {#2} {#3} #5 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_upper_el_hiatus:nnnN #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_el_hiatus:nnnnN #1#2#3#4#5
{
- \token_if_cs:NTF #4
+ \token_if_cs:NTF #5
{
\@@_change_case_store:e
{ \@@_change_case_codepoint:nn { upper } {#1} }
- \@@_change_case_loop:nnw {#2} {#3} #4
+ \@@_change_case_loop:nnnw {#2} {#3} {#4} #5
}
{
\@@_codepoint_process:nN
- { \@@_change_case_upper_el_hiatus:nnnn {#1} {#2} {#3} } #4
+ { \@@_change_case_upper_el_hiatus:nnnnn {#1} {#2} {#3} {#4} } #5
}
}
-\cs_new:Npn \@@_change_case_upper_el_hiatus:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_el_hiatus:nnnnn #1#2#3#4#5
{
- \@@_change_case_if_takes_dialytika:nTF {#4}
+ \@@_change_case_if_takes_dialytika:nTF {#5}
{
\@@_change_case_store:e
{ \@@_change_case_codepoint:nn { upper } {#1} }
- \@@_change_case_upper_el_dialytika:n {#4}
- \@@_change_case_upper_el_gobble:nnw {#2} {#3}
+ \@@_change_case_upper_el_dialytika:n {#5}
+ \@@_change_case_upper_el_gobble:nnnw {#2} {#3} {#4}
}
- { \@@_change_case_upper_el:nnn {#1} {#2} {#3} #4 }
+ { \@@_change_case_upper_el:nnnn {#1} {#2} {#3} {#4} #5 }
}
% \end{macrocode}
% Handling the \emph{ypogegrammeni} output depends on the selected approach
@@ -1323,31 +1350,31 @@
% For clearing out trailing combining marks after we have dealt with
% the first one.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_el_gobble:nnw
- #1#2#3 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_upper_el_gobble:nnnw
+ #1#2#3#4 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \@@_change_case_upper_el_gobble:nnN }
- { \@@_change_case_loop:nnw }
- {#1} {#2} #3 \q_@@_recursion_stop
+ \tl_if_head_is_N_type:nTF {#4}
+ { \@@_change_case_upper_el_gobble:nnnN }
+ { \@@_change_case_loop:nnnw }
+ {#1} {#2} {#3} #4 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_upper_el_gobble:nnN #1#2#3
+\cs_new:Npn \@@_change_case_upper_el_gobble:nnnN #1#2#3#4
{
- \token_if_cs:NTF #3
- { \@@_change_case_loop:nnw {#1} {#2} }
+ \token_if_cs:NTF #4
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} }
{
\@@_codepoint_process:nN
- { \@@_change_case_upper_el_gobble:nnn {#1} {#2} }
+ { \@@_change_case_upper_el_gobble:nnnn {#1} {#2} {#3} }
}
- #3
+ #4
}
-\cs_new:Npn \@@_change_case_upper_el_gobble:nnn #1#2#3
+\cs_new:Npn \@@_change_case_upper_el_gobble:nnnn #1#2#3#4
{
\bool_lazy_or:nnTF
- { \@@_change_case_if_greek_accent_p:n {#3} }
- { \@@_change_case_if_greek_breathing_p:n {#3} }
- { \@@_change_case_upper_el_gobble:nnw {#1} {#2} }
- { \@@_change_case_loop:nnw {#1} {#2} #3 }
+ { \@@_change_case_if_greek_accent_p:n {#4} }
+ { \@@_change_case_if_greek_breathing_p:n {#4} }
+ { \@@_change_case_upper_el_gobble:nnnw {#1} {#2} {#3} }
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} #4 }
}
% \end{macrocode}
% Luckily the Greek range is limited and clear.
@@ -1597,98 +1624,101 @@
% \end{macro}
% \end{macro}
% \begin{macro}[EXP]
-% {\@@_change_case_boundary_upper_el:Nnnw, \@@_change_case_boundary_upper_el-x-iota:Nnnw}
-% \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnN}
-% \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnn}
-% \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnnw}
+% {
+% \@@_change_case_boundary_upper_el:Nnnnw,
+% \@@_change_case_boundary_upper_el-x-iota:Nnnnw
+% }
+% \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnnn}
+% \begin{macro}[EXP]{\@@_change_case_boundary_upper_el:nnnnw}
% There is one things that need special treatment at start start of
% words in Greek. For an isolated accent \emph{eta},
% which is handled by seeing if we have exactly one of the affected
% codepoints followed by a space or brace group.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_boundary_upper_el:Nnnw
- #1#2#3#4 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_boundary_upper_el:Nnnnw
+ #1#2#3#4#5 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \@@_change_case_boundary_upper_el:nnN }
- { \@@_change_case_loop:nnw }
- {#2} {#3} #4 \q_@@_recursion_stop
+ \tl_if_head_is_N_type:nTF {#5}
+ { \@@_change_case_boundary_upper_el:nnnN }
+ { \@@_change_case_loop:nnnw }
+ {#2} {#3} {#4} #5 \q_@@_recursion_stop
}
-\cs_new_eq:cN { @@_change_case_boundary_upper_el-x-iota:Nnnw }
- \@@_change_case_boundary_upper_el:Nnnw
-\cs_new:Npn \@@_change_case_boundary_upper_el:nnN #1#2#3
+\cs_new_eq:cN { @@_change_case_boundary_upper_el-x-iota:Nnnnw }
+ \@@_change_case_boundary_upper_el:Nnnnw
+\cs_new:Npn \@@_change_case_boundary_upper_el:nnnN #1#2#3#4
{
- \token_if_cs:NTF #3
- { \@@_change_case_loop:nnw {#1} {#2} }
+ \token_if_cs:NTF #4
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} }
{
\@@_codepoint_process:nN
- { \@@_change_case_boundary_upper_el:nnn {#1} {#2} }
+ { \@@_change_case_boundary_upper_el:nnnn {#1} {#2} {#3} }
}
- #3
+ #4
}
-\cs_new:Npn \@@_change_case_boundary_upper_el:nnn #1#2#3
+\cs_new:Npn \@@_change_case_boundary_upper_el:nnnn #1#2#3#4
{
\bool_lazy_any:nTF
{
- { \@@_codepoint_compare_p:nNn {#3} = { "0389 } }
- { \@@_codepoint_compare_p:nNn {#3} = { "03AE } }
- { \@@_codepoint_compare_p:nNn {#3} = { "1F22 } }
- { \@@_codepoint_compare_p:nNn {#3} = { "1F2A } }
+ { \@@_codepoint_compare_p:nNn {#4} = { "0389 } }
+ { \@@_codepoint_compare_p:nNn {#4} = { "03AE } }
+ { \@@_codepoint_compare_p:nNn {#4} = { "1F22 } }
+ { \@@_codepoint_compare_p:nNn {#4} = { "1F2A } }
}
- { \@@_change_case_boundary_upper_el:nnnw {#1} {#2} {#3} }
- { \@@_change_case_breathing:nnn {#1} {#2} {#3} }
+ { \@@_change_case_boundary_upper_el:nnnnw {#1} {#2} {#3} {#4} }
+ { \@@_change_case_breathing:nnnn {#1} {#2} {#3} {#4} }
}
-\cs_new:Npn \@@_change_case_boundary_upper_el:nnnw
- #1#2#3#4 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_boundary_upper_el:nnnnw
+ #1#2#3#4#5 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \@@_change_case_loop:nnw {#1} {#2} #3 }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} #4 }
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0389 }
- { \@@_change_case_catcode:nn {#3} { "0389 } }
+ { \@@_change_case_catcode:nn {#4} { "0389 } }
}
- \@@_change_case_loop:nnw {#1} {#2}
+ \@@_change_case_loop:nnnw {#1} {#2} {#3}
}
- #4 \q_@@_recursion_stop
+ #5 \q_@@_recursion_stop
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
-% \begin{macro}[EXP]{\@@_change_case_breathing:nnn}
% \begin{macro}[EXP]{\@@_change_case_breathing:nnnn}
-% \begin{macro}[EXP]{\@@_change_case_breathing:nnnnw}
+% \begin{macro}[EXP]{\@@_change_case_breathing:nnnnn}
% \begin{macro}[EXP]{\@@_change_case_breathing:nnnnnw}
-% \begin{macro}[EXP]{\@@_change_case_breathing_aux:nnnnn}
-% \begin{macro}[EXP]{\@@_change_case_breathing_aux:nnnw}
-% \begin{macro}[EXP]{\@@_change_case_breathing_aux:nnN}
-% \begin{macro}[EXP]{\@@_change_case_breathing_dialytika:nnn}
+% \begin{macro}[EXP]{\@@_change_case_breathing:nnnnnnw}
+% \begin{macro}[EXP]{\@@_change_case_breathing_aux:nnnnnn}
+% \begin{macro}[EXP]{\@@_change_case_breathing_aux:nnnnw}
+% \begin{macro}[EXP]{\@@_change_case_breathing_aux:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_breathing_dialytika:nnnn}
% In Greek, breathing diacritics are normally dropped when uppercasing:
% see the code for the general case. However, for the first character
% of a word, if there is a breather \emph{and} the next character takes
% a \emph{dialytika}, it needs to be added. We start by checking if
% the current codepoint is in the Greek range, then decomposing.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_breathing:nnn #1#2#3
+\cs_new:Npn \@@_change_case_breathing:nnnn #1#2#3#4
{
- \@@_change_case_if_greek:nTF {#3}
+ \@@_change_case_if_greek:nTF {#4}
{
- \exp_args:Ne \@@_change_case_breathing:nnnn
+ \exp_args:Ne \@@_change_case_breathing:nnnnn
{
\codepoint_to_nfd:n
- { \@@_codepoint_from_chars:Nw #3 }
+ { \@@_codepoint_from_chars:Nw #4 }
}
- {#1} {#2} {#3}
+ {#1} {#2} {#3} {#4}
}
- { \@@_change_case_loop:nnw {#1} {#2} #3 }
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} #4 }
}
-\cs_new:Npn \@@_change_case_breathing:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_breathing:nnnnn #1#2#3#4#5
{
\@@_codepoint_process:nN
- { \@@_change_case_breathing:nnnnw {#2} {#3} {#4} }
+ { \@@_change_case_breathing:nnnnnw {#2} {#3} {#4} {#5} }
#1 \q_mark
}
% \end{macrocode}
@@ -1699,36 +1729,36 @@
% and second if the final resulting codepoint is one of the two we
% care about.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_breathing:nnnnw #1#2#3#4#5 \q_mark
+\cs_new:Npn \@@_change_case_breathing:nnnnnw #1#2#3#4#5#6 \q_mark
{
- \tl_if_blank:nTF {#5}
- { \@@_change_case_loop:nnw {#1} {#2} #3 }
+ \tl_if_blank:nTF {#6}
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} #4 }
{
\@@_codepoint_process:nN
- { \@@_change_case_breathing:nnnnnw {#1} {#2} {#3} {#4} }
- #5 \q_mark
+ { \@@_change_case_breathing:nnnnnnw {#1} {#2} {#3} {#4} {#5} }
+ #6 \q_mark
}
}
-\cs_new:Npn \@@_change_case_breathing:nnnnnw #1#2#3#4#5#6 \q_mark
+\cs_new:Npn \@@_change_case_breathing:nnnnnnw #1#2#3#4#5#6#7 \q_mark
{
- \tl_if_blank:nTF {#6}
+ \tl_if_blank:nTF {#7}
{
- \@@_change_case_breathing_aux:nnnnn
- {#1} {#2} {#3} {#4} {#5}
+ \@@_change_case_breathing_aux:nnnnnn
+ {#1} {#2} {#3} {#4} {#5} {#6}
}
{
\@@_codepoint_process:nN
- { \@@_change_case_breathing:nnnnnw {#1} {#2} {#3} {#4} }
- #6 \q_mark
+ { \@@_change_case_breathing:nnnnnnw {#1} {#2} {#3} {#4} {#5} }
+ #7 \q_mark
}
}
-\cs_new:Npn \@@_change_case_breathing_aux:nnnnn #1#2#3#4#5
+\cs_new:Npn \@@_change_case_breathing_aux:nnnnnn #1#2#3#4#5#6
{
\bool_lazy_or:nnTF
- { \@@_codepoint_compare_p:nNn {#5} = { "0313 } }
- { \@@_codepoint_compare_p:nNn {#5} = { "0314 } }
- { \@@_change_case_breathing_aux:nnnw {#1} {#2} {#4} }
- { \@@_change_case_loop:nnw {#1} {#2} #3 }
+ { \@@_codepoint_compare_p:nNn {#6} = { "0313 } }
+ { \@@_codepoint_compare_p:nNn {#6} = { "0314 } }
+ { \@@_change_case_breathing_aux:nnnnw {#1} {#2} {#3} {#5} }
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} #4 }
}
% \end{macrocode}
% Now the lookahead can be fired: check the next codepoint and assess
@@ -1736,29 +1766,29 @@
% breathing mark or generate the \emph{dialytika}: the
% latter is code shared with the general mechanism.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_breathing_aux:nnnw #1#2#3#4
+\cs_new:Npn \@@_change_case_breathing_aux:nnnnw #1#2#3#4#5
\q_@@_recursion_stop
{
\@@_change_case_store:e
- { \@@_change_case_codepoint:nn { upper } {#3} }
- \tl_if_head_is_N_type:nTF {#4}
- { \@@_change_case_breathing_aux:nnN }
- { \@@_change_case_loop:nnw }
- {#1} {#2} #4 \q_@@_recursion_stop
+ { \@@_change_case_codepoint:nn { upper } {#4} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \@@_change_case_breathing_aux:nnnN }
+ { \@@_change_case_loop:nnnw }
+ {#1} {#2} {#3} #5 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_breathing_aux:nnN #1#2#3
+\cs_new:Npn \@@_change_case_breathing_aux:nnnN #1#2#3#4
{
\@@_codepoint_process:nN
- { \@@_change_case_breathing_dialytika:nnn {#1} {#2} } #3
+ { \@@_change_case_breathing_dialytika:nnnn {#1} {#2} {#3} } #4
}
-\cs_new:Npn \@@_change_case_breathing_dialytika:nnn #1#2#3
+\cs_new:Npn \@@_change_case_breathing_dialytika:nnnn #1#2#3#4
{
- \@@_change_case_if_takes_dialytika:nTF {#3}
+ \@@_change_case_if_takes_dialytika:nTF {#4}
{
- \@@_change_case_upper_el_dialytika:n {#3}
- \@@_change_case_loop:nnw {#1} {#2}
+ \@@_change_case_upper_el_dialytika:n {#4}
+ \@@_change_case_loop:nnnw {#1} {#2} {#3}
}
- { \@@_change_case_loop:nnw {#1} {#2} #3 }
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} #4 }
}
% \end{macrocode}
% \end{macro}
@@ -1769,88 +1799,88 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \begin{macro}[EXP]{\@@_change_case_title_el:nnnn}
+% \begin{macro}[EXP]{\@@_change_case_title_el:nnnnn}
% Titlecasing retains accents, but to prevent the uppercasing code
% from kicking in, there has to be an explicit function here.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_title_el:nnnn #1#2#3#4
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+\cs_new:Npn \@@_change_case_title_el:nnnnn #1#2#3#4#5
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]
% {
-% \@@_change_case_upper_hy:nnnn ,
-% \@@_change_case_title_hy:nnnn ,
-% \@@_change_case_upper_hy-x-yiwn:nnnn ,
-% \@@_change_case_title_hy-x-yiwn:nnnn
+% \@@_change_case_upper_hy:nnnnn ,
+% \@@_change_case_title_hy:nnnnn ,
+% \@@_change_case_upper_hy-x-yiwn:nnnnn ,
+% \@@_change_case_title_hy-x-yiwn:nnnnn
% }
% See \url{https://www.unicode.org/L2/L2020/20143-armenian-ech-yiwn.pdf}.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_hy:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_hy:nnnnn #1#2#3#4#5
{
- \@@_codepoint_compare:nNnTF {#4} = { "0587 }
+ \@@_codepoint_compare:nNnTF {#5} = { "0587 }
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0535 }
- { \@@_change_case_catcode:nn {#4} { "0535 } }
+ { \@@_change_case_catcode:nn {#5} { "0535 } }
\codepoint_generate:nn { "054E }
- { \@@_change_case_catcode:nn {#4} { "054E } }
+ { \@@_change_case_catcode:nn {#5} { "054E } }
}
- \use:c { @@_change_case_next_ #2 :nn }
- {#2} {#3}
+ \use:c { @@_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new:Npn \@@_change_case_title_hy:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_title_hy:nnnnn #1#2#3#4#5
{
- \@@_codepoint_compare:nNnTF {#4} = { "0587 }
+ \@@_codepoint_compare:nNnTF {#5} = { "0587 }
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0535 }
- { \@@_change_case_catcode:nn {#4} { "0535 } }
+ { \@@_change_case_catcode:nn {#5} { "0535 } }
\codepoint_generate:nn { "057E }
- { \@@_change_case_catcode:nn {#4} { "057E } }
+ { \@@_change_case_catcode:nn {#5} { "057E } }
}
- \use:c { @@_change_case_next_ #2 :nn }
- {#2} {#3}
+ \use:c { @@_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new:cpn { @@_change_case_upper_hy-x-yiwn:nnnn } #1#2#3#4
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
-\cs_new_eq:cc { @@_change_case_title_hy-x-yiwn:nnnn }
- { @@_change_case_upper_hy-x-yiwn:nnnn }
+\cs_new:cpn { @@_change_case_upper_hy-x-yiwn:nnnnn } #1#2#3#4#5
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
+\cs_new_eq:cc { @@_change_case_title_hy-x-yiwn:nnnnn }
+ { @@_change_case_upper_hy-x-yiwn:nnnnn }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_change_case_lower_la-x-medieval:nnnn}
-% \begin{macro}[EXP]{\@@_change_case_upper_la-x-medieval:nnnn}
+% \begin{macro}[EXP]{\@@_change_case_lower_la-x-medieval:nnnnn}
+% \begin{macro}[EXP]{\@@_change_case_upper_la-x-medieval:nnnnn}
% Simply swaps of characters.
% \begin{macrocode}
-\cs_new:cpn { @@_change_case_lower_la-x-medieval:nnnn } #1#2#3#4
+\cs_new:cpn { @@_change_case_lower_la-x-medieval:nnnnn } #1#2#3#4#5
{
- \@@_codepoint_compare:nNnTF {#4} = { "0056 }
+ \@@_codepoint_compare:nNnTF {#5} = { "0056 }
{
\@@_change_case_store:e
- { \char_generate:nn { "0075 } { \@@_char_catcode:N #4 } }
- \use:c { @@_change_case_next_ #2 :nn }
- {#2} {#3}
+ { \char_generate:nn { "0075 } { \@@_char_catcode:N #5 } }
+ \use:c { @@_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new:cpn { @@_change_case_upper_la-x-medieval:nnnn } #1#2#3#4
+\cs_new:cpn { @@_change_case_upper_la-x-medieval:nnnnn } #1#2#3#4#5
{
- \@@_codepoint_compare:nNnTF {#4} = { "0075 }
+ \@@_codepoint_compare:nNnTF {#5} = { "0075 }
{
\@@_change_case_store:e
- { \char_generate:nn { "0056 } { \@@_char_catcode:N #4 } }
- \use:c { @@_change_case_next_ #2 :nn }
- {#2} {#3}
+ { \char_generate:nn { "0056 } { \@@_char_catcode:N #5 } }
+ \use:c { @@_change_case_next_ #2 :nnn }
+ {#2} {#3} {#4}
}
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
% \end{macrocode}
% \end{macro}
@@ -1858,62 +1888,62 @@
%
% \begin{macro}[EXP]
% {
-% \@@_change_cases_lower_lt:nnnn ,
-% \@@_change_cases_lower_lt_auxi:nnnn ,
-% \@@_change_cases_lower_lt_auxii:nnnn
+% \@@_change_cases_lower_lt:nnnnn ,
+% \@@_change_cases_lower_lt_auxi:nnnnn ,
+% \@@_change_cases_lower_lt_auxii:nnnnn
% }
-% \begin{macro}[rEXP]{\@@_change_case_lower_lt:nnw}
-% \begin{macro}[rEXP]{\@@_change_case_lower_lt:nnN}
-% \begin{macro}[rEXP]{\@@_change_case_lower_lt:nnn}
+% \begin{macro}[rEXP]{\@@_change_case_lower_lt:nnnw}
+% \begin{macro}[rEXP]{\@@_change_case_lower_lt:nnnN}
+% \begin{macro}[rEXP]{\@@_change_case_lower_lt:nnnn}
% For Lithuanian, the issue to be dealt with is dots over lower case
% letters: these should be present if there is another accent. The first step
% is a simple match attempt: look for the three uppercase accented letters
% which should gain a dot-above char in their lowercase form.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_lt:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_lower_lt:nnnnn #1#2#3#4#5
{
- \exp_args:Ne \@@_change_case_lower_lt_auxi:nnnn
+ \exp_args:Ne \@@_change_case_lower_lt_auxi:nnnnn
{
- \int_case:nn { \@@_codepoint_from_chars:Nw #4 }
+ \int_case:nn { \@@_codepoint_from_chars:Nw #5 }
{
{ "00CC } { "0300 }
{ "00CD } { "0301 }
{ "0128 } { "0303 }
}
}
- {#2} {#3} {#4}
+ {#2} {#3} {#4} {#5}
}
% \end{macrocode}
% If there was a hit, output the result with the dot-above and move on.
% Otherwise, look for one of the three letters that can take a combining
% accent: I, J nd I-ogonek.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_lt_auxi:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_lower_lt_auxi:nnnnn #1#2#3#4#5
{
\tl_if_blank:nTF {#1}
{
- \exp_args:Ne \@@_change_case_lower_lt_auxii:nnnn
+ \exp_args:Ne \@@_change_case_lower_lt_auxii:nnnnn
{
- \int_case:nn { \@@_codepoint_from_chars:Nw #4 }
+ \int_case:nn { \@@_codepoint_from_chars:Nw #5 }
{
{ "0049 } { "0069 }
{ "004A } { "006A }
{ "012E } { "012F }
}
}
- {#2} {#3} {#4}
+ {#2} {#3} {#4} {#5}
}
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0069 }
- { \@@_change_case_catcode:nn {#4} { "0069 } }
+ { \@@_change_case_catcode:nn {#5} { "0069 } }
\codepoint_generate:nn { "0307 }
- { \@@_change_case_catcode:nn {#4} { "0307 } }
+ { \@@_change_case_catcode:nn {#5} { "0307 } }
\codepoint_generate:nn {#1}
- { \@@_change_case_catcode:nn {#4} {#1} }
+ { \@@_change_case_catcode:nn {#5} {#1} }
}
- \@@_change_case_loop:nnw {#2} {#3}
+ \@@_change_case_loop:nnnw {#2} {#3} {#4}
}
}
% \end{macrocode}
@@ -1921,55 +1951,55 @@
% then need to look for a combining accent: as usual, we need to be aware of
% the loop situation.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_lt_auxii:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_lower_lt_auxii:nnnnn #1#2#3#4#5
{
\tl_if_blank:nTF {#1}
- { \@@_change_case_codepoint:nnnn {#2} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#2} {#2} {#3} {#4} {#5} }
{
\@@_change_case_store:e
{
\codepoint_generate:nn {#1}
- { \@@_change_case_catcode:nn {#4} {#1} }
+ { \@@_change_case_catcode:nn {#5} {#1} }
}
- \@@_change_case_lower_lt:nnw {#2} {#3}
+ \@@_change_case_lower_lt:nnnw {#2} {#3} {#4}
}
}
-\cs_new:Npn \@@_change_case_lower_lt:nnw #1#2#3 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_lower_lt:nnnw #1#2#3#4 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \@@_change_case_lower_lt:nnN }
- { \@@_change_case_loop:nnw }
- {#1} {#2} #3 \q_@@_recursion_stop
+ \tl_if_head_is_N_type:nTF {#4}
+ { \@@_change_case_lower_lt:nnnN }
+ { \@@_change_case_loop:nnnw }
+ {#1} {#2} {#3} #4 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_lower_lt:nnN #1#2#3
+\cs_new:Npn \@@_change_case_lower_lt:nnnN #1#2#3#4
{
\@@_codepoint_process:nN
- { \@@_change_case_lower_lt:nnn {#1} {#2} } #3
+ { \@@_change_case_lower_lt:nnnn {#1} {#2} {#3} } #4
}
-\cs_new:Npn \@@_change_case_lower_lt:nnn #1#2#3
+\cs_new:Npn \@@_change_case_lower_lt:nnnn #1#2#3#4
{
\bool_lazy_and:nnT
{
\bool_lazy_or_p:nn
- { ! \tl_if_single_p:n {#3} }
- { ! \token_if_cs_p:N #3 }
+ { ! \tl_if_single_p:n {#4} }
+ { ! \token_if_cs_p:N #4 }
}
{
\bool_lazy_any_p:n
{
- { \@@_codepoint_compare_p:nNn {#3} = { "0300 } }
- { \@@_codepoint_compare_p:nNn {#3} = { "0301 } }
- { \@@_codepoint_compare_p:nNn {#3} = { "0303 } }
+ { \@@_codepoint_compare_p:nNn {#4} = { "0300 } }
+ { \@@_codepoint_compare_p:nNn {#4} = { "0301 } }
+ { \@@_codepoint_compare_p:nNn {#4} = { "0303 } }
}
}
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0307 }
- { \@@_change_case_catcode:nn {#3} { "0307 } }
+ { \@@_change_case_catcode:nn {#4} { "0307 } }
}
}
- \@@_change_case_loop:nnw {#1} {#2} #3
+ \@@_change_case_loop:nnnw {#1} {#2} {#3} #4
}
% \end{macrocode}
% \end{macro}
@@ -1978,64 +2008,64 @@
% \end{macro}
% \begin{macro}[EXP]
% {
-% \@@_change_cases_upper_lt:nnnn ,
-% \@@_change_cases_upper_lt_aux:nnnn
+% \@@_change_cases_upper_lt:nnnnn ,
+% \@@_change_cases_upper_lt_aux:nnnnn
% }
-% \begin{macro}[rEXP]{\@@_change_case_upper_lt:nnw}
-% \begin{macro}[rEXP]{\@@_change_case_upper_lt:nnN}
-% \begin{macro}[rEXP]{\@@_change_case_upper_lt:nnn}
+% \begin{macro}[rEXP]{\@@_change_case_upper_lt:nnnw}
+% \begin{macro}[rEXP]{\@@_change_case_upper_lt:nnnN}
+% \begin{macro}[rEXP]{\@@_change_case_upper_lt:nnnn}
% The uppercasing version: first find i/j/i-ogonek, then look for the
% combining char: drop it if present.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_lt:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_lt:nnnnn #1#2#3#4#5
{
- \exp_args:Ne \@@_change_case_upper_lt_aux:nnnn
+ \exp_args:Ne \@@_change_case_upper_lt_aux:nnnnn
{
- \int_case:nn { \@@_codepoint_from_chars:Nw #4 }
+ \int_case:nn { \@@_codepoint_from_chars:Nw #5 }
{
{ "0069 } { "0049 }
{ "006A } { "004A }
{ "012F } { "012E }
}
}
- {#2} {#3} {#4}
+ {#2} {#3} {#4} {#5}
}
-\cs_new:Npn \@@_change_case_upper_lt_aux:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_lt_aux:nnnnn #1#2#3#4#5
{
\tl_if_blank:nTF {#1}
- { \@@_change_case_codepoint:nnnn { upper } {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn { upper } {#2} {#3} {#4} {#5} }
{
\@@_change_case_store:e
{
\codepoint_generate:nn {#1}
- { \@@_change_case_catcode:nn {#4} {#1} }
+ { \@@_change_case_catcode:nn {#5} {#1} }
}
- \@@_change_case_upper_lt:nnw {#2} {#3}
+ \@@_change_case_upper_lt:nnnw {#2} {#3} {#4}
}
}
-\cs_new:Npn \@@_change_case_upper_lt:nnw #1#2#3 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_upper_lt:nnnw #1#2#3#4 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \@@_change_case_upper_lt:nnN }
- { \use:c { @@_change_case_next_ #1 :nn } }
- {#1} {#2} #3 \q_@@_recursion_stop
+ \tl_if_head_is_N_type:nTF {#4}
+ { \@@_change_case_upper_lt:nnnN }
+ { \use:c { @@_change_case_next_ #1 :nnn } }
+ {#1} {#2} {#3} #4 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_upper_lt:nnN #1#2#3
+\cs_new:Npn \@@_change_case_upper_lt:nnnN #1#2#3#4
{
\@@_codepoint_process:nN
- { \@@_change_case_upper_lt:nnn {#1} {#2} } #3
+ { \@@_change_case_upper_lt:nnnn {#1} {#2} {#3} } #4
}
-\cs_new:Npn \@@_change_case_upper_lt:nnn #1#2#3
+\cs_new:Npn \@@_change_case_upper_lt:nnnn #1#2#3#4
{
\bool_lazy_and:nnTF
{
\bool_lazy_or_p:nn
- { ! \tl_if_single_p:n {#3} }
- { ! \token_if_cs_p:N #3 }
+ { ! \tl_if_single_p:n {#4} }
+ { ! \token_if_cs_p:N #4 }
}
- { \@@_codepoint_compare_p:nNn {#3} = { "0307 } }
- { \use:c { @@_change_case_next_ #1 :nn } {#1} {#2} }
- { \use:c { @@_change_case_next_ #1 :nn } {#1} {#2} #3 }
+ { \@@_codepoint_compare_p:nNn {#4} = { "0307 } }
+ { \use:c { @@_change_case_next_ #1 :nnn } {#1} {#2} {#3} }
+ { \use:c { @@_change_case_next_ #1 :nnn } {#1} {#2} {#3} #4 }
}
% \end{macrocode}
% \end{macro}
@@ -2044,84 +2074,84 @@
% \end{macro}
%
% \begin{macro}[EXP]
-% {\@@_change_case_title_nl:nnnn, \@@_change_case_title_nl_aux:nnnn}
-% \begin{macro}[EXP]{\@@_change_case_title_nl:nnw}
-% \begin{macro}[EXP]{\@@_change_case_title_nl:nnN}
+% {\@@_change_case_title_nl:nnnnn, \@@_change_case_title_nl_aux:nnnnn}
+% \begin{macro}[EXP]{\@@_change_case_title_nl:nnnw}
+% \begin{macro}[EXP]{\@@_change_case_title_nl:nnnN}
% For Dutch, there is a single look-ahead test for \texttt{ij} when
% title casing. If the appropriate letters are found, produce \texttt{IJ}
% and gobble the \texttt{j}/\texttt{J}.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_title_nl:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_title_nl:nnnnn #1#2#3#4#5
{
- \tl_if_single:nTF {#4}
- { \@@_change_case_title_nl_aux:nnnn }
- { \@@_change_case_codepoint:nnnn }
- {#1} {#2} {#3} {#4}
+ \tl_if_single:nTF {#5}
+ { \@@_change_case_title_nl_aux:nnnnn }
+ { \@@_change_case_codepoint:nnnnn }
+ {#1} {#2} {#3} {#4} {#5}
}
-\cs_new:Npn \@@_change_case_title_nl_aux:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_title_nl_aux:nnnnn #1#2#3#4#5
{
\bool_lazy_or:nnTF
- { \int_compare_p:nNn {`#4} = { "0049 } }
- { \int_compare_p:nNn {`#4} = { "0069 } }
+ { \int_compare_p:nNn {`#5} = { "0049 } }
+ { \int_compare_p:nNn {`#5} = { "0069 } }
{
\@@_change_case_store:e
- { \char_generate:nn { "0049 } { \@@_char_catcode:N #4 } }
- \@@_change_case_title_nl:nnw {#2} {#3}
+ { \char_generate:nn { "0049 } { \@@_char_catcode:N #5 } }
+ \@@_change_case_title_nl:nnnw {#2} {#3} {#4}
}
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
-\cs_new:Npn \@@_change_case_title_nl:nnw #1#2#3 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_title_nl:nnnw #1#2#3#4 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#3}
- { \@@_change_case_title_nl:nnN }
- { \use:c { @@_change_case_next_ #1 :nn } }
- {#1} {#2} #3 \q_@@_recursion_stop
+ \tl_if_head_is_N_type:nTF {#4}
+ { \@@_change_case_title_nl:nnnN }
+ { \use:c { @@_change_case_next_ #1 :nnn } }
+ {#1} {#2} {#3} #4 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_title_nl:nnN #1#2#3
+\cs_new:Npn \@@_change_case_title_nl:nnnN #1#2#3#4
{
\bool_lazy_and:nnTF
- { ! \token_if_cs_p:N #3 }
+ { ! \token_if_cs_p:N #4 }
{
\bool_lazy_or_p:nn
- { \int_compare_p:nNn {`#3} = { "004A } }
- { \int_compare_p:nNn {`#3} = { "006A } }
+ { \int_compare_p:nNn {`#4} = { "004A } }
+ { \int_compare_p:nNn {`#4} = { "006A } }
}
{
\@@_change_case_store:e
- { \char_generate:nn { "004A } { \@@_char_catcode:N #3 } }
- \use:c { @@_change_case_next_ #1 :nn } {#1} {#2}
+ { \char_generate:nn { "004A } { \@@_char_catcode:N #4 } }
+ \use:c { @@_change_case_next_ #1 :nnn } {#1} {#2} {#3}
}
- { \use:c { @@_change_case_next_ #1 :nn } {#1} {#2} #3 }
+ { \use:c { @@_change_case_next_ #1 :nnn } {#1} {#2} {#3} #4 }
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_change_case_lower_tr:nnnn}
-% \begin{macro}[EXP]{\@@_change_case_lower_tr:nnNw}
-% \begin{macro}[EXP]{\@@_change_case_lower_tr:NnnN}
-% \begin{macro}[EXP]{\@@_change_case_lower_tr:Nnnn}
+% \begin{macro}[EXP]{\@@_change_case_lower_tr:nnnnn}
+% \begin{macro}[EXP]{\@@_change_case_lower_tr:nnnNw}
+% \begin{macro}[EXP]{\@@_change_case_lower_tr:NnnnN}
+% \begin{macro}[EXP]{\@@_change_case_lower_tr:Nnnnn}
% The Turkic languages need special treatment for dotted-i and dotless-i.
% The lower casing rule can be expressed in terms of searching first for
% either a dotless-I or a dotted-I. In the latter case the mapping is
% easy, but in the former there is a second stage search.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_tr:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_lower_tr:nnnnn #1#2#3#4#5
{
- \@@_codepoint_compare:nNnTF {#4} = { "0049 }
- { \@@_change_case_lower_tr:nnNw {#1} {#3} #4 }
+ \@@_codepoint_compare:nNnTF {#5} = { "0049 }
+ { \@@_change_case_lower_tr:nnnNw {#1} {#3} {#4} #5 }
{
- \@@_codepoint_compare:nNnTF {#4} = { "0130 }
+ \@@_codepoint_compare:nNnTF {#5} = { "0130 }
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0069 }
- { \@@_change_case_catcode:nn {#4} { "0069 } }
+ { \@@_change_case_catcode:nn {#5} { "0069 } }
}
- \@@_change_case_loop:nnw {#1} {#3}
+ \@@_change_case_loop:nnnw {#1} {#3} {#4}
}
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
}
% \end{macrocode}
@@ -2130,41 +2160,41 @@
% combination is found both the dotless-I and the dot-above char have to
% be removed from the input.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_tr:nnNw #1#2#3#4 \q_@@_recursion_stop
+\cs_new:Npn \@@_change_case_lower_tr:nnnNw #1#2#3#4#5 \q_@@_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#4}
- { \@@_change_case_lower_tr:NnnN #3 {#1} {#2} }
+ \tl_if_head_is_N_type:nTF {#5}
+ { \@@_change_case_lower_tr:NnnnN #4 {#1} {#2} {#3} }
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0131 }
- { \@@_change_case_catcode:nn {#3} { "0131 } }
+ { \@@_change_case_catcode:nn {#4} { "0131 } }
}
- \@@_change_case_loop:nnw {#1} {#2}
+ \@@_change_case_loop:nnnw {#1} {#2} {#3}
}
- #4 \q_@@_recursion_stop
+ #5 \q_@@_recursion_stop
}
-\cs_new:Npn \@@_change_case_lower_tr:NnnN #1#2#3#4
+\cs_new:Npn \@@_change_case_lower_tr:NnnnN #1#2#3#4#5
{
\@@_codepoint_process:nN
- { \@@_change_case_lower_tr:Nnnn #1 {#2} {#3} } #4
+ { \@@_change_case_lower_tr:Nnnnn #1 {#2} {#3} {#4} } #5
}
-\cs_new:Npn \@@_change_case_lower_tr:Nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_lower_tr:Nnnnn #1#2#3#4#5
{
\bool_lazy_or:nnTF
{
\bool_lazy_and_p:nn
- { \tl_if_single_p:n {#4} }
- { \token_if_cs_p:N #4 }
+ { \tl_if_single_p:n {#5} }
+ { \token_if_cs_p:N #5 }
}
- { ! \@@_codepoint_compare_p:nNn {#4} = { "0307 } }
+ { ! \@@_codepoint_compare_p:nNn {#5} = { "0307 } }
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0131 }
{ \@@_change_case_catcode:nn {#1} { "0131 } }
}
- \@@_change_case_loop:nnw {#2} {#3} #4
+ \@@_change_case_loop:nnnw {#2} {#3} {#4} #5
}
{
\@@_change_case_store:e
@@ -2172,7 +2202,7 @@
\codepoint_generate:nn { "0069 }
{ \@@_change_case_catcode:nn {#1} { "0069 } }
}
- \@@_change_case_loop:nnw {#2} {#3}
+ \@@_change_case_loop:nnnw {#2} {#3} {#4}
}
}
% \end{macrocode}
@@ -2180,33 +2210,33 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \begin{macro}[EXP]{\@@_change_case_upper_tr:nnnn}
+% \begin{macro}[EXP]{\@@_change_case_upper_tr:nnnnn}
% Uppercasing is easier: just one exception with no context.
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_tr:nnnn #1#2#3#4
+\cs_new:Npn \@@_change_case_upper_tr:nnnnn #1#2#3#4#5
{
- \@@_codepoint_compare:nNnTF {#4} = { "0069 }
+ \@@_codepoint_compare:nNnTF {#5} = { "0069 }
{
\@@_change_case_store:e
{
\codepoint_generate:nn { "0130 }
- { \@@_change_case_catcode:nn {#4} { "0130 } }
+ { \@@_change_case_catcode:nn {#5} { "0130 } }
}
- \use:c { @@_change_case_next_ #2 :nn } {#2} {#3}
+ \use:c { @@_change_case_next_ #2 :nnn } {#2} {#3} {#4}
}
- { \@@_change_case_codepoint:nnnn {#1} {#2} {#3} {#4} }
+ { \@@_change_case_codepoint:nnnnn {#1} {#2} {#3} {#4} {#5} }
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]
-% {\@@_change_case_lower_az:nnnn, \@@_change_case_upper_az:nnnn}
+% {\@@_change_case_lower_az:nnnnn, \@@_change_case_upper_az:nnnnn}
% Straight copies.
% \begin{macrocode}
-\cs_new_eq:NN \@@_change_case_lower_az:nnnn
- \@@_change_case_lower_tr:nnnn
-\cs_new_eq:NN \@@_change_case_upper_az:nnnn
- \@@_change_case_upper_tr:nnnn
+\cs_new_eq:NN \@@_change_case_lower_az:nnnnn
+ \@@_change_case_lower_tr:nnnnn
+\cs_new_eq:NN \@@_change_case_upper_az:nnnnn
+ \@@_change_case_upper_tr:nnnnn
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index 8b3ac6098c..d863e51ace 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -2,7 +2,7 @@
%
%% File: l3text-map.dtx
%
-% Copyright (C) 2022,2023 The LaTeX Project
+% Copyright (C) 2022-2023 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index 075b370737..5770853cd7 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index 8df534cc84..ea33b58855 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -94,18 +94,18 @@
%
% \section{Case changing}
%
-% \begin{function}[EXP, added = 2019-11-20, updated = 2022-10-13]
+% \begin{function}[EXP, added = 2019-11-20, updated = 2023-07-08]
% {
-% \text_lowercase:n, \text_uppercase:n, \text_titlecase:n,
+% \text_lowercase:n, \text_uppercase:n, \text_titlecase_all:n,
% \text_titlecase_first:n,
-% \text_lowercase:nn, \text_uppercase:nn, \text_titlecase:nn,
+% \text_lowercase:nn, \text_uppercase:nn, \text_titlecase_all:nn,
% \text_titlecase_first:nn
% }
% \begin{syntax}
% \cs{text_uppercase:n} \Arg{tokens}
% \cs{text_uppercase:nn} \Arg{BCP-47} \Arg{tokens}
% \end{syntax}
-% Takes user input \meta{text} first applies \cs{text_expand}, then
+% Takes user input \meta{text} first applies \cs{text_expand:n}, then
% transforms the case of character tokens as specified by the
% function name. The category code of letters are not changed by this
% process when Unicode engines are used; in $8$-bit engines, case changed
@@ -115,11 +115,13 @@
%
% Upper- and lowercase have the obvious meanings. Titlecasing may be regarded
% informally as converting the first character of the \meta{tokens} to
-% uppercase and the rest to lowercase. However, the process is more complex
+% uppercase. However, the process is more complex
% than this as there are some situations where a single lowercase character
% maps to a special form, for example \texttt{ij} in Dutch which becomes
-% \texttt{IJ}. The \texttt{titlecase_first} variant does not attempt
-% any case changing at all after the first letter has been processed.
+% \texttt{IJ}. There are two functions available for titlecasing: one which
+% applies the change to each \enquote{word} and a second which only applies
+% at the start of the input. (Here, \enquote{word} boundaries are spaces:
+% at present, full Unicode word breaking is not attempted.)
%
% Importantly, notice that these functions are intended for working with
% user \emph{text for typesetting}. For case changing programmatic data see
@@ -163,10 +165,7 @@
% I-dot and introduced when upper casing i-dotless.
% \item German (\texttt{de-x-eszett}).
% An alternative mapping for German in which the lowercase
-% \emph{Eszett} maps to a \emph{gro\ss{}es Eszett}. Since there is
-% a |T1| slot for the \emph{gro\ss{}es Eszett} in |T1|, this
-% tailoring \emph{is} available with \pdfTeX{} as well as in the
-% Unicode \TeX{} engines.
+% \emph{Eszett} maps to a \emph{gro\ss{}es Eszett}.
% \item Greek (\texttt{el}).
% Removes accents from Greek letters when uppercasing; titlecasing
% leaves accents in place. A variant \texttt{el-x-iota} is available
@@ -185,25 +184,17 @@
% The characters |u| and |V| are interchanged on case changing.
% \item Dutch (\texttt{nl}).
% Capitalisation of \texttt{ij} at the beginning of titlecased
-% input produces \texttt{IJ} rather than \texttt{Ij}. The output
-% retains two separate letters, thus this transformation \emph{is}
-% available using \pdfTeX{}.
+% input produces \texttt{IJ} rather than \texttt{Ij}.
% \end{itemize}
%
-% For titlecasing, note that there are two functions available. The
-% function \cs{text_titlecase:n} applies (broadly) uppercasing to the first
-% letter of the input, then lowercasing to the remainder. In contrast,
-% \cs{text_titlecase_first:n} \emph{only} carries out the uppercasing operation,
-% and leaves the balance of the input unchanged. Determining whether
-% non-letter characters at the start of text should switch from upper- to
-% lowercasing is controllable. When \cs{l_text_titlecase_check_letter_bool} is
+% Determining whether non-letter characters at the start of text should count
+% as the uppercase element is controllable. When \cs{l_text_titlecase_check_letter_bool} is
% \texttt{true}, characters which are not letters (category code~$11$) are
-% left unchanged and \enquote{skipped}: the first \emph{letter} is uppercased.
+% \enquote{skipped}: the first \emph{letter} is uppercased.
% (With $8$-bit engines, this is extended to active characters which form
% part of a multi-byte letter codepoint.) When
% \cs{l_text_titlecase_check_letter_bool} is \texttt{false}, the first
-% character is uppercased, and the rest lowercased, irrespective of the nature
-% of the character.
+% character is uppercased, irrespective of the category code of the character.
%
% \begin{function}[added = 2022-07-04]
% {
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 9cadf04e87..6336b0d076 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -177,9 +177,6 @@
% by avoiding \cs{exp_not:n} for characters other than active and macro
% parameters.)
%
-% ^^A todo: ask LuaTeX list for an \ifx\undefined <active char>
-% ^^A which does not add the <active char> in memory.
-%
% \begin{macrocode}
%<*package>
% \end{macrocode}
@@ -443,6 +440,42 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_analysis_disable_char:N}
+% Similar to \cs{@@_analysis_disable:n}, but it receives a normal
+% character token, tests if that token is active (by turning it into
+% a space: the active space has been undefined at this point), and
+% if so, disables it. Even if the character is active and set equal
+% to a primitive conditional, nothing blows up.
+% Again, in \pTeX{} and \upTeX{} we skip characters beyond $[0,255]$,
+% which cannot be active anyways.
+% \begin{macrocode}
+\group_begin:
+ \char_set_catcode_active:N \^^@
+ \cs_new_protected:Npn \@@_analysis_disable_char:N #1
+ {
+ \tex_lccode:D `#1 = 32 \exp_stop_f:
+ \tex_lowercase:D { \if_meaning:w #1 } \tex_undefined:D
+ \tex_let:D #1 \tex_undefined:D
+ \fi:
+ }
+ \bool_lazy_or:nnT
+ { \sys_if_engine_ptex_p: }
+ { \sys_if_engine_uptex_p: }
+ {
+ \cs_gset_protected:Npn \@@_analysis_disable_char:N #1
+ {
+ \if_int_compare:w 256 > `#1 \exp_stop_f:
+ \tex_lccode:D `#1 = 32 \exp_stop_f:
+ \tex_lowercase:D { \if_meaning:w #1 } \tex_undefined:D
+ \tex_let:D #1 \tex_undefined:D
+ \fi:
+ \fi:
+ }
+ }
+\group_end:
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{First pass}
%
% The goal of this pass is to detect special (non-\texttt{N}-type) tokens,
@@ -737,7 +770,7 @@
\exp_after:wN \use_ii:nn
\fi:
{
- \@@_analysis_disable:n { `#1 }
+ \@@_analysis_disable_char:N #1
\int_incr:N \l_@@_analysis_normal_int
}
{ \@@_analysis_cs_space_count:NN \@@_analysis_a_cs:ww #1 }
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index e606c3c558..f3c52e2a0f 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -187,7 +187,7 @@
% \tl_put_left:co,
% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:Ne,
% \tl_gput_left:No,
-% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:ce
+% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:ce,
% \tl_gput_left:co
% }
% \begin{syntax}
@@ -205,7 +205,7 @@
% \tl_put_right:co,
% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:Ne,
% \tl_gput_right:No,
-% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:ce
+% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:ce,
% \tl_gput_right:co
% }
% \begin{syntax}
@@ -592,8 +592,8 @@
% \begin{syntax}
% \cs{tl_reverse_items:n} \Arg{token list}
% \end{syntax}
-% Reverses the order of the \meta{items} stored in \meta{tl~var},
-% so that \Arg{item_1}\Arg{item_2}\Arg{item_3} \ldots \Arg{item_n}
+% Reverses the order of the \meta{items} in the \meta{token list},
+% so that \meta{item_1}\meta{item_2}\meta{item_3} \ldots \meta{item_n}
% becomes \Arg{item_n} \ldots{} \Arg{item_3}\Arg{item_2}\Arg{item_1}.
% This process removes any unprotected space within the
% \meta{token list}. Braced token groups are copied without
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index aedde78098..888ceb3601 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
@@ -481,6 +481,18 @@
% \end{texnote}
% \end{function}
%
+% \begin{function}[EXP,added = 2023-10-15]{\token_to_catcode:N}
+% \begin{syntax}
+% \cs{token_to_catcode:N} \meta{token}
+% \end{syntax}
+% Converts the given \meta{token} into a number describing its category code.
+% If \meta{token} is a control sequence this expands to $16$. This can't
+% detect the categories $0$ (escape character), $5$ (end of line), $9$
+% (ignored character), $14$ (comment character), or $15$ (invalid character).
+% Control sequences or active characters let to a token of one of the
+% detectable category codes will yield that category.
+% \end{function}
+%
% \section{Token conditionals}
%
% \begin{function}[EXP,pTF]{\token_if_group_begin:N}
@@ -1022,7 +1034,7 @@
% For instance \cs{peek_regex:nTF} \verb"{ abc | [a-z] }" |{ } { }|
% |abc| will only inspect the first token~|a| even though the first
% branch |abc| of the alternative is preferred in functions such as
-% \cs{peek_regex_remove_once:n}. This may have an effect on
+% \cs{peek_regex_remove_once:nTF}. This may have an effect on
% tokenization if the input stream has not yet been tokenized and
% category codes are changed.
% \end{texnote}
@@ -1221,7 +1233,7 @@
% \end{syntax}
% Converts the \meta{char} to the equivalent case-changed character
% as detailed by the function name (see \cs{str_foldcase:n}
-% and \cs{text_titlecase:n} for details of these terms). The case mapping
+% and \cs{text_titlecase_all:n} for details of these terms). The case mapping
% is carried out with no context-dependence (\emph{cf.}~\cs{text_uppercase:n},
% \emph{etc.}) The \texttt{str} versions always generate \enquote{other}
% (category code $12$) characters, whilst the standard versions generate
@@ -1873,6 +1885,66 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\token_to_catcode:N}
+% \begin{macro}{\@@_to_catcode:N}
+% The macro works by comparing the input token with \cs{if_catcode:w} with all
+% valid category codes. Since the most common tokens in an average argument
+% list are of category $11$ or $12$ those are tested first. And since a space
+% and braces are no ordinary |N|-type arguments, and only control sequences
+% let to those categories can match them they are tested last.
+% \begin{macrocode}
+\cs_new:Npn \token_to_catcode:N
+ { \int_value:w \group_align_safe_begin: \@@_to_catcode:N }
+\cs_new:Npn \@@_to_catcode:N #1
+ {
+ \if_catcode:w \exp_not:N #1 \c_catcode_letter_token
+ 11
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_catcode_other_token
+ 12
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_toggle_token
+ 3
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_alignment_token
+ 4
+ \else:
+ \if_catcode:w \exp_not:N #1 ##
+ 6
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_superscript_token
+ 7
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_subscript_token
+ 8
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_group_begin_token
+ 1
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_group_end_token
+ 2
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_space_token
+ 10
+ \else:
+ \token_if_cs:NTF #1 { 16 } { 13 }
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \group_align_safe_end:
+ \exp_stop_f:
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}
% {
% \c_group_begin_token,
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 2161e0963e..54486cc0fa 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-10-23}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index a89fb20da4..13567c5b2a 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index bd89e29524..bb91c59643 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -57,7 +57,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-10}
+\date{Released 2023-10-23}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/source3body.tex b/macros/latex/contrib/l3kernel/source3body.tex
index 34573d3d64..f76e8f2872 100644
--- a/macros/latex/contrib/l3kernel/source3body.tex
+++ b/macros/latex/contrib/l3kernel/source3body.tex
@@ -517,9 +517,9 @@ logical construct.
\section{\TeX{} concepts not supported by \LaTeX3{}}
-The \TeX{} concept of an \enquote{\cs{outer}} macro is \emph{not supported}
+The \TeX{} concept of an \enquote{\tn{outer}} macro is \emph{not supported}
at all by \LaTeX3{}. As such, the functions provided here may break when
-used on top of \LaTeXe{} if \cs{outer} tokens are used in the arguments.
+used on top of \LaTeXe{} if \tn{outer} tokens are used in the arguments.
\DisableImplementation
@@ -582,6 +582,9 @@ used on top of \LaTeXe{} if \cs{outer} tokens are used in the arguments.
l3fp-trig.dtx ,
l3fp-convert.dtx ,
l3fp-random.dtx ,
+ l3fp-types.dtx ,
+ l3fp-symbolic.dtx ,
+ l3fp-functions.dtx
}
\ExplSyntaxOff
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 8b01a1641f..5df419a5b7 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index 2c4df3e623..129b5f63b6 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -5,8 +5,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass[a4paper,french,11pt]{article}
-\def\PLversion{2.8.0}
-\def\PLdate{19 octobre 2023}
+\def\PLversion{3.00a}
+\def\PLdate{23 octobre 2023}
\usepackage{amsfonts}
\usepackage{ProfLycee}
\useproflyclib{piton,minted,pythontex,ecritures}
@@ -140,16 +140,16 @@
keywordstyle={\color{blue}},%
classoffset=1,%
alsoletter={-},%
- morekeywords={ProfLycee,CodePythonLst,CodePythonLstAlt,CodePiton,PitonConsole,CodePythontex,CodePythontexAlt,ConsolePythontex,CodePythonMinted,CodePythonMintedAlt,PseudoCode,PseudoCodeAlt,TerminalWin,TerminalUnix,TerminalOSX,EnvArbreProbasTikz,EnvSudoMaths},%
+ morekeywords={ProfLycee,CodePythonLst,CodePythonLstAlt,CodePiton,PitonConsole,CodePythontex,CodePythontexAlt,ConsolePythontex,CodePythonMinted,CodePythonMintedAlt,PseudoCode,PseudoCodeAlt,TerminalWin,TerminalUnix,TerminalOSX,EnvArbreProbasTikz,EnvSudoMaths,RepIntervalles},%
keywordstyle={\color{violet}},%
classoffset=2,%
alsoletter={-},%
- morekeywords={\ResolutionApprochee,\SolutionTVI,\CalculTermeRecurrence,\ToileRecurrence,\SolutionSeuil,\IntegraleApprochee,\GrilleTikz,\AxesTikz,\AxexTikz,\AxeyTikz,\FenetreTikz,\FenetreSimpleTikz,\DeclareFonctionTikz,\CourbeTikz,\OrigineTikz,\SplineTikz,\TangenteTikz,\MiniSchemaSignes,\MiniSchemaSignesTkzTab,\IntegraleApprocheeTikz,\CartoucheCapytale,\PaveTikz,\TetraedreTikz,\CercleTrigo,\AffPoint,\AffVecteur,\TrouveEqCartPlan,\TrouveEqParamDroite,\TrouveEqCartDroite,\TrouveNorme,\TrouveDistancePtPlan,\EquationReduite,\CalculsRegLin,\PointsRegLin,\NuagePointsTikz,\PointMoyenTikz,\BoiteMoustaches,\BoiteMoustachesAxe,\Histogramme,\CalcBinomP,\CalcBinomC,\BinomP,\BinomC,\CalcPoissP,\CalcPoissC,\PoissonP,\PoissonC,\CalcGeomP,\CalcGeomC,\GeomP,\GeomC,\CalcHypergeomP,\CalcHypergeomP,\HypergeomP,\HypergeomC,\CalcNormC,\NormaleC,\CalcExpoC,\ExpoC,\ArbreProbasTikz,\LoiNormaleGraphe,\LoiExpoGraphe,\NbAlea,\VarNbAlea,\TirageAleatoireEntiers,\Arrangement,\Combinaison,\ConversionDecBin,\ConversionBinHex,\ConversionVersDec,\ConversionHexBin,\ConversionBaseDix,\ConversionDepuisBaseDix,\PresentationPGCD,\EquationDiophantienne,\ConversionFraction,\SimplificationRacine,\EcritureEnsemble,\EcritureTrinome,\MesurePrincipale,\LigneTrigo,\SudoMaths,\FonctionRepartTikz,\IntervalleFF,\IntervalleFO,\IntervalleOF,\IntervalleOO,\RepereOij,\RepereOuv,\RepereOijk,\ReperePlan,\RepereEspace,\jfalg,\jfexp,\LoiNormale,\LoiBinomiale,\LoiPoisson,\LoiExpo,\LoiUnif,\Courbe,\Suite,\CoordPtPl,\CoordPtEsp,\CoordVecPl,\CoordVecEsp,\MatDeux,\Vecteur,\Esper,\Varianc,\EcType,\dx,\Integrale,\Modulo,\Arrondi,\CodePythonLstFichier,\CodePythonLstFichierAlt,\colorlet,\PtsDiscontinuite,\ListeDiviseurs,\ArbreDiviseurs,\FractaleTikz,\EtapesFloconKoch,\EtapesTapisSierpinski
+ morekeywords={\ResolutionApprochee,\SolutionTVI,\CalculTermeRecurrence,\ToileRecurrence,\SolutionSeuil,\IntegraleApprochee,\GrilleTikz,\AxesTikz,\AxexTikz,\AxeyTikz,\FenetreTikz,\FenetreSimpleTikz,\DeclareFonctionTikz,\CourbeTikz,\OrigineTikz,\SplineTikz,\TangenteTikz,\MiniSchemaSignes,\MiniSchemaSignesTkzTab,\IntegraleApprocheeTikz,\CartoucheCapytale,\PaveTikz,\TetraedreTikz,\CercleTrigo,\AffPoint,\AffVecteur,\TrouveEqCartPlan,\TrouveEqParamDroite,\TrouveEqCartDroite,\TrouveNorme,\TrouveDistancePtPlan,\EquationReduite,\CalculsRegLin,\PointsRegLin,\NuagePointsTikz,\PointMoyenTikz,\BoiteMoustaches,\BoiteMoustachesAxe,\Histogramme,\CalcBinomP,\CalcBinomC,\BinomP,\BinomC,\CalcPoissP,\CalcPoissC,\PoissonP,\PoissonC,\CalcGeomP,\CalcGeomC,\GeomP,\GeomC,\CalcHypergeomP,\CalcHypergeomP,\HypergeomP,\HypergeomC,\CalcNormC,\NormaleC,\CalcExpoC,\ExpoC,\ArbreProbasTikz,\LoiNormaleGraphe,\LoiExpoGraphe,\NbAlea,\VarNbAlea,\TirageAleatoireEntiers,\Arrangement,\Combinaison,\ConversionDecBin,\ConversionBinHex,\ConversionVersDec,\ConversionHexBin,\ConversionBaseDix,\ConversionDepuisBaseDix,\PresentationPGCD,\EquationDiophantienne,\ConversionFraction,\SimplificationRacine,\EcritureEnsemble,\EcritureTrinome,\MesurePrincipale,\LigneTrigo,\SudoMaths,\FonctionRepartTikz,\IntervalleFF,\IntervalleFO,\IntervalleOF,\IntervalleOO,\RepereOij,\RepereOuv,\RepereOijk,\ReperePlan,\RepereEspace,\jfalg,\jfexp,\LoiNormale,\LoiBinomiale,\LoiPoisson,\LoiExpo,\LoiUnif,\Courbe,\Suite,\CoordPtPl,\CoordPtEsp,\CoordVecPl,\CoordVecEsp,\MatDeux,\Vecteur,\Esper,\Varianc,\EcType,\dx,\Integrale,\Modulo,\Arrondi,\CodePythonLstFichier,\CodePythonLstFichierAlt,\colorlet,\PtsDiscontinuite,\ListeDiviseurs,\ArbreDiviseurs,\FractaleTikz,\EtapesFloconKoch,\EtapesTapisSierpinski,\tkzIntervalle,\AffAngleRadian
},%
keywordstyle={\color{CouleurVertForet}},%
classoffset=3,%
alsoletter={-},%
- morekeywords={minimum-decimal-digits,scale,nonamssymb,build,Precision,Intervalle,Variable,NomFct,NomSol,va,vb,Stretch,Balayage,Calculatrice,Majuscule,No,UNo,NomSuite,Simple,Exact,Conclusion,Sens,ResultatBrut,Methode,NbSubDiv,AffFormule,Expr,Signe,Variables,Affp,Affs,Epaisseur,Police,ElargirOx,ElargirOy,Labelx,Labely,AffLabel,PosLabelx,PosLabely,EchelleFleche,TypeFleche,PosGrad,HautGrad,AffGrad,AffOrigine,Annee,Trigo,Dfrac,Style,Coeffs,AffPoints,TaillePoints,xl,xr,Code,Racines,Largeur,Hauteur,Cadre,Fct,Nom,PosLabel,DecalLabel,TailleLabel,AffTermes,RemplirbOpacite,CouleurRemplissage,Lignes,Gobble,Alignement,Filigrane,BarreTitre,CouleurNombres,Centre,EspacementVertical,Label,Titre,Profondeur,Angle,Fuite,Sommets,Math,Aff,Plein,Cube,Alpha,Beta,Rayon,Marge,TailleValeurs,TailleAngles,CouleurFond,Decal,MoinsPi,AffAngles,AffTraits,AffValeurs,Equationcos,Equationsin,sin,cos,AffTraitsEq,CouleurSol,OptionCoeffs,SimplifCoeffs,Facteur,OptionCoeffs,Reel,Oppose,Rgras,SimplifCoeffs,VectDirecteur,NomCoeffa,NomCoeffb,NomCoeffr,NomCoeffrd,NomXmin,NomXmax,Ox,Oy,xg,yg,AffNom,Elevation,Moyenne,AffMoyenne,Pointilles,Valeurs,Elargir,Min,Max,DebutOx,FinOx,ListeCouleurs,ElargirX,ElargirY,LabelX,LabelY,GradX,GradY,AffEffectifs,PosEffectifs,Opacite,AffBornes,GrilleV,PoliceAxes,PoliceEffectifs,EpaisseurTraits,Unite,EspaceNiveau,EspaceFeuille,Type,PoliceProbas,InclineProbas,Fleche,StyleTrait,EpaisseurTrait,CouleurAire,CouleurCourbe,AfficheM,AfficheCadre,ValMin,ValMax,NbVal,Sep,Tri,Repetition,Notation,NotationAncien,Formule,AffBase,Details,BaseDep,Zeros,DecalH,DecalV,Noeud,Rect,CouleurRes,DecalRect,Rectangle,CouleurResultat,AfficheConclusion,AfficheDelimiteurs,Lettre,Inconnues,Entier,Cadres,PresPGCD,Mathpunct,Option,Alea,Anegatif,Crochets,Brut,Etapes,Epaisseurg,CouleurCase,CouleurTexte,NbSubCol,NbLig,NbCol,Legendes,PoliceLeg,ListeLegV,ListeLegH,DecalLegende,Couleur,Uno,Grille,ExtraGrilleY,PosLegende,Pointilles,Extremite,Frac,PremLigne,Type,Pos,Echelle,AffNom,EspaceNiveau,CouleurDetails,Fleches,EspaceFeuille,Details,LongueurCote,AlignV,Offset,Remplir,Etape,Depart,Contour,Remplissage},%
+ morekeywords={minimum-decimal-digits,scale,nonamssymb,build,Precision,Intervalle,Variable,NomFct,NomSol,va,vb,Stretch,Balayage,Calculatrice,Majuscule,No,UNo,NomSuite,Simple,Exact,Conclusion,Sens,ResultatBrut,Methode,NbSubDiv,AffFormule,Expr,Signe,Variables,Affp,Affs,Epaisseur,Police,ElargirOx,ElargirOy,Labelx,Labely,AffLabel,PosLabelx,PosLabely,EchelleFleche,TypeFleche,PosGrad,HautGrad,AffGrad,AffOrigine,Annee,Trigo,Dfrac,Style,Coeffs,AffPoints,TaillePoints,xl,xr,Code,Racines,Largeur,Hauteur,Cadre,Fct,Nom,PosLabel,DecalLabel,TailleLabel,AffTermes,RemplirbOpacite,CouleurRemplissage,Lignes,Gobble,Alignement,Filigrane,BarreTitre,CouleurNombres,Centre,EspacementVertical,Label,Titre,Profondeur,Angle,Fuite,Sommets,Math,Aff,Plein,Cube,Alpha,Beta,Rayon,Marge,TailleValeurs,TailleAngles,CouleurFond,Decal,MoinsPi,AffAngles,AffTraits,AffValeurs,Equationcos,Equationsin,sin,cos,AffTraitsEq,CouleurSol,OptionCoeffs,SimplifCoeffs,Facteur,OptionCoeffs,Reel,Oppose,Rgras,SimplifCoeffs,VectDirecteur,NomCoeffa,NomCoeffb,NomCoeffr,NomCoeffrd,NomXmin,NomXmax,Ox,Oy,xg,yg,AffNom,Elevation,Moyenne,AffMoyenne,Pointilles,Valeurs,Elargir,Min,Max,DebutOx,FinOx,ListeCouleurs,ElargirX,ElargirY,LabelX,LabelY,GradX,GradY,AffEffectifs,PosEffectifs,Opacite,AffBornes,GrilleV,PoliceAxes,PoliceEffectifs,EpaisseurTraits,Unite,EspaceNiveau,EspaceFeuille,Type,PoliceProbas,InclineProbas,Fleche,StyleTrait,EpaisseurTrait,CouleurAire,CouleurCourbe,AfficheM,AfficheCadre,ValMin,ValMax,NbVal,Sep,Tri,Repetition,Notation,NotationAncien,Formule,AffBase,Details,BaseDep,Zeros,DecalH,DecalV,Noeud,Rect,CouleurRes,DecalRect,Rectangle,CouleurResultat,AfficheConclusion,AfficheDelimiteurs,Lettre,Inconnues,Entier,Cadres,PresPGCD,Mathpunct,Option,Alea,Anegatif,Crochets,Brut,Etapes,Epaisseurg,CouleurCase,CouleurTexte,NbSubCol,NbLig,NbCol,Legendes,PoliceLeg,ListeLegV,ListeLegH,DecalLegende,Couleur,Uno,Grille,ExtraGrilleY,PosLegende,Pointilles,Extremite,Frac,PremLigne,Type,Pos,Echelle,AffNom,EspaceNiveau,CouleurDetails,Fleches,EspaceFeuille,Details,LongueurCote,AlignV,Offset,Remplir,Etape,Depart,Contour,Remplissage,Graduations,GraduationsAlt,HautGrad,Valeurs,EpTrait,Decor,NumInf,NumSup,NiveauV,PosValeurs},%
keywordstyle={\color{orange!75!black}}
}
}
@@ -308,94 +308,7 @@
\node[coeffs] at ({(9+10)/2},5.5) {#4} ;%
}
-\title{%
-\begin{minipage}{0.85\linewidth}
- \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
- \begin{center}
- \begin{tabular}{c}
- \lstinline!ProfLycee!\\
- \\
- Quelques \textit{petites} commandes pour \LaTeX{} (au lycée)
- \end{tabular}
- \end{center}
- \end{tcolorbox}
-\end{minipage}
-}
-\author{
- \begin{tabular}{c}
- Cédric Pierquet\\
- {\ttfamily c pierquet -- at -- outlook . fr}
- \end{tabular}
-}
-\date{Version \PLversion{} -- \PLdate}
-
-\newcommand\Cle[1]{{\bfseries\sffamily\textlangle \textcolor{orange!75!black}{#1}\textrangle}}
-\newcommand\deblst{{\tiny\faCode}~}
-
-\begin{document}
-
-\setlength{\aweboxleftmargin}{0.07\linewidth}
-\setlength{\aweboxcontentwidth}{0.93\linewidth}
-\setlength{\aweboxvskip}{8pt}
-
-\pagestyle{fancy}
-
-\maketitle
-
-\thispagestyle{empty}
-
-{\sffamily{\bfseries Résumé} : Quelques commandes pour faciliter l'utilisation de \LaTeX{} pour les mathématiques, au lycée.}
-
-\medskip
-
-{\footnotesize\noindent%
-{\deblst} résoudre, de manière approchée, des équations\\
-{\deblst} calculer (et représenter) une valeur approchée d'une intégrale\\
-{\deblst} tracer \textit{facilement} des repères/grilles/courbes\\
-{\deblst} tracer des courbes \textit{lisses} avec gestion des extrema et des dérivées\\
-{\deblst} présenter du code \textsf{python} ou \textsf{pseudocode}, une console d'exécution \textsf{Python} \\
-{\deblst} tracer rapidement un pavé, un tétraèdre \\
-{\deblst} simplifier des calculs sous forme fractionnaire, simplifier des racines \\
-{\deblst} effectuer des calculs avec des suites récurrentes, créer la \textit{toile} pour une suite récurrente \\
-{\deblst} afficher et utiliser un cercle trigo \\
-{\deblst} afficher un petit schéma pour le signe d'une fonction affine ou d'un trinôme \\
-{\deblst} travailler sur les statistiques à deux variables (algébriques et graphiques) \\
-{\deblst} tracer un histogramme, avec classes régulières ou non \\
-{\deblst} convertir entre bin/dec/hex avec détails \\
-{\deblst} présenter un calcul de PGCD \\
-{\deblst} effectuer des calculs de probas (lois binomiale, exponentielle, de Poisson, normale) \\
-{\deblst} créer des arbres de probas \og classiques \fg \\
-{\deblst} générer des listes d'entiers aléatoires (avec ou sans répétitions) \\
-{\deblst} déterminer la mesure principale d'un angle, calculer les lignes trigonométriques d'angles \og classiques \fg{} \\
-{\deblst} résoudre une équation diophantienne \og classique \fg{} \\
-{\deblst} travailler avec un peu de géométrie analytique \\
-{\deblst} composer des mathématiques}
-
-~
-
-\hfill{}\textsl{Merci à Anne et quark67 pour leurs retours et relectures !}
-
-\hfill{}\textsl{Merci à Christophe et Denis pour leurs retours et éclairages !}
-
-\hfill{}\textsl{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
-
-~
-
-\vfill
-
-\hrule
-
-\medskip
-
-\TableauDocumentation
-
-\medskip
-
-\hrule
-
-\vfill
-
-~
+\input{ProfLycee-doc-pagegarde.tex}
\newpage
@@ -416,223 +329,7 @@
\newpage
-\part{Introduction}
-
-\section{Le package ProfLycee}
-
-\subsection{\og Philosophie \fg{} du package}
-
-\begin{noteblock}
-Ce \ctex{package}, très largement inspiré (et beaucoup moins abouti) de l'excellent \ctex{ProfCollege} de C. Poulain et des excellents \ctex{tkz-*} d'A. Matthes, va définir quelques outils pour des situations particulières qui ne sont pas encore dans \ctex{ProfCollege}.
-
-On peut le voir comme un (maigre) complément à \ctex{ProfCollege}, et je précise que la syntaxe est très proche (car pertinente de base) et donc pas de raison de changer une \textit{équipe qui gagne} !
-
-\medskip
-
-Il se charge de manière classique, dans le préambule, par \ctex{\textbackslash usepackage\{ProfLycee\}}. Il charge des {packages} utiles, mais j'ai fait le choix de laisser l'utilisateur gérer ses autres {packages}, comme notamment \ctex{amssymb} qui peut poser souci en fonction de la \textit{position} de son chargement.
-
-L'utilisateur est libre de charger ses autres {packages} utiles et habituels, ainsi que ses \textsf{polices} et \textsf{encodages} habituels !
-\end{noteblock}
-
-\begin{cautionblock}
-\cmaj{2.7.2} Pour des soucis de compatibilités, \ctex{xcolor} n'est plus chargé, par défaut, avec les options \textsf{[table,svgnames]}, les couleurs de base de \ctex{xcolor} sont toutefois accessibles (une seule couleur, \textsf{CouleurVertForet} a été définie) !
-
-Il est cependant possible, grâce à l'option \Cle{[xcolor]} à passer au chargement du package, de charger \ctex{xcolor} avec l' option \textsf{[table,svgnames]}.
-\end{cautionblock}
-
-\begin{importantblock}
-Le {package} \ctex{ProfLycee} charge et utilise les {packages} :
-
-\begin{itemize}
- \item \ctex{mathtools}, \ctex{amssymb}, \ctex{xspace}, \ctex{esvect}, \ctex{interval} ;
-% \item \ctex{xcolor} avec l' option \textsf{[table,svgnames]} ;
- \item \ctex{tikz}, \ctex{pgf}, \ctex{pgffor}, \ctex{nicefrac}, \ctex{nicematrix} ;
- \item \ctex{tcolorbox} avec les librairies \ctex{breakable,fitting,skins,listings,listingsutf8,hooks} ;
- \item \ctex{xparse}, \ctex{xstring}, \ctex{simplekv}, \ctex{xinttools} ;
- \item \ctex{listofitems}, \ctex{xintexpr} , \ctex{xintbinhex}, \ctex{xintgcd} ;
- \item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{randomlist}, \ctex{fancyvrb}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{importantblock}
-
-\begin{tipblock}
-J'ai utilisé les {packages} de C. Tellechea, je vous conseille d'aller jeter un œil sur ce qu'il est possible de faire en \LaTeX{} avec \ctex{listofitems}, \ctex{randomlist}, \ctex{simplekv} ou encore \ctex{xstring} !
-\end{tipblock}
-
-\subsection{Chargement du package}
-
-\begin{PresCodeTexPL}{listing only}
-%exemple de chargement pour une compilation en (pdf)latex
-\documentclass{article}
-\usepackage{ProfLycee} % ou \usepackage[xcolor]{ProfLycee}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-...
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%exemple de chargement pour une compilation en (xe/lua)latex
-\documentclass{article}
-\usepackage{ProfLycee} % ou \usepackage[xcolor]{ProfLycee}
-\usepackage{fontspec}
-...
-\end{PresCodeTexPL}
-
-\pagebreak
-
-\subsection{Librairies}\label{librairies}
-
-\begin{warningblock}
-\cmaj{2.5.0} Le package fonctionne désormais avec un système de \clib{librairies}, qui utilisent et chargent des packages spécifiques, avec des compilations particulières, donc l'utilisateur utilisera un système de chargement similaire à celui de \textsf{tcolorbox} ou \textsf{tikz}, dans le préambule, et une fois le package appelé.
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-\usepackage{ProfLycee}
-\useproflyclib{...,...}
-\end{PresCodeTexPL}
-
-\begin{noteblock}
-Les librairies disponibles seront indiquées dans les sections spécifiques. Pour le moment, il existe :
-
-\begin{itemize}
- \item \clib{piton} (page \pageref{pythonpiton}) ;
- \item \clib{minted} (page \pageref{pytminted}) ;
- \item \clib{pythontex} (page \pageref{pythontex}) ;
- \item \clib{ecritures} (page \pageref{ecrituresmath}).
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\begin{warningblock}
-\cmaj{2.5.8} Pour le package \ctex{piton}, la version minimale requise est la \ctex{1.5} pour bénéficier d'un rendu optimal (au niveau des marges) de la présentation du code \textsf{Python}.
-\end{warningblock}
-
-\begin{noteblock}
-En compilant (notamment avec les librairies \clib{minted} et \clib{pythontex}) on peut spécifier des répertoires particuliers pour les (ou des) fichiers auxiliaires.
-
-Avec l'option \Cle{build}, l'utilisateur a la possibilité de placer les fichiers temporaires de \clib{minted} et \clib{pythontex} dans un répertoire \menu{build} du répertoire courant.
-
-\smallskip
-
-Dans ce cas il faut créer au préalable le répertoire \menu{build} avant de compiler un fichier, pour éviter toute erreur !
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-...
-\usepackage[build]{ProfLycee}
-\useproflyclib{...}
-...
-\end{PresCodeTexPL}
-
-\begin{noteblock}
-L'option \Cle{build} charge certains packages (librairies \clib{minted} et \clib{pythontex}) avec les options :
-
-\begin{itemize}
- \item \ctex{\textbackslash setpythontexoutputdir\{./build/pythontex-files-\textbackslash jobname\}}
- \item \ctex{\textbackslash RequirePackage[outputdir=build]\{minted\}}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\subsection{Gestion des fontes}\label{amssymb}
-
-\begin{warningblock}
-\cmaj{2.6.5} Sous \hologo{XeLaTeX} \& \hologo{LuaLaTeX}, \ctex{ProfLycee} utilisant le package \ctex{mathtools}, il est nécessaire de placer l'appel à \ctex{ProfLycee} {\em avant} l'appel des fontes.
-
-\smallskip
-
-Sous \hologo{XeLaTeX} \& \hologo{LuaLaTeX}, certaines fontes (par exemple \textsf{fourier-otf}) redéfinissent les fontes générées par le package \ctex{amssymb} et peuvent provoquer un \og warning \fg{} au mieux, une erreur de compilation au pire.
-
-\smallskip
-
-Pour cela, on pourra appeler \ctex{ProfLycee} avec l'option \Cle{nonamssymb} (idée reprise de \ctex{ProfCollege}).
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-\documentclass{article}
-\usepackage[nonamssymb]{ProfLycee}
-\usepackage{fourier-otf}
-\end{PresCodeTexPL}
-
-\pagebreak
-
-\section{Compléments}
-
-\subsection{Le système de \og clés/options \fg}
-
-\begin{tipblock}
-L'idée est de conserver -- autant que faire se peut -- l'idée de \Cle{Clés} qui sont :
-%
-\begin{itemize}
- \item modifiables ;
- \item définies (en majorité) par défaut pour chaque commande.
-\end{itemize}
-
-Pour certaines commandes, le système de \Cle{Clés} pose quelques soucis, de ce fait le fonctionnement est plus \textit{basique} avec un système d'\textsf{arguments} \textit{optionnels} (souvent entre \textsf{[\ldots]}) ou \textit{obligatoires} (souvent entre \textsf{\{\ldots\}}).
-
-\smallskip
-
-À noter que les :
-%
-\begin{itemize}
- \item les \Cle{Clés} peuvent être mises dans n'importe quel ordre, elles peuvent être omises lorsque la valeur par défaut est conservée ;
- \item les \textsf{arguments} doivent, eux, être positionnés dans le \textit{bon ordre}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{noteblock}
-Les \textsf{commandes} et \textsf{environnements} présentés seront explicités via leur \textsf{syntaxe} avec les \textsf{options/clés} ou \textsf{arguments}.
-
-Autant que faire se peut, des exemples/illustrations/remarques seront proposés à chaque fois.
-\end{noteblock}
-
-\begin{noteblock}
-À noter que certaines commandes disponibles sont liées à un environnement \ctex{tikzpicture}, elles peuvent ne pas être autonomes mais permettent de conserver -- en parallèle -- toute commande liée à \TikZ{} !
-\end{noteblock}
-
-\subsection{Compilateur(s)}
-
-\begin{noteblock}
-Le package \ctex{ProfLycee} est compatible avec les compilateurs classiques : \textsf{latex}, \textsf{pdflatex} ou encore \textsf{lualatex}.
-
-\smallskip
-
-En ce qui concerne les codes \textsf{librairies}, il faudra :
-
-\begin{itemize}
- \item \clib{pythontex} : compiler en chaîne \textsf{(xxx)latex + pythontex + (xxx)latex} ;
- \item \clib{minted} : compiler avec \textsf{shell-escape} (ou \textsf{write18}) ;
- \item \clib{piton} : compiler en \hologo{LuaLaTeX} et \textsf{shell-escape} (ou \textsf{write18}).
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\subsection{Problèmes éventuels\ldots}
-
-\begin{noteblock}
-Certaines \textsf{commandes} sont à intégrer dans un environnement \TikZ, afin de pouvoir rajouter des éléments, elles ont été testés dans des environnement \ctex{tikzpicture}, à vérifier que la gestion des axes par l'environnement \ctex{axis} est compatible\ldots
-
-%\smallskip
-%
-%Certains packages ont une fâcheuse tendance à être tatillons sur leurs options (les \textit{fameux} \textsf{option clash for} \ldots) ou leur \textit{position} dans le chargement, donc attention notamment au chargement de \ctex{xcolor} et de \ctex{amssymb} !
-
-\smallskip
-
-En dehors de cela, ce sont des tests multiples et variés qui permettront de détecter d'éventuels bugs !
-\end{noteblock}
-
-\pagebreak
-
-~
-
-\vfill
-
-\hfill\tikz \draw (0,0) node[above right=0pt,inner sep=0pt,outer sep=0pt,rotate=25,scale=4] {$\leftrightsquigarrow$ Bonne(s) découverte(s) $\leftrightsquigarrow$} ;\hfill~
-
-\vfill
-
-~
+\input{ProfLycee-doc-introduction.tex}
\newpage
@@ -646,270 +343,7 @@ En dehors de cela, ce sont des tests multiples et variés qui permettront de dé
\newpage
-\part{Liste des commandes, par thème}
-
-\begin{noteblock}
-\cmaj{2.0.0} Cette section contient un \textit{résumé} des différentes commandes et environnements disponibles dans \ctex{ProfLycee}.
-
-Elles sont présentées de manière \textit{succincte}, mais elles sont présentées de manière \textit{détaillée} dans la suite de la documentation.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%Résolution approchée d'une équation f(x)=k
-\ResolutionApprochee[clés]{équation}[macro]
-
-%Présentation d'une solution par balayage (TVI)
-\SolutionTVI[options]{fonction}{valeur}
-
-%Calculer le terme d'une suite récurrente simple, toile pour une suite récurrente simple
-\CalculTermeRecurrence[options]{fonction associée}
-\ToileRecurrence[clés][options du tracé][option supplémentaire des termes]
-
-%Mise en forme de la conclusion d'un seuil
-\SolutionSeuil[options]{fonction associée}{seuil}
-
-%Valeur approchée d'une intégrale
-\IntegraleApprochee[clés]{fonction}{a}{b}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%fenêtre de repérage en tikz et courbe
-\GrilleTikz[options][options grille ppale][options grille second.]
-\AxesTikz[options] \AxexTikz[options]{valeurs} \AxeyTikz[options]{valeurs}
-\FenetreSimpleTikz[options](opt axes)<opt axe Ox>{liste valx}<opt axe Oy>{liste valy}
-\DeclareFonctionTikz[nom]{expr}
-\CourbeTikz[options]{fonction}{valxmin:valxmax}
-
-%courbe d'interpolation, tangente, dans un environnement tikz
-\SplineTikz[options]{liste}
-\TangenteTikz[options]{liste}
-\PtsDiscontinuite[options]{liste}
-
-%schémas pour le signe affine/trinôme, dans un environnement tikz
-\MiniSchemaSignes(*)[clés]<options tikz>
-\MiniSchemaSignesTkzTab[options]{numligne}[échelle][décalage horizontal]
-
-%intégrales et méthodes graphiques
-\IntegraleApprocheeTikz[clés]{nom_fonction}{a}{b}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%présentation de code Python
-\begin{CodePythonLst}(*)[clés]{commandes tcbox}...\end{CodePythonLst}
-\begin{CodePythonLstAlt}(*)[clés]{commandes tcbox}...\end{CodePythonLstAlt}
-%:=librairie piton
-\begin{CodePiton}[options piton]{commandes tcbox}<1ère ligne>...\end{CodePiton}
-\begin{PitonConsole}<clés>{commandes tcbox}...\end{PitonConsole}
-%:=librairie pythontex
-\begin{CodePythontex}[clés]{commandes tcbox}...\end{CodePythontex}
-\begin{CodePythontexAlt}[clés]{commandes tcbox}...\end{CodePythontexAlt}
-\begin{ConsolePythontex}[options]{}...\end{ConsolePythontex}
-%:=librairie minted
-\begin{CodePythonMinted}(*)[clés]{commandes tcbox}...\end{CodePythonMinted}
-\begin{CodePythonMintedAlt}(*)[largeur][clés]{commandes tcbox}...\end{CodePythonMintedAlt}
-
-%présentation de pseudocode
-\begin{PseudoCode}(*)[clés]{commandes tcbox}...\end{PseudoCode}
-\begin{PseudoCodeAlt}(*)[largeur][clés]{commandes tcbox}...\end{PseudoCodeAlt}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%terminal OS
-\begin{TerminalWin}[largeur]{clés}[options]...\end{TerminalWin}
-\begin{TerminalUnix}[largeur]{clés}[options]...\end{TerminalUnix}
-\begin{TerminalOSX}[largeur]{clés}[options]...\end{TerminalOSX}
-
-%code Capytale
-\CartoucheCapytale(*)[options]{code capytale}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%pavé et tétraèdre, dans un environnement tikz
-\PaveTikz[options]
-\TetraedreTikz[options]
-
-%cercle trigo, dans un environnement tikz
-\CercleTrigo[clés]
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%Affichage des coordonnées d'un point (2 ou 3 coordonnées)
-\AffPoint[options de formatage](liste des coordonnées)
-%Affichage des coordonnées d'un vecteur (2 ou 3 coordonnées)
-\AffVecteur[options de formatage]<options nicematrix>(liste des coordonnées)
-
-%Avec un vecteur normal et un point
-\TrouveEqCartPlan[clés](vecteur normal)(point)
-%Avec deux vecteurs directeurs et un point
-\TrouveEqCartPlan[clés](vecteur dir1)(vecteur dir2)(point)
-%Avec trois points
-\TrouveEqCartPlan[clés](point1)(point2)(point3)
-
-%Avec un vecteur directeur et un point
-\TrouveEqParamDroite[clés](vecteur directeur)(point)
-%Avec deux points
-\TrouveEqParamDroite[clés](point1)(point2)
-
-%Avec un vecteur normal (choix par défaut) et un point
-\TrouveEqCartDroite[clés](vecteur normal)(point)
-%Avec un vecteur directeur et un point
-\TrouveEqCartDroite[clés,VectDirecteur](vecteur directeur)(point1)
-%Avec deux points
-\TrouveEqCartDroite[clés](point1)(point2)
-
-%Avec le point et le plan via vect normal + point
-\TrouveDistancePtPlan(point)(vec normal du plan)(point du plan)
-%Avec le point et le plan via vect normal + point
-\TrouveDistancePtPlan(point)(équation cartésienne)
-
-%Avec le vecteur
-\TrouveNorme(vecteur)
-%Avec deux points
-\TrouveNorme(point 1)(point 2)
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%Équation réduite d'une droite
-\EquationReduite[option]{A/xa/ya,B/xb/yb}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%paramètres d'une régression linéaire, nuage de points
-\CalculsRegLin[clés]{listeX}{listeY}
-\PointsRegLin[clés]{listeX}{listeY}
-
-%stats à 2 variables, dans un environnement tikz
-\GrilleTikz[options][options grille ppale][options grille second.]
-\AxesTikz[options]
-\AxexTikz[options]{valeurs} \AxeyTikz[options]{valeurs}
-\FenetreTikz \OrigineTikz
-\FenetreSimpleTikz[options](opt axes)<opt axe Ox>{liste valx}<opt axe Oy>{liste valy}
-\NuagePointsTikz[options]{listeX}{listeY}
-\PointMoyenTikz[options]
-\CourbeTikz[options]{formule}{domaine}
-
-%boîte à moustaches, dans un environnement tikz
-\BoiteMoustaches[options]
-\BoiteMoustachesAxe[options]
-
-%histogrammes
-\Histogramme(*)[options]{données}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%loi binomiale B(n,p)
-\CalcBinomP{n}{p}{k}
-\CalcBinomC{n}{p}{a}{b}
-\BinomP(*)[prec]{n}{p}{k}
-\BinomC(*)[prec]{n}{p}{a}{b}
-
-%loi de Poisson P(l)
-\CalcPoissP{l}{k}
-\CalcPoissC{l}{a}{b}
-\PoissonP(*)[prec]{l}{k}
-\PoissonC(*)[prec]{l}{a}{b}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%loi géométrique G(p)
-\CalcGeomP{p}{k}
-\CalcGeomC{l}{a}{b}
-\GeomP{p}{k}
-\GeomC{l}{a}{b}
-
-%loi hypergéométrique H(N,n,m)
-\CalcHypergeomP{N}{n}{m}{k}
-\CalcHypergeomP{N}{n}{m}{a}{b}
-\HypergeomP{N}{n}{m}{k}
-\HypergeomC{N}{n}{m}{a}{b}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%loi normale N(m,s)
-\CalcNormC{m}{s}{a}{b}
-\NormaleC(*)[prec]{m}{s}{a}{b}
-
-%loi exponentielle E(l)
-\CalcExpoC{l}{a}{b}
-\ExpoC(*)[prec]{l}{a}{b}
-
-%arbres de probas
-\ArbreProbasTikz[options]{donnees}
-\begin{EnvArbreProbasTikz}[options]{donnees}...\end{EnvArbreProbasTikz}
-
-%schémas lois continues
-\LoiNormaleGraphe[options]<options tikz>{m}{s}{a}{b}
-\LoiExpoGraphe[options]<options tikz>{l}{a}{b}
-
-%fonction de répartition discrète, dans une environnement tikz
-\FonctionRepartTikz[clés]{probas,borneinf,bornesup / probas,borneinf,bornesup / ...}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%entier aléatoire entre a et b
-\NbAlea{a}{b}{macro}
-%nombre décimal (n chiffres après la virgule) aléatoire entre a et b+1 (exclus)
-\NbAlea[n]{a}{b}{macro}
-%création d'un nombre aléatoire sous forme d'une macro
-\VarNbAlea{macro}{calcul}
-%liste d'entiers aléatoires
-\TirageAleatoireEntiers[options]{macro}
-%liste des diviseurs
-\ListeDiviseurs(*)[option]{nombre}
-%arbre des diviseurs
-\ArbreDiviseurs[options]{nombre}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%arrangement Anp
-\Arrangement(*)[option]{p}{n}
-
-%arrangement Cnp (p parmi n)
-\Combinaison(*)[option]{p}{n}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%conversions
-\ConversionDecBin(*)[clés]{nombre}
-\ConversionBinHex[clés]{nombre}
-\ConversionHexBin[clés]{nombre}
-\ConversionVersDec[clés]{nombre}
-\ConversionBaseDix[clés]{nombre}{base de départ}
-\ConversionDepuisBaseDix[options]{nombre en base 10}{base d'arrivée}
-
-%PGCD présenté
-\PresentationPGCD[options]{a}{b}
-
-%Équation diophantienne
-\EquationDiophantienne[clés]{equation}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%conversion en fraction, simplification de racine
-\ConversionFraction(*)[option]{argument}
-\SimplificationRacine{expression}
-
-%ensemble d'éléments
-\EcritureEnsemble[clés]{liste}
-
-%trinôme, trinôme aléatoire
-\EcritureTrinome[options]{a}{b}{c}
-
-%mesure principale, lignes trigo
-\MesurePrincipale[options]{angle}
-\LigneTrigo(*)[booléens]{cos/sin/tan}(angle)
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%sudomaths
-\SudoMaths[options]{liste}
-\begin{EnvSudoMaths}[options]{grille}...\end{EnvSudoMaths}
-
-%fractales
-\FractaleTikz(*)[clés]<options tikz>
-\EtapesFloconKoch[clés]{étapes}
-\EtapesTapisSierpinski[clés]{étapes}
-\end{PresCodeTexPL}
+\input{ProfLycee-doc-listecommandes.tex}
\newpage
@@ -923,281 +357,7 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\newpage
-\part{Écritures d'objets mathématiques}\label{ecrituresmath}
-
-\section{Introduction}
-
-\begin{tipblock}
-Les commandes de cette section sont disponibles en chargeant la librairie \clib{ecritures}, car elles peuvent redéfinir des commandes personnelles déjà existantes !
-\end{tipblock}
-
-\section{Commandes}
-
-\subsection{Arrondi}
-
-\begin{tipblock}
-Il est possible de calculer/arrondir/formater un calcul mathématique, grâce aux package \ctex{siunitx} et \ctex{xinteval}.
-
-\begin{itemize}
- \item la version étoilée force l'affichage du \og + \fg{} pour les nombres positifs ;
- \item l'argument optionnel est la précision demandée (3 par défaut)
- \item l'argument obligatoire est le calcul, au langage \ctex{xinteval}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{}
-$1+\dfrac{7}{11} \approx \Arrondi{1+7/11} \approx \Arrondi[5]{1+7/11} \approx \Arrondi*[2]{1+7/11}$
-
-$\ln\big(1+\e^{4}\big) \approx \Arrondi[6]{log(1+exp(4))}$
-\end{PresCodeTexPL}
-
-\subsection{Ensembles et intervalles}
-
-\begin{tipblock}
-Les commandes suivantes permettent de composer les ensembles traditionnels, en mode \textit{tableau noir}.
-
-Elles sont dans un bloc \textsf{ensuremath}, donc les \textsf{\$...\$} ne sont pas nécessaires.
-
-\smallskip
-
-À noter la macro particulière pour l'ensemble des quaternions, pour éviter des erreurs éventuelles de \textit{re}définition.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{}
-\N, \Z, \D, \Q, \R, \C, \ensH, \N*, \Z*, \D*, \Q*, \R*, \C*, \ensH*
-\end{PresCodeTexPL}
-
-\begin{tipblock}
-Des intervalles peuvent être composés, grâce à la commande \ctex{\textbackslash IntervalleXX}, dont la base est le package \ctex{interval} :
-
-\begin{itemize}
- \item la commande est insérée dans un bloc \textsf{ensuremath} ;
- \item le séparateur est le point-virgule ;
- \item l'espacement autour du point-virgule est laissé aux réglages du document (\ctex{babel}, \ctex{frenchmath}, etc).
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{}
-\IntervalleFO{0}{+\infty} ou \IntervalleOO{0}{+\infty} ou \IntervalleOO{-\infty}{0} ou \IntervalleOF{-\infty}{0}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-\IntervalleFF{\frac12}{\sqrt{26}} ou \IntervalleOO{\frac12}{\sqrt{26}} ou
-\IntervalleFO{\dfrac12}{\sqrt{26}} ou \IntervalleFO{\dfrac12}{\sqrt{26}}
-\end{PresCodeTexPL}
-
-\subsection{Repères et coordonnées}
-
-\begin{tipblock}
-Des vecteurs/repères/coordonnées peuvent être composées :
-
-\begin{itemize}
- \item les vecteurs sont mis en forme par le package \ctex{esvect} (y compris en version étoilée pour les indices) ;
- \item des coordonnées de point/vecteur dans le plan ou l'espace ;
- \item des repères génériques, avec choix du séparateur entre le point et les vecteurs ;
- \item les versions étoilées des repères n'alignent pas les flèches.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{}
-%vecteurs
-\Vecteur{\imath} et \Vecteur{u} et \Vecteur{AB}
-
-$\Vecteur{AB}+\Vecteur{BC} = \Vecteur{AC}$
-
-$\Vecteur*{u}[1]+\Vecteur*{v}[2] = \Vecteur*{w}[3]$
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%coordonnées points
-\CoordPtPl{4}{-2} ou \CoordPtPl{\frac12}{\frac47}
-
-\CoordPtEsp{4}{-2}{7} ou \CoordPtEsp{-2}{\frac12}{\frac47}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%coordonnées vecteurs
-\CoordVecPl{4}{-2} ou \CoordVecPl{\frac12}{\frac47}
-
-\CoordVecEsp{4}{-2}{7} ou \CoordVecEsp{-2}{\frac12}{\frac47}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%matrices 2x2
-\MatDeux{4}{-2}{1}{-5}
-
-\MatDeux{\frac47}{-1}{0}{-\frac17}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%repères classiques
-\RepereOij ou \RepereOij* ou \RepereOij[Sep={,}] ou \RepereOij*[Sep={,}]
-
-\RepereOijk ou \RepereOijk* ou \RepereOijk[Sep={,}] ou \RepereOijk*[Sep={,}]
-
-\RepereOuv ou \RepereOuv* ou \RepereOuv[Sep={,}] ou \RepereOuv*[Sep={,}]
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%repères personnalisés
-\ReperePlan{A}{AB}{AC} ou \ReperePlan*{A}{AB}{AC} ou \ReperePlan*{O}{OI}{OJ} ou \ReperePlan[Sep={,}]{O}{OI}{OK}
-
-\RepereEspace{A}{AB}{AC}{AD} ou \RepereEspace*{A}{AB}{AC}{k} ou \RepereEspace{D}{i}{j}{k}
-\end{PresCodeTexPL}
-
-\subsection{Divers}
-
-\begin{tipblock}
-La librairie \clib{ecritures} permet également de définir des commandes pour :
-
-\begin{itemize}
- \item composer le nom d'une courbe ;
- \item composer le \og i \fg{} et le \og e \fg{} en romain ;
- \item composer le complexe $\j$ en mode algébrique ou exponentielle ;
- \item composer un modulo avec choix de la congruence ;
- \item composer une suite numérique ;
- \item composer une intégrale (mode \textsf{displaystyle}).
-\end{itemize}
-
-À noter que les commandes sont dans un bloc \textsf{ensuremath}.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{}
-%version normale := mathcal
-%version étoilée := mathscr (si chargé)
-
-\Courbe et \Courbe[f] et \Courbe[g^{-1}]
-
-\Courbe* et \Courbe*[f] et \Courbe*[g^{-1}]
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-$\e^{\i \pi} = -1$
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-On a $\j = \jfalg = \jfexp$
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%La version étoilée augmente l'espacement, l'argument optionnel change la présentation
-$21 \equiv 1 \Modulo{5} \equiv 1 \Modulo[Par]{5} \equiv 1 \Modulo[Txt]{5}$
-
-$21 \equiv 1 \Modulo*{5} \equiv 1 \Modulo*[Par]{5} \equiv 1 \Modulo*[Txt]{5}$
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-Soient les suites \Suite{u} et \Suite[p]{v} et \Suite[q]{\Omega}.
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-$I = \Integrale f(x) \dx = \Integrale f(t) \dx[t]$
-\end{PresCodeTexPL}
-
-\subsection{Probabilités}
-
-\begin{tipblock}
-La librairie \clib{ecritures} permet également de définir des commandes pour :
-
-\begin{itemize}
- \item composer une loi classique (binomiale, exponentielle, etc) avec \textsf{mathcal} ou \textsf{mathscr} ;
- \item composer espérance, variance et écart-type.
-\end{itemize}
-
-À noter que les commandes sont dans un bloc \textsf{ensuremath}.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{}
-%version normale := mathcal
-%version étoilée := mathscr (si chargé)
-
-\LoiNormale{150}{25} ou \LoiNormale*{150}{25}
-
-\LoiBinomiale{150}{\num{0.45}} ou \LoiBinomiale*{150}{\num{0.45}}
-
-\LoiPoisson{5} ou \LoiPoisson*{5}
-
-\LoiExpo{\num{0.001}} ou \LoiExpo*{\num{0.001}}
-
-\LoiUnif{\IntervalleFF{5}{60}} ou \LoiUnif*{\IntervalleFF{5}{60}}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%par défaut E et V en \mathbb
-\Esper{X} ou \Esper[E]{X} \\
-\Varianc{X^2} ou \Varianc[V]{X^2} \\
-\EcType{X^2}
-\end{PresCodeTexPL}
-
-\pagebreak
-
-\section{Collection d'objets}\label{ensembles}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est d'obtenir une commande pour simplifier l'écriture d'un ensemble d'éléments, en laissant gérer les espaces.
-
-Les délimiteurs de l'ensemble créé sont toujours \textsf{\{~~\}}.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\EcritureEnsemble[clés]{liste}
-\end{PresCodeTexPL}
-
-\subsection{Commande et options}
-
-\begin{cautionblock}
-Peu d'options pour ces commandes :
-
-\begin{itemize}
- \item le premier argument, \textit{optionnel}, permet de spécifier les \Cle{Clés} :
- \begin{itemize}
- \item clé \Cle{Sep} qui correspond au délimiteur des éléments de l'ensemble ; \hfill{}défaut \Cle{;}
- \item clé \Cle{Option} qui est un code (par exemple \textsf{strut}\dots) inséré avant les éléments ;\hfill{}défaut \Cle{vide}
- \item un booléen \Cle{Mathpunct} qui permet de préciser si on utilise l'espacement mathématique \textsf{mathpunct}.
-
- \hfill{}défaut \Cle{true}
- \end{itemize}
- \item le second, \textit{obligatoire}, est la \textsf{liste} des éléments, séparés par \textsf{/}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-$\EcritureEnsemble{a/b/c/d/e}$
-$\EcritureEnsemble[Mathpunct=false]{a/b/c/d/e}$
-$\EcritureEnsemble[Sep={,}]{a/b/c/d/e}$
-$\EcritureEnsemble[Option={\strut}]{a/b/c/d/e}$ % \strut pour "augmenter" un peu la hauteur des {}
-$\EcritureEnsemble{ \frac{1}{1+\frac{1}{3}} / b / c / d / \frac{1}{2} }$
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-$\EcritureEnsemble{a/b/c/d/e}$
-
-\smallskip
-
-$\EcritureEnsemble[Mathpunct=false]{a/b/c/d/e}$
-
-\smallskip
-
-$\EcritureEnsemble[Sep={,}]{a/b/c/d/e}$
-
-\smallskip
-
-$\EcritureEnsemble[Option={\strut}]{a/b/c/d/e}$
-
-\smallskip
-
-$\EcritureEnsemble{ \displaystyle\frac{1}{1+\frac{1}{3}} / b / c / d / \displaystyle\frac{1}{2} }$
-\end{PresCodeSortiePL}
-
-\begin{noteblock}
-Attention cependant au comportement de la commande avec des éléments en mode \textsf{mathématique}, ceux-ci peuvent générer une erreur si \textsf{displaystyle} n'est pas utilisé\ldots
-\end{noteblock}
+\input{ProfLycee-doc-ecritures.tex}
\newpage
@@ -1211,391 +371,7 @@ Attention cependant au comportement de la commande avec des éléments en mode \
\newpage
-\part{Outils pour l'analyse}
-
-\section{Résolution approchée d'une équation}\label{resolapprox}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.1.4} L'idée est de proposer une commande pour résoudre, de manière approchée, une équation du type $f(x)=k$ sur un intervalle (fermé) donné.
-
-\smallskip
-
-La méthode utilisée est la \textbf{dichotomie}, pour plus de rapidité que la méthode \textit{simple} par balayage.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\ResolutionApprochee[clés]{équation}[macro]
-\end{PresCodeTexPL}
-
-\begin{PresCodePL}{}
-\ResolutionApprochee[Intervalle=0:10]{x**3-2*x**2-x-1=2}%
-$x_0 \approx \num[minimum-decimal-digits=2]{\masolutiond}$ par défaut ;\\
-$x_0 \approx \num[minimum-decimal-digits=2]{\masolutione}$ par excès ;\\
-$x_0 \approx \num[minimum-decimal-digits=2]{\masolutiona}$ arrondi à $10^{-2}$.\\
-
-\hfill\includegraphics[scale=0.45]{./graphics/pl-solve_a}\hfill~
-\end{PresCodePL}
-
-\subsection{Clés et options}
-
-\begin{cautionblock}
-Quelques explications sur les \Cle{clés} et sur les arguments :
-
-\begin{itemize}
- \item la clé \Cle{Precision} pour le nombre de chiffres après la virgule de la solution ; \hfill{}défaut \Cle{2}
- \item la clé (obligatoire !) \Cle{Intervalle} qui permet de préciser l'intervalle initial de recherche ;
- \item la clé \Cle{Variable} qui permet de spécifier la variable de l'équation ;\hfill{}défaut \Cle{x}
- \item l'argument \textit{obligatoire} est l'équation, sous la forme $f(\ldots)=k$ (ou $f(\ldots)$ pour $f(\ldots)=0$) ;
- \item l'argument \textit{optionnel} est la base de la \textit{<macro>} qui sert à stocker les valeurs :
-
- \hfill{}défaut \Cle{masolution}
- \begin{itemize}
- \item \ctex{\textbackslash<macro>d} pour la valeur approchée par défaut ;
- \item \ctex{\textbackslash<macro>e} pour la valeur approchée par excès ;
- \item \ctex{\textbackslash<macro>a} pour la valeur approchée.
- \end{itemize}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-\ResolutionApprochee[Precision=4,Intervalle=0:2]{exp(0.5*x)+x**2-4=0}%
-Une valeur approchée, à $10^{-4}$ près, d'une solution de $\text{e}^{0,5x}+x^2-4=0$ sur $\left[0;2\right]$ est $\beta$ avec :
-\begin{itemize}
- \item $\beta \approx \num[minimum-decimal-digits=4]{\masolutiond}$ par défaut ;
- \item $\beta \approx \num[minimum-decimal-digits=4]{\masolutione}$ par excès ;
- \item $\beta \approx \num[minimum-decimal-digits=4]{\masolutiona}$.
-\end{itemize}
-\ResolutionApprochee[Variable=t,Intervalle=-1:2]{3*t*exp(-0.5*t+1)=4}[SolA]%
-Une valeur approchée, à $10^{-2}$ près d'une solution de $3t\,\rm{e}^{-0,5t+1}=4$ est $t_1$ avec :
-\begin{itemize}
- \item $t_1 \approx \num[minimum-decimal-digits=2]{\SolAd}$ par défaut ;
- \item $t_1 \approx \num[minimum-decimal-digits=2]{\SolAe}$ par excès ;
- \item $t_1 \approx \num[minimum-decimal-digits=2]{\SolAa}$.
-\end{itemize}
-\ResolutionApprochee[Precision=3,Variable=t,Intervalle=2:10]{3*t*exp(-0.5*t+1)=4}[SolB]
-Une valeur approchée, à $10^{-2}$ près d'une solution de $3t\,\text{e}^{-0,5t+1}=4$ est $t_2$ avec :
-\begin{itemize}
- \item $t_2 \approx \num[minimum-decimal-digits=2]{\SolBd}$ par défaut ;
- \item $t_2 \approx \num[minimum-decimal-digits=2]{\SolBe}$ par excès ;
- \item $t_2 \approx \num[minimum-decimal-digits=2]{\SolBa}$.
-\end{itemize}
-
-\medskip
-
-\hfill\includegraphics[scale=0.45]{./graphics/pl-solve_b}~~
-\includegraphics[scale=0.45]{./graphics/pl-solve_c}~~
-\includegraphics[scale=0.45]{./graphics/pl-solve_d}\hfill~
-\end{PresCodePL}
-
-\newpage
-
-\section{Présentation d'une solution d'équation par balayage}\label{solutiontvi}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.0.4} L'idée est de présenter l'obtention d'une solution approchée d'équation par balayage, dans le cadre du TVI par exemple. Les calculs et tests sont effectués grâce au package \ctex{xinttools}, et le formatage par \ctex{tabularray} et \ctex{sinuitx}.
-\end{tipblock}
-
-\begin{warningblock}
-Le code ne trouve pas la solution, il met \textit{juste} en forme mais effectue quand même les calculs d'images et les tests.
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-\SolutionTVI[options]{fonction}{valeur}
-\end{PresCodeTexPL}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Plusieurs \Cle{Clés} sont disponibles pour cette commande, relative à une équation du type $f(x)=k$ :
-
-\begin{itemize}
- \item la clé \Cle{NomFct} qui permet de spécifier le nom de la fonction ;\hfill{}défaut \Cle{f}
- \item la clé \Cle{NomSol} qui permet de spécifier le nom de la fonction ;\hfill{}défaut \Cle{\textbackslash{}alpha}
- \item les clés \Cle{va} et \Cle{vb} qui sont les bornes inférieure et supérieure de l'encadrement ;
- \item la clé \Cle{Precision} qui est la précision des calculs pour les images ;\hfill{}défaut \Cle{2}
- \item la clé \Cle{Stretch} qui permet d'espacer les lignes ;\hfill{}défaut \Cle{1.15}
- \item les booléens \Cle{Balayage} ou \Cle{Calculatrice} pour afficher un texte en amont ;\hfill{}défaut \Cle{false}
- %\item le booléen \Cle{Simple} pour une présentation plus \textit{neutre} ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{Majuscule} qui affiche le texte avant, avec une majuscule au début.\hfill{}défaut \Cle{true}
-\end{itemize}
-
-\smallskip
-
-Le premier argument \textit{obligatoire} est la fonction, en syntaxe \ctex{xint} et avec comme variable $x$, et le second la valeur de $k$.
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-Pour $f(x)=0$ avec $f(x)=x^2-2$. On obtient \SolutionTVI[va=1.414,vb=1.415,Precision=3]{x**2-2}{0}.
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Avec $\varphi(t)=3t\,\rm{e}^{-0,5t+1}=5$,
-\SolutionTVI[Majuscule=false,Calculatrice,va=1.02,vb=1.03,NomFct=\varphi]
- {3*x*exp(-0.5*x+1)}{5}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-On s'intéresse à $g(x)=\num{1,5}$ avec $g(x)=\ln(x)$.\\
-\SolutionTVI%
- [Balayage,Stretch=1.5,va=4.48,vb=4.49,NomFct=g,Precision=4,NomSol={x_0}]{log(x)}{1.5}.
-\end{PresCodePL}
-
-\subsection{Interaction avec la commande de résolution approchée}
-
-\begin{tipblock}
-\cmaj{2.1.4} L'idée est de récupérer les valeurs par défaut et par excès pour le TVI grâce à la commande \ctex{\textbackslash ResolutionApprochee}.
-\end{tipblock}
-
-\begin{PresCodePL}{}
-On s'intéresse à $g(x)=\num{1,5}$ avec $g(x)=\ln(x)$ sur l'intervalle $\left[3;5\right]$.
-
-\ResolutionApprochee[Intervalle=3:5]{log(x)=1.5}[SolLn]
-\SolutionTVI%
- [Balayage,Stretch=1.5,va={\SolLnd},vb={\SolLne},
- NomFct=g,Precision=4,NomSol={x_0}]{log(x)}{1.5}.
-\end{PresCodePL}
-
-\begin{noteblock}
-À terme, peut-être que la commande \ctex{\textbackslash ResolutionApprochee} sera intégrée dans la commande \ctex{\textbackslash SolutionTVI} afin d'automatiser encore plus le procédé.
-\end{noteblock}
-
-\newpage
-
-\section{Suites récurrentes simples}\label{calcrecurr}
-
-\subsection{Idées}
-
-\begin{tipblock}
-\cmaj{2.0.3} L'idée est de proposer des commandes pour effectuer des calculs avec des suites récurrentes du type $u_{n+1}=f\big(u_n\big)$ :
-
-\begin{itemize}
- \item calcul de termes avec possibilité d'arrondir ;
- \item présentation de la conclusion de la recherche d'un seuil du type $u_n > S$ ou $u_n < S$.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{warningblock}
-\cmaj{2.1.0} Le code pour le seuil \textbf{trouve} également le rang cherché, il met en forme et effectue les calculs d'images.
-
-\smallskip
-
-\cmaj{2.0.5} Le choix a été fait de faire les calculs en mode \ctex{float} pour éviter les dépassements de capacité de \ctex{xint} liés aux boucles\ldots
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-%commande pour calculer et formater
-\CalculTermeRecurrence[options]{fonction associée}
-
-%mise en forme de la conclusion d'un seuil
-\SolutionSeuil[options]{fonction associée}{seuil}
-\end{PresCodeTexPL}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Plusieurs \Cle{Clés} sont disponibles pour la commande du calcul d'un terme :
-
-\begin{itemize}
- \item la clé \Cle{No} qui est le rang initial de la suite ;
- \item la clé \Cle{UNo} qui est le terme initial de la suite ;
- \item la clé \Cle{Precision} qui précise l'arrondi éventuel ;\hfill{}défaut \Cle{3}
- \item la clé \Cle{N} qui est l'indice du terme à calculer.
-\end{itemize}
-
-\smallskip
-
-L'argument \textit{obligatoire} est la fonction associée à la suite, en syntaxe \ctex{xint} et avec comme variable $x$.
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-Avec $\begin{dcases} u_0 = 50 \\ u_{n+1}=\dfrac{1}{u_n+2} \end{dcases}$.
-
-On obtient $u_{10} \approx \CalculTermeRecurrence[No=0,UNo=50,N=10]{1/(x+2)}$.
-
-On obtient $u_{15} \approx \CalculTermeRecurrence[Precision=4,No=0,UNo=50,N=15]{1/(x+2)}$.
-
-On obtient $u_{20} \approx \CalculTermeRecurrence[Precision=6,No=0,UNo=50,N=20]{1/(x+2)}$.
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-Avec $u_0 = 50$ et $u_{n+1}=\dfrac{1}{u_n+2}$.
-
-\smallskip
-
-On obtient $u_{10} \approx \CalculTermeRecurrence[No=0,UNo=50,N=10]{1/(x+2)}$ \hfill~sortie par défaut.
-
-\smallskip
-
-On obtient $u_{15} \approx \CalculTermeRecurrence[Precision=4,No=0,UNo=50,N=15]{1/(x+2)}$ \hfill~avec choix de la précision à $10^{-4}$.
-
-\smallskip
-
-On obtient $u_{20} \approx \CalculTermeRecurrence[Precision=6,No=0,UNo=50,N=20]{1/(x+2)}$ \hfill~avec choix de la précision à $10^{-6}$.
-\end{PresCodeSortiePL}
-
-\begin{cautionblock}
-Plusieurs \Cle{Clés} sont disponibles pour la commande du seuil :
-
-\begin{itemize}
- \item la clé \Cle{NomSuite} qui est le nom de la suite ;\hfill~défaut \Cle{u}
- \item la clé \Cle{No} qui est le rang initial de la suite ;
- \item la clé \Cle{UNo} qui est le terme initial de la suite ;
- %\item la clé \Cle{SolN} qui est la valeur de l'indice cherché ;
- \item la clé \Cle{Precision} qui précise l'arrondi éventuel ;\hfill{}défaut \Cle{2}
- \item la clé \Cle{Stretch} qui permet d'espacer les lignes ;\hfill{}défaut \Cle{1.15}
- \item les booléens \Cle{Balayage} ou \Cle{Calculatrice} pour afficher un texte en amont ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{Simple} pour une présentation plus \textit{neutre} ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{Majuscule} qui affiche le texte avant, avec une majuscule au début ;\hfill{}défaut \Cle{true}
- \item le booléen \Cle{Exact} qui affiche \ctex{=} au lieu de \ctex{\textbackslash approx} ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{Conclusion} pour afficher la conclusion ou non ;\hfill{}défaut \Cle{true}
- \item la clé \Cle{Sens} parmi \Cle{< / > / <= / >=} pour indiquer le type de seuil.\hfill{}défaut \Cle{>}
-\end{itemize}
-
-\smallskip
-
-Le premier argument \textit{obligatoire} est la fonction associée à la suite, en syntaxe \ctex{xint} et avec comme variable $x$, et le second est le seuil à dépasser.
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-Avec $\begin{dcases} u_1 = 2 \\ u_{n+1}=1+\dfrac{1+u_n^2}{1+u_n} \end{dcases}$,
-on cherche $n$ tel que $u_n > 5$.\\
-\SolutionSeuil[Balayage,No=1,UNo=2]{1+(1+x**2)/(1+x)}{5}. \SolutionSeuil[Calculatrice,Precision=4,No=1,UNo=2,Conclusion=false]%
-{1+(1+x**2)/(1+x)}{5}.
-\end{PresCodePL}
-
-\subsection{Exemple d'utilisation}
-
-\begin{PresCodePL}{}
-Avec $\begin{dcases} u_1 = 2 \\ u_{n+1}=1+\dfrac{1+u_n^2}{1+u_n} \end{dcases}$,
-on obtient le tableau de valeurs suivant :
-\begin{tabular}{c|c}
- $n$ & $u_n$ \\ \hline
- 1 & 2 \\
- \xintFor* #1 in {\xintSeq{2}{7}} \do {#1 & \CalculTermeRecurrence[No=1,UNo=2,N=#1]{1+(1+x**2)/(1+x)} \\}
-\end{tabular}\\
-
-\SolutionSeuil[Precision=4,No=1,UNo=2,Simple]{1+(1+x**2)/(1+x)}{10} (Ainsi $u_n > 10$ à partir de $n=\the\CompteurSeuil$)
-\end{PresCodePL}
-
-\newpage
-
-\section{Valeur approchée d'une intégrale}\label{calcintegr}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.6.1} L'idée est de proposer plusieurs approximations pour le calcul d'une intégrale, en utilisant :
-\begin{itemize}
- \item une méthode des rectangles (Gauche, Droite ou Milieu) ;
- \item la méthode des trapèzes ;
- \item la méthode de Simpson.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{warningblock}
-Il s'agit de valeurs approchées, mais la méthode de Simpson donne des valeurs satisfaisantes !
-
-Les méthodes \textit{Rectangles} ou \textit{Trapèzes} seront plutôt utiles pour des résultats obtenus par algorithme par exemple.
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-\IntegraleApprochee[clés]{fonction}{a}{b}
-\end{PresCodeTexPL}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Plusieurs \Cle{Clés} sont disponibles pour la commande de calcul :
-
-\begin{itemize}
- \item le booléen \Cle{ResultatBrut} qui donne le résultat obtenu grâce à \ctex{xint} ; \hfill~défaut : \Cle{false}
- \item la clé \Cle{Methode}, parmi \Cle{RectanglesGauche / RectanglesDroite / RectanglesMilieu / Trapezes / Simpson} pour spécifier la méthode utilisée ;
-
- \hfill~défaut : \Cle{Simpson}
- \item la clé \Cle{NbSubDiv} précise le nombre de subdivisions pour le calcul ; \hfill~défaut : \Cle{10}
- \item le booléen \Cle{AffFormule} qui affiche au préalable l'intégrale ;\hfill{}défaut \Cle{false}
- \item la clé \Cle{Expr} qui indique ce qui doit être affiché dans l'intégrale ; \hfill{}défaut \Cle{f(x)}
- \item la clé \Cle{Signe} qui indique le signe à afficher entre l'intégrale et le résultat ; \hfill{}défaut \Cle{\textbackslash approx}
- \item la clé \Cle{Variables} qui indique la variable à afficher dans le $\text{d}x$. \hfill{}défaut \Cle{x}
-\end{itemize}
-
-\smallskip
-
-Concernant les arguments obligatoires :
-
-\begin{itemize}
- \item le premier est la fonction à intégrer, en langage \ctex{xint}, avec comme variable $x$ ;
- \item les deux autres arguments sont les bornes de l'intégrale.
-\end{itemize}
-
-À noter que la commande, hormis dans sa version \Cle{ResultatBrut}, est à insérer de préférence dans un mode mathématique.
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-On s'intéresse à $\displaystyle\int_4^{10} f(x) \,\text{d}x$ avec $f(x)=\sqrt{x}$ :\\
-\begin{itemize}[itemsep=6pt,leftmargin=4cm]
- \item[\texttt{sortie par défaut} :] \IntegraleApprochee{sqrt(x)}{4}{10}
- \item[\texttt{résultat brut} :] \IntegraleApprochee[ResultatBrut]{sqrt(x)}{4}{10}
- \item[\texttt{résultat formaté} :] $\displaystyle\IntegraleApprochee[NbSubDiv=100,AffFormule,Precision=5,Expr={\sqrt{x}}]%
- {sqrt(x)}{4}{10}$
-\end{itemize}
-\end{PresCodePL}
-
-\subsection{Exemples}
-
-\begin{PresCodeTexPL}{listing only}
-%tableau
-\IntegraleApprochee[NbSubDiv=10,ResultatBrut]{sqrt(x)}{4}{10}
-\IntegraleApprochee[NbSubDiv=10,Methode=RectanglesGauche,ResultatBrut]{sqrt(x)}{4}{10}
-\IntegraleApprochee[NbSubDiv=10,Methode=RectanglesDroite,ResultatBrut]{sqrt(x)}{4}{10}
-\IntegraleApprochee[NbSubDiv=10,Methode=RectanglesMilieu,ResultatBrut]{sqrt(x)}{4}{10}
-\IntegraleApprochee[NbSubDiv=10,Methode=Trapezes,ResultatBrut]{sqrt(x)}{4}{10}
-$\displaystyle\IntegraleApprochee[NbSubDiv=10,AffFormule,Expr={\sqrt{x}}]{sqrt(x)}{4}{10}$
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{tblr}[B]{hlines,vlines,colspec={Q[5cm,m,l]Q[5cm,m,l]},row{1}={halign=c,font=\bfseries\sffamily,bg=lightgray}}
- Méthode utilisée & Valeur brute obtenue \\
- \SetCell[c=2]{c} $f(x)=\sqrt{x}$ et $n=10$ ; $\displaystyle\int_4^{10} f(x) \,\text{d}x$ & \\
- Simpson & $\IntegraleApprochee[NbSubDiv=10,Methode=Simpson,ResultatBrut]{sqrt(x)}{4}{10}$ \\
- rectangles Gauche & $\IntegraleApprochee[NbSubDiv=10,Methode=RectanglesGauche,ResultatBrut]{sqrt(x)}{4}{10}$ \\
- rectangles Droite & $\IntegraleApprochee[NbSubDiv=10,Methode=RectanglesDroite,ResultatBrut]{sqrt(x)}{4}{10}$ \\
- rectangles Milieu & $\IntegraleApprochee[NbSubDiv=10,Methode=RectanglesMilieu,ResultatBrut]{sqrt(x)}{4}{10}$ \\
- trapèzes & $\IntegraleApprochee[NbSubDiv=10,Methode=Trapezes,ResultatBrut]{sqrt(x)}{4}{10}$ \\
- \SetCell[c=2]{c} $\displaystyle\IntegraleApprochee[NbSubDiv=10,AffFormule,Expr={\sqrt{x}}]{sqrt(x)}{4}{10}$ & \\
-\end{tblr}~~\includegraphics[height=3cm]{integr_nwks_a}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-%tableau
-\IntegraleApprochee[NbSubDiv=100,Methode=Simpson,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}
-\IntegraleApprochee[NbSubDiv=100,Methode=RectanglesGauche,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}
-\IntegraleApprochee[NbSubDiv=100,Methode=RectanglesDroite,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}
-\IntegraleApprochee[NbSubDiv=100,Methode=RectanglesMilieu,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}
-\IntegraleApprochee[NbSubDiv=100,Methode=Trapezes,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}
-$\displaystyle\IntegraleApprochee[NbSubDiv=100,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]%
- {80*x*exp(-0.2*x)}{1}{20}$
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{tblr}[B]{hlines,vlines,colspec={Q[5cm,m,l]Q[5cm,m,l]},row{1}={halign=c,font=\bfseries\sffamily,bg=lightgray}}
- Méthode utilisée & Valeur brute obtenue \\
- \SetCell[c=2]{c} $f(x)=80x\,\text{e}^{-0,2x}$ et $n=100$ ; $\displaystyle\int_1^{20} f(x) \,\text{d}x$ & \\
- Simpson & $\IntegraleApprochee[NbSubDiv=100,Methode=Simpson,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\
- rectangles Gauche & $\IntegraleApprochee[NbSubDiv=100,Methode=RectanglesGauche,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\
- rectangles Droite & $\IntegraleApprochee[NbSubDiv=100,Methode=RectanglesDroite,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\
- rectangles Milieu & $\IntegraleApprochee[NbSubDiv=100,Methode=RectanglesMilieu,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\
- trapèzes & $\IntegraleApprochee[NbSubDiv=100,Methode=Trapezes,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\
- \SetCell[c=2]{c} $\displaystyle\IntegraleApprochee[NbSubDiv=100,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]{80*x*exp(-0.2*x)}{1}{20}$ & \\
-\end{tblr}~~\includegraphics[height=3cm]{integr_nwks_b}
-\end{PresCodeSortiePL}
+\input{ProfLycee-doc-outilsanalyse.tex}
\newpage
@@ -1609,1249 +385,7 @@ $\displaystyle\IntegraleApprochee[NbSubDiv=100,AffFormule,Expr={80x\,\text{e}^{-
\newpage
-\part{Outils graphiques}
-
-\section{Repérage et tracé de courbes}\label{reperagetikz}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.1.1} L'idée est de proposer des commandes \textit{simplifiées} pour tracer un repère, en \TikZ, avec :
-
-\begin{itemize}
- \item axes et graduations, grille ;
- \item courbe.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{noteblock}
-Au niveau du code, il y aura donc plusieurs \textit{aspects} :
-
-\begin{itemize}
- \item le paramétrage de la fenêtre graphique directement dans la déclaration de l'environnement ;
- \item les commandes de tracés avec options et clés.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%version basique
-\begin{tikzpicture}[paramètres]
- %grille et axes
- \GrilleTikz[options][options grille ppale][options grille second.]
- \AxesTikz[options]
- \AxexTikz[options]{valeurs}
- \AxeyTikz[options]{valeurs}
- %courbe
- \CourbeTikz[options]{fonction}{valxmin:valxmax}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%version simplifiée
-\begin{tikzpicture}[<paramètres>]
- %grille et axes
- \FenetreSimpleTikz[opt](opt axes)<opt axe Ox>{liste valx}<opt axe Oy>{liste valy}
- %courbe
- \CourbeTikz[options]{fonction}{valxmin:valxmax}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \FenetreSimpleTikz<Police=\small>{0,5,...,55}<Police=\small>{0,30,...,210} %repère
- \CourbeTikz[line width=1.25pt,CouleurVertForet,samples=250]%
- {\x*\x*exp(-0.05*\x)+1}{0:60} %courbe
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\subsection{Commandes, clés et options}
-
-\begin{noteblock}
-Les \Cle{paramètres} nécessaires à la bonne utilisation des commandes suivantes sont à déclarer directement dans l'environnement \ctex{tikzpicture}, seules les versions \og x \fg{} sont présentées ici:
-
-\begin{itemize}
- \item \Cle{xmin}, stockée dans \ctex{\textbackslash{}xmin} ;\hfill{}défaut \Cle{-3}
- \item \Cle{xmax}, stockée dans \ctex{\textbackslash{}xmax} ;\hfill{}défaut \Cle{3}
- \item \Cle{Ox}, stockée dans \ctex{\textbackslash{}axexOx}, origine de l'axe $(Ox)$ ;\hfill{}défaut \Cle{0}
- \item \Cle{xgrille}, stockée dans \ctex{\textbackslash{}xgrille}, graduation principale ;\hfill{}défaut \Cle{1}
- \item \Cle{xgrilles}, stockée dans \ctex{\textbackslash{}xgrilles}, graduation secondaire.\hfill{}défaut \Cle{0.5}
-\end{itemize}
-
-La fenêtre d'affichage (de sortie) sera donc \textit{portée} par le rectangle de coins $(\text{xmin};\text{ymin})$ et $(\text{xmax};\text{ymax})$ ; ce qui correspond en fait à la fenêtre \TikZ{} \textit{portée} par le rectangle de coins $(\text{xmin-Ox};\text{ymin-Oy})$ et $(\text{xmax-Ox};\text{ymax-Oy})$.
-
-\smallskip
-
-Les commandes ont -- pour certaines -- pas mal de \Cle{clés} pour des réglages fins, mais dans la majorité des cas elles ne sont pas forcément \textit{utiles}.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
-\GrilleTikz[options][options grille ppale][options grille second.]
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Cette commande permet de tracer une grille principale et/ou une grille secondaire :
-
-\begin{itemize}
- \item les premières \Cle{clés} sont les booléens \Cle{Affp} et \Cle{Affs} qui affichent ou non les grilles ;
-
- \hfill~défaut \Cle{true}
- \item les options des grilles sont en \TikZ. \hfill~défaut \Cle{thin,lightgray} et \Cle{very thin,lightgray}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \GrilleTikz
-\end{tikzpicture}
-~~
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \GrilleTikz[Affp=false][][orange,densely dotted]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\hfill~
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \GrilleTikz
-\end{tikzpicture}
-~~
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \GrilleTikz[Affp=false][][orange,densely dotted]
-\end{tikzpicture}
-\hfill~
-\end{PresCodeSortiePL}
-
-\pagebreak
-
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
-\AxesTikz[options]
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Cette commande permet de tracer les axes, avec des \Cle{clés} :
-
-\begin{itemize}
- \item \Cle{Epaisseur} qui est l'épaisseur des axes ; \hfill~défaut \Cle{1pt}
- \item \Cle{Police} qui est le style des labels des axes ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont}
- \item \cmaj{2.1.2} \Cle{ElargirOx} qui est le \% l'élargissement \Cle{global} ou \Cle{G/D} de l'axe $(Ox)$ ;
-
- \hfill~défaut \Cle{0/0.05}
- \item \cmaj{2.1.2} \Cle{ElargirOy} qui est le \% l'élargissement \Cle{global} ou \Cle{B/H} de l'axe $(Oy)$ ;
-
- \hfill~défaut \Cle{0/0.05}
- \item \Cle{Labelx} qui est le label de l'axe $(Ox)$ ; \hfill~défaut \Cle{\${}x\$}
- \item \Cle{Labely} qui est le label de l'axe $(Oy)$ ; \hfill~défaut \Cle{\${}y\$}
- \item \Cle{AffLabel} qui est le code pour préciser quels labels afficher, entre \Cle{x}, \Cle{y} ou \Cle{xy} ;
-
- \hfill~défaut \Cle{vide}
- \item \Cle{PosLabelx} pour la position du label de $(Ox)$ en bout d'axe ; \hfill~défaut \Cle{right}
- \item \Cle{PosLabely} pour la position du label de $(Oy)$ en bout d'axe ; \hfill~défaut \Cle{above}
- \item \Cle{EchelleFleche} qui est l'échelle de la flèche des axes ; \hfill~défaut \Cle{1}
- \item \Cle{TypeFleche} qui est le type de la flèche des axes.\hfill~défaut \Cle{latex}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%code tikz
-\AxesTikz
-
-%code tikz
-\AxesTikz%
- [AffLabel=xy,Labelx={Nombre de jours},Labely={Nombre d'individus infectés, en centaines},%
- PosLabelx={above left},PosLabely={above right},%
- Police=\small\sffamily,ElargirOx=0,ElargirOy=0]
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\hfill~
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \AxesTikz
-\end{tikzpicture}
-~~
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \AxesTikz%
- [AffLabel=xy,Labelx={Nombre de jours},
- Labely={Nombre d'individus infectés, en centaines},%
- PosLabelx={above left},PosLabely={above right},%
- ElargirOx=0,ElargirOy=0,
- Police=\small\sffamily]
-\end{tikzpicture}
-\hfill~
-\end{PresCodeSortiePL}
-
-\pagebreak
-
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
-\AxexTikz[options]{valeurs}
-\AxeyTikz[options]{valeurs}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} identiques pour les deux directions :
-
-\begin{itemize}
- \item \Cle{Epaisseur} qui est l'épaisseur des graduations ; \hfill~défaut \Cle{1pt}
- \item \Cle{Police} qui est le style des labels des graduations ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont}
- \item \Cle{PosGrad} qui est la position des graduations par rapport à l'axe ; \hfill~défaut \Cle{below} et \Cle{left}
- \item \Cle{HautGrad} qui est la hauteur des graduations (sous la forme \Cle{lgt} ou \Cle{lgta/lgtb}) ;
-
- \hfill~défaut \Cle{4pt}
- \item le booléen \Cle{AffGrad} pour afficher les valeurs (formatés avec \ctex{num} donc dépendant de \ctex{sisetup}) des graduations ; \hfill~défaut \Cle{true}
- \item le booléen \Cle{AffOrigine} pour afficher la graduation de l'origine ; \hfill~défaut \Cle{true}
- \item le booléen \Cle{Annee} qui permet de ne pas formater les valeurs des graduations (type \textsf{année}) ;
-
- \hfill~défaut \Cle{false}
- \item \cmaj{2.5.6} le booléen \Cle{Trigo} (uniquement pour l'axe $(Ox)$) pour des graduations libres en radians ;
-
- \hfill~défaut \Cle{false}
- \item \cmaj{2.5.6} le booléen \Cle{Dfrac} (uniquement pour l'axe $(Ox)$ en \Cle{Trigo}) pour forcer les fractions en \textit{grand} ;
-
- \hfill~défaut \Cle{false}
- \item \cmaj{2.7.0} le booléen \Cle{Frac} (uniquement pour l'axe $(Oy)$) pour forcer les graduations en fraction (taille normale).
-
- \hfill~défaut \Cle{false}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%code tikz
-\AxexTikz[Police=\small]{0,5,...,55}
-\AxeyTikz[Police=\small]{0,30,...,210}
-%code tikz
-\AxexTikz[Police=\small,HautGrad=0pt/4pt]{0,5,...,55}
-\AxeyTikz[AffGrad=false,HautGrad=6pt]{0,30,...,210}
-%des axes fictifs (en gris) sont rajoutés pour la lisibilité du code de sortie
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\hfill~
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \draw[gray,line width=1.25pt,->,>=latex] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ;
- \draw[gray,line width=1.25pt,->,>=latex] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ;
- \AxexTikz[Police=\small]{0,5,...,55}
- \AxeyTikz[Police=\small]{0,30,...,210}
-\end{tikzpicture}
-~~
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \draw[gray,line width=1.25pt,->,>=latex] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ;
- \draw[gray,line width=1.25pt,->,>=latex] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ;
- \AxexTikz[Police=\small,HautGrad=0pt/4pt]{0,5,...,55}
- \AxeyTikz[AffGrad=false,HautGrad=6pt]{0,30,...,210}
-\end{tikzpicture}
-\hfill~
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[x=2cm,y=1cm,xmin=0,xmax={2*pi},xgrille=0.5,xgrilles=0.25,
- ymin=-1.15,ymax=1.15,ygrille=0.5,ygrilles=0.25]
- \GrilleTikz \AxesTikz
- \AxexTikz[Trigo]{{pi/6},{pi/4},{pi/3},{pi/2},{2*pi/3},%
- {3*pi/4},{5*pi/6},pi,{7*pi/6},{5*pi/4}}
- \CourbeTikz[thick,blue,samples=250]{cos(deg(\x))}{0:2*pi}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{tikzpicture}
- [x=2cm,y=1cm,xmin=0,xmax={2*pi},xgrille=0.5,xgrilles=0.25,
- ymin=-1.15,ymax=1.15,ygrille=0.5,ygrilles=0.25]
- \GrilleTikz \AxesTikz
- \AxexTikz[Trigo]{{pi/6},{pi/4},{pi/3},{pi/2},{2*pi/3},%
- {3*pi/4},{5*pi/6},pi,{7*pi/6},{5*pi/4}}
- \CourbeTikz[thick,blue,samples=250]{cos(deg(\x))}{0:2*pi}
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\begin{noteblock}
-La clé \Cle{Trigo} utilise, en interne, une commande qui permet de \textit{transformer} les abscisses, données en langage \TikZ, en fraction en \LaTeX.
-\end{noteblock}
-
-\begin{PresCodePL}{}
-$\AffAngleRadian{0}$ \quad $\AffAngleRadian{pi}$ \quad $\AffAngleRadian{pi/4}$ \quad
-$\AffAngleRadian{2*pi/3}$ \quad $\AffAngleRadian{-2*pi/3}$ \quad $\AffAngleRadian*{-2*pi/3}$
-\end{PresCodePL}
-
-\subsection{Commandes annexes}
-
-\begin{noteblock}
-Il existe, de manière marginale, quelques commandes complémentaires qui ne seront pas trop détaillées mais qui sont existent :
-
-\begin{itemize}
- \item \ctex{FenetreTikz} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ;
- \item \ctex{FenetreSimpleTikz} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ;
- \item \ctex{OrigineTikz} pour rajouter le libellé de l'origine si non affiché par les axes.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%code tikz
-\FenetreTikz %on restreint les tracés
-\FenetreSimpleTikz%
- [options](opt axes)<opt axe Ox>{valeurs Ox}<opt axe Oy>{valeurs Oy}
-\end{PresCodeTexPL}
-
-\begin{tipblock}
-L'idée est de proposer, en \textit{complément}, une commande simplifiée pour tracer une courbe en \TikZ.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
-\CourbeTikz[options]{formule}{domaine}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Cette commande permet de rajouter une courbe sur le graphique (sans se soucier de la transformation de son expression) avec les arguments :
-
-\begin{itemize}
- \item \Cle{optionnels} qui sont - en \TikZ{} - les paramètres du tracé ;
- \item le premier \textit{obligatoire}, est - en langage \TikZ{} - l'expression de la fonction à tracer, donc avec \ctex{\textbackslash{}x} comme variable ;
- \item le second \textit{obligatoire} est le domaine du tracé, sous la forme \ctex{valxmin:valxmax}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
- ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
- \FenetreSimpleTikz%
- <Police=\small>{0,5,...,60}%
- <Police=\small>{0,30,...,240} %repère
- \CourbeTikz[line width=1.25pt,CouleurVertForet,samples=250]%
- {\x*\x*exp(-0.05*\x)+1}{0:60} %courbe
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{tikzpicture}%
- [x=0.1cm,y=0.0167cm, %unités
- xmin=0,xmax=60,xgrille=5,xgrilles=5,ymin=0,ymax=240,ygrille=30,ygrilles=30]
- \FenetreSimpleTikz%
- <Police=\small>{0,5,...,60}<Police=\small>{0,30,...,240} %repère
- \CourbeTikz[line width=1.25pt,CouleurVertForet,samples=250]%
- {\x*\x*exp(-0.05*\x)+1}{0:60} %courbe
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\subsection{Repère non centré en O}
-
-\begin{tipblock}
-Parfois on est amené à travailler dans des repères qui n'ont pas forcément pour origine $(0;0)$. De ce fait - pour éviter des erreurs de \ctex{dimension too large} liées à \TikZ{} - il faut \textit{décaler les axes} pour se ramener à une origine en $O$. L'idée est donc d'utiliser les commandes précédentes, sans se soucier des éventuelles transformations !
-\end{tipblock}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2010,%
- xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1710,ygrille=10,ygrilles=5]
- \FenetreSimpleTikz<Annee,Police=\scriptsize>{1992,1994,...,2008}{1640,1650,...,1700}
- \FenetreTikz
- \CourbeTikz[line width=1.25pt,orange,samples=500]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax}
-\end{tikzpicture}
-\end{PresCodePL}
-
-\pagebreak
-
-\section{L'outil \og SplineTikz \fg}
-
-\subsection{Courbe d'interpolation}
-
-\begin{noteblock}
-On va utiliser les notions suivantes pour paramétrer le tracé \og automatique \fg{} grâce à \ctex{..controls} :
-%
-\begin{itemize}
- \item il faut rentrer les \textcolor{purple}{\textsf{points de contrôle}} ;
- \item il faut préciser les \textcolor{CouleurVertForet}{\textsf{pentes des tangentes}} (pour le moment on travaille avec les mêmes à gauche et à droite\ldots) ;
- \item on peut \og affiner \fg{} les portions de courbe en paramétrant des \textcolor{BleuCadet}{\textsf{coefficients}} (voir un peu plus loin\ldots).
-\end{itemize}
-
-\medskip
-
-Pour déclarer les paramètres :
-%
-\begin{itemize}
- \item liste des points de contrôle (minimum 2 !!) par : \verb|x1/y1/d1§x2/y2/d2§...| avec les points \pverb|(xi;yi)| et \vverb|f'(xi)=di| ;
- \item coefficients de contrôle par \verb|coeffs=...| :
- \begin{itemize}
- \item \averb|coeffs=x| pour mettre tous les coefficients à x ;
- \item \averb|coeffs=C1§C2§...| pour spécifier les coefficients par portion (donc il faut avoir autant de § que pour les points !) ;
- \item \averb|coeffs=C1G/C1D§...| pour spécifier les coefficients par portion et par partie gauche/droite ;
- \item on peut mixer avec \averb|coeffs=C1§C2G/C2D§...|.
- \end{itemize}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\subsection{Code, clés et options}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}
- ...
- \SplineTikz[options]{liste}
- ...
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Certains paramètres et \Cle{clés} peuvent être gérés directement dans la commande \ctex{splinetikz} :
-%
-\begin{itemize}
- \item la couleur de la courbe par la {clé} \Cle{Couleur} ;\hfill{}défaut \Cle{red}
- \item l'épaisseur de la courbe par la {clé} \Cle{Epaisseur} ;\hfill{}défaut \Cle{1.25pt}
- \item du style supplémentaire pour la courbe peut être rajouté, grâce à la {clé} \Cle{Style} ;\hfill{}défaut \Cle{vide}
- \item les coefficients de \textit{compensation} gérés par la {clé} \Cle{Coeffs} ;\hfill{}défaut \Cle{3}
- \item les points de contrôle , affichés ou non par la {clé booléenne} \Cle{AffPoints} ;\hfill{}défaut \Cle{false}
- \item la taille des points de contrôle est géré par la {clé} \Cle{TaillePoints}.\hfill{}défaut \Cle{2pt}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\subsection{Compléments sur les coefficients de \og compensation \fg}
-
-\begin{tipblock}
-Le choix a été fait ici, pour \textit{simplifier} le code, le travailler sur des courbes de Bézier.
-
-Pour \textit{simplifier} la gestion des nombres dérivés, les points de contrôle sont gérés par leurs coordonnées \textit{polaires}, les \textsf{coefficients de compensation} servent donc -- grosso modo -- à gérer la position radiale.
-
-\smallskip
-
-Le coefficient \Cle{3} signifie que, pour une courbe de Bézier entre $x=a$ et $x=b$, les points de contrôles seront situés à une distance radiale de $\frac{b-a}{3}$.
-
-Pour \textit{écarter} les points de contrôle, on peut du coup \textit{réduire} le coefficient de compensation !
-
-\medskip
-
-Pour des intervalles \textit{étroits}, la \textit{pente} peut paraître abrupte, et donc le(s) coefficient(s) peuvent être modifiés, de manière fine.
-
-\medskip
-
-Si jamais il existe (un ou) des points \textit{anguleux}, le plus simple est de créer les splines en plusieurs fois.
-\end{tipblock}
-
-\subsection{Exemples}
-
-\begin{PresCodePL}{tikz lower}
-%code tikz
-\def\x{0.9cm}\def\y{0.9cm}
-\def\xmin{-1}\def\xmax{11}\def\xgrille{1}\def\xgrilles{0.5}
-\def\ymin{-1}\def\ymax{5}\def\ygrille{1}\def\ygrilles{0.5}
-%axes et grilles
-\draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax);
-\draw[line width=1.5pt,->,gray,>=latex] (\xmin,0)--(\xmax,0) ;
-\draw[line width=1.5pt,->,gray,>=latex] (0,\ymin)--(0,\ymax) ;
-\foreach \x in {0,1,...,10} {\draw[gray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;}
-\foreach \y in {0,1,...,4} {\draw[gray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;}
-\draw[darkgray] (1,-4pt) node[below,font=\sffamily] {1} ;
-\draw[darkgray] (-4pt,1) node[left,font=\sffamily] {1} ;
-%splines
-\def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10}
-\SplineTikz[AffPoints,Coeffs=3,Couleur=red]{\LISTE}
-\end{PresCodePL}
-
-\begin{noteblock}
-Avec des explications utiles à la compréhension :
-
-\begin{center}
- \begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=7,ygrille=1,ygrilles=0.5]
- \genfenetre
- \SplineTikz[AffPoints]{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10}
- \gennotice
- \gentangentes
- \listecoeffs{3}{3}{3}{3}
- \end{tikzpicture}
-\end{center}
-\end{noteblock}
-
-\subsection{Avec une gestion plus fine des \og coefficients \fg}
-
-\begin{noteblock}
-Dans la majorité des cas, le \textit{coefficient} \textcircled{3} permet d'obtenir une courbe (ou une portion) très satisfaisante !
-
-Dans certains cas, il se peut que la portion paraisse un peu trop \og abrupte \fg{}.
-
-On peut dans ce cas \textit{jouer} sur les coefficients de cette portion pour \textit{arrondir} un peu tout cela (\textit{ie} diminuer le \textsf{coeff}\ldots)!
-
-\begin{center}
- \begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=7,ygrille=1,ygrilles=0.5]
- \genfenetre
- \draw (1,-4pt) node[below,font=\sffamily] {1} ;
- \draw (-4pt,1) node[left,font=\sffamily] {1} ;
- \def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10}
- \SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE}
- \gennotice
- \listecoeffs{3/3}{3/3}{3/3}{2/1}
- \end{tikzpicture}
-\end{center}
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-...
-%splines
-\def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10}
-\SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE}
-...
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
- \begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=5,ygrille=1,ygrilles=0.5]
- %axes et grilles
- \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax);
- \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax);
- \draw[line width=1.5pt,->,gray,>=latex] (\xmin,0)--(\xmax,0) ;
- \draw[line width=1.5pt,->,gray,>=latex] (0,\ymin)--(0,\ymax) ;
- \foreach \x in {0,1,...,10} {\draw[gray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;}
- \foreach \y in {0,1,...,4} {\draw[gray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;}
- \draw[darkgray] (1,-4pt) node[below,font=\sffamily] {1} ;
- \draw[darkgray] (-4pt,1) node[left,font=\sffamily] {1} ;
- \def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10}
- \SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE}
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\subsection{Conclusion}
-
-\begin{noteblock}
-Le plus \og simple \fg{} est donc:
-%
-\begin{itemize}
- \item de déclarer la liste des points de contrôle, grâce à \ctex{\textbackslash def\textbackslash LISTE\{x1/y1/d1§x2/y2/d2§...\}} ;
- \item de saisir la commande \ctex{\textbackslash SplineTikz[...]\{\textbackslash LISTE\}} ;
- \item d'ajuster les options et coefficients en fonction du rendu !
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\newpage
-
-\section{L'outil \og TangenteTikz \fg{}}
-
-\subsection{Définitions}
-
-\begin{tipblock}
-En parallèle de l'outil \ctex{SplineTikz}, il existe l'outil \ctex{TangenteTikz} qui va permettre de tracer des tangentes à l'aide de la liste de points précédemment définie pour l'outil \ctex{SplineTikz}.
-
-\smallskip
-
-NB : il peut fonctionner indépendamment de l'outil \ctex{SplineTikz} puisque la liste des points de travail est gérée de manière autonome !
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}
- ...
- \TangenteTikz[options]{liste}
- ...
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Cela permet de tracer la tangente :
-%
-\begin{itemize}
- \item au point numéro \Cle{Point} de la liste \Cle{liste}, de coordonnées \textsf{xi/yi} avec la pente \textsf{di} ;
- \item avec une épaisseur de \Cle{Epaisseur}, une couleur \Cle{Couleur} et un style additionnel \Cle{Style} ;
- \item en la traçant à partir de \Cle{xl} avant \textsf{xi} et jusqu'à \Cle{xr} après \textsf{xi}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\subsection{Exemple et illustration}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}
- ...
- \def\LISTE{0/1.5/0§1/2/-0.333§2/0/-5}
- %spline
- \SplineTikz[AffPoints,Coeffs=3§2,Couleur=red]{\LISTE}
- %tangente
- \TangenteTikz[xl=0,xr=0.5,Couleur=CouleurVertForet,Style=dashed]{\LISTE}
- \TangenteTikz[xl=0.5,xr=0.75,Couleur=orange,Style=dotted,Point=2]{\LISTE}
- \TangenteTikz[xl=0.33,xr=0,Couleur=blue,Style=densely dashed,Point=3]{\LISTE}
- ...
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-On obtient le résultat suivant (avec les éléments rajoutés utiles à la compréhension) :
-
-\begin{center}
- \begin{tikzpicture}[x=3cm,y=2cm,xmin=0,xmax=2,xgrilles=0.25,ymin=0,ymax=2.25,ygrilles=0.25]
- \tikzset{noeudexpl/.style={purple,font=\sffamily\small}}
- \tgrilles
- \draw[line width=1.5pt,->,darkgray,>=latex] (\xmin,0)--(\xmax,0) ;
- \draw[line width=1.5pt,->,darkgray,>=latex] (0,\ymin)--(0,\ymax) ;
- \draw (0,1.5) node[noeudexpl,below] {point 1} ;
- \draw (1,2) node[noeudexpl,below] {point 2} ;
- \draw (2,0) node[noeudexpl,above left] {point 3} ;
- %spline
- \SplineTikz[AffPoints,Coeffs=3§2,Couleur=red]{0/1.5/0§1/2/-0.333§2/0/-5}
- %tangente
- \TangenteTikz[xl=0,xr=0.5,Couleur=CouleurVertForet,Style=dashed]{0/1.5/0§1/2/-0.333§2/0/-5}
- \TangenteTikz[xl=0.5,xr=0.75,Couleur=orange,Style=dotted,Point=2]{0/1.5/0§1/2/-0.333§2/0/-5}
- \TangenteTikz[xl=0.33,xr=0,Couleur=blue,Style=densely dashed,Point=3]{0/1.5/0§1/2/-0.333§2/0/-5}
- %explications
- \draw[<->,very thick,darkgray] (0.5,2.2)--(1,2.2) node[midway,above,font=\sffamily] {xl} ;
- \draw[<->,very thick,darkgray] (1,2.2)--(1.75,2.2) node[midway,above,font=\sffamily] {xr};
- \draw[thick,darkgray] (1,4pt)--(1,-4pt) node[below,font=\sffamily] {1} ;
- \draw[thick,darkgray] (4pt,1)--(-4pt,1) node[left,font=\sffamily] {1} ;
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\subsection{Exemple avec les deux outils, et \og personnalisation \fg}
-
-\begin{PresCodeTexPL}{listing only}
-\tikzset{%
- xmin/.store in=\xmin,xmin/.default=-5,xmin=-5,
- xmax/.store in=\xmax,xmax/.default=5,xmax=5,
- ymin/.store in=\ymin,ymin/.default=-5,ymin=-5,
- ymax/.store in=\ymax,ymax/.default=5,ymax=5,
- xgrille/.store in=\xgrille,xgrille/.default=1,xgrille=1,
- xgrilles/.store in=\xgrilles,xgrilles/.default=0.5,xgrilles=0.5,
- ygrille/.store in=\ygrille,ygrille/.default=1,ygrille=1,
- ygrilles/.store in=\ygrilles,ygrilles/.default=0.5,ygrilles=0.5,
- xunit/.store in=\xunit,unit/.default=1,xunit=1,
- yunit/.store in=\yunit,unit/.default=1,yunit=1
-}
-
-\begin{tikzpicture}[x=0.5cm,y=0.5cm,xmin=0,xmax=16,xgrilles=1,ymin=0,ymax=16,ygrilles=1]
- \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray] (\xmin,\ymin) grid (\xmax,\ymax) ;
- \draw[line width=1.5pt,->,darkgray,>=latex] (\xmin,0)--(\xmax,0) ;
- \draw[line width=1.5pt,->,darkgray,>=latex] (0,\ymin)--(0,\ymax) ;
- \foreach \x in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;}
- \foreach \y in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;}
- %la liste pour la courbe d'interpolation
- \def\liste{0/6/3§3/11/0§7/3/0§10/0/0§14/14/6}
- %les tangentes "stylisées"
- \TangenteTikz[xl=0,xr=1,Couleur=blue,Style=dashed]{\liste}
- \TangenteTikz[xl=2,xr=2,Couleur=purple,Style=dotted,Point=2]{\liste}
- \TangenteTikz[xl=2,xr=2,Couleur=orange,Style=<->,Point=3]{\liste}
- \TangenteTikz[xl=2,xr=0,Couleur=CouleurVertForet,Point=5]{\liste}
- %la courbe en elle-même
- \SplineTikz[AffPoints,Coeffs=3,Couleur=cyan,Style=densely dotted]{\liste}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
-\begin{tikzpicture}[x=0.5cm,y=0.5cm,xmin=0,xmax=16,xgrilles=1,ymin=0,ymax=16,ygrilles=1]
- \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray] (\xmin,\ymin) grid (\xmax,\ymax) ;
- \draw[line width=1.5pt,->,darkgray,>=latex] (\xmin,0)--(\xmax,0) ;
- \draw[line width=1.5pt,->,darkgray,>=latex] (0,\ymin)--(0,\ymax) ;
- \foreach \x in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;}
- \foreach \y in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;}
- \draw[darkgray] (2,-4pt) node[below,font=\sffamily] {2} ;
- \draw[darkgray] (-4pt,2) node[left,font=\sffamily] {2} ;
- %la liste pour la courbe d'interpolation
- \def\liste{0/6/3§3/11/0§7/3/0§10/0/0§14/14/6}
- %les tangentes "stylisées"
- \TangenteTikz[xl=0,xr=1,Couleur=blue,Style=dashed]{\liste}
- \TangenteTikz[xl=2,xr=2,Couleur=purple,Style=dotted,Point=2]{\liste}
- \TangenteTikz[xl=2,xr=2,Couleur=orange,Style=<->,Point=3]{\liste}
- \TangenteTikz[xl=2,xr=0,Couleur=CouleurVertForet,Point=5]{\liste}
- %la courbe en elle-même
- \SplineTikz[AffPoints,Coeffs=3,Couleur=cyan,Style=densely dotted]{\liste}
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Points de discontinuité}\label{discont}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.7.7} L'idée est de présenter, en marge de la création de \textit{splines cubiques}, des points de discontinuité.
-
-Pour des raisons \textit{internes} au code, cette possibilité n'est pas offerte (encore ?) directement dans la commande de création des splines.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%dans un environnement tikz
-\PtsDiscontinuite
-\end{PresCodeTexPL}
-
-\subsection{Commandes}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[<options>]
- \PtsDiscontinuite{liste}[clés]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Le premier argument, \textit{optionnel} et entre \textsf{[...]}, contient les \Cle{Clés} suivantes :
-
-\begin{itemize}
- \item la clé \Cle{Couleur} qui permet de définir la couleur du symbole ;\hfill{}défaut \Cle{red}
- \item la clé \Cle{Epaisseur} qui est relative à l'épaisseur du symbole ;\hfill{}défaut \Cle{1.25pt}
- \item la clé \Cle{Pos} pour choisir la position de la discontinuité (parmi \Cle{G/D}) ;\hfill{}défaut \Cle{D}
- \item la clé \Cle{Echelle} pour modifier l'échelle du symbole ;\hfill{}défaut \Cle{1}
- \item la clé \Cle{Type} pour choisir le type de symbole, parmi \Cle{par/cro/rond/demirond}.\hfill{}défaut \Cle{par}
-\end{itemize}
-
-Le second argument, obligatoire et entre \textsf{\{...\}} permet de préciser (comme pour les commandes des paragraphes précédents) la liste des points en lesquels le symbole de discontinuité sera positionné, sous la forme \verb|x1/y1/d1 § x2/y2/d2 § ...| avec les points \pverb|(xi;yi)| et \vverb|f'(xi)=di|.
-\end{cautionblock}
-
-\subsection{Exemples}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}
- \draw[lightgray] (0,0) grid (10,5) ;
- \SplineTikz{0/1/-1 § 4/4/0}
- \PtsDiscontinuite{4/4/0}
- \PtsDiscontinuite[Pos=G,Type=cro]{0/1/-1}
- \SplineTikz[Couleur=blue]{5/1/1.5 § 8/4/0.5}
- \PtsDiscontinuite[Couleur=blue,Type=rond]{8/4/0.5}
- \PtsDiscontinuite[Couleur=blue,Pos=G,Type=demirond,Echelle=2]{5/1/1.5}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{text only}
-\begin{tikzpicture}
- \draw[lightgray] (0,0) grid (10,5) ;
- \SplineTikz{0/1/-1 § 4/4/0}
- \PtsDiscontinuite{4/4/0}
- \PtsDiscontinuite[Pos=G,Type=cro]{0/1/-1}
- \SplineTikz[Couleur=blue]{5/1/1.5 § 8/4/0.5}
- \PtsDiscontinuite[Couleur=blue,Type=rond]{8/4/0.5}
- \PtsDiscontinuite[Couleur=blue,Pos=G,Type=demirond,Echelle=2]{5/1/1.5}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\newpage
-
-\section{Petits schémas pour le signe d'une fonction affine ou d'un trinôme}\label{aidesigne}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est d'obtenir une commande pour tracer (en \TikZ) un petit schéma pour \textit{visualiser} le signe d'une fonction affine ou d'un trinôme.
-
-Le code est largement inspiré de celui du package \ctex{tnsana} même si la philosophie est un peu différente.
-
-\smallskip
-
-Comme pour les autres commandes \TikZ, l'idée est de laisser la possibilité à l'utilisateur de définir et créer son environnement \TikZ, et d'insérer la commande \ctex{MiniSchemaSignes} pour afficher le schéma.
-
-\smallskip
-
-\cmaj{2.1.9} Il est à noter que la version \textit{étoilée} rend la commande autonome, sans besoin de créer l'environnement \TikZ.
-\end{tipblock}
-
-\begin{PresCodePL}{}
-\MiniSchemaSignes*
-\end{PresCodePL}
-
-\subsection{Commandes}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[<options>]
- \MiniSchemaSignes[clés]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-{\tikz[options] \MiniSchemaSignes[clés]}
-%ou
-\MiniSchemaSignes*[clés]<options tikzpicture>
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-\cmaj{2.1.9} La version \textit{étoilée} de la commande permet de basculer en mode \textit{autonome}, c'est-à-dire sans avoir besoin de créer son environnement \TikZ.
-
-\smallskip
-
-Le premier argument, \textit{optionnel} et entre \textsf{[...]}, contient les \Cle{Clés} suivantes :
-
-\begin{itemize}
- \item la clé \Cle{Code} qui permet de définir le type d'expression (voir en-dessous) ;\hfill{}défaut \Cle{da+}
- \item la clé \Cle{Couleur} qui donne la couleur de la représentation ;\hfill{}défaut \Cle{red}
- \item la clé \Cle{Racines} qui définit la ou les racines ;\hfill{}défaut \Cle{2}
- \item la clé \Cle{Largeur} qui est la largeur du schéma ;\hfill{}défaut \Cle{2}
- \item la clé \Cle{Hauteur} qui est la hauteur du schéma ;\hfill{}défaut \Cle{1}
- \item un booléen \Cle{Cadre} qui affiche un cadre autour du schéma.\hfill{}défaut \Cle{true}
-\end{itemize}
-
-Le second argument, \textit{optionnel} et entre \textsf{<...>}, permet de spécifier (pour la commande \textit{étoilée}), des options à passer à l'environnement \ctex{tikzpicture}.
-\end{cautionblock}
-
-\begin{cautionblock}
-Pour la clé \Cle{code}, il est construit par le type (\textsf{a} pour affine ou \textsf{p} comme parabole) puis les éléments caractéristiques (\textsf{a+} pour $a>0$, \textsf{d0} pour $\Delta=0$, etc) :
-
-\begin{itemize}
- \item \Cle{Code=da+} := une droite croissante ;
- \item \Cle{Code=da-} := une droite décroissante ;
- \item \Cle{Code=pa+d+} := une parabole \textit{souriante} avec deux racines ;
- \item etc
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\pagebreak
-
-\begin{PresCodeTexPL}{listing only}
-\begin{center}
-\MiniSchemaSignes*[Code=da+,Racines=-4]
-~~~~
-\MiniSchemaSignes*[Code=da-,Racines={h},Couleur=blue,Largeur=3,Cadre=false]
-\end{center}
-%
-\begin{center}
-\MiniSchemaSignes*[Code=pa+d+,Racines={1/2},Couleur=orange]
-~~~~
-\MiniSchemaSignes*[Code=pa+d-,Couleur=CouleurVertForet]
-~~~~
-\MiniSchemaSignes*[Code=pa+d0,Racines={5},Couleur=purple]
-\end{center}
-%
-\begin{center}
-\MiniSchemaSignes*[Code=pa-d+,Racines={-3/0},Couleur=yellow]
-~~~~
-\MiniSchemaSignes*[Code=pa-d-,Couleur=cyan]
-~~~~
-\MiniSchemaSignes*[Code=pa-d0,Racines={-1},Couleur=magenta]
-\end{center}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
-\MiniSchemaSignes*[Code=da+,Racines=-4]
-~~~~
-\MiniSchemaSignes*[Code=da-,Racines={h},Couleur=blue,Largeur=3,Cadre=false]
-\end{center}
-%
-\begin{center}
-\MiniSchemaSignes*[Code=pa+d+,Racines={1/2},Couleur=orange]
-~~~~
-\MiniSchemaSignes*[Code=pa+d-,Couleur=CouleurVertForet]
-~~~~
-\MiniSchemaSignes*[Code=pa+d0,Racines={5},Couleur=purple]
-\end{center}
-%
-\begin{center}
-\MiniSchemaSignes*[Code=pa-d+,Racines={-3/0},Couleur=yellow]
-~~~~
-\MiniSchemaSignes*[Code=pa-d-,Couleur=cyan]
-~~~~
-\MiniSchemaSignes*[Code=pa-d0,Racines={-1},Couleur=magenta]
-\end{center}
-\end{PresCodeSortiePL}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}
- \MiniSchemaSignes[Largeur=3.5,Hauteur=1.5,Code=da-,Racines=\tfrac{-b}{a},Couleur=pink]
-\end{tikzpicture}
-
-\MiniSchemaSignes*[Code=da-,Racines=\tfrac{-b}{a},Couleur=pink]<x=1.75cm,y=1.5cm>
-\end{PresCodePL}
-
-\pagebreak
-
-\subsection{Intégration avec tkz-tab}
-
-\begin{tipblock}
-Ces schémas peuvent être de plus utilisés, via la commande \ctex{MiniSchemaSignesTkzTab} pour illustrer les signes obtenus dans un tableau de signes présentés grâce au package \ctex{tkz-tab}.
-
-Pour des raisons internes, le fonctionnement de la commande \ctex{MiniSchemaSignesTkzTab} est légèrement différent et, pour des raisons que j'ignore, le code est légèrement différent en \textit{interne} (avec une \textit{déconnexion} des caractères \textsf{:} et \textsf{\textbackslash}) pour que la librairie \TikZ{} \ctex{calc} puisse fonctionner (mystère pour le moment\ldots)
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}
- %commandes tkztab
- \MiniSchemaSignesTkzTab[options]{numligne}[echelle][décalage horizontal]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Les \Cle{Clés} pour le premier argument \textit{optionnel} sont les mêmes que pour la version \textit{initiale} de la commande précédente.
-
-En ce qui concerne les autres arguments :
-
-\begin{itemize}
- \item le deuxième argument, \textit{obligatoire}, est le numéro de la ligne à côté de laquelle placer le schéma ;
- \item le troisième argument, \textit{optionnel} et valant \Cle{0.85} par défaut, est l'échelle à appliquer sur l'ensemble du schéma (à ajuster en fonction de la hauteur de la ligne) ;
- \item le quatrième argument, \textit{optionnel} et valant \Cle{1.5} par défait, est lié à l'écart horizontal entre le bord de la ligne du tableau et le schéma.
-\end{itemize}
-
-À noter que si l'un des arguments optionnels (le n°3 et/ou le n°4) sont utilisés, il vaut mieux préciser les 2 !
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{center}
- \begin{tikzpicture}
- \tkzTabInit[]{$x$/1,$-2x+5$/1,$2x+4$/1,$p(x)$/1}{$-\infty$,$-2$,${2,5}$,$+\infty$}
- \tkzTabLine{,+,t,+,z,-,}
- \tkzTabLine{,-,z,+,t,+,}
- \tkzTabLine{,-,z,+,z,-,}
- \MiniSchemaSignesTkzTab[Code=da-,Racines={\tfrac{5}{2}},Couleur=blue]{1}
- \MiniSchemaSignesTkzTab[Code=da+,Racines={-2},Couleur=purple]{2}
- \MiniSchemaSignesTkzTab[Code=pa-d+,Racines={-2/{\tfrac{5}{2}}},Couleur=orange]%
- {3}[0.85][2]
- \end{tikzpicture}
-\end{center}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
- \begin{tikzpicture}
- \tkzTabInit[]{$x$/1,$-2x+5$/1,$2x+4$/1,$p(x)$/1}{$-\infty$,$-2$,${2,5}$,$+\infty$}
- \tkzTabLine{,+,t,+,z,-,}
- \tkzTabLine{,-,z,+,t,+,}
- \tkzTabLine{,-,z,+,z,-,}
- \MiniSchemaSignesTkzTab[Code=da-,Racines={\tfrac{5}{2}},Couleur=blue]{1}
- \MiniSchemaSignesTkzTab[Code=da+,Racines={-2},Couleur=purple]{2}
- \MiniSchemaSignesTkzTab[Code=pa-d+,Racines={-2/{\tfrac{5}{2}}},Couleur=orange]{3}[0.85][2]
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Suites récurrentes et \og toile \fg}\label{recurr}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est d'obtenir une commande pour tracer (en \TikZ) la \og toile \fg{} permettant d'obtenir -- graphiquement -- les termes d'une suite récurrente définie par une relation $u_{n+1}=f(u_n)$.
-
-\smallskip
-
-Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur définir et créer son environnement \TikZ, et d'insérer la commande \ctex{ToileRecurrence} pour afficher la \og toile \fg.
-\end{tipblock}
-
-\subsection{Commandes}
-
-\begin{PresCodeTexPL}{listing only}
-...
-\begin{tikzpicture}[options]
- ...
- \ToileRecurrence[clés][options du tracé][options supplémentaires des termes]
- ...
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Plusieurs \Cle{arguments} (optionnels) sont disponibles :
-
-\begin{itemize}
- \item le premier argument optionnel définit les \Cle{Clés} de la commande :
- \begin{itemize}
- \item la clé \Cle{Fct} qui définit la fonction $f$ ;\hfill{}défaut \Cle{vide}
- \item la clé \Cle{Nom} qui est le \textit{nom} de la suite ;\hfill{}défaut \Cle{u}
- \item la clé \Cle{No} qui est l'indice initial ;\hfill{}défaut \Cle{0}
- \item la clé \Cle{Uno} qui est la valeur du terme initial ;\hfill{}défaut \Cle{vide}
- \item la clé \Cle{Nb} qui est le nombre de termes à construire ;\hfill{}défaut \Cle{5}
- \item la clé \Cle{PosLabel} qui est le placement des labels par rapport à l'axe $(Ox)$ ;\hfill{}défaut \Cle{below}
- \item la clé \Cle{DecalLabel} qui correspond au décalage des labels par rapport aux abscisses ;
-
- \hfill{}défaut \Cle{6pt}
- \item la clé \Cle{TailleLabel} qui correspond à la taille des labels ;\hfill{}défaut \Cle{small}
- \item un booléen \Cle{AffTermes} qui permet d'afficher les termes de la suite sur l'axe $(Ox)$.
-
- \hfill{}défaut \Cle{true}
- \end{itemize}
- \item le deuxième argument optionnel concerne les \Cle{options} du tracé de l'\textit{escalier} en \textit{langage \TikZ} ;
-
- \hfill{}défaut \Cle{thick,color=magenta} ;
- \item le troisième argument optionnel concerne les \Cle{options} du tracé des termes en \textit{langage \TikZ}.
-
- \hfill{}défaut \Cle{dotted}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{noteblock}
-Il est à noter que le \textsf{code} n'est pas autonome, et doit être intégré dans un environnement \ctex{tikzpicture}.
-
-\smallskip
-
-L'utilisateur est donc libre de définir ses styles pour l'affichage des éléments de son graphique, et il est libre également de rajouter des éléments en plus du tracé de la \textit{toile} !
-
-\smallskip
-
-La macro ne permet -- pour le moment -- ni de tracer la bissectrice, ni de tracer la courbe$\ldots$
-
-En effet, il y aurait trop d'options pour ces deux éléments, et l'idée est quand même de conserver une commande \textit{simple} ! Donc l'utilisateur se chargera de tracer et de personnaliser sa courbe et sa bissectrice !
-\end{noteblock}
-
-\subsection{Exemples}
-
-\begin{noteblock}
-On va tracer la \textit{toile} des 4 premiers termes de la suite récurrente :\\
-\hfill$\begin{dcases} u_1 = 1 \\ u_{n+1} = \sqrt{5u_n}+1 \text{ pour tout entier } n \geqslant 1\end{dcases}$.\hfill~
-\end{noteblock}
-
-\begin{PresCodePL}{tikz lower}
-%code tikz
-\def\x{1.5cm}\def\y{1.5cm}
-\def\xmin{0}\def\xmax{10}\def\xgrille{1}\def\xgrilles{0.5}
-\def\ymin{0}\def\ymax{8}\def\ygrille{1}\def\ygrilles{0.5}
-%axes et grilles
-\draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax);
-\draw[line width=1.5pt,->,darkgray,>=latex] (\xmin,0)--(\xmax,0) ;
-\draw[line width=1.5pt,->,darkgray,>=latex] (0,\ymin)--(0,\ymax) ;
-\foreach \x in {0,1,...,9} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;}
-\foreach \y in {0,1,...,7} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;}
-%fonction définie et réutilisable
-\def\f{sqrt(5*\x)+1}
-%toile
-\ToileRecurrence[Fct={\f},No=1,Uno=1,Nb=4,DecalLabel=4pt]
-%éléments supplémentaires
-\draw[very thick,blue,domain=0:8,samples=250] plot (\x,{\f}) ;
-\draw[very thick,CouleurVertForet,domain=0:8,samples=2] plot (\x,\x) ;
-\end{PresCodePL}
-
-\begin{noteblock}
-Peut-être que -- ultérieurement -- des options \textit{booléennes} seront disponibles pour un tracé \textit{générique} de la courbe et de la bissectrice, mais pour le moment la \textsf{macro} ne fait \textit{que} l'escalier.
-\end{noteblock}
-
-\subsection{Influence des paramètres}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{center}
- \begin{tikzpicture}[x=4cm,y=3cm]
- %axes + grilles + graduations
- ...
- %fonction
- \def\f{-0.25*\x*\x+\x}
- %tracés
- \begin{scope}
- \clip (0,0) rectangle (2.5,1.25) ;
- \draw[line width=1.25pt,blue,domain=0:2.5,samples=200] plot (\x,{\f}) ;
- \end{scope}
- \ToileRecurrence[Fct={\f},No=0,Uno=2,Nb=5,PosLabel=above right,DecalLabel=0pt]
-\end{tikzpicture}
-\end{center}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
- \begin{tikzpicture}[x=4cm,y=3cm]
- \draw[xstep=0.25,ystep=0.25,line width=0.3pt,lightgray!50] (0,0) grid (2.5,1.25);
- \draw[thick,->,>=latex] (0,0)--(2.5,0) ;
- \draw[thick,->,>=latex] (0,0)--(0,1.25) ;
- \foreach \x in {0,1,2}
- \draw[line width=1.25pt] (\x,4pt) -- (\x,-4pt) node[below] {\num{\x}} ;
- \foreach \y in {0,0.5,1.0}
- \draw[line width=1.25pt] (4pt,\y) -- (-4pt,\y) node[left] {\num{\y}} ;
- \draw[line width=1.25pt,red](0,0) -- (1.25,1.25) ;
- %fonction
- \def\f{-0.25*\x*\x+\x}
- %tracés
- \begin{scope}
- \clip (0,0) rectangle (2.5,1.25) ;
- \draw[line width=1.25pt,blue,domain=0:2.5,samples=200] plot (\x,{\f}) ;
- \end{scope}
- \ToileRecurrence[Fct={\f},No=0,Uno=2,Nb=5,PosLabel=above right,DecalLabel=0pt]
-\end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{center}
- \begin{tikzpicture}[x=5cm,y=1.5cm]
- ...
- \def\f{1+1/\x}
- \ToileRecurrence%
- [Fct={\f},No=0,Uno=1,Nb=7,PosLabel=above right,DecalLabel=0pt,AffTermes=false]%
- [line width=1.25pt,CouleurVertForet,densely dashed][]
- \draw[line width=1.25pt,blue,domain=0:2.25,samples=2] plot(\x,{\x});
- \draw[line width=1.25pt,red,domain=0.8:2.5,samples=250] plot(\x,{\f});
- \end{tikzpicture}
-\end{center}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
- \begin{tikzpicture}[x=5cm,y=1.5cm]
- %axes et grille
- \draw[xstep=0.5,ystep=0.25,line width=0.3pt,lightgray!50] (0,0) grid (2.5,2.25);
- \draw[thick,->,>=latex] (0,0)--(2.5,0) ;
- \draw[thick,->,>=latex] (0,0)--(0,2.25) ;
- \foreach \x in {0,0.5,...,2}
- \draw[line width=1.25pt] (\x,4pt) -- (\x,-4pt) node[below] {\num{\x}};
- \foreach \y in {0,0.5,...,2}
- \draw[line width=1.25pt] (4pt,\y) -- (-4pt,\y) node[left] {\num{\y}};
- %fonction
- \def\f{1+1/\x}
- %tracés
- \ToileRecurrence%
- [Fct={\f},No=0,Uno=1,Nb=7,PosLabel=above right,DecalLabel=0pt,AffTermes=false]%
- [line width=1.25pt,CouleurVertForet,densely dashed][]
- \draw[line width=1.25pt,blue,domain=0:2.25,samples=2] plot(\x,{\x});
- \draw[line width=1.25pt,red,domain=0.8:2.5,samples=250] plot(\x,{\f});
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Méthodes graphiques et intégrales}\label{integrtikz}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.6.1} 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}
-La commande n'est pas autonome, elle est de ce fait à être placée dans un environnement \ctex{tikzpicture}.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%commande pour déclarer une fonction réutilisable
-\DeclareFonctionTikz[nom]{expr}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%environnement tikz
-\IntegraleApprocheeTikz[clés]{nom_fonction}{a}{b}
-\end{PresCodeTexPL}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Plusieurs \Cle{Clés} sont disponibles pour la commande :
-
-\begin{itemize}
- \item la clé \Cle{Epaisseur} pour l'épaisseur des \og figures \fg{} ; \hfill~défaut : \Cle{semithick}
- \item la clé \Cle{Couleur} pour la couleur des \og figures \fg{} ; \hfill~défaut : \Cle{red}
- \item le booléen \Cle{Remplir}, pour remplir les \og figures \fg{} ; \hfill~défaut : \Cle{true}
- \item la clé \Cle{Opacite} pour l'opacité du remplissage des \og figures \fg{} ;
-
- \hfill~défaut : \Cle{0.25}
- \item la clé \Cle{CouleurRemplissage} pour la couleur de remplissage des \og figures \fg{} ;
-
- \hfill~défaut : \Cle{Couleur!25}
- \item la clé \Cle{Methode}, parmi \Cle{RectanglesGauche / RectanglesDroite / RectanglesMilieu / Trapezes} pour spécifier la méthode utilisée ;
-
- \hfill~défaut : \Cle{RectanglesGauche}
- \item la clé \Cle{NbSubDiv} précise le nombre de \og figures \fg{}. \hfill~défaut : \Cle{10}
-\end{itemize}
-
-\smallskip
-
-Concernant les arguments obligatoires :
-
-\begin{itemize}
- \item le premier est la fonction , déclarée au préalable ;
- \item les deux autres arguments sont les bornes de l'intégrale.
-\end{itemize}
-
-Les commandes graphiques de \ctex{Proflycee} peuvent être utilisées pour configure la fenêtre !
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}%
- [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10]
- \DeclareFonctionTikz{80*\x*exp(-0.2*\x)}
- \FenetreSimpleTikz{0,2,...,20}{0,20,...,160}
- \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20}
- \IntegraleApprocheeTikz{f}{1}{20}
- \draw[red] (10,160) node[below right]
- {$\displaystyle%
- \IntegraleApprochee[Methode=RectanglesGauche,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]%
- {80*x*exp(-0.2*x)}{1}{20}$} ;
-\end{tikzpicture}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}%
- [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10]
- \DeclareFonctionTikz{80*\x*exp(-0.2*\x)}
- \FenetreSimpleTikz{0,2,...,20}{0,20,...,160}
- \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20}
- \IntegraleApprocheeTikz[NbSubDiv=76]{f}{1}{20}
- \draw[red] (10,160) node[below right]
- {$\displaystyle\IntegraleApprochee%
- [NbSubDiv=76,Methode=RectanglesGauche,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]%
- {80*x*exp(-0.2*x)}{1}{20}$} ;
-\end{tikzpicture}
-\end{PresCodePL}
-
-\pagebreak
-
-\subsection{Exemples}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}%
- [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10]
- \DeclareFonctionTikz{80*\x*exp(-0.2*\x)}
- \FenetreSimpleTikz{0,2,...,20}{0,20,...,160}
- \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20}
- \IntegraleApprocheeTikz[Methode=RectanglesDroite,Couleur=green]{f}{1}{20}
- \draw[green] (10,160) node[below right]
- {$\displaystyle\IntegraleApprochee%
- [Methode=RectanglesDroite,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]%
- {80*x*exp(-0.2*x)}{1}{20}$} ;
-\end{tikzpicture}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}%
- [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10]
- \DeclareFonctionTikz{80*\x*exp(-0.2*\x)}
- \FenetreSimpleTikz{0,2,...,20}{0,20,...,160}
- \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20}
- \IntegraleApprocheeTikz[Methode=RectanglesMilieu,Couleur=purple]{f}{1}{20}
- \draw[purple] (10,160) node[below right]
- {$\displaystyle\IntegraleApprochee%
- [Methode=RectanglesMilieu,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]%
- {80*x*exp(-0.2*x)}{1}{20}$} ;
-\end{tikzpicture}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}%
- [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10]
- \DeclareFonctionTikz{80*\x*exp(-0.2*\x)}
- \FenetreSimpleTikz{0,2,...,20}{0,20,...,160}
- \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20}
- \IntegraleApprocheeTikz[Methode=Trapezes,Couleur=orange]{f}{1}{20}
- \draw[orange] (10,160) node[below right]
- {$\displaystyle\IntegraleApprochee%
- [Methode=Trapezes,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]%
- {80*x*exp(-0.2*x)}{1}{20}$} ;
-\end{tikzpicture}
-\end{PresCodePL}
+\input{ProfLycee-doc-outilsgraphiques.tex}
\newpage
@@ -2865,1054 +399,7 @@ Les commandes graphiques de \ctex{Proflycee} peuvent être utilisées pour confi
\newpage
-\part{Présentation de codes}
-
-\section{Précautions}\label{codenumlignes}
-
-\begin{tipblock}
-L'idée est de proposer des environnements pour présenter du code :
-
-\begin{itemize}
- \item \textsf{Python} ;
- \item \textsf{PseudoCode}.
-\end{itemize}
-
-Dans la mesure du possible (mis à part pour certains points avec l'utilisation des packages \ctex{piton} et \ctex{pythontex}), les environnements seront composés :
-
-\begin{itemize}
- \item dans une boîte \ctex{tcolorbox} ;
- \item de deux styles :\ctex{CodeXXXX} ou \ctex{CodeXXXXAlt} ;
- \item de clés pour paramétrer la \Cle{Largeur} et le début de la numérotation \Cle{PremLigne} ;
- \item d'une version étoilée pour ne pas numérotée les lignes ;
- \item d'options éventuelles à donner en langage \ctex{tcolorbox}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{warningblock}
-Avec la mise à jour \cmaj{2.7.5} et la possibilité de modifier la numérotation des lignes, certains environnements ont vu leur fonctionnement légèrement modifié, donc il est conseillé d'être prudent avec les nouvelles spécificités.
-
-\smallskip
-
-Il est prévu, à plus ou moyen terme, d'uniformiser le fonctionnement de tous les environnements, mais cela demande de reprendre une bonne partie du code.
-\end{warningblock}
-
-\section{Code Python \og simple \fg{} via le package listings}\label{pythonsimple}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-Le {package} \ctex{listings} permet d'insérer et de formater du code, notamment du code \textsf{Python}.
-
-En \textit{partenariat} avec \ctex{tcolorbox}, on peut donc présenter \textit{joliment} du code \textsf{Python} !
-\end{tipblock}
-
-\begin{noteblock}
-Le package \ctex{listings} ne nécessite pas de compilation particulière, au contraire d'autres (comme \ctex{pythontex} ou \ctex{minted} ou \ctex{piton}) qui seront présentés ultérieurement.
-\end{noteblock}
-
-\begin{noteblock}
-Les styles utilisés pour formater le code \textsf{Python} ne sont pas modifiables. Ils donnent un rendu proche de celui des packages comme \ctex{pythontex} ou \ctex{minted} ou \ctex{piton}.
-
-\smallskip
-
-Donc, si plusieurs \textit{méthodes} sont utilisées pour insérer du code \textsf{Python} (via les \textit{méthodes} suivantes), le rendu pourra être légèrement différent.
-\end{noteblock}
-
-\subsection{Commande et options}
-
-\begin{tipblock}
-L'environnement \ctex{CodePythonLst} permet de présenter du code \textsf{Python}, dans une \ctex{tcolorbox} avec deux styles particuliers (\cmaj{2.5.8}).
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythonLst}(*)[clés]{commandes tcbox}
-...
-\end{CodePythonLst}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythonLstAlt}(*)[clés]{commandes tcbox}
-...
-\end{CodePythonLstAlt}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Plusieurs \Cle{arguments} sont disponibles :
-
-\begin{itemize}
- \item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ;
- \item le premier argument (\textit{optionnel}), comprend la clé \Cle{Largeur} de la \ctex{tcbox} (\Cle{\textbackslash linewidth} par défaut) et la clé \Cle{PremLigne} (\Cle{1} par défaut) ;
- \item le second argument (\textit{obligatoire}), concerne des \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}, comme l'alignement.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{warningblock}
-Les environnements créés par \ctex{tcolorbox} et \ctex{listings} ne sont pas compatibles avec les options \Cle{gobble} (pour supprimer les tabulations d'environnement), donc il faut bien penser à \og aligner \fg{} le code à gauche, pour éviter des tabulations non esthétiques !
-\end{warningblock}
-
-\subsection{Insertion via un fichier \og externe \fg}
-
-\begin{tipblock}
-Pour des raison pratiques, il est parfois intéressant d'avoir le code \textsf{Python} dans un fichier externe au ficher \ctex{tex}, ou bien créé directement par le fichier \ctex{tex} (via \ctex{scontents}, notamment, mais non chargé par \ctex{ProfLycee}).
-
-Dans ce cas, il n'est pas nécessaire d'aligner le code \og à gauche \fg, en utilisant une commande alternative.
-
-\smallskip
-
-Si cette méthode est utilisée, il ne faut oublier de charger le package \ctex{scontents}, et être attentif à la syntaxe.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\usepackage{scontents} %si script déclaré dans le fichier tex
-...
-\CodePythonLstFichier(*)[largeur]{commandes tcbox}{script}
-\end{PresCodeTexPL}
-
-\subsection{Exemples}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythonLst}{} %les {}, même vides, peuvent être nécessaires (bug avec # sinon !)
-#environnement par défaut
-nb = int(input("Saisir un entier positif"))
-if (nb %7 == 0) :
- print(f"{nb} est bien divisible par 7")
-#endif
-
-def f(x) :
- return x**2
-\end{CodePythonLst}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{CodePythonLst}{}
-#environnement par défaut
-nb = int(input("Saisir un entier positif"))
-if (nb %7 == 0) :
- print(f"{nb} est bien divisible par 7")
-#endif
-
-def f(x) :
- return x**2
-\end{CodePythonLst}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythonLst}[PremLigne=10]{}
-nb = int(input("Saisir un entier positif"))
-if (nb %7 == 0) :
- print(f"{nb} est bien divisible par 7")
-#endif
-\end{CodePythonLst}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{CodePythonLst}[PremLigne=10]{}
-nb = int(input("Saisir un entier positif"))
-if (nb %7 == 0) :
- print(f"{nb} est bien divisible par 7")
-#endif
-\end{CodePythonLst}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythonLstAlt}*[Largeur=0.75\linewidth]{flush right}
-#largeur de 75%, sans numéro, et aligné à droite
-nb = int(input("Saisir un entier Python positif"))
-if (nb %7 == 0) :
- print(f"{nb} est bien divisible par 7")
-#endif
-
-def f(x) :
- return x**2
-\end{CodePythonLstAlt}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{CodePythonLstAlt}*[Largeur=0.75\linewidth]{flush right}
-#largeur de 50%, sans numéro, et aligné à droite
-nb = int(input("Saisir un entier Python positif"))
-if (nb %7 == 0) :
- print(f"{nb} est bien divisible par 7")
-#endif
-
-def f(x) :
- return x**2
-\end{CodePythonLstAlt}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{scontents}[overwrite,write-out=testscript.py]
-# Calcul de la factorielle en langage Python
-def factorielle(x):
- if x < 2:
- return 1
- else:
- return x * factorielle(x-1)
-
-# rapidité de tracé
-import matplotlib.pyplot as plt
-import time
-def trace_parabole_tableaux():
- depart=time.clock()
- X = [] # Initialisation des listes
- Y = []
- a = -2
- h = 0.001
- while a<2:
- X.append(a) # Ajout des valeurs
- Y.append(a*a) # au "bout" de X et Y
- a = a+h
- # Tracé de l'ensemble du tableau de valeurs
- plt.plot(X,Y,".b")
- fin=time.clock()
- return "Temps : " + str(fin-depart) + " s."
-\end{scontents}
-
-%environnement centré, avec numéros, largeur 9cm
-\CodePythonLstFichier[9cm]{center}{testscript.py}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{scontents}[overwrite,write-out=testscript.py]
-# Calcul de la factorielle en langage Python
-def factorielle(x):
- if x < 2:
- return 1
- else:
- return x * factorielle(x-1)
-
-# rapidité de tracé
-import matplotlib.pyplot as plt
-import time
-def trace_parabole_tableaux():
- depart=time.clock()
- X = [] # Initialisation des listes
- Y = []
- a = -2
- h = 0.001
- while a<2:
- X.append(a) # Ajout des valeurs
- Y.append(a*a) # au "bout" de X et Y
- a = a+h
- # Tracé de l'ensemble du tableau de valeurs
- plt.plot(X,Y,".b")
- fin=time.clock()
- return "Temps : " + str(fin-depart) + " s."
-\end{scontents}
-
-\CodePythonLstFichier[9cm]{center}{testscript.py}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Code Python via le package piton}\label{pythonpiton}
-
-\subsection{Introduction}
-
-\begin{noteblock}
-\cmaj{2.5.0} Cette section nécessite de charger la \textsf{librairie} \clib{piton} dans le préambule.
-
-\cmaj{2.5.7} Une console \textsf{Python} est disponible, elle nécessite le package \ctex{pyluatex}, qui n'est pas chargé par \ctex{ProfLycee}, du fait de l'obligation de spécifier le \textit{chemin} pour l'exécutable \textsf{Python} !
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\usepackage[executable=...]{pyluatex} %si utilisation de la console REPL
-\useproflyclib{piton}
-\end{PresCodeTexPL}
-
-\begin{noteblock}
-La \textsf{librairie} \clib{piton} (qui charge \ctex{piton}, est compatible uniquement avec \hologo{LuaLaTeX} !) permet d'insérer du code \textsf{Python} avec une coloration syntaxique en utilisant la bibliothèque \textsf{Lua LPEG}.
-
-\smallskip
-
-En \textit{partenariat} avec \ctex{tcolorbox}, on peut avoir une présentation de code \textsf{Python} !
-
-\smallskip
-
-Depuis la version \ctex{0.95} de \ctex{piton}, \Cle{left-margin=auto} est disponible et activée dans \ctex{ProfLycee}.
-
-Depuis la version \ctex{0.99} de \ctex{piton}, \Cle{break-lines} est disponible et activée dans \ctex{ProfLycee}.
-
-Depuis la version \ctex{1.0} de \ctex{piton}, \Cle{tabs-auto-gobble} est disponible et activée dans \ctex{ProfLycee}.
-
-Depuis la version \ctex{2.2a} de \ctex{piton}, des options pour \Cle{line-numbers} sont disponibles.
-\end{noteblock}
-
-\begin{warningblock}
-Le package \ctex{piton} nécessite donc obligatoirement l’emploi de \hologo{LuaLaTeX} !
-
-Ce package n'est chargé que si la compilation détectée est en \hologo{LuaLaTeX} !
-
-\smallskip
-
-\cmaj{2.5.7} L'utilisation de la console \textbf{REPL} nécessite une compilation en \ctex{--shell-escape} ou \ctex{-write18} !
-
-\cmaj{2.5.7} Les packages \ctex{pyluatex} et \ctex{pythontex} utilisent des commandes de même nom, donc la présente documentation n'utilisera pas le package \ctex{pyluatex}. Une documentation annexe spécifique est disponible.
-\end{warningblock}
-
-\subsection{Présentation de code Python}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePiton}[options]{options tcbox}<option line-numbers>
-...
-\end{CodePiton}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Plusieurs \Cle{clés} sont disponibles :
-
-\begin{itemize}
- \item la clé booléenne \Cle{Lignes} pour afficher ou non les numéros de lignes ; \hfill{}défaut \Cle{true}
- \item la clé booléenne \Cle{Gobble} pour activer les options liées au \textsf{gobble} ; \hfill{}défaut \Cle{true}
- \item la clé \Cle{Largeur} qui correspond à la largeur de la \ctex{tcbox} ; \hfill{}défaut \Cle{\textbackslash linewidth}
- \item la clé \Cle{TaillePolice} pour la taille des caractères ; \hfill{}défaut \Cle{\textbackslash footnotesize}
- \item la clé \Cle{Alignement} qui paramètre l'alignement de la \ctex{tcbox} ; \hfill{}défaut \Cle{center}
- \item \cmaj{2.5.7} la clé \Cle{Style} (parmi \Cle{Moderne / Classique}) pour changer le style ;
-
- \hfill{}défaut \Cle{Moderne}
- \item \cmaj{2.5.7} le boolén \Cle{Filigrane} pour afficher, le logo {\small \faPython} en filigrane ; \hfill{}défaut \Cle{false}
- \item \cmaj{2.5.7} le boolén \Cle{BarreTitre} (si \Cle{Style=Moderne}) pour afficher le titre ; \hfill{}défaut \Cle{true}
- \item \cmaj{2.5.7} le boolén \Cle{Cadre} (si \Cle{Style=Moderne}) pour afficher le cadre ; \hfill{}défaut \Cle{true}
- \item \cmaj{2.5.9} la clé \Cle{CouleurNombres} pour la couleur des nombres.\hfill{}défaut \Cle{orange}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{noteblock}
-Du fait du paramétrage des boîtes \ctex{tcolorbox}, il se peut que le rendu soit non conforme si elle doit être insérée dans une autre \ctex{tcolorbox}\ldots{} (normalement corrigé en \cmaj{2.6.9}) !
-\end{noteblock}
-
-\begin{noteblock}
-Pour éviter des problèmes avec le code interprété par \textsf{piton}, les \ctex{\{\}} de l'argument obligatoire sont nécessaires au bon fonctionnement du code.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePiton}{} %pour éviter un bug avec le caractère #
-#environnement piton avec numéros de ligne, pleine largeur, style moderne
-def arctan(x,n=10):
- if x < 0:
- return -arctan(-x) #> (appel récursif)
- elif x > 1:
- return pi/2 - arctan(1/x) #> (autre appel récursif)
- else:
- return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
-\end{CodePiton}
-\end{PresCodeTexPL}
-
-\begin{CodePiton}{}
-#environnement piton avec numéros de ligne, pleine largeur, style moderne
-def arctan(x,n=10):
- if x < 0:
- return -arctan(-x) #> (appel récursif)
- elif x > 1:
- return pi/2 - arctan(1/x) #> (autre appel récursif)
- else:
- return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
-\end{CodePiton}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePiton}[Style=Classique,Filigrane]{}<start=10>
-#environnement piton avec numéros (début=10), style classique, filigrane
-def arctan(x,n=10):
- if x < 0:
- return -arctan(-x) #> (appel récursif)
- elif x > 1:
- return pi/2 - arctan(1/x) #> (autre appel récursif)
- else:
- return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
-\end{CodePiton}
-\end{PresCodeTexPL}
-
-\begin{CodePiton}[Style=Classique,Filigrane]{}<start=10>
-#environnement piton avec numéros, style classique, filigrane
-def arctan(x,n=10):
- if x < 0:
- return -arctan(-x) #> (appel récursif)
- elif x > 1:
- return pi/2 - arctan(1/x) #> (autre appel récursif)
- else:
- return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
-\end{CodePiton}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePiton}[Alignement=flush right,Largeur=13cm]{}
-def f(x) :
- return x**2
-\end{CodePiton}
-
-\begin{CodePiton}[Alignement=flush left,Largeur=11cm]{}
-def f(x) :
- return x**2
-\end{CodePiton}
-
-\begin{itemize} %Avec des indentations d'environnement :
- \item On essaye avec un \texttt{itemize} :
- %
- \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false]{}
- def f(x) :
- return x**2
- \end{CodePiton}
- \item Et avec un autre \texttt{itemize} :
- %
- \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false,BarreTitre=false]{}
- #avec numéros, de largeur 12cm, centré, classique, sans cadre/titre
- def f(x) :
- return x**2
- \end{CodePiton}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{PresCodeTexPL}
-
-\begin{CodePiton}[Alignement=flush right,Largeur=13cm]{}
-#avec numéros, de largeur 13cm, aligné à droite
-def f(x) :
- return x**2
-\end{CodePiton}
-
-\begin{CodePiton}[Alignement=flush left,Largeur=11cm]{}
-#avec numéros, de largeur 11cm, aligné à gauche
-def f(x) :
- return x**2
-\end{CodePiton}
-
-\begin{itemize}
- \item On essaye avec un \texttt{itemize} :
- %
- \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false]{}
- #avec numéros, de largeur 12cm, centré, classique, sans cadre
- def f(x) :
- return x**2
- \end{CodePiton}
- \item Et avec un autre \texttt{itemize} :
- %
- \begin{CodePiton}[Largeur=12cm,Style=Classique,BarreTitre=false,Cadre=false]{}
- #avec numéros, de largeur 12cm, centré, classique, sans cadre/titre
- def f(x) :
- return x**2
- \end{CodePiton}
-\end{itemize}
-
-\subsection{Console en partenariat avec Pyluatex}
-
-\begin{noteblock}
-\cmaj{2.5.7} Une console d'exécution (type REPL) est disponible, et la documentation associée est en marge de la présente documentation.
-\end{noteblock}
-
-\pagebreak
-
-\section{Code \& Console Python, via les packages Pythontex ou Minted}
-
-\subsection{Librairies}
-
-\begin{noteblock}
-\cmaj{2.5.0} Cette section nécessite de charger les librairies \clib{minted} et/ou \clib{pythontex} dans le préambule.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\useproflyclib{minted}
-\useproflyclib{pythontex}
-%ou
-\useproflyclib{minted,pythontex}
-\end{PresCodeTexPL}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-\cmaj{2.5.0} La \textsf{librairie} \clib{pythontex} permet d'insérer et d'exécuter du code \textsf{Python}. On peut :
-
-\begin{itemize}
- \item \cmaj{2.5.8} présenter du code \textsf{Python} (deux styles disponibles) ;
- \item exécuter du code \textsf{Python} dans un environnement type \og console \fg{} ;
- \item charger du code \textsf{Python}, et éventuellement l'utiliser dans la console.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{warningblock}
-\textbf{Attention : }il faut dans ce cas une compilation en plusieurs étapes, comme par exemple \textsf{pdflatex puis pythontex puis pdflatex} !
-
-Voir par exemple \url{http://lesmathsduyeti.fr/fr/informatique/latex/pythontex/} !
-\end{warningblock}
-
-\begin{noteblock}
-Compte tenu de la \textit{relative complexité} pour gérer les options (par paramètres/clés\ldots) des \textit{tcbox} et des \textit{fancyvrb}, les style sont \og fixés \fg{} tels quels, et seules la taille et la position de la \textit{tcbox} sont modifiables. Si toutefois vous souhaitez personnaliser davantage, il faudra prendre le code correspondant et appliquer vos modifications !
-
-Cela peut donner -- en tout cas -- des idées de personnalisation en ayant une base \textit{pré}existante !
-\end{noteblock}
-
-\subsection{Présentation de code Python grâce au package pythontex}\label{pythontex}
-
-\begin{tipblock}
-L'environnement \ctex{CodePythontex} est donc lié à \ctex{pythontex} (chargé par \ctex{ProfLycee}, avec l'option \textit{autogobble}) permet de présenter du code \textsf{Python}, dans une \ctex{tcolorbox} avec deux styles particuliers (\cmaj{2.5.8}).
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythontex}[clés]{} %les {} vides sont nécessaires
-...
-\end{CodePythontex}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythontexAlt}[clés]{} %les {} vides sont nécessaires
- ...
-\end{CodePythontexAlt}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Comme précédemment, des \Cle{Clés} qui permettent de \textit{légèrement} modifier le style :
-
-\begin{itemize}
- \item \Cle{Largeur} : largeur de la \textit{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth}
- \item \Cle{PremLigne} : numéro initial des lignes ; \hfill{}défaut \Cle{1}
- \item \Cle{TaillePolice} : taille des caractères ;\hfill{}défaut \Cle{\textbackslash footnotesize}
- \item \Cle{EspacementVertical} : option (\textit{stretch}) pour l'espacement entre les lignes ;\hfill{}défaut \Cle{1}
- \item \Cle{Lignes} : booléen pour afficher ou non les numéros de ligne.\hfill{}défaut \Cle{true}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythontex}{} %bien mettre les {} !!
- #environnement Python(tex) par défaut
- def f(x) :
- return x**2
-\end{CodePythontex}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{CodePythontex}{}
- #environnement Python(tex) par défaut
- def f(x) :
- return x**2
-\end{CodePythontex}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythontexAlt}[Largeur=12cm,Centre,Lignes=false]{}
- #environnement Python(tex) classique, centré, sans lignes
- def f(x) :
- return x**2
-\end{CodePythontexAlt}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{CodePythontexAlt}[Largeur=12cm,Centre,Lignes=false]{}
- #environnement Python(tex) classique, centré, sans lignes
- def f(x) :
- return x**2
-\end{CodePythontexAlt}
-\end{PresCodeSortiePL}
-
-\subsection{Présentation de code Python via le package minted}\label{pytminted}
-
-\begin{noteblock}
-Pour celles et ceux qui ne sont pas à l'aise avec le {package} \ctex{pythontex} et notamment sa spécificité pour compiler, il existe le {package} \ctex{minted} qui permet de présenter du code, et notamment \textsf{Python}.
-
-\cmaj{2.5.8} Deux styles sont désormais disponibles.
-
-\cmaj{2.5.0} C'est donc la \textsf{librairie} \clib{minted} qu'il faudra charger.
-\end{noteblock}
-
-\begin{warningblock}
-Le package \ctex{minted} nécessite quand même une compilation avec l'option \ctex{--shell-escape} ou \ctex{-write18} !
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythonMinted}(*)[clés]{options tcbox}
-...
-\end{CodePythonMinted}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythonMintedAlt}(*)[clés]{options tcbox}
-...
-\end{CodePythonMintedAlt}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Plusieurs \Cle{arguments} sont disponibles :
-
-\begin{itemize}
- \item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ;
- \item le 1\up{er} argument (\textit{optionnel}), comprend la clé \Cle{Largeur} de la \ctex{tcbox} (\Cle{\textbackslash linewidth} par défaut) et la clé \Cle{PremLigne} (\Cle{1} par défaut) ;
- \item le 2\up{nd} argument \textit{obligatoire} concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcbox}.\hfill{}défaut \Cle{vide}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythonMinted}[Largeur=13cm,PremLigne=10]{center}
- #environnement Python(minted) centré avec numéros, de largeur 13cm
- def f(x) :
- return x**2
-\end{CodePythonMinted}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{CodePythonMinted}[Largeur=13cm,PremLigne=10]{center}
- #environnement Python(minted) centré avec numéros
- def f(x) :
- return x**2
-\end{CodePythonMinted}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{CodePythonMintedAlt}*[Largeur=0.8\linewidth]{}
- #environnement Python(minted), style alt, sans numéro, de largeur 0.8\linewidth
- def f(x) :
- return x**2
-\end{CodePythonMintedAlt}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{CodePythonMintedAlt}*[Largeur=0.8\linewidth]{}
- #environnement Python(minted), style alt, sans numéro, 0.8\linewidth
- def f(x) :
- return x**2
-\end{CodePythonMintedAlt}
-\end{PresCodeSortiePL}
-
-\subsection{Console d'exécution Python}
-
-\begin{tipblock}
-\ctex{pythontex} permet également de \textit{simuler} (en exécutant également !) du code \textsf{Python} dans une \textit{console}, avec la \textsf{librairie} \clib{pythontex} du coup !
-
-C'est l'environnement \ctex{ConsolePythontex} qui permet de le faire.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{ConsolePythontex}[clés]{} %les {} vides sont nécessaires
-...
-\end{ConsolePythontex}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Les \Cle{Clés} disponibles sont :
-
-\begin{itemize}
- \item \Cle{Largeur} : largeur de la \textit{console} ;\hfill{}défaut \Cle{\textbackslash linewidth}
- \item \Cle{Centre} : booléen pour centrer ou non la \textit{console} ;\hfill{}défaut \Cle{false}
- \item \Cle{TaillePolice} : taille des caractères ;\hfill{}défaut \Cle{\textbackslash footnotesize}
- \item \Cle{EspacementVertical} : option (\textit{stretch}) pour l'espacement entre les lignes ;\hfill{}défaut \Cle{1}
- \item \Cle{Label} : booléen pour afficher ou non le titre.\hfill{}défaut \Cle{true}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{ConsolePythontex}{}
- #console Python(tex) par défaut
- from math import sqrt
- 1+1
- sqrt(12)
-\end{ConsolePythontex}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\smallskip
-\begin{ConsolePythontex}{}
- #console Python(tex) par défaut
- from math import sqrt
- 1+1
- sqrt(12)
-\end{ConsolePythontex}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{ConsolePythontex}[Largeur=14cm,Label=false,Centre]{}
- #console Python(tex) centrée sans label, 14cm
- table = [[1,2],[3,4]]
- table[0][0]
-
- from random import randint
- tableau = [[randint(1,20) for j in range(0,6)] for i in range(0,3)]
- tableau
- len(tableau), len(tableau[0]), tableau[1][4]
-\end{ConsolePythontex}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\smallskip
-\begin{ConsolePythontex}[Largeur=14cm,Label=false,Centre]{}
- #console Python(tex) centrée sans label, 14cm
- table = [[1,2],[3,4]]
- table[0][0]
-
- from random import randint
- tableau = [[randint(1,20) for j in range(0,6)] for i in range(0,3)]
- tableau
- len(tableau), len(tableau[0]), tableau[1][4]
-\end{ConsolePythontex}
-\end{PresCodeSortiePL}
-
-\begin{noteblock}
-Le package \ctex{pythontex} peut donc servir à présenter du code Python, comme \ctex{minted} ou \ctex{piton}, sa particularité est toutefois de pouvoir \textit{exécuter} du code \textsf{Python} pour une présentation de type \textit{console}.
-\end{noteblock}
-
-\newpage
-
-\section{Pseudo-Code}\label{pseudocode}
-
-\subsection{Introduction}
-
-\begin{noteblock}
-Le {package} \ctex{listings} permet d'insérer et de présenter du code, et avec \ctex{tcolorbox} on peut obtenir une présentation similaire à celle du code \textsf{Python}. Pour le moment la \textit{philosophie} de la commande est un peu différente de celle du code \textsf{Python}, avec son système de \Cle{Clés}.
-\end{noteblock}
-
-\subsection{Présentation de Pseudo-Code}
-
-\begin{tipblock}
-Les environnements \ctex{PseudoCode} ou \ctex{PseudoCodeAlt} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}, avec deux styles à disposition (\cmaj{2.5.8}).
-\end{tipblock}
-
-\begin{warningblock}
-De plus, le package \ctex{listings} avec \ctex{tcolorbox} ne permet pas de gérer le paramètre \textit{autogobble}, donc il faudra être vigilant quant à la position du code (pas de tabulation en fait\ldots)
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{PseudoCode}(*)[clés]{options tcbox}
-%attention à l'indentation, gobble ne fonctionne pas...
-...
-\end{PseudoCode}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{PseudoCodeAlt}(*)[clés]{options tcbox}
-%attention à l'indentation, gobble ne fonctionne pas...
-...
-\end{PseudoCodeAlt}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Plusieurs \Cle{arguments} (optionnels) sont disponibles :
-
-\begin{itemize}
- \item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ;
- \item le 1\up{er} argument (\textit{optionnel}), comprend la clé \Cle{Largeur} de la \ctex{tcbox} (\Cle{\textbackslash linewidth} par défaut) et la clé \Cle{PremLigne} (\Cle{1} par défaut) ;
- \item \cmaj{2.7.5} une clé booléenne \Cle{Couleur} est également disponible pour mettre en évidence trois niveaux (elles peuvent être redéfinies) de mots clés en pseudo-code (\Cle{false} par défaut) ;
- \item \cmaj{2.5.8} l'argument obligatoire entre \ctex{\{...\}} concerne les \Cle{options} de la \ctex{tcbox}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%en pas oublier les {}, même vides !
-\begin{PseudoCode}{} %non centré, de largeur par défaut (12cm) avec lignes
-List = [...] # à déclarer au préalable
-n = longueur(List)
-Pour i allant de 0 à n-1 Faire
- Afficher(List[i])
-FinPour
-\end{PseudoCode}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{PseudoCode}{}
-List = [...] # à déclarer au préalable
-n = longueur(List)
-Pour i allant de 0 à n-1 Faire
- Afficher(List[i])
-FinPour
-\end{PseudoCode}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{PseudoCodeAlt}[Largeur=15cm,PremLigne=7,Couleur]{center} %centré, de largeur 15cm
-List = [...] # à déclarer au préalable
-n = longueur(List)
-Pour i allant de 0 à n-1 Faire
- Afficher(List[i])
-FinPour
-\end{PseudoCodeAlt}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{PseudoCodeAlt}[Largeur=15cm,PremLigne=7,Couleur]{center}
-List = [...] # à déclarer au préalable
-n = longueur(List)
-Pour i allant de 0 à n-1 Faire
- Afficher(List[i])
-FinPour
-\end{PseudoCodeAlt}
-\end{PresCodeSortiePL}
-
-\subsection{Compléments}
-
-\begin{warningblock}
-À l'instar de packages existants, la \textit{philosophie} ici est de laisser l'utilisateur gérer \textit{son} langage pseudo-code.
-
-J'ai fait le choix de ne pas forcément définir des \textsf{mots clés} à mettre en valeur car cela reviendrait à \textit{imposer} des choix ! Donc ici, pas de coloration syntaxique (uniquement via la clé \Cle{Couleur}) ou de mise en évidence de mots clés, uniquement un formatage basique !
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-%couleurs par défaut des mots clés, modifiables si besoin
-\colorlet{MotsClesPseudoCodeA}{blue!75}
-\colorlet{MotsClesPseudoCodeB}{green!50!black}
-\colorlet{MotsClesPseudoCodeChaine}{red!75}
-\end{PresCodeTexPL}
-
-\begin{noteblock}
-Le style \ctex{listings} utilisé par la commande a l'option \Cle{mathescape} activée, et accessible grâce aux délimiteurs \Cle{(*...*)}.
-
-Cela permet d'insérer du code \LaTeX{} dans l'environnement \ctex{PseudoCode} (attention au fontes par contre !).
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{PseudoCode}*[Largeur=12cm]{} % pour éviter un bug avec #
-#Utilisation du mode mathescape
-Afficher (*\og*) .........(*\fg*)
-m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*)
-\end{PseudoCode}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{PseudoCode}*[Largeur=12cm]{}
-#Utilisation du mode mathescape
-Afficher (*\og*) .........(*\fg*)
-m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*)
-\end{PseudoCode}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Terminal Windows/UNiX/OSX}\label{terms}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-L'idée des \textsf{commandes} suivantes est de permettre de simuler des fenêtres de \textsf{Terminal}, que ce soit pour Windows, Ubuntu ou OSX.
-
-\smallskip
-
-L'idée de base vient du {package} \ctex{termsim}, mais ici la gestion du \textsf{code} et des \textsf{fenêtres} est légèrement différente.
-
-\smallskip
-
-Le \textsf{contenu} est géré par le package \ctex{listings}, sans langage particulier, et donc sans coloration syntaxique particulière.
-\end{tipblock}
-
-\begin{warningblock}
-Comme pour le pseudo-code, pas d'\textsf{autogobble}, donc commandes à aligner à gauche !
-\end{warningblock}
-
-\subsection{Commandes}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{TerminalWin}[largeur]{titre=...}[options tcbox]
-...
-\end{TerminalWin}
-
-\begin{TerminalUnix}[largeur]{titre=...}[options tcbox]
-...
-\end{TerminalUnix}
-
-\begin{TerminalOSX}[largeur]{titre=...}[options tcbox]
-...
-\end{TerminalOSX}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Peu d'options pour ces commandes :
-
-\begin{itemize}
- \item le premier, \textit{optionnel}, est la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth}
- \item le deuxième, \textit{obligatoire}, permet de spécifier le titre par la clé \Cle{Titre}.\hfill{}défaut \Cle{Terminal Windows/UNiX/OSX}
- \item le troisième, \textit{optionnel}, concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}.\hfill{}défaut \Cle{vide}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{noteblock}
-Le \textsf{code} n'est pas formaté, ni mis en coloration syntaxique.
-
-De ce fait tous les caractères sont autorisés : même si l'éditeur pourra détecter le \% comme le début d'un commentaire, tout sera intégré dans le code mis en forme !
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{TerminalUnix}[12cm]{Titre=Terminal Ubuntu}[center] %12cm, avec titre modifié et centré
-test@DESKTOP:~$ ping -c 2 ctan.org
-PING ctan.org (5.35.249.60) 56(84) bytes of data.
-\end{TerminalUnix}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{TerminalUnix}[12cm]{Titre=Terminal Ubuntu}[center]
-test@DESKTOP:~$ ping -c 2 ctan.org
-PING ctan.org (5.35.249.60) 56(84) bytes of data.
-\end{TerminalUnix}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{TerminalWin}[15cm]{} %largeur 15cm avec titre par défaut
-Microsoft Windows [version 10.0.22000.493]
-(c) Microsoft Corporation. Tous droits réservés.
-C:\Users\test>ping ctan.org
-
-Envoi d'une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données :
-Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51
-Réponse de 5.35.249.60 : octets=32 temps=37 ms TTL=51
-Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51
-Réponse de 5.35.249.60 : octets=32 temps=39 ms TTL=51
-
-Statistiques Ping pour 5.35.249.60:
-Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
-Durée approximative des boucles en millisecondes :
-Minimum = 35ms, Maximum = 39ms, Moyenne = 36ms
-\end{TerminalWin}
-
-\begin{TerminalOSX}[0.5\linewidth]{Titre=Terminal MacOSX}[flush right] %1/2-largeur et titre modifié et droite
-[test@server]$ ping -c 2 ctan.org
-PING ctan.org (5.35.249.60) 56(84) bytes of data.
-\end{TerminalOSX}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{TerminalWin}[15cm]{}
-Microsoft Windows [version 10.0.22000.493]
-(c) Microsoft Corporation. Tous droits réservés.
-C:\Users\test>ping ctan.org
-
-Envoi d'une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données :
-Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51
-Réponse de 5.35.249.60 : octets=32 temps=37 ms TTL=51
-Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51
-Réponse de 5.35.249.60 : octets=32 temps=39 ms TTL=51
-
-Statistiques Ping pour 5.35.249.60:
-Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
-Durée approximative des boucles en millisecondes :
-Minimum = 35ms, Maximum = 39ms, Moyenne = 36ms
-\end{TerminalWin}
-
-\begin{TerminalUnix}[12cm]{Titre=Terminal Ubuntu}[center]
-test@DESKTOP:~$ ping -c 2 ctan.org
-PING ctan.org (5.35.249.60) 56(84) bytes of data.
-\end{TerminalUnix}
-
-\begin{TerminalOSX}[0.5\linewidth]{Titre=Terminal MacOSX}[flush right]
-[test@server]$ ping -c 2 ctan.org
-PING ctan.org (5.35.249.60) 56(84) bytes of data.
-\end{TerminalOSX}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Cartouche Capytale}\label{capytale}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-L'idée est d'obtenir des \textsf{cartouches} tels que \textsf{Capytale} les présente, pour partager un code afin d'accéder à une activité \textsf{Python}.
-\end{tipblock}
-
-\subsection{Commandes}
-
-\begin{PresCodeTexPL}{listing only}
-\CartoucheCapytale(*)[options]{code capytale}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Peu d'options pour ces commandes :
-
-\begin{itemize}
- \item la version \textit{étoilée} qui permet de passer de la police \Cle{sffamily} à la police \Cle{ttfamily}, et donc dépendante des fontes du document ;
- \item le deuxième, \textit{optionnel}, permet de rajouter des caractères après le code (comme un \textsf{espace}) ;
-
- \hfill{}défaut \Cle{vide}
- \item le troisième, \textit{obligatoire}, est le \textsf{code capytale} à afficher.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\CartoucheCapytale{abcd-12345} %lien simple, en sf
-
-\CartoucheCapytale[~]{abcd-12345} %lien avec ~ à la fin, en sf
-
-\CartoucheCapytale*{abcd-12345} %lien simple, en tt
-
-\CartoucheCapytale*[~]{abcd-12345} %lien avec ~ à la fin, en tt
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\CartoucheCapytale{abcd-12345}
-
-\CartoucheCapytale[~]{abcd-12345}
-
-\CartoucheCapytale*{abcd-12345}
-
-\CartoucheCapytale*[~]{abcd-12345}
-\end{PresCodeSortiePL}
-
-\begin{noteblock}
-Le \textsf{cartouche} peut être \og cliquable \fg{} grâce à \ctex{href}.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\usepackage{hyperref}
-\urlstyle{same}
-...
-\href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\CartoucheCapytale{abcd-12345}}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\CartoucheCapytale{abcd-12345}}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Présentation de code \LaTeX}\label{prescode}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-\cmaj{2.0.6} L'idée est de proposer un environnement pour présenter du code \LaTeX. Ce n'est pas forcément lié à l'enseignement en Lycée mais pourquoi pas !
-
-\smallskip
-
-Il s'agir d'un environnement créé en \ctex{tcolorbox}, et utilisant la présentation \textit{basique} de code via \ctex{listings}.
-\end{tipblock}
-
-\subsection{Commandes}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{PresentationCode}[Couleur]{options tcbox}
-...
-\end{PresentationCode}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Peu de personnalisations pour ces commandes :
-
-\begin{itemize}
- \item le premier argument, \textit{optionnel}, permet de préciser la \textit{couleur} de la présentation ;\hfill{}défaut \Cle{CouleurVertForet}
- \item le second, \textit{obligatoire}, correspond aux éventuelles options liées à la \ctex{tcolorbox}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{noteblock}
-Il est à noter que, même dans le cas d'option vide pour la \ctex{tcolorbox}, les \ctex{\{\}} sont nécessaires.
-
-\smallskip
-
-On peut par exemple utiliser l'option \Cle{listing only} pour ne présenter \textit{que} le code source.
-\end{noteblock}
-
-\begin{PresCodePL}{}
-\begin{PresentationCode}{}
-\xdef\ValAleaA{\fpeval{randint(1,100)}}
-\xdef\ValAleaB{\fpeval{randint(1,100)}}
-
-Avec $A=\ValAleaA$ et $B=\ValAleaB$, on a $A\times B=\inteval{\ValAleaA * \ValAleaB}$.
-\end{PresentationCode}
-
-\begin{PresentationCode}[blue]{}
-On peut faire beaucoup de choses avec \LaTeX{} !
-\end{PresentationCode}
-\end{PresCodePL}
+\input{ProfLycee-doc-prescodes.tex}
\pagebreak
@@ -3926,405 +413,7 @@ On peut faire beaucoup de choses avec \LaTeX{} !
\newpage
-\part{Outils pour la géométrie}
-
-\section{Pavé droit \og simple \fg}\label{pave}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-L'idée est d'obtenir un pavé droit, dans un environnement \TikZ, avec les nœuds créés et nommés directement pour utilisation ultérieure.
-\end{tipblock}
-
-\subsection{Commandes}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[options tikz]
- \PaveTikz[options]
- ...
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
- \item \Cle{Largeur} : largeur du pavé ;\hfill{}défaut \Cle{2}
- \item \Cle{Profondeur} : profondeur du pavé ;\hfill{}défaut \Cle{1}
- \item \Cle{Hauteur} : hauteur du pavé ;\hfill{}défaut \Cle{1.25}
- \item \Cle{Angle} : angle de fuite de la perspective ;\hfill{}défaut \Cle{30}
- \item \Cle{Fuite} : coefficient de fuite de la perspective ;\hfill{}défaut \Cle{0.5}
- \item \Cle{Sommets} : liste des sommets (avec délimiteur § !) ;\hfill{}défaut \Cle{A§B§C§D§E§F§G§H}
- \item \Cle{Math} : booléen pour forcer le mode math des sommets ;\hfill{}défaut \Cle{false}
- \item \Cle{Epaisseur} : épaisseur des arêtes (en \textit{langage simplifié} \TikZ) ;\hfill{}défaut \Cle{thick}
- \item \Cle{Aff} : booléen pour afficher les noms des sommets ;\hfill{}défaut \Cle{false}
- \item \Cle{Plein} : booléen pour ne pas afficher les arêtes \textit{invisibles} ;\hfill{}défaut \Cle{false}
- \item \Cle{Cube} : booléen pour préciser qu'il s'agit d'un cube (seule la valeur \Cle{Largeur} est util(isé)e).
-
- \hfill{}défaut \Cle{false}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{tikz lower}
-%code tikz
-\PaveTikz
-\end{PresCodePL}
-
-\begin{PresCodePL}{tikz lower}
-%code tikz
-\PaveTikz[Cube,Largeur=2]
-\end{PresCodePL}
-
-\begin{noteblock}
-La ligne est de ce fait à insérer dans un environnement \TikZ, avec les options au choix pour cet environnement.
-
-Le code crée les nœuds relatifs aux sommets, et les nomme comme les sommets, ce qui permet de les réutiliser pour éventuellement compléter la figure !
-\end{noteblock}
-
-\subsection{Influence des paramètres}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[line join=bevel]
- \PaveTikz[Aff,Largeur=4,Profondeur=3,Hauteur=2,Epaisseur={ultra thick}]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{tikzpicture}[line join=bevel]
- \PaveTikz[Aff,Largeur=4,Profondeur=3,Hauteur=2,Epaisseur={ultra thick}]
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{center}
- \begin{tikzpicture}[line join=bevel]
- \PaveTikz[Plein,Aff,Largeur=7,Profondeur=3.5,Hauteur=4,Sommets=Q§S§D§F§G§H§J§K]
- \draw[thick,red,densely dotted] (G)--(J) ;
- \draw[thick,blue,densely dotted] (K)--(H) ;
- \end{tikzpicture}
-\end{center}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
- \begin{tikzpicture}[line join=bevel]
- \PaveTikz[Plein,Aff,Largeur=7,Profondeur=3.5,Hauteur=4,Sommets=Q§S§D§F§G§H§J§K]
- \draw[thick,red,densely dotted] (G)--(J) ;
- \draw[thick,blue,densely dotted] (K)--(H) ;
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Tétraèdre \og simple \fg}\label{tetra}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-L'idée est d'obtenir un tétraèdre, dans un environnement \TikZ, avec les nœuds créés et nommés directement pour utilisation ultérieure.
-\end{tipblock}
-
-\subsection{Commandes}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[options tikz]
- \TetraedreTikz[options]
- ...
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
- \item \Cle{Largeur} : \textit{largeur} du tétraèdre ;\hfill{}défaut \Cle{4}
- \item \Cle{Profondeur} : \textit{profondeur} du tétraèdre ;\hfill{}défaut \Cle{1.25}
- \item \Cle{Hauteur} : \textit{hauteur} du tétraèdre ;\hfill{}défaut \Cle{3}
- \item \Cle{Alpha} : angle \textit{du sommet de devant} ;\hfill{}défaut \Cle{40}
- \item \Cle{Beta} : angle \textit{du sommet du haut} ;\hfill{}défaut \Cle{60}
- \item \Cle{Sommets} : liste des sommets (avec délimiteur § !) ;\hfill{}défaut \Cle{A§B§C§D}
- \item \Cle{Math} : booléen pour forcer le mode math des sommets ;\hfill{}défaut \Cle{false}
- \item \Cle{Epaisseur} : épaisseur des arêtes (en \textit{langage simplifié} \TikZ) ;\hfill{}défaut \Cle{thick}
- \item \Cle{Aff} : booléen pour afficher les noms des sommets ;\hfill{}défaut \Cle{false}
- \item \Cle{Plein} : booléen pour ne pas afficher l'arête \textit{invisible} .\hfill{}défaut \Cle{false}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{tikz lower}
-%code tikz
-\TetraedreTikz
-\end{PresCodePL}
-
-\begin{PresCodePL}{tikz lower}
-%code tikz
-\TetraedreTikz[Aff,Largeur=2,Profondeur=0.625,Hauteur=1.5]
-\end{PresCodePL}
-
-\begin{PresCodePL}{tikz lower}
-%code tikz
-\TetraedreTikz[Plein,Aff,Largeur=5,Beta=60]
-\end{PresCodePL}
-
-\subsection{Influence des paramètres}
-
-\begin{noteblock}
-Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les différents paramètres utiles.
-
-\begin{center}
- \begin{tikzpicture}[x=1.25cm,y=1.25cm,line width=1pt,line join=bevel]
- \TetraedreTikz[Largeur=5,Profondeur=1.95,Hauteur=2.75,Alpha=45,Beta=70]
- \draw[draw=none] (A)--(C) node[midway,sloped,above,font=\small\sffamily,BleuCadet] {Largeur} ;
- \draw[draw=none] (A)--(B) node[midway,sloped,below,font=\small\sffamily,BleuCadet] {Profondeur} ;
- \draw[draw=none] (A)--(D) node[midway,sloped,above,font=\small\sffamily,BleuCadet] {Hauteur} ;
- \draw[purple] (0.5,0) arc (0:-45:0.5) ;
- \draw (-22.5:0.5) node[purple,right] {$\alpha$} ;
- \draw[orange] (0.75,0) arc (0:70:0.75) ;
- \draw (35:0.75) node[orange,right] {$\beta$} ;
- \end{tikzpicture}
-\end{center}
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{center}
- \begin{tikzpicture}[line join=bevel]
- \TetraedreTikz[Aff,Largeur=7,Profondeur=3,Hauteur=5,Epaisseur={ultra thick},Alpha=20,Beta=30]
- \draw[very thick,CouleurVertForet,<->,>=latex] ($(A)!0.5!(D)$)--($(B)!0.5!(D)$) ;
- \end{tikzpicture}
-\end{center}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
- \begin{tikzpicture}[line join=bevel]
- \TetraedreTikz[Aff,Largeur=7,Profondeur=3,Hauteur=5,Epaisseur={ultra thick},Alpha=20,Beta=30]
- \draw[very thick,CouleurVertForet,<->,>=latex] ($(A)!0.5!(D)$)--($(B)!0.5!(D)$) ;
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Cercle trigo}\label{cercletrigo}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est d'obtenir une commande pour tracer (en \TikZ) un cercle trigonométrique, avec personnalisation des affichages.
-
-\smallskip
-
-Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur définir et créer son environnement \TikZ, et d'insérer la commande \ctex{CercleTrigo} pour afficher le cercle.
-\end{tipblock}
-
-\begin{PresCodePL}{tikz lower}
-%code tikz
-\CercleTrigo
-\end{PresCodePL}
-
-\subsection{Commandes}
-
-\begin{PresCodeTexPL}{listing only}
-...
-\begin{tikzpicture}[options tikz]
- ...
- \CercleTrigo[clés]
- ...
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Plusieurs \Cle{Clés} sont disponibles pour cette commande :
-
-\begin{itemize}
- \item la clé \Cle{Rayon} qui définit le rayon du cercle ;\hfill{}défaut \Cle{3}
- \item la clé \Cle{Epaisseur} qui donne l'épaisseur des traits de base ;\hfill{}défaut \Cle{thick}
- \item la clé \Cle{Marge} qui est l'\textit{écartement} de axes ;\hfill{}défaut \Cle{0.25}
- \item la clé \Cle{TailleValeurs} qui est la taille des valeurs remarquables ;\hfill{}défaut \Cle{scriptsize}
- \item la clé \Cle{TailleAngles} qui est la taille des angles ;\hfill{}défaut \Cle{footnotesize}
- \item la clé \Cle{CouleurFond} qui correspond à la couleur de fond des labels ;\hfill{}défaut \Cle{white}
- \item la clé \Cle{Decal} qui correspond au décalage des labels par rapport au cercle ;\hfill{}défaut \Cle{10pt}
- \item un booléen \Cle{MoinsPi} qui bascule les angles \og -pipi \fg{} à \og zerodeuxpi \fg{} ;\hfill{}défaut \Cle{true}
- \item un booléen \Cle{AffAngles} qui permet d'afficher les angles ;\hfill{}défaut \Cle{true}
- \item un booléen \Cle{AffTraits} qui permet d'afficher les \textit{traits de construction} ;\hfill{}défaut \Cle{true}
- \item un booléen \Cle{AffValeurs} qui permet d'afficher les valeurs remarquables.\hfill{}défaut \Cle{true}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\pagebreak
-
-\begin{PresCodeTexPL}{listing only}
-\begin{center}
- \begin{tikzpicture}[line join=bevel]
- \CercleTrigo[Rayon=2.5,AffValeurs=false,Decal=8pt]
- \end{tikzpicture}
- ~~~~
- \begin{tikzpicture}[line join=bevel]
- \CercleTrigo[Rayon=2.5,AffAngles=false]
- \end{tikzpicture}
- ~~~~
- \begin{tikzpicture}[line join=bevel]
- \CercleTrigo[Rayon=2.5,MoinsPi=false,CouleurFond=orange!15]
- \end{tikzpicture}
-\end{center}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
- \begin{tikzpicture}[line join=bevel]
- \CercleTrigo[Rayon=2.5,AffValeurs=false,Decal=8pt]
- \end{tikzpicture}
- ~~~~
- \begin{tikzpicture}[line join=bevel]
- \CercleTrigo[Rayon=2.5,AffAngles=false]
- \end{tikzpicture}
- ~~~~
- \begin{tikzpicture}[line join=bevel]
- \CercleTrigo[Rayon=2.5,MoinsPi=false,CouleurFond=orange!15,TailleValeurs=\tiny]
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\subsection{Équations trigos}
-
-\begin{noteblock}
-En plus des \Cle{Clés} précédentes, il existe un complément pour \textit{visualiser} des solutions d'équations simples du type $\cos(x)=\ldots$ ou $\sin(x)=\ldots$.
-\end{noteblock}
-
-\begin{cautionblock}
-Les \Cle{Clés} pour cette possibilité sont :
-
-\begin{itemize}
- \item un booléen \Cle{Equationcos} pour \textit{activer} \og $\cos=$ \fg; \hfill{}défaut \Cle{false}
- \item un booléen \Cle{Equationsin} pour \textit{activer} \og $\sin=$ \fg;\hfill{}défaut \Cle{false}
- \item la clé \Cle{sin} qui est la valeur de l'angle (en degrés) du sin ;\hfill{}défaut \Cle{30}
- \item la clé \Cle{cos} qui est la valeur de l'angle (en degrés) cos ;\hfill{}défaut \Cle{45}
- \item \cmaj{2.6.2} un booléen \Cle{AffTraitsEq} qui permet d'afficher les \textit{traits de construction secondaires} pour les équations ;
-
- \hfill{}défaut \Cle{true}
- \item la clé \Cle{CouleurSol} qui est la couleur des \textit{solutions}.\hfill{}défaut \Cle{blue}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{center}
- \begin{tikzpicture}
- \CercleTrigo[%
- AffAngles=false,AffValeurs=false,Rayon=2,Equationsin,sin=-30, CouleurSol=red]
- \end{tikzpicture}
- \begin{tikzpicture}
- \CercleTrigo[%
- AffAngles=false,AffValeurs=false,AffTraits=false,Rayon=2,Equationcos,cos=135, CouleurSol=orange]
- \end{tikzpicture}
- \begin{tikzpicture}
- \CercleTrigo[%
- AffAngles=false,AffValeurs=false,AffTraits=false,AffTraitsEq=false,Rayon=2, Equationcos,cos=126,CouleurSol=violet]
- \end{tikzpicture}
- \begin{tikzpicture}
- \CercleTrigo[%
- AffTraits=false,AffAngles=false,Rayon=2.5,Equationcos,cos=60,CouleurSol=purple, TailleValeurs=\tiny]
- \end{tikzpicture}
-\end{center}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
- \begin{tikzpicture}
- \CercleTrigo[%
- AffAngles=false,AffValeurs=false,AffTraits=false,Rayon=2,Equationsin,sin=-30,CouleurSol=red]
- \end{tikzpicture}
- ~~~~
- \begin{tikzpicture}
- \CercleTrigo[%
- AffAngles=false,AffValeurs=false,AffTraits=false,Rayon=2,Equationcos,cos=135,CouleurSol=orange]
- \end{tikzpicture}
- ~~~~
- \begin{tikzpicture}
- \CercleTrigo[%
- AffAngles=false,AffValeurs=false,AffTraits=false,AffTraitsEq=false,Rayon=2, Equationcos,cos=126,CouleurSol=violet]
- \end{tikzpicture}
-
- \medskip
-
- \begin{tikzpicture}
- \CercleTrigo[%
- AffTraits=false,AffAngles=false,Rayon=2.5,Equationcos,cos=60,CouleurSol=purple,TailleValeurs=\tiny]
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-%\newpage
-%
-%\section{Style \og main levée \fg{} en \TikZ}\label{mainlevee}
-%
-%\subsection{Idée}
-%
-%\begin{tipblock}
-%L'idée est de \textit{proposer} un style \textit{tout prêt} pour simuler un tracé, en \TikZ, à \og main levée \fg.
-%
-%Il s'agit d'un style \textit{basique} utilisant la librairie \ctex{decorations} avec \textsf{random steps}.
-%\end{tipblock}
-%
-%\begin{PresCodeTexPL}{listing only}
-%\tikzset{%
-% mainlevee/.style args={#1et#2}{decorate,decoration={random steps, segment length=#1,amplitude=#2}},
-% mainlevee/.default={5mm et 0.6pt}
-%}
-%\end{PresCodeTexPL}
-%
-%\subsection{Utilisation basique}
-%
-%\begin{noteblock}
-%Il s'agit ni plus ni moins d'un style \TikZ{} à intégrer dans les tracés et constructions \TikZ !
-%\end{noteblock}
-%
-%\begin{cautionblock}
-%Concernant le style en lui-même, deux paramètres peuvent être précisés via \Cle{mainlevee=\#1 et \#2} :
-%
-%\begin{itemize}
-% \item \Cle{\#1} correspond à l'option \textsf{segment length} (longueur des segments \textit{types}) ;\hfill{}défaut \Cle{5mm}
-% \item \Cle{\#2} correspond à l'option \textsf{amplitude} (amplitude maximale de la \textit{déformation}).\hfill{}défaut \Cle{0.6pt}
-%\end{itemize}
-%
-%Les valeurs \Cle{mainlevee=5mm et 0.6pt} donnent des résultats -- à mon sens -- satisfaisants, mais l'utilisateur pourra modifier à loisir ces paramètres !
-%\end{cautionblock}
-%
-%\begin{PresCodeTexPL}{listing only}
-%%la grille a été rajoutée pour la sortie
-%\begin{tikzpicture}
-% \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
-%\end{tikzpicture}
-%
-%\begin{tikzpicture}
-% \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
-%\end{tikzpicture}
-%
-%\begin{tikzpicture}
-% \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
-%\end{tikzpicture}
-%\end{PresCodeTexPL}
-%
-%\begin{PresCodeSortiePL}{text only}
-%\hfill~\begin{tikzpicture}
-% \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4);
-% \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
-%\end{tikzpicture}
-%\hspace{1cm}
-%\begin{tikzpicture}
-% \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4);
-% \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
-%\end{tikzpicture}
-%\hspace{1cm}
-%\begin{tikzpicture}
-% \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4);
-% \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ;
-%\end{tikzpicture}
-%\hfill~
-%\end{PresCodeSortiePL}
+\input{ProfLycee-doc-outilsgeom.tex}
\pagebreak
@@ -4338,497 +427,7 @@ Les \Cle{Clés} pour cette possibilité sont :
\newpage
-\part{Outils pour la géométrie analytique}
-
-\section{Conseils d'utilisation}
-
-\begin{warningblock}
-\cmaj{2.6.5} Il est conseillé d'utiliser \hologo{LuaLaTeX} pour les commandes (vectorielles) de géométrie analytique, même s'il est toutefois possible d'utiliser \hologo{pdfLaTeX}.
-
-\smallskip
-
-Il est possible que les simplifications demandées (coefficients entiers, ou premiers entre eux) ne donnent pas entière satisfaction, donc prudence sur l'utilisation de celles-ci (ce sont des tests et retours de \textit{bugs} qui montreront les limites des commandes).
-\end{warningblock}
-
-\section{Affichage de coordonnées}\label{affcoord}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.6.4} L'idée est de proposer des commandes pour simplifier la saisie de coordonnées de vecteurs ou de points (plan ou espace), en saisissant les coordonnées \textit{en ligne}.
-
-\smallskip
-
-À noter que les calculs et résultats sont traités par la commande de \textit{conversion de fraction} de \ctex{ProfLycee}.
-\end{tipblock}
-
-\begin{warningblock}
-Logiquement les commandes (à insérer dans un environnement mathématique) doivent donner des résultats satisfaisants pour tout ce qui est \textit{rationnel}, mais cela ne sera pas pertinent dans le cas de coordonnées irrationnelles\ldots
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-%Affichage des coordonnées d'un point (2 ou 3 coordonnées)
-\AffPoint[options de formatage](liste des coordonnées)
-
-%Affichage des coordonnées d'un vecteur (2 ou 3 coordonnées)
-\AffVecteur[options de formatage]<options nicematrix>(liste des coordonnées)
-\end{PresCodeTexPL}
-
-\begin{warningblock}
-Dans cette partie liée à la géométrie analytique, j'ai choisi de saisir les arguments (coordonnées) via les délimiteurs \ctex{(...)} :
-
-\begin{itemize}
- \item avec le séparateur \ctex{,} pour les points ;
- \item avec le séparateur \ctex{;}.
-\end{itemize}
-
-De ce fait, le code \textit{sait} s'il est face à un point ou à un vecteur, et adapte sa méthode de calcul en conséquence !
-\end{warningblock}
-
-\subsection{Options et arguments}
-
-\begin{cautionblock}
-Concernant les arguments des commandes :
-
-\begin{itemize}
- \item le premier argument, optionnel et entre \ctex{[...]} permet de spécifier la ou les caractéristiques de formatage des coordonnées, de manière globale ou individuelle, et de manière cohérente avec les options disponibles pour la commande de \textit{conversion en fraction} de \ctex{ProfLycee} :
- \begin{itemize}
- \item \Cle{d} : pour un formatage en \ctex{dfrac} si nécessaire ;
- \item \Cle{t} : pour un formatage en \ctex{tfrac} si nécessaire ;
- \item \Cle{n} : pour un formatage en \ctex{nicefrac} si nécessaire ;
- \item \Cle{dec} : pour la forme décimale (brute) ;
- \item \Cle{dec=k} : pour la forme décimale à $10^{-k}$.
- \end{itemize}
- Il est possible de spécifier des formatages différents en utilisant une \textit{liste} sous la forme :
- \begin{itemize}
- \item \Cle{f1,f2} ou \Cle{f1,f2,f3} pour les points ;
- \item \Cle{f1;f2} ou \Cle{f1;f2;f3} ;
- \end{itemize}
- \item l'argument \textit{optionnel} et entre \ctex{<...>} (uniquement pour les vecteurs !) permet de spécifier des options de type \textit{nicematrix} ;
- \item l'argument obligatoire, et entre \ctex{\{...\}} est quant à lui la liste des coordonnées, en ligne et au format \textit{naturel xint}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{noteblock}
-Il est donc possible de mettre des \textit{calculs} dans l'argument des coordonnées.
-
-Il suffit \textit{juste} d'utiliser une syntaxe compréhensible par les commandes du package \ctex{xint}.
-\end{noteblock}
-
-\begin{PresCodePL}{}
-%Point, avec affichage classique en dfrac
-$\AffPoint(1,2/3)$ \\
-%Point, avec affichage en décimal + dfrac + dfrac
-$\AffPoint[dec,d,d](-0.5,1,2/3)$ \\
-%Vecteurs, avec affichages classiques
-$\AffVecteur(1;2)$ et $\AffVecteur(1;2;3)$ \\
-%Vecteurs, avec option nicematrix et affichage en décimal + tfrac
-$\AffVecteur[dec;t]<cell-space-limits=2pt>(0.5;2/3)$ \\
-%Vecteurs, avec option nicematrix et affichage en décimal
-$\AffVecteur[dec]<cell-space-limits=2pt>(0.5;0.6;0.75)$ \\
-%Vecteurs, avec cacluls et affichage classique
-$\AffVecteur((2-(-3));(5-6);(1-1))$
-\end{PresCodePL}
-
-\newpage
-
-\section{Équation cartésienne d'un plan de l'espace}\label{eqcartplan}
-
-\subsection{Idée et commande}
-
-\begin{tipblock}
-\cmaj{2.6.4} L'idée est de proposer une commande pour déterminer une équation cartésienne d'un plan dans l'un des cas suivants :
-
-\begin{itemize}
- \item en donnant un vecteur normal et un point ;
- \item en donnant deux vecteurs directeurs et un point ;
- \item en donnant trois points.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%Avec un vecteur normal et un point
-\TrouveEqCartPlan[clés](vecteur normal)(point)
-%Avec deux vecteurs directeurs et un point
-\TrouveEqCartPlan[clés](vecteur dir1)(vecteur dir2)(point)
-%Avec trois points
-\TrouveEqCartPlan[clés](point1)(point2)(point3)
-\end{PresCodeTexPL}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Concernant les arguments des commandes :
-
-\begin{itemize}
- \item le premier argument, optionnel et entre \ctex{[...]} contient les clés :
- \begin{itemize}
- \item \Cle{OptionCoeffs} pour spécifier un formatage \textit{global} des coefficients ; \hfill{}défaut : \Cle{d}
- \item \Cle{SimplifCoeffs} pour forcer des coefficients simples (entiers et premiers entre eux) ;
-
- \hfill{}défaut : \Cle{false}
- \item \Cle{Facteur} pour spécifier un facteur personnalisé aux simplifications. \hfill{}défaut : \Cle{1}
- \end{itemize}
- \item les arguments suivants, entre \ctex{(...)} correspondent aux données utilisées (entre 2 et 3).
-\end{itemize}
-
-À noter que les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur.
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-Une équation cartésienne du plan $\mathcal{P}$ de vecteur normal $\vec{n} \AffVecteur(1;2;3)$ et passant par le point A de coordonnées $\AffPoint(4,5,6)$ est $\mathcal{P}$ : $\TrouveEqCartPlan(1;2;3)(4,5,6)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une équation cartésienne du plan $\mathcal{P}$ de vecteur normal $\vec{n} \AffVecteur[n](1/2;2/3;3/5)$ et passant par le point A de coordonnées $\AffPoint(4,5,6)$ est $\mathcal{P}$ : $\TrouveEqCartPlan(1/2;2/3;3/5)(4,5,6) \Leftrightarrow \TrouveEqCartPlan[SimplifCoeffs](1/2;2/3;3/5)(4,5,6)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une équation cartésienne du plan $\mathcal{P}$ de vecteur normal $\vec{n} \AffVecteur[n](1;2/3;0)$ et passant par le point A de coordonnées $\AffPoint[dec,dec,d](0.75,0.56,1/3)$ est $\mathcal{P}$ : $\TrouveEqCartPlan(1;2/3;0)(0.75,0.56,1/3) \Leftrightarrow \TrouveEqCartPlan[SimplifCoeffs](1;2/3;0)(0.75,0.56,1/3)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une équation cartésienne du plan $\mathcal{P}_3$ passant par les points $A\AffPoint(2,0,1)$, $B\AffPoint(3,1,1)$ et $C\AffPoint(1,-2,0)$ est
-\[ \mathcal{P}_3 \text{ : } \TrouveEqCartPlan(2,0,1)(3,1,1)(1,-2,0)\]
-\end{PresCodePL}
-
-
-
-\begin{PresCodePL}{}
-Une équation cartésienne du plan $\mathcal{R}$ passant par le points $A\AffPoint(0,0,1)$, $B\AffPoint(4,2,3)$ et $C\AffPoint(-3,1,1)$ est
-\[ \mathcal{R} \text{ : } \TrouveEqCartPlan[SimplifCoeffs](0,0,1)(4,2,3)(-3,1,1)\]
-\[ \mathcal{R} \text{ : } \TrouveEqCartPlan[SimplifCoeffs,Facteur=-1](0,0,1)(4,2,3)(-3,1,1)\]
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une équation cartésienne du plan $\mathcal{P}_0$ dirigé par les vecteurs $\AffVecteur(9;7;-8)$ et $\AffVecteur(-2;2;-1)$ et passant par le point $A\AffPoint(5,1,-1)$ est :
-\[ \mathcal{P}_0 \text{ : } \TrouveEqCartPlan[SimplifCoeffs](9;7;-8)(-2;2;-1)(5,1,-1)\]
-\end{PresCodePL}
-
-\newpage
-
-\section{Équation paramétrique d'une droite de l'espace}\label{eqparamdroite}
-
-\subsection{Idée et commande}
-
-\begin{tipblock}
-\cmaj{2.6.4} L'idée est de proposer une commande pour déterminer un système d'équations paramétriques d'une droite de l'espace dans l'un des cas suivants :
-
-\begin{itemize}
- \item en donnant un vecteur directeur et un point ;
- \item en donnant deux points.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%Avec un vecteur directeur et un point
-\TrouveEqParamDroite[clés](vecteur directeur)(point)
-%Avec deux points
-\TrouveEqParamDroite[clés](point1)(point2)
-\end{PresCodeTexPL}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Concernant les arguments des commandes :
-
-\begin{itemize}
- \item le premier argument, optionnel et entre \ctex{[...]} contient les clés :
- \begin{itemize}
- \item \Cle{OptionCoeffs} pour spécifier un formatage \textit{global} des coefficients ; \hfill{}défaut : \Cle{d}
- \item \Cle{Reel} pour coder le paramètre réel ; \hfill{}défaut : \Cle{k}
- \item le booléen \Cle{Oppose} pour utiliser plutôt l'opposé du vecteur directeur ; \hfill{}défaut : \Cle{false}
- \item le booléen \Cle{Rgras} pour utiliser le symbole \textbf{R} ou lieu de $\mathbb{R}$ (si \ctex{amsfonts} est chargé !).
-
- \hfill{}défaut : \Cle{false}
- \end{itemize}
- \item les arguments suivants, entre \ctex{(...)} correspondent aux données utilisées.
-\end{itemize}
-
-À noter que les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur.
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-Une équation paramétrique de la droite $(d)$ dirigée par le vecteur $\vec{u}\AffVecteur(2;5;-4)$ et passant par $A\AffPoint(-1,-1,-1)$ est
-\[ \TrouveEqParamDroite(2;5;-4)(-1,-1,-1) \]
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une équation paramétrique de la droite $(d)$ passant par $\AffPoint(2,5,-4)$ et $\AffPoint(-1,-1,-1)$ est
-\[ \TrouveEqParamDroite[Oppose](2,5,-4)(-1,-1,-1) \text{ ou } \TrouveEqParamDroite(2,5,-4)(-1,-1,-1) \]
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une équation paramétrique de la droite $(d)$ dirigée par le vecteur $\vec{u}\AffVecteur(0;-1;3)$ et passant par $O\AffPoint(0,0,0)$ est
-\[ \TrouveEqParamDroite(0;-1;3)(0,0,0) \]
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une équation paramétrique de la droite $(d)$ dirigée par le vecteur $\vec{u}\AffVecteur(-1;2;3)$ et passant par $A\AffPoint(2,0,-3)$ est
-\[ \TrouveEqParamDroite[Reel=\ell,Rgras](-1;2;3)(2,0,-3) \]
-\end{PresCodePL}
-
-\newpage
-
-\section{Équation cartésienne d'une droite du plan}\label{eqcartdroite}
-
-\subsection{Idée et commande}
-
-\begin{tipblock}
-\cmaj{2.6.4} L'idée est de proposer une commande pour déterminer une équation cartésienne d'une droite du plan dans l'un des cas suivants :
-
-\begin{itemize}
- \item en donnant un vecteur directeur et un point ;
- \item en donnant un vecteur normal et un point ;
- \item en donnant deux points.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%Avec un vecteur normal (choix par défaut) et un point
-\TrouveEqCartDroite[clés](vecteur normal)(point)
-%Avec un vecteur directeur et un point
-\TrouveEqCartDroite[clés,VectDirecteur](vecteur directeur)(point1)
-%Avec deux points
-\TrouveEqCartDroite[clés](point1)(point2)
-\end{PresCodeTexPL}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Concernant les arguments des commandes :
-
-\begin{itemize}
- \item le premier argument, optionnel et entre \ctex{[...]} contient les clés :
- \begin{itemize}
- \item \Cle{OptionCoeffs} pour spécifier un formatage \textit{global} des coefficients ; \hfill{}défaut : \Cle{d}
- \item le booléen \Cle{SimplifCoeffs} pour forcer des coeffs simples (entiers et premiers entre eux) ;
-
- \hfill{}défaut : \Cle{false}
- \item \Cle{Facteur} pour spécifier un facteur personnalisé aux simplifications ; \hfill{}défaut : \Cle{1}
- \item le booléen \Cle{VectDirecteur} pour pour préciser que le vecteur utilisé est directeur.\hfill{}défaut : \Cle{false}
- \end{itemize}
- \item les arguments suivants, entre \ctex{(...)} correspondent aux données utilisées.
-\end{itemize}
-
-À noter que les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur.
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-Une équation cartésienne de la droite $\mathcal{D}$ de vecteur normal $\vec{n} \AffVecteur(1;2)$ et passant par le point A de coordonnées $\AffPoint(4,5)$ est $\mathcal{D}$ : $\TrouveEqCartDroite[VectNormal](1;2)(4,5)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une équation cartésienne de la droite $\mathcal{D}$ de vecteur directeur $\vec{u} \AffVecteur[n](1/2;2/3)$ et passant par le point A de coordonnées $\AffPoint(5,6)$ est $\mathcal{D}$ : $\TrouveEqCartDroite[VectDirecteur](1/2;2/3)(5,6) \Leftrightarrow \TrouveEqCartDroite[SimplifCoeffs,VectDirecteur](1/2;2/3)(5,6) \Leftrightarrow \TrouveEqCartDroite[SimplifCoeffs,VectDirecteur,Facteur=-1](1/2;2/3)(5,6)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une équation cartésienne de la droite $\mathcal{D}$ passant par les points $\AffPoint(2,4)$ et $\AffPoint(-4,2)$ est \[\mathcal{D} \text{ : } \TrouveEqCartDroite(2,4)(-4,2) \Leftrightarrow \TrouveEqCartDroite[SimplifCoeffs](2,4)(-4,2)\]
-\end{PresCodePL}
-
-\newpage
-
-\section{Norme d'un vecteur, distance entre deux points}\label{normevect}
-
-\subsection{Idée et commande}
-
-\begin{tipblock}
-\cmaj{2.6.5} L'idée est de proposer une commande pour déterminer la distance entre deux points, ou la norme d'un vecteur :
-
-\begin{itemize}
- \item en donnant le vecteur ;
- \item en donnant deux points.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%Avec le vecteur
-\TrouveNorme(vecteur)
-%Avec deux points
-\TrouveNorme(point 1)(point 2)
-\end{PresCodeTexPL}
-
-\begin{noteblock}
-Le résultat étant souvent écrit à l'aide d'une racine carrée, le code se charge de simplifier le résultat sous la forme $\frac{a\sqrt{n}}{b}$.
-
-Dans le cas où les coordonnées ne seraient pas rationnelles, le résultat risque de ne pas être conforme à celui attendu.
-\end{noteblock}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Concernant les arguments de cette commande :
-
-\begin{itemize}
- \item les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur pour les arguments 1 et 2.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-La distance $AB$ avec $A\AffPoint(-5,2)$ et $B\AffPoint(4,-3)$ vaut
-$d =\displaystyle\TrouveNorme(-5,2)(4,-3)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-La distance $AB$ avec $A\AffPoint(2,1,2)$ et $B\AffPoint(-4,1,1)$ vaut
-$d =\displaystyle\TrouveNorme(2,1,2)(-4,1,1)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-La norme de $\AffVecteur(2;4)$ vaut
-$d =\displaystyle\TrouveNorme(2;4)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-La norme de $\AffVecteur[d;d;n](2;4;0.5)$ vaut
-$d =\displaystyle\TrouveNorme(2;4;0.5)$
-\end{PresCodePL}
-
-\newpage
-
-\section{Distance d'un point à un plan}\label{distptplan}
-
-\subsection{Idée et commande}
-
-\begin{tipblock}
-\cmaj{2.6.4} L'idée est de proposer une commande pour déterminer la distance d'un point à un plan :
-
-\begin{itemize}
- \item en donnant le point puis le plan défini par vecteur normal \&{} point ;
- \item en donnant le point puis le plan défini par une équation cartésienne.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%Avec le point et le plan via vect normal + point
-\TrouveDistancePtPlan(point)(vec normal du plan)(point du plan)
-%Avec le point et le plan via vect normal + point
-\TrouveDistancePtPlan(point)(équation cartésienne)
-\end{PresCodeTexPL}
-
-\begin{noteblock}
-Le résultat étant souvent écrit à l'aide d'une racine carrée, le code se charge de simplifier le résultat sous la forme $\frac{a\sqrt{n}}{b}$.
-
-Dans le cas où les coordonnées ne seraient pas rationnelles, le résultat risque de ne pas être conforme à celui attendu.
-\end{noteblock}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Concernant les arguments de cette commande :
-
-\begin{itemize}
- \item si on travaille avec une équation cartésienne, elle est à donner sous la forme \ctex{ax+by+cz=0} ou \ctex{ax+by+cz}
- \item les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur pour les arguments 1 et 3.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-La distance entre le point $\AffPoint(1,2,3)$ et le plan de vecteur normal $\AffVecteur(-1;-2;3)$ et passant par $\AffPoint(5,0,2)$ vaut
-\[ d = \displaystyle\TrouveDistancePtPlan(1,2,3)(-1;-2;3)(5,0,2) \]
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-La distance entre le point $\AffPoint(1,2,3)$ et le plan d'équation $x+2y+2z-7=0$ vaut
-\[ d = \displaystyle\TrouveDistancePtPlan(1,2,3)(x+2y-2z+7) \]
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-La distance entre le point $\AffPoint(-7,0,4)$ et le plan d'équation $0,5x+2y-z-1=0$ vaut
-\[ d = \displaystyle\TrouveDistancePtPlan(-7,0,4)(0.5x+2y-z-1=0) \]
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-La distance entre le point $H\AffPoint(0,4,8)$ et le plan d'équation $-x+y+z-4=0$ vaut
-\[ d = \displaystyle\TrouveDistancePtPlan(0,4,8)(-x+y+z-4=0) \]
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-La distance entre le point $H\AffPoint(0,0,5)$ et le plan d'équation $z-1=0$ vaut
-\[ d = \displaystyle\TrouveDistancePtPlan(0,0,5)(z-1=0) \]
-\end{PresCodePL}
-
-\newpage
-
-\section{Équation réduite d'une droite du plan}\label{eqreduite}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.6.3} L'idée est de proposer une commande pour déterminer l'équation réduite d'une droite passant par deux points :
-\begin{itemize}
- \item en traitant les cas particuliers \textit{horizontale}, \textit{verticale} ;
- \item en affichant une méthode de résolution ;
- \item en travaillant sous forme exacte fractionnaire (les racines carrées ou autres ne seront pas gérés).
-\end{itemize}
-
-À noter que les calculs et résultats sont traités par la commande de \textit{conversion de fraction} de \ctex{ProfLycee}.
-\end{tipblock}
-
-\begin{warningblock}
-La commande se charge de formater (normalement !) correctement les différentes étapes de calculs (il se peut quand même que cela puisse ne pas donner le résultat réellement escompté\ldots) :
-
-\begin{itemize}
- \item en travaillant en fraction ;
- \item en mettant les parenthèses nécessaires devant les éventuels nombres négatifs ;
- \item en traitant les cas particuliers $m=\pm1$ et $b=0$.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-\EquationReduite[option]{A/xa/ya,B/xb/yb}
-\end{PresCodeTexPL}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Concernant le fonctionnement de la commande :
-
-\begin{itemize}
- \item le premier argument, optionnel et entre \ctex{[...]} et valant \Cle{[d]} par défaut, permet de formater les fractions éventuelles en mode \ctex{\textbackslash displaystyle} ;
- \item le second argument, obligatoire et entre \ctex{\{...\}}, permet de donner les coordonnées des points concernés.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-\EquationReduite{C/2/0,D/-2/-8}
-\end{PresCodePL}
-
-\subsection{Exemples}
-
-\begin{PresCodePL}{}
-\EquationReduite{I/-4/5,J/-4/12}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{U/-4/5,V/-4/5}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{L/10/7,M/-2/7}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{L/{1/3}/2.5,M/{-5/7}/{3/5}}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{P/4/-4,Q/-2/2}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{G/-4/5,H/10/4}
-\end{PresCodePL}
+\input{ProfLycee-doc-outilsgeomanalyt.tex}
\newpage
@@ -4842,1138 +441,7 @@ Concernant le fonctionnement de la commande :
\newpage
-\part{Outils pour les statistiques}
-
-\section{Paramètres d'une régression linéaire par la méthode des moindres carrés}\label{reglin}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est d'utiliser une commande qui va permettre de calculer les paramètres principaux d'un régression linéaire par la méthode des moindres carrés.
-
-Le package \ctex{pgfpots} permet de le faire nativement, mais le moteur de calculs de \textsf{pgf} peut poser souci avec de grandes valeurs, donc ici cela passe par \ctex{xfp} qui permet de \textit{gagner} en précision !
-
-\smallskip
-
-L'idée est que cette macro calcule et stocke les paramètres dans des variables (le nom peut être personnalisé !) pour exploitation ultérieure :
-
-\begin{itemize}
- \item en calculs \textit{purs} ;
- \item dans un environnement \TikZ{} via \textsf{pgfplots} ou bien en \textit{natif} ;
- \item dans un environnement \PSTricks{} ;
- \item dans un environnement \hologo{METAPOST} (à vérifier quand même) ;
- \item \ldots
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-...
-\CalculsRegLin[clés]{listeX}{listeY} %listes avec éléments séparés par des ,
-...
-\end{PresCodeTexPL}
-
-\begin{noteblock}
-La commande \ctex{CalculsRegLin} va définir également des \textsf{macros} pour chaque coefficient, qui de ce fait seront réutilisables après !
-\end{noteblock}
-
-\subsection{Commandes}
-
-\begin{cautionblock}
-Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour \textit{renommer} les paramètres :
-
-\begin{itemize}
- \item la clé \Cle{NomCoeffa} qui permet de définir la variable qui contiendra $a$ ;\hfill{}défaut \Cle{COEFFa}
- \item la clé \Cle{NomCoeffb} qui permet de définir la variable qui contiendra $b$ ;\hfill{}défaut \Cle{COEFFb}
- \item la clé \Cle{NomCoeffr} qui permet de définir la variable qui contiendra $r$ ;\hfill{}défaut \Cle{COEFFr}
- \item la clé \Cle{NomCoeffrd} qui permet de définir la variable qui contiendra $r^2$ ;\hfill{}défaut \Cle{COEFFrd}
- \item la clé \Cle{NomXmin} qui permet de définir la variable qui contiendra $x_{\text{min}}$ ;\hfill{}défaut \Cle{LXmin}
- \item la clé \Cle{NomXmax} qui permet de définir la variable qui contiendra $x_{\text{max}}$.\hfill{}défaut \Cle{LXmax}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%les espaces verticaux n'ont pas été écrits ici
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%vérif des calculs (noms non modifiables...)
-Liste des X := \showitems\LX.
-Liste des Y := \showitems\LY.
-Somme des X := \LXSomme{} et somme des Y := \LYSomme.
-Moyenne des X := \LXmoy{} et moyenne des Y := \LYmoy.
-Variance des X := \LXvar{} et variance des Y := \LYvar{}
-Covariance des X/Y := \LXYvar.
-%les coefficients, avec des noms modifiables !
-Min des X := \LXmin{} et Max des X := \LXmax.
-Coefficient $a=\COEFFa$.
-Coefficient $b=\COEFFb$.
-Coefficient $r=\COEFFr$.
-Coefficient $r^2=\COEFFrd$.
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-
-Liste des X := \showitems\LX.
-
-\smallskip
-
-Liste des Y := \showitems\LY.
-
-\smallskip
-
-Somme des X := \LXSomme{} et somme des Y := \LYSomme.
-
-\smallskip
-
-Moyenne des X := \LXmoy{} et moyenne des Y := \LYmoy.
-
-\smallskip
-
-Variance des X := \LXvar{} et variance des Y := \LYvar{}
-
-\smallskip
-
-Covariance des X/Y := \LXYvar.
-
-\smallskip
-
-Min des X := \LXmin{} et Max des X := \LXmax.
-
-\smallskip
-
-Coefficient $a=\COEFFa$.\tabto{0.5\textwidth}Coefficient $b=\COEFFb$.
-
-%\smallskip
-%
-%Coefficient $b=\COEFFb$.
-
-\smallskip
-
-Coefficient $r=\COEFFr$.\tabto{0.5\textwidth}Coefficient $r^2=\COEFFrd$.
-
-%\smallskip
-%
-%Coefficient $r^2=\COEFFrd$.
-\end{PresCodeSortiePL}
-
-\begin{noteblock}
-\hfill~\includegraphics[height=3cm]{./graphics/pl-doc-stats_a}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_b}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_c}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_c2}\hfill~
-\end{noteblock}
-
-\begin{noteblock}
-Les \textsf{macros} qui contiennent les paramètres de la régression sont donc réutilisables, en tant que nombres réels, donc exploitables par \ctex{siunitx} et \ctex{xfp} pour affichage \textit{fin} ! Ci-dessous un exemple permettant de visualiser tout cela.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%les espaces verticaux n'ont pas été écrits ici
-\def\LstX{0,1,3,4,5,6}
-\def\LstY{-35,-37.4,-37.7,-39.9,-39,-39.6}
-%on lance les calculs et on change le nom des "macros-résultats"
-\CalculsRegLin[NomCoeffa=TESTa,NomCoeffb=TESTb,NomCoeffr=TESTr,NomCoeffrd=TESTrd,%
- NomXmin=TESTmin,NomXmax=TESTmax]{\LstX}{\LstY}
-%commandes complémentaires
-\DeclareDocumentCommand\arrond{ s O{3} m }{% * signe / précision / nb
- \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{round(#3,#2)}}} {\num{\fpeval{round(#3,#2)}}}
-}
-%paramètres
-Les valeurs extr. de X sont \TESTmin{} et \TESTmax. Une éq. est $y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$.
-Le coeff. de corrélation est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\arrond[4]{\TESTrd}$.
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\LstX{0,1,3,4,5,6}\def\LstY{-35,-37.4,-37.7,-39.9,-39,-39.6}
-\CalculsRegLin[NomCoeffa=TESTa,NomCoeffb=TESTb,NomCoeffr=TESTr,NomCoeffrd=TESTrd,NomXmin=TESTmin,NomXmax=TESTmax]{\LstX}{\LstY}
-\DeclareDocumentCommand\arrond{ s O{3} m }{
- \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{ceil(#3,#2)}}}
- {\num{\fpeval{round(#3,#2)}}}
-}
-
-Les valeurs extrêmes de $x$ sont \TESTmin{} et \TESTmax. Une équation de la droite de régression de $y$ en $x$ est
-
-\hfill$y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$.\hfill~
-
-\smallskip
-
-Le coefficient de corrélation linéaire est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\arrond[4]{\TESTrd}$.
-\end{PresCodeSortiePL}
-
-\begin{noteblock}
-\hfill~\includegraphics[height=3cm]{./graphics/pl-doc-stats_d}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_e}\hfill~
-\end{noteblock}
-
-\subsection{Intégration dans un environnement \TikZ}
-
-\begin{noteblock}
-La commande étant \og autonome \fg{}, elle va pouvoir être intégrée dans des environnements graphiques pour permettre un tracé \textit{facile} de la droite de régression.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}
- \begin{axis}[options des axes, non présentées ici...]
- \addplot[teal, only marks] table{
- X Y
- 1994 1718 1995 1710 1996 1708 1997 1700 1998 1698 1999 1697 2000 1691 2001 1688
- 2002 1683 2004 1679 2005 1671 2006 1670 2007 1663 2008 1661 2009 1656 2010 1649
- };
- \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010}
- \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649}
- \CalculsRegLin{\LLX}{\LLY}
- \addplot [thick,orange,domain=\LXmin:\LXmax,samples=2]{\COEFFa*x+\COEFFb};
- \addlegendentry{$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$};
- \addlegendentry{$R^2=\fpeval{round(\COEFFrd,5)}$};
- \end{axis}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{tikzpicture}
- \begin{axis}[
- /pgf/number format/.cd,
- use comma,
- xmin = 1992, xmax = 2012,
- ymin = 1640, ymax = 1730,
- width = 0.7\textwidth,
- height = 0.35\textwidth,
- xtick distance = 2,
- ytick distance = 10,
- grid = both,
- minor tick num = 1,
- major grid style = {lightgray},
- minor grid style = {lightgray!25},
- xlabel = {\small Année ($x$)},
- ylabel = {\small Altitude du glacier (en m) ($y$)},
- x tick label style={/pgf/number format/.cd, set thousands separator={}},
- y tick label style={/pgf/number format/.cd, set thousands separator={}},
- legend cell align = {left},
- legend pos = north east
- ]
- \addplot[teal, only marks] table{
- X Y
- 1994 1718
- 1995 1710
- 1996 1708
- 1997 1700
- 1998 1698
- 1999 1697
- 2000 1691
- 2001 1688
- 2002 1683
- 2004 1679
- 2005 1671
- 2006 1670
- 2007 1663
- 2008 1661
- 2009 1656
- 2010 1649
- };
- \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
- \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
- \CalculsRegLin{\LLX}{\LLY}
- \addplot [thick,orange,domain=\LXmin:\LXmax,samples=2]{\COEFFa*x+\COEFFb};
- \addlegendentry{$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$};
- \addlegendentry{$R^2=\fpeval{round(\COEFFrd,5)}$};
- \end{axis}
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\begin{noteblock}
-Il existe également une commande auxiliaire, \ctex{PointsRegLin} pour afficher le nuage de points avec quelques options, dans un environnement \TikZ{} classique (sans \textsf{pgfplot})\ldots
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-...
-\begin{tikzpicture}[<options>]
- ...
- \PointsRegLin[clés]{listeX}{listeY}
- ...
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour la mise en forme du nuage :
-
-\begin{itemize}
- \item la clé \Cle{Couleur} pour la couleur des points du nuage ;\hfill{}défaut \Cle{teal}
- \item la clé \Cle{Taille} pour la taille des points (type \textit{cercle}) ;\hfill{}défaut \Cle{2pt}
- \item la clé \Cle{Ox} pour spécifier la valeur initiale Ox (si changement d'origine) ;\hfill{}défaut \Cle{0}
- \item la clé \Cle{Oy} pour spécifier la valeur initiale Oy (si changement d'origine).\hfill{}défaut \Cle{0}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[x=0.5cm,y=0.05cm]
- \draw[xstep=1,ystep=5,lightgray!50,very thin] (0,0) grid (20,100);
- \draw[xstep=2,ystep=10,lightgray,thin] (0,0) grid (20,100);
- \draw[thick,->,>=latex] (0,0)--(20,0) ;
- \draw[thick,->,>=latex] (0,0)--(0,100) ;
- \foreach \x in {1992,1994,...,2010} \draw[thick] ({\x-1992},4pt)--({\x-1992},-4pt) node[below] {$\x$} ;
- \foreach \y in {1640,1650,...,1730} \draw[thick] (4pt,{\y-1640})--(-4pt,{\y-1640}) node[left] {$\y$} ;
- \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010}
- \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649}
- \def\Ox{1992}\def\Oy{1640}
- \CalculsRegLin{\LLX}{\LLY}
- \PointsRegLin[Ox=1992,Oy=1640,Couleur=blue,Taille=3pt]{\LLX}{\LLY}
- \draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ;
- \matrix [draw,fill=white,below left] at (current bounding box.north east) {
- \node {$y=\num{\fpeval{round(\COEFFa,3)}}\,x+\num{\fpeval{round(\COEFFb,3)}}$} ; \\
- \node {$R^2=\num{\fpeval{round(\COEFFrd,5)}}$} ; \\
- };
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{tikzpicture}[x=0.5cm,y=0.05cm]
- \draw[xstep=1,ystep=5,lightgray!50,very thin] (0,0) grid (20,100);
- \draw[xstep=2,ystep=10,lightgray,thin] (0,0) grid (20,100);
- \draw[thick,->,>=latex] (0,0)--(20,0) ;
- \draw[thick,->,>=latex] (0,0)--(0,100) ;
- \foreach \x in {1992,1994,...,2010} \draw[thick] ({\x-1992},4pt)--({\x-1992},-4pt) node[below] {$\x$} ;
- \foreach \y in {1640,1650,...,1730} \draw[thick] (4pt,{\y-1640})--(-4pt,{\y-1640}) node[left] {$\y$} ;
- \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
- \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
- \def\Ox{1992}\def\Oy{1640}
- \CalculsRegLin{\LLX}{\LLY}
-\PointsRegLin[Ox=1992,Oy=1640,Couleur=blue,Taille=3pt]{\LLX}{\LLY}
- \draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ;
- \matrix [draw,fill=white,below left] at (current bounding box.north east) {
- \node {$y=\num{\fpeval{round(\COEFFa,3)}}\,x + \num{\fpeval{round(\COEFFb,3)}}$} ; \\
- \node {$R^2=\num{\fpeval{round(\COEFFrd,5)}}$} ; \\
- };
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Statistiques à deux variables}\label{statsdeuxvars}
-
-\subsection{Idées}
-
-\begin{tipblock}
-L'idée est de \textit{prolonger} le paragraphe précédent pour proposer un environnement \TikZ{} adapté à des situations venant de statistiques à deux variables.
-
-\smallskip
-
-Un des soucis pour ces situations est le fait que le repère dans lequel on travaille n'a pas forcément pour origine $(0;0)$.
-
-De ce fait -- pour éviter des erreurs de \ctex{dimension too large} liées à \TikZ{} -- il faut \textit{décaler les axes} pour se ramener à une origine en $O$.
-
-\smallskip
-
-Le code, intimement lié à un environnement \ctex{tikzpicture}, va donc :
-
-\begin{itemize}
- \item préciser les informations utiles comme \ctex{xmin}, \ctex{xmax}, \ctex{Ox}, \ctex{xgrille}, etc
- \item proposer des commandes (sans se soucier des \textit{translations} !) pour :
- \begin{itemize}
- \item tracer une grille (principale et/ou secondaire) ;
- \item tracer les axes (avec légendes éventuelles) et éventuellement les graduer ;
- \end{itemize}
-\end{itemize}
-
-En utilisant les commandes de \textsf{régression linéaire} du paragraphe précédent, il sera de plus possible (sans calculs !) de :
-
-\begin{itemize}
- \item représenter le nuage de points ;
- \item placer le point moyen ;
- \item tracer la droite d'ajustement (obtenue par \ctex{ProfLycee}) ou une autre courbe.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{noteblock}
-Le package \ctex{pgfplots} peut être utilisé pour traiter ce genre de situation, mais ne l'utilisant pas, j'ai préféré préparer des \textsf{macros} permettant de s'affranchir de ce package (est-ce pertinent, ça c'est une autre question\ldots).
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%Listes et calculs
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%tracé (simple), les options seront présentées juste après
-\begin{tikzpicture}%
- [x=0.5cm,y=0.1cm, %unités
- Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1, %axe Ox
- Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] %axe Oy
- \GrilleTikz \AxesTikz %grilles et axes
- \AxexTikz[Annee]{1992,1994,...,2010} %axeOx
- \AxeyTikz{1640,1650,...,1720} %axeOy
- \NuagePointsTikz{\LLX}{\LLY} %nuage
- \CourbeTikz[line width=1.25pt,CouleurVertForet,samples=2]%
- {\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} %droite de régression
- \PointMoyenTikz %point moyen
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%tracé avec options fenêtre par défaut
-\begin{tikzpicture}%
- [....] %paramètres
- \FenetreSimpleTikz<Annee>{1992,1994,...,2010}{1640,1650,...,1720} %fenêtre "simple"
- \NuagePointsTikz{\LLX}{\LLY} %nuage
- \CourbeTikz[line width=1.25pt,CouleurVertForet,samples=2]%
- {\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} %droite de régression
- \PLnuageptmoy %point moyen
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-
-\begin{tikzpicture}[x=0.5cm,y=0.1cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz \AxesTikz
- \AxexTikz[Annee]{1992,1994,...,2010}
- \AxeyTikz{1640,1650,...,1720}
- \NuagePointsTikz{\LLX}{\LLY}
- \CourbeTikz[line width=1.25pt,CouleurVertForet,samples=2]{\COEFFa*\x+\COEFFb}{\LXmin:\LXmax}
- \PointMoyenTikz
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\subsection{Commandes, clés et options}
-
-\begin{noteblock}
-Les \Cle{paramètres} nécessaires à la bonne utilisation des commandes suivantes sont à déclarer directement dans l'environnement \ctex{tikzpicture}, seules les versions \og x \fg{} sont présentées ici:
-
-\begin{itemize}
- \item \Cle{xmin}, stockée dans \ctex{\textbackslash{}xmin} ;\hfill{}défaut \Cle{-3}
- \item \Cle{xmax}, stockée dans \ctex{\textbackslash{}xmax} ;\hfill{}défaut \Cle{3}
- \item \Cle{Ox}, stockée dans \ctex{\textbackslash{}axexOx}, origine de l'axe $(Ox)$ ;\hfill{}défaut \Cle{0}
- \item \Cle{xgrille}, stockée dans \ctex{\textbackslash{}xgrille}, graduation principale ;\hfill{}défaut \Cle{1}
- \item \Cle{xgrilles}, stockée dans \ctex{\textbackslash{}xgrilles}, graduation secondaire.\hfill{}défaut \Cle{0.5}
-\end{itemize}
-
-La fenêtre d'affichage (de sortie) sera donc \textit{portée} par le rectangle de coins $(\text{xmin};\text{ymin})$ et $(\text{xmax};\text{ymax})$ ; ce qui correspond en fait à la fenêtre \TikZ{} \textit{portée} par le rectangle de coins $(\text{xmin-Ox};\text{ymin-Oy})$ et $(\text{xmax-Ox};\text{ymax-Oy})$.
-
-\smallskip
-
-Les commandes ont -- pour certaines -- pas mal de \Cle{clés} pour des réglages fins, mais dans la majorité des cas elles ne sont pas forcément \textit{utiles}.
-\end{noteblock}
-
-\begin{noteblock}
-Pour illustrer les commandes et options de ce paragraphe, la base sera le graphique présenté précédemment.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
- \GrilleTikz[options][options grille ppale][options grille second.]
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Cette commande permet de tracer une grille principale et/ou une grille secondaire :
-
-\begin{itemize}
- \item les premières \Cle{clés} sont les booléens \Cle{Affp} et \Cle{Affs} qui affichent ou non les grilles ;
-
- \hfill~défaut \Cle{true}
- \item les options des grilles sont en \TikZ. \hfill~défaut \Cle{thin,lightgray} et \Cle{very thin,lightgray}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}%
- [x=0.3cm,y=0.06cm,%
- Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,%
- Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz
-\end{tikzpicture}
-~~
-\begin{tikzpicture}%
- [x=0.3cm,y=0.06cm,%
- Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,%
- Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz[Affp=false][][orange,densely dotted]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\hfill~
-\begin{tikzpicture}%
- [x=0.3cm,y=0.06cm,%
- Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,%
- Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz
-\end{tikzpicture}
-~~
-\begin{tikzpicture}%
- [x=0.3cm,y=0.06cm,%
- Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,%
- Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz[Affp=false][][orange,densely dotted]
-\end{tikzpicture}
-\hfill~
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
- \AxesTikz[options]
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Cette commande permet de tracer les axes, avec des \Cle{clés} :
-
-\begin{itemize}
- \item \Cle{Epaisseur} qui est l'épaisseur des traits ; \hfill~défaut \Cle{1.25pt}
- \item \Cle{Police} qui est le style des labels des axes ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont}
- \item \cmaj{2.1.2} \Cle{ElargirOx} qui est le \% l'élargissement \Cle{global} ou \Cle{G/D} de l'axe $(Ox)$ ;
-
- \hfill~défaut \Cle{0/0.05}
- \item \cmaj{2.1.2} \Cle{ElargirOy} qui est le \% l'élargissement \Cle{global} ou \Cle{B/H} de l'axe $(Oy)$ ;
-
- \hfill~défaut \Cle{0/0.05}
- \item \Cle{Labelx} qui est le label de l'axe $(Ox)$ ; \hfill~défaut \Cle{\${}x\$}
- \item \Cle{Labely} qui est le label de l'axe $(Oy)$ ; \hfill~défaut \Cle{\${}y\$}
- \item \Cle{AffLabel} qui est le code pour préciser quels labels afficher, entre \Cle{x}, \Cle{y} ou \Cle{xy} ;
-
- \hfill~défaut \Cle{vide}
- \item \Cle{PosLabelx} pour la position du label de $(Ox)$ en bout d'axe ; \hfill~défaut \Cle{right}
- \item \Cle{PosLabely} pour la position du label de $(Oy)$ en bout d'axe ; \hfill~défaut \Cle{above}
- \item \Cle{EchelleFleche} qui est l'échelle de la flèche des axes ; \hfill~défaut \Cle{1}
- \item \Cle{TypeFleche} qui est le type de la flèche des axes.\hfill~défaut \Cle{latex}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%code tikz
- \AxesTikz
-
-%code tikz
- \AxesTikz%
- [AffLabel=xy,Labelx={Année},Labely={Altitude},%
- PosLabelx={below right},PosLabely={above left},%
- Police=\small\sffamily]
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\hfill~
-\begin{tikzpicture}%
- [x=0.3cm,y=0.06cm,%
- Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,%
- Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \AxesTikz
-\end{tikzpicture}
-~~
-\begin{tikzpicture}%
- [x=0.3cm,y=0.06cm,%
- Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,%
- Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \AxesTikz%
- [AffLabel=xy,Labelx={Année},Labely={Altitude},%
- PosLabelx={below right},PosLabely={above left},%
- Police=\small\sffamily]
-\end{tikzpicture}
-\hfill~
-\end{PresCodeSortiePL}
-
-%les axes
-
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
- \AxexTikz[options]{valeurs}
- \AxeyTikz[options]{valeurs}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} identiques pour les deux directions :
-
-\begin{itemize}
- \item \Cle{Epaisseur} qui est l'épaisseur des graduations ; \hfill~défaut \Cle{1pt}
- \item \Cle{Police} qui est le style des labels des graduations ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont}
- \item \Cle{PosGrad} qui est la position des graduations par rapport à l'axe ; \hfill~défaut \Cle{below} et \Cle{left}
- \item \Cle{HautGrad} qui est la position des graduations (sous la forme \Cle{lgt} ou \Cle{lgta/lgtb}) ;
-
- \hfill~défaut \Cle{4pt}
- \item le booléen \Cle{AffGrad} pour afficher les valeurs (formatés avec \ctex{num} donc dépendant de \ctex{sisetup}) des graduations ; \hfill~défaut \Cle{true}
- \item le booléen \Cle{AffOrigine} pour afficher la graduation de l'origine ; \hfill~défaut \Cle{true}
- \item le booléen \Cle{Annee} qui permet de ne pas formater les valeurs des graduations (type \textsf{année}). \hfill~défaut \Cle{false}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%code tikz
- \AxexTikz[Police=\small]{1992,1994,...,2010}
- \AxexTikz{1640,1650,...,1720}
-
-%code tikz
- \AxeyTikz[Police=\small,Annee,HautGrad=0pt/4pt]{1992,1994,...,2010}
- \AxeyTikz[AffGrad=false,HautGrad=6pt]{1640,1650,...,1720}
-
-%des axes fictifs (en gris) sont rajoutés pour la lisibilité du code de sortie
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\hfill~
-\begin{tikzpicture}%
- [x=0.3cm,y=0.06cm,%
- Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,%
- Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \draw[gray,line width=1.25pt,->,>=latex] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ;
- \draw[gray,line width=1.25pt,->,>=latex] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ;
- \AxexTikz[Police=\tiny]{1992,1994,...,2010}
- \AxeyTikz{1640,1650,...,1720}
-\end{tikzpicture}
-~~
-\begin{tikzpicture}%
- [x=0.3cm,y=0.06cm,%
- Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,%
- Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \draw[gray,line width=1.25pt,->,>=latex] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ;
- \draw[gray,line width=1.25pt,->,>=latex] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ;
- \AxexTikz[Police=\tiny,Annee,HautGrad=0pt/4pt]{1992,1994,...,2010}
- \AxeyTikz[AffGrad=false,HautGrad=6pt]{1640,1650,...,1720}
-\end{tikzpicture}
-\hfill~
-\end{PresCodeSortiePL}
-
-\subsection{Commandes annexes}
-
-\begin{noteblock}
-Il existe, de manière marginale, quelques commandes complémentaires qui ne seront pas trop détaillées mais qui sont présentes dans l'introduction :
-
-\begin{itemize}
- \item \ctex{FenetreTikz} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ;
- \item \ctex{FenetreSimpleTikz} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ;
- \item \ctex{OrigineTikz} pour rajouter le libellé de l'origine si non affiché par les axes.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%code tikz
- \FenetreTikz %on restreint les tracés
- \FenetreSimpleTikz[opt](opt axes)<opt axe Ox>{liste valx}<opt axe Oy>{liste valy}
-\end{PresCodeTexPL}
-
-\subsection{Interactions avec CalculsRegLin}
-
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
- \NuagePointsTikz[options]{listeX}{listeY}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Cette commande, liée à la commande \ctex{CalculsRegLin} permet de représenter le nuage de points associé aux deux listes, avec les \Cle{clés} suivantes :
-
-\begin{itemize}
- \item \Cle{Taille} qui est la taille des points du nuage ; \hfill~défaut \Cle{2pt}
- \item \Cle{Style} parmi \Cle{o} (rond) ou \Cle{x} (croix) ou \Cle{+} (plus) ; \hfill~défaut \Cle{o}
- \item \Cle{Couleur} qui est la couleur (éventuellement \Cle{couleurA/couleurB} pour les ronds).
-
- \hfill~défaut \Cle{blue}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[...]
- \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-
-\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz \AxesTikz
- \AxexTikz[Annee,Police=\small]{1992,1994,...,2010}
- \AxeyTikz{1640,1650,...,1720}
- \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY}
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[...]
- \NuagePointsTikz[Couleur=CouleurVertForet,Style=x,Taille=6pt]{\LLX}{\LLY}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-
-\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz \AxesTikz
- \AxexTikz[Annee,Police=\small]{1992,1994,...,2010}
- \AxeyTikz{1640,1650,...,1720}
- \NuagePointsTikz[Couleur=CouleurVertForet,Style=x,Taille=6pt]{\LLX}{\LLY}
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-%point moyen
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
- \PointMoyenTikz[options]
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Cette commande permet de rajouter le point moyen du nuage, calculé par la commande \ctex{CalculsRegLin}, avec les \Cle{clés} :
-
-\begin{itemize}
- \item \Cle{Police}, comme précédemment ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} ;
- \item \Cle{Taille}, taille du point moyen ; \hfill~défaut \Cle{4pt}
- \item \Cle{Couleur}, couleur du point moyen ; \hfill~défaut \Cle{red}
- \item \Cle{Style} parmi \Cle{o} (rond) ou \Cle{x} (croix) ou \Cle{+} (plus) ; \hfill~défaut \Cle{o}
- \item \Cle{xg}, abscisse du point moyen, récupérable via \ctex{CalculsRegLin} ; \hfill~défaut \Cle{\textbackslash{}LXmoy}
- \item \Cle{yg}, ordonnée du point moyen, récupérable via \ctex{CalculsRegLin} ; \hfill~défaut \Cle{\textbackslash{}LYmoy}
- \item \Cle{Nom}, label du point moyen ; \hfill~défaut \Cle{G}
- \item \Cle{Pos} qui est la position du label par rapport au point ; \hfill~défaut \Cle{above}
- \item \Cle{Decal} qui est l'éloignement de la position du label par rapport au point ; \hfill~défaut \Cle{0pt}
- \item la booléen \Cle{AffNom} qui affiche ou non le libellé.\hfill~défaut \Cle{true}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-
-\begin{tikzpicture}[...]
- \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY}
- \PointMoyenTikz
-\end{tikzpicture}
-~~
-\begin{tikzpicture}[...]
- \NuagePointsTikz[Couleur=CouleurVertForet,Style=x,Taille=6pt]{\LLX}{\LLY}
- \PointMoyenTikz[Couleur=orange,Taille=8pt,Style=+,Nom={$G_1$},Pos=below]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-
-\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz \AxesTikz
- \AxexTikz[Annee,Police=\small]{1992,1994,...,2010}
- \AxeyTikz{1640,1650,...,1720}
- \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY}
- \PointMoyenTikz
-\end{tikzpicture}
-
-\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz \AxesTikz
- \AxexTikz[Annee,Police=\small]{1992,1994,...,2010}
- \AxeyTikz{1640,1650,...,1720}
- \NuagePointsTikz[Couleur=CouleurVertForet,Style=x,Taille=6pt]{\LLX}{\LLY}
- \PointMoyenTikz[Couleur=orange,Taille=8pt,Style=+,Nom={$G_1$},Pos=below]
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-%courbe
-\begin{PresCodeTexPL}{listing only}
-%...code tikz
- \CourbeTikz[options]{formule}{domaine}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Cette commande permet de rajouter une courbe sur le graphique (sans se soucier de la transformation de son expression) avec les arguments :
-
-\begin{itemize}
- \item \Cle{optionnels} qui sont -- en \TikZ{} -- les paramètres du tracé ;
- \item le premier \textit{obligatoire}, est -- en langage \TikZ{} -- l'expression de la fonction à tracer, donc avec \ctex{\textbackslash{}x} comme variable ;
- \item le second \textit{obligatoire} est le domaine du tracé , sous la forme \ctex{valxmin:valxmax}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{noteblock}
-L'idée principale est de récupérer les variables de la régression linéaire pour tracer la droite d'ajustement \textit{à moindres frais} !
-\end{noteblock}
-
-\begin{noteblock}
- Toute courbe peut être tracée sur ce principe, par contre il faudra saisir la fonction \textit{à la main}.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-
-\begin{tikzpicture}[...]
- \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \PointMoyenTikz
- \CourbeTikz[line width=1.25pt,CouleurVertForet,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
-\CalculsRegLin{\LLX}{\LLY}
-
-\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz \AxesTikz[ElargirOx=0,ElargirOy=0]
- \AxexTikz[Annee,Police=\footnotesize]{1992,1994,...,2010}
- \AxeyTikz{1640,1650,...,1720}
- \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \PointMoyenTikz
- \CourbeTikz[line width=1.25pt,CouleurVertForet,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax}
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\subsection{Exemple complémentaire, pour illustration}
-
-\begin{PresCodeTexPL}{listing only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
-
-%la courbe n'a pas de lien avec le nuage
-%elle illustre l'interaction des commandes "nuage" avec les autres commandes
-
-\begin{tikzpicture}[...]
- \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \FenetreTikz %on fixe la fenêtre
- \CourbeTikz[line width=1.25pt,orange,samples=250]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
-\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
-
-\begin{tikzpicture}[x=0.7cm,y=0.14cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
- \GrilleTikz \AxesTikz[ElargirOx=0,ElargirOy=0]
- \AxexTikz[Annee,Police=\small]{1992,1994,...,2010}
- \AxeyTikz{1640,1650,...,1720}
- \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \FenetreTikz
- \CourbeTikz[line width=1.25pt,orange,samples=250]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax}
-\end{tikzpicture}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Boîtes à moustaches}\label{boiteamoustaches}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-L'idée est de proposer une commande, à intégrer dans un environnement \TikZ, pour tracer une boîte à moustaches grâce aux paramètres, saisis par l'utilisateur.
-
-\smallskip
-
-Le code ne calcule pas les paramètres, il ne fait \textit{que} tracer la boîte à moustaches !
-\end{tipblock}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}
- \BoiteMoustaches{10/15/17/19/20}
-\end{tikzpicture}
-\end{PresCodePL}
-
-\begin{noteblock}
-Étant donnée que la commande est intégrée dans un environnement \TikZ, les unités peuvent/doivent donc être précisées, \textit{comme d'habitude}, si besoin.
-\end{noteblock}
-
-\subsection{Clés et options}
-
-\begin{cautionblock}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
- \item la clé \Cle{Couleur} qui est la couleur de la boîte ; \hfill~défaut \Cle{black}
- \item la clé \Cle{Elevation} qui est la position verticale (ordonnée des moustaches) de la boîte ;
-
- \hfill~défaut \Cle{1.5}
- \item la clé \Cle{Hauteur} qui est la hauteur de la boîte ; \hfill~défaut \Cle{1}
- \item la clé \Cle{Moyenne} qui est la moyenne (optionnelle) de la série ;
- \item la clé \Cle{Epaisseur} qui est l'épaisseur des traits de la boîte ; \hfill~défaut \Cle{thick}
- \item la clé \Cle{Remplir} qui est la couleur de remplissage de la boîte ; \hfill~défaut \Cle{white}
- \item le booléen \Cle{AffMoyenne} qui permet d'afficher ou non la moyenne (sous forme d'un point) ;
-
- \hfill~défaut \Cle{false}
- \item le booléen \Cle{Pointilles} qui permet d'afficher des pointillés au niveau des paramètres ;
-
- \hfill~défaut \Cle{false}
- \item le booléen \Cle{Valeurs} qui permet d'afficher les valeurs des paramètres au niveau des abscisses.
-
- \hfill~défaut \Cle{false}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}
- \BoiteMoustaches[Epaisseur=very thick,Moyenne=18.5,Couleur=blue,AffMoyenne,%
- Pointilles,Valeurs,Hauteur=2.25,Elevation=2]{10/15/17/19/20}
-\end{tikzpicture}
-\end{PresCodePL}
-
-\begin{PresCodeTexPL}{listing only}
-%une grille a été rajoutée pour visualiser la "position verticale"
-\begin{center}
- \begin{tikzpicture}[x=0.1cm]
- \BoiteMoustaches[Epaisseur=ultra thick,Couleur=blue]{100/150/170/190/200}
- \BoiteMoustaches[Epaisseur=thin,Elevation=2.5,Couleur=red]{80/100/110/120/150}
- \BoiteMoustaches%
- [Elevation=4,Couleur=CouleurVertForet,Remplir=CouleurVertForet!25]{100/140/145/160/210}
-\end{tikzpicture}
-\end{center}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{center}
- \begin{tikzpicture}[x=0.1cm]
- \draw[xstep=10,ystep=0.5,very thin,lightgray] (80,0) grid (210,4.5) ;
- \foreach \x in {80,90,...,210} \draw[very thin,lightgray] (\x,3pt)--(\x,-3pt) node[below] {\num{\x}} ;
- \foreach \y in {0,0.5,...,4.5} \draw[very thin,lightgray] ($(210,\y)+(-3pt,0)$)--($(210,\y)+(3pt,0)$) node[right] {\num{\y}} ;
- \BoiteMoustaches[Epaisseur=ultra thick,Couleur=blue]{100/150/170/190/200}
- \BoiteMoustaches[Epaisseur=thin,Elevation=2.5,Couleur=red]{80/100/110/120/150}
- \BoiteMoustaches[Elevation=4,Couleur=CouleurVertForet,Remplir=CouleurVertForet!25]{100/140/145/160/210}
- \end{tikzpicture}
-\end{center}
-\end{PresCodeSortiePL}
-
-\subsection{Commande pour placer un axe horizontal}
-
-\begin{tipblock}
-L'idée est de proposer, en parallèle de la commande précédente, une commande pour tracer un axe horizontal \og sous \fg{} les éventuelles boîtes à moustaches.
-\end{tipblock}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}
- \BoiteMoustachesAxe[Min=10,Max=20]
- \BoiteMoustaches{10/15/17/19/20}
-\end{tikzpicture}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}
- \BoiteMoustachesAxe[Min=10,Max=20]
- \BoiteMoustaches[Valeurs,Pointilles]{10/15/17/19/20}
-\end{tikzpicture}
-\end{PresCodePL}
-
-\begin{cautionblock}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
- \item la clé \Cle{Min} qui est la valeur minimale de l'axe horizontal ;
- \item la clé \Cle{Max} qui est la valeur minimale de l'axe horizontal ;
- \item la clé \Cle{Elargir} qui est le pourcentage l'élargissement de l'axe ;\hfill~défaut \Cle{0.1}
- \item la clé \Cle{Epaisseur} qui est l'épaisseur des traits de la boîte ; \hfill~défaut \Cle{thick}
- \item la clé \Cle{Valeurs} qui est la liste (compréhensible en \TikZ) des valeurs à afficher.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}
- \BoiteMoustachesAxe[Min=8,Max=21,AffValeurs,Valeurs={8,9,...,21},Elargir=0.02]
- \BoiteMoustaches[Moyenne=18.5,Couleur=blue]{10/15/17/19/20}
- \BoiteMoustaches[Elevation=2.5,Couleur=red]{8/10/11/12/15}
- \BoiteMoustaches[Elevation=4,Couleur=CouleurVertForet,Remplir=CouleurVertForet!25]{10/14/14.5/16/21}
-\end{tikzpicture}
-\end{PresCodePL}
-
-\begin{noteblock}
-Le placement des différentes boîtes n'est pas automatique, donc il faut penser à cela avant de se lancer dans le code.
-
-Sachant que la hauteur par défaut est de 1, il est -- a priori -- intéressant de placer les boîtes à des \Cle{élévations} de \num{1} puis \num{2.5} puis \num{4} etc
-\end{noteblock}
-
-\newpage
-
-\section{Histogrammes}\label{histo}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-\cmaj{2.6.7} L'idée est de proposer une commande pour tracer un histogramme à classes régulières ou non.
-
-\smallskip
-
-La commande, qui utilise \TikZ, est autonome (ceci étant dû à la gestion en interne des unités !), et ne permet pas de rajout une fois le graphique affiché.
-\end{tipblock}
-
-\begin{noteblock}
-La commande fonctionne avec des données classe/effectif, qui seront à traduire sous la forme \ctex{BorneInf/BorneSup/Effectif}.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\Histogramme(*)[options]{données}
-\end{PresCodeTexPL}
-
-\begin{PresCodePL}{}
-%classes régulières
-\Histogramme{7/9/130 9/11/175 11/13/182 13/15/95}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-%classes non régulières
-\Histogramme*{0/20/15 20/50/34 50/60/8 60/85/10 90/100/13}
-\end{PresCodePL}
-
-\begin{cautionblock}
-Contrairement aux autres commandes graphiques, qui sont souvent à intégrer dans un environnement \TikZ, la commande \ctex{\textbackslash Histogramme} aura besoin de connaître les dimensions finales du graphique pour fonctionner !
-
-Les dimensions correspondent à celles des rectangles avec les éventuelles modifications horizontales et/ou verticales spécifiées.
-\end{cautionblock}
-
-\subsection{Clés et options}
-
-\begin{cautionblock}
-La version \textit{étoilée} permet de préciser que les classes ne sont pas d'amplitudes régulières.
-
-\medskip
-
-Le premier argument, optionnel et entre \ctex{[...]} propose les \Cle{clés} principales suivantes :
-
-\begin{itemize}
- \item \Cle{DebutOx} : permet de préciser le début de l'axe horizontal (sinon c'est par défaut la borne inférieure de la première classe) ;
-
- \hfill{}défaut : \Cle{vide}
- \item \Cle{FinOx} : permet de préciser la fin de l'axe horizontal (sinon c'est par défaut la borne supérieure de la dernière classe) ;
-
- \hfill{}défaut : \Cle{vide}
- \item \Cle{Largeur} : largeur en cm du graphique créé (entre \Cle{DebutOx} et \Cle{FinOx}) ; \hfill{}défaut : \Cle{10}
- \item \Cle{Hauteur} : hauteur en cm du graphique créé (par rapport à l'effectif maximal ou la grille éventuelle) ;
-
- \hfill{}défaut : \Cle{5}
- \item \Cle{ListeCouleurs} : liste des couleurs des rectangles (unique ou sous la forme \ctex{\{CoulA,CoulB,...\}}) ;
-
- \hfill{}défaut : \Cle{orange}
- \item \Cle{ElargirX} et \Cle{ElargirY} : pour rajouter une petite longueur au bout des axes ; \hfill{}défaut : \Cle{5mm}
- \item \Cle{LabelX} et \Cle{LabelY} : pour les labels des axes ; \hfill{}défaut : \Cle{vide}
- \item \Cle{GradX} et \Cle{GradY} : pour les graduations et valeurs des axes (langage \ctex{tikz}) ; \hfill{}défaut : \Cle{vide}
- \item \Cle{AffEffectifs} : booléen pour afficher les effectifs ; \hfill{}défaut : \Cle{true}
- \item \Cle{PosEffectifs} : choix de la position des effectifs parmi \Cle{bas,milieu,haut,dessus} ;
-
- \hfill{}défaut : \Cle{milieu}
- \item \Cle{Remplir} : booléen pour remplir les rectangles ; \hfill{}défaut : \Cle{true}
- \item \Cle{Opacite} : choix de l'opacité du remplissage ; \hfill{}défaut : \Cle{0.5}
- \item \Cle{AffBornes} : booléen pour afficher les bornes des classes ; \hfill{}défaut : \Cle{false}
- \item \Cle{GrilleV} : booléen pour afficher une grille verticale (pour les classes régulières, à la manière d'un tableur) ;
-
- \hfill{}défaut : \Cle{true}
- \item \Cle{PoliceAxes} : police pour les axes ; \hfill{}défaut : \Cle{\textbackslash normalsize\textbackslash normalfont}
- \item \Cle{PoliceEffectifs} : police pour les effectifs ; \hfill{}défaut : \Cle{\textbackslash normalsize\textbackslash normalfont}
- \item \Cle{EpaisseurTraits} : épaisseur des traits (langage \ctex{tikz}). \hfill{}défaut : \Cle{semithick}
-\end{itemize}
-
-\cmaj{2.6.8} Quelques clés sont spécifiques à la grille (éventuelle) des histogrammes non réguliers (avec ajustement vertical et légende) :
-
-\begin{itemize}
- \item \Cle{Grille} : création de la grille, sous la forme \Cle{GradX/UniteAire} ; \hfill{}défaut : \Cle{vide}
- \item \Cle{ExtraGrilleY} : pour rajouter une \textit{ligne à la grille en vertical} ; \hfill{}défaut : \Cle{0}
- \item \Cle{PosLegende} : pour préciser le \textit{carreau} de la légende éventuelle. \hfill{}défaut : \Cle{vide}
-\end{itemize}
-
-Le second argument, obligatoire et entre \ctex{\{...\}} permet de préciser les données utilisées sous la forme \ctex{BorneInf/BorneSup/Effectif BorneInf/BorneSup/Effectif ...}.
-\end{cautionblock}
-
-\pagebreak
-
-\subsection{Exemple avec des classes régulières}
-
-\begin{tipblock}
-Avec la série suivante :
-
-\medskip
-
-\hfill
-\begin{tblr}{hlines,vlines,width=10cm,colspec={Q[l,m]*{4}{X[m,c]}}}
- Classes & $[7\mathpunct{};9[$ & $[9\mathpunct{};11[$ & $[11\mathpunct{};13[$ & $[13\mathpunct{};15]$ \\
- Effectifs & 130 & 175 & 182 & 95 \\
-\end{tblr}
-\hfill~
-\end{tipblock}
-
-\begin{PresCodePL}{}
-\Histogramme[ListeCouleurs={white},Opacite=1,%
- GradX={7,8,...,15},LabelX={données},GradY={0,25,...,175},LabelY={effectifs},%
- PoliceEffectifs=\small\sffamily,PosEffectifs=dessus]%
- {7/9/130 9/11/175 11/13/182 13/15/95}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\Histogramme[Largeur=11,Hauteur=7,%
- ListeCouleurs={yellow,blue,pink,red},%
- DebutOx=5,FinOx=17,GradX={5,6,...,17},GradY={0,25,...,175},%
- AffEffectifs=false]%
- {7/9/130 9/11/175 11/13/182 13/15/95}
-\end{PresCodePL}
-
-\pagebreak
-
-\subsection{Exemple avec des classes non régulières}
-
-\begin{tipblock}
-Avec la série suivante :
-
-\medskip
-
-\hfill
-\begin{tblr}{hlines,vlines,width=14cm,colspec={Q[l,m]*{6}{X[m,c]}}}
- Classes & $[0\mathpunct{};20[$ & $[20\mathpunct{};50[$ & $[50\mathpunct{};60[$ & $[60\mathpunct{};85[$ & $[85\mathpunct{};100]$ \\
- Effectifs & 15 & 34 & 8 & 10 & 13 \\
-\end{tblr}
-\hfill~
-\end{tipblock}
-
-\begin{PresCodePL}{}
-\Histogramme*[%
- ListeCouleurs={yellow,red,blue,green,purple},%
- PosEffectifs=dessus,AffBornes]
- {0/20/15 20/50/34 50/60/8 60/85/10 85/100/13}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\Histogramme*[%
- Largeur=14,Hauteur=7,FinOx=110,%
- ListeCouleurs={yellow,red,blue,green,purple},Opacite=0.25,%
- GradX={0,10,...,110},%
- PosEffectif=heut]
- {0/20/15 20/50/34 50/60/8 60/85/10 85/100/13}
-\end{PresCodePL}
-
-\pagebreak
-
-\begin{tipblock}
-Avec la série suivante :
-
-\medskip
-
-\hfill
-\begin{tblr}{hlines,vlines,width=14cm,colspec={Q[l,m]*{6}{X[m,c]}},cell{1}{2-Z}={font=\footnotesize}}
- Classes & $[900\mathpunct{};1\,200[$ & $[1\,200\mathpunct{};1\,400[$ & $[1\,400\mathpunct{};1\,600[$ & $[1\,600\mathpunct{};1\,800[$ & $[1\,800\mathpunct{};2\,000[$ & $[2\,000\mathpunct{};2\,400]$ \\
- Effectifs & 30 & 30 & 60 & 40 & 20 & 20 \\
-\end{tblr}
-\hfill~
-\end{tipblock}
-
-\begin{PresCodePL}{}
-%choix des unités 0.85cm par petit carreau avec 17H et 5V
-
-\Histogramme*[%
- Largeur=13.6,Hauteur=4.25,FinOx=2500,%
- PosLegende=0/3,Grille=100/10,ExtraGrilleY=1,%
- ListeCouleurs=lightgray,%
- AffBornes,PosEffectifs=dessus]
- {900/1200/30 1200/1400/30 1400/1600/60 1600/1800/40 1800/2000/20 2000/2400/20}
-\end{PresCodePL}
+\input{ProfLycee-doc-stats.tex}
\newpage
@@ -5987,746 +455,10 @@ Avec la série suivante :
\newpage
-\part{Outils pour les probabilités}
-
-\section{Calculs de probabilités}\label{calcprobas}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-L'idée est de proposer des commandes permettant de calculer des probabilités avec des lois classiques :
-
-\begin{itemize}
- \item binomiale ;
- \item normale ;
- \item exponentielle ;
- \item de Poisson ;
- \item géométrique ;
- \item hypergéométrique.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{noteblock}
-Les commandes sont de deux natures :
-
-\begin{itemize}
- \item des commandes pour calculer, grâce au package \ctex{xintexpr} ;
- \item des commandes pour formater le résultat de \ctex{xintexpr}, grâce à \ctex{siunitx}.
-\end{itemize}
-
-De ce fait, les options de \ctex{siunitx} de l'utilisateur affecterons les formatages du résultat, la commande va \og forcer \fg{} les arrondis et l'écriture scientifique.
-\end{noteblock}
-
-\subsection{Calculs \og simples \fg}
-
-\begin{PresCodeTexPL}{listing only}
-%loi binomiale B(n,p)
-\CalcBinomP{n}{p}{k} %P(X=k)
-\CalcBinomC{n}{p}{a}{b} %P(a<=X<=b)
-
-%loi de Poisson P(l)
-\CalcPoissP{l}{k} %P(X=k)
-\CalcPoissC{l}{a}{b} %P(a<=X<=b)
-
-%loi géométrique G(p)
-\CalcGeomP{p}{k} %P(X=k)
-\CalcGeomC{l}{a}{b} %P(a<=X<=b)
-
-%loi hypergéométrique H(N,n,m)
-\CalcHypergeomP{N}{n}{m}{k} %P(X=k)
-\CalcHypergeomP{N}{n}{m}{a}{b} %P(a<=X<=b)
-
-%loi normale N(m,s)
-\CalcNormC{m}{s}{a}{b} %P(a<=X<=b)
-
-%loi exponentielle E(l)
-\CalcExpoC{l}{a}{b} %P(a<=X<=b)
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Les probabilités calculables sont donc -- comme pour beaucoup de modèles de calculatrices -- les probabilités \textbf{P}onctuelles ($P(X=k)$) et \textbf{C}umulées ($P(a\leqslant X\leqslant b)$).
-
-\smallskip
-
-Pour les probabilités cumulées, on peut utiliser le caractère \ctex{*} comme borne ($a$ ou $b$), pour les probabilités du type $P(X\leqslant b)$ et $P(X \geqslant a)$.
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-% X -> B(5,0.4)
-$P(X=3) \approx \CalcBinomP{5}{0.4}{3}$.
-$P(X\leqslant1) \approx \CalcBinomC{5}{0.4}{*}{1}$.
-
-% X -> B(100,0.02)
-$P(X=10) \approx \CalcBinomP{100}{0.02}{10}$.
-$P(15\leqslant X\leqslant25) \approx \CalcBinomC{100}{0.02}{15}{25}$.
-
-% Y -> P(5)
-$P(Y=3) \approx \CalcPoissP{5}{3}$.
-$P(Y\geqslant2) \approx \CalcPoissC{5}{2}{*}$.
-
-% T -> G(0.5)
-$P(T=100) \approx \CalcPoissP{0.5}{3}$.
-$P(T\leqslant5) \approx \CalcPoissC{0.5}{*}{5}$.
-
-% W -> H(50,10,5)
-$P(W=4) \approx \CalcHypergeomP{50}{10}{5}{4}$.
-$P(1\leqslant W\leqslant3) \approx \CalcHypergeomC{50}{10}{5}{1}{3}$.
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-$\bullet~~~~X \hookrightarrow \mathcal{B}(5\,; 0,4)$ :\\
-$P(X=3) \approx \CalcBinomP{5}{0.4}{3}$.\\
-$P(X\leqslant1) \approx \CalcBinomC{5}{0.4}{*}{1}$.
-
-\medskip
-
-$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,; 0,02)$ :\\
-$P(X=10) \approx \CalcBinomP{100}{0.02}{10}$.\\
-$P(15\leqslant X\leqslant25) \approx \CalcBinomC{100}{0.02}{15}{25}$.
-
-\medskip
-
-$\bullet~~~~Y \hookrightarrow \mathcal{P}_5$ :\\
-$P(Y=3) \approx \CalcPoissP{5}{3}$.\\
-$P(Y\geqslant2) \approx \CalcPoissC{5}{2}{*}$.
-
-\medskip
-
-$\bullet~~~~T \hookrightarrow \mathcal{G}_{0,5}$ :\\
-$P(T=3) \approx \CalcGeomP{0.5}{3}$.\\
-$P(T\leqslant5) \approx \CalcGeomC{0.5}{*}{5}$.
-
-\medskip
-
-$\bullet~~~~W \hookrightarrow \mathcal{H}(50\,; 10\,; 5)$ :\\
-$P(W=4) \approx \CalcHypergeomP{50}{10}{5}{4}$.\\
-$P(1\leqslant W\leqslant3) \approx \CalcHypergeomC{50}{10}{5}{1}{3}$.
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-% X -> N(0,1)
-$P(X\leqslant1) \approx \CalcNormC{0}{1}{*}{1}$.
-$P(-1,96\leqslant Z\leqslant1,96) \approx \CalcNormC{0}{1}{-1.96}{1.96}$.
-
-% X -> N(550,30)
-$P(Y\geqslant600) \approx \CalcNormC{550}{30}{600}{*}$.
-$P(500\leqslant Y\leqslant600) \approx \CalcNormC{550}{30}{500}{600}$.
-
-% Z -> E(0.001)
-$P(Z\geqslant400) \approx \CalcExpoC{0.001}{400}{*}$.
-$P(300\leqslant Z\leqslant750) \approx \CalcExpoC{0.001}{300}{750}$.
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-$\bullet~~~~X \hookrightarrow \mathcal{N}(0\,; 1)$ :\\
-$P(X\leqslant1) \approx \CalcNormC{0}{1}{*}{1}$.\\
-$P(-1,96\leqslant Z\leqslant1,96) \approx \CalcNormC{0}{1}{-1.96}{1.96}$.
-
-\medskip
-
-$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,; 30)$ :\\
-$P(Y\geqslant600) \approx \CalcNormC{550}{30}{600}{*}$.\\
-$P(500\leqslant Y\leqslant600) \approx \CalcNormC{550}{30}{500}{600}$.
-
-\medskip
-
-$\bullet~~~~Z \hookrightarrow \mathcal{E}_{0,001}$ :\\
-$P(Z\geqslant400) \approx \CalcExpoC{0.001}{400}{*}$.\\
-$P(300\leqslant Z\leqslant750) \approx \CalcExpoC{0.001}{300}{750}$.
-\end{PresCodeSortiePL}
-
-\subsection{Complément avec sortie \og formatée \fg}
-
-\begin{tipblock}
-L'idée est ensuite de formater le résultat obtenu par \ctex{xintexpr}, pour un affichage homogène.
-
-\smallskip
-
-L'utilisateur peut donc utiliser \og sa \fg{} méthode pour formater les résultats obtenus par \ctex{xintexpr} !
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%avec un formatage manuel
-\num[exponent-mode=scientific]{\CalcBinomP{100}{0.02}{10}}
-\end{PresCodeTexPL}
-
-\begin{PresCodePL}{}
-$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,; 0,02)$ :
-
-$P(X=10) \approx \num[exponent-mode=scientific]{\CalcBinomP{100}{0.02}{10}}$.
-\end{PresCodePL}
-
-\begin{tipblock}
-Le package \ctex{ProfLycee} propose -- en complément -- des commandes pour formater, grâce à \ctex{siunitx}, le résultat.
-
-Les commandes ne sont donc, dans ce cas, pas préfixées par \ctex{calc} :
-
-\begin{itemize}
- \item formatage sous forme décimale \textit{pure} : $0,00\ldots$ ;
- \item formatage sous forme scientifique : $n,\ldots\times10^{\ldots}$.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%loi binomiale B(n,p)
-\BinomP(*)[prec]{n}{p}{k} %P(X=k)
-\BinomC(*)[prec]{n}{p}{a}{b} %P(a<=X<=b)
-
-%loi de Poisson P (l)
-\PoissonP(*)[prec]{l}{k} %P(X=k)
-\PoissonC(*)[prec]{l}{a}{b} %P(a<=X<=b)
-
-%loi géométrique G (p)
-\GeomP{p}{k} %P(X=k)
-\GeomC{l}{a}{b} %P(a<=X<=b)
-
-%loi hypergéométrique H (N,n,m)
-\HypergeomP{N}{n}{m}{k} %P(X=k)
-\HypergeomC{N}{n}{m}{a}{b} %P(a<=X<=b)
-
-%loi normale N(m,s)
-\NormaleC(*)[prec]{m}{s}{a}{b} %P(a<=X<=b)
-
-%loi exponentielle E(l)
-\ExpoC(*)[prec]{l}{a}{b} %P(a<=X<=b)
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Quelques précisions sur les commandes précédentes :
-
-\begin{itemize}
- \item la version étoilée \Cle{*} des commandes formate le résultat en mode scientifique ;
- \item l'argument optionnel (par défaut \Cle{3}) correspond à quant à lui à l'arrondi.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-% X -> N(550,30)
-$P(Y\geqslant600) \approx \NormaleC[4]{550}{30}{600}{*}$.
-$P(500\leqslant Y\leqslant600) \approx \NormaleC[4]{550}{30}{500}{600}$.
-% X -> B(100,0.02)
-$P(X=10) \approx \BinomP[7]{100}{0.02}{10} \approx \BinomP*[7]{100}{0.02}{10}$.
-$P(15\leqslant X\leqslant25) \approx \BinomC[10]{100}{0.02}{15}{25} \approx \BinomC*[10]{100}{0.02}{15}{25}$.
-% H -> H(50,10,5)
-$P(W=4) \approx \HypergeomP[5]{50}{10}{5}{4}$.
-$P(1\leqslant W\leqslant3) \approx \HypergeomC[4]{50}{10}{5}{1}{3}$.
-% Z-> E(0,001)$ :
-$P(Z\geqslant400) \approx \ExpoC{0.001}{400}{*}$.
-$P(300\leqslant Z\leqslant750) \approx \ExpoC{0.001}{300}{750}$.
-% T -> P(5)
-$P(T=3) \approx \PoissonP{5}{3}$.
-$P(T\geqslant2) \approx \PoissonC[4]{5}{2}{*}$.
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,; 30)$ :
-
-$P(Y\geqslant600) \approx \NormaleC[4]{550}{30}{600}{*}$.
-
-$P(500\leqslant Y\leqslant600) \approx \NormaleC[4]{550}{30}{500}{600}$.
-
-\medskip
-
-$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,; 0,02)$ :
-
-$P(X=10) \approx \BinomP[7]{100}{0.02}{10} \approx \BinomP*[7]{100}{0.02}{10}$.
-
-$P(15\leqslant X\leqslant25) \approx \BinomC[10]{100}{0.02}{15}{25} \approx \BinomC*[10]{100}{0.02}{15}{25}$.
-
-\medskip
-
-$\bullet~~~~W \hookrightarrow \mathcal{H}(50\,; 10\,; 5)$ :
-
-$P(W=4) \approx \HypergeomP[5]{50}{10}{5}{4}$.
-
-$P(1\leqslant W\leqslant3) \approx \HypergeomC[4]{50}{10}{5}{1}{3}$.
-
-\medskip
-
-$\bullet~~~~Z \hookrightarrow \mathcal{E}_{0,001}$ :
-
-$P(Z\geqslant400) \approx \ExpoC{0.001}{400}{*}$.
-
-$P(300\leqslant Z\leqslant750) \approx \ExpoC{0.001}{300}{750}$.
-
-\medskip
-
-$\bullet~~~~T \hookrightarrow \mathcal{P}_5$ :
-
-$P(T=3) \approx \PoissonP{5}{3}$.
-
-$P(T\geqslant2) \approx \PoissonC[4]{5}{2}{*}$.
-\end{PresCodeSortiePL}
-
-\begin{noteblock}
-\hfill~\includegraphics[height=3cm]{./graphics/pl-doc-probas_a}~~\includegraphics[height=3cm]{./graphics/pl-doc-probas_c}~~\includegraphics[height=3cm]{./graphics/pl-doc-probas_e}~~\includegraphics[height=3cm]{./graphics/pl-doc-probas_f}\hfill~
-\end{noteblock}
+\input{ProfLycee-doc-probas.tex}
\newpage
-\section{Arbres de probabilités \og classiques \fg}\label{arbresprobas}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-L'idée est de proposer des commandes pour créer des arbres de probabilités classiques (et homogènes), en \TikZ, de format :
-
-\begin{itemize}
- \item $2\times2$ ou $2\times3$ ;
- \item $3\times2$ ou $3\times3$.
-\end{itemize}
-
-Les (deux) commandes sont donc liées à un environnement \ctex{tikzpicture}, et elles créent les nœuds de l'arbre, pour exploitation ultérieure éventuelle.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%commande simple pour tracé de l'arbre
-\ArbreProbasTikz[options]{donnees}
-
-%environnement pour tracé et exploitation éventuelle
-\begin{EnvArbreProbasTikz}[options]{donnees}
- code tikz supplémentaire
-\end{EnvArbreProbasTikz}
-\end{PresCodeTexPL}
-
-\subsection{Options et arguments}
-
-\begin{noteblock}
-Les \Cle{donnees} seront à préciser sous forme
-
-\hfill\ctex{<sommet1>/<proba1>/<position1>,<sommet2>/<proba2>/<position2>,...}\hfill~
-
-avec comme \og sens de lecture \fg{} de la gauche vers la droite puis du haut vers le bas (on balaye les \textit{sous-arbres}), avec comme possibilités :
-
-\begin{itemize}
- \item \cmaj{2.5.3} une donnée \Cle{proba} peut être laissée vide ou spécifiée avec des \textsf{macros} ;
- \item une donnée \Cle{position} peut valoir \Cle{above} (au-dessus), \Cle{below} (en-dessous) ou être laissée \Cle{vide} (sur).
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\begin{cautionblock}
-Quelques \Cle{Clés} (communes) pour les deux commandes :
-
-\begin{itemize}
- \item la clé \Cle{Unite} pour préciser l'unité de l'environnement \TikZ{} ; \hfill~défaut \Cle{1cm}
- \item la clé \Cle{EspaceNiveau} pour l'espace (H) entre les étages ; \hfill~défaut \Cle{3.25}
- \item la clé \Cle{EspaceFeuille} pour l'espace (V) entre les feuilles ; \hfill~défaut \Cle{1}
- \item la clé \Cle{Type} pour le format, parmi \Cle{2x2} ou \Cle{2x3} ou \Cle{3x2} ou \Cle{3x3} ; \hfill~défaut \Cle{2x2}
- \item la clé \Cle{Police} pour la police des nœuds ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize}
- \item la clé \Cle{PoliceProbas} pour la police des probas ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}small}
- \item le booléen \Cle{InclineProbas} pour incliner les probas ; \hfill~défaut \Cle{true}
- \item le booléen \Cle{Fleche} pour afficher une flèche sur les branches ; \hfill~défaut \Cle{false}
- \item la clé \Cle{StyleTrait} pour les branches, en langage \TikZ{} ; \hfill~défaut \Cle{vide}
- \item la clé \Cle{EpaisseurTrait} pour l'épaisseur des branches, en langage \TikZ{} ; \hfill~défaut \Cle{semithick}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\def\ArbreDeuxDeux{
- $A$/\num{0.5}/,
- $B$/\num{0.4}/,
- $\overline{B}$/.../,
- $\overline{A}$/.../,
- $B$/.../,
- $\overline{B}$/$\frac{1}{3}$/
-}
-
-\ArbreProbasTikz{\ArbreDeuxDeux}
-
-%des éléménts, en gris, ont été rajoutés pour illustrer certaines options
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{EnvArbreProbasTikz}{$A$/\num{0.5}/,$B$/\num{0.4}/,$\overline{B}$/.../,$\overline{A}$/.../,$B$/.../,$\overline{B}$/$\frac{1}{3}$/}
- \draw[lightgray] (R) node[left,font=\ttfamily\small] {(R)} ;
- \draw[lightgray] (A11) node[below,font=\ttfamily\small] {(A11)} ;
- \draw[lightgray] (A12) node[below,font=\ttfamily\small] {(A12)} ;
- \draw[lightgray] (A21) node[below,font=\ttfamily\small] {(A21)} ;
- \draw[lightgray] (A22) node[below,font=\ttfamily\small] {(A22)} ;
- \draw[lightgray] (A23) node[below,font=\ttfamily\small] {(A23)} ;
- \draw[lightgray] (A24) node[below,font=\ttfamily\small] {(A24)} ;
- \draw[lightgray,<->,>=latex] (0,-4) -- (3.25,-4) node[midway,below,font=\ttfamily\small] {EspaceNiveau} ;
- \draw[lightgray,<->,>=latex] (3.25,-4) -- (6.5,-4) node[midway,below,font=\ttfamily\small] {EspaceNiveau} ;
- \draw[lightgray,<->,>=latex] (7,0) -- (7,-1) node[midway,right,font=\ttfamily\small] {EspaceFeuille} ;
- \draw[lightgray,<->,>=latex] (7,-1) -- (7,-2) node[midway,right,font=\ttfamily\small] {EspaceFeuille} ;
- \draw[lightgray,<->,>=latex] (7,-2) -- (7,-3) node[midway,right,font=\ttfamily\small] {EspaceFeuille} ;
-\end{EnvArbreProbasTikz}
-\end{PresCodeSortiePL}
-
-\begin{noteblock}
-Les nœuds crées par les commandes sont :
-
-\begin{itemize}
- \item \ctex{R} pour la racine ;
- \item \ctex{A1x} pour les nœuds du 1\up{er} niveau (de haut en bas) ;
- \item \ctex{A2x} pour les nœuds du 2\up{d} niveau (de haut en bas).
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\subsection{Exemples complémentaires}
-
-\begin{PresCodeTexPL}{listing only}
-\def\ArbreTroisDeux{
- $A_1$/\num{0.5}/above,
- $B$/\num{0.4}/above,
- $\overline{B}$/.../below,
- $A_2$/.../above,
- $B$/.../above,
- $\overline{B}$/$\frac{1}{3}$/below,
- $A_3$/.../below,
- $B$/.../above,
- $\overline{B}$/$\frac{4}{15}$/below
-}
-
-\begin{EnvArbreProbasTikz}[Type=3x2,Fleche,EspaceNiveau=5,EspaceFeuille=1.25]%
- {\ArbreTroisDeux}
- \draw[CouleurVertForet,->] (A24)--($(A24)+(2.5,0)$) node[right,font=\sffamily] {code tikz rajouté} ;
-\end{EnvArbreProbasTikz}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\begin{EnvArbreProbasTikz}[Type=3x2,Fleche,EspaceNiveau=5,EspaceFeuille=1.25]{$A_1$/\num{0.5}/above,$B$/\num{0.4}/above,$\overline{B}$/.../below,$A_2$/.../above,$B$/.../above,$\overline{B}$/$\frac{1}{3}$/below,$A_3$/.../below,$B$/.../above,$\overline{B}$/$\frac{4}{15}$/below}
- \draw[CouleurVertForet,->] (A24)--($(A24)+(2.5,0)$) node[right,font=\sffamily] {code tikz rajouté} ;
-\end{EnvArbreProbasTikz}
-\end{PresCodeSortiePL}
-
-\begin{PresCodeTexPL}{listing only}
-\def\ArbreDeuxTrois{
- $A$/\num{0.05}/above,
- $B_1$/\num{0.4}/above,$B_2$/\num{0.35}/,$B_3$//below,
- $\overline{A}$/.../below,
- $B_1$/$\frac{2}{15}$/above,$B_2$/.../,$B_3$/$\frac{1}{3}$/below
-}
-\ArbreProbasTikz[Type=2x3,InclineProbas=false,EspaceFeuille=1.15]{\ArbreDeuxTrois}
-
-\def\ArbreTroisTrois{
- $A_1$/\num{0.05}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,
- $A_2$/\num{0.80}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,
- $A_3$/\num{0.15}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/
-}
-
-\ArbreProbasTikz[Type=3x3,StyleTrait={densely dashed},EspaceFeuille=0.7,PoliceProbas=\scriptsize,Police=\small]{\ArbreTroisTrois}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\ArbreProbasTikz[Type=2x3,InclineProbas=false,EspaceFeuille=1.15]{$A$/\num{0.05}/above,$B_1$/\num{0.4}/above,$B_2$/\num{0.35}/,$B_3$//below,$\overline{A}$/.../below,$B_1$/$\frac{2}{15}$/above,$B_2$/.../,$B_3$/$\frac{1}{3}$/below}
-~~
-\ArbreProbasTikz[Type=3x3,StyleTrait={densely dashed},EspaceFeuille=0.7,PoliceProbas=\scriptsize,Police=\small]{$A_1$/\num{0.05}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,$A_2$/\num{0.80}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,$A_3$/\num{0.15}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Petits schémas pour des probabilités continues}\label{schemasprobas}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est de proposer des commandes pour illustrer, sous forme de schémas en \TikZ, des probabilités avec des lois continues (normales et exponentielles).
-
-\smallskip
-
-Ces \og schémas \fg{} peuvent être insérés en tant que graphique explicatif, ou bien en tant que petite illustration rapide !
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\LoiNormaleGraphe[options]<options tikz>{m}{s}{a}{b}
-
-\LoiExpoGraphe[options]<options tikz>{l}{a}{b}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\hfill\LoiNormaleGraphe{100}{20}{80}{120}\hspace{3cm}\LoiExpoGraphe{0.001}{250}{1500}\hfill~
-\end{PresCodeSortiePL}
-
-\begin{cautionblock}
-Les probabilités \textit{illustrables} sont donc des probabilités \textbf{C}umulées ($P(a\leqslant X\leqslant b)$).
-
-\smallskip
-
-On peut utiliser \ctex{*} comme borne ($a$ ou $b$), pour les probabilités du type $P(X\leqslant b)$ et $P(X \geqslant a)$.
-\end{cautionblock}
-
-\subsection{Commandes et options}
-
-\begin{cautionblock}
-Quelques \Cle{Clés} sont disponibles pour ces commandes :
-
-\begin{itemize}
- \item la clé \Cle{CouleurAire} pour l'aire sous la courbe ; \hfill{}défaut \Cle{LightGray}
- \item la clé \Cle{CouleurCourbe} pour la courbe ; \hfill{}défaut \Cle{red}
- \item la clé \Cle{Largeur} qui sera la largeur (en cm) du graphique ; \hfill{}défaut \Cle{2}
- \item la clé \Cle{Hauteur} qui sera la hauteur (en cm) du graphique ; \hfill{}défaut \Cle{1}
- \item un booléen \Cle{AfficheM} qui affiche la moyenne ; \hfill{}défaut \Cle{true}
- \item un booléen \Cle{AfficheCadre} qui affiche un cadre pour délimiter le schéma. \hfill{}défaut \Cle{true}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{noteblock}
-Les commandes sont donc des environnements \TikZ, sans possibilité de \og rajouter \fg{} des éléments. Ces petis \textit{schémas} sont donc vraiment dédiés à \textit{montrer} rapidement une probabilité continue, sans fioriture.
-\end{noteblock}
-
-\begin{PresCodePL}{}
-Avec centrage vertical sur l'axe des abscisses :
-\LoiNormaleGraphe
- [AfficheM=false,CouleurCourbe=blue,CouleurAire=cyan]<baseline=0pt>%
- {1000}{100}{950}{*}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Avec quelques modifications :
-
-\LoiNormaleGraphe[Largeur=4,Hauteur=2]{150}{12.5}{122}{160}
-
-\medskip
-
-Avec centrage vertical :
-\LoiNormaleGraphe[Largeur=5,Hauteur=2.5]<baseline=(current bounding box.center)>{200}{5}{204}{*}
-
-\medskip
-
-Avec centrage vertical sur l'axe des abscisses :
-\LoiExpoGraphe
- [AfficheM=false,CouleurCourbe=blue,CouleurAire=cyan]<baseline=0pt>{0.05}{*}{32}
-
-\medskip
-
-\LoiExpoGraphe[Largeur=4,Hauteur=2]{0.00025}{5000}{*}
-\end{PresCodePL}
-
-\subsection{Remarques et compléments}
-
-\begin{noteblock}
-Pour le moment, seules les lois (continues) exponentielles et normales sont disponibles, peut-être que d'autres lois seront ajoutées, mais il ne me semble pas très pertinent de proposer des schémas similaires pour des lois discrètes, qui ont des \textit{représentations} assez variables\ldots
-\end{noteblock}
-
-\newpage
-
-\section{Nombres aléatoires}\label{entiersaleatoires}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.0.9} L'idée est de proposer des commandes pour générer des nombres aléatoires, pour exploitation ultérieure :
-
-\begin{itemize}
- \item un entier ou un nombre décimal ;
- \item des nombres entiers, avec ou sans répétitions.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{noteblock}
-Pour chacune des commandes, le ou les résultats sont stockés dans une \textsf{macro} dont le nom est choisi par l'utilisateur.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%entier aléatoire entre a et b
-\NbAlea{a}{b}{macro}
-
-%nombre décimal (n chiffres après la virgule) aléatoire entre a et b+1 (exclus)
-\NbAlea[n]{a}{b}{macro}
-
-%création d'un nombre aléatoire sous forme d'une macro
-\VarNbAlea{macro}{calculs}
-
-%liste d'entiers aléatoires
-\TirageAleatoireEntiers[options]{macro}
-\end{PresCodeTexPL}
-
-\begin{PresCodePL}{}
-%nombre aléatoire entre 1 et 50, stocké dans \PremierNbAlea
-Entier entre 1 et 50 : \NbAlea{1}{50}{\PremierNbAlea}\PremierNbAlea \\
-%nombre aléatoire créé à partir du 1er, stocké dans \DeuxiemeNbAlea
-Entier à partir du précédent : \VarNbAlea{\DeuxiemeNbAlea}{\PremierNbAlea+randint(0,10)}\DeuxiemeNbAlea \\
-%nombre aléatoire décimal (au millième) entre 0 et 10+1 (exclus), stocké dans \PremierDecAlea
-Décimal entre 0 et $10,999\ldots$ : \NbAlea[3]{0}{10}{\PremierDecAlea}\PremierDecAlea \\
-%liste de 6 nombres, sans répétitions, entre 1 et 50
-Liste par défaut (6 entre 1 et 50) : \TirageAleatoireEntiers{\PremiereListeAlea}\PremiereListeAlea
-\end{PresCodePL}
-
-\begin{noteblock}
-Les listes créées sont exploitables, \textit{a posteriori}, par le package \ctex{listofitems} par exemple !
-\end{noteblock}
-
-\begin{PresCodePL}{}
-Liste générée : \TirageAleatoireEntiers{\TestListeA}\TestListeA
-
-Liste traitée : \readlist*\LISTEa{\TestListeA}\showitems{\LISTEa}
-\end{PresCodePL}
-
-\pagebreak
-
-\subsection{Clés et options}
-
-\begin{cautionblock}
-Quelques clés sont disponibles pour la commande \ctex{TirageAleatoireEntiers} :
-
-\begin{itemize}
- \item la clé \Cle{ValMin} pour préciser borne inférieure de l'intervalle ;\hfill{}défaut \Cle{1}
- \item la clé \Cle{ValMax} pour préciser borne supérieure de l'intervalle ;\hfill{}défaut \Cle{50}
- \item la clé \Cle{NbVal} qui est le nombre d'entiers à générer ;\hfill{}défaut \Cle{6}
- \item la clé \Cle{Sep} pour spécifier le séparateur d'éléments ;\hfill{}défaut \Cle{,}
- \item la clé \Cle{Tri} parmi \Cle{non/croissant/decroissant} pour trier les valeurs
- ;\hfill{}défaut \Cle{non}
- \item le booléen \Cle{Repetition} pour autoriser la répétition d'éléments.\hfill{}défaut \Cle{false}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-Une liste de 15 valeurs (différentes), entre 10 et 100, stockée dans la macro MaListeA : \\
-Liste : \TirageAleatoireEntiers[ValMin=10,ValMax=100,NbVal=15]{\MaListeA}\MaListeA \\
-
-Une liste de 12 valeurs (différentes), entre 1 et 50, ordre croissant : \\
-Liste : \TirageAleatoireEntiers[ValMin=1,ValMax=50,NbVal=12,Tri=croissant]%
- {\MaListeB}\MaListeB \\
-
-Une liste de 12 valeurs (différentes), entre 1 et 50, ordre décroissant : \\
-Liste : \TirageAleatoireEntiers[ValMin=1,ValMax=50,NbVal=12,Tri=decroissant]%
- {\MaListeC}\MaListeC \\
-
-15 tirages de dé à 6 faces : \\ \TirageAleatoireEntiers[ValMin=1,ValMax=6,NbVal=15,Repetition]{\TestDes}\TestDes
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-Une liste (10) pour le Keno\textcopyright, ordonnée, et séparée par des \texttt{-} :
-
-\TirageAleatoireEntiers[ValMin=1,ValMax=70,NbVal=10,Tri=croissant,Sep={-}]{\ListeKeno}
-$\ListeKeno$
-
-\setsepchar{-}\readlist*\KENO{\ListeKeno}\showitems{\KENO}
-\end{PresCodePL}
-
-\newpage
-
-\section{Combinatoire}\label{combinatoire}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est de proposer une commande pour calculer un arrangement ou une combinaison, en utilisant les capacités de calcul du package \ctex{xint} (\cmaj{2.5.4}).
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\Arrangement(*)[option]{p}{n}
-\Combinaison(*)[option]{p}{n}
-\CalculAnp{p}{n} ou \CalculCnp{p}{n} dans un calcul via \xinteval{...}
-\end{PresCodeTexPL}
-
-\subsection{Utilisation}
-
-\begin{cautionblock}
-Peu de paramétrage pour ces commandes qui permettent de calculer $A_n^p$ et $\binom{n}{p}$ :
-
-\begin{itemize}
- \item les versions étoilées ne formatent pas le résultat grâce à \ctex{\textbackslash num} de \ctex{sinuitx} ;
- \item le booléen \Cle{Notation} pour avoir la notation au début ; \hfill~défaut \Cle{false}
- \item le booléen \Cle{NotationAncien} pour avoir la notation \og ancienne \fg{} des combinaisons au début ;
-
- \hfill~défaut \Cle{false}
- \item le booléen \Cle{Formule} permet de présenter la formule avant le résultat ;
-
- \hfill~défaut \Cle{false}
- \item le premier argument, \textit{obligatoire}, est la valeur de $p$ ;
- \item le second argument, \textit{obligatoire}, est la valeur de $n$.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-On a $A_{20}^3=\Arrangement*{3}{20}$ en non formaté,
-et $\Arrangement[Notation]{3}{20}$ en formaté avec la notation au début.
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-On a $\displaystyle\binom{20}{3}=\Combinaison*{3}{20}$ en non formaté,~
-et $\displaystyle\Combinaison[Notation]{3}{20}$ en formaté avec la notation au début.\\
-Et $\dbinom{20}{3}+\dbinom{20}{4} = \num{\xinteval{\CalculCnp{3}{20}+\CalculCnp{4}{20}}}$.
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-On a $\displaystyle\Arrangement[Notation,Formule]{3}{20}$.
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-On a $\displaystyle\Combinaison[NotationAncien,Formule]{3}{20}$. %ancienne notation FR
-\end{PresCodePL}
-
-\newpage
-
-\section{Fonction de répartition}\label{fctrepart}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.7.0} L'idée est de proposer une commande (en accord avec les commandes de repérage, page \pageref{reperagetikz}) pour tracer la représentation graphique d'une fonction de répartition discrète.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\begin{tikzpicture}[paramètres de la fenêtre]
- %commandes pour al fenêtre graphique
- \FonctionRepartTikz[clés]{liste des probas,borneinf,bornesup}
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\subsection{Utilisation}
-
-\begin{cautionblock}
-Le premier argument, optionnel et entre \ctex{[...]} propose les clés suivantes :
-
-\begin{itemize}
- \item la clé \Cle{Couleur} pour la couleur du tracé ; \hfill~défaut \Cle{red}
- \item la clé \Cle{Epaisseur} pour gérer l'épaisseur des tracés (en \textit{raccourci} \TikZ) ; \hfill~défaut \Cle{thick}
- \item le booléen \Cle{Pointilles} pour afficher les pointillés horizontaux ; \hfill~défaut \Cle{true}
- \item la clé \Cle{Extremite} parmi \Cle{crochet/point} pour gérer les extrémités des segments.
-
- \hfill~défaut \Cle{crochet}
-\end{itemize}
-
-L'argument obligatoire et entre \ctex{\{...\}} permet de spécifier la liste des \texttt{probas-intervalles} :
-
-\begin{itemize}
- \item avec \ctex{*} pour remplacer $\infty$ ;
- \item sous la forme \ctex{proba,borneinf,bornesup / proba,borneinf,bornesup / ...}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{importantblock}
-Le code \textit{remplace} \ctex{*} par les valeurs stockées dans \ctex{\textbackslash xmin} ou \ctex{\textbackslash xmax}, d'où l'intérêt d'utiliser la commande en \textit{partenariat} des commandes de repérage de \ctex{Proflycee}.
-\end{importantblock}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}[y=4cm,xmin=-2,xmax=10,ymin=0,ymax=1.1, xgrille=1,xgrilles=0.5,ygrille=0.5,ygrilles=0.125]
- \GrilleTikz %grille
- \AxesTikz %axes
- \AxexTikz{0,2,4,6,8} %graduations de (Ox)
- \AxeyTikz[AffGrad=false]{0,0.25,...,1} %graduations de (Oy) sans valeurs
- \AxeyTikz[Frac]{1/3,1/2,2/3,1} %valeurs des probas, en fraction
- %les probas étant données en fraction, on protège par des {...}
- \FonctionRepartTikz{0,*,0 / {1/3},0,2 / {1/2},2,4 / {2/3},4,6 / 1,6,*}
-\end{tikzpicture}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\begin{tikzpicture}[y=4cm,xmin=-1,xmax=13,ymin=0,ymax=1.1, xgrille=1,xgrilles=0.5,ygrille=0.2,ygrilles=0.125]
- \GrilleTikz[Affs=false]
- \AxesTikz
- \AxeyTikz{0,0.25,...,1}
- \AxexTikz{0,1,...,12}
- \FonctionRepartTikz[Extremite=point,Couleur=blue,Pointilles=false]%
- {0,*,2 / {1/36},2,3 / {3/36},3,4 / {6/36},4,5 / {10/36},5,6 / {15/36},6,7 / {21/36},7,8 / {26/36},8,9 / {30/36},9,10 / {33/36},10,11 / {35/36},11,12 / 1,12,*}
-\end{tikzpicture}
-\end{PresCodePL}
-\newpage
-
\phantom{t}\par\vfill\par
\begin{PART}
\begin{center}
@@ -6737,596 +469,7 @@ Le code \textit{remplace} \ctex{*} par les valeurs stockées dans \ctex{\textbac
\newpage
-\part{Outils pour l'arithmétique}
-
-\section{Conversions binaire/hexadécimal/décimal}\label{conversions}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est de \textit{compléter} les possibilités offertes par le package \ctex{xintbinhex}, en mettant en forme quelques conversions :
-
-\begin{itemize}
- \item décimal en binaire avec blocs de 4 chiffres en sortie ;
- \item hexadécimal en binaire avec blocs de 4 chiffres en sortie ;
- \item conversion binaire ou hexadécimal en décimal avec écriture polynomiale.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{noteblock}
-Le package \ctex{xintbinhex} est la base de ces macros, puisqu'il permet de faire des conversions directes !
-
-\smallskip
-
-Les macros présentées ici ne font que les intégrer dans un environnement adapté à une correction ou une présentation !
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\xintDecToHex{100}
-\xintDecToBin{51}
-\xintHexToDec{A4C}
-\xintBinToDec{110011}
-\xintBinToHex{11111111}
-\xintHexToBin{ACDC}
-\xintCHexToBin{3F}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\xintDecToHex{100}
-
-\xintDecToBin{51}
-
-\xintHexToDec{A4C}
-
-\xintBinToDec{110011}
-
-\xintBinToHex{11111111}
-
-\xintHexToBin{ACDC}
-
-\xintCHexToBin{3F}
-\end{PresCodeSortiePL}
-
-\subsection{Conversion décimal vers binaire}
-
-\begin{PresCodeTexPL}{listing only}
-\ConversionDecBin(*)[clés]{nombre}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Concernant la commande en elle même, peu de paramétrage :
-
-\begin{itemize}
- \item la version \textit{étoilée} qui permet de ne pas afficher de zéros avant pour \og compléter \fg{} ;
- \item le booléen \Cle{AffBase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
- \item l'argument, \textit{obligatoire}, est le nombre entier à convertir.
-\end{itemize}
-
-Le formatage est géré par \ctex{sinuitx}, le mieux est donc de positionner la commande dans un environnement mathématique.
-
-\smallskip
-
-Les nombres écrits en binaire sont, par défaut, présentés en bloc(s) de 4 chiffres.
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-% Conversion avec affichage de la base et par bloc de 4
-$\ConversionDecBin{415}$
-% Conversion avec affichage de la base et sans forcément des blocs de 4
-$\ConversionDecBin*{415}$
-% Conversion sans affichage de la base et par bloc de 4
-$\ConversionDecBin[AffBase=false]{415}$
-% Conversion sans affichage de la base et sans forcément des blocs de 4
-$\ConversionDecBin*[AffBase=false]{415}$
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-$\ConversionDecBin{415}$
-
-\smallskip
-
-$\ConversionDecBin*{415}$
-
-\smallskip
-
-$\ConversionDecBin[AffBase=false]{415}$
-
-\smallskip
-
-$\ConversionDecBin*[AffBase=false]{415}$
-\end{PresCodeSortiePL}
-
-\subsection{Conversion binaire vers hexadécimal}
-
-\begin{noteblock}
-L'idée est ici de présenter la conversion, grâce à la conversion \og directe \fg{} par blocs de 4 chiffres :
-
-\begin{itemize}
- \item la macro rajoute éventuellement les zéros pour compléter ;
- \item elle découpe par blocs de 4 chiffres binaires ;
- \item elle présente la conversion de chacun des blocs de 4 chiffres binaires ;
- \item elle affiche la conversion en binaire.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\ConversionBinHex[clés]{nombre}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
- \item le booléen \Cle{AffBase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
- \item le booléen \Cle{Details} qui permet d'afficher ou le détail par bloc de 4. \hfill{}défaut \Cle{true}
- %\item la clé \Cle{trait} qui permet de modifier l'épaisseur du crochet. \hfill{}défaut \Cle{0.5pt}
-\end{itemize}
-
-Le formatage est géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique.
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%conversion avec détails et affichage de la base
-$\ConversionBinHex{110011111}$
-%conversion sans détails et affichage de la base
-$\ConversionBinHex[Details=false]{110011111}$
-%conversion sans détails et sans affichage de la base
-$\ConversionBinHex[AffBase=false,Details=false]{110011111}$
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-$\ConversionBinHex{110011111}$
-
-$\ConversionBinHex[Details=false]{110011111}$
-
-$\ConversionBinHex[AffBase=false,Details=false]{110011111}$
-\end{PresCodeSortiePL}
-
-\pagebreak
-
-\subsection{Conversion hexadécimal vers binaire}\label{convhexbin}
-
-\begin{noteblock}
-\cmaj{2.7.8} L'idée est ici de présenter la conversion, grâce à la conversion \og directe \fg{} par blocs de 4 chiffres :
-
-\begin{itemize}
- \item la macro découpe chaque caractère hexa en bloc de 4 chiffres binaires ;
- \item elle affiche la conversion en binaire.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\ConversionHexBin[clés]{nombre}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
- \item le booléen \Cle{AffBase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
- \item le booléen \Cle{Details} qui permet d'afficher ou le détail par bloc de 4. \hfill{}défaut \Cle{true}
- %\item la clé \Cle{trait} qui permet de modifier l'épaisseur du crochet. \hfill{}défaut \Cle{0.5pt}
-\end{itemize}
-
-La commande est à insérer dans un environnement mathématique.
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%conversion avec détails et affichage de la base
-$\ConversionHexBin{ACDC}$
-%conversion sans détails et affichage de la base
-$\ConversionHexBin[Details=false]{ACDC}$
-%conversion sans détails et sans affichage de la base
-$\ConversionHexBin[AffBase=false,Details=false]{ACDC}$
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-$\ConversionHexBin{ACDC}$
-
-$\ConversionHexBin[Details=false]{ACDC}$
-
-$\ConversionHexBin[AffBase=false,Details=false]{ACDC}$
-\end{PresCodeSortiePL}
-
-\subsection{Conversion binaire ou hexadécimal en décimal}
-
-\begin{noteblock}
-L'idée est ici de présenter la conversion, grâce à l'écriture polynômiale :
-
-\begin{itemize}
- \item écrit la somme des puissances ;
- \item convertir si besoin les \textit{chiffres} hexadécimal ;
- \item peut ne pas afficher les monômes de coefficient 0.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\ConversionVersDec[clés]{nombre}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
- \item la clé \Cle{BaseDep} qui est la base de départ (2 ou 16 !) ; \hfill{}défaut \Cle{2}
- \item le booléen \Cle{AffBase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
- \item le booléen \Cle{Details} qui permet d'afficher ou le détail par bloc de 4 ; \hfill{}défaut \Cle{true}
- \item le booléen \Cle{Zeros} qui affiche les chiffres 0 dans la somme. \hfill{}défaut \Cle{true}
-\end{itemize}
-
-Le formatage est toujours géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique.
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%conversion 16->10 avec détails et affichage de la base et zéros
-$\ConversionVersDec[BaseDep=16]{19F}$
-%conversion 2->10 avec détails et affichage de la base et zéros
-$\ConversionVersDec{110011}$
-%conversion 2->10 avec détails et affichage de la base et sans zéros
-$\ConversionVersDec[Zeros=false]{110011}$
-%conversion 16->10 sans détails et affichage de la base et avec zéros
-$\ConversionVersDec[BaseDep=16,Details=false]{AC0DC}$
-%conversion 16->10 avec détails et sans affichage de la base et sans zéros
-$\ConversionVersDec[Eeros=false,Basedep=16]{AC0DC}$
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-$\ConversionVersDec[BaseDep=16]{19F}$
-
-$\ConversionVersDec{110011}$
-
-$\ConversionVersDec[Zeros=false]{110011}$
-
-$\ConversionVersDec[BaseDep=16,Details=false]{AC0DC}$
-
-$\ConversionVersDec[Zeros=false,BaseDep=16]{AC0DC}$
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Conversion \og présentée \fg{} d'un nombre en base décimale}\label{convrestes}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est de proposer une \og présentation \fg{} par divisions euclidiennes pour la conversion d'un entier donné en base 10 dans une base quelconque.
-
-\smallskip
-
-Les commandes de la section précédente donne \textit{juste} les résultats, dans cette section il y a en plus la présentation de la conversion.
-
-\smallskip
-
-La commande utilise -- par défaut -- du code \TikZ{} en mode \ctex{overlay}, donc on pourra déclarer -- si ce n'est pas fait -- dans le préambule, la commande qui suit.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-...
-\tikzstyle{every picture}+=[remember picture]
-...
-\end{PresCodeTexPL}
-
-\subsection{Code et clés}
-
-\begin{PresCodePL}{}
-%conversion basique
-\ConversionDepuisBaseDix{78}{2}
-\end{PresCodePL}
-
-\begin{noteblock}
-La \og tableau \fg, qui est géré par \ctex{array} est inséré dans un \ctex{ensuremath}, donc les \ctex{\$...\$} ne sont pas utiles.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-\ConversionDepuisBaseDix[options]{nombre en base 10}{base d'arrivée}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Quelques options pour cette commande :
-
-\begin{itemize}
- \item la clé \Cle{Couleur} pour la couleur du \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{red}
- \item la clé \Cle{DecalH} pour gérer le décalage H du \og rectangle \fg{}, qui peut être donné soit sous la forme \Cle{Esp} ou soit sous la forme \Cle{espgauche/espdroite}; \hfill{}défaut \Cle{2pt}
- \item la clé \Cle{DecalV} pour le décalage vertical du \og rectangle \fg{} ; \hfill{}défaut \Cle{3pt}
- \item la clé \Cle{Noeud} pour le préfixe du nœud du premier et du dernier reste (pour utilisation en \TikZ) ;
-
- \hfill{}défaut \Cle{EEE}
- \item le booléen \Cle{Rect} pour afficher ou non le \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{true}
- \item le booléen \Cle{CouleurRes} pour afficher ou non la conversion en couleur (identique au rectangle).
-
- \hfill{}défaut \Cle{false}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-%conversion avec changement de couleur
-\ConversionDepuisBaseDix[Couleur=blue]{45}{2}
-
-%conversion sans le rectangle
-Par divisions euclidiennes successives, \ConversionDepuisBaseDix[Rect=false]{54}{3}.
-
-%conversion avec gestion du decalh pour le placement précis du rectangle
-\ConversionDepuisBaseDix[Couleur=brown,DecalH=6pt/2pt]{1012}{16}
-
-%conversion avec noeud personnalisé et réutilisation
-\ConversionDepuisBaseDix[Couleur=CouleurVertForet,CouleurRes,Noeud=TEST]{100}{9}.
-\begin{tikzpicture}
- \draw[overlay,CouleurVertForet,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ;
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\ConversionDepuisBaseDix[Couleur=blue]{45}{2}
-
-\medskip
-
-Par divisions euclidiennes successives, \ConversionDepuisBaseDix[Rect=false]{54}{3}.
-
-\medskip
-
-\ConversionDepuisBaseDix[Couleur=brown,DecalH=6pt/2pt]{1012}{16}
-
-\medskip
-
-On obtient donc \ConversionDepuisBaseDix[Couleur=CouleurVertForet,CouleurRes,Noeud=TEST]{100}{9}.
-\begin{tikzpicture}
- \draw[overlay,CouleurVertForet,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ;
-\end{tikzpicture}
-
-\vspace{1.5cm}
-
-~
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Algorithme d'Euclide pour le PGCD}\label{prespgcd}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est de proposer une \og présentation \fg{} de l'algorithme d'Euclide pour le calcul du PGCD de deux entiers.
-
-Le package \ctex{xintgcd} permet déjà de le faire, il s'agit ici de travailler sur la \textit{mise en forme}.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\PresentationPGCD[options]{a}{b}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-\tikzstyle{every picture}+=[remember picture]
-...
-\PresentationPGCD{150}{27}
-\end{PresCodeTexPL}
-
-\begin{PresCodePL}{}
-\PresentationPGCD{150}{27}
-\end{PresCodePL}
-
-\begin{warningblock}
-La mise en valeur du dernier reste non nul est géré par du code \TikZ, en mode \ctex{overlay}, donc il faut bien penser à déclarer dans le préambule : \ctex{\textbackslash{}tikzstyle\{every picture\}+=[remember picture]}
-\end{warningblock}
-
-\subsection{Options et clés}
-
-\begin{cautionblock}
-Quelques options disponibles pour cette commande :
-
-\begin{itemize}
- \item la clé \Cle{Couleur} qui correspond à la couleur pour la mise en valeur ; \hfill{}défaut \Cle{red}
- \item la clé \Cle{DecalRect} qui correspond à l'écartement du rectangle de mise en valeur ; \hfill{}défaut \Cle{2pt}
- \item le booléen \Cle{Rectangle} qui gère l'affichage ou non du rectangle de mise ne valeur ;
-
- \hfill{}défaut \Cle{true}
- \item la clé \Cle{Noeud} qui gère le préfixe du nom du nœud \TikZ{} du rectangle (pour exploitation ultérieure) ;
-
- \hfill{}défaut \Cle{FFF}
- \item le booléen \Cle{CouleurResultat} pour mettre ou non en couleur de PGCD ; \hfill{}défaut \Cle{false}
- \item le booléen \Cle{AfficheConclusion} pour afficher ou non la conclusion ; \hfill{}défaut \Cle{true}
- \item le booléen \Cle{AfficheDelimiteurs} pour afficher ou non les délimiteurs (accolade gauche et trait droit).
-
- \hfill{}défaut \Cle{true}
-\end{itemize}
-
-\medskip
-
-Le rectangle de mise en valeur est donc un nœud \TikZ{} qui sera nommé, par défaut \ctex{FFF1}.
-
-\medskip
-
-La présentation est dans un environnement \ctex{ensuremath} donc les \ctex{\$...\$} ne sont pas indispensables.
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-\PresentationPGCD[CouleurResultat]{150}{27}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\PresentationPGCD[CouleurResultat,Couleur=CouleurVertForet]{1250}{450}.
-
-\PresentationPGCD[CouleurResultat,Couleur=blue]{13500}{2500}.
-
-\PresentationPGCD[Rectangle=false]{420}{540}. \\
-
-D'après l'algorithme d'Euclide, on a $\left| \PresentationPGCD[Couleur=lime,AfficheConclusion=false, AfficheDelimiteurs=false]%
- {123456789}{9876} \right.$
-\begin{tikzpicture}
- \draw[overlay,lime,thick,<-] (FFF1.east) to[bend right] ++ (1cm,0.75cm) node[right] {dernier reste non nul} ;
-\end{tikzpicture}
-\end{PresCodePL}
-
-\subsection{Compléments}
-
-\begin{noteblock}
-La présentation des divisions euclidiennes est gérée par un tableau du type \ctex{array}, avec alignement vertical de symboles \ctex{=} et \ctex{+}.
-
-Par défaut, les délimiteurs choisis sont donc l'accolade gauche et le trait droit, mais la clé booléenne \Cle{AfficheDelimiteurs=false} permet de choisir des délimiteurs différents.
-\end{noteblock}
-
-\begin{PresCodePL}{}
-$\left[ \PresentationPGCD[AfficheConclusion=false,AfficheDelimiteurs=false]{1234}{5} \right]$
-\end{PresCodePL}
-
-\newpage
-
-\section{Résolution d'une équation diophantienne}\label{eqdioph}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est de proposer une résolution d'équation diophantienne du type $ax+by=c$ avec $(a;b;c) \in \mathbb{Z}^3$.
-
-\smallskip
-
-Le \textit{code} se charge de tester les différentes conditions d'existence, et d'adapter la rédaction (fixée et non modifiable\ldots) aux différentes situations :
-
-\begin{itemize}
- \item cas où $\text{PGCD}(a;b)=1$ ;\hfill~existence de solutions
- \item cas où $\text{PGCD}(a;b) \neq 1$ et $\text{PGCD}(a;b) \mid c$;\hfill~existence de solutions
- \item cas où $\text{PGCD}(a;b) \neq 1$ et $\text{PGCD}(a;b) \not\mid c$.\hfill~pas de solution
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{warningblock}
-Logiquement le \textit{code} se charge de \textit{parenthéser} de manière automatique pour les nombres négatifs, mais il se peut que certains cas particuliers puissent donner des résultats \og non esthétiques \fg{}\ldots
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-\EquationDiophantienne[Clés]{equation}
-\end{PresCodeTexPL}
-
-\subsection{Options et clés}
-
-\begin{cautionblock}
-Concernant les Clés disponibles pour cette commande, à donner entre \ctex{[...]} :
-
-\begin{itemize}
- \item la clé \Cle{Lettre} pour spécifier le \textit{nom} de l'équation ; \hfill{}défaut \Cle{E}
- \item la clé \Cle{Inconnues} qui paramètre les noms des inconnues, sous la forme \Cle{x/y} ; \hfill{}défaut \Cle{x/y}
- \item la clé \Cle{Entier} qui gère le nom de l'entier dans la solution ; \hfill{}défaut \Cle{k}
- \item le booléen \Cle{Cadres} pour mettre en valeur les solutions ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{PresPGCD} présenter le calcul du PGCD de $|a|$ et de $|b|$.\hfill{}défaut \Cle{true}
-\end{itemize}
-
-L'argument obligatoire, et entre \ctex{\{...\}} est quant à lui l'équation, en langage \og naturel \fg{} du type \ctex{ax+by=c} (le \textit{code} se charge d'extraire les coefficients, donc pas besoin des signes *).
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-\EquationDiophantienne{48x+18y=3}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationDiophantienne[PresPGCD=false]{48x+18y=-5}
-\end{PresCodePL}
-
-\pagebreak
-
-\begin{PresCodePL}{}
-\EquationDiophantienne{3x+4y=1}
-\end{PresCodePL}
-
-\pagebreak
-
-\begin{PresCodePL}{}
-\EquationDiophantienne[Cadres,Inconnues=u/v,Entier=l]{48u+18v=12}
-\end{PresCodePL}
-
-\pagebreak
-
-\begin{PresCodePL}{}
-\EquationDiophantienne{47x-18y=1}
-\end{PresCodePL}
-
-\newpage
-
-\section{Diviseurs}\label{listediv}
-
-\subsection{Idées}
-
-\begin{tipblock}
-L'idée est de proposer des commandes pour travailler sur les diviseurs d'un entier :
-
-\begin{itemize}
- \item afficher la liste des diviseurs sous forme d'un ensemble ordonné ;
- \item créer un arbre pour retrouver les diviseurs par la décomposition en facteurs premiers.
-\end{itemize}
-
-Le code se charge de déterminer les diviseurs et de mettre en forme l'arbre.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\ListeDiviseurs(*)[Clé]{nombre}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-\ArbreDiviseurs[Clés]{nombre}
-\end{PresCodeTexPL}
-
-\subsection{Options et clés}
-
-\begin{cautionblock}
-En ce qui concerne la commande pour la liste des diviseurs :
-
-\begin{itemize}
- \item la version \textit{étoilée} permet d'afficher le nom de l'ensemble via \ctex{\textbackslash mathscr}, \ctex{\textbackslash mathcal} sinon;
- \item le booléen \Cle{AffNom} permet d'afficher le nom de l'ensemble ; \hfill{}défaut \Cle{true}
- \item l'argument obligatoire, et entre \ctex{\{...\}}, est quant lui le nombre, y compris en langage \ctex{xint}.
-\end{itemize}
-
-À noter que la commande est incluse dans un bloc \ctex{\textbackslash ensuremath}, donc les \ctex{$...$} ne sont pas nécessaires.
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-%sortie par défaut
-\ListeDiviseurs{150}
-
-%sortie avec \mathscr (si chargé)
-\ListeDiviseurs*{300}
-
-%sortie sans libellé
-\ListeDiviseurs[AffNom=false]{60}
-\end{PresCodePL}
-
-\begin{cautionblock}
-En ce qui concerne la commande pour l'arbre (créé en \TikZ) permettant d'obtenir la liste des diviseurs (je remercie Christophe Poulain pour un \textit{bout de code} que j'ai adapté et pour son aide précieuse) :
-
-\begin{itemize}
- \item les clés disponible sont :
- \begin{itemize}
- \item la clé \Cle{EspaceNiveau} qui est l'espace horizontal (en cm) entre les étages ; \hfill{}défaut \Cle{2.25}
- \item la clé \Cle{EspaceFeuille} qui est l'espace vertical entre les feuilles ; \hfill{}défaut \Cle{0.66}
- \item le booléen \Cle{Details} pour afficher les calculs des diviseurs ; \hfill{}défaut \Cle{true}
- \item la clé \Cle{CouleurDetails} pour la couleur des détails ; \hfill{}défaut \Cle{red}
- \item la clé \Cle{Echelle} pour spécifier une échelle globale (y compris le texte) de la figure ;
-
- \hfill{}défaut \Cle{1}
- \item le booléen \Cle{Fleches} pour afficher une flèche sur les branches.\hfill{}défaut \Cle{true}
- \end{itemize}
- \item l'argument obligatoire, et entre \ctex{\{...\}}, est quant lui le nombre, y compris en langage \ctex{xint}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-%sortie par défaut
-\ArbreDiviseurs{60}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-%sortie personnalisée
-\ArbreDiviseurs[EspaceNiveau=4,EspaceFeuille=1,Details=false]{60}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\ArbreDiviseurs[EspaceNiveau=2,Echelle=0.75,CouleurDetails=teal,Fleches=false]{2^2*3*5*7*11}
-\end{PresCodePL}
+\input{ProfLycee-doc-arithm.tex}
\newpage
@@ -7340,423 +483,7 @@ En ce qui concerne la commande pour l'arbre (créé en \TikZ) permettant d'obten
\newpage
-\part{Écritures, simplifications}
-
-\section{Simplification sous forme d'une fractions}\label{convfrac}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est d'obtenir une commande pour \textit{simplifier} un calcul sous forme de fraction irréductible.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\ConversionFraction(*)[option de formatage]{calcul}
-\end{PresCodeTexPL}
-
-\subsection{Commande et options}
-
-\begin{cautionblock}
-Quelques explications sur cette commande :
-
-\begin{itemize}
- \item \cmaj{2.5.1} la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} sur le numérateur ;
- \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
- \begin{itemize}
- \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
- \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
- \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
- \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
- \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
- \end{itemize}
- \item le second argument, \textit{obligatoire}, est quant à lui, le calcul en syntaxe \textsf{xint}.
-\end{itemize}
-
-À noter que la macro est dans un bloc \ctex{ensuremath} donc les \ctex{\$...\$} ne sont pas nécessaires.
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-\ConversionFraction{-10+1/3*(-5/16)} %sortie par défaut
-\ConversionFraction*{-10+1/3*(-5/16)} %sortie fraction avec - sur numérateur
-\ConversionFraction[d]{-10+1/3*(-5/16)} %sortie en displaystyle
-\ConversionFraction[n]{-10+1/3*(-5/16)} %sortie en nicefrac
-\ConversionFraction[dec=4]{-10+1/3*(-5/16)} %sortie en décimal arrondi à 0,0001
-\ConversionFraction{2+91/7} %entier formaté
-\ConversionFraction{111/2145}
-\ConversionFraction{111/3}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\ConversionFraction{-10+1/3*(-5/16)}
-
-\smallskip
-
-\ConversionFraction*{-10+1/3*(-5/16)}
-
-\smallskip
-
-\ConversionFraction[d]{-10+1/3*(-5/16)}
-
-\smallskip
-
-\ConversionFraction[n]{-10+1/3*(-5/16)}
-
-\smallskip
-
-\ConversionFraction[dec=4]{-10+1/3*(-5/16)}
-
-\smallskip
-
-\ConversionFraction{2+91/7}
-
-\smallskip
-
-\ConversionFraction{111/2145}
-
-\smallskip
-
-\ConversionFraction{111/3}
-\end{PresCodeSortiePL}
-
-\begin{PresCodePL}{}
-$\frac{111}{2145}=\ConversionFraction{111/2145}$ \\
-
-$\frac{3}{15}=\ConversionFraction[]{3/15}$ \\
-
-$\tfrac{3}{15}=\ConversionFraction[t]{3/15}$ \\
-
-$\dfrac{3}{15}=\ConversionFraction[d]{3/15}$ \\
-
-$\dfrac{0,42}{0,015}=\ConversionFraction[d]{0.42/0.015}$ \\
-
-$\dfrac{0,41}{0,015}=\ConversionFraction[d]{0.41/0.015}$ \\
-
-$\dfrac{1}{7}-\dfrac{3}{8}=\ConversionFraction[d]{1/7-3/8}$ \\
-
-$\ConversionFraction[d]{1+1/2}$ \\
-
-$\ConversionFraction{0.1/0.7+30/80}$
-\end{PresCodePL}
-
-\begin{noteblock}
-A priori le package \ctex{xint} permet de s'en sortir pour des calculs \og simples \fg, je ne garantis pas que tout calcul ou toute division donne un résultat \textit{satisfaisant} !
-\end{noteblock}
-
-\newpage
-
-\section{Écriture d'un trinôme, trinôme aléatoire}\label{trinome}
-
-\subsection{Idée}
-
-\begin{tipblock}
-L'idée est de proposer une commande pour écrire, sous forme développée réduite, un trinôme en fonction de ses coefficients $a$, $b$ et $c$ (avec $a\neq0$), avec la gestion des coefficients nuls ou égaux à $\pm1$.
-
-\smallskip
-
-En combinant avec le package \ctex{xfp} et fonction de générateur d'entiers aléatoires, on peut de ce fait proposer une commande pour générer aléatoirement des trinômes à coefficients entiers (pour des fiches d'exercices par exemple).
-
-\smallskip
-
-L'affichage des monômes est géré par le package \ctex{siunitx} et le tout est dans un environnement \ctex{ensuremath}.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\EcritureTrinome[options]{a}{b}{c}
-\end{PresCodeTexPL}
-
-\begin{PresCodePL}{}
-\EcritureTrinome{1}{7}{0}\\
-\EcritureTrinome{1.5}{7.3}{2.56}\\
-\EcritureTrinome{-1}{0}{12}\\
-\EcritureTrinome{-1}{-5}{0}
-\end{PresCodePL}
-
-\subsection{Clés et options}
-
-\begin{cautionblock}
-Quelques clés et options sont disponibles :
-
-\begin{itemize}
- \item la clé booléenne \Cle{Alea} pour autoriser les coefficients aléatoires ;\hfill{}défaut \Cle{false}
- \item la clé booléenne \Cle{Anegatif} pour autoriser $a$ à être négatif.\hfill{}défaut \Cle{true}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{noteblock}
-La clé \Cle{Alea} va modifier la manière de saisir les coefficients, il suffira dans ce cas de préciser les bornes, sous la forme \ctex{valmin,valmax}, de chacun des coefficients. C'est ensuite le package \ctex{xfp} qui va se charger de générer les coefficients.
-\end{noteblock}
-
-\begin{PresCodePL}{}
-Avec $a$ entre 1 et 5 (et signe aléatoire) puis $b$ entre $-2$ et 7 puis $c$ entre $-10$ et 20 : \\
-$f(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\
-$g(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\
-$h(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\
-Avec $a$ entre 1 et 10 (forcément positif) puis $b$ entre $-2$ et 2 puis $c$ entre 0 et 4 : \\
-\EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}\\
-\EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}\\
-\EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}
-\end{PresCodePL}
-
-\newpage
-
-\section{Simplification de racines}\label{simplracine}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.1.0} L'idée est de proposer une commande pour simplifier \textit{automatiquement} une racine carrée, sous la forme $\frac{a\sqrt{b}}{c}$ avec $\frac{a}{c}$ irréductible et $b$ le \frquote{plus petit possible}.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\SimplificationRacine{expression ou calcul}
-\end{PresCodeTexPL}
-
-\begin{PresCodePL}{}
-\SimplificationRacine{48} \\ \SimplificationRacine{100/34}\\
-\SimplificationRacine{99999} \\ \SimplificationRacine{1500*0.31*(1-0.31)}\\
-\end{PresCodePL}
-
-\begin{noteblock}
-C'est -- comme souvent -- le package \ctex{xint} qui s'occupe en interne des calculs, et qui devrait donner des résultats satisfaisants dans la majorité des cas (attention aux \textit{grands nombres}\ldots)
-
-\smallskip
-
-La commande ne fait pas office de \textit{calculatrice}, elle ne permet \textit{que} de simplifier \textit{une} racine carrée (donc transformer si besoin !).
-\end{noteblock}
-
-\subsection{Exemples}
-
-\begin{PresCodePL}{}
-%Simplification d'un module de complexe
-$\left| 4+6\text{i}\right| = \sqrt{4^2+6^2} = \sqrt{\xinteval{4**2+6**2}}=\SimplificationRacine{4**2+6**2}$
-
-%Simplification n°1
-$\frac{1}{\sqrt{6}}=\left(\sqrt{\frac{1}{6}}\right)=\SimplificationRacine{1/6}$
-
-%Simplification n°2
-$\frac{42}{\sqrt{5}}=\left(\sqrt{\frac{42^2}{5}}\right)=\SimplificationRacine{(42*42)/5}$
-
-%Écart-type d'une loi binomiale
-$\sqrt{\num{150}\times\num{0.35}\times(1-\num{0.35})} = \displaystyle\SimplificationRacine{150*0.35*(1-0.35)}$
-\end{PresCodePL}
-
-\newpage
-
-\section{Mesure principale d'un angle}\label{mesureprincipale}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.1.2} L'idée est de proposer (sur une suggestion de Marylyne Vignal) une commande pour déterminer la mesure principale d'un angle en radian.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\MesurePrincipale[booléens]{angle} %dans un mode mathématique
-\end{PresCodeTexPL}
-
-\begin{noteblock}
-La commande est à insérer dans un environnement mathématique, via \ctex{\$...\$} ou \ctex{\textbackslash[...\textbackslash]}.
-
-L'angle est donné sous forme \textit{explicite} avec la chaîne \ctex{pi}.
-\end{noteblock}
-
-\subsection{Exemples}
-
-\begin{cautionblock}
-Pour cette commande :
-
-\begin{itemize}
- \item le booléen \Cle{d} permet de forcer l'affichage en \ctex{displaystyle} ; \hfill{}défaut \Cle{false}
- \item le booléen \Cle{Crochets} permet d'afficher le \textit{modulo} entre crochets (sinon parenthèses) ;
-
- \hfill{}défaut \Cle{false}
- \item \cmaj{2.6.0} le booléen \Cle{Brut} pour afficher uniquement la mesure principale ; \hfill{}défaut \Cle{false}
- \item l'argument \textit{obligatoire} est en écriture \textit{en ligne}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{listing only}
-$\MesurePrincipale[d]{54pi/7}$
-$\MesurePrincipale[d]{-128pi/15}$
-$\MesurePrincipale{3pi/2}$
-$\MesurePrincipale[Crochets]{5pi/2}$
-$\MesurePrincipale{-13pi}$
-$\MesurePrincipale{28pi}$
-$\MesurePrincipale[d]{14pi/4}$
-$\MesurePrincipale[Crochets]{14pi/7}$
-$\dfrac{121\pi}{12} = \MesurePrincipale[Brut]{121pi/12}$ à $2\pi$ près
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-$\MesurePrincipale[d]{54pi/7}$
-
-\medskip
-
-$\MesurePrincipale{-128pi/15}$
-
-\medskip
-
-$\MesurePrincipale{3pi/2}$
-
-\medskip
-
-$\MesurePrincipale[Crochets]{5pi/2}$
-
-\medskip
-
-$\MesurePrincipale{-13pi}$
-
-\medskip
-
-$\MesurePrincipale{28pi}$
-
-\medskip
-
-$\MesurePrincipale[d]{14pi/4}$
-
-\medskip
-
-$\MesurePrincipale[Crochets]{14pi/7}$
-
-\medskip
-
-$\dfrac{121\pi}{12} = \MesurePrincipale[d,Brut]{121pi/12}$ à $2\pi$ près
-\end{PresCodeSortiePL}
-
-\pagebreak
-
-\section{Lignes trigonométriques}\label{lignestrigo}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.6.0} L'idée est de proposer pour déterminer les lignes trigonométriques (cos, sin et tan) d'angles classiques, formés des \og $\pi$ \fg{} et \og $\pi$ sur 2 ; 3 ; 4 ; 5 ; 6 ; 8 ; 10 ; 12 \fg{}.
-
-\smallskip
-
-La commande détermine -- et affiche si demandée la réduction -- et la valeur exacte de la ligne trigonométrique demandée.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-\LigneTrigo(*)[booléens]{cos/sin/tan}(angle)
-\end{PresCodeTexPL}
-
-\subsection{Commande}
-
-\begin{cautionblock}
-Pour cette commande :
-
-\begin{itemize}
- \item la version \textit{étoilée} n'affiche pas l'angle initial ;
- \item le booléen \Cle{d} permet de forcer l'affichage en \ctex{displaystyle} ; \hfill{}défaut \Cle{false}
- \item le booléen \Cle{Etapes} permet d'afficher la réduction avant le résultat ; \hfill{}défaut \Cle{false}
- \item le premier argument \textit{obligatoire}, entre \ctex{\{...\}} est le type de calcul demandé, parmi \Cle{cos / sin / tan} ;
- \item le second argument \textit{obligatoire}, entre \ctex{(...)} est l'angle, donné en ligne, avec \ctex{pi}.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-$\LigneTrigo{cos}(56pi/3)$ et $\LigneTrigo{sin}(56pi/3)$ et $\LigneTrigo{tan}(56pi/3)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-$\LigneTrigo[d,Etapes]{cos}(56pi/3)$ et $\LigneTrigo[d,Etapes]{sin}(56pi/3)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-$\LigneTrigo*[d,Etapes]{cos}(2pi/3)$ et $\LigneTrigo*[d,Etapes]{sin}(2pi/3)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-$\LigneTrigo[d,Etapes]{cos}(146pi)$ et $\LigneTrigo[d,Etapes]{sin}(146pi)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-$\LigneTrigo[d,Etapes]{cos}(-551pi/12)$ et $\LigneTrigo[d,Etapes]{sin}(-551pi/12)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-$\LigneTrigo[d,Etapes]{cos}(447pi/8)$ et $\LigneTrigo[d,Etapes]{sin}(447pi/8)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-$\LigneTrigo*[d,Etapes]{cos}(-pi/8)$ et $\LigneTrigo*[d,Etapes]{sin}(-pi/8)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-$\LigneTrigo[d,Etapes]{cos}(-595pi/12)$ et $\LigneTrigo[d,Etapes]{sin}(-595pi/12)$ et $\LigneTrigo[d,Etapes]{tan}(-595pi/12)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-$\LigneTrigo[d,Etapes]{cos}(33pi/10)$ et $\LigneTrigo[d,Etapes]{sin}(33pi/10)$\\
-$\LigneTrigo[d,Etapes]{tan}(33pi/10)$
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-$\LigneTrigo[d,Etapes]{cos}(-14pi/5)$ et $\LigneTrigo[d,Etapes]{sin}(-14pi/5)$\\
-$\LigneTrigo[d,Etapes]{tan}(-14pi/5)$
-\end{PresCodePL}
-
-\subsection{Valeurs disponibles}
-
-\begin{noteblock}
-Les valeurs disponibles sont :
-
-\begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{9}{Q[1.195cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}}
- angle & $0$ & $\nicefrac{\pi}{6}$ & $\nicefrac{\pi}{4}$ & $\nicefrac{\pi}{3}$ & $\nicefrac{\pi}{2}$ & $\nicefrac{2\pi}{3}$ & $\nicefrac{3\pi}{4}$ & $\nicefrac{5\pi}{6}$ & $\pi$ \\
- cos & $\LigneTrigo{cos}(0)$ & $\LigneTrigo{cos}(pi/6)$ & $\LigneTrigo{cos}(pi/4)$ & $\LigneTrigo{cos}(pi/3)$ & $\LigneTrigo{cos}(pi/2)$ & $\LigneTrigo{cos}(2pi/3)$ & $\LigneTrigo{cos}(3pi/4)$ & $\LigneTrigo{cos}(5pi/6)$ & $\LigneTrigo{cos}(pi)$ \\
- sin & $\LigneTrigo{sin}(0)$ & $\LigneTrigo{sin}(pi/6)$ & $\LigneTrigo{sin}(pi/4)$ & $\LigneTrigo{sin}(pi/3)$ & $\LigneTrigo{sin}(pi/2)$ & $\LigneTrigo{sin}(2pi/3)$ & $\LigneTrigo{sin}(3pi/4)$ & $\LigneTrigo{sin}(5pi/6)$ & $\LigneTrigo{sin}(pi)$ \\
- tan & $\LigneTrigo{tan}(0)$ & $\LigneTrigo{tan}(pi/6)$ & $\LigneTrigo{tan}(pi/4)$ & $\LigneTrigo{tan}(pi/3)$ & $\LigneTrigo{tan}(pi/2)$ & $\LigneTrigo{tan}(2pi/3)$ & $\LigneTrigo{tan}(3pi/4)$ & $\LigneTrigo{tan}(5pi/6)$ & $\LigneTrigo{tan}(pi)$ \\
-\end{tblr}
-
-\medskip
-
-\begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{9}{Q[1.195cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}}
- angle & & $\nicefrac{-\pi}{6}$ & $\nicefrac{-\pi}{4}$ & $\nicefrac{-\pi}{3}$ & $\nicefrac{-\pi}{2}$ & $\nicefrac{-2\pi}{3}$ & $\nicefrac{-3\pi}{4}$ & $\nicefrac{-5\pi}{6}$ & \\
- cos & & $\LigneTrigo{cos}(-pi/6)$ & $\LigneTrigo{cos}(-pi/4)$ & $\LigneTrigo{cos}(-pi/3)$ & $\LigneTrigo{cos}(-pi/2)$ & $\LigneTrigo{cos}(-2pi/3)$ & $\LigneTrigo{cos}(-3pi/4)$ & $\LigneTrigo{cos}(-5pi/6)$ & \\
- sin & & $\LigneTrigo{sin}(-pi/6)$ & $\LigneTrigo{sin}(-pi/4)$ & $\LigneTrigo{sin}(-pi/3)$ & $\LigneTrigo{sin}(-pi/2)$ & $\LigneTrigo{sin}(-2pi/3)$ & $\LigneTrigo{sin}(-3pi/4)$ & $\LigneTrigo{sin}(-5pi/6)$ & \\
- tan & & $\LigneTrigo{tan}(-pi/6)$ & $\LigneTrigo{tan}(-pi/4)$ & $\LigneTrigo{tan}(-pi/3)$ & $\LigneTrigo{tan}(-pi/2)$ & $\LigneTrigo{tan}(-2pi/3)$ & $\LigneTrigo{tan}(-3pi/4)$ & $\LigneTrigo{tan}(-5pi/6)$ & \\
-\end{tblr}
-
-\medskip
-
-\begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{8}{Q[1.4cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}}
- angle & $\nicefrac{\pi}{8}$ & $\nicefrac{3\pi}{8}$ & $\nicefrac{5\pi}{8}$ & $\nicefrac{7\pi}{8}$ & $\nicefrac{\pi}{12}$ & $\nicefrac{5\pi}{12}$ & $\nicefrac{7\pi}{12}$ & $\nicefrac{11\pi}{12}$ \\
- cos & $\LigneTrigo{cos}(pi/8)$ & $\LigneTrigo{cos}(3pi/8)$ & $\LigneTrigo{cos}(5pi/8)$ & $\LigneTrigo{cos}(7pi/8)$ & $\LigneTrigo{cos}(pi/12)$ & $\LigneTrigo{cos}(5pi/12)$ & $\LigneTrigo{cos}(7pi/12)$ & $\LigneTrigo{cos}(11pi/12)$ \\
- sin & $\LigneTrigo{sin}(pi/8)$ & $\LigneTrigo{sin}(3pi/8)$ & $\LigneTrigo{sin}(5pi/8)$ & $\LigneTrigo{sin}(7pi/8)$ & $\LigneTrigo{sin}(pi/12)$ & $\LigneTrigo{sin}(5pi/12)$ & $\LigneTrigo{sin}(7pi/12)$ & $\LigneTrigo{sin}(11pi/12)$ \\
- tan & $\LigneTrigo{tan}(pi/8)$ & $\LigneTrigo{tan}(3pi/8)$ & $\LigneTrigo{tan}(5pi/8)$ & $\LigneTrigo{tan}(7pi/8)$ & $\LigneTrigo{tan}(pi/12)$ & $\LigneTrigo{tan}(5pi/12)$ & $\LigneTrigo{tan}(7pi/12)$ & $\LigneTrigo{tan}(11pi/12)$ \\
-\end{tblr}
-
-\medskip
-
-\begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{8}{Q[1.4cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}}
- angle & $\nicefrac{-\pi}{8}$ & $\nicefrac{-3\pi}{8}$ & $\nicefrac{-5\pi}{8}$ & $\nicefrac{-7\pi}{8}$ & $\nicefrac{-\pi}{12}$ & $\nicefrac{-5\pi}{12}$ & $\nicefrac{-7\pi}{12}$ & $\nicefrac{-11\pi}{12}$ \\
- cos & $\LigneTrigo{cos}(-pi/8)$ & $\LigneTrigo{cos}(-3pi/8)$ & $\LigneTrigo{cos}(-5pi/8)$ & $\LigneTrigo{cos}(-7pi/8)$ & $\LigneTrigo{cos}(-pi/12)$ & $\LigneTrigo{cos}(-5pi/12)$ & $\LigneTrigo{cos}(-7pi/12)$ & $\LigneTrigo{cos}(-11pi/12)$ \\
- sin & $\LigneTrigo{sin}(-pi/8)$ & $\LigneTrigo{sin}(-3pi/8)$ & $\LigneTrigo{sin}(-5pi/8)$ & $\LigneTrigo{sin}(-7pi/8)$ & $\LigneTrigo{sin}(-pi/12)$ & $\LigneTrigo{sin}(-5pi/12)$ & $\LigneTrigo{sin}(-7pi/12)$ & $\LigneTrigo{sin}(-11pi/12)$ \\
- tan & $\LigneTrigo{tan}(-pi/8)$ & $\LigneTrigo{tan}(-3pi/8)$ & $\LigneTrigo{tan}(-5pi/8)$ & $\LigneTrigo{tan}(-7pi/8)$ & $\LigneTrigo{tan}(-pi/12)$ & $\LigneTrigo{tan}(-5pi/12)$ & $\LigneTrigo{tan}(-7pi/12)$ & $\LigneTrigo{tan}(-11pi/12)$ \\
-\end{tblr}
-
-\medskip
-
-\begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{8}{Q[1.4cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}}
- angle & $\nicefrac{-4\pi}{5}$ & $\nicefrac{-3\pi}{5}$ & $\nicefrac{-2\pi}{5}$ & $\nicefrac{-\pi}{5}$ & $\nicefrac{\pi}{5}$ & $\nicefrac{2\pi}{5}$ & $\nicefrac{3\pi}{5}$ & $\nicefrac{4\pi}{5}$ \\
- cos & $\LigneTrigo{cos}(-4pi/5)$ & $\LigneTrigo{cos}(-3pi/5)$ & $\LigneTrigo{cos}(-2pi/5)$ & $\LigneTrigo{cos}(-pi/5)$ & $\LigneTrigo{cos}(pi/5)$ & $\LigneTrigo{cos}(2pi/5)$ & $\LigneTrigo{cos}(3pi/5)$ & $\LigneTrigo{cos}(4pi/5)$ \\
- sin & $\LigneTrigo{sin}(-4pi/5)$ & $\LigneTrigo{sin}(-3pi/5)$ & $\LigneTrigo{sin}(-2pi/5)$ & $\LigneTrigo{sin}(-pi/5)$ & $\LigneTrigo{sin}(pi/5)$ & $\LigneTrigo{sin}(2pi/5)$ & $\LigneTrigo{sin}(3pi/5)$ & $\LigneTrigo{sin}(4pi/5)$ \\
- tan & $\LigneTrigo{tan}(-4pi/5)$ & $\LigneTrigo{tan}(-3pi/5)$ & $\LigneTrigo{tan}(-2pi/5)$ & $\LigneTrigo{tan}(-pi/5)$ & $\LigneTrigo{tan}(pi/5)$ & $\LigneTrigo{tan}(2pi/5)$ & $\LigneTrigo{tan}(3pi/5)$ & $\LigneTrigo{tan}(4pi/5)$ \\
-\end{tblr}
-
-\medskip
-
-\begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{8}{Q[1.4cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}}
- angle & $\nicefrac{-9\pi}{10}$ & $\nicefrac{-7\pi}{10}$ & $\nicefrac{-3\pi}{10}$ & $\nicefrac{-\pi}{10}$ & $\nicefrac{\pi}{10}$ & $\nicefrac{3\pi}{10}$ & $\nicefrac{7\pi}{10}$ & $\nicefrac{9\pi}{10}$ \\
- cos & $\LigneTrigo{cos}(-9pi/10)$ & $\LigneTrigo{cos}(-7pi/10)$ & $\LigneTrigo{cos}(-3pi/10)$ & $\LigneTrigo{cos}(-pi/10)$ & $\LigneTrigo{cos}(pi/10)$ & $\LigneTrigo{cos}(3pi/10)$ & $\LigneTrigo{cos}(7pi/10)$ & $\LigneTrigo{cos}(9pi/10)$ \\
- sin & $\LigneTrigo{sin}(-9pi/10)$ & $\LigneTrigo{sin}(-7pi/10)$ & $\LigneTrigo{sin}(-3pi/10)$ & $\LigneTrigo{sin}(-pi/10)$ & $\LigneTrigo{sin}(pi/10)$ & $\LigneTrigo{sin}(3pi/10)$ & $\LigneTrigo{sin}(7pi/10)$ & $\LigneTrigo{sin}(9pi/10)$ \\
- tan & $\LigneTrigo{tan}(-9pi/10)$ & $\LigneTrigo{tan}(-7pi/10)$ & $\LigneTrigo{tan}(-3pi/10)$ & $\LigneTrigo{tan}(-pi/10)$ & $\LigneTrigo{tan}(pi/10)$ & $\LigneTrigo{tan}(3pi/10)$ & $\LigneTrigo{tan}(7pi/10)$ & $\LigneTrigo{tan}(9pi/10)$ \\
-\end{tblr}
-\end{noteblock}
+\input{ProfLycee-doc-simplif.tex}
\pagebreak
@@ -7770,340 +497,7 @@ Les valeurs disponibles sont :
\newpage
-\part{Jeux et récréations}
-
-\section{SudoMaths, en \TikZ}\label{sudomaths}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-L'idée est de \textit{proposer} un environnement \TikZ, une commande permettant de tracer des grilles de SudoMaths.
-
-L'environnement créé, lié à \TikZ, trace la grille de SudoMaths (avec les blocs démarqués), et peut la remplir avec une liste d'éléments.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%grille classique non remplie, avec légendes H/V, {} nécessaires pour préciser que les cases seront "vides"
-\SudoMaths{}
-\end{PresCodeTexPL}
-
-\begin{PresCodePL}{}
-\SudoMaths{}
-\end{PresCodePL}
-
-\begin{noteblock}
-La commande \ctex{SudoMaths} crée donc la grille (remplie ou non), dans un environnement \TikZ, c'est \textit{c'est tout} !
-
-\smallskip
-
-On peut également utiliser l'\textit{environnement} \ctex{EnvSudoMaths} dans lequel on peut rajouter du code \TikZ{} !
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%grille "toute seule"
-\SudoMaths[clés]{liste}
-
-%grille avec ajout de code
-\begin{EnvSudoMaths}[clés]{grille}
- %commandes tikz
-\end{EnvSudoMaths}
-\end{PresCodeTexPL}
-
-\pagebreak
-
-\subsection{Clés et options}
-
-\begin{cautionblock}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
- \item la clé \Cle{Epaisseurg} pour gérer l'épaisseur des traits épais ; \hfill~défaut \Cle{1.5pt}
- \item la clé \Cle{Epaisseur} pour gérer l'épaisseur des traits fins ; \hfill~défaut \Cle{0.5pt}
- \item la clé \Cle{Unite} qui est l'unité graphique de la figure ; \hfill~défaut \Cle{1cm}
- \item la clé \Cle{CouleurCase} pour la couleur (éventuelles) des cases ; \hfill~défaut \Cle{cyan!50}
- \item la clé \Cle{CouleurTexte} pour gérer la couleur du label des cases ; \hfill~défaut \Cle{blue}
- \item la clé \Cle{NbCol} qui est le nombre de colonnes ; \hfill~défaut \Cle{9}
- \item la clé \Cle{NbSubCol} qui est le nombre de sous-colonnes ; \hfill~défaut \Cle{3}
- \item la clé \Cle{NbLig} qui est le nombre de lignes ; \hfill~défaut \Cle{9}
- \item la clé \Cle{NbSubLig} qui est le nombre de sous-colonnes ; \hfill~défaut \Cle{3}
- \item la clé \Cle{Police} qui formatte le label des cases ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize}
- \item le booléen \Cle{Legendes} qui affiche ou non les légendes (H et V) des cases ; \hfill~défaut \Cle{true}
- \item la clé \Cle{PoliceLeg} qui formatte le label des légendes ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize}
- \item la clé \Cle{ListeLegV} qui est la liste de la légende verticale ; \hfill~défaut \Cle{ABCD...WXYZ}
- \item la clé \Cle{ListeLegH} qui est la liste de la légende horizontale ; \hfill~défaut \Cle{abcd...wxyz}
- \item la clé \Cle{DecalLegende} qui est le décalage de la légende par rapport à la grille. \hfill~défaut \Cle{0.45}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{noteblock}
-La liste éventuelle des éléments à rentrer dans le tableau est traitée par le package \ctex{listofitems}, et se présente sous la forme suivante : \ctex{ / / / ... / / § / / / ... / / § ... § / / / ... / / }
-
-\smallskip
-
-Il peut donc être intéressant de \textit{déclarer} la liste au préalable pour simplifier la saisie de la commande !
-\end{noteblock}
-
-\begin{noteblock}
-La \Cle{CouleurCase} est gérée -- en interne -- par le caractère \ctex{*} qui permet de préciser qu'on veut que la case soit coloriée.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%grille 6x6 avec blocs 2x3, avec coloration de cases (présentée sous forme de "cases")
-\def\grilleSuMa{%
- (a)* / (b)* / / / (c)* / (d)* §%
- (e)* / / / (f)* / (g)* / (h)* §%
- / / (i)* / / / (j)* §%
- / / (k)* / / (l)* / (m)* §%
- (n)* / / (o)* / / / (p)* §%
- / / / (q)* / / §%
-}
-
-\SudoMaths[Unite=0.75cm,NbCol=6,NbSubCol=2,NbLig=6,NbSubLig=3,%
- Police=\small\bfseries\ttfamily,CouleurTexte=red,CouleurCase=yellow!50,%
- Legendes=false]{\grilleSuMa}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\grilleSuMa{%
- (a)* / (b)* / / / (c)* / (d)* §%
- (e)* / / / (f)* / (g)* / (h)* §%
- / / (i)* / / / (j)* §%
- / / (k)* / / (l)* / (m)* §%
- (n)* / / (o)* / / / (p)* §%
- / / / (q)* / / §%
-}
-
-\SudoMaths[Unite=0.75cm,NbCol=6,NbSubCol=2,NbLig=6,NbSubLig=3,Police=\small\bfseries\ttfamily,CouleurTexte=red,CouleurCase=yellow!50,%
-Legendes=false]{\grilleSuMa}
-\end{PresCodeSortiePL}
-
-\pagebreak
-
-\begin{noteblock}
-La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0;0)$ et $(\text{nbcol};-\text{nblig})$, de sorte que les labels des cases sont situés au nœuds de coordonnées $(x,5;-y,5)$.
-\end{noteblock}
-
-\begin{PresCodeTexPL}{listing only}
-%grille classique avec coloration de cases et commande tikz
-%graduations rajoutées pour la lecture des coordonnées
-\def\grilleSuMaB{%
- */////4///§%
- /*///3////§%
- //*//////§%
- ///*/////§%
- ////*////§%
- /////*///§%
- //5*/////*/§%
- /////B///*§%
- *///9////Q/§%
-}
-
-\begin{EnvSudoMaths}[%
- Unite=0.66cm,Police=\footnotesize\bfseries\ttfamily,CouleurCase=violet!50,%
- ListeLegV=QSDFGHJKL,ListeLegH=poiuytrez]{\grilleSuMaB}
- \draw[red,very thick,<-,>=latex] (7.5,-4.5) to[bend right] ++ (4,-1) node[right] {code rajouté...} ;
-\end{EnvSudoMaths}
-\end{PresCodeTexPL}
-
-\begin{PresCodeSortiePL}{text only}
-\def\grilleSuMaB{%
- */////4///§%
- /*///3////§%
- //*//////§%
- ///*/////§%
- ////*////§%
- /////*///§%
- //5*/////*/§%
- /////B///*§%
- *///9////Q/§%
-}
-
-\begin{EnvSudoMaths}[%
- Unite=0.66cm,Police=\footnotesize\bfseries\ttfamily,CouleurCase=violet!50,%
- ListeLegV=QSDFGHJKL,ListeLegH=poiuytrez]{\grilleSuMaB}
- \draw[red,very thick,<-,>=latex] (7.5,-4.5) to[bend right] ++ (4,-1) node[right] {code rajouté pour montrer la case \textsf{Ge}} ;
- \foreach \x in {0,1,...,9} \draw[lightgray] (\x,-9) node[below,font=\scriptsize\ttfamily] {\x} ;
- \foreach \y in {-1,-2,...,-9} \draw[lightgray] (9,\y) node[right,font=\scriptsize\ttfamily] {\y} ;
- \draw[lightgray] (9,0) node[right,font=\scriptsize\ttfamily] {~0} ;
-\end{EnvSudoMaths}
-\end{PresCodeSortiePL}
-
-\newpage
-
-\section{Quelques fractales, en \TikZ}\label{fractales}
-
-\subsection{Introduction}
-
-\begin{tipblock}
-\cmaj{2.7.9} L'idée est de proposer de quoi représenter quelques fractales, créées avec la librairie \ctex{lindenmayersystems}.
-
-\smallskip
-
-Pour le moment, il est possible de :
-
-\begin{itemize}
- \item tracer un flocon de Koch à une étape donnée ;
- \item tracer un triangle de Sierpinski à une étape donnée ;
- \item présenter différentes étapes successives des flocons de Koch ou des triangles de Sierpinski.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{tipblock}
-
-\begin{importantblock}
-Les figures sont créées en \TikZ, et peuvent être autonomes (sans environnement \ctex{tikzpicture}).
-
-Pour le triangle de Sierpinski, la forme \textit{générale} est \textit{bloquée} pour avoir un rendu \textit{classique}.
-\end{importantblock}
-
-\subsection{Flocon de Koch et triangle de Sierpinski}
-
-\begin{tipblock}
-La commande pour créer un flocon de Koch ou un triangle de Sierpinski est \ctex{\textbackslash FractaleTikz}.
-
-Les éléments de personnalisation sont présentés un peu plus bas.
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%Flocon de Koch, autonome
-\FractaleTikz[Type=Koch,clés]<options tikz>
-
-%Flocon de Koch, dans un environnement tikz
-\begin{tikzpicture}
- \FractaleTikz*[Type=Koch,clés]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{listing only}
-%Triangle de Sierpinski, autonome
-\FractaleTikz[Type=Sierp,clés]<options tikz>
-
-%Flocon de Koch, dans un environnement tikz
-\begin{tikzpicture}
- \FractaleTikz[Type=Sierp,clés]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Les \Cle{clés} disponibles pour cette commande sont :
-
-\begin{itemize}
- \item la clé \Cle{Epaisseur} pour fixer l'épaisseur des tracés ; \hfill~défaut \Cle{0.6pt}
- \item la clé \Cle{Type}, parmi \Cle{Koch / Sierp} pour choisir le type de fractale ; \hfill~défaut \Cle{Koch}
- \item la clé \Cle{Couleur} pour fixer la couleur des tracés ; \hfill~défaut \Cle{black}
- \item la clé \Cle{LongueurCote} (en cm) pour fixer la longueur des côtés ; \hfill~défaut \Cle{3}
- \item la clé \Cle{Etape} (pour \Cle{Type=Koch} elle est limitée à 7) pour fixer l'étape ; \hfill~défaut \Cle{1}
- \item le booléen \Cle{remplir} pour remplir la fractale ; \hfill~défaut \Cle{false}
- \item la clé \Cle{Remplissage} pour fixer la couleur de remplissage ; \hfill~défaut \Cle{lightgray}
- \item la clé \Cle{Depart} pour fixer le point de départ ; \hfill~défaut \Cle{(0,0)}
- \item le booléen \Cle{AlignV} (pour \Cle{Type=Koch}) pour forcer l'alignement de la \textit{base}.\hfill~défaut \Cle{false}
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{}
-%Koch par défaut
-\FractaleTikz
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%Koch par défaut
-\FractaleTikz[Etape=4,LongueurCote=4,Remplir,Remplissage=teal!5,Couleur=red,Epaisseur=1pt]
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%dans un environnement tikz
-\begin{tikzpicture}
- \FractaleTikz*[Etape=0]
- \FractaleTikz*[Depart={(4,0)},Etape=1,Remplir,Remplissage=yellow!25]
- \FractaleTikz*[Depart={(8,0)},Etape=2,Remplir,Remplissage=orange!25]
- \FractaleTikz*[Depart={(12,0)},Etape=3,Remplir,Remplissage=red!25]
-\end{tikzpicture}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%Sierpinski par défaut
-\FractaleTikz[Type=Sierp]
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-%Sierpinski par défaut
-\FractaleTikz[Type=Sierp,LongueurCote=4,Couleur=blue]
-\end{PresCodeTexPL}
-
-\subsection{Affichage de plusieurs étapes pour les flocons de Koch}
-
-\begin{tipblock}
-L'idée est de présenter des étapes successives pour le flocon de Koch.
-
-À noter que les \textit{bases} des flocons sont, dans ce cas, correctement alignées !
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%commande autonome, l'environnement tikz est créé
-\EtapesFloconKoch[clés]{étapes}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Les \Cle{clés} disponibles sont reprises (pour celles dépendant de \Cle{Type=Koch} !) de la commande \ctex{\textbackslash FractaleTikz}, avec en plus :
-
-\begin{itemize}
- \item la clé \Cle{Offset} pour fixer une espacement horizontal entre les figures. \hfill~défaut \Cle{2pt}
-\end{itemize}
-
-L'argument obligatoire, et entre \ctex{\{...\}}, permet de spécifier les étapes à afficher, sous la forme \TikZ{} :
-
-\begin{itemize}
- \item \ctex{n1,n2,n3} pour spécifier une liste d'étapes ;
- \item \ctex{n1,...,n2} pour spécifier une plage d'étapes.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{}
-\EtapesFloconKoch{0,...,4}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-\EtapesFloconKoch[Offset=5mm,Couleur=red,Remplir,Remplissage=violet!25]{0,2,4,6}
-\end{PresCodeTexPL}
-
-\subsection{Affichage de plusieurs étapes pour les tapis de Sierpinski}
-
-\begin{tipblock}
-L'idée est de présenter des étapes successives pour les tapis de Sierpinski.
-
-À noter que les \textit{bases} des flocons sont correctement alignées !
-\end{tipblock}
-
-\begin{PresCodeTexPL}{listing only}
-%commande autonome, l'environnement tikz est créé
-\EtapesTapisSierpinski[clés]{étapes}
-\end{PresCodeTexPL}
-
-\begin{cautionblock}
-Les \Cle{clés} disponibles sont reprises (pour celles dépendant de \Cle{Type=Sierp} !) de la commande \ctex{\textbackslash FractaleTikz}, avec en plus :
-
-\begin{itemize}
- \item la clé \Cle{Offset} pour fixer une espacement horizontal entre les figures. \hfill~défaut \Cle{2pt}
-\end{itemize}
-
-L'argument obligatoire, et entre \ctex{\{...\}}, permet de spécifier les étapes à afficher, sous la forme \TikZ{} :
-
-\begin{itemize}
- \item \ctex{n1,n2,n3} pour spécifier une liste d'étapes ;
- \item \ctex{n1,...,n2} pour spécifier une plage d'étapes.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodeTexPL}{}
-\EtapesTapisSierpinski{0,...,4}
-\end{PresCodeTexPL}
-
-\begin{PresCodeTexPL}{}
-\EtapesTapisSierpinski[LongueurCote=2.5,Offset=5mm,Couleur=red]{0,2,4,6,8}
-\end{PresCodeTexPL}
+\input{ProfLycee-doc-jeuxrecreat.tex}
\newpage
@@ -8117,200 +511,6 @@ L'argument obligatoire, et entre \ctex{\{...\}}, permet de spécifier les étape
\newpage
-\part{Historique}
-
-{\small \bverb|v 2.7.9|~:~~~~Ajout de quelques fractales (Koch + Sierpinski) (page \pageref{fractales})}
-
-{\small \bverb|v 2.7.8|~:~~~~Conversion présentée hexa/bin (page \pageref{convhexbin}) + Liste et arbres de diviseurs (page \pageref{listediv})}
-
-{\small \bverb|v 2.7.7|~:~~~~Points de discontinuité pour des splines (page \pageref{discont})}
-
-{\small \bverb|v 2.7.6|~:~~~~Amélioration dans la console d'exécution avec \textsf{piton}}
-
-{\small \bverb|v 2.7.5|~:~~~~Possibilités de numéroter les lignes des codes à une autre valeur que 1 (page \pageref{codenumlignes})
-
-{\small \bverb|v 2.7.4|~:~~~~Ajout de macros pour des écritures mathématiques classiques (page \pageref{ecrituresmath})}
-
-{\small \bverb|v 2.7.3|~:~~~~Correction de la couleur de bordures vertes pour les codes python}
-
-{\small \bverb|v 2.7.2|~:~~~~\textsf{xcolor} n'est plus chargé par défaut (option \textsf{[xcolor]} pour le charger)
-
-{\small \bverb|v 2.7.1|~:~~~~Chargement de \textsf{tcolorbox} par librairies (au lieu de \textsf{[most]})
-
-{\small \bverb|v 2.7.0|~:~~~~Ajout de la clé \Cle{Frac} pour les axes verticaux (page \pageref{reperagetikz})
-
-{\small \bverb| |~:~~~~Fonction de répartition discrète (\pageref{fctrepart})
-
-{\small \bverb|v 2.6.9|~:~~~~Amélioration de le présentation de code \textsf{Piton} (page \pageref{pythonpiton})
-
-{\small \bverb|v 2.6.8|~:~~~~Ajout d'une grille pour les histogrammes non réguliers (page \pageref{histo})
-
-{\small \bverb|v 2.6.7|~:~~~~Histogramme à classes régulières ou non (page \pageref{histo}) + Correction de bugs mineurs
-
-{\small \bverb|v 2.6.6|~:~~~~Style \textsf{mainlevee} en \TikZ{} désormais dans le package \textsf{tikz2d-fr}
-
-{\small \bverb|v 2.6.5|~:~~~~Ajout d'une option \Cle{nonamssymb} pour éviter de charger \textsf{amssymb} (page \pageref{amssymb})
-
-{\small \bverb| |~:~~~~Ajout d'une commande pour la distance entre deux points (page \pageref{normevect})}
-
-{\small \bverb|v 2.6.4|~:~~~~Résolution d'une équation diophantienne $ax+by=c$ (page \pageref{eqdioph})
-
-{\small \bverb| |~:~~~~Correction de bugs mineurs
-
-{\small \bverb| |~:~~~~Ajout de commandes en géométrie analytique (pages \pageref{affcoord} et \pageref{eqcartplan} et \pageref{eqparamdroite} et \pageref{eqcartdroite} et \pageref{distptplan})
-
-{\small \bverb|v 2.6.3|~:~~~~Ajout d'une commande pour déterminer une équation réduite (page \pageref{eqreduite})
-
-{\small \bverb|v 2.6.2|~:~~~~Ajout d'une clé \Cle{AffTraitsEq} pour les équations trigo (page \pageref{cercletrigo})
-
-{\small \bverb|v 2.6.1|~:~~~~Ajout de commandes pour du calcul intégral (pages \pageref{calcintegr} et \pageref{integrtikz})
-
-{\small \bverb|v 2.6.0|~:~~~~Ajout d'une clé \Cle{Brut} pour les mesures principales + correction d'un bug} + Refonte de la doc
-
-{\small \bverb| |~:~~~~Commande calcul ligne trigo (pages \pageref{mesureprincipale} et \pageref{lignestrigo})
-
-{\small \bverb|v 2.5.9|~:~~~~Ajout clé \Cle{CouleurNombres} pour \textsf{Piton} (v1.5 mini) (page \pageref{pythonpiton})
-
-{\small \bverb|v 2.5.8|~:~~~~Ajout d'un style \textsf{Alt} pour les codes (pages \pageref{pythonsimple} et \pageref{pytminted})
-
-{\small \bverb| |~:~~~~Modification de la syntaxe des commandes avec \textsf{Pythontex} et \textsf{PseudoCode} (pages \pageref{pythontex} et \pageref{pseudocode})
-
-{\small \bverb|v 2.5.7|~:~~~~Ajout de clés pour les codes \textsf{Piton} + Console via \textsf{Pyluatex} (page \pageref{pythonpiton})
-
-{\small \bverb|v 2.5.6|~:~~~~Ajout d'une clé \Cle{Trigo} pour l'axe $(Ox)$ (page \pageref{reperagetikz})
-
-{\small \bverb|v 2.5.5|~:~~~~Externalisation de la fenêtre XCas (dans le package \textsf{FentreCas})
-
-{\small \bverb|v 2.5.4|~:~~~~Modification des calculs (via \textsf{xint}) en combinatoire (page \pageref{combinatoire})
-
-{\small \bverb|v 2.5.3|~:~~~~Modification du traitement des tests dans les arbres de probas (page \pageref{arbresprobas})
-
-{\small \bverb|v 2.5.2|~:~~~~Correction d'un dysfonctionnement avec \textsf{tcolorbox 6.0}
-
-{\small \bverb|v 2.5.1|~:~~~~Ajout d'une version étoilée pour la conversion en fraction (page \pageref{convfrac})
-
-{\small \bverb|v 2.5.0|~:~~~~Système de \textsf{librairies} pour certains packages/commandes (page \pageref{librairies})
-
-{\small \bverb|v 2.2.0|~:~~~~Ajout d'une clé \Cle{Notation} pour les arrangements et combinaisons (page \pageref{combinatoire})
-
-{\small \bverb|v 2.1.9|~:~~~~Correction d'un bug (et ajout d'une version étoilée) pour les petits schémas \og de signe \fg{} (page \pageref{aidesigne})
-
-{\small \bverb|v 2.1.8|~:~~~~Suppression des commandes de PixelArt, désormais dans le package \textsf{PixelArtTikz}
-
-{\small \bverb|v 2.1.7|~:~~~~Ajout d'une clé \Cle{Math} pour les sommets des figures de l'espace (pages \pageref{pave} et \pageref{tetra})
-
-{\small \bverb|v 2.1.6|~:~~~~Correction d'un bug lié au chargement de \textsf{hvlogos}, remplacé par \textsf{hologo}
-
-{\small \bverb|v 2.1.5|~:~~~~Combinatoire avec arrangements et combinaisons (page \pageref{combinatoire})
-
-{\small \bverb|v 2.1.4|~:~~~~Résolution approchée d'équations $f(x)=k$ (page \pageref{resolapprox})
-
-{\small \bverb|v 2.1.3|~:~~~~Améliorations dans les présentations \textsf{Piton} (page \pageref{pythonpiton})
-
-{\small \bverb|v 2.1.2|~:~~~~Ajout d'une commande pour la mesure principale d'un angle (page \pageref{mesureprincipale})
-
-{\small \bverb|v 2.1.1|~:~~~~Ajout d'une section pour des repères en \TikZ{} (page \pageref{reperagetikz})
-
-{\small \bverb|v 2.1.0|~:~~~~Calcul du seuil, en interne désormais (page \pageref{calcrecurr})
-
-{\small \bverb| |~:~~~~Commande pour simplifier une racine carrée (page \pageref{simplracine})
-
-{\small \bverb| |~:~~~~Option \textsf{[pythontex]} pour charger le nécessaire pour \textsf{pythontex}
-
-{\small \bverb|v 2.0.9|~:~~~~Nombres aléatoires, tirages aléatoires d'entiers (page \pageref{entiersaleatoires})
-
-{\small \bverb|v 2.0.8|~:~~~~Ajout d'un environnement pour présenter du code \LaTeX{} (page \pageref{prescode})
-
-{\small \bverb|v 2.0.7|~:~~~~Ajout d'options pour stretch et fonte env python(s) (pas tous...)
-
-{\small \bverb|v 2.0.6|~:~~~~Changement de taille de la police des codes Python (page \pageref{pythonsimple})
-
-{\small \bverb|v 2.0.5|~:~~~~Correction d'un bug avec les calculs de suites récurrentes (page \pageref{calcrecurr})
-
-{\small \bverb|v 2.0.4|~:~~~~Ajout d'une commande pour une présentation de solution par TVI (page \pageref{solutiontvi})
-
-{\small \bverb|v 2.0.3|~:~~~~Commandes pour des suites récurrentes \textit{simples} (page \pageref{calcrecurr})
-
-{\small \bverb|v 2.0.2|~:~~~~Option \textsf{left-margin=auto} pour le package \textsf{piton} (page \pageref{pythonpiton})
-
-{\small \bverb|v 2.0.1|~:~~~~Chargement du package \textsf{piton} uniquement si compilation en \hologo{LuaLaTeX} (page \pageref{pythonpiton})
-
-{\small \bverb|v 2.0.0|~:~~~~Refonte du code source avec modification des commandes, et de la documentation}
-
-\hrulefill
-%
-%{\small \bverb|v 1.3.7|~:~~~~Commandes pour du code python via piton, en compilation \hologo{LuaLaTeX} (page \pageref{pythonpiton})
-%
-%{\small \bverb| |~:~~~~Corrections et modifications mineures de la documentation
-%
-%{\small \bverb|v 1.3.6|~:~~~~Présentation de l'algorithme d'Euclide pour le PGCD (page \pageref{prespgcd})
-%
-%{\small \bverb| |~:~~~~Affichage d'un trinôme par coefficients, aléatoires ou non (page \pageref{trinome})
-%
-%{\small \bverb|v 1.3.5|~:~~~~Correction d'un bug avec la loi géométrique (page \pageref{calcprobas})
-%
-%{\small \bverb|v 1.3.4|~:~~~~Ajout de petits schémas, en \TikZ{}, de lois normales et exponentielles (page \pageref{schemasprobas})
-%
-%{\small \bverb| |~:~~~~Calculs de probas avec les lois géométriques et hypergéométriques (page \pageref{calcprobas})
-%
-%{\small \bverb|v 1.3.3|~:~~~~Ajout d'un environnement pour des arbres de probas classiques, en \TikZ{} (page \pageref{arbresprobas})
-%
-%{\small \bverb|v 1.3.2|~:~~~~Correction d'un bug sur les conversions bintohex avec lualatex (page \pageref{conversions})
-%
-%{\small \bverb|v 1.3.1|~:~~~~Ajout d'une option pour ne pas afficher les bordures des corrections de pixelart
-%
-%{\small \bverb|v 1.3.0|~:~~~~Commande pour présenter une conversion depuis la base 10 (page \pageref{convrestes})
-%
-%{\small \bverb|v 1.2.9|~:~~~~Correction des commandes avec \textsf{simplekv}
-%
-%{\small \bverb|v 1.2.7|~:~~~~Ajout de commandes pour des calculs de probabilités (page \pageref{calcprobas})
-%
-%{\small \bverb|v 1.2.6|~:~~~~Ajout d'un environnement pour des SudoMaths (page \pageref{sudomaths})
-%
-%{\small \bverb|v 1.2.5|~:~~~~Ajout de commandes pour des boîtes à moustaches (page \pageref{boiteamoustaches})
-%
-%{\small \bverb|v 1.2.4|~:~~~~Correction de quelques bugs mineurs, et mise à jour de la doc
-%
-%{\small \bverb|v 1.2.3|~:~~~~Commandes pour du code python "simple", sans compilation particulière (page \pageref{pythonsimple})
-%
-%{\small \bverb|v 1.2.2|~:~~~~Commandes pour travailler sur des stats à 2 variables (page \pageref{statsdeuxvars})
-%
-%{\small \bverb|v 1.2.1|~:~~~~Amélioration de la gestion du csv pour Pixelart
-%
-%{\small \bverb|v 1.1.9|~:~~~~Pixelart en \TikZ{}
-%
-%{\small \bverb|v 1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ (page \pageref{mainlevee})
-%
-%{\small \bverb|v 1.1.7|~:~~~~Conversions bin/hex/dec (basées sur \textsf{xintbinhex}) avec quelques détails (page \pageref{conversions})
-%
-%{\small \bverb|v 1.1.6|~:~~~~Commande pour déterminer les paramètres d'une régression linéaire par moindres carrés (page \pageref{reglin})
-%
-%{\small \bverb|v 1.1.5|~:~~~~Ajout de deux commandes pour, en \TikZ, créer des petits schémas \og de signe \fg{} (page \pageref{aidesigne})
-%
-%{\small \bverb|v 1.1.4|~:~~~~Ajout d'une commande pour, en \TikZ, créer facilement un cercle trigo avec \textit{options} (page \pageref{cercletrigo})
-%
-%{\small \bverb|v 1.1.3|~:~~~~Ajout des commandes pour fractions, ensembles et récurrence (pages \pageref{convfrac}, \pageref{ensembles} et \pageref{recurr})
-%
-%{\small \bverb|v 1.1.1|~:~~~~Modification mineure de l'environnement calcul formel, avec prise de charge de la taille du texte
-%
-%{\small \bverb|v 1.1.0|~:~~~~Ajout d'une commande pour créer des tétraèdres (avec nœuds) en \TikZ{} (page \pageref{tetra})
-%
-%{\small \bverb|v 1.0.9|~:~~~~Ajout d'une commande pour créer des pavés droits (avec nœuds) en \TikZ{} (page \pageref{pave})
-%
-%{\small \bverb|v 1.0.8|~:~~~~Ajout d'une commande pour créer des cartouches de lien "comme capytale" (page \pageref{capytale})
-%
-%{\small \bverb|v 1.0.7|~:~~~~Ajout d'une option \textsf{build} pour placer certains fichiers auxiliaires dans un répertoire externe
-%
-%{\small \bverb|v 1.0.6|~:~~~~Ajout d'une option \textsf{nominted} pour ne pas charger (pas besoin de compiler avec \textsf{shell-escape})
-%
-%{\small \bverb|v 1.0.5|~:~~~~Ajout d'un environnement pour Python (\textsf{minted}) (page \pageref{pytminted})
-%
-%{\small \bverb|v 1.0.4|~:~~~~Ajout des environnements pour Terminal (win, osx, unix) (page \pageref{terms})
-%
-%{\small \bverb|v 1.0.3|~:~~~~Ajout des environnements pour PseudoCode (page \pageref{pseudocode})
-%
-%{\small \bverb|v 1.0.2|~:~~~~Ajout des environnements pour Python (\textsf{pythontex}) (page \pageref{pythontex})
-%
-%{\small \bverb|v 1.0 |~:~~~~Version initiale}
+\input{ProfLycee-doc-historique.tex}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/doc/graphics/integr_nwks_a.png b/macros/latex/contrib/proflycee/doc/graphics/integr_nwks_a.png
deleted file mode 100644
index be6f4c4fbb..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/integr_nwks_a.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/integr_nwks_b.png b/macros/latex/contrib/proflycee/doc/graphics/integr_nwks_b.png
deleted file mode 100644
index a106d71cf3..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/integr_nwks_b.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_a.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_a.png
deleted file mode 100644
index ee2a607de3..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_a.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_b.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_b.png
deleted file mode 100644
index 6eb00e138b..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_b.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_c.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_c.png
deleted file mode 100644
index 78a8fee25d..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_c.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_d.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_d.png
deleted file mode 100644
index a4020e0f09..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_d.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_e.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_e.png
deleted file mode 100644
index be1ff2c03c..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_e.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_f.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_f.png
deleted file mode 100644
index 7778d450fb..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-probas_f.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_a.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_a.png
deleted file mode 100644
index 5c05987140..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_a.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_b.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_b.png
deleted file mode 100644
index 90dce1c0ce..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_b.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.png
deleted file mode 100644
index d7fecfb3e7..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c2.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c2.png
deleted file mode 100644
index 74e1b905e0..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c2.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.png
deleted file mode 100644
index b9821f36c4..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.png b/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.png
deleted file mode 100644
index c2de13f554..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_a.png b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_a.png
deleted file mode 100644
index d1baeb62ff..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_a.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_b.png b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_b.png
deleted file mode 100644
index 3059e3d7e0..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_b.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_c.png b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_c.png
deleted file mode 100644
index 9d32557198..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_c.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_d.png b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_d.png
deleted file mode 100644
index b929432bb7..0000000000
--- a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_d.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/testscript.py b/macros/latex/contrib/proflycee/doc/testscript.py
deleted file mode 100644
index 76e61647be..0000000000
--- a/macros/latex/contrib/proflycee/doc/testscript.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Calcul de la factorielle en langage Python
-def factorielle(x):
- if x < 2:
- return 1
- else:
- return x * factorielle(x-1)
-
-# rapidité de tracé
-import matplotlib.pyplot as plt
-import time
-def trace_parabole_tableaux():
- depart=time.clock()
- X = [] # Initialisation des listes
- Y = []
- a = -2
- h = 0.001
- while a<2:
- X.append(a) # Ajout des valeurs
- Y.append(a*a) # au "bout" de X et Y
- a = a+h
- # Tracé de l'ensemble du tableau de valeurs
- plt.plot(X,Y,".b")
- fin=time.clock()
- return "Temps : " + str(fin-depart) + " s."
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index a713a0cdce..8f3f9bb1fb 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2023/10/19 2.8.0 Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2023/10/23 3.00a Aide pour l'utilisation de LaTeX en lycee]
+% 3.00a Ajout de commandes pour travailler avex des intervalles + Nouvelle numérotation
% 2.8.0 Amélioration du tapis de Sierpinski
% 2.7.9 Ajout de fractales (Koch + Sierpinski)
% 2.7.8 Conversion hexa->bin présentée
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-graphiques.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-graphiques.tex
index 009b5d0967..0a31d0861a 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-graphiques.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-graphiques.tex
@@ -610,4 +610,155 @@
\tikzset{declare function={#1(\x)=#2;}}
}
+%====INTERVALLES TIKZ
+\usetikzlibrary{decorations.pathmorphing,decorations.pathreplacing}
+
+\defKV[repinterv]{%
+ Unite=\def\RepIntervUnit{#1},%
+ Largeur=\def\RepIntervLarg{#1},%
+ Graduations=\def\RepIntervGrad{#1},%,
+ GraduationsAlt=\def\RepIntervGradPrim{#1},%
+ HautGrad=\def\RepIntervHautGrad{#1},%
+ Valeurs=\def\RepIntervVal{#1}
+}
+\setKVdefault[repinterv]{%
+ xmin=-8,xmax=8,%
+ Elargir=0.05,Unite=auto,Largeur=12,EpTrait=0.8pt,%
+ Graduations={},%
+ GraduationsAlt={},%
+ HautGrad=7pt,Hauteur=16pt,Coeff=1.1,Valeurs={},%
+ Police={\normalsize\normalfont}
+}
+
+\NewDocumentEnvironment{RepIntervalles}{ O{} D<>{} }%
+{%
+ \restoreKV[repinterv]%
+ \setKV[repinterv]{#1}%
+ \IfStrEq{\RepIntervUnit}{auto}%
+ {\def\RepIntervUnitX{\fpeval{round((\useKV[repinterv]{Largeur})/(\useKV[repinterv]{xmax}-\useKV[repinterv]{xmin}),3)}}}%
+ {\def\RepIntervUnitX{\RepIntervUnit}}%
+ \xdef\AxeXminInterv{\fpeval{\useKV[repinterv]{xmin}-(\useKV[repinterv]{Elargir})*(\useKV[repinterv]{xmax}-\useKV[repinterv]{xmin})}}%
+ \xdef\AxeXmaxInterv{\fpeval{\useKV[repinterv]{xmax}+(\useKV[repinterv]{Elargir})*(\useKV[repinterv]{xmax}-\useKV[repinterv]{xmin})}}%
+ \begin{tikzpicture}[x=\RepIntervUnitX cm,#2]
+ \draw[line width={\useKV[repinterv]{EpTrait}},->,>=latex] ({\AxeXminInterv},0) -- ({\AxeXmaxInterv},0) ;
+ \IfStrEq{\RepIntervGrad}{}%
+ {}%
+ {
+ \foreach \i in \RepIntervGrad {\draw[line width={\useKV[repinterv]{EpTrait}}] (\i,{0.5*\RepIntervHautGrad})--++(0,{-\RepIntervHautGrad}) ;}
+ }%
+ \IfStrEq{\RepIntervGradPrim}{}%
+ {}%
+ {
+ \foreach \i in \RepIntervGradPrim {\draw[line width={\useKV[repinterv]{EpTrait}}] (\i,{0.75*\RepIntervHautGrad})--++(0,{-1.5*\RepIntervHautGrad}) ;}
+ }%
+ \IfStrEq{\RepIntervVal}{}%
+ {}%
+ {
+ \foreach \i in \RepIntervVal {\draw (\i,{-0.5*\useKV[repinterv]{Hauteur}}) node[inner sep={1.5*\useKV[repinterv]{EpTrait}},below,font={\useKV[repinterv]{Police}}] {\num{\i}} ;}
+ }%
+ }%
+ {%
+ \end{tikzpicture}%
+}
+
+\defKV[tkzinterv]{%
+ Type=\def\IntervType{#1},%
+ Decor=\def\IntervStyle{#1},%
+ PosValeurs=\def\IntervPosValeurs{#1},%
+ Offset=\def\IntervOffset{#1}
+}
+\setKVdefault[tkzinterv]{%
+ Couleur=red,%
+ Type=FF,%
+ NiveauV=0,%
+ Decor={},%
+ AffValeurs=false,%
+ PosValeurs=above,%
+ NumInf=true,%
+ NumSup=true,%
+ Offset=0pt
+}
+
+\NewDocumentCommand\tkzIntervalle{ O{} m m }{%1=options,2=min,3=max
+ \restoreKV[tkzinterv]%
+ \setKV[tkzinterv]{#1}%
+ %transformations min/max
+ \IfStrEq{#2}{*}{\def\ValMinInterv{\AxeXminInterv}}{\def\ValMinInterv{#2}}%
+ \IfStrEq{#3}{*}{\def\ValMaxInterv{\AxeXmaxInterv}}{\def\ValMaxInterv{#3}}%
+ \begin{scope}[yshift={\useKV[repinterv]{Coeff}*\useKV[tkzinterv]{NiveauV}*\useKV[repinterv]{Hauteur}+\IntervOffset}]
+ %segment
+ \draw[line width={2*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}}] ({\ValMinInterv},0)--({\ValMaxInterv},0) ;
+ %style fond
+ \IfStrEq{\IntervStyle}{fond}%
+ {%
+
+ \filldraw[draw=none,fill={\useKV[tkzinterv]{Couleur}},fill opacity=0.25] ({\ValMinInterv},{-0.425*\useKV[repinterv]{Hauteur}}) rectangle ({\ValMaxInterv},{0.425*\useKV[repinterv]{Hauteur}}) ;
+ }{}%
+ \IfStrEq{\IntervStyle}{zigzag}%
+ {%
+ \draw[line width={1.25*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}},decorate,decoration={zigzag,segment length=5mm,amplitude={0.425*\useKV[repinterv]{Hauteur}}}] ({\ValMinInterv},0)--({\ValMaxInterv},0) ;
+ }{}%
+ \IfSubStr{\IntervStyle}{hach}%
+ {%
+ \IfSubStr{\IntervStyle}{/}%
+ {\StrBehind{\IntervStyle}{/}[\IntervHachAngle]}
+ {\def\IntervHachAngle{60}}%
+ \begin{scope}
+ \clip ({\ValMinInterv},{-0.5*\useKV[repinterv]{Hauteur}}) rectangle ({\ValMaxInterv},{0.5*\useKV[repinterv]{Hauteur}}) ;
+ \draw[line width={1.25*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}},decorate,decoration={border,segment length=2.5mm,angle=\IntervHachAngle,amplitude={0.425*\useKV[repinterv]{Hauteur}}}] ({\AxeXminInterv},0)--({\AxeXmaxInterv},0) ;
+ \draw[line width={1.25*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}},decorate,decoration={border,segment length=2.5mm,angle=\IntervHachAngle,amplitude={-0.425*\useKV[repinterv]{Hauteur}}}] ({\AxeXminInterv},0)--({\AxeXmaxInterv},0) ;
+ \end{scope}
+ }{}%
+ %bord gauche
+ \IfStrEq{#2}{*}%
+ {}%
+ {%
+ \ifboolKV[tkzinterv]{AffValeurs}%
+ {%
+ \IfSubStr{\IntervPosValeurs}{above}
+ {%
+ \draw ({\ValMinInterv},{0.5*\useKV[repinterv]{Hauteur}}) node[inner sep={3*\useKV[repinterv]{EpTrait}},\IntervPosValeurs,text={\useKV[tkzinterv]{Couleur}},font={\useKV[repinterv]{Police}}] {\ifboolKV[tkzinterv]{NumInf}{\num{#2}}{#2}} ;
+ }{}%
+ \IfSubStr{\IntervPosValeurs}{below}
+ {%
+ \draw ({\ValMinInterv},{-0.5*\useKV[repinterv]{Hauteur}}) node[inner sep={3*\useKV[repinterv]{EpTrait}},\IntervPosValeurs,text={\useKV[tkzinterv]{Couleur}},font={\useKV[repinterv]{Police}}] {\ifboolKV[tkzinterv]{NumInf}{\num{#2}}{#2}} ;
+ }{}%
+ }{}%
+ \IfBeginWith{\IntervType}{O}%
+ {%
+ \draw[line width={2*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}}] ({\ValMinInterv},0)|-++ ({-0.2*\useKV[repinterv]{Hauteur}},{0.5*\useKV[repinterv]{Hauteur}}) ;
+ \draw[line width={2*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}}] ({\ValMinInterv},0)|-++ ({-0.2*\useKV[repinterv]{Hauteur}},{-0.5*\useKV[repinterv]{Hauteur}}) ;
+ }%
+ {%
+ \draw[line width={2*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}}] ({\ValMinInterv},0)|-++ ({0.2*\useKV[repinterv]{Hauteur}},{0.5*\useKV[repinterv]{Hauteur}}) ;
+ \draw[line width={2*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}}] ({\ValMinInterv},0)|-++ ({0.2*\useKV[repinterv]{Hauteur}},{-0.5*\useKV[repinterv]{Hauteur}}) ;
+ }%
+ }%
+ \IfStrEq{#3}{*}%
+ {}%
+ {%
+ \ifboolKV[tkzinterv]{AffValeurs}%
+ {%
+ \IfSubStr{\IntervPosValeurs}{above}
+ {%
+ \draw ({\ValMaxInterv},{0.5*\useKV[repinterv]{Hauteur}}) node[inner sep={3*\useKV[repinterv]{EpTrait}},\IntervPosValeurs,text={\useKV[tkzinterv]{Couleur}},font={\useKV[repinterv]{Police}}] {\ifboolKV[tkzinterv]{NumSup}{\num{#3}}{#3}} ;
+ }{}%
+ \IfSubStr{\IntervPosValeurs}{below}
+ {%
+ \draw ({\ValMaxInterv},{-0.5*\useKV[repinterv]{Hauteur}}) node[inner sep={3*\useKV[repinterv]{EpTrait}},\IntervPosValeurs,text={\useKV[tkzinterv]{Couleur}},font={\useKV[repinterv]{Police}}] {\ifboolKV[tkzinterv]{NumSup}{\num{#3}}{#3}} ;
+ }{}%
+ }{}%
+ \IfEndWith{\IntervType}{O}%
+ {%
+ \draw[line width={2*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}}] ({\ValMaxInterv},0)|-++ ({0.2*\useKV[repinterv]{Hauteur}},{0.5*\useKV[repinterv]{Hauteur}}) ;
+ \draw[line width={2*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}}] ({\ValMaxInterv},0)|-++ ({0.2*\useKV[repinterv]{Hauteur}},{-0.5*\useKV[repinterv]{Hauteur}}) ;
+ }%
+ {%
+ \draw[line width={2*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}}] ({\ValMaxInterv},0)|-++ ({-0.2*\useKV[repinterv]{Hauteur}},{0.5*\useKV[repinterv]{Hauteur}}) ;
+ \draw[line width={2*\useKV[repinterv]{EpTrait}},{\useKV[tkzinterv]{Couleur}}] ({\ValMaxInterv},0)|-++ ({-0.2*\useKV[repinterv]{Hauteur}},{-0.5*\useKV[repinterv]{Hauteur}}) ;
+ }%
+ }%
+ \end{scope}%
+}
+
\endinput \ No newline at end of file
diff --git a/macros/unicodetex/latex/bithesis/bithesis.dtx b/macros/unicodetex/latex/bithesis/bithesis.dtx
index f930ad8eed..10374a0ad4 100644
--- a/macros/unicodetex/latex/bithesis/bithesis.dtx
+++ b/macros/unicodetex/latex/bithesis/bithesis.dtx
@@ -21,10 +21,10 @@
%<thesis>\ProvidesExplClass{bithesis}
%<report>\ProvidesExplClass{bitreport}
%<beamer>\ProvidesExplClass{bitbeamer}
-%<cls>{2023-10-01}{3.6.0}{BIT Thesis Templates}
+%<cls>{2023-10-24}{3.6.1}{BIT Thesis Templates}
%
%<*driver>
-\ProvidesFile{bithesis.dtx}[2023/10/01 3.6.0 BIT Thesis Templates]
+\ProvidesFile{bithesis.dtx}[2023/10/24 3.6.1 BIT Thesis Templates]
\documentclass[letterpaper]{l3doc}
\usepackage{dtx-style}
@@ -772,6 +772,11 @@
% 控制英文是否使用 hyphen 进行换行
hyphen .bool_set:N = \l_@@_style_hyphen_bool,
hyphen .initial:n = {true},
+ % 控制公式和上下文的距离
+ mathAboveDisplaySkip .dim_set:N = \l_@@_style_math_above_display_skip_dim,
+ mathAboveDisplaySkip .initial:n = {3pt},
+ mathBelowDisplaySkip .dim_set:N = \l_@@_style_math_below_display_skip_dim,
+ mathBelowDisplaySkip .initial:n = {3pt},
}
% \end{macrocode}
%
@@ -878,11 +883,10 @@
\RequirePackage[table,xcdraw]{xcolor}
\RequirePackage{xeCJK}
\RequirePackage{titletoc}
-\RequirePackage{setspace}
\RequirePackage{graphicx}
\RequirePackage{fancyhdr}
\RequirePackage{pdfpages}
-\RequirePackage{setspace}
+\RequirePackage[nodisplayskipstretch]{setspace}
\RequirePackage{booktabs}
\RequirePackage{multirow}
\RequirePackage{tikz}
@@ -1281,8 +1285,8 @@
nameformat = {},
titleformat = {},
aftername = \hspace{8bp},
- beforeskip = 20bp plus 1ex minus .2ex,
- afterskip = 18bp plus .2ex,
+ beforeskip = 20bp,
+ afterskip = 17bp,
fixskip = true,
}
}
@@ -1299,8 +1303,8 @@
nameformat = {},
titleformat = {},
aftername = \hspace{7bp},
- beforeskip = 17bp plus 1ex minus .2ex,
- afterskip = 14bp plus .2ex,
+ beforeskip = 17bp,
+ afterskip = 17bp,
fixskip = true,
}
}
@@ -1320,8 +1324,8 @@
format={\l_@@_title_font_cs:n \raggedright \zihao{-4}},
nameformat = {},
titleformat = {},
- beforeskip=14bp plus 1ex minus .2ex,
- afterskip=14bp plus .2ex,
+ beforeskip=14bp,
+ afterskip=14bp,
fixskip=true,
}
}
@@ -1385,7 +1389,7 @@
numbering = false,
}
}
- \setstretch{1.53}
+ \linespread{1.53}\selectfont
\pagestyle{BIThesis}
% 表格内容默认使用五号字。
@@ -1420,7 +1424,7 @@
\pagestyle{BIThesis}
% 正文 22 磅的行距
\setlength{\parskip}{0em}
- \setstretch{1.53}
+ \linespread{1.53}\selectfont
% 修复脚注出现跨页的问题
\interfootnotelinepenalty=10000
}
@@ -1498,6 +1502,13 @@
\AtBeginDocument{
\cs_gset:Npn \thelstlisting {\thechapter\g_@@_label_divide_char_tl\arabic{lstlisting}}
\cs_gset:Npn \lstlistingname {\c_@@_label_code_tl}
+
+ % 默认的情况下,保留公式和上下文的一定间距。(会比 Word 稍宽一些)
+ \setlength{\abovedisplayskip}{\l_@@_style_math_above_display_skip_dim}
+ \setlength{\abovedisplayshortskip}{\l_@@_style_math_above_display_skip_dim}
+ \setlength{\belowdisplayskip}{\l_@@_style_math_below_display_skip_dim}
+ \setlength{\belowdisplayshortskip}{\l_@@_style_math_below_display_skip_dim}
+ %
}
\captionsetup[lstlisting]{font=small,labelsep=space}
% \end{macrocode}
@@ -1767,7 +1778,7 @@
\begin{titlepage}
\vskip 5cm
\begin{center}
- \setstretch{1.1}
+ \linespread{1.1}\selectfont
\begin{minipage}[t][19.7cm]{2em}
\begin{center}
{
@@ -2357,7 +2368,7 @@
\newpage
}
{3} {
- \setstretch{1.26}
+ \linespread{1.26}\selectfont
% 原创性声明部分
\begin{center}
\vspace*{-2bp}
@@ -2482,7 +2493,7 @@
{
\cleardoublepage
- \setstretch{1.53}
+ \linespread{1.53}\selectfont
\@@_if_bachelor_thesis:T {
\begin{center}
@@ -2552,7 +2563,7 @@
% \begin{macrocode}
\NewDocumentEnvironment {abstractEn} {}
{
- \setstretch{1.53}
+ \linespread{1.53}\selectfont
\@@_if_bachelor_thesis:T {
\begin{spacing}{0.95}
diff --git a/macros/unicodetex/latex/bithesis/bithesis.pdf b/macros/unicodetex/latex/bithesis/bithesis.pdf
index 7803e14a81..30446bfc25 100644
--- a/macros/unicodetex/latex/bithesis/bithesis.pdf
+++ b/macros/unicodetex/latex/bithesis/bithesis.pdf
Binary files differ