summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-01-26 03:00:49 +0000
committerNorbert Preining <norbert@preining.info>2023-01-26 03:00:49 +0000
commit0c889bec86ba92853b3923e39de0b6bb17d18486 (patch)
treeb5034718570dbff113211df4d4b95510254d28ab
parent90299d4f0bdde9fb84d583d5c0e923cfe3869132 (diff)
CTAN sync 202301260300
-rw-r--r--FILES.byname146
-rw-r--r--FILES.byname.gzbin2511737 -> 2511844 bytes
-rw-r--r--FILES.last07days152
-rw-r--r--biblio/ctan-bibdata/ctan.bib25
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3641439 -> 3644491 bytes
-rw-r--r--graphics/pgf/contrib/tangramtikz/README.md7
-rw-r--r--graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.pdfbin0 -> 430175 bytes
-rw-r--r--graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.tex563
-rw-r--r--graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.pdfbin0 -> 428860 bytes
-rw-r--r--graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.tex565
-rw-r--r--graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty513
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin860401 -> 801869 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex710
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty165
-rw-r--r--macros/latex/contrib/tagpdf/README.md4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-backend.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-checks.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-code.pdfbin1532339 -> 1488604 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-data.dtx18
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-roles.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-space.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-struct.dtx40
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-tree.dtx92
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-user.dtx5
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.dtx13
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.pdfbin757067 -> 854620 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.tex116
-rw-r--r--macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty24
-rw-r--r--macros/luatex/latex/luaquotes/README3
-rw-r--r--macros/luatex/latex/luaquotes/luaquotes-documentation.pdfbin104899 -> 60240 bytes
-rw-r--r--macros/luatex/latex/luaquotes/luaquotes-documentation.tex119
-rw-r--r--macros/luatex/latex/luaquotes/luaquotes.sty84
-rw-r--r--timestamp2
36 files changed, 2708 insertions, 696 deletions
diff --git a/FILES.byname b/FILES.byname
index 078d002ac4..7ceddf305c 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2048,12 +2048,12 @@
2022/12/25 | 1673 | biblio/citation-style-language/README.md
2022/12/25 | 11958 | biblio/citation-style-language/vancouver.csl
2022/12/25 | 604004 | biblio/citation-style-language.zip
-2023/01/24 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/01/25 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2023/01/24 | 2761884 | biblio/ctan-bibdata/ctan.bib
-2023/01/24 | 3641550 | biblio/ctan-bibdata/ctan.pdf
+2023/01/25 | 2762261 | biblio/ctan-bibdata/ctan.bib
+2023/01/25 | 3641439 | biblio/ctan-bibdata/ctan.pdf
2023/01/16 | 1489 | biblio/ctan-bibdata/README
-2023/01/24 | 4036706 | biblio/ctan-bibdata.zip
+2023/01/25 | 4035994 | biblio/ctan-bibdata.zip
2022/02/06 | 3110 | biblio/pbibtex/pbibtex-base/cpp.awk
2022/02/06 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2022/02/06 | 22422 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5407,7 +5407,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2023/01/24 | 635732 | FILES.last07days
+2023/01/25 | 640101 | FILES.last07days
2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs
2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf
2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf
@@ -160023,6 +160023,13 @@
2020/10/16 | 2741 | graphics/pgf/contrib/syntaxdi/latex/syntaxdi.sty
2020/10/16 | 1919 | graphics/pgf/contrib/syntaxdi/README
2020/10/16 | 187671 | graphics/pgf/contrib/syntaxdi.zip
+2023/01/25 | 430175 | graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.pdf
+2023/01/25 | 18051 | graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.tex
+2023/01/25 | 428860 | graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.pdf
+2023/01/25 | 19321 | graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.tex
+2023/01/24 | 431 | graphics/pgf/contrib/tangramtikz/README.md
+2023/01/24 | 24050 | graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty
+2023/01/25 | 840931 | graphics/pgf/contrib/tangramtikz.zip
2014/12/22 | 292 | graphics/pgf/contrib/ticollege/doc/IndexHead.ist
2015/02/15 | 366516 | graphics/pgf/contrib/ticollege/doc/ticollege-doc.pdf
2015/02/15 | 28788 | graphics/pgf/contrib/ticollege/doc/ticollege-doc.tex
@@ -200939,7 +200946,7 @@
2013/04/01 | 14776 | macros/context/contrib/context-visualcounter/tex/context/third/visualcounter/t-visualcounter.mkvi
2018/03/05 | 11 | macros/context/contrib/context-visualcounter/VERSION
2018/03/22 | 276789 | macros/context/contrib/context-visualcounter.zip
-2023/01/15 | 115718728 | macros/context/latest/cont-tmf.zip
+2023/01/24 | 115733455 | macros/context/latest/cont-tmf.zip
2016/04/21 | 32846 | macros/cstex/base/cmexb.tar.gz
2016/06/26 | 1728262 | macros/cstex/base/csfonts-t1.tar.gz
2007/03/01 | 187106 | macros/cstex/base/csfonts.tar.gz
@@ -232070,15 +232077,15 @@
2023/01/02 | 10175 | macros/latex/contrib/proflycee/doc/graphics/pl-solve_c.png
2023/01/02 | 10145 | macros/latex/contrib/proflycee/doc/graphics/pl-solve_d.png
2023/01/24 | 736 | macros/latex/contrib/proflycee/doc/perroquet.csv
-2023/01/24 | 860401 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
-2023/01/24 | 235332 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+2023/01/25 | 801869 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+2023/01/25 | 235606 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
2022/11/06 | 712614 | macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.pdf
2022/11/06 | 192682 | macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.tex
-2023/01/24 | 529 | macros/latex/contrib/proflycee/doc/testscript.py
+2023/01/25 | 529 | macros/latex/contrib/proflycee/doc/testscript.py
2022/08/10 | 439 | macros/latex/contrib/proflycee/README.md
2022/11/06 | 112967 | macros/latex/contrib/proflycee/tex/ProfLycee-old.sty
-2023/01/24 | 132398 | macros/latex/contrib/proflycee/tex/ProfLycee.sty
-2023/01/24 | 1811687 | macros/latex/contrib/proflycee.zip
+2023/01/25 | 132594 | macros/latex/contrib/proflycee/tex/ProfLycee.sty
+2023/01/25 | 1756139 | macros/latex/contrib/proflycee.zip
1996/02/05 | 1760 | macros/latex/contrib/progkeys/demo/demo.tex
1996/02/05 | 459 | macros/latex/contrib/progkeys/demo/prog1.tex
1996/02/05 | 347 | macros/latex/contrib/progkeys/demo/prog2.tex
@@ -236455,55 +236462,55 @@
2016/02/03 | 1428 | macros/latex/contrib/tagpair/tagpair.sty
2016/09/23 | 3615 | macros/latex/contrib/tagpair/tagpair.tex
2016/09/23 | 71796 | macros/latex/contrib/tagpair.zip
-2022/12/28 | 23311 | macros/latex/contrib/tagpdf/acrobat.png
-2022/12/28 | 8652 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
-2022/12/28 | 1237 | macros/latex/contrib/tagpdf/ex-AF-file.tex
-2022/12/28 | 17742 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
-2022/12/28 | 4153 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
-2022/12/28 | 6626 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
-2022/12/28 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
-2022/12/28 | 7854 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
-2022/12/28 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
-2022/12/28 | 22818 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
-2022/12/28 | 2150 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
-2022/12/28 | 16888 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
-2022/12/28 | 2528 | macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
-2022/12/28 | 2637 | macros/latex/contrib/tagpdf/ex-patch-list.tex
-2022/12/28 | 18461 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
-2022/12/28 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
-2022/12/28 | 21067 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
-2022/12/28 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
-2022/12/28 | 6842 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
-2022/12/28 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
-2022/12/28 | 4618 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
-2022/12/28 | 777 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
-2022/12/28 | 1537 | macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
-2022/12/28 | 19363 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
-2022/12/28 | 801 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
-2022/12/28 | 8281 | macros/latex/contrib/tagpdf/global-ex.png
-2022/12/28 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
-2022/12/28 | 141163 | macros/latex/contrib/tagpdf/pac3.PNG
-2022/12/28 | 1177 | macros/latex/contrib/tagpdf/README.md
-2022/12/28 | 40916 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
-2022/12/28 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
-2022/12/28 | 30360 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
-2022/12/28 | 1532339 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
-2022/12/28 | 2262 | macros/latex/contrib/tagpdf/tagpdf-code.tex
-2022/12/28 | 34964 | macros/latex/contrib/tagpdf/tagpdf-data.dtx
-2022/12/28 | 5890 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
-2022/12/28 | 20673 | macros/latex/contrib/tagpdf/tagpdf.dtx
-2022/12/28 | 3928 | macros/latex/contrib/tagpdf/tagpdf.ins
-2022/12/28 | 26787 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
-2022/12/28 | 14482 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
-2022/12/28 | 15241 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
-2022/12/28 | 757067 | macros/latex/contrib/tagpdf/tagpdf.pdf
-2022/12/28 | 44428 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
-2022/12/28 | 5109 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
-2022/12/28 | 56531 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
-2022/12/28 | 107357 | macros/latex/contrib/tagpdf/tagpdf.tex
-2022/12/28 | 14587 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
-2022/12/28 | 27279 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
-2022/12/28 | 2181694 | macros/latex/contrib/tagpdf.zip
+2023/01/24 | 23311 | macros/latex/contrib/tagpdf/acrobat.png
+2023/01/24 | 8652 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
+2023/01/24 | 1237 | macros/latex/contrib/tagpdf/ex-AF-file.tex
+2023/01/24 | 17742 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
+2023/01/24 | 4153 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
+2023/01/24 | 6626 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
+2023/01/24 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
+2023/01/24 | 7854 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
+2023/01/24 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
+2023/01/24 | 22818 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
+2023/01/24 | 2150 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
+2023/01/24 | 16888 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
+2023/01/24 | 2528 | macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
+2023/01/24 | 2637 | macros/latex/contrib/tagpdf/ex-patch-list.tex
+2023/01/24 | 18461 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
+2023/01/24 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
+2023/01/24 | 21067 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
+2023/01/24 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
+2023/01/24 | 6842 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
+2023/01/24 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
+2023/01/24 | 4618 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
+2023/01/24 | 777 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
+2023/01/24 | 1537 | macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
+2023/01/24 | 19363 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
+2023/01/24 | 801 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
+2023/01/24 | 8281 | macros/latex/contrib/tagpdf/global-ex.png
+2023/01/24 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
+2023/01/24 | 141163 | macros/latex/contrib/tagpdf/pac3.PNG
+2023/01/24 | 1177 | macros/latex/contrib/tagpdf/README.md
+2023/01/24 | 40916 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+2023/01/24 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
+2023/01/24 | 30370 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+2023/01/24 | 1488604 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
+2023/01/24 | 2262 | macros/latex/contrib/tagpdf/tagpdf-code.tex
+2023/01/24 | 34964 | macros/latex/contrib/tagpdf/tagpdf-data.dtx
+2023/01/24 | 6247 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+2023/01/24 | 20721 | macros/latex/contrib/tagpdf/tagpdf.dtx
+2023/01/24 | 3928 | macros/latex/contrib/tagpdf/tagpdf.ins
+2023/01/24 | 26787 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+2023/01/24 | 14511 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+2023/01/24 | 15241 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+2023/01/24 | 854620 | macros/latex/contrib/tagpdf/tagpdf.pdf
+2023/01/24 | 44428 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+2023/01/24 | 5109 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
+2023/01/24 | 57372 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+2023/01/24 | 109529 | macros/latex/contrib/tagpdf/tagpdf.tex
+2023/01/24 | 17343 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+2023/01/24 | 27362 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
+2023/01/25 | 2219558 | macros/latex/contrib/tagpdf.zip
2007/08/04 | 1263 | macros/latex/contrib/talk/example.tex
2007/08/04 | 465 | macros/latex/contrib/talk/Makefile
2007/08/04 | 2162 | macros/latex/contrib/talk/README
@@ -243288,11 +243295,11 @@
2020/08/13 | 2650 | macros/luatex/latex/luaprogtable/luaprogtable-utility.lua
2020/08/13 | 1127 | macros/luatex/latex/luaprogtable/README.md
2020/08/14 | 450022 | macros/luatex/latex/luaprogtable.zip
-2023/01/15 | 104899 | macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
-2023/01/15 | 28838 | macros/luatex/latex/luaquotes/luaquotes-documentation.tex
-2023/01/15 | 16135 | macros/luatex/latex/luaquotes/luaquotes.sty
-2023/01/15 | 777 | macros/luatex/latex/luaquotes/README
-2023/01/15 | 111949 | macros/luatex/latex/luaquotes.zip
+2023/01/25 | 60240 | macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
+2023/01/25 | 32549 | macros/luatex/latex/luaquotes/luaquotes-documentation.tex
+2023/01/25 | 19340 | macros/luatex/latex/luaquotes/luaquotes.sty
+2023/01/25 | 832 | macros/luatex/latex/luaquotes/README
+2023/01/25 | 68936 | macros/luatex/latex/luaquotes.zip
2018/12/15 | 65 | macros/luatex/latex/luarandom/Changes
2018/12/15 | 49787 | macros/luatex/latex/luarandom/doc/luarandom-doc.pdf
2018/12/15 | 2795 | macros/luatex/latex/luarandom/doc/luarandom-doc.tex
@@ -285357,9 +285364,9 @@
2019/10/13 | 444 | systems/doc/luatex/luatex-logos.tex
2021/12/31 | 34337 | systems/doc/luatex/luatex-lua.tex
2022/10/28 | 72191 | systems/doc/luatex/luatex-math.tex
-2023/01/17 | 49316 | systems/doc/luatex/luatex-modifications.tex
+2023/01/24 | 49947 | systems/doc/luatex/luatex-modifications.tex
2023/01/17 | 98187 | systems/doc/luatex/luatex-nodes.tex
-2023/01/17 | 1786719 | systems/doc/luatex/luatex.pdf
+2023/01/24 | 1788188 | systems/doc/luatex/luatex.pdf
2020/03/14 | 5012 | systems/doc/luatex/luatex-preamble.tex
2019/10/13 | 1118 | systems/doc/luatex/luatex-registers.tex
2019/10/13 | 242 | systems/doc/luatex/luatex-statistics.tex
@@ -285367,7 +285374,7 @@
2023/01/17 | 3639 | systems/doc/luatex/luatex.tex
2022/10/28 | 98590 | systems/doc/luatex/luatex-tex.tex
2019/10/13 | 1313 | systems/doc/luatex/luatex-titlepage.tex
-2023/01/18 | 2067259 | systems/doc/luatex.zip
+2023/01/25 | 2069156 | systems/doc/luatex.zip
2015/04/30 | 66584 | systems/doc/metapost/CHANGES
2009/05/30 | 7430 | systems/doc/metapost/grdemo-doc.pdf
2009/05/30 | 3044 | systems/doc/metapost/grdemo.pdf
@@ -311145,7 +311152,6 @@
2007/02/12 | 395234 | systems/win32/texshell32/WinTeXShell32.zip
2022/09/23 | 2895 | systems/win32/TLW64/00README.TLW64
2022/09/22 | 60444303 | systems/win32/TLW64/gs1000w64full-gpl.exe
-2023/01/23 | 1469767 | systems/win32/TLW64/pdftex.zip
2022/12/26 | 124716603 | systems/win32/TLW64/tl-win64.zip
1996/11/26 | 1822 | systems/win32/tsconfig/readme
1996/11/26 | 30343 | systems/win32/tsconfig/tsconfig.zip
@@ -311365,7 +311371,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2023/01/25 | 186 | timestamp
+2023/01/26 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2021/11/11 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index fb5aeb1930..2251416887 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index aa16d3e424..3bf2eae042 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,3 +1,24 @@
+2023/01/25 | 840931 | graphics/pgf/contrib/tangramtikz.zip
+2023/01/25 | 832 | macros/luatex/latex/luaquotes/README
+2023/01/25 | 801869 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+2023/01/25 | 68936 | macros/luatex/latex/luaquotes.zip
+2023/01/25 | 60240 | macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
+2023/01/25 | 529 | macros/latex/contrib/proflycee/doc/testscript.py
+2023/01/25 | 430175 | graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.pdf
+2023/01/25 | 428860 | graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.pdf
+2023/01/25 | 4035994 | biblio/ctan-bibdata.zip
+2023/01/25 | 3641439 | biblio/ctan-bibdata/ctan.pdf
+2023/01/25 | 32549 | macros/luatex/latex/luaquotes/luaquotes-documentation.tex
+2023/01/25 | 2762261 | biblio/ctan-bibdata/ctan.bib
+2023/01/25 | 235606 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+2023/01/25 | 2219558 | macros/latex/contrib/tagpdf.zip
+2023/01/25 | 2069156 | systems/doc/luatex.zip
+2023/01/25 | 19340 | macros/luatex/latex/luaquotes/luaquotes.sty
+2023/01/25 | 19321 | graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.tex
+2023/01/25 | 18051 | graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.tex
+2023/01/25 | 1756139 | macros/latex/contrib/proflycee.zip
+2023/01/25 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/01/25 | 132594 | macros/latex/contrib/proflycee/tex/ProfLycee.sty
2023/01/24 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
2023/01/24 | 968 | macros/latex/contrib/proflycee/doc/cap.csv
2023/01/24 | 96041 | macros/latex/contrib/l3experimental/l3galley.dtx
@@ -14,18 +35,23 @@
2023/01/24 | 8983 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-circles.tex
2023/01/24 | 880 | systems/texlive/tlnet/archive/dvisvgm.r65614.tar.xz
2023/01/24 | 87493 | macros/latex/contrib/l3kernel/l3coffins.dtx
-2023/01/24 | 860401 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+2023/01/24 | 8652 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
+2023/01/24 | 854620 | macros/latex/contrib/tagpdf/tagpdf.pdf
2023/01/24 | 8528 | systems/texlive/tlnet/archive/hypdoc.source.r65614.tar.xz
2023/01/24 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
2023/01/24 | 84785 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
+2023/01/24 | 8281 | macros/latex/contrib/tagpdf/global-ex.png
2023/01/24 | 82707 | macros/latex/contrib/l3kernel/l3clist.dtx
2023/01/24 | 823710 | macros/latex/contrib/diffcoeff/diffcoeff.pdf
2023/01/24 | 82195 | macros/latex/contrib/l3kernel/l3names.dtx
2023/01/24 | 81614 | macros/latex/contrib/l3kernel/l3prefixes.pdf
+2023/01/24 | 801 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
2023/01/24 | 798 | macros/latex/contrib/sidecap/sc-test5.tex
2023/01/24 | 79792 | macros/latex/contrib/l3kernel/l3box.dtx
2023/01/24 | 7861 | macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex
+2023/01/24 | 7854 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
2023/01/24 | 78244 | macros/latex/contrib/l3kernel/l3str.dtx
+2023/01/24 | 777 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
2023/01/24 | 7734 | macros/latex/contrib/l3experimental/CHANGELOG.md
2023/01/24 | 76279 | macros/latex/contrib/l3kernel/l3skip.dtx
2023/01/24 | 7454 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -39,6 +65,7 @@
2023/01/24 | 70859 | macros/latex/contrib/l3kernel/expl3.dtx
2023/01/24 | 70578 | macros/latex/contrib/l3kernel/l3fp.dtx
2023/01/24 | 6988 | systems/texlive/tlnet/archive/fixdif.source.r65614.tar.xz
+2023/01/24 | 6842 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
2023/01/24 | 6837 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-points.tex
2023/01/24 | 68290 | macros/latex/contrib/l3kernel/l3candidates.dtx
2023/01/24 | 679193 | macros/latex/contrib/l3experimental/l3draw-code.pdf
@@ -46,12 +73,14 @@
2023/01/24 | 6717 | macros/latex/contrib/tkz/tkz-euclide/latex/obj-lua/tkz-obj-lua-points.tex
2023/01/24 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
2023/01/24 | 66654 | macros/latex/contrib/l3kernel/l3prg.dtx
+2023/01/24 | 6626 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
2023/01/24 | 6574 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-circles-by.tex
2023/01/24 | 6526 | macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty
2023/01/24 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
2023/01/24 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
2023/01/24 | 62840 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
2023/01/24 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
+2023/01/24 | 6247 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
2023/01/24 | 622767 | macros/latex/contrib/l3kernel/expl3.pdf
2023/01/24 | 6224 | macros/latex/contrib/l3kernel/l3.ins
2023/01/24 | 6169 | macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -61,18 +90,21 @@
2023/01/24 | 5841 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-utilities.tex
2023/01/24 | 5828967 | systems/texlive/tlnet/install-tl-unx.tar.gz
2023/01/24 | 58083 | macros/latex/contrib/l3experimental/xgalley.dtx
+2023/01/24 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
2023/01/24 | 57974 | macros/latex/contrib/l3kernel/l3prop.dtx
+2023/01/24 | 57372 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
2023/01/24 | 5653 | macros/latex/contrib/l3experimental/l3draw-layers.dtx
2023/01/24 | 5588 | systems/texlive/tlnet/archive/expkv-def.r65614.tar.xz
2023/01/24 | 557803 | macros/latex/contrib/l3kernel/l3doc.pdf
2023/01/24 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
2023/01/24 | 5343 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-points-rnd.tex
-2023/01/24 | 529 | macros/latex/contrib/proflycee/doc/testscript.py
2023/01/24 | 51820 | systems/texlive/tlnet/archive/make4ht.r65613.tar.xz
2023/01/24 | 517619 | macros/latex/contrib/l3experimental/l3draw.pdf
2023/01/24 | 5156 | systems/texlive/tlnet/archive/expkv.r65614.tar.xz
+2023/01/24 | 5109 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
2023/01/24 | 51059 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
2023/01/24 | 51006 | macros/latex/contrib/l3kernel/l3text.dtx
+2023/01/24 | 49947 | systems/doc/luatex/luatex-modifications.tex
2023/01/24 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
2023/01/24 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
2023/01/24 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -81,6 +113,7 @@
2023/01/24 | 479908 | systems/texlive/tlnet/archive/expkv.doc.r65614.tar.xz
2023/01/24 | 47216 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
2023/01/24 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
+2023/01/24 | 4618 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
2023/01/24 | 4601 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-protractor.tex
2023/01/24 | 457900 | systems/texlive/tlnet/archive/expkv-cs.doc.r65614.tar.xz
2023/01/24 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -91,32 +124,36 @@
2023/01/24 | 45040 | macros/latex/contrib/l3kernel/l3prefixes.csv
2023/01/24 | 4451432 | install/macros/latex/contrib/l3experimental.tds.zip
2023/01/24 | 4448 | macros/latex/contrib/l3experimental/l3draw-state.dtx
+2023/01/24 | 44428 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
2023/01/24 | 4414253 | macros/latex/contrib/l3experimental.zip
2023/01/24 | 4375 | macros/latex/contrib/tkz/tkz-euclide/latex/libs/tkz-lib-eu-marks.tex
2023/01/24 | 43537 | macros/latex/contrib/l3kernel/CHANGELOG.md
2023/01/24 | 4323 | macros/latex/contrib/l3experimental/l3draw-boxes.dtx
2023/01/24 | 43212 | macros/latex/contrib/l3kernel/l3debug.dtx
+2023/01/24 | 431 | graphics/pgf/contrib/tangramtikz/README.md
+2023/01/24 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
2023/01/24 | 4284 | macros/latex/contrib/l3experimental/README.md
2023/01/24 | 42558 | macros/latex/contrib/l3experimental/l3draw.dtx
2023/01/24 | 424232 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65608.tar.xz
2023/01/24 | 42236 | systems/texlive/tlnet/archive/tkz-euclide.r65614.tar.xz
2023/01/24 | 420252 | systems/texlive/tlnet/archive/semantex.doc.r65614.tar.xz
+2023/01/24 | 4153 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
2023/01/24 | 413012 | systems/texlive/tlnet/archive/expkv-def.doc.r65614.tar.xz
+2023/01/24 | 40916 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
2023/01/24 | 408825 | macros/latex/contrib/l3experimental/l3galley.pdf
2023/01/24 | 4085 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-polygons.tex
2023/01/24 | 40704 | macros/latex/contrib/l3kernel/l3sort.dtx
2023/01/24 | 404305 | macros/latex/contrib/l3experimental/l3bitset.pdf
-2023/01/24 | 4036706 | biblio/ctan-bibdata.zip
2023/01/24 | 4011 | macros/latex/contrib/l3experimental/l3opacity.dtx
2023/01/24 | 3975 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-compass.tex
2023/01/24 | 395876 | macros/latex/contrib/l3kernel/l3news.pdf
2023/01/24 | 3948 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-polygons.tex
2023/01/24 | 394409 | macros/latex/contrib/l3experimental/xcoffins.pdf
2023/01/24 | 3929 | macros/latex/contrib/l3kernel/README.md
+2023/01/24 | 3928 | macros/latex/contrib/tagpdf/tagpdf.ins
2023/01/24 | 3884 | macros/latex/contrib/tkz/tkz-euclide/latex/tools-lua/tkz-tools-lua-angles.tex
2023/01/24 | 382072 | macros/latex/contrib/l3experimental/l3graphics.pdf
2023/01/24 | 367940 | macros/latex/contrib/l3experimental/l3str-format.pdf
-2023/01/24 | 3641550 | biblio/ctan-bibdata/ctan.pdf
2023/01/24 | 3615 | macros/latex/contrib/sidecap/sc-test1.tex
2023/01/24 | 360716 | systems/texlive/tlnet/archive/asymptote.r65614.tar.xz
2023/01/24 | 36026 | macros/latex/contrib/l3experimental/l3draw-points.dtx
@@ -125,6 +162,7 @@
2023/01/24 | 35092 | macros/latex/contrib/l3experimental/xcoffins.dtx
2023/01/24 | 3497 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-base.tex
2023/01/24 | 3496 | macros/latex/contrib/tkz/tkz-euclide/latex/tools-lua/tkz-tools-lua-base.tex
+2023/01/24 | 34964 | macros/latex/contrib/tagpdf/tagpdf-data.dtx
2023/01/24 | 347982 | macros/latex/contrib/l3experimental/l3sys-shell.pdf
2023/01/24 | 3473 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-grids.tex
2023/01/24 | 34593 | macros/latex/contrib/diffcoeff/diffcoeff.sty
@@ -143,6 +181,7 @@
2023/01/24 | 308483 | macros/latex/contrib/l3experimental/l3benchmark.pdf
2023/01/24 | 3056 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-angles.tex
2023/01/24 | 304752 | macros/latex/contrib/l3kernel/l3regex.dtx
+2023/01/24 | 30370 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
2023/01/24 | 299636 | macros/latex/contrib/l3experimental/xgalley.pdf
2023/01/24 | 2987 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-text.tex
2023/01/24 | 296239 | macros/latex/contrib/l3kernel/l3styleguide.pdf
@@ -150,43 +189,54 @@
2023/01/24 | 28300 | systems/texlive/tlnet/archive/expkv.source.r65614.tar.xz
2023/01/24 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
2023/01/24 | 2780 | systems/texlive/tlnet/archive/frenchmath.r65614.tar.xz
-2023/01/24 | 2761884 | biblio/ctan-bibdata/ctan.bib
2023/01/24 | 2749 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-modules.tex
+2023/01/24 | 27362 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
2023/01/24 | 26964 | systems/texlive/tlnet/archive/expkv-cs.source.r65614.tar.xz
+2023/01/24 | 26787 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
2023/01/24 | 26737 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
2023/01/24 | 26516 | systems/texlive/tlnet/archive/semantex.r65614.tar.xz
2023/01/24 | 264172 | systems/texlive/tlnet/archive/expkv-opt.doc.r65614.tar.xz
+2023/01/24 | 2637 | macros/latex/contrib/tagpdf/ex-patch-list.tex
2023/01/24 | 261224 | systems/texlive/tlnet/archive/fixdif.doc.r65614.tar.xz
2023/01/24 | 25753 | macros/latex/contrib/l3experimental/l3graphics.dtx
2023/01/24 | 25650 | macros/latex/contrib/l3kernel/l3fp-random.dtx
2023/01/24 | 25513708 | systems/texlive/tlnet/install-tl.zip
+2023/01/24 | 2528 | macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
2023/01/24 | 25251 | macros/latex/contrib/tkz/tkz-euclide/latex/obj-lua/tkz-obj-lua-points-spc.tex
2023/01/24 | 250136 | macros/latex/contrib/l3kernel/l3news09.pdf
2023/01/24 | 24841 | macros/latex/contrib/l3kernel/source3body.tex
2023/01/24 | 24755 | macros/latex/contrib/sidecap/sidecap.dtx
2023/01/24 | 2444244 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/01/24 | 242907 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+2023/01/24 | 24050 | graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty
2023/01/24 | 2390 | macros/latex/contrib/l3kernel/l3docstrip.dtx
2023/01/24 | 23866 | macros/latex/contrib/l3kernel/l3luatex.dtx
2023/01/24 | 2383376 | systems/texlive/tlnet/archive/asymptote.doc.r65614.tar.xz
-2023/01/24 | 235332 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
2023/01/24 | 23530 | macros/latex/contrib/l3kernel/l3deprecation.dtx
2023/01/24 | 23353 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-points-spc.tex
+2023/01/24 | 23311 | macros/latex/contrib/tagpdf/acrobat.png
2023/01/24 | 230184 | systems/texlive/tlnet/archive/frenchmath.doc.r65614.tar.xz
2023/01/24 | 23011 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2023/01/24 | 22818 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
2023/01/24 | 2268 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-colors.tex
+2023/01/24 | 2262 | macros/latex/contrib/tagpdf/tagpdf-code.tex
2023/01/24 | 2229 | macros/latex/contrib/l3kernel/source3.tex
2023/01/24 | 21718 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-angles.tex
2023/01/24 | 21665 | macros/latex/contrib/l3kernel/l3text-purify.dtx
2023/01/24 | 215443 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
+2023/01/24 | 2150 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
+2023/01/24 | 21067 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
2023/01/24 | 2104 | macros/latex/contrib/sidecap/sc-test6.tex
+2023/01/24 | 20721 | macros/latex/contrib/tagpdf/tagpdf.dtx
2023/01/24 | 204992 | macros/latex/contrib/l3kernel/l3news12.pdf
2023/01/24 | 20451 | macros/latex/contrib/l3experimental/l3draw-softpath.dtx
2023/01/24 | 20438062 | systems/texlive/tlnet/install-tl-windows.exe
+2023/01/24 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
2023/01/24 | 2013468 | systems/texlive/tlnet/archive/latex2e-help-texinfo-spanish.doc.r65614.tar.xz
2023/01/24 | 1978 | macros/latex/contrib/tkz/tkz-euclide/latex/libs/tkz-lib-eu-shape.tex
2023/01/24 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
2023/01/24 | 196076 | systems/texlive/tlnet/archive/babel.r65614.tar.xz
+2023/01/24 | 19363 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
2023/01/24 | 19161 | macros/latex/contrib/l3kernel/l3pdf.dtx
2023/01/24 | 19094 | macros/latex/contrib/tkz/tkz-euclide/latex/tools-lua/tkz-tools-lua-intersections.tex
2023/01/24 | 1908 | macros/latex/contrib/l3kernel/interface3.tex
@@ -195,18 +245,22 @@
2023/01/24 | 18694 | macros/latex/contrib/l3experimental/l3bitset.dtx
2023/01/24 | 18531 | macros/latex/contrib/l3kernel/l3fp-round.dtx
2023/01/24 | 18510 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-points-by.tex
+2023/01/24 | 18461 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
2023/01/24 | 18295 | macros/latex/contrib/tkz/tkz-euclide/latex/obj-lua/tkz-obj-lua-points-by.tex
2023/01/24 | 18272 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-intersections.tex
-2023/01/24 | 1811687 | macros/latex/contrib/proflycee.zip
2023/01/24 | 18010059 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2023/01/24 | 1792 | systems/texlive/tlnet/archive/fixdif.r65614.tar.xz
2023/01/24 | 1788 | macros/latex/contrib/sidecap/sc-test2.tex
+2023/01/24 | 1788188 | systems/doc/luatex/luatex.pdf
2023/01/24 | 17804 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-triangles.tex
2023/01/24 | 1779014 | macros/latex/contrib/l3kernel/interface3.pdf
2023/01/24 | 17760 | systems/texlive/tlnet/archive/tex4ebook.r65613.tar.xz
+2023/01/24 | 17742 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
2023/01/24 | 177020 | systems/texlive/tlnet/archive/make4ht.doc.r65613.tar.xz
+2023/01/24 | 17343 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+2023/01/24 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
2023/01/24 | 170076 | macros/latex/contrib/l3kernel/l3news11.pdf
-2023/01/24 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/01/24 | 16888 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
2023/01/24 | 16633 | macros/latex/contrib/l3kernel/l3text-map.dtx
2023/01/24 | 16509 | macros/latex/contrib/l3experimental/l3benchmark.dtx
2023/01/24 | 163456 | macros/latex/contrib/l3kernel/l3news08.pdf
@@ -220,7 +274,9 @@
2023/01/24 | 1553 | macros/latex/contrib/l3experimental/l3graphics.ins
2023/01/24 | 1547 | macros/latex/contrib/l3experimental/l3opacity.ins
2023/01/24 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/01/24 | 1537 | macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
2023/01/24 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/01/24 | 15241 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
2023/01/24 | 151818 | macros/latex/contrib/l3kernel/l3docstrip.pdf
2023/01/24 | 151569 | macros/latex/contrib/l3kernel/l3news06.pdf
2023/01/24 | 150674 | macros/latex/contrib/l3kernel/l3news02.pdf
@@ -228,24 +284,28 @@
2023/01/24 | 1497 | macros/latex/contrib/diffcoeff/README.txt
2023/01/24 | 14927 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
2023/01/24 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
+2023/01/24 | 1488604 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
2023/01/24 | 148706 | macros/latex/contrib/l3kernel/l3news03.pdf
2023/01/24 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
2023/01/24 | 145318 | macros/latex/contrib/l3kernel/l3tl.dtx
+2023/01/24 | 14511 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
2023/01/24 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2023/01/24 | 14423 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-show.tex
+2023/01/24 | 141163 | macros/latex/contrib/tagpdf/pac3.PNG
2023/01/24 | 14020560 | install/macros/latex/contrib/l3kernel.tds.zip
+2023/01/24 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
2023/01/24 | 13761468 | macros/latex/contrib/l3kernel.zip
2023/01/24 | 136649 | macros/latex/contrib/l3kernel/l3file.dtx
2023/01/24 | 1360 | macros/latex/contrib/l3experimental/l3draw-code.tex
2023/01/24 | 13272 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-sectors.tex
2023/01/24 | 1326872 | systems/texlive/tlnet/archive/diffcoeff.doc.r65614.tar.xz
-2023/01/24 | 132398 | macros/latex/contrib/proflycee/tex/ProfLycee.sty
2023/01/24 | 13044 | systems/texlive/tlnet/archive/frenchmath.source.r65614.tar.xz
2023/01/24 | 129434 | macros/latex/contrib/l3kernel/l3basics.dtx
2023/01/24 | 128316 | macros/latex/contrib/l3kernel/l3news07.pdf
2023/01/24 | 12783 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
2023/01/24 | 127087 | macros/latex/contrib/l3kernel/l3keys.dtx
2023/01/24 | 1243317 | macros/latex/contrib/tkz/tkz-euclide.zip
+2023/01/24 | 1237 | macros/latex/contrib/tagpdf/ex-AF-file.tex
2023/01/24 | 12361 | macros/latex/contrib/l3experimental/l3sys-shell.dtx
2023/01/24 | 122710 | macros/latex/contrib/l3kernel/l3news01.pdf
2023/01/24 | 1224 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-BB.tex
@@ -254,8 +314,10 @@
2023/01/24 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
2023/01/24 | 11839 | macros/latex/contrib/tkz/tkz-euclide/README.md
2023/01/24 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
+2023/01/24 | 1177 | macros/latex/contrib/tagpdf/README.md
2023/01/24 | 1171368 | systems/texlive/tlnet/archive/tkz-euclide.doc.r65614.tar.xz
2023/01/24 | 1158 | macros/latex/contrib/sidecap/sc-test3.tex
+2023/01/24 | 115733455 | macros/context/latest/cont-tmf.zip
2023/01/24 | 114586 | macros/latex/contrib/l3kernel/l3news04.pdf
2023/01/24 | 113688 | systems/texlive/tlnet/archive/texlive-scripts.r65608.tar.xz
2023/01/24 | 113427 | macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -264,7 +326,9 @@
2023/01/24 | 11116 | systems/texlive/tlnet/archive/diffcoeff.r65614.tar.xz
2023/01/24 | 11100 | macros/latex/contrib/tkz/tkz-euclide/latex/tools-lua/tkz-tools-lua-math.tex
2023/01/24 | 110994 | macros/latex/contrib/l3kernel/l3color.dtx
+2023/01/24 | 109529 | macros/latex/contrib/tagpdf/tagpdf.tex
2023/01/24 | 10839 | macros/latex/contrib/tkz/tkz-euclide/latex/obj-lua/tkz-obj-lua-points-with.tex
+2023/01/24 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
2023/01/24 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
2023/01/24 | 107332 | systems/texlive/tlnet/archive/dvisvgm.doc.r65614.tar.xz
2023/01/24 | 10652 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-points-with.tex
@@ -273,6 +337,7 @@
2023/01/24 | 105029 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
2023/01/24 | 10450 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-lines.tex
2023/01/24 | 10203 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-lines.tex
+2023/01/24 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
2023/01/24 | 10136 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
2023/01/24 | 10018 | macros/latex/contrib/l3experimental/l3draw-scopes.dtx
2023/01/23 | 99 | graphics/asymptote/base/asy_filetype.vim
@@ -2116,7 +2181,6 @@
2023/01/23 | 146 | graphics/asymptote/doc/slopefield1.asy
2023/01/23 | 146 | graphics/asymptote/cudareflect/tinyexr/examples/deepview/Makefile
2023/01/23 | 1469 | graphics/asymptote/doc/png/Makefile.in
-2023/01/23 | 1469767 | systems/win32/TLW64/pdftex.zip
2023/01/23 | 1467 | graphics/asymptote/GUI/res/icons/android-hand.svg
2023/01/23 | 14651 | graphics/asymptote/LspCpp/third_party/uri/deps/googletest/include/gtest/gtest-death-test.h
2023/01/23 | 1461 | graphics/asymptote/examples/logo3.asy
@@ -6479,71 +6543,3 @@
2023/01/19 | 12278 | support/adobemapping/mapping-resources-pdf/pdf2other/Adobe-Korea1-H-Mac
2023/01/19 | 121271 | macros/latex/contrib/overarrows/overarrows.dtx
2023/01/19 | 114160 | macros/latex/contrib/lineno/source/lineno.tex
-2023/01/18 | 996 | indexing/xindex/doc/tests/demo2.ind
-2023/01/18 | 9216 | indexing/xindex/doc/tests/demo3.pdf
-2023/01/18 | 889272 | systems/texlive/tlnet/archive/l3backend.doc.r65573.tar.xz
-2023/01/18 | 880 | indexing/xindex/doc/tests/demo4.ind
-2023/01/18 | 836664 | systems/texlive/tlnet/archive/tugboat.doc.r65569.tar.xz
-2023/01/18 | 828 | fonts/kpfonts/README.txt
-2023/01/18 | 783 | indexing/xindex/doc/tests/runTests.sh
-2023/01/18 | 73271 | fonts/kpfonts/latex/kpfonts.sty
-2023/01/18 | 6816 | systems/texlive/tlnet/archive/collection-latexextra.r65571.tar.xz
-2023/01/18 | 6411 | indexing/xindex/doc/tests/demo-hyperref.idx
-2023/01/18 | 6404 | indexing/xindex/doc/tests/demo-hyperref.ind
-2023/01/18 | 630 | indexing/xindex/doc/tests/Umlaute.ind
-2023/01/18 | 630 | indexing/xindex/doc/tests/Umlaute2.ind
-2023/01/18 | 613 | indexing/xindex/doc/tests/demo4.idx
-2023/01/18 | 598872 | systems/texlive/tlnet/archive/l3kernel.source.r65573.tar.xz
-2023/01/18 | 584 | indexing/xindex/doc/tests/Umlaute.idx
-2023/01/18 | 584 | indexing/xindex/doc/tests/Umlaute2.idx
-2023/01/18 | 582 | indexing/xindex/doc/tests/demo3.tex
-2023/01/18 | 526 | indexing/xindex/doc/tests/Umlaute2.tex
-2023/01/18 | 5210 | indexing/xindex/doc/tests/demo.ind
-2023/01/18 | 5102 | indexing/xindex/doc/tests/demo.idx
-2023/01/18 | 485 | indexing/xindex/doc/tests/Umlaute.tex
-2023/01/18 | 484632 | systems/texlive/tlnet/archive/ufrgscca.doc.r65570.tar.xz
-2023/01/18 | 480 | indexing/xindex/doc/tests/HADW.tex
-2023/01/18 | 45548 | systems/texlive/tlnet/archive/l3packages.source.r65573.tar.xz
-2023/01/18 | 4231356 | systems/texlive/tlnet/archive/bidi.doc.r65572.tar.xz
-2023/01/18 | 42184 | systems/texlive/tlnet/archive/tugboat.source.r65569.tar.xz
-2023/01/18 | 415 | indexing/xindex/doc/tests/buch.tex
-2023/01/18 | 4049 | indexing/xindex/doc/tests/demo.tex
-2023/01/18 | 39021 | indexing/xindex/doc/tests/buch.pdf
-2023/01/18 | 34606 | indexing/xindex/doc/tests/demo.pdf
-2023/01/18 | 33064 | systems/texlive/tlnet/archive/l3backend.source.r65573.tar.xz
-2023/01/18 | 32232 | systems/texlive/tlnet/archive/ufrgscca.r65570.tar.xz
-2023/01/18 | 32092 | indexing/xindex/doc/tests/buch.idx
-2023/01/18 | 30264 | systems/texlive/tlnet/archive/tugboat.r65569.tar.xz
-2023/01/18 | 29136 | systems/texlive/tlnet/archive/photobook.r65568.tar.xz
-2023/01/18 | 28624 | indexing/xindex/doc/tests/demo-hyperref.pdf
-2023/01/18 | 257 | indexing/xindex/doc/tests/demo-hyperref.tex
-2023/01/18 | 2251 | indexing/xindex/latex/xindex.sty
-2023/01/18 | 21872 | systems/texlive/tlnet/archive/l3packages.r65573.tar.xz
-2023/01/18 | 2067259 | systems/doc/luatex.zip
-2023/01/18 | 2023 | indexing/xindex/doc/tests/HADW2.idx
-2023/01/18 | 195 | indexing/xindex/doc/tests/demo4.tex
-2023/01/18 | 19106 | macros/latex/contrib/overarrows/LICENSE
-2023/01/18 | 1904032 | systems/texlive/tlnet/archive/luatex.doc.r65574.tar.xz
-2023/01/18 | 18884 | indexing/xindex/doc/tests/Umlaute2.pdf
-2023/01/18 | 18342 | indexing/xindex/doc/tests/HADW.pdf
-2023/01/18 | 1832592 | systems/texlive/tlnet/archive/l3packages.doc.r65573.tar.xz
-2023/01/18 | 174376 | systems/texlive/tlnet/archive/l3kernel.r65573.tar.xz
-2023/01/18 | 1653 | indexing/xindex/doc/tests/HADW2.ind
-2023/01/18 | 1580 | indexing/xindex/README.md
-2023/01/18 | 15464 | systems/texlive/tlnet/archive/l3backend.r65573.tar.xz
-2023/01/18 | 15380 | indexing/xindex/doc/tests/buch.ind
-2023/01/18 | 15194 | indexing/xindex/doc/tests/Umlaute.pdf
-2023/01/18 | 149772 | systems/texlive/tlnet/archive/bidi.source.r65572.tar.xz
-2023/01/18 | 142508 | systems/texlive/tlnet/archive/photobook.doc.r65568.tar.xz
-2023/01/18 | 138 | indexing/xindex/doc/tests/demo3.ind
-2023/01/18 | 132944 | systems/texlive/tlnet/archive/bidi.r65572.tar.xz
-2023/01/18 | 132824 | systems/texlive/tlnet/archive/gradient-text.doc.r65567.tar.xz
-2023/01/18 | 12832 | systems/texlive/tlnet/archive/luatex.r65574.tar.xz
-2023/01/18 | 1264 | indexing/xindex/doc/tests/HADW.ind
-2023/01/18 | 123 | indexing/xindex/doc/tests/demo2.idx
-2023/01/18 | 1231 | indexing/xindex/doc/Makefile
-2023/01/18 | 1200 | indexing/xindex/doc/tests/HADW.idx
-2023/01/18 | 11920896 | systems/texlive/tlnet/archive/l3kernel.doc.r65573.tar.xz
-2023/01/18 | 11883 | indexing/xindex/doc/tests/demo4.pdf
-2023/01/18 | 114 | indexing/xindex/doc/tests/demo3.idx
-2023/01/18 | 1048 | systems/texlive/tlnet/archive/gradient-text.r65567.tar.xz
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index 508d623c45..8654a90317 100644
--- a/biblio/ctan-bibdata/ctan.bib
+++ b/biblio/ctan-bibdata/ctan.bib
@@ -1,7 +1,7 @@
%% bib file of all CTAN packages
%% (C) Herbert Voß
%%
-%% created at 25-01-2023, 02:00:15
+%% created at 26-01-2023, 02:05:05
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -41174,8 +41174,8 @@
title = {The \texttt{luaquotes} package},
subtitle = {Smart setting of quotation marks},
author = {Elijah Z Granet},
- date = {2023-01-15},
- version = {1.3.0},
+ date = {2023-01-25},
+ version = {1.4.0},
license = {lppl1.3c,cc-by-sa-3},
mirror = {https://mirror.ctan.org/macros/luatex/latex/luaquotes},
url = {https://ctan.org/pkg/luaquotes},
@@ -53938,8 +53938,8 @@
title = {The \texttt{ProfLycee} package},
subtitle = {A \LaTeX{} package for French maths teachers in high school},
author = {Cédric Pierquet},
- date = {2023-01-24},
- version = {2.1.7},
+ date = {2023-01-25},
+ version = {2.1.8},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/proflycee},
url = {https://ctan.org/pkg/proflycee},
@@ -65259,8 +65259,8 @@
title = {The \texttt{tagpdf} package},
subtitle = {Tools for experimenting with tagging using pdf\LaTeX{} and LuaLaTeX},
author = {Ulrike Fischer},
- date = {2022-12-28},
- version = {0.98a},
+ date = {2023-01-25},
+ version = {0.98b},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/tagpdf},
url = {https://ctan.org/pkg/tagpdf},
@@ -65355,6 +65355,17 @@
url = {https://ctan.org/pkg/tango-weevil},
}
+@manual{ctan-tangramtikz,
+ title = {The \texttt{TangramTikz} package},
+ subtitle = {Tangram puzzles, with TikZ},
+ author = {Cédric Pierquet},
+ date = {2023-01-25},
+ version = {0.1.0},
+ license = {lppl1.3c},
+ mirror = {https://mirror.ctan.org/graphics/pgf/contrib/tangramtikz},
+ url = {https://ctan.org/pkg/tangramtikz},
+}
+
@manual{ctan-tap,
title = {The \texttt{tap} package},
subtitle = {TeX macros for typesetting complex tables},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index c71d41ec4e..0a1cd7064e 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tangramtikz/README.md b/graphics/pgf/contrib/tangramtikz/README.md
new file mode 100644
index 0000000000..155e0ffcaf
--- /dev/null
+++ b/graphics/pgf/contrib/tangramtikz/README.md
@@ -0,0 +1,7 @@
+TangramTikz is a package to work with Tangram Puzzle.
+--------------------------------------------------------------------
+TangramTikz est un package travailler avec le jeu de Puzzle Tangram.
+--------------------------------------------------------------------
+Author : Cédric Pierquet
+email : cpierquet@outlook.fr
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt \ No newline at end of file
diff --git a/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.pdf b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.pdf
new file mode 100644
index 0000000000..7a65de7e9d
--- /dev/null
+++ b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.tex b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.tex
new file mode 100644
index 0000000000..91e5e63e25
--- /dev/null
+++ b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.tex
@@ -0,0 +1,563 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass{article}
+\usepackage[english]{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{TangramTikz}
+%\usepackage[upright]{fourier}
+%\usepackage[scaled=0.875]{helvet}
+%\renewcommand\ttdefault{lmtt}
+%\usepackage{cabin}
+\usepackage{amsmath,amssymb}
+\usepackage{fontawesome5}
+\usepackage{enumitem}
+\usepackage{tabularray}
+\usepackage{multicol}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [TangramTikz]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
+%\usepackage{hvlogos}
+\usepackage{hologo}
+\usepackage{xspace}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+\newcommand\TableauDocumentation{%
+ \begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}}
+ {\huge \LaTeX} & & & & &\\
+ & {\huge \hologo{pdfLaTeX}} & & & & \\
+ & & {\huge \hologo{LuaLaTeX}} & & & \\
+ & & & {\huge \TikZ} & & \\
+ & & & & {\huge \TeXLive} & \\
+ & & & & & {\huge \hologo{MiKTeX}} \\
+ \end{tblr}
+}
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=1.5cm]{geometry}
+\setlength{\parindent}{0pt}
+\definecolor{LightGray}{gray}{0.9}
+
+\def\TPversion{0.1.0}
+\def\TPdate{23/01/2023}
+
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{minted}
+\NewTCBListing{PresentationCode}{ O{blue} m }{%
+ sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+ colback=#1!1!white,colframe=#1!75!black,colbacklower=white,%
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,%
+ boxed title style={%
+ colframe=#1!75!black,colback=#1!15!white,%
+ ,sharp corners=downhill,arc=12pt,%
+ },%
+ fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+ listing engine=minted,minted style=colorful,
+ minted language=tex,minted options={tabsize=4,fontsize=\footnotesize,autogobble},
+ #2
+}
+
+\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\vspace{2cm}
+
+\begin{center}
+ \begin{minipage}{0.75\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{TangramTikz [en]}}\\
+ \\
+ {\LARGE Tangrams, with Ti\textit{k}Z}, \\
+ \\
+ {\LARGE with solution and/or color.} \\
+ \end{tabular}
+
+ \medskip
+
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\vspace{0.5cm}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/TangramTikz}}
+\end{tabular}
+\end{center}
+
+\vspace{0.5cm}
+
+{$\blacktriangleright$~~Some commands to display existing Tangrams.}
+
+\smallskip
+
+{$\blacktriangleright$~~Create tangram, with postionning manually the pieces.}
+
+\smallskip
+
+{$\blacktriangleright$~~Idea(s) from \url{https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex}}
+
+\vspace{1cm}
+
+\begin{center}
+ \tikz {\pic[TangPuzz={blue}] at (0,0) {TangBigTri} ;}~~
+ \tikz {\pic[TangPuzz={orange}] at (0,0) {TangBigTri} ;}~~
+ \tikz {\pic[TangPuzz={purple}] at (0,0) {TangMedTri} ;}~~
+ \tikz {\pic[TangPuzz={yellow}] at (0,0) {TangSqua} ;}~~
+ \tikz {\pic[TangPuzz={green}] at (0,0) {TangSmalTri} ;}~~
+ \tikz {\pic[TangPuzz={cyan}] at (0,0) {TangSmalTri} ;}~~
+ \tikz {\pic[TangPuzz={magenta}] at (0,0) {TangPara} ;}~~
+
+ \vspace*{1cm}
+
+ \TangramTikz[Couleur=orange]<scale=1>{Maison}
+ \TangramTikz[Correction]<scale=1>{Maison}
+ \TangramTikz[CorrectionCouleur]<scale=1>{Maison}
+ \TangramTikz[ListeCouleurs={blue,red,black,orange,purple},CorrectionCouleur]<scale=1>{Maison}
+\end{center}
+
+\vspace{0.5cm}
+
+%\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
+
+%\hfill{}\textit{Merci à Denis Bitouzé et à Patrick Bideault pour leurs retours et idées !}
+
+\vfill
+
+\hrule
+
+\medskip
+
+\TableauDocumentation
+
+\medskip
+
+\hrule
+
+\medskip
+
+\newpage
+
+\phantomsection
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\newpage
+
+\part{Introduction}
+
+\section{The package TangramTikz}
+
+\subsection{Source}
+
+Some of the ideas are coming from \url{https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex}, specially from Andrew Stacey.
+
+\smallskip
+
+The package has been \textit{built} around the ideas from Andrew Stacey.
+
+\subsection{Loading of the package, used packages}
+
+The package \textsf{TangramTikz} loads into the preamble by :
+
+\begin{PresentationCode}{listing only}
+\usepackage{TangramTikz}
+\end{PresentationCode}
+
+It's fully copatible with usuals compilations, such as \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} or \textsf{xelatex}.
+
+\medskip
+
+It loads the packages and libraries :
+
+\begin{itemize}
+ \item \texttt{tikz} awith libraries \Cle{calc} ans \Cle{shapes.geometric} ;
+ \item \texttt{xstring}, \texttt{xparse}, \texttt{simplekv} and \texttt{listofitems}.
+\end{itemize}
+
+\subsection{The package itself}
+
+The idea is to, thanks to \TikZ, propose \textsf{commands} to display a Tangram Puzzle :
+
+\begin{itemize}
+ \item with \textit{full} pieces ;
+ \item by puzzle with \textit{border} pieces ;
+ \item by puzzle with \textit{border colored} pieces.
+\end{itemize}
+
+\begin{PresentationCode}{listing only}
+%independant command to display a Tangram
+\TangramTikz[keys]<options tikz>{tangram_name}
+\end{PresentationCode}
+
+There's also an \textsf{environment} and a special \textsf{command} to build the puzzle, by positionning the pieces.
+
+\begin{PresentationCode}{listing only}
+%environment, with keys, and positionning the pieces
+\begin{EnvTangramTikz}[keys]<options tikz>
+ %positionning the pieces
+ \PieceTangram[keys]<options pic>(offsetH,offsetV){TangBigTri}
+ \PieceTangram[keys]<options pic>(offsetH,offsetH){TangBigTri}
+ \PieceTangram[keys]<options pic>(offsetH,offsetH){TangMedTri}
+ \PieceTangram[keys]<options pic>(offsetH,offsetH){TangSmalTri}
+ \PieceTangram[keys]<options pic>(offsetH,offsetH){TangSmalTri}
+ \PieceTangram[keys]<options pic>(offsetH,offsetH){TangSqua}
+ \PieceTangram[keys]<options pic>(offsetH,offsetH){TangPara}
+ %\filldraw[black] (0,0) circle[radius=4pt] ; %help for positionning
+\end{EnvTangramTikz}
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Usage of the package}
+
+\section{Manually}
+
+\subsection{The pieces of the Tangram}
+
+A Tangram is composed by 7 pieces :
+\begin{itemize}
+ \item 2 big triangles ; 1 medium triangle ; 2 small triangles ;
+ \item 1 square ;
+ \item 1 parallelogram.
+\end{itemize}
+
+Each piece of the Tangram is defined in \tikzlogo, by an independent \texttt{pic}..
+
+\medskip
+
+A figure to show the 5 pieces :
+
+\begin{itemize}
+ \item with the \textcolor{purple}{\texttt{name}} of the \texttt{pic} ;
+ \item with the initial \textit{orientation} ;
+ \item with thier initial \textcolor{red}{\textit{origin}} ;
+ \item with their common \textcolor{blue}{\textit{dimensions}} (given in \textit{unit}).
+\end{itemize}
+
+\begin{center}
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangBigTri} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(2,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {2} ;
+ \draw[thick,<->,>=latex] (2.25,0)--++(0,2) node[blue,scale=1.5,midway,right,font=\large\sffamily] {2} ;
+ \draw[thick,<->,>=latex] (-0.15,0.15)--++(45:{sqrt(8)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{2\sqrt{2}}$} ;
+ \draw (1,3) node[scale=1.5,purple,below=1pt,font=\Large\ttfamily] {TangBigTri} ;
+ \end{tikzpicture}
+ ~
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangMedTri} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(2,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {2} ;
+ \draw[thick,<->,>=latex] (-0.15,0.15)--++(45:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw[thick,<->,>=latex] (2.15,0.15)--++(135:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw (1,3) node[purple,scale=1.5,below=1pt,font=\Large\ttfamily] {TangMedTri} ;
+ \end{tikzpicture}
+ ~
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangSmalTri} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(1,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {1} ;
+ \draw[thick,<->,>=latex] (-0.15,0.15)--++(45:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw[thick,<->,>=latex] (1.25,0)--++(0,1) node[blue,scale=1.5,midway,right,font=\large\sffamily] {1} ;
+ \draw (1,3) node[purple,scale=1.5,below=1pt,font=\Large\ttfamily] {TangSmalTri} ;
+ \end{tikzpicture}
+
+ \smallskip
+
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangSqua} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(1,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {1} ;
+ \draw[thick,<->,>=latex] (1.25,0)--++(0,1) node[blue,scale=1.5,midway,right,font=\large\sffamily] {1} ;
+ \draw[thick,dashed] (0,0)--(-0.65,0.65) (1,1)--(0.35,1.65) ;
+ \draw[thick,<->,>=latex] (-0.65,0.65)--++(45:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw (1,3) node[purple,scale=1.5,below=1pt,font=\Large\ttfamily] {TangSqua} ;
+ \end{tikzpicture}
+ ~
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangPara} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(1,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {1} ;
+ \draw[thick,<->,>=latex] (-0.15,0.15)--++(45:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw[thick,<->,>=latex] (2.15,0)--++(0,1) node[blue,scale=1.5,midway,right,font=\large\sffamily] {1} ;
+ \draw[thick,<->,>=latex] (2.15,1.15)--++(135:{0.5*sqrt(2)}) node[blue,midway,sloped,above,font=\large\sffamily] {$\mathsf{0{,}5\sqrt{2}}$} ;
+ \draw[thick,dashed] (2,1)--++(0.15,0.15) (1,1)--++(45:{0.5*sqrt(2)+0.2}) ;
+ \draw (1,3) node[purple,scale=1.5,below=1pt,font=\Large\ttfamily] {TangPara} ;
+ \end{tikzpicture}
+\end{center}
+
+Each \textit{piece} can :
+
+\begin{itemize}
+ \item rotated, thanks to \tikzlogo' option \texttt{rotate=...} ;
+ \item fliped vertically or horizontally, thanks to \tikzlogo' option \texttt{xscale=-1} and \texttt{yscale=-1} ;
+ \item moved, by placing it at point \texttt{(x,y)}.
+\end{itemize}
+
+Each piece comes with a \tikzlogo' style :
+
+\begin{itemize}
+ \item \texttt{TangPuzz} : piece of Tangram, \textit{full}, with a color (\Cle{black} by default) ;
+ \item \texttt{TangSol} : piece of tangram, \textit{with white border}, with a color (\Cle{black} by default).
+\end{itemize}
+
+\pagebreak
+
+\subsection{Positionning of the pieces}
+
+A first methodis to use \texttt{pic} syntax in \tikzlogo{} :
+
+\begin{PresentationCode}{listing only}
+%environment or tikz command
+\pic[style,rotate=...,xscale=...,yscale=...] at (x,y) {piece_name} ;
+\end{PresentationCode}
+
+The package \textsf{TangramTikz} proposes a specific command to place the pieces :
+
+\begin{PresentationCode}{listing only}
+%environment or tikz command
+\PieceTangram[style={color}]<xscale=...,yscale=...,rotate=...>(x,y){piece_name}
+\end{PresentationCode}
+
+A Tangram is built form the 7 pieces, by :
+
+\begin{itemize}
+ \item \textit{putting} pieces at origin ;
+ \item \textit{rotating/fliping} for the correct orientation ;
+ \item \textit{translating} for the correct position.
+\end{itemize}
+
+\begin{PresentationCode}{}
+%Correction colored version, initial size
+\begin{EnvTangramTikz}
+ \PieceTangram[TangSol={green}]({0},{0}){TangSqua}
+ \PieceTangram[TangSol={red}]({-1.5},{1}){TangBigTri}
+ \PieceTangram[TangSol={red}]<rotate=-90>({0.5},{3}){TangBigTri}
+ \PieceTangram[TangSol={purple}]<xscale=-1,rotate=0>({2.5},{2}){TangPara}
+ \PieceTangram[TangSol={blue}]({-1.5},{2}){TangSmalTri}
+ \PieceTangram[TangSol={blue}]<xscale=-1,rotate=90>({-0.5},{2}){TangSmalTri}
+ \PieceTangram[TangSol={orange}]({-0.5},{3}){TangMedTri}
+ \filldraw[black] (0,0) circle[radius=2pt] ; %help
+\end{EnvTangramTikz}
+%Normal version, initial size
+\begin{EnvTangramTikz}
+ \PieceTangram[TangPuzz]({0},{0}){TangSqua}
+ \PieceTangram[TangPuzz]({-1.5},{1}){TangBigTri}
+ \PieceTangram[TangPuzz]<rotate=-90>({0.5},{3}){TangBigTri}
+ \PieceTangram[TangPuzz]<xscale=-1,rotate=0>({2.5},{2}){TangPara}
+ \PieceTangram[TangPuzz]({-1.5},{2}){TangSmalTri}
+ \PieceTangram[TangPuzz]<xscale=-1,rotate=90>({-0.5},{2}){TangSmalTri}
+ \PieceTangram[TangPuzz]({-0.5},{3}){TangMedTri}
+\end{EnvTangramTikz}
+\end{PresentationCode}
+
+\pagebreak
+
+\section{Automatic Method}
+
+\subsection{Command}
+
+Some predefined tangrams are present in the package \textsf{TangramTikz}, and thre's an independent \textsf{command} to "call" them :
+
+\begin{PresentationCode}{listing only}
+%independent command to display a Tangram
+\TangramTikz[keys]<options tikz>{tangram_name}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%independent command to display Cat/Boat/Kangaroo, with options by default
+\TangramTikz{Cat}~~\TangramTikz{Boat}~~\TangramTikz{Kangaroo}
+\end{PresentationCode}
+
+\subsection{Keys, options and arguments}
+
+The first argument, \textit{optional} and between \texttt{[...]}, give the keys :
+
+\begin{itemize}
+ \item the boolean \Cle{Puzzle} to display \textit{uni-}color pieces, without border ; \hfill~default : \Cle{true}
+ \item the boolean \Cle{Correction} to display \textit{uni-}color pieces, with border ; \hfill~default : \Cle{false}
+ \item \Cle{Color} to configure the \textit{uni-}color with the above bololeans ; \hfill~default : \Cle{black}
+ \item the boolean \Cle{ColorCorrection} to display colored pieces with border ; \hfill~default : \Cle{false}
+ \item \Cle{ColorList} which are the colors of the pieces (\texttt{BT,MT,ST,SQUA,PARA}) ;
+
+ \hfill~default : \Cle{red,orange,blue,green,purple}
+ \item \Cle{Sep}, the width of the border in \Cle{Correction} mode. \hfill~default : \Cle{1pt}
+\end{itemize}
+
+The second argument, \textit{optional} ans between \texttt{<...>}, give options to the \tikzlogo{} environnement, for example :
+
+\begin{itemize}
+ \item unit(s) change, scale change ;
+ \item rotation, vertical alignment ;
+ \item etc
+\end{itemize}
+
+The third argument, \textit{mandatory} and between \texttt{\{...\}} is the name of the predefined tangram :
+%
+\texttt{\begin{multicols}{5}
+ \begin{itemize}
+ \item Square
+ \item Pinguin
+ \item Boat
+ \item Home
+ \item FirTree
+ \item Cat
+ \item Swan
+ \item Pyramid
+ \item Duck
+ \item Rocket
+ \item Candle
+ \item Shirt
+ \item Fish
+ \item Sailboat
+ \item Kangaroo
+ \item Dog
+ \end{itemize}
+\end{multicols}}
+
+\pagebreak
+
+\begin{PresentationCode}{}
+\TangramTikz{Rocket}~~
+\TangramTikz[Color=red]{Rocket}~~
+\TangramTikz[Correction]{Rocket}~~
+\TangramTikz[Correction,Color=lightgray]{Rocket}~~
+\TangramTikz[ColorCorrection,ColorList={orange,blue,yellow,green,pink},Sep=1mm]{Rocket}
+
+\TangramTikz<scale=1.5,rotate=30>{Rocket}~~
+\TangramTikz<scale=0.75,rotate=-90>{Rocket}
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Gallery of Tangrams}
+
+\begin{PresentationCode}{}
+\TangramTikz{Square}
+\TangramTikz[Correction]{Square}
+\TangramTikz[ColorCorrection]{Square}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Pinguin}
+ \TangramTikz[Correction]{Pinguin}
+ \TangramTikz[ColorCorrection]{Pinguin}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Boat}
+ \TangramTikz[Correction]{Boat}
+ \TangramTikz[ColorCorrection]{Boat}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Home}
+ \TangramTikz[Correction]{Home}
+ \TangramTikz[ColorCorrection]{Home}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{FirTree}
+ \TangramTikz[Correction]{FirTree}
+ \TangramTikz[ColorCorrection]{FirTree}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Cat}
+ \TangramTikz[Correction]{Cat}
+ \TangramTikz[ColorCorrection]{Cat}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Swan}
+ \TangramTikz[Correction]{Swan}
+ \TangramTikz[ColorCorrection]{Swan}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Pyramid}
+ \TangramTikz[Correction]{Pyramid}
+ \TangramTikz[ColorCorrection]{Pyramid}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Duck}
+ \TangramTikz[Correction]{Duck}
+ \TangramTikz[ColorCorrection]{Duck}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Rocket}
+ \TangramTikz[Correction]{Rocket}
+ \TangramTikz[ColorCorrection]{Rocket}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Candle}
+ \TangramTikz[Correction]{Candle}
+ \TangramTikz[ColorCorrection]{Candle}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Shirt}
+ \TangramTikz[Correction]{Shirt}
+ \TangramTikz[ColorCorrection]{Shirt}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Fish}
+ \TangramTikz[Correction]{Fish}
+ \TangramTikz[ColorCorrection]{Fish}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Sailboat}
+ \TangramTikz[Correction]{Sailboat}
+ \TangramTikz[ColorCorrection]{Sailboat}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Kangaroo}
+ \TangramTikz[Correction]{Kangaroo}
+ \TangramTikz[ColorCorrection]{Kangaroo}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Dog}
+ \TangramTikz[Correction]{Dog}
+ \TangramTikz[ColorCorrection]{Dog}
+\end{PresentationCode}
+
+\newpage
+
+\part{History}
+
+\verb|v0.1.0|~:~~~~Initial version
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.pdf b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.pdf
new file mode 100644
index 0000000000..4025111adf
--- /dev/null
+++ b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.tex b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.tex
new file mode 100644
index 0000000000..19fc03ab70
--- /dev/null
+++ b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.tex
@@ -0,0 +1,565 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass{article}
+\usepackage[french]{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{TangramTikz}
+%\usepackage[upright]{fourier}
+%\usepackage[scaled=0.875]{helvet}
+%\renewcommand\ttdefault{lmtt}
+%\usepackage{cabin}
+\usepackage{amsmath,amssymb}
+\usepackage{fontawesome5}
+\usepackage{enumitem}
+\usepackage{tabularray}
+\usepackage{multicol}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [TangramTikz]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
+%\usepackage{hvlogos}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+\newcommand\TableauDocumentation{%
+ \begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}}
+ {\huge \LaTeX} & & & & &\\
+ & {\huge \hologo{pdfLaTeX}} & & & & \\
+ & & {\huge \hologo{LuaLaTeX}} & & & \\
+ & & & {\huge \TikZ} & & \\
+ & & & & {\huge \TeXLive} & \\
+ & & & & & {\huge \hologo{MiKTeX}} \\
+ \end{tblr}
+}
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=1.5cm]{geometry}
+\setlength{\parindent}{0pt}
+\definecolor{LightGray}{gray}{0.9}
+
+\def\TPversion{0.1.0}
+\def\TPdate{23 Janvier 2023}
+
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{minted}
+\NewTCBListing{PresentationCode}{ O{blue} m }{%
+ sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+ colback=#1!1!white,colframe=#1!75!black,colbacklower=white,%
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,%
+ boxed title style={%
+ colframe=#1!75!black,colback=#1!15!white,%
+ ,sharp corners=downhill,arc=12pt,%
+ },%
+ fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+ listing engine=minted,minted style=colorful,
+ minted language=tex,minted options={tabsize=4,fontsize=\footnotesize,autogobble},
+ #2
+}
+
+\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\vspace{2cm}
+
+\begin{center}
+ \begin{minipage}{0.75\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{TangramTikz [fr]}}\\
+ \\
+ {\LARGE Des tangrams, en Ti\textit{k}Z}, \\
+ \\
+ {\LARGE avec solution et/ou couleur.} \\
+ \end{tabular}
+
+ \medskip
+
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\vspace{0.5cm}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/TangramTikz}}
+\end{tabular}
+\end{center}
+
+\vspace{0.5cm}
+
+{$\blacktriangleright$~~Des commandes pour afficher des Tangrams prédéfinis.}
+
+\smallskip
+
+{$\blacktriangleright$~~Possibilité de créer un Tangram, avec le placement des pièces.}
+
+\smallskip
+
+{$\blacktriangleright$~~Idée(s) venant de \url{https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex}}
+
+\vspace{1cm}
+
+\begin{center}
+ \tikz {\pic[TangPuzz={blue}] at (0,0) {TangBigTri} ;}~~
+ \tikz {\pic[TangPuzz={orange}] at (0,0) {TangBigTri} ;}~~
+ \tikz {\pic[TangPuzz={purple}] at (0,0) {TangMedTri} ;}~~
+ \tikz {\pic[TangPuzz={yellow}] at (0,0) {TangSqua} ;}~~
+ \tikz {\pic[TangPuzz={green}] at (0,0) {TangSmalTri} ;}~~
+ \tikz {\pic[TangPuzz={cyan}] at (0,0) {TangSmalTri} ;}~~
+ \tikz {\pic[TangPuzz={magenta}] at (0,0) {TangPara} ;}~~
+
+ \vspace*{1cm}
+
+ \TangramTikz[Couleur=orange]<scale=1>{Maison}
+ \TangramTikz[Correction]<scale=1>{Maison}
+ \TangramTikz[CorrectionCouleur]<scale=1>{Maison}
+ \TangramTikz[ListeCouleurs={blue,red,black,orange,purple},CorrectionCouleur]<scale=1>{Maison}
+\end{center}
+
+\vspace{0.5cm}
+
+%\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
+
+%\hfill{}\textit{Merci à Denis Bitouzé et à Patrick Bideault pour leurs retours et idées !}
+
+\vfill
+
+\hrule
+
+\medskip
+
+\TableauDocumentation
+
+\medskip
+
+\hrule
+
+\medskip
+
+\newpage
+
+\phantomsection
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\newpage
+
+\part{Introduction}
+
+\section{Le package TangramTikz}
+
+\subsection{Source}
+
+Certaines idées viennent de \url{https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex}, avec une proposition de Andrew Stacey.
+
+\smallskip
+
+Le package a ensuite été \textit{construit} et \textit{modestement enrichi} autour de styles et méthodes proposées par Andrew Stacey.
+
+\subsection{Chargement du package, packages utilisés}
+
+Le package \textsf{TangramTikz} se charge dans le préambule via la commande :
+
+\begin{PresentationCode}{listing only}
+\usepackage{TangramTikz}
+\end{PresentationCode}
+
+Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}.
+
+\medskip
+
+Il charge les packages et librairies suivantes :
+
+\begin{itemize}
+ \item \texttt{tikz} avec les librairies \Cle{calc} et \Cle{shapes.geometric} ;
+ \item \texttt{xstring}, \texttt{xparse}, \texttt{simplekv} et \texttt{listofitems}.
+\end{itemize}
+
+\subsection{\og Philosophie \fg{} du package}
+
+L'idée est de proposer, grâce à \TikZ, des \textsf{commandes} pour présenter un jeu de Tangram :
+
+\begin{itemize}
+ \item sous forme du puzzle avec pièces \textit{pleines} ;
+ \item sous forme du puzzle avec pièces \textit{avec une petite bordure} ;
+ \item sous forme du puzzle coloré avec pièces \textit{avec une petite bordure}.
+\end{itemize}
+
+\begin{PresentationCode}{listing only}
+%commande autonome pour afficher un Tangram
+\TangramTikz[clés]<options tikz>{nom_du_tangram}
+\end{PresentationCode}
+
+Il est également proposé un \textsf{environnement} ainsi qu'une \textsf{commande} pour construire soi-même le puzzle, en plaçant \textit{manuellement} les pièces.
+
+\begin{PresentationCode}{listing only}
+%environnement, avec clés en français, et placement des pièces
+\begin{EnvTangramTikz}[clés]<options tikz>
+ %placement des pièces
+ \PieceTangram[clés]<options pic>(decalH,decalV){TangGrandTri}
+ \PieceTangram[clés]<options pic>(decalH,decalV){TangGrandTri}
+ \PieceTangram[clés]<options pic>(decalH,decalV){TangMoyTri}
+ \PieceTangram[clés]<options pic>(decalH,decalV){TangPetTri}
+ \PieceTangram[clés]<options pic>(decalH,decalV){TangPetTri}
+ \PieceTangram[clés]<options pic>(decalH,decalV){TangCar}
+ \PieceTangram[clés]<options pic>(decalH,decalV){TangPara}
+ %\filldraw[black] (0,0) circle[radius=4pt] ; %repère pour les pièces
+\end{EnvTangramTikz}
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Le fonctionnement}
+
+\section{Fonctionnement \og manuel \fg}
+
+\subsection{Les pièces du Tangram}
+
+Un Tangram est composé de 7 pièces (visibles sur la page de garde):
+
+\begin{itemize}
+ \item 2 grands triangles isocèles rectangles ;
+ \item 1 triangle isocèle rectangle ;
+ \item 2 petits triangles isocèles rectangles ;
+ \item 1 carré ;
+ \item 1 parallélogramme.
+\end{itemize}
+
+Chacune des pièces qui compose le Tangram est définie en langage \tikzlogo, sous forme d'un \texttt{pic} autonome.
+
+\medskip
+
+Le schéma suivant propose de visualiser les (5) pièces différentes :
+
+\begin{itemize}
+ \item avec leur \textcolor{purple}{\texttt{nom}} en code \tikzlogo{} ;
+ \item avec leur \textit{orientation} initiale ;
+ \item leur \textcolor{red}{\textit{origine}} initiale ;
+ \item leurs \textcolor{blue}{\textit{dimensions}} utiles (qui sont données en \textit{unité}).
+\end{itemize}
+
+\begin{center}
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangGrandTri} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(2,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {2} ;
+ \draw[thick,<->,>=latex] (2.25,0)--++(0,2) node[blue,scale=1.5,midway,right,font=\large\sffamily] {2} ;
+ \draw[thick,<->,>=latex] (-0.15,0.15)--++(45:{sqrt(8)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{2\sqrt{2}}$} ;
+ \draw (1,3) node[scale=1.5,purple,below=1pt,font=\Large\ttfamily] {TangGrandTri} ;
+ \end{tikzpicture}
+ ~
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangMoyTri} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(2,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {2} ;
+ \draw[thick,<->,>=latex] (-0.15,0.15)--++(45:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw[thick,<->,>=latex] (2.15,0.15)--++(135:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw (1,3) node[purple,scale=1.5,below=1pt,font=\Large\ttfamily] {TangMoyTri} ;
+ \end{tikzpicture}
+ ~
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangPetTri} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(1,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {1} ;
+ \draw[thick,<->,>=latex] (-0.15,0.15)--++(45:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw[thick,<->,>=latex] (1.25,0)--++(0,1) node[blue,scale=1.5,midway,right,font=\large\sffamily] {1} ;
+ \draw (1,3) node[purple,scale=1.5,below=1pt,font=\Large\ttfamily] {TangPetTri} ;
+ \end{tikzpicture}
+
+ \smallskip
+
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangCar} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(1,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {1} ;
+ \draw[thick,<->,>=latex] (1.25,0)--++(0,1) node[blue,scale=1.5,midway,right,font=\large\sffamily] {1} ;
+ \draw[thick,dashed] (0,0)--(-0.65,0.65) (1,1)--(0.35,1.65) ;
+ \draw[thick,<->,>=latex] (-0.65,0.65)--++(45:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw (1,3) node[purple,scale=1.5,below=1pt,font=\Large\ttfamily] {TangCar} ;
+ \end{tikzpicture}
+ ~
+ \begin{tikzpicture}[scale=1.25]
+ \draw[thin,lightgray!50] (-1,-1) grid (3,3) ;
+ \PieceTangram{TangPara} \filldraw[red] (0,0) circle[radius=2pt] ;
+ \draw[thick,<->,>=latex] (0,-0.25)--(1,-0.25) node[blue,scale=1.5,midway,below,font=\large\sffamily] {1} ;
+ \draw[thick,<->,>=latex] (-0.15,0.15)--++(45:{sqrt(2)}) node[blue,scale=1.5,midway,sloped,above,font=\large\sffamily] {$\mathsf{\sqrt{2}}$} ;
+ \draw[thick,<->,>=latex] (2.15,0)--++(0,1) node[blue,scale=1.5,midway,right,font=\large\sffamily] {1} ;
+ \draw[thick,<->,>=latex] (2.15,1.15)--++(135:{0.5*sqrt(2)}) node[blue,midway,sloped,above,font=\large\sffamily] {$\mathsf{0{,}5\sqrt{2}}$} ;
+ \draw[thick,dashed] (2,1)--++(0.15,0.15) (1,1)--++(45:{0.5*sqrt(2)+0.2}) ;
+ \draw (1,3) node[purple,scale=1.5,below=1pt,font=\Large\ttfamily] {TangPara} ;
+ \end{tikzpicture}
+\end{center}
+
+Chacune des \textit{pièces} peut donc être :
+
+\begin{itemize}
+ \item pivotée, grâce à l'option \tikzlogo{} \texttt{rotate=...} ;
+ \item retournée horizontalement ou verticalement, grâce aux options \tikzlogo{} \texttt{xscale=-1} et \texttt{yscale=-1} ;
+ \item déplacée, en la plaçant au point de coordonnées \texttt{(x,y)}.
+\end{itemize}
+
+Chaque pièce peut posséder un style prédéfini :
+
+\begin{itemize}
+ \item \texttt{TangPuzz} : pièce de puzzle, \textit{pleine}, pour laquelle on peut choisir une couleur (\Cle{black} par défaut) ;
+ \item \texttt{TangSol} : pièce de puzzle, \textit{avec bordure blanche}, pour laquelle on peut choisir une couleur (\Cle{black} par défaut).
+\end{itemize}
+
+\pagebreak
+
+\subsection{Placement des pièces}
+
+Une première manière de placer les \textit{pièces} est donc d'utiliser une syntaxe des \texttt{pic} en \tikzlogo{} :
+
+\begin{PresentationCode}{listing only}
+%environnement ou commande tikz
+\pic[style,rotate=...,xscale=...,yscale=...] at (x,y) {nom_piece} ;
+\end{PresentationCode}
+
+Le package \textsf{TangramTikz} propose également une commande spécifique pour placer les pièces :
+
+\begin{PresentationCode}{listing only}
+%environnement ou commande tikz
+\PieceTangram[style={couleur}]<xscale=...,yscale=...,rotate=...>(x,y){nom_piece}
+\end{PresentationCode}
+
+Un Tangram peut donc être \textit{constuit} manuellement, grâce aux 7 pièces du puzzle, en :
+
+\begin{itemize}
+ \item \textit{plaçant} les pièces à l'origine ;
+ \item en les \textit{pivotant}/\textit{retournant} pour l'orienter correctement ;
+ \item en les \textit{translatant} pour les placer correctement.
+\end{itemize}
+
+\begin{PresentationCode}{}
+%version corrigée et coloriée (taille par défaut)
+\begin{EnvTangramTikz}
+ \PieceTangram[TangSol={green}]({0},{0}){TangCar}
+ \PieceTangram[TangSol={red}]({-1.5},{1}){TangGrandTri}
+ \PieceTangram[TangSol={red}]<rotate=-90>({0.5},{3}){TangGrandTri}
+ \PieceTangram[TangSol={purple}]<xscale=-1,rotate=0>({2.5},{2}){TangPara}
+ \PieceTangram[TangSol={blue}]({-1.5},{2}){TangPetTri}
+ \PieceTangram[TangSol={blue}]<xscale=-1,rotate=90>({-0.5},{2}){TangPetTri}
+ \PieceTangram[TangSol={orange}]({-0.5},{3}){TangMoyTri}
+ \filldraw[black] (0,0) circle[radius=2pt] ; %repère pour les pièces
+\end{EnvTangramTikz}
+%version "énoncé" (taille par défaut)
+\begin{EnvTangramTikz}
+ \PieceTangram[TangPuzz]({0},{0}){TangCar}
+ \PieceTangram[TangPuzz]({-1.5},{1}){TangGrandTri}
+ \PieceTangram[TangPuzz]<rotate=-90>({0.5},{3}){TangGrandTri}
+ \PieceTangram[TangPuzz]<xscale=-1,rotate=0>({2.5},{2}){TangPara}
+ \PieceTangram[TangPuzz]({-1.5},{2}){TangPetTri}
+ \PieceTangram[TangPuzz]<xscale=-1,rotate=90>({-0.5},{2}){TangPetTri}
+ \PieceTangram[TangPuzz]({-0.5},{3}){TangMoyTri}
+\end{EnvTangramTikz}
+\end{PresentationCode}
+
+\pagebreak
+
+\section{Fonctionnement \og automatique \fg}
+
+\subsection{Commande}
+
+Un certain nombre de Tangrams sont prédéfinis dans le package \textsf{TangramTikz}, qui peuvent être \textit{appelés} grâce à une commande autonome.
+
+\begin{PresentationCode}{listing only}
+%commande autonome pour afficher un Tangram
+\TangramTikz[clés]<options tikz>{nom_du_tangram}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%commande autonome pour afficher le Tangram du Chat/Bateau/Kangourou, avec options par défaut
+\TangramTikz{Chat}~~\TangramTikz{Bateau}~~\TangramTikz{Kangourou}
+\end{PresentationCode}
+
+\subsection{Clés, options et arguments}
+
+Le premier argument, \textit{optionnel} et entre \texttt{[...]}, correspond aux clés et options :
+
+\begin{itemize}
+ \item le booléen \Cle{Puzzle} qui affiche les pièces (monochromes) de puzzle, sans bordure ; \hfill~défaut : \Cle{true}
+ \item le booléen \Cle{Correction} qui affiche les pièces (monochromes) du puzzle, avec bordure ; \hfill~défaut : \Cle{false}
+ \item \Cle{Couleur} qui paramètre la couleur globale du puzzle avec les booléens précédents ; \hfill~défaut : \Cle{black}
+ \item le booléen \Cle{CorrectionCouleur} qui affiche les pièces (colorées) du puzzle, avec bordure ; \hfill~défaut : \Cle{false}
+ \item \Cle{ListeCouleurs} qui est la couleur des pièces (\texttt{GT,MT,PT,CAR,PARA}) ;
+
+ \hfill~défaut : \Cle{red,orange,blue,green,purple}
+ \item \Cle{Sep} qui est l'épaisseur de la bordure des pièces en mode \Cle{Correction} \hfill~défaut : \Cle{1pt}
+\end{itemize}
+
+Le deuxième argument, \textit{optionnel} et entre \texttt{<...>}, correspond aux options qui sont passés à l'environnement \tikzlogo{} qui sert de base à la commande, comme par exemple :
+
+\begin{itemize}
+ \item un changement d'unité(s), un changement d'échelle ;
+ \item une rotation, un alignement vertical ;
+ \item etc
+\end{itemize}
+
+Le troisième argument, \textit{obligatoire} et entre \texttt{\{...\}} est quant à lui le nom du Tangram issu de la \textit{base de données} présente dans le package :
+
+\texttt{\begin{multicols}{5}
+ \begin{itemize}
+ \item Carre
+ \item Pingouin
+ \item Bateau
+ \item Maison
+ \item Sapin
+ \item Chat
+ \item Cygne
+ \item Pyramide
+ \item Canard
+ \item Fusee
+ \item Bougie
+ \item Chemise
+ \item Poisson
+ \item Voilier
+ \item Kangourou
+ \item Chien
+ \end{itemize}
+\end{multicols}}
+
+\pagebreak
+
+\begin{PresentationCode}{}
+\TangramTikz{Fusee}~~
+\TangramTikz[Couleur=red]{Fusee}~~
+\TangramTikz[Correction]{Fusee}~~
+\TangramTikz[Correction,Couleur=lightgray]{Fusee}~~
+\TangramTikz[CorrectionCouleur,ListeCouleurs={orange,blue,yellow,green,pink},Sep=1mm]{Fusee}
+
+\TangramTikz<scale=1.5,rotate=30>{Fusee}~~
+\TangramTikz<scale=0.75,rotate=-90>{Fusee}
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Galerie de Tangrams disponibles}
+
+\begin{PresentationCode}{}
+\TangramTikz{Carre}
+\TangramTikz[Correction]{Carre}
+\TangramTikz[CorrectionCouleur]{Carre}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Pingouin}
+ \TangramTikz[Correction]{Pingouin}
+ \TangramTikz[CorrectionCouleur]{Pingouin}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Bateau}
+ \TangramTikz[Correction]{Bateau}
+ \TangramTikz[CorrectionCouleur]{Bateau}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Maison}
+ \TangramTikz[Correction]{Maison}
+ \TangramTikz[CorrectionCouleur]{Maison}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Sapin}
+ \TangramTikz[Correction]{Sapin}
+ \TangramTikz[CorrectionCouleur]{Sapin}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Chat}
+ \TangramTikz[Correction]{Chat}
+ \TangramTikz[CorrectionCouleur]{Chat}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Cygne}
+ \TangramTikz[Correction]{Cygne}
+ \TangramTikz[CorrectionCouleur]{Cygne}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Pyramide}
+ \TangramTikz[Correction]{Pyramide}
+ \TangramTikz[CorrectionCouleur]{Pyramide}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Canard}
+ \TangramTikz[Correction]{Canard}
+ \TangramTikz[CorrectionCouleur]{Canard}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Fusee}
+ \TangramTikz[Correction]{Fusee}
+ \TangramTikz[CorrectionCouleur]{Fusee}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Bougie}
+ \TangramTikz[Correction]{Bougie}
+ \TangramTikz[CorrectionCouleur]{Bougie}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Chemise}
+ \TangramTikz[Correction]{Chemise}
+ \TangramTikz[CorrectionCouleur]{Chemise}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Poisson}
+ \TangramTikz[Correction]{Poisson}
+ \TangramTikz[CorrectionCouleur]{Poisson}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Voilier}
+ \TangramTikz[Correction]{Voilier}
+ \TangramTikz[CorrectionCouleur]{Voilier}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Kangourou}
+ \TangramTikz[Correction]{Kangourou}
+ \TangramTikz[CorrectionCouleur]{Kangourou}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+ \TangramTikz{Chien}
+ \TangramTikz[Correction]{Chien}
+ \TangramTikz[CorrectionCouleur]{Chien}
+\end{PresentationCode}
+
+\newpage
+
+\part{Historique}
+
+\verb|v0.1.0|~:~~~~Version initiale
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty b/graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty
new file mode 100644
index 0000000000..90e772d99c
--- /dev/null
+++ b/graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty
@@ -0,0 +1,513 @@
+% Author.........: C. Pierquet
+% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% Inspiration....: https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{TangramTikz}[2023/01/22 v0.1.0 Tangram Puzzles with TikZ]
+% 0.1.0 Version initiale + quelques modèles
+
+%------Packages utiles
+\RequirePackage{tikz}
+\RequirePackage{xparse}
+\RequirePackage{simplekv}
+\RequirePackage{xstring}
+\RequirePackage{listofitems}
+%librairies tikz
+\usetikzlibrary{calc,shapes.geometric}
+
+%pieces and styles, [en] and [fr], and keys
+%https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex
+\tikzset{
+ TangBigTri/.pic={\path[pic actions] (0,0)--(2,0)--(2,2)--cycle;},
+ TangGrandTri/.pic={\path[pic actions] (0,0)--(2,0)--(2,2)--cycle;},
+ TangMedTri/.pic={\path[pic actions] (0,0)--(1,1)--(2,0)--cycle;},
+ TangMoyTri/.pic={\path[pic actions] (0,0)--(1,1)--(2,0)--cycle;},
+ TangSqua/.pic={\path[pic actions] (0,0)--(1,0)--(1,1)--(0,1)--cycle;},
+ TangCar/.pic={\path[pic actions] (0,0)--(1,0)--(1,1)--(0,1)--cycle;},
+ TangSmalTri/.pic={\path[pic actions] (0,0)--(1,0)--(1,1)--cycle;},
+ TangPetTri/.pic={\path[pic actions] (0,0)--(1,0)--(1,1)--cycle;},
+ TangPara/.pic={\path[pic actions] (0,0)--(1,0)--(2,1)--(1,1)--cycle;}
+}
+\tikzset{%
+ TangPuzz/.style={transform shape,fill=#1,draw=#1},
+ TangPuzz/.default=black,
+ TangSol/.style={transform shape,fill=#1,draw=white,line width=\TangBorder},
+ TangSol/.default=black
+}
+
+%the square / le carre
+\NewDocumentCommand\TangramSquare{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \pic[TangSol={\TanGListeCouleurs[1]}] at (0,0) {TangBigTri};%
+ \pic[TangSol={\TanGListeCouleurs[1]},rotate=-90] at (2,2) {TangBigTri};%
+ \pic[TangSol={\TanGListeCouleurs[4]},rotate=-90] at (2,0) {TangSqua};%
+ \pic[TangSol={\TanGListeCouleurs[3]},rotate=180] at (4,0) {TangSmalTri};%
+ \pic[TangSol={\TanGListeCouleurs[3]},rotate=90] at (2,-1) {TangSmalTri};%
+ \pic[TangSol={\TanGListeCouleurs[5]},xscale=-1] at (2,-1) {TangPara};%
+ \pic[TangSol={\TanGListeCouleurs[2]},rotate=180] at (3,-1) {TangMedTri};%
+ }%
+ {%
+ \pic[#2] at (0,0) {TangBigTri};%
+ \pic[#2,rotate=-90] at (2,2) {TangBigTri};%
+ \pic[#2,rotate=-90] at (2,0) {TangSqua};%
+ \pic[#2,rotate=180] at (4,0) {TangSmalTri};%
+ \pic[#2,rotate=90] at (2,-1) {TangSmalTri};%
+ \pic[#2,xscale=-1] at (2,-1) {TangPara};%
+ \pic[#2,rotate=180] at (3,-1) {TangMedTri};%
+ }%
+}
+
+%the pinguin / le pingouin
+%https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex
+\NewDocumentCommand\TangramPinguin{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \path (0,-1) pic[TangSol={\TanGListeCouleurs[3]}] {TangSmalTri}
+ ++(1,0) pic[TangSol={\TanGListeCouleurs[4]}] {TangSqua}
+ ++(1,1) pic[TangSol={\TanGListeCouleurs[1]},rotate=-45,yscale=-1] {TangBigTri}
+ ++(-45:2) pic[TangSol={\TanGListeCouleurs[1]},rotate=-135] {TangBigTri}
+ +({-sqrt(2)},0) pic[TangSol={\TanGListeCouleurs[5]},rotate=-135] {TangPara}
+ ++(-2,{-2*sqrt(2)}) pic[TangSol={\TanGListeCouleurs[2]}] {TangMedTri}
+ ++(2,1) pic[TangSol={\TanGListeCouleurs[3]},rotate=-90] {TangSmalTri} ;
+ }%
+ {%
+ \path (0,-1) pic[#2] {TangSmalTri}
+ ++(1,0) pic[#2] {TangSqua}
+ ++(1,1) pic[#2,rotate=-45,yscale=-1] {TangBigTri}
+ ++(-45:2) pic[#2,rotate=-135] {TangBigTri}
+ +({-sqrt(2)},0) pic[#2,rotate=-135] {TangPara}
+ ++(-2,{-2*sqrt(2)}) pic[#2] {TangMedTri}
+ ++(2,1) pic[#2,rotate=-90] {TangSmalTri} ;
+ }%
+}
+
+%the boat / le bateau
+%https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex
+\NewDocumentCommand\TangramBoat{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \path (0,0) pic[TangSol={\TanGListeCouleurs[2]},rotate=180] {TangMedTri}
+ ++(-1,-1) pic[TangSol={\TanGListeCouleurs[5]}] {TangPara}
+ ++(1,0) pic[TangSol={\TanGListeCouleurs[3]}] {TangSmalTri}
+ ++(1,0) pic[TangSol={\TanGListeCouleurs[4]}] {TangSqua}
+ ++(2,1) pic[TangSol={\TanGListeCouleurs[3]},rotate=180] {TangSmalTri}
+ ++(-2.5,0) pic[TangSol={\TanGListeCouleurs[1]},rotate=80] {TangBigTri}
+ ++(80:4)
+ ++(170:2) pic[TangSol={\TanGListeCouleurs[1]},rotate=-100] {TangBigTri} ;
+ }%
+ {%
+ \path (0,0) pic[#2,rotate=180] {TangMedTri}
+ ++(-1,-1) pic[#2] {TangPara}
+ ++(1,0) pic[#2] {TangSmalTri}
+ ++(1,0) pic[#2] {TangSqua}
+ ++(2,1) pic[#2,rotate=180] {TangSmalTri}
+ ++(-2.5,0) pic[#2,rotate=80] {TangBigTri}
+ ++(80:4)
+ ++(170:2) pic[#2,rotate=-100] {TangBigTri} ;
+ }%
+}
+
+%the house / la maison
+\NewDocumentCommand\TangramHome{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=135>({sqrt(8)},0){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=45>(0,0){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}](-0.5,{sqrt(2)}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=135>({0.5+sqrt(8)},{sqrt(2)}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}](0.5,{sqrt(2)+1}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=-1,rotate=45>({sqrt(8)},0){TangPetTri}
+ }%
+ {%
+ \PieceTangram[#2]<rotate=135>({sqrt(8)},0){TangGrandTri}
+ \PieceTangram[#2]<rotate=45>(0,0){TangMoyTri}
+ \PieceTangram[#2](-0.5,{sqrt(2)}){TangPara}
+ \PieceTangram[#2]<rotate=135>({0.5+sqrt(8)},{sqrt(2)}){TangGrandTri}
+ \PieceTangram[#2](0.5,{sqrt(2)+1}){TangCar}
+ \PieceTangram[#2]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<xscale=-1,rotate=45>({sqrt(8)},0){TangPetTri}
+ }%
+}
+
+%the fir tree / le sapin
+\NewDocumentCommand\TangramFirTree{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=0>({0},{0}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=0>({-1.5},{1}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-90>({0.5},{3}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=0>({2.5},{2}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=0>({-1.5},{2}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=-1,rotate=90>({-0.5},{2}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=0>({-0.5},{3}){TangMoyTri}
+ }%
+ {%
+ \PieceTangram[#2]<rotate=0>({0},{0}){TangCar}
+ \PieceTangram[#2]<rotate=0>({-1.5},{1}){TangGrandTri}
+ \PieceTangram[#2]<rotate=-90>({0.5},{3}){TangGrandTri}
+ \PieceTangram[#2]<xscale=-1,rotate=0>({2.5},{2}){TangPara}
+ \PieceTangram[#2]<rotate=0>({-1.5},{2}){TangPetTri}
+ \PieceTangram[#2]<xscale=-1,rotate=90>({-0.5},{2}){TangPetTri}
+ \PieceTangram[#2]<rotate=0>({-0.5},{3}){TangMoyTri}
+ }%
+}
+
+%the cat / le chat
+\NewDocumentCommand\TangramCat{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=45>({2-sqrt(2)},{2+sqrt(2)}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=0>(0,0){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=45>({2-sqrt(2)},{2-sqrt(2)}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({2},{0}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=45>({2-1.5*sqrt(2)},{2+1.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=1,rotate=-135>({2-0.5*sqrt(2)},{2+2.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=90>({2-sqrt(2)},{sqrt(2)}){TangMoyTri}
+ }%
+ {%
+ \PieceTangram[#2]<rotate=45>({2-sqrt(2)},{2+sqrt(2)}){TangCar}
+ \PieceTangram[#2]<rotate=0>(0,0){TangGrandTri}
+ \PieceTangram[#2]<rotate=45>({2-sqrt(2)},{2-sqrt(2)}){TangGrandTri}
+ \PieceTangram[#2]({2},{0}){TangPara}
+ \PieceTangram[#2]<rotate=45>({2-1.5*sqrt(2)},{2+1.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<xscale=1,rotate=-135>({2-0.5*sqrt(2)},{2+2.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<rotate=90>({2-sqrt(2)},{sqrt(2)}){TangMoyTri}
+ }%
+}
+
+%the swan / le cygne
+\NewDocumentCommand\TangramSwan{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<yscale=-1,rotate=-45>({0},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=0>({sqrt(2)},{sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=0>({sqrt(2)+1},{sqrt(2)}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<xscale=-1,rotate=90>({0},{0}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=-135>({0},{2+sqrt(2)}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=1,rotate=0>({-1},{1+sqrt(2)}){TangPetTri}
+ }%
+ {%
+ \PieceTangram[#2]<yscale=-1,rotate=-45>({0},{0}){TangGrandTri}
+ \PieceTangram[#2]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangGrandTri}
+ \PieceTangram[#2]({sqrt(2)},{sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]({sqrt(2)+1},{sqrt(2)}){TangCar}
+ \PieceTangram[#2]<xscale=-1,rotate=90>({0},{0}){TangMoyTri}
+ \PieceTangram[#2]<xscale=-1,rotate=-135>({0},{2+sqrt(2)}){TangPara}
+ \PieceTangram[#2]<xscale=1>({-1},{1+sqrt(2)}){TangPetTri}
+ }%
+}
+
+%the duck / le canard
+\NewDocumentCommand\TangramDuck{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<xscale=-1,rotate=135>({0},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<yscale=-1,rotate=135>({sqrt(2)},{sqrt(2)}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=45>({2*sqrt(2)},{0}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=90>({2.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=0>({sqrt(8)+0.5*sqrt(2)},{1+0.5*sqrt(2)}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({2.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangMoyTri}
+ }%
+ {%
+ \PieceTangram[#2]<xscale=-1,rotate=135>({0},{0}){TangGrandTri}
+ \PieceTangram[#2]<yscale=-1,rotate=135>({sqrt(2)},{sqrt(2)}){TangGrandTri}
+ \PieceTangram[#2]<rotate=45>({2*sqrt(2)},{0}){TangCar}
+ \PieceTangram[#2]<rotate=-45>({sqrt(2)},{sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<rotate=90>({2.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<xscale=-1,rotate=0>({sqrt(8)+0.5*sqrt(2)},{1+0.5*sqrt(2)}){TangPara}
+ \PieceTangram[#2]({2.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangMoyTri}
+ }%
+}
+
+%the pyramid / la pyramide
+\NewDocumentCommand\TangramPyramid{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<xscale=1,rotate=135>({0},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<xscale=-1,rotate=135>({0},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({-0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=1,rotate=-45>({-sqrt(2)},{sqrt(2)}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<xscale=1,rotate=-135>({0},{2*sqrt(2)}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<xscale=1,rotate=45>({0},{sqrt(2)}){TangPetTri}
+ }%
+ {%
+ \PieceTangram[#2]<xscale=1,rotate=135>({0},{0}){TangGrandTri}
+ \PieceTangram[#2]<xscale=-1,rotate=135>({0},{0}){TangGrandTri}
+ \PieceTangram[#2]<rotate=-45>({-0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<xscale=1,rotate=-45>({-sqrt(2)},{sqrt(2)}){TangPara}
+ \PieceTangram[#2]<rotate=45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar}
+ \PieceTangram[#2]<xscale=1,rotate=-135>({0},{2*sqrt(2)}){TangMoyTri}
+ \PieceTangram[#2]<xscale=1,rotate=45>({0},{sqrt(2)}){TangPetTri}
+ }%
+}
+
+%the rocket / la fusee
+\NewDocumentCommand\TangramRocket{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=0>({0},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=180>({2},{2}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({0},{2}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({0.5},{-1}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-0.5},{-1}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=180>({0.5},{-1}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<rotate=-90>({1.5},{0}){TangPara}
+ }%
+ {%
+ \PieceTangram[#2]<rotate=0>({0},{0}){TangGrandTri}
+ \PieceTangram[#2]<rotate=180>({2},{2}){TangGrandTri}
+ \PieceTangram[#2]({0},{2}){TangMoyTri}
+ \PieceTangram[#2]({0.5},{-1}){TangCar}
+ \PieceTangram[#2]({-0.5},{-1}){TangPetTri}
+ \PieceTangram[#2]<rotate=180>({0.5},{-1}){TangPetTri}
+ \PieceTangram[#2]<rotate=-90>({1.5},{0}){TangPara}
+ }%
+}
+
+%the candle / la bougie
+\NewDocumentCommand\TangramCandle{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<yscale=-1,rotate=-45>({0},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-135>({1.5*sqrt(2)},{1.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-135>({1.5*sqrt(2)},{2.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<yscale=-1>({sqrt(2)-1},{1+2*sqrt(2)}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({sqrt(2)-0.5},{1+2*sqrt(2)}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<rotate=70>({sqrt(2)},{2+2*sqrt(2)}){TangPara}
+ }%
+ {%
+ \PieceTangram[#2]<yscale=-1,rotate=-45>({0},{0}){TangGrandTri}
+ \PieceTangram[#2]<rotate=45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri}
+ \PieceTangram[#2]<rotate=-135>({1.5*sqrt(2)},{1.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<rotate=-135>({1.5*sqrt(2)},{2.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<yscale=-1>({sqrt(2)-1},{1+2*sqrt(2)}){TangMoyTri}
+ \PieceTangram[#2]({sqrt(2)-0.5},{1+2*sqrt(2)}){TangCar}
+ \PieceTangram[#2]<rotate=70>({sqrt(2)},{2+2*sqrt(2)}){TangPara}
+ }%
+}
+
+%the shirt / la chemise
+\NewDocumentCommand\TangramShirt{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-90>({0},{2}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=90>({2},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-1},{2}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=90>({1},{2}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({1},{2}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=180>({0},{2}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<rotate=-90>({2},{3}){TangPara}
+ }%
+ {%
+ \PieceTangram[#2]<rotate=-90>({0},{2}){TangGrandTri}
+ \PieceTangram[#2]<rotate=90>({2},{0}){TangGrandTri}
+ \PieceTangram[#2]({-1},{2}){TangMoyTri}
+ \PieceTangram[#2]<rotate=90>({1},{2}){TangPetTri}
+ \PieceTangram[#2]({1},{2}){TangCar}
+ \PieceTangram[#2]<rotate=180>({0},{2}){TangPetTri}
+ \PieceTangram[#2]<rotate=-90>({2},{3}){TangPara}
+ }%
+}
+
+%the fish / le poisson
+\NewDocumentCommand\TangramFish{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<yscale=-1,rotate=-45>({0},{0}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<rotate=-45>({0},{0}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=-90>({-1},{1}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=-45>({sqrt(2)},{0}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-90>({1.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=180>({1.5*sqrt(2)},{-0.5*sqrt(2)}){TangGrandTri}
+ }%
+ {%
+ \PieceTangram[#2]<yscale=-1,rotate=-45>({0},{0}){TangPetTri}
+ \PieceTangram[#2]<rotate=-45>({0},{0}){TangPara}
+ \PieceTangram[#2]<rotate=-90>({-1},{1}){TangMoyTri}
+ \PieceTangram[#2]<rotate=-45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<rotate=-45>({sqrt(2)},{0}){TangCar}
+ \PieceTangram[#2]<rotate=-90>({1.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangGrandTri}
+ \PieceTangram[#2]<rotate=180>({1.5*sqrt(2)},{-0.5*sqrt(2)}){TangGrandTri}
+ }%
+}
+
+%the sailboat / le voilier
+\NewDocumentCommand\TangramSailboat{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=45>({0},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({-2},{0.35}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<yscale=-1,rotate=-45>({0},{0}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=-45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<yscale=-1>({-2+sqrt(2)},{0}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-90>({0},{1+2*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<yscale=-1>({-1-2+sqrt(2)},{0}){TangPara}
+ }%
+ {%
+ \PieceTangram[#2]<rotate=45>({0},{0}){TangGrandTri}
+ \PieceTangram[#2]({-2},{0.35}){TangGrandTri}
+ \PieceTangram[#2]<yscale=-1,rotate=-45>({0},{0}){TangPetTri}
+ \PieceTangram[#2]<rotate=-45>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar}
+ \PieceTangram[#2]<yscale=-1>({-2+sqrt(2)},{0}){TangMoyTri}
+ \PieceTangram[#2]<rotate=-90>({0},{1+2*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]<yscale=-1>({-1-2+sqrt(2)},{0}){TangPara}
+ }%
+}
+
+%the kangaroo / le kangourou
+\NewDocumentCommand\TangramKangaroo{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=180>({2},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=45>({2},{-0.5}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-90>({2},{3}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=-45>({0},{-2}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-0.5*sqrt(2)},{-2-0.5*sqrt(2)}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=-45>({1-0.5*sqrt(2)},{-1-0.5*sqrt(2)}){TangCar}
+ }%
+ {%
+ \PieceTangram[#2]({0},{0}){TangGrandTri}
+ \PieceTangram[#2]<rotate=180>({2},{0}){TangGrandTri}
+ \PieceTangram[#2]<rotate=45>({2},{-0.5}){TangPetTri}
+ \PieceTangram[#2]<rotate=-90>({2},{3}){TangPetTri}
+ \PieceTangram[#2]<xscale=-1,rotate=-45>({0},{-2}){TangPara}
+ \PieceTangram[#2]({-0.5*sqrt(2)},{-2-0.5*sqrt(2)}){TangMoyTri}
+ \PieceTangram[#2]<rotate=-45>({1-0.5*sqrt(2)},{-1-0.5*sqrt(2)}){TangCar}
+ }%
+}
+
+%the dog / le chien
+\NewDocumentCommand\TangramDog{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<yscale=-1,rotate=-90>({0},{0}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1,rotate=-60>({0},{1.75}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-135>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]<rotate=-45>({2-0.5*sqrt(2)},{0.5*sqrt(2)}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=45>({2.5},{2.5}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=-45>({2.5},{2.5+sqrt(2)}){TangPetTri}
+ }%
+ {%
+ \PieceTangram[#2]<yscale=-1,rotate=-90>({0},{0}){TangGrandTri}
+ \PieceTangram[#2]<xscale=-1,rotate=-60>({0},{1.75}){TangPara}
+ \PieceTangram[#2]<rotate=-135>({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri}
+ \PieceTangram[#2]<rotate=-45>({2-0.5*sqrt(2)},{0.5*sqrt(2)}){TangMoyTri}
+ \PieceTangram[#2]<rotate=45>({2.5},{2.5}){TangCar}
+ \PieceTangram[#2]<rotate=-45>({2.5},{2.5+sqrt(2)}){TangPetTri}
+ }%
+}
+
+%macros for tangram creation / commandes pour créer le tangram
+\NewDocumentCommand\TangramTikzCreateEN{ m }{%
+ \readlist*\TanGListeCouleurs{\TangColors}%
+ \ifboolKV[TGRMTikz]{Puzzle}{#1[TangPuzz={\TangColor}]}{}%
+ \ifboolKV[TGRMTikz]{Correction}{#1[TangSol={\TangColor}]}{}%
+ \ifboolKV[TGRMTikz]{ColorCorrection}{#1*}{}%
+}
+\NewDocumentCommand\TangramTikzCreateFR{ m }{%
+ \readlist*\TanGListeCouleurs{\TangCouleurs}%
+ \ifboolKV[TGRMTikz]{Puzzle}{#1[TangPuzz={\TangCouleur}]}{}%
+ \ifboolKV[TGRMTikz]{Correction}{#1[TangSol={\TangCouleur}]}{}%
+ \ifboolKV[TGRMTikz]{CorrectionCouleur}{#1*}{}%
+}
+
+\defKV[TGRMTikz]{%keys [en] and [fr]
+ ListeCouleurs=\xdef\TangCouleurs{#1},
+ ColorList=\xdef\TangColors{#1},%
+ Couleur=\xdef\TangCouleur{#1},%
+ Color=\xdef\TangColor{#1},%
+ Sep=\xdef\TangBorder{#1}
+}
+\setKVdefault[TGRMTikz]{%keys by default [en] and [fr]
+ Puzzle=true,%
+ Correction=false,%
+ ColorCorrection=false,%
+ CorrectionCouleur=false,%
+ ListeCouleurs={red,orange,blue,green,purple},%
+ ColorList={red,orange,blue,green,purple},%
+ Couleur=black,%
+ Color=black,%
+ Sep=1pt
+}
+
+%the independent command / la commande autonome
+\NewDocumentCommand\TangramTikz{ O{} D<>{} m }{%
+ \useKVdefault[TGRMTikz]%
+ \setKV[TGRMTikz]{#1}%
+ \begin{tikzpicture}[line join=bevel,#2]%
+ %SQUARE
+ \IfStrEq{#3}{Square}{\TangramTikzCreateEN{\TangramSquare}}{}%
+ \IfStrEq{#3}{Carre}{\TangramTikzCreateFR{\TangramSquare}}{}%
+ %PINGUIN
+ \IfStrEq{#3}{Pinguin}{\TangramTikzCreateEN{\TangramPinguin}}{}%
+ \IfStrEq{#3}{Pingouin}{\TangramTikzCreateFR{\TangramPinguin}}{}%
+ %BOAT
+ \IfStrEq{#3}{Boat}{\TangramTikzCreateEN{\TangramBoat}}{}%
+ \IfStrEq{#3}{Bateau}{\TangramTikzCreateFR{\TangramBoat}}{}%
+ %HOME
+ \IfStrEq{#3}{Home}{\TangramTikzCreateEN{\TangramHome}}{}%
+ \IfStrEq{#3}{Maison}{\TangramTikzCreateFR{\TangramHome}}{}%
+ %FIRTREE
+ \IfStrEq{#3}{FirTree}{\TangramTikzCreateEN{\TangramFirTree}}{}%
+ \IfStrEq{#3}{Sapin}{\TangramTikzCreateFR{\TangramFirTree}}{}%
+ %CAT
+ \IfStrEq{#3}{Cat}{\TangramTikzCreateEN{\TangramCat}}{}%
+ \IfStrEq{#3}{Chat}{\TangramTikzCreateFR{\TangramCat}}{}%
+ %SWAN
+ \IfStrEq{#3}{Swan}{\TangramTikzCreateEN{\TangramSwan}}{}%
+ \IfStrEq{#3}{Cygne}{\TangramTikzCreateFR{\TangramSwan}}{}%
+ %PYRAMID
+ \IfStrEq{#3}{Pyramid}{\TangramTikzCreateEN{\TangramPyramid}}{}%
+ \IfStrEq{#3}{Pyramide}{\TangramTikzCreateFR{\TangramPyramid}}{}%
+ %DUCK
+ \IfStrEq{#3}{Duck}{\TangramTikzCreateEN{\TangramDuck}}{}%
+ \IfStrEq{#3}{Canard}{\TangramTikzCreateFR{\TangramDuck}}{}%
+ %ROCKET
+ \IfStrEq{#3}{Rocket}{\TangramTikzCreateEN{\TangramRocket}}{}%
+ \IfStrEq{#3}{Fusee}{\TangramTikzCreateFR{\TangramRocket}}{}%
+ %CANDLE
+ \IfStrEq{#3}{Candle}{\TangramTikzCreateEN{\TangramCandle}}{}%
+ \IfStrEq{#3}{Bougie}{\TangramTikzCreateFR{\TangramCandle}}{}%
+ %SHIRT
+ \IfStrEq{#3}{Shirt}{\TangramTikzCreateEN{\TangramShirt}}{}%
+ \IfStrEq{#3}{Chemise}{\TangramTikzCreateFR{\TangramShirt}}{}%
+ %FISH
+ \IfStrEq{#3}{Fish}{\TangramTikzCreateEN{\TangramFish}}{}%
+ \IfStrEq{#3}{Poisson}{\TangramTikzCreateFR{\TangramFish}}{}%
+ %SAILBOAT
+ \IfStrEq{#3}{Sailboat}{\TangramTikzCreateEN{\TangramSailboat}}{}%
+ \IfStrEq{#3}{Voilier}{\TangramTikzCreateFR{\TangramSailboat}}{}%
+ %KANGAROO
+ \IfStrEq{#3}{Kangaroo}{\TangramTikzCreateEN{\TangramKangaroo}}{}%
+ \IfStrEq{#3}{Kangourou}{\TangramTikzCreateFR{\TangramKangaroo}}{}%
+ %DOG
+ \IfStrEq{#3}{Dog}{\TangramTikzCreateEN{\TangramDog}}{}%
+ \IfStrEq{#3}{Chien}{\TangramTikzCreateFR{\TangramDog}}{}%
+ \end{tikzpicture}%
+}
+
+%manual creation / creation manuelle
+\NewDocumentCommand\PieceTangram{ O{TangPuzz} D<>{} D(){0,0} m }{%booléen+options pic+place pic+nom piece
+ \pic[#1,#2] at (#3) {#4};%
+}
+\NewDocumentEnvironment{EnvTangramTikz}{ O{} D<>{} }%
+{%
+ \useKVdefault[TGRMTikz]%
+ \setKV[TGRMTikz]{#1}%
+ \begin{tikzpicture}[line join=bevel,#2]%
+}%
+{%
+ \end{tikzpicture}%
+}
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 06baecf4b6..cb926b1f64 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index d8d6c134da..c10242ef59 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -5,8 +5,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass{article}
-\def\PLversion{2.1.7}
-\def\PLdate{23 Janvier 2023}
+\def\PLversion{2.1.8}
+\def\PLdate{25 Janvier 2023}
\usepackage[pythontex]{ProfLycee}
\usepackage{mathtools}
\usepackage{lualatex-math}
@@ -225,7 +225,7 @@
{\deblst} travailler sur les statistiques à deux variables (algébriques et graphiques) \\
{\deblst} convertir entre bin/dec/hex avec détails \\
{\deblst} présenter un calcul de PGCD \\
-{\deblst} créer un pixelart avec correction éventuelle \\
+%{\deblst} créer un pixelart avec correction éventuelle \\
{\deblst} effectuer des calculs de probas (lois binomiale, exponentielle, de Poisson, normale) \\
{\deblst} créer des arbres de probas \og classiques \fg \\
{\deblst} générer des listes d'entiers aléatoires (avec ou sans répétitions)\\
@@ -710,9 +710,6 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\end{codetex}
\begin{codetex}[listing only]
-%pixelart, dans un environnement tikz
-\PixelArtTikz[clés]{fichier.csv}
-
%sudomaths
\SudoMaths[options]{liste}
\begin{EnvSudoMaths}[options]{grille}...\end{EnvSudoMaths}
@@ -5742,346 +5739,346 @@ $\MesurePrincipale[Crochets]{14pi/7}$
\part{Jeux et récréations}
-\section{PixelART via un fichier csv, en \TikZ}\label{pixelart}
-
-\subsection{Introduction}
-
-\begin{codeidee}
-L'idée est de \textit{proposer}, dans un environnement \TikZ, une commande permettant de générer des grilles PixelART.
-
-Les données sont \textit{lues} à partir d'un fichier \textsf{csv}, externe au fichier \textsf{tex} ou déclaré en interne grâce à l'environnement \ctex{filecontents}.
-\end{codeidee}
-
-\begin{codeinfo}
-Avant toute chose, quelques petites infos sur les données au format \textsf{csv}, surtout dans l'optique de sa lecture et de son traitement par \ctex{ProfLycee} :
-
-\begin{itemize}
- \item le fichier de données \textsf{csv} doit être formaté avec le séparateur décimal \og , \fg ;
- \item des cases vides seront codées par \og \texttt{-} \fg.
-\end{itemize}
-
-Le fichier \textsf{csv} peut être déclaré directement dans le fichier \textsf{tex}, grâce à l'environnement \ctex{filecontents} (intégré en natif sur les dernières versions de \LaTeX) :
-
-\begin{Verbatim}[tabsize=2,fontsize=\scriptsize]
-\begin{filecontents*}{<nomfichier>.csv}
-A,B,C,D
-A,B,D,C
-B,A,C,D
-B,A,D,C
-\end{filecontents*}
-\end{Verbatim}
-
-À la compilation, le fichier \textsf{<nomfichier>.csv} sera créé automatiquement, et l'option \Cle{[overwrite]} permet (logiquement) de propager les modifications au fichier \textsf{csv}.
-\end{codeinfo}
-
-\subsection{Package csvsimple et option}
-
-\begin{codeinfo}
-Le package \textit{central} est ici \ctex{csvsimple}, qui permet de lire et traiter le fichier \textsf{csv}.
-
-Il est \og disponible \fg{} en version \LaTeXe{} ou en version \LaTeXIII. Par défaut, \ctex{ProfLycee} le charge en version \LaTeXIII{}, mais une \Cle{option} est disponible pour une \textit{rétro-compatibilité} avec la version \LaTeXe.
-
-\smallskip
-
-L'option \Cle{csvii} permet de passer l'appel au package en version \LaTeXe.
-\end{codeinfo}
-
-\begin{codetex}[listing only]
-\usepackage{ProfLycee} %chargement du package version 3
-%qui charge :
-%\RequirePackage{expl3}
-%\RequirePackage[l3]{csvsimple}
-
-\usepackage[csvii]{ProfLycee} %chargement du package version 2
-%qui charge :
-%\RequirePackage[legacy]{csvsimple}
-\end{codetex}
-
-\subsection{Exemple simple, clés et options}
-
-\begin{codetex}[listing only]
-%déclaration du fichier csv
-\begin{filecontents*}[overwrite]{basique.csv}
-A,B,C,D
-A,B,D,C
-B,A,D,C
-C,A,B,D
-\end{filecontents*}
-
-\begin{tikzpicture}%avec lettres
- \PixelArtTikz[Codes=ABCD,Style=\large\sffamily]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}%avec chiffres
- \PixelArtTikz[Codes=ABCD,Symboles={45,22,1,7},Symb,Style=\large\sffamily]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}%avec correction
- \PixelArtTikz[codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}%avec correction sans bordure
- \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction,BordCases=false]{basique.csv}
-\end{tikzpicture}
-\end{codetex}
-
-\begin{codesortie}
-\begin{filecontents*}[overwrite]{basique.csv}
-A,B,C,D
-A,B,D,C
-B,A,D,C
-C,A,B,D
-\end{filecontents*}
-
-\begin{center}
- \begin{tblr}{colspec={*{4}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}}
- \SetCell[c=4]{c} Notice & & & \\
- A & B & C & D \\
- 45 & 22 & 1 & 7 \\
- Noir & Vert & Jaune & Rouge \\
- \end{tblr}
-\end{center}
-
-\hfill\begin{tikzpicture}[scale=0.9]
- %avec lettres
- \PixelArtTikz[Codes=ABCD,Style=\large\sffamily]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}[scale=0.9]
- %avec chiffres
- \PixelArtTikz[Codes=ABCD,Symboles={45,22,1,7},Symb,Style=\large\sffamily]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}[scale=0.9]
- %avec correction
- \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}[scale=0.9]
- %avec correction
- \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction,BordCases=false]{basique.csv}
-\end{tikzpicture}
-\hfill~
-\end{codesortie}
-
-\begin{codeinfo}
-La commande \ctex{PixelArtTikz} nécessite de connaître :
-
-\begin{itemize}
- \item le fichier \textsf{csv} à traiter ;
- \item la liste (en fait sous forme de chaîne) des codes utilisés dans le fichier \textsf{csv} (comme \ctex{234679} ou \ctex{ABCDJK}\ldots);
- \item la liste des symboles (éventuellement !) à afficher dans les cases s'il y a ambiguïté, comme \ctex{25,44,12} ou \ctex{AA,AB,AC};
- \item la liste des couleurs (si la correction est demandée), dans le même ordre que la liste des caractères.
-\end{itemize}
-\end{codeinfo}
-
-\begin{codetex}[listing only]
-%environnement tikz
-\PixelArtTikz[clés]{<fichier>.csv}
-\end{codetex}
-
-\begin{codecles}
-Quelques \Cle{Clés} sont nécessaires au bon fonctionnement de la commande :
-
-\begin{itemize}
- \item la clé \Cle{Codes} contient la \textsf{chaîne} des codes \textit{simples} du fichier \textsf{csv} ;
- \item la clé \Cle{Couleurs} qui contient la \textsf{liste} des couleurs associées ;
- \item la clé \Cle{Symboles} qui contient la \textsf{liste éventuelles} des caractères alternatifs à afficher dans les cases ;
- \item la clé booléenne \Cle{Correction} qui permet de colorier le PixelART ;\hfill{}défaut \Cle{false}
- \item la clé booléenne \Cle{Symb} qui permet d'afficher les caractères \textit{alternatifs} ;\hfill{}défaut \Cle{false}
- \item la clé booléenne \Cle{BordCases} qui permet d'afficher les bords des cases de la correction ;\hfill{}défaut \Cle{true}
- \item la clé \Cle{Style} qui permet de spécifier le style des caractères. \hfill{}défaut \Cle{scriptsize}
-\end{itemize}
-\end{codecles}
-
-\begin{codetex}[listing only]
-%codes simples et sans ambiguïté
-%une case vide sera codée par -
-
-\begin{filecontents*}[overwrite]{perroquet.csv}
--,-,-,-,-,-,4,4,4,4,-,-,-,-,-,-
--,-,-,-,4,4,1,1,1,1,4,4,-,-,-,-
--,-,-,4,1,1,1,1,1,1,1,1,4,-,-,-
--,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
--,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
--,4,1,9,9,1,1,1,1,1,1,9,9,1,4,-
--,4,9,9,9,9,4,4,4,4,9,9,9,9,4,-
--,4,9,4,9,9,4,4,4,4,9,4,9,9,4,-
--,4,1,9,9,9,4,4,4,4,9,9,9,1,4,-
--,-,4,1,1,9,4,4,4,4,9,1,1,4,-,-
--,-,4,1,1,1,4,4,4,4,1,1,1,4,-,-
--,-,-,4,1,1,1,4,4,1,1,1,4,-,-,-
--,-,4,3,1,1,1,1,1,1,1,1,3,4,-,-
--,4,6,3,1,1,1,1,1,1,1,1,3,6,4,-
--,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
--,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
--,4,6,4,1,1,1,4,4,1,1,1,4,6,4,-
-2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
--,-,-,-,-,4,1,1,1,1,4,-,-,-,-,-
--,-,-,-,-,-,4,1,1,4,-,-,-,-,-,-
--,-,-,-,-,-,-,4,4,-,-,-,-,-,-,-
-\end{filecontents*}
-
-\begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=123469,Style=\ttfamily]{perroquet.csv}
-\end{tikzpicture}
-
-\begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
-\end{tikzpicture}
-\end{codetex}
-
-\subsection{Exemples complémentaires}
-
-\begin{codeinfo}
-Les symboles affichés dans les cases sont situés aux nœuds de coordonnées $(c\,;\,-l)$ où $l$ et $c$ sont les numéros de ligne et de colonne correspondants à la position de la donnée dans le fichier \textsf{csv}.
-\end{codeinfo}
-
-\begin{codesortie}
-\begin{filecontents*}[overwrite]{perroquet.csv}
--,-,-,-,-,-,4,4,4,4,-,-,-,-,-,-
--,-,-,-,4,4,1,1,1,1,4,4,-,-,-,-
--,-,-,4,1,1,1,1,1,1,1,1,4,-,-,-
--,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
--,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
--,4,1,9,9,1,1,1,1,1,1,9,9,1,4,-
--,4,9,9,9,9,4,4,4,4,9,9,9,9,4,-
--,4,9,4,9,9,4,4,4,4,9,4,9,9,4,-
--,4,1,9,9,9,4,4,4,4,9,9,9,1,4,-
--,-,4,1,1,9,4,4,4,4,9,1,1,4,-,-
--,-,4,1,1,1,4,4,4,4,1,1,1,4,-,-
--,-,-,4,1,1,1,4,4,1,1,1,4,-,-,-
--,-,4,3,1,1,1,1,1,1,1,1,3,4,-,-
--,4,6,3,1,1,1,1,1,1,1,1,3,6,4,-
--,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
--,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
--,4,6,4,1,1,1,4,4,1,1,1,4,6,4,-
-2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
--,-,-,-,-,4,1,1,1,1,4,-,-,-,-,-
--,-,-,-,-,-,4,1,1,4,-,-,-,-,-,-
--,-,-,-,-,-,-,4,4,-,-,-,-,-,-,-
-\end{filecontents*}
-
-\begin{center}
- \begin{tblr}{colspec={*{6}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}}
- \SetCell[c=6]{c} Notice & & & & & \\
- 1 & 2 & 3 & 5 & 6 & 9 \\
- Rouge & Marron & Jaune & Noir & Bleu & Blanc \\
- \end{tblr}
-% \renewcommand\arraystretch{1.25}
-% \begin{tabular}{|c|c|c|c|c|c|}
-% \hline
-% \multicolumn{6}{|c|}{Notice} \\ \hline
-% 1 & 2 & 3 & 5 & 6 & 9 \\ \hline
-% Rouge & Marron & Jaune & Noir & Bleu & Blanc \\ \hline
-% \end{tabular}
-\end{center}
-
-\begin{center}
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=123469,Style=\ttfamily]{perroquet.csv}
- \end{tikzpicture}
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
- \end{tikzpicture}
-\end{center}
-
-\begin{center}
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \draw[very thin,gray,xstep=1,ystep=1] (0,0) grid (17,-24) ;
- \foreach \x in {0,1,...,17} \draw[very thin,gray] (\x,-3pt)--(\x,3pt) node[above,font=\scriptsize\sffamily] {\x} ;
- \foreach \y in {0,-1,...,-24} \draw[very thin,gray] (3pt,\y)--(-3pt,\y) node[left,font=\scriptsize\sffamily] {\y} ;
- \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
- \filldraw[Blue] (14,-1) circle[radius=1] ;
- \filldraw[Yellow] (14,-1) circle[radius=0.8] ;
- \draw[ForestGreen,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2) node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ;
- \end{tikzpicture}
-\end{center}
-\end{codesortie}
-
-\begin{codetex}[listing only]
-%code tikz et pixelart
-\filldraw[Blue] (14,-1) circle[radius=1] ;
-\filldraw[Yellow] (14,-1) circle[radius=0.8] ;
-\draw[ForestGreen,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2)
- node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ;
-\end{codetex}
-
-\pagebreak
-
-\begin{codetex}[listing only]
-%codes avec ambiguïté
-
-\begin{filecontents*}[overwrite]{cap.csv}
--,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,-
--,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,-
-D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,-
--,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,-
--,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,-
--,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,-
--,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,-
--,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,-
--,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,-
--,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,-
--,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,-
--,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,-
--,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,-
--,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,-
--,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,-
--,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D
--,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D
--,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D
--,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,-
--,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,-
--,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,-
--,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,-
-\end{filecontents*}
-
-\begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv}
-\end{tikzpicture}
-
-\begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv}
-\end{tikzpicture}
-\end{codetex}
-
-\begin{codesortie}
-\begin{filecontents*}[overwrite]{cap.csv}
--,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,-
--,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,-
-D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,-
--,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,-
--,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,-
--,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,-
--,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,-
--,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,-
--,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,-
--,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,-
--,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,-
--,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,-
--,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,-
--,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,-
--,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,-
--,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D
--,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D
--,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D
--,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,-
--,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,-
--,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,-
--,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,-
-\end{filecontents*}
-
-\begin{center}
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv}
- \end{tikzpicture}
- ~~
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv}
- \end{tikzpicture}
-\end{center}
-\end{codesortie}
-
-\newpage
+%\section{PixelART via un fichier csv, en \TikZ}\label{pixelart}
+%
+%\subsection{Introduction}
+%
+%\begin{codeidee}
+%L'idée est de \textit{proposer}, dans un environnement \TikZ, une commande permettant de générer des grilles PixelART.
+%
+%Les données sont \textit{lues} à partir d'un fichier \textsf{csv}, externe au fichier \textsf{tex} ou déclaré en interne grâce à l'environnement \ctex{filecontents}.
+%\end{codeidee}
+%
+%\begin{codeinfo}
+%Avant toute chose, quelques petites infos sur les données au format \textsf{csv}, surtout dans l'optique de sa lecture et de son traitement par \ctex{ProfLycee} :
+%
+%\begin{itemize}
+% \item le fichier de données \textsf{csv} doit être formaté avec le séparateur décimal \og , \fg ;
+% \item des cases vides seront codées par \og \texttt{-} \fg.
+%\end{itemize}
+%
+%Le fichier \textsf{csv} peut être déclaré directement dans le fichier \textsf{tex}, grâce à l'environnement \ctex{filecontents} (intégré en natif sur les dernières versions de \LaTeX) :
+%
+%\begin{Verbatim}[tabsize=2,fontsize=\scriptsize]
+%\begin{filecontents*}{<nomfichier>.csv}
+%A,B,C,D
+%A,B,D,C
+%B,A,C,D
+%B,A,D,C
+%\end{filecontents*}
+%\end{Verbatim}
+%
+%À la compilation, le fichier \textsf{<nomfichier>.csv} sera créé automatiquement, et l'option \Cle{[overwrite]} permet (logiquement) de propager les modifications au fichier \textsf{csv}.
+%\end{codeinfo}
+%
+%\subsection{Package csvsimple et option}
+%
+%\begin{codeinfo}
+%Le package \textit{central} est ici \ctex{csvsimple}, qui permet de lire et traiter le fichier \textsf{csv}.
+%
+%Il est \og disponible \fg{} en version \LaTeXe{} ou en version \LaTeXIII. Par défaut, \ctex{ProfLycee} le charge en version \LaTeXIII{}, mais une \Cle{option} est disponible pour une \textit{rétro-compatibilité} avec la version \LaTeXe.
+%
+%\smallskip
+%
+%L'option \Cle{csvii} permet de passer l'appel au package en version \LaTeXe.
+%\end{codeinfo}
+%
+%\begin{codetex}[listing only]
+%\usepackage{ProfLycee} %chargement du package version 3
+%%qui charge :
+%%\RequirePackage{expl3}
+%%\RequirePackage[l3]{csvsimple}
+%
+%\usepackage[csvii]{ProfLycee} %chargement du package version 2
+%%qui charge :
+%%\RequirePackage[legacy]{csvsimple}
+%\end{codetex}
+%
+%\subsection{Exemple simple, clés et options}
+%
+%\begin{codetex}[listing only]
+%%déclaration du fichier csv
+%\begin{filecontents*}[overwrite]{basique.csv}
+%A,B,C,D
+%A,B,D,C
+%B,A,D,C
+%C,A,B,D
+%\end{filecontents*}
+%
+%\begin{tikzpicture}%avec lettres
+% \PixelArtTikz[Codes=ABCD,Style=\large\sffamily]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}%avec chiffres
+% \PixelArtTikz[Codes=ABCD,Symboles={45,22,1,7},Symb,Style=\large\sffamily]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}%avec correction
+% \PixelArtTikz[codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}%avec correction sans bordure
+% \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction,BordCases=false]{basique.csv}
+%\end{tikzpicture}
+%\end{codetex}
+%
+%\begin{codesortie}
+%\begin{filecontents*}[overwrite]{basique.csv}
+%A,B,C,D
+%A,B,D,C
+%B,A,D,C
+%C,A,B,D
+%\end{filecontents*}
+%
+%\begin{center}
+% \begin{tblr}{colspec={*{4}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}}
+% \SetCell[c=4]{c} Notice & & & \\
+% A & B & C & D \\
+% 45 & 22 & 1 & 7 \\
+% Noir & Vert & Jaune & Rouge \\
+% \end{tblr}
+%\end{center}
+%
+%\hfill\begin{tikzpicture}[scale=0.9]
+% %avec lettres
+% \PixelArtTikz[Codes=ABCD,Style=\large\sffamily]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}[scale=0.9]
+% %avec chiffres
+% \PixelArtTikz[Codes=ABCD,Symboles={45,22,1,7},Symb,Style=\large\sffamily]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}[scale=0.9]
+% %avec correction
+% \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}[scale=0.9]
+% %avec correction
+% \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction,BordCases=false]{basique.csv}
+%\end{tikzpicture}
+%\hfill~
+%\end{codesortie}
+%
+%\begin{codeinfo}
+%La commande \ctex{PixelArtTikz} nécessite de connaître :
+%
+%\begin{itemize}
+% \item le fichier \textsf{csv} à traiter ;
+% \item la liste (en fait sous forme de chaîne) des codes utilisés dans le fichier \textsf{csv} (comme \ctex{234679} ou \ctex{ABCDJK}\ldots);
+% \item la liste des symboles (éventuellement !) à afficher dans les cases s'il y a ambiguïté, comme \ctex{25,44,12} ou \ctex{AA,AB,AC};
+% \item la liste des couleurs (si la correction est demandée), dans le même ordre que la liste des caractères.
+%\end{itemize}
+%\end{codeinfo}
+%
+%\begin{codetex}[listing only]
+%%environnement tikz
+%\PixelArtTikz[clés]{<fichier>.csv}
+%\end{codetex}
+%
+%\begin{codecles}
+%Quelques \Cle{Clés} sont nécessaires au bon fonctionnement de la commande :
+%
+%\begin{itemize}
+% \item la clé \Cle{Codes} contient la \textsf{chaîne} des codes \textit{simples} du fichier \textsf{csv} ;
+% \item la clé \Cle{Couleurs} qui contient la \textsf{liste} des couleurs associées ;
+% \item la clé \Cle{Symboles} qui contient la \textsf{liste éventuelles} des caractères alternatifs à afficher dans les cases ;
+% \item la clé booléenne \Cle{Correction} qui permet de colorier le PixelART ;\hfill{}défaut \Cle{false}
+% \item la clé booléenne \Cle{Symb} qui permet d'afficher les caractères \textit{alternatifs} ;\hfill{}défaut \Cle{false}
+% \item la clé booléenne \Cle{BordCases} qui permet d'afficher les bords des cases de la correction ;\hfill{}défaut \Cle{true}
+% \item la clé \Cle{Style} qui permet de spécifier le style des caractères. \hfill{}défaut \Cle{scriptsize}
+%\end{itemize}
+%\end{codecles}
+%
+%\begin{codetex}[listing only]
+%%codes simples et sans ambiguïté
+%%une case vide sera codée par -
+%
+%\begin{filecontents*}[overwrite]{perroquet.csv}
+%-,-,-,-,-,-,4,4,4,4,-,-,-,-,-,-
+%-,-,-,-,4,4,1,1,1,1,4,4,-,-,-,-
+%-,-,-,4,1,1,1,1,1,1,1,1,4,-,-,-
+%-,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
+%-,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
+%-,4,1,9,9,1,1,1,1,1,1,9,9,1,4,-
+%-,4,9,9,9,9,4,4,4,4,9,9,9,9,4,-
+%-,4,9,4,9,9,4,4,4,4,9,4,9,9,4,-
+%-,4,1,9,9,9,4,4,4,4,9,9,9,1,4,-
+%-,-,4,1,1,9,4,4,4,4,9,1,1,4,-,-
+%-,-,4,1,1,1,4,4,4,4,1,1,1,4,-,-
+%-,-,-,4,1,1,1,4,4,1,1,1,4,-,-,-
+%-,-,4,3,1,1,1,1,1,1,1,1,3,4,-,-
+%-,4,6,3,1,1,1,1,1,1,1,1,3,6,4,-
+%-,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
+%-,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
+%-,4,6,4,1,1,1,4,4,1,1,1,4,6,4,-
+%2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2
+%2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+%2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+%-,-,-,-,-,4,1,1,1,1,4,-,-,-,-,-
+%-,-,-,-,-,-,4,1,1,4,-,-,-,-,-,-
+%-,-,-,-,-,-,-,4,4,-,-,-,-,-,-,-
+%\end{filecontents*}
+%
+%\begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=123469,Style=\ttfamily]{perroquet.csv}
+%\end{tikzpicture}
+%
+%\begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
+%\end{tikzpicture}
+%\end{codetex}
+%
+%\subsection{Exemples complémentaires}
+%
+%\begin{codeinfo}
+%Les symboles affichés dans les cases sont situés aux nœuds de coordonnées $(c\,;\,-l)$ où $l$ et $c$ sont les numéros de ligne et de colonne correspondants à la position de la donnée dans le fichier \textsf{csv}.
+%\end{codeinfo}
+%
+%\begin{codesortie}
+%\begin{filecontents*}[overwrite]{perroquet.csv}
+%-,-,-,-,-,-,4,4,4,4,-,-,-,-,-,-
+%-,-,-,-,4,4,1,1,1,1,4,4,-,-,-,-
+%-,-,-,4,1,1,1,1,1,1,1,1,4,-,-,-
+%-,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
+%-,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
+%-,4,1,9,9,1,1,1,1,1,1,9,9,1,4,-
+%-,4,9,9,9,9,4,4,4,4,9,9,9,9,4,-
+%-,4,9,4,9,9,4,4,4,4,9,4,9,9,4,-
+%-,4,1,9,9,9,4,4,4,4,9,9,9,1,4,-
+%-,-,4,1,1,9,4,4,4,4,9,1,1,4,-,-
+%-,-,4,1,1,1,4,4,4,4,1,1,1,4,-,-
+%-,-,-,4,1,1,1,4,4,1,1,1,4,-,-,-
+%-,-,4,3,1,1,1,1,1,1,1,1,3,4,-,-
+%-,4,6,3,1,1,1,1,1,1,1,1,3,6,4,-
+%-,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
+%-,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
+%-,4,6,4,1,1,1,4,4,1,1,1,4,6,4,-
+%2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2
+%2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+%2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+%-,-,-,-,-,4,1,1,1,1,4,-,-,-,-,-
+%-,-,-,-,-,-,4,1,1,4,-,-,-,-,-,-
+%-,-,-,-,-,-,-,4,4,-,-,-,-,-,-,-
+%\end{filecontents*}
+%
+%\begin{center}
+% \begin{tblr}{colspec={*{6}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}}
+% \SetCell[c=6]{c} Notice & & & & & \\
+% 1 & 2 & 3 & 5 & 6 & 9 \\
+% Rouge & Marron & Jaune & Noir & Bleu & Blanc \\
+% \end{tblr}
+%% \renewcommand\arraystretch{1.25}
+%% \begin{tabular}{|c|c|c|c|c|c|}
+%% \hline
+%% \multicolumn{6}{|c|}{Notice} \\ \hline
+%% 1 & 2 & 3 & 5 & 6 & 9 \\ \hline
+%% Rouge & Marron & Jaune & Noir & Bleu & Blanc \\ \hline
+%% \end{tabular}
+%\end{center}
+%
+%\begin{center}
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=123469,Style=\ttfamily]{perroquet.csv}
+% \end{tikzpicture}
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
+% \end{tikzpicture}
+%\end{center}
+%
+%\begin{center}
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \draw[very thin,gray,xstep=1,ystep=1] (0,0) grid (17,-24) ;
+% \foreach \x in {0,1,...,17} \draw[very thin,gray] (\x,-3pt)--(\x,3pt) node[above,font=\scriptsize\sffamily] {\x} ;
+% \foreach \y in {0,-1,...,-24} \draw[very thin,gray] (3pt,\y)--(-3pt,\y) node[left,font=\scriptsize\sffamily] {\y} ;
+% \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
+% \filldraw[Blue] (14,-1) circle[radius=1] ;
+% \filldraw[Yellow] (14,-1) circle[radius=0.8] ;
+% \draw[ForestGreen,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2) node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ;
+% \end{tikzpicture}
+%\end{center}
+%\end{codesortie}
+%
+%\begin{codetex}[listing only]
+%%code tikz et pixelart
+%\filldraw[Blue] (14,-1) circle[radius=1] ;
+%\filldraw[Yellow] (14,-1) circle[radius=0.8] ;
+%\draw[ForestGreen,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2)
+% node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ;
+%\end{codetex}
+%
+%\pagebreak
+%
+%\begin{codetex}[listing only]
+%%codes avec ambiguïté
+%
+%\begin{filecontents*}[overwrite]{cap.csv}
+%-,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,-
+%-,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,-
+%D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,-
+%-,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,-
+%-,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,-
+%-,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,-
+%-,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,-
+%-,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,-
+%-,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,-
+%-,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,-
+%-,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,-
+%-,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,-
+%-,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,-
+%-,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,-
+%-,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,-
+%-,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D
+%-,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D
+%-,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D
+%-,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,-
+%-,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,-
+%-,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,-
+%-,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,-
+%\end{filecontents*}
+%
+%\begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv}
+%\end{tikzpicture}
+%
+%\begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv}
+%\end{tikzpicture}
+%\end{codetex}
+%
+%\begin{codesortie}
+%\begin{filecontents*}[overwrite]{cap.csv}
+%-,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,-
+%-,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,-
+%D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,-
+%-,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,-
+%-,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,-
+%-,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,-
+%-,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,-
+%-,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,-
+%-,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,-
+%-,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,-
+%-,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,-
+%-,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,-
+%-,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,-
+%-,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,-
+%-,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,-
+%-,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D
+%-,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D
+%-,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D
+%-,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,-
+%-,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,-
+%-,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,-
+%-,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,-
+%\end{filecontents*}
+%
+%\begin{center}
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv}
+% \end{tikzpicture}
+% ~~
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv}
+% \end{tikzpicture}
+%\end{center}
+%\end{codesortie}
+%
+%\newpage
\section{SudoMaths, en \TikZ}\label{sudomaths}
@@ -6094,8 +6091,7 @@ L'environnement créé, lié à \TikZ, trace la grille de SudoMaths (avec les bl
\end{codeidee}
\begin{codetex}[listing only]
-%grille classique non remplie, avec légendes H et V
-%les {} non nécessaires pour préciser que les cases seront "vides"
+%grille classique non remplie, avec légendes H/V, {} nécessaires pour préciser que les cases seront "vides"
\SudoMaths{}
\end{codetex}
@@ -6108,16 +6104,16 @@ La commande \ctex{SudoMaths} crée donc la grille (remplie ou non), dans un envi
\smallskip
-Si on veut exploiter le tracé de la grille, on peut utiliser l'\textit{environnement} \ctex{EnvSudoMaths} dans lequel on peut rajouter toute commande en \TikZ{} !
+On peut également utiliser l'\textit{environnement} \ctex{EnvSudoMaths} dans lequel on peut rajouter du code \TikZ{} !
\end{codeinfo}
\begin{codetex}[listing only]
%grille "toute seule"
-\SudoMaths[options]{liste}
+\SudoMaths[clés]{liste}
%grille avec ajout de code
-\begin{EnvSudoMaths}[options]{grille}
- commandes tikz
+\begin{EnvSudoMaths}[clés]{grille}
+ %commandes tikz
\end{EnvSudoMaths}
\end{codetex}
@@ -6170,8 +6166,8 @@ La \Cle{CouleurCase} est gérée -- en interne -- par le caractère \ctex{*} qui
/ / / (q)* / / §%
}
-\PLsudomaths[unite=0.75cm,nbcol=6,nbsubcol=2,nblig=6,nbsublig=3,police=\small\bfseries\ttfamily,%
- couleurtexte=red,couleurcase=yellow!50,legendes=false]{\grilleSuMa}
+\SudoMaths[Unite=0.75cm,NbCol=6,NbSubCol=2,NbLig=6,NbSubLig=3,%
+ Police=\small\bfseries\ttfamily,CouleurTexte=red,CouleurCase=yellow!50,Legendes=false]{\grilleSuMa}
\end{codetex}
\begin{codesortie}
@@ -6242,6 +6238,8 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
\part{Historique}
+{\small \bverb|v 2.1.8|~:~~~~Suppression des commandes de PixelArt, désormais dans le package \textsf{PixelArtTikz}
+
{\small \bverb|v 2.1.7|~:~~~~Ajout d'une clé \textsf{Math} pour les sommets des figures de l'espace (pages \pageref{pave} et \pageref{tetra})
{\small \bverb|v 2.1.6|~:~~~~Correction d'un bug lié au chargement de \textsf{hvlogos}, remplacé par \textsf{hologo}
@@ -6302,7 +6300,7 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
{\small \bverb|v 1.3.2|~:~~~~Correction d'un bug sur les conversions bintohex avec lualatex (page \pageref{conversions})
-{\small \bverb|v 1.3.1|~:~~~~Ajout d'une option pour ne pas afficher les bordures des corrections de pixelart (page \pageref{pixelart})
+{\small \bverb|v 1.3.1|~:~~~~Ajout d'une option pour ne pas afficher les bordures des corrections de pixelart
{\small \bverb|v 1.3.0|~:~~~~Commande pour présenter une conversion depuis la base 10 (page \pageref{convrestes})
@@ -6322,7 +6320,7 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
{\small \bverb|v 1.2.1|~:~~~~Amélioration de la gestion du csv pour Pixelart
-{\small \bverb|v 1.1.9|~:~~~~Pixelart en \TikZ{} (page \pageref{pixelart})
+{\small \bverb|v 1.1.9|~:~~~~Pixelart en \TikZ{}
{\small \bverb|v 1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ (page \pageref{mainlevee})
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index ba4d2535df..676f054d70 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2023/01/23 2.1.7 Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2023/01/25 2.1.8 Aide pour l'utilisation de LaTeX en lycee]
+% 2.1.8 Suppression des pixelarts, désormais dans le package "PixelArtTikz" !
% 2.1.7 Option booléenne Math pour les figures pave/tetraèdre
% 2.1.6 Chargement de hologo à la place de hvlogos (bug potentiel avec \bm)
% 2.1.5 Ajout de commandes pour calculer arrangements et combinaisons
@@ -68,8 +69,8 @@
\DeclareOption{build}{\@buildtrue}
\newif\if@pythontex \@pythontexfalse
\DeclareOption{pythontex}{\@pythontextrue}
-\newif\if@csvii \@csviifalse
-\DeclareOption{csvii}{\@csviitrue}
+%\newif\if@csvii \@csviifalse
+%\DeclareOption{csvii}{\@csviitrue}
\DeclareOption*{}
\ProcessOptions\relax
@@ -103,12 +104,12 @@
group-minimum-digits=4%
}%
\RequirePackage{fontawesome5}
-\if@csvii
- \RequirePackage[legacy]{csvsimple}
-\else
- \RequirePackage{expl3}
- \RequirePackage[l3]{csvsimple}
-\fi
+%\if@csvii
+% \RequirePackage[legacy]{csvsimple}
+%\else
+% \RequirePackage{expl3}
+% \RequirePackage[l3]{csvsimple}
+%\fi
%librairies tikz
\usetikzlibrary{calc}
\usetikzlibrary{decorations}
@@ -1711,79 +1712,79 @@
mainlevee/.default={5mm et 0.6pt}
}
-%==============PixelArt TikZ=========== OK !!
-\defKV[pixelarttkz]{%
- Codes=\def\PATlettres{#1},%
- Couleurs=\def\PATcouleurs{#1},%
- Symboles=\def\PATchiffres{#1},%
- Style=\def\PATtaille{#1}
-}
-
-\setKVdefault[pixelarttkz]{%
- Style=\scriptsize,%
- Correction=false,%
- Symb=false,%
- BordCases=true
-}
-
-\newcommand\PixelArtTikz[2][]{%
- \useKVdefault[pixelarttkz]
- \setKV[pixelarttkz]{#1}
- %affichage du corrigé
- \ifboolKV[pixelarttkz]{Correction}
- {%
- \csvloop{file=#2,no head,command={%
- \foreach \l [count=\n] in \csvline {%
- \StrDel{\l}{ }[\l]
- \setsepchar{,}
- \readlist*\LCPA\PATcouleurs
- \StrPosition{\PATlettres}{\l}[\pixcnt]%
- \xintifboolexpr{\pixcnt>0}%
- {%
- \itemtomacro\LCPA[\pixcnt]\pixcol%
- \ifboolKV[pixelarttkz]{BordCases}%
- {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
- {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
- %
- }%
- {}
- }
- }
- }
- }
- {%
- \ifboolKV[pixelarttkz]{Symb}
- {%affichage du pixelart versions chiffres si besoin
- \csvloop{file=#2,no head,command={%
- \foreach \l [count=\n] in \csvline {%
- \StrDel{\l}{ }[\l]
- \setsepchar{,}
- \readlist*\LCNA\PATchiffres
- \StrPosition{\PATlettres}{\l}[\pixpos]%
- \xintifboolexpr{\pixpos>0}%
- {%
- \itemtomacro\LCNA[\pixpos]\pixchf%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
- }
- {}%
- }
- }
- }
- }
- {%affichage du pixelart versions lettres ou chiffres simples (<=9)
- \csvloop{file=#2,no head,command={%
- \foreach \l [count=\n] in \csvline {%
- \StrDel{\l}{ }[\l]
- \IfSubStr{\PATlettres}{\l}%
- {%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\l};}
- {}
- }
- }
- }
- }
- }
-}
+%%==============PixelArt TikZ=========== OK !! :=> vers le package PixelArtTikz !!
+%\defKV[pixelarttkz]{%
+% Codes=\def\PATlettres{#1},%
+% Couleurs=\def\PATcouleurs{#1},%
+% Symboles=\def\PATchiffres{#1},%
+% Style=\def\PATtaille{#1}
+%}
+%
+%\setKVdefault[pixelarttkz]{%
+% Style=\scriptsize,%
+% Correction=false,%
+% Symb=false,%
+% BordCases=true
+%}
+%
+%\newcommand\PixelArtTikz[2][]{%
+% \useKVdefault[pixelarttkz]
+% \setKV[pixelarttkz]{#1}
+% %affichage du corrigé
+% \ifboolKV[pixelarttkz]{Correction}
+% {%
+% \csvloop{file=#2,no head,command={%
+% \foreach \l [count=\n] in \csvline {%
+% \StrDel{\l}{ }[\l]
+% \setsepchar{,}
+% \readlist*\LCPA\PATcouleurs
+% \StrPosition{\PATlettres}{\l}[\pixcnt]%
+% \xintifboolexpr{\pixcnt>0}%
+% {%
+% \itemtomacro\LCPA[\pixcnt]\pixcol%
+% \ifboolKV[pixelarttkz]{BordCases}%
+% {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+% {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+% %
+% }%
+% {}
+% }
+% }
+% }
+% }
+% {%
+% \ifboolKV[pixelarttkz]{Symb}
+% {%affichage du pixelart versions chiffres si besoin
+% \csvloop{file=#2,no head,command={%
+% \foreach \l [count=\n] in \csvline {%
+% \StrDel{\l}{ }[\l]
+% \setsepchar{,}
+% \readlist*\LCNA\PATchiffres
+% \StrPosition{\PATlettres}{\l}[\pixpos]%
+% \xintifboolexpr{\pixpos>0}%
+% {%
+% \itemtomacro\LCNA[\pixpos]\pixchf%
+% \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+% }
+% {}%
+% }
+% }
+% }
+% }
+% {%affichage du pixelart versions lettres ou chiffres simples (<=9)
+% \csvloop{file=#2,no head,command={%
+% \foreach \l [count=\n] in \csvline {%
+% \StrDel{\l}{ }[\l]
+% \IfSubStr{\PATlettres}{\l}%
+% {%
+% \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\l};}
+% {}
+% }
+% }
+% }
+% }
+% }
+%}
%=========STATS2VAR=========
%variables directement dans tikzpicture
diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md
index 8f562a8716..654c5ec695 100644
--- a/macros/latex/contrib/tagpdf/README.md
+++ b/macros/latex/contrib/tagpdf/README.md
@@ -1,6 +1,6 @@
#tagpdf — A package to create tagged pdf
-Packageversion: 0.98a
-Packagedate: 2022/12/22
+Packageversion: 0.98b
+Packagedate: 2023/01/24
Author: Ulrike Fischer
## License
diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
index e8fac1f6ec..0028f72397 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*luatex>
-\ProvidesExplFile {tagpdf-luatex.def} {2022-12-22} {0.98a}
+\ProvidesExplFile {tagpdf-luatex.def} {2023-01-24} {0.98b}
{tagpdf~driver~for~luatex}
% \end{macrocode}
% \section{Loading the lua}
@@ -158,8 +158,8 @@
local ProvidesLuaModule = {
name = "tagpdf",
- version = "0.98a", --TAGVERSION
- date = "2022-12-22", --TAGDATE
+ version = "0.98b", --TAGVERSION
+ date = "2023-01-24", --TAGDATE
description = "tagpdf lua code",
license = "The LATEX Project Public License 1.3c"
}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
index 6ec0e6aadc..fae3e853d3 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \section{Commands}
@@ -63,7 +63,7 @@
% This is a generic command to retrieve data for the current structure or
% mc-chunk. Currently
% the only sensible values for the argument \meta{keyword}
-% are |mc_tag| and |struct_tag| and |struct_num|.
+% are |mc_tag|, |struct_tag|, |struct_id| and |struct_num|.
% \end{function}
%
% \section{Description of log messages}
@@ -295,7 +295,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-checks-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-checks-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to checks, conditionals, debugging and messages}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
index b0bb3a8290..5b954258dd 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-code.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf-data.dtx b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
index 379c2114d7..93bf80667b 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-data.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% This files contains a various data files which are read in
@@ -60,7 +60,7 @@
% It lists the new tag, the rolemap and the namespace of the rolemap.
% \begin{macrocode}
%<*ns-latex>
-%% \ProvidesExplFile {tagpdf-ns-latex.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-latex.def} {2023-01-24} {0.98b}
%% {latex} {https://www.latex-project.org/ns/dflt/2022}{}
title, Title, pdf2,
part, Title, pdf2,
@@ -86,7 +86,7 @@ footnotelabel,Lbl, pdf2,
% It is bound to change
% \begin{macrocode}
%<*ns-latex-book>
-%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2023-01-24} {0.98b}
%% {latex-book} {https://www.latex-project.org/ns/book/2022}{}
chapter, H1,pdf2,
section, H2,pdf2,
@@ -102,7 +102,7 @@ subparagraph, H6,pdf2,
% It is bound to change a lot!
% \begin{macrocode}
%<*ns-latex-inline>
-%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2023-01-24} {0.98b}
%% {latex-inline} {https://www.latex-project.org/ns/inline/2022}{}
chapter, Span, pdf2,
section, Span, pdf2,
@@ -116,7 +116,7 @@ P, Span, pdf2,
% \section{The pdf namespace data}
% \begin{macrocode}
%<*ns-pdf>
-%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2023-01-24} {0.98b}
%% {pdf} {http://iso.org/pdf/ssn}{}
StructTreeRoot,StructTreeRoot,pdf,D,
Document,Document,pdf,D,
@@ -184,7 +184,7 @@ Strong,Span,pdf,I,
% \section{The pdf 2.0 namespace data}
% \begin{macrocode}
%<*ns-pdf2>
-%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2023-01-24} {0.98b}
%% {pdf2} {http://iso.org/pdf2/ssn}{}
Document,Document,pdf2,D,
Part,Part,pdf2,G,
@@ -240,7 +240,7 @@ Strong,Strong,pdf2,I,
% \section{The mathml namespace data}
% \begin{macrocode}
%<*ns-mathml>
-%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2023-01-24} {0.98b}
% {mathml}{http://www.w3.org/1998/Math/MathML}{}
abs,,,
and,,,
@@ -475,7 +475,7 @@ xor,,,
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child>
-%% \ProvidesExplFile {tagpdf-parent-child.csv} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-parent-child.csv} {2023-01-24} {0.98b}
,,,StructTreeRoot,Document,Art,Part,Div,Sect,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,MC
Document,both,document level,1,0..n,∅,‡,‡,∅,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅
Art,1.7,grouping,∅,0..n,∅,‡,‡,0..n,0..n,‡,∅,∅,∅,0..n,∅,0..n,∅,∅,∅,0..1,0..1,∅,∅,∅,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,∅,∅
@@ -530,7 +530,7 @@ MC,both,---,∅,∅,∅,∅,∅,∅,0..n,‡,∅,∅,∅,0..n,0..n,0..n,0..n,0..
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child-2>
-%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2023-01-24} {0.98b}
,,,StructTreeRoot,Document,DocumentFragment,Art,Part,Div,Sect,Aside,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Title,Sub,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Em,Strong,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,FENote,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,math,mathml,Artifact,MC
Document,both,document level,1,0..n,0..n,∅,‡,‡,∅,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅
DocumentFragment,2.0,document level,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,0..n,∅
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
index 573604fa87..fd3409c73b 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \end{documentation}
@@ -55,11 +55,11 @@
% \begin{macrocode}
%<@@=tag>
%<*generic>
-\ProvidesExplPackage {tagpdf-mc-code-generic} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2023-01-24} {0.98b}
{part of tagpdf - code related to marking chunks - generic mode}
%</generic>
%<*debug>
-\ProvidesExplPackage {tagpdf-debug-generic} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-debug-generic} {2023-01-24} {0.98b}
{part of tagpdf - debugging code related to marking chunks - generic mode}
%</debug>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
index 6195218abf..de5fe42739 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{implementation}
% The code is splitted into three parts: code shared by all engines,
@@ -86,7 +86,7 @@
% \begin{macrocode}
%<@@=tag>
%<*luamode>
-\ProvidesExplPackage {tagpdf-mc-code-lua} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2023-01-24} {0.98b}
{tagpdf - mc code only for the luamode }
%</luamode>
% \end{macrocode}
@@ -165,7 +165,7 @@
=
{\lua_now:e
{
- tex.print(tex.getattribute(luatexbase.attributes.g__tag_mc_type_attr))
+ tex.print(\int_use:N \c_document_cctab,tex.getattribute(luatexbase.attributes.g__tag_mc_type_attr))
}
}
{ \prg_return_false: }
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
index 66ad8a922c..e693242d1b 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -174,7 +174,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-mc-code-shared} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-mc-code-shared} {2023-01-24} {0.98b}
{part of tagpdf - code related to marking chunks -
code shared by generic and luamode }
%</header>
diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
index d24fae960e..60ba857294 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \begin{function}
@@ -90,7 +90,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-roles-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-roles-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to roles and structure names}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
index 26602a96b0..f450520a48 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \begin{function}{interwordspace (setup-key)}
@@ -64,7 +64,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-space-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-space-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to real space chars}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
index 1299cc10e9..2e83d51280 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -242,7 +242,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-struct-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-struct-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to storing structure}
%</header>
% \end{macrocode}
@@ -507,6 +507,24 @@
% \end{macrocode}
% \end{variable}
%
+% \subsection{Adding the /ID key}
+% Every structure gets automatically an ID which is currently
+% simply calculated from the structure number.
+% \begin{macro}{\@@_struct_get_id:n}
+% \begin{macrocode}
+\cs_new:Npn \@@_struct_get_id:n #1 %#1=struct num
+ {
+ (
+ ID.
+ \prg_replicate:nn
+ { \int_abs:n{\g_@@_tree_id_pad_int - \tl_count:e { \int_to_arabic:n { #1 } }} }
+ { 0 }
+ \int_to_arabic:n { #1 }
+ )
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Filling in the tag info}
% \begin{macro}{\@@_struct_set_tag_info:nnn }
@@ -808,7 +826,8 @@
{ @@/struct/#1 }
{dict}
{
- \l_@@_tmpa_tl
+ \l_@@_tmpa_tl\c_space_tl
+ /ID~\@@_struct_get_id:n{#1}
}
}
{
@@ -884,7 +903,7 @@
%
% \begin{macro}{\@@_get_data_struct_tag:}
% this command allows \cs{tag_get:n} to get the current
-% structure tag with the keyword |struct_tag|. We will need to handle nesting
+% structure tag with the keyword |struct_tag|.
% \begin{macrocode}
\cs_new:Npn \@@_get_data_struct_tag:
{
@@ -894,6 +913,17 @@
\prop_item:cn {g_@@_struct_\g_@@_struct_stack_current_tl _prop}{S}
}
}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_get_data_struct_id:}
+% this command allows \cs{tag_get:n} to get the current
+% structure id with the keyword |struct_id|.
+% \begin{macrocode}
+\cs_new:Npn \@@_get_data_struct_id:
+ {
+ \@@_struct_get_id:n {\g_@@_struct_stack_current_tl}
+ }
%</package>
% \end{macrocode}
% \end{macro}
@@ -1480,7 +1510,7 @@
% \section{Attributes and attribute classes}
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage {tagpdf-attr-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-attr-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to attributes and attribute classes}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
index f8c7aa27d7..2a02a7c5df 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-tree-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-tree-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to writing trees and dictionaries to the pdf}
%</header>
% \end{macrocode}
@@ -119,6 +119,73 @@
}
% \end{macrocode}
%
+% \subsection{Writing the IDtree}
+%
+% The ID are currently quite simple: every structure has an ID build from
+% the prefix ID together with the structure number padded with enough zeros to
+% that we get directly an lexical order. We ship them out in bundles
+% At first a seq to hold the references for the kids
+% \begin{variable}{\g_@@_tree_id_pad_int}
+% \begin{macrocode}
+\int_new:N\g_@@_tree_id_pad_int
+% \end{macrocode}
+% \end{variable}
+% Now we get the needed padding
+% \begin{macrocode}
+\cs_generate_variant:Nn \tl_count:n {e}
+\hook_gput_code:nnn{begindocument}{tagpdf}
+ {
+ \int_gset:Nn\g_@@_tree_id_pad_int
+ {\tl_count:e { \@@_ref_value_lastpage:nn{tagstruct}{1000}}+1}
+ }
+
+% \end{macrocode}
+% This is the main code to write the tree it basically splits the
+% existing structure numbers in chunks of length 50
+% TODO consider is 50 is a good length.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_tree_write_idtree:
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ \tl_clear:N \l_@@_tmpb_tl
+ \int_zero:N \l_@@_tmpa_int
+ \int_step_inline:nn {\c@g_@@_struct_abs_int}
+ {
+ \int_incr:N\l_@@_tmpa_int
+ \tl_put_right:Nx \l_@@_tmpa_tl
+ {
+ \@@_struct_get_id:n{##1}~\pdf_object_ref:n{@@/struct/##1}~
+ }
+ \int_compare:nNnF {\l_@@_tmpa_int}<{50} %
+ {
+ \pdf_object_unnamed_write:nx {dict}
+ { /Limits~[\@@_struct_get_id:n{##1-\l_@@_tmpa_int+1}~\@@_struct_get_id:n{##1}]
+ /Names~[\l_@@_tmpa_tl]
+ }
+ \tl_put_right:Nx\l_@@_tmpb_tl {\pdf_object_ref_last:\c_space_tl}
+ \int_zero:N \l_@@_tmpa_int
+ \tl_clear:N \l_@@_tmpa_tl
+ }
+ }
+ \tl_if_empty:NF \l_@@_tmpa_tl
+ {
+ \pdf_object_unnamed_write:nx {dict}
+ {
+ /Limits~
+ [\@@_struct_get_id:n{\c@g_@@_struct_abs_int-\l_@@_tmpa_int+1}~
+ \@@_struct_get_id:n{\c@g_@@_struct_abs_int}]
+ /Names~[\l_@@_tmpa_tl]
+ }
+ \tl_put_right:Nx\l_@@_tmpb_tl {\pdf_object_ref_last:}
+ }
+ \pdf_object_unnamed_write:nx {dict}{/Kids~[\l_@@_tmpb_tl]}
+ \@@_prop_gput:cnx
+ { g_@@_struct_0_prop }
+ { IDTree }
+ { \pdf_object_ref_last: }
+ }
+% \end{macrocode}
+%
% \subsection{Writing structure elements}
% The following commands are needed to write out the structure.
% \begin{macro}{\@@_tree_write_structtreeroot:}
@@ -135,8 +202,15 @@
\@@_prop_gput:cnx
{ g_@@_struct_0_prop }
{ RoleMap }
- { \pdf_object_ref:n { @@/tree/rolemap } }
- \@@_struct_write_obj:n { 0 }
+ { \pdf_object_ref:n { @@/tree/rolemap } }
+ \@@_struct_fill_kid_key:n { 0 }
+ \@@_struct_get_dict_content:nN { 0 } \l_@@_tmpa_tl
+ \pdf_object_write:nnx
+ { @@/struct/0 }
+ {dict}
+ {
+ \l_@@_tmpa_tl
+ }
}
}
% \end{macrocode}
@@ -149,7 +223,14 @@
{ g_@@_struct_0_prop }
{ ParentTree }
{ \pdf_object_ref:n { @@/tree/parenttree } }
- \@@_struct_write_obj:n { 0 }
+ \@@_struct_fill_kid_key:n { 0 }
+ \@@_struct_get_dict_content:nN { 0 } \l_@@_tmpa_tl
+ \pdf_object_write:nnx
+ { @@/struct/0 }
+ {dict}
+ {
+ \l_@@_tmpa_tl
+ }
}
}
% \end{macrocode}
@@ -459,6 +540,7 @@
\hook_use:n {tagpdf/finish/before}
\@@_tree_final_checks:
\@@_tree_write_parenttree:
+ \@@_tree_write_idtree:
\@@_tree_write_rolemap:
\@@_tree_write_classmap:
\@@_tree_write_namespaces:
diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
index a2a0475ccf..309b62a6c1 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-user.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \section{Setup commands}
@@ -246,7 +246,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-user} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-user} {2023-01-24} {0.98b}
{tagpdf - user commands}
%</header>
% \end{macrocode}
@@ -639,6 +639,7 @@
% \begin{macrocode}
\AddToHook{begindocument/before}
{
+ \@ifundefined{@mult@ptagging@hook}{\RequirePackage{output-patches-tmp-ltx}}{} %
\bool_if:NF \g_@@_mode_lua_bool
{
\cs_if_exist:NT \@kernel@before@footins
diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx
index 59795d78a3..c264123ebc 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf.dtx
@@ -34,7 +34,7 @@
% \end{function}
%
% \begin{function}{ \tag_stop_group_begin:, \tag_stop_group_end:,
-% \tag_stop:, \tag_start:, \tag_stop:n, \tag_start:n }
+% \tag_stop:, \tag_start: }
% We need commands to stop tagging in some places.
% There simply switches the two local booleans. The grouping commands
% can be used to group the effect.
@@ -92,7 +92,7 @@
% \begin{macrocode}
%<@@=tag>
%<*package>
-\ProvidesExplPackage {tagpdf} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf} {2023-01-24} {0.98b}
{ A package to experiment with pdf tagging }
\bool_if:nF
@@ -118,7 +118,7 @@
% \end{macrocode}
%<*debug>
% \begin{macrocode}
-\ProvidesExplPackage {tagpdf-debug} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-debug} {2023-01-24} {0.98b}
{ debug code for tagpdf }
\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput}
% \end{macrocode}
@@ -159,7 +159,7 @@
% \end{macrocode}
% \begin{macrocode}
%<*base>
-\ProvidesExplPackage {tagpdf-base} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-base} {2023-01-24} {0.98b}
{part of tagpdf - provide base, no-op versions of the user commands }
%</base>
% \end{macrocode}
@@ -197,6 +197,7 @@
{
{abspage} { \int_use:N \g_shipout_readonly_int}
{tagmcabs}{ \int_use:N \c@g_@@_MCID_abs_int }
+ {tagstruct}{\int_use:N \c@g_@@_struct_abs_int }
}
}
}
@@ -518,8 +519,8 @@
%<*base>
\cs_new_protected:Npn \tag_stop:{}
\cs_new_protected:Npn \tag_start:{}
-\cs_new_protected:Npn \tag_stop:n{}
-\cs_new_protected:Npn \tag_start:n{}
+\cs_new_protected:Npn \tag_stop:n #1 {}
+\cs_new_protected:Npn \tag_start:n #1 {}
%</base>
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf
index 08ec9e590c..a77e88d3c5 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf.tex b/macros/latex/contrib/tagpdf/tagpdf.tex
index fc096c338d..e36b3e9197 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.tex
+++ b/macros/latex/contrib/tagpdf/tagpdf.tex
@@ -1,11 +1,22 @@
% !Mode:: "TeX:DE:UTF-8:Main"
\PassOptionsToPackage{check-declarations,enable-debug}{expl3}
-%\RequirePackage{pdfmanagement-testphase}
-\DocumentMetadata{pdfversion=2.0,lang=en-UK,testphase=phase-II,testphase=toc-tagging,testphase=sec-tagging,pdfstandard=a-2b}
+
+% Note on the compilation of the documentation:
+% The documentation uses for the tagging sometimes code
+% that is under development and/or not public yet.
+% To compile an *untagged* documentation, comment the line with
+% the testphase keys in the following \DocumentMetadata command.
+
+\DocumentMetadata
+ {
+ % comment the following line to compile an untagged documentation:
+ testphase=phase-II,testphase=toc-tagging,testphase=sec-tagging,
+ pdfversion=2.0,lang=en-UK,pdfstandard=a-2b
+ }
\makeatletter
-\def\UlrikeFischer@package@version{0.98a}
-\def\UlrikeFischer@package@date{2022-12-22}
+\def\UlrikeFischer@package@version{0.98b}
+\def\UlrikeFischer@package@date{2023-01-24}
\makeatother
\documentclass[DIV=12,parskip=half-,bibliography=totoc,a4paper]{article}
@@ -48,6 +59,10 @@
escapechar=*,
commentstyle=\color{green!50!black}\bfseries}
+% this allow to get real spaces in the code parts.
+% This should perhaps be combined in a new listings key
+\lstset{showspaces}
+\makeatletter \def\lst@visiblespace{\lst@ttfamily{\char32}{\char32}}\makeatother
\tagpdfsetup{
@@ -56,8 +71,7 @@
%show-spaces
}
-\usepackage[pdfdisplaydoctitle=true,%hyperfootnotes=false,
- ]{hyperref}
+\usepackage[pdfdisplaydoctitle=true]{hyperref}
\hypersetup{
pdftitle={The tagpdf package, v\csname UlrikeFischer@package@version\endcsname},
@@ -65,6 +79,8 @@
colorlinks}
\tcbuselibrary{documentation}
+%less space between docCommand
+\tcbset{nosep/.style={doc raster command={raster after skip=-10pt}}}
\definecolor{Definition}{rgb}{0,0.2,0.6}
\newcommand\PrintKeyName[1]{\textsf{#1}}
\newcommand\pkg[1]{\texttt{#1}}
@@ -433,8 +449,8 @@ Small bug fixes.
\item a new option \texttt{paratag} allows to change the tag name used for the
automatically tagged paragraphs.
-\item the commands |\tag_start:|, |\tag_stop:n| and |\tag_start:n| allow
- to stop and start tagging for example in trial typesetting.
+\item the commands |\tag_start:|, |\tag_stop:|, |\tag_stop:n| and |\tag_start:n| allow
+ to stop and start tagging (for example in trial typesetting).
\item Small bug fixes.
\end{itemize}
@@ -461,6 +477,14 @@ can improve the html export.
\end{itemize}
+\subsection{Changes in version 0.98a}
+Small bug fixes in code and documentation.
+
+\subsection{Changes in version 0.98b}
+The main change is from now on every structure has an ID and an IDtree is
+added. The ID of a structure can be retrieved with |\tag_get:n|
+see~\ref{sec:retrieve}.
+
\subsection{Proof of concept: the tagging of the documentation itself}
@@ -975,7 +999,7 @@ executed on the same page as the begin command. So think carefully how to
place them. For strategies how to handle paragraphs that split over pages see
subsection~\ref{sec:splitpara}.
-\begin{docCommand}{tagmcbegin}{\marg{key-val-list}}\end{docCommand}
+\begin{docCommand}[nosep]{tagmcbegin}{\marg{key-val-list}}\end{docCommand}
\begin{docCommand}{tag_mc_begin:n}{\marg{key-val-list}}\end{docCommand}
@@ -1072,7 +1096,7 @@ The key-val list understands the following keys:
\end{description}
-\begin{docCommand}{tagmcend}{}\end{docCommand}
+\begin{docCommand}[nosep]{tagmcend}{}\end{docCommand}
\begin{docCommand}{tag_mc:end}{}\end{docCommand}
These commands insert the end code of the marked content. They don't end a
@@ -1102,7 +1126,7 @@ the command, as the effect of the begin command ends with a new
%\end{tcolorbox}
-\begin{docCommand}{tagmcuse}{}\end{docCommand}
+\begin{docCommand}[nosep]{tagmcuse}{}\end{docCommand}
\begin{docCommand}{tag_mc_use:n}{}\end{docCommand}
@@ -1111,7 +1135,7 @@ into the current structure. Be aware that a marked content can be used only
once -- the command will warn you if you try to use it a second time.
-\begin{docCommand}{tag_mc_end_push:}{}\end{docCommand}
+\begin{docCommand}[nosep]{tag_mc_end_push:}{}\end{docCommand}
\begin{docCommand}{tag_mc_begin_pop:n}{\marg{key-val-list}}\end{docCommand}
If there is an open mc chunk,
@@ -1123,7 +1147,7 @@ definitions so there is only an expl3 version. Perhaps other content of the mc-d
-\begin{docCommand}{tagmcifinTF}{\marg{true code}\marg{false code}}\end{docCommand}
+\begin{docCommand}[nosep]{tagmcifinTF}{\marg{true code}\marg{false code}}\end{docCommand}
\begin{docCommand}{tag_mc_if_in:TF}{\marg{true code}\marg{false code}}\end{docCommand}
@@ -1133,10 +1157,14 @@ In \emph{generic mode}, where marked content command shouldn't be nested, it wor
In \emph{lua mode} it tests if the mc-attribute is currently unset. You can't test the nesting level with it!
+\subsubsection{Retrieving data} \label{sec:retrieve}
+With more elaborate tagging the need arise to retrieve and store current data.
\begin{docCommand}{tag_get:n}{\marg{key word}}\end{docCommand}
-This command give back some variables. Currently the only working key words are \verb+mc_tag+, \verb+struct_tag+ and \verb+struct_num+. The last returns a number and works also if only \pkg{tagpdf-base} has been loaded, but then doesn't give the same output: if \pkg{tagpdf} is loaded and tagging is active, \verb+struct_num+ gives the number of currently
+This (expandable) command give back some variables. Currently the working key words are \verb+mc_tag+, \verb+struct_tag+,
+\verb+struct_id+ and \verb+struct_num+. The ID is a string and returned including parentheses.
+\verb+struct_num+ returns a number and works also if only \pkg{tagpdf-base} has been loaded, but then doesn't give the same output: if \pkg{tagpdf} is loaded and tagging is active, \verb+struct_num+ gives the number of currently
active structure, so it reverts to the parent number if a structure is closed. If only \pkg{tagpdf-base} is loaded
nesting of structure is not tracked and so the command gives back the number of the last structure that has been created.
@@ -1230,11 +1258,11 @@ the needed code.
\tagstructbegin{tag=Figure,alt={Illustration of link annotation structure},attribute=bbox}\tagmcbegin{tag=Figure}
\ExplSyntaxOn
-\tag_stop_group_begin:
+\tag_stop:
\ExplSyntaxOff
\input{link-figure-input}
\ExplSyntaxOn
-\tag_stop_group_end:
+\tag_start:
\ExplSyntaxOff
\tagmcend\tagstructend
@@ -1408,7 +1436,7 @@ rerun.
\subsubsection{Automatic tagging of paragraphs}\label{sec:paratagging}
-\begin{docCommand}{tagpdfparaOn}{}\end{docCommand}
+\begin{docCommand}[nosep]{tagpdfparaOn}{}\end{docCommand}
\begin{docCommand}{tagpdfparaOff}{}\end{docCommand}
Another feature that emerged from the \LaTeX{} tagged PDF project are hooks at the begin and end of paragraphs.
@@ -1491,7 +1519,7 @@ The flat version is more \LaTeX-like and it is rather straightforward to patch \
The following commands can be used to define the tree structure:
-\begin{docCommand}{tagstructbegin}{\marg{key-val-list}}\end{docCommand}
+\begin{docCommand}[nosep]{tagstructbegin}{\marg{key-val-list}}\end{docCommand}
\begin{docCommand}{tag_struct_begin:n}{\marg{key-val-list}}\end{docCommand}
These commands start a new structure. They don't start a group. They set all their values globally.
@@ -1629,12 +1657,12 @@ The key-val list understands the following keys:
This key sets the |/E| key, the expanded form of an abbreviation or an acronym (I couldn't think of a better name, so I sticked to E).
\end{description}
-\begin{docCommand}{tagstructend}{}\end{docCommand}
+\begin{docCommand}[nosep]{tagstructend}{}\end{docCommand}
\begin{docCommand}{tag_struct_end:}{}\end{docCommand}
These commands end a structure. They don't end a group and it doesn't matter if they are in another group as the starting commands.
-\begin{docCommand}{tagstructuse}{\marg{label}}\end{docCommand}
+\begin{docCommand}[nosep]{tagstructuse}{\marg{label}}\end{docCommand}
\begin{docCommand}{tag_struct_use:n}{\marg{label}}\end{docCommand}
@@ -1769,22 +1797,54 @@ The following shows the marking needed for a section, a sentence and a list with
\end{document}
\end{lstlisting}
+\subsection{Interrupting the tagging}
-\subsection{Lazy and automatic tagging}\label{sec:lazy}
+Experience showed that it must be possible to interrupt tagging in some places.
+For example various packages do trial typesetting to measure text and this shouldn't create
+structures. There are therefore a number of commands for various use cases\footnote{it is
+quite possible that some of the commands will disappear again if we realize that they are not fitting!}
-A number of features of \PDF{} readers need a fully tagged \PDF{}. As an example screen readers tend to ignore alternative text (see section~\ref{sec:alt}) if the \PDF{} is not fully tagged. Also reflowing a \PDF{} only works for me (even if real space chars are in the \PDF{}) if the \PDF{} is fully tagged.
+\begin{docCommand}[nosep]{tag_stop:}{}\end{docCommand}
+\begin{docCommand}[nosep]{tag_start:}{}\end{docCommand}
+\begin{docCommand}[nosep]{tag_stop_group_begin:}{}\end{docCommand}
+\begin{docCommand}{tag_start_group_end:}{}\end{docCommand}
-This means that even if you don't care about a proper structure you should try to add at least some minimal tagging. With pdflatex this is not easy due to the page break problem. But with lualatex you can use an \texttt{Document} structure and inside it rather large mc-chunks. This minimizes the needed work.
+This commands stop and start tagging in the current group
+by switching \emph{local} booleans.
+The grouping commands also open and close a group.
-One could ask if in lua mode the code couldn't try to mark up unmarked parts e.g. as P-type chunks, like it marks them up as artifacts currently. Sadly this is not so easy, as it is quite difficult to reliably identify the structure and the place in the kids array where such chunks belongs too. I also don't think that it is really needed. It is not so difficult to define user macros which e.g. opens a structure and start an mc-chunk or which close an open mc-chunk before issuing the next \verb+\tagmcbegin+.
+\begin{docCommand}[nosep]{tag_stop:n}{\marg{label}}\end{docCommand}
+\begin{docCommand}{tag_start:n}{\marg{label}}\end{docCommand}
+This commands stop and start tagging in the current group
+by switching \emph{local} booleans, but |\tag_start:n|
+only restarts if the corresponding |tag_stop:n| actually
+stopped something. This is meant for a situation like the following,
+where you don't want that the inner |\tag_start:n| restarts tagging.
+\begin{lstlisting}
+\tag_stop:n{outer}
+ ...
+ \tag_stop:n{inner}
+ ...
+ \tag_start:n{inner}
+ ...
+\tag_start:n{outer}
+\end{lstlisting}
+
+\subsection{Lazy and automatic tagging}\label{sec:lazy}
-\subsection{Adding tagging to commands}
+
+A number of features of \PDF{} readers need a fully tagged \PDF{}. As an example screen readers tend to ignore alternative text (see section~\ref{sec:alt}) if the \PDF{} is not fully tagged. Also reflowing a \PDF{} only works for me (even if real space chars are in the \PDF{}) if the \PDF{} is fully tagged (recent versions of the adobe reader manage to
+reflow also not tagged \PDF{} but it is very slow).
+
+This means that even if you don't care about a proper structure you should try to add at least some minimal tagging. With the now available automatic tagging of paragraphs all that is needed, is to use |testphase=phase-II| in |\DocumentMetadata|. With lualatex this can work quite OK if you don't have unbalanced paragraphs in your document (pdflatex is more fragile).
+\subsection{Adding tagging to commands}
+
As mentioned above the mc-markers should not be nested. Basically you write:
@@ -1796,9 +1856,7 @@ As mentioned above the mc-markers should not be nested. Basically you write:
\end{lstlisting}
-This is quite workable as long as you mark everything manually. But how to write commands, e.g for a tabular or a graphic, that do tagging automatically without breaking the flow and the structure?
-
-
+This is quite workable as long as you mark everything manually. But when defining commands you have to ensure that they correctly push and pop the mc-chunks where needed.
\section{Alternative text, ActualText and text-to-speech software}\label{sec:alt}
@@ -2133,7 +2191,7 @@ This command takes as argument a key-val list which implements a number of show
-\printbibliography
+\printbibliography[heading=bibintoc]
diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
index cc4eb9f4b7..3ad0e3de74 100644
--- a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+++ b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
@@ -1,33 +1,36 @@
%\RequirePackage[enable-debug]{expl3}[2018/06/14]
-\ProvidesExplPackage {tagpdfdocu-patches} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdfdocu-patches} {2023-01-24} {0.98b}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox,xpatch}
+% latex-lab experiments
+\providecommand\tagtool[1]{}
%vLogos
\ExplSyntaxOn
\DeclareRobustCommand\TeX{
+ \leavevmode
\tag_mc_end_push:
\tag_struct_begin:n{tag=Span,alt=TeX,actualtext=TeX}
\tagmcbegin{}
- T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@
+ T\kern-.1667em\lower.5ex\hbox{E}\kern-.05emX\@ %changed from -.125em
\tagmcend
\tag_struct_end:
\tag_mc_begin_pop:n{}}
-\DeclareRobustCommand{\LaTeX}{L\kern-.36em%
- {
+\DeclareRobustCommand{\LaTeX}{
+ \leavevmode
\tag_mc_end_push:
\tag_struct_begin:n{tag=Span,alt=LaTeX,actualtext=LaTeX}
\tagmcbegin{}
+ L\kern-.25em % %changed from -0.36em
\sbox\z@ T%
\vbox to\ht\z@{\hbox{\check@mathfonts
\fontsize\sf@size\z@
\math@fontsfalse\selectfont
A}%
\vss}%
- }%
- \kern-.15em%
- T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@
+ \kern-.1em % %changed from 0.15em
+ T\kern-.1667em\lower.5ex\hbox{E}\kern-.05emX\@ %changed from -0.125
\tagmcend
\tag_struct_end:
\tag_mc_begin_pop:n{}
@@ -39,6 +42,13 @@
\AddToHook{cmd/textbf/after}
{\tag_mc_end:\tag_struct_end:\tag_mc_begin_pop:n{}}
+
+% emph
+\AddToHook{cmd/emph/before}
+ {\leavevmode\tag_mc_end_push:\tag_struct_begin:n{tag=Em}\tagmcbegin{}}
+
+\AddToHook{cmd/emph/after}
+ {\tag_mc_end:\tag_struct_end:\tag_mc_begin_pop:n{}}
\newcommand\minisec[1]{%
diff --git a/macros/luatex/latex/luaquotes/README b/macros/luatex/latex/luaquotes/README
index 89663013c2..86303cf8c2 100644
--- a/macros/luatex/latex/luaquotes/README
+++ b/macros/luatex/latex/luaquotes/README
@@ -1,6 +1,6 @@
luaquotes - smart quotes with lua
-version: 1.3.0
+version: 1.4.0
This package automatically creates smart quotes using lua filters and provides auxiliary commands for typesetting specific lua punctuation
@@ -12,6 +12,7 @@ For suggestions, feature requests, and bug reports, please use the project's
GitHub site: https://github.com/ezgranet/luaquotes
Version history:
+25/01/2023—added support for Swiss German quotations
15/01/2023—fixed single quotations within parentheses
12/12/2022-added degm function
23/11/2022-walking back automatic elision for now
diff --git a/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf b/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
index 9017157b1a..a331cac8dc 100644
--- a/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
+++ b/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
Binary files differ
diff --git a/macros/luatex/latex/luaquotes/luaquotes-documentation.tex b/macros/luatex/latex/luaquotes/luaquotes-documentation.tex
index 0ac2417deb..4f8b67c6af 100644
--- a/macros/luatex/latex/luaquotes/luaquotes-documentation.tex
+++ b/macros/luatex/latex/luaquotes/luaquotes-documentation.tex
@@ -68,7 +68,7 @@ breaklines,
{latex}
\usepackage{luaquotes}
\end{minted}
-The French and German options, for those languages' punctuation, are called by the following respective commands.
+The French, German, German (guillemets), and Swiss German options, for those languages' punctuation, are called by the following respective commands.
\begin{minted}[
frame=lines,
framesep=2mm,
@@ -80,7 +80,8 @@ breaklines,
{latex}
\usepackage[fr]{luaquotes} %French
\usepackage[de]{luaquotes} % German
-\usepackage[degm]{luaquotes} % German with French-style quotes
+\usepackage[degm]{luaquotes} % German with guillemets
+\usepackage[dech]{luaquotes} %Swiss German
\end{minted}
\subsubsection{English Features}
The English features are designed to smartly recognise English punctuation:
@@ -88,7 +89,7 @@ The English features are designed to smartly recognise English punctuation:
\renewcommand{\arraystretch}{2}
\begin{tabular}{ccc}
\ttfamily Feature & User input & Output\\
- Double Quotes & \LARGE\texttt{"Salut!"}%
+ Double Quotes & \LARGE\texttt{"Hello!"}%
&
\LARGE "Hello"\\
Single Quotes& \LARGE\texttt{'Hello!'}%
@@ -124,8 +125,8 @@ The German option produces the following output:
\end{tabular}
\end{center}
-\subsubsection{The German (\texttt{degm}) option}
-The German (\texttt{degm}) option produces the following output:
+\subsubsection{The German (guillemets) option}
+The German (guillemets) option produces the following output:
\begin{center}
\renewcommand{\arraystretch}{2}
@@ -139,7 +140,20 @@ The German (\texttt{degm}) option produces the following output:
\end{tabular}
\end{center}
+\subsubsection{The Swiss German option}
+The Swiss German option produces the following output:
+\begin{center}
+\renewcommand{\arraystretch}{2}
+\begin{tabular}{cc}
+\ttfamily User input &Output\\
+\LARGE\texttt{"Hallo!"}%
+& \LARGE \glmtl Hallo!\glmtr\\
+\LARGE\texttt{'Hallo!'}%
+& \LARGE \sglmtl Hallo!\sglmtr\\
+
+\end{tabular}
+\end{center}
\subsection{Activation and De-activation}
The package automatically activates the smart quotes function at the beginning of the document. To deactivate the smart quotes function within a document, the following commands are used:
@@ -291,9 +305,10 @@ firstnumber=last
]
{latex}
-\def\luaquotesversionnumber{1.3.0}
+
+\def\luaquotesversionnumber{1.4.0}
\ProvidesPackage{luaquotes}
- [2023/15/15\luaquotesversionnumber smart quotes with lua]
+ [2023/01/25\luaquotesversionnumber smart quotes with lua]
% !TeX program = lualatex
% !TeX encoding = utf8
% This work may be distributed and/or modified under the
@@ -475,6 +490,33 @@ luatexbase.add_to_callback (
\newcommand\frsinglequotespcloseoff{\directlua{luatexbase.remove_from_callback (
"process_input_buffer" , "frpsinglequotesclose" )}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DECH Parentheses
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\sglmtlpdech}{{\addfontfeature{RawFeature={-qtbye,-tlig}}‹}}
+\newcommand{\sglmtrpdech}{{\addfontfeature{RawFeature={-qtbye,-tlig}}›}}
+
+\luaexec{function dechpsinglequotes ( s )
+ return ( s:gsub ( "\%('",[[(\sglmtlpdech]]) )
+ end}
+\luaexec{function dechpsinglequotesclose ( s )
+ return ( s:gsub ( "'\%)",[[\sglmtrpdech)]]) )
+ end}
+
+\newcommand\dechsinglequotespon{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , dechpsinglequotes , "dechpsinglequotes" )
+ }}
+\newcommand\dechsinglequotespoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechpsinglequotes" )}}
+\newcommand\dechsinglequotespcloseon{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , dechpsinglequotesclose , "dechpsinglequotesclose" )
+ }}
+\newcommand\dechsinglequotespcloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechpsinglequotesclose" )}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -530,8 +572,7 @@ luatexbase.add_to_callback (
}
\DeclareOption{en}{
-\AtBeginDocument{\frsmartquotes\frdumbquotes%
-\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes}
+\AtBeginDocument{\dechsmartquotes\dechdumbquotes\frsmartquotes\frdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes}
\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
}
@@ -654,6 +695,7 @@ return ( s:gsub ( " '(..-)'", " ‚\%1`" ) )
}
\DeclareOption{de}{
\AtBeginDocument{
+\dechsmartquotes\dechdumbquotes
\frsmartquotes
\frdumbquotes
\smartquotes
@@ -698,6 +740,7 @@ return ( s:gsub ( " '(..-)'", " ‚\%1‹" ) )
\degmsinglequotescloseoff}
\DeclareOption{degm}{
\AtBeginDocument{
+\dechsmartquotes\dechdumbquotes
\frsmartquotes
\frdumbquotes
\smartquotes
@@ -747,16 +790,60 @@ return ( s:gsub ( " '(..-)'", " ‹\\,\%1\\,›" ) )
\frsinglequotelinestartoff
\frsinglequotescloseoff}
\DeclareOption{fr}{
-\AtBeginDocument{\desmartquotes\dedumbquotes%
-\degmsmartquotes\degmdumbquotes%
-\smartquotes\dumbquotes%
-\dumbquotes\frsmartquotes}
+\AtBeginDocument{\dechsmartquotes\dechdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes}
\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Deutsch (Schweiz)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{function dechdoublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "«\%1»" ) )
+ end}
+
+
+\luaexec{function dechsinglequotelinestart ( s )
+ return (s:gsub ("^'","'" ) )
+ end}
+\luaexec{function dechsinglequotesclose( s )
+return ( s:gsub ( " '(..-)'", " ‹\%1›" ) )
+ end}
+%% Two utility macros to activate/deactivate the Lua function:
+\newcommand\dechdoublequoteson{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechdoublequotes , "dechdoublequotes" )}}
+\newcommand\dechdoublequotesoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechdoublequotes" )}}
+\newcommand\dechsinglequotelinestarton{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechsinglequotelinestart , "dechsinglequotelinestart" )}}
+\newcommand\dechsinglequotelinestartoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechsinglequotelinestart" )}}
+ \newcommand\dechsinglequotescloseon{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechsinglequotesclose , "dechsinglequotesclose" )}}
+\newcommand\dechsinglequotescloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechsinglequotesclose" )}}
+ \newcommand{\dechsmartquotes}{\dechdoublequoteson
+ \dechsinglequotespon
+ \dechsinglequotespcloseon
+\dechsinglequotelinestarton
+\dechsinglequotescloseon}
+ \newcommand{\dechdumbquotes}{\dechdoublequotesoff
+ \dechsinglequotespoff
+ \dechsinglequotespcloseoff
+\dechsinglequotelinestartoff
+\dechsinglequotescloseoff}
+ \DeclareOption{dech}{
+\AtBeginDocument{\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes\frdumbquotes\dechsmartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
+
+
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Default option is English
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -766,8 +853,14 @@ return ( s:gsub ( " '(..-)'", " ‹\\,\%1\\,›" ) )
+
+
\end{minted}
\section{Version History}
+\subsection*{\normalfont\texttt{1.4.0}}
+\ttfamily Added support for Swiss German options, on user request
+
+
\subsection*{\normalfont\texttt{1.3.0}}
\ttfamily 15 January 2023 fixed single quotes and parentheses
diff --git a/macros/luatex/latex/luaquotes/luaquotes.sty b/macros/luatex/latex/luaquotes/luaquotes.sty
index 7b93a4f9c0..c2033499ee 100644
--- a/macros/luatex/latex/luaquotes/luaquotes.sty
+++ b/macros/luatex/latex/luaquotes/luaquotes.sty
@@ -1,6 +1,6 @@
-\def\luaquotesversionnumber{1.3.0}
+\def\luaquotesversionnumber{1.4.0}
\ProvidesPackage{luaquotes}
- [2023/15/15\luaquotesversionnumber smart quotes with lua]
+ [2023/01/25\luaquotesversionnumber smart quotes with lua]
% !TeX program = lualatex
% !TeX encoding = utf8
% This work may be distributed and/or modified under the
@@ -182,6 +182,33 @@ luatexbase.add_to_callback (
\newcommand\frsinglequotespcloseoff{\directlua{luatexbase.remove_from_callback (
"process_input_buffer" , "frpsinglequotesclose" )}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DECH Parentheses
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\sglmtlpdech}{{\addfontfeature{RawFeature={-qtbye,-tlig}}‹}}
+\newcommand{\sglmtrpdech}{{\addfontfeature{RawFeature={-qtbye,-tlig}}›}}
+
+\luaexec{function dechpsinglequotes ( s )
+ return ( s:gsub ( "\%('",[[(\sglmtlpdech]]) )
+ end}
+\luaexec{function dechpsinglequotesclose ( s )
+ return ( s:gsub ( "'\%)",[[\sglmtrpdech)]]) )
+ end}
+
+\newcommand\dechsinglequotespon{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , dechpsinglequotes , "dechpsinglequotes" )
+ }}
+\newcommand\dechsinglequotespoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechpsinglequotes" )}}
+\newcommand\dechsinglequotespcloseon{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , dechpsinglequotesclose , "dechpsinglequotesclose" )
+ }}
+\newcommand\dechsinglequotespcloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechpsinglequotesclose" )}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -237,7 +264,7 @@ luatexbase.add_to_callback (
}
\DeclareOption{en}{
-\AtBeginDocument{\frsmartquotes\frdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes}
+\AtBeginDocument{\dechsmartquotes\dechdumbquotes\frsmartquotes\frdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes}
\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
}
@@ -360,6 +387,7 @@ return ( s:gsub ( " '(..-)'", " ‚\%1`" ) )
}
\DeclareOption{de}{
\AtBeginDocument{
+\dechsmartquotes\dechdumbquotes
\frsmartquotes
\frdumbquotes
\smartquotes
@@ -404,6 +432,7 @@ return ( s:gsub ( " '(..-)'", " ‚\%1‹" ) )
\degmsinglequotescloseoff}
\DeclareOption{degm}{
\AtBeginDocument{
+\dechsmartquotes\dechdumbquotes
\frsmartquotes
\frdumbquotes
\smartquotes
@@ -453,13 +482,60 @@ return ( s:gsub ( " '(..-)'", " ‹\\,\%1\\,›" ) )
\frsinglequotelinestartoff
\frsinglequotescloseoff}
\DeclareOption{fr}{
-\AtBeginDocument{\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes}
+\AtBeginDocument{\dechsmartquotes\dechdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes}
\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Deutsch (Schweiz)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{function dechdoublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "«\%1»" ) )
+ end}
+
+
+\luaexec{function dechsinglequotelinestart ( s )
+ return (s:gsub ("^'","'" ) )
+ end}
+\luaexec{function dechsinglequotesclose( s )
+return ( s:gsub ( " '(..-)'", " ‹\%1›" ) )
+ end}
+%% Two utility macros to activate/deactivate the Lua function:
+\newcommand\dechdoublequoteson{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechdoublequotes , "dechdoublequotes" )}}
+\newcommand\dechdoublequotesoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechdoublequotes" )}}
+\newcommand\dechsinglequotelinestarton{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechsinglequotelinestart , "dechsinglequotelinestart" )}}
+\newcommand\dechsinglequotelinestartoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechsinglequotelinestart" )}}
+ \newcommand\dechsinglequotescloseon{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechsinglequotesclose , "dechsinglequotesclose" )}}
+\newcommand\dechsinglequotescloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechsinglequotesclose" )}}
+ \newcommand{\dechsmartquotes}{\dechdoublequoteson
+ \dechsinglequotespon
+ \dechsinglequotespcloseon
+\dechsinglequotelinestarton
+\dechsinglequotescloseon}
+ \newcommand{\dechdumbquotes}{\dechdoublequotesoff
+ \dechsinglequotespoff
+ \dechsinglequotespcloseoff
+\dechsinglequotelinestartoff
+\dechsinglequotescloseoff}
+ \DeclareOption{dech}{
+\AtBeginDocument{\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes\frdumbquotes\dechsmartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
+
+
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Default option is English
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/timestamp b/timestamp
index b0968dee85..9b9c8c21ab 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2023-01-25-02-02
+2023-01-26-02-02