summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-11-10 03:04:54 +0000
committerNorbert Preining <norbert@preining.info>2023-11-10 03:04:54 +0000
commitd8b5161942976a522cdb1a7b580fe3886eea6bc6 (patch)
tree30b475f96e81b8b58bf4fbfb709a3e9e2551e16e /macros/latex
parent3425ad695d75cc781b0fe3412db3aa2ad5985959 (diff)
CTAN sync 202311100304
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/CHANGELOG.md43
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-english.lbx3
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-examples.bib13
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-ngerman.lbx9
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI.bbx41
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/README.md46
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/basic-test-de.tex (renamed from macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-test-de.tex)8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/basic-test-en.tex (renamed from macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-test-en.tex)6
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/mwe-de.tex13
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-lni/mwe-en.tex15
-rw-r--r--macros/latex/contrib/highlightx/doc/highlightx-doc.pdfbin181606 -> 181759 bytes
-rw-r--r--macros/latex/contrib/highlightx/doc/highlightx-doc.tex21
-rw-r--r--macros/latex/contrib/highlightx/tex/highlightx.sty5
-rw-r--r--macros/latex/contrib/ipsum/doc/ipsum-doc.pdfbin169585 -> 169604 bytes
-rw-r--r--macros/latex/contrib/ipsum/doc/ipsum-doc.tex7
-rw-r--r--macros/latex/contrib/ipsum/tex/ipsum.sty3
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV003.pngbin1781 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV004.pngbin2283 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV009.pngbin2668 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV010.pngbin2191 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV011.pngbin3036 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV012.pngbin2395 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV013.pngbin1534 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV027.pngbin4673 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV028.pngbin3033 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV029.pngbin3363 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV064.pngbin2022 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-CV067.pngbin2416 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E001.pngbin6042 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E002.pngbin5945 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E003.pngbin1192 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E004.pngbin5675 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E007.pngbin6206 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E008.pngbin9927 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E009.pngbin7190 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E010.pngbin5418 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E011.pngbin10680 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E012.pngbin6549 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E013.pngbin3030 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E014.pngbin7122 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E015.pngbin6551 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E016.pngbin5088 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E017.pngbin8842 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E018.pngbin5160 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E019.pngbin5060 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E020.pngbin6426 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E021.pngbin6364 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E022.pngbin3466 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E023.pngbin3147 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E024.pngbin7168 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E025.pngbin15315 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E026.pngbin5712 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E027.pngbin7576 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E028.pngbin8882 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E029.pngbin10068 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E030.pngbin5739 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E031.pngbin2136 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E032.pngbin11255 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E033.pngbin2049 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E034.pngbin2071 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E035.pngbin9069 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E036.pngbin10159 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E037.pngbin8670 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E038.pngbin10883 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E039.pngbin8335 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E040.pngbin9975 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E041.pngbin9755 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E042.pngbin10049 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E043.pngbin10960 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E044.pngbin4116 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E045.pngbin5908 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E046.pngbin5557 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E047.pngbin6264 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E048.pngbin6594 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E049.pngbin7301 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E050.pngbin6562 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E051.pngbin11120 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E052.pngbin9326 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E053.pngbin4710 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E054.pngbin12393 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E055.pngbin7389 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E056.pngbin4809 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E057.pngbin4024 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E058.pngbin4397 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E059.pngbin1556 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E060.pngbin7944 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E061.pngbin12398 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E062.pngbin5683 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E063.pngbin4997 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E064.pngbin4914 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E065.pngbin6516 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E067.pngbin7150 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E068.pngbin10603 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E069.pngbin7999 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-E070.pngbin4117 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F001.pngbin7261 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F002.pngbin8165 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F003.pngbin8463 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F004.pngbin8373 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F005.pngbin7900 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F006.pngbin9833 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F007.pngbin7943 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F008.pngbin6795 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F009.pngbin9214 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F010.pngbin7426 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F011.pngbin11115 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F012.pngbin7264 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F013.pngbin8108 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F014.pngbin6784 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F015.pngbin8404 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F016.pngbin11283 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F017.pngbin8540 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F018.pngbin7807 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-F019.pngbin14127 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M001.pngbin6728 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M002.pngbin11429 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M003.pngbin10985 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M004.pngbin13851 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M005.pngbin5276 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M006.pngbin9513 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M007.pngbin11478 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M008.pngbin9856 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M009.pngbin10755 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M010.pngbin8598 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M011.pngbin11141 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M012.pngbin9684 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M013.pngbin9843 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M014.pngbin8508 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M015.pngbin7686 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M016.pngbin10228 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M017.pngbin13665 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M018.pngbin11077 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M019.pngbin8182 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M020.pngbin8082 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M021.pngbin7939 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M022.pngbin9107 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M023.pngbin9950 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M024.pngbin9257 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M025.pngbin11770 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M026.pngbin11003 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M027.pngbin12144 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M028.pngbin10550 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M029.pngbin8958 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M030.pngbin10503 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M031.pngbin9994 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M032.pngbin11704 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M033.pngbin10194 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M034.pngbin10465 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M035.pngbin13166 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M036.pngbin8957 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M037.pngbin12392 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M038.pngbin13124 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M039.pngbin10833 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M040.pngbin11502 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M041.pngbin10787 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M042.pngbin10025 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M043.pngbin12908 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M044.pngbin10911 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M045.pngbin15559 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M046.pngbin9584 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M047.pngbin12228 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M048.pngbin15125 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M049.pngbin11786 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M050.pngbin8973 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M051.pngbin8981 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M052.pngbin12950 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M053.pngbin11319 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M054.pngbin10459 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M055.pngbin10608 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M056.pngbin9581 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M057.pngbin7743 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M058.pngbin9110 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M059.pngbin9567 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-M060.pngbin12184 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P001.pngbin9302 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P002.pngbin14908 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P003.pngbin15353 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P004.pngbin12488 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P005.pngbin12192 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P006.pngbin13487 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P007.pngbin12116 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P008.pngbin13835 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P009.pngbin12331 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P010.pngbin12159 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P011.pngbin14599 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P012.pngbin10912 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P013.pngbin14862 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P014.pngbin14512 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P015.pngbin13492 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P016.pngbin13899 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P017.pngbin11843 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P018.pngbin11354 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P019.pngbin12929 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P020.pngbin13468 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P021.pngbin11449 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P022.pngbin10965 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P023.pngbin10691 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P024.pngbin11906 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P025.pngbin12296 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P026.pngbin14272 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P027.pngbin10930 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P028.pngbin15087 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P029.pngbin12831 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P030.pngbin11512 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P031.pngbin12264 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P032.pngbin14195 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P033.pngbin14683 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P034.pngbin15893 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P035.pngbin15308 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P036.pngbin13204 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P037.pngbin13338 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P038.pngbin17217 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P039.pngbin17046 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P040.pngbin18336 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P041.pngbin10852 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P042.pngbin10377 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P043.pngbin14367 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P044.pngbin14074 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P045.pngbin12826 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P046.pngbin11779 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P047.pngbin15510 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P048.pngbin12871 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P049.pngbin13413 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P050.pngbin11908 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P051.pngbin12303 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P052.pngbin12702 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P053.pngbin13020 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P054.pngbin8349 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P055.pngbin14145 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P056.pngbin13656 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P057.pngbin12564 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P058.pngbin12715 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P059.pngbin15209 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P060.pngbin10121 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P061.pngbin12950 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P062.pngbin14234 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P063.pngbin13258 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P064.pngbin7860 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P065.pngbin15172 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P066.pngbin13698 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P067.pngbin11238 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P068.pngbin12950 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P069.pngbin10834 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P070.pngbin18725 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P071.pngbin11569 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P072.pngbin11335 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P073.pngbin12047 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-P074.pngbin13523 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W001.pngbin7116 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W002.pngbin16455 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W003.pngbin7923 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W004.pngbin11814 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W005.pngbin9434 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W006.pngbin8870 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W007.pngbin8657 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W008.pngbin8804 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W009.pngbin11260 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W010.pngbin9854 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W011.pngbin8470 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W012.pngbin8242 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W013.pngbin8845 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W014.pngbin9948 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W015.pngbin9178 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W016.pngbin12645 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W017.pngbin8371 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W018.pngbin9933 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W019.pngbin9100 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W020.pngbin8966 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W021.pngbin8584 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W022.pngbin7838 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W023.pngbin10287 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W024.pngbin7195 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W025.pngbin10311 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W026.pngbin8797 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W027.pngbin10047 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W028.pngbin9146 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W029.pngbin13347 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W030.pngbin9673 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W031.pngbin11022 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W032.pngbin11108 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W033.pngbin9090 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W034.pngbin9013 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W035.pngbin9152 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W036.pngbin14344 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W037.pngbin10610 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W038.pngbin10323 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W039.pngbin9071 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W040.pngbin12219 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W041.pngbin15523 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W042.pngbin11414 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W043.pngbin10344 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W044.pngbin10874 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W045.pngbin9400 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W046.pngbin11543 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W047.pngbin8623 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W048.pngbin8913 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W049.pngbin9811 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W050.pngbin9191 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W051.pngbin9776 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W052.pngbin8629 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W053.pngbin9054 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W054.pngbin8751 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W055.pngbin8956 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W056.pngbin6936 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W057.pngbin9624 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W058.pngbin11132 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W059.pngbin7906 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W060.pngbin8860 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W061.pngbin8030 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W062.pngbin12733 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W063.pngbin10930 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W064.pngbin7331 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W065.pngbin12767 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W066.pngbin11260 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W067.pngbin10475 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W068.pngbin10602 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W069.pngbin9857 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W070.pngbin8817 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W071.pngbin10554 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W072.pngbin11114 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W073.pngbin11043 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W074.pngbin9990 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W075.pngbin10789 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W076.pngbin9947 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W077.pngbin9157 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W078.pngbin9903 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W079.pngbin10850 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/images/ISO-W080.pngbin8845 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV003.pdfbin0 -> 1123 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV004.pdfbin0 -> 1861 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV009.pdfbin0 -> 1530 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV010.pdfbin0 -> 1307 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV011.pdfbin0 -> 4364 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV012.pdfbin0 -> 4636 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV013.pdfbin0 -> 1736 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV027.pdfbin0 -> 4901 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV028.pdfbin0 -> 6703 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV029.pdfbin0 -> 9946 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV064.pdfbin0 -> 1729 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV067.pdfbin0 -> 2733 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E001.pdfbin0 -> 1828 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E002.pdfbin0 -> 1824 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E003.pdfbin0 -> 971 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E004.pdfbin0 -> 1762 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E007.pdfbin0 -> 2068 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E008.pdfbin0 -> 1657 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E009.pdf69
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E010.pdfbin0 -> 1203 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E011.pdfbin0 -> 4272 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E012.pdfbin0 -> 4612 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E013.pdf71
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E014.pdfbin0 -> 4467 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E015.pdfbin0 -> 2117 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E016.pdfbin0 -> 1897 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E017.pdfbin0 -> 2562 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E018.pdfbin0 -> 1288 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E019.pdfbin0 -> 1281 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E020.pdfbin0 -> 1943 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E021.pdfbin0 -> 2852 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E022.pdfbin0 -> 1177 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E023.pdfbin0 -> 1172 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E024.pdfbin0 -> 1674 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E025.pdfbin0 -> 4345 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E026.pdfbin0 -> 1489 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E027.pdfbin0 -> 4814 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E028.pdfbin0 -> 6617 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E029.pdfbin0 -> 9864 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E030.pdfbin0 -> 1495 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E031.pdfbin0 -> 1721 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E032.pdfbin0 -> 3770 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E033.pdf69
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E034.pdf69
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E035.pdfbin0 -> 3820 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E036.pdfbin0 -> 4287 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E037.pdfbin0 -> 1959 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E038.pdfbin0 -> 4687 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E039.pdfbin0 -> 3955 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E040.pdfbin0 -> 1572 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E041.pdfbin0 -> 3792 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E042.pdfbin0 -> 3390 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E043.pdfbin0 -> 5583 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E044.pdfbin0 -> 3280 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E045.pdfbin0 -> 4814 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E046.pdfbin0 -> 4015 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E047.pdfbin0 -> 2346 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E048.pdfbin0 -> 2534 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E049.pdfbin0 -> 2423 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E050.pdfbin0 -> 4458 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E051.pdfbin0 -> 3907 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E052.pdfbin0 -> 2204 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E053.pdfbin0 -> 1886 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E054.pdfbin0 -> 3880 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E055.pdfbin0 -> 3269 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E056.pdfbin0 -> 2379 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E057.pdfbin0 -> 1169 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E058.pdf68
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E059.pdfbin0 -> 1136 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E060.pdfbin0 -> 2474 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E061.pdfbin0 -> 4273 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E062.pdfbin0 -> 1760 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E063.pdfbin0 -> 1878 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E064.pdfbin0 -> 1605 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E065.pdfbin0 -> 1808 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E067.pdfbin0 -> 2617 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E068.pdfbin0 -> 6730 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E069.pdfbin0 -> 3345 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E070.pdfbin0 -> 1621 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F001.pdfbin0 -> 1567 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F002.pdfbin0 -> 2714 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F003.pdfbin0 -> 1780 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F004.pdfbin0 -> 2131 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F005.pdfbin0 -> 2289 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F006.pdfbin0 -> 2183 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F007.pdfbin0 -> 3380 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F008.pdfbin0 -> 3755 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F009.pdfbin0 -> 2238 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F010.pdfbin0 -> 1862 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F011.pdfbin0 -> 4254 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F012.pdfbin0 -> 1792 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F013.pdfbin0 -> 1813 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F014.pdfbin0 -> 1735 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F015.pdfbin0 -> 1925 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F016.pdfbin0 -> 2653 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F017.pdfbin0 -> 2724 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F018.pdfbin0 -> 1943 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F019.pdfbin0 -> 2100 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M001.pdf69
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M002.pdfbin0 -> 1499 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M003.pdfbin0 -> 1608 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M004.pdfbin0 -> 2358 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M005.pdfbin0 -> 1109 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M006.pdfbin0 -> 2002 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M007.pdfbin0 -> 2092 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M008.pdfbin0 -> 1673 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M009.pdfbin0 -> 2297 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M010.pdfbin0 -> 1301 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M011.pdfbin0 -> 3054 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M012.pdf71
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M013.pdfbin0 -> 1849 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M014.pdf72
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M015.pdfbin0 -> 1271 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M016.pdfbin0 -> 1790 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M017.pdfbin0 -> 3757 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M018.pdfbin0 -> 2225 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M019.pdfbin0 -> 1772 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M020.pdfbin0 -> 1519 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M021.pdfbin0 -> 1351 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M022.pdfbin0 -> 1760 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M023.pdfbin0 -> 1596 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M024.pdfbin0 -> 1498 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M025.pdfbin0 -> 3246 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M026.pdfbin0 -> 1851 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M027.pdfbin0 -> 6227 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M028.pdfbin0 -> 2649 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M029.pdfbin0 -> 1879 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M030.pdfbin0 -> 6119 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M031.pdfbin0 -> 8180 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M032.pdfbin0 -> 5413 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M033.pdfbin0 -> 5446 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M034.pdfbin0 -> 5112 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M035.pdfbin0 -> 4825 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M036.pdfbin0 -> 3857 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M037.pdfbin0 -> 5183 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M038.pdfbin0 -> 11904 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M039.pdfbin0 -> 15091 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M040.pdfbin0 -> 16077 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M041.pdfbin0 -> 7136 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M042.pdfbin0 -> 5538 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M043.pdfbin0 -> 13741 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M044.pdfbin0 -> 3064 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M045.pdfbin0 -> 8883 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M046.pdfbin0 -> 6530 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M047.pdfbin0 -> 7106 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M048.pdfbin0 -> 15525 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M049.pdfbin0 -> 6205 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M050.pdfbin0 -> 3548 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M051.pdfbin0 -> 3544 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M052.pdfbin0 -> 4020 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M053.pdfbin0 -> 2284 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M054.pdfbin0 -> 4966 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M055.pdfbin0 -> 2010 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M056.pdfbin0 -> 1607 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M057.pdfbin0 -> 1246 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M058.pdfbin0 -> 2414 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M059.pdfbin0 -> 1469 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M060.pdfbin0 -> 2420 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P001.pdfbin0 -> 1197 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P002.pdfbin0 -> 1698 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P003.pdfbin0 -> 1972 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P004.pdfbin0 -> 1811 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P005.pdfbin0 -> 1768 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P006.pdfbin0 -> 2253 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P007.pdfbin0 -> 1676 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P008.pdf72
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P009.pdfbin0 -> 1869 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P010.pdfbin0 -> 1775 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P011.pdfbin0 -> 4499 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P012.pdfbin0 -> 1497 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P013.pdfbin0 -> 3162 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P014.pdfbin0 -> 2354 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P015.pdfbin0 -> 1812 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P016.pdfbin0 -> 8652 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P017.pdf73
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P018.pdfbin0 -> 1542 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P019.pdfbin0 -> 1772 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P020.pdfbin0 -> 2595 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P021.pdfbin0 -> 1562 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P022.pdf71
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P023.pdfbin0 -> 1576 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P024.pdfbin0 -> 1684 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P025.pdfbin0 -> 2175 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P026.pdfbin0 -> 3995 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P027.pdf74
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P028.pdfbin0 -> 2847 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P029.pdf73
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P030.pdfbin0 -> 2978 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P031.pdfbin0 -> 1582 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P032.pdfbin0 -> 1812 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P033.pdfbin0 -> 15245 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P034.pdfbin0 -> 13872 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P035.pdfbin0 -> 8281 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P036.pdfbin0 -> 2524 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P037.pdfbin0 -> 2542 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P038.pdfbin0 -> 2576 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P039.pdfbin0 -> 6372 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P040.pdfbin0 -> 3697 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P041.pdfbin0 -> 1640 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P042.pdfbin0 -> 1674 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P043.pdfbin0 -> 5266 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P044.pdfbin0 -> 3478 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P045.pdfbin0 -> 1783 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P046.pdfbin0 -> 2063 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P047.pdfbin0 -> 2517 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P048.pdfbin0 -> 1789 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P049.pdfbin0 -> 2190 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P050.pdfbin0 -> 1936 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P051.pdfbin0 -> 2248 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P052.pdfbin0 -> 2184 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P053.pdfbin0 -> 2191 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P054.pdfbin0 -> 2405 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P055.pdfbin0 -> 2247 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P056.pdfbin0 -> 1914 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P057.pdfbin0 -> 2349 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P058.pdfbin0 -> 2302 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P059.pdfbin0 -> 2945 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P060.pdfbin0 -> 1340 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P061.pdfbin0 -> 2408 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P062.pdfbin0 -> 3032 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P063.pdfbin0 -> 2419 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P064.pdfbin0 -> 2879 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P065.pdfbin0 -> 3193 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P066.pdfbin0 -> 2490 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P067.pdfbin0 -> 1517 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P068.pdfbin0 -> 2240 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P069.pdfbin0 -> 1825 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P070.pdfbin0 -> 5310 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P071.pdfbin0 -> 1913 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P072.pdfbin0 -> 1844 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P073.pdfbin0 -> 2703 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P074.pdfbin0 -> 2906 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P075.pdfbin0 -> 1702 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W001.pdf69
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W002.pdfbin0 -> 10194 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W003.pdf69
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W004.pdfbin0 -> 1684 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W005.pdfbin0 -> 2585 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W006.pdfbin0 -> 1768 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W007.pdfbin0 -> 2221 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W008.pdfbin0 -> 2179 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W009.pdfbin0 -> 2430 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W010.pdfbin0 -> 1731 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W011.pdfbin0 -> 1851 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W012.pdfbin0 -> 1064 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W013.pdfbin0 -> 3018 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W014.pdfbin0 -> 2159 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W015.pdfbin0 -> 1933 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W016.pdfbin0 -> 2628 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W017.pdfbin0 -> 1280 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W018.pdfbin0 -> 2619 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W019.pdfbin0 -> 1803 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W020.pdfbin0 -> 1611 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W021.pdfbin0 -> 2127 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W022.pdfbin0 -> 1671 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W023.pdfbin0 -> 2778 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W024.pdfbin0 -> 1398 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W025.pdfbin0 -> 3060 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W026.pdfbin0 -> 1754 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W027.pdfbin0 -> 1525 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W028.pdfbin0 -> 2278 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W029.pdfbin0 -> 4426 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W030.pdfbin0 -> 2473 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W031.pdfbin0 -> 2764 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W032.pdfbin0 -> 2952 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W033.pdfbin0 -> 3108 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W034.pdfbin0 -> 3383 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W035.pdfbin0 -> 2962 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W036.pdfbin0 -> 23961 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W037.pdfbin0 -> 8525 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W038.pdfbin0 -> 7126 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W039.pdfbin0 -> 1690 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W040.pdfbin0 -> 12232 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W041.pdfbin0 -> 42519 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W042.pdfbin0 -> 1485 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W043.pdfbin0 -> 3520 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W044.pdfbin0 -> 2163 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W045.pdfbin0 -> 4400 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W046.pdfbin0 -> 5475 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W047.pdfbin0 -> 3771 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W048.pdfbin0 -> 3758 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W049.pdfbin0 -> 5523 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W050.pdfbin0 -> 3742 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W051.pdfbin0 -> 2539 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W052.pdfbin0 -> 4373 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W053.pdfbin0 -> 4771 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W054.pdfbin0 -> 2853 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W055.pdfbin0 -> 2162 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W056.pdfbin0 -> 2291 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W057.pdfbin0 -> 3440 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W058.pdfbin0 -> 5427 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W059.pdfbin0 -> 1685 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W060.pdfbin0 -> 4166 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W061.pdfbin0 -> 2533 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W062.pdfbin0 -> 7282 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W063.pdfbin0 -> 5035 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W064.pdfbin0 -> 1691 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W065.pdfbin0 -> 7289 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W066.pdfbin0 -> 6096 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W067.pdfbin0 -> 3205 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W068.pdfbin0 -> 2524 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W069.pdfbin0 -> 2964 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W070.pdfbin0 -> 1961 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W071.pdfbin0 -> 6626 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W072.pdfbin0 -> 1612 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W073.pdfbin0 -> 2727 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W074.pdfbin0 -> 2440 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W075.pdfbin0 -> 3039 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W076.pdfbin0 -> 2006 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W077.pdfbin0 -> 2607 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W078.pdfbin0 -> 1523 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W079.pdfbin0 -> 1778 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W080.pdfbin0 -> 1798 bytes
-rw-r--r--macros/latex/contrib/isosafety/isosafety.dtx20
-rw-r--r--macros/latex/contrib/isosafety/isosafety.ins2
-rw-r--r--macros/latex/contrib/isosafety/isosafety.pdfbin128680 -> 142768 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.dtx14
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin934049 -> 934856 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx14
-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.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin623137 -> 623311 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1766132 -> 1766729 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx2
-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.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.pdfbin557934 -> 558186 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin151750 -> 151991 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.dtx2
-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.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx2
-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.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-types.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx9
-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.dtx19
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx2
-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.pdfbin82683 -> 82683 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx2
-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.dtx44
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin296258 -> 296454 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin242903 -> 243093 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin218059 -> 218244 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-build.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7490669 -> 7492256 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf (renamed from macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf)bin241332 -> 243076 bytes
-rw-r--r--macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.tex (renamed from macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex)11
-rw-r--r--macros/latex/contrib/profmaquette/latex/ProfMaquette.sty456
-rw-r--r--macros/latex/contrib/q-and-a/Q-and-A.cls19
-rw-r--r--macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdfbin101697 -> 102996 bytes
-rw-r--r--macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex5
-rw-r--r--macros/latex/contrib/robust-externalize/robust-externalize.pdfbin653662 -> 740983 bytes
-rw-r--r--macros/latex/contrib/robust-externalize/robust-externalize.sty1335
-rw-r--r--macros/latex/contrib/robust-externalize/robust-externalize.tex760
-rw-r--r--macros/latex/contrib/ucs/README.txt4
-rw-r--r--macros/latex/contrib/ucs/data/uni-480.def67
-rw-r--r--macros/latex/contrib/ucs/data/uni-global.def12
-rw-r--r--macros/latex/contrib/ucs/data/uninames.dat631
-rw-r--r--macros/latex/contrib/ucs/email.txt93
-rw-r--r--macros/latex/contrib/ucs/hyperref-1.pdfbin0 -> 27377 bytes
-rw-r--r--macros/latex/contrib/ucs/languages.ps.gzbin329169 -> 330394 bytes
-rw-r--r--macros/latex/contrib/ucs/ucs.dtx29
-rw-r--r--macros/latex/contrib/ucs/ucs.pdfbin1138195 -> 1152655 bytes
763 files changed, 3934 insertions, 1072 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/CHANGELOG.md b/macros/latex/contrib/biblatex-contrib/biblatex-lni/CHANGELOG.md
index e1862cdf15..5cb8215bc4 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-lni/CHANGELOG.md
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/CHANGELOG.md
@@ -1,36 +1,61 @@
# Changelog
All notable changes to this project will be documented in this file.
-This project **does not** adhere to [Semantic Versioning](http://semver.org/).
-The markdown syntax is inspired by the conventions proposed by [keepachangelog.com](http://keepachangelog.com/).
+The markdown syntax is inspired by the conventions proposed by [keepachangelog.com](https://keepachangelog.com/).
-## [v0.5] – 2019-02-03
+## [v0.6] - 2023-11-09
+
+### Changed
+
+* Added `doi` to the output. [#17](https://github.com/gi-ev/biblatex-lni/pull/17)
+* Volume and number are now output using parentheses. Example: 44(3) (instead of 44/3). [#20](https://github.com/gi-ev/biblatex-lni/pull/20)
+
+### Fixed
+
+* The font size of the bibliography is now `\small`. [#11](https://github.com/gi-ev/biblatex-lni/pull/11)
+* Heading of references section in German documents is "Literaturverzeichnis". [#24](https://github.com/gi-ev/biblatex-lni/pull/24)
+* Date is showing the year only. [#13](https://github.com/gi-ev/biblatex-lni/pull/13)
+
+## [v0.5] - 2019-02-03
+
+### Added
* Add support for ISBN and note to `@book`. Fixes [LNI/#74](https://github.com/gi-ev/LNI/issues/74).
-## [v0.4] – 2017-01-23
+## [v0.4] - 2017-01-23
+
+### Fixed
* The year is now printed after the pages in InCollection.
* url style is not changed to sans serif any more.
-## [v0.3] – 2016-10-30
+## [v0.3] - 2016-10-30
+
+### Added
* Support for empty editor in `InProceedings` and `InCollection`
* Explicit support for `InCollection`
+
+### Changed
+
* Improved examples in `LNI-examples.bib`
-## [v0.2] – 2016-10-13
+## [v0.2] - 2016-10-13
+
+### Fixed
-* Labels do not include prefixes any more
* `\citeauthor` prints one author if one author, two authors if two authors, and the first author + "et al." in the case of three or more
+* Labels do not include prefixes any more
* German: "et al." is printed instead of "u.a."
-## v0.1 – 2016-10-07
+## [v0.1] - 2016-10-07
Initial release.
+[v0.1]: https://github.com/gi-ev/biblatex-lni/tree/v0.1
[v0.2]: https://github.com/latextemplates/biblatex-lni/compare/v0.1...v0.2
[v0.3]: https://github.com/latextemplates/biblatex-lni/compare/v0.2...v0.3
[v0.4]: https://github.com/latextemplates/biblatex-lni/compare/v0.3...v0.4
[v0.5]: https://github.com/latextemplates/biblatex-lni/compare/v0.4...v0.5
-[Unreleased]: https://github.com/latextemplates/biblatex-lni/compare/v0.5...HEAD
+[v0.6]: https://github.com/latextemplates/biblatex-lni/compare/v0.5...v0.6
+[Unreleased]: https://github.com/latextemplates/biblatex-lni/compare/v0.6...HEAD
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-english.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-english.lbx
index d857bcab8a..4d740550ac 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-english.lbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-english.lbx
@@ -14,9 +14,8 @@
[\LNI@lbxid]
\InheritBibliographyExtras{english}
-
\DeclareBibliographyStrings{%
inherit = {english},
in = {{In}{In}}
}
-\endinput \ No newline at end of file
+\endinput
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-examples.bib b/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-examples.bib
index 70d6bd3914..db6821802f 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-examples.bib
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-examples.bib
@@ -185,4 +185,17 @@
note = {Quick answers to common problems},
}
+@Article{jabref,
+ author = {Oliver Kopp and Carl Christian Snethlage and Christoph Schwentker},
+ title = {JabRef: BibTeX-based literature management software},
+ journal = {TUGboat},
+ issn = {0896-3207},
+ issue = {138},
+ volume = {44},
+ number = {3},
+ pages = {441--447},
+ doi = {10.47397/tb/44-3/tb138kopp-jabref},
+ year = {2023},
+}
+
@Comment{jabref-meta: databaseType:biblatex;}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-ngerman.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-ngerman.lbx
index 886decdd8d..1449c94ec3 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-ngerman.lbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-ngerman.lbx
@@ -1,6 +1,6 @@
% LNI --%
%
-% Copyright (c) 2016 Lukas C. Bossert, Georg Duffner, Oliver Kopp
+% Copyright (c) 2016-2023 Lukas C. Bossert, Georg Duffner, Oliver Kopp
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,8 +16,9 @@
\InheritBibliographyExtras{ngerman}
\DeclareBibliographyStrings{%
- inherit = {ngerman},
- urlseen = {{Stand}{Stand}},
- andothers = {{et al\adddot}{et al\adddot}}
+ inherit = {ngerman},
+ andothers = {{et al\adddot}{et al\adddot}},
+ references = {{Literaturverzeichnis}{Literaturverzeichnis}},
+ urlseen = {{Stand}{Stand}}
}
\endinput
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI.bbx
index ec5f0df8c1..fce3e0e8d1 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI.bbx
@@ -1,6 +1,6 @@
% LNI --%
%
-% Copyright (c) 2016 Lukas C. Bossert, Georg Duffner, Oliver Kopp
+% Copyright (c) 2016-2023 Lukas C. Bossert, Georg Duffner, Oliver Kopp
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -9,8 +9,8 @@
% 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.
-\def\LNI@date{2019-02-03}
-\def\LNI@version{0.5}
+\def\LNI@date{2023-11-09}
+\def\LNI@version{0.6}
\def\LNI@bbxid{\LNI@date\space v\LNI@version\space biblatex-LNI bibliography style (LCB/GD/OK)}
\def\LNI@cbxid{\LNI@date\space v\LNI@version\space biblatex-LNI citation style (LCB/GD/OK)}
\def\LNI@lbxid{\LNI@date\space v\LNI@version\space biblatex-LNI localization (LCB/GD/OK)}
@@ -42,10 +42,14 @@
maxcitenames = 2,
eprint = true,
url = true,
- doi = false,
+ doi = true,
isbn = true,
- backref = false
+ backref = false,
+ date = year,
}
+
+\renewcommand*{\bibfont}{\small} % font size 9pt required by LNI template
+
\DeclareRedundantLanguages{ngerman}{german,ngerman,austrian,naustrian}
\DeclareRedundantLanguages{english,american}{english,american,british,%
canadian,australian,newzealand,USenglish,UKenglish}
@@ -64,9 +68,17 @@
\renewcommand*{\newunitpunct}{\addcomma\space}
\renewcommand{\multinamedelim}{\addsemicolon\space}
\renewcommand{\finalnamedelim}{\multinamedelim}
-\newcommand*{\volnumdelim}{\addslash}
\newcommand*{\aftertitledelim}{\addperiod\addspace}
+% Source: https://tex.stackexchange.com/a/81573/9075
+\renewbibmacro*{volume+number+eid}{%
+ \printfield{volume}%
+ \setunit*{\addnbthinspace}%
+ \printfield{number}%
+ \setunit{\addcomma\space}%
+ \printfield{eid}}
+\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}
+
% Don't uppercase name prefixes
\renewbibmacro*{begentry}{\midsentence}
@@ -172,8 +184,7 @@
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
- {\printfield{volume}%
- \printfield{part}}
+ {\usebibmacro{volume+number+eid}}
{}%
\newunit
\printfield{volumes}%
@@ -216,8 +227,7 @@
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
- {\printfield{volume}%
- \printfield{part}}
+ {\usebibmacro{volume+number+eid}}
{}%
\newunit
\printfield{volumes}%
@@ -262,8 +272,7 @@
\usebibmacro{event+venue+date}%
\printunit{\aftertitledelim}\newblock
\iffieldundef{maintitle}
- {\printfield{volume}%
- \printfield{part}}
+ {\usebibmacro{volume+number+eid}}
{}%
\newunit
\printfield{volumes}%
@@ -308,8 +317,7 @@
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
- {\printfield{volume}%
- \printfield{part}}
+ {\usebibmacro{volume+number+eid}}
{}%
\newunit
\printfield{volumes}%
@@ -362,10 +370,7 @@
{\newunit
\printfield{series}%
\setunit{\addspace}}%
- \printfield{volume}%
- \printtext{\volnumdelim}%
- \printfield{number}%
- \setunit{\addspace}%
+ \usebibmacro{volume+number+eid}%
\usebibmacro{issue}%
\newunit
\usebibmacro{byeditor+others}%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-lni/README.md
index 16f91d70a5..e1a19dee70 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-lni/README.md
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/README.md
@@ -1,13 +1,35 @@
-# biblatex-lni [![Build Status](https://circleci.com/gh/gi-ev/biblatex-lni/tree/master.svg?style=shield)](https://circleci.com/gh/gi-ev/biblatex-lni/) [![CTAN](https://img.shields.io/badge/CTAN-biblatex--lni-blue.svg?style=flat-square)](https://ctan.org/pkg/biblatex-lni)
+# biblatex-lni
-This is a [biblatex] style for [LNI], the Lecture Notes in Informatics of the [Gesellschaft für Informatik e.V.].
+This is a [biblatex] style for the [Lecture Notes in Informatics (LNI)](https://gi.de/service/publikationen/lni) of the [Gesellschaft für Informatik e.V.]
It requires at least [biblatex 3.5] and [biber] 2.6.
-## Usage
+> This style is available on CTAN at <https://ctan.org/pkg/biblatex-lni> and should directly be usable in your LaTeX distribution.
-This style has no specific requirements, thus you can just pass `style=LNI` as parameter to biblatex.
+## Usage in the context of the LNI class
-If you include the template in an existing document, following lines are recommended
+Typically, this class is used in the context of LNI publications, which are typeset using the [lni package](https://ctan.org/pkg/lni).
+
+```latex
+\documentclass[biblatex,english]{lni}
+\bibliography{LNI-examples.bib}
+\begin{document}
+\title{Title}
+\author{Firstname Lastname}
+\maketitle
+\begin{abstract}
+Text
+\end{abstract}
+\section{Introduction}
+Text~\cite{jabref}.
+\printbibliography
+\end{document}
+```
+
+## Usage outside LNI class
+
+This style has no specific requirements, thus you can just pass `style=LNI` as parameter to [biblatex].
+
+If you include the template in an existing document, following lines are recommended:
```latex
\usepackage[english]{babel}
@@ -25,22 +47,20 @@ Use `biber` instead of `bibtex` to generate the bibliography entries.
## Source and Feedback
The source of this package is maintained at <https://github.com/gi-ev/biblatex-lni>.
-This site also allows for filing issues in case something strange is encontered.
+This site also allows for filing issues in case something strange is encountered.
## License
-Copyright (c) 2016 Lukas C. Bossert, Georg Duffner, Oliver Kopp
+Copyright (c) 2016-2023 Lukas C. Bossert, Georg Duffner, Oliver Kopp
This work has the LPPL maintenance status _maintained_.
The current maintainer of this work is Oliver Kopp.
-
This package may be distributed under the terms of the LaTeX Project
Public License, as described in lppl.txt in the base LaTeX distribution.
Either version 1.3 or, at your option, any later version.
- [biber]: https://github.com/plk/biber#overview
- [biblatex]: https://github.com/plk/biblatex#overview
- [biblatex 3.5]: https://github.com/plk/biblatex/blob/dev/doc/latex/biblatex/CHANGES.org#release-notes-for-version-35
- [Gesellschaft für Informatik e.V.]: https://www.gi.de
- [LNI]: https://www.gi.de/service/publikationen/lni/autorenrichtlinien.html
+[biber]: https://github.com/plk/biber#overview
+[biblatex]: https://github.com/plk/biblatex#overview
+[biblatex 3.5]: https://github.com/plk/biblatex/blob/dev/doc/latex/biblatex/CHANGES.org#release-notes-for-version-35
+[Gesellschaft für Informatik e.V.]: https://gi.de
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-test-de.tex b/macros/latex/contrib/biblatex-contrib/biblatex-lni/basic-test-de.tex
index 1e9abc1243..542d3eaed2 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-test-de.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/basic-test-de.tex
@@ -2,7 +2,7 @@
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
-\usepackage[
+\usepackage[
backend=biber,
style=LNI
]{biblatex}
@@ -13,10 +13,10 @@
Verlinkte Autoren:
\begin{itemize}
- \item Vier Autoren: \citeauthor{ABCD02} \cite{ABCD02}
- \item Drei Autoren: \citeauthor{ABC01} \cite{ABC01}
- \item Zwei Autoren: \citeauthor{AB00} \cite{AB00} und \citeauthor{vdAW2013} \cite{vdAW2013}.
\item Ein Autor: \citeauthor{Ez10} \cite{Ez10}, \citeauthor{Go10} \cite{Go10} und \citeauthor{latexcookbook} \cite{latexcookbook}.
+ \item Zwei Autoren: \citeauthor{AB00} \cite{AB00} und \citeauthor{vdAW2013} \cite{vdAW2013}.
+ \item Drei Autoren: \citeauthor{ABC01} \cite{ABC01} sowie \citeauthor{jabref} \cite{jabref}.
+ \item Vier Autoren: \citeauthor{ABCD02} \cite{ABCD02}.
\item Am Satzanfang: \Citeauthor{Go10}.
\end{itemize}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-test-en.tex b/macros/latex/contrib/biblatex-contrib/biblatex-lni/basic-test-en.tex
index e4f5abcf81..c367254ed7 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-lni/LNI-test-en.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/basic-test-en.tex
@@ -13,10 +13,10 @@
Hyperlinked authors:
\begin{itemize}
- \item Four authors: \citeauthor{ABCD02} \cite{ABCD02}
- \item Three authors: \citeauthor{ABC01} \cite{ABC01}
- \item Two authors: \citeauthor{AB00} \cite{AB00} and \citeauthor{vdAW2013} \cite{vdAW2013}.
\item One author: \citeauthor{Ez10} \cite{Ez10}, \citeauthor{Go10} \cite{Go10}, and \citeauthor{latexcookbook} \cite{latexcookbook}.
+ \item Two authors: \citeauthor{AB00} \cite{AB00} and \citeauthor{vdAW2013} \cite{vdAW2013}.
+ \item Three authors: \citeauthor{ABC01} \cite{ABC01} and \citeauthor{jabref} \cite{jabref}.
+ \item Four authors: \citeauthor{ABCD02} \cite{ABCD02}
\item At the beginning of a sentence: \Citeauthor{Go10}.
\end{itemize}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/mwe-de.tex b/macros/latex/contrib/biblatex-contrib/biblatex-lni/mwe-de.tex
new file mode 100644
index 0000000000..fa1d63b0ee
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/mwe-de.tex
@@ -0,0 +1,13 @@
+\documentclass[biblatex]{lni}
+\bibliography{LNI-examples.bib}
+\begin{document}
+\title{Titel}
+\author{Vorname Nachname}
+\maketitle
+\begin{abstract}
+Text
+\end{abstract}
+\section{Einleitung}
+Text~\cite{jabref}.
+\printbibliography
+\end{document}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-lni/mwe-en.tex b/macros/latex/contrib/biblatex-contrib/biblatex-lni/mwe-en.tex
new file mode 100644
index 0000000000..ae449ffcaf
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-lni/mwe-en.tex
@@ -0,0 +1,15 @@
+% copied from README.md
+
+\documentclass[biblatex,english]{lni}
+\bibliography{LNI-examples.bib}
+\begin{document}
+\title{Title}
+\author{Firstname Lastname}
+\maketitle
+\begin{abstract}
+Text
+\end{abstract}
+\section{Introduction}
+Text~\cite{jabref}.
+\printbibliography
+\end{document}
diff --git a/macros/latex/contrib/highlightx/doc/highlightx-doc.pdf b/macros/latex/contrib/highlightx/doc/highlightx-doc.pdf
index aa5907c374..c842d6c893 100644
--- a/macros/latex/contrib/highlightx/doc/highlightx-doc.pdf
+++ b/macros/latex/contrib/highlightx/doc/highlightx-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/highlightx/doc/highlightx-doc.tex b/macros/latex/contrib/highlightx/doc/highlightx-doc.tex
index 94a8976bf6..71df6851a0 100644
--- a/macros/latex/contrib/highlightx/doc/highlightx-doc.tex
+++ b/macros/latex/contrib/highlightx/doc/highlightx-doc.tex
@@ -33,8 +33,8 @@
\hypersetup{pdfborder=0 0 0}
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.4}
-\def\TPdate{5 novembre 2023}
+\def\TPversion{0.1.5}
+\def\TPdate{9 novembre 2023}
\usepackage{tcolorbox}
\tcbuselibrary{skins,hooks}
\sethlcolor{lightgray!25}
@@ -170,18 +170,6 @@ L'idée du package \MontreCode{highlightx} est de proposer des commandes basique
{\small\faBomb}~Compte tenu du code utilisé pour le surlignage des paragraphes, il se peut que des dysfonctionnements apparaissent, notamment liés à \MontreCode{babel} et à l'utilisation de caractères \textit{actifs}.
-%{\small\faBomb}~En ce qui concerne les paragraphes, le package \MontreCode{soul} est performant dans le cas où la police courante est en \MontreCode{\textbackslash normalsize}, dans le cas contraire, il se peut que le rendu ne soit pas optimal. Il se peut également que le surlignage ne donne pas un résultat optimal avec certains caractères, comme par exemple \MontreCode{;}.
-
-%{\small\faBomb}~Pour le moment le surlignement avec effet en mode paragraphe n'est pas compatible avec des environnements (comme \MontreCode{tcolorbox}), donc dans ce cas il n'y aura pas d'effet possible.
-%
-%\medskip
-%
-%{\small\faAngellist}~Le code permettant de surligner un paragraphe avec effet vient d'une solution proposée par l'internaute \MontreCode{gusbrs}, dans un fil de discussion du site \MontreCode{tex.stackexchange}, et sous licence CC BY-SA :
-%
-%\smallskip
-%
-%\hfill\url{https://tex.stackexchange.com/questions/5959/cool-text-highlighting-in-latex}\hfill~
-
\subsection{Chargement}
Le package se charge dans le préambule, via \MontreCode{\textbackslash usepackage\{highlightx\}}.
@@ -191,9 +179,6 @@ Les seuls packages chargés sont :
\begin{itemize}
\item \MontreCode{soul}, \MontreCode{xstring} et \MontreCode{simplekv}.
\item \MontreCode{tikz} avec les librairies \MontreCode{tikzmark,calc,decorations.pathmorphing,nbabel}.
- %\item \MontreCode{soul}, \MontreCode{atbegshi}, \MontreCode{etoolbox} ;
- %\item \MontreCode{tikz} avec les librairies \MontreCode{tikzmark,calc,decorations.pathmorphing} ;
- %\item \MontreCode{xstring} et \MontreCode{simplekv}.
\end{itemize}
Si l'utilisateur ne souhaite pas charger la librairie \MontreCode{babel} de \TikZ, il suffit de charger le package avec l'option \MontreCode{[nobabel]}.
@@ -440,7 +425,7 @@ There's also english versions of the commands and keys :
%Hightlight formula (math mode), with or without effect
\HighlightFormula
%Basic highlight text, with or without effect
-\TextHighlight
+\HighlightText
\end{codehigh}
\subsection{Highlight formula}
diff --git a/macros/latex/contrib/highlightx/tex/highlightx.sty b/macros/latex/contrib/highlightx/tex/highlightx.sty
index 7f1375d532..d9af8868c2 100644
--- a/macros/latex/contrib/highlightx/tex/highlightx.sty
+++ b/macros/latex/contrib/highlightx/tex/highlightx.sty
@@ -3,9 +3,10 @@
% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{highlightx}[2023/11/05 0.1.4 Macros pour surligner du texte, meme en mode paragraphe]
+\ProvidesPackage{highlightx}[2023/11/09 0.1.5 Macros pour surligner du texte, meme en mode paragraphe]
%====HISTORIQUE
+% v 0.1.5 Mise à jour de la doc
% v 0.1.4 Passage \tikzstyle vers \tikzset (merci à Sam C.)
% v 0.1.3 Correction d'un bug avec le caractère ; (merci à Denis B.)
% v 0.1.2 Version étoilée pour \genhighlightpar afin d'activer \NoAutoSpacing + retour du code paragraphe main levée
@@ -32,8 +33,6 @@
%====COMMANDES POUR FORMULES
\tikzset{encadreformule/.style={decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}}}
\tikzset{borderformula/.style={decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}}}
-%\tikzstyle{encadreformule}=[decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}]
-%\tikzstyle{borderformula}=[decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}]
\defKV[surlignformule]{%
Fond=\def\surlignformulefond{#1},%
diff --git a/macros/latex/contrib/ipsum/doc/ipsum-doc.pdf b/macros/latex/contrib/ipsum/doc/ipsum-doc.pdf
index 6bfc05c3df..ed8b6003cc 100644
--- a/macros/latex/contrib/ipsum/doc/ipsum-doc.pdf
+++ b/macros/latex/contrib/ipsum/doc/ipsum-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/ipsum/doc/ipsum-doc.tex b/macros/latex/contrib/ipsum/doc/ipsum-doc.tex
index 65baec2bce..3b5133b056 100644
--- a/macros/latex/contrib/ipsum/doc/ipsum-doc.tex
+++ b/macros/latex/contrib/ipsum/doc/ipsum-doc.tex
@@ -23,8 +23,8 @@
\hypersetup{pdfborder=0 0 0}
\usepackage[margin=2cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.0}
-\def\TPdate{07/11/2023}
+\def\TPversion{0.1.1}
+\def\TPdate{09/11/2023}
\usepackage{tcolorbox}
\tcbuselibrary{skins,hooks}
\usepackage{soul}
@@ -140,7 +140,7 @@ To load the package, simply use :
\begin{quote}
\begin{verbatim}
-\usepackage{blindtext}
+\usepackage{ipsum}
\end{verbatim}
\end{quote}
@@ -150,6 +150,7 @@ To load the package, simply use :
\begin{quote}
\begin{verbatim}
+0.1.0 : Fix typo in doc
0.1.0 : Initial version
\end{verbatim}
\end{quote}
diff --git a/macros/latex/contrib/ipsum/tex/ipsum.sty b/macros/latex/contrib/ipsum/tex/ipsum.sty
index 526f10a413..1264fb4f85 100644
--- a/macros/latex/contrib/ipsum/tex/ipsum.sty
+++ b/macros/latex/contrib/ipsum/tex/ipsum.sty
@@ -3,9 +3,10 @@
% Source : https://ipsum.one/
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ipsum}[2023/11/07 0.1.0 Multilanguage simply dummy texts]
+\ProvidesPackage{ipsum}[2023/11/09 0.1.1 Multilanguage simply dummy texts]
%====HISTORIQUE
+% v 0.1.1 Fix typo in doc
% v 0.1.0 Initial version
%====PACKAGES
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV003.png b/macros/latex/contrib/isosafety/images/ISO-CV003.png
deleted file mode 100644
index 7a6654eb27..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV003.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV004.png b/macros/latex/contrib/isosafety/images/ISO-CV004.png
deleted file mode 100644
index 8934b0aa4e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV004.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV009.png b/macros/latex/contrib/isosafety/images/ISO-CV009.png
deleted file mode 100644
index f3001d6410..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV009.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV010.png b/macros/latex/contrib/isosafety/images/ISO-CV010.png
deleted file mode 100644
index 46bc76dec4..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV010.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV011.png b/macros/latex/contrib/isosafety/images/ISO-CV011.png
deleted file mode 100644
index 18716d14ca..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV011.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV012.png b/macros/latex/contrib/isosafety/images/ISO-CV012.png
deleted file mode 100644
index ebf43111a2..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV012.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV013.png b/macros/latex/contrib/isosafety/images/ISO-CV013.png
deleted file mode 100644
index 69e7fdb649..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV013.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV027.png b/macros/latex/contrib/isosafety/images/ISO-CV027.png
deleted file mode 100644
index 49bedd3edf..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV027.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV028.png b/macros/latex/contrib/isosafety/images/ISO-CV028.png
deleted file mode 100644
index f454e4fbee..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV028.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV029.png b/macros/latex/contrib/isosafety/images/ISO-CV029.png
deleted file mode 100644
index 8ad6a62f8e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV029.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV064.png b/macros/latex/contrib/isosafety/images/ISO-CV064.png
deleted file mode 100644
index 18c8243d2d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV064.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-CV067.png b/macros/latex/contrib/isosafety/images/ISO-CV067.png
deleted file mode 100644
index a6e0a4ceb5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-CV067.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E001.png b/macros/latex/contrib/isosafety/images/ISO-E001.png
deleted file mode 100644
index b5c45df954..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E001.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E002.png b/macros/latex/contrib/isosafety/images/ISO-E002.png
deleted file mode 100644
index f12188d46c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E002.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E003.png b/macros/latex/contrib/isosafety/images/ISO-E003.png
deleted file mode 100644
index b48952818d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E003.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E004.png b/macros/latex/contrib/isosafety/images/ISO-E004.png
deleted file mode 100644
index 2051632145..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E004.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E007.png b/macros/latex/contrib/isosafety/images/ISO-E007.png
deleted file mode 100644
index a05df10c88..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E007.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E008.png b/macros/latex/contrib/isosafety/images/ISO-E008.png
deleted file mode 100644
index d68ce41750..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E008.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E009.png b/macros/latex/contrib/isosafety/images/ISO-E009.png
deleted file mode 100644
index 0f416aadc5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E009.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E010.png b/macros/latex/contrib/isosafety/images/ISO-E010.png
deleted file mode 100644
index 4551fc06c3..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E010.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E011.png b/macros/latex/contrib/isosafety/images/ISO-E011.png
deleted file mode 100644
index 90bc01caf5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E011.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E012.png b/macros/latex/contrib/isosafety/images/ISO-E012.png
deleted file mode 100644
index ddae8591f0..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E012.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E013.png b/macros/latex/contrib/isosafety/images/ISO-E013.png
deleted file mode 100644
index eb6b7b0799..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E013.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E014.png b/macros/latex/contrib/isosafety/images/ISO-E014.png
deleted file mode 100644
index 370ba47518..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E014.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E015.png b/macros/latex/contrib/isosafety/images/ISO-E015.png
deleted file mode 100644
index 4b8084dc8e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E015.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E016.png b/macros/latex/contrib/isosafety/images/ISO-E016.png
deleted file mode 100644
index 8e41bdc0d4..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E016.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E017.png b/macros/latex/contrib/isosafety/images/ISO-E017.png
deleted file mode 100644
index 1459c49030..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E017.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E018.png b/macros/latex/contrib/isosafety/images/ISO-E018.png
deleted file mode 100644
index 18519c6738..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E018.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E019.png b/macros/latex/contrib/isosafety/images/ISO-E019.png
deleted file mode 100644
index 4c975b2bf5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E019.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E020.png b/macros/latex/contrib/isosafety/images/ISO-E020.png
deleted file mode 100644
index 70e1dc2f7e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E020.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E021.png b/macros/latex/contrib/isosafety/images/ISO-E021.png
deleted file mode 100644
index 039177dcfe..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E021.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E022.png b/macros/latex/contrib/isosafety/images/ISO-E022.png
deleted file mode 100644
index 067acd6f9d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E022.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E023.png b/macros/latex/contrib/isosafety/images/ISO-E023.png
deleted file mode 100644
index ec0cd0c9ab..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E023.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E024.png b/macros/latex/contrib/isosafety/images/ISO-E024.png
deleted file mode 100644
index 40d4cc7ebf..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E024.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E025.png b/macros/latex/contrib/isosafety/images/ISO-E025.png
deleted file mode 100644
index 87c923bf77..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E025.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E026.png b/macros/latex/contrib/isosafety/images/ISO-E026.png
deleted file mode 100644
index 8cba1cbf1f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E026.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E027.png b/macros/latex/contrib/isosafety/images/ISO-E027.png
deleted file mode 100644
index 0ab274282d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E027.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E028.png b/macros/latex/contrib/isosafety/images/ISO-E028.png
deleted file mode 100644
index 3942bd71c3..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E028.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E029.png b/macros/latex/contrib/isosafety/images/ISO-E029.png
deleted file mode 100644
index c8fd23e6b1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E029.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E030.png b/macros/latex/contrib/isosafety/images/ISO-E030.png
deleted file mode 100644
index e6cde9baa5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E030.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E031.png b/macros/latex/contrib/isosafety/images/ISO-E031.png
deleted file mode 100644
index efe8b681fa..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E031.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E032.png b/macros/latex/contrib/isosafety/images/ISO-E032.png
deleted file mode 100644
index 92845dee34..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E032.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E033.png b/macros/latex/contrib/isosafety/images/ISO-E033.png
deleted file mode 100644
index 1804ae4dad..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E033.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E034.png b/macros/latex/contrib/isosafety/images/ISO-E034.png
deleted file mode 100644
index ea041fb24c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E034.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E035.png b/macros/latex/contrib/isosafety/images/ISO-E035.png
deleted file mode 100644
index 58bba0f0e1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E035.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E036.png b/macros/latex/contrib/isosafety/images/ISO-E036.png
deleted file mode 100644
index f142c15852..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E036.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E037.png b/macros/latex/contrib/isosafety/images/ISO-E037.png
deleted file mode 100644
index 65a25d7330..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E037.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E038.png b/macros/latex/contrib/isosafety/images/ISO-E038.png
deleted file mode 100644
index d1e7264b00..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E038.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E039.png b/macros/latex/contrib/isosafety/images/ISO-E039.png
deleted file mode 100644
index e9f6e2bd55..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E039.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E040.png b/macros/latex/contrib/isosafety/images/ISO-E040.png
deleted file mode 100644
index 05743403fc..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E040.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E041.png b/macros/latex/contrib/isosafety/images/ISO-E041.png
deleted file mode 100644
index 55f0327f6f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E041.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E042.png b/macros/latex/contrib/isosafety/images/ISO-E042.png
deleted file mode 100644
index 2d0dec213f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E042.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E043.png b/macros/latex/contrib/isosafety/images/ISO-E043.png
deleted file mode 100644
index 081dd9165d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E043.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E044.png b/macros/latex/contrib/isosafety/images/ISO-E044.png
deleted file mode 100644
index df721c0938..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E044.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E045.png b/macros/latex/contrib/isosafety/images/ISO-E045.png
deleted file mode 100644
index 63851dd324..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E045.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E046.png b/macros/latex/contrib/isosafety/images/ISO-E046.png
deleted file mode 100644
index 71df53c03c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E046.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E047.png b/macros/latex/contrib/isosafety/images/ISO-E047.png
deleted file mode 100644
index 3e6854b34c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E047.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E048.png b/macros/latex/contrib/isosafety/images/ISO-E048.png
deleted file mode 100644
index 46c1efb598..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E048.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E049.png b/macros/latex/contrib/isosafety/images/ISO-E049.png
deleted file mode 100644
index e6de2cbea0..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E049.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E050.png b/macros/latex/contrib/isosafety/images/ISO-E050.png
deleted file mode 100644
index 758667dc30..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E050.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E051.png b/macros/latex/contrib/isosafety/images/ISO-E051.png
deleted file mode 100644
index 8700e570dd..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E051.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E052.png b/macros/latex/contrib/isosafety/images/ISO-E052.png
deleted file mode 100644
index 49c6ea4f04..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E052.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E053.png b/macros/latex/contrib/isosafety/images/ISO-E053.png
deleted file mode 100644
index 6cc6e4cb4c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E053.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E054.png b/macros/latex/contrib/isosafety/images/ISO-E054.png
deleted file mode 100644
index 6c72df2919..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E054.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E055.png b/macros/latex/contrib/isosafety/images/ISO-E055.png
deleted file mode 100644
index e7fbb181a5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E055.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E056.png b/macros/latex/contrib/isosafety/images/ISO-E056.png
deleted file mode 100644
index 04693cd738..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E056.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E057.png b/macros/latex/contrib/isosafety/images/ISO-E057.png
deleted file mode 100644
index 5cb2cb157f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E057.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E058.png b/macros/latex/contrib/isosafety/images/ISO-E058.png
deleted file mode 100644
index 20a2b18f95..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E058.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E059.png b/macros/latex/contrib/isosafety/images/ISO-E059.png
deleted file mode 100644
index 472483129f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E059.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E060.png b/macros/latex/contrib/isosafety/images/ISO-E060.png
deleted file mode 100644
index e046a0222f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E060.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E061.png b/macros/latex/contrib/isosafety/images/ISO-E061.png
deleted file mode 100644
index 3223a5cd49..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E061.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E062.png b/macros/latex/contrib/isosafety/images/ISO-E062.png
deleted file mode 100644
index 3125c4b6f0..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E062.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E063.png b/macros/latex/contrib/isosafety/images/ISO-E063.png
deleted file mode 100644
index e80755335b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E063.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E064.png b/macros/latex/contrib/isosafety/images/ISO-E064.png
deleted file mode 100644
index de8c8a720c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E064.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E065.png b/macros/latex/contrib/isosafety/images/ISO-E065.png
deleted file mode 100644
index 7be5a78cb5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E065.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E067.png b/macros/latex/contrib/isosafety/images/ISO-E067.png
deleted file mode 100644
index 6459f6314d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E067.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E068.png b/macros/latex/contrib/isosafety/images/ISO-E068.png
deleted file mode 100644
index 624eea013c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E068.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E069.png b/macros/latex/contrib/isosafety/images/ISO-E069.png
deleted file mode 100644
index 045609abe3..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E069.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-E070.png b/macros/latex/contrib/isosafety/images/ISO-E070.png
deleted file mode 100644
index f2c9bb37f2..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-E070.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F001.png b/macros/latex/contrib/isosafety/images/ISO-F001.png
deleted file mode 100644
index 810f94c5bb..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F001.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F002.png b/macros/latex/contrib/isosafety/images/ISO-F002.png
deleted file mode 100644
index 3b945029a2..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F002.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F003.png b/macros/latex/contrib/isosafety/images/ISO-F003.png
deleted file mode 100644
index 48b9bd6f94..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F003.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F004.png b/macros/latex/contrib/isosafety/images/ISO-F004.png
deleted file mode 100644
index 9f428b1327..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F004.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F005.png b/macros/latex/contrib/isosafety/images/ISO-F005.png
deleted file mode 100644
index a75a6ea898..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F005.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F006.png b/macros/latex/contrib/isosafety/images/ISO-F006.png
deleted file mode 100644
index 68d7b42813..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F006.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F007.png b/macros/latex/contrib/isosafety/images/ISO-F007.png
deleted file mode 100644
index 5fa6651556..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F007.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F008.png b/macros/latex/contrib/isosafety/images/ISO-F008.png
deleted file mode 100644
index 72bb1097fb..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F008.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F009.png b/macros/latex/contrib/isosafety/images/ISO-F009.png
deleted file mode 100644
index 9c192624aa..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F009.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F010.png b/macros/latex/contrib/isosafety/images/ISO-F010.png
deleted file mode 100644
index 5871def6ae..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F010.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F011.png b/macros/latex/contrib/isosafety/images/ISO-F011.png
deleted file mode 100644
index e68616839f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F011.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F012.png b/macros/latex/contrib/isosafety/images/ISO-F012.png
deleted file mode 100644
index 0ff3c35fcd..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F012.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F013.png b/macros/latex/contrib/isosafety/images/ISO-F013.png
deleted file mode 100644
index eeea27f6f1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F013.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F014.png b/macros/latex/contrib/isosafety/images/ISO-F014.png
deleted file mode 100644
index b37b41e038..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F014.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F015.png b/macros/latex/contrib/isosafety/images/ISO-F015.png
deleted file mode 100644
index d5c94be3f2..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F015.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F016.png b/macros/latex/contrib/isosafety/images/ISO-F016.png
deleted file mode 100644
index f34ff095f0..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F016.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F017.png b/macros/latex/contrib/isosafety/images/ISO-F017.png
deleted file mode 100644
index 8089216ecd..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F017.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F018.png b/macros/latex/contrib/isosafety/images/ISO-F018.png
deleted file mode 100644
index 8c72cd7839..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F018.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-F019.png b/macros/latex/contrib/isosafety/images/ISO-F019.png
deleted file mode 100644
index 709d32635d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-F019.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M001.png b/macros/latex/contrib/isosafety/images/ISO-M001.png
deleted file mode 100644
index 2789c0693e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M001.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M002.png b/macros/latex/contrib/isosafety/images/ISO-M002.png
deleted file mode 100644
index 19ece0e04f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M002.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M003.png b/macros/latex/contrib/isosafety/images/ISO-M003.png
deleted file mode 100644
index c2d7627f1e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M003.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M004.png b/macros/latex/contrib/isosafety/images/ISO-M004.png
deleted file mode 100644
index 5d8e8b649d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M004.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M005.png b/macros/latex/contrib/isosafety/images/ISO-M005.png
deleted file mode 100644
index 6f397035e9..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M005.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M006.png b/macros/latex/contrib/isosafety/images/ISO-M006.png
deleted file mode 100644
index cf3546be05..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M006.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M007.png b/macros/latex/contrib/isosafety/images/ISO-M007.png
deleted file mode 100644
index 7ee28fa608..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M007.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M008.png b/macros/latex/contrib/isosafety/images/ISO-M008.png
deleted file mode 100644
index af41158b6d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M008.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M009.png b/macros/latex/contrib/isosafety/images/ISO-M009.png
deleted file mode 100644
index f17811e9ae..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M009.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M010.png b/macros/latex/contrib/isosafety/images/ISO-M010.png
deleted file mode 100644
index 95b9045378..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M010.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M011.png b/macros/latex/contrib/isosafety/images/ISO-M011.png
deleted file mode 100644
index dd92873028..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M011.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M012.png b/macros/latex/contrib/isosafety/images/ISO-M012.png
deleted file mode 100644
index e1053c2f5b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M012.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M013.png b/macros/latex/contrib/isosafety/images/ISO-M013.png
deleted file mode 100644
index e631d9e6e9..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M013.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M014.png b/macros/latex/contrib/isosafety/images/ISO-M014.png
deleted file mode 100644
index 9c4d6ac15e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M014.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M015.png b/macros/latex/contrib/isosafety/images/ISO-M015.png
deleted file mode 100644
index ac20eea60c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M015.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M016.png b/macros/latex/contrib/isosafety/images/ISO-M016.png
deleted file mode 100644
index 3ec1701029..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M016.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M017.png b/macros/latex/contrib/isosafety/images/ISO-M017.png
deleted file mode 100644
index 0db21b468f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M017.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M018.png b/macros/latex/contrib/isosafety/images/ISO-M018.png
deleted file mode 100644
index d5749e609f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M018.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M019.png b/macros/latex/contrib/isosafety/images/ISO-M019.png
deleted file mode 100644
index 1c3530ec5b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M019.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M020.png b/macros/latex/contrib/isosafety/images/ISO-M020.png
deleted file mode 100644
index 6efc075342..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M020.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M021.png b/macros/latex/contrib/isosafety/images/ISO-M021.png
deleted file mode 100644
index 064ed1a4d7..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M021.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M022.png b/macros/latex/contrib/isosafety/images/ISO-M022.png
deleted file mode 100644
index 50e9f2aefa..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M022.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M023.png b/macros/latex/contrib/isosafety/images/ISO-M023.png
deleted file mode 100644
index 948d3015cb..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M023.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M024.png b/macros/latex/contrib/isosafety/images/ISO-M024.png
deleted file mode 100644
index 250483a9b8..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M024.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M025.png b/macros/latex/contrib/isosafety/images/ISO-M025.png
deleted file mode 100644
index 07537735d1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M025.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M026.png b/macros/latex/contrib/isosafety/images/ISO-M026.png
deleted file mode 100644
index bef7cd0136..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M026.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M027.png b/macros/latex/contrib/isosafety/images/ISO-M027.png
deleted file mode 100644
index 1c9c7060ab..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M027.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M028.png b/macros/latex/contrib/isosafety/images/ISO-M028.png
deleted file mode 100644
index 08cd7762d6..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M028.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M029.png b/macros/latex/contrib/isosafety/images/ISO-M029.png
deleted file mode 100644
index e3fef9b4d1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M029.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M030.png b/macros/latex/contrib/isosafety/images/ISO-M030.png
deleted file mode 100644
index e14a9eb391..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M030.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M031.png b/macros/latex/contrib/isosafety/images/ISO-M031.png
deleted file mode 100644
index 65002f4585..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M031.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M032.png b/macros/latex/contrib/isosafety/images/ISO-M032.png
deleted file mode 100644
index 3e7365ffb5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M032.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M033.png b/macros/latex/contrib/isosafety/images/ISO-M033.png
deleted file mode 100644
index 9502007080..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M033.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M034.png b/macros/latex/contrib/isosafety/images/ISO-M034.png
deleted file mode 100644
index c4ee60f6d6..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M034.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M035.png b/macros/latex/contrib/isosafety/images/ISO-M035.png
deleted file mode 100644
index fe174acff0..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M035.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M036.png b/macros/latex/contrib/isosafety/images/ISO-M036.png
deleted file mode 100644
index 511391a33d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M036.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M037.png b/macros/latex/contrib/isosafety/images/ISO-M037.png
deleted file mode 100644
index 0fce26f8b1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M037.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M038.png b/macros/latex/contrib/isosafety/images/ISO-M038.png
deleted file mode 100644
index f3f4be1581..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M038.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M039.png b/macros/latex/contrib/isosafety/images/ISO-M039.png
deleted file mode 100644
index cc4ca3d3f3..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M039.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M040.png b/macros/latex/contrib/isosafety/images/ISO-M040.png
deleted file mode 100644
index 1c68887a86..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M040.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M041.png b/macros/latex/contrib/isosafety/images/ISO-M041.png
deleted file mode 100644
index 9c13ca060f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M041.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M042.png b/macros/latex/contrib/isosafety/images/ISO-M042.png
deleted file mode 100644
index 4d767610bb..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M042.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M043.png b/macros/latex/contrib/isosafety/images/ISO-M043.png
deleted file mode 100644
index cdef08b738..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M043.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M044.png b/macros/latex/contrib/isosafety/images/ISO-M044.png
deleted file mode 100644
index f3a509d3db..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M044.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M045.png b/macros/latex/contrib/isosafety/images/ISO-M045.png
deleted file mode 100644
index 0aca9811be..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M045.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M046.png b/macros/latex/contrib/isosafety/images/ISO-M046.png
deleted file mode 100644
index ec64f37d97..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M046.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M047.png b/macros/latex/contrib/isosafety/images/ISO-M047.png
deleted file mode 100644
index cb25f8b1b1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M047.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M048.png b/macros/latex/contrib/isosafety/images/ISO-M048.png
deleted file mode 100644
index 4c11307e50..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M048.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M049.png b/macros/latex/contrib/isosafety/images/ISO-M049.png
deleted file mode 100644
index 303eba92ed..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M049.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M050.png b/macros/latex/contrib/isosafety/images/ISO-M050.png
deleted file mode 100644
index d86359fd64..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M050.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M051.png b/macros/latex/contrib/isosafety/images/ISO-M051.png
deleted file mode 100644
index 72a3bbe407..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M051.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M052.png b/macros/latex/contrib/isosafety/images/ISO-M052.png
deleted file mode 100644
index 2a8057ccd1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M052.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M053.png b/macros/latex/contrib/isosafety/images/ISO-M053.png
deleted file mode 100644
index 0ea6645e60..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M053.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M054.png b/macros/latex/contrib/isosafety/images/ISO-M054.png
deleted file mode 100644
index 144fa656c2..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M054.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M055.png b/macros/latex/contrib/isosafety/images/ISO-M055.png
deleted file mode 100644
index be76007a8a..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M055.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M056.png b/macros/latex/contrib/isosafety/images/ISO-M056.png
deleted file mode 100644
index 262c8d27cf..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M056.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M057.png b/macros/latex/contrib/isosafety/images/ISO-M057.png
deleted file mode 100644
index e2ce2c2795..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M057.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M058.png b/macros/latex/contrib/isosafety/images/ISO-M058.png
deleted file mode 100644
index c974ac9b8d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M058.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M059.png b/macros/latex/contrib/isosafety/images/ISO-M059.png
deleted file mode 100644
index 9d9310ec3e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M059.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-M060.png b/macros/latex/contrib/isosafety/images/ISO-M060.png
deleted file mode 100644
index 96cc4d909e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-M060.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P001.png b/macros/latex/contrib/isosafety/images/ISO-P001.png
deleted file mode 100644
index 3fe4d77f1d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P001.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P002.png b/macros/latex/contrib/isosafety/images/ISO-P002.png
deleted file mode 100644
index 0defefbd16..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P002.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P003.png b/macros/latex/contrib/isosafety/images/ISO-P003.png
deleted file mode 100644
index 737a70db44..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P003.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P004.png b/macros/latex/contrib/isosafety/images/ISO-P004.png
deleted file mode 100644
index 3b66e1318a..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P004.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P005.png b/macros/latex/contrib/isosafety/images/ISO-P005.png
deleted file mode 100644
index bed4aa5646..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P005.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P006.png b/macros/latex/contrib/isosafety/images/ISO-P006.png
deleted file mode 100644
index acc80d017e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P006.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P007.png b/macros/latex/contrib/isosafety/images/ISO-P007.png
deleted file mode 100644
index c732046250..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P007.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P008.png b/macros/latex/contrib/isosafety/images/ISO-P008.png
deleted file mode 100644
index f6cf615b6b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P008.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P009.png b/macros/latex/contrib/isosafety/images/ISO-P009.png
deleted file mode 100644
index cd74c14d60..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P009.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P010.png b/macros/latex/contrib/isosafety/images/ISO-P010.png
deleted file mode 100644
index 6a758ae27d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P010.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P011.png b/macros/latex/contrib/isosafety/images/ISO-P011.png
deleted file mode 100644
index 993599414a..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P011.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P012.png b/macros/latex/contrib/isosafety/images/ISO-P012.png
deleted file mode 100644
index ec05406b49..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P012.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P013.png b/macros/latex/contrib/isosafety/images/ISO-P013.png
deleted file mode 100644
index 4d279237af..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P013.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P014.png b/macros/latex/contrib/isosafety/images/ISO-P014.png
deleted file mode 100644
index 52990c3e95..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P014.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P015.png b/macros/latex/contrib/isosafety/images/ISO-P015.png
deleted file mode 100644
index 9e279d35f1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P015.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P016.png b/macros/latex/contrib/isosafety/images/ISO-P016.png
deleted file mode 100644
index 50dfa66af8..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P016.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P017.png b/macros/latex/contrib/isosafety/images/ISO-P017.png
deleted file mode 100644
index 1821d96651..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P017.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P018.png b/macros/latex/contrib/isosafety/images/ISO-P018.png
deleted file mode 100644
index c81d5f2a14..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P018.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P019.png b/macros/latex/contrib/isosafety/images/ISO-P019.png
deleted file mode 100644
index 13745df068..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P019.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P020.png b/macros/latex/contrib/isosafety/images/ISO-P020.png
deleted file mode 100644
index 939391dac8..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P020.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P021.png b/macros/latex/contrib/isosafety/images/ISO-P021.png
deleted file mode 100644
index 7693e3778e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P021.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P022.png b/macros/latex/contrib/isosafety/images/ISO-P022.png
deleted file mode 100644
index 208b7da0ff..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P022.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P023.png b/macros/latex/contrib/isosafety/images/ISO-P023.png
deleted file mode 100644
index 1cd6e5f31e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P023.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P024.png b/macros/latex/contrib/isosafety/images/ISO-P024.png
deleted file mode 100644
index d31fd16266..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P024.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P025.png b/macros/latex/contrib/isosafety/images/ISO-P025.png
deleted file mode 100644
index 34e703da3e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P025.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P026.png b/macros/latex/contrib/isosafety/images/ISO-P026.png
deleted file mode 100644
index f2a6f021ca..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P026.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P027.png b/macros/latex/contrib/isosafety/images/ISO-P027.png
deleted file mode 100644
index 66a94aa792..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P027.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P028.png b/macros/latex/contrib/isosafety/images/ISO-P028.png
deleted file mode 100644
index c658f4132e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P028.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P029.png b/macros/latex/contrib/isosafety/images/ISO-P029.png
deleted file mode 100644
index 417e20a4de..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P029.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P030.png b/macros/latex/contrib/isosafety/images/ISO-P030.png
deleted file mode 100644
index f55434bfd6..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P030.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P031.png b/macros/latex/contrib/isosafety/images/ISO-P031.png
deleted file mode 100644
index 862a48b5fc..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P031.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P032.png b/macros/latex/contrib/isosafety/images/ISO-P032.png
deleted file mode 100644
index 34255be1c1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P032.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P033.png b/macros/latex/contrib/isosafety/images/ISO-P033.png
deleted file mode 100644
index 35124e6c1b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P033.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P034.png b/macros/latex/contrib/isosafety/images/ISO-P034.png
deleted file mode 100644
index 9488fb4ee4..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P034.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P035.png b/macros/latex/contrib/isosafety/images/ISO-P035.png
deleted file mode 100644
index 8932997096..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P035.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P036.png b/macros/latex/contrib/isosafety/images/ISO-P036.png
deleted file mode 100644
index 1fb390ebc6..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P036.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P037.png b/macros/latex/contrib/isosafety/images/ISO-P037.png
deleted file mode 100644
index 4cda3f058d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P037.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P038.png b/macros/latex/contrib/isosafety/images/ISO-P038.png
deleted file mode 100644
index 4b555a54bc..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P038.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P039.png b/macros/latex/contrib/isosafety/images/ISO-P039.png
deleted file mode 100644
index d9368dfd9b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P039.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P040.png b/macros/latex/contrib/isosafety/images/ISO-P040.png
deleted file mode 100644
index 932564653e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P040.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P041.png b/macros/latex/contrib/isosafety/images/ISO-P041.png
deleted file mode 100644
index 7076ba9628..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P041.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P042.png b/macros/latex/contrib/isosafety/images/ISO-P042.png
deleted file mode 100644
index 41659dbdcf..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P042.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P043.png b/macros/latex/contrib/isosafety/images/ISO-P043.png
deleted file mode 100644
index b443a9e0e5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P043.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P044.png b/macros/latex/contrib/isosafety/images/ISO-P044.png
deleted file mode 100644
index 674a446ed0..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P044.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P045.png b/macros/latex/contrib/isosafety/images/ISO-P045.png
deleted file mode 100644
index 12bad9a4d5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P045.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P046.png b/macros/latex/contrib/isosafety/images/ISO-P046.png
deleted file mode 100644
index 9feaafd19b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P046.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P047.png b/macros/latex/contrib/isosafety/images/ISO-P047.png
deleted file mode 100644
index b3af2f327c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P047.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P048.png b/macros/latex/contrib/isosafety/images/ISO-P048.png
deleted file mode 100644
index e3b60aaffd..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P048.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P049.png b/macros/latex/contrib/isosafety/images/ISO-P049.png
deleted file mode 100644
index 69a452f92f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P049.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P050.png b/macros/latex/contrib/isosafety/images/ISO-P050.png
deleted file mode 100644
index 3cfceb20b3..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P050.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P051.png b/macros/latex/contrib/isosafety/images/ISO-P051.png
deleted file mode 100644
index 79a89ac55b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P051.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P052.png b/macros/latex/contrib/isosafety/images/ISO-P052.png
deleted file mode 100644
index 2c3f77aade..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P052.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P053.png b/macros/latex/contrib/isosafety/images/ISO-P053.png
deleted file mode 100644
index 7ad25a3b41..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P053.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P054.png b/macros/latex/contrib/isosafety/images/ISO-P054.png
deleted file mode 100644
index 93470b9244..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P054.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P055.png b/macros/latex/contrib/isosafety/images/ISO-P055.png
deleted file mode 100644
index 8efffc543c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P055.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P056.png b/macros/latex/contrib/isosafety/images/ISO-P056.png
deleted file mode 100644
index d3186f25d3..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P056.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P057.png b/macros/latex/contrib/isosafety/images/ISO-P057.png
deleted file mode 100644
index c340e4c3b5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P057.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P058.png b/macros/latex/contrib/isosafety/images/ISO-P058.png
deleted file mode 100644
index 6d285cb73d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P058.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P059.png b/macros/latex/contrib/isosafety/images/ISO-P059.png
deleted file mode 100644
index 88aa78b745..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P059.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P060.png b/macros/latex/contrib/isosafety/images/ISO-P060.png
deleted file mode 100644
index 76443325f1..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P060.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P061.png b/macros/latex/contrib/isosafety/images/ISO-P061.png
deleted file mode 100644
index ce1212819a..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P061.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P062.png b/macros/latex/contrib/isosafety/images/ISO-P062.png
deleted file mode 100644
index dacff3c5d5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P062.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P063.png b/macros/latex/contrib/isosafety/images/ISO-P063.png
deleted file mode 100644
index 92967cadac..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P063.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P064.png b/macros/latex/contrib/isosafety/images/ISO-P064.png
deleted file mode 100644
index 0ff0348c22..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P064.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P065.png b/macros/latex/contrib/isosafety/images/ISO-P065.png
deleted file mode 100644
index c501c3bfd7..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P065.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P066.png b/macros/latex/contrib/isosafety/images/ISO-P066.png
deleted file mode 100644
index 41bfe3743e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P066.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P067.png b/macros/latex/contrib/isosafety/images/ISO-P067.png
deleted file mode 100644
index 59defb42eb..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P067.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P068.png b/macros/latex/contrib/isosafety/images/ISO-P068.png
deleted file mode 100644
index 5824733a2f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P068.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P069.png b/macros/latex/contrib/isosafety/images/ISO-P069.png
deleted file mode 100644
index 40e3a64c01..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P069.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P070.png b/macros/latex/contrib/isosafety/images/ISO-P070.png
deleted file mode 100644
index a866d7fd3f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P070.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P071.png b/macros/latex/contrib/isosafety/images/ISO-P071.png
deleted file mode 100644
index 7f5925154c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P071.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P072.png b/macros/latex/contrib/isosafety/images/ISO-P072.png
deleted file mode 100644
index b909993c6a..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P072.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P073.png b/macros/latex/contrib/isosafety/images/ISO-P073.png
deleted file mode 100644
index d94b36a9dc..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P073.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-P074.png b/macros/latex/contrib/isosafety/images/ISO-P074.png
deleted file mode 100644
index 1e5c61ed3d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-P074.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W001.png b/macros/latex/contrib/isosafety/images/ISO-W001.png
deleted file mode 100644
index 1ed9c12496..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W001.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W002.png b/macros/latex/contrib/isosafety/images/ISO-W002.png
deleted file mode 100644
index 72d6efa1a7..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W002.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W003.png b/macros/latex/contrib/isosafety/images/ISO-W003.png
deleted file mode 100644
index e4669ff596..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W003.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W004.png b/macros/latex/contrib/isosafety/images/ISO-W004.png
deleted file mode 100644
index 679539e45c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W004.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W005.png b/macros/latex/contrib/isosafety/images/ISO-W005.png
deleted file mode 100644
index c8c0826e08..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W005.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W006.png b/macros/latex/contrib/isosafety/images/ISO-W006.png
deleted file mode 100644
index e087f5b07c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W006.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W007.png b/macros/latex/contrib/isosafety/images/ISO-W007.png
deleted file mode 100644
index 877a1935de..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W007.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W008.png b/macros/latex/contrib/isosafety/images/ISO-W008.png
deleted file mode 100644
index b28aa352e9..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W008.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W009.png b/macros/latex/contrib/isosafety/images/ISO-W009.png
deleted file mode 100644
index 66ad058327..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W009.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W010.png b/macros/latex/contrib/isosafety/images/ISO-W010.png
deleted file mode 100644
index 01d83554e5..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W010.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W011.png b/macros/latex/contrib/isosafety/images/ISO-W011.png
deleted file mode 100644
index 1521128a6d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W011.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W012.png b/macros/latex/contrib/isosafety/images/ISO-W012.png
deleted file mode 100644
index 342a47ded0..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W012.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W013.png b/macros/latex/contrib/isosafety/images/ISO-W013.png
deleted file mode 100644
index acca3c326f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W013.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W014.png b/macros/latex/contrib/isosafety/images/ISO-W014.png
deleted file mode 100644
index e4b2a35b55..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W014.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W015.png b/macros/latex/contrib/isosafety/images/ISO-W015.png
deleted file mode 100644
index 550a5df6a2..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W015.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W016.png b/macros/latex/contrib/isosafety/images/ISO-W016.png
deleted file mode 100644
index 01eaccfc4b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W016.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W017.png b/macros/latex/contrib/isosafety/images/ISO-W017.png
deleted file mode 100644
index dc427bfc37..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W017.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W018.png b/macros/latex/contrib/isosafety/images/ISO-W018.png
deleted file mode 100644
index ca1468dd8f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W018.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W019.png b/macros/latex/contrib/isosafety/images/ISO-W019.png
deleted file mode 100644
index c5087fa57c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W019.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W020.png b/macros/latex/contrib/isosafety/images/ISO-W020.png
deleted file mode 100644
index 07dfefa918..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W020.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W021.png b/macros/latex/contrib/isosafety/images/ISO-W021.png
deleted file mode 100644
index 8f6847a06e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W021.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W022.png b/macros/latex/contrib/isosafety/images/ISO-W022.png
deleted file mode 100644
index 875b0cde0b..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W022.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W023.png b/macros/latex/contrib/isosafety/images/ISO-W023.png
deleted file mode 100644
index 7dc9fba302..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W023.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W024.png b/macros/latex/contrib/isosafety/images/ISO-W024.png
deleted file mode 100644
index b0a7cba9a0..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W024.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W025.png b/macros/latex/contrib/isosafety/images/ISO-W025.png
deleted file mode 100644
index 084bfc0cd4..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W025.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W026.png b/macros/latex/contrib/isosafety/images/ISO-W026.png
deleted file mode 100644
index eba7c7941a..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W026.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W027.png b/macros/latex/contrib/isosafety/images/ISO-W027.png
deleted file mode 100644
index 4f0f402b9a..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W027.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W028.png b/macros/latex/contrib/isosafety/images/ISO-W028.png
deleted file mode 100644
index bceec9df85..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W028.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W029.png b/macros/latex/contrib/isosafety/images/ISO-W029.png
deleted file mode 100644
index 8f9a877c02..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W029.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W030.png b/macros/latex/contrib/isosafety/images/ISO-W030.png
deleted file mode 100644
index cdf39d29b0..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W030.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W031.png b/macros/latex/contrib/isosafety/images/ISO-W031.png
deleted file mode 100644
index 70f1761d1d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W031.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W032.png b/macros/latex/contrib/isosafety/images/ISO-W032.png
deleted file mode 100644
index f166aa9f9c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W032.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W033.png b/macros/latex/contrib/isosafety/images/ISO-W033.png
deleted file mode 100644
index 6f32b9709c..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W033.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W034.png b/macros/latex/contrib/isosafety/images/ISO-W034.png
deleted file mode 100644
index e7a6073d0d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W034.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W035.png b/macros/latex/contrib/isosafety/images/ISO-W035.png
deleted file mode 100644
index c3f790dfdc..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W035.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W036.png b/macros/latex/contrib/isosafety/images/ISO-W036.png
deleted file mode 100644
index e503780645..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W036.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W037.png b/macros/latex/contrib/isosafety/images/ISO-W037.png
deleted file mode 100644
index d1dd451623..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W037.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W038.png b/macros/latex/contrib/isosafety/images/ISO-W038.png
deleted file mode 100644
index 3f20a30eac..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W038.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W039.png b/macros/latex/contrib/isosafety/images/ISO-W039.png
deleted file mode 100644
index 32e942ed37..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W039.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W040.png b/macros/latex/contrib/isosafety/images/ISO-W040.png
deleted file mode 100644
index 23e4250f3e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W040.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W041.png b/macros/latex/contrib/isosafety/images/ISO-W041.png
deleted file mode 100644
index f14f2617c4..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W041.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W042.png b/macros/latex/contrib/isosafety/images/ISO-W042.png
deleted file mode 100644
index 3fb7d5b2ef..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W042.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W043.png b/macros/latex/contrib/isosafety/images/ISO-W043.png
deleted file mode 100644
index 7e760d4bbb..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W043.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W044.png b/macros/latex/contrib/isosafety/images/ISO-W044.png
deleted file mode 100644
index 382eb64837..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W044.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W045.png b/macros/latex/contrib/isosafety/images/ISO-W045.png
deleted file mode 100644
index df0abff844..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W045.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W046.png b/macros/latex/contrib/isosafety/images/ISO-W046.png
deleted file mode 100644
index 8c9e1f15eb..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W046.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W047.png b/macros/latex/contrib/isosafety/images/ISO-W047.png
deleted file mode 100644
index f35e9ba8ab..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W047.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W048.png b/macros/latex/contrib/isosafety/images/ISO-W048.png
deleted file mode 100644
index d5676bf8ba..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W048.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W049.png b/macros/latex/contrib/isosafety/images/ISO-W049.png
deleted file mode 100644
index b6c5c008e4..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W049.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W050.png b/macros/latex/contrib/isosafety/images/ISO-W050.png
deleted file mode 100644
index 3b18d5395f..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W050.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W051.png b/macros/latex/contrib/isosafety/images/ISO-W051.png
deleted file mode 100644
index 0036419ae7..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W051.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W052.png b/macros/latex/contrib/isosafety/images/ISO-W052.png
deleted file mode 100644
index 6339d5d65d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W052.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W053.png b/macros/latex/contrib/isosafety/images/ISO-W053.png
deleted file mode 100644
index 185c89d4ca..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W053.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W054.png b/macros/latex/contrib/isosafety/images/ISO-W054.png
deleted file mode 100644
index 695a5ab0dd..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W054.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W055.png b/macros/latex/contrib/isosafety/images/ISO-W055.png
deleted file mode 100644
index 7f2a019541..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W055.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W056.png b/macros/latex/contrib/isosafety/images/ISO-W056.png
deleted file mode 100644
index 662ad8f404..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W056.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W057.png b/macros/latex/contrib/isosafety/images/ISO-W057.png
deleted file mode 100644
index bcbe69857a..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W057.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W058.png b/macros/latex/contrib/isosafety/images/ISO-W058.png
deleted file mode 100644
index 1d2dbb6886..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W058.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W059.png b/macros/latex/contrib/isosafety/images/ISO-W059.png
deleted file mode 100644
index 72188b554d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W059.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W060.png b/macros/latex/contrib/isosafety/images/ISO-W060.png
deleted file mode 100644
index b5bb4877e7..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W060.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W061.png b/macros/latex/contrib/isosafety/images/ISO-W061.png
deleted file mode 100644
index 6bafe70030..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W061.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W062.png b/macros/latex/contrib/isosafety/images/ISO-W062.png
deleted file mode 100644
index 3d92585e49..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W062.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W063.png b/macros/latex/contrib/isosafety/images/ISO-W063.png
deleted file mode 100644
index f980702f70..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W063.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W064.png b/macros/latex/contrib/isosafety/images/ISO-W064.png
deleted file mode 100644
index 2e6001905d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W064.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W065.png b/macros/latex/contrib/isosafety/images/ISO-W065.png
deleted file mode 100644
index a9aae46f33..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W065.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W066.png b/macros/latex/contrib/isosafety/images/ISO-W066.png
deleted file mode 100644
index 1f5385252e..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W066.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W067.png b/macros/latex/contrib/isosafety/images/ISO-W067.png
deleted file mode 100644
index 5d5162be0d..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W067.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W068.png b/macros/latex/contrib/isosafety/images/ISO-W068.png
deleted file mode 100644
index 8f00376189..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W068.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W069.png b/macros/latex/contrib/isosafety/images/ISO-W069.png
deleted file mode 100644
index 16a04884b4..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W069.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W070.png b/macros/latex/contrib/isosafety/images/ISO-W070.png
deleted file mode 100644
index 99b9edebbe..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W070.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W071.png b/macros/latex/contrib/isosafety/images/ISO-W071.png
deleted file mode 100644
index af340de7ef..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W071.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W072.png b/macros/latex/contrib/isosafety/images/ISO-W072.png
deleted file mode 100644
index 7e0d5b55be..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W072.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W073.png b/macros/latex/contrib/isosafety/images/ISO-W073.png
deleted file mode 100644
index d645fc9642..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W073.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W074.png b/macros/latex/contrib/isosafety/images/ISO-W074.png
deleted file mode 100644
index 90fc576c05..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W074.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W075.png b/macros/latex/contrib/isosafety/images/ISO-W075.png
deleted file mode 100644
index 371cf6ccd8..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W075.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W076.png b/macros/latex/contrib/isosafety/images/ISO-W076.png
deleted file mode 100644
index 35aae4aa1a..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W076.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W077.png b/macros/latex/contrib/isosafety/images/ISO-W077.png
deleted file mode 100644
index 0c06a6ae47..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W077.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W078.png b/macros/latex/contrib/isosafety/images/ISO-W078.png
deleted file mode 100644
index c8c3d8f4c7..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W078.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W079.png b/macros/latex/contrib/isosafety/images/ISO-W079.png
deleted file mode 100644
index 123b8921fd..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W079.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/images/ISO-W080.png b/macros/latex/contrib/isosafety/images/ISO-W080.png
deleted file mode 100644
index 55695703ae..0000000000
--- a/macros/latex/contrib/isosafety/images/ISO-W080.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV003.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV003.pdf
new file mode 100644
index 0000000000..c3671853cc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV004.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV004.pdf
new file mode 100644
index 0000000000..426766af28
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV009.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV009.pdf
new file mode 100644
index 0000000000..4371233c53
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV010.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV010.pdf
new file mode 100644
index 0000000000..4f7c7b0c4e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV011.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV011.pdf
new file mode 100644
index 0000000000..b53137946c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV012.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV012.pdf
new file mode 100644
index 0000000000..ee3d79d2fe
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV013.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV013.pdf
new file mode 100644
index 0000000000..54a7ef44db
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV027.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV027.pdf
new file mode 100644
index 0000000000..c2c5f6e332
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV027.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV028.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV028.pdf
new file mode 100644
index 0000000000..005109c5c8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV029.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV029.pdf
new file mode 100644
index 0000000000..070e7a2743
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV029.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV064.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV064.pdf
new file mode 100644
index 0000000000..9ef30ac6e6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV064.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV067.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV067.pdf
new file mode 100644
index 0000000000..d0e6340114
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV067.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E001.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E001.pdf
new file mode 100644
index 0000000000..abc60c2691
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E001.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E002.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E002.pdf
new file mode 100644
index 0000000000..fbe80ce3f8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E003.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E003.pdf
new file mode 100644
index 0000000000..21dfafc605
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E004.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E004.pdf
new file mode 100644
index 0000000000..3663147e2e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E007.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E007.pdf
new file mode 100644
index 0000000000..cd21e70dc4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E008.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E008.pdf
new file mode 100644
index 0000000000..9d651b8d9e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E008.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E009.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E009.pdf
new file mode 100644
index 0000000000..93822c975e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E009.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x}Tn1 +eD
+XPl}HrwHur(r8(`b~'^ϏG/.<#ᕲ=cf5{NZgP9W▼$A *;M6Q@ʪUeIp fAqr729݂JPQ%Y0,P!A˻.Ҽb0% * BCf%T#Od5Bve̲-GMdىy%zbq++ rm~|)Ĩ"ՕutegF\Όsk\}s0{1ካH0Q9uA.:[ѳWYo=$p@t*Y[f8ߴcgxHG̔8Mm[-(O'$.ɳ].㍛=!+Z }o5Oԡ\A[@ zT.zF%5e VK1?R܂uJxw17·.tޑ`Ɔ,RR:ݻ?J
+endstream
+endobj
+5 0 obj
+ 550
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180750+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000954 00000 n
+0000000736 00000 n
+0000000664 00000 n
+0000000015 00000 n
+0000000642 00000 n
+0000001019 00000 n
+0000001135 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1187
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E010.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E010.pdf
new file mode 100644
index 0000000000..ef0b21d588
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E011.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E011.pdf
new file mode 100644
index 0000000000..127667563d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E012.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E012.pdf
new file mode 100644
index 0000000000..98cb2bd8b4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E013.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E013.pdf
new file mode 100644
index 0000000000..0d89ed3065
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E013.pdf
@@ -0,0 +1,71 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xuT[nU1 *Ll'q hh?K:VVc 㗦+p{BZ *?C07*+m~ ƽR9#ߣJ-M%@lC jTJp[`N4;1%(jN0L<
+RJ)FXQq:8ud^3lwD@Zdz,T0ooY cK}KTI[kAf1mf@rI4Q7}I|Zf,|ƴ{Lbbh[x<ggLǘVvh!,7х!bESxE lbvpaFUx1Y>|-{z hõjȪ0eOx4o.<V2-+7͕ "(WK8̱Tg~aeF,)n9y3Dw$D0;3D{@:B %W2",\Z:9nEfp.8ֲL\c8mHB'NP=P[nZ\u$[)D(439V!L%=)Y{:^'q
+QbEa
+eAlVZŲU S?K 9[]LKuXRO6{,qL}kN\ꀐyR@9f0K0u-Is<yg\zjWU\|ᒿ/
+endstream
+endobj
+5 0 obj
+ 750
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180750+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001154 00000 n
+0000000936 00000 n
+0000000864 00000 n
+0000000015 00000 n
+0000000842 00000 n
+0000001219 00000 n
+0000001335 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1387
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E014.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E014.pdf
new file mode 100644
index 0000000000..0a9e382903
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E014.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E015.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E015.pdf
new file mode 100644
index 0000000000..d8e8f0e401
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E016.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E016.pdf
new file mode 100644
index 0000000000..06065e969e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E017.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E017.pdf
new file mode 100644
index 0000000000..fc1ca1bdf0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E017.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E018.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E018.pdf
new file mode 100644
index 0000000000..4b05b96f89
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E019.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E019.pdf
new file mode 100644
index 0000000000..45fe98dcd7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E020.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E020.pdf
new file mode 100644
index 0000000000..7b85394d63
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E020.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E021.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E021.pdf
new file mode 100644
index 0000000000..187694547c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E021.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E022.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E022.pdf
new file mode 100644
index 0000000000..2e772aa41a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E022.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E023.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E023.pdf
new file mode 100644
index 0000000000..9a14e4d901
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E023.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E024.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E024.pdf
new file mode 100644
index 0000000000..3fefa8edfd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E024.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E025.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E025.pdf
new file mode 100644
index 0000000000..026668d438
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E025.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E026.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E026.pdf
new file mode 100644
index 0000000000..3c9979f590
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E026.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E027.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E027.pdf
new file mode 100644
index 0000000000..fb532c645c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E027.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E028.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E028.pdf
new file mode 100644
index 0000000000..affca9c7f5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E029.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E029.pdf
new file mode 100644
index 0000000000..7faeee6464
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E029.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E030.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E030.pdf
new file mode 100644
index 0000000000..cf1a93fe95
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E030.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E031.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E031.pdf
new file mode 100644
index 0000000000..1b8b8f3b7c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E031.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E032.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E032.pdf
new file mode 100644
index 0000000000..b70eefa505
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E032.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E033.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E033.pdf
new file mode 100644
index 0000000000..a49b3fe4bf
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E033.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xmAn1E>( #GNHM/OfYX~`9U"0 B,jt*l-֐~
++TC%jѴr4CiXeW5dLЭOBS};HO慲8q8 wB]ɒU:z(Q]L.M3v>l-/ځG<v#RN
+endstream
+endobj
+5 0 obj
+ 258
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180753+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000662 00000 n
+0000000444 00000 n
+0000000372 00000 n
+0000000015 00000 n
+0000000350 00000 n
+0000000727 00000 n
+0000000843 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+895
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E034.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E034.pdf
new file mode 100644
index 0000000000..44341bd96b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E034.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xmKn! Dc1Q,z_я.( cDH??^/!gU ,)Xda u)qT&b!3:A dS+{s4ؘ$^+(Üv79.`)vA١9
+p3k!%^$v 8Ԃ&*JvFn0T,-d*:/!D--M tK]z
+endstream
+endobj
+5 0 obj
+ 259
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180753+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000663 00000 n
+0000000445 00000 n
+0000000373 00000 n
+0000000015 00000 n
+0000000351 00000 n
+0000000728 00000 n
+0000000844 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+896
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E035.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E035.pdf
new file mode 100644
index 0000000000..c79abaa600
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E035.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E036.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E036.pdf
new file mode 100644
index 0000000000..0bdad717ba
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E036.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E037.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E037.pdf
new file mode 100644
index 0000000000..65d6a6f2f2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E037.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E038.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E038.pdf
new file mode 100644
index 0000000000..a99e0485f3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E038.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E039.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E039.pdf
new file mode 100644
index 0000000000..b8247de081
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E039.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E040.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E040.pdf
new file mode 100644
index 0000000000..f49aabdf1e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E040.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E041.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E041.pdf
new file mode 100644
index 0000000000..9cfa31db6c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E041.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E042.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E042.pdf
new file mode 100644
index 0000000000..917e764de5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E042.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E043.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E043.pdf
new file mode 100644
index 0000000000..7b126756d4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E043.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E044.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E044.pdf
new file mode 100644
index 0000000000..8049c34a95
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E044.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E045.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E045.pdf
new file mode 100644
index 0000000000..7f57b529fe
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E045.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E046.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E046.pdf
new file mode 100644
index 0000000000..3af4a0a9b9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E046.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E047.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E047.pdf
new file mode 100644
index 0000000000..823f7704fe
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E047.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E048.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E048.pdf
new file mode 100644
index 0000000000..2cd85b1273
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E048.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E049.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E049.pdf
new file mode 100644
index 0000000000..67ae74aeb9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E049.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E050.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E050.pdf
new file mode 100644
index 0000000000..1c0120948d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E050.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E051.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E051.pdf
new file mode 100644
index 0000000000..9ac16abe7e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E051.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E052.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E052.pdf
new file mode 100644
index 0000000000..057a6590ad
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E052.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E053.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E053.pdf
new file mode 100644
index 0000000000..b050874db9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E053.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E054.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E054.pdf
new file mode 100644
index 0000000000..f4de9c9b1f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E054.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E055.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E055.pdf
new file mode 100644
index 0000000000..a05639bfd2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E055.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E056.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E056.pdf
new file mode 100644
index 0000000000..015f18e06d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E056.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E057.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E057.pdf
new file mode 100644
index 0000000000..c3da1ac56b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E057.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E058.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E058.pdf
new file mode 100644
index 0000000000..fac59cd693
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E058.pdf
@@ -0,0 +1,68 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xmAn EJu=B5LEjD͢ o ȥFpp˽|М}~wS']0ڨ$åEnZZLswE[۲h01mT?' ;s,IdAlQ}Svԓ,pY5ZRZ*"kh lӂ%{ҍ٥JPTJIc$l4d0=)9:UwG[:X,s]Y1JG>x Z/l
+endstream
+endobj
+5 0 obj
+ 274
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 299.982663 299.999986 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180755+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000692 00000 n
+0000000460 00000 n
+0000000388 00000 n
+0000000015 00000 n
+0000000366 00000 n
+0000000757 00000 n
+0000000873 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+925
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E059.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E059.pdf
new file mode 100644
index 0000000000..45a8ae2bd2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E059.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E060.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E060.pdf
new file mode 100644
index 0000000000..7a0e488172
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E060.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E061.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E061.pdf
new file mode 100644
index 0000000000..2e3b5992b3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E061.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E062.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E062.pdf
new file mode 100644
index 0000000000..69fb85f956
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E062.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E063.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E063.pdf
new file mode 100644
index 0000000000..5eea8873cc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E063.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E064.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E064.pdf
new file mode 100644
index 0000000000..ad4fdc7034
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E064.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E065.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E065.pdf
new file mode 100644
index 0000000000..60400eaa5e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E065.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E067.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E067.pdf
new file mode 100644
index 0000000000..2784052b1b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E067.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E068.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E068.pdf
new file mode 100644
index 0000000000..0d74c205c8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E068.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E069.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E069.pdf
new file mode 100644
index 0000000000..b5e6b2c220
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E069.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E070.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E070.pdf
new file mode 100644
index 0000000000..7554106d64
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E070.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F001.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F001.pdf
new file mode 100644
index 0000000000..349878fd5f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F001.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F002.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F002.pdf
new file mode 100644
index 0000000000..2ba7a82fbc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F003.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F003.pdf
new file mode 100644
index 0000000000..54b6f5da2c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F004.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F004.pdf
new file mode 100644
index 0000000000..ed273764db
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F005.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F005.pdf
new file mode 100644
index 0000000000..1e8a6103e0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F005.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F006.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F006.pdf
new file mode 100644
index 0000000000..c9f1f7bccb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F006.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F007.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F007.pdf
new file mode 100644
index 0000000000..b0e5f32cbe
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F008.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F008.pdf
new file mode 100644
index 0000000000..ba9cfa7c4b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F008.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F009.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F009.pdf
new file mode 100644
index 0000000000..cc4b7f52b0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F010.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F010.pdf
new file mode 100644
index 0000000000..785c5f9122
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F011.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F011.pdf
new file mode 100644
index 0000000000..12ff257deb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F012.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F012.pdf
new file mode 100644
index 0000000000..ddd5706419
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F013.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F013.pdf
new file mode 100644
index 0000000000..2772821d84
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F014.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F014.pdf
new file mode 100644
index 0000000000..2aaf0826af
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F014.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F015.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F015.pdf
new file mode 100644
index 0000000000..cf3ae1c46f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F016.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F016.pdf
new file mode 100644
index 0000000000..06ff3352a3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F017.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F017.pdf
new file mode 100644
index 0000000000..c9a67b8129
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F017.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F018.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F018.pdf
new file mode 100644
index 0000000000..57aa49d669
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F019.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F019.pdf
new file mode 100644
index 0000000000..a331b56a36
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M001.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M001.pdf
new file mode 100644
index 0000000000..bf8ac9665d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M001.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]RN! =X)-|`6ыOXh6yva2G`t}ϔYLeM덞^2}L[/j^$ո;b.ʵ wy)n{y':.zM iaE +$7qE®i(,r _P+lc'DO_tir-ʦT:li.48␂KFGʰ?b'* Cm
+@D :ʛG=y,pkC0ob:rUs,kD|hjBEW׽ج0\7<
+endstream
+endobj
+5 0 obj
+ 344
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109193356+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000754 00000 n
+0000000530 00000 n
+0000000458 00000 n
+0000000015 00000 n
+0000000436 00000 n
+0000000819 00000 n
+0000000935 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+987
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M002.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M002.pdf
new file mode 100644
index 0000000000..6fe904c927
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M003.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M003.pdf
new file mode 100644
index 0000000000..caaddd06b5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M004.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M004.pdf
new file mode 100644
index 0000000000..28795830dc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M005.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M005.pdf
new file mode 100644
index 0000000000..56aaa82124
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M005.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M006.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M006.pdf
new file mode 100644
index 0000000000..5da66c41a2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M006.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M007.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M007.pdf
new file mode 100644
index 0000000000..5cc9f1a019
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M008.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M008.pdf
new file mode 100644
index 0000000000..e8de5ffce9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M008.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M009.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M009.pdf
new file mode 100644
index 0000000000..c915a508c2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M010.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M010.pdf
new file mode 100644
index 0000000000..90334f320f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M011.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M011.pdf
new file mode 100644
index 0000000000..795558d1b5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M012.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M012.pdf
new file mode 100644
index 0000000000..33f20feb1a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M012.pdf
@@ -0,0 +1,71 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xUTA!
+>1<!jiw$Re^Fr.\eK2-__OE_̆5K5U[W{~>|e^h)ڃYz݁Xo;y:#}'[H)fE}&EgRY]@";UzRʳ2{{ 8tgLw9_^# R
+Ztg`ŀK۰mH&d)/+M{^,\2pͲ<;JiҼ,<?(ՙT-H/DV0c'*8P{K\hҲF3i^-,>\o~k)OGMnuzX)(NAn}q` JL 8<WxC 5V`Iaɟ)A<=J'Չq)6+n>ULc@a65($ݔr#uحeLH![DMª۾,v"}<C]Did4uВAH5J-ZiLB . [
+)5ti3z VdDl4^;hwoNM!A0@@jcCVn5FBS25!ݶ/dw_x'A!qv>{pD5rHc[ 2+_A'tEjAqմ(fX DCBLKjq :݃f5n]AUcv٣tY`Wh Ax(ƍHz)_?N
+endstream
+endobj
+5 0 obj
+ 766
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109193357+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001176 00000 n
+0000000952 00000 n
+0000000880 00000 n
+0000000015 00000 n
+0000000858 00000 n
+0000001241 00000 n
+0000001357 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1409
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M013.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M013.pdf
new file mode 100644
index 0000000000..a9133b9fbe
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M014.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M014.pdf
new file mode 100644
index 0000000000..8731ca26ff
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M014.pdf
@@ -0,0 +1,72 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xeUI$7 @"%J3|HCpP[Mh#Rd
+e}~d8w+}Oai Y6,]
+lrc˅:gJP kDXVoA:9lwc7;e*e.Џo<CZer*DXC6({mմ|Aqttb:u{9;s{%2*4G3$;&t6kz۱q^Fs8W@$px=w{ĐHcJݹUG҄M$SإAL;uF@(lSB
+M}iWD KaQOMBٚFdy8ʈ-tQSPj)2,X{5sF"^tTc9C
+8x;x.Vl@M0lA:9lwc_S_͉Ig- ^xtld&X+ 1GvD+BJm1;gt{C.`, gX!Rt,EX_kWŀhk^5dACZmEUM|RoDǎXl酗W>C#t yb%C;@m<BP@+ O)R.pXF"mڟﱔ0GUbdv^!ڏ>^l1qZW*$0c7l՘Hmi㈳8;Xd 긯 qQd7|C t]|Z%s6Gژl3W6Aub] : > KER!+skqUs7)ؐy D́}5Xa160mQUIF'_-k[WZ?vCc 㡿CNӿ鐱g
+endstream
+endobj
+5 0 obj
+ 921
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109193357+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001331 00000 n
+0000001107 00000 n
+0000001035 00000 n
+0000000015 00000 n
+0000001013 00000 n
+0000001396 00000 n
+0000001512 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1564
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M015.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M015.pdf
new file mode 100644
index 0000000000..1e0e1991ba
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M016.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M016.pdf
new file mode 100644
index 0000000000..c301799f8c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M017.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M017.pdf
new file mode 100644
index 0000000000..403e4af957
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M017.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M018.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M018.pdf
new file mode 100644
index 0000000000..c1684c5612
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M019.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M019.pdf
new file mode 100644
index 0000000000..899dc343f7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M020.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M020.pdf
new file mode 100644
index 0000000000..a05f2f9c28
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M020.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M021.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M021.pdf
new file mode 100644
index 0000000000..e8e9b4444b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M021.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M022.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M022.pdf
new file mode 100644
index 0000000000..e8c5b7be31
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M022.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M023.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M023.pdf
new file mode 100644
index 0000000000..422ada6ac3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M023.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M024.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M024.pdf
new file mode 100644
index 0000000000..48cf114099
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M024.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M025.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M025.pdf
new file mode 100644
index 0000000000..95cacc24f2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M025.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M026.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M026.pdf
new file mode 100644
index 0000000000..96d5a96820
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M026.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M027.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M027.pdf
new file mode 100644
index 0000000000..57ff5fc421
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M027.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M028.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M028.pdf
new file mode 100644
index 0000000000..24fb157422
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M029.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M029.pdf
new file mode 100644
index 0000000000..8c0888c998
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M029.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M030.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M030.pdf
new file mode 100644
index 0000000000..b23dff04e0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M030.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M031.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M031.pdf
new file mode 100644
index 0000000000..58ecb0cda8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M031.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M032.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M032.pdf
new file mode 100644
index 0000000000..7fd3c279dc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M032.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M033.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M033.pdf
new file mode 100644
index 0000000000..5800fc4b44
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M033.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M034.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M034.pdf
new file mode 100644
index 0000000000..aed2ce3967
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M034.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M035.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M035.pdf
new file mode 100644
index 0000000000..d419f6aeeb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M035.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M036.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M036.pdf
new file mode 100644
index 0000000000..b3c84ef022
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M036.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M037.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M037.pdf
new file mode 100644
index 0000000000..a8088da27f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M037.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M038.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M038.pdf
new file mode 100644
index 0000000000..32f5f03eab
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M038.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M039.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M039.pdf
new file mode 100644
index 0000000000..bbe60d2b2c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M039.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M040.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M040.pdf
new file mode 100644
index 0000000000..c5be6a8394
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M040.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M041.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M041.pdf
new file mode 100644
index 0000000000..7f6c9cac5b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M041.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M042.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M042.pdf
new file mode 100644
index 0000000000..240f54561f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M042.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M043.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M043.pdf
new file mode 100644
index 0000000000..3cec333117
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M043.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M044.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M044.pdf
new file mode 100644
index 0000000000..c4e9b90c42
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M044.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M045.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M045.pdf
new file mode 100644
index 0000000000..e18044d5f1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M045.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M046.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M046.pdf
new file mode 100644
index 0000000000..1c7dc014f0
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M046.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M047.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M047.pdf
new file mode 100644
index 0000000000..96c4433dcb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M047.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M048.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M048.pdf
new file mode 100644
index 0000000000..a738ce3b0c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M048.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M049.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M049.pdf
new file mode 100644
index 0000000000..913fe8388a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M049.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M050.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M050.pdf
new file mode 100644
index 0000000000..c2e3ba295e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M050.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M051.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M051.pdf
new file mode 100644
index 0000000000..841dcfc799
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M051.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M052.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M052.pdf
new file mode 100644
index 0000000000..5d9fb414b9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M052.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M053.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M053.pdf
new file mode 100644
index 0000000000..3124ec47c6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M053.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M054.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M054.pdf
new file mode 100644
index 0000000000..e146dadce7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M054.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M055.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M055.pdf
new file mode 100644
index 0000000000..b744fbd6bd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M055.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M056.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M056.pdf
new file mode 100644
index 0000000000..42b1a3d475
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M056.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M057.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M057.pdf
new file mode 100644
index 0000000000..8a0fa9e817
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M057.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M058.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M058.pdf
new file mode 100644
index 0000000000..d16a09083f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M058.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M059.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M059.pdf
new file mode 100644
index 0000000000..f97c260b8a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M059.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M060.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M060.pdf
new file mode 100644
index 0000000000..373633588c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M060.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P001.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P001.pdf
new file mode 100644
index 0000000000..4204639a36
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P001.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P002.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P002.pdf
new file mode 100644
index 0000000000..cbff0bd974
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P003.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P003.pdf
new file mode 100644
index 0000000000..3d70a21875
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P004.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P004.pdf
new file mode 100644
index 0000000000..7557ddb6b3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P005.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P005.pdf
new file mode 100644
index 0000000000..47f4f06543
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P005.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P006.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P006.pdf
new file mode 100644
index 0000000000..d81b6c5e1a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P006.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P007.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P007.pdf
new file mode 100644
index 0000000000..7ef93afe83
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P008.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P008.pdf
new file mode 100644
index 0000000000..16b5b94fbb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P008.pdf
@@ -0,0 +1,72 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]VI$7 :,g F9TfRݍ2\39R|_A"~8gR|#3´G<8: <[c~>~z೵•eFM}ZS@0*#5MHCRUG5x3Y^{O3776iC;^=Lf.`eeg#$SskCtnOvѹtM8R`3 %d>Rᨈxt[LP2Β2kUPްfOy b[[A y"CpSkoA\ p$
+GfaK!mSj,h d9AcUȠ2!
+Ad@Gi啤=[%h,+߉n܊Hۋ0xDrm7:+,1{; ~5NPbxK4~KKNZa#mFRX*{ xKSC3@A@Y&EON86-R^a*FFM6ZMٜ-שQ I)| 8a(}&| ^W0mOӶ,XNqq
+wmex.=8W,L$Ol<*sn9 ?!%lPgbA'7Ɩ FR㞚B>tk-qG1#'Eg>%VBl\9WbJ%ؼWe)N+ljՂÉYxoH_)-@Kpc8Q}ſtV%rP
++\r&P{{aF`|l}͍s\("|0;ʚr %]P~ r'C7-L'eҍi|x0/N|2$;1ܬ5:>D8_7Wk ϒoVwѶƸ
+endstream
+endobj
+5 0 obj
+ 949
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195038+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001359 00000 n
+0000001135 00000 n
+0000001063 00000 n
+0000000015 00000 n
+0000001041 00000 n
+0000001424 00000 n
+0000001540 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1592
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P009.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P009.pdf
new file mode 100644
index 0000000000..8aedd6064b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P010.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P010.pdf
new file mode 100644
index 0000000000..494c68d1df
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P011.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P011.pdf
new file mode 100644
index 0000000000..42d5f63dde
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P012.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P012.pdf
new file mode 100644
index 0000000000..b196406cb8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P013.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P013.pdf
new file mode 100644
index 0000000000..6f94e89b1f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P014.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P014.pdf
new file mode 100644
index 0000000000..40f30b66a3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P014.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P015.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P015.pdf
new file mode 100644
index 0000000000..7de907b497
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P016.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P016.pdf
new file mode 100644
index 0000000000..26f222085e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P017.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P017.pdf
new file mode 100644
index 0000000000..07dc17d10e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P017.pdf
@@ -0,0 +1,73 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]TK! s
+֑8F3$R_hmɌwN$/IET`̧2K?mpl%uU⎴þf=c[Ksȿ%DH4TVPo*7YțrgKr51 F>@ީ
+2֑89+Ը@\@mAPj!Z'
+'I3Zp1ܕT\R<rĊ赑pD <7 l* n]GLj_Q6~Ս]>k$57=D{/UfJFX"1
+K0̳Ehp7\ j(#!zՂBDAL'KIGDcϵ_ V,Kźʎ9`2arGޗih2!ԑΤ]_Ю(9Wѹ b'mu8k
+iƮkזtD1|VSv T6tbju6`Z7%ƶ\_0Yo44 ]@!D5 oSބE5)F L,HQbo_\2P FZ;^mxt|/8Mo^s.~2U%2
+endstream
+endobj
+5 0 obj
+ 630
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195039+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001040 00000 n
+0000000816 00000 n
+0000000744 00000 n
+0000000015 00000 n
+0000000722 00000 n
+0000001105 00000 n
+0000001221 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1273
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P018.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P018.pdf
new file mode 100644
index 0000000000..1649aaaed1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P019.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P019.pdf
new file mode 100644
index 0000000000..567db7aa6f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P020.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P020.pdf
new file mode 100644
index 0000000000..1a93bf6a57
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P020.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P021.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P021.pdf
new file mode 100644
index 0000000000..52a3486198
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P021.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P022.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P022.pdf
new file mode 100644
index 0000000000..b3221c84d7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P022.pdf
@@ -0,0 +1,71 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]TK! s
+֑`0#DHyo1x/R7ݣܶ?nJ{}_V}k Z,-n մ+J{gݰ//w,9ÅQ(*JrBuTG)Mt 
+CٰP +ȹPP591R=KʤZODJ|w>OA;xuv骒XwS!}T ?7A"i}Tcu6+(-eð"ҵ/r_,|,`*gZ.rVĒhccL_b-<<J #ՀBfEl9ljnnXxe0ҥkL2|%VNEe6{!hv\2L9b(F4Q5Pk:d5!\Q,0`k5 `/Am03[MyfGaE
+kӘ4%nU$FtS7^Sd>dd(?pPB!;,dѡo݂nN,B^p1p/7}e؏iuoQJ<
+endstream
+endobj
+5 0 obj
+ 550
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195039+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000960 00000 n
+0000000736 00000 n
+0000000664 00000 n
+0000000015 00000 n
+0000000642 00000 n
+0000001025 00000 n
+0000001141 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1193
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P023.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P023.pdf
new file mode 100644
index 0000000000..bc61ff3957
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P023.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P024.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P024.pdf
new file mode 100644
index 0000000000..cfdcc65602
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P024.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P025.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P025.pdf
new file mode 100644
index 0000000000..0f63052829
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P025.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P026.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P026.pdf
new file mode 100644
index 0000000000..14622fd474
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P026.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P027.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P027.pdf
new file mode 100644
index 0000000000..287fa92485
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P027.pdf
@@ -0,0 +1,74 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xuVK! s
+֑B0`>"Y$2`wDѓ^wUcl_ hϧG:%?FXJFT`<s5̳b#w꬞OkTrs[M+QdDk \j0-c!>JaEYC+gGy zAjbۃ1QMn: Db-lF'Ҁ D d#x{el&PKHm9赭<X{ N!jJ88;ClX͋73Hr8KLKZ
+QkE ԁ;V
+O[V_b w]F5R[="
+e{lA۱Lcڀ,QiňL]d*~ž?fj8QKkn9q|:
+pav6~!#$[H#L!I\0dtU^!'05qm l9U?8P:}/U3\BqB s!]Fb(E.ⴚۄQM茛2⺦E`E& 9M0|+1[ 34¸@1qBM}J^0"n^#uBEĐ&rf :hÀ*eQnX"u9](vqCI:
+E2*h*ET|rks`(7Y 9";N!h.}U͍K^ = \\Lu4#ApتCcj_ܑ
+endstream
+endobj
+5 0 obj
+ 802
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195039+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001212 00000 n
+0000000988 00000 n
+0000000916 00000 n
+0000000015 00000 n
+0000000894 00000 n
+0000001277 00000 n
+0000001393 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1445
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P028.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P028.pdf
new file mode 100644
index 0000000000..fbc0e109ac
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P029.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P029.pdf
new file mode 100644
index 0000000000..cb3e49f544
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P029.pdf
@@ -0,0 +1,73 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]VI$7 :0-j3 F3s>?H*3tUE2(qLkh
+WxNZT+.Z3r]Qp
+EA&[}He±owşBJiMrnD΅F*nviUV8ZRشmPj TZL? $& ¹DZ2IkAWϔpI4rNĭ+.Px7|bi4C)NVy FrMp=؛:-%[a+WS/]+Z;ј
+mh3xQvp N-A ݆Bwܨ[Ç c/*xcPF bghmß Uct.C/1 "<
+W"z/5'lj˭>},V.Ʃ/J}Gf)Hx,A 7wç&Ef!r<ʱ=[K].u*Іy;᧺ĸ5C㸬v"ySSY]|&SO!6{g{vXReg@ ˚jvу[۸VSpt8Cf+>D LMN{i8#3̼Ø!}9jo=1\KG~ ʕ&݂ܐ7=jIdMALj$7Wv KS徛Vv:cuwxųaFC3)į͎R\нCEWvWf\H}=}/]'[y}JMθ>`Fʻ`a<8fh@rVdЄ&qBWy9=YFu'G Hu=̺g2dwp#/BdL %XYSD/Ɨcw: ҵ@;
+MhY2b}MT!w7 6"I^?yNc225|}#!F
+endstream
+endobj
+5 0 obj
+ 972
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195039+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001382 00000 n
+0000001158 00000 n
+0000001086 00000 n
+0000000015 00000 n
+0000001064 00000 n
+0000001447 00000 n
+0000001563 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1615
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P030.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P030.pdf
new file mode 100644
index 0000000000..021c0b9795
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P030.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P031.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P031.pdf
new file mode 100644
index 0000000000..421ee50f92
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P031.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P032.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P032.pdf
new file mode 100644
index 0000000000..584f20d8e7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P032.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P033.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P033.pdf
new file mode 100644
index 0000000000..f7d6e8f944
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P033.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P034.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P034.pdf
new file mode 100644
index 0000000000..d8ee13c5fd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P034.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P035.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P035.pdf
new file mode 100644
index 0000000000..d42d57242c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P035.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P036.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P036.pdf
new file mode 100644
index 0000000000..555a6afe24
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P036.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P037.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P037.pdf
new file mode 100644
index 0000000000..6a6563ca97
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P037.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P038.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P038.pdf
new file mode 100644
index 0000000000..ddaf05f9ed
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P038.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P039.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P039.pdf
new file mode 100644
index 0000000000..0a41c0d8b6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P039.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P040.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P040.pdf
new file mode 100644
index 0000000000..bfeec12e1e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P040.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P041.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P041.pdf
new file mode 100644
index 0000000000..6da07255e5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P041.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P042.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P042.pdf
new file mode 100644
index 0000000000..8a77221585
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P042.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P043.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P043.pdf
new file mode 100644
index 0000000000..a4e069ba9a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P043.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P044.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P044.pdf
new file mode 100644
index 0000000000..81cf8f7189
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P044.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P045.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P045.pdf
new file mode 100644
index 0000000000..16726e7cf2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P045.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P046.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P046.pdf
new file mode 100644
index 0000000000..320c0f6c5d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P046.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P047.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P047.pdf
new file mode 100644
index 0000000000..de38a973bd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P047.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P048.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P048.pdf
new file mode 100644
index 0000000000..30b9137f54
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P048.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P049.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P049.pdf
new file mode 100644
index 0000000000..e7ebbd1202
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P049.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P050.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P050.pdf
new file mode 100644
index 0000000000..c0cb30329d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P050.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P051.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P051.pdf
new file mode 100644
index 0000000000..c4f9032953
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P051.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P052.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P052.pdf
new file mode 100644
index 0000000000..1aa30711be
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P052.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P053.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P053.pdf
new file mode 100644
index 0000000000..5e75ac56a2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P053.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P054.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P054.pdf
new file mode 100644
index 0000000000..39fbd4b6af
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P054.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P055.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P055.pdf
new file mode 100644
index 0000000000..561d15386b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P055.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P056.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P056.pdf
new file mode 100644
index 0000000000..2c984d0b7e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P056.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P057.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P057.pdf
new file mode 100644
index 0000000000..886365621e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P057.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P058.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P058.pdf
new file mode 100644
index 0000000000..e82cdecead
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P058.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P059.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P059.pdf
new file mode 100644
index 0000000000..46a6dc0b1c
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P059.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P060.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P060.pdf
new file mode 100644
index 0000000000..b152234d17
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P060.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P061.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P061.pdf
new file mode 100644
index 0000000000..04327846dd
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P061.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P062.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P062.pdf
new file mode 100644
index 0000000000..a3a86b1252
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P062.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P063.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P063.pdf
new file mode 100644
index 0000000000..bc4e823a18
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P063.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P064.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P064.pdf
new file mode 100644
index 0000000000..feaf4db700
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P064.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P065.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P065.pdf
new file mode 100644
index 0000000000..f0a3cf25b6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P065.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P066.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P066.pdf
new file mode 100644
index 0000000000..ca0ad4180a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P066.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P067.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P067.pdf
new file mode 100644
index 0000000000..f8de06dbd8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P067.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P068.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P068.pdf
new file mode 100644
index 0000000000..9de356ab4d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P068.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P069.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P069.pdf
new file mode 100644
index 0000000000..93c6e07dd2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P069.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P070.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P070.pdf
new file mode 100644
index 0000000000..34b973fa36
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P070.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P071.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P071.pdf
new file mode 100644
index 0000000000..882eec6982
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P071.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P072.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P072.pdf
new file mode 100644
index 0000000000..85c8329f27
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P072.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P073.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P073.pdf
new file mode 100644
index 0000000000..a70fc01368
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P073.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P074.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P074.pdf
new file mode 100644
index 0000000000..b0dcdbdd31
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P074.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P075.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P075.pdf
new file mode 100644
index 0000000000..dbd0eece86
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P075.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W001.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W001.pdf
new file mode 100644
index 0000000000..93e4ff1096
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W001.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xMPN1 L8 h:!V<E|7_ꉎp {-Vqɭa}HtOgx~:[0z DL&5<|\wtXӬ\10dڸԂ "ay<Ej b63YT58Q3|)sm eNI/X!%l1_ ^Mcw@9 Zܱ1\mŷY
+Cp&źȭ =rm
+endstream
+endobj
+5 0 obj
+ 279
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 450 393 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109200440+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000683 00000 n
+0000000465 00000 n
+0000000393 00000 n
+0000000015 00000 n
+0000000371 00000 n
+0000000748 00000 n
+0000000864 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+916
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W002.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W002.pdf
new file mode 100644
index 0000000000..cd4e5efe71
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W003.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W003.pdf
new file mode 100644
index 0000000000..e9718ec0b9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W003.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xmQN1 Bl hZġmqPLZcg0Ҳ Jg>Z%y@/z=1 ؁\Gw҈IB+EH>;:Ly|+ 5 t7ˤ^c%pO!.r}XUd'sv] ķY6Zc<3#
+I^kluY7v뫯sF&Q_mͥaA6![ n-v&s(ɽuЯ#8n
+endstream
+endobj
+5 0 obj
+ 280
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 450 393 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109200440+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000684 00000 n
+0000000466 00000 n
+0000000394 00000 n
+0000000015 00000 n
+0000000372 00000 n
+0000000749 00000 n
+0000000865 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+917
+%%EOF
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W004.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W004.pdf
new file mode 100644
index 0000000000..52821d3ee2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W005.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W005.pdf
new file mode 100644
index 0000000000..e0af280633
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W005.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W006.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W006.pdf
new file mode 100644
index 0000000000..5a8cd08340
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W006.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W007.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W007.pdf
new file mode 100644
index 0000000000..5aee6b6eeb
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W008.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W008.pdf
new file mode 100644
index 0000000000..2279b4802e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W008.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W009.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W009.pdf
new file mode 100644
index 0000000000..9dda0f4ee9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W010.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W010.pdf
new file mode 100644
index 0000000000..8a70dd40fc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W011.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W011.pdf
new file mode 100644
index 0000000000..5feeebec8d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W012.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W012.pdf
new file mode 100644
index 0000000000..fed0023c08
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W013.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W013.pdf
new file mode 100644
index 0000000000..22e6c03d15
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W014.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W014.pdf
new file mode 100644
index 0000000000..0ffc581a81
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W014.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W015.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W015.pdf
new file mode 100644
index 0000000000..0a8f3c6a98
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W016.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W016.pdf
new file mode 100644
index 0000000000..1635032be1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W017.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W017.pdf
new file mode 100644
index 0000000000..e7f3eaa7e3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W017.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W018.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W018.pdf
new file mode 100644
index 0000000000..f56cfa12f4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W019.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W019.pdf
new file mode 100644
index 0000000000..37445e7a28
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W020.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W020.pdf
new file mode 100644
index 0000000000..1e06b95eab
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W020.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W021.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W021.pdf
new file mode 100644
index 0000000000..d60016dc80
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W021.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W022.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W022.pdf
new file mode 100644
index 0000000000..bf13211210
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W022.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W023.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W023.pdf
new file mode 100644
index 0000000000..d7b080a243
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W023.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W024.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W024.pdf
new file mode 100644
index 0000000000..c1148bf3e6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W024.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W025.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W025.pdf
new file mode 100644
index 0000000000..1f94d88dde
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W025.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W026.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W026.pdf
new file mode 100644
index 0000000000..b51f591e19
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W026.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W027.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W027.pdf
new file mode 100644
index 0000000000..299c473c61
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W027.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W028.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W028.pdf
new file mode 100644
index 0000000000..06a2a1730e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W029.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W029.pdf
new file mode 100644
index 0000000000..b26c8d242e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W029.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W030.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W030.pdf
new file mode 100644
index 0000000000..6991d20397
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W030.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W031.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W031.pdf
new file mode 100644
index 0000000000..3b04fca386
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W031.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W032.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W032.pdf
new file mode 100644
index 0000000000..874d5d1856
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W032.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W033.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W033.pdf
new file mode 100644
index 0000000000..954c565b07
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W033.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W034.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W034.pdf
new file mode 100644
index 0000000000..e05340bf57
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W034.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W035.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W035.pdf
new file mode 100644
index 0000000000..b519520de2
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W035.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W036.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W036.pdf
new file mode 100644
index 0000000000..8b3c75efa4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W036.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W037.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W037.pdf
new file mode 100644
index 0000000000..82fdb9e25a
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W037.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W038.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W038.pdf
new file mode 100644
index 0000000000..20d7fecebf
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W038.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W039.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W039.pdf
new file mode 100644
index 0000000000..1c99515ed9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W039.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W040.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W040.pdf
new file mode 100644
index 0000000000..3941b25097
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W040.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W041.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W041.pdf
new file mode 100644
index 0000000000..c6416f08ea
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W041.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W042.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W042.pdf
new file mode 100644
index 0000000000..9321af66db
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W042.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W043.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W043.pdf
new file mode 100644
index 0000000000..55ead51620
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W043.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W044.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W044.pdf
new file mode 100644
index 0000000000..e262f16d1d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W044.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W045.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W045.pdf
new file mode 100644
index 0000000000..e6d68cba29
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W045.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W046.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W046.pdf
new file mode 100644
index 0000000000..d1d0f0b781
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W046.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W047.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W047.pdf
new file mode 100644
index 0000000000..10b71d56d7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W047.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W048.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W048.pdf
new file mode 100644
index 0000000000..ed0b84886f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W048.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W049.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W049.pdf
new file mode 100644
index 0000000000..814955db23
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W049.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W050.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W050.pdf
new file mode 100644
index 0000000000..c2f4bcb9b8
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W050.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W051.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W051.pdf
new file mode 100644
index 0000000000..b0e7c09dc4
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W051.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W052.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W052.pdf
new file mode 100644
index 0000000000..9ad59817a5
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W052.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W053.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W053.pdf
new file mode 100644
index 0000000000..8013e0e966
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W053.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W054.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W054.pdf
new file mode 100644
index 0000000000..2b3f5323d9
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W054.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W055.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W055.pdf
new file mode 100644
index 0000000000..c61a359de6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W055.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W056.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W056.pdf
new file mode 100644
index 0000000000..6f3b502881
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W056.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W057.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W057.pdf
new file mode 100644
index 0000000000..a4e2e379cc
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W057.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W058.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W058.pdf
new file mode 100644
index 0000000000..a6cc2f357e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W058.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W059.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W059.pdf
new file mode 100644
index 0000000000..03037b8f9d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W059.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W060.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W060.pdf
new file mode 100644
index 0000000000..4947b7f529
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W060.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W061.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W061.pdf
new file mode 100644
index 0000000000..fa0dbad4ee
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W061.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W062.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W062.pdf
new file mode 100644
index 0000000000..38168b8b90
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W062.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W063.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W063.pdf
new file mode 100644
index 0000000000..0bc81af20e
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W063.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W064.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W064.pdf
new file mode 100644
index 0000000000..75f8625838
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W064.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W065.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W065.pdf
new file mode 100644
index 0000000000..f13b05c99f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W065.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W066.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W066.pdf
new file mode 100644
index 0000000000..92afceab2f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W066.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W067.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W067.pdf
new file mode 100644
index 0000000000..d891a4bdc7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W067.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W068.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W068.pdf
new file mode 100644
index 0000000000..0da984a06f
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W068.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W069.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W069.pdf
new file mode 100644
index 0000000000..494ab14531
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W069.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W070.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W070.pdf
new file mode 100644
index 0000000000..4cd988cba7
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W070.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W071.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W071.pdf
new file mode 100644
index 0000000000..0e55001c94
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W071.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W072.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W072.pdf
new file mode 100644
index 0000000000..7b8a9c0839
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W072.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W073.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W073.pdf
new file mode 100644
index 0000000000..0f6f5fcd9b
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W073.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W074.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W074.pdf
new file mode 100644
index 0000000000..b6ec9d92f3
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W074.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W075.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W075.pdf
new file mode 100644
index 0000000000..6e8b28d276
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W075.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W076.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W076.pdf
new file mode 100644
index 0000000000..32709b9144
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W076.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W077.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W077.pdf
new file mode 100644
index 0000000000..db62ce47be
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W077.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W078.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W078.pdf
new file mode 100644
index 0000000000..867eb1b6c1
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W078.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W079.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W079.pdf
new file mode 100644
index 0000000000..78e325ce3d
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W079.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W080.pdf b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W080.pdf
new file mode 100644
index 0000000000..b0b0b76b90
--- /dev/null
+++ b/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W080.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety.dtx b/macros/latex/contrib/isosafety/isosafety.dtx
index d21aa05a72..da754c4932 100644
--- a/macros/latex/contrib/isosafety/isosafety.dtx
+++ b/macros/latex/contrib/isosafety/isosafety.dtx
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{isosafety}
%<*package>
- [2023/10/22 v1.0 ISO Safety Colors And Safety Signs]
+ [2023/11/09 v1.1 ISO Safety Colors And Safety Signs]
\RequirePackage{graphicx}
\RequirePackage{xcolor}
@@ -30,7 +30,7 @@
%
%<*driver>
\documentclass{ltxdoc}
-\usepackage{isosafety}[2023/10/22]
+\usepackage{isosafety}[2023/11/09]
\usepackage{hyperref}
\EnableCrossrefs
\CodelineIndex
@@ -44,7 +44,7 @@
% \fi
%
%
-% \changes{v1.0}{2023/10/22}{Initial version}
+% \changes{v1.1}{2023/11/09}{Beta version}
%
% \GetFileInfo{isosafety.sty}
%
@@ -62,6 +62,11 @@
% 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{Dependencies}
+%
+% The package has the following dependencies: \texttt{graphicx}, \texttt{xcolor}.
+%
+%
% \section{Usage}
%
% \subsection{ISO colors}
@@ -99,7 +104,7 @@
% The command to access these signs has the following syntax:
%
% \begin{verbatim}
-% \Isosign{ISO-{Letter}{Number}.png}
+% \Isosign{{Letter}{Number}}
% \end{verbatim}
%
% \subsection{Signs - Example}
@@ -108,8 +113,11 @@
% Use the following command:
%
% \begin{verbatim}
-% \Isosign{ISO-F001.png}
+% \includegraphics{\Isosign{F001}}
% \end{verbatim}
+%
+% \includegraphics{\Isosign{F001}}
+% \vspace*{5mm}
%
% \noindent For an overview, take a look at \href{https://en.wikipedia.org/wiki/ISO_7010}{Wikipedia}
%
@@ -127,7 +135,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Isosign}[1]{images/ISO-#1.png}
+\newcommand{\Isosign}[1]{isosafety-pdfs/ISO_7010_#1.pdf}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex/contrib/isosafety/isosafety.ins b/macros/latex/contrib/isosafety/isosafety.ins
index 024d06df82..f7563b4ab1 100644
--- a/macros/latex/contrib/isosafety/isosafety.ins
+++ b/macros/latex/contrib/isosafety/isosafety.ins
@@ -44,7 +44,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\Msg{* file into a directory searched by TeX: *}
\Msg{* *}
\Msg{* isosafety.sty *}
-\Msg{* images/* *}
+\Msg{* isosafety-pdfs/* *}
\Msg{* *}
\Msg{* To produce the documentation run the file isosafety.dtx *}
\Msg{* through LaTeX. *}
diff --git a/macros/latex/contrib/isosafety/isosafety.pdf b/macros/latex/contrib/isosafety/isosafety.pdf
index 09009812ad..09d630c77a 100644
--- a/macros/latex/contrib/isosafety/isosafety.pdf
+++ 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 a81f6724b9..ddccab9d20 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-11-09]
+
+### Changed
+- Changed `luaotfload` integration to allow coexistance with (x)color.
+
## [2023-11-04]
### Fixed
@@ -311,7 +316,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-11-04...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-11-09...HEAD
+[2023-11-09]: https://github.com/latex3/latex3/compare/2023-11-04...2023-11-09
[2023-11-04]: https://github.com/latex3/latex3/compare/2023-10-23...2023-11-04
[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
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index 5f964ab76d..0dd36a404c 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2023-11-04
+Release 2023-11-09
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 2bcf84e996..add8305061 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-11-04}
+% \date{Released 2023-11-09}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2023-11-04}{}
+ {l3backend-dvipdfmx.def}{2023-11-09}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2023-11-04}{}
+ {l3backend-dvips.def}{2023-11-09}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2023-11-04}{}
+ {l3backend-dvisvgm.def}{2023-11-09}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2023-11-04}{}
+ {l3backend-luatex.def}{2023-11-09}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2023-11-04}{}
+ {l3backend-pdftex.def}{2023-11-09}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2023-11-04}{}
+ {l3backend-xetex.def}{2023-11-09}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index 2cb177b13d..cf91e71bed 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-11-04}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index 80b5d11e0f..dc7099b579 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 9b662307ed..cca4f54383 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-11-04}
+% \date{Released 2023-11-09}
%
% \maketitle
%
@@ -1297,7 +1297,7 @@ if luaotfload and luaotfload.set_transparent_colorstack then
token.new(0, 2),
token.create'l_tmpa_tl',
token.create'exp_after:wN',
- token.create'__color_select:nn',
+ token.create'@@_select:nn',
token.create'l_tmpa_tl',
token.new(0, 2),
}
@@ -1308,6 +1308,16 @@ if luaotfload and luaotfload.set_transparent_colorstack then
local html = htmlcolor:match(value)
if html then return html end
+% If no l3color named color with this name is known, check for defined xcolor colors
+ local l3color_prop = token.get_macro(string.format('l_@@_named_%s_prop', value))
+ if l3color_prop == nil or l3color_prop == '' then
+ local legacy_color_macro = token.create(string.format('\\color@%s', value))
+ if legacy_color_macro.cmdname ~= 'undefined_cs' then
+ token.put_next(legacy_color_macro)
+ return token.scan_argument()
+ end
+ end
+
tex.runtoks(function()
token.get_next()
color_export[6] = value
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index bd28199757..46b0e2af1d 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-11-04}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index f995d071a4..ce2e00a405 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-11-04}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index 8bfb6190e9..8fe469e639 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-11-04}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index eecc8376b1..440becf760 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-11-04}
+% \date{Released 2023-11-09}
%
% \maketitle
%
@@ -310,7 +310,7 @@ local pdfmanagement_active do
end
if pdfmanagement_active and luaotfload and luaotfload.set_transparent_colorstack then
- luaotfload.set_transparent_colorstack(function() return token.create'c__opacity_backend_stack_int'.index end)
+ luaotfload.set_transparent_colorstack(function() return token.create'c_@@_backend_stack_int'.index end)
local transparent_register = {
token.create'pdfmanagement_add:nnn',
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index 6079b8bdea..e787ab7c25 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-11-04}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 43a783d0b7..e4d9a3d9e5 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-11-09]
+
+### Added
+- Documentation for `\c_nan_fp`
+- `\str_case_e:en(TF)`
+
+### Fixed
+- Normalisation of `.inherit:n` key data (issue \#1314)
+
## [2023-11-01]
### Added
@@ -1582,7 +1591,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-11-01...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-11-09...HEAD
+[2023-11-09]: https://github.com/latex3/latex3/compare/2023-11-01...2023-11-09
[2023-11-01]: https://github.com/latex3/latex3/compare/2023-10-23...2023-11-01
[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
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 559fcaf4ae..24d65cc239 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-11-01
+Release 2023-11-09
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index bf5bc9e46f..02779c2b2d 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-11-01}%
+\def\ExplFileDate{2023-11-09}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index adfa71fe8e..f5081dca75 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 a63062c398..9ccc9f1669 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 18cd1df664..d8ce1db90e 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-11-01}
+\date{Released 2023-11-09}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 716b916817..576f3c5365 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 395e5e35b4..aae051cfff 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index b92b4faaa6..56e374ac13 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index b5c30bd42f..75dfcb1f60 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index 317f623f2f..788258863b 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 21563de7ea..67132003e0 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 3f3e484cfa..0689ba3649 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index ca0aae12ae..815ece4553 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index ec27fe33af..6b182058ed 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 6fcc98968a..0caac652d9 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index 920145ce23..731748faf4 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-11-01}
+% \date{Released 2023-11-09}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index 905adabf2d..1e5b09743b 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 9c363c8753..e6c46d3965 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index 537e38e21a..108442ee65 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 d133eaae45..613af946f9 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 423c9c2761..6af1bc4c00 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 831f583aa1..cecc72ceea 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 385086dca4..08a7d80880 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-11-01}
+% \date{Released 2023-11-09}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 83191b8074..dad8ef3c31 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index bba9b9535f..e29d08f317 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 499e1f2f5f..879d9bed5a 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index a2ff43ef28..7bf48968b9 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 2720891ef3..a6f1b1fcaa 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-functions.dtx b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
index 55729bbcd8..917f0bf330 100644
--- a/macros/latex/contrib/l3kernel/l3fp-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index edf16c72b2..ed5fe892b3 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index e13a671892..17fef94923 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 5e213c5e4c..e2654aae99 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 783a7fd0a3..afbff6f769 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
index 29ac5aa07c..201bec9270 100644
--- a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 5fec65448d..2b152c5ca6 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 8b9b843e2a..4421bda0a4 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-types.dtx b/macros/latex/contrib/l3kernel/l3fp-types.dtx
index b99be49f16..2c1f66ff71 100644
--- a/macros/latex/contrib/l3kernel/l3fp-types.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-types.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 1391e8b758..77c7bc625c 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
@@ -143,7 +143,7 @@
% point computations.
% \begin{verbatim}
% \documentclass{article}
-% \usepackage{xparse, siunitx}
+% \usepackage{siunitx}
% \ExplSyntaxOn
% \NewDocumentCommand { \calcnum } { m }
% { \num { \fp_to_scientific:n {#1} } }
@@ -806,6 +806,11 @@
% floating point expression as \texttt{inf} and \texttt{-inf}.
% \end{variable}
%
+% \begin{variable}[added = 2012-05-08, module = fp]{\c_nan_fp}
+% Not a number. This can be input directly in a floating point expression
+% as \texttt{nan}.
+% \end{variable}
+%
% \begin{variable}[updated = 2012-05-08, module = fp]{\c_e_fp}
% The value of the base of the natural logarithm, $\mathrm{e} = \exp(1)$.
% \end{variable}
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index e06c4d39bc..180b11fdaa 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index b658aedd8d..417e3cc08d 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
@@ -1761,7 +1761,7 @@
% \begin{macro}{\@@_case:nw, \@@_case_end:nw}
% For integer cases, the first task to fully expand the check
% condition. The over all idea is then much the same as for
-% \cs{tl_case:nnTF} as described in \pkg{l3tl}.
+% \cs{str_case:nnTF} as described in \pkg{l3str}.
% \begin{macrocode}
\cs_new:Npn \int_case:nnTF #1
{
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 3d1f4b8b1f..806b10c6c9 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index 9971ab4305..a07c55d7f5 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index d5bdf4d969..7dc05afee0 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
@@ -1578,6 +1578,13 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\l_@@_inherit_clist}
+% For normalisation.
+% \begin{macrocode}
+\clist_new:N \l_@@_inherit_clist
+% \end{macrocode}
+% \end{variable}
+%
% \begin{variable}{\l_keys_key_str, \l_keys_key_tl}
% The name of a key itself: needed when setting keys. The |tl| version
% is deprecated but has to be handled manually.
@@ -1662,7 +1669,7 @@
% \begin{variable}{\l_@@_unused_clist}
% Used when setting only some keys to store those left over.
% \begin{macrocode}
-\tl_new:N \l_@@_unused_clist
+\clist_new:N \l_@@_unused_clist
% \end{macrocode}
% \end{variable}
%
@@ -2080,7 +2087,9 @@
\cs_new_protected:Npn \@@_inherit:n #1
{
\@@_undefine:
- \cs_set_nopar:cpn { \c_@@_inherit_root_str \l_keys_path_str } {#1}
+ \clist_set:Nn \l_@@_inherit_clist {#1}
+ \cs_set_eq:cN { \c_@@_inherit_root_str \l_keys_path_str }
+ \l_@@_inherit_clist
}
% \end{macrocode}
% \end{macro}
@@ -2827,7 +2836,7 @@
\clist_clear:N \l_@@_unused_clist
\@@_set_known:nnn {#2} {#3} {#4}
\__kernel_tl_set:Ne #5 { \exp_not:o \l_@@_unused_clist }
- \tl_set:Nn \l_@@_unused_clist {#1}
+ \__kernel_tl_set:Ne \l_@@_unused_clist { \exp_not:n {#1} }
}
\cs_new_protected:Npn \keys_set_known:nn #1#2
{ \@@_set_known:nnn \q_@@_no_value {#1} {#2} }
@@ -2905,7 +2914,7 @@
\clist_clear:N \l_@@_unused_clist
\@@_set_filter:nnnn {#2} {#3} {#4} {#5}
\__kernel_tl_set:Ne #6 { \exp_not:o \l_@@_unused_clist }
- \tl_set:Nn \l_@@_unused_clist {#1}
+ \__kernel_tl_set:Ne \l_@@_unused_clist { \exp_not:n {#1} }
}
\cs_new_protected:Npn \keys_set_filter:nnn #1#2#3
{\@@_set_filter:nnnn \q_@@_no_value {#1} {#2} {#3} }
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index cd483bc1b8..091da9a2cf 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index 47570a46ac..ef582049e2 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index 57d7f05b3d..54c25fd3c3 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index afd91b76b3..479a4b5dfc 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 1c2156589f..617f4f2771 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 76d3d67a09..ad795f754b 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 ddb8613f00..21da08322a 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 4ebd7e81c0..047e2cb06b 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 9aeaf6e808..3827034689 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 64be0087b8..76744232d5 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 0c13cd3cc3..7b22e68de8 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 f003a75d6b..b8560d4ff9 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 fb00f3e886..e287a71c6e 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 85b20e8051..35de7bf84e 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 4dfef6f18d..1cfd090ab9 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 55e13420dc..42af25018d 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 b1c9c79ff8..992658599c 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 9380b62220..1ac0468ac6 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 29c821848c..8e95710ed5 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 f57c433fd6..b5cd8bc3a4 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
@@ -1546,7 +1546,7 @@
% \begin{macro}{\@@_case:NnTF}
% \begin{macro}{\@@_case:w,a\@@_case_end:nw}
% For boolean cases the overall idea is the same as for
-% \cs{tl_case:nnTF} as described in \pkg{l3tl}.
+% \cs{str_case:nnTF} as described in \pkg{l3str}.
% \begin{macrocode}
\cs_new:Npn \bool_case:nTF
{ \exp:w \@@_case:nTF }
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 320a0b926b..c6dc4afc99 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index d5687886f5..252cf67aef 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index c07583f539..aa6cf69c8a 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index d9ab9ba1dd..64ab9771a9 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 9dd5b3cbed..eba5656f82 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index a82fa5c16f..e296421b04 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index a36a77ec18..51419bd87e 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index 6aca45dae0..4ebc1af703 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
@@ -299,7 +299,7 @@
% ~~\Arg{false code}
% \end{syntax}
% Compares the \meta{test string} in turn with each
-% of the \meta{string cases} (all token lists are converted to strings).
+% of the \meta{string case}s (all token lists are converted to strings).
% If the two are equal (as described for
% \cs{str_if_eq:nnTF}) then the associated \meta{code} is left in the
% input stream and other cases are discarded. If any of the
@@ -312,11 +312,12 @@
% This set of functions performs no expansion on each
% \meta{string~case} argument, so any variable in there will be
% compared as a string. If expansion is needed in the
-% \meta{string~cases}, then \cs[no-index]{str_case_e:nn(TF)} should
+% \meta{string~case}s, then \cs[no-index]{str_case_e:nn(TF)} should
% be used instead.
% \end{function}
%
-% \begin{function}[added = 2018-06-19, EXP, noTF]{\str_case_e:nn}
+% \begin{function}[added = 2018-06-19, EXP, noTF]
+% {\str_case_e:nn, \str_case_e:en}
% \begin{syntax}
% \cs{str_case_e:nnTF} \Arg{test string} \\
% ~~|{| \\
@@ -329,9 +330,9 @@
% ~~\Arg{false code}
% \end{syntax}
% Compares the full expansion of the \meta{test string}
-% in turn with the full expansion of the \meta{string cases}
+% in turn with the full expansion of the \meta{string case}s
% (all token lists are converted to strings). If the two
-% full expansions are equal (as described for \cs{str_if_eq:nnTF}) then the
+% full expansions are equal (as described for \cs{str_if_eq:eeTF}) then the
% associated \meta{code} is left in the input stream
% and other cases are discarded. If any of the
% cases are matched, the \meta{true code} is also inserted into the
@@ -339,9 +340,9 @@
% match then the \meta{false code} is inserted. The function
% \cs{str_case_e:nn}, which does nothing if there is no match, is also
% available.
-% The \meta{test string} is expanded in each comparison, and must
-% always yield the same result: for example, random numbers must
-% not be used within this string.
+% In \cs[index=str_case_e:nnTF]{str_case_e:nn(TF)}, the \meta{test string}
+% is expanded in each comparison, and must always yield the same result:
+% for example, random numbers must not be used within this string.
% \end{function}
%
% \begin{function}[EXP, pTF, added = 2021-05-17]{\str_compare:nNn, \str_compare:eNe}
@@ -1234,13 +1235,18 @@
% \begin{macro}[EXP, noTF]
% {
% \str_case:nn, \str_case:Vn, \str_case:Nn, \str_case:on, \str_case:en, \str_case:nV, \str_case:nv,
-% \str_case_e:nn
+% \str_case_e:nn, \str_case_e:en
% }
% \begin{macro}[EXP]{\@@_case:nnTF, \@@_case_e:nnTF}
% \begin{macro}[EXP]
% {\@@_case:nw, \@@_case_e:nw, \@@_case_end:nw}
-% Much the same as \cs{tl_case:nnTF} here:
-% just a change in the internal comparison.
+% The aim here is to allow the case statement to be evaluated
+% using a known number of expansion steps (two), and without
+% needing to use an explicit \enquote{end of recursion} marker.
+% That is achieved by using the test input as the final case,
+% as this is always true. The trick is then to tidy up
+% the output such that the appropriate case code plus either
+% the \texttt{true} or \texttt{false} branch code is inserted.
% \begin{macrocode}
\cs_new:Npn \str_case:nn #1#2
{
@@ -1299,12 +1305,26 @@
}
\cs_new:Npn \@@_case_e:nnTF #1#2#3#4
{ \@@_case_e:nw {#1} #2 {#1} { } \s_@@_mark {#3} \s_@@_mark {#4} \s_@@_stop }
+\cs_generate_variant:Nn \str_case_e:nn { e }
+\prg_generate_conditional_variant:Nnn \str_case_e:nn { e } { T , F , TF }
\cs_new:Npn \@@_case_e:nw #1#2#3
{
\str_if_eq:eeTF {#1} {#2}
{ \@@_case_end:nw {#3} }
{ \@@_case_e:nw {#1} }
}
+% \end{macrocode}
+% To tidy up the recursion, there are two outcomes. If there was a hit to
+% one of the cases searched for, then |#1| is the code to insert,
+% |#2| is the \emph{next} case to check on and |#3| is all of
+% the rest of the cases code. That means that |#4| is the \texttt{true}
+% branch code, and |#5| tidies up the spare \cs{s_@@_mark} and the
+% \texttt{false} branch. On the other hand, if none of the cases matched
+% then we arrive here using the \enquote{termination} case of comparing
+% the search with itself. That means that |#1| is empty, |#2| is
+% the first \cs{s_@@_mark} and so |#4| is the \texttt{false} code (the
+% \texttt{true} code is mopped up by |#3|).
+% \begin{macrocode}
\cs_new:Npn \@@_case_end:nw #1#2#3 \s_@@_mark #4#5 \s_@@_stop
{ \exp_end: #1 #4 }
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index fdaafb1a43..a2ea8f0347 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 704fc29a32..cf9ac905a5 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-11-01}
+\date{Released 2023-11-09}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index 1fd86e3b60..878424e3c5 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 e9a9840a5f..06ffe161f3 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-11-01}
+\date{Released 2023-11-09}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 65c64f4da3..fc041a25d8 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index 1bb44c049e..cf6e798b2e 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 03ec043f69..810de29978 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-11-01}
+\date{Released 2023-11-09}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index 7c4eca5178..9f4c672993 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index 4399853c15..ea2559748e 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index afd0e6b850..5d7bb6ef51 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index 131084f832..abf85a7ac2 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 2ad8d9b9f9..ca3b2a1ff1 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-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-build.dtx b/macros/latex/contrib/l3kernel/l3tl-build.dtx
index 08eb31e1b2..65b9566d6a 100644
--- a/macros/latex/contrib/l3kernel/l3tl-build.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-build.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index 774814ad33..cf506b9fec 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index 81534b5480..4e7e1c4745 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 1ee49aeb44..1cbc34267d 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-01}
+% \date{Released 2023-11-09}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index 830fc37b84..735e30fedd 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 9c7384cad0..40881aaf9c 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-11-01}
+\date{Released 2023-11-09}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf
index 684fb60cce..d32a7eedee 100644
--- a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
+++ b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.tex
index deb64e3d34..3b007e28f3 100644
--- a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
+++ b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.tex
@@ -734,7 +734,7 @@ Si on souhaite citer la source d'un exercice ou lui donner un titre, on dispose
\begin{Maquette}[Fiche]{Theme=Algorithmique}
\colorlet{PfMColCpt}{Crimson}
\colorlet{PfMColSrc}{NavyBlue}
- \begin{exercice}[Source=Olympiades 2019,Titre=Modifier des mots,Competence=Raisonner]
+ \begin{exercice}[Source=Olympiades 2019,Titre= : Modifier des mots,Competence=Raisonner]
Dans ce problème, on appellera {\em mot} toute suite de lettres formée des lettres A, D et G. Par exemple : ADD, A, AAADG sont des {\em mots}.
\\Astrid possède un logiciel qui fonctionne de la manière suivante : un utilisateur entre un {\em mot} et, après un clic sur EXÉCUTER, chaque lettre A du {\em mot} (s'il y en a) est remplacée par le {\em mot} AGADADAGA. Ceci donne un nouveau {\em mot}.\\Par exemple, si l'utilisateur rentre le {\em mot} AGA, on obtient le {\em mot} AGADADAGAGAGADADAGA. Un deuxième clic sur EXÉCUTER réitère la transformation décrite ci-dessus au nouveau {\em mot}, et ainsi de suite.
\begin{enumerate}
@@ -747,7 +747,7 @@ Si on souhaite citer la source d'un exercice ou lui donner un titre, on dispose
\begin{Maquette}[Fiche]{Theme=Algorithmique}
\colorlet{PfMColCpt}{Crimson}
\colorlet{PfMColSrc}{NavyBlue}
- \begin{exercice}[Source=Olympiades 2019,Titre=Modifier des mots,Competence=Raisonner]
+ \begin{exercice}[Source=Olympiades 2019,Titre= : Modifier des mots,Competence=Raisonner]
Dans ce problème, on appellera {\em mot} toute suite de lettres formée des lettres A, D et G. Par exemple : ADD, A, AAADG sont des {\em mots}.
\\Astrid possède un logiciel qui fonctionne de la manière suivante : un utilisateur entre un {\em mot} et, après un clic sur EXÉCUTER, chaque lettre A du {\em mot} (s'il y en a) est remplacée par le {\em mot} AGADADAGA. Ceci donne un nouveau {\em mot}.\\Par exemple, si l'utilisateur rentre le {\em mot} AGA, on obtient le {\em mot} AGADADAGAGAGADADAGA. Un deuxième clic sur EXÉCUTER réitère la transformation décrite ci-dessus au nouveau {\em mot}, et ainsi de suite.
\begin{enumerate}
@@ -1016,7 +1016,7 @@ Dans le cas de cette maquette, l'environnement \lstinline!exercice! dispose de l
\clearpage
\subsection*{Focus sur la maquette \lstinline!FdR!}
Dans le cas de cette maquette, l'environnement \lstinline!exercice! dispose des clés \Cle{Route} et \Cle{Stop} permettant de construire automatiquement une feuille de route. La commande \lstinline!\AfficheFdR{}! représente un schéma associé à la feuille de route construite par l'enseignant : l'élève réalise les exercices de la ligne du bas puis demande la validation de l'enseignant. Une fois la validation acquise, l'enseignant peut lui proposer de faire les exercices de la ligne du haut ou de poursuivre la feuille de route.
-\\Ce schéma se construit seul, automatiquement, après que l'enseignant ait utilisé les clés \Cle{Route} et \Cle{Stop} dans la création de ses exercices. Il faudra néanmoins deux compilations. \`A noter que ce schéma, avec l'utilisation du package \lstinline!hyperref!, dispose de liens cliquables sur les exercices sélectionnés pour le parcours.
+\\Ce schéma se construit seul, automatiquement, après que l'enseignant ait utilisé les clés \Cle{Route} et \Cle{Stop} dans la création de ses exercices. Il faudra néanmoins deux compilations et vérifier que chaque \og morceau\fg{} de route soit non vide (La ligne haute, quant à elle, pouvant être vide). \`A noter que ce schéma, avec l'utilisation du package \lstinline!hyperref!, dispose de liens cliquables sur les exercices sélectionnés pour le parcours.
\begin{Codes}[listing only,listing options={frame=,escapechar=!}]{0.4}{\scriptsize}
\begin{Maquette}[FdR]{Theme=Calcul mental}
\begin{center}
@@ -1116,7 +1116,7 @@ Dans le cas de cette maquette, l'environnement \lstinline!exercice! dispose des
\end{Maquette}
\clearpage
\subsection*{Focus sur la maquette \lstinline!CAN!}
-Dans le cas de cette maquette, l'environnement \lstinline!exercice! n'admet aucune clé. La création de la page de garde et du tableau est automatique mais nécessite {\em au moins} deux compilations pour adapter au mieux les dimensions du tableau.
+Dans le cas de cette maquette, l'environnement \lstinline!exercice! n'admet aucune clé. La création de la page de garde et du tableau est automatique mais nécessite {\em au moins} deux compilations pour adapter au mieux les dimensions du tableau. De plus, la compilation crée (dans le répertoire courant) des fichiers \lstinline!*.can! (et éventuellement \lstinline!*.sol!) : ils peuvent être supprimés après l'obtention du document final.
La commande \lstinline!\Complement{}! permet d'ajouter du contenu à la colonne \og Réponse\fg.
@@ -1321,7 +1321,8 @@ Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour le
\clearpage
\section*{Historique}
\begin{description}
-\item[\PfMfiledate{}--v \PfMfileversion] Création du format CAN (Course aux nombres).
+\item[\PfMfiledate{}--v \PfMfileversion] Exercices {\em éventuellement} non numérotés. Correction de bugs (Feuille de route).
+ %0.65 Création du format CAN (Course aux nombres).
\end{description}
\end{document}
%%% Local Variables:
diff --git a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
index 714e745a63..e69c5c8b3e 100644
--- a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
+++ b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
@@ -2,9 +2,9 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2023/11/01}%
+\def\filedate{2023/11/09}%
\let\PfMfiledate\filedate%
-\def\fileversion{0.65}%
+\def\fileversion{0.75}%
\let\PfMfileversion\fileversion%
\ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]%
@@ -275,51 +275,51 @@
}%
%%
-%\newcounter{Melquestions}%
-%\newcounter{Comptequestions}%
+\newcounter{Melquestions}%
+\newcounter{Comptequestions}%
%
-%\NewDocumentEnvironment{Enumelange}{o+b}{%
-% \setcounter{Melquestions}{0}%
-% \setsepchar{\item}%
-% \readlist*\ListeTest{#2}%
-% \IfNoValueTF{#1}{%
-% \ChoixAleaMultiMix{\ListeTestlen}{1}{\ListeTestlen}{0}{\ListeShuffleA}%
-% \xdef\MelangeValeurTotale{\ListeTestlen}%
-% }{%
-% \ChoixAleaMultiMix{#1}{1}{\ListeTestlen}{0}{\ListeShuffleA}%
-% \xdef\MelangeValeurTotale{#1}%
-% }%
-% \ExporteListe{ListeShuffle}{\ListeShuffleA}%
-% \setsepchar{,}\ignoreemptyitems%
-% \readlist*\ListeNumQ{\ListeShuffleA}%
-% \setcounter{Comptequestions}{1}%
-% \begin{enumerate}
-% \loop%
-% \setcounter{Melquestions}{\ListeNumQ[\theComptequestions]}%
-% \item \ListeTest[\theMelquestions]%
-% \stepcounter{Comptequestions}%
-% \ifnum\theComptequestions<\numexpr\MelangeValeurTotale+1%
-% \repeat%
-% \end{enumerate}
-%}{}%
-
-%\NewDocumentEnvironment{Enumelangesol}{b}{%
-% \setcounter{Melquestions}{0}%
-% \setsepchar{\item}%
-% \readlist*\ListeTest{#1}%
-% \RestoreListe{ListeShuffle}%
-% \setsepchar{,}\ignoreemptyitems%
-% \readlist*\ListeNumQ{\ListeShuffle}%
-% \setcounter{Comptequestions}{1}%
-% \begin{enumerate}
-% \loop%
-% \setcounter{Melquestions}{\ListeNumQ[\theComptequestions]}%
-% \item \ListeTest[\theMelquestions]%
-% \stepcounter{Comptequestions}%
-% \ifnum\theComptequestions<\numexpr\ListeNumQlen+1%
-% \repeat%
-% \end{enumerate}
-%}{}%
+\NewDocumentEnvironment{Enumelange}{o+b}{%
+ \setcounter{Melquestions}{0}%
+ \setsepchar{\item}%
+ \readlist*\ListeTest{#2}%
+ \IfNoValueTF{#1}{%
+ \ChoixAleaMultiMix{\ListeTestlen}{1}{\ListeTestlen}{0}{\ListeShuffleA}%
+ \xdef\MelangeValeurTotale{\ListeTestlen}%
+ }{%
+ \ChoixAleaMultiMix{#1}{1}{\ListeTestlen}{0}{\ListeShuffleA}%
+ \xdef\MelangeValeurTotale{#1}%
+ }%
+ \ExporteListe{ListeShuffle}{\ListeShuffleA}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeNumQ{\ListeShuffleA}%
+ \setcounter{Comptequestions}{1}%
+ \begin{enumerate}
+ \loop%
+ \setcounter{Melquestions}{\ListeNumQ[\theComptequestions]}%
+ \item \ListeTest[\theMelquestions]%
+ \stepcounter{Comptequestions}%
+ \ifnum\theComptequestions<\numexpr\MelangeValeurTotale+1%
+ \repeat%
+ \end{enumerate}
+}{}%
+
+ \NewDocumentEnvironment{Enumelangesol}{b}{%
+ \setcounter{Melquestions}{0}%
+ \setsepchar{\item}%
+ \readlist*\ListeTest{#1}%
+ \RestoreListe{ListeShuffle}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeNumQ{\ListeShuffle}%
+ \setcounter{Comptequestions}{1}%
+ \begin{enumerate}
+ \loop%
+ \setcounter{Melquestions}{\ListeNumQ[\theComptequestions]}%
+ \item \ListeTest[\theMelquestions]%
+ \stepcounter{Comptequestions}%
+ \ifnum\theComptequestions<\numexpr\ListeNumQlen+1%
+ \repeat%
+ \end{enumerate}
+}{}%
% Définitions pour les compétences
\NewDocumentCommand\Competences{O{3}m}{%
@@ -931,13 +931,13 @@
\xdef\PfMListeExerciceFdR{\csname \Alph{PfMMaquette}FdRtrue\endcsname}%
\ifcsname \Alph{PfMMaquette}FdRstop\endcsname
\xdef\PfMListeExerciceFdRStop{\csname \Alph{PfMMaquette}FdRstop\endcsname}%
- \else
- \xdef\PfMListeExerciceFdRStop{}
- \fi
+ \else%
+ \xdef\PfMListeExerciceFdRStop{}%
+ \fi%
% On ajoute un stop au dernier exercice
\xdef\PfMListeExerciceFdRStop{\PfMListeExerciceFdRStop,\FdRTotalExo}%
-% Liste Exos : \PfMListeExerciceFdR\\
-% Liste Stop : \PfMListeExerciceFdRStop\\
+ %Liste Exos : \PfMListeExerciceFdR\\
+ %Liste Stop : \PfMListeExerciceFdRStop\\
\BuildRouteTikz{\FdRTotalExo}{\PfMListeExerciceFdR}{\PfMListeExerciceFdRStop}%
}%
}%
@@ -947,12 +947,12 @@
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeRetiensExo{#2}%
\readlist*\ListeRetiensStop{#3}%
- \reademptyitems
-% Les exos retenus : \showitems\ListeRetiensExo[]\\
-% Les exos stop : \showitems\ListeRetiensStop[]\\
+ \reademptyitems%
+ %Les exos retenus : \showitems\ListeRetiensExo[]\\
+ %Les exos stop : \showitems\ListeRetiensStop[]\\
\xdef\LongueurA{\ListeRetiensExolen}%
\xdef\LongueurB{\fpeval{\ListeRetiensStoplen-1}}%
- \xdef\PfMFooExoIncrustes{}
+ \xdef\PfMFooExoIncrustes{}%
\xintFor* ##1 in{\xintSeq{1}{#1}}\do{%
\xdef\RetiensExclus{0}%
\xintFor* ##2 in {\xintSeq{1}{\LongueurA}}\do{%
@@ -960,11 +960,18 @@
}%
\xintifboolexpr{\RetiensExclus>0}{}{\xdef\PfMFooExoIncrustes{\PfMFooExoIncrustes,##1}}%
}%
- \setsepchar{,}\ignoreemptyitems%
- \readlist*\ListeRetiensExclus{\PfMFooExoIncrustes}%
- \xdef\LongueurC{\ListeRetiensExcluslen}%
+ %%%%%%%%%%
+ %PfMFooExoIncrustes : \PfMFooExoIncrustes\\%
+ \ifx\bla\PfMFooExoIncrustes\bla%
+ \xdef\LongueurC{0}%
+ \else%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRetiensExclus{\PfMFooExoIncrustes}%
+ \xdef\LongueurC{\ListeRetiensExcluslen}%
+ \fi%
+ %%%%%%%%%%%%%%%%%%%%
% portion 1
-% Portion 1 :\\
+ % Portion 1 :\\
\xdef\ListeRoute{}%
\xdef\ListeRouteExclus{}%
\xdef\NBExo{0}\xdef\NBExoSup{0}%
@@ -975,9 +982,12 @@
\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##1]}%
}%
}%
- \xintFor* ##1 in{\xintSeq{1}{\LongueurC}}\do{%
- \xintifboolexpr{\ListeRetiensExclus[##1]>\ListeRetiensStop[1]}{}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##1]}}%
- }%
+ \ifnum\LongueurC=0\relax
+ \else
+ \xintFor* ##1 in{\xintSeq{1}{\LongueurC}}\do{%
+ \xintifboolexpr{\ListeRetiensExclus[##1]>\ListeRetiensStop[1]}{}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##1]}}%
+ }%
+ \fi
\xintifboolexpr{\NBExoSup==\NBExo}{}{%
\xintifboolexpr{\NBExoSup>\NBExo}{%
\xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{%
@@ -991,21 +1001,24 @@
}%
\xdef\ListeRoute{\ListeRoute,0}%0 pour le symbole stop
\xdef\ListeRouteExclus{\ListeRouteExclus,0}%0 pour le symbole stop
-% Route Basse : \ListeRoute\\
-% Route Haute : \ListeRouteExclus\\
+ %Route Basse P1 : \ListeRoute\\
+ %Route Haute P1 : \ListeRouteExclus\\
% portions centrales
-% Portions centrales :\\
- \xintifboolexpr{\ListeRetiensStoplen>2}{%
- \xintFor* ##1 in{\xintSeq{1}{\fpeval{\LongueurB-1}}}\do{%
- \xdef\NBExo{0}\xdef\NBExoSup{0}
- \xintFor* ##2 in{\xintSeq{1}{\LongueurA}}\do{%
- \xintifboolexpr{\ListeRetiensExo[##2]<\fpeval{\ListeRetiensStop[##1]+1} || \ListeRetiensExo[##2]>\ListeRetiensStop[\fpeval{##1+1}]}{}{\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##2]}%
- }%
- }%
- \xintFor* ##2 in{\xintSeq{1}{\LongueurC}}\do{%
- \xintifboolexpr{\ListeRetiensExclus[##2]<\fpeval{\ListeRetiensStop[##1]+1} || \ListeRetiensExclus[##2]>\ListeRetiensStop[\fpeval{##1+1}]}{}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##2]}%
- }%%
- }%
+ % Portions centrales :\\
+ \xintifboolexpr{\ListeRetiensStoplen>2}{%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{\LongueurB-1}}}\do{%
+ \xdef\NBExo{0}\xdef\NBExoSup{0}%
+ \xintFor* ##2 in{\xintSeq{1}{\LongueurA}}\do{%
+ \xintifboolexpr{\ListeRetiensExo[##2]<\fpeval{\ListeRetiensStop[##1]+1} || \ListeRetiensExo[##2]>\ListeRetiensStop[\fpeval{##1+1}]}{}{\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##2]}%
+ }%
+ }%
+ \ifnum\LongueurC=0\relax
+ \else
+ \xintFor* ##2 in{\xintSeq{1}{\LongueurC}}\do{%
+ \xintifboolexpr{\ListeRetiensExclus[##2]<\fpeval{\ListeRetiensStop[##1]+1} || \ListeRetiensExclus[##2]>\ListeRetiensStop[\fpeval{##1+1}]}{}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##2]}%
+ }%%
+ }%
+ \fi
\xintifboolexpr{\NBExoSup==\NBExo}{}{%
\xintifboolexpr{\NBExoSup>\NBExo}{%
\xintFor* ##3 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{%
@@ -1019,38 +1032,43 @@
}%
\xdef\ListeRoute{\ListeRoute,0}\xdef\ListeRouteExclus{\ListeRouteExclus,0}%
}%
- }{}%
+ }{}%
+ %Route Basse P2 : \ListeRoute\\
+ %Route Haute P2 : \ListeRouteExclus\\
% portion finale
-% Portion fin \\
- \xintifboolexpr{\ListeRetiensStoplen>1}{%
- \xdef\NBExo{0}\xdef\NBExoSup{0}%
- \xintFor* ##1 in{\xintSeq{1}{\LongueurA}}\do{%
- \xintifboolexpr{\ListeRetiensExo[##1]>\fpeval{\ListeRetiensStop[\ListeRetiensStoplen-1]}}{\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##1]}{}%
- }%
- }%
- \xintFor* ##1 in{\xintSeq{1}{\LongueurC}}\do{%
- \xintifboolexpr{\ListeRetiensExclus[##1]>\fpeval{\ListeRetiensStop[\ListeRetiensStoplen-1]}}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##1]}{}%
- }%
- }%
- \xintifboolexpr{\NBExoSup==\NBExo}{}{
- \xintifboolexpr{\NBExoSup>\NBExo}{%
- \xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{%
- \xdef\ListeRoute{\ListeRoute,-1}%0 pour l'écart
- }%
- }{%
- \xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExo-\NBExoSup}}}\do{%
- \xdef\ListeRouteExclus{\ListeRouteExclus,-1}%0 pour l'écart
- }%
- }%
- }%
- \xdef\ListeRoute{\ListeRoute,0}%0 pour le symbole stop
- \xdef\ListeRouteExclus{\ListeRouteExclus,0}%0 pour le symbole stop
- }{}%
- \setsepchar{,}\ignoreemptyitems
+ % Portion fin \\
+ \xintifboolexpr{\ListeRetiensStoplen>1}{%
+ \xdef\NBExo{0}\xdef\NBExoSup{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\LongueurA}}\do{%
+ \xintifboolexpr{\fpeval{\ListeRetiensExo[##1]}>\fpeval{\ListeRetiensStop[\ListeRetiensStoplen-1]}}{\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##1]}}{}%
+ }%
+ \ifnum\LongueurC=0\relax
+ \else
+ \xintFor* ##1 in{\xintSeq{1}{\LongueurC}}\do{%
+ \xintifboolexpr{\ListeRetiensExclus[##1]>\fpeval{\ListeRetiensStop[\ListeRetiensStoplen-1]}}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##1]}}{}%
+ }%
+ \fi
+ \xintifboolexpr{\NBExoSup==\NBExo}{}{%
+ \xintifboolexpr{\NBExoSup>\NBExo}{%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{%
+ \xdef\ListeRoute{\ListeRoute,-1}%0 pour l'écart
+ }%
+ }{%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExo-\NBExoSup}}}\do{%
+ \xdef\ListeRouteExclus{\ListeRouteExclus,-1}%0 pour l'écart
+ }%
+ }%
+ }%
+ \xdef\ListeRoute{\ListeRoute,0}%0 pour le symbole stop
+ \xdef\ListeRouteExclus{\ListeRouteExclus,0}%0 pour le symbole stop
+ }{}%
+ %Route Basse P3 : \ListeRoute\\
+ %Route Haute P3 : \ListeRouteExclus\\
+ \setsepchar{,}\ignoreemptyitems%
\readlist*\ListeRouteBasse{\ListeRoute}%
\readlist*\ListeRouteHaute{\ListeRouteExclus}%
-% Liste Route : \showitems\ListeRouteBasse[]\\
-% Liste Exclus : \showitems\ListeRouteHaute[]
+ %Liste Route : \showitems\ListeRouteBasse[]\\
+ %Liste Exclus : \showitems\ListeRouteHaute[]\\
\begin{tikzpicture}
\coordinate (A-0) at (-\PfMLargeurSchemaFdR,0);
\coordinate (A-1) at (0,0);%
@@ -1060,20 +1078,86 @@
\coordinate[xshift=\PfMLargeurSchemaFdR] (B-##1) at (B-\fpeval{##1-1});%
}%
\coordinate[xshift=\PfMLargeurSchemaFdR] (A-\fpeval{\ListeRouteBasselen+1}) at (A-\ListeRouteBasselen);%
- %Route haute
- \xintFor* ##1 in{\xintSeq{1}{\ListeRouteHautelen}}\do{%
- \xintifboolexpr{\ListeRouteHaute[##1]<0}{%
- \draw[] (B-##1) to (B-\fpeval{##1+1});
- }{%
- \xintifboolexpr{\ListeRouteHaute[##1]==0}{%
- \draw (B-##1) to (A-##1);%
- }{%
- \draw[] (B-##1) to (B-\fpeval{##1+1});
- \draw[fill=white](B-##1) circle (\PfMRayonSchemaFdR) node{\ref{page-\thePfMMaquette-\ListeRouteHaute[##1]}};%
- }
- }%
- }%
- % Route basse
+ % Route haute
+ % Correct !
+ %\xintFor* ##1 in{\xintSeq{1}{\ListeRouteHautelen}}\do{%
+ % \xintifboolexpr{\ListeRouteHaute[##1]<0}{%
+ % \draw[red] (B-##1) to (B-\fpeval{##1+1});
+ % }{%
+ % \xintifboolexpr{\ListeRouteHaute[##1]==0}{%
+ % \draw (B-##1) to (A-##1);%
+ % }{%
+ % \draw[blue] (B-##1) to (B-\fpeval{##1+1});
+ % \draw[fill=white](B-##1) circle (\PfMRayonSchemaFdR) node{\ref{page-\thePfMMaquette-\ListeRouteHaute[##1]}};
+ % }%
+ % }%
+ %}%
+ %% Fin Correct !
+ \xdef\RetiensLesZeros{0}%
+ \xdef\RetiensLeDepart{0}%
+ \xdef\RetiensLesReponses{0}%
+ \xdef\RetiensNonAffichees{0}%
+ \xdef\RetiensEtage{0}
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRouteHautelen}}\do{%
+ \xintifboolexpr{\ListeRouteHaute[##1]==0}{%
+ \xdef\RetiensEtage{\fpeval{\RetiensEtage+1}}%
+ \xdef\RetiensLesReponses{\fpeval{\RetiensLesReponses+1}}%
+ \xintFor* ##2 in{\xintSeq{\fpeval{\RetiensLeDepart+1}}{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}}\do{%
+ \xintifboolexpr{\ListeRouteHaute[##2]<0}{%
+ \xdef\RetiensNonAffichees{\fpeval{\RetiensNonAffichees+1}}
+ }{}%
+ }
+ %\node at (0,\RetiensEtage) {Il y a \RetiensNonAffichees fois le nombre -1.};
+ % On affiche
+ \xintifboolexpr{\fpeval{\RetiensLesReponses-1}==\RetiensNonAffichees}{%
+% %
+ }{%
+ \xintFor* ##2 in{\xintSeq{\fpeval{\RetiensLeDepart+1}}{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}}\do{
+ \xintifboolexpr{\ListeRouteHaute[##2]<0}{%
+ \draw (B-##2) to (B-\fpeval{##2+1});%
+ }{%
+ \xintifboolexpr{\ListeRouteHaute[##2]==0}{%
+ %\xintifboolexpr{\fpeval{\RetiensLesReponses-1}==\RetiensNonAffichees}{}{
+ \draw (B-##2) to (A-##2);%
+ %}
+ }{%
+ \draw[] (B-##2) to (B-\fpeval{##2+1});%
+ \draw[fill=white](B-##2) circle (\PfMRayonSchemaFdR) node{\ref{page-\thePfMMaquette-\ListeRouteHaute[##2]}};%
+ }%
+ }%
+ }%
+ }%
+ %
+ \xdef\RetiensLeDepart{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}
+ \xdef\RetiensLesReponses{0}%
+ \xdef\RetiensNonAffichees{0}%
+ }{\xdef\RetiensLesReponses{\fpeval{\RetiensLesReponses+1}}%
+ }%
+ }%
+ %Il y a \RetiensLesReponses fois le nombre -1.\par
+ %\xintifboolexpr{\RetiensLesReponses==\fpeval{\RetiensLeDepart+1+\RetiensLesZeros}}{%
+ % \xdef\RetiensLeDepart{\RetiensLeDepart+\RetiensLesZeros}%
+ % \xdef\RetiensLesZeros{0}%
+ %}{
+ % \xintFor* ##2 in{\xintSeq{\fpeval{\RetiensLeDepart+1}}{\fpeval{\RetiensLeDepart+\RetiensLesZeros}}}\do{
+ % \xintifboolexpr{\ListeRouteHaute[##2]<0}{%
+ % \draw[red] (B-##2) to (B-\fpeval{##2+1});
+ % }{%
+ % \xintifboolexpr{\ListeRouteHaute[##2]==0}{%
+ % \draw (B-##2) to (A-##2);%
+ % }{%
+ % \draw[blue] (B-##2) to (B-\fpeval{##2+1});
+ % \draw[fill=white](B-##2) circle (\PfMRayonSchemaFdR) node{\ref{page-\thePfMMaquette-\ListeRouteHaute[##2]}};
+ % }%
+ % }%
+ % }%
+ % \xdef\RetiensLeDepart{\RetiensLeDepart+\RetiensLesZeros}%
+ % \xdef\RetiensLesZeros{0}%
+ %}{%
+ % \xdef\RetiensLesZeros{\fpeval{\RetiensLesZeros+1}}%
+ %}
+ %}%
+ % Route basse
\foreach\i in{1,...,\fpeval{\ListeRouteBasselen}}{%
\draw[line width=1pt] (A-\fpeval{\i-1}) -- (A-\i);%
}%
@@ -1455,30 +1539,14 @@
}{\endtcolorbox%
}
-\newenvironment{exerciceFicheold}[1][]{%
- \setcounter{PfMAlea}{0}%
- \setcounter{PfMNbLogo}{1}%
- \useKVdefault[ClesExercices]%
- \setKV[ClesExercices]{#1}%
- \colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
- \colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
- \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
- \tcolorbox[%
- tikzfiche,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
-}{\endtcolorbox%
-}
-
-\NewDocumentEnvironment{exerciceFichenewold}{o+b}{%
+\NewDocumentEnvironment{exerciceFiche}{so+b}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
- \setKV[ClesExercices]{#1}%
+ \setKV[ClesExercices]{#2}%
+ \IfBooleanTF{#1}{%
+ \setKV[ClesExercices]{Numerote=false}%
+ }{}%
\colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
\colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
@@ -1490,77 +1558,81 @@
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
- #2
+ #3
\endtcolorbox%
}{}
-\NewDocumentEnvironment{exerciceFiche}{so+b}{%
+\NewDocumentEnvironment{exerciceDS}{so+b}{%
\setcounter{PfMAlea}{0}%
- \setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
- \colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
- \colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
- \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
+ \immediate\write\@auxout{%
+ \string\opcopy{\thePfMExo}{TotalExo}%
+ }
+ \ifboolKV[ClesExercices]{BaremeTotal}{%
+ \immediate\write\@auxout{%
+ \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
+ }}{}
\tcolorbox[%
- tikzfiche,
+ tikzds,
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
#3
\endtcolorbox%
-}{}
+}{}%
-\NewDocumentEnvironment{exerciceDS}{so+b}{%
+\NewDocumentEnvironment{ExerciceRecapBrevet}{so+b}{%
\setcounter{PfMAlea}{0}%
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \IfBooleanTF{#1}{%
+ \setKV[ClesExercices]{Numerote=false}%
+ }{}%
+ \colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
+ \colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
- \immediate\write\@auxout{%
- \string\opcopy{\thePfMExo}{TotalExo}%
- }
\ifboolKV[ClesExercices]{BaremeTotal}{%
\immediate\write\@auxout{%
\string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
- }}{}
+ }%
+ }{}%
\tcolorbox[%
- tikzds,
+ tikzrecapbrevet,
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
- #3
-\endtcolorbox%
-}{}%
+}{\endtcolorbox%
+}
-\newenvironment{exerciceDSold}[1][]{%
+\newenvironment{ExerciceRecapBrevetold}[1][]{%
\setcounter{PfMAlea}{0}%
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
- \immediate\write\@auxout{%
- \string\opcopy{\thePfMExo}{TotalExo}%
- }
\ifboolKV[ClesExercices]{BaremeTotal}{%
\immediate\write\@auxout{%
\string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
- }}{}
+ }%
+ }{}%
\tcolorbox[%
- tikzds,
+ tikzrecapbrevet,
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
}{\endtcolorbox%
-}%
+}
+
\makeatother
%%% Recap Brevet
%%% Style Brevet
@@ -1594,26 +1666,6 @@
}
\makeatletter
-\newenvironment{ExerciceRecapBrevet}[1][]{%
- \setcounter{PfMAlea}{0}%
- \useKVdefault[ClesExercices]%
- \setKV[ClesExercices]{#1}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
- \ifboolKV[ClesExercices]{BaremeTotal}{%
- \immediate\write\@auxout{%
- \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
- }%
- }{}%
- \tcolorbox[%
- tikzrecapbrevet,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
-}{\endtcolorbox%
-}
-
\tcbset{%
tikzrecapbrevet/.style={%
before skip=1em,%
@@ -2120,7 +2172,7 @@
fill=ColExoFiche,
anchor=west,
xshift=\kvtcb@leftlower,
- ] at (frame.north west){\bfseries\sffamily \useKV[Fiche]{NomExercice} \ifboolKV[ClesExercices]{Numerote}{\thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}};
+ ] at (frame.north west){\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\useKV[ClesExercices]{Titre}}{}};
%%
\ifboolKV[ClesExercices]{Calculatrice}{}{\node[fill=ColExoFiche,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\cancel{\faCalculator}};\stepcounter{PfMNbLogo}}
\ifboolKV[ClesExercices]{Oral}{\node[fill=ColExoFiche,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faBullhorn};\stepcounter{PfMNbLogo}}{}
@@ -2282,7 +2334,7 @@
},interior engine=empty,
},
fonttitle=\bfseries\sffamily,
- title=Exercice \thePfMExo \ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{},
+ title=Exercice\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{},
overlay unbroken and first={%
\ifboolKV[ClesExercices]{AffichageSource}{%
\node[
@@ -2606,21 +2658,21 @@
\ifboolKV[Boulot]{DS}{%
\setKV[DS]{#2}\TikzDS
\let\exercice\exerciceDS\let\endexercice\endexerciceDS%
- %\ifboolKV[Boulot]{BaremeComplet}{%
- % \begin{center}
- % \TableauRecapitulatif
- % \end{center}
- %}{}%
- %\ifboolKV[Boulot]{CorrigeFin}{%
- % \AddToHook{env/Maquette/after}[Correction]{%
- % \setKV[Boulot]{#1}%
- % \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- % \TikzDSCor{#2}%
- % \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- % \PfMAffichageCorrige%
- % \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
- % }%
- %}{}%
+ \ifboolKV[Boulot]{BaremeComplet}{%
+ \begin{center}
+ \TableauRecapitulatif
+ \end{center}
+ }{}%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \setKV[Boulot]{#1}%
+ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \TikzDSCor{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \PfMAffichageCorrige%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ }%
+ }{}%
}{%
\ifboolKV[Boulot]{IE}{%
\setKV[IE]{#2}\TikzIE%
@@ -3142,4 +3194,4 @@
\extract{\NbVehiculesINSEE}{1}{\DieselVehiculesINSEE}%
\extract{\NbVehiculesINSEE}{1}{\KmEssenceVehiculesINSEE}%
\extract{\NbVehiculesINSEE}{1}{\KmDieselVehiculesINSEE}%
- } \ No newline at end of file
+ }
diff --git a/macros/latex/contrib/q-and-a/Q-and-A.cls b/macros/latex/contrib/q-and-a/Q-and-A.cls
index 95de42d609..618b7128ec 100644
--- a/macros/latex/contrib/q-and-a/Q-and-A.cls
+++ b/macros/latex/contrib/q-and-a/Q-and-A.cls
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{Q-and-A}
- {2023/11/08} {}
+ {2023/11/09} {}
{Document class for typesetting Q&A conversation}
\keys_define:nn { Q-and-A }
@@ -281,8 +281,25 @@
\definecolor{QA-code-keyword}{RGB}{ 47,148,210}
\definecolor{QA-code-comment}{RGB}{128,128,128}
\definecolor{QA-code-string }{RGB}{ 5,165,126}
+\lstdefinelanguage{plaintext}{}
+\lstdefinelanguage{JavaScript}{% https://tex.stackexchange.com/q/89574
+ keywords={abstract, any, as, boolean, break, case, catch, class, console,
+ const, continue, debugger, declare, default, delete, do, else, enum, export,
+ extends, false, finally, for, from, function, get, if, implements, import, in,
+ infer, instanceof, interface, keyof, let, module, namespace, never, new, null,
+ number, object, package, private, protected, public, readonly, require, return,
+ set, static, string, super, switch, symbol, this, throw, true, try, type, typeof,
+ undefined, unique, unknown, var, void, while, with, yield},
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ morestring=[b]',
+ morestring=[b]",
+ sensitive=true
+}
+\lstalias[]{txt}[]{plaintext}
\lstalias[]{code}[LaTeX]{tex}
\lstalias[]{latex}[LaTeX]{tex}
+\lstalias[]{Csharp}[Sharp]{C}
% \lstloadlanguages{[LaTeX]TeX}
\lstset{
basicstyle = \small\normalfont\ttfamily,
diff --git a/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdf b/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdf
index 137559f16a..71bd0de25a 100644
--- a/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdf
+++ b/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex b/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex
index 5cdaa152bd..69b6dfea09 100644
--- a/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex
+++ b/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex
@@ -5,7 +5,7 @@
scroll,
]{Q-and-A}
-\def\PackageVersion{2023/11/08}
+\def\PackageVersion{2023/11/09}
\def\PackageSubVersion{}
\newcommand{\QApackage}{{\normalfont\textsf{Q-and-A}}}
@@ -166,6 +166,8 @@
And don't forget that you are still using \LaTeX, so images, tables and lists can be written as usual.
+ >>> Currently, the default style for showing tables has not been settled (since the color configuration for tables with or without headers would be slightly different). As a temporary solution, it is recommended for you to consult the several nice answers of this question: \url{https://tex.stackexchange.com/q/10224}.
+
##+ {Cautions}
@@ -248,6 +250,7 @@
\begin{itemize}
\item Currently, the code highlight is done by the package `listings`. Due to its own limitations, the result is still far from satisfactory. Using `minted` instead could improve the situation, but this would require `-shell-escape` and some external tweaking, thus it would still take some effort to make it work with the current document class.
\item Due to the current implementation, one cannot direct write code (either inline or displayed) within the text (alternative solution has been proposed above).
+ \item Due to the current implementation, when displaying the code, one may not be able to write some of the language name like `C\#` directly, but has to write an alternative name such as `csharp`.
\item Due to the current implementation, one may not be able to directly write certain characters (such as `\textasterisk`) in the text, this might be especially inconvenient in math mode (temporary alternative solution has been proposed above).
\item Due to the current implementation, the method for inputting and including subfiles doesn't really work like `\textbackslash input` and `\textbackslash include`. In particular, the current type of conversation would be reset, this might cause some confusion in certain cases.
% \item The code block containing long piece of code usually won't properly break across the page (which is essentially why this documentation and the demo documents enabled the `scroll` mode).
diff --git a/macros/latex/contrib/robust-externalize/robust-externalize.pdf b/macros/latex/contrib/robust-externalize/robust-externalize.pdf
index 50b3a2f806..a00bc94b37 100644
--- a/macros/latex/contrib/robust-externalize/robust-externalize.pdf
+++ b/macros/latex/contrib/robust-externalize/robust-externalize.pdf
Binary files differ
diff --git a/macros/latex/contrib/robust-externalize/robust-externalize.sty b/macros/latex/contrib/robust-externalize/robust-externalize.sty
index e61ae871b0..75d55b268c 100644
--- a/macros/latex/contrib/robust-externalize/robust-externalize.sty
+++ b/macros/latex/contrib/robust-externalize/robust-externalize.sty
@@ -1,5 +1,5 @@
-\ProvidesPackage{robust-externalize}[2.0 Cache anything (tikz, latex, python) in a robust, efficient and pure way.]
-% todo: understand why python scripts with raise NameError("42") do not make latex crash.
+\ProvidesPackage{robust-externalize}[2.1 Cache anything (tikz, latex, python) in a robust, efficient and pure way.]
+% todo:
% change order argument replace from list, it is hard to read this way
\RequirePackage{pgfkeys} % We use the /robExt/... path to store our keys.
@@ -8,18 +8,13 @@
\RequirePackage{verbatim} % For the \verbatim command, useful for debugging purpose for instance
\RequirePackage{xsimverb} % To easily write verbatim code to files
\RequirePackage{etoolbox} % To easily write verbatim code to files
+\RequirePackage{iftex} % computing md5 sum differs on lualatex/pdflatex/xelatex
+\RequirePackage{xparse} % solve https://github.com/leo-colisson/robust-externalize/issues/6
+\RequirePackage{atveryend} % to compile in parallel all images
+\usepackage{etl} % For auto forward https://tex.stackexchange.com/a/700844/116348
%% TODO list:
% - provide an easy way to use cross-ref, bibtex etc (we just need to add them when writing the file) without recompiling the whole document (we don't want to lose the cache everytime a new bib entry is added) but while preserving.
-% - create pre-made settings for tikz, tikz-cd, ...
-% - check compatibility with windows
-% - write documentation
-
-%%% Under the hood, this library is quite simple: each picture must, somehow, provide:
-%% - \l_robExt_final_file LaTeX3 string containing the content of the final file
-%% -
-%% Then, the library will hash everything to create a unique name (of the content, the template code, and the set of dependency filenames),
-%% it will create a file "MD5.tex" containing the pre-template+content+post-template, and it will compile it.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Utils %%%%%%%%%%%%
@@ -31,9 +26,7 @@
\def\robExtDebugWarning#1{\message{^^J[robExt warning] #1}}
\NewDocumentCommand{\robExtConfigure}{m}{%
- \pgfkeys{%
- /robExt/.cd,#1%Do not add a space before the #1!
- }%
+ \pgfqkeys{/robExt}{#1}% faster than \pgfkeys{/robExt/.cd,#1}
}
% https://tex.stackexchange.com/questions/690700/latex3-elegant-way-to-forward-a-variable-outside-of-the-group
@@ -52,40 +45,41 @@
%%% Expl3 variants
%%%
-\cs_generate_variant:Nn \str_replace_all:Nnn { Nnx }
-\cs_generate_variant:Nn \str_replace_all:Nnn { Nnv }
-\cs_generate_variant:Nn \str_replace_all:Nnn { cnx }
-\cs_generate_variant:Nn \str_replace_all:Nnn { cxx }
-\cs_generate_variant:Nn \str_replace_all:Nnn { NnV }
-\cs_generate_variant:Nn \str_replace_all:Nnn { Nnx }
-\cs_generate_variant:Nn \str_replace_all:Nnn { Nnv }
+\cs_generate_variant:Nn \str_replace_all:Nnn { Nnx, Nnv, cnx, cxx, NnV, Nnx, Nnv }
\cs_generate_variant:Nn \str_set:Nn { NV }
\cs_generate_variant:Nn \tl_rescan:nn { nv }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn { Nnv }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn { Nnv, NnV }
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { cnv }
-\cs_generate_variant:Nn\seq_remove_all:Nn { NV }
+\cs_generate_variant:Nn \seq_remove_all:Nn { NV }
-%\cs_generate_variant:Nn\tl_set_rescan:cnn { cnv }
-\cs_generate_variant:Nn \iow_now:Nn { NV }
-\cs_generate_variant:Nn \iow_now:Nn { Nx }
+\cs_generate_variant:Nn \iow_now:Nn { NV,Nx }
\cs_generate_variant:Nn \iow_open:Nn { Nx }
\cs_generate_variant:Nn \ior_str_get:NN { Nc }
\cs_generate_variant:Nn \file_if_exist:nTF { xTF }
+\cs_generate_variant:Nn \cs_replacement_spec:N { c }
+\cs_generate_variant:Nn \cs_argument_spec:N { c }
+
+\cs_generate_variant:Nn \regex_extract_all:nnN { VVN, nVN, VVN }
+\cs_generate_variant:Nn \regex_extract_all:NnN { NVN }
+
+
+\cs_generate_variant:Nn \regex_match:nnTF { nVTF }
+
%%%
%%% String manipulation
%%%
-\cs_set:Nn \str_set_hash_robust:Nn {
+\cs_set:Nn \robExt_set_hash_robust:Nn {
\str_set:Nn {#1} {#2}
\str_replace_all:Nnx {#1} { ## } { \c_hash_str }
}
-\cs_generate_variant:Nn \str_set_hash_robust:Nn { cn }
-\cs_generate_variant:Nn \str_set_hash_robust:Nn { cx }
+\cs_generate_variant:Nn \robExt_set_hash_robust:Nn { cn }
+\cs_generate_variant:Nn \robExt_set_hash_robust:Nn { cx }
% Double the number of hashes... quite dirty but cannot find any solution or the user need to double it itself
%% See also https://tex.stackexchange.com/questions/695432/latex3-latex-doubles-the-number-of-hashes-when-storing-them-in-string/695460#695460
@@ -95,21 +89,71 @@
}
\NewDocumentCommand{\robExtStrSetHashRobust}{mm}{
- \str_set_hash_robust:Nn {#1} {#2}
+ \robExt_set_hash_robust:Nn {#1} {#2}
}
\NewDocumentCommand{\robExtRescanHashRobust}{m}{
- \str_set_hash_robust:Nn \l_robExt_tmp_str {#1}
- \tl_rescan:nv {}{ l_robExt_tmp_str }
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_str {#1}
+ \tl_rescan:nv {}{ l__robExt_tmp_str }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%% Error messages %%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% In LaTeX3 error messages are defined here, this allows people to translate them, filter them, change them,
+%% make them more verbose etc.
+\msg_new:nnn {robExt}{underscore in name}{Error:~all~the~placeholders~should~contain~two~consecutive~underscores~in~their~name.}
+\msg_new:nnn {robExt}{placeholder not existing}{[robExtGetPlaceholderInResultFromSinglePlaceholder] ~ The ~ placeholder ~ #3 ~ does ~ not ~ exists.}
+\msg_new:nnn {robExt}{forgot template}{You ~ are ~ writing ~ __ROBEXT_TEMPLATE__ ~ to ~ your ~ file: ~ seems ~ like ~ you ~ forgot ~ to ~ define ~ your ~ template ~ or ~ set ~ a ~ preset}
+\msg_new:nnn {robExt}{need shell escape}{You ~ need ~ to ~ compile ~ with ~ shell-escape ~ as ~ in: ~ "pdflatex ~ -shell-escape ~ yourfile.tex" ~ to ~ be ~ able ~ to ~ compile ~ automatically ~ the ~ figures}
+\msg_new:nnn {robExt}{need shell escape parallel}{You ~ need ~ to ~ compile ~ with ~ shell-escape ~ as ~ in: ~ "pdflatex ~ -shell-escape ~ yourfile.tex" ~ to ~ be ~ able ~ to ~ compile ~ automatically ~ the ~ figures ~ in ~ parallel}
+\msg_new:nnn {robExt}{missing compiled pdf}{The ~ pdf ~ file ~ #1.pdf ~ is ~ not ~ present. ~ The ~ compilation ~ command ~ certainly ~ failed, ~ see ~ logs ~ above ~ or ~ in ~ #1.log.}
+\msg_new:nnn {robExt}{missing compiled pdf parallel}{The ~ pdf ~ file ~ #1.pdf ~ is ~ not ~ present. ~ The ~ compilation ~ command ~ "#3"~used~to~compile~the~environment~on~line~#2~ certainly ~ failed, ~ see ~ logs ~ above ~ or ~ in ~ #1.log.}
+\msg_new:nnn {robExt}{auto forward not in cachemecode}{Auto~forward~is~less~efficient~in~cacheMeCode.}
+
+% warnings
+\msg_new:nnn {robExt}{recommend two underscores in placeholders}{We~recommend~to~use~only~placeholders~containing~two~consecutive~underscores~in~their~name}
+\msg_new:nnn {robExt}{enabled parallel no shell escape}{Warning:~you~enabled~parallel~compilation~but~shell-escape~is~disabled.}
+\msg_new:nnn {robExt}{rerun because parallel}{Warning:~Compiling~all~missing~figures~in~parallel~with~"#1".~You~need~to~rerun~LaTeX~to~include~them.}
+
+% dummy placeholders added if image is not present
+\def\robExtImagePlaceholderIfManualMode{
+ \framebox[\linewidth]
+ {
+ \begin{minipage}{\linewidth}
+ \textbf{Manual ~ mode: ~ either ~ compile ~ with ~ \texttt{-shell-escape} ~ or ~ compile:\newline \texttt{\robExtAddCachePathAndName{\robExtFinalHash.tex}}\newline via ~ \newline \texttt{\l__robExt_current_compilation_command_str}\newline or ~ call ~ \newline\texttt{bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}\newline to ~ compile ~ all ~ missing ~ figures.}
+ \end{minipage}
+ }
+}
+
+\def\robExtImagePlaceholderIfFallbackMode{
+ \framebox[\linewidth]
+ {
+ \begin{minipage}{\linewidth}
+ \textbf{Falling ~ back ~ to ~ draft ~ mode: ~ either ~ compile ~ with ~ \texttt{-shell-escape} ~ or ~ compile:\newline \texttt{\robExtAddCachePathAndName{\robExtFinalHash.tex}}\newline via ~ \newline \texttt{\l__robExt_current_compilation_command_str}\newline or ~ call ~ \newline\texttt{bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}\newline to ~ compile ~ all ~ missing ~ figures.}
+ \end{minipage}
+ }
}
+\def\robExtImagePlaceholderIfParallelCompilation{
+ \framebox[\linewidth]
+ {
+ \begin{minipage}{\linewidth}
+ \textbf{The~file:\\
+ \texttt{\robExtAddCachePathAndName{\robExtFinalHash.tex}}\\
+ is~compiled~in~parallel~mode.~You~need~to~recompile~your~document~to~include~it.}
+ \end{minipage}
+ }
+}
+
+
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% SCRIPTS %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Important: this script is NOT execute by this file, it is only created so that users can remove unused previously cached files by running this script
+%%% Important: this script is NOT executed by this file, it is only created so that users can remove unused previously cached files by running this script
%%% outside of LaTeX.
%%% Create scripts to remove useless files:
%%% Note that we don't override the script if it exists on purpose (the user might have changed it to fits their needs)
@@ -190,6 +234,19 @@ if __name__ == '__main__':
\expandafter \RenewCommandCopy \csname end#1\expandafter\endcsname \csname end#2\endcsname
}
+%% Depending on the engine, computing md5 is done in different ways
+\sys_if_engine_luatex:TF{
+ \def\robExt@pdfmdfivesum#1{%
+ \directlua{tex.print(string.upper(md5.sumhexa("\luaescapestring{#1}")))}%
+ }%
+}{
+ \sys_if_engine_xetex:TF {%
+ \def\robExt@pdfmdfivesum{\mdfivesum}%
+ }{%
+ \def\robExt@pdfmdfivesum{\pdfmdfivesum}%
+ }%
+}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Paths %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -208,13 +265,10 @@ if __name__ == '__main__':
\fi#1%
}
-
\NewDocumentCommand{\robExtCheckIfPrefixFolderExists}{}{
% Check if the output directory exists
\ifdefined\robExtCacheFolder
- %% Not sure how to do an "OR" otherwise
-
- \bool_if:nTF { \sys_if_shell_unrestricted_p: || \cs_if_exist_p:N {\robExtForceCompilation}}
+ \bool_if:nTF { \sys_if_shell_unrestricted_p: || \cs_if_exist_p:N \robExtForceCompilation}
{
\ifdefined\robExtDoNotMkdirFolder\else
\ifdefined\robExtManualMode
@@ -229,6 +283,7 @@ if __name__ == '__main__':
\fi
}
+
\NewExpandableDocumentCommand{\robExtGetPrefixPath}{}{%
\ifdefined\robExtCacheFolder%
\robExtCacheFolder%
@@ -249,27 +304,37 @@ if __name__ == '__main__':
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Temporary: used when quickly writing to a file
-\iow_new:N \g_robExt_write_iow
-\ior_new:N \g_robExt_read_ior
+\iow_new:N \g__robExt_write_iow
+\ior_new:N \g__robExt_read_ior
%% This is used to write the full list of figures in a single file (used for instance by Makefile etc...)
%% TODO: create a makefile.
-\iow_new:N \g_robExt_write_list_all_figures
+\iow_new:N \g__robExt_write_list_all_figures_iow
%% Create a file robExt-all-figures.txt with the list of .tex files
-\iow_open:Nx \g_robExt_write_list_all_figures {\jobname-\robExtAddPrefixName{all-figures.txt}}
-\iow_new:N \g_robExt_write_manually_compile_all_missing_figures
-\iow_open:Nx \g_robExt_write_manually_compile_all_missing_figures {\jobname-\robExtAddPrefixName{compile-missing-figures.sh}}
-% Contains the template:
-\str_new:N \l_robExt_template
-\str_new:N \l_robExt_final_file
+\iow_open:Nx \g__robExt_write_list_all_figures_iow {\jobname-\robExtAddPrefixName{all-figures.txt}}
+\iow_new:N \g__robExt_write_manually_compile_all_missing_figures_iow
+\iow_open:Nx \g__robExt_write_manually_compile_all_missing_figures_iow {\jobname-\robExtAddPrefixName{compile-missing-figures.sh}}
% Contains the list of dependency files (useful to compute the final md5sum)
-\seq_new:N \l_robExt_dependencies
+\seq_new:N \l__robExt_dependencies_str
% Contains a string where on each line we have: "md5sum, dependency". The first line has nothing as "dependency" as it is the main fine whose final name is the md5sum of the dependencies.
-\str_new:N \l_robExt_dependencies_mdfive
+\str_new:N \l__robExt_dependencies_mdfive_str
% Contains the current compilation command (including the name of the file to compile).
-\str_new:N \l_robExt_currentCompilationCommand
-
-
+\str_new:N \l__robExt_current_compilation_command_str
+\str_new:N \l__robExt_tmp_str
+
+
+% To have a code compatible even on older versions
+% https://tex.stackexchange.com/questions/615010/how-can-i-use-latex-hooks-in-historical-versions-of-tex-live
+\providecommand\RobExtIfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+\RobExtIfFormatAtLeastTF{2020-10-01}%
+{
+ % https://ctan.math.illinois.edu/macros/latex/base/lthooks-doc.pdf
+ \NewHook{robust-externalize/just-before-writing-files}
+ \def\robExtUseHookJustBeforeWritingFiles{\UseHook{robust-externalize/just-before-writing-files}}%
+}%
+{
+ \def\robExtUseHookJustBeforeWritingFiles{}
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Placeholders %%%%%%%%%%%%
@@ -277,22 +342,22 @@ if __name__ == '__main__':
%% Placeholders are strings like "__MYLIBRARY__" or "__MAINCONTENT__" that will be replaced by a given content.
%% In practice:
-%% - for every placeholder MYPLACEHOLDER, a macro \l_robExt_placeholder_MYPLACEHOLDER_str is created, containing
+%% - for every placeholder MYPLACEHOLDER, a macro \l__robExt_placeholder_MYPLACEHOLDER_str is created, containing
%% the string to use to replace it
-%% - a sequence \l_robExt_placeholder_group_main_seq that is a list of string, contains the list of all placeholders,
+%% - a sequence \l__robExt_placeholder_group_main_seq that is a list of string, contains the list of all placeholders,
%% in a string, like [MYLIBRARY, MAINCONTENT] etc...
%% One issue is that LaTeX does not keep some symbols (e.g. % etc...) when used inside a macro, so we define
%% different commands depending on whether they can be used in a macro or not, whether they should be taken
%% from an external file etc...
-\seq_clear_new:N \l_robExt_placeholder_group_main_seq
+\seq_clear_new:N \l__robExt_placeholder_group_main_seq
%%%
%%% Debug in terminal
%%%
\NewDocumentCommand{\robExtShowPlaceholder}{sm}{
- \cs_if_exist:cTF {l_robExt_placeholder_#2_str} {
- \message{Placeholder ~ #2 ~ contains:^^J~ \use:c{l_robExt_placeholder_#2_str}}
+ \cs_if_exist:cTF {l__robExt_placeholder_#2_str} {
+ \message{Placeholder ~ #2 ~ contains:^^J~ \use:c{l__robExt_placeholder_#2_str}}
}{
\message{Placeholder ~ #2 ~ does ~ not ~ exist.}
}
@@ -301,13 +366,13 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtShowPlaceholders}{s}{
\message{List ~ of ~ placeholders:}
- \seq_map_inline:Nn \l_robExt_placeholder_group_main_seq {\message{##1,}}
+ \seq_map_inline:Nn \l__robExt_placeholder_group_main_seq {\message{##1,}}
\IfBooleanTF{#1}{}{\show\def}
}
\NewDocumentCommand{\robExtShowPlaceholdersContents}{s}{
\message{List ~ of ~ placeholders:}
- \seq_map_inline:Nn \l_robExt_placeholder_group_main_seq {\robExtShowPlaceholder*{##1}}
+ \seq_map_inline:Nn \l__robExt_placeholder_group_main_seq {\robExtShowPlaceholder*{##1}}
\IfBooleanTF{#1}{}{\show\def}
}
@@ -318,11 +383,11 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtPrintPlaceholderNoReplacement}{sm}{%
% For some reasons, newlines are displayed as \Omega. We need to replace them with \\
% https://tex.stackexchange.com/questions/694716/print-latex3-string-verbatim/694717
- \tl_set_eq:Nc \l_robExt_tmp_str { l_robExt_placeholder_#2_str }
- \tl_replace_all:Nnn \l_robExt_tmp_str {^^J} { \par }
- \tl_replace_all:Nnn \l_robExt_tmp_str { ~ } { \ }
- \IfBooleanTF{#1}{\texttt{\use:c{l_robExt_placeholder_#2_str}}}{\begin{flushleft}\ttfamily%
- \l_robExt_tmp_str
+ \tl_set_eq:Nc \l__robExt_tmp_str { l__robExt_placeholder_#2_str }
+ \tl_replace_all:Nnn \l__robExt_tmp_str {^^J} { \par }
+ \tl_replace_all:Nnn \l__robExt_tmp_str { ~ } { \ }
+ \IfBooleanTF{#1}{\texttt{\use:c{l__robExt_placeholder_#2_str}}}{\begin{flushleft}\ttfamily%
+ \l__robExt_tmp_str
\end{flushleft}%
}
}
@@ -332,11 +397,11 @@ if __name__ == '__main__':
\robExtGetPlaceholderInResult{#2}
% For some reasons, newlines are displayed as \Omega. We need to replace them with \\
% https://tex.stackexchange.com/questions/694716/print-latex3-string-verbatim/694717
- \tl_set_eq:NN \l_robExt_tmp_str \l_robExt_result_str
- \tl_replace_all:Nnn \l_robExt_tmp_str {^^J} { \par }
- \tl_replace_all:Nnn \l_robExt_tmp_str { ~ } { \ }
- \IfBooleanTF{#1}{\texttt{\l_robExt_tmp_str}}{\begin{flushleft}\ttfamily%
- \l_robExt_tmp_str
+ \tl_set_eq:NN \l__robExt_tmp_str \l_robExt_result_str
+ \tl_replace_all:Nnn \l__robExt_tmp_str {^^J} { \par }
+ \tl_replace_all:Nnn \l__robExt_tmp_str { ~ } { \ }
+ \IfBooleanTF{#1}{\texttt{\l__robExt_tmp_str}}{\begin{flushleft}\ttfamily%
+ \l__robExt_tmp_str
\end{flushleft}%
}
}
@@ -345,7 +410,7 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtPrintAllPlaceholdersExceptDefaults}{s}{
List ~ of ~ placeholders:\\
- \seq_map_inline:Nn \l_robExt_placeholder_group_main_seq {
+ \seq_map_inline:Nn \l__robExt_placeholder_group_main_seq {
% We hide the elements starting with __ROBEXT_
\str_if_in:nnTF { ##1 } { __ROBEXT_ } {
\IfBooleanTF {#1} {
@@ -361,7 +426,7 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtPrintAllPlaceholders}{}{
List ~ of ~ placeholders:\\
- \seq_map_inline:Nn \l_robExt_placeholder_group_main_seq {- ~ Placeholder ~ called ~ \texttt{\tl_to_str:n {##1}} ~ contains: \robExtPrintPlaceholderNoReplacement{##1}}
+ \seq_map_inline:Nn \l__robExt_placeholder_group_main_seq {- ~ Placeholder ~ called ~ \texttt{\tl_to_str:n {##1}} ~ contains: \robExtPrintPlaceholderNoReplacement{##1}}
}
\let\printAllPlaceholders\robExtPrintAllPlaceholders
\let\printImportedPlaceholders\robExtPrintAllPlaceholders
@@ -374,43 +439,43 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtEvalPlaceholderNoReplacement}{m}{
% scantokens add an empty space at the end, so we need to add \empty to avoid it having effects
% https://tex.stackexchange.com/questions/213659/could-someone-further-elucidate-expansion-catcodes-and-scantokens
- \tl_rescan:nv {}{ l_robExt_placeholder_#1_str }
+ \tl_rescan:nv {}{ l__robExt_placeholder_#1_str }
}
\let\evalPlaceholderNoReplacement\robExtEvalPlaceholderNoReplacement
\NewDocumentCommand{\robExtGetPlaceholderNoReplacement}{m}{
- \str_use:c { l_robExt_placeholder_#1_str }
+ \str_use:c { l__robExt_placeholder_#1_str }
}
\let\getPlaceholderNoReplacement\robExtGetPlaceholderNoReplacement
\NewDocumentCommand{\robExtRescanPlaceholderInVariableNoReplacement}{mm}{
- \tl_gset_rescan:cnv {#1} {} { l_robExt_placeholder_#2_str }
+ \tl_gset_rescan:cnv {#1} {} { l__robExt_placeholder_#2_str }
}
\let\rescanPlaceholderInVariableNoReplacement\robExtRescanPlaceholderInVariableNoReplacement
-% Make sure that the placeholder is in the list \l_robExt_placeholder_group_main_seq.
+% Make sure that the placeholder is in the list \l__robExt_placeholder_group_main_seq.
% This should automatically be called by other tools
\NewDocumentCommand{\robExtAddPlaceholderToList}{m}{
\cs_if_exist:NTF {\robExtCompletelyDisableWholeImportSystem}{}{
% Make sure we have a string here:
- \str_set_hash_robust:Nn \l_robExt_tmp_str { #1 }
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_str { #1 }
% First we remove existing occurrences (useful to avoid listing the same macro more than once
% if we redefine a macro):
- \seq_remove_all:NV \l_robExt_placeholder_group_main_seq \l_robExt_tmp_str
- \seq_put_right:NV \l_robExt_placeholder_group_main_seq \l_robExt_tmp_str
+ \seq_remove_all:NV \l__robExt_placeholder_group_main_seq \l__robExt_tmp_str
+ \seq_put_right:NV \l__robExt_placeholder_group_main_seq \l__robExt_tmp_str
}
}
\let\robExtImportPlaceholder\robExtAddPlaceholderToList
\let\importPlaceholder\robExtAddPlaceholderToList
\NewDocumentCommand{\robExtClearImportedPlaceholders}{}{
- \seq_clear:N \l_robExt_placeholder_group_main_seq
+ \seq_clear:N \l__robExt_placeholder_group_main_seq
}
\let\clearImportedPlaceholders\robExtClearImportedPlaceholders
\NewDocumentCommand{\robExtRemoveImportedPlaceholder}{m}{
- \str_set_hash_robust:Nn \l_robExt_tmp_str { #1 }
- \seq_remove_all:NV \l_robExt_placeholder_group_main_seq \l_robExt_tmp_str
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_str { #1 }
+ \seq_remove_all:NV \l__robExt_placeholder_group_main_seq \l__robExt_tmp_str
}
\let\removeImportedPlaceholder\robExtRemoveImportedPlaceholder
@@ -418,11 +483,11 @@ if __name__ == '__main__':
% add it first in the list
\NewDocumentCommand{\robExtAddPlaceholderToListFirst}{m}{
% Make sure we have a string here:
- \str_set_hash_robust:Nn \l_robExt_tmp_str { #1 }
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_str { #1 }
% First we remove existing occurrences (useful to avoid listing the same macro more than once
% if we redefine a macro):
- \seq_remove_all:NV \l_robExt_placeholder_group_main_seq \l_robExt_tmp_str
- \seq_put_left:NV \l_robExt_placeholder_group_main_seq \l_robExt_tmp_str
+ \seq_remove_all:NV \l__robExt_placeholder_group_main_seq \l__robExt_tmp_str
+ \seq_put_left:NV \l__robExt_placeholder_group_main_seq \l__robExt_tmp_str
}
\let\robExtImportPlaceholderFirst\robExtAddPlaceholderToListFirst
\let\importPlaceholderFirst\robExtAddPlaceholderToListFirst
@@ -430,15 +495,15 @@ if __name__ == '__main__':
% add it first in the list
\NewDocumentCommand{\robExtAddPlaceholdersToListFirst}{m}{
- \str_set_hash_robust:Nn \l_robExt_tmp_str { #1 }
- \seq_set_from_clist:NN \l_tmp_seq \l_robExt_tmp_str
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_str { #1 }
+ \seq_set_from_clist:NN \l_tmp_seq \l__robExt_tmp_str
% First we remove existing occurrences (useful to avoid listing the same macro more than once
% if we redefine a macro):
\seq_map_inline:Nn \l_tmp_seq {
% This seems to be required to ensure catcodes are correct before removing the elements:
- \seq_remove_all:Nn \l_robExt_placeholder_group_main_seq {##1}
+ \seq_remove_all:Nn \l__robExt_placeholder_group_main_seq {##1}
}
- \seq_put_left:NV \l_robExt_placeholder_group_main_seq \l_robExt_tmp_str
+ \seq_put_left:NV \l__robExt_placeholder_group_main_seq \l__robExt_tmp_str
}
\let\robExtImportPlaceholdersFirst\robExtAddPlaceholdersToListFirst
\let\importPlaceholdersFirst\robExtAddPlaceholdersToListFirst
@@ -447,11 +512,11 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtRemovePlaceholder}{m}{
% This seems to be required to ensure catcodes are correct before removing the elements:
- \str_set_hash_robust:Nn \l_robExt_tmp_str { #1 }
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_str { #1 }
% First we check if it exists, no need to loop over everything otherwise
- \str_if_exist:cTF { l_robExt_placeholder_#1_str } {
- \seq_remove_all:NV \l_robExt_placeholder_group_main_seq \l_robExt_tmp_str
- \expandafter \let \csname l_robExt_placeholder_#1_str \endcsname \undefined
+ \str_if_exist:cTF { l__robExt_placeholder_#1_str } {
+ \seq_remove_all:NV \l__robExt_placeholder_group_main_seq \l__robExt_tmp_str
+ \expandafter \let \csname l__robExt_placeholder_#1_str \endcsname \undefined
} { }
}
\let\removePlaceholder\robExtRemovePlaceholder
@@ -459,11 +524,11 @@ if __name__ == '__main__':
\NewDocumentCommand{\checkIfPlaceholderNameIsLegal}{m}{
\cs_if_exist:NTF {\robExtPlaceholderOnlyWithUnderscores} {
\str_if_in:nnTF {#1}{__}{}{
- \PackageError{robExt}{Error:~all~the~placeholders~should~contain~two~consecutive~underscores~in~their~name.}{}
+ \msg_error:nn{robExt}{underscore in name}
}
} {
\str_if_in:nnTF {#1}{__}{}{
- \message{WARNING:~we~recommend~to~use~only~placeholders~containing~two~consecutive~underscores~in~their~name.}
+ \msg_warning:nn{robExt}{recommend two underscores in placeholders}
}
}
}
@@ -474,7 +539,7 @@ if __name__ == '__main__':
%% Tested!
%% The star version does NOT import the placeholder (useful for efficiency reasons)
\NewDocumentCommand{\robExtPlaceholderFromContent}{smm}{
- \str_set_hash_robust:cn { l_robExt_placeholder_#2_str } {#3}
+ \robExt_set_hash_robust:cn { l__robExt_placeholder_#2_str } {#3}
\checkIfPlaceholderNameIsLegal{#2}
\ifdefined\robExtCompletelyDisableWholeImportSystem\else% Mostly for time optimizations...
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#2}}%
@@ -486,7 +551,7 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtPlaceholderFromContentFirst}{smm}{
- \str_set_hash_robust:cn { l_robExt_placeholder_#2_str } {#3}
+ \robExt_set_hash_robust:cn { l__robExt_placeholder_#2_str } {#3}
\checkIfPlaceholderNameIsLegal{#2}
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToListFirst{#2}}
}
@@ -496,7 +561,7 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtPlaceholderFromString}{smm}{
- \str_set_eq:cN { l_robExt_placeholder_#2_str } {#3}
+ \str_set_eq:cN { l__robExt_placeholder_#2_str } {#3}
\checkIfPlaceholderNameIsLegal{#2}
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#2}}
}
@@ -504,7 +569,7 @@ if __name__ == '__main__':
\let\setPlaceholderFromString\robExtPlaceholderFromString
\NewDocumentCommand{\robExtPlaceholderFromStringExpanded}{smm}{
- \str_set:cx { l_robExt_placeholder_#2_str } {#3}
+ \str_set:cx { l__robExt_placeholder_#2_str } {#3}
\checkIfPlaceholderNameIsLegal{#2}
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#2}}
}
@@ -513,7 +578,7 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtCopyPlaceholder}{smm}{
- \str_set_eq:cc { l_robExt_placeholder_#2_str } { l_robExt_placeholder_#3_str }
+ \str_set_eq:cc { l__robExt_placeholder_#2_str } { l__robExt_placeholder_#3_str }
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#2}}
}
\let\copyPlaceholder\robExtCopyPlaceholder
@@ -522,24 +587,24 @@ if __name__ == '__main__':
%% Add something to the right of the placeholder
%% By default it adds a space in between, unless we use the star version
\NewDocumentCommand{\robExtAddToPlaceholder}{smm}{
- \str_if_exist:cTF { l_robExt_placeholder_#2_str } {
- \str_set_hash_robust:Nn \l_tmp_str {#3} %% needed as put_right does not convert to string first
- \IfBooleanTF{#1}{}{\str_put_right:cn { l_robExt_placeholder_#2_str } { ~ } }
- \str_put_right:cV { l_robExt_placeholder_#2_str } \l_tmp_str
+ \str_if_exist:cTF { l__robExt_placeholder_#2_str } {
+ \robExt_set_hash_robust:Nn \l_tmp_str {#3} %% needed as put_right does not convert to string first
+ \IfBooleanTF{#1}{}{\str_put_right:cn { l__robExt_placeholder_#2_str } { ~ } }
+ \str_put_right:cV { l__robExt_placeholder_#2_str } \l_tmp_str
}{
- \str_set_hash_robust:cn { l_robExt_placeholder_#2_str } {#3}
+ \robExt_set_hash_robust:cn { l__robExt_placeholder_#2_str } {#3}
\robExtAddPlaceholderToList{#2}
}
}
\let\addToPlaceholder\robExtAddToPlaceholder
\NewDocumentCommand{\robExtAddToPlaceholderNoImport}{smm}{
- \str_if_exist:cTF { l_robExt_placeholder_#2_str } {
- \str_set_hash_robust:Nn \l_tmp_str {#3} %% needed as put_right does not convert to string first
- \IfBooleanTF{#1}{}{\str_put_right:cn { l_robExt_placeholder_#2_str } { ~ } }
- \str_put_right:cV { l_robExt_placeholder_#2_str } \l_tmp_str
+ \str_if_exist:cTF { l__robExt_placeholder_#2_str } {
+ \robExt_set_hash_robust:Nn \l_tmp_str {#3} %% needed as put_right does not convert to string first
+ \IfBooleanTF{#1}{}{\str_put_right:cn { l__robExt_placeholder_#2_str } { ~ } }
+ \str_put_right:cV { l__robExt_placeholder_#2_str } \l_tmp_str
}{
- \str_set_hash_robust:cn { l_robExt_placeholder_#2_str } {#3}
+ \robExt_set_hash_robust:cn { l__robExt_placeholder_#2_str } {#3}
}
}
\let\addToPlaceholderNoImport\robExtAddToPlaceholderNoImport
@@ -548,12 +613,12 @@ if __name__ == '__main__':
%% Add something to the right of the placeholder
%% By default it adds a space in between, unless we use the star version
\NewDocumentCommand{\robExtAddBeforePlaceholder}{smm}{
- \str_if_exist:cTF { l_robExt_placeholder_#2_str } {
- \str_set_hash_robust:Nn \l_tmp_str {#3} %% needed as put_right does not convert to string first
- \IfBooleanTF{#1}{}{\str_put_left:cn { l_robExt_placeholder_#2_str } { ~ } }
- \str_put_left:cV { l_robExt_placeholder_#2_str } \l_tmp_str
+ \str_if_exist:cTF { l__robExt_placeholder_#2_str } {
+ \robExt_set_hash_robust:Nn \l_tmp_str {#3} %% needed as put_right does not convert to string first
+ \IfBooleanTF{#1}{}{\str_put_left:cn { l__robExt_placeholder_#2_str } { ~ } }
+ \str_put_left:cV { l__robExt_placeholder_#2_str } \l_tmp_str
}{
- \str_set_hash_robust:cn { l_robExt_placeholder_#2_str } {#3}
+ \robExt_set_hash_robust:cn { l__robExt_placeholder_#2_str } {#3}
\robExtAddPlaceholderToList{#2}
}
}
@@ -561,12 +626,12 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtAddBeforePlaceholderNoImport}{smm}{
- \str_if_exist:cTF { l_robExt_placeholder_#2_str } {
- \str_set_hash_robust:Nn \l_tmp_str {#3} %% needed as put_right does not convert to string first
- \IfBooleanTF{#1}{}{\str_put_left:cn { l_robExt_placeholder_#2_str } { ~ } }
- \str_put_left:cV { l_robExt_placeholder_#2_str } \l_tmp_str
+ \str_if_exist:cTF { l__robExt_placeholder_#2_str } {
+ \robExt_set_hash_robust:Nn \l_tmp_str {#3} %% needed as put_right does not convert to string first
+ \IfBooleanTF{#1}{}{\str_put_left:cn { l__robExt_placeholder_#2_str } { ~ } }
+ \str_put_left:cV { l__robExt_placeholder_#2_str } \l_tmp_str
}{
- \str_set_hash_robust:cn { l_robExt_placeholder_#2_str } {#3}
+ \robExt_set_hash_robust:cn { l__robExt_placeholder_#2_str } {#3}
}
}
\let\addBeforePlaceholderNoImport\robExtAddBeforePlaceholderNoImport
@@ -593,20 +658,20 @@ if __name__ == '__main__':
\XSIMfilewritestart{\jobname-robExt-tmp-file-you-can-remove.tmp}%
}{%
\XSIMfilewritestop%
- \ior_open:Nn \g_robExt_read_ior {\jobname-robExt-tmp-file-you-can-remove.tmp}%
- %% Put the file in l_robExt_tmp_contain_file
- \str_clear_new:N \l_robExt_tmp%
- \ior_str_map_inline:Nn \g_robExt_read_ior {%
- \str_gput_right:Nx \l_robExt_tmp {\tl_to_str:N{##1}^^J}%
+ \ior_open:Nn \g__robExt_read_ior {\jobname-robExt-tmp-file-you-can-remove.tmp}%
+ %% Put the file in l__robExt_tmp_contain_file_str
+ \str_clear_new:N \l__robExt_tmp_str%
+ \ior_str_map_inline:Nn \g__robExt_read_ior {%
+ \str_gput_right:Nx \l__robExt_tmp_str {\tl_to_str:n{##1}^^J}%
}%
- \str_set_eq:cN {l_robExt_placeholder_#2_str} \l_robExt_tmp%
+ \str_set_eq:cN {l__robExt_placeholder_#2_str} \l__robExt_tmp_str%
\IfBooleanTF {#1} {} {
\robExtAddPlaceholderToList{#2}
%% Otherwise they will be lost when the environment ends
- \robExtKeepaftergroup{l_robExt_placeholder_group_main_seq}%
+ \robExtKeepaftergroup{l__robExt_placeholder_group_main_seq}%
}
%% for other variable
- \robExtKeepaftergroup{l_robExt_placeholder_#2_str}%
+ \robExtKeepaftergroup{l__robExt_placeholder_#2_str}%
}%
\let\PlaceholderFromCode\RobExtPlaceholderFromCode
\let\endPlaceholderFromCode\endRobExtPlaceholderFromCode
@@ -614,7 +679,7 @@ if __name__ == '__main__':
\let\endSetPlaceholderCode\endRobExtPlaceholderFromCode
\NewDocumentCommand{\robExtKeepPlaceholderAfterGroup}{m}{
- \robExtKeepaftergroup{l_robExt_placeholder_#1_str}%
+ \robExtKeepaftergroup{l__robExt_placeholder_#1_str}%
}
\let\keepPlaceholderAfterGroup\robExtKeepPlaceholderAfterGroup
@@ -624,22 +689,21 @@ if __name__ == '__main__':
%% MYLIBPATH = robExt-abcmylib.py
%% Tested!
\NewDocumentCommand{\robExtPlaceholderPathFromFilename}{smm}{
- \ior_open:Nn \g_robExt_read_ior {#3}
- %% Put the file in l_robExt_tmp_contain_file
- \str_clear_new:N \l_robExt_tmp_contain_file
- \ior_str_map_inline:Nn \g_robExt_read_ior {
- \str_put_right:Nx \l_robExt_tmp_contain_file {\tl_to_str:N{##1}^^J}
+ \ior_open:Nn \g__robExt_read_ior {#3}
+ %% Put the file in l__robExt_tmp_contain_file_str
+ \str_clear_new:N \l__robExt_tmp_contain_file_str
+ \ior_str_map_inline:Nn \g__robExt_read_ior {
+ \str_put_right:Nx \l__robExt_tmp_contain_file_str {\tl_to_str:n{##1}^^J}
}
%% computes the new filename based on the md5
- \str_clear_new:N \l_robExt_tmp_filename
- \str_set:Nx \l_robExt_tmp_filename_no_prefix {\pdfmdfivesum{\l_robExt_tmp_contain_file}#3}
+ \str_set:Nx \l__robExt_tmp_filename_no_prefix_str {\robExt@pdfmdfivesum{\l__robExt_tmp_contain_file_str}#3}
%% Writes the content to the file
\robExtCheckIfPrefixFolderExists
- \iow_open:Nx \g_robExt_write_iow {\robExtAddCachePathAndName{\l_robExt_tmp_filename_no_prefix}}
- \iow_now:NV \g_robExt_write_iow \l_robExt_tmp_contain_file
- \iow_close:N \g_robExt_write_iow
+ \iow_open:Nx \g__robExt_write_iow {\robExtAddCachePathAndName{\l__robExt_tmp_filename_no_prefix_str}}
+ \iow_now:NV \g__robExt_write_iow \l__robExt_tmp_contain_file_str
+ \iow_close:N \g__robExt_write_iow
%% sets the template name to the relative path to the file
- \str_set:cx { l_robExt_placeholder_#2_str } {\robExtPrefixFilename\l_robExt_tmp_filename_no_prefix}
+ \str_set:cx { l__robExt_placeholder_#2_str } {\robExtPrefixFilename\l__robExt_tmp_filename_no_prefix_str}
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#2}}
}
\let\placeholderPathFromFilename\robExtPlaceholderPathFromFilename
@@ -650,14 +714,14 @@ if __name__ == '__main__':
%% Tested!
\NewDocumentCommand{\robExtPlaceholderFromFileContent}{smm}{
\checkIfPlaceholderNameIsLegal{#2}
- \ior_open:Nn \g_robExt_read_ior {#3}
- %% Put the file in l_robExt_tmp_contain_file
- \str_clear_new:N \l_robExt_tmp_contain_file
- \ior_str_map_inline:Nn \g_robExt_read_ior {
- \str_put_right:Nx \l_robExt_tmp_contain_file {\tl_to_str:N{##1}^^J}
+ \ior_open:Nn \g__robExt_read_ior {#3}
+ %% Put the file in l__robExt_tmp_contain_file_str
+ \str_clear_new:N \l__robExt_tmp_contain_file_str
+ \ior_str_map_inline:Nn \g__robExt_read_ior {
+ \str_put_right:Nx \l__robExt_tmp_contain_file_str {\tl_to_str:n{##1}^^J}
}
%% sets the template name to the relative path to the file
- \str_set_eq:cN { l_robExt_placeholder_#2_str } \l_robExt_tmp_contain_file
+ \str_set_eq:cN { l__robExt_placeholder_#2_str } \l__robExt_tmp_contain_file_str
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#2}}
}
\let\placeholderFromFileContent\robExtPlaceholderFromFileContent
@@ -669,17 +733,16 @@ if __name__ == '__main__':
%% MYLIBPATH = robExt-abc.py
%% Tested!
\NewDocumentCommand{\robExtPlaceholderPathFromContent}{smO{.tex}m}{
- \str_set_hash_robust:Nn \l_robExt_tmp_contain_file {#4}
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_contain_file_str {#4}
%% computes the new filename based on the md5
- \str_clear_new:N \l_robExt_tmp_filename
- \str_set:Nx \l_robExt_tmp_filename_no_prefix {\pdfmdfivesum{\l_robExt_tmp_contain_file}#3}
+ \str_set:Nx \l__robExt_tmp_filename_no_prefix_str {\robExt@pdfmdfivesum{\l__robExt_tmp_contain_file_str}#3}
%% Writes the content to the file
\robExtCheckIfPrefixFolderExists
- \iow_open:Nx \g_robExt_write_iow {\robExtAddCachePathAndName{\l_robExt_tmp_filename_no_prefix}}
- \iow_now:NV \g_robExt_write_iow \l_robExt_tmp_contain_file
- \iow_close:N \g_robExt_write_iow
+ \iow_open:Nx \g__robExt_write_iow {\robExtAddCachePathAndName{\l__robExt_tmp_filename_no_prefix_str}}
+ \iow_now:NV \g__robExt_write_iow \l__robExt_tmp_contain_file_str
+ \iow_close:N \g__robExt_write_iow
%% sets the template name to the relative path to the file
- \str_set:cx { l_robExt_placeholder_#2_str } {\robExtPrefixFilename\l_robExt_tmp_filename_no_prefix}
+ \str_set:cx { l__robExt_placeholder_#2_str } {\robExtPrefixFilename\l__robExt_tmp_filename_no_prefix_str}
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#2}}
}
\let\placeholderPathFromContent\robExtPlaceholderPathFromContent
@@ -695,53 +758,45 @@ if __name__ == '__main__':
\XSIMfilewritestart*{\jobname-robExt-tmp-file-you-can-remove.tmp}
}{
\XSIMfilewritestop
- \ior_open:Nn \g_robExt_read_ior {\jobname-robExt-tmp-file-you-can-remove.tmp}
- %% Put the file in \l_robExt_tmp_contain_file
- \str_clear_new:N \l_robExt_tmp_contain_file
- \ior_str_map_inline:Nn \g_robExt_read_ior {
- \str_gput_right:Nx \l_robExt_tmp_contain_file {\tl_to_str:N{##1}^^J}
+ \ior_open:Nn \g__robExt_read_ior {\jobname-robExt-tmp-file-you-can-remove.tmp}
+ %% Put the file in \l__robExt_tmp_contain_file_str
+ \str_clear_new:N \l__robExt_tmp_contain_file_str
+ \ior_str_map_inline:Nn \g__robExt_read_ior {
+ \str_gput_right:Nx \l__robExt_tmp_contain_file_str {\tl_to_str:n{##1}^^J}
}
%% computes the new filename based on the md5
- \str_clear_new:N \l_robExt_tmp_filename
- \str_set:Nx \l_robExt_tmp_filename_no_prefix {\pdfmdfivesum{\l_robExt_tmp_contain_file}#2}
+ \str_set:Nx \l__robExt_tmp_filename_no_prefix_str {\robExt@pdfmdfivesum{\l__robExt_tmp_contain_file_str}#2}
%% Writes the content to the file
\robExtCheckIfPrefixFolderExists
- \iow_open:Nx \g_robExt_write_iow {\robExtAddCachePathAndName{\l_robExt_tmp_filename_no_prefix}}
- \iow_now:NV \g_robExt_write_iow \l_robExt_tmp_contain_file
- \iow_close:N \g_robExt_write_iow
+ \iow_open:Nx \g__robExt_write_iow {\robExtAddCachePathAndName{\l__robExt_tmp_filename_no_prefix_str}}
+ \iow_now:NV \g__robExt_write_iow \l__robExt_tmp_contain_file_str
+ \iow_close:N \g__robExt_write_iow
%% sets the template name to the relative path to the file
- \str_set:cx { l_robExt_placeholder_#3_str } {\robExtPrefixFilename\l_robExt_tmp_filename_no_prefix}
+ \str_set:cx { l__robExt_placeholder_#3_str } {\robExtPrefixFilename\l__robExt_tmp_filename_no_prefix_str}
\IfBooleanTF {#1} {} {
\robExtAddPlaceholderToList{#3}
- \robExtKeepaftergroup{l_robExt_placeholder_group_main_seq}
+ \robExtKeepaftergroup{l__robExt_placeholder_group_main_seq}
}
%% Otherwise they will be lost when the environment ends
- \robExtKeepaftergroup{l_robExt_placeholder_#3_str}
+ \robExtKeepaftergroup{l__robExt_placeholder_#3_str}
}
\let\PlaceholderPathFromCode\RobExtPlaceholderPathFromCode
\let\endPlaceholderPathFromCode\endRobExtPlaceholderPathFromCode
-%%% Evaluate a string by replacing the placeholders until there is none left
-%%% the result will be in \robExtResult
-% \cs_set:Nn \replace_until_impossible:N {
-% \str_set:Nn \l_robExt_result_str { ls }
-% }
-
-% backup, we are gona test it
% %%% Evaluate a string by replacing the placeholders until there is none left
% %%% the result will be in \robExtResult
-\cs_set:Nn \replace_until_impossible:N {
- \robExtDebugMessage{We needed to run replace_until_impossible}
+\cs_set:Nn \__robExt_replace_until_impossible: {
+ \robExtDebugMessage{We~needed~to~run~replace_until_impossible}
% Try to replace directly if single placeholder
- \str_if_exist:cTF { l_robExt_placeholder_ \l_robExt_result_str _str }{
- \str_set_eq:Nc {\l_robExt_result_str}{ l_robExt_placeholder_ \l_robExt_result_str _str }
+ \str_if_exist:cTF { l__robExt_placeholder_ \l_robExt_result_str _str }{
+ \str_set_eq:Nc {\l_robExt_result_str}{ l__robExt_placeholder_ \l_robExt_result_str _str }
\str_set:Nn \l_robext_tmp_before {}
} {
\str_set_eq:NN \l_robext_tmp_before \l_robExt_result_str
- \seq_map_inline:Nn \l_robExt_placeholder_group_main_seq {
+ \seq_map_inline:Nn \l__robExt_placeholder_group_main_seq {
\robExtDebugMessage{Trying ~ to ~ replace ##1^^J}
- \str_if_exist:cTF { l_robExt_placeholder_##1_str } {
- \str_replace_all:Nnv \l_robExt_result_str { ##1 } { l_robExt_placeholder_##1_str }
+ \str_if_exist:cTF { l__robExt_placeholder_##1_str } {
+ \str_replace_all:Nnv \l_robExt_result_str { ##1 } { l__robExt_placeholder_##1_str }
}{
\robExtDebugWarning{WARNING: ~ the ~ placeholder ~ ##1 ~ does ~ not ~ exist.}
}
@@ -756,7 +811,7 @@ if __name__ == '__main__':
}{
% The strings are different: we restart
%\message{The strings are different, we restart: It ~ used ~ to ~ be ~\l_robext_tmp_before^^J^^J now it is^^J^^J \l_robExt_result_str}
- \replace_until_impossible:N { }
+ \__robExt_replace_until_impossible:
}
}{
% We found no __ so we stop before even if a change was made
@@ -764,25 +819,25 @@ if __name__ == '__main__':
}{
% We compare the result
\str_compare:eNeTF \l_robext_tmp_before = \l_robExt_result_str {
- % \str_set_eq:cN { l_robExt_placeholder_#1_str } \l_robExt_result_str
+ % \str_set_eq:cN { l__robExt_placeholder_#1_str } \l_robExt_result_str
% \robExtAddPlaceholderToList{#1}
}{
% The strings are different: we restart
- \replace_until_impossible:N { }
+ \__robExt_replace_until_impossible:
}
}
}
\NewDocumentCommand{\robExtGetPlaceholderInResult}{sO{}m}{
- \str_set_hash_robust:Nn \l_robExt_result_str { #3 }
- \robExtDebugMessage{Begin to evaluate placeholder^^J \l_robExt_result_str}
- \replace_until_impossible:N { }
- \robExtDebugMessage{Ended the replacement^^J \l_robExt_result_str}
+ \robExt_set_hash_robust:Nn \l_robExt_result_str { #3 }
+ \robExtDebugMessage{Begin~to~evaluate~placeholder^^J~\l_robExt_result_str}
+ \__robExt_replace_until_impossible:
+ \robExtDebugMessage{Ended~the~replacement^^J~\l_robExt_result_str}
\tl_if_blank:nTF {#2} {} {
% To avoid infinite recursion later and allow concatenation to a placeholder that does not exists
% we remove the name of the placeholder at the end
\str_remove_all:Nn \l_robExt_result_str { #2 }
- \str_set_eq:cN { l_robExt_placeholder_#2_str } \l_robExt_result_str
+ \str_set_eq:cN { l__robExt_placeholder_#2_str } \l_robExt_result_str
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#2}}
}
}
@@ -791,19 +846,19 @@ if __name__ == '__main__':
%% like robExtGetPlaceholderInResult put assumes that there is a single placeholder name.
%% It is used mainly for efficiency as it avoids a loop on all placeholder.
\NewDocumentCommand{\robExtGetPlaceholderInResultFromSinglePlaceholder}{sO{}m}{
- \cs_if_exist:cTF { l_robExt_placeholder_#3_str }{
- \str_set_eq:Nc { \l_robExt_result_str }{ l_robExt_placeholder_#3_str }
+ \cs_if_exist:cTF { l__robExt_placeholder_#3_str }{
+ \str_set_eq:Nc { \l_robExt_result_str }{ l__robExt_placeholder_#3_str }
}{
- \PackageError{robExt}{[robExtGetPlaceholderInResultFromSinglePlaceholder] ~ The ~ placeholder ~ #3 ~ does ~ not ~ exists.}
+ \msg_error:nn{robExt}{placeholder not existing}
}
- \robExtDebugMessage{Starting to replace placeholder #3 to get \l_robExt_result_str}
- \replace_until_impossible:N { }
- \robExtDebugMessage{Ended up with \l_robExt_result_str}
+ \robExtDebugMessage{Starting~to~replace~placeholder~#3~to~get~\l_robExt_result_str}
+ \__robExt_replace_until_impossible:
+ \robExtDebugMessage{Ended~up~with~\l_robExt_result_str}
\tl_if_blank:nTF {#2} {} {
% To avoid infinite recursion later and allow concatenation to a placeholder that does not exists
% we remove the name of the placeholder at the end
\str_remove_all:Nn \l_robExt_result_str { #2 }
- \str_set_eq:cN { l_robExt_placeholder_#2_str } \l_robExt_result_str
+ \str_set_eq:cN { l__robExt_placeholder_#2_str } \l_robExt_result_str
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#2}}
}
}
@@ -811,13 +866,13 @@ if __name__ == '__main__':
\cs_set:Nn \__replace_from_list:N {
\str_set_eq:NN \l_robext_tmp_before \l_robExt_result_str
\clist_map_inline:Nn {#1} {
- \str_if_exist:cTF { l_robExt_placeholder_##1_str }{
- \str_replace_all:Nnv \l_robExt_result_str { ##1 } { l_robExt_placeholder_##1_str }
+ \str_if_exist:cTF { l__robExt_placeholder_##1_str }{
+ \str_replace_all:Nnv \l_robExt_result_str { ##1 } { l__robExt_placeholder_##1_str }
} { }
}
% We compare the result
\str_compare:eNeTF \l_robext_tmp_before = \l_robExt_result_str {
- % \str_set_eq:cN { l_robExt_placeholder_#1_str } \l_robExt_result_str
+ % \str_set_eq:cN { l__robExt_placeholder_#1_str } \l_robExt_result_str
% \robExtAddPlaceholderToList{#1}
}{
% The strings are different: we restart
@@ -826,12 +881,12 @@ if __name__ == '__main__':
}
\NewDocumentCommand{\robExtGetPlaceholderInResultReplaceFromList}{smO{}m}{
- \str_set_hash_robust:Nn \l_robExt_result_str { #4 }
- \clist_set:Nn \l_robExt_list_placeholder_replace_clist {#2}
- \__replace_from_list:N { \l_robExt_list_placeholder_replace_clist }
+ \robExt_set_hash_robust:Nn \l_robExt_result_str { #4 }
+ \clist_set:Nn \l__robExt_list_placeholder_replace_clist {#2}
+ \__replace_from_list:N \l__robExt_list_placeholder_replace_clist
\tl_if_blank:nTF {#3} {} {
\str_remove_all:Nn \l_robExt_result_str { #3 }
- \str_set_eq:cN { l_robExt_placeholder_#3_str } \l_robExt_result_str
+ \str_set_eq:cN { l__robExt_placeholder_#3_str } \l_robExt_result_str
\IfBooleanTF {#1} {} {\robExtAddPlaceholderToList{#3}}
}
}
@@ -844,8 +899,8 @@ if __name__ == '__main__':
%%%% Same version, but replaces only one (useful sometimes)
\cs_set:Nn \__replace_n_times:n {
\str_set_eq:NN \l_robext_tmp_before \l_robExt_result_str
- \seq_map_inline:Nn \l_robExt_placeholder_group_main_seq {
- \str_replace_all:Nnv \l_robExt_result_str { ##1 } { l_robExt_placeholder_##1_str }
+ \seq_map_inline:Nn \l__robExt_placeholder_group_main_seq {
+ \str_replace_all:Nnv \l_robExt_result_str { ##1 } { l__robExt_placeholder_##1_str }
}
\int_compare:nTF { #1 > 1}{
\__replace_n_times:n {\int_eval:n {#1-1}}
@@ -881,7 +936,7 @@ if __name__ == '__main__':
%%% Evaluate a string by replacing the placeholders until there is none left
%%% the result will be in \robExtResult
\NewDocumentCommand{\robExtEvalPlaceholder}{m}{
- \str_set_hash_robust:Nn \l_test_str {#1}
+ \robExt_set_hash_robust:Nn \l_test_str {#1}
\robExtGetPlaceholderInResult{#1}
\tl_rescan:nv {} { l_robExt_result_str }
}
@@ -890,7 +945,7 @@ if __name__ == '__main__':
%%% Evaluate a string by replacing the placeholders until there is none left
%%% the result will be in \robExtResult
\NewDocumentCommand{\robExtEvalPlaceholderReplaceFromList}{mm}{
- \str_set_hash_robust:Nn \l_test_str {#2}
+ \robExt_set_hash_robust:Nn \l_test_str {#2}
\robExtGetPlaceholderInResultReplaceFromList{#1}{#2}
\tl_rescan:nv {} { l_robExt_result_str }
}
@@ -899,21 +954,21 @@ if __name__ == '__main__':
%%% Evaluate a placeholder by first trying some strings, then checking if a template is still present (if the
%%% mode is enabled), and then it continues normally. Mostly for performance reasons.
\NewDocumentCommand{\robExtEvalPlaceholderStartFromList}{mm}{
- \str_set_hash_robust:Nn \l_test_str {#2}
+ \robExt_set_hash_robust:Nn \l_test_str {#2}
\robExtGetPlaceholderInResultReplaceFromList{#1}{#2}
\cs_if_exist:NTF {\robExtPlaceholderOnlyWithUnderscores} {
%% there might be non-important placeholders that are replaced later:
- \str_set_eq:NN \l_robExt_result_minus_str \l_robExt_result_str
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_OUTPUT_PREFIX__}
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_SOURCE_FILE__}
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_OUTPUT_PDF__}
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_WAY_BACK__}
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_CACHE_FOLDER__}
- \str_if_in:NnTF { \l_robExt_result_minus_str } { __ } {
- \replace_until_impossible:N { }
+ \str_set_eq:NN \l__robExt_result_minus_str \l_robExt_result_str
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_OUTPUT_PREFIX__}
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_SOURCE_FILE__}
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_OUTPUT_PDF__}
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_WAY_BACK__}
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_CACHE_FOLDER__}
+ \str_if_in:NnTF { \l__robExt_result_minus_str } { __ } {
+ \__robExt_replace_until_impossible:
}{
}
- }{ \replace_until_impossible:N { } }
+ }{ \__robExt_replace_until_impossible: }
\tl_rescan:nv {} { l_robExt_result_str }
}
\let\evalPlaceholderStartFromList\robExtEvalPlaceholderStartFromList
@@ -921,37 +976,37 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtEvalPlaceholderInplace}{m}{
\robExtGetPlaceholderInResult{#1}
- \tl_set_rescan:Nnx \l_robExt_tmp_tl {} { \l_robExt_result_str }
- \str_set_hash_robust:cx { l_robExt_placeholder_#1_str } { \l_robExt_tmp_tl }
+ \tl_set_rescan:Nnx \l__robExt_tmp_tl {} { \l_robExt_result_str }
+ \robExt_set_hash_robust:cx { l__robExt_placeholder_#1_str } { \l__robExt_tmp_tl }
}
\let\evalPlaceholderInplace\robExtEvalPlaceholderInplace
\NewDocumentCommand{\robExtEvalPlaceholderInplaceFromSinglePlaceholder}{m}{
\robExtGetPlaceholderInResultFromSinglePlaceholder{#1}
- \tl_set_rescan:Nnx \l_robExt_tmp_tl {} { \l_robExt_result_str }
- \str_set_hash_robust:cx { l_robExt_placeholder_#1_str } { \l_robExt_tmp_tl }
+ \tl_set_rescan:Nnx \l__robExt_tmp_tl {} { \l_robExt_result_str }
+ \robExt_set_hash_robust:cx { l__robExt_placeholder_#1_str } { \l__robExt_tmp_tl }
}
\let\evalPlaceholderInplaceFromSinglePlaceholder\robExtEvalPlaceholderInplaceFromSinglePlaceholder
% Sometimes two symbols ## (with a different catcode than a normal hash) are added instead of a single #
\NewDocumentCommand{\robExtPlaceholderDoubleNumberHashesInplace}{m}{
- \str_replace_all:cxx { l_robExt_placeholder_#1_str } { \c_hash_str } { \c_hash_str \c_hash_str }
+ \str_replace_all:cxx { l__robExt_placeholder_#1_str } { \c_hash_str } { \c_hash_str \c_hash_str }
}
\let\placeholderDoubleNumberHashesInplace\robExtPlaceholderDoubleNumberHashesInplace
\NewDocumentCommand{\robExtPlaceholderHalveNumberHashesInplace}{m}{
- \str_replace_all:cxx { l_robExt_placeholder_#1_str } { \c_hash_str \c_hash_str } { \c_hash_str }
+ \str_replace_all:cxx { l__robExt_placeholder_#1_str } { \c_hash_str \c_hash_str } { \c_hash_str }
}
\let\placeholderHalveNumberHashesInplace\robExtPlaceholderHalveNumberHashesInplace
\NewDocumentCommand{\robExtPlaceholderReplaceInplace}{mmm}{
- \str_replace_all:cnn { l_robExt_placeholder_#1_str } { #2 } { #3 }
+ \str_replace_all:cnn { l__robExt_placeholder_#1_str } { #2 } { #3 }
}
\let\placeholderReplaceInplace\robExtPlaceholderReplaceInplace
\NewDocumentCommand{\robExtPlaceholderReplaceInplaceEval}{mmm}{
- \str_replace_all:cxx { l_robExt_placeholder_#1_str } { #2 } { #3 }
+ \str_replace_all:cxx { l__robExt_placeholder_#1_str } { #2 } { #3 }
}
\let\placeholderReplaceInplaceEval\robExtPlaceholderReplaceInplaceEval
@@ -971,78 +1026,78 @@ if __name__ == '__main__':
\NewDocumentCommand{\robExtAddPlaceholdersToGroup}{mm}{
% Make sure we have a string here:
- \str_set_hash_robust:Nn \l_robExt_tmp_str { #2 }
- \seq_set_from_clist:NN \l_robExt_tmp_seq \l_robExt_tmp_str
- \cs_if_exist:cTF {l_robExt_placeholder_group_#1_seq}{}{ \seq_clear_new:c {l_robExt_placeholder_group_#1_seq}}
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_str { #2 }
+ \seq_set_from_clist:NN \l__robExt_tmp_seq \l__robExt_tmp_str
+ \cs_if_exist:cTF {l__robExt_placeholder_group_#1_seq}{}{ \seq_clear_new:c {l__robExt_placeholder_group_#1_seq}}
% First we remove existing occurrences (useful to avoid listing the same macro more than once
% if we redefine a macro):
- \seq_map_inline:Nn \l_robExt_tmp_seq {
+ \seq_map_inline:Nn \l__robExt_tmp_seq {
\message{Adding ##1 to #1}
- \seq_remove_all:cn {l_robExt_placeholder_group_#1_seq} {##1}
- \seq_put_right:cn {l_robExt_placeholder_group_#1_seq} {##1}
+ \seq_remove_all:cn {l__robExt_placeholder_group_#1_seq} {##1}
+ \seq_put_right:cn {l__robExt_placeholder_group_#1_seq} {##1}
}
}
\let\addPlaceholdersToGroup\robExtAddPlaceholdersToGroup
\NewDocumentCommand{\robExtEnsureGroupPlaceholdersExists}{m}{
- \cs_if_exist:cTF {l_robExt_placeholder_group_#1_seq}{}{ \seq_clear_new:c {l_robExt_placeholder_group_#1_seq}}
+ \cs_if_exist:cTF {l__robExt_placeholder_group_#1_seq}{}{ \seq_clear_new:c {l__robExt_placeholder_group_#1_seq}}
}
\let\ensureGroupPlaceholdersExists\robExtEnsureGroupPlaceholdersExists
\NewDocumentCommand{\robExtAddPlaceholdersToGroupBefore}{mm}{
% Make sure we have a string here:
- \str_set_hash_robust:Nn \l_robExt_tmp_str { #2 }
- \seq_set_from_clist:NN \l_robExt_tmp_seq \l_robExt_tmp_str
- \seq_reverse:N \l_robExt_tmp_seq
- \cs_if_exist:cTF {l_robExt_placeholder_group_#1_seq}{}{ \seq_clear_new:c {l_robExt_placeholder_group_#1_seq}}
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_str { #2 }
+ \seq_set_from_clist:NN \l__robExt_tmp_seq \l__robExt_tmp_str
+ \seq_reverse:N \l__robExt_tmp_seq
+ \cs_if_exist:cTF {l__robExt_placeholder_group_#1_seq}{}{ \seq_clear_new:c {l__robExt_placeholder_group_#1_seq}}
% First we remove existing occurrences (useful to avoid listing the same macro more than once
% if we redefine a macro):
- \seq_map_inline:Nn \l_robExt_tmp_seq {
- \seq_remove_all:cn {l_robExt_placeholder_group_#1_seq} {##1}
- \seq_put_left:cn {l_robExt_placeholder_group_#1_seq} {##1}
+ \seq_map_inline:Nn \l__robExt_tmp_seq {
+ \seq_remove_all:cn {l__robExt_placeholder_group_#1_seq} {##1}
+ \seq_put_left:cn {l__robExt_placeholder_group_#1_seq} {##1}
}
}
\let\addPlaceholdersToGroupBefore\robExtAddPlaceholdersToGroupBefore
\NewDocumentCommand{\robExtRemovePlaceholdersFromGroup}{mm}{
% Make sure we have a string here:
- \str_set_hash_robust:Nn \l_robExt_tmp_str { #2 }
- \seq_set_from_clist:NN \l_robExt_tmp_seq \l_robExt_tmp_str
- \seq_reverse:N \l_robExt_tmp_seq
- \cs_if_exist:cTF {l_robExt_placeholder_group_#1_seq}{}{ \seq_clear_new:c {l_robExt_placeholder_group_#1_seq}}
+ \robExt_set_hash_robust:Nn \l__robExt_tmp_str { #2 }
+ \seq_set_from_clist:NN \l__robExt_tmp_seq \l__robExt_tmp_str
+ \seq_reverse:N \l__robExt_tmp_seq
+ \cs_if_exist:cTF {l__robExt_placeholder_group_#1_seq}{}{ \seq_clear_new:c {l__robExt_placeholder_group_#1_seq}}
% First we remove existing occurrences (useful to avoid listing the same macro more than once
% if we redefine a macro):
- \seq_map_inline:Nn \l_robExt_tmp_seq {
- \seq_remove_all:cn {l_robExt_placeholder_group_#1_seq} {##1}
+ \seq_map_inline:Nn \l__robExt_tmp_seq {
+ \seq_remove_all:cn {l__robExt_placeholder_group_#1_seq} {##1}
}
}
\let\removePlaceholdersFromGroup\robExtRemovePlaceholdersFromGroup
\let\removePlaceholderFromGroup\robExtRemovePlaceholdersFromGroup
\NewDocumentCommand{\robExtClearGroupPlaceholders}{m}{
- \seq_clear_new:c {l_robExt_placeholder_group_#1_seq}
+ \seq_clear_new:c {l__robExt_placeholder_group_#1_seq}
}
\let\clearGroupPlaceholders\robExtClearGroupPlaceholders
\NewDocumentCommand{\robExtCopyGroupPlaceholders}{mm}{
- \seq_set_eq:cc {l_robExt_placeholder_group_#1_seq} {l_robExt_placeholder_group_#2_seq}
+ \seq_set_eq:cc {l__robExt_placeholder_group_#1_seq} {l__robExt_placeholder_group_#2_seq}
}
\let\copyGroupPlaceholders\robExtCopyGroupPlaceholders
\NewDocumentCommand{\robExtAppendGroupPlaceholders}{mm}{
- \seq_map_inline:cn {l_robExt_placeholder_group_#2_seq} {
- \seq_remove_all:cn {l_robExt_placeholder_group_#1_seq} {##1}
- \seq_put_right:cn {l_robExt_placeholder_group_#1_seq} {##1}
+ \seq_map_inline:cn {l__robExt_placeholder_group_#2_seq} {
+ \seq_remove_all:cn {l__robExt_placeholder_group_#1_seq} {##1}
+ \seq_put_right:cn {l__robExt_placeholder_group_#1_seq} {##1}
}
}
\let\appendGroupPlaceholders\robExtAppendGroupPlaceholders
\NewDocumentCommand{\robExtAppendBeforeGroupPlaceholders}{mm}{
- \seq_eq:Nc \l_robExt_tmp_seq {l_robExt_placeholder_group_#2_seq}
- \seq_reverse:N \l_robExt_tmp_seq
- \seq_map_inline:Nn \l_robExt_tmp_seq {
- \seq_remove_all:cn {l_robExt_placeholder_group_#1_seq} {##1}
- \seq_put_left:cn {l_robExt_placeholder_group_#1_seq} {##1}
+ \seq_eq:Nc \l__robExt_tmp_seq {l__robExt_placeholder_group_#2_seq}
+ \seq_reverse:N \l__robExt_tmp_seq
+ \seq_map_inline:Nn \l__robExt_tmp_seq {
+ \seq_remove_all:cn {l__robExt_placeholder_group_#1_seq} {##1}
+ \seq_put_left:cn {l__robExt_placeholder_group_#1_seq} {##1}
}
}
\let\appendBeforeGroupPlaceholders\robExtAppendBeforeGroupPlaceholders
@@ -1053,7 +1108,7 @@ if __name__ == '__main__':
\let\importPlaceholdersFromGroup\robExtImportPlaceholdersFromGroup
\NewDocumentCommand{\robExtImportAllPlaceholders}{}{
- \seq_map_inline:Nn \l_robExt_list_groups_seq {
+ \seq_map_inline:Nn \l__robExt_list_groups_seq {
\robExtImportPlaceholdersFromGroup{##1}
}
}
@@ -1062,24 +1117,24 @@ if __name__ == '__main__':
%%%% List groups, mostly for debugging purpose
%%%%
-\seq_new:N \l_robExt_list_groups_seq % contains the list of all groups
+\seq_new:N \l__robExt_list_groups_seq % contains the list of all groups
\NewDocumentCommand{\robExtRegisterGroupPlaceholders}{m}{
- \seq_if_exist:cTF {l_robExt_placeholder_group_#1_seq}{}{
- \seq_clear_new:c {l_robExt_placeholder_group_#1_seq}
+ \seq_if_exist:cTF {l__robExt_placeholder_group_#1_seq}{}{
+ \seq_clear_new:c {l__robExt_placeholder_group_#1_seq}
}
- \seq_put_right:Nn \l_robExt_list_groups_seq {#1}
+ \seq_put_right:Nn \l__robExt_list_groups_seq {#1}
}
\let\registerGroupPlaceholders\robExtRegisterGroupPlaceholders
\let\newGroupPlaceholders\robExtRegisterGroupPlaceholders
\NewDocumentCommand{\robExtShowAllRegisteredGroupsAndPlaceholders}{s}{%
- \seq_map_inline:Nn \l_robExt_list_groups_seq {%
+ \seq_map_inline:Nn \l__robExt_list_groups_seq {%
\message{^^J- Group ##1: ^^J}%
- \seq_map_inline:cn {l_robExt_placeholder_group_##1_seq} {%
+ \seq_map_inline:cn {l__robExt_placeholder_group_##1_seq} {%
\message{, ####1 }%
\IfBooleanTF{#1}{
- \message{Content:\use:c{l_robExt_placeholder_####1_str}}
+ \message{Content:\use:c{l__robExt_placeholder_####1_str}}
}{}
}%
\message{^^J}
@@ -1089,16 +1144,16 @@ if __name__ == '__main__':
\let\showAllRegisteredGroupsAndPlaceholders\robExtShowAllRegisteredGroupsAndPlaceholders
\NewDocumentCommand{\robExtPrintAllRegisteredGroups}{s}{%
- \seq_map_inline:Nn \l_robExt_list_groups_seq {%
+ \seq_map_inline:Nn \l__robExt_list_groups_seq {%
\texttt{##1}\par
}
}
\let\printAllRegisteredGroups\robExtPrintAllRegisteredGroups
\NewDocumentCommand{\robExtPrintAllRegisteredGroupsAndPlaceholders}{s}{%
- \seq_map_inline:Nn \l_robExt_list_groups_seq {%
+ \seq_map_inline:Nn \l__robExt_list_groups_seq {%
- ~ Group \texttt{##1}:\par
- \seq_map_inline:cn {l_robExt_placeholder_group_##1_seq} {%
+ \seq_map_inline:cn {l__robExt_placeholder_group_##1_seq} {%
Placeholder \texttt{####1}%
\IfBooleanTF {#1}{\robExtPrintPlaceholderNoReplacement{####1}}{\par}
}%
@@ -1110,7 +1165,7 @@ if __name__ == '__main__':
% The star version displays the content as well
\NewDocumentCommand{\robExtPrintGroupPlaceholders}{sm}{%
Content~ of~ group~ \texttt{#2}:\par%
- \seq_map_inline:cn {l_robExt_placeholder_group_#2_seq} {%
+ \seq_map_inline:cn {l__robExt_placeholder_group_#2_seq} {%
-~Placeholder ~ \texttt{##1}\par \IfBooleanTF {#1}{\robExtPrintPlaceholderNoReplacement{##1}}{}
}%
}
@@ -1121,23 +1176,23 @@ if __name__ == '__main__':
%%%%%%%%%%% Dependencies %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\robExtResetDependencies}{m}{
- \seq_clear:N \l_robExt_dependencies
+ \seq_clear:N \l__robExt_dependencies_str
}
\NewDocumentCommand{\robExtAddDependency}{m}{
- \seq_put_left:Nx \l_robExt_dependencies {#1}
+ \seq_put_left:Nx \l__robExt_dependencies_str {#1}
}
\NewDocumentCommand{\robExtDebugDependency}{}{
- \show\l_robExt_dependencies
+ \show\l__robExt_dependencies_str
}
% Useful when compiling commands
\NewDocumentCommand{\robExtSaveDependencies}{m}{
- \seq_set_eq:cN {#1} \l_robExt_dependencies
+ \seq_gset_eq:cN {#1} \l__robExt_dependencies_str
}
\NewDocumentCommand{\robExtRestoreDependencies}{m}{
- \seq_set_eq:Nc \l_robExt_dependencies {#1}
+ \seq_set_eq:Nc \l__robExt_dependencies_str {#1}
}
@@ -1163,22 +1218,22 @@ if __name__ == '__main__':
% then do a more normal thing), third is the name of the placeholder
\cs_set:Nn \try_to_evaluate_single_placeholder_without_going_to_replace_until_impossible:NNn {
%%%%% Take care of the compilation command: might seem a bit weird and convoluted, but this is needed to get really good efficiency
- %%%%% since \replace_until_impossible:N { } is quite costly, we try to avoid it
+ %%%%% since \__robExt_replace_until_impossible: is quite costly, we try to avoid it
\cs_if_exist:NTF {#1} { % We only replace fixed state of placeholders
- \str_set_eq:Nc \l_robExt_result_str {l_robExt_placeholder_#3_str}
+ \str_set_eq:Nc \l_robExt_result_str {l__robExt_placeholder_#3_str}
\seq_map_inline:Nn {#1} {
- \robExtDebugMessage{replacing ##1 in \l_robExt_result_str}
- \str_replace_all:Nnv \l_robExt_result_str {##1} {l_robExt_placeholder_##1_str}
+ \robExtDebugMessage{replacing~##1~in~\l_robExt_result_str}
+ \str_replace_all:Nnv \l_robExt_result_str {##1} {l__robExt_placeholder_##1_str}
}
- \robExtDebugMessage{Cool, we avoided the costly replace (only try).}
+ \robExtDebugMessage{Cool,~we~avoided~the~costly~replace~(only~try).}
}{
\cs_if_exist:NTF {#2} { % We start by replacing a fixed state of placeholders
- \str_set_eq:Nc \l_robExt_result_str {l_robExt_placeholder_#3_str}
- \robExtDebugMessage{We start by replacing a fixed state of placeholders}
- %\show#2
+ \str_set_eq:Nc \l_robExt_result_str {l__robExt_placeholder_#3_str}
+ \robExtDebugMessage{We~start~by~replacing~a~fixed~state~of~placeholders}
\seq_map_inline:Nn {#2} {
- \str_if_exist:cTF {l_robExt_placeholder_##1_str} {
- \str_replace_all:Nnv \l_robExt_result_str {##1} {l_robExt_placeholder_##1_str}
+ \str_if_exist:cTF {l__robExt_placeholder_##1_str} {
+ \robExtDebugMessage{Replacing~##1~into~\use:c{l__robExt_placeholder_##1_str}}%
+ \str_replace_all:Nnv \l_robExt_result_str {##1} {l__robExt_placeholder_##1_str}
} {
\robExtDebugMessage{Warning: ~ trying~to~replace~##1~that~does~not~exist.}
}
@@ -1188,28 +1243,28 @@ if __name__ == '__main__':
\cs_if_exist:NTF {\robExtPlaceholderOnlyWithUnderscores} {
% all templates have underscores
% first check if some non-important elements are here: for this we first remove them
- \str_set_eq:NN \l_robExt_result_minus_str \l_robExt_result_str
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_OUTPUT_PREFIX__}
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_SOURCE_FILE__}
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_OUTPUT_PDF__}
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_WAY_BACK__}
- \str_remove_all:Nn \l_robExt_result_minus_str {__ROBEXT_CACHE_FOLDER__}
+ \str_set_eq:NN \l__robExt_result_minus_str \l_robExt_result_str
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_OUTPUT_PREFIX__}
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_SOURCE_FILE__}
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_OUTPUT_PDF__}
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_WAY_BACK__}
+ \str_remove_all:Nn \l__robExt_result_minus_str {__ROBEXT_CACHE_FOLDER__}
% Now, we check if some __ are left:
- \str_if_in:NnTF { \l_robExt_result_minus_str } { __ } {
+ \str_if_in:NnTF { \l__robExt_result_minus_str } { __ } {
% Some templates are left
- \robExtDebugMessage{Still some templates are left.}
- \replace_until_impossible:N { }
+ \robExtDebugMessage{Still~some~templates~are~left.}
+ \__robExt_replace_until_impossible:
} {
% No more template: the end
- \robExtDebugMessage{Cool, we avoided the costly replace.}
+ \robExtDebugMessage{Cool,~we~avoided~the~costly~replace: \l_robExt_result_str.}
}
}{
% no way to know, must do it anyway
- \robExtDebugMessage{Seems like not all templates contain underscore. Too bad, it will be slower}
- \replace_until_impossible:N { }
+ \robExtDebugMessage{Seems~like~not~all~templates~contain~underscore.~Too~bad,~it~will~be~slower}
+ \__robExt_replace_until_impossible:
}
}{
- \robExtDebugMessage{No advice on how to start: doing it the long way}
+ \robExtDebugMessage{No~advice~on~how~to~start:~doing~it~the~long~way}
\robExtGetPlaceholderInResultFromSinglePlaceholder{#3}
}
}
@@ -1236,9 +1291,9 @@ if __name__ == '__main__':
\let\firstPlaceholdersInTemplate\robExtFirstPlaceholdersInTemplate
% for use outside of expl3 (pgf)
-\def\robExtCurrentCompilationCommand{\l_robExt_currentCompilationCommand}
+\def\robExtCurrentCompilationCommand{\l__robExt_current_compilation_command_str}
\NewDocumentCommand{\robExtGetNearlyFinalValueTemplateAndCompilationCommand}{}{
- %% oututs the compilation in \l_robExt_currentCompilationCommand and the template in \l_robExt_result_str
+ %% oututs the compilation in \l__robExt_current_compilation_command_str and the template in \l_robExt_result_str
%% This is for efficiency reasons: we only allow a few placeholders:
%% In compilation command:
%%
@@ -1255,88 +1310,46 @@ if __name__ == '__main__':
%% - __ROBEXT_WAY_BACK__
%% - __ROBEXT_CACHE_FOLDER__
\ifdefined\robExtDisablePlaceholders%
- \robExtDebugMessage{You have disabled placeholders (this is likely a compiled template)}%
- \str_set_eq:NN \l_robExt_currentCompilationCommand \l_robExt_placeholder___ROBEXT_COMPILATION_COMMAND___str
- \str_set_eq:NN \l_robExt_result_str \l_robExt_placeholder___ROBEXT_TEMPLATE___str%
- \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_MAIN_CONTENT__} {l_robExt_placeholder___ROBEXT_MAIN_CONTENT___str}
- \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_LATEX_PREAMBLE__} {l_robExt_placeholder___ROBEXT_LATEX_PREAMBLE___str}
- \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_MAIN_CONTENT_ORIG__} {l_robExt_placeholder___ROBEXT_MAIN_CONTENT_ORIG___str}
+ \robExtDebugMessage{You~have~disabled~placeholders~(this~is~likely~a~compiled~template)}%
+ \str_set_eq:NN \l__robExt_current_compilation_command_str \l__robExt_placeholder___ROBEXT_COMPILATION_COMMAND___str
+ \str_set_eq:NN \l_robExt_result_str \l__robExt_placeholder___ROBEXT_TEMPLATE___str%
+ \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_MAIN_CONTENT__} {l__robExt_placeholder___ROBEXT_MAIN_CONTENT___str}
+ \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_LATEX_PREAMBLE__} {l__robExt_placeholder___ROBEXT_LATEX_PREAMBLE___str}
+ \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_MAIN_CONTENT_ORIG__} {l__robExt_placeholder___ROBEXT_MAIN_CONTENT_ORIG___str}
\else
\ifdefined\robExtEnableImportMechanism\else\robExtImportAllPlaceholders\fi%
%%%%% Take care of the compilation command: might seem a bit weird and convoluted, but this is needed to get really good efficiency
- %%%%% since \replace_until_impossible:N { } is quite costly, we try to avoid it
+ %%%%% since \__robExt_replace_until_impossible: is quite costly, we try to avoid it
\try_to_evaluate_single_placeholder_without_going_to_replace_until_impossible:NNn \robExtOnlyTryThisSequenceOnCompilationCommand \robExtFirstTryThisSequenceOnCompilationCommand {__ROBEXT_COMPILATION_COMMAND__}
- \str_set_eq:NN \l_robExt_currentCompilationCommand \l_robExt_result_str
+ \str_set_eq:NN \l__robExt_current_compilation_command_str \l_robExt_result_str
%%%%% Take care of
\try_to_evaluate_single_placeholder_without_going_to_replace_until_impossible:NNn \robExtOnlyTryThisSequenceOnTemplate \robExtFirstTryThisSequenceOnTemplate {__ROBEXT_TEMPLATE__}
\fi
}
\NewDocumentCommand{\robExtSetBackCompilationCommandAndTemplate}{}{
- \robExtPlaceholderFromString{__ROBEXT_COMPILATION_COMMAND__}{\l_robExt_currentCompilationCommand}%
+ \robExtPlaceholderFromString{__ROBEXT_COMPILATION_COMMAND__}{\l__robExt_current_compilation_command_str}%
\robExtPlaceholderFromString{__ROBEXT_TEMPLATE__}{\l_robExt_result_str}%
}
-%%% \l_robExt_final_file must contain before calling this function the content of the final file.
-%%% \l_robExt_dependencies must contain the extensions (list).
-%%% \l_robExt_currentCompilationCommand contains the compilation command to use.
-%%% Note that we do note parse them as input to allow more flexibility on the way the user
-%%% defines them, and to limit issues with expansion.
\NewDocumentCommand{\robExtWriteFile}{m}{
- %%% First we get all dependencies stored in \l_robExt_dependencies to create a csv-like file:
- \str_clear:N \l_robExt_dependencies_mdfive
+ %%% First we get all dependencies stored in \l__robExt_dependencies_str to create a csv-like file:
+ \str_clear:N \l__robExt_dependencies_mdfive_str
\robExtGetNearlyFinalValueTemplateAndCompilationCommand
- % \ifdefined\robExtDisablePlaceholders%
- % %% Compilation
-
- % \str_set_eq:NN \l_robExt_currentCompilationCommand \l_robExt_placeholder___ROBEXT_COMPILATION_COMMAND___str
- % \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_LATEX_CREATE_OUT_FILE__} {l_robExt_placeholder___ROBEXT_LATEX_CREATE_OUT_FILE___str}
-
- % \str_set_eq:NN \l_robExt_result_str \l_robExt_placeholder___ROBEXT_TEMPLATE___str%
- % \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_LATEX_CREATE_OUT_FILE__} {l_robExt_placeholder___ROBEXT_LATEX_CREATE_OUT_FILE___str}
- % \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_LATEX_WRITE_DEPTH_TO_OUT_FILE__} {l_robExt_placeholder___ROBEXT_LATEX_WRITE_DEPTH_TO_OUT_FILE___str}
- % % \show\l_robExt_placeholder___ROBEXT_MAIN_CONTENT___str
- % \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_MAIN_CONTENT__} {l_robExt_placeholder___ROBEXT_MAIN_CONTENT___str}
- % \str_replace_all:Nnv \l_robExt_result_str {__ROBEXT_MAIN_CONTENT_ORIG__} {l_robExt_placeholder___ROBEXT_MAIN_CONTENT_ORIG___str}
- % \else%
- % %% Make sure to remove these placeholders as they should not be replaced.
- % %% Not that we cannot just give them their final value here, as it cannot yet be determined without
- % %% first computing the md5 hash.
- % \ifdefined\robExtEnableImportMechanism\else\robExtImportAllPlaceholders\fi%
- % % \robExtConfigure{run ~ early ~ before ~ compilation}
- % % \robExtConfigure{show ~imported~ placeholders}% debug
- % % \robExtRemovePlaceholder{__ROBEXT_SOURCE_FILE__}
- % % \robExtRemovePlaceholder{__ROBEXT_OUTPUT_PDF__}
- % % \robExtRemovePlaceholder{__ROBEXT_OUTPUT_PREFIX__}
- % % it seems to take non negligible time let us replace them manually
- % % \robExtPlaceholderFromString{__ROBEXT_WAY_BACK__}{\robExtCacheFolderWayBack}
- % % \robExtPlaceholderFromString{__ROBEXT_CACHE_FOLDER__}{\robExtCacheFolder}
- % %%% We rescan the string in order to evaluate stuff like \myframes into "12,45,56".
- % % \robExtConfigure{run ~ before ~ compilation}
- % \robExtGetPlaceholderInResultFromSinglePlaceholder{__ROBEXT_COMPILATION_COMMAND__}
- % % \robExtConfigure{run ~ after ~ compilation}
- % % \ifdefined\robExtDoNotRescanFirstTime
- % \str_set_eq:NN \l_robExt_currentCompilationCommand \l_robExt_result_str
- % % \else
- % % \tl_set_rescan:Nnx \l_robExt_currentCompilationCommand {} { \l_robExt_result_str }
- % % \fi%
- % %% We get the template
- % % \robExtConfigure{run ~ before ~ template}
- % \robExtGetPlaceholderInResultFromSinglePlaceholder{__ROBEXT_TEMPLATE__}
- % % \robExtConfigure{run ~ after ~ template}
- % \fi%
- %\str_set_eq:NN \l_robExt_final_file_minus_hash_str \l_robExt_result_str
% We first add on the first line the compilation command, and on the second line the template file.
- \str_set:Nx \l_robExt_dependencies_mdfive {command,\l_robExt_currentCompilationCommand^^J\pdfmdfivesum{\l_robExt_result_str ^^J},^^J} %% ^^J is a newline: LaTeX will automatically add a new line when writing the file
- \seq_map_inline:Nn \l_robExt_dependencies {
- \str_put_right:Nx \l_robExt_dependencies_mdfive {\file_mdfive_hash:n{##1},##1^^J} %% ^^J is a newline
+ \str_set:Nx \l__robExt_dependencies_mdfive_str {command,\l__robExt_current_compilation_command_str^^J\robExt@pdfmdfivesum{\l_robExt_result_str ^^J},^^J} %% ^^J is a newline: LaTeX will automatically add a new line when writing the file
+ \seq_map_inline:Nn \l__robExt_dependencies_str {
+ \str_put_right:Nx \l__robExt_dependencies_mdfive_str {\file_mdfive_hash:n{##1},##1^^J} %% ^^J is a newline
}
%%
%% Compute the final hash (the hash of all dependencies, including the current picture that is on the first line):
%% The last newline is needed as the write operation automatically adds a newline.
- \tl_set:Nx \robExtFinalHash {\pdfmdfivesum{\l_robExt_dependencies_mdfive^^J}}
+ \tl_set:Nx \robExtFinalHash {\robExt@pdfmdfivesum{\l__robExt_dependencies_mdfive_str^^J}}
+ % Might be useful to clean the previously compiled files, or change the MD5 sum, for instance if we do
+ % not want to recompile when the file changes
+ \robExtUseHookJustBeforeWritingFiles%
%% We add the figure in the list of files.
- \iow_now:Nx \g_robExt_write_list_all_figures {\robExtAddPrefixName{\robExtFinalHash.tex}}
+ \iow_now:Nx \g__robExt_write_list_all_figures_iow {\robExtAddPrefixName{\robExtFinalHash.tex}}
%% We can now set the placeholders, and recompute the final value of the file:
%% I was doing before \robExtPlaceholderFromContent + \robExtEvalPlaceholderInplace, but it is too slow
\str_set:Nx \l_tmp_output_prefix_str {\robExtAddPrefixName{\robExtFinalHash}}
@@ -1346,22 +1359,21 @@ if __name__ == '__main__':
\str_replace_all:Nnx \l_robExt_result_str {__ROBEXT_OUTPUT_PDF__}{\l_tmp_output_prefix_str .pdf}
\str_replace_all:Nnx \l_robExt_result_str {__ROBEXT_WAY_BACK__}{\robExtCacheFolderWayBack}
\str_replace_all:Nnx \l_robExt_result_str {__ROBEXT_CACHE_FOLDER__}{\robExtCacheFolder}
- %\str_set_eq:NN \l_robExt_final_file_str \l_robExt_result_str
\file_if_exist:xTF{\robExtAddCachePathAndName{\robExtFinalHash.tex}}{
\message{The\space file\space \robExtAddCachePathAndName{\robExtFinalHash.tex} \space already\space exists.^^J}
}{
\str_if_eq:VnTF { \l_robExt_result_str }{__ROBEXT_TEMPLATE__} {
- \PackageError{robExt}{You ~ are ~ writing ~ __ROBEXT_TEMPLATE__ ~ to ~ your ~ file: ~ seems ~ like ~ you ~ forgot ~ to ~ define ~ your ~ template ~ or ~ set ~ a ~ preset}{}
+ \msg_error:nn{robExt}{forgot template}
}{
% Check if the output directory exists
\robExtCheckIfPrefixFolderExists
- \iow_open:Nx \g_robExt_write_iow {\robExtAddCachePathAndName{\robExtFinalHash.deps}}
- \iow_now:NV \g_robExt_write_iow \l_robExt_dependencies_mdfive
- \iow_close:N \g_robExt_write_iow
+ \iow_open:Nx \g__robExt_write_iow {\robExtAddCachePathAndName{\robExtFinalHash.deps}}
+ \iow_now:NV \g__robExt_write_iow \l__robExt_dependencies_mdfive_str
+ \iow_close:N \g__robExt_write_iow
%% Save the final file:
- \iow_open:Nx \g_robExt_write_iow {\robExtAddCachePathAndName{\robExtFinalHash.tex}}
- \iow_now:NV \g_robExt_write_iow \l_robExt_result_str
- \iow_close:N \g_robExt_write_iow
+ \iow_open:Nx \g__robExt_write_iow {\robExtAddCachePathAndName{\robExtFinalHash.tex}}
+ \iow_now:NV \g__robExt_write_iow \l_robExt_result_str
+ \iow_close:N \g__robExt_write_iow
\message{Source ~ saved ~ in ~ \robExtAddCachePathAndName{\robExtFinalHash.tex}.}
}
}
@@ -1372,38 +1384,82 @@ if __name__ == '__main__':
% Think about the number of compilations.
\NewDocumentCommand{\robExtCompileFile}{m}{
\file_if_exist:xTF{\robExtAddCachePathAndName{\robExtFinalHash.pdf}}{
+ \cs_if_exist:NTF {\robExtForceRecompilation}{
+ % We cannot do an OR with file_if_exist since it is not expandable, hence this trick
+ \let\l__robExt_do_not_compile\undefined
+ }{
+ \def\l__robExt_do_not_compile{}
+ }
+ }{
+ \let\l__robExt_do_not_compile\undefined
+ }
+ \cs_if_exist:NTF {\l__robExt_do_not_compile}{
\message{No ~ need ~ to ~ recompile ~ \robExtAddCachePathAndName{\robExtFinalHash.pdf}^^J}
}{
+ % Used to know later if we have run a compilation command at that step or not
+ \cs_undefine:N \l__robExt_I_just_ran_a_compilation_command:
% No need to re-evaluate it
% \robExtGetPlaceholderInResultFromSinglePlaceholder{__ROBEXT_COMPILATION_COMMAND__}
- \str_replace_all:Nnx \l_robExt_currentCompilationCommand {__ROBEXT_OUTPUT_PREFIX__}{\l_tmp_output_prefix_str}
- \str_replace_all:Nnx \l_robExt_currentCompilationCommand {__ROBEXT_SOURCE_FILE__}{\l_tmp_output_prefix_str .tex}
- \str_replace_all:Nnx \l_robExt_currentCompilationCommand {__ROBEXT_OUTPUT_PDF__}{\l_tmp_output_prefix_str .pdf}
- \str_replace_all:Nnx \l_robExt_currentCompilationCommand {__ROBEXT_WAY_BACK__}{\robExtCacheFolderWayBack}
- \str_replace_all:Nnx \l_robExt_currentCompilationCommand {__ROBEXT_CACHE_FOLDER__}{\robExtCacheFolder}
- % \ifdefined\robExtDoNotRescanSecondTime
- % \str_set_eq:NN \l_robExt_finalCompilationCommand \l_robExt_currentCompilationCommand
- % \else
- % \tl_set_rescan:Nnx \l_robExt_finalCompilationCommand {} { \l_robExt_currentCompilationCommand }
- % \fi%
+ \str_replace_all:Nnx \l__robExt_current_compilation_command_str {__ROBEXT_OUTPUT_PREFIX__}{\l_tmp_output_prefix_str}
+ \str_replace_all:Nnx \l__robExt_current_compilation_command_str {__ROBEXT_SOURCE_FILE__}{\l_tmp_output_prefix_str .tex}
+ \str_replace_all:Nnx \l__robExt_current_compilation_command_str {__ROBEXT_OUTPUT_PDF__}{\l_tmp_output_prefix_str .pdf}
+ \str_replace_all:Nnx \l__robExt_current_compilation_command_str {__ROBEXT_WAY_BACK__}{\robExtCacheFolderWayBack}
+ \str_replace_all:Nnx \l__robExt_current_compilation_command_str {__ROBEXT_CACHE_FOLDER__}{\robExtCacheFolder}
% Make sure this command is run from the cache folder
\ifdefined\robExtCacheFolder
- \str_put_left:Nx \l_robExt_currentCompilationCommand {cd ~ \robExtCacheFolder \space && ~ }
+ \str_put_left:Nx \l__robExt_current_compilation_command_str {cd ~ \robExtCacheFolder \space && ~ }
+ \fi%
+ %%% We enable manual mode if we enabled "compile in parallel after=N" and we compiled more than N elements
+ % Check if we want to run stuff in parallel
+ \ifdefined\robExt@compile@parallel@after
+ % TODO: ****
+ \int_gset:Nn \g__robExt_number_figures_just_compiled_or_to_compile {\g__robExt_number_figures_just_compiled_or_to_compile + 1}
+ % We check if the number of figures that we already compiled is large enough to start parallel compilation
+ \int_compare:nNnTF {
+ \g__robExt_number_figures_just_compiled_or_to_compile} > {\robExt@compile@parallel@after
+ } {
+ \def\robExtManualMode
+ } {}
\fi
\ifdefined\robExtManualMode
- \message{[robExt] Manual mode enabled: please, manually compile the images using \l_robExt_currentCompilationCommand or run 'bash \jobname-\robExtAddPrefixName{compile-missing-figures.sh}'.}
- \iow_now:Nx \g_robExt_write_manually_compile_all_missing_figures {\l_robExt_currentCompilationCommand}% a new line is automatically added
+ \message{[robExt] Manual mode enabled: please, manually compile the images using \l__robExt_current_compilation_command_str or run 'bash \jobname-\robExtAddPrefixName{compile-missing-figures.sh}'.}
+ % Avoid writing the same command multiple times (might occur in environments that execute the
+ % same command multiple times like align etc)
+ \cs_if_exist:cTF {l__robExt_missing_figure_\l__robExt_current_compilation_command_str :}{}{
+ \iow_now:Nx \g__robExt_write_manually_compile_all_missing_figures_iow {\l__robExt_current_compilation_command_str}% a new line is automatically added
+ \cs_gset:cn {l__robExt_missing_figure_\l__robExt_current_compilation_command_str :} {}
+ \ifdefined\robExt@compile@parallel@after
+ \gdef\robExt@compile@parallel@must@compile{}
+ \seq_gput_right:Nx \g__robExt_files_compiled_in_parallel {\robExtAddCachePathAndName{\robExtFinalHash}}
+ % Gets the line with the error for easier debugging
+ \cs_gset:cx {g__robExt_lines_error_\robExtAddCachePathAndName{\robExtFinalHash}:} {\msg_line_number:}
+ \cs_gset:cx {g__robExt_compilation_command_\robExtAddCachePathAndName{\robExtFinalHash}:} {\l__robExt_current_compilation_command_str}
+ \fi
+ }
\else
- \bool_if:nTF { \sys_if_shell_unrestricted_p: || \cs_if_exist_p:N {\robExtForceCompilation} }
+ \bool_if:nTF { \sys_if_shell_unrestricted_p: || \cs_if_exist_p:N \robExtForceCompilation }
{
- \message{[robExt] We ~ will ~ start ~ the ~ compilation using: ~ \l_robExt_currentCompilationCommand.}
- \sys_shell_now:x {\l_robExt_currentCompilationCommand} % The ~ are used in ExplSyntaxOn to add space
+ \message{[robExt] We ~ will ~ start ~ the ~ compilation using: ~ \l__robExt_current_compilation_command_str.}
+ \sys_shell_now:x {\l__robExt_current_compilation_command_str} % The ~ are used in ExplSyntaxOn to add space
+ %% We notify that we are running the compilation command, this way it is possible to check later
+ %% if the file is not present because of some compilation error or because we are in manual mode
+ %% or fallback
+ \cs_set:Nn \l__robExt_I_just_ran_a_compilation_command: {}
}{
\ifdefined\robExtFallbackManualMode
- \message{[robExt] Fallback to manual mode: please, manually compile the images using \l_robExt_currentCompilationCommand or run 'bash \jobname-\robExtAddPrefixName{compile-missing-figures.sh}'.}
- \iow_now:Nx \g_robExt_write_manually_compile_all_missing_figures {\l_robExt_currentCompilationCommand}% a new line is automatically added
+ % Avoid writing the same command multiple times (might occur in environments that execute the
+ % same command multiple times like align etc)
+ \cs_if_exist:cTF {l__robExt_missing_figure_\l__robExt_current_compilation_command_str :}{}{
+ \message{[robExt] Fallback to manual mode: please, manually compile the images using \l__robExt_current_compilation_command_str or run 'bash \jobname-\robExtAddPrefixName{compile-missing-figures.sh}'.}
+ \iow_now:Nx \g__robExt_write_manually_compile_all_missing_figures_iow {\l__robExt_current_compilation_command_str}% a new line is automatically added
+ \cs_gset:cn {l__robExt_missing_figure_\l__robExt_current_compilation_command_str :} {}
+ \ifdefined\robExt@compile@parallel@after
+ \gdef\robExt@compile@parallel@must@compile{}
+ \seq_gput_right:Nx \g__robExt_files_compiled_in_parallel {\robExtAddCachePathAndName{\robExtFinalHash}}
+ \fi
+ }
\else
- \PackageError{robExt}{You ~ need ~ to ~ compile ~ with ~ shell-escape ~ as ~ in: ~ "pdflatex ~ -shell-escape ~ yourfile.tex" ~ to ~ be ~ able ~ to ~ compile ~ automatically ~ the ~ figures}{}
+ \msg_error:nn{robExt}{need shell escape}
\fi
}
\fi
@@ -1457,29 +1513,28 @@ if __name__ == '__main__':
\fi%
%\robExtConfigure{run ~ after ~ include ~ command}%
}{
- \ifdefined\robExtManualMode
- \framebox[\linewidth]
- {
- \begin{minipage}{\linewidth}
- \textbf{Draft ~ mode: ~ either ~ compile ~ with ~ \texttt{-shell-escape} ~ or ~ compile:\newline \texttt{\robExtAddCachePathAndName{\robExtFinalHash.tex}}\newline via ~ \newline \texttt{\l_robExt_currentCompilationCommand}\newline or ~ call ~ \newline\texttt{bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}\newline to ~ compile ~ all ~ missing ~ figures.}
- \end{minipage}
- }
- %\fbox{\textbf{Draft ~ Mode: ~ you ~ are ~ in ~ manual ~ mode:}\par\textbf{ ~ please ~ compile ~ \robExtAddCachePathAndName{\robExtFinalHash.tex} ~ or ~ use ~ \ifdefined\robExtCacheFolder cd \robExtCacheFolder; \fi bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}}
- \message{[robExt] ~ You ~ are ~ in ~ manual ~ mode: ~ please ~ compile ~ yourself ~ \robExtAddCachePathAndName{\robExtFinalHash.tex} ~ or ~ use ~ the ~ bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}
- \else
- \ifdefined\robExtFallbackManualMode
- \framebox[\linewidth]
- {
- \begin{minipage}{\linewidth}
- \textbf{Falling ~ back ~ to ~ draft ~ mode: ~ either ~ compile ~ with ~ \texttt{-shell-escape} ~ or ~ compile:\newline \texttt{\robExtAddCachePathAndName{\robExtFinalHash.tex}}\newline via ~ \newline \texttt{\l_robExt_currentCompilationCommand}\newline or ~ call ~ \newline\texttt{bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}\newline to ~ compile ~ all ~ missing ~ figures.}
- \end{minipage}
+ % Check if we tried to run a compilation command at the previous step:
+ \cs_if_exist:NTF \l__robExt_I_just_ran_a_compilation_command: {
+ % We ran a compilation command but it failed: we print an error message
+ \msg_error:nnxxx{robExt}{missing compiled pdf parallel}{\robExtAddCachePathAndName{\robExtFinalHash}}{\msg_line_number:}{\l__robExt_current_compilation_command_str}
+ } { % We ran no compilation command: we print instead a placeholder depending on the context:
+ \cs_if_exist:NTF \robExt@compile@parallel@must@compile {
+ % we are supposed to compile the current picture in parallel, let'us check if it will be possible:
+ \bool_if:nTF { \sys_if_shell_unrestricted_p: || \cs_if_exist_p:N \robExtForceCompilation} {
+ \robExtImagePlaceholderIfParallelCompilation
+ }{
+ \robExtImagePlaceholderIfManualMode
}
- % \fbox{\textbf{Draft ~ Mode: ~ you ~ are ~ in ~ manual ~ mode:}\par\textbf{ ~ please ~ compile ~ \robExtAddCachePathAndName{\robExtFinalHash.tex} ~ or ~ use ~ \ifdefined\robExtCacheFolder cd \robExtCacheFolder; \fi bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}}
- \message{[robExt] ~ You ~ are ~ falling ~ back ~ to ~ manual ~ mode: ~ please ~ compile ~ yourself ~ \robExtAddCachePathAndName{\robExtFinalHash.tex} ~ or ~ use ~ the ~ bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}
- \else
- \PackageError{robExt}{For ~ an ~ unknown ~ reason ~ the ~ pdf ~ file ~ \robExtAddCachePathAndName{\robExtFinalHash.pdf} ~ is ~ not ~ present. ~ The ~ compilation ~ command ~ certainly ~ failed, ~ see ~ logs ~ above.}{}
- \fi
- \fi
+ }{
+ \cs_if_exist:NTF \robExtManualMode {
+ \robExtImagePlaceholderIfManualMode
+ \message{[robExt] ~ You ~ are ~ in ~ manual ~ mode: ~ please ~ compile ~ yourself ~ \robExtAddCachePathAndName{\robExtFinalHash.tex} ~ or ~ use ~ the ~ bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}
+ }{
+ \robExtImagePlaceholderIfFallbackMode
+ \message{[robExt] ~ You ~ are ~ falling ~ back ~ to ~ manual ~ mode: ~ please ~ compile ~ yourself ~ \robExtAddCachePathAndName{\robExtFinalHash.tex} ~ or ~ use ~ the ~ bash ~ \jobname-\robExtAddPrefixName{compile-missing-figures.sh}}
+ }
+ }
+ }
}%
}%
\fi%
@@ -1538,6 +1593,178 @@ if __name__ == '__main__':
\fi%
}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Automatically forward elements
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% \robExtSetCodeToRunIfMacroPresent{\hello}{some code} will execute "some code" if \hello is present in
+% the main content to build and if "auto forward" is enabled.
+\NewDocumentCommand{\robExtSetCodeToRunIfMacroPresent}{mm}{
+ % we need to remove the leading space
+ % \str_set:Nx \l__robExt_tmp_str {\cs_to_str:N #1}
+ \expandafter\def \csname l__robExt_execute_if_macro_present\string#1\endcsname {#2}%
+}
+
+% \robExtRunCodeToRunForMacroPresent{\hello} will run the code that was configured when calling
+% \robExtSetCodeToRunIfMacroPresent{\hello}{some code}
+\NewDocumentCommand{\robExtRunCodeToRunForMacroPresent}{m}{
+ % \str_set:Nx \l__robExt_tmp_str {\cs_to_str:N ##1}
+ \cs_if_exist_use:c {l__robExt_execute_if_macro_present\string#1}
+}
+
+% \autoForwardMacro{\hello}[\firstMacroDeps,\secondMacroDeps] will be used to tell to "auto forward" to forward \hello, \firstMacroDeps, and \secondMacroDeps if \hello is present in the main content to build.
+\NewDocumentCommand{\robExtConfigIfMacroPresent}{mm}{%
+ \robExtSetCodeToRunIfMacroPresent{#1}{%
+ \pgfkeysalso{#2}%
+ }%
+}
+\let\configIfMacroPresent\robExtConfigIfMacroPresent
+
+\NewDocumentCommand{\robExtAutoForwardMacro}{mO{}}{%
+ \robExtConfigIfMacroPresent{#1}{
+ forward=#1,#2
+ }%a
+}
+\let\autoForwardMacro\robExtAutoForwardMacro
+
+\NewDocumentCommand{\robExtLoadAutoForwardMacroConfig}{m}{
+ %\str_set:Nx \l__robExt_tmp_str {\cs_to_str:N #1}
+ \cs_if_exist:cTF {l__robExt_execute_if_macro_present\string#1}{
+ % if the macro is present twice, we want to run \forward only once
+ \cs_if_exist:cTF {l__robExt_execute_if_macro_present_already_forwarded\string#1 :}{}{
+ \use:c {l__robExt_execute_if_macro_present\string#1}
+ % define it so that we do not import twice next time
+ \cs_set:cx {l__robExt_execute_if_macro_present_already_forwarded\string#1 :} {}
+ }
+ }{}
+}
+
+
+
+%% Old version: too inneficient
+% \regex_const:Nn \l__robExt_macro_regex { \\[A-Za-z]+ }
+% \NewDocumentCommand{\robExtAutoForward}{}{
+% \seq_clear_new:N \l__robExt_matches_seq
+% \regex_extract_all:NVN \l__robExt_macro_regex \l__robExt_placeholder___ROBEXT_MAIN_CONTENT_ORIG___str \l__robExt_matches_seq%
+% \seq_map_inline:Nn \l__robExt_matches_seq {
+% \robExtLoadAutoForwardMacroConfig{##1}
+% }
+% }
+
+%% "auto forward"
+\NewDocumentCommand{\robExtAutoForward}{}{
+ \ifdefined\robExtUserInputCacheMe\else
+ \msg_warning:nn{robExt}{auto forward not in cachemecode}
+ \tl_set_rescan:NnV \robExtUserInputCacheMe {} \l__robExt_placeholder___ROBEXT_MAIN_CONTENT_ORIG___str
+ \fi
+ \robExt@normalBraces\robExtUserInputCacheMe
+ \expandafter\robExt@getfromstringA\robExtUserInputCacheMe\end
+}
+
+% https://tex.stackexchange.com/questions/700834/efficiently-program-search-of-macro-in-string/700844
+\def\robExt@getfromstringA#1{\ifx#1\end \else
+ %\ifcsname L:\string#1\endcsname \addto\listmacros{#1}\fi
+ \robExtLoadAutoForwardMacroConfig{#1}%
+ \expandafter\robExt@getfromstringA\fi
+}
+
+\def\robExt@normalBraces#1{{\catcode`{=12 \catcode`}=12 \everyeof={\endfile}%
+ \expandafter\robExt@normalBracesA\expandafter#1\scantokens\expandafter{#1}}}
+\def\robExt@normalBracesA#1#2\endfile{\gdef#1{#2}}
+
+%%% To automatically define and forward
+\NewDocumentCommand{\newcommandAutoForward}{moomO{}}{
+ \IfNoValueTF{#2}{
+ \IfNoValueTF{#3}{
+ \newcommand{#1}{#4}
+ }{
+ \newcommand{#1}[#3]{#4}
+ }
+ }{
+ \IfNoValueTF{#3}{
+ \newcommand{#1}[#2]{#4}
+ }{
+ \newcommand{#1}[#2][#3]{#4}
+ }
+ }
+ \robExtAutoForwardMacro{#1}[#5]
+}
+
+%%% To automatically define and forward
+\NewDocumentCommand{\renewcommandAutoForward}{moomO{}}{
+ \IfNoValueTF{#2}{
+ \IfNoValueTF{#3}{
+ \renewcommand{#1}{#4}
+ }{
+ \renewcommand{#1}[#3]{#4}
+ }
+ }{
+ \IfNoValueTF{#3}{
+ \renewcommand{#1}[#2]{#4}
+ }{
+ \renewcommand{#1}[#2][#3]{#4}
+ }
+ }
+ \robExtAutoForwardMacro{#1}[#5]
+}
+
+%%% To automatically define and forward
+\NewDocumentCommand{\providecommandAutoForward}{moomO{}}{
+ \IfNoValueTF{#2}{
+ \IfNoValueTF{#3}{
+ \providecommand{#1}{#4}
+ }{
+ \providecommand{#1}[#3]{#4}
+ }
+ }{
+ \IfNoValueTF{#3}{
+ \providecommand{#1}[#2]{#4}
+ }{
+ \providecommand{#1}[#2][#3]{#4}
+ }
+ }
+ \robExtAutoForwardMacro{#1}[#5]
+}
+
+\NewDocumentCommand{\NewDocumentCommandAutoForward}{mmO{}m}{
+ \NewDocumentCommand{#1}{#2}{#4}
+ \robExtAutoForwardMacro{#1}[#3]
+}
+
+\NewDocumentCommand{\RenewDocumentCommandAutoForward}{mmO{}m}{
+ \RenewDocumentCommand{#1}{#2}{#4}
+ \robExtAutoForwardMacro{#1}[#3]
+}
+
+\NewDocumentCommand{\ProvideDocumentCommandAutoForward}{mmO{}m}{
+ \ProvideDocumentCommand{#1}{#2}{#4}
+ \robExtAutoForwardMacro{#1}[#3]
+}
+
+\NewDocumentCommand{\DeclareDocumentCommandAutoForward}{mmO{}m}{
+ \DeclareDocumentCommand{#1}{#2}{#4}
+ \robExtAutoForwardMacro{#1}[#3]
+}
+
+\NewDocumentCommand{\defAutoForward}{mO{}mO{}}{
+ \def#1#2{#3}
+ \robExtAutoForwardMacro{#1}[#4]
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Automatically forward (regex-based)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% called by style "if matches".
+% \robExtRegexMatches{my regex}{my style} will apply "my style" if "__ROBEXT_MAIN_CONTENT_ORIG__" matches
+% "my regex".
+\NewDocumentCommand{\robExtIfMatchesRegex}{mm}{
+ \regex_match:nVTF {#1} \l__robExt_placeholder___ROBEXT_MAIN_CONTENT_ORIG___str {\pgfkeysalso{#2}} {}
+}
+
+\NewDocumentCommand{\robExtIfMatchesString}{mm}{
+ \str_if_in:NnTF \l__robExt_placeholder___ROBEXT_MAIN_CONTENT_ORIG___str {#1} {\pgfkeysalso{#2}} {}
+}
\ExplSyntaxOff
@@ -1545,10 +1772,10 @@ if __name__ == '__main__':
%%% Interface
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% We create interface into pgfkeys in order to allow easier creation of content via style
-\pgfkeys{
- /robExt/.cd,
+\pgfkeys{%
+ /robExt/.cd,%
% We create a default style that will be loaded (mostly for the user)
- default style/.style={},
+ default style/.style={},%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Code to create new styles %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1576,7 +1803,7 @@ if __name__ == '__main__':
% \robExtShowPlaceholder*{__ROBEXT_TMP__}
\robExtEvalPlaceholderReplaceFromList{__ROBEXT_TMP__}{%
\pgfkeys{%
- /robExt/.cd,
+ /robExt/.cd,%
#1/.style={__ROBEXT_TMP__},%
}%
}%
@@ -1629,8 +1856,8 @@ if __name__ == '__main__':
\robExtKeepPlaceholderAfterGroup{__ROBEXT_COMPILED_#1_INCLUDE_COMMAND__}%
\robExtRescanPlaceholderInVariableNoReplacement{robExtCompiledIncludeCommand#1}{__ROBEXT_INCLUDE_COMMAND__}%
\robExtKeepaftergroup{robExtCompiledIncludeCommand#1}%
- \robExtKeepaftergroup{l_robExt_placeholder___ROBEXT_COMPILED_#1_INCLUDE_COMMAND___str}%
- \robExtKeepaftergroup{l_robExt_placeholder___ROBEXT_COMPILED_#1_TEMPLATE___str}%
+ \robExtKeepaftergroup{l__robExt_placeholder___ROBEXT_COMPILED_#1_INCLUDE_COMMAND___str}%
+ \robExtKeepaftergroup{l__robExt_placeholder___ROBEXT_COMPILED_#1_TEMPLATE___str}%
\robExtSaveDependencies{robExtCompiledDependencies#1}%
\endgroup%
},
@@ -1810,6 +2037,10 @@ if __name__ == '__main__':
% allow commands like mkdir/cd/pdflatex to run in restricted mode.
force compilation/.code={\def\robExtForceCompilation{}},
do not force compilation/.code={\let\robExtForceCompilation\undefined},
+ % Recompile the file even if it has already been compiled (we do NOT clean the file as we do not feel
+ % safe to remove files from this code, but this can also be done by the user hooking into
+ recompile/.code={\def\robExtForceRecompilation{}},
+ do not recompile/.code={\let\robExtForceRecompilation\undefined},
set compilation command/.code={\robExtSetCompilationCommand{#1}},
add argument to compilation command/.code={\robExtAddArgumentToCompilationCommand{#1}},
add arguments to compilation command/.style={
@@ -1872,15 +2103,90 @@ if __name__ == '__main__':
%% Note: this does not work reliably for now
%% TODO: fix this!
disable externalization/.code={\def\robExtDisableExternalization{}},
+ de/.style={disable externalization},
disable externalization now/.code={\robExtDisableTikzpictureOverwrite\def\robExtDisableExternalization{}},
enable externalization/.code={\let\robExtDisableExternalization\undefined},
% Useful to wrap, for instance, text
+ command if no externalization/.code={},
command if no externalization/.code={\robExtDisableTikzpictureOverwrite\evalPlaceholder{__ROBEXT_MAIN_CONTENT__}},
print verbatim if no externalization/.style={
command if no externalization/.code={%
\robExtPrintPlaceholder{__ROBEXT_MAIN_CONTENT__}%
},
},
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %%% Forward macros if externalization is enabled %%%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ command if externalization/.code={},
+ fw/.style={forward=#1},
+ forward/.style={%
+ command if externalization/.append code={%
+ \robExtGetCommandDefinitionInMacro{#1}%
+ \expanded{%
+ \noexpand\robExtAddBeforePlaceholder*{__ROBEXT_MAIN_CONTENT__}{%
+ \expandonce{\robExtDefinitionCommand}%
+ }%
+ }%
+ },
+ },
+ forward at letter/.style={%
+ command if externalization/.append code={%
+ \robExtGetCommandDefinitionInMacro{#1}%
+ \expanded{%
+ \noexpand\robExtAddBeforePlaceholder*{__ROBEXT_MAIN_CONTENT__}{%
+ \noexpand\makeatletter%
+ \expandonce{\robExtDefinitionCommand}%
+ \noexpand\makeatother%
+ }%
+ }%
+ },
+ },
+ forward eval/.style={%
+ command if externalization/.append code={%
+ \expanded{%
+ \noexpand\robExtAddBeforePlaceholder*{__ROBEXT_MAIN_CONTENT__}{%
+ \noexpand\def\noexpand#1{#1}%
+ }%
+ }%
+ },%
+ },
+ forward counter/.style={%
+ command if externalization/.append code={%
+ \expanded{%
+ \noexpand\robExtAddBeforePlaceholder*{__ROBEXT_MAIN_CONTENT__}{%
+ \noexpand\makeatletter%
+ % Make sure the counter exists:
+ \noexpand\ifcsname c@#1\noexpand\endcsname\noexpand\else\noexpand\newcounter{#1}\noexpand\fi%
+ \noexpand\setcounter{#1}{\the\value{#1}}%
+ \noexpand\makeatother
+ }%
+ }%
+ },%
+ },%
+ forward color/.style={
+ command if externalization/.append code={%
+ \extractcolorspecs{#1}{\zx@tmp@model}{\zx@tmp@cmd}%
+ \expanded{%
+ \noexpand\robExtAddBeforePlaceholder*{__ROBEXT_MAIN_CONTENT__}{%
+ \noexpand\definecolor{#1}{\zx@tmp@model}{\zx@tmp@cmd}%
+ }%
+ }%
+ },%
+ },%
+ %% This will try to automatically forward some macros. For this, you must first define
+ %%
+ auto forward/.code={\robExtAutoForward},
+ auto forward color/.style 2 args={%
+ add to preset={#1}{
+ % if matches={\b #2\b}{forward color=#2},
+ % the Regex is maybe more precise (avoid unnecessary forwards) but is way faster
+ if matches={#2}{forward color=#2},
+ },
+ },
+ load auto forward macro config/.code={\robExtLoadAutoForwardMacroConfig{#1}},
+ %% This will
+ if matches regex/.code 2 args={\robExtIfMatchesRegex{#1}{#2}},
+ if matches/.code 2 args={\robExtIfMatchesString{#1}{#2}},
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Run code before/after inclusion %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1901,17 +2207,93 @@ if __name__ == '__main__':
\expandafter\xdef\csname #1InCache\endcsname{\robExtAddCachePathAndName{\robExtFinalHash}}%
}%
},
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %%% Compile in parallel automatically
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ compile in parallel/.style={compile in parallel after=#1},
+ compile in parallel/.default=0,
+ compile in parallel after/.code={%
+ \gdef\robExt@compile@parallel@after{#1}%
+ },
+ compile in parallel after/.default=0,
+ compile in parallel command/.store in=\robExt@compile@parallel@command,
+ % Different backends to compile in parallel
+ compile in parallel with gnu parallel/.style={
+ compile in parallel command={parallel --jobs #1 :::: '\jobname-\robExtAddPrefixName{compile-missing-figures.sh}'},
+ },
+ compile in parallel with gnu parallel/.default={200\%},
+ compile in parallel with xargs/.style={
+ compile in parallel command={xargs -t -a '\jobname-\robExtAddPrefixName{compile-missing-figures.sh}' -I "{}" -P #1 \robExtParallelShell\space '{}'},
+ },
+ compile in parallel with xargs/.default={16},
+ % By default, we compile with xargs and 16 processes:
+ compile in parallel with xargs,
+ compile in parallel with rush/.style={
+ compile in parallel command={rush -i "\jobname-\robExtAddPrefixName{compile-missing-figures.sh}" #1 "\robExtParallelShell\space '{}'"},
+ },
+ compile in parallel with rush/.default={},
}
+\ExplSyntaxOn
+\int_new:N \g__robExt_number_figures_just_compiled_or_to_compile
+\int_set:Nn \g__robExt_number_figures_just_compiled_or_to_compile {0}
+% Will hold the list of input files to compile in parallel. This is needed to
+% check at the end to find the processes that failed to build.
+\seq_new:N \g__robExt_files_compiled_in_parallel
+
+\AfterLastShipout{
+ % Check if we want to run stuff in parallel
+ \ifdefined\robExt@compile@parallel@after
+ % Check if we must compile
+ \ifdefined\robExt@compile@parallel@must@compile
+ % Check if we can compile
+ \bool_if:nTF { \sys_if_shell_unrestricted_p: || \cs_if_exist_p:N \robExtForceCompilation}
+ {
+ % Check if a command was provided
+ \ifdefined\robExtParallelShell\else
+ \sys_if_platform_windows:TF {
+ \def\robExtParallelShell{cmd~/C}
+ }{
+ \def\robExtParallelShell{sh~-c}
+ }
+ \fi
+ % We close the file or reading it is empty
+ \iow_close:N \g__robExt_write_manually_compile_all_missing_figures_iow
+ \msg_warning:nnx{robExt}{rerun because parallel}{\robExt@compile@parallel@command}
+ \message{\robExt@compile@parallel@command}
+ \sys_shell_now:x {\robExt@compile@parallel@command}
+ % We check if some files failed to compile
+ \seq_map_inline:Nn \g__robExt_files_compiled_in_parallel {
+ \message{#1}
+ \file_if_exist:xTF{#1.pdf}{}{
+ \msg_error:nnxxx{robExt}{missing compiled pdf parallel}{#1}{\use:c {g__robExt_lines_error_#1:}}{\use:c {g__robExt_compilation_command_#1:}}
+ }
+ }
+ } {
+ \ifdefined\robExtFallbackManualMode
+ \msg_warning:nn{robExt}{enabled parallel no shell escape}
+ \else
+ \msg_error:nn{robExt}{need shell escape parallel}
+ \fi
+ }
+ \fi
+ \fi
+}
+\ExplSyntaxOff
+
% Not really made for the end user
% It assumes that __ROBEXT_COMPILATION_COMMAND__ and __ROBEXT_TEMPLATE__ is set
\NewDocumentCommand{\robExtEvaluateCompileAndInclude}{}{%
\ifdefined\robExtDisableExternalization%
- \pgfkeys{
+ \pgfkeys{%
/robExt/.cd,
command if no externalization,
}%
\else%
+ \pgfkeys{%
+ /robExt/.cd,
+ command if externalization,
+ }%
\ifdefined\robExtExecuteBefore\robExtExecuteBefore\fi%
\robExtWriteFile{}%
\robExtCompileFile{}%
@@ -1926,10 +2308,12 @@ if __name__ == '__main__':
%% #1: Arguments, #2: content to externalize
\NewDocumentCommand{\robExtCacheMe}{O{}m}{%
{% Group
+ %% We store the input in a non-string element for efficiently implementing "auto forward"
+ \def\robExtUserInputCacheMe{#2}
\pgfkeys{%
- /robExt/.cd,
- set placeholder={__ROBEXT_MAIN_CONTENT_ORIG__}{#2},
- default style,
+ /robExt/.cd,%
+ set placeholder={__ROBEXT_MAIN_CONTENT_ORIG__}{#2},%
+ default style,%
#1,
}%
\robExtEvaluateCompileAndInclude%
@@ -1949,8 +2333,8 @@ if __name__ == '__main__':
}{%
\endRobExtPlaceholderFromCode%
\pgfkeys{%
- /robExt/.cd,
- #1,
+ /robExt/.cd,%
+ #1,%
}%
\robExtEvaluateCompileAndInclude%
}
@@ -1964,6 +2348,102 @@ if __name__ == '__main__':
\let\endCacheMeNoContent\endRobExtCacheMeNoContent
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%% Forward a macro %%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% In this section, we provide commands to forward a macro, like
+%% \def\myMacro{stuff}
+%% \cacheMe<forward=\myMacro>
+%% Note that this will only be forwarded if externalization is enabled (otherwise the macro already exists)
+%% I published this code in this answer, thanks to egreg for some pointers
+%% https://tex.stackexchange.com/questions/697120/how-to-extract-the-definition-of-a-macro-to-write-in-a-file-for-instance
+\ExplSyntaxOn
+
+\cs_new:Nn \__robExt_getCommandDefinitionFromXparse:N
+{
+ \str_clear_new:N \l__robExt_definition_str
+ \GetDocumentCommandArgSpec { #1 }
+ \str_set:Nx \l__robExt_definition_str {
+ \c_backslash_str DeclareDocumentCommand
+ \c_left_brace_str
+ \c_backslash_str \cs_to_str:N #1
+ \c_right_brace_str
+ \c_left_brace_str \ArgumentSpecification \c_right_brace_str
+ \c_left_brace_str
+ \cs_replacement_spec:c { \cs_to_str:N #1 ~ code }
+ \c_right_brace_str
+ }%
+}
+
+\cs_new:Nn \__robExt_getCommandDefinitionFromDef:N
+{
+ \str_clear_new:N \l__robExt_definition_str
+ \str_set:Nx \l__robExt_definition_str {
+ \c_backslash_str def \c_backslash_str \cs_to_str:N #1
+ \cs_argument_spec:c { \cs_to_str:N #1 }
+ \c_left_brace_str
+ \cs_replacement_spec:c { \cs_to_str:N #1 }
+ \c_right_brace_str
+ }%
+}
+
+\def\robExt@extractDefaultNewcommand#1#2#3#4{
+ #4%
+}%
+
+\cs_new:Nn \__robExt_getCommandDefinitionFromNewcommand:N
+{
+ \str_clear_new:N \l__robExt_definition_str
+ \str_clear_new:N \l__robExt_tmp
+ %% \l__robExt_tmp_str will look like [#1]#2#3#4#5#6#7:
+ \str_set:Nx \l__robExt_tmp_str {\cs_argument_spec:c { \c_backslash_str \cs_to_str:N #1 }}%
+ %% We remove the brackets:
+ \str_replace_all:Nnn \l__robExt_tmp_str {[} {}
+ \str_replace_all:Nnn \l__robExt_tmp_str {]} {}
+ \str_set:Nx \l__robExt_definition_str {
+ %% Make sure the command does not exist
+ \c_backslash_str providecommand \c_backslash_str \cs_to_str:N #1 \c_left_brace_str \c_right_brace_str
+ %% this line will be like "\newdocumentcommand{\mymacro}"
+ \c_backslash_str renewcommand \c_left_brace_str \c_backslash_str \cs_to_str:N #1 \c_right_brace_str
+ %% It must have at least one argument, since elements without optional arguments are turned into \def
+ %% Moreover, macros can't have more than 1 argument, so it will be easier to parse, we just need the last digit
+ [\str_range:Nnn \l__robExt_tmp_str {-1} {-1}] %% <- this is the number of mandatory arguments
+ [\expandafter \robExt@extractDefaultNewcommand #1 ] %% <- this is the value of the default argument
+ \c_left_brace_str
+ \cs_replacement_spec:c { \c_backslash_str \cs_to_str:N #1 }
+ \c_right_brace_str
+ }%
+}
+
+% \robExtGetCommandDefinitionInMacro{\myMacro} will populate
+% \l__robExt_definition_str and \robExtDefinitionCommand
+% with a string to execute to write it properly.
+\NewDocumentCommand{\robExtGetCommandDefinitionInMacro}{m}{
+ \cs_if_exist:NTF #1 {
+ \cs_if_exist:cTF {\cs_to_str:N #1 ~ code}{
+ % xparse-based definition
+ \__robExt_getCommandDefinitionFromXparse:N #1%
+ } {
+ \cs_if_exist:cTF {\c_backslash_str \cs_to_str:N #1}{
+ % \newcommand-based definition
+ \__robExt_getCommandDefinitionFromNewcommand:N #1
+ }{
+ % \def-based definition
+ \__robExt_getCommandDefinitionFromDef:N #1
+ }
+ }
+ }{
+ \msg_error:nn{robExt}{The~macro~#1~does~not~exist}
+ }
+ \let\robExtDefinitionCommand\l__robExt_definition_str
+}
+
+\NewDocumentCommand{\robExtGetCommandDefinition}{m}{%
+ \robExtGetCommandDefinitionInMacro{#1}%
+ \l__robExt_definition_str%
+}
+\ExplSyntaxOff
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Default presets %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2237,6 +2717,9 @@ finished_with_no_error()
force python3/.style={
set placeholder={__ROBEXT_PYTHON_EXEC__}{python3}
},
+ add import/.style={
+ add to placeholder no space={__ROBEXT_PYTHON_IMPORT__}{##1^^J},
+ },
}
}
@@ -2480,7 +2963,7 @@ touch "${outputPdf}"
}
\NewDocumentCommand{\robExtExternalizeAllTikzpictures}{O{tikz}O{tikzpicture}O{<>}}{%
- \robExtCacheEnvironment[#3]{#2}{tikzpicture}%
+ \robExtCacheEnvironment[#3]{tikzpicture}{#2}%
% Tikz has a more complicated parsing system
\DeclareCommandCopy{\robExtCommandOrigtikz}{\tikz}% we save the function for later reset
\robExtAddToCommandResetList{tikz}% we add it to the list of functions to reset
@@ -2494,22 +2977,6 @@ touch "${outputPdf}"
}
\let\cacheTikz\robExtExternalizeAllTikzpictures
-% \NewDocumentCommand{\robExtExternalizeAllTikzpictures}{O{<>}O{tikz}O{tikzpicture}}{%
-% \robExtCacheEnvironment[#1]{#3}{tikzpicture}%
-% % \robExtCacheCommand[#1]{tikz}[O{}m]{tikz}
-% % Tikz has a more complicated parsing system
-% \DeclareCommandCopy{\robExtCommandOrigtikz}{\tikz}% we save the function for later reset
-% \robExtAddToCommandResetList{tikz}% we add it to the list of functions to reset
-% \DeclareDocumentCommand{\tikz}{D#1{}}{%
-% \def\robExtCommandOrigName{tikz}% we specify the name of the current environment
-% \edef\robExt@tmp@args{\detokenize{##1}}% we specify the name of the current environment
-% \edef\robExt@tmp@orig@args{\detokenize{#2}}% we specify the name of the current environment
-% % we start the parsing
-% \robExt@tikz%
-% }%
-% }
-% \let\cacheTikz\robExtExternalizeAllTikzpictures
-
%% The cached version
\DeclareDocumentEnvironment{tikzpictureC}{D<>{}O{}O{}}{%
\begin{CacheMe}{tikzpicture,#1}[#2]%
@@ -2529,7 +2996,7 @@ touch "${outputPdf}"
\def\robExtEnvironmentOrigName{#2}%
\CacheMe{%
#3,%
- set placeholder no import={__ROBEXT_MAIN_CONTENT__}{\begin{#2}__ROBEXT_MAIN_CONTENT_ORIG__\end{#2}},
+ set placeholder no import={__ROBEXT_MAIN_CONTENT__}{\begin{#2}__ROBEXT_MAIN_CONTENT_ORIG__\end{#2}},%
##1%
}%
}{\endCacheMe}%
diff --git a/macros/latex/contrib/robust-externalize/robust-externalize.tex b/macros/latex/contrib/robust-externalize/robust-externalize.tex
index 0a8f57bef9..f02f525626 100644
--- a/macros/latex/contrib/robust-externalize/robust-externalize.tex
+++ b/macros/latex/contrib/robust-externalize/robust-externalize.tex
@@ -91,10 +91,10 @@
\color{gray}\Huge\ttfamily \char`\{\raisebox{.09em}{\textcolor{red!75!black}{robust\raisebox{-0.1em}{-}externalize}}\char`\}};
\vspace{0.5em}
- {\Large\bfseries Cache anything (\tikzname, python…),\\in a robust, efficient and pure way.}
+ {\Large\bfseries Cache anything (\tikzname, tikz-cd, python…),\\in a robust, efficient and pure way.}
\vspace{1em}
- {Léo Colisson \quad Version 2.0}\\[3mm]
+ {Léo Colisson \quad Version 2.1}\\[3mm]
{\href{https://github.com/leo-colisson/robust-externalize}{\texttt{github.com/leo-colisson/robust-externalize}}}
\end{center}
@@ -104,7 +104,7 @@
\textbf{WARNING: This library is young and might lack some testing (and is an important rewrite of a previous version), but v2.0 is definitely usable. Even if we try to stay backward compatible, the only guaranteed way to be immune to changes is to copy/paste the library in your main project folder. Please report any bug to \url{https://github.com/leo-colisson/robust-externalize}!}
-\textbf{WARNING 2: the coming version 2.0 improves significantly the compilation time compared with 1.0 that was surprisingly slow. Now, it is fairly well optimized (but the code needs a bit of cleaning and documentation before doing an official release)}
+\textbf{WARNING 2: the coming version 2.1 improves significantly the compilation time compared with 2.0 that was surprisingly slow. Now, it is fairly well optimized (but the code needs a bit of cleaning and documentation before doing an official release)}
\section{A taste of this library}
@@ -177,7 +177,14 @@ And one not cached: %
]
]
\end{forest}
-\end{codeAndResult}
+\end{codeAndResult}
+People interested by |tikz-cd| might like this example:
+\begin{codeAndResult}
+\cacheEnvironment{tikzcd}{tikz, add to preamble={\usepackage{tikz-cd}}}
+\begin{tikzcd}
+ A \rar & B
+\end{tikzcd}
+\end{codeAndResult}
\item For commands:
\begin{codeAndResult}
% We cache the command \zx
@@ -286,16 +293,51 @@ You can also include files from the root folder, if you want, recompile all pict
\end{CacheMe}
\end{codeexample}
+Since v2.1, we also provide easy ways to export counters:
+\begin{codeexample}[width=0pt]
+\begin{tikzpictureC}<forward counter=page>
+ \node[rounded corners, fill=red]{The current page is \thepage.};
+\end{tikzpictureC}
+\end{codeexample}
+or even macros (we can also export evaluated macros):
+\begin{codeexample}[width=0pt]
+\cacheTikz
+\newcommand{\MyNodeWithNewCommand}[2][draw,thick]{\node[rounded corners,fill=red,#1]{#2};}
+\begin{tikzpicture}<forward=\MyNodeWithNewCommand>
+ \MyNodeWithNewCommand{Alice}
+ \MyNodeWithNewCommand[xshift=2cm]{Bob}
+\end{tikzpicture}
+\end{codeexample}
+
+Since manually forwarding elements can be quite verbose, it is also possible to automatically apply some styles depending on the content of the element to cache. For instance, we provide a way to automatically forward some macros:
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{add to preset={tikz}{auto forward}}
+
+\newcommandAutoForward{\MyNode}[2][draw,thick]{\node[rounded corners,fill=red,#1]{#2};}
+\newcommandAutoForward{\MyGreenNode}[2][draw,thick]{\node[rounded corners,fill=green,#1]{#2};}
-We also provide many other things, among others:
+\begin{tikzpicture}
+ \MyNode{Recompiled only if MyNode is changed}
+ \MyNode[xshift=8cm]{but not if the (unused) MyGreenNode is changed.}
+\end{tikzpicture}\\
+
+\begin{tikzpicture}
+ \MyGreenNode{Recompiled only if MyGreenNode is changed}
+ \MyGreenNode[xshift=8cm]{but not if the (unused) MyNode is changed.}
+\end{tikzpicture}
+\end{codeexample}
+
+We also provide a number of other functionalities, among others:
\begin{itemize}
\item To achieve a pleasant and configurable interface (e.g. pass options to a preset with default values), we introduced placeholders, that can be of independent interest.
-\item A way to compile a template via:\\
+\item To get maximum purity while minimizing the number of rebuild, we provide functions to forward macros defined in the parent document, and the set of macros that must be forwarded can be automatically detected for each element to cache. It is also possible to conditionally import a library if the element contains a given macro.
+\item We provide a way to compile a template via:\\
|new compiled preset={compiled ZX}{templateZX, compile latex template}{}|\\
in order to make the compilation even faster (but you cannot use presets except |add to preamble|)
-\item A highly configurable template, compilation and inclusion system, to cache basically anything
-\item A way to compile all images in parallel during the first run, so that the first run becomes faster to compile than a normal run
-\item Commands to automatically clean the cache while keeping pictures in use
+\item We give a highly configurable template, compilation and inclusion system, to cache basically anything
+\item We show how to compile all images in parallel using |\robExtConfigure{compile in parallel}| or |\robExtConfigure{compile in parallel after=5}| (make sure to have xargs installed, which is available by default on linux but must be installed on Windows via by installing the lightweight GNU On Windows (Gow) \url{https://github.com/bmatzelle/gow} if you use the default command) even during the first run, so that the first run becomes faster to compile than a normal run(!)
+\item We furnish commands to automatically clean the cache while keeping cached elements that are still needed.
\item And more\dots
\end{itemize}
@@ -367,30 +409,21 @@ We completely rewrote the \href{https://github.com/leo-colisson/robust-externali
\item with externalization, old library (next runs): 4.16s (so 21x faster)
\end{itemize}
-\paragraph{Can I compile pictures in parallel to speed up the first run?} If you are worried by the time taken for the first run, you can also run it in manual mode and use for instance GNU |parallel| (or any tool of you choice) to run all commands in the file |\jobname-robExt-compile-missing-figures.sh| in parallel. To do that:
-\begin{itemize}
-\item First add |\robExtConfigure{enable manual mode}| in your file
-\item Create the cache folder, e.g.\ using |mkdir robustExternalize|
-\item Compile your file, with, e.g.\ |pdflatex yourfile.tex| (in my benchmark: 4.2s)
-\item This should create a file |yourfile-robExt-compile-missing-figures.sh|, with each line containing a compilation command like this (the command should be compatible with Windows, Mac and Linux, if not, let me know on github):
-\begin{verbatim}
-cd robustExternalize/ && pdflatex -halt-on-error "robExt-4A806941E86C6B657A0CB3D160CFFF3E.tex
-\end{verbatim}
- \textbf{IMPORTANT}: \LaTeX{} might render \textbf{multiple times} the same picture if it is inside some particular environments (align, tables\dots), so this file can contain duplicates if you inserted cached data inside. To avoid running the same command twice, \textbf{be sure to remove duplicates!} On Linux, this can be done by piping the file into |sort| and |uniq| (if your files can depend on previously compiled elements as explained in \cref{sec:passOutputToOtherTemplate}, you should additionally preserve \mylink{https://unix.stackexchange.com/questions/194780/remove-duplicate-lines-while-keeping-the-order-of-the-lines}{the order of the lines}). Since this is anyway a rather advanced use case, we will not consider that case for simplicity.
-\item Run all these command in parallel, for instance on Linux you can install |parallel|, and run the following command (|--bar| displays a progress bar):
-\begin{verbatim}
-cat yourfile-robExt-compile-missing-figures.sh | sort | uniq | parallel --bar --jobs '200%'
-\end{verbatim}
-(in my benchmark, it ran during 52s, so 1.6x faster than the original compilation)
-\item Recompile the original document with |pdflatex yourfile.tex|
-\end{itemize}
-In my benchmark, the total time is 2x4.2s + 52s = 60s, so 1.5 times faster than a normal command (of course, this depends a lot on the preamble of the file that you compile, since the loading time of the file is the main bottleneck for the first compilation; the advantage here is that it is easy to include only the necessary things in the preamble of cached pictures, possibly creating different presets if it is easier to manage it this way).
+\paragraph{Can I compile pictures in parallel to speed up notably the first run?}
+
+The first run might be particularly long to compile since many elements are still not cached and re-starting \LaTeX{} on each picture can take quite some time. If you have v2.1 or above, and if you have xargs installed (installed by default on most linux, on Windows you need to install the lightweight GNU On Windows (Gow) \url{https://github.com/bmatzelle/gow}), you can simply compile all images in parallel by typing at the beginning of the file:
+\begin{codeexample}[code only]
+\robExtConfigure{
+ compile in parallel
+}
+\end{codeexample}
+In my benchmark, I observed a compilation 1.5x faster than a normal compilation without any caching involved. We provide more options in \cref{sec:compileParallel}.
\paragraph{Can I use version-control to keep the cached files in my repository?} Sure, each cached figure is stored in a few files (typically one pdf and one \LaTeX{} file, plus the source) having the same prefix (the hash), avoiding collision between runs. Just commit these files and you are good to go.
\paragraph{Can I deal with baseline position and overlays ?} Yes, the depth of the box is automatically computed and used to include the figure by default, and additional margin is added to the image (30cm by default) to allow overlay text.
-\paragraph{How is purity enforced?} Purity is the property that if you remove the cached files and recompile your document, you should end-up with the same output. To enforce purity, we compute the hash of the final program, including the compilation command and the dependency files used for instance in |\input{include.tex}| (unless you prefer not to, for instance to keep parts of the process impure for efficiency reasons), and put the code in a file named based on this hash. Then we compile it if it has not been used before, and include the output. Changing a single character in the file, the tracked dependencies, or the compilation command will lead to a new hash, and therefore to a new generated picture.
+\paragraph{How is purity enforced?} Purity is the property that if you remove the cached files and recompile your document, you should end-up with the same output. To enforce purity, we compute the hash of the final program, including the compilation command, the dependency files used for instance in |\input{include.tex}| (unless you prefer not to, for instance to keep parts of the process impure for efficiency reasons), the forwarded macros, and put the code in a file named based on this hash. Then we compile it if it has not been used before, and include the output. Changing a single character in the file, the tracked dependencies, or the compilation command will lead to a new hash, and therefore to a new generated picture.
\paragraph{What if I don't want purity for all files?} If you do not want your files to be recompiled if you modify a given file, then just do not add this file to the list of dependencies.
@@ -400,21 +433,25 @@ In my benchmark, the total time is 2x4.2s + 52s = 60s, so 1.5 times faster than
Pros of \url{https://github.com/sasozivanovic/memoize}:
\begin{itemize}
-\item The above library is likely to be quicker on the first run since it packs everything in a single file (so you save the time to run latex for each picture). On the other hand, we can load in the preamble exactly what is needed for the picture (we do not load all the preamble of the main file), so our startup time is not huge (it adds 1s per picture in my tests when using the |zx-calculus| library), and you can still either run it in parallel to save time (as far as I know this is not possible with |memoize|), or commit the cached file to help with recompiling the document elsewhere.
-\item It seems to be easier to setup as they do not need to specify the preamble of the file to compile (the preamble of the main file is used), and tikz pictures are automatically memoized (we provide |\cacheTikz| for that, but you still need to specify the preamble once).
-\item Even if it does not officially support contexts, context might be automatically transmitted (while we need to explicitly pass the context). However, this can break purity (see below).
+\item The above library might be easier to setup as they do not need to specify the preamble of the file to compile (the preamble of the main file is used), and tikz pictures are automatically memoized (we provide |\cacheTikz| for that, but you still need to specify the preamble once).
+\item This library allows to compile multiple pictures while loading \LaTeX{} only once, saving the time to start \LaTeX{} for each picture. However, it is not clear that it brings a faster compilation time compared to our library for multiple reasons:
+ \begin{itemize}
+ \item While during the first run all pictures are compiled with a single \LaTeX{} instance\footnote{We could also do something similar using some scripting to merge multiple cached files together, but this is not yet implemented.} (and inserted at the beginning of the document), they still need to extract each picture in a separate pdf file to include it at the right place in the document. This is done by default using |pdflatex|, which means that you need to call |pdflatex| once per picture, mitigating the advantage of compiling all pictures at once. Note that they also provide a python script to separate the pictures more efficiently, but this needs further manual interventions.
+ \item We provide an option |compile in parallel| to compile all images in parallel, and the time is in my benchmark 1.5x faster than a normal compilation without any caching. Using this option, we should therefore compile faster than |memoized| that is not able to run jobs in parallel.
+ \end{itemize}
+\item Even if it does not officially support contexts, context might be automatically transmitted (while we need to do a bit of work to manually or semi-automatically define the context needed to compile a picture). However, this can break purity (see below).
\end{itemize}
Cons of \url{https://github.com/sasozivanovic/memoize}:
\begin{itemize}
-\item The purity is not enforced so strongly since all images are in the same file. Notably, the hash only depends on the picture, but not on its context. So for instance if you define |\def\mycolor{blue}| before the picture, and use |\mycolor| inside the picture, if you change later the color to, say, |\def\mycolor{red}|, the picture will not be recompiled (so cleaning the cache and recompiling would produce a different result). In our case, the purity is always strictly enforced (unless you choose not to) since the context must be explicitly passed to the compiled file.
+\item The purity is not enforced so strongly since all images are in the same file. Notably, the hash only depends on the picture, but not on its context. So for instance if you define |\def\mycolor{blue}| before the picture, and use |\mycolor| inside the picture, if you change later the color to, say, |\def\mycolor{red}|, the picture will not be recompiled (so cleaning the cache and recompiling would produce a different result). In our case, the purity is always strictly enforced (unless you choose not to) since the context must be passed (explicitly or semi-automatically) to the compiled file.
\item As a result, the above library has poor support for contexts (in our case, you can easily, for instance, make a picture depend on the current page, and recompile the picture only if the current page changes: you can also do it the other way, and change some counters, say, depending on the cached file).
-\item The above library only focuses on \LaTeX{} while our library works for any language
-\item The above library can only produce pdf formats, while we can generate any format (text, tex, jpg\dots{} and even videos that I include in my beamer presentations\dots{} but it is another question).
+\item The above library only focuses on \LaTeX{} while our library works for any language.
+\item The above library can only cache in pdf format, while we can generate any format (text, tex, jpg\dots{} and even videos that I include in my beamer presentations\dots{} but it is another topic!).
\item We have an arguably more complete documentation.
\end{itemize}
-Note that |remember picture| is not working in both libraries.
+Note that |remember picture| is not supported in both libraries, but we can provide multiple methods to disable externalizations when |remember picture| is used.
\section{Tutorial}
@@ -454,17 +491,19 @@ If you forget/do not want to enable |-shell-escape|, this will give you this kin
If you only care about \tikzname's picture, you have 3 options:
\begin{enumerate}
\item Call once |\cacheTikz| that will redefine |tikzpicture| and |\tikz| to use our library (if you use this solution, make sure to read how to disable externalization (\cref{sec:disableExternalization}) as we do not support for instance |remember picture|). Then, configure the default preamble for cached files as explained below by extending the |tikz| or |tikzpicture| presets (that first loads |tikz|).
-\item Use the generic commands that allows you to wrap an arbitrary environment or command:
+\item Use the generic commands that allows you to wrap an arbitrary environment:
\begin{verbatim}
-% name environment ---v v----- preset options
-\robExtCacheEnvironment{tikzpicture}{tikzpicture}
+% name environment ---v v----- preset options
+\cacheEnvironment{tikzpicture}{tikzpicture}
\end{verbatim}
- Note that we do recommend to use |\robExtCacheCommand| for the macro version |\tikz| since |\tikz| has a quite complicated parsing strategy. |\cacheTikz| takes care of this already.
+ Note that you can also wrap commands (that you call with |\foo| instead of |\begin{foo}...\end{foo}|) using this:\\
+ |\cacheCommand{yourcommand}[O{default val}m]{your preset options}|\\
+ (|O{default val}m| means that the command accepts one optional argument with default value |default val| and one mandatory argument) but \textbf{we do recommend} to use |\cacheCommand| to cache |\tikz| since |\tikz| has a quite complicated parsing strategy (e.g.\ you can write |\tikz[options] \node{foo};| which has no mandatory argument enclosed in |{}|). |\cacheTikz| takes care of this already and caches both the environment |\begin{tikzpicture}| and the macro |\tikz|.
\item Use |tikzpictureC| instead of |tikzpicture| (this is mostly done to easily convert existing code to this library, but works only for |tikz| pictures).
\item Use the more general |CacheMe| environment, that can cache \tikzname, \LaTeX{}, python, and much more.
\end{enumerate}
-These 3 options are illustrated below (note that the newly defined |tikzpicture| and |tikzpictureC| accept a second optional argument that contains the options to pass to |CacheMe| after loading the |tikzpicture| preset, that loads itself the |tikz| preset first):
+These 4 options are illustrated below (note that all commands accept a first optional argument enclosed in |<...>| that contains the options to pass to |CacheMe| after loading the |tikzpicture| preset, that loads itself the |tikz| preset first):
Option 1:
\begin{codeexample}[width=0pt]
@@ -475,6 +514,10 @@ Option 1:
I am a cached picture: \begin{tikzpicture}[baseline=(A.base)]
\node[draw,rounded corners,fill=pink!60](A){Hello World!};
+\end{tikzpicture}. %
+
+I am a non-cached picture: \begin{tikzpicture}<disable externalization>[baseline=(A.base)]
+ \node[draw,rounded corners,fill=pink!60](A){Hello World!};
\end{tikzpicture}.
\end{codeexample}
@@ -569,6 +612,8 @@ Note that if you use the |tikzpictureC| or |tikzpicture| syntax, you want to add
\subsection{Dependencies}\label{sec:dependencies}
+\textbf{Note: dependencies can sometimes be advantageously replaced with auto-forwarding of arguments, cf.\ \cref{sec:forwardIntro}.}
+
It might be handy to have a file that is loaded in both the main document and in the cached pictures. For instance, if you have a file |common_inputs.tex| that you want to input in both the main file and in the cached files, that contains, say:\\
|\def\myValueDefinedInCommonInputs{42}|\\
then you can add it as a dependency this way (here we use the |latex| preset that does not wrap the code inside a |tikzpicture| only to illustrate that we can also cache things that are not generated by tikz):
@@ -658,8 +703,25 @@ Which gives you {
\todo{Check how to use cacheCommand and cacheEnvironment}
}
+You can also disable externalization on elements that contain a specific string/regex. For instance, you can disable externalization on all elements containing |remember picture|:
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{
+ add to preset={tikz}{
+ if matches={remember picture}{disable externalization},
+ },
+}
+\begin{tikzpicture}[remember picture]
+ \node[fill=green](my node){Point to me};
+\end{tikzpicture} %
+Some text %
+\begin{tikzpicture}[overlay, remember picture]
+ \draw[->] (0,0) to[bend left] (my node);
+\end{tikzpicture}
+\end{codeexample}
+
-\subsection{Feeding data from the main document to the picture}
+\subsection{Feeding data from the main document to the cached documents}\label{sec:forwardIntro}
You can feed data from the main document to the cached file using placeholders, since |set placeholder eval={__foo__}{\bar}| will evaluate |\bar| and put the result in |__foo__|. For instance, if the picture depends on the current page, you can do:
@@ -669,6 +731,64 @@ You can feed data from the main document to the cached file using placeholders,
\end{tikzpictureC}
\end{codeexample}
+However, since v2.1, we also provide a method to specifically export a counter using |forward counter=my counter| and a macro using |forward=\macroToExport|, possibly by evaluating first using |forward eval=\macroToEval|:
+\begin{codeexample}[width=0pt]
+\cacheTikz
+\NewDocumentCommand{\MyNode}{O{}m}{\node[rounded corners,fill=red,#1]{#2};}
+\begin{tikzpicture}<forward=\MyNode>
+ \MyNode{Alice}
+ \MyNode[xshift=2cm]{Bob}
+\end{tikzpicture}
+\end{codeexample}
+
+To avoid manually writing |forward=...| for each picture, we can instead load |auto forward| and define the macro for instance using |\newcommandAutoForward| (we also provide alternatives for xparse and def-based definitions):
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{add to preset={tikz}{auto forward}}
+
+\newcommandAutoForward{\MyNode}[2][draw,thick]{\node[rounded corners,fill=red,#1]{#2};}
+\newcommandAutoForward{\MyGreenNode}[2][draw,thick]{\node[rounded corners,fill=green,#1]{#2};}
+
+\begin{tikzpicture}
+ \MyNode{Recompiled only if MyNode is changed}
+ \MyNode[xshift=8cm]{but not if the (unused) MyGreenNode is changed.}
+\end{tikzpicture}\\
+
+\begin{tikzpicture}
+ \MyGreenNode{Recompiled only if MyGreenNode is changed}
+ \MyGreenNode[xshift=8cm]{but not if the (unused) MyNode is changed.}
+\end{tikzpicture}
+\end{codeexample}
+
+If a macro depends on another macro/package, it is possible to load any additional style like using the last optional argument of |\newcommandAutoForward|:
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{add to preset={tikz}{auto forward}}
+
+\newcommandAutoForward{\MyName}{Alice}
+\newcommandAutoForward{\MyNode}[2][draw,thick]{
+ \node[rounded corners,fill=red,#1]{\ding{164} \MyName: #2};
+}[forward=\MyName, add to preamble={\usepackage{pifont}}]
+
+\begin{tikzpicture}
+ \MyNode{Recompiled if MyNode or MyName are changed}
+\end{tikzpicture}
+\end{codeexample}
+
+If instead of forwarding the macro you want to, say, load a package or any other style, you should use instead |\robExtConfigIfMacroPresent|:
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{add to preset={tikz}{auto forward}}
+
+\robExtConfigIfMacroPresent{\ding}{add to preamble={\usepackage{pifont}}}
+
+\begin{tikzpicture}
+ \node[fill=green, circle]{\ding{164}};
+\end{tikzpicture}
+\end{codeexample}
+
+For more details and functions, see \cref{sec:forward}.
+
\subsection{Defining macros}
You can define macros in the preamble:
@@ -700,6 +820,21 @@ We compute this data that is long to compute:
We computed the cached value \myLongResult.
\end{codeexample}
+\subsection{Compile in parallel}
+Make sure to have xargs installed (installed by default on most linux, on Windows you need to install the lightweight GNU On Windows (Gow) \url{https://github.com/bmatzelle/gow}), and type in your preamble:
+\begin{codeexample}[code only]
+\robExtConfigure{
+ compile in parallel
+}
+\end{codeexample}
+to compile all figures in parallel (you need to compile your document twice). Your document should build significantly faster, possibly faster than a normal run. If you want to compile in parallel
+only if you have more than, say, 5 new elements to cache, do:
+\begin{codeexample}[code only]
+\robExtConfigure{
+ compile in parallel after=5
+}
+\end{codeexample}
+
\subsection{Compile a preset}\label{sec:compilePreset}
Long story short: you can compile even faster (around 1.5x in our tests) by compiling presets, but beware that you will not be able to modify the placeholders except |add to preamble| with the default compiler we provide:
@@ -928,7 +1063,6 @@ print_file.close()
custom include command={
% Useful to replace __MY_TITLE__:
\evalPlaceholder{
- % \verbatiminput{\robExtAddCachePathAndName{\robExtFinalHash-code.txt}}
\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,title=__MY_TITLE__]
\lstinputlisting[frame=single,
breakindent=.5\textwidth,
@@ -999,7 +1133,6 @@ print_file.close()
custom include command={
% Useful to replace __MY_TITLE__:
\evalPlaceholder{
- % \verbatiminput{\robExtAddCachePathAndName{\robExtFinalHash-code.txt}}
\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,title=__MY_TITLE__]
% \noindent Code:
\lstinputlisting[frame=single,breakindent=.5\textwidth,frame=single,breaklines=true,style=mypython]{\robExtAddCachePathAndName{\robExtFinalHash-code.txt}}
@@ -1079,8 +1212,23 @@ plt.savefig("__ROBEXT_OUTPUT_PDF__")
\end{CacheMeNoContent}}
\end{codeAndResult}
+\subsection{Force to recompile or remove a cached item}
+
+If you want to recompile a file (e.g. an untracked dependency was changed\dots{} and you do not want to track it to avoid recompilation when you change a single line in this file), you can use the |recompile| style since v2.1:
+
+\begin{codeexample}[vbox]
+\cacheEnvironment{tikzcd}{tikz, add to preamble={\usepackage{tikz-cd}}}
+\begin{tikzcd}<recompile>
+ A \rar & B
+\end{tikzcd}
+\end{codeexample}
+
+Note that this assumes that your compilation command is idempotent (so running it twice is like running it once) since the aux files are not cached. If you want to clean aux files or if you run an older version, see the documentation of |recompile| in \cref{sec:configureCompilationCommand}.
+
\section{Documentation}
+Before starting this documentation, note that all commands are prefixed with |robExt| and all environments are prefixed with |RobExt|, but we also often define aliases without this prefix. The user is free to use any version, but we recommend to use the non-prefixed version unless a clash with a package forbids you from using it. In the following, we will only print the non-prefixed name when it exists. Note also that we follow the convention that environment names start with an upper case letter while commands start with a lower case letter.
+
\subsection{How it works}
This library must be able to generate 3 elements for any cached content:
@@ -1473,11 +1621,15 @@ Note that the if the placeholder content contains at the end the placeholder nam
\end{codeexample}
The variation |\setPlaceholderRecReplaceFromList| allows us to specify a subset of placeholder that will be allowed to be expanded, and is an alias for |\getPlaceholderInResultReplaceFromList| (except that the optional argument is mandatory):
\begin{codeexample}[width=0pt,vbox]
-\placeholderFromContent{__MY_PLACEHOLDER__}{Hello __NAME1__, __NAME2__ and __NAME3__, I am a template $\delta_n$.}
+\placeholderFromContent{__MY_PLACEHOLDER__}{Hello __NAME1__, __NAME2__ and __NAME3__,
+ I am a template $\delta_n$.
+}
\placeholderFromContent{__NAME1__}{Alice}
\placeholderFromContent{__NAME2__}{Bob}
\placeholderFromContent{__NAME3__}{Charlie}
-\setPlaceholderRecReplaceFromList{__MY_PLACEHOLDER__,__NAME2__,__NAME3__}{__OTHER_PLACEHOLDER__}{Here we go: __MY_PLACEHOLDER__}
+\setPlaceholderRecReplaceFromList{__MY_PLACEHOLDER__,__NAME2__,__NAME3__}{__OTHER_PLACEHOLDER__}{
+ Here we go: __MY_PLACEHOLDER__
+}
\printImportedPlaceholdersExceptDefaults
\end{codeexample}
Note that the star and no import version does NOT import the placeholder it the main group (unless you try to optimize the compilation time you should not need it, but see \cref{sec:importSystem} for details).
@@ -1549,8 +1701,8 @@ We provide a list of placeholders that are useful to escape parts of the strings
\end{pgfmanualentry}
\begin{pgfmanualentry}
- \extractcommand\robExtPlaceholderReplaceInplace\marg{placeholder}\marg{from}\marg{to}\@@
- \extractcommand\robExtPlaceholderReplaceInplaceEval\marg{placeholder}\marg{from}\marg{to}\@@
+ \extractcommand\placeholderReplaceInplace\marg{placeholder}\marg{from}\marg{to}\@@
+ \extractcommand\placeholderReplaceInplaceEval\marg{placeholder}\marg{from}\marg{to}\@@
\makeatletter%
\def\extrakeytext{style, }
\extractkey/robExt/placeholder replace in place=\marg{placeholder}\marg{from}\marg{to}\@nil
@@ -2192,6 +2344,55 @@ plt.ylabel('Number of futurestud.io Tutorials')
By default, we compile cached documents only if |-shell-escape| is enabled. However, if the user allowed |pdflatex| (needed to compile latex documents), |cd| (not needed when using |no cache folder|), and |mkdir| (not needed when using |no cache folder| or if the cache folder that defaults to |robustExternalize| is already created) to run in restricted mode (so without enabling |-shell-escape|), then there is no need for |-shell-escape|. In that case, set |force compilation| and this library will compile even if |-shell-escape| is disabled.
\end{pgfmanualentry}
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/recompile\@nil
+ \extractkey/robExt/do not recompile\@nil
+ \makeatother%
+ \pgfmanualbody
+ (new to v2.1) |recompile| will force a compilation even if the image is already cached (mostly useful if you made a change to a non-tracked dependency). Note that since this library does not want to remove any file on the hard drive (we do not want to risk to remove important files in case of a bug), this command will NOT clear the auxiliary files already present, so for maximum purity, ensure that your compiling command is idempotent (so that compiling twice gives the same outcome as compiling once).
+
+\begin{codeexample}[vbox]
+\cacheEnvironment{tikzcd}{tikz, add to preamble={\usepackage{tikz-cd}}}
+\begin{tikzcd}<recompile>
+ A \rar & B
+\end{tikzcd}
+\end{codeexample}
+
+If you want to actually remove the aux files, you can either change the compilation command, or add something like this to remove the file (note that it will prompt a message before running the actual command), using the hook |robust-externalize/just-before-writing-files| that we introduced in v2.1:
+\begin{codeexample}[code only]
+\cacheTikz
+
+\robExtConfigure{
+ clean and recompile/.code={%
+ \AddToHook{robust-externalize/just-before-writing-files}{%
+ \edef\command{rm -f "\robExtAddCachePathAndName{\robExtFinalHash.pdf}" && %
+ rm -f "\robExtAddCachePathAndName{\robExtFinalHash.aux}"}%
+ \message{You will run the command ``\command''}%
+ \message{Press X if you do NOT want to run it, otherwise press ENTER.}%
+ \show\def% this is just used to wait a user input
+ \immediate\write18{\command}%
+ }%
+ },%
+}
+
+\begin{tikzpicture}<clean and recompile>
+ \node[fill=red] {B};
+\end{tikzpicture}
+\end{codeexample}
+Note that if you do not want to run a command from \LaTeX{}, or if you are on a version smaller than 2.1, you can also simply print the name of the file in the pdf and remove it manually:
+
+\begin{codeexample}[width=0cm,vbox]
+\begin{CacheMe}{tikzpicture, name output=filetodelete}[baseline=(A.base)]
+ \node[draw,rounded corners,fill=pink!60](A){Hello World!};
+\end{CacheMe}\\
+
+You want to delete the file \texttt{\filetodeleteInCache.pdf}. %
+\end{codeexample}
+
+\end{pgfmanualentry}
+
\subsubsection{Options to configure the inclusion command}
@@ -2312,6 +2513,7 @@ You might want (sometimes or always) to disable externalization, for instance to
\makeatletter%
\def\extrakeytext{style, }
\extractkey/robExt/disable externalization\@nil
+ \extractkey/robExt/de\@nil
\extractkey/robExt/disable externalization now\@nil
\extractkey/robExt/enable externalization\@nil
\makeatother%
@@ -2353,13 +2555,31 @@ You might want (sometimes or always) to disable externalization, for instance to
\robExtConfigure{disable externalization now}
\tikz\node[fill=green]{The short version of tikz can be confusing.};
}
- \end{codeexample}
+ \end{codeexample}
+ Since v2.1 you can also automatically disable externalization if the input contains a given string, for instance |remember picture| (that is not cachable with this library):
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{
+ add to preset={tikzpicture}{
+ % \b means "word boundary", and spaces must be escaped
+ if matches={remember picture}{disable externalization},
+ },
+}
+\begin{tikzpicture}[remember picture]
+ \node[fill=green](my original node){Point to me};
+\end{tikzpicture} %
+Some text %
+\begin{tikzpicture}[overlay, remember picture]
+ \draw[->] (0,0) to[bend left] (my original node);
+\end{tikzpicture}
+\end{codeexample}
\end{pgfmanualentry}
\begin{pgfmanualentry}
\makeatletter%
\def\extrakeytext{style, }
\extractkey/robExt/command if no externalization\@nil
+ \extractkey/robExt/command if externalization\@nil
\makeatother%
\pgfmanualbody
You can easily change the command to run if externalization is disabled using by setting the \textbf{.code} of this key. By default, it is configured as:\\
@@ -2368,7 +2588,8 @@ command if no externalization/.code={%
\robExtDisableTikzpictureOverwrite\evalPlaceholder{__ROBEXT_MAIN_CONTENT__}%
}
\end{verbatim}
-Unless you know what you are doing, you should include |\robExtDisableTikzpictureOverwrite| as it is often necessary to avoid infinite recursion when externalization is disabled and the original command has been replaced with a cached version (for instance done by |\cacheTikz|). Note that if you write your own style, try to modify |__ROBEXT_MAIN_CONTENT__| so that it can be included as-it in a document: this way you do not need to change this command.
+ Unless you know what you are doing, you should include |\robExtDisableTikzpictureOverwrite| as it is often necessary to avoid infinite recursion when externalization is disabled and the original command has been replaced with a cached version (for instance done by |\cacheTikz|). Note that if you write your own style, try to modify |__ROBEXT_MAIN_CONTENT__| so that it can be included as-it in a document: this way you do not need to change this command.
+ You can also use |command if externalization/.append code={...}| if you want to run a code only if externalization is enabled (this is used for instance by the |forward| functionality).
\end{pgfmanualentry}
\begin{pgfmanualentry}
@@ -2419,7 +2640,7 @@ uname -srv > "${outputTxt}"
By doing |execute after each externalization={some code}|, you will run some code after the externalization. This might be practical for instance to update a counter (e.g. the number of pages\dots) based on the result of the compiled file.
\end{pgfmanualentry}
-\subsubsection{Dependencies}
+\subsubsection{Dependencies}\label{sec:dependenciesDoc}
In order to enforce reproducibility, you should tell what are the files that your code depends on, by adding this file as a dependency. This has the advantage that if this file is changed, your code is automatically recompiled. On the other hand, you might not want this behavior (e.g. if this file often changes in a non-important way): in that case, just don't add the file as a dependency (but keep that in mind as you might not be able to recompile your file if you clear the cache if you introduced breaking changes).
@@ -2444,6 +2665,305 @@ In order to enforce reproducibility, you should tell what are the files that you
Note that the placeholder |__ROBEXT_WAY_BACK__| contains the path from the cache folder (containing the |.tex| that will be cached) to the root folder.\\ This way, you can easily input files contained in the root folder.
\end{pgfmanualentry}
+\subsubsection{Forward macros}\label{sec:forward}
+
+(since v2.1)
+
+You can also see the tutorial (\cref{sec:forwardIntro}) for some examples. So far, we have seen multiple approaches to use a macro in both the main document and in cached pictures, having different advantages:
+\begin{itemize}
+\item if we define the macro in a file say |common_inputs.tex|, if we include that file in both files \textbf{and} if we add it to the list of dependencies (\cref{sec:dependenciesDoc}), then you will have great purity (if |common_inputs.tex| changes, all files are recompiled), but this might be a problem if you often change the file |common_inputs.tex| since you will need to recompile all pictures every time you add a new macro
+\item If you follow the same procedure, but \textbf{without} adding the file in the list of dependencies, then you will save compilation time (no need to recompile everything if you add a macro in |common_inputs.tex|), but you will lose purity (if you change the definition of a macro in that file, you will need to manually specify the list of figures to recompile, e.g. using |recompile|).
+\item You can also create multiple files like
+\begin{verbatim}
+common_inputs_functionality_A.tex
+\end{verbatim}
+ and
+\begin{verbatim}
+common_inputs_functionality_B.tex
+\end{verbatim}
+ and use the first solution (maybe by creating a preset that automatically calls |add to preamble| and |add dependencies|), and only input the appropriate file depending on the set of macro that you need. This gives a tradeoff of above approaches (good purity, with less recompilation), but you will still compile often if you put many macros in a single file (and nobody wants to create one macro per file!).
+\end{itemize}
+
+In this section, we provide a third solution that tries to solve the above issue (purity without frequent recompilations), by allowing the user to forward only a specific macro, with something like |forward=\myMacro|. In order to avoid to manually forward all macros used for each picture, we also provide some functions to automatically detect the macros to forward.
+
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/forward=macro to forward\@nil
+ \extractkey/robExt/fw=macro to forward\@nil
+ \extractkey/robExt/forward at letter=macro to forward\@nil
+ \makeatother%
+ \pgfmanualbody
+ |forward| (alias |fw|) will forward the definition of a macro to the picture if externalization is enabled:
+\begin{codeexample}[width=0pt]
+\cacheTikz
+\def\myName{Alice}
+\begin{tikzpicture}<forward=\myName>
+ \node[fill=red]{\myName};
+\end{tikzpicture}
+\end{codeexample}
+Note that it works for macro defined with |\def|, |\newcommand| (or alike) and |\NewDocumentCommand| (or other xparse commands). For instance with xparse:
+\begin{codeexample}[width=0pt]
+\cacheTikz
+\NewDocumentCommand{\MyNode}{O{}m}{\node[rounded corners,fill=red,#1]{#2};}
+\begin{tikzpicture}<forward=\MyNode>
+ \MyNode{Alice}
+ \MyNode[xshift=2cm]{Bob}
+\end{tikzpicture}
+\end{codeexample}
+and with |\newcommand|:
+\begin{codeexample}[width=0pt]
+\cacheTikz
+\newcommand{\MyNodeWithNewCommand}[2][draw,thick]{\node[rounded corners,fill=red,#1]{#2};}
+\begin{tikzpicture}<forward=\MyNodeWithNewCommand>
+ \MyNodeWithNewCommand{Alice}
+ \MyNodeWithNewCommand[xshift=2cm]{Bob}
+\end{tikzpicture}
+\end{codeexample}
+Note that this might not work with quite involved macros. Notably, if the macro is defined by calling other macros, you need to also forward these macros.
+\begin{codeexample}[width=0pt]
+\cacheTikz
+\def\myName{Alice}
+\NewDocumentCommand{\MyNodeWithInnerMacros}{O{}m}{\node[rounded corners,fill=red,#1]{\myName: #2};}
+\begin{tikzpicture}<forward=\MyNodeWithInnerMacros,forward=\myName>
+ \MyNodeWithInnerMacros{she is tall}
+\end{tikzpicture}
+\end{codeexample}
+Really involved macros (e.g.\ defined inside libraries) might call many other macros, possibly using the @ letter (used only in module code). If you REALLY want, you can forward such macros if you forward \textbf{all} macros that are used internally, using |forward at letter| that will automatically wrap the macro inside |\makeatletter...\makeatother|, but you should certainly use |add to preamble={\usepackage{yourlib}}| if you need to do something like that:
+\begin{codeexample}[width=0pt]
+\cacheTikz
+\makeatletter
+\def\module@name{Alice}
+\newcommand{\MyNodeWithAtCommands}[2][draw,thick]{\node[rounded corners,fill=red,#1]{\module@name};}
+\begin{tikzpicture}<forward at letter=\MyNodeWithAtCommands,forward at letter=\module@name>
+ \MyNodeWithAtCommands{Alice}
+\end{tikzpicture}
+\makeatother
+\end{codeexample}
+\end{pgfmanualentry}
+
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/forward eval=macro to eval and forward\@nil
+ \makeatother%
+ \pgfmanualbody
+ Evaluate a macro, and defines it using this new value when compiling the function. This might be useful for instance if your macro depends on other macros that you do not want to export:
+\begin{codeexample}[width=0pt]
+\def\name{Alice}
+\def\fullName{\name}
+\begin{tikzpictureC}<forward eval=\fullName>
+ \node[rounded corners, fill=red]{\fullName.};
+\end{tikzpictureC}
+\end{codeexample}
+\end{pgfmanualentry}
+
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/forward counter=counter to forward\@nil
+ \makeatother%
+ \pgfmanualbody
+ Forward a counter:
+\begin{codeexample}[width=0pt]
+\begin{tikzpictureC}<forward counter=page>
+ \node[rounded corners, fill=red]{The current page is \thepage.};
+\end{tikzpictureC}
+\end{codeexample}
+\end{pgfmanualentry}
+
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/forward color=color to forward\@nil
+ \extractkey/robExt/auto forward color=\marg{preset}\marg{color to forward}\@nil
+ \makeatother%
+ \pgfmanualbody
+ |forward color| forwards a color (defined with xcolor). It works with colors defined with |\definecolor|:
+\begin{codeexample}[width=0pt]
+\definecolor{myred}{HTML}{F01122}
+\begin{tikzpictureC}<forward color=myred>
+ \node[fill=myred]{A};
+\end{tikzpictureC}
+\end{codeexample}
+but also with colors defined with |\colorlet|:
+\begin{codeexample}[width=0pt]
+\definecolor{myred}{HTML}{F01122}
+\colorlet{myviolet}{blue!50!myred}
+\begin{tikzpictureC}<forward color=myviolet>
+ \node[fill=myviolet,yshift=-1cm]{B};
+\end{tikzpictureC}
+\end{codeexample}
+Note that using |if matches|, you can also automatically forward colors:
+\begin{codeexample}[width=0pt]
+\definecolor{myred}{HTML}{F01122}
+\colorlet{myviolet}{blue!50!myred}
+\colorlet{mypink}{pink!90!orange}
+\robExtConfigure{
+ add to preset={tikz}{
+ if matches={mypink}{forward color=mypink},
+ },
+}
+\begin{tikzpictureC}
+ \node[fill=mypink,yshift=-1cm]{B};
+\end{tikzpictureC}
+\end{codeexample}
+but since this is a bit long to type, we provide a shortcut:
+\begin{codeexample}[width=0pt]
+\definecolor{myred}{HTML}{F01122}
+\colorlet{myviolet}{blue!50!myred}
+\colorlet{mypink}{pink!90!orange}
+\robExtConfigure{
+ auto forward color={tikz}{mypink},
+}
+\begin{tikzpictureC}
+ \node[fill=mypink,yshift=-1cm]{B};
+\end{tikzpictureC}
+\end{codeexample}
+\end{pgfmanualentry}
+
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/auto forward\@nil
+ \makeatother%
+ \pgfmanualbody
+ Enable automatic forwarding of macros marked with |*AutoForward| commands or |\configIfMacroPresent|. This command naively extracts all used macro via a simple regex match and forwards them/execute the style configured in |\configIfMacroPresent| if it exists.
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{add to preset={tikz}{auto forward}}
+
+\newcommandAutoForward{\MyNode}[2][draw,thick]{\node[rounded corners,fill=red,#1]{#2};}
+\newcommandAutoForward{\MyGreenNode}[2][draw,thick]{\node[rounded corners,fill=green,#1]{#2};}
+
+\begin{tikzpicture}
+ \MyNode{Recompiled only if MyNode is changed}
+ \MyNode[xshift=8cm]{but not if the (unused) MyGreenNode is changed.}
+\end{tikzpicture}\\
+
+\begin{tikzpicture}
+ \MyGreenNode{Recompiled only if MyGreenNode is changed}
+ \MyGreenNode[xshift=8cm]{but not if the (unused) MyNode is changed.}
+\end{tikzpicture}
+\end{codeexample}
+\end{pgfmanualentry}
+
+\begin{pgfmanualentry}
+ \extractcommand\configIfMacroPresent\marg{macro}\marg{style to run if macro is present}\@@
+ \pgfmanualbody
+ Runs the corresponding style if the macro |macro| is present (make sure to enable |auto forward|).
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{add to preset={tikz}{auto forward}}
+
+\configIfMacroPresent{\ding}{add to preamble={\usepackage{pifont}}}
+
+\begin{tikzpicture}
+ \node[fill=green, circle]{\ding{164}};
+\end{tikzpicture}
+\end{codeexample}
+\end{pgfmanualentry}
+
+\begin{pgfmanualentry}
+ \extractcommand\newcommandAutoForward\marg{macro}\opt{\oarg{nb args}}\opt{\oarg{optional default value}}\marg{definition}\opt{\oarg{additional style}}\@@
+ \extractcommand\renewcommandAutoForward\marg{macro}\opt{\oarg{nb args}}\opt{\oarg{optional default value}}\marg{definition}\opt{\oarg{additional style}}\@@
+ \extractcommand\providecommandAutoForward\marg{macro}\opt{\oarg{nb args}}\opt{\oarg{optional default value}}\marg{definition}\opt{\oarg{additional style}}\@@
+ \extractcommand\NewDocumentCommandAutoForward\marg{macro}\marg{arg spec}\opt{\oarg{additional style}}\marg{definition}\@@
+ \extractcommand\RenewDocumentCommandAutoForward\marg{macro}\marg{arg spec}\opt{\oarg{additional style}}\marg{definition}\@@
+ \extractcommand\ProvideDocumentCommandAutoForward\marg{macro}\marg{arg spec}\opt{\oarg{additional style}}\marg{definition}\@@
+ \extractcommand\DeclareDocumentCommandAutoForward\marg{macro}\marg{arg spec}\opt{\oarg{additional style}}\marg{definition}\@@
+ \extractcommand\defAutoForward\marg{macro}\opt{\oarg{def-style arg spec}}\marg{macro}\opt{\oarg{additional style}}\@@
+ \pgfmanualbody
+\begin{verbatim}
+\newcommandAutoForward{\macro}[nb args][default value]{def}[STYLE]
+\end{verbatim}
+ is like
+\begin{verbatim}
+\newcommand{\macro}[nb args][default value]{def}
+\end{verbatim}
+ but it additionally runs
+\begin{verbatim}
+\configIfMacroPresent{\macro}{forward=\macro,STYLE}
+\end{verbatim}
+ to automatically forward the macro if it is used. This works similarly for other commands (note that for |\defAutoForward|, you need to put the arguments in a bracket, like |\defAutoForward\myMacro[#1 and #2]{Hey #1, #2}| for |\def\myMacro#1 and #2{Hey #1, #2}|).
+\end{pgfmanualentry}
+
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/load auto forward macro config=\marg{macro}\@nil
+ \makeatother%
+ \pgfmanualbody
+ Like |forward| except that it loads the configuration that would have been loaded if the macro was present in the file. This is mostly useful to say that a macro depends on the style of another macro without copy/pasting the style of the second macro inside the first one.
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{add to preset={tikz}{auto forward}}
+
+\newcommandAutoForward{\MyName}{\ding{164} Alice}[add to preamble={\usepackage{pifont}}]
+\newcommandAutoForward{\MyNode}[2][draw,thick]{\node[rounded corners,fill=green,#1]{\MyName: #2};}[
+ load auto forward macro config=\MyName
+]
+
+\begin{tikzpicture}
+ \MyNode{Recompiled only if MyNode is changed}
+ \MyNode[yshift=-1cm]{or if MyName is changed}
+\end{tikzpicture}
+\end{codeexample}
+\end{pgfmanualentry}
+
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/if matches=\marg{string}\marg{style to apply}\@nil
+ \extractkey/robExt/if matches regex=\marg{latex3 regex}\marg{style to apply}\@nil
+ \makeatother%
+ \pgfmanualbody
+ Apply the corresponding style if the string (resp.\ regex in \LaTeX{}3 format) matches is matched in the content. The regex version can be more expressive, but is wayyy slower.
+\begin{codeexample}[vbox]
+\robExtConfigure{
+ add to preset={my python}{
+ python print code and result,
+ % \b is for word border, and ( needs to be escaped in regex
+ if matches={cos(}{add import={from math import cos}},
+ if matches={sin(}{add import={from math import sin}},
+ },
+}
+\begin{CacheMeCode}{my python}
+print(cos(1)+sin(2))
+\end{CacheMeCode}
+\end{codeexample}
+With regex:
+\begin{codeexample}[vbox]
+\robExtConfigure{
+ add to preset={my python}{
+ python print code and result,
+ % \b is for word border, and ( needs to be escaped in regex
+ if matches regex={\b cos\(}{add import={from math import cos}},
+ if matches regex={\b sin\(}{add import={from math import sin}},
+ },
+}
+\begin{CacheMeCode}{my python}
+print(cos(1)+sin(2))
+\end{CacheMeCode}
+\end{codeexample}
+This can also be practical to disable caching if some pictures uses |remember picture| (which is not supported by this library):
+\begin{codeexample}[vbox]
+\cacheTikz
+\robExtConfigure{
+ add to preset={tikzpicture}{
+ % \b means "word boundary", and spaces must be escaped
+ if matches={remember picture}{disable externalization},
+ },
+}
+\begin{tikzpicture}[remember picture]
+ \node[fill=green](my original node){Point to me};
+\end{tikzpicture} %
+Some text %
+\begin{tikzpicture}[overlay, remember picture]
+ \draw[->] (0,0) to[bend left] (my original node);
+\end{tikzpicture}
+\end{codeexample}
+\end{pgfmanualentry}
\subsubsection{Pass compiled file to another template}\label{sec:passOutputToOtherTemplate}
@@ -2477,9 +2997,79 @@ Note that if you do not want to display the first cached file, you can use |do n
\end{pgfmanualentry}
-\subsubsection{Compile even faster}\label{sec:compileFaster}
+\subsubsection{Compile in parallel}\label{sec:compileParallel}
-Long story short: you can compile even faster (at least 1.5x in our tests, but we expect this to be more visible on larger tests due to the loading time of the preamble of the main document that takes most of the time of the compilation) by compiling presets, but beware that you will not be able to modify the placeholders except |add to preamble| with the default compiler we provide:
+(introduced in v2.1, read below on how to do it manually on v2.0)
+
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/compile in parallel=\opt{nb of pictures to compile normally} (default 0)\@nil
+ \extractkey/robExt/compile in parallel after=\opt{nb pictures to compile normally} (default 0)\@nil
+ \makeatother%
+ \pgfmanualbody
+ These two commands are alias. Typing in the preamble:
+\begin{codeexample}[code only]
+\robExtConfigure{
+ compile in parallel
+}
+\end{codeexample}
+will cause the cached elements to be compiled in parallel (this requires two compilations of the main project). For this to work out of the box, you need to have GNU |parallel| installed (on linux or Mac) or rush (\url{https://github.com/shenwei356/rush/}) on Windows. Typing |compile in parallel after=3| will start the compilation in parallel only if you have more than 3 new elements to compile, and compile the first 3 elements normally (useful when you work on one picture at a time since you do not need to compile twice the document).
+\end{pgfmanualentry}
+
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/compile in parallel command=\marg{command to run}\@nil
+ \extractkey/robExt/compile in parallel with xargs=\opt{number threads} (default 16\%)\@nil
+ \extractkey/robExt/compile in parallel with gnu parallel=\opt{--jobs option} (default 200\%)\@nil
+ \extractkey/robExt/compile in parallel with rush=\opt{additional options} (default )\@nil
+ \makeatother%
+ \pgfmanualbody
+ You can customize the compilation command to run via something like:
+\begin{codeexample}[code only]
+\robExtConfigure{
+ compile in parallel command={
+ parallel --jobs 200\% :::: '\jobname-\robExtAddPrefixName{compile-missing-figures.sh}
+ },
+}
+\end{codeexample}
+The other styles are predefined commands to compile with xargs (by default, already installed in linux, on Windows you can get it by installing the lightweight GNU On Windows (Gow) \url{https://github.com/bmatzelle/gow}), gnu parallel, or rush (\url{https://github.com/shenwei356/rush/}). You can use these commands directly like:
+\begin{codeexample}[code only]
+\robExtConfigure{
+ compile in parallel with gnu parallel
+}
+\end{codeexample}
+or use the optional parameter to configure the number of threads (xargs starts with 16 threads by default, and gnu parallel takes twice the number of CPU threads available), like in:
+\begin{codeexample}[code only]
+\robExtConfigure{
+ compile in parallel with xargs=64,% Compiles with 64 processes at a time
+}
+\end{codeexample}
+\end{pgfmanualentry}
+
+NB: in version smaller than v2.1 (or if you prefer the manual method), you can instead run it in manual mode and use for instance GNU |parallel| (or any tool of you choice) to run all commands in the file |\jobname-robExt-compile-missing-figures.sh| in parallel. To do that:
+\begin{itemize}
+\item First add |\robExtConfigure{enable manual mode}| in your file
+\item Create the cache folder, e.g.\ using |mkdir robustExternalize|
+\item Compile your file, with, e.g.\ |pdflatex yourfile.tex| (in my benchmark: 4.2s)
+\item This should create a file |yourfile-robExt-compile-missing-figures.sh|, with each line containing a compilation command like this (the command should be compatible with Windows, Mac and Linux, if not, let me know on github):
+\begin{verbatim}
+cd robustExternalize/ && pdflatex -halt-on-error "robExt-4A806941E86C6B657A0CB3D160CFFF3E.tex
+\end{verbatim}
+ \textbf{IMPORTANT}: \LaTeX{} might render \textbf{multiple times} the same picture if it is inside some particular environments (align, tables\dots), so this file can contain duplicates if you inserted cached data inside. In version 2.1 this is solved, but on older versions, to avoid running the same command twice, \textbf{be sure to remove duplicates!} On Linux, this can be done by piping the file into |sort| and |uniq| (if your files can depend on previously compiled elements as explained in \cref{sec:passOutputToOtherTemplate}, you should additionally preserve \mylink{https://unix.stackexchange.com/questions/194780/remove-duplicate-lines-while-keeping-the-order-of-the-lines}{the order of the lines}). Since this is anyway a rather advanced use case, we will not consider that case for simplicity.
+\item Run all these command in parallel, for instance on Linux you can install |parallel|, and run the following command (|--bar| displays a progress bar):
+\begin{verbatim}
+cat yourfile-robExt-compile-missing-figures.sh | sort | uniq | parallel --bar --jobs 200%
+\end{verbatim}
+(note that since v2.1, it is not necessary to remove duplicates using |sort| and |uniq| since the file contains no more duplicates) In my benchmark, it ran during 52s, so 1.6x faster than the original compilation without caching)
+\item Recompile the original document with |pdflatex yourfile.tex|
+\end{itemize}
+In my benchmark, the total time is 2x4.2s + 52s = 60s, so 1.5 times faster than a normal command (of course, this depends a lot on the preamble of the file that you compile, since the loading time of the file is the main bottleneck for the first compilation; the advantage here is that it is easy to include only the necessary things in the preamble of cached pictures, possibly creating different presets if it is easier to manage it this way).
+
+\subsubsection{Compile a template to compile even faster}\label{sec:compileFaster}
+
+Long story short: you can compile even faster (at least 1.5x in our tests, but we expect this to be more visible on larger tests due to the loading time of the preamble of the main document that takes most of the time of the compilation) by compiling presets, but beware that you will not be able to modify the placeholders except |add to preamble| with the default compiler we provide. The gain comes from the fact that instead of trying to find all placeholders to replace in the string, we can directly replace a few hard-coded placeholders to save time (yes, \LaTeX{} is not really efficient so it can make a difference\dots).
\begin{pgfmanualentry}
@@ -2697,7 +3287,11 @@ The next options can be used after calling the |latex| style:
\makeatother%
\pgfmanualbody
|tikz| loads |latex| and then adds |tikz| to the preamble. |tikzpicture| first load |tikz| and wraps the main content within |\begin{tikzpicture}| and |\end{tikzpicture}| using:\\
- |set placeholder={__ROBEXT_MAIN_CONTENT__}{\begin{tikzpicture}__ROBEXT_MAIN_CONTENT_ORIG__\end{tikzpicture}}|\\
+\begin{verbatim}
+set placeholder={__ROBEXT_MAIN_CONTENT__}{%
+ \begin{tikzpicture}__ROBEXT_MAIN_CONTENT_ORIG__\end{tikzpicture}%
+}
+\end{verbatim}
so that the user does not need to type it. See for instance the introduction for examples of use.
\end{pgfmanualentry}
@@ -2790,6 +3384,28 @@ You can set |__ROBEXT_PYTHON_TCOLORBOX_PROPS__| the options of the tcolorbox,\\
\end{verbatim}
\end{pgfmanualentry}
+\begin{pgfmanualentry}
+ \makeatletter%
+ \def\extrakeytext{style, }
+ \extractkey/robExt/python/add import\@nil
+ \makeatother%
+ \pgfmanualbody
+ (since v2.1) Add an import statement in the first part of the file.
+\begin{codeexample}[vbox]
+\robExtConfigure{
+ add to preset={my python}{
+ python print code and result,
+ add import={from math import cos},
+ add import={from math import sin},
+ },
+}
+\begin{CacheMeCode}{my python}
+print(cos(1)+sin(2))
+\end{CacheMeCode}
+\end{codeexample}
+
+\end{pgfmanualentry}
+
\subsubsection{Bash}
We provide a basic bash template, that sets:
@@ -2837,6 +3453,8 @@ This file contains:
\verbatiminput{\robExtPathToInput}
\end{codeAndResult}
+You might also like to use |name output=yourfile| that will create two macros |\yourfile| and |\yourfileInCache|, equal respectively to the prefix |robExt-somehash| and |pathOfCache/robExt-somehash|.
+
\subsubsection{Custom languages}
To add support to new languages, see \cref{sec:otherLanguages} for an example.
@@ -2981,6 +3599,19 @@ Here is an example to specify arguments via parenthesis:
\tikz(disable externalization) \node[fill=green, rounded corners]{Foo \whereIAm};
\end{codeexample}
+You can also change the default style loaded for tikz and tikzpicture (note that you might prefer to modify |tikz| directly using |add to preset|), but you need v2.1 (buggy in v2.0):
+
+\begin{codeexample}[vbox]
+% You might prefer to modify tikz directly using "add to preset"
+\cacheTikz[tikz, add to preamble={\def\hello{H}},][tikzpicture,
+ add to preamble={\def\hello{HH}},
+]
+
+\tikz[baseline=(A.base)] \node(A){In tikz \hello}; %
+\begin{tikzpicture}[baseline=(A.base)]
+ \node(A){In tikzpicture \hello};
+\end{tikzpicture}
+\end{codeexample}
\end{pgfmanualentry}
@@ -3135,7 +3766,12 @@ and we can disable the externalization: %
\zx<disable externalization>{\zxZ{\alpha} \rar & \zxX{\text{Hey}}}.
\end{codeAndResult}
-You can do a similar trick for environment, by using instead |\NewEnvironmentCopy{robExtEnvironmentOrigNAMEENV}{NAMEENV}| |\robExtAddToEnvironmentResetList{NAMEENV}| and |\def\robExtEnvironmentOrigName{NAMEENV}|.
+You can do a similar trick for environment, by using instead
+\begin{verbatim}
+\NewEnvironmentCopy{robExtEnvironmentOrigNAMEENV}{NAMEENV}
+\robExtAddToEnvironmentResetList{NAMEENV}
+\def\robExtEnvironmentOrigName{NAMEENV}
+\end{verbatim}
\subsection{Operations on the cache}\label{sec:operationsCache}
@@ -3312,17 +3948,27 @@ In order to know when to stop replacing placeholders earlier (i.e.\ without runn
\begin{itemize}
\item See how to deal with label, links and cite inside pictures (without disabling externalization). For label and links, I have a proof of concept, I ``just'' need to write it down. \url{https://tex.stackexchange.com/questions/695277/clickable-includegraphics-for-cross-reference-data}
\item Deal with remember picture
-\item I tried many different options to optimize the compilation time, so the code is a bit cluttered now. Would be cool to reorganize.
-\item The doc more or less describes all features, but I might made tons of typo and forgot to document some advanced commands. But should be good enough for normal usage.
+\item Since externalizing is all about speed, it would be nice to do more benchmarks.
\end{itemize}
\section{Acknowledgments}
-I am deeply indebted to many users on \url{tex.stackexchange.com} that made the writing of this library possible. I can't list you all, but thank you so much! A big thanks also to the project \url{https://github.com/sasozivanovic/memoize/} from which I borrowed most of the code to automatically wrap commands.
+I am deeply indebted to many users on \url{tex.stackexchange.com} that made the writing of this library possible. I can't list you all, but thank you so much! A big thanks also to the project \url{https://github.com/sasozivanovic/memoize/} from which I borrowed most of the code to automatically wrap commands. Thanks to kiryph for providing useful feedbacks.
\section{Changelog}
\begin{itemize}
+\item future v2.1 (master on github, not released yet on CTAN):
+ \begin{itemize}
+ \item Fix a bug when compiling the main document with lualatex or xelatex
+ \item Fix a bug when compiling a template that was not exporting dependencies
+ \item Add |recompile| to recompile a file even if no dependencies changed.
+ \item Add a hook |robust-externalize/just-before-writing-files|.
+ \item Fixed a bug in |\cacheTikz| that was not working with a custom argument for tikzpicture
+ \item Added options |forward*| to forward macros and counters
+ \item Added |auto forward| and co
+ \item Added |compile in parallel| and co
+ \end{itemize}
\item v2.0:
\begin{itemize}
\item \textbf{not backward compatible}: the preset |tikzpicture| should be used instead of |tikz|: |tikz| does not wrap anymore its content into |\begin{tikzpicture}| in order to be usable inside the command version |\tikz| (but |tikzpicture| does load |tikz| first). Moreover, all arguments to |tikzpictureC| or |tikzpicture| (if you loaded |cacheTikz|) should be specified in the first argument, using |<your options>|. This is used to provide a more uniform interface with the new |\cacheEnvironment| command. Hopefully this should \textbf{not cause too much trouble} since the first version of the library has been published on CTAN only a few days ago.
diff --git a/macros/latex/contrib/ucs/README.txt b/macros/latex/contrib/ucs/README.txt
index 12fa3c11b4..6056d8108e 100644
--- a/macros/latex/contrib/ucs/README.txt
+++ b/macros/latex/contrib/ucs/README.txt
@@ -24,12 +24,12 @@ do only supply macros, which generate aesthetic glyphs, no hacks.
Information about this package, including a link to its source code
repository, can be found at
- <http://wolfgang.jeltsch.info/software/tex/ucs> .
+ <https://github.com/LaTeX-Package-Repositories/ucs>more
=========
(C) 2000 by Dominique Unruh <unruh@ut.ee>
(C) 2011--2013 by Wolfgang Jeltsch <wolfgang@cs.ioc.ee>
-(C) 2022 David Carlisle david.carlisle@latex-project.org
+(C) 2022--2023 David Carlisle david.carlisle@latex-project.org
See the LICENSE file for licensing informations.
diff --git a/macros/latex/contrib/ucs/data/uni-480.def b/macros/latex/contrib/ucs/data/uni-480.def
new file mode 100644
index 0000000000..c63f15cde9
--- /dev/null
+++ b/macros/latex/contrib/ucs/data/uni-480.def
@@ -0,0 +1,67 @@
+%%% Unicode to TeX mapping, file uni-480.def, U+1E000..U+1E0FF, autogenerated by makeunidef.pl
+\ifx\ProvidesFile\undefined\else
+\ProvidesFile{uni-480.def}[2022/08/07 UCS: Unicode data U+1E000..U+1E0FF]%
+\fi
+\uc@dclc{122928}{autogenerated}{\unicodesuper{\unichar{1072}}}%
+\uc@dclc{122929}{autogenerated}{\unicodesuper{\unichar{1073}}}%
+\uc@dclc{122930}{autogenerated}{\unicodesuper{\unichar{1074}}}%
+\uc@dclc{122931}{autogenerated}{\unicodesuper{\unichar{1075}}}%
+\uc@dclc{122932}{autogenerated}{\unicodesuper{\unichar{1076}}}%
+\uc@dclc{122933}{autogenerated}{\unicodesuper{\unichar{1077}}}%
+\uc@dclc{122934}{autogenerated}{\unicodesuper{\unichar{1078}}}%
+\uc@dclc{122935}{autogenerated}{\unicodesuper{\unichar{1079}}}%
+\uc@dclc{122936}{autogenerated}{\unicodesuper{\unichar{1080}}}%
+\uc@dclc{122937}{autogenerated}{\unicodesuper{\unichar{1082}}}%
+\uc@dclc{122938}{autogenerated}{\unicodesuper{\unichar{1083}}}%
+\uc@dclc{122939}{autogenerated}{\unicodesuper{\unichar{1084}}}%
+\uc@dclc{122940}{autogenerated}{\unicodesuper{\unichar{1086}}}%
+\uc@dclc{122941}{autogenerated}{\unicodesuper{\unichar{1087}}}%
+\uc@dclc{122942}{autogenerated}{\unicodesuper{\unichar{1088}}}%
+\uc@dclc{122943}{autogenerated}{\unicodesuper{\unichar{1089}}}%
+\uc@dclc{122944}{autogenerated}{\unicodesuper{\unichar{1090}}}%
+\uc@dclc{122945}{autogenerated}{\unicodesuper{\unichar{1091}}}%
+\uc@dclc{122946}{autogenerated}{\unicodesuper{\unichar{1092}}}%
+\uc@dclc{122947}{autogenerated}{\unicodesuper{\unichar{1093}}}%
+\uc@dclc{122948}{autogenerated}{\unicodesuper{\unichar{1094}}}%
+\uc@dclc{122949}{autogenerated}{\unicodesuper{\unichar{1095}}}%
+\uc@dclc{122950}{autogenerated}{\unicodesuper{\unichar{1096}}}%
+\uc@dclc{122951}{autogenerated}{\unicodesuper{\unichar{1099}}}%
+\uc@dclc{122952}{autogenerated}{\unicodesuper{\unichar{1101}}}%
+\uc@dclc{122953}{autogenerated}{\unicodesuper{\unichar{1102}}}%
+\uc@dclc{122955}{autogenerated}{\unicodesuper{\unichar{1241}}}%
+\uc@dclc{122956}{autogenerated}{\unicodesuper{\unichar{1110}}}%
+\uc@dclc{122957}{autogenerated}{\unicodesuper{\unichar{1112}}}%
+\uc@dclc{122958}{autogenerated}{\unicodesuper{\unichar{1257}}}%
+\uc@dclc{122959}{autogenerated}{\unicodesuper{\unichar{1199}}}%
+\uc@dclc{122961}{autogenerated}{\unicodesub{\unichar{1072}}}%
+\uc@dclc{122962}{autogenerated}{\unicodesub{\unichar{1073}}}%
+\uc@dclc{122963}{autogenerated}{\unicodesub{\unichar{1074}}}%
+\uc@dclc{122964}{autogenerated}{\unicodesub{\unichar{1075}}}%
+\uc@dclc{122965}{autogenerated}{\unicodesub{\unichar{1076}}}%
+\uc@dclc{122966}{autogenerated}{\unicodesub{\unichar{1077}}}%
+\uc@dclc{122967}{autogenerated}{\unicodesub{\unichar{1078}}}%
+\uc@dclc{122968}{autogenerated}{\unicodesub{\unichar{1079}}}%
+\uc@dclc{122969}{autogenerated}{\unicodesub{\unichar{1080}}}%
+\uc@dclc{122970}{autogenerated}{\unicodesub{\unichar{1082}}}%
+\uc@dclc{122971}{autogenerated}{\unicodesub{\unichar{1083}}}%
+\uc@dclc{122972}{autogenerated}{\unicodesub{\unichar{1086}}}%
+\uc@dclc{122973}{autogenerated}{\unicodesub{\unichar{1087}}}%
+\uc@dclc{122974}{autogenerated}{\unicodesub{\unichar{1089}}}%
+\uc@dclc{122975}{autogenerated}{\unicodesub{\unichar{1091}}}%
+\uc@dclc{122976}{autogenerated}{\unicodesub{\unichar{1092}}}%
+\uc@dclc{122977}{autogenerated}{\unicodesub{\unichar{1093}}}%
+\uc@dclc{122978}{autogenerated}{\unicodesub{\unichar{1094}}}%
+\uc@dclc{122979}{autogenerated}{\unicodesub{\unichar{1095}}}%
+\uc@dclc{122980}{autogenerated}{\unicodesub{\unichar{1096}}}%
+\uc@dclc{122981}{autogenerated}{\unicodesub{\unichar{1098}}}%
+\uc@dclc{122982}{autogenerated}{\unicodesub{\unichar{1099}}}%
+\uc@dclc{122983}{autogenerated}{\unicodesub{\unichar{1169}}}%
+\uc@dclc{122984}{autogenerated}{\unicodesub{\unichar{1110}}}%
+\uc@dclc{122985}{autogenerated}{\unicodesub{\unichar{1109}}}%
+\uc@dclc{122986}{autogenerated}{\unicodesub{\unichar{1119}}}%
+\uc@dclc{122987}{autogenerated}{\unicodesuper{\unichar{1195}}}%
+\uc@dclc{122989}{autogenerated}{\unicodesuper{\unichar{1201}}}%
+%%% Local Variables:
+%%% mode: latex
+%%% coding: utf-8
+%%% End:
diff --git a/macros/latex/contrib/ucs/data/uni-global.def b/macros/latex/contrib/ucs/data/uni-global.def
index 8b3d84dfe9..dc7eacadae 100644
--- a/macros/latex/contrib/ucs/data/uni-global.def
+++ b/macros/latex/contrib/ucs/data/uni-global.def
@@ -14,18 +14,18 @@
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
\ProvideTextCommandDefault{\textthreequarters}{\ensuremath{\frac34}}
\fi
-\DeclareUnicodeOption{tipa}%
-\DeclareUnicodeOption{dirty}%
-\DeclareUnicodeOption{default}%
\DeclareUnicodeOption{cjkgb}%
\DeclareUnicodeOption{cjkhangul}%
-\DeclareUnicodeOption{postscript}%
+\DeclareUnicodeOption{dirty}%
\DeclareUnicodeOption{ctrlglyphs}%
+\DeclareUnicodeOption{postscript}%
+\DeclareUnicodeOption{mathletters}%
\DeclareUnicodeOption{cjkjis}%
\DeclareUnicodeOption{cjkbg5}%
-\DeclareUnicodeOption{privatecsur}%
\DeclareUnicodeOption{autogenerated}%
-\DeclareUnicodeOption{mathletters}%
+\DeclareUnicodeOption{tipa}%
+\DeclareUnicodeOption{default}%
+\DeclareUnicodeOption{privatecsur}%
%%% Local Variables:
%%% mode: latex
%%% coding: utf-8
diff --git a/macros/latex/contrib/ucs/data/uninames.dat b/macros/latex/contrib/ucs/data/uninames.dat
index d5b0e7d197..5a1ee71942 100644
--- a/macros/latex/contrib/ucs/data/uninames.dat
+++ b/macros/latex/contrib/ucs/data/uninames.dat
@@ -2,72 +2,72 @@
\ifx\ProvidesFile\undefined\else
\ProvidesFile{uninames.dat}[2022/08/07 UCS: Unicode character names, compressed]%
\fi
-\def\hc@bbabababbbbbbaaabb{\add v}%
-\def\hc@bbabababa{\add X}%
-\def\hc@aabbabaa{\add 2}%
-\def\hc@bbabababbbbbbaaababb{\add m}%
-\def\hc@bbabababbbabaa{\add <}%
-\def\hc@bbababaab{\add \MessageBreak}%
-\def\hc@bbabababbbbbbaaaab{\add )}%
-\def\hc@aba{\add { }}%
-\def\hc@bbbbbbaabb{\add 9}%
-\def\hc@bbbba{\add O}%
+\def\hc@abbbbaa{\add V}%
+\def\hc@bbabababbbbaabb{\add g}%
\def\hc@aaba{\add N}%
+\def\hc@aabbabbbb{\add 8}%
+\def\hc@bbbbbbaaba{\add 6}%
+\def\hc@bbabababbbbaaba{\add '}%
+\def\hc@bbba{\add E}%
+\def\hc@bbabababba{\add 7}%
+\def\hc@bbabababbbabba{\add a}%
+\def\hc@bbbbbbaaa{\add Z}%
+\def\hc@bbbbbbabba{\add 5}%
\def\hc@bbababb{\add F}%
-\def\hc@bbabababbbaabaaa{\add s}%
-\def\hc@bbababaaa{\add Q}%
-\def\hc@aabbb{\add G}%
+\def\hc@babb{\add I}%
+\def\hc@bbabababbbbbbaaabaaa{\add y}%
\def\hc@abbbbab{\add -}%
+\def\hc@bbababaaa{\add Q}%
+\def\hc@bbabababbbaabaabba{\add (}%
\def\hc@bbaa{\add T}%
-\def\hc@bbabababbbaaa{\add r}%
-\def\hc@babb{\add I}%
-\def\hc@bbbbbbaaba{\add 6}%
-\def\hc@baab{\add L}%
-\def\hc@bbbbba{\add D}%
-\def\hc@bbabbb{\add U}%
-\def\hc@baaaa{\add C}%
-\def\hc@aabbabbba{\add 3}%
-\def\hc@abbba{\add M}%
-\def\hc@bbbbbbb{\add W}%
-\def\hc@bbabababbbbbbaabb{\add h}%
+\def\hc@bbabababbbbbbb{\add t}%
+\def\hc@babab{\add S}%
+\def\hc@aba{\add { }}%
+\def\hc@bbabababbbaabb{\add c}%
+\def\hc@bbabababbbbbbaaababa{\add w}%
\def\hc@bbabababbbbbbaaabaab{\add b}%
-\def\hc@bbabababbbbbbaaaaa{\add (}%
-\def\hc@bbabababbbaabaaba{\add x}%
-\def\hc@abbbbaa{\add V}%
-\def\hc@aaa{\add A}%
-\def\hc@bbbbbbabbb{\add 4}%
-\def\hc@bbabababba{\add 7}%
-\def\hc@bbbbbbabba{\add 5}%
+\def\hc@aabbaa{\add K}%
+\def\hc@bbabababbbbbbaaabb{\add v}%
\def\hc@bbabababbbaabab{\add d}%
-\def\hc@bbabababbbbbbaaababa{\add w}%
-\def\hc@abba{\add R}%
-\def\hc@bbabababbbabbb{\add e}%
-\def\hc@bbabababbbabab{\add c}%
-\def\hc@bbbbbbaaa{\add Z}%
-\def\hc@bbba{\add E}%
-\def\hc@bbabababbbaabb{\add a}%
+\def\hc@bbabababbbabaa{\add <}%
+\def\hc@bbabababbbbbbaaababb{\add m}%
\def\hc@bbabaa{\add B}%
-\def\hc@bbabababbbbaab{\add l}%
+\def\hc@aabbb{\add G}%
+\def\hc@baaaa{\add C}%
+\def\hc@baab{\add L}%
+\def\hc@bbabba{\add P}%
+\def\hc@bbabababa{\add X}%
+\def\hc@bbbbbbb{\add W}%
\def\hc@baaab{\add H}%
-\def\hc@abbbbb{\add Y}%
-\def\hc@bbabababbbbbbaaba{\add p}%
+\def\hc@bbabababbbbaaa{\add e}%
+\def\hc@bbabababbbbba{\add o}%
+\def\hc@bbbbbbaabb{\add 9}%
\def\hc@bbabababbbbbbab{\add i}%
+\def\hc@bbbba{\add O}%
+\def\hc@bbabababbbaabaabbb{\add )}%
+\def\hc@aabbabbba{\add 3}%
+\def\hc@bbbbba{\add D}%
+\def\hc@aabbabaa{\add 2}%
\def\hc@aabbabab{\add 1}%
-\def\hc@aabbabba{\add 0}%
-\def\hc@babab{\add S}%
-\def\hc@aabbabbbb{\add 8}%
-\def\hc@bbabababbbbaaab{\add g}%
-\def\hc@aabbaa{\add K}%
-\def\hc@bbabababbbbbbb{\add t}%
-\def\hc@bbabababbbbaaaa{\add '}%
-\def\hc@bbabababbbbba{\add o}%
-\def\hc@bbabababbbbab{\add n}%
-\def\hc@bbabba{\add P}%
-\def\hc@bbabababbbabba{\add >}%
-\def\hc@bbabababbbaabaabb{\add u}%
-\def\hc@bbabababbbbbbaaabaaa{\add y}%
\def\hc@babaa{\add {Unicode character \number\uc@got\uc@spc = U+\uc@temp@a:\MessageBreak}}%
+\def\hc@bbabababbbbbbaaaa{\add x}%
+\def\hc@bbabababbbaaa{\add r}%
\def\hc@bbbbbbaba{\add J}%
+\def\hc@bbabababbbabbb{\add l}%
+\def\hc@bbabbb{\add U}%
+\def\hc@bbabababbbbab{\add n}%
+\def\hc@abbbbb{\add Y}%
+\def\hc@aaa{\add A}%
+\def\hc@bbabababbbbbbaaba{\add p}%
+\def\hc@aabbabba{\add 0}%
+\def\hc@bbababaab{\add \MessageBreak}%
+\def\hc@bbabababbbabab{\add >}%
+\def\hc@bbbbbbabbb{\add 4}%
+\def\hc@abbba{\add M}%
+\def\hc@abba{\add R}%
+\def\hc@bbabababbbbbbaabb{\add h}%
+\def\hc@bbabababbbaabaaba{\add u}%
+\def\hc@bbabababbbaabaaa{\add s}%
\count255=128
\loop\ifnum\count255<256\relax
\catcode\count255=13
@@ -239,37 +239,37 @@
\def\0{\toks255\expandafter{\the\toks255 a}\2}%
\def\2{\expandafter\ifx\csname hc@\the\toks255\endcsname\relax
\else\csname hc@\the\toks255\endcsname\toks255{}\fi}%
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ絬
-Gӫӫ׫ݯߵな
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ癰
-Gӫӫ׫ݯߵٹߖ𧯫
-Gӫӫ׫ݯߵٹ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ㽼
-Gӫӫ׫ݯߵ㽼
-Gӫӫ׫ݯߵÁ䱺؆
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ䐘ߏ
-Gӫӫ׫ݯߵߔϵ
-Gӫӫ׫ݯߵなҾ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵڻ߯
-Gӫӫ׫ݯߵ鮯
-Gӫӫ׫ݯߵց
-Gӫӫ׫ݯߵ˯
-Gӫӫ׫ݯߵˑ
-Gӫӫ׫ݯߵ˟
-Gӫӫ׫ݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ絬
+Gӫӫϫݯߵな
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ癰
+Gӫӫϫݯߵٹߖד
+Gӫӫϫݯߵٹ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵד
+Gӫӫϫݯߵ㽼
+Gӫӫϫݯߵ㽼
+GӫӫϫݯߵÁ䱺؆
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ䐘ߏ
+Gӫӫϫݯߵߔϵ
+GӫӫϫݯߵなҾ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵڻ߯
+Gӫӫϫݯߵ鮯
+Gӫӫϫݯߵց
+Gӫӫϫݯߵ˯
+Gӫӫϫݯߵˑ
+Gӫӫϫݯߵ˟
+Gӫӫϫݯߵ
GԒΆ
GӨ⧃
@@ -365,39 +365,39 @@ Gҽņƒͧܫ룄
G
Gּژ៫
-Gӫӫ׫ݯߵݞ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ౶羨
-Gӫӫ׫ݯߵŏ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵś
-Gӫӫ׫ݯߵ羠
-Gӫӫ׫ݯߵߐ
-Gӫӫ׫ݯߵ癰
-Gӫӫ׫ݯߵ癰܃
-Gӫӫ׫ݯߵٹ
-Gӫӫ׫ݯߵٱ
-Gӫӫ׫ݯߵٱ
-Gӫӫ׫ݯߵީٹߵ
-Gӫӫ׫ݯߵϕޖ
-Gӫӫ׫ݯߵϕޖ
-Gӫӫ׫ݯߵ׍
-Gӫӫ׫ݯߵͷέ
-Gӫӫ׫ݯߵͷέ
-Gӫӫ׫ݯߵŮ
-Gӫӫ׫ݯߵ騢
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵڟܚ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵ
-Gӫӫ׫ݯߵϔ֬߷
-Gӫӫ׫ݯߵŇˍ
-Gӫӫ׫ݯߵֹ֣ن
-Gӫӫ׫ݯߵǪל眅
-Gӫӫ׫ݯߵͷ
-Gӫӫ׫ݯߵ۴˳ʏ
+Gӫӫϫݯߵݞ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ౶羨
+Gӫӫϫݯߵŏ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵśד
+Gӫӫϫݯߵ羠
+Gӫӫϫݯߵߐ
+Gӫӫϫݯߵ癰
+Gӫӫϫݯߵ癰܃
+Gӫӫϫݯߵٹ
+Gӫӫϫݯߵٱ
+Gӫӫϫݯߵٱ
+Gӫӫϫݯߵީٹߵ
+Gӫӫϫݯߵϕޖ
+Gӫӫϫݯߵϕޖ
+Gӫӫϫݯߵ׍
+Gӫӫϫݯߵͷέ
+Gӫӫϫݯߵͷέ
+GӫӫϫݯߵŮ
+Gӫӫϫݯߵ騢
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵڟܚ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵ
+Gӫӫϫݯߵϔ֬߷
+GӫӫϫݯߵŇˍ
+Gӫӫϫݯߵֹ֣ن
+GӫӫϫݯߵǪל眅
+Gӫӫϫݯߵͷ
+Gӫӫϫݯߵ۴˳ʏ
G޽ŽˑŽ
G羮ȸ
@@ -3215,7 +3215,8 @@ G߬ώ
H1G
-HDG햫苽Ϟ
+G햫苽Ϟǚ
+HCG햫苽Ϟ
G
@@ -3579,7 +3580,8 @@ Gңϋ
Gңϋᵀ
Gң倔Ά
Gң䫜
-H2Gңޗ
+Gң
+H1Gңޗ
Gңޗ
Gңޖ
Gңޖ
@@ -11469,7 +11471,11 @@ GضݬٿÜέ
GضݬٿÜέ
GضݬٿÜΩ
GضݬٿÜ皢
-H4Gض
+GضݬٿÜΦ
+GضݬٿÜΩͳ
+GضݬٿÜͿʷ
+GضݬٿÜﰲ
+Gض
Gض󕮽۩܋
G󞧃
@@ -11943,7 +11949,8 @@ Gҏ׍Ψ
Gҏ׍Ψ
Gҏ׍έ
Gҏ׍έ
-HCG󕮉ʙ
+HBGضݬٿÜᆯ
+G󕮉ʙ
G󕮉
G󕮉׾
G󕮉
@@ -12470,7 +12477,7 @@ GضѪ߻ֿ֮
GضѪ߻֣
GضѪ߻֣ߋ
-I19C0I19BFGҍŽ׾׍˫߫ב
+I19C0I19BFGҍŽ׍ëב
GҞُ˼
GҞُ˼
GҞ߯ËŲ
@@ -12535,7 +12542,7 @@ GҞ֢󖛾
GҞո̅
GҞï
GҞڻϲ
-I5200I51FFGҍŽ׾׍ލ
+I5200I51FFGҍŽ׍ޭ
Gկ棤
Gկ棤
Gկ棤
@@ -15412,7 +15419,7 @@ GƗ
GƗݳ
GƗŲ
-I2BAAI2BA3Gҍϫϫ׾
+I2BAAI2BA3Gҍ˫ݫ߫߫۫׾
HCGҐ❼
GҐ❼
GҐ❟
@@ -15485,10 +15492,10 @@ GҐޑĺއꄾ
GҐޑĺУ
GҐޑĺ뿫
GҐޑĺ
-I384I37FGҍ۵ϫݷꝯǫպϫ׍ޝ
-I80I7FGҍݯ׺ǫדǫϫ߫
-I400I3FFGҍ򽮚ܵ
-I1900I18FFGҍݯ׾
+I384I37FGҍ۵۫ފϫպ˫׍޽
+I80I7FGҍݯǫגϫ۫
+I400I3FFGҍ򭮚ܵ
+I1900I18FFGҍݯ
Gҏ綌ѽ
Gҏ綌ѽ
Gҏ綌ѽ
@@ -19626,7 +19633,10 @@ GَΏ߂
G⧃
H2Gʡž
GԖ跻Ր
-H4EGք癄
+H4BGИ܊ׄ̍
+GИ܊ׄ󾭠
+GИ܊ׄ󾧇
+Gք癄
Gք癵¨ۣ
Gք癴
Gք癵«
@@ -20291,7 +20301,10 @@ Gƭ
Gƭ͍ˌ
Gƭɫ
-H41G
+Gƭβ
+Gƭβ֟
+GƭϠ
+H3EG
G
G
G
@@ -21489,7 +21502,17 @@ GӰٔչ
GӰٔⳲĺل
GӰٔⳲل
GӰٔչײ
-H107GӤ
+H7GΆ
+GΆԼ
+Gڢ
+GڢţƵ
+Gճߖ
+Gճߖ
+Gέ
+GŲ
+Gεέ
+Gپ
+HF6GӤ
GӤ栚
@@ -21817,7 +21840,93 @@ GపϞն
GపϞն
Gపۅځ
Gపܯ
-HB7Gҷ
+H7G˗
+G璂
+G璷ĵ
+G璼ݡǍ
+Gϳ
+Gϳ
+Gϳ
+Gϳ
+Gϳ
+Gϳ߾
+Gϳ􂷂
+Gϳ􂷂
+Gϳ􂷂
+Gϳ􂷂
+Gϳ
+Gϳ
+Gϳ
+H1Gϳ䰵
+Gϳ䲑
+Gϳ
+Gϳ伣
+Gϳ
+Gϳ
+Gϳ儣
+Gϳ
+Gϳ
+Gϳ
+Gϳ̍
+Gϳĵ
+Gϳ
+Gϳ
+Gϳ䢍
+Gϳ
+Gϳ
+Gϳ
+Gϳ
+Gϳ
+Gϳص
+Gϳڑ
+Gϳе
+Gϳґ
+Gϳ
+Gϳ
+Gϳ
+Gϳ
+Gϳ
+Gϳ嬣
+Gϳ季
+Gϳ
+Gϳ
+Gϳ
+Gڼ
+Gڼ¹琍
+Gڼ
+Gڼ׽
+Gڼ
+Gڼ
+GڼϞ
+H3Gڼ
+Gڼ
+Gڼ
+G璙ϛ
+Gٹ
+G
+G
+G×ƹ
+Gȧζ
+Gˮ
+GŽ
+G
+Gϗ
+Gˍ
+Gʋ
+Gˮۡ
+G
+Gʉۑ
+G
+G
+G
+G
+G
+G
+G
+G޼
+Gּ
+G֮
+H56Gҷ
HFGӁ×߲
GӁ×ղ
GӁ×랜߲
@@ -24273,7 +24382,8 @@ GǿۖߛЃ
GǿۖߛЃܶ
GǿۖߛЃܵ
GǿۖߛЃܴ
-H1Gǿۖߛ盗ٹ
+Gǿۖߛ
+Gǿۖߛ盗ٹ
GǿۖߛԾ
Gǿۖߛ޶ە
Gǿۖߛ޶畸
@@ -24282,7 +24392,36 @@ Gǿۖߛ޶痋
GǿۖߛϜ
GǿۖߛΞ
Gǿۖߛ׋ǻ
-HFC7GЈؒ춚
+Gǿۖߛ޶ϵ
+Gǿۖߛ޶۵
+Gǿۖߛ޶
+GǿۖߛΞܨ
+Gǿۖߛ׋񡟫
+GǿۖߛΞń
+Gǿۖߛ׋Ͼ
+Gǿۖߛʟ
+Gǿۖߛ鐣
+GǿۖߛԢ
+Gǿۖߛ
+GǿۖߛԢ׊ۜ
+Gǿۖߛք
+Gǿۖߛ
+Gǿۖߛߐە
+Gǿۖߛߐ畸
+Gǿۖߛߐׁ
+Gǿۖߛߐۗ
+Gǿۖߛߐ۵
+Gǿۖߛߐ畸ą
+Gǿۖߛߐׁߖ
+Gǿۖߛߐ痋
+Gǿۖߛߐەą
+Gǿۖߛߐ
+Gǿۖߛߐׁߖϳ
+Gǿۖߛߐ
+Gǿۖߛߐې
+Gǿۖߛߐ琗
+Gǿۖߛߵ
+HFAAGЈؒ춚
GЈؒ춚
GЈؒ춛
GЈؒ
@@ -25976,7 +26115,7 @@ G
G²ۋ
HBG‡ޡܟǧ
G‡ޡܟǧğ
-I1806I17F7Gҍח߫ǫמ
+I1806I17F7Gҍחϫ׶
H8GӀŇ
GӀŇ
GӀŇ
@@ -27215,7 +27354,7 @@ G²ۊÄ潚
G²ۊÄ潚
G²ۊÄ潚
G²ۊÄ潚
-I33I8Gҍח߫ǫמד߫
+I33I8Gҍחϫ׶ג
H22E7G֢
@@ -27520,10 +27659,12 @@ Gқ袗
G󐴑
G󐴑
G󐴑
-H2DGқܓ
+HFGқܓ
+H1DGқܓ
Gқܓ
Gқܓ
-H11G󕮉
+H2G󕮉ʙ
+HEG󕮉
G󕮉
G󕮉
G󕮉ʖ
@@ -28804,7 +28945,27 @@ Gҏ岝ݼ
Gҏ岝ㅼ
Gҏ岝
G
-H9AG
+H7AGϞ«
+GϞ«
+GϞ«
+GϞ«
+GϞ«
+GϞ«
+GϞª
+GϞª޼
+GϞ«ּ
+GϞ¨֮
+GϞ«
+GϞ«Ζ
+GϞ«
+GϞ«۳ܭ
+GϞ«
+GϞ«
+GϞª
+GϞª޼ܭ
+GϞ«ּ
+GϞ¨֮
+HCG
G
G
G
@@ -30635,7 +30796,13 @@ Gң²發ӻ
Gң²癳ž웢ӻ
Gң²癠ӻ
Gң²癪ԛں
-HE1Gҏ岝Ӽ܊
+H6Gң²百
+Gң²癥콳Ş
+Gң²癉콳Ş
+Gң²癙콳Ş
+Gң²癪ϵƵ
+Gң²癱콳Ş
+HD5Gҏ岝Ӽ܊
Gҏ岝Ӽ܊
Gҏ岝Ӽ܊
Gҏ岝Ӽ܊
@@ -30673,7 +30840,70 @@ Gҏ岝Ӽ܊ո
Gҏ岝Ӽ܊˝
Gҏ岝Ӽ܊ڬ
Gҏ岝Ӽ܊
-HD5G۷ʗ槆
+H5Gʽ
+Gʽ
+Gʽ
+Gʽ
+Gʽ
+Gʽ
+Gʽ
+Gʽ
+Gʽ
+Gʽ
+Gʽק
+Gʽם
+Gʽ
+Gʽ
+Gʽכ
+Gʽ׫
+Gʽֻ
+Gʽ
+Gʽ׵
+Gʽԣ
+Gʽ֫
+Gʽԑ
+Gʽձ
+Gʽ
+Gʽ׵
+Gʽ
+Gʽ
+Gʽհ
+Gʽؓ󌖫
+Gʽ
+Gʽ
+Gʽո
+Gʽ១
+Gؚ҇
+Gؚ҇歝
+Gؚ҇
+Gؚ҇
+Gؚ҇
+Gؚ҇
+Gؚ҇
+Gؚ҇
+Gؚ҇
+Gؚ҇棃
+Gؚ҇
+Gؚ҇毵
+Gؚ҇
+Gؚ҇
+Gؚ҇
+Gؚ҇
+Gؚ҇
+Gؚ҇
+Gؚ҇樣
+Gؚ҇
+Gؚ҇þ
+Gؚ҇
+Gؚ҇ŷ
+Gؚ҇歏밧昬ք
+Gؚ҇ǵ
+Gؚ҇Ľ
+Gʽת֎
+GʽŴ
+Gʽոݿޙ
+H21Gҏ岝י܊ׄβۂ尥
+H70G۷ʗ槆
G۷ʗԵ
G۷ʗ
G۷ʗ欍
@@ -30834,7 +31064,49 @@ G߬Ϝ
G߬ώ
H5Gľ
-H4E0GٍƗ
+H1D0G
+G
+G
+G
+G
+Gȵ
+Gȿ
+Gȴ
+Gȉ
+Gȣ
+G
+G
+G
+G
+G
+G˾
+G˼
+G˿
+G˹
+G˻
+G
+Gĭ
+G
+G
+G
+G
+Gӝ
+GΥ
+GΤ
+GΥϟ
+GΥ
+GΥ
+Gޗ
+Gޗ
+Gޖ
+Gޖ
+Gޖ
+Gޖ޻
+Gޕյ
+Gޕ
+Gޗ
+Gޑ
+H2E6GٍƗ
GٍƗ
GٍƗ
GٍƗ
@@ -32909,7 +33181,8 @@ GӰ
-H5GӴ
+H4G
+GӴ
G
GҐń
@@ -33054,7 +33327,15 @@ GЦ
GЦ
GЦʑ
GЦʑ
-HCGӤĆ՚Nj
+GҾ
+G޸
+Gһș
+H4Gґ
+G΃
+G
+GӨ
+Gý
+GӤĆ՚Nj
GӤĆϻ՚Nj
GӤĆَ֬ׯӬք
GӤĆَ֬ׯӬք
@@ -33143,7 +33424,8 @@ Gҋˍ
Gܸ޹½ք
Gҋݣ
Gܸ޹½Է
-H7Gҡ
+G֮ٳߗΪ
+H6Gҡ
Gҡꋴ
Gҡ⨭ϵ
Gҡۧʋ
@@ -33665,7 +33947,10 @@ G
G
GӑǪ
-H3Gٽڧ
+GҶڧ
+G
+Gӵ
+Gٽڧ
G
@@ -33677,7 +33962,9 @@ Gӧ޻̄
GӵȰ
Gݮǯ
-H9G֣퐮
+G
+GӮ
+H7G֣퐮
G
@@ -33706,7 +33993,10 @@ G볼Ц
-H3GӮ
+Gӯ
+Gґׁ
+G߆
+GӮ
G
Gҏވ
@@ -33717,13 +34007,19 @@ GҾ
GݮϮ
-H5GЈ箁
+Gҗ⋖
+G
+G
+H1G
+GЈ箁
Gӷڼ
Gӳ⸋
Gӷ߉
-HAGӤγ
+H8Gッ
+Gij
+GӤγ
G
@@ -33733,7 +34029,9 @@ GӜ
G
-H6Gάǭ
+G
+Gӷ
+H4Gάǭ
Gѝĝ
GӬŽՠʐβ
GӬŶَ
@@ -33741,14 +34039,17 @@ GӬž؟≧ߑ
GӲ눻
-H8GҐپȋѠ﫯
+Gˑ묡
+H7GҐپȋѠ﫯
GּՈ
Gҽը
GӰт
GӰ˾列
G˖ϗ
GҞċ
-H9GӤů
+Gҽխ
+Gּ۽َт
+H7GӤů
GӤů
GӤů
GӤů
@@ -33960,12 +34261,13 @@ Gޝ
Gޝ޼
Gޝּ
Gޝ֮
-IAAE6IA6DFGҍŽ׾׍˫߫ב
-I1059I1038GҍŽ׾׍˫߫ב
-IE5IDDGҍŽ׾׍˫߫ב
-I1684I1681GҍŽ׾׍˫߫ב
-I1D3FI1D30GҍŽ׾׍˫߫ב
-HC1FGҏ綌ѽ
+IAAE6IA6DFGҍŽ׍ëב
+I105AI1039GҍŽ׍ëב
+IE4IDDGҍŽ׍ëב
+I1684I1681GҍŽ׍ëב
+I1D3FI1D30GҍŽ׍ëב
+I27DI26DGҍŽ׍ëב
+H9A2Gҏ綌ѽ
Gҏ綌ѽ
Gҏ綌ѽ
Gҏ綌ѽ
@@ -34507,8 +34809,9 @@ Gҏ綌ѽԵ
Gҏ綌ѽצ
Gҏ綌ѽ֍
Gҏ綌ѽ
-I192DI134AGҍŽ׾׍˫߫ב
-HAECB6GҠ
+I192DI134AGҍŽ׍ëב
+I1065I105FGҍŽ׍ëב
+HADC51GҠ
H1EGӀᇵ
GӀ⧃
GӀԷƵ
@@ -34845,8 +35148,8 @@ G񕽞Þ
G񕽞Þ
G񕽞Þ
G񕽞Þ
-I1FE0EIFFFDGҍ˶׍߫
-I10000IFFFDGҍ˶׍߫
+I1FE0EIFFFDGҍވ˶׍
+I10000IFFFDGҍވ˶׍
%%% Local Variables:
%%% mode: latex
%%% coding: no-conversion
diff --git a/macros/latex/contrib/ucs/email.txt b/macros/latex/contrib/ucs/email.txt
new file mode 100644
index 0000000000..d38bee856f
--- /dev/null
+++ b/macros/latex/contrib/ucs/email.txt
@@ -0,0 +1,93 @@
+
+ctan (CC Christian and Karl for information)
+
+I'm about to upload ucs package (inputenc utf8x option)
+
+Please mark Dominique Unruh and Wolfgang Jeltsch as inactive and add
+me d.p.carlisle@gmail.com as maintainer with support URL
+
+https://github.com/LaTeX-Package-Repositories/ucs
+https://github.com/LaTeX-Package-Repositories/ucs/issues
+
+I'll add a public announce in the upload form but basically this makes
+
+\usepackage[utf8x]{inputenc}
+
+a no-op unless ucs.sty loaded (in which case some emergency patches
+are made for current latex releases).
+
+I re-organised the ctan zip a bit, removing extensionless files, so
+README.txt not README, and removing all the .def and .sty that are
+generated by
+tex ucs.ins
+If you generate, you may end up with all these files in latex/ucs rather
+than some in latex/ucs/utils but that is cosmetic, it does not matter
+either way.
+
+
+The main data/*.def files have been re-generated for Unicode 14 so have
+some additional files.
+
+
+
+David
+
+*****************************
+
+Handover from original authors:
+
+*****************************
+
+Dominique Unruh
+
+*****************************
+
+Dear David Carlisle,
+
+I have asked a mutual colleague for Wolfgang's current mail address and
+was told to try wolfgang-it@jeltsch.info.
+
+I hope you can reach them there.
+
+I don't want to preempt Wolfgang's response, but if you still cannot
+reach them, from my side there are no objections to an emergency update.
+But please check with Wolfgang first since they are the maintainer now
+and I haven't touched ucs/utf8x in many years.
+
+Best wishes,
+Dominique.
+
+
+*****************************
+
+Wolfgang Jeltsch
+
+*****************************
+
+Dear David,
+
+thanks a lot for reaching out to me.
+
+I’m absolutely happy with the LaTeX team performing an emergency update
+in the way you describe, including patching `ucs.sty`.
+
+Unfortunataly, I don’t have the time to maintain `ucs.sty` anymore.
+I realize that with XeTeX and LuaTeX we have now well-functioning TeX
+engines that support Unicode natively, which suggests that using `ucs`
+is kind of pointless these days. However, the trouble is that scientific
+publishers typically want you to submit LaTeX source code and at the
+same time usually don’t use Unicode-supporting TeX engines, from what I
+can see. Therefore, good Unicode support for LaTeX source files is still
+interesting to have for traditional TeX engines.
+
+The `inputenc` package does a great job in this regard when it comes to
+text mode. What would be needed, in my opinion, is a package that does
+the same for math mode and, unlike `ucs`, is as lightweight as
+`inputenc`. Is there perhaps already such a package, which I don’t know
+about? I was already thinking about implementing one myself, but, well,
+I don’t have the time for that right now.
+
+All the best,
+Wolfgang
+
+*****************************
diff --git a/macros/latex/contrib/ucs/hyperref-1.pdf b/macros/latex/contrib/ucs/hyperref-1.pdf
new file mode 100644
index 0000000000..c347f3cee1
--- /dev/null
+++ b/macros/latex/contrib/ucs/hyperref-1.pdf
Binary files differ
diff --git a/macros/latex/contrib/ucs/languages.ps.gz b/macros/latex/contrib/ucs/languages.ps.gz
index c3c4b70505..b3c8eaedf7 100644
--- a/macros/latex/contrib/ucs/languages.ps.gz
+++ b/macros/latex/contrib/ucs/languages.ps.gz
Binary files differ
diff --git a/macros/latex/contrib/ucs/ucs.dtx b/macros/latex/contrib/ucs/ucs.dtx
index 053662393b..9b11cdbd23 100644
--- a/macros/latex/contrib/ucs/ucs.dtx
+++ b/macros/latex/contrib/ucs/ucs.dtx
@@ -2,7 +2,7 @@
% -*-coding: utf-8; mode: latex;-*-
%
%<*driver>
-\ProvidesFile{ucs.dtx}[2022/08/07 v2.3
+\ProvidesFile{ucs.dtx}[2023/11/09 v2.4
UCS: Master document for generating documentation for ucs.sty]
%
\documentclass{ltxdoc}
@@ -149,10 +149,10 @@
% low level \TeX\ errors.
%
% The original maintainers kindly allowed the \LaTeX\ project members
-% to make this |2022/08/07 v2.3| release.
+% to make the releases from |2022/08/07 v2.3|. .
%
% The remaining documentation is unchanged but version 2.3 introduces
-% the following changes
+% the following changes, and version 2.4 aborts with a warning if used with Unicode TeX.
%
% \begin{itemize}
% \item If a document uses |\usepackage[utf8x]{inputenc}| when the
@@ -493,13 +493,26 @@
% \xsection{File \texttt{ucs.sty}}
% \begin{macrocode}
%<*ucs.sty>
+% \end{macrocode}
+% \begin{macrocode}
+\ifx\ProvidesPackage\undefined\else
+\ProvidesPackage{ucs}[2023/11/09 v2.4 UCS: Unicode input support]%
+\fi
+\ifx\Umathchar\undefined\else
+\ifx\PackageWarningNoLine\undefined\else
+\PackageWarningNoLine{ucs}{ucs package ignored with utf8 based engines}
+\fi
+\expandafter\endinput
+\fi
+% \end{macrocode}
+% \begin{macrocode}
% ^^A FIXME: What is the following code for? Is it for people who want to use ucs.sty with Plain TeX
% ^^A or ConTeXt?
\catcode`\@11
\ifx\AddToHook\@undefined\else
\AddToHook{package/hyperref/after}{%
- \def\HyPsd@expand@utfvii{%
+ \def\HyPsd@expand@UTFviii{%
\count@"C2
\@tempcnta"E0
\def\UTFviii@tmp{%
@@ -520,6 +533,7 @@
\UTFviii@loop
}
+ \let\HyPsd@expand@utfvii\HyPsd@expand@UTFviii
}
\fi
@@ -721,11 +735,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
-\ifx\ProvidesPackage\undefined\else
-\ProvidesPackage{ucs}[2022/08/07 v2.3 UCS: Unicode input support]%
-\fi
-% \end{macrocode}
% ^^A FIXME: We should update the date of ucs.sty even if the file ucs.sty has not changed, but the
% ^^A character mappings have. Otherwise, we cannot specify a complience level by adding a
% ^^A date to \usepackage{ucs} or \RequirePackage{ucs}.
@@ -2127,7 +2136,7 @@
% \begin{macrocode}
%<*utf8x.def>
\ifx\ProvidesFile\undefined\else
-\ProvidesFile{utf8x.def}[2022/08/07 UCS: Input encoding UTF-8]%
+\ProvidesFile{utf8x.def}[2023/11/09 UCS: Input encoding UTF-8]%
\ifx\uc@char@notloaded\@undefined
diff --git a/macros/latex/contrib/ucs/ucs.pdf b/macros/latex/contrib/ucs/ucs.pdf
index d0a228541c..56e4585a17 100644
--- a/macros/latex/contrib/ucs/ucs.pdf
+++ b/macros/latex/contrib/ucs/ucs.pdf
Binary files differ