From 0c889bec86ba92853b3923e39de0b6bb17d18486 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 26 Jan 2023 03:00:49 +0000 Subject: CTAN sync 202301260300 --- FILES.byname | 146 +++-- FILES.byname.gz | Bin 2511737 -> 2511844 bytes FILES.last07days | 152 +++-- biblio/ctan-bibdata/ctan.bib | 25 +- biblio/ctan-bibdata/ctan.pdf | Bin 3641439 -> 3644491 bytes graphics/pgf/contrib/tangramtikz/README.md | 7 + .../contrib/tangramtikz/doc/TangramTikz-doc-en.pdf | Bin 0 -> 430175 bytes .../contrib/tangramtikz/doc/TangramTikz-doc-en.tex | 563 ++++++++++++++++ .../contrib/tangramtikz/doc/TangramTikz-doc-fr.pdf | Bin 0 -> 428860 bytes .../contrib/tangramtikz/doc/TangramTikz-doc-fr.tex | 565 ++++++++++++++++ .../pgf/contrib/tangramtikz/tex/TangramTikz.sty | 513 +++++++++++++++ .../latex/contrib/proflycee/doc/ProfLycee-doc.pdf | Bin 860401 -> 801869 bytes .../latex/contrib/proflycee/doc/ProfLycee-doc.tex | 710 ++++++++++----------- macros/latex/contrib/proflycee/tex/ProfLycee.sty | 165 ++--- macros/latex/contrib/tagpdf/README.md | 4 +- macros/latex/contrib/tagpdf/tagpdf-backend.dtx | 8 +- macros/latex/contrib/tagpdf/tagpdf-checks.dtx | 6 +- macros/latex/contrib/tagpdf/tagpdf-code.pdf | Bin 1532339 -> 1488604 bytes macros/latex/contrib/tagpdf/tagpdf-data.dtx | 18 +- macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx | 6 +- macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx | 6 +- macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx | 4 +- macros/latex/contrib/tagpdf/tagpdf-roles.dtx | 4 +- macros/latex/contrib/tagpdf/tagpdf-space.dtx | 4 +- macros/latex/contrib/tagpdf/tagpdf-struct.dtx | 40 +- macros/latex/contrib/tagpdf/tagpdf-tree.dtx | 92 ++- macros/latex/contrib/tagpdf/tagpdf-user.dtx | 5 +- macros/latex/contrib/tagpdf/tagpdf.dtx | 13 +- macros/latex/contrib/tagpdf/tagpdf.pdf | Bin 757067 -> 854620 bytes macros/latex/contrib/tagpdf/tagpdf.tex | 116 +++- macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty | 24 +- macros/luatex/latex/luaquotes/README | 3 +- .../latex/luaquotes/luaquotes-documentation.pdf | Bin 104899 -> 60240 bytes .../latex/luaquotes/luaquotes-documentation.tex | 119 +++- macros/luatex/latex/luaquotes/luaquotes.sty | 84 ++- timestamp | 2 +- 36 files changed, 2708 insertions(+), 696 deletions(-) create mode 100644 graphics/pgf/contrib/tangramtikz/README.md create mode 100644 graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.pdf create mode 100644 graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.tex create mode 100644 graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.pdf create mode 100644 graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.tex create mode 100644 graphics/pgf/contrib/tangramtikz/tex/TangramTikz.sty 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 Binary files a/FILES.byname.gz and b/FILES.byname.gz 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 Binary files a/biblio/ctan-bibdata/ctan.pdf and b/biblio/ctan-bibdata/ctan.pdf 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 Binary files /dev/null and b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-en.pdf 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]{Maison} + \TangramTikz[Correction]{Maison} + \TangramTikz[CorrectionCouleur]{Maison} + \TangramTikz[ListeCouleurs={blue,red,black,orange,purple},CorrectionCouleur]{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]{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] + %positionning the pieces + \PieceTangram[keys](offsetH,offsetV){TangBigTri} + \PieceTangram[keys](offsetH,offsetH){TangBigTri} + \PieceTangram[keys](offsetH,offsetH){TangMedTri} + \PieceTangram[keys](offsetH,offsetH){TangSmalTri} + \PieceTangram[keys](offsetH,offsetH){TangSmalTri} + \PieceTangram[keys](offsetH,offsetH){TangSqua} + \PieceTangram[keys](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}](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}]({0.5},{3}){TangBigTri} + \PieceTangram[TangSol={purple}]({2.5},{2}){TangPara} + \PieceTangram[TangSol={blue}]({-1.5},{2}){TangSmalTri} + \PieceTangram[TangSol={blue}]({-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]({0.5},{3}){TangBigTri} + \PieceTangram[TangPuzz]({2.5},{2}){TangPara} + \PieceTangram[TangPuzz]({-1.5},{2}){TangSmalTri} + \PieceTangram[TangPuzz]({-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]{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{Rocket}~~ +\TangramTikz{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 Binary files /dev/null and b/graphics/pgf/contrib/tangramtikz/doc/TangramTikz-doc-fr.pdf 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]{Maison} + \TangramTikz[Correction]{Maison} + \TangramTikz[CorrectionCouleur]{Maison} + \TangramTikz[ListeCouleurs={blue,red,black,orange,purple},CorrectionCouleur]{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]{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] + %placement des pièces + \PieceTangram[clés](decalH,decalV){TangGrandTri} + \PieceTangram[clés](decalH,decalV){TangGrandTri} + \PieceTangram[clés](decalH,decalV){TangMoyTri} + \PieceTangram[clés](decalH,decalV){TangPetTri} + \PieceTangram[clés](decalH,decalV){TangPetTri} + \PieceTangram[clés](decalH,decalV){TangCar} + \PieceTangram[clés](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}](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}]({0.5},{3}){TangGrandTri} + \PieceTangram[TangSol={purple}]({2.5},{2}){TangPara} + \PieceTangram[TangSol={blue}]({-1.5},{2}){TangPetTri} + \PieceTangram[TangSol={blue}]({-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]({0.5},{3}){TangGrandTri} + \PieceTangram[TangPuzz]({2.5},{2}){TangPara} + \PieceTangram[TangPuzz]({-1.5},{2}){TangPetTri} + \PieceTangram[TangPuzz]({-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]{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{Fusee}~~ +\TangramTikz{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]}]({sqrt(8)},0){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}](0,0){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}](-0.5,{sqrt(2)}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0.5+sqrt(8)},{sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}](0.5,{sqrt(2)+1}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({sqrt(8)},0){TangPetTri} + }% + {% + \PieceTangram[#2]({sqrt(8)},0){TangGrandTri} + \PieceTangram[#2](0,0){TangMoyTri} + \PieceTangram[#2](-0.5,{sqrt(2)}){TangPara} + \PieceTangram[#2]({0.5+sqrt(8)},{sqrt(2)}){TangGrandTri} + \PieceTangram[#2](0.5,{sqrt(2)+1}){TangCar} + \PieceTangram[#2]({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[#2]({sqrt(8)},0){TangPetTri} + }% +} + +%the fir tree / le sapin +\NewDocumentCommand\TangramFirTree{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({0},{0}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({-1.5},{1}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0.5},{3}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({2.5},{2}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({-1.5},{2}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({-0.5},{2}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-0.5},{3}){TangMoyTri} + }% + {% + \PieceTangram[#2]({0},{0}){TangCar} + \PieceTangram[#2]({-1.5},{1}){TangGrandTri} + \PieceTangram[#2]({0.5},{3}){TangGrandTri} + \PieceTangram[#2]({2.5},{2}){TangPara} + \PieceTangram[#2]({-1.5},{2}){TangPetTri} + \PieceTangram[#2]({-0.5},{2}){TangPetTri} + \PieceTangram[#2]({-0.5},{3}){TangMoyTri} + }% +} + +%the cat / le chat +\NewDocumentCommand\TangramCat{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({2-sqrt(2)},{2+sqrt(2)}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}](0,0){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({2-sqrt(2)},{2-sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({2},{0}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({2-1.5*sqrt(2)},{2+1.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({2-0.5*sqrt(2)},{2+2.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({2-sqrt(2)},{sqrt(2)}){TangMoyTri} + }% + {% + \PieceTangram[#2]({2-sqrt(2)},{2+sqrt(2)}){TangCar} + \PieceTangram[#2](0,0){TangGrandTri} + \PieceTangram[#2]({2-sqrt(2)},{2-sqrt(2)}){TangGrandTri} + \PieceTangram[#2]({2},{0}){TangPara} + \PieceTangram[#2]({2-1.5*sqrt(2)},{2+1.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({2-0.5*sqrt(2)},{2+2.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({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]}]({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({sqrt(2)},{sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({sqrt(2)+1},{sqrt(2)}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({0},{0}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({0},{2+sqrt(2)}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({-1},{1+sqrt(2)}){TangPetTri} + }% + {% + \PieceTangram[#2]({0},{0}){TangGrandTri} + \PieceTangram[#2]({sqrt(2)},{sqrt(2)}){TangGrandTri} + \PieceTangram[#2]({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[#2]({sqrt(2)+1},{sqrt(2)}){TangCar} + \PieceTangram[#2]({0},{0}){TangMoyTri} + \PieceTangram[#2]({0},{2+sqrt(2)}){TangPara} + \PieceTangram[#2]({-1},{1+sqrt(2)}){TangPetTri} + }% +} + +%the duck / le canard +\NewDocumentCommand\TangramDuck{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({sqrt(2)},{sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({2*sqrt(2)},{0}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({2.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({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]({0},{0}){TangGrandTri} + \PieceTangram[#2]({sqrt(2)},{sqrt(2)}){TangGrandTri} + \PieceTangram[#2]({2*sqrt(2)},{0}){TangCar} + \PieceTangram[#2]({sqrt(2)},{sqrt(2)}){TangPetTri} + \PieceTangram[#2]({2.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({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]}]({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({-0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({-sqrt(2)},{sqrt(2)}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({0},{2*sqrt(2)}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({0},{sqrt(2)}){TangPetTri} + }% + {% + \PieceTangram[#2]({0},{0}){TangGrandTri} + \PieceTangram[#2]({0},{0}){TangGrandTri} + \PieceTangram[#2]({-0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({-sqrt(2)},{sqrt(2)}){TangPara} + \PieceTangram[#2]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar} + \PieceTangram[#2]({0},{2*sqrt(2)}){TangMoyTri} + \PieceTangram[#2]({0},{sqrt(2)}){TangPetTri} + }% +} + +%the rocket / la fusee +\NewDocumentCommand\TangramRocket{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({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]}]({0.5},{-1}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({1.5},{0}){TangPara} + }% + {% + \PieceTangram[#2]({0},{0}){TangGrandTri} + \PieceTangram[#2]({2},{2}){TangGrandTri} + \PieceTangram[#2]({0},{2}){TangMoyTri} + \PieceTangram[#2]({0.5},{-1}){TangCar} + \PieceTangram[#2]({-0.5},{-1}){TangPetTri} + \PieceTangram[#2]({0.5},{-1}){TangPetTri} + \PieceTangram[#2]({1.5},{0}){TangPara} + }% +} + +%the candle / la bougie +\NewDocumentCommand\TangramCandle{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({1.5*sqrt(2)},{1.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({1.5*sqrt(2)},{2.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({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]}]({sqrt(2)},{2+2*sqrt(2)}){TangPara} + }% + {% + \PieceTangram[#2]({0},{0}){TangGrandTri} + \PieceTangram[#2]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[#2]({1.5*sqrt(2)},{1.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({1.5*sqrt(2)},{2.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({sqrt(2)-1},{1+2*sqrt(2)}){TangMoyTri} + \PieceTangram[#2]({sqrt(2)-0.5},{1+2*sqrt(2)}){TangCar} + \PieceTangram[#2]({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]}]({0},{2}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({2},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-1},{2}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({1},{2}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({1},{2}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({0},{2}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({2},{3}){TangPara} + }% + {% + \PieceTangram[#2]({0},{2}){TangGrandTri} + \PieceTangram[#2]({2},{0}){TangGrandTri} + \PieceTangram[#2]({-1},{2}){TangMoyTri} + \PieceTangram[#2]({1},{2}){TangPetTri} + \PieceTangram[#2]({1},{2}){TangCar} + \PieceTangram[#2]({0},{2}){TangPetTri} + \PieceTangram[#2]({2},{3}){TangPara} + }% +} + +%the fish / le poisson +\NewDocumentCommand\TangramFish{ s O{TangPuzz} }{%*=colorcorrection,[key for pic] + \IfBooleanTF{#1}% + {% + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({0},{0}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({0},{0}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-1},{1}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({sqrt(2)},{0}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({1.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({1.5*sqrt(2)},{-0.5*sqrt(2)}){TangGrandTri} + }% + {% + \PieceTangram[#2]({0},{0}){TangPetTri} + \PieceTangram[#2]({0},{0}){TangPara} + \PieceTangram[#2]({-1},{1}){TangMoyTri} + \PieceTangram[#2]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({sqrt(2)},{0}){TangCar} + \PieceTangram[#2]({1.5*sqrt(2)-2},{2+0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[#2]({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]}]({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[1]}]({-2},{0.35}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({0},{0}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-2+sqrt(2)},{0}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({0},{1+2*sqrt(2)}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({-1-2+sqrt(2)},{0}){TangPara} + }% + {% + \PieceTangram[#2]({0},{0}){TangGrandTri} + \PieceTangram[#2]({-2},{0.35}){TangGrandTri} + \PieceTangram[#2]({0},{0}){TangPetTri} + \PieceTangram[#2]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangCar} + \PieceTangram[#2]({-2+sqrt(2)},{0}){TangMoyTri} + \PieceTangram[#2]({0},{1+2*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({-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]}]({2},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({2},{-0.5}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({2},{3}){TangPetTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({0},{-2}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-0.5*sqrt(2)},{-2-0.5*sqrt(2)}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({1-0.5*sqrt(2)},{-1-0.5*sqrt(2)}){TangCar} + }% + {% + \PieceTangram[#2]({0},{0}){TangGrandTri} + \PieceTangram[#2]({2},{0}){TangGrandTri} + \PieceTangram[#2]({2},{-0.5}){TangPetTri} + \PieceTangram[#2]({2},{3}){TangPetTri} + \PieceTangram[#2]({0},{-2}){TangPara} + \PieceTangram[#2]({-0.5*sqrt(2)},{-2-0.5*sqrt(2)}){TangMoyTri} + \PieceTangram[#2]({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]}]({0},{0}){TangGrandTri} + \PieceTangram[TangSol={\TanGListeCouleurs[5]}]({0},{1.75}){TangPara} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({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]}]({2-0.5*sqrt(2)},{0.5*sqrt(2)}){TangMoyTri} + \PieceTangram[TangSol={\TanGListeCouleurs[4]}]({2.5},{2.5}){TangCar} + \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({2.5},{2.5+sqrt(2)}){TangPetTri} + }% + {% + \PieceTangram[#2]({0},{0}){TangGrandTri} + \PieceTangram[#2]({0},{1.75}){TangPara} + \PieceTangram[#2]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangPetTri} + \PieceTangram[#2]({0.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri} + \PieceTangram[#2]({2-0.5*sqrt(2)},{0.5*sqrt(2)}){TangMoyTri} + \PieceTangram[#2]({2.5},{2.5}){TangCar} + \PieceTangram[#2]({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 Binary files a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf and b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf 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*}{.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{.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]{.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*}{.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{.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]{.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} % % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf index b0bb3a8290..5b954258dd 100644 Binary files a/macros/latex/contrib/tagpdf/tagpdf-code.pdf and b/macros/latex/contrib/tagpdf/tagpdf-code.pdf 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} % %<*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} % % \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 } % % \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 } % 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} % % \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} % % \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} % % \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} + } % % \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} % % \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} % % \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} % % \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 } % % \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 {} % % \end{macrocode} % \end{macro} diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf index 08ec9e590c..a77e88d3c5 100644 Binary files a/macros/latex/contrib/tagpdf/tagpdf.pdf and b/macros/latex/contrib/tagpdf/tagpdf.pdf 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 Binary files a/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf and b/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf 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,15 +790,59 @@ 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,12 +482,59 @@ 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 -- cgit v1.2.3