summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-03-25 03:03:04 +0000
committerNorbert Preining <norbert@preining.info>2024-03-25 03:03:04 +0000
commit05f8146ef2eea2cd71b9c96583c6d893e6c76af5 (patch)
tree615019c00dc1d5e6ec2636bbbb30852f241c04ee /macros/latex
parent1feacf4295bab2d8f05aa0f5fbd1d902559bef36 (diff)
CTAN sync 202403250302
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md68
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/README.md2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa-doiapi.sty2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa.sty2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-l3draw.sty10
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-tikz.sty2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty15
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdfbin843176 -> 861267 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex61
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua4
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def6
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-dashed-common.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-standard.bbx14
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-common.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note-common.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.cbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.bbx2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx2
-rw-r--r--macros/latex/contrib/multifootnote/README.md9
-rw-r--r--macros/latex/contrib/multifootnote/multifootnote-doc.pdfbin94268 -> 53172 bytes
-rw-r--r--macros/latex/contrib/multifootnote/multifootnote-doc.tex94
-rw-r--r--macros/latex/contrib/multifootnote/multifootnote.sty440
-rw-r--r--macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdfbin9742827 -> 10211376 bytes
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCCAN.tex3
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCCalculatrice.tex192
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCCalculsFractionsoldv1.tex192
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCCartesJeux.tex67
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCCartesMentales.tex19
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCCartographie.tex117
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex30
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCDistributivite.tex10
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCDomino.tex52
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCDontCountDots.tex197
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex283
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCEcritureLettres.tex14
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCEcritureUnites.tex79
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex39
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCEratosthene.tex20
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCFactorisation.tex63
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex50
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCLego.tex12
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex24
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex95
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCRecyclage.tex360
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCReperage.tex48
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCRepresenterTableur.tex55
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCReseauxSociaux.tex72
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCRondeInfernaleold.tex474
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCSimplifierFraction.tex44
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCStatistiques.tex9
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex63
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCThales.tex14
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCTicketCaisse.tex210
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCTrio.tex442
-rw-r--r--macros/latex/contrib/profcollege/latex/ProfCollege.sty116
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCCalculatrice.mp5
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCMonde.mp56
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCObjets.mp31
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCScratch.mp229
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCSolid.mp3
132 files changed, 3021 insertions, 1653 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md b/macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md
index 5db7f997b0..d9eb5a849a 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md
@@ -1,8 +1,16 @@
# Changelog
+## Version 0.18 (2024-03-24)
+
+See <https://github.com/moewew/biblatex-ext/compare/v0.17..v0.18>
+
+### Changed
+- Change colour model in `l3draw` colour definition from CMYK to HTML.
+- Synced `\printbibtabular` implementation with `biblatex` 3.20.
+
## Version 0.17 (2023-03-18)
-See <https://github.com/moewew/biblatex-ext/compare/v0.16...v0.17>
+See <https://github.com/moewew/biblatex-ext/compare/v0.16..v0.17>
### Changed
- Synced `\textcite` implementation in `-comp` styles with
@@ -11,7 +19,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.16...v0.17>
## Version 0.16 (2022-06-18)
-See <https://github.com/moewew/biblatex-ext/compare/v0.15...v0.16>
+See <https://github.com/moewew/biblatex-ext/compare/v0.15..v0.16>
### Changed
- Reworked the implementation of `citexref`.
@@ -20,7 +28,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.15...v0.16>
## Version 0.15 (2022-03-06)
-See <https://github.com/moewew/biblatex-ext/compare/v0.14...v0.15>
+See <https://github.com/moewew/biblatex-ext/compare/v0.14..v0.15>
### Added
- New `authornumber` style family.
@@ -30,7 +38,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.14...v0.15>
## Version 0.14 (2021-08-31)
-See <https://github.com/moewew/biblatex-ext/compare/v0.13...v0.14>
+See <https://github.com/moewew/biblatex-ext/compare/v0.13..v0.14>
### Fixed
- Use `language` bibmacro in `@dataset` driver instead of bare
@@ -40,7 +48,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.13...v0.14>
## Version 0.13 (2021-06-08)
-See <https://github.com/moewew/biblatex-ext/compare/v0.12b...v0.13>
+See <https://github.com/moewew/biblatex-ext/compare/v0.12b..v0.13>
### Added
- `titlecase:biblabeltitle` and `biblabeltitle` formats to format
@@ -53,7 +61,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.12b...v0.13>
## Version 0.12b (2021-04-22)
-See <https://github.com/moewew/biblatex-ext/compare/v0.12a...v0.12b>
+See <https://github.com/moewew/biblatex-ext/compare/v0.12a..v0.12b>
### Fixed
- Fixed default `refcontext` assignment in tabular bibliography
@@ -61,14 +69,14 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.12a...v0.12b>
## Version 0.12a (2021-04-20)
-See <https://github.com/moewew/biblatex-ext/compare/v0.12...v0.12a>
+See <https://github.com/moewew/biblatex-ext/compare/v0.12..v0.12a>
### Fixed
- Fixed `env` option for `\printbibtabular`.
## Version 0.12 (2021-02-27)
-See <https://github.com/moewew/biblatex-ext/compare/v0.11...v0.12>
+See <https://github.com/moewew/biblatex-ext/compare/v0.11..v0.12>
### Added
- `\UndeclareCiteDelims{<cite command>}` to delete inner and outer
@@ -81,14 +89,14 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.11...v0.12>
## Version 0.11 (2021-02-19)
-See <https://github.com/moewew/biblatex-ext/compare/v0.10...v0.11>
+See <https://github.com/moewew/biblatex-ext/compare/v0.10..v0.11>
### Changed
- Synced with 2021-02-18 changes in `l3draw`/`l3color`.
## Version 0.10 (2021-01-01)
-See <https://github.com/moewew/biblatex-ext/compare/v0.9...v0.10>
+See <https://github.com/moewew/biblatex-ext/compare/v0.9..v0.10>
### Changed
- Updated for `biblatex` v3.16 (2020/12/31).
@@ -98,7 +106,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.9...v0.10>
## Version 0.9 (2020-08-21)
-See <https://github.com/moewew/biblatex-ext/compare/v0.8g...v0.9>
+See <https://github.com/moewew/biblatex-ext/compare/v0.8g..v0.9>
### Changed
- Updated for `biblatex` v3.15 (2020/08/19).
@@ -106,7 +114,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.8g...v0.9>
## Version 0.8g (2020-08-09)
-See <https://github.com/moewew/biblatex-ext/compare/v0.8f...v0.8g>
+See <https://github.com/moewew/biblatex-ext/compare/v0.8f..v0.8g>
### Fixed
- Synced with 2020-08-07 `l3draw`/`l3color` changes.
@@ -114,7 +122,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.8f...v0.8g>
## Version 0.8f (2020-05-09)
-See <https://github.com/moewew/biblatex-ext/compare/v0.8e...v0.8f>
+See <https://github.com/moewew/biblatex-ext/compare/v0.8e..v0.8f>
### Fixed
- Fixed inner cite delimiters for `\footcitetext` in `authoryear`
@@ -124,7 +132,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.8e...v0.8f>
## Version 0.8e (2020-05-05)
-See <https://github.com/moewew/biblatex-ext/compare/v0.8d...v0.8e>
+See <https://github.com/moewew/biblatex-ext/compare/v0.8d..v0.8e>
### Fixed
- Fixed `bbx:introcite` definition for `ext-numeric-comp`.
@@ -138,7 +146,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.8d...v0.8e>
## Version 0.8d (2020-03-15)
-See <https://github.com/moewew/biblatex-ext/compare/v0.8c...v0.8d>
+See <https://github.com/moewew/biblatex-ext/compare/v0.8c..v0.8d>
### Fixed
- Avoid an error about the bibmacro `labeltitle` being undefined
@@ -150,7 +158,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.8c...v0.8d>
## Version 0.8c (2019-11-30)
-See <https://github.com/moewew/biblatex-ext/compare/v0.8b...v0.8c>
+See <https://github.com/moewew/biblatex-ext/compare/v0.8b..v0.8c>
### Changed
- The Unpaywall API queries don't include a sanity check for
@@ -163,7 +171,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.8b...v0.8c>
## Version 0.8b (2019-11-01)
-See <https://github.com/moewew/biblatex-ext/compare/v0.8a...v0.8b>
+See <https://github.com/moewew/biblatex-ext/compare/v0.8a..v0.8b>
### Fixed
- Call to removed option in `ext-verbose-trad2`.
@@ -171,7 +179,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.8a...v0.8b>
## Version 0.8a (2019-10-31)
-See <https://github.com/moewew/biblatex-ext/compare/v0.8...v0.8a>
+See <https://github.com/moewew/biblatex-ext/compare/v0.8..v0.8a>
### Fixed
- The default value of `\servoldelim` was documented as
@@ -183,7 +191,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.8...v0.8a>
## Version 0.8 (2019-08-25)
-See <https://github.com/moewew/biblatex-ext/compare/v0.7a...v0.8>
+See <https://github.com/moewew/biblatex-ext/compare/v0.7a..v0.8>
### Added
- `\AtIntrocite` to customise initialisation code for introcite
@@ -194,7 +202,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.7a...v0.8>
## Version 0.7a (2019-04-04)
-See <https://github.com/moewew/biblatex-ext/compare/v0.7...v0.7a>
+See <https://github.com/moewew/biblatex-ext/compare/v0.7..v0.7a>
### Fixed
- Bug in the `env` option to `\printbibtabular`. The old version would
@@ -209,7 +217,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.7...v0.7a>
## Version 0.7 (2019-02-08)
-See <https://github.com/moewew/biblatex-ext/compare/v0.6b...v0.7>
+See <https://github.com/moewew/biblatex-ext/compare/v0.6b..v0.7>
### Added
- Outer citation delimiters for `\supercite`.
@@ -245,7 +253,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.6b...v0.7>
## Version 0.6b (2019-01-11)
-See <https://github.com/moewew/biblatex-ext/compare/v0.6a...v0.6b>
+See <https://github.com/moewew/biblatex-ext/compare/v0.6a..v0.6b>
### Changed
- `blxextdoiapi.lua` now returns the module as a table.
@@ -256,7 +264,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.6a...v0.6b>
## Version 0.6a (2019-01-04)
-See <https://github.com/moewew/biblatex-ext/compare/v0.6...v0.6a>
+See <https://github.com/moewew/biblatex-ext/compare/v0.6..v0.6a>
### Changed
- Only patch bibmacros in `biblatex-ext-oa`. This avoids redefinitions,
@@ -268,7 +276,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.6...v0.6a>
## Version 0.6 (2018-11-23)
-See <https://github.com/moewew/biblatex-ext/compare/v0.5a...v0.6>
+See <https://github.com/moewew/biblatex-ext/compare/v0.5a..v0.6>
### Added
- `\titleaddonpunct`
@@ -294,7 +302,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.5a...v0.6>
## Version 0.5a (2018-10-09)
-See <https://github.com/moewew/biblatex-ext/compare/v0.5...v0.5a>
+See <https://github.com/moewew/biblatex-ext/compare/v0.5..v0.5a>
### Fixed
- Bug with `\footcites` and `\footcitetexts` in `ext-authoryear.cbx`
@@ -302,7 +310,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.5...v0.5a>
## Version 0.5 (2018-10-02)
-See <https://github.com/moewew/biblatex-ext/compare/v0.4...v0.5>
+See <https://github.com/moewew/biblatex-ext/compare/v0.4..v0.5>
### Added
- New `ecomp` style family. The styles of that family compress lists of
@@ -317,7 +325,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.4...v0.5>
## Version 0.4 (2018-06-10)
-See <https://github.com/moewew/biblatex-ext/compare/v0.3...v0.4>
+See <https://github.com/moewew/biblatex-ext/compare/v0.3..v0.4>
### Changed
- Renamed `\DeclareOuterCiteDelim` and friends to
@@ -345,7 +353,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.3...v0.4>
## Version 0.3 (2018-06-04)
-See <https://github.com/moewew/biblatex-ext/compare/v0.2...v0.3>
+See <https://github.com/moewew/biblatex-ext/compare/v0.2..v0.3>
### Added
- `titlecase:<titletype>` field formats for finer control over the
@@ -367,7 +375,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.2...v0.3>
## Version 0.2 (2018-03-28)
-See <https://github.com/moewew/biblatex-ext/compare/v0.1a...v0.2>
+See <https://github.com/moewew/biblatex-ext/compare/v0.1a..v0.2>
### Added
- `\voltitledelim`
@@ -393,7 +401,7 @@ See <https://github.com/moewew/biblatex-ext/compare/v0.1a...v0.2>
## Version 0.1a (2018-03-20)
-See <https://github.com/moewew/biblatex-ext/compare/v0.1...v0.1a>
+See <https://github.com/moewew/biblatex-ext/compare/v0.1..v0.1a>
### Fixed
- Inner cite delims for `authoryear`/`authortitle` and their `-ibid`
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-ext/README.md
index 0b521793f2..530e953830 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/README.md
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/README.md
@@ -91,7 +91,7 @@ installation instructions.
## Licence
-Copyright 2017-2023 Moritz Wemheuer
+Copyright 2017-2024 Moritz Wemheuer
This work consists of the `.bbx`, `.cbx`, `.def`, `.sty` and `.lua`
files mentioned above.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa-doiapi.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa-doiapi.sty
index 3269b0cc0e..e3537a6023 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa-doiapi.sty
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa-doiapi.sty
@@ -1,5 +1,5 @@
\ProvidesPackage{biblatex-ext-oa-doiapi}
- [2023/03/18 v0.17 Obtain open access information from DOI via
+ [2024/03/24 v0.18 Obtain open access information from DOI via
unpaywall.org and doi.org (MW)]
\RequirePackage{etoolbox}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa.sty
index 88cf6f39ee..4af7da954c 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa.sty
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa.sty
@@ -1,5 +1,5 @@
\ProvidesPackage{biblatex-ext-oa}
- [2023/03/18 v0.17 mark open access in biblatex bibliographies (MW)]
+ [2024/03/24 v0.18 mark open access in biblatex bibliographies (MW)]
\RequirePackage{etoolbox}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-l3draw.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-l3draw.sty
index 88d996ae60..033779b4e0 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-l3draw.sty
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-l3draw.sty
@@ -1,7 +1,7 @@
\RequirePackage{expl3}
\ProvidesExplPackage {biblatex-ext-oasymb-l3draw}
- {2023/03/18} {0.17}
+ {2024/03/24} {0.18}
{open access symbols with l3draw (MW)}
\RequirePackage{xparse}
@@ -23,7 +23,7 @@
% https://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg
% public domain/CC0 by PLoS & Wikipedia users Nina, Beao and JakobVoss
-\color_set:nnn {oasymb_plos_orange} {cmyk} {0, .47, .93, .04}
+\color_set:nnn {oasymb_plos_orange} {HTML} {f68212}
\dim_const:Nn \l__extblx_oasymb_scale_plos_dim {.1pt}
\cs_new_protected:Nn \__extblx_oasymb_plos_path:
@@ -89,9 +89,9 @@
% Center for Digital Systems
% Competence Center for E-Learning and Multimedia
% Freie Universität Berlin
-\color_set:nnn {oasymb_oanet_green} {cmyk} {.45, 0, .49, .62}
-\color_set:nnn {oasymb_oanet_gold} {cmyk} {0, .2, .77, .02}
-\color_set:nnn {oasymb_oanet_intersect} {cmyk} {.06, 0, .6, .43}
+\color_set:nnn {oasymb_oanet_green} {HTML} {356031}
+\color_set:nnn {oasymb_oanet_gold} {HTML} {f9c63a}
+\color_set:nnn {oasymb_oanet_intersect} {HTML} {89923a}
\dim_const:Nn \l__extblx_oasymb_scale_oanet_dim {1.1pt}
\cs_new_protected:Nn \__extblx_oasymb_oanet_path:
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty
index 071f3be201..c0d4d6d224 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty
@@ -1,5 +1,5 @@
\ProvidesPackage{biblatex-ext-oasymb-pict2e}
- [2023/03/18 v0.17 open access symbols with pict2e (MW)]
+ [2024/03/24 v0.18 open access symbols with pict2e (MW)]
\RequirePackage{etoolbox}
\RequirePackage{kvoptions}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-tikz.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-tikz.sty
index 6a0ad571f9..ad2f695d51 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-tikz.sty
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-tikz.sty
@@ -1,5 +1,5 @@
\ProvidesPackage{biblatex-ext-oasymb-tikz}
- [2023/03/18 v0.17 open access symbols with TikZ (MW)]
+ [2024/03/24 v0.18 open access symbols with TikZ (MW)]
\RequirePackage{etoolbox}
\RequirePackage{kvoptions}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty
index b057a9ae79..2adaa60ec5 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty
@@ -1,5 +1,5 @@
\ProvidesPackage{biblatex-ext-tabular}
- [2023/03/18 v0.17 tabular bibliographies for biblatex (MW)]
+ [2024/03/24 v0.18 tabular bibliographies for biblatex (MW)]
% Code based on Audrey's
% (https://tex.stackexchange.com/users/4483/audrey)
@@ -33,8 +33,8 @@
This is a fatal error. I'm aborting now}%
\endinput}
-\def\extblxtab@requiredbiblatexversion{3.19}
-\def\extblxtab@requiredbiblatexdate{2023/03/05}
+\def\extblxtab@requiredbiblatexversion{3.20}
+\def\extblxtab@requiredbiblatexdate{2024/03/21}
\@ifpackagelater{biblatex}{\extblxtab@requiredbiblatexdate}
{}
@@ -100,6 +100,10 @@
\ifundef\blx@refcontext@labelprefix@real
{\let\blx@refcontext@labelprefix@real\blx@refcontext@labelprefix}
{}%
+ \ifundef\blx@refcontext@namehashtemplatename
+ {\def\extblxtab@xml@dlist@refcontext##1##2##3##4##5##6{%
+ \blx@xml@dlist@refcontext{##1}{##2}{##3}{##4}{##5}}}
+ {\def\extblxtab@xml@dlist@refcontext{\blx@xml@dlist@refcontext}}%
% Is there a user-specified option for resetnumbers
% If so, this overrides the default
% "labelprefix implies resetnumbers" behaviour
@@ -132,12 +136,13 @@
@entry}%
\csxappto{blx@dlists}{%
\blx@xml@dlist{\blx@refcontext@context}{entry}{\blx@tempe}{%
- \blx@xml@dlist@refcontext
+ \extblxtab@xml@dlist@refcontext
{\blx@refcontext@sortingtemplatename}
{\blx@refcontext@sortingnamekeytemplatename}
{\blx@refcontext@labelprefix@real}
{\blx@refcontext@uniquenametemplatename}
- {\blx@refcontext@labelalphanametemplatename}}{}}}%
+ {\blx@refcontext@labelalphanametemplatename}
+ {\blx@refcontext@namehashtemplatename}}{}}}%
\ifdefvoid\blx@tempa
{\blx@warn@bibempty\endgroup}
{\extblxtab@bibtabular\blx@tempa}}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdf
index 5bd4760f39..3819dad476 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex
index c823940c09..c6baa8c494 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex
@@ -20,7 +20,7 @@
\usepackage{unicode-math}
\setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
\else
- \usepackage[libertine]{newtxmath}
+ \usepackage[libertinus]{newtxmath}
\usepackage[scaled=0.78]{beramono}
\usepackage{bm}
\fi
@@ -586,7 +586,7 @@
\newcommand*{\ctan}{\mkbibacro{CTAN}}
\newcommand*{\gitbaseurl}{https://github.com/moewew/biblatex-ext}
-\newcommand*{\extblxversion}{0.17}
+\newcommand*{\extblxversion}{0.18}
\newcommand*{\biber}{Biber}
\newcommand*{\gitissuelink}[1]{%
\href{\gitbaseurl/issues/#1}{issue \##1 on github}}
@@ -659,7 +659,7 @@
author = {Moritz Wemheuer},
email = {mwemheu@posteo.de},%
revision = {\extblxversion},
- date = {\DTMDate{2023-03-18}},
+ date = {\DTMDate{2024-03-24}},
}
\hypersetup{%
@@ -824,7 +824,7 @@ under the terms of the \lppl, version 1.3c%
\fnurl{https://www.latex-project.org/lppl/lppl-1-3c.txt}
or (at your option) any later version%
\fnurl{https://www.latex-project.org/lppl.txt}.
-This bundle is maintained by Moritz Wemheuer (\textcopyright 2017--2023).
+This bundle is maintained by Moritz Wemheuer (\textcopyright 2017--2024).
\subsection{Feedback}\label{sec:feedback}
@@ -1415,8 +1415,8 @@ Appends the \prm{code} to an internal hook executed when initializing
The starred variant of the command clears the initialisation hook,
so the defaults can be overwritten.
The default settings execute the internal macro
-\cs{extblx@bibcite@init}, which makes sure that the label produced
-for introcite takes into account the citation settings and suppresses
+\cs{extblx@bibcite@init}, which makes sure that the output
+takes into account the citation settings but suppresses
unwanted citation tracking and hyperlinks.
\end{ltxsyntax}
@@ -1915,8 +1915,12 @@ and \hyperblxstyle[ext-authornumber]{ext-authornumber} family.
It cannot be used with citation styles of the
\hyperblxstyle[ext-verbose]{verbose} family, where
it may produce undesired output or errors.
-The option is available globally and on a per-type and per-entry level, where
-only the values \optval{plain} (and the default \optval{false}) are supported.
+
+The option is available globally and on the per-type and per-entry levels.
+The value \optval{label} needs support by the bibliography environment.
+It is therefore only available globally out of the box.
+A warning will be issued if \optval{label} is used on an unsupported level.
+The values \optval{plain} and \optval{false} are supported on all levels.
\end{warnbox}
This option controls whether or not the citation label is repeated in the
@@ -2089,8 +2093,8 @@ Appends the \prm{code} to an internal hook executed when initializing
The starred variant of the command clears the initialisation hook,
so the defaults can be overwritten.
The default settings execute the internal macro
-\cs{extblx@bibcite@init}, which makes sure that the label produced
-for introcite takes into account the citation settings and suppresses
+\cs{extblx@bibcite@init}, which makes sure that the output
+takes into account the citation settings but suppresses
unwanted citation tracking and hyperlinks.
\end{ltxsyntax}
@@ -3523,6 +3527,9 @@ from Unpaywall\fnurl{https://unpaywall.org/} via the DOI of an entry.
\begin{warnbox}
The package \hypersty{biblatex-ext-oa-doiapi} and thus this option
can only be used with \lualatex.
+With newer versions of the \luatex\ binary ($\geq 1.17.0$) you also need
+to enable the socket library via the command-line option
+\texttt{-\/-socket}.
\end{warnbox}
\end{optionlist}
@@ -3643,6 +3650,9 @@ available levels.
\begin{warnbox}
This option requires that the \hyperopt{doiapi} package option be
set to \optval{true} and only works with \lualatex.
+ With newer versions of the \luatex\ binary ($\geq 1.17.0$) you also need
+ to enable the socket library via the command-line option
+ \texttt{-\/-socket}.
Furthermore it needs a DOI in the \bibfield{doi} field.
If the \bibfield{doi} field is empty, this option falls back to \optval{auto}.
\end{warnbox}
@@ -3839,8 +3849,11 @@ best open access link to a given article via its DOI by querying the
Unpaywall API\fnurl{https://unpaywall.org/}.
\begin{warnbox}
-This package can only be used with \lualatex{} and needs online
-access.
+This package can only be used with \lualatex{}.
+With newer versions of the \luatex\ binary ($\geq 1.17.0$) you also need
+to enable the socket library via the command-line option
+\texttt{-\/-socket}.
+The features of this package need online access to the Unpaywall API\@.
Furthermore the Unpaywall API requires an email address and asks to limit
requests to 100,000 calls per day\fnurl{https://unpaywall.org/products/api}.
\end{warnbox}
@@ -4051,10 +4064,10 @@ stand-alone package, instead it is loaded via
This package requires and loads the full force of \LaTeX3.
Aside from the main package \sty{expl3}\fnurl{https://ctan.org/pkg/expl3} it
-loads \sty{xparse}\fnurl{https://ctan.org/pkg/xparse},
+loads \sty{xparse}\fnurl{https://ctan.org/pkg/xparse}
and \sty{l3keys2e}\fnurl{https://ctan.org/pkg/l3keys2e}.
Drawing is performed with the (still experimental)
-\sty{l3draw}\fnurl{https://ctan.org/pkg/l3experimental} packages.
+\sty{l3draw}\fnurl{https://ctan.org/pkg/l3experimental} package.
The code works best with version 2021-02-18 or above
of~\sty{l3draw}.
@@ -4078,11 +4091,21 @@ See also \filename{CHANGES.md}.
The numbers on the right indicate the relevant section of the manual.
\begin{changelog}
+\begin{release}{0.18}{2024-03-24}
+ \item Changed colour model in \hypersty{biblatex-ext-oasymb-l3draw}
+ from CMYK to HTML.\see{sec:oa:symbol-l3draw}
+ \item Document that \hyperopt{doiapi} (\hypersty{biblatex-ext-oa-doiapi})
+ needs \luatex's \texttt{-\/-socket} option
+ with \luatex\ v.~1.17.0 and above.
+ \see{sec:oa:doiapi}
+ \item Synced \cmd{printbibtabular} implementation with
+ \sty{biblatex}~3.20 changes.
+\end{release}
\begin{release}{0.17}{2023-03-18}
\item Synced \cmd{textcite} implementation in some styles
- with \sty{biblatex} 3.19 changes.
+ with \sty{biblatex}~3.19 changes.
\item Synced \hypercmd{printbibtabular} implementation
- with \sty{biblatex} 3.19.\see{sec:tabularbib}
+ with \sty{biblatex}~3.19.\see{sec:tabularbib}
\end{release}
\begin{release}{0.16}{2022-06-18}
\item Reworked \hyperopt{citexref} implementation\see{sec:opt}
@@ -4121,10 +4144,10 @@ The numbers on the right indicate the relevant section of the manual.
\item Synced with \sty{l3draw} changes.
\end{release}
\begin{release}{0.10}{2021-01-01}
- \item Synced with \sty{biblatex} 3.16 changes.
+ \item Synced with \sty{biblatex}~3.16 changes.
\end{release}
\begin{release}{0.9}{2020-08-21}
- \item Synced with \sty{biblatex} 3.15 changes.
+ \item Synced with \sty{biblatex}~3.15 changes.
\end{release}
\begin{release}{0.8g}{2020-08-09}
\item Synced \hypersty{biblatex-ext-oasymb-l3draw} with 2020-08-07
@@ -4158,7 +4181,7 @@ The numbers on the right indicate the relevant section of the manual.
\end{release}
\begin{release}{0.8}{2019-08-25}
\item Added \hypercmd{AtIntrocite} \see{sec:opt:style}
- \item Require \sty{biblatex} v3.13 (2010/08/17)\see{sec:req}
+ \item Require \sty{biblatex}~v3.13 (2010/08/17)\see{sec:req}
\end{release}
\begin{release}{0.7a}{2019-04-04}
\item Fixed bug in the \opt{env} option of \hypercmd{printbibtabular}%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua b/macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua
index 3d6931be6d..d48364f17b 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua
@@ -2,8 +2,8 @@ blxextdoiapi = blxextdoiapi or {}
local blxextdoiapi_module = {
name = "blxextdoiapi",
- version = "v0.17",
- date = "2023/03/18",
+ version = "v0.18",
+ date = "2024/03/24",
description = "Obtain open access information from DOI via unpaywall.org",
author = "Moritz Wemheuer",
license = "LPPL v1.3c",
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.bbx
index 873e623a6a..5ee9fa8136 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-alphabetic-verb.bbx}
- [2023/03/18 v0.17 extended biblatex alphabetic-verb
+ [2024/03/24 v0.18 extended biblatex alphabetic-verb
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.cbx
index ca73cae727..972fd3cb3b 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-alphabetic-verb.cbx}
- [2023/03/18 v0.17 extended biblatex alphabetic-verb citation style
+ [2024/03/24 v0.18 extended biblatex alphabetic-verb citation style
(MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.bbx
index 0897a71103..348a5c088c 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-alphabetic.bbx}
- [2023/03/18 v0.17 extended biblatex alphabetic bibliography style (MW)]
+ [2024/03/24 v0.18 extended biblatex alphabetic bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
\RequireBibliographyStyle{alphabetic}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.cbx
index 3b9b17893b..c68e0eddcb 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-alphabetic.cbx}
- [2023/03/18 v0.17 extended biblatex alphabetic citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex alphabetic citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.bbx
index 0b139c0959..c1ee1dd5fa 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-comp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear bibliography style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear bibliography style (MW)]
\RequireBibliographyStyle{ext-authornumber}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.cbx
index 0785921a02..04519c56dd 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-comp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-comp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.bbx
index 0b139c0959..c1ee1dd5fa 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-comp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear bibliography style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear bibliography style (MW)]
\RequireBibliographyStyle{ext-authornumber}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.cbx
index 5c3030fe7b..efb70dc1e4 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-ecomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-ecomp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.bbx
index 604a9bdb57..d0192ec88e 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-tcomp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear bibliography style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear bibliography style (MW)]
\RequireBibliographyStyle{ext-authornumber-terse}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.cbx
index 59c79bf053..0c429790bc 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tcomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-tcomp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear citation style (MW)]
\RequireCitationStyle{ext-authornumber-comp}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.bbx
index 5c10ac9a88..4bb25c4132 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-tecomp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear bibliography style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear bibliography style (MW)]
\RequireBibliographyStyle{ext-authornumber-terse}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.cbx
index a9004aed2b..f82d803256 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-tecomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-tecomp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear citation style (MW)]
\RequireCitationStyle{ext-authornumber-ecomp}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.bbx
index c07caead30..7a47832166 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-terse.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear bibliography style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear bibliography style (MW)]
\RequireBibliographyStyle{ext-authornumber}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.cbx
index c1e679c4e3..4af940ed12 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber-terse.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber-terse.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear citation style (MW)]
\RequireCitationStyle{ext-authornumber}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.bbx
index f2f6fbbfea..dbd1f83851 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear bibliography style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
\RequireBibliographyStyle{ext-authortitle}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.cbx
index 1c4bc08b63..f88a61bd37 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authornumber.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authornumber.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx
index fb845abc14..b891195d05 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-common.bbx}
- [2023/03/18 v0.17 common files for extended biblatex
+ [2024/03/24 v0.18 common files for extended biblatex
authortitle bibliography styles (MW)]
\RequireBibliographyStyle{ext-dashed-common}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.bbx
index f1711f3717..facac03f5f 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-comp.bbx}
- [2023/03/18 v0.17 extended biblatex authortitle-comp
+ [2024/03/24 v0.18 extended biblatex authortitle-comp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.cbx
index 4ef136717a..5546e79de4 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-comp.cbx}
- [2023/03/18 v0.17 extended biblatex authortitle-comp
+ [2024/03/24 v0.18 extended biblatex authortitle-comp
citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.bbx
index 316a55ac3a..5217822288 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-ibid.bbx}
- [2023/03/18 v0.17 extended biblatex authortitle-ibid
+ [2024/03/24 v0.18 extended biblatex authortitle-ibid
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.cbx
index b42d58a93d..6cd2a96469 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-ibid.cbx}
- [2023/03/18 v0.17 extended biblatex authortitle-ibid
+ [2024/03/24 v0.18 extended biblatex authortitle-ibid
citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.bbx
index 1e313f9447..657a584184 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-icomp.bbx}
- [2023/03/18 v0.17 extended biblatex authortitle-icomp
+ [2024/03/24 v0.18 extended biblatex authortitle-icomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.cbx
index 21ee41c1dd..edcc4eb146 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-icomp.cbx}
- [2023/03/18 v0.17 extended biblatex authortitle-icomp
+ [2024/03/24 v0.18 extended biblatex authortitle-icomp
citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.bbx
index 52cf0c1e41..0b9e9066eb 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-tcomp.bbx}
- [2023/03/18 v0.17 extended biblatex authortitle-tcomp
+ [2024/03/24 v0.18 extended biblatex authortitle-tcomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.cbx
index f1fc8ef129..3a4da72c98 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-tcomp.cbx}
- [2023/03/18 v0.17 extended biblatex authortitle-tcomp
+ [2024/03/24 v0.18 extended biblatex authortitle-tcomp
citation style (MW)]
\RequireCitationStyle{ext-authortitle-comp}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.bbx
index ca8c6d6d30..fe8126db4b 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-terse.bbx}
- [2023/03/18 v0.17 extended biblatex authortitle-terse
+ [2024/03/24 v0.18 extended biblatex authortitle-terse
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx
index d5526a9925..1254c5f9a0 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-terse.cbx}
- [2023/03/18 v0.17 extended biblatex authortitle-terse
+ [2024/03/24 v0.18 extended biblatex authortitle-terse
citation style (MW)]
\RequireCitationStyle{ext-authortitle}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.bbx
index f18bf65b11..277668d649 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-ticomp.bbx}
- [2023/03/18 v0.17 extended biblatex authortitle-ticomp
+ [2024/03/24 v0.18 extended biblatex authortitle-ticomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.cbx
index ca87fa14b6..3837f04aad 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle-ticomp.cbx}
- [2023/03/18 v0.17 extended biblatex authortitle-ticomp citation style
+ [2024/03/24 v0.18 extended biblatex authortitle-ticomp citation style
(MW)]
\RequireCitationStyle{ext-authortitle-icomp}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.bbx
index 1b6eb2f6bf..73eaac37c2 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle.bbx}
- [2023/03/18 v0.17 extended biblatex authortitle
+ [2024/03/24 v0.18 extended biblatex authortitle
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx
index 1567ccf834..6487ea5759 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authortitle.cbx}
- [2023/03/18 v0.17 extended biblatex authortitle citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex authortitle citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx
index 85eb1f2e52..67d536d1e2 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-common.bbx}
- [2023/03/18 v0.17 common files for extended biblatex
+ [2024/03/24 v0.18 common files for extended biblatex
authoryear bibliography styles (MW)]
\RequireBibliographyStyle{ext-dashed-common}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.bbx
index 5f905d3187..e5dc5274ee 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-comp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear-comp
+ [2024/03/24 v0.18 extended biblatex authoryear-comp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.cbx
index 066ea16659..c7dc935f04 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-comp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear-comp
+ [2024/03/24 v0.18 extended biblatex authoryear-comp
citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.bbx
index 905e4b7980..fa109385e4 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-ecomp.bbx}
- [2023/03/18 v0.17 biblatex authoryear-ecomp
+ [2024/03/24 v0.18 biblatex authoryear-ecomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx
index e41781703b..2b9d707de1 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-ecomp.cbx}
- [2023/03/18 v0.17 biblatex authoryear-ecomp
+ [2024/03/24 v0.18 biblatex authoryear-ecomp
citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.bbx
index cad88b1a47..35ea98b3c8 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-ibid.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear-ibid
+ [2024/03/24 v0.18 extended biblatex authoryear-ibid
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx
index c46cea912c..96c5a6fc44 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-ibid.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear-ibid
+ [2024/03/24 v0.18 extended biblatex authoryear-ibid
citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.bbx
index 15e25f0f15..53589c03ea 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-icomp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear-icomp
+ [2024/03/24 v0.18 extended biblatex authoryear-icomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx
index f4c29738ad..64d0c010cc 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-icomp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear-icomp
+ [2024/03/24 v0.18 extended biblatex authoryear-icomp
citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.bbx
index a3b50241a3..6989cea41e 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-iecomp.bbx}
- [2023/03/18 v0.17 biblatex authoryear-iecomp
+ [2024/03/24 v0.18 biblatex authoryear-iecomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx
index 8d77b08a8d..fe3db8131e 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-iecomp.cbx}
- [2023/03/18 v0.17 biblatex authoryear-iecomp
+ [2024/03/24 v0.18 biblatex authoryear-iecomp
citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.bbx
index 4a138ea8c1..ac8a3fb169 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-tcomp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear-tcomp
+ [2024/03/24 v0.18 extended biblatex authoryear-tcomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx
index f263767188..eb24bd1aaa 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-tcomp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear-tcomp
+ [2024/03/24 v0.18 extended biblatex authoryear-tcomp
citation style (MW)]
\RequireCitationStyle{ext-authoryear-comp}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.bbx
index 7af3c159d4..53593c6cbc 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-tecomp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear-tecomp
+ [2024/03/24 v0.18 extended biblatex authoryear-tecomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.cbx
index 11b95fb345..7363cbc2e3 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-tecomp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear-tecomp
+ [2024/03/24 v0.18 extended biblatex authoryear-tecomp
citation style (MW)]
\RequireCitationStyle{ext-authoryear-ecomp}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.bbx
index cd416934e4..ba3a45fc33 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-terse.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear-terse
+ [2024/03/24 v0.18 extended biblatex authoryear-terse
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx
index 9e20e67b7b..bc4bdffaff 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-terse.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear-terse
+ [2024/03/24 v0.18 extended biblatex authoryear-terse
citation style (MW)]
\RequireCitationStyle{ext-authoryear}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.bbx
index 21f919201c..16c1ca12a2 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-ticomp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear-ticomp
+ [2024/03/24 v0.18 extended biblatex authoryear-ticomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx
index b3c6e83b23..21126521cd 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-ticomp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear-ticomp citation style
+ [2024/03/24 v0.18 extended biblatex authoryear-ticomp citation style
(MW)]
\RequireCitationStyle{ext-authoryear-icomp}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.bbx
index a7eeecf3e1..c6f070e805 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-tiecomp.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear-tiecomp
+ [2024/03/24 v0.18 extended biblatex authoryear-tiecomp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.cbx
index 03cac6f42e..2955bd7d2b 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear-tiecomp.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear-tiecomp citation style
+ [2024/03/24 v0.18 extended biblatex authoryear-tiecomp citation style
(MW)]
\RequireCitationStyle{ext-authoryear-iecomp}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.bbx
index 03ef7fbc19..3b8092e219 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear.bbx}
- [2023/03/18 v0.17 extended biblatex authoryear bibliography style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
\RequireBibliographyStyle{authoryear}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx
index 88076192e3..3c8564ce27 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-authoryear.cbx}
- [2023/03/18 v0.17 extended biblatex authoryear citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex authoryear citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def
index 8029f25833..83a96f273d 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def
@@ -1,9 +1,9 @@
\ProvidesFile{ext-biblatex-aux.def}
- [2023/03/18 v0.17 auxiliaries for extended biblatex citation style
+ [2024/03/24 v0.18 auxiliaries for extended biblatex citation style
(MW)]
-\def\extblx@requiredbiblatexversion{3.19}
-\def\extblx@requiredbiblatexdate{2023/03/05}
+\def\extblx@requiredbiblatexversion{3.20}
+\def\extblx@requiredbiblatexdate{2024/03/21}
\protected\def\extblx@info{\PackageInfo{biblatex-ext}}
\protected\def\extblx@warning{\PackageWarning{biblatex-ext}}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-dashed-common.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-dashed-common.bbx
index c6366ff59c..a7b71b7916 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-dashed-common.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-dashed-common.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-dashed-common.bbx}
- [2023/03/18 v0.17 common files for extended biblatex
+ [2024/03/24 v0.18 common files for extended biblatex
dashed bibliography styles (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.bbx
index 10ccdd770f..9c077b6fda 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-numeric-comp.bbx}
- [2023/03/18 v0.17 extended biblatex numeric-comp
+ [2024/03/24 v0.18 extended biblatex numeric-comp
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx
index 07d3b86abc..54fe092554 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-numeric-comp.cbx}
- [2023/03/18 v0.17 extended biblatex numeric-comp citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex numeric-comp citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.bbx
index 5d61ef9865..69ff34349c 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-numeric-verb.bbx}
- [2023/03/18 v0.17 extended biblatex numeric-verb
+ [2024/03/24 v0.18 extended biblatex numeric-verb
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.cbx
index 42cfbb20ae..263bdd1629 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-numeric-verb.cbx}
- [2023/03/18 v0.17 extended biblatex numeric-verb citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex numeric-verb citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.bbx
index 0cf786cf75..6a84f8cf07 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-numeric.bbx}
- [2023/03/18 v0.17 extended biblatex numeric bibliography style (MW)]
+ [2024/03/24 v0.18 extended biblatex numeric bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
\RequireBibliographyStyle{numeric}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.cbx
index fb9783e35f..5d168d7bc7 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-numeric.cbx}
- [2023/03/18 v0.17 extended biblatex numeric citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex numeric citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-standard.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-standard.bbx
index dc624ca2bf..c6b069da29 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-standard.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-standard.bbx
@@ -1,9 +1,9 @@
-% biblatex-ext v0.17 (2023-03-18)
+% biblatex-ext v0.18 (2024-03-24)
% Maintainer: Moritz Wemheuer
% Licence: LaTeX Project Public License v1.3c or later
%
\ProvidesFile{ext-standard.bbx}
- [2023/03/18 v0.17 extended biblatex standard style (MW)]
+ [2024/03/24 v0.18 extended biblatex standard style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
@@ -55,10 +55,10 @@
{\extblx@warning@noline{%
Value 'introcite=label' not officially supported\MessageBreak
on per-#1 level.\MessageBreak
- It requires setup changes for a complete\MessageBreak
- bibliography environment, which can only happen\MessageBreak
- globally or per bibliography.\MessageBreak
- Using 'introcite=label' anyway, the result might\MessageBreak
+ It requires setup changes for the entire\MessageBreak
+ bibliography environment. Out of the box this\MessageBreak
+ can only happen globally.\MessageBreak
+ Using 'introcite=label' anyway. The result might\MessageBreak
be off. You have been warned}%
\global\cslet{extblx@warn@introcitelabel@#1}\@empty}
{}}}
@@ -1321,7 +1321,7 @@
\endinput
-% Copyright 2017-2023 Moritz Wemheuer
+% Copyright 2017-2024 Moritz Wemheuer
%
% This work consists of the `.bbx`, `.cbx`, `.def`, `.sty` and `.lua`
% files
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-common.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-common.cbx
index a70ef6f5ae..059b2d1674 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-common.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-common.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-common.cbx}
- [2023/03/18 v0.17 extended biblatex verbose citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex verbose citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.bbx
index 887c04b978..a6b32f1237 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-ibid.bbx}
- [2023/03/18 v0.17 extended biblatex verbose-ibid
+ [2024/03/24 v0.18 extended biblatex verbose-ibid
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx
index a1f3e76b5e..9ab79f30df 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-ibid.cbx}
- [2023/03/18 v0.17 extended biblatex verbose-ibid citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex verbose-ibid citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.bbx
index 6951edd3cf..b9aa761275 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-inote.bbx}
- [2023/03/18 v0.17 extended biblatex verbose-inote
+ [2024/03/24 v0.18 extended biblatex verbose-inote
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.cbx
index d7fd8e290f..8737311750 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-inote.cbx}
- [2023/03/18 v0.17 extended biblatex verbose-inote citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex verbose-inote citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note-common.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note-common.cbx
index 6b7c114946..26bda30c51 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note-common.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note-common.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-note-common.cbx}
- [2023/03/18 v0.17 extended biblatex verbose citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex verbose citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.bbx
index 7ff143346a..9ee3e7ccc7 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-note.bbx}
- [2023/03/18 v0.17 extended biblatex verbose-note
+ [2024/03/24 v0.18 extended biblatex verbose-note
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.cbx
index ffb9b13cb5..153c81ba67 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-note.cbx}
- [2023/03/18 v0.17 extended biblatex verbose-note citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex verbose-note citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.bbx
index 7e4d7499c4..c6a4ee3c41 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-trad1.bbx}
- [2023/03/18 v0.17 extended biblatex verbose-trad1
+ [2024/03/24 v0.18 extended biblatex verbose-trad1
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.cbx
index 44cda15c61..1e3264d296 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-trad1.cbx}
- [2023/03/18 v0.17 extended biblatex verbose-trad1 citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex verbose-trad1 citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.bbx
index 94812c065a..3ea62e9874 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-trad2.bbx}
- [2023/03/18 v0.17 extended biblatex verbose-trad2
+ [2024/03/24 v0.18 extended biblatex verbose-trad2
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.cbx
index 80c36dc6d8..228ad7cc4d 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-trad2.cbx}
- [2023/03/18 v0.17 extended biblatex verbose-trad2 citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex verbose-trad2 citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.bbx
index 406d496895..b526c9058d 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-trad3.bbx}
- [2023/03/18 v0.17 extended biblatex verbose-trad3
+ [2024/03/24 v0.18 extended biblatex verbose-trad3
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.cbx
index a2245405ab..eb6a0e83e6 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose-trad3.cbx}
- [2023/03/18 v0.17 extended biblatex verbose-trad3 citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex verbose-trad3 citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.bbx
index 3317b39d6c..2795bd19a8 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.bbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose.bbx}
- [2023/03/18 v0.17 extended biblatex verbose
+ [2024/03/24 v0.18 extended biblatex verbose
bibliography style (MW)]
\RequireBibliographyStyle{ext-standard}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx
index 395a1259d3..d767fb1262 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx
@@ -1,5 +1,5 @@
\ProvidesFile{ext-verbose.cbx}
- [2023/03/18 v0.17 extended biblatex verbose citation style (MW)]
+ [2024/03/24 v0.18 extended biblatex verbose citation style (MW)]
\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
{}{}{}{}
diff --git a/macros/latex/contrib/multifootnote/README.md b/macros/latex/contrib/multifootnote/README.md
index bab1f56b21..17baa376af 100644
--- a/macros/latex/contrib/multifootnote/README.md
+++ b/macros/latex/contrib/multifootnote/README.md
@@ -1,11 +1,16 @@
-<!-- Copyright (C) 2022 by Jinwen XU -->
+<!-- Copyright (C) 2022-2024 by Jinwen XU -->
# `multifootnote` - Multiple numbers for the same footnote
-The package `multifootnote` provides several commands for generating footnotes with multiple numbers (or marks, if you prefer).
+The package `multifootnote` provides several commands for generating footnotes which correspond to multiple footnote numbers (or marks, if you prefer).
+
+In some cases, you may wish for certain footnotes to correspond to several places in your text. The traditional solution usually involves writing the same footnote mark multiple times at the corresponding places. However, this approach makes it difficult to see at once how many times a footnote has been referred to. Therefore, the current package proposes another method: writing the footnote marks in linear order, and allowing a footnote text to match several of these marks.
*For more information, please refer to its documentation.*
+> Package dependencies: [*`hyperref`*](https://ctan.org/pkg/hyperref), [`refcount`](https://ctan.org/pkg/refcount).
+
+
# License
This work is released under the LaTeX Project Public License, v1.3c or later.
diff --git a/macros/latex/contrib/multifootnote/multifootnote-doc.pdf b/macros/latex/contrib/multifootnote/multifootnote-doc.pdf
index 0a6410382f..aff5c90299 100644
--- a/macros/latex/contrib/multifootnote/multifootnote-doc.pdf
+++ b/macros/latex/contrib/multifootnote/multifootnote-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/multifootnote/multifootnote-doc.tex b/macros/latex/contrib/multifootnote/multifootnote-doc.tex
index c1c6516a95..c2366db9c3 100644
--- a/macros/latex/contrib/multifootnote/multifootnote-doc.tex
+++ b/macros/latex/contrib/multifootnote/multifootnote-doc.tex
@@ -2,7 +2,9 @@
\usepackage{ProjLib}
-\usepackage[left indent]{multifootnote}
+\setmonofont[Scale=.9]{Iosevka}
+
+\usepackage[left indent, backref]{multifootnote}
%%================================
%% For typesetting code
@@ -25,9 +27,9 @@
breaklines = true,
frame = lines,
backgroundcolor = \color{code-background},
- flexiblecolumns = true,
+ basewidth = .5em,
escapeinside = {(*}{*)},
- alsoletter = {_,:},
+ alsoletter = {_:},
% numbers = left,
% firstnumber = last,
numberstyle = \scriptsize\ttfamily,
@@ -40,13 +42,20 @@
texcsstyle =* \color{code-main},
moretexcs =
{
- multifootnotetext,
multifootnotemark,
+ multifootnotetext,
multifootnotetag,
multifootnotetagtext,
multifootnote,
footnotenumber,
footnotetag,
+ multifootnotemarkmanual,
+ multifootnotetextmanual,
+ multifootnotetagmanual,
+ multifootnotetagtextmanual,
+ multifootnotemanual,
+ footnotenumbermanual,
+ footnotetagmanual,
}
}
\lstset{% LaTeX3 commands
@@ -59,8 +68,8 @@
\lstnewenvironment{code}{\setstretch{1.05}\LocallyStopLineNumbers}{\ResumeLineNumbers\vspace{-.3\baselineskip}\vspace{-.5\parskip}}
\lstnewenvironment{code*}{\setstretch{1.05}\lstset{numbers=left}\LocallyStopLineNumbers}{\ResumeLineNumbers\vspace{-.3\baselineskip}\vspace{-.5\parskip}}
-\newcommand{\packageoption}[1]{\texttt{\textcolor{code-option}{#1}}}
-\newcommand{\commandoption}[1]{\texttt{\textcolor{code-keys}{#1}}}
+\newcommand{\packageoption}[1]{\textcolor{code-option}{\texttt{#1}}}
+\newcommand{\commandoption}[1]{\textcolor{code-keys}{\texttt{#1}}}
%%================================
%% tip
@@ -94,7 +103,7 @@
\begin{document}
-\def\PackageVersion{2022/05/31}
+\def\PackageVersion{2024/03/24}
\title{\multifootnotepackage{}\\\smallskip\itshape Multiple numbers for the same footnote}
\author{Jinwen XU}
@@ -105,11 +114,15 @@
\begin{abstract}
\raggedleft
- The package \multifootnotepackage{} provides two groups of commands for \\generating footnotes with multiple numbers (or marks, if you prefer).
+ The package \multifootnotepackage{} provides two groups of commands for generating\\footnotes which correspond to multiple numbers (or marks, if you prefer).
\end{abstract}
-\vspace*{-.5\baselineskip}
+\addtocounter{section}{-1}
+\section{Introduction}
+
+In some cases, you may wish for certain footnotes to correspond to several places in your text. The traditional solution usually involves writing the same footnote mark multiple times at the corresponding places. However, this approach makes it difficult to see at once how many times a footnote has been referred to. Therefore, the current package proposes another method: writing the footnote marks in linear order, and allowing a footnote text to match several of these marks.
+
\section{How to load it}
@@ -122,6 +135,10 @@ You can simply load the current package with:
\medskip
It has the following options:
\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em]
+ \item \packageoption{backref}
+ \begin{itemize}
+ \item Enable backward referencing from the footnotes.
+ \end{itemize}
\item \packageoption{left align}
\begin{itemize}
\item Align the footnotes to the left.
@@ -132,8 +149,14 @@ It has the following options:
\item Similar to \packageoption{left align}, but with an indentation \meta{length}, default to be \texttt{1.5em}.
\item Alternative names: \packageoption{left-indent} \,$|$\, \packageoption{leftindent}
\end{itemize}
+ \item \packageoption{manual}
+ \begin{itemize}
+ \item Use the manual version of the commands. This means that you shall need to manually specify the place where the footnote text should print (by placing the \lstinline|\multifootnote| commands in the appropriate places). You should only use this option when the automatic result does not fit your need.
+ \item Alternative names: \packageoption{manual-mode} \,$|$\, \packageoption{manual mode} \,$|$\, \packageoption{manualmode}
+ \end{itemize}
\end{itemize}
+\clearpage
\section{How to use it}
Here are two approaches for producing a footnote with multiple numbers, and in either of them, there are two commands involved.
@@ -180,13 +203,18 @@ This approach is considered more convenient, with one command to specify the \me
\lstinline|\multifootnote| appears in both approaches for producing footnote text: it shall be interpreted as \lstinline|\multifootnotetext| if the optional argument is a comma-separated list, and as \lstinline|\multifootnotetagtext| if not. See the examples below.
\end{tip}
-\bigskip
+\begin{tip}[Attention]
+ Notice that in the first approach, \meta{label} appears as an optional argument of \lstinline|\footnotenumber[|\meta{label}\lstinline|]| (thus square brackets); while in the second approach, \meta{tag} is a mandatory argument of \lstinline|\footnotetag{|\meta{tag}\lstinline|}| (thus curly brackets).
+\end{tip}
+
+\vfill
\begin{center}
\itshape
If you're feeling confused, don't worry. Let's now take a look at some examples.
\end{center}
+\vfill
-
+\clearpage
\section{Examples}
Here are two examples of usage, with the package option \textquote{\packageoption{left indent}} enabled.
@@ -202,10 +230,13 @@ Lorem ipsum\footnotenumber[(*\commandoption{fn1}*)] dolor\footnotenumber[(*\comm
Result:
-\fbox{Lorem ipsum\footnotenumber[fn1] dolor\footnotenumber[fn2] sit amet\footnotenumber[fn3], consectetur\footnotenumber[fn4] adipiscing elit\footnotenumber[fn5].}
+\vspace{.5\baselineskip}\hrule\vspace{-.25\baselineskip}
+Lorem ipsum\footnotenumber[fn1] dolor\footnotenumber[fn2] sit amet\footnotenumber[fn3], consectetur\footnotenumber[fn4] adipiscing elit\footnotenumber[fn5].
+\vspace{.25\baselineskip}\hrule
\multifootnote[fn1,fn2,fn5]{This is a footnote for demonstration.}
\multifootnote[fn1,fn3,fn4]{This is another footnote for demonstration.}
+\medskip
\subsection{The second approach}
\medskip
@@ -217,20 +248,48 @@ Lorem ipsum\footnotetag{(*\commandoption{fntag1,fntag2}*)} dolor\footnotetag{(*\
Result:
-\fbox{Lorem ipsum\footnotetag{fntag1,fntag2} dolor\footnotetag{fntag1} sit amet\footnotetag{fntag2}, consectetur\footnotetag{fntag2} adipiscing elit\footnotetag{fntag1}.}
+\vspace{.5\baselineskip}\hrule\vspace{-.25\baselineskip}
+Lorem ipsum\footnotetag{fntag1,fntag2} dolor\footnotetag{fntag1} sit amet\footnotetag{fntag2}, consectetur\footnotetag{fntag2} adipiscing elit\footnotetag{fntag1}.
+\vspace{.25\baselineskip}\hrule
\multifootnote[fntag1]{This is a footnote for demonstration.}
\multifootnote[fntag2]{This is another footnote for demonstration.}
+\bigskip
\begin{tip}
The second approach is more recommended, as it involves fewer labels, and you shall not need to worry about the order of footnote marks in \lstinline|\multifootnote|.
\end{tip}
+\begin{tip}
+ By default, it doesn't quite matter where you put \lstinline|\multifootnote|. However, if you have enabled the package option \packageoption{manual mode}, then the corresponding footnote text shall be added to the current page immediately at where you write \lstinline|\multifootnote|.
+\end{tip}
+
+\bigskip
\begin{tip}[Attention]
- Notice that in the first approach, \meta{label} appears as an optional argument of \lstinline|\footnotenumber[|\meta{label}\lstinline|]| (thus square brackets); while in the second approach, \meta{tag} is a mandatory argument of \lstinline|\footnotetag{|\meta{tag}\lstinline|}| (thus curly brackets).
+ You should choose an approach you like and stick to it in your document. It is not recommended to use them both within the same document!
\end{tip}
-\bigskip
+\clearpage
+\section{Regarding the manual version}\label{sec:manual-mode}
+
+Though the manual mode is not very convenient to be used by default (via the package option \packageoption{manual}), it is still useful to be able to switch to this mode in some cases. For example, the automatic mode would not work within a box, as with the usual footnotes; also, the automatic mode would not work quite properly when the footnote text is too long to fit into the current page. In such situations, you could switch to the manual mode temporarily, with which you could write the \lstinline|\multifootnote|, and thus typeset the footnote text outside the box.
+
+To do this, you just need to add the suffix \textquote{\lstinline|manual|} to the commands you are using, that is:
+\begin{itemize}
+ \item \lstinline|\multifootnotemarkmanual| and \lstinline|\multifootnotetextmanual|
+\end{itemize}
+for the first approach, and
+\begin{itemize}
+ \item \lstinline|\multifootnotetagmanual| and \lstinline|\multifootnotetagtextmanual|
+\end{itemize}
+for the second approach. Of course, we still have the alternative names to them:
+\begin{itemize}
+ \item \lstinline|\footnotenumbermanual| for \lstinline|\multifootnotemarkmanual|,
+ \item \lstinline|\footnotetagmanual| for \lstinline|\multifootnotetagmanual|, and
+ \item \lstinline|\multifootnotemanual| for \lstinline|\multifootnotetextmanual| or \lstinline|\multifootnotetagtextmanual|.
+\end{itemize}
+
+
\section{Acknowledgement}
This package arises from a question (\href{https://tex.stackexchange.com/q/645330}{\texttt{645330}}) on \texttt{TeX.StackExchange}. The author thanks user \href{https://tex.stackexchange.com/users/270985}{\textsf{@Bolzano}} for bringing up the question of producing such footnotes.
@@ -239,11 +298,14 @@ The author thanks \href{https://tex.stackexchange.com/users/2388}{\textsf{Ulrike
The author also wishes to thank user \href{https://tex.stackexchange.com/users/213149}{\textsf{@antshar}} for proposing the second approach. The code is surprisingly simple but works just as fine as that of the first approach.
+During the creation and improvement of this package, the author benefited from numerous helps and inspirations from \texttt{TeX.StackExchange}, which is greatly appreciated.
+
\section{Known issues}
\begin{itemize}
% \item When package \textsf{hyperref} is loaded, hyperlinks to those footnotes generated by the commands here cannot point to the correct place.
- \item \multifootnotepackage{} is not compatible with the package \textsf{footnotebackref}.
+ \item \multifootnotepackage{} is not compatible with the package \textsf{footnotebackref}. However, this is not a serious problem: with the package option \packageoption{backref}, you should be able to get a similar result for which \textsf{footnotebackref} is supposed to achieve.
+ \item The automatic mode cannot deal with the situation where the footnote text is printed across pages. One should consider using the manual mode in this case, as mentioned in~\S\,\labelcref{sec:manual-mode}. However, it might be preferable to use endnote instead of footnote when there are too many footnotes or when the intended footnote text is too long.
\end{itemize}
\medskip
diff --git a/macros/latex/contrib/multifootnote/multifootnote.sty b/macros/latex/contrib/multifootnote/multifootnote.sty
index 2c8d5e45ae..02bf24b023 100644
--- a/macros/latex/contrib/multifootnote/multifootnote.sty
+++ b/macros/latex/contrib/multifootnote/multifootnote.sty
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2022 by Jinwen XU
+%% Copyright (C) 2022-2024 by Jinwen XU
%% ------------------------------------
%%
%% This file may be distributed and/or modified under the conditions of
@@ -9,11 +9,10 @@
%%
%% http://www.latex-project.org/lppl.txt
%%
-\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\RequirePackage{l3keys2e}
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{multifootnote}
- {2022/05/31} {}
+ {2024/03/24} {}
{Multiple numbers for the same footnote}
\msg_new:nnn { multifootnote }
@@ -37,6 +36,9 @@
\keys_define:nn { multifootnote }
{
+ , backref .bool_set:N = \l__multifootnote_backref_bool
+ , backref .initial:n = { false }
+
, left-align .bool_set:N = \l__multifootnote_left_align_bool
, left-align .initial:n = { false }
, left~align .bool_set:N = \l__multifootnote_left_align_bool
@@ -56,9 +58,23 @@
\dim_set:Nn \l__multifootnote_left_indent_dim { #1 }
}
, left indent .default:n = { 1.5em }
+
+ , manual .bool_set:N = \l__multifootnote_manual_mode_bool
+ , manual .initial:n = { false }
+ , manual-mode .bool_set:N = \l__multifootnote_manual_mode_bool
+ , manual~mode .bool_set:N = \l__multifootnote_manual_mode_bool
+ , manual mode .bool_set:N = \l__multifootnote_manual_mode_bool
+
, unknown .code:n = {}
}
-\ProcessKeysOptions { multifootnote }
+\ProcessKeyOptions [ multifootnote ]
+
+\bool_if:NT \l__multifootnote_backref_bool
+ {
+ \RequirePackage { hyperref }
+ }
+
+\RequirePackage { refcount }
\cs_new_protected:Nn \multifootnote_make_footnote_left_align:n
{
@@ -83,8 +99,26 @@
\multifootnote_make_footnote_left_align:n { \l__multifootnote_left_indent_dim }
}
+\cs_generate_variant:Nn \iow_now:Nn { ce }
+\cs_generate_variant:Nn \clist_put_right:Nn { ce }
+
+\tl_new:N \l__multifootnote_tmp_tl
+\seq_new:N \l__multifootnote_tmp_seq
+\clist_new:N \l__multifootnote_tmp_clist
+
+% get the total page number
+\hook_gput_code:nnn { enddocument } { multifootnote }
+ {
+ \label{multifootnote_last-page}
+ }
+\int_new:N \g_multifootnote_total_page_int
+\hook_gput_code:nnn { begindocument } { multifootnote }
+ {
+ \int_gset:Nn \g_multifootnote_total_page_int { \getpagerefnumber{multifootnote_last-page} }
+ }
+
% First approach
-\NewDocumentCommand \multifootnotemark { O{} }
+\NewDocumentCommand \multifootnotemarkmanual { O{} }
{
\footnotemark
\group_begin:
@@ -92,69 +126,265 @@
{
\addtocounter { footnote } { -1 }
\refstepcounter { footnote }
+ \label { multifootnote-mark-#1 }
\@ifpackageloaded { hyperref }
{
\cs_gset_eq:NN \@currentHref \Hy@footnote@currentHref
} {}
- \label { #1 }
+ \label { multifootnote-#1 }
}
\group_end:
}
-\NewCommandCopy \footnotenumber \multifootnotemark
+\NewCommandCopy \footnotenumbermanual \multifootnotemarkmanual
-\NewDocumentCommand \multifootnotetext { O{} m }
+\NewDocumentCommand \multifootnotetextmanual { O{} m }
{
\group_begin:
- \clist_clear:N \l_tmpa_clist
- \clist_clear:N \l_tmpb_clist
- \tl_if_blank:nF { #1 }
+ \tl_if_blank:nTF { #1 }
{
+ \footnotetext { #2 }
+ }
+ {
+ \clist_clear:N \l_tmpa_clist
+ \clist_clear:N \l_tmpb_clist
\clist_map_inline:nn { #1 }
{
\@ifpackageloaded { hyperref }
{
- \clist_put_right:Nn \l_tmpa_clist
- { \ref*{ ##1 } }
+ \bool_if:NTF \l__multifootnote_backref_bool
+ {
+ \clist_put_right:Nn \l_tmpa_clist
+ { \hyperref[multifootnote-mark-##1]{ \ref*{ multifootnote-##1 } } }
+ }
+ {
+ \clist_put_right:Nn \l_tmpa_clist
+ { \ref*{ multifootnote-##1 } }
+ }
\clist_put_right:Nn \l_tmpb_clist
- { \Hy@raisedlink { \hypertarget { \getrefbykeydefault{##1}{anchor}{Doc-Start} } {} } }
+ { \Hy@raisedlink { \hypertarget { \getrefbykeydefault{multifootnote-##1}{anchor}{Doc-Start} } {} } }
}
{
\clist_put_right:Nn \l_tmpa_clist
- { \ref { ##1 } }
+ { \ref { multifootnote-##1 } }
}
}
\def \thefootnote { \clist_use:Nn \l_tmpa_clist { , \skip_horizontal:n { \l_multifootnote_space_after_comma_dim } } }
+ \@ifpackageloaded { hyperref }
+ {
+ \xdef \Hy@footnote@currentHref { x\Hy@footnote@currentHref }
+ } {}
+ \footnotetext { \clist_use:Nn \l_tmpb_clist {} \ignorespaces #2 }
}
- \@ifpackageloaded { hyperref }
- {
- \xdef \Hy@footnote@currentHref { x\Hy@footnote@currentHref }
- } {}
- \footnotetext { \clist_use:Nn \l_tmpb_clist {} \ignorespaces #2 }
\group_end:
}
-% Second approach
-\NewDocumentCommand \multifootnotetag { m }
+\seq_new:N \g__multifootnote_mark_internal_seq
+\cs_new:Nn \__multifootnote_process_per_page_mark:nnnN
+ % #1 = labels
+ % #2 = footnote text
+ % #3 = actual page number
+ % #4 = a macro to store the result
{
+ \tl_gclear:N #4
+ \clist_clear:N \l_tmpa_clist
+ \clist_map_inline:nn { #1 }
+ {
+ % only keep those labels that appear on the current page
+ \str_if_eq:eeT { #3 } { \getpagerefnumber{multifootnote-mark-##1} }
+ {
+ \clist_put_right:Nn \l_tmpa_clist { ##1 }
+ }
+ }
+ \clist_if_empty:NF \l_tmpa_clist
+ {
+ \tl_gput_right:No #4 { \exp_after:wN { \l_tmpa_clist } }
+ \tl_gput_right:Nn #4 { { #2 } }
+ }
+ }
+\hook_gput_code:nnn { begindocument } { multifootnote/mark }
+ {
+ \int_step_inline:nn { \int_eval:n { \g_multifootnote_total_page_int } }
+ {
+ % generate the per page mark-footnotetext sequences
+ % \tl_show:n { g__multifootnote_mark_internal_page_ #1 _seq }
+ \seq_new:c { g__multifootnote_mark_internal_page_ #1 _seq }
+ \seq_new:c { g__multifootnote_mark_internal_page_ #1 _recorded_seq }
+ % keep only those labels appeared on the current page
+ \seq_clear:N \l__multifootnote_tmp_seq
+ \seq_map_inline:cn { g__multifootnote_mark_internal_seq }
+ {
+ % \tl_show:n { TEST:~##1 }
+ \__multifootnote_process_per_page_mark:nnnN ##1 { #1 } \l__multifootnote_tmp_tl
+ \tl_if_empty:NF \l__multifootnote_tmp_tl
+ {
+ \seq_put_right:No \l__multifootnote_tmp_seq { \l__multifootnote_tmp_tl }
+ }
+ }
+ \seq_gset_eq:cN { g__multifootnote_mark_internal_page_ #1 _seq } \l__multifootnote_tmp_seq
+ % \seq_show:c { g__multifootnote_mark_internal_page_ #1 _seq }
+ }
+ }
+
+\NewDocumentCommand \multifootnotemark { O{} }
+ {
+ % print the footnote mark
\footnotemark
\group_begin:
- \def \thefootnote {}
- \footnotetext { \vspace { -\baselineskip } }
+ \tl_if_blank:nF { #1 }
+ {
+ \addtocounter { footnote } { -1 }
+ \refstepcounter { footnote }
+ \label { multifootnote-mark-#1 }
+ \@ifpackageloaded { hyperref }
+ {
+ \cs_gset_eq:NN \@currentHref \Hy@footnote@currentHref
+ } {}
+ \label { multifootnote-#1 }
+ }
\group_end:
+ % print the corresponding footnote text
+ \tl_if_blank:nF { #1 }
+ {
+ \tl_set:Ne \l__multifootnote_tmp_tl { \getpagerefnumber{multifootnote-mark-#1} }
+ % \tl_show:N \l__multifootnote_tmp_tl
+ % \seq_show:c { g__multifootnote_mark_internal_page_ \l__multifootnote_tmp_tl _seq }
+ \seq_map_inline:cn { g__multifootnote_mark_internal_page_ \l__multifootnote_tmp_tl _seq }
+ {
+ % \tl_show:n { TEST:~ { #1 } ##1 }
+ \seq_if_in:cnF { g__multifootnote_mark_internal_page_ \l__multifootnote_tmp_tl _recorded_seq } { ##1 }
+ {
+ % \tl_show:n { TEST:~ { #1 } ##1 }
+ \__multifootnote_print_footnotetext:nnnnn { #1 } ##1
+ {
+ % record the current item
+ \seq_gput_right:cn { g__multifootnote_mark_internal_page_ \l__multifootnote_tmp_tl _recorded_seq } { ##1 }
+ % \seq_show:c { g__multifootnote_mark_internal_page_ \l__multifootnote_tmp_tl _recorded_seq }
+ } {}
+ {} {} % the two extra empty groups are added for safety
+ }
+ }
+ }
+ }
+\cs_new:Nn \__multifootnote_print_footnotetext:nnnnn
+ % #1 = a given label
+ % #2 = labels
+ % #3 = footnote text
+ % #4 = code when the footnote text is indeed printed
+ % #5 = fallback code when the footnote text does not get printed
+ {
+ % \tl_show:n { TEST:~ { #1 } { #2 } { #3 } }
+ % \clist_if_in:nnTF { #2 } { #1 } { \tl_show:n { TEST:~ {#1}~is~in~{#2}. } } { \tl_show:n { TEST:~ {#1}~is~NOT~in~{#2}. } }
+ \clist_if_in:nnTF { #2 } { #1 }
+ {
+ \clist_clear:N \l_tmpa_clist
+ \clist_clear:N \l_tmpb_clist
+ % \clist_show:n { #2 }
+ \clist_map_inline:nn { #2 }
+ {
+ \@ifpackageloaded { hyperref }
+ {
+ \bool_if:NTF \l__multifootnote_backref_bool
+ {
+ \clist_put_right:Nn \l_tmpa_clist
+ { \hyperref[multifootnote-mark-##1]{ \ref*{ multifootnote-##1 } } }
+ }
+ {
+ \clist_put_right:Nn \l_tmpa_clist
+ { \ref*{ multifootnote-##1 } }
+ }
+ \clist_put_right:Nn \l_tmpb_clist
+ { \Hy@raisedlink { \hypertarget { \getrefbykeydefault{multifootnote-##1}{anchor}{Doc-Start} } {} } }
+ }
+ {
+ \clist_put_right:Nn \l_tmpa_clist
+ { \ref { multifootnote-##1 } }
+ }
+ }
+ % \clist_show:N \l_tmpa_clist
+ \group_begin:
+ \def \thefootnote { \clist_use:Nn \l_tmpa_clist { , \skip_horizontal:n { \l_multifootnote_space_after_comma_dim } } }
+ \@ifpackageloaded { hyperref }
+ {
+ \xdef \Hy@footnote@currentHref { x\Hy@footnote@currentHref }
+ } {}
+ \footnotetext { \clist_use:Nn \l_tmpb_clist {} \ignorespaces #3 }
+ \group_end:
+ #4
+ }
+ {
+ #5
+ }
+ }
+\NewCommandCopy \footnotenumber \multifootnotemark
+
+\NewDocumentCommand \multifootnotetext { O{} m }
+ {
+ \tl_if_blank:nTF { #1 }
+ {
+ \footnotetext { #2 }
+ }
+ {
+ \iow_now:cn { @auxout }
+ {
+ \@multifootnote@add@to@mark@text@list { #1 } { #2 }
+ }
+ }
+ }
+\NewDocumentCommand \@multifootnote@add@to@mark@text@list { m m }
+ {
+ \seq_gput_right:Nn \g__multifootnote_mark_internal_seq { { #1 } { #2 } }
+ }
+
+% Second approach
+\int_new:N \g__multifootnote_tag_footnotemark_counter_int
+
+\NewDocumentCommand \multifootnotetagmanual { m }
+ {
+ \footnotemark
+ \@ifpackageloaded { hyperref }
+ {
+ \int_gdecr:N \g__multifootnote_tag_footnotemark_counter_int
+ \addtocounter { footnote } { -1 }
+ \refstepcounter { footnote }
+ \label { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } }
+ \cs_gset_eq:NN \@currentHref \Hy@footnote@currentHref
+ \label { multifootnote-tag-footnote- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } }
+ \clist_map_inline:nn { #1 }
+ {
+ % generate hypertargets for footnote marks so that they can jump correctly to the corresponding footnotes
+ \clist_if_exist:cF { multifootnote-tag-hypertarget- ##1 }
+ { \clist_new:c { multifootnote-tag-hypertarget- ##1 } }
+ \clist_put_right:ce { multifootnote-tag-hypertarget- ##1 }
+ { \exp_not:N \Hy@raisedlink { \exp_not:N \hypertarget { \exp_not:N \getrefbykeydefault{ multifootnote-tag-footnote- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } }{anchor}{Doc-Start} } {} } }
+ }
+ } {}
\clist_map_inline:nn { #1 }
{
- \cs_if_exist:cTF { multifootnote-tag- ##1 }
+ % generate list of marks in the footnote
+ \bool_if:NTF \l__multifootnote_backref_bool
{
- \tl_gput_right:cx { multifootnote-tag- ##1 } { , \skip_horizontal:n { \l_multifootnote_space_after_comma_dim } \thefootnote }
+ \cs_if_exist:cTF { multifootnote-tag-list- ##1 }
+ {
+ \tl_gput_right:ce { multifootnote-tag-list- ##1 } { , \skip_horizontal:n { \l_multifootnote_space_after_comma_dim } \ref { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } }
+ }
+ {
+ \cs_gset:cpx { multifootnote-tag-list- ##1 } { \ref { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } }
+ }
}
{
- \cs_gset:cpx { multifootnote-tag- ##1 } { \thefootnote }
+ \cs_if_exist:cTF { multifootnote-tag-list- ##1 }
+ {
+ \tl_gput_right:ce { multifootnote-tag-list- ##1 } { , \skip_horizontal:n { \l_multifootnote_space_after_comma_dim } \thefootnote }
+ }
+ {
+ \cs_gset:cpx { multifootnote-tag-list- ##1 } { \thefootnote }
+ }
}
}
}
-\NewCommandCopy \footnotetag \multifootnotetag
+\NewCommandCopy \footnotetagmanual \multifootnotetagmanual
-\NewDocumentCommand \multifootnotetagtext { O{} m }
+\NewDocumentCommand \multifootnotetagtextmanual { O{} m }
{
\group_begin:
\tl_if_blank:nTF { #1 }
@@ -162,13 +392,148 @@
\def \thefootnote { }
}
{
- \def \thefootnote { \use:c { multifootnote-tag- #1 } }
+ \def \thefootnote { \use:c { multifootnote-tag-list- #1 } }
+ }
+ \@ifpackageloaded { hyperref }
+ {
+ \xdef \Hy@footnote@currentHref { x\Hy@footnote@currentHref }
+ \footnotetext { \clist_use:cn { multifootnote-tag-hypertarget- #1 } {} \ignorespaces #2 }
+ }
+ {
+ \footnotetext { #2 }
}
- \footnotetext { #2 }
\group_end:
}
+\prop_new:N \g__multifootnote_tag_internal_prop
+\NewDocumentCommand \multifootnotetag { m }
+ {
+ \footnotemark
+ \int_gdecr:N \g__multifootnote_tag_footnotemark_counter_int
+ \addtocounter { footnote } { -1 }
+ \refstepcounter { footnote }
+ \label { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } }
+ % add the current label number to the clist of the given tag on the current page
+ \clist_map_inline:nn { #1 }
+ {
+ \iow_now:ce { @auxout }
+ {
+ \@multifootnote@add@to@tag@label@list
+ { ##1 }
+ { \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } }
+ { \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } }
+ }
+ }
+ \@ifpackageloaded { hyperref }
+ {
+ \cs_gset_eq:NN \@currentHref \Hy@footnote@currentHref
+ \label { multifootnote-tag-footnote- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } }
+ } {}
+ \clist_map_inline:nn { #1 }
+ {
+ \clist_if_exist:cF { g__multifootnote_tag_page_ \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } _recorded_clist }
+ {
+ \clist_new:c { g__multifootnote_tag_page_ \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } _recorded_clist }
+ }
+ \clist_if_in:cnF { g__multifootnote_tag_page_ \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } _recorded_clist } { ##1 }
+ {
+ \clist_gput_right:cn { g__multifootnote_tag_page_ \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } _recorded_clist } { ##1 }
+ \group_begin:
+ % \clist_show:c { g__multifootnote_tag_ ##1 _page_ \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } _clist }
+ \clist_if_exist:cT { g__multifootnote_tag_ ##1 _page_ \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } _clist }
+ { % skip the following code on the first run
+ \clist_clear:N \l__multifootnote_tmp_clist
+ \clist_map_inline:cn { g__multifootnote_tag_ ##1 _page_ \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } _clist }
+ {
+ % generate list of marks in the footnote
+ \clist_put_right:Nn \l__multifootnote_tmp_clist
+ {
+ % \tl_show:n { ####1 }
+ \bool_if:NTF \l__multifootnote_backref_bool
+ {
+ \ref { multifootnote-tag-mark- ####1 }
+ }
+ {
+ \@ifpackageloaded { hyperref }
+ {
+ \ref*{ multifootnote-tag-mark- ####1 }
+ }
+ {
+ \ref { multifootnote-tag-mark- ####1 }
+ }
+ }
+ }
+ \@ifpackageloaded { hyperref }
+ {
+ % generate hypertargets for footnote marks so that they can jump correctly to the corresponding footnotes
+ \clist_if_exist:cF { multifootnote-tag-hypertarget- ##1 -page- \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } }
+ { \clist_new:c { multifootnote-tag-hypertarget- ##1 -page- \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } } }
+ \clist_put_right:ce { multifootnote-tag-hypertarget- ##1 -page- \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } }
+ { \exp_not:N \Hy@raisedlink { \exp_not:N \hypertarget { \exp_not:N \getrefbykeydefault{ multifootnote-tag-footnote- ####1 }{anchor}{Doc-Start} } {} } }
+ } {}
+ }
+ % \clist_show:N \l__multifootnote_tmp_clist
+ \def \thefootnote { \clist_use:Nn \l__multifootnote_tmp_clist { , \skip_horizontal:n { \l_multifootnote_space_after_comma_dim } } }
+ \@ifpackageloaded { hyperref }
+ {
+ \xdef \Hy@footnote@currentHref { x\Hy@footnote@currentHref }
+ \footnotetext
+ {
+ \clist_use:cn { multifootnote-tag-hypertarget- ##1 -page- \getpagerefnumber { multifootnote-tag-mark- \int_eval:n { \g__multifootnote_tag_footnotemark_counter_int } } } {} \ignorespaces
+ \prop_item:Nn \g__multifootnote_tag_internal_prop { ##1 }
+ }
+ }
+ {
+ \footnotetext { \prop_item:Nn \g__multifootnote_tag_internal_prop { ##1 } }
+ }
+ }
+ \group_end:
+ }
+ }
+ }
+\NewCommandCopy \footnotetag \multifootnotetag
+\NewDocumentCommand \@multifootnote@add@to@tag@label@list { m m m }
+ % #1 = tag
+ % #2 = label number
+ % #3 = page number
+ {
+ \clist_if_exist:cF { g__multifootnote_tag_ #1 _page_ #3 _clist }
+ {
+ \clist_new:c { g__multifootnote_tag_ #1 _page_ #3 _clist }
+ }
+ \clist_gput_right:cn { g__multifootnote_tag_ #1 _page_ #3 _clist } { #2 }
+ % \clist_show:c { g__multifootnote_tag_ #1 _page_ #3 _clist }
+ }
+
+\NewDocumentCommand \multifootnotetagtext { O{} m }
+ {
+ \tl_if_blank:nTF { #1 }
+ {
+ \footnotetext { #2 }
+ }
+ {
+ \iow_now:cn { @auxout }
+ {
+ \@multifootnote@add@to@tag@text@list { #1 } { #2 }
+ }
+ }
+ }
+\NewDocumentCommand \@multifootnote@add@to@tag@text@list { m m }
+ {
+ \prop_gput:Nnn \g__multifootnote_tag_internal_prop { #1 } { #2 }
+ }
+
% The combined interface for producing footnote text
+\NewDocumentCommand \multifootnotemanual { O{} m }
+ {
+ \str_if_in:nnTF { #1 } { , }
+ {
+ \multifootnotetextmanual [ #1 ] { #2 }
+ }
+ {
+ \multifootnotetagtextmanual [ #1 ] { #2 }
+ }
+ }
\NewDocumentCommand \multifootnote { O{} m }
{
\str_if_in:nnTF { #1 } { , }
@@ -180,6 +545,17 @@
}
}
+\bool_if:NT \l__multifootnote_manual_mode_bool
+ {
+ \RenewCommandCopy \multifootnotemark \multifootnotemarkmanual
+ \RenewCommandCopy \multifootnotetext \multifootnotetextmanual
+ \RenewCommandCopy \multifootnotetag \multifootnotetagmanual
+ \RenewCommandCopy \multifootnotetagtext \multifootnotetagtextmanual
+ \RenewCommandCopy \multifootnote \multifootnotemanual
+ \RenewCommandCopy \footnotenumber \footnotenumbermanual
+ \RenewCommandCopy \footnotetag \footnotetagmanual
+ }
+
\endinput
%%
%% End of file `multifootnote.sty'.
diff --git a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
index c6903922cf..2d23d813a7 100644
--- a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
+++ b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/profcollege/latex/PfCCAN.tex b/macros/latex/contrib/profcollege/latex/PfCCAN.tex
index acb5e28388..f77aea497a 100644
--- a/macros/latex/contrib/profcollege/latex/PfCCAN.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCCAN.tex
@@ -308,7 +308,8 @@
\hline%
\endhead%
\xintFor* ##1 in {\xintSeq{1}{\ListeFichierslen}}\do{%
- \ttfamily{\theCNNumQ}\stepcounter{CNNumQ}&\xdef\CNReponse{}\input{\ListeFichiers[##1]}\ifboolKV[ClesCN]{Nom}{\par\hfill\footnotesize\ttfamily\ListeFichiers[##1]}{}&\ifboolKV[ClesCN]{CAN}{\ifboolKV[ClesCN]{Nom}{\multirow{2}{*}{\CNReponse}}{\multirow{1}{*}{\CNReponse}}}{}&\\%
+ \ttfamily{\theCNNumQ}\stepcounter{CNNumQ}&\xdef\CNReponse{}\input{\ListeFichiers[##1]}\ifboolKV[ClesCN]{Nom}{\par\hfill\footnotesize\ttfamily\ListeFichiers[##1]}{}&\CNReponse%\ifboolKV[ClesCN]{CAN}{\ifboolKV[ClesCN]{Nom}{\multirow{2}{*}{\CNReponse}}{\multirow{1}{*}{\CNReponse}}}{}
+ &\\%
\hline%
}%
\end{longtable}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCCalculatrice.tex b/macros/latex/contrib/profcollege/latex/PfCCalculatrice.tex
index dbe0adbd3e..d2a189e29b 100644
--- a/macros/latex/contrib/profcollege/latex/PfCCalculatrice.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCCalculatrice.tex
@@ -5,7 +5,7 @@
\definecolor{lightorange}{rgb}{0.9,0.4,0}%
\definecolor{lightestorange}{rgb}{1,0.8,0.5}%
\definecolor{darkorange}{rgb}{0.2,0.1,0}%
-
+%
\colorlet{blackened}{black!90!white}%
\colorlet{blackish}{black!70!white}%
\colorlet{greyish}{black!60!white}%
@@ -13,100 +13,100 @@
\colorlet{orangeish}{yellow!90!red}%
\colorlet{greenish}{green!16!gray}%
\colorlet{redish}{red!80!black}%
-
+%
\tcbset{calbackground/.style={%
- enhanced,
- leftright skip=0.25cm,beforeafter skip=0pt,
- toptitle=0mm,bottomtitle=0mm,
- right=2mm,left=2mm,
- top=1pt,
- bottom=0.25cm,
- boxsep=0pt,
- boxrule=0mm,
- sharp corners,
- sidebyside,
- sidebyside gap=2mm,
- lefthand ratio=0.6,
- bicolor,
- colback=black!10!white,
- colbacklower=greenish,
- colframe=white,
- autoparskip,
+ enhanced,%
+ leftright skip=0.25cm,beforeafter skip=0pt,%
+ toptitle=0mm,bottomtitle=0mm,%
+ right=2mm,left=2mm,%
+ top=1pt,%
+ bottom=0.25cm,%
+ boxsep=0pt,%
+ boxrule=0mm,%
+ sharp corners,%
+ sidebyside,%
+ sidebyside gap=2mm,%
+ lefthand ratio=0.6,%
+ bicolor,%
+ colback=black!10!white,%
+ colbacklower=greenish,%
+ colframe=white,%
+ autoparskip,%
}}%
-
+%
\newtcbox{\KY}[1][]{%
- enhanced,
- on line,
- arc=2pt,outer arc=2pt,
- boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm,
- boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt,
- interior style={top color=blackish,bottom color=blackened},
- colframe=greyish,
- width=2.5em,
- tcbox width=forced center,
- equal height group=K,
- valign=center,
- fontupper=\footnotesize\sffamily,
- coltext=orangeish,
- before upper=\vrule width 0pt height 2ex depth 1ex\relax,
+ enhanced,%
+ on line,%
+ arc=2pt,outer arc=2pt,%
+ boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm,%
+ boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt,%
+ interior style={top color=blackish,bottom color=blackened},%
+ colframe=greyish,%
+ width=2.5em,%
+ tcbox width=forced center,%
+ equal height group=K,%
+ valign=center,%
+ fontupper=\footnotesize\sffamily,%
+ coltext=orangeish,%
+ before upper=\vrule width 0pt height 2ex depth 1ex\relax,%
}%
-
+%
\newtcbox{\KYm}[1][]{%
- enhanced,
- on line,
- arc=2pt,outer arc=2pt,
- boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm,
- boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt,
- interior style={top color=blackish,bottom color=blackened},
- colframe=greyish,
- width=2.5em,
- tcbox width=forced center,
- equal height group=K,
- valign=center,
- fontupper=\footnotesize\sffamily,
- coltext=orangeish,
- before upper=\vrule width 0pt height 2ex depth 1ex\relax$,
- after upper=$,
+ enhanced,%
+ on line,%
+ arc=2pt,outer arc=2pt,%
+ boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm,%
+ boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt,%
+ interior style={top color=blackish,bottom color=blackened},%
+ colframe=greyish,%
+ width=2.5em,%
+ tcbox width=forced center,%
+ equal height group=K,%
+ valign=center,%
+ fontupper=\footnotesize\sffamily,%
+ coltext=orangeish,%
+ before upper=\vrule width 0pt height 2ex depth 1ex\relax$,%
+ after upper=$,%
}%
-
+%
\newtcbox{\KN}{%
- enhanced,
- on line,
- arc=2pt,outer arc=2pt,
- boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm,
- boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt,
- interior style={top color=blackish,bottom color=blackened},
- colframe=greyish,
- width=1.5em,
- tcbox width=forced center,
- equal height group=K,
- valign=center,
- fontupper=\footnotesize\sffamily,
- coltext=whiteish,
- before upper=\vrule width 0pt height 2ex depth 1ex\relax,
+ enhanced,%
+ on line,%
+ arc=2pt,outer arc=2pt,%
+ boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm,%
+ boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt,%
+ interior style={top color=blackish,bottom color=blackened},%
+ colframe=greyish,%
+ width=1.5em,%
+ tcbox width=forced center,%
+ equal height group=K,%
+ valign=center,%
+ fontupper=\footnotesize\sffamily,%
+ coltext=whiteish,%
+ before upper=\vrule width 0pt height 2ex depth 1ex\relax,%
}%
-
+%
\newtcolorbox{calc}[1][]{%
- enhanced,bicolor,
- boxsep=0pt,
- boxrule=0pt,
- top=6pt,bottom=0pt,left=6pt,right=0pt,
- sharp corners,
- frame empty,
- colback=black!10,
- colbacklower=greenish,
- sidebyside,
- sidebyside align=top seam,
- sidebyside gap=0pt,
- righthand width=50.7mm,
- before lower=\begin{tabular}{@{}l@{}},
- after lower=\end{tabular},
+ enhanced,bicolor,%
+ boxsep=0pt,%
+ boxrule=0pt,%
+ top=6pt,bottom=0pt,left=6pt,right=0pt,%
+ sharp corners,%
+ frame empty,%
+ colback=black!10,%
+ colbacklower=greenish,%
+ sidebyside,%
+ sidebyside align=top seam,%
+ sidebyside gap=0pt,%
+ righthand width=50.7mm,%
+ before lower=\begin{tabular}{@{}l@{}},%
+ after lower=\end{tabular},%
overlay={\node[inner sep=0pt, outer sep=0pt, text height=5pt, text
depth=1pt, text width=50.7mm, fill=greenish, anchor=north
east, font=\sffamily\tiny\bfseries, align=flush right]
- at (frame.north east) {#1};}
-}
-
+ at (frame.north east) {#1};}%
+}%
+%
\def\MPCalculatrice#1#2#3{%
% #1 Calcul %2 r\'eponse
\ifluatex%
@@ -122,20 +122,28 @@
LargeurEcran:=\useKV[ClesCalculatrice]{Largeur};
boolean Calcul;
Calcul=\useKV[ClesCalculatrice]{Calcul};
- print:=\useKV[ClesCalculatrice]{Impression};
+ print:=\useKV[ClesCalculatrice]{Impression};
+ Math:=\useKV[ClesCalculatrice]{Math};
LCD(#1)(#2)(#3);
\end{mplibcode}%
\mplibnumbersystem{scaled}%
\else%
- \begin{mpost}[mpsettings={input PfCCalculatrice;LargeurEcran:=\useKV[ClesCalculatrice]{Largeur};}]
- LCD(#1)(#2)(#3);
- \end{mpost}
+ \begin{mpost}[mpsettings={input PfCCalculatrice;LargeurEcran:=\useKV[ClesCalculatrice]{Largeur};}]%
+ LCD(#1)(#2)(#3);%
+ \end{mpost}%
\fi%
}%
+%
+\setKVdefault[ClesCalculatrice]{ModeleCouleur=5,Ecran=false,NbLignes=0,BL=0.775,Largeur=120,Calcul=false,Impression=false,Math}%
+%
+\NewDocumentCommand\Calculatrice{}{%On désactive le ~ qui pose souci avec babel
+ \begingroup
+ \catcode`\~12
+ \Calculatriceaux
+}%
-\setKVdefault[ClesCalculatrice]{ModeleCouleur=5,Ecran=false,NbLignes=0,BL=0.775,Largeur=120,Calcul=false,Impression=false}%
-
-\newcommand\Calculatrice[2][]{%
+\NewDocumentCommand\Calculatriceaux{om}{%
+ \endgroup
\setstackgap{L}{\useKV[ClesCalculatrice]{BL}\baselineskip}%
\useKVdefault[ClesCalculatrice]%
\setKV[ClesCalculatrice]{#1}%
@@ -147,12 +155,12 @@
\setsepchar[*]{,*/}\reademptyitems%
\readlist\ListeCalc{#2}%
}%
- \ignoreemptyitems
+ \ignoreemptyitems%
\MPCalculatrice{\ListeCalc[1,1]}{\ListeCalc[1,2]}{\useKV[ClesCalculatrice]{NbLignes}}%
}{%
\setsepchar[*]{,*/}\reademptyitems%
\readlist\ListeCalc{#2}%
- \ignoreemptyitems
+ \ignoreemptyitems%
\foreachitem\compteur\in\ListeCalc{\xintifboolexpr{\listlen\ListeCalc[\compteurcnt]==2}{\Longstack{{\tiny\ListeCalc[\compteurcnt,1]} \KN{\ListeCalc[\compteurcnt,2]}}}{\Longstack{{\tiny\ListeCalc[\compteurcnt,2]} \KY{\ListeCalc[\compteurcnt,3]}}}%
}%
}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCCalculsFractionsoldv1.tex b/macros/latex/contrib/profcollege/latex/PfCCalculsFractionsoldv1.tex
deleted file mode 100644
index 0e4dac5a68..0000000000
--- a/macros/latex/contrib/profcollege/latex/PfCCalculsFractionsoldv1.tex
+++ /dev/null
@@ -1,192 +0,0 @@
-\setKVdefault[CalculsFractions]{Couleurs=false,Negatif=false}%
-\defKV[CalculsFractions]{Couleur=\setKV[CalculsFractions]{Couleurs}}%
-
-\NewDocumentCommand\tofrac{m}{%
- \IfDecimal{#1}{#1}{%
- \StrBefore{#1}{/}[\PfCnum]%
- \StrBehind{#1}{/}[\PfCden]%
- \ifnum\PfCden=1\relax%
- \num{\PfCnum}%
- \else%
- \frac{\num{\PfCnum}}{\num{\PfCden}}%
- \fi%
- }%
-}%
-
-\NewDocumentCommand\AddFraction{soommo}{%
- \useKVdefault[CalculsFractions]%
- \setKV[CalculsFractions]{#2}%
- \ifboolKV[CalculsFractions]{Couleurs}{\colorlet{CouleurDenoCom}{\useKV[CalculsFractions]{Couleur}}}{\colorlet{CouleurDenoCom}{black}}%
- \IfBooleanTF{#1}{%
- \xdef\PfCFractionOp{-}%
- }{%
- \xdef\PfCFractionOp{+}%
- }%
- \IfDecimal{#4}{%
- \xdef\PfCNumA{#4}%
- \xdef\PfCNumB{1}%
- }{%
- \StrCut{#4}{/}\PfCNumA\PfCNumB%
- }%
- \IfDecimal{#5}{%
- \xdef\PfCNumC{#5}%
- \xdef\PfCNumD{1}%
- }{%
- \StrCut{#5}{/}\PfCNumC\PfCNumD%
- }
- \xdef\PfCAddFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}%
- \setsepchar[*]{,*/}\ignoreemptyitems%
- \readlist*\ListeFractions{\PfCAddFoo}%
- \reademptyitems%
- \setsepchar{,}%
- % Partie calculs
- \PGCD{\fpeval{abs(\ListeFractions[1,2])}}{\fpeval{abs(\ListeFractions[2,2])}}%
-% pgcd=\the\pgcd%
- \xdef\PfCPremierMul{\fpeval{\ListeFractions[2,2]/\the\pgcd}}%
-% PfCPremierMul=\PfCPremierMul
- \xdef\PfCDeuxiemeMul{\fpeval{\ListeFractions[1,2]/\the\pgcd}}%
- \xdef\PfCAddNumFin{\fpeval{(\ListeFractions[1,1])*(\PfCPremierMul)\PfCFractionOp(\ListeFractions[2,1])*(\PfCDeuxiemeMul)}}%
- \xdef\PfCAddDenoFin{\fpeval{(\ListeFractions[1,2])*(\PfCPremierMul)}}%
- \PGCD{\fpeval{abs(\PfCAddNumFin)}}{\fpeval{abs(\PfCAddDenoFin)}}\xdef\PfCAddPgcd{\the\pgcd}%
- \xdef\PfCAddNumSimp{\fpeval{\PfCAddNumFin/\PfCAddPgcd}}%
- \xdef\PfCAddDenoSimp{\fpeval{\PfCAddDenoFin/\PfCAddPgcd}}%
- \xdef\PfCAddSumSimp{\PfCAddNumSimp/\PfCAddDenoSimp}%
- \IfValueT{#6}{\xdef#6{\PfCAddSumSimp}}%
- % Partie affichage
- \ensuremath{%
- \IfValueTF{#3}{%
- \ifnum#3=4\relax%
- %test
- \ifboolKV[CalculsFractions]{Negatif}{%
- \xintifboolexpr{\fpeval{\PfCAddNumSimp/\PfCAddDenoSimp}<0}{-\tofrac{\fpeval{abs(\PfCAddNumSimp)}/\fpeval{abs(\PfCAddDenoSimp)}}}{\tofrac{\PfCAddSumSimp}}%
- }{\tofrac{\PfCAddSumSimp}}%
- \else%
- \ifnum#3=3\relax%
- \SSimpliTest{\fpeval{abs(\PfCAddNumFin)}}{\fpeval{abs(\PfCAddDenoFin)}}\ifthenelse{\boolean{Simplification}}{\tofrac{\PfCAddNumFin/\PfCAddDenoFin}}{\tofrac{\PfCAddSumSimp}}%
- \else%
- \ifnum#3=1\relax%
- \ifnum\fpeval{abs(\PfCPremierMul)}>1\relax%
- \frac{\ListeFractions[1,1]_{\mathcolor{CouleurDenoCom}{\times\NumMA{\PfCPremierMul}}}}{\ListeFractions[1,2]_{\mathcolor{CouleurDenoCom}{\times\NumMA{\PfCPremierMul}}}}
- \else%
- \tofrac{#4}%
- \fi%
- \PfCFractionOp%
- \ifnum\fpeval{abs(\PfCDeuxiemeMul)}>1\relax%
- \frac{\ListeFractions[2,1]_{\mathcolor{CouleurDenoCom}{\times\NumMA{\PfCDeuxiemeMul}}}}{\ListeFractions[2,2]_{\mathcolor{CouleurDenoCom}{\times\NumMA{\PfCDeuxiemeMul}}}}%
- \else%
- \tofrac{#5}%
- \fi%
- \else%
- \ifnum#3=2\relax%
- \frac{\num{\fpeval{\ListeFractions[1,1]*\PfCPremierMul}}}{\num{\fpeval{\ListeFractions[1,2]*\PfCPremierMul}}}\PfCFractionOp\frac{\num{\fpeval{\ListeFractions[2,1]*\PfCDeuxiemeMul}}}{\num{\fpeval{\ListeFractions[2,2]*\PfCDeuxiemeMul}}}%
- \fi%
- \fi%
- \fi%
- \fi%
- }{\tofrac{#4}\PfCFractionOp\tofrac{#5}
- }%
- }%
-}%
-
-\NewDocumentCommand\SousFraction{oommo}{%
- \AddFraction*[#1][#2]{#3}{#4}[#5]%
-}%
-
-\NewDocumentCommand\MulFraction{oommo}{%
- \useKVdefault[CalculsFractions]%
- \setKV[CalculsFractions]{#1}%
- \IfDecimal{#3}{%
- \xdef\PfCNumA{#3}%
- \xdef\PfCNumB{1}%
- }{%
- \StrCut{#3}{/}{\PfCNumA}{\PfCNumB}%
- }%
- \IfDecimal{#4}{%
- \xdef\PfCNumC{#4}%
- \xdef\PfCNumD{1}%
- }{%
- \StrCut{#4}{/}{\PfCNumC}{\PfCNumD}%
- }%
- \xdef\PfCMulFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}%
- \setsepchar[*]{,*/}\ignoreemptyitems%
- \readlist*\ListeFractions{\PfCMulFoo}%
- \reademptyitems
- \setsepchar{,}%
- % Calculs
- \xdef\PfCMulNumFin{\fpeval{(\ListeFractions[1,1])*(\ListeFractions[2,1])}}
- \xdef\PfCMulDenoFin{\fpeval{\ListeFractions[1,2]*\ListeFractions[2,2]}}
- \PGCD{\fpeval{abs(\PfCMulNumFin)}}{\fpeval{abs(\PfCMulDenoFin)}}\xdef\PfCMulPgcd{\pgcd}%
- \xdef\PfCMulNumSimp{\fpeval{\PfCMulNumFin/\PfCMulPgcd}}%
- \xdef\PfCMulDenoSimp{\fpeval{\PfCMulDenoFin/\PfCMulPgcd}}%
- \xdef\PfCMulPdtSimp{\PfCMulNumSimp/\PfCMulDenoSimp}%
- \IfValueT{#5}{\xdef#5{\PfCMulPdtSimp}}%
- \ensuremath{%
- \IfValueTF{#2}{%
- \ifnum#2=3\relax
- \ifboolKV[CalculsFractions]{Negatif}{%
- \xintifboolexpr{\fpeval{\PfCMulNumSimp/\PfCMulDenoSimp}<0}{-\tofrac{\fpeval{abs(\PfCMulNumSimp)}/\fpeval{abs(\PfCMulDenoSimp)}}}{\tofrac{\PfCMulPdtSimp}}%
- }{\tofrac{\PfCMulPdtSimp}}%
- \else
- \ifnum#2=2\relax%
- \SSimpliTest{\PfCMulNumFin}{\PfCMulDenoFin}\ifthenelse{\boolean{Simplification}}{\frac{\ifnum\PfCMulNumFin<0\relax-\fi\Decomposition[Longue]{\fpeval{abs(\PfCMulNumFin)}}}{\ifnum\PfCMulDenoFin<0\relax-\fi\Decomposition[Longue]{\fpeval{abs(\PfCMulDenoFin)}}}}{\tofrac{\PfCMulPdtSimp}}%
- \else%
- \ifnum#2=1\relax%
- \frac{\ListeFractions[1,1]\times\ifnum\ListeFractions[2,1]<0\relax(\fi\ListeFractions[2,1]\ifnum\ListeFractions[2,1]<0\relax)\fi}{\ListeFractions[1,2]\times\ifnum\ListeFractions[2,2]<0\relax(\fi\ListeFractions[2,2]\ifnum\ListeFractions[2,2]<0\relax)\fi}
- \fi
- \fi
- \fi
- }{\tofrac{#3}\times\tofrac{#4}
- }
- }%
-}%
-
-\NewDocumentCommand\DivFraction{oommo}{%
- \useKVdefault[CalculsFractions]%
- \setKV[CalculsFractions]{#1}%
- \IfDecimal{#3}{%
- \xdef\PfCNumA{#3}%
- \xdef\PfCNumB{1}%
- }{%
- \StrCut{#3}{/}{\PfCNumA}{\PfCNumB}%
- }%
- \IfDecimal{#4}{%
- \xdef\PfCNumC{#4}%
- \xdef\PfCNumD{1}%
- }{%
- \StrCut{#4}{/}{\PfCNumC}{\PfCNumD}%
- }%
- \xdef\PfCDivFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}%
- \setsepchar[*]{,*/}\ignoreemptyitems%
- \readlist*\ListeFractions{\PfCDivFoo}%
- \reademptyitems%
- \setsepchar{,}%
- % Calculs
- \xdef\PfCDivNumFin{\fpeval{(\ListeFractions[1,1])*(\ListeFractions[2,2])}}%
- \xdef\PfCDivDenoFin{\fpeval{\ListeFractions[1,2]*\ListeFractions[2,1]}}%
- \PGCD{\fpeval{abs(\PfCDivNumFin)}}{\fpeval{abs(\PfCDivDenoFin)}}\xdef\PfCDivPgcd{\pgcd}%
- \xdef\PfCDivNumSimp{\fpeval{\PfCDivNumFin/\PfCDivPgcd}}%
- \xdef\PfCDivDenoSimp{\fpeval{\PfCDivDenoFin/\PfCDivPgcd}}%
- \xdef\PfCDivPdtSimp{\PfCDivNumSimp/\PfCDivDenoSimp}%
- \IfValueT{#5}{\xdef#5{\PfCDivPdtSimp}}%
- \ensuremath{%
- \IfValueTF{#2}{%
- \ifnum#2=4\relax
- \ifboolKV[CalculsFractions]{Negatif}{%
- \xintifboolexpr{\fpeval{\PfCDivNumSimp/\PfCDivDenoSimp}<0}{-\tofrac{\fpeval{abs(\PfCDivNumSimp)}/\fpeval{abs(\PfCDivDenoSimp)}}}{\tofrac{\PfCDivPdtSimp}}%
- }{\tofrac{\PfCDivPdtSimp}}%
- \else\ifnum#2=3\relax
- \MulFraction[][\fpeval{#2-1}]{\ListeFractions[1,1]/\ListeFractions[1,2]}{\ListeFractions[2,2]/\ListeFractions[2,1]}%
- \else
- \ifnum#2=2\relax%
- \MulFraction[][\fpeval{#2-1}]{\ListeFractions[1,1]/\ListeFractions[1,2]}{\ListeFractions[2,2]/\ListeFractions[2,1]}%
- \else%
- \ifnum#2=1\relax%
- \tofrac{\ListeFractions[1,1]/\ListeFractions[1,2]}\times\tofrac{\ListeFractions[2,2]/\ListeFractions[2,1]}
- \fi
- \fi
- \fi
- \fi
- }{\tofrac{#3}\div\tofrac{#4}
- }
- }%
-}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCCartesJeux.tex b/macros/latex/contrib/profcollege/latex/PfCCartesJeux.tex
index b11a0c5289..bf9b9e0cde 100644
--- a/macros/latex/contrib/profcollege/latex/PfCCartesJeux.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCCartesJeux.tex
@@ -336,6 +336,10 @@
\end{tikzpicture}%
}{}%
+% Pour construire la liste des cartes lors d'un ajout automatiques
+\newtoks\TokListeAjout{}
+\def\UpdatetoksCartes#1/#2\nil{\addtotok\TokListeAjout{§#1/#2}}%
+
\NewDocumentCommand\CartesPerso{o +m}{%
% 0/ La largeur est \useKV[Cards]{Largeur} - La hauteur est \useKV[Cards]{Hauteur}.\par
\useKVdefault[Cards]%
@@ -383,11 +387,33 @@
% Dimensions intérieures des cartes
\setlength{\hauteurcarte}{\fpeval{\hauteurcards-\margecards}pt}%
\setlength{\largeurcarte}{\fpeval{\largeurcards-\margecards}pt}%
- % nombre de cartes sur la largeur
+ % nombre de cartes sur la largeur et sur la hauteur
\xdef\PfCNbCartesLarg{\fpeval{floor(\paperwidth/\largeurcards)}}%
\xdef\PfCNbCartesHaut{\fpeval{floor(\paperheight/\hauteurcards)}}%
\xdef\PfCNbCartesPerso{\fpeval{\PfCNbCartesLarg*\PfCNbCartesHaut}}%
- % Jointes
+ % On vérifie si le nombres de déclarations de cartes est compatible avec le nombre total de cartes calculé automatiquement. Mais pas dans le mode Trivial et surtout pas dans le cas où la trame n'est pas utilisée !
+ \ifboolKV[Cards]{Trame}{%
+ \ifboolKV[Cards]{Trivial}{}{%
+ \xintifboolexpr{\PfCNbCartesPerso==\ListeCardslen}{%
+ % Je ne dois pas ajouter de cartes
+ }{%
+ % Je passe ici et j'ajoute des cartes\\
+ % Je dois en ajouter \fpeval{\PfCNbCartesPerso-\ListeCardslen}%
+ \ifnum\fpeval{\PfCNbCartesPerso-\ListeCardslen}>0
+ \foreachitem\compteur\in\ListeCards{\expandafter\UpdatetoksCartes\compteur\nil}%
+ \def\PfCFooAjout{Non connue/Non connue}
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\PfCNbCartesPerso-\ListeCardslen}}}\do{%
+ \expandafter\UpdatetoksCartes\PfCFooAjout\nil
+ }%
+ \xdef\PfCFooAjoutBis{\the\TokListeAjout}%
+ \setsepchar[*]{§*/}%
+ \readlist*\ListeCards{\PfCFooAjoutBis}%
+ \setsepchar{,}%
+ \fi
+ }%
+ }}{}%
+ % fin Ajout automatique
+ % Jointes
\ifboolKV[Cards]{Jointes}{\setlength{\largeurcards}{\largeurcarte}}{}%
\ifboolKV[Cards]{Jointes}{\setlength{\hauteurcards}{\hauteurcarte}}{}%
% décalage entre les cartes ou pas
@@ -424,10 +450,11 @@
\clearpage%
\thispagestyle{empty}%
\begin{Trame}
- \multido{\i=1+1}{\PfCNbCartesPerso}{%
- \node[] at (Carte\i) {%
+ %\multido{\i=1+1}{\PfCNbCartesPerso}{%
+\xintFor* ##1 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{
+ \node[] at (Carte##1) {%
\begin{MyboxSimpleAv}{\useKV[Cards]{Theme}}%
- \ListeCards[\i,1]%
+ \ListeCards[##1,1]%
\end{MyboxSimpleAv}%
};%
}%
@@ -469,10 +496,11 @@
\clearpage%
\thispagestyle{empty}%
\begin{Trame}
- \multido{\i=1+1}{\PfCNbCartesPerso}{%
- \node[] at (Carte\i) {%
- \begin{Mybox}{\ListeCards[\i,1]}{\useKV[Cards]{Theme}}{\ListeCards[\i,2]}%
- \ListeCards[\i,3]%
+% \multido{\i=1+1}{\PfCNbCartesPerso}{%
+\xintFor* ##1 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{
+ \node[] at (Carte##1) {%
+ \begin{Mybox}{\ListeCards[##1,1]}{\useKV[Cards]{Theme}}{\ListeCards[##1,2]}%
+ \ListeCards[##1,3]%
\end{Mybox}%
};%
}%
@@ -513,9 +541,10 @@
\clearpage%
\thispagestyle{empty}%
\begin{Trame}
- \multido{\i=1+1}{\PfCNbCartesPerso}{%
- \node[] at (Carte\i) {%
- \begin{MyboxJQ}{\ListeCards[\i,1]}{\ListeCards[\i,2]}%
+% \multido{\i=1+1}{\PfCNbCartesPerso}{%
+\xintFor* ##1 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{
+ \node[] at (Carte##1) {%
+ \begin{MyboxJQ}{\ListeCards[##1,1]}{\ListeCards[##1,2]}%
%%
\end{MyboxJQ}%
};%
@@ -562,13 +591,14 @@
\clearpage%
\thispagestyle{empty}%
\begin{Trame}
- \multido{\i=1+1}{\PfCNbCartesPerso}{%
- \node[] at (Carte\i) {%
+% \multido{\i=1+1}{\PfCNbCartesPerso}{%
+\xintFor* ##2 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{
+ \node[] at (Carte##2) {%
\begin{MyboxTrivial}%
\begin{center}
\begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[9,m]}[hvlines]%
\xintFor* ##1 in{\xintSeq{1}{6}}\do{%
- \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[\i,\fpeval{1+2*(##1-1)}]\\
+ \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[##2,\fpeval{1+2*(##1-1)}]\\
}%
\end{NiceTabular}%
\end{center}%
@@ -634,13 +664,14 @@
\clearpage%
\thispagestyle{empty}%
\begin{Trame}
- \multido{\i=1+1}{\PfCNbCartesPerso}{%
- \node[] at (Carte\i) {%
+% \multido{\i=1+1}{\PfCNbCartesPerso}{%
+\xintFor* ##2 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{
+ \node[] at (Carte##2) {%
\begin{MyboxTrivial}%
\begin{center}
\begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[9,m]}[hvlines]%
\xintFor* ##1 in{\xintSeq{1}{6}}\do{%
- \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[\i,\fpeval{1+2*(##1-1)}]\\
+ \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[##2,\fpeval{1+2*(##1-1)}]\\
}%
\end{NiceTabular}%
\end{center}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCCartesMentales.tex b/macros/latex/contrib/profcollege/latex/PfCCartesMentales.tex
index eb7b7b0285..ea9b30af03 100644
--- a/macros/latex/contrib/profcollege/latex/PfCCartesMentales.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCCartesMentales.tex
@@ -6,7 +6,7 @@
\newlength{\RoundedBoxWidth}%
-\NewEnviron{Bulle}[1][]{%
+\NewDocumentEnvironment{Bulle}{o+b}{%
\setKV[ClesMentales]{#1}%
\setlength{\RoundedBoxWidth}{\useKV[ClesMentales]{Largeur}}%
\xdef\Pointilles{\ifboolKV[ClesMentales]{Pointilles}{dashed}{}}%
@@ -14,12 +14,13 @@
\xdef\CouleurFond{\useKV[ClesMentales]{CFond}}%
\xdef\EpaisseurLigne{\useKV[ClesMentales]{Epaisseur}}%
\xdef\RayonCoin{\useKV[ClesMentales]{Rayon}}%
- \node(\useKV[ClesMentales]{Nom}) [align=justify,draw=\CouleurTrace,line width=\EpaisseurLigne,\Pointilles,fill=\CouleurFond,rounded corners=\RayonCoin,text width=\RoundedBoxWidth] at (\useKV[ClesMentales]{Ancre}) {\begin{minipage}{\RoundedBoxWidth}\BODY\end{minipage}};%
- \multido{\i=1+1}{9}{%
- \xdef\x{\fpeval{\i/10}}
- \coordinate (\useKV[ClesMentales]{Nom}-H-\i) at ($(\useKV[ClesMentales]{Nom}.north west)!\x!(\useKV[ClesMentales]{Nom}.north east)$);
- \coordinate (\useKV[ClesMentales]{Nom}-D-\i) at ($(\useKV[ClesMentales]{Nom}.north east)!\x!(\useKV[ClesMentales]{Nom}.south east)$);
- \coordinate (\useKV[ClesMentales]{Nom}-B-\i) at ($(\useKV[ClesMentales]{Nom}.south east)!\x!(\useKV[ClesMentales]{Nom}.south west)$);
- \coordinate (\useKV[ClesMentales]{Nom}-G-\i) at ($(\useKV[ClesMentales]{Nom}.south west)!\x!(\useKV[ClesMentales]{Nom}.north west)$);
+ \node(\useKV[ClesMentales]{Nom}) [align=justify,draw=\CouleurTrace,line width=\EpaisseurLigne,\Pointilles,fill=\CouleurFond,rounded corners=\RayonCoin,text width=\RoundedBoxWidth] at (\useKV[ClesMentales]{Ancre}) {\begin{minipage}{\RoundedBoxWidth}#2\end{minipage}};%
+ % \multido{\i=1+1}{9}{%
+ \xintFor* ##1 in{\xintSeq{1}{9}}\do{%
+ \xdef\x{\fpeval{##1/10}}
+ \coordinate (\useKV[ClesMentales]{Nom}-H-##1) at ($(\useKV[ClesMentales]{Nom}.north west)!\x!(\useKV[ClesMentales]{Nom}.north east)$);
+ \coordinate (\useKV[ClesMentales]{Nom}-D-##1) at ($(\useKV[ClesMentales]{Nom}.north east)!\x!(\useKV[ClesMentales]{Nom}.south east)$);
+ \coordinate (\useKV[ClesMentales]{Nom}-B-##1) at ($(\useKV[ClesMentales]{Nom}.south east)!\x!(\useKV[ClesMentales]{Nom}.south west)$);
+ \coordinate (\useKV[ClesMentales]{Nom}-G-##1) at ($(\useKV[ClesMentales]{Nom}.south west)!\x!(\useKV[ClesMentales]{Nom}.north west)$);
}%
-}% \ No newline at end of file
+}{}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCCartographie.tex b/macros/latex/contrib/profcollege/latex/PfCCartographie.tex
index 53ffa097d8..cf9aeaf66f 100644
--- a/macros/latex/contrib/profcollege/latex/PfCCartographie.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCCartographie.tex
@@ -1,10 +1,11 @@
%%%
% Cartographie
%%%
-\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2023/texmf-dist/metapost/profcollege/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2,Codes=false,Epaisseur=2,ModeleCouleur}
+\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,VillesSupI=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2023/texmf-dist/metapost/profcollege/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2,Codes=false,Epaisseur=2,ModeleCouleur,Boussole=false,Allegee=1}
\defKV[Cartographie]{EchelleCarte=\setKV[Cartographie]{Carte}}
\defKV[Cartographie]{Pays=\setKV[Cartographie]{PaysSeul}}
\defKV[Cartographie]{Villes=\setKV[Cartographie]{VillesSup}}
+\defKV[Cartographie]{VillesI=\setKV[Cartographie]{VillesSupI}}
\defKV[Cartographie]{Traces=\setKV[Cartographie]{Codes}}
\newcommand\Cartographie[3][]{%
@@ -13,13 +14,18 @@
\setKV[Cartographie]{#1}%
\mplibforcehmode%
\ifboolKV[Cartographie]{Projection}{%
+ \mplibnumbersystem{double}%
\begin{mplibcode}
input PfCMonde;
string arborescence;
arborescence:=\useKV[Cartographie]{Arborescence};
- boolean Impression,VillesSup;
+ boolean Impression,VillesSup,VillesSupI,Boussole;
VillesSup=\useKV[Cartographie]{VillesSup};
+ VillesSupI=\useKV[Cartographie]{VillesSupI};
Impression=\useKV[Cartographie]{Impression};
+ Boussole=\useKV[Cartographie]{Boussole};
+
+ Allegee:=\useKV[Cartographie]{Allegee};
maillage:=true;
fleuves:=false;
@@ -44,6 +50,14 @@
clip currentpicture to (mercatorc(-85,-180)--mercatorc(-85,180)--mercatorc(85,180)--mercatorc(85,-180)--cycle);
draw mercatorc(0,-180)--mercatorc(0,180);
draw mercatorc(-85,0)--mercatorc(85,0);
+ %
+ if Boussole:
+ label.top(TEX("\scriptsize Nord"),mercatorc(85,0));
+ label.bot(TEX("\scriptsize Sud"),mercatorc(-85,0));
+ label.urt(TEX("\scriptsize Est"),mercatorc(0,180));
+ label.ulft(TEX("\scriptsize Ouest"),mercatorc(0,-180));
+ fi;
+ %
label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),mercatorc(0,0));
for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(-k*10,0));
@@ -57,6 +71,14 @@
clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle);
draw cylindriquec(0,-180)--cylindriquec(0,180);
draw cylindriquec(-85,0)--cylindriquec(85,0);
+ %
+ if Boussole:
+ label.top(TEX("\scriptsize Nord"),cylindriquec(85,0));
+ label.bot(TEX("\scriptsize Sud"),cylindriquec(-85,0));
+ label.urt(TEX("\scriptsize Est"),cylindriquec(0,180));
+ label.ulft(TEX("\scriptsize Ouest"),cylindriquec(0,-180));
+ fi;
+ %
label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0));
for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0));
@@ -70,6 +92,14 @@
clip currentpicture to (winkelc(-85,-180)--winkelc(-85,180) for k=-80 step 5 until 85:--winkelc(k,180) endfor --winkelc(85,-180) for k=80 step -5 until -85:--winkelc(k,-180) endfor --cycle);
draw winkelc(0,-180)--winkelc(0,180);
draw winkelc(-85,0)--winkelc(85,0);
+ %
+ if Boussole:
+ label.top(TEX("\scriptsize Nord"),winkelc(85,0));
+ label.bot(TEX("\scriptsize Sud"),winkelc(-85,0));
+ label.urt(TEX("\scriptsize Est"),winkelc(0,180));
+ label.ulft(TEX("\scriptsize Ouest"),winkelc(0,-180));
+ fi;
+ %
label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),winkelc(0,0));
for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(-k*10,0));
@@ -79,23 +109,31 @@
label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(0,-k*10));
label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(0,k*10));
endfor;
- elseif projection="cylindrique":
- clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle);
- draw cylindriquec(0,-180)--cylindriquec(0,180);
- draw cylindriquec(-85,0)--cylindriquec(85,0);
- label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0));
- for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
- label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0));
- label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(k*10,0));
- endfor;
- for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
- label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,-k*10));
- label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,k*10));
- endfor;
+% elseif projection="cylindrique":
+% clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle);
+% draw cylindriquec(0,-180)--cylindriquec(0,180);
+% draw cylindriquec(-85,0)--cylindriquec(85,0);
+% label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0));
+% for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+% label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0));
+% label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(k*10,0));
+% endfor;
+% for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+% label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,-k*10));
+% label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,k*10));
+% endfor;
elseif projection="simple":
clip currentpicture to (simplec(-85,-180)--simplec(-85,180)--simplec(85,180)--simplec(85,-180)--cycle);
draw simplec(0,-180)--simplec(0,180);
draw simplec(-85,0)--simplec(85,0);
+ %
+ if Boussole:
+ label.top(TEX("\scriptsize Nord"),simplec(85,0));
+ label.bot(TEX("\scriptsize Sud"),simplec(-85,0));
+ label.urt(TEX("\scriptsize Est"),simplec(0,180));
+ label.ulft(TEX("\scriptsize Ouest"),simplec(0,-180));
+ fi;
+ %
label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),simplec(0,0));
for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(-k*10,0));
@@ -106,6 +144,50 @@
label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(0,k*10));
endfor;
fi;
+
+ vardef Villes(text t)=
+ pair CoordVille;
+ string NomVille;
+ n:=0;
+ for p_:=t:
+ n:=n+1;
+ if n=1:
+ %nblec:=p;
+ else:
+ if pair p_:
+ if projection="mercator":
+ CoordVille:=mercatorc(ypart(p_),xpart(p_));
+ elseif projection="winkel":
+ CoordVille:=winkelc(ypart(p_),xpart(p_));
+ elseif projection="cylindrique":
+ CoordVille:=cylindriquec(ypart(p_),xpart(p_));
+ elseif projection="simple":
+ CoordVille:=simplec(ypart(p_),xpart(p_));
+ fi;
+ elseif string p_:
+ NomVille:=p_;
+ else:
+ marque_p:="croix";
+ pointe(CoordVille);
+ label.position(p_)(TEX(""&NomVille&""),CoordVille);
+ fi;
+ fi;
+ endfor;
+ drawoptions();
+ enddef;
+
+ def position(expr t)=
+ if t=1:rt
+ elseif t=2:urt
+ elseif t=3:top
+ elseif t=4:ulft
+ elseif t=5:lft
+ elseif t=6:llft
+ elseif t=7:bot
+ elseif t=8:lrt
+ fi
+ enddef;
+
if VillesSup:
nomfichiermul:=\useKV[Cartographie]{Villes};
nblec:=scantokens readfrom nomfichiermul;
@@ -130,7 +212,12 @@
drawoptions();
closefrom nomfichiermul;
fi;
+
+ if VillesSupI:
+ Villes(\useKV[Cartographie]{VillesI});
+ fi;
\end{mplibcode}
+ \mplibnumbersystem{scaled}%
}{%
% \mplibforcehmode
\begin{mplibcode}
diff --git a/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex b/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex
index 4f9e7f9cf6..3f11bb05b7 100644
--- a/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex
@@ -700,9 +700,9 @@
\bnpl=\numexpr\bnpl+1\relax%
\pilebl=\bnpl\relax%
\fi%
- }
- }
-}
+ }%
+ }%
+}%
\NewDocumentCommand\PfCSommeChiffres{m}{%
\xdef\PfCSMSomme{0}%
@@ -791,16 +791,20 @@
\newcount\anp\newcount\bnp%
\anp=#1%
\bnp=2\relax%
- 1 %
- \whiledo{\bnp<\anp}{%
- \modulo{\the\anp}{\the\bnp}{}%
- \ifnum\remainder=0%
- ; $\num{\the\bnp}$ %
- \fi%
- \bnp=\numexpr\bnp+1%
- }%
- et \num{\the\anp}%
-}
+ \ifnum\anp=1
+ 1%
+ \else
+ 1 %
+ \whiledo{\bnp<\anp}{%
+ \modulo{\the\anp}{\the\bnp}{}%
+ \ifnum\remainder=0%
+ ; $\num{\the\bnp}$ %
+ \fi%
+ \bnp=\numexpr\bnp+1%
+ }%
+ et \num{\the\anp}%
+ \fi%
+}%
\newcount\anpT\newcount\bnpT\newcount\cnpT\newcount\dnpT%
diff --git a/macros/latex/contrib/profcollege/latex/PfCDistributivite.tex b/macros/latex/contrib/profcollege/latex/PfCDistributivite.tex
index 1e8f371cdf..ad0dd8885d 100644
--- a/macros/latex/contrib/profcollege/latex/PfCDistributivite.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCDistributivite.tex
@@ -430,7 +430,9 @@
\fi
}
-\newcommand\Affichage[4][]{%
+% \newcommand\Affichage[4][]{%
+
+\NewDocumentCommand\Affichage{ommm}{%
\setKV[ClesDistributivite]{#1}%On lit les arguments optionnels
\def\LETTRE{\useKV[ClesDistributivite]{Lettre}}%
\ensuremath{%
@@ -594,10 +596,12 @@
}{%
\ifboolKV[ClesDistributivite]{Numerique}{%
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}==0}{%
- \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}%
+ % \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}%
+ \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\xintFor* ##1 in{\xintSeq{2}{4}}\do{=\Distri[Numerique,Etape=##1]{#2}{#3}{#4}{#5}}%
}{%
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}==-1}{%
- \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}%
+ % \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}%
+ \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\xintFor* ##1 in{\xintSeq{2}{0}}\do{=\Distri[Numerique,Etape=##1]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}%
}{%
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{\num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}}{}%
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\num{\fpeval{#2+#3}}\times(\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#5)}})}{}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCDomino.tex b/macros/latex/contrib/profcollege/latex/PfCDomino.tex
index a21e068e56..49cf667c16 100644
--- a/macros/latex/contrib/profcollege/latex/PfCDomino.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCDomino.tex
@@ -17,7 +17,7 @@
valign lower=center,
arc=2pt,
#1
-}
+}%
\newtcolorbox{MyDominoLogo}[1][]{%
enhanced,
@@ -32,52 +32,52 @@
arc=2pt,
colback=white,
#1
-}
+}%
-\NewEnviron{TrameDomino}{%
- \setlength{\margev}{1cm}
- \setlength{\margeh}{1cm}
- \begin{tikzpicture}[remember picture,overlay]
+\NewDocumentEnvironment{TrameDomino}{+b}{%
+ \setlength{\margev}{1cm}%
+ \setlength{\margeh}{1cm}%
+ \begin{tikzpicture}[remember picture,overlay]%
% quadrillages horizontal et vertical
\coordinate[yshift=-\margev] (A0) at (current page.north west);
\coordinate[yshift=-\margev] (B0) at (current page.north east);
\foreach \i in {1,...,\useKV[Domino]{Lignes}}{%
\coordinate[yshift=-\i*\textheight/\LigneDomino] (A\i) at (A0);
\coordinate[yshift=-\i*\textheight/\LigneDomino] (B\i) at (B0);
- }
+ }%
\coordinate[xshift=\margeh] (C0) at (current page.north west);
\coordinate[xshift=\margeh] (D0) at (current page.south west);
\foreach \i in {1,...,\useKV[Domino]{Colonnes}}{
\coordinate[xshift=\i*\textwidth/\ColonneDomino] (C\i) at (C0);
\coordinate[xshift=\i*\textwidth/\ColonneDomino] (D\i) at (D0);
- }
+ }%
\foreach \i in {0,...,\LigneDomino}{%
\draw (A\i) -- (B\i);
- }
+ }%
\foreach \i in {0,...,\ColonneDomino}{%
\draw (C\i) -- (D\i);
- }
- \draw[blue, line width=3pt] (A0)--(B0);
- \draw[blue, line width=3pt] (A\LigneDomino)--(B\LigneDomino);
- \draw[blue, line width=3pt] (C0)--(D0);
- \draw[blue, line width=3pt] (C\ColonneDomino)--(D\ColonneDomino);
+ }%
+ \draw[blue, line width=3pt] (A0)--(B0);%
+ \draw[blue, line width=3pt] (A\LigneDomino)--(B\LigneDomino);%
+ \draw[blue, line width=3pt] (C0)--(D0);%
+ \draw[blue, line width=3pt] (C\ColonneDomino)--(D\ColonneDomino);%
% point pour placer les cartes
\foreach \i in {0,...,\fpeval{\ColonneDomino-1}}{%
\foreach \j in {0,...,\fpeval{\LigneDomino-1}}{%
- \coordinate[xshift=\margeh+(0.5\textwidth/\ColonneDomino)+\i*\textwidth/\ColonneDomino,yshift=-0.5\textheight/\LigneDomino-\j*\textheight/\LigneDomino]
- (Domino\fpeval{\i+\ColonneDomino*\j+1}) at (A0);
- }
- }
- \BODY
+ \coordinate[xshift=\margeh+(0.5\textwidth/\ColonneDomino)+\i*\textwidth/\ColonneDomino,yshift=-0.5\textheight/\LigneDomino-\j*\textheight/\LigneDomino]%
+ (Domino\fpeval{\i+\ColonneDomino*\j+1}) at (A0);%
+ }%
+ }%
+ #1
\end{tikzpicture}
-}
+}{}%
-\setKVdefault[Domino]{Couleur=white,Trame,Ratio=0.5,Lignes=7,Colonnes=5,Superieur=false,Logo=false,Image=tiger.pdf}
+\setKVdefault[Domino]{Couleur=white,Trame,Ratio=0.5,Lignes=7,Colonnes=5,Superieur=false,Logo=false,Image=tiger.pdf}%
\newcommand\Dominos[2][]{%
\useKVdefault[Domino]%
\setKV[Domino]{#1}%
- \setsepchar[*]{§*/}%
+ \setsepchar[*]{§*/}\reademptyitems%
\readlist*\ListeDominos{#2}%
\xdef\CouleurDomino{\useKV[Domino]{Couleur}}%
\xdef\ratiodomino{\useKV[Domino]{Ratio}}%
@@ -85,7 +85,7 @@
\xdef\ColonneDomino{\useKV[Domino]{Colonnes}}%
\ifboolKV[Domino]{Trame}{%
\clearpage
- \begin{TrameDomino}
+ \begin{TrameDomino}%
\foreach\i in {1,...,\fpeval{\LigneDomino*\ColonneDomino}}{%
\node[] at (Domino\i){%
\ifboolKV[Domino]{Superieur}{%
@@ -97,18 +97,18 @@
\ListeDominos[\i,1]\tcblower\ListeDominos[\i,2]%
\end{MyDominoMini}%
}%
- };
+ };%
}%
\end{TrameDomino}%
\ifboolKV[Domino]{Logo}{%
\clearpage
- \begin{TrameDomino}
+ \begin{TrameDomino}%
\foreach\i in {1,...,\fpeval{\LigneDomino*\ColonneDomino}}{%
\node at (Domino\i){%
\begin{MyDominoLogo}%
\includegraphics[height=\tcbtextheight]{\useKV[Domino]{Image}}
\end{MyDominoLogo}%
- };
+ };%
}%
\end{TrameDomino}%
}{}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCDontCountDots.tex b/macros/latex/contrib/profcollege/latex/PfCDontCountDots.tex
new file mode 100644
index 0000000000..e395500a3c
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCDontCountDots.tex
@@ -0,0 +1,197 @@
+% D'après twitter : https://twitter.com/DavidKButlerUoA/status/1700612346258002030/photo/1
+\setKVdefault[NCPP]{Largeur=5,Longueur=7,Unite=5mm,Rayon=1mm,Multiple=3,Couleur=black,Solution=false,Graines=false}%
+\defKV[NCPP]{Graine=\setKV[NCPP]{Graines}\PfCGraineAlea{#1}}%
+
+\newtoks\tokcentre%
+\def\updatetokscentre#1\nil{\addtotok\tokcentre{#1,}}%
+
+\NewDocumentCommand\NeComptePasPoints{o}{%
+ \tokcentre{}%
+ \useKVdefault[NCPP]%
+ \setKV[NCPP]{#1}%
+ % on crée la liste de tous les numéros des points.
+ \def\NCPPLongueur{\useKV[NCPP]{Longueur}}%
+ \def\NCPPLargeur{\useKV[NCPP]{Largeur}}%
+ \xdef\PfCFooListeCentres{1}%
+ \xintFor* ##1 in{\xintSeq{2}{\fpeval{\NCPPLargeur*\NCPPLongueur}}}\do{%
+ \xdef\PfCFooListeCentres{\PfCFooListeCentres,##1}%
+ }%
+ \ChoixAlea{\fpeval{ceil(0.6*\NCPPLargeur*\NCPPLongueur)}}{\fpeval{floor(0.8*\NCPPLargeur*\NCPPLongueur)}}{\Titi}%
+ \MelangeListe{\PfCFooListeCentres}{\Titi}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeCentres{\faa}%
+ \ignoreemptyitems%
+ \foreachitem\compteur\in\ListeCentres{\expandafter\updatetokscentre\compteur\nil}%
+ \modulo{\Titi}{\useKV[NCPP]{Multiple}}%
+ \ifboolKV[NCPP]{Solution}{%
+ Il faut faire des paquets de \useKV[NCPP]{Multiple} points. Il existe plusieurs schémas expliquant la réponse. En voici un qui regroupe tous les points.
+ }{%
+ \textbf{Ne Compte pas les points !}\\
+ Montre que le nombre de points \ifnum\remainder=0\relax%
+ est
+ \else
+ n'est pas\fi{} un multiple de \num{\useKV[NCPP]{Multiple}}.
+ }%
+ \begin{center}
+ \BuildNCPP{\the\tokcentre}%
+ \end{center}
+ \ifboolKV[NCPP]{Solution}{%
+ En faisant des paquets de \useKV[NCPP]{Multiple} points, on montre que le nombre de points \ifnum\remainder=0\relax%
+ est
+ \else
+ n'est pas\fi{} un multiple de \num{\useKV[NCPP]{Multiple}}.
+ }{}%
+}%
+
+\NewDocumentCommand\BuildNCPP{m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ Unite=\useKV[NCPP]{Unite};
+ Rayon=\useKV[NCPP]{Rayon};
+ Longueur=\useKV[NCPP]{Longueur};
+ Largeur=\useKV[NCPP]{Largeur};
+ Multiple=\useKV[NCPP]{Multiple};
+
+ boolean Choisi,Graines,Solution;
+ Solution=\useKV[NCPP]{Solution};
+
+ color CouleurCercle;
+ CouleurCercle=\useKV[NCPP]{Couleur};
+
+ TotalPoints=Longueur*Largeur;
+
+ nbnoir:=0;%compte les noirs
+ nbblanc:=0;%compte les blancs
+ zr:=0;%pour compter les centres des points
+
+ vardef Allumage(text t)=
+ nbnoirs:=0;
+ for p_=t:
+ nbnoirs:=nbnoirs+1;
+ Allume[p_]:=true;
+ fill cercles(A[p_],Rayon) withcolor CouleurCercle;
+ endfor;
+ enddef;
+
+ pair A[];
+
+ boolean Allume[];
+ for k=0 upto Largeur-1:
+ for l=1 upto Longueur:
+ Allume[k*Longueur+l]=false;
+ A[k*Longueur+l]=Unite*(l,-k);
+ endfor;
+ endfor;
+
+ Allumage(#1);
+
+ if Solution:
+ nbdeplaces:=0;
+ zmontant=0;
+ zdescendant=TotalPoints;
+ for k=0 upto Largeur-1:
+ for l=1 upto Longueur:
+ zmontant:=zmontant+1;
+ if zmontant<zdescendant:
+ if Allume[zmontant]:
+ forever: exitif Allume[zdescendant]=false;
+ zdescendant:=zdescendant-1;
+ endfor;
+ nbdeplaces:=nbdeplaces+1;
+ if (zdescendant>zmontant) and (nbdeplaces<nbnoirs):
+ Allume[zmontant]:=false;
+ Allume[zdescendant]:=true;
+ fill cercles(A[zmontant],Rayon) withcolor white;
+ fill cercles(A[zdescendant],Rayon) withcolor LightSteelBlue;
+% label.top(TEX("?"),A[zdescendant]);
+ zdescendant:=zdescendant-1;
+ fi;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ %
+ %nbcases:=0;
+ %for k=0 upto Largeur-1:
+ %for l=1 upto Longueur:
+ %nbcases:=nbcases+1;
+ %if Allume[nbcases]:
+ %fill cercles(A[nbcases],Rayon) withcolor Gold;
+ %fi;
+ %endfor;
+ %endfor;
+ etape=1;
+ forever: exitif Allume[etape]=true;
+ etape:=etape+1;
+ endfor;
+% label.top(TEX("!"),A[etape]);
+ for k=0 upto (TotalPoints-etape):
+ if ((k+1) mod Multiple)=0:
+ draw (A[etape+k]+Unite*(-0.25,-0.25))--(A[etape+k]+Unite*(0.25,0.25));
+ fi;
+ endfor;
+ for k=1 upto ((TotalPoints-etape-Multiple+1) mod Multiple):
+ fill cercles(A[TotalPoints-k+1],Rayon) withcolor red;
+ endfor;
+ fi;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={Unite=\useKV[NCPP]{Unite};Rayon=\useKV[NCPP]{Rayon};Longueur=\useKV[NCPP]{Longueur};Largeur=\useKV[NCPP]{Largeur};Multiple=\useKV[NCPP]{Multiple};boolean Solution;Solution=\useKV[NCPP]{Solution};color CouleurCercle;CouleurCercle=\useKV[NCPP]{Couleur};}]
+ TotalPoints=Longueur*Largeur;
+ %
+ nbnoir:=0;%compte les noirs
+ nbblanc:=0;%compte les blancs
+ zr:=0;%pour compter les centres des points
+ %
+ vardef Allumage(text t)=
+ for p_=t:
+ Allume[p_]:=true;
+ fill cercles(A[p_],Rayon) withcolor CouleurCercle;
+ endfor;
+ enddef;
+ %
+ pair A[];
+ %
+ boolean Allume[];
+ for k=0 upto Largeur-1:
+ for l=1 upto Longueur:
+ Allume[k*Longueur+l]=false;
+ A[k*Longueur+l]=Unite*(l,-k);
+ endfor;
+ endfor;
+ %
+ Allumage(#1);
+ %
+ if Solution:
+ zmontant=0;
+ zdescendant=TotalPoints;
+ for k=0 upto Largeur-1:
+ for l=1 upto Longueur:
+ zmontant:=zmontant+1;
+ if zmontant<zdescendant:
+ if Allume[zmontant]:
+ forever: exitif Allume[zdescendant]=false;
+ zdescendant:=zdescendant-1;
+ endfor;
+ if zdescendant>zmontant:
+ fill cercles(A[zmontant],Rayon) withcolor white;
+ fill cercles(A[zdescendant],Rayon) withcolor LightSteelBlue;
+ zdescendant:=zdescendant-1;
+ fi;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ for k=0 upto (TotalPoints-zdescendant):
+ if ((k+1) mod Multiple)=0:
+ drawarrow A[zdescendant+k+1]--(A[zdescendant+k+1]+Unite*(0.5,0));
+ fi;
+ endfor;
+ for k=1 upto ((TotalPoints-zdescendant) mod Multiple):
+ fill cercles(A[TotalPoints-k+1],Rayon) withcolor red;
+ endfor;
+ fi;
+ \end{mpost}
+ \fi
+}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex b/macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex
index 188bd3a569..3d7a324b73 100644
--- a/macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex
@@ -1,148 +1,233 @@
%%%
% QCM
%%%
-\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=60pt,Couleur=gray!15,Titre=false,Nom=R\'eponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false,Parties={Yeux,Nez,Bouche},CouleurAlt=gray!15}%
+\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=60pt,Couleur=gray!15,Titre=false,Nom=R\'eponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false,Parties={Yeux,Nez,Bouche},CouleurAlt=gray!15,Seul=false}%
\newlength{\LargeurQCM}%
\newlength{\PfCLargeurQCM}%
\newcounter{QuestionQCM}%
\newcounter{TitreQCM}%
%
+\newcounter{TotalQCMSeul}%
+\newcounter{TotalQCMSeulSol}%
+\setcounter{TotalQCMSeul}{0}%
+\setcounter{TotalQCMSeulSol}{0}%
+%
+\setKVdefault[QCMSeul]{Melange=false,Solution=false,EnColonne=false}%
+\defKV[QCMSeul]{Colonnes=\setKV[QCMSeul]{EnColonne}}%
+%
+\NewDocumentCommand\PfCQCMSChoixLabelSol{m}{%
+ \xdef\PfCFooChoixLabel{\ListeQCM[\ListeQCMlen]}%
+ \setsepchar{-}%
+ \readlist*\PfCSolListeReponses{\PfCFooChoixLabel}%
+ \xdef\RetiensSiSol{0}%
+ \xintFor* ##3 in{\xintSeq{1}{\PfCSolListeReponseslen}}\do{%
+ \ifnum#1=\PfCSolListeReponses[##3]\relax%
+ \xdef\RetiensSiSol{\fpeval{\RetiensSiSol+1}}%
+ \fi%
+ }%
+ \ifnum\RetiensSiSol>0\relax%
+ $\blacksquare$%
+ \else%
+ $\square$%
+ \fi%
+}%
+
+\NewDocumentCommand\QCMSeul{om}{%
+ \useKVdefault[QCMSeul]%
+ \setKV[QCMSeul]{#1}%
+ \setsepchar{&}\ignoreemptyitems%
+ \readlist*\ListeQCM{#2}%
+ % on définit une liste ordonnées des numéros d'items. Elle est utilisée par défaut.
+ \xdef\PfCFooListePermute{1}%
+ \xintFor* ##1 in{\xintSeq{2}{\fpeval{\ListeQCMlen-2}}}\do{%
+ \xdef\PfCFooListePermute{\PfCFooListePermute,##1}%
+ }%
+ %
+ \ifboolKV[QCMSeul]{Melange}{%
+ \ifboolKV[QCMSeul]{Solution}{%
+ \stepcounter{TotalQCMSeulSol}%
+ \expandafter\xdef\csname PfCQCMSListeAv\endcsname{\csname PfCQCMSListe\Roman{TotalQCMSeulSol}\endcsname}%
+ % La liste restaurée est \PfCQCMSListeAv
+ }{%
+ \stepcounter{TotalQCMSeul}%
+ \MelangeListe{\PfCFooListePermute}{\fpeval{\ListeQCMlen-2}}%
+ \expandafter\xdef\csname PfCQCMSListe\Roman{TotalQCMSeul}\endcsname{\faa}%
+ % La liste exportée est \faa
+ \expandafter\xdef\csname PfCQCMSListe\endcsname{\faa}%
+ }%
+ }{%
+ \ifboolKV[QCMSeul]{Solution}{%
+ \expandafter\xdef\csname PfCQCMSListeAv\endcsname{\csname PfCFooListePermute\endcsname}%
+ }{%
+ \expandafter\xdef\csname PfCQCMSListe\endcsname{\PfCFooListePermute}%
+ }%
+ }%
+ \setsepchar{,}\ignoreemptyitems%
+ \ifboolKV[QCMSeul]{Solution}{%
+ \readlist*\ListeEnumerate{\PfCQCMSListeAv}%
+ }{%
+ \readlist*\ListeEnumerate{\PfCQCMSListe}%
+ }%
+ % On écrit
+ \ListeQCM[1]%
+ \ifboolKV[QCMSeul]{EnColonne}{\begin{multicols}{\useKV[QCMSeul]{Colonnes}}}{}%
+ \begin{itemize}[label=$\square$]
+ \xintFor* ##1 in{\xintSeq{2}{\fpeval{\ListeQCMlen-1}}}\do{%
+ \xdef\Titi{\ListeEnumerate[\fpeval{##1-1}]}
+ \ifboolKV[QCMSeul]{Solution}{%
+ \item[\PfCQCMSChoixLabelSol{\Titi}] \ListeQCM[\fpeval{\Titi+1}]
+ }{%
+ \item \ListeQCM[\fpeval{\Titi+1}]
+ }%
+ }%
+ \end{itemize}
+ \ifboolKV[QCMSeul]{EnColonne}{\end{multicols}}{}%
+}%
+%
\ifdef{\QCM}{%
\PackageWarning{ProfCollege}{La commande \noexpand\QCM étant définie par la classe du document, ProfCollege modifie sa commande \noexpand\QCM en \noexpand\QCMPfC.}%
\newcommand\QCMPfC[2][]{%
\useKVdefault[ClesQCM]%
\setKV[ClesQCM]{#1}%
- \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
- \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
- \setcounter{TitreQCM}{0}
- \setsepchar[*]{,*&}\ignoreemptyitems%
- \readlist*\ListeQCM{#2}%
- \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \ifboolKV[ClesQCM]{Multiple}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
- \setsepchar[*]{/}%
- \readlist*\ListeNomsMul{\ListeNom}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ListeNomsMul[##2]}%
- \\
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
- }%
- \hline%
- \end{tabular}%
- \renewcommand{\arraystretch}{1}%
+ \ifboolKV[ClesQCM]{Seul}{%
+ \QCMSeul[#1]{#2}%
}{%
- \ifboolKV[ClesQCM]{VF}{%
- \setKV[ClesQCM]{Reponses=2}%
-% \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
- \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
+ \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
+ \setcounter{TitreQCM}{0}
+ \setsepchar[*]{,*&}\ignoreemptyitems%
+ \readlist*\ListeQCM{#2}%
+ \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \ifboolKV[ClesQCM]{Multiple}{%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
+ \setsepchar[*]{/}%
+ \readlist*\ListeNomsMul{\ListeNom}%
\begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
- }%
- \hline%
- \end{tabular}
- }{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
\multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}%
+ &\ListeNomsMul[##2]}%
\\
- }{}
\hline%
\xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
\stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,##2+1]%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
}\\
}%
\hline%
\end{tabular}%
+ \renewcommand{\arraystretch}{1}%
+ }{%
+ \ifboolKV[ClesQCM]{VF}{%
+ \setKV[ClesQCM]{Reponses=2}%
+ % \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
+ \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
+ \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ \cline{2-\NBcases}%
+ \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
+ }%
+ \hline%
+ \end{tabular}
+ }{%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}%
+ \\
+ }{}
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,##2+1]%
+ }\\
+ }%
+ \hline%
+ \end{tabular}%
+ }%
}%
+ \renewcommand{\arraystretch}{1}%
}%
- \renewcommand{\arraystretch}{1}%
}%
}{%
\newcommand\QCM[2][]{%
\useKVdefault[ClesQCM]%
\setKV[ClesQCM]{#1}%
- \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
- \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
- \setcounter{TitreQCM}{0}
- \setsepchar[*]{,*&}\ignoreemptyitems%
- \readlist*\ListeQCM{#2}%
- \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \ifboolKV[ClesQCM]{Multiple}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
- \setsepchar[*]{/}%
- \readlist*\ListeNomsMul{\ListeNom}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ListeNomsMul[##2]}%
- \\
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
- }%
- \hline%
- \end{tabular}%
- \renewcommand{\arraystretch}{1}%
+ \ifboolKV[ClesQCM]{Seul}{%
+ \QCMSeul[#1]{#2}%
}{%
- \ifboolKV[ClesQCM]{VF}{%
- \setKV[ClesQCM]{Reponses=2}%
- \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
- \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
+ \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
+ \setcounter{TitreQCM}{0}
+ \setsepchar[*]{,*&}\ignoreemptyitems%
+ \readlist*\ListeQCM{#2}%
+ \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \ifboolKV[ClesQCM]{Multiple}{%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
+ \setsepchar[*]{/}%
+ \readlist*\ListeNomsMul{\ListeNom}%
\begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
- }%
- \hline%
- \end{tabular}
- }{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
\multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}%
+ &\ListeNomsMul[##2]}%
\\
- }{}%
\hline%
\xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
\stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
}\\
}%
\hline%
\end{tabular}%
+ \renewcommand{\arraystretch}{1}%
+ }{%
+ \ifboolKV[ClesQCM]{VF}{%
+ \setKV[ClesQCM]{Reponses=2}%
+ \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
+ \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ \cline{2-\NBcases}%
+ \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
+ }%
+ \hline%
+ \end{tabular}
+ }{%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}%
+ \\
+ }{}%
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]%
+ }\\
+ }%
+ \hline%
+ \end{tabular}%
+ }%
}%
+ \renewcommand{\arraystretch}{1}%
}%
- \renewcommand{\arraystretch}{1}%
}%
}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCEcritureLettres.tex b/macros/latex/contrib/profcollege/latex/PfCEcritureLettres.tex
index a2cd50db02..11ae58b5b7 100644
--- a/macros/latex/contrib/profcollege/latex/PfCEcritureLettres.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCEcritureLettres.tex
@@ -1,26 +1,26 @@
%%%
% Ecriture des nombres en lettres
%%%
-\setKVdefault[ClesEcriture]{Math=false,Majuscule=false,E=false,Tradition=false,Zero=false}
+\setKVdefault[ClesEcriture]{Math=false,Majuscule=false,E=false,Tradition=false,Zero=false}%
\newcommand\EcriturePluriel[1]{%
\xintifboolexpr{#1 > 1}{s}{}%
-}
+}%
\newcommand\EcritureDecimale{%
\StrLen{\ListeEcriture[2]}[\LongueurDecimale]%
\xintifboolexpr{\LongueurDecimale == 6}{%
~millionième\EcriturePluriel{\ListeEcriture[2]}%
}{\xintifboolexpr{\LongueurDecimale == 5}{%
- ~cent-millième\EcriturePluriel{\ListeEcriture[2]}
+ ~cent-millième\EcriturePluriel{\ListeEcriture[2]}%
}{\xintifboolexpr{\LongueurDecimale == 4}{%
- ~dix-millième\EcriturePluriel{\ListeEcriture[2]}
+ ~dix-millième\EcriturePluriel{\ListeEcriture[2]}%
}{\xintifboolexpr{\LongueurDecimale == 3}{%
- ~millième\EcriturePluriel{\ListeEcriture[2]}
+ ~millième\EcriturePluriel{\ListeEcriture[2]}%
}{\xintifboolexpr{\LongueurDecimale == 2}{%
- ~centième\EcriturePluriel{\ListeEcriture[2]}
+ ~centième\EcriturePluriel{\ListeEcriture[2]}%
}{\xintifboolexpr{\LongueurDecimale == 1}{%
- ~dixième\EcriturePluriel{\ListeEcriture[2]}
+ ~dixième\EcriturePluriel{\ListeEcriture[2]}%
}{}%
}%
}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCEcritureUnites.tex b/macros/latex/contrib/profcollege/latex/PfCEcritureUnites.tex
index d146f5fd84..c4503954b3 100644
--- a/macros/latex/contrib/profcollege/latex/PfCEcritureUnites.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCEcritureUnites.tex
@@ -1,7 +1,7 @@
%%%
% Ecritures d'unit\'es
%%%
-\setKVdefault[Unites]{m=false,km=false,hm=false,ha=false,dam=false,a=false,dm=false,cm=true,mm=false,um=false,nm=false,g=true,t=false,q=false,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,ug=false,ng=false,mmin=false,kmh=true,kms=false,ms=false,mh=false,kgm=false,gcm=true,L=true,kL=false,hL=false,daL=false,dL=false,cL=false,mL=false,l=true,kl=false,hl=false,dal=false,dl=false,cl=false,ml=false,Go=true,Mo=false,ko=false,To=false,o=false,kWh=true,C=true,K=false,F=false,Nombre,US=false,UK=false,Precision=2}%
+\setKVdefault[Unites]{m=false,km=false,hm=false,ha=false,dam=false,a=false,dm=false,cm=true,mm=false,um=false,nm=false,g=true,t=false,q=false,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,ug=false,ng=false,mmin=false,kmh=true,kms=false,ms=false,mh=false,kgm=false,gcm=true,L=true,kL=false,hL=false,daL=false,dL=false,cL=false,mL=false,l=true,kl=false,hl=false,dal=false,dl=false,cl=false,ml=false,Go=true,Mo=false,ko=false,To=false,o=false,kWh=true,C=true,K=false,F=false,Nombre,US=false,UK=false,CFA=false,CFP=false,CHF=false,Euro=false,Precision=2}%
\defKV[Unites]{Dots=\setKV[Unites]{Nombre=false}}%
\newlength{\PfCLgUnites}
@@ -170,37 +170,45 @@
}%
}%
-%Pour mémoire au cas où...
-%\newcommand\Prixo[2][2]{%
-% \SI[round-mode=places,round-precision=#1]{#2}{\EuRo}%
-%}
-
-%\NewDocumentCommand\Prix{o O{2} m}{%
-% \useKVdefault[Unites]%
-% \setKV[Unites]{#1}%
-% \ifboolKV[Unites]{Nombre}{%
-% \SI[round-mode=places,round-precision=#2]{#3}{\EuRo}%
-% }{%
-% \setlength{\PfCLgUnites}{\useKV[Unites]{Dots}}
-% \pointilles[\PfCLgUnites]~\si{\EuRo}%
-% }%
-%}%
-
+\makeatletter
\NewDocumentCommand\Prix{o m}{%
\useKVdefault[Unites]%
\setKV[Unites]{#1}%
- \ifboolKV[Unites]{US}{%
- \DeclareSIUnit{\Tempo}{\Dollar}%
+ \ifboolKV[Unites]{CHF}{%
+ \DeclareSIUnit{\Tempo}{\PfCCHF}%
}{%
- \ifboolKV[Unites]{UK}{%
- \DeclareSIUnit{\Tempo}{\LivreSterling}%
+ \ifboolKV[Unites]{CFA}{%
+ \DeclareSIUnit{\Tempo}{\PfCCFA}%
}{%
- \DeclareSIUnit{\Tempo}{\EuRo}%
+ \ifboolKV[Unites]{CFP}{%
+ \DeclareSIUnit{\Tempo}{\PfCCFP}%
+ }{%
+ \ifboolKV[Unites]{US}{%
+ \DeclareSIUnit{\Tempo}{\Dollar}%
+ }{%
+ \ifboolKV[Unites]{UK}{%
+ \DeclareSIUnit{\Tempo}{\LivreSterling}%
+ }{%
+ \ifboolKV[Unites]{Euro}{%
+ \DeclareSIUnit{\Tempo}{\EuRo}%
+ }{%
+ \if@CHF%
+ \setKV[Unites]{CHF}%
+ \fi%
+ \DeclareSIUnit{\Tempo}{\DeviseDefaut}%
+ }%
+ }%
+ }%
+ }%
}%
}%
\ifboolKV[Unites]{Nombre}{%
\IfInteger{#2}{%
- \SI{#2}{\Tempo}%
+ \ifboolKV[Unites]{CHF}{%
+ \si{\PfCCHF}~\num{#2}.-%
+ }{%
+ \SI{#2}{\Tempo}%
+ }%
}{%
\SI[round-mode=places,round-precision=\useKV[Unites]{Precision}]{#2}{\Tempo}%
}%
@@ -209,6 +217,31 @@
\pointilles[\PfCLgUnites]~\si{\Tempo}%
}%
}%
+\makeatother
+
+%\NewDocumentCommand\Prixold{o m}{%
+% \useKVdefault[Unites]%
+% \setKV[Unites]{#1}%
+% \ifboolKV[Unites]{US}{%
+% \DeclareSIUnit{\Tempo}{\Dollar}%
+% }{%
+% \ifboolKV[Unites]{UK}{%
+% \DeclareSIUnit{\Tempo}{\LivreSterling}%
+% }{%
+% \DeclareSIUnit{\Tempo}{\EuRo}%
+% }%
+% }%
+% \ifboolKV[Unites]{Nombre}{%
+% \IfInteger{#2}{%
+% \SI{#2}{\Tempo}%
+% }{%
+% \SI[round-mode=places,round-precision=\useKV[Unites]{Precision}]{#2}{\Tempo}%
+% }%
+% }{%
+% \setlength{\PfCLgUnites}{\useKV[Unites]{Dots}}%
+% \pointilles[\PfCLgUnites]~\si{\Tempo}%
+% }%
+%}%
\NewDocumentCommand\Octet{o m}{%
\useKVdefault[Unites]%
diff --git a/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex b/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
index 86d323139e..df5743e439 100644
--- a/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
@@ -4,9 +4,11 @@
\newtoks\tokPfCEngrenages%
\def\UpdatetoksEngrenages#1/#2\nil{\addtotok\tokPfCEngrenages{#1,#2,}}%
-\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm}
+\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm,ListeCouleurs={LightSteelBlue}}
\NewDocumentCommand\Engrenages{o m}{%
+ \newtoks\toklistecouleur%
+ \toklistecouleur{}%
\tokPfCEngrenages{}
\useKVdefault[Engrenages]%
\setKV[Engrenages]{#1}%
@@ -18,12 +20,28 @@
\foreachitem\compteur\in\ListePfCEngrenages{%
\xdef\PfCFooEngrenages{\PfCFooEngrenages \ListePfCEngrenages[\compteurcnt,1],\ListePfCEngrenages[\compteurcnt,2],}%
}%
- \BuildEngrenages{\PfCFooEngrenages}%
+ \xdef\ListeAvantCouleurs{\useKV[Engrenages]{ListeCouleurs}}%
+ \readlist*\ListeCouleur{\ListeAvantCouleurs}%
+ \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}%
+ \BuildEngrenages{\PfCFooEngrenages}{\the\toklistecouleur}%
}%
-\def\BuildEngrenagesCode#1{%
+\def\BuildEngrenagesCode#1#2{%
u:=\useKV[Engrenages]{Unite};
CouleurEngrenage=\useKV[Engrenages]{Couleur};
+%
+ vardef RecuperationCouleurs(text t)=
+ color Col[];
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=CouleurEngrenage;
+ fi;
+ endfor;
+ enddef;
%
vardef LectureDonnees(text t)=
n:=0;k=0;l=0;
@@ -39,17 +57,26 @@
endfor;
enddef;
%
+ RecuperationCouleurs(#2);
LectureDonnees(#1);
%
pair K;
K=(0,0);
picture EngrenageFinal;
EngrenageFinal=image(
+ if unknown Col[1]:
+ else:
+ CouleurEngrenage:=Col[1];
+ fi;
trace Engrenage(Mm[1],Zz[1],(0,0));
%
Signe=1;
%
for w=2 upto (n div 2):
+ if unknown Col[w]:
+ else:
+ CouleurEngrenage:=Col[w];
+ fi;
K:=K+pointarc(cercles((0,0),u*Mm[w]*(Zz[w-1]+Zz[w])*0.5+0.04*u),0);
AngleRot[w]:=360/(2*Zz[w]);
if w=2:
@@ -77,16 +104,16 @@
);
}
-\NewDocumentCommand\BuildEngrenages{m}{%
+\NewDocumentCommand\BuildEngrenages{mm}{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
input PfCEngrenages;
- \BuildEngrenagesCode{#1}
+ \BuildEngrenagesCode{#1}{#2}
trace EngrenageFinal;
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={input PfCEngrenages;\BuildEngrenagesCode{#1}}]
+ \begin{mpost}[mpsettings={input PfCEngrenages;\BuildEngrenagesCode{#1}{#2}}]
trace EngrenageFinal;
\end{mpost}
\fi
diff --git a/macros/latex/contrib/profcollege/latex/PfCEratosthene.tex b/macros/latex/contrib/profcollege/latex/PfCEratosthene.tex
index bcaeaa7a6a..192e470e66 100644
--- a/macros/latex/contrib/profcollege/latex/PfCEratosthene.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCEratosthene.tex
@@ -1,25 +1,25 @@
-\setKVdefault[ClesEra]{Premier=false,Nombre=1,CouleurP=Cornsilk!50,CouleurNP=Crimson!15,Colonnes=10,Lignes=10,Hauteur=24pt}
+\setKVdefault[ClesEra]{Premier=false,Nombre=1,CouleurP=Cornsilk!50,CouleurNP=Crimson!15,Colonnes=10,Lignes=10,Hauteur=24pt}%
\NewDocumentCommand\TestPremier{m}{%
% #1 le nombre premier \`a tester
\newcount\anp\newcount\bnp\newcount\cnp%
- \anp=#1\relax
- \bnp=2\relax
- \premier=-1\relax
+ \anp=#1\relax%
+ \bnp=2\relax%
+ \premier=-1\relax%
% Pour d\'eterminer le nombre d'\'etapes
\whiledo{\anp > 1}{%
- \modulo{\the\anp}{\the\bnp}
- \ifnum\remainder=0\relax
- \global\premier=\numexpr\premier+1\relax
- \cnp=\numexpr\anp/\bnp\relax
- \anp=\cnp\relax
+ \modulo{\the\anp}{\the\bnp}%
+ \ifnum\remainder=0\relax%
+ \global\premier=\numexpr\premier+1\relax%
+ \cnp=\numexpr\anp/\bnp\relax%
+ \anp=\cnp\relax%
\else%
\bnp=\numexpr\bnp+1\relax%
\fi%
}%
\ifnum\premier=0%
\setKV[ClesEra]{Premier=true}%
- \else
+ \else%
\setKV[ClesEra]{Premier=false}%
\fi%
}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCFactorisation.tex b/macros/latex/contrib/profcollege/latex/PfCFactorisation.tex
index 700fb9906b..823f203623 100644
--- a/macros/latex/contrib/profcollege/latex/PfCFactorisation.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCFactorisation.tex
@@ -1,4 +1,4 @@
-\setKVdefault[Facto]{Aide=false,AideMul=false,Couleur=Crimson,NomExpression=A,Lettre=x,Details,Formel=false,VariableSup=false,ParenthesesFin=false,Finale=false}
+\setKVdefault[Facto]{Aide=false,AideMul=false,Couleur=Crimson,NomExpression=A,Lettre=x,Details,Formel=false,VariableSup=false,ParenthesesFin=false,Finale=false,Type=0}
\defKV[Facto]{Litteral=\setKV[Facto]{Details=false}}
\defKV[Facto]{AutreVariable=\setKV[Facto]{VariableSup}}
\defKV[Facto]{Resultat=\setKV[Facto]{Finale}}
@@ -86,7 +86,7 @@
\end{align*}
}
\else%k*a+-k*b=k(a+-b)
- \#3 #3 -- \#4 #4 -- \#5 #5
+% \#3 #3 -- \#4 #4 -- \#5 #5
\begin{CAS}
% La variable
vars('\useKV[Facto]{Lettre}'\ifboolKV[Facto]{VariableSup}{%
@@ -121,16 +121,55 @@
}{%Avec au moins un des facteurs polynomes
\StrCompare{\PfCFactoSymbole}{-}[\PfCRetiensSigneFacteurDeux]%
\StrChar{#5}{1}[\RetiensPremierCaractere]%en cas de deuxième terme écrit b-ax
- \begin{align*}
- \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}\\\setKV[Facto]{Aide}}{}%
- \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}}{\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}}\setKV[Facto]{Aide=false}\\
- \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\
- \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\
- \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}%
- \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}%
- \end{align*}
- }
- \fi
+ \ifnum\fpeval{\useKV[Facto]{Type}}=1\relax
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \begin{align*}
+ \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#4}{Ka}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}\\\setKV[Facto]{Aide}}{}%
+ \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\times\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}}{\PfCEcrireFacteur{#4}{Ka}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}}\setKV[Facto]{Aide=false}\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}%
+ \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}%
+ \end{align*}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else
+ \ifnum\fpeval{\useKV[Facto]{Type}}=3\relax
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \begin{align*}
+ \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#4}{Ka}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\\\setKV[Facto]{Aide}}{}%
+ \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\times\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}\times\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}}{\PfCEcrireFacteur{#4}{Ka}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}}\setKV[Facto]{Aide=false}\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}%
+ \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}%
+ \end{align*}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else
+ \ifnum\fpeval{\useKV[Facto]{Type}}=2\relax
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \begin{align*}
+ \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\\\setKV[Facto]{Aide}}{}%
+ \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}\times\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}}{\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}}\setKV[Facto]{Aide=false}\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}%
+ \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}%
+ \end{align*}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else
+ \begin{align*}
+ \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}\\\setKV[Facto]{Aide}}{}%
+ \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}}{\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}}\setKV[Facto]{Aide=false}\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\
+ \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}%
+ \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}%
+ \end{align*}
+ \fi%
+ \fi%
+ \fi%
+ }%
+ \fi%
}%
\NewDocumentCommand\Factorisationold{sommm}{%
diff --git a/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex b/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
index b9ff48e176..77c683b148 100644
--- a/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
@@ -1,7 +1,7 @@
%%%
% Fonction Affine
%%%
-\setKVdefault[ClesAffine]{Nom=f,Variable=x,CoefDir=a,OrdoOrig=b,Ligne=false,Image=false,Antecedent=false,Graphique=false,Retrouve=false,ProgCalcul=false,Unitex=1,Unitey=1,VoirCoef=false,ACoef=0,Redaction=false,Ecriture=false,Definition=false}%ACoefficient=false%: inutile ?
+\setKVdefault[ClesAffine]{Nom=f,Variable=x,CoefDir=a,OrdoOrig=b,Ligne=false,Image=false,Antecedent=false,Graphique=false,Retrouve=false,ProgCalcul=false,Unitex=1,Unitey=1,VoirCoef=false,ACoef=0,Redaction=false,Ecriture=false,Definition=false,Centre=false}%ACoefficient=false%: inutile ?
\newcommand\FonctionAffine[5][]{%
% #1 nombre ou abscisse premier point
@@ -33,7 +33,7 @@
\ifboolKV[ClesAffine]{ProgCalcul}{%
La fonction affine $\useKV[ClesAffine]{Nom}$ est d\'efinie par :
\begin{align*}
- \useKV[ClesAffine]{Nom}&:\useKV[ClesAffine]{Variable}\stackrel{\times\xintifboolexpr{#3<0}{(\num{#3})}{\num{#3}}}{\longrightarrow}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\stackrel{+\num{#4}}{\longrightarrow}}{\stackrel{\num{#4}}{\longrightarrow}}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}}
+ \useKV[ClesAffine]{Nom}&:\useKV[ClesAffine]{Variable}\stackrel{\times\xintifboolexpr{#3<0}{(\num{#3})}{\num{#3}}}{\longrightarrow}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\stackrel{+\num{#4}}{\longrightarrow}}{\stackrel{\num{#4}}{\longrightarrow}}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}}.
\end{align*}
Nous cherchons le nombre $\useKV[ClesAffine]{Variable}$ tel que son image par la fonction $\useKV[ClesAffine]{Nom}$ soit $\num{#2}$. Donc on obtient :
\begin{align*}
@@ -45,7 +45,7 @@
$\useKV[ClesAffine]{Variable}$ tel que
$\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\num{#2}$. Or,
la fonction $\useKV[ClesAffine]{Nom}$ est d\'efinie par : \[%
- \useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\xintifboolexpr{#3==0}{}{\num{#3}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#3==0}{\num{#4}}{\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}}
+ \useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\xintifboolexpr{#3==0}{}{\num{#3}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#3==0}{\num{#4}}{\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}}.
\]
Par cons\'equent, on a :
\begin{align*}
@@ -90,9 +90,22 @@
\ifboolKV[ClesAffine]{Redaction}{%
\xintifboolexpr{#2==0}{Comme la fonction $\useKV[ClesAffine]{Nom}$
est une fonction constante, alors sa repr\'esentation graphique est une droite parall\`ele \`a l'axe des abscisses passant par le point de coordonn\'ees $(0;\num{#3})$.}%
- {\xintifboolexpr{#3==0}{Comme la fonction $\useKV[ClesAffine]{Nom}$ est une fonction lin\'eaire, alors sa repr\'esentation graphique est une droite passant par l'origine du rep\`ere.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est \xdef\NomFonctionA{\useKV[ClesAffine]{Nom}}\FonctionAffine[Nom=\NomFonctionA,Image,Ligne]{#4}{#2}{#3}{#5}. On place le point de coordonn\'ees $(\num{#4};\num{\fpeval{#2*#4+#3}})$.
+ {\xintifboolexpr{#3==0}{Comme la fonction $\useKV[ClesAffine]{Nom}$ est une fonction lin\'eaire, alors sa repr\'esentation graphique est une droite passant par l'origine du rep\`ere.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est \xdef\NomFonctionA{\useKV[ClesAffine]{Nom}}\FonctionAffine[Nom=\NomFonctionA,Image,Ligne]{#4}{#2}{#3}{#5}. On place le point de coordonn\'ees $(\num{#4}\,;\,\num{\fpeval{#2*#4+#3}})$.
}{%
- Comme $\useKV[ClesAffine]{Nom}$ est une fonction affine, alors sa repr\'esentation graphique est une droite.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est \xdef\NomVariable{\useKV[ClesAffine]{Variable}}\xdef\NomFonction{\useKV[ClesAffine]{Nom}}\FonctionAffine[Nom=\NomFonction,Image,Ligne]{#4}{#2}{#3}{#5}. On place le point de coordonn\'ees $(\num{#4};\num{\fpeval{#2*#4+#3}})$.\\Je choisis \setKV[ClesAffine]{Variable=\NomVariable}$\useKV[ClesAffine]{Variable}=\num{#5}$. Son image est \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#5}{#2}{#3}{#4}. On place le point de coordonn\'ees $(\num{#5};\num{\fpeval{#2*#5+#3}})$.%
+ Comme $\useKV[ClesAffine]{Nom}$ est une fonction affine, alors sa repr\'esentation graphique est une droite.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est %
+ \xdef\NomVariable{\useKV[ClesAffine]{Variable}}\xdef\NomFonction{\useKV[ClesAffine]{Nom}}%
+ \ifboolKV[ClesAffine]{Centre}{: \[
+ \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#4}{#2}{#3}{#5}.
+ \]}{%
+ \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#4}{#2}{#3}{#5}. %
+ }%
+ On place le point de coordonn\'ees $(\num{#4}\,;\,\num{\fpeval{#2*#4+#3}})$.\\Je choisis \setKV[ClesAffine]{Variable=\NomVariable}$\useKV[ClesAffine]{Variable}=\num{#5}$. Son image est %
+ \ifboolKV[ClesAffine]{Centre}{: \[
+ \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#5}{#2}{#3}{#5}.
+ \]}{%
+ \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#5}{#2}{#3}{#5}. %
+ }%
+ On place le point de coordonn\'ees $(\num{#5}\,;\,\num{\fpeval{#2*#5+#3}})$.%
}%
}%
}%
@@ -103,9 +116,10 @@
\def\MPFonctionAffine#1#2#3#4#5#6#7{%
% #1 Unitex #2 Unitey
- % #2 a pour f1 - #4 b pour f1
- % #5 abscisse du premier point
- % #6 abscisse du deuxi\`eme point
+ % #3 a pour f1 - #4 b pour f1
+ % #5 abscisse du premier point
+ % #6 abscisse du deuxi\`eme point
+ % #7 on affiche ou pas la lecture du coef directeur
\ifluatex
\mplibforcehmode
\begin{mplibcode}
@@ -155,14 +169,14 @@
%On trace les axes
drawarrow (XMin*unitex,0)--(XMax*unitex,0);
drawarrow (0,YMin*unitey)--(0,YMax*unitey);
- label.llft(btex O etex,(0,0));
- dotlabel.bot(btex 1 etex,(unitex,0));
- dotlabel.lft(btex 1 etex,(0,unitey));
+ label.llft(TEX("\footnotesize O"),(0,0));
+ dotlabel.lrt(TEX("1"),(unitex,0));
+ dotlabel.ulft(TEX("1"),(0,unitey));
% On trace la droite
pair A[];
A1=(#5*unitex,(#5*#3+(#4))*unitey);
A2=(#6*unitex,(#6*#3+(#4))*unitey);
- draw 2[A1,A2]--2[A2,A1];
+ draw 10[A1,A2]--10[A2,A1];
clip currentpicture to ((XMin*unitex,YMin*unitey)--(XMax*unitex,YMin*unitey)--(XMax*unitex,YMax*unitey)--(XMin*unitex,YMax*unitey)--cycle);
%On labellise les points
fill (fullcircle scaled 1mm) shifted A1;
@@ -171,20 +185,26 @@
draw (xpart(A2),0)--A2--(0,ypart(A2)) dashed evenly;
if (#5*#3+(#4))=0:
else:
+ if #5<>1:
if (#5*#3+(#4))<0:
label.top(TEX("\num{"&decimal(#5)&"}"),(xpart(A1),0));
else:
label.bot(TEX("\num{"&decimal(#5)&"}"),(xpart(A1),0));
fi;
fi;
+ fi;
if (#6*#3+(#4))=0:
else:
if (#6*#3+(#4))<0:
+ if #6<>1:
label.top(TEX("\num{"&decimal(#6)&"}"),(xpart(A2),0));
+ fi;
else:
+ if #6<>1:
label.bot(TEX("\num{"&decimal(#6)&"}"),(xpart(A2),0));
fi;
fi;
+ fi;
if #3=0:
label.urt(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
else:
@@ -192,19 +212,23 @@
if (#5*#3+(#4))=0:
else:
if (#5*#3+(#4))<0:
+ if #5<0:
label.rt(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
else:
label.lft(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
fi;
fi;
+ fi;
if (#6*#3+(#4))=0:
else:
if (#6*#3+(#4))<0:
+ if #6<0:
label.rt(TEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
else:
label.lft(TEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
fi;
fi;
+ fi;
else:
if (#5*#3+(#4))=0:
else:
@@ -287,7 +311,7 @@
pair A[];
A1=(#5*unitex,(#5*#3+(#4))*unitey);
A2=(#6*unitex,(#6*#3+(#4))*unitey);
- draw 2[A1,A2]--2[A2,A1];
+ draw 10[A1,A2]--10[A2,A1];
clip currentpicture to ((XMin*unitex,YMin*unitey)--(XMax*unitex,YMin*unitey)--(XMax*unitex,YMax*unitey)--(XMin*unitex,YMax*unitey)--cycle);
%On labellise les points
fill (fullcircle scaled 1mm) shifted A1;
diff --git a/macros/latex/contrib/profcollege/latex/PfCLego.tex b/macros/latex/contrib/profcollege/latex/PfCLego.tex
index 86811da4ad..901eb0a54b 100644
--- a/macros/latex/contrib/profcollege/latex/PfCLego.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCLego.tex
@@ -22,7 +22,7 @@
\NewDocumentCommand\Lego{o}{%
\useKVdefault[Lego]%
\setKV[Lego]{#1}%
- \xintifboolexpr{\useKV[Lego]{Unite}==1}{%
+ \xintifboolexpr{\useKV[Lego]{Unite}==1 || \useKV[Lego]{Unique}}{%
\xdef\PfCNbCouleurs{1}%
}{%
\xdef\PfCNbCouleurs{\fpeval{floor(\useKV[Lego]{Unite}/\useKV[Lego]{Diviseur})}}%
@@ -38,7 +38,7 @@
\NewDocumentCommand\BuildBarreLego{mm}{%
\ifluatex%
\mplibforcehmode%
- \begin{mplibcode}
+ \begin{mplibcode}%
boolean Plaque,Unique;
Plaque=\useKV[Lego]{Plaque};
Unique=\useKV[Lego]{Unique};
@@ -105,9 +105,9 @@
RetiensLego=currentpicture;
currentpicture:=nullpicture;
draw RetiensLego scaled Echelle;
- \end{mplibcode}
- \else
- \begin{mpost}
+ \end{mplibcode}%
+ \else%
+ \begin{mpost}%
input PfCLego;
%
vardef ChoixCouleur(text t)=
@@ -153,6 +153,6 @@
Lego_box(Diviseur,2,Brique[k]);
endfor;
fi;
- \end{mpost}
+ \end{mpost}%
\fi%
}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex b/macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex
index d000fef45b..117c2a0905 100644
--- a/macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex
@@ -463,6 +463,30 @@ x.u:=#2;
else:
draw courbe1(MinX,MaxX,25,Lagrange(x)(#1)) withpen pencircle scaled Epaisseur withcolor CoulTrace;
fi;
+ % Détermination des MinY et MaxY
+% MinY:=Lagrange(MinX)(#1);
+ for k=0 upto 100:
+ if Lagrange(MinX+(k/100)*(MaxX-MinX))(#1)<MinY:
+ MinY:=Lagrange(MinX+(k/100)*(MaxX-MinX))(#1);
+ fi;
+ endfor;
+ %for k=0 upto 100:
+ %if Lagrange(MinX+(k/100)*(MaxX-MinX))(#2)<MinY:
+ %MinY:=Lagrange(MinX+(k/100)*(MaxX-MinX))(#2);
+ %fi;
+ %endfor;
+% MaxY:=Lagrange(MinX)(#1);
+ for k=0 upto 100:
+ if Lagrange(MinX+(k/100)*(MaxX-MinX))(#1)>MaxY:
+ MaxY:=Lagrange(MinX+(k/100)*(MaxX-MinX))(#1);
+ fi;
+ endfor;
+ %for k=0 upto 100:
+ %if Lagrange(MinX+(k/100)*(MaxX-MinX))(#2)>MaxY:
+ %MaxY:=Lagrange(MinX+(k/100)*(MaxX-MinX))(#2);
+ %fi;
+ %endfor;
+ %%%
path cadreexterieur;
cadreexterieur=(((MinX-1)*X.u*cm,(floor(MinY)-1)*Y.u*cm)--((MaxX+1)*X.u*cm,(floor(MinY)-1)*Y.u*cm)--((MaxX+1)*X.u*cm,(floor(MaxY)+1)*Y.u*cm)--((MinX-1)*X.u*cm,(floor(MaxY)+1)*Y.u*cm)--cycle);
clip currentpicture to cadreexterieur;
diff --git a/macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex b/macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex
index 9395074379..216d44d8ec 100644
--- a/macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex
@@ -28,30 +28,80 @@
\newlength{\PointillesClesProg}%
-\newcommand\ProgCalcul[2][]{%
- % #1 : cl\'es
- % #2 : \'etapes
+\NewDocumentCommand\ProgCalcul{som}{%
+ % #1 : pour l'écriture rapide, linéaire du programme de calcul
+ % #2 : cl\'es
+ % #3 : \'etapes
\useKVdefault[ClesProg]%
- \setKV[ClesProg]{#1}%
- \ifboolKV[ClesProg]{ThemePerso}{}{%
- \tcbset{ProgCalcul/.style={%
- boxsep=1mm,
- bottom=.75mm,
- middle=2mm,
- boxrule={\useKV[ClesProg]{Epaisseur}},
- text width={\useKV[ClesProg]{Largeur}},
- colframe={\useKV[ClesProg]{CouleurCadre}},
- colback={\useKV[ClesProg]{CouleurFond}},
- halign upper=center
+ \setKV[ClesProg]{#2}%
+ \IfBooleanTF{#1}{%
+ \setsepchar[*]{,* }\ignoreemptyitems%
+ \readlist*\ListeProg{#3}%
+ \ensuremath{%
+ \xdef\NbDepart{\ListeProg[1]}%
+ \ifboolKV[ClesProg]{SansCalcul}{%
+ \NbDepart\foreachitem\compteur\in\ListeProg[2]{%
+ \edef\Test{\ListeProg[2,\compteurcnt]}%
+ \expandarg%
+ \StrSubstitute{\Test}{^}{\empty\dots{}^}[\tempa]%
+ \StrSubstitute{\tempa}{**}{^}[\tempab]%
+ \StrSubstitute{\tempab}{*}{\times}[\tempac]%
+ \StrSubstitute{\tempac}{/}{\div}[\tempad]%
+ % \hspace{0.2em}
+ \xrightarrow{\tempad}
+ % \hspace{0.2em}
+ \ListeProg[3,\compteurcnt]%
+ }%
+ }{%
+ \num{\NbDepart}~\foreachitem\compteur\in\ListeProg[2]{%
+ \ifboolKV[ClesProg]{Direct}{%
+ \edef\Test{\ListeProg[2,\compteurcnt]}%
+ \expandarg%
+ \StrSubstitute{\Test}{^}{\empty\dots{}^}[\tempa]%
+ \StrSubstitute{\tempa}{**}{^}[\tempab]%
+ \StrSubstitute{\tempab}{*}{\times}[\tempac]%
+ \StrSubstitute{\tempac}{/}{\div}[\tempad]%
+ % \hspace{0.2em}
+ \xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\compteurcnt]}}
+ % \hspace{0.2em}
+ \xrightarrow{\tempad}~\num{\NbDepart}%
+ }{%
+ \edef\Test{\ListeProg[2,\compteurcnt]}
+ \expandarg%
+ \StrSubstitute{\Test}{^2}{\empty\sqrt{\dots{}}}[\tempa]%
+ \StrSubstitute{\tempa}{**}{^}[\tempab]%
+ \StrSubstitute{\tempab}{*}{\div}[\tempac]%
+ \StrSubstitute{\tempac}{/}{\times}[\tempad]%
+ \StrSubstitute{\tempad}{-}{+}[\tempae]%
+ \StrSubstitute{\tempae}{++}{-}[\tempaf]%
+ %\hspace{0.2em}
+ \xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\compteurcnt]}}
+ % \hspace{0.2em}
+ \xleftarrow{\tempaf}~\num{\NbDepart}%
+ }%
+ }%
+ }
+ }
+ }{%
+ \ifboolKV[ClesProg]{ThemePerso}{}{%
+ \tcbset{ProgCalcul/.style={%
+ boxsep=1mm,
+ bottom=.75mm,
+ middle=2mm,
+ boxrule={\useKV[ClesProg]{Epaisseur}},
+ text width={\useKV[ClesProg]{Largeur}},
+ colframe={\useKV[ClesProg]{CouleurCadre}},
+ colback={\useKV[ClesProg]{CouleurFond}},
+ halign upper=center
+ }%
}%
}%
- }%
\ifboolKV[ClesProg]{Application}{%
- % % by Thomas Dehon and cp
- \setsepchar[*]{§*,}
+ % % by Thomas Dehon and cp
+ \setsepchar[*]{§*,}%
% \setsepchar[*]{,* }%
\ignoreemptyitems%
- \readlist*\ListeTotale{#2}%
+ \readlist*\ListeTotale{#3}%
\xdef\PfCPCfoo{\ListeTotale[1]}%
\xdef\PfCPCfaa{\ListeTotale[2]}%
%%
@@ -94,7 +144,7 @@
% by Thomas Dehon
\setsepchar[*]{,* }%
\ignoreemptyitems%
- \readlist*\ListeEtapes{#2}%
+ \readlist*\ListeEtapes{#3}%
\begin{tcolorbox}[%
ProgCalcul,%
]
@@ -118,7 +168,7 @@
\end{tcolorbox}
}{%
\setsepchar[*]{,* }\ignoreemptyitems%
- \readlist*\ListeProg{#2}%
+ \readlist*\ListeProg{#3}%
\stepcounter{NBprog}%
\ifboolKV[ClesProg]{Vide}{%
\xdef\PfCNbDepart{\ListeProg[1]}%
@@ -181,8 +231,8 @@
}%
\end{tikzpicture}%
}{}%
- }{%
- \xdef\NbDepart{\ListeProg[1]}%
+ }{%
+ \xdef\NbDepart{\ListeProg[1]}%
\ifboolKV[ClesProg]{SansCalcul}{%
$\NbDepart$\foreachitem\compteur\in\ListeProg[2]{%
\hspace{0.2em}\tikzmark{A-\theNBprog-\compteurcnt}\hspace{\useKV[ClesProg]{Ecart}}\tikzmark{B-\theNBprog-\compteurcnt}\hspace{0.2em}$\ListeProg[3,\compteurcnt]$%
@@ -236,4 +286,5 @@
}%
}%
}%
+ }
}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCRecyclage.tex b/macros/latex/contrib/profcollege/latex/PfCRecyclage.tex
new file mode 100644
index 0000000000..371688f120
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCRecyclage.tex
@@ -0,0 +1,360 @@
+%%%
+% Logos Recyclage
+%%%
+\setKVdefault[Recyclage]{Ticket,Papier=false,Verre=false,Bouteille=false,Carton=false,Couleurs}%
+\defKV[Recyclage]{Couleur=\setKV[Recyclage]{Couleurs=false}}%
+
+\NewDocumentCommand\LogoRecyclage{o}{%
+ \useKVdefault[Recyclage]%
+ \setKV[Recyclage]{#1}%
+ \ifboolKV[Recyclage]{Papier}{%
+ \PfCLogoTriPapier%
+ }{%
+ \ifboolKV[Recyclage]{Carton}{%
+ \PfCLogoTriCarton%
+ }{%
+ \ifboolKV[Recyclage]{Verre}{%
+ \PfCLogoTriVerre%
+ }{%
+ \ifboolKV[Recyclage]{Bouteille}{%
+ \PfCLogoTriBouteille%
+ }{%
+ \PfCLogoTriTicket%
+ }%
+ }%
+ }%
+ }%
+}%
+
+\def\PfCLogoTriCodeBase{%
+ largeur=3;
+ rayon=0.5;
+ pair A,B,C,D,Mab,Mbc,Mcd,Mda,O,N[],T[];
+ A=(0,0);
+ B-A=u*(largeur,0);
+ C-B=u*(0,0.5*largeur);
+ D-C=A-B;
+ O=iso(A,B,C,D)+u*(rayon/2,0);
+ Mab-A=u*(rayon,0);
+ Mbc-C=u*(0,-rayon);
+ Mcd-C=u*(-rayon,0);
+ Mda-A=u*(0,rayon);
+ N1=2/5[D,C]+u*(rayon/2,-0.1);
+ N2-D=u*(0.1,-0.1);
+ N3-Mda=u*(0.1,0);
+ N4-Mab=u*(0,0.1);
+ N5=2/5[A,B]+u*(rayon/2,0.1);
+ path contourtri;
+ contourtri=D--Mda{dir-90}..{dir0}Mab--B--Mbc{dir90}..{dir180}Mcd--cycle;
+ path partieg;
+ partieg=O--N1--N2--N3{dir-90}..{dir0}N4--N5--cycle;
+ fill contourtri withcolor CouleurFond;
+ fill partieg withcolor white;
+ picture poubelle;
+ poubelle=image(
+ pair Q[],R[];
+ Q1=C+u*(-0.75rayon,-.75rayon);
+ Q2-Q1=u*(-0.25rayon,-1.75rayon);
+ Q3-Q2=u*(-0.85rayon,0);
+ Q4-Q3=u*(-0.25rayon,1.75rayon);
+ R1-Q1=u*(0.125rayon,0.1rayon);
+ R2-R1=u*(0.05rayon,0.2rayon);
+ R3-R2=u*(-0.15rayon,0);
+ R4-R3=u*(-0.15rayon,0.15rayon);
+ R8-Q4=u*(-0.125rayon,0.1rayon);
+ R7-R8=u*(-0.05rayon,0.2rayon);
+ R6-R7=u*(0.15rayon,0);
+ R5-R6=u*(0.15rayon,0.15rayon);
+ drawoptions(withpen pencircle scaled 1.25 withcolor black);
+ trace Q1--Q2--Q3--Q4;
+ trace R1--R2--R3--R4--R5--R6--R7--R8--cycle;
+ trace 1/5[R3,R6]--4/5[R3,R6];
+ drawoptions(withpen pencircle scaled 2.5 withcolor black);
+ trace (Q2+u*(0.1rayon,-0.1rayon))--(Q2+u*(0.1rayon,0.1rayon));
+ trace (Q3+u*(-0.1rayon,-0.1rayon))--(Q3+u*(-0.1rayon,0.1rayon));
+ drawoptions();
+ );
+ picture bacverre;
+ bacverre=image(%
+ pair S[];
+ S1=C+u*(-0.5rayon,-.35rayon);
+ S2-S1=u*(0,-0.45rayon);
+ S3-S2=u*(0,-1.25rayon);
+ S4-S3=u*(-0.45rayon,-0.45rayon);
+ S5-S4=u*(-0.875rayon,0);
+ S6-S5=u*(-0.45rayon,0.45rayon);
+ S7-S6=u*(0,1.25rayon);
+ S8-S7=u*(0.45rayon,0.45rayon);
+ S9-S8=u*(0.875rayon,0);
+ trace S2--S3{dir-90}..{dir180}S4--S5{dir180}..{dir90}S6--S7{dir90}..{dir0}S8--S9{dir0}..cycle;
+ trace (S4+u*(0.15rayon,-0.05rayon))--(S5+u*(-0.15rayon,-0.05rayon));
+ trace fullcircle scaled 1mm shifted (iso(S2,S7));
+ );
+}%
+
+\NewDocumentCommand\PfCLogoTriTicket{}{%
+ \ifluatex
+ \begin{Geometrie}[Cadre="aucun"]
+ boolean Colore;
+ color CouleurFond;
+ Colore=\useKV[Recyclage]{Couleurs};
+ if Colore:
+ CouleurFond=(253/256,197/256,47/256);
+ else:
+ CouleurFond=\useKV[Recyclage]{Couleur};
+ fi;
+ \PfCLogoTriCodeBase;
+ picture journal;
+ journal=image(%
+% typetrace:="mainlevee";
+ label.top(TEX("\ttfamily\footnotesize TICKET"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4));
+ T1=A+u*(rayon,1.5rayon);
+ T2-T1=u*(rayon,-rayon/4);
+ T3-T2=u*(0.5rayon,1rayon);
+ T4-T3=T1-T2;
+ path ticket,lignesprix[];
+ ticket=T1--T2{dir60}..{dir90}T3--T4{dir-90}..{dir-150}T1--cycle;
+ draw ticket;
+ for k=2 upto 7:
+ lignesprix[k]=(point(3+k/10) of ticket)--((point(3+k/10) of ticket)+T2-T1);
+ if k<7:
+ draw subpath(0.1,0.5) of lignesprix[k];
+ fi;
+ draw subpath(0.6,0.8) of lignesprix[k];
+ endfor;
+ );
+ trace journal;
+ if Colore:
+ drawoptions(withcolor black);
+ else:
+ drawoptions(withcolor white);
+ fi;
+ trace poubelle;
+ label(TEX("\bfseries\scriptsize\begin{tabular}{c}BAC\\DE\\TRI\end{tabular}"),iso(Q1,Q2,Q3,Q4));
+ drawoptions();
+ \end{Geometrie}
+ \fi
+}%
+
+\NewDocumentCommand\PfCLogoTriBouteille{}{%
+ \ifluatex
+ \begin{Geometrie}[Cadre="aucun"]
+ boolean Colore;
+ color CouleurFond;
+ Colore=\useKV[Recyclage]{Couleurs};
+ if Colore:
+ CouleurFond=(253/256,197/256,47/256);
+ else:
+ CouleurFond=\useKV[Recyclage]{Couleur};
+ fi;
+ \PfCLogoTriCodeBase;
+ picture bouteille;
+ bouteille=image(%
+ %typetrace:="mainlevee";
+ label.top(TEX("\ttfamily\footnotesize PLASTIQUE"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4));
+ T1=A+u*(1.25rayon,1.125rayon);
+ T2-T1=u*(0.75rayon,0);
+ T3-T2=u*(0,0.5rayon);
+ T4-T3=u*(0,0.5rayon);
+ T5-T4=u*(0,0.125rayon);
+ T6-T5=u*(-0.25rayon,0.25rayon);
+ T7-T6=u*(-0.125rayon,0);
+ T8-T7=u*(-0.25rayon,-0.25rayon);
+ T9-T8=u*(0,-0.125rayon);
+ T10-T9=u*(0,-0.5rayon);
+ T11-T10=u*(0,-0.5rayon);
+ path corps,bouchon,corpsg,lignesgrad[];
+ corps=T3{dir100}..{dir70}T4--T5{dir95}..{dir90}T6--T7{dir-90}..{dir-95}T8--T9{dir-70}..{dir-100}T10..{dir-50}T11{dir-10}..{dir10}T2{dir50}..cycle;
+ corpsg=T8--T9{dir-70}..{dir-100}T10..{dir-50}T11{dir-10};
+ bouchon=T6--(T6+u*(0.05rayon,0))--(T6+u*(0.05rayon,0.05rayon))--(T7+u*(-0.05rayon,0.05rayon))--(T7+u*(-0.05rayon,0))--cycle;
+ draw corps;
+ draw bouchon;
+ for k=1 upto 7:
+ lignesgrad[k]=(point(k*length corpsg/8) of corpsg){dir-10}..((point(k*length corpsg/8) of corpsg)+u*(0.125rayon,0));
+ if k<>6:
+ draw lignesgrad[k];
+ fi;
+ endfor;
+ );
+ trace bouteille;
+ if Colore:
+ drawoptions(withcolor black);
+ else:
+ drawoptions(withcolor white);
+ fi;
+ trace poubelle;
+ label(TEX("\bfseries\scriptsize\begin{tabular}{c}BAC\\DE\\TRI\end{tabular}"),iso(Q1,Q2,Q3,Q4));
+ drawoptions();
+ \end{Geometrie}
+ \fi
+}%
+
+\NewDocumentCommand\PfCLogoTriVerre{}{%
+ \ifluatex
+ \begin{Geometrie}[Cadre="aucun"]
+ boolean Colore;
+ color CouleurFond;
+ Colore=\useKV[Recyclage]{Couleurs};
+ if Colore:
+ CouleurFond=(0,139/256,50/256);
+ else:
+ CouleurFond=\useKV[Recyclage]{Couleur};
+ fi;
+ \PfCLogoTriCodeBase;
+ picture bouteille;
+ bouteille=image(%
+ %typetrace:="mainlevee";
+ label.top(TEX("\ttfamily\footnotesize VERRE"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4));
+ T1=A+u*(1.25rayon,1.125rayon);
+ T2-T1=u*(0.75rayon,0);
+ T3-T2=u*(0,0.5rayon);
+ T4-T3=u*(0,0.5rayon);
+ T5-T4=u*(0,0.125rayon);
+ T6-T5=u*(-0.25rayon,0.25rayon);
+ T7-T6=u*(-0.125rayon,0);
+ T8-T7=u*(-0.25rayon,-0.25rayon);
+ T9-T8=u*(0,-0.125rayon);
+ T10-T9=u*(0,-0.5rayon);
+ T11-T10=u*(0,-0.5rayon);
+ path corps,bouchon,corpsg,lignesgrad[];
+ corps=T3{dir100}..{dir70}T4--T5{dir95}..{dir90}T6--T7{dir-90}..{dir-95}T8--T9{dir-70}..{dir-100}T10..{dir-50}T11{dir-10}..{dir10}T2{dir50}..cycle;
+ corpsg=T8--T9{dir-70}..{dir-100}T10..{dir-50}T11{dir-10};
+ bouchon=T6--(T6+u*(0.05rayon,0))--(T6+u*(0.05rayon,0.05rayon))--(T7+u*(-0.05rayon,0.05rayon))--(T7+u*(-0.05rayon,0))--cycle;
+ draw corps;
+ draw bouchon;
+ for k=1 upto 7:
+ lignesgrad[k]=(point(k*length corpsg/8) of corpsg){dir-10}..((point(k*length corpsg/8) of corpsg)+u*(0.125rayon,0));
+ if k<>6:
+ draw lignesgrad[k];
+ fi;
+ endfor;
+ );
+ trace bouteille;
+% if Colore:
+% drawoptions(withcolor black);
+% else:
+ drawoptions(withpen pencircle scaled 1.25 withcolor white);
+% fi;
+ trace bacverre;
+ label(TEX("\bfseries\scriptsize\begin{tabular}{c}TRI\\VERRE\end{tabular}"),iso(S3,S6)+u*(0,0.245rayon));
+ drawoptions();
+ \end{Geometrie}
+ \fi
+}%
+
+\NewDocumentCommand\PfCLogoTriCarton{}{%
+ \ifluatex
+ \begin{Geometrie}[Cadre="aucun"]
+ boolean Colore;
+ color CouleurFond;
+ Colore=\useKV[Recyclage]{Couleurs};
+ if Colore:
+ CouleurFond=(253/256,197/256,47/256);
+ else:
+ CouleurFond=\useKV[Recyclage]{Couleur};
+ fi;
+ \PfCLogoTriCodeBase;
+ picture etui;
+ etui=image(%
+ %typetrace:="mainlevee";
+ label.top(TEX("\ttfamily\footnotesize CARTON"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4));
+ pair Tcarton[];
+ Tcarton1=A+u*(0.75rayon,1.75rayon);
+ Tcarton2-Tcarton1=u*(0,0.5rayon);
+ Tcarton3-Tcarton2=u*(0.5rayon,0.25rayon);
+ Tcarton4-Tcarton3=u*(1.25rayon,-0.5rayon);
+ Tcarton5-Tcarton4=Tcarton1-Tcarton2;
+ Tcarton6-Tcarton5=Tcarton2-Tcarton3;
+ Tcarton7-Tcarton6=Tcarton4-Tcarton5;
+ Tcarton8-Tcarton3=Tcarton5-Tcarton4;
+ path cotehaut,cotegauche,cotedroit,cotebas;
+ cotehaut=polygone(Tcarton4,Tcarton7,Tcarton7+u*(0.05rayon,0.35rayon),Tcarton4+u*(0.05rayon,0.35rayon));
+ cotebas=polygone(Tcarton5,Tcarton6,Tcarton6+u*(0.15rayon,-0.35rayon),Tcarton5+u*(0.15rayon,-0.35rayon));
+ cotegauche=polygone(Tcarton6,Tcarton7,Tcarton7+u*(-0.15rayon,-0.35rayon),Tcarton6+u*(-0.15rayon,-0.35rayon));
+ cotedroit=polygone(Tcarton4,Tcarton5,Tcarton5+u*(0.35rayon,-0.15rayon),Tcarton4+u*(0.35rayon,-0.15rayon));
+ trace polygone(Tcarton4,Tcarton5,Tcarton6,Tcarton7);
+ trace chemin(Tcarton7,Tcarton2,Tcarton3);
+ trace segment(Tcarton2,Tcarton1);
+ trace cotehaut; trace cotebas; trace cotegauche; trace cotedroit;
+ trace segment(Tcarton3,Tcarton4) cutafter segment(Tcarton7+u*(0.05rayon,0.35rayon),Tcarton4+u*(0.05rayon,0.35rayon));
+ trace segment(Tcarton1,Tcarton6) cutafter segment(Tcarton7+u*(-0.15rayon,-0.35rayon),Tcarton6+u*(-0.15rayon,-0.35rayon));
+ trace segment(Tcarton5,Tcarton8) cutafter segment(Tcarton7,Tcarton6);
+ );
+ trace etui;
+ if Colore:
+ drawoptions(withcolor black);
+ else:
+ drawoptions(withcolor white);
+ fi;
+ trace poubelle;
+ label(TEX("\bfseries\scriptsize\begin{tabular}{c}BAC\\DE\\TRI\end{tabular}"),iso(Q1,Q2,Q3,Q4));
+ drawoptions();
+ \end{Geometrie}
+ \fi
+}%
+
+\NewDocumentCommand\PfCLogoTriPapier{}{%
+ \ifluatex
+ \begin{Geometrie}[Cadre="aucun"]
+ boolean Colore;
+ color CouleurFond;
+ Colore=\useKV[Recyclage]{Couleurs};
+ if Colore:
+ CouleurFond=(253/256,197/256,47/256);
+ else:
+ CouleurFond=\useKV[Recyclage]{Couleur};
+ fi;
+ \PfCLogoTriCodeBase;
+ picture journal;
+ journal=image(%
+% typetrace:="mainlevee";
+ label.top(TEX("\ttfamily\footnotesize PAPIER"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4));
+ T1=A+u*(1.25rayon,rayon);
+ T2-T1=u*(0.5rayon,0.125rayon);
+ T3-T2=u*(0.5rayon,0);
+ T4-T3=u*(-0.125rayon,1.5rayon);
+ T5-T2=0.85*(T4-T3);
+ T6-T1=0.95*(T4-T3);
+ path ticket,lignesprix[];
+ ticket=T1--T2--T3--T4--T5--T6--cycle;
+ draw ticket;
+ trace T2--T5;
+ % lignes côté gauche
+ for k=1 upto 3:
+ lignesprix[k]=(point(5+k/12) of ticket)--((point(5+k/12) of ticket)+T5-T6);
+ draw subpath(0.1,0.5) of lignesprix[k];
+ endfor;
+ for k=5 upto 6:
+ lignesprix[k]=(point(5+k/12) of ticket)--((point(5.065+k/12) of ticket)+T2-T1);
+ draw subpath(0.1,0.9) of lignesprix[k];
+ endfor;
+ for k=9 upto 11:
+ lignesprix[k]=(point(5+k/12) of ticket)--((point(5+k/12) of ticket)+T2-T1);
+ draw subpath(0.5,0.9) of lignesprix[k];
+ endfor;
+ % lignes côté droit
+ for k=1 upto 3:
+ lignesprix[k]:=(point(2+k/12) of ticket)--((point(2+k/12) of ticket)+T2-T3);
+ draw subpath(0.1,0.5) of lignesprix[k];
+ endfor;
+ for k=5 upto 7:
+ lignesprix[k]:=(point(2+k/12) of ticket)--((point(1.935+k/12) of ticket)+T2-T3);
+ draw subpath(0.1,0.4) of lignesprix[k];
+ endfor;
+ for k=9 upto 11:
+ lignesprix[k]:=(point(2+k/12) of ticket)--((point(2+k/12) of ticket)+T5-T4);
+ draw subpath(0.2,0.8) of lignesprix[k];
+ endfor;
+ );
+ trace journal;
+ if Colore:
+ drawoptions(withcolor black);
+ else:
+ drawoptions(withcolor white);
+ fi;
+ trace poubelle;
+ label(TEX("\bfseries\scriptsize\begin{tabular}{c}BAC\\DE\\TRI\end{tabular}"),iso(Q1,Q2,Q3,Q4));
+ drawoptions();
+ \end{Geometrie}
+ \fi
+}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCReperage.tex b/macros/latex/contrib/profcollege/latex/PfCReperage.tex
index 70bd8b7c7a..e363b35e8d 100644
--- a/macros/latex/contrib/profcollege/latex/PfCReperage.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCReperage.tex
@@ -737,6 +737,7 @@
% #4 : la liste courte des noms des points.
% #5 : liste des points pour les string
\ifluatex
+ \mplibforcehmode
\begin{mplibcode}
defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
boolean Tiret,Code,AffichageGrad,Cadre;
@@ -1305,15 +1306,23 @@
if minx>(-pasx-1):
minx:=-2*pasx-1;
fi;
- if DemiDroite:
- minx:=0;
- fi;
if minx<\useKV[ClesReperage]{ValeurMin}:
minx:=\useKV[ClesReperage]{ValeurMin};
fi;
if maxx>\useKV[ClesReperage]{ValeurMax}:
maxx:=\useKV[ClesReperage]{ValeurMax};
fi;
+ % Pour gérer les cas des droites où toutes les valeurs sont soit positives soit négatives
+ if maxx<pasx:
+ maxx:=pasx+1;
+ fi;
+ if minx>-pasx:
+ minx:=-pasx-1;
+ fi;
+ %
+ if DemiDroite:
+ minx:=0;
+ fi;
% -----
pair A,B,C;
A=(0,0);
@@ -1424,7 +1433,15 @@
pointe(unitp*(valeur[n],0));
drawoptions();
elseif ACoord=1:
+ %
+ if Decale:
+ drawarrow (unitp*valeur[n],-7mm if (n mod 2)=0:-5mm fi)--(unitp*valeur[n],-3mm);
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],-7mm if (n mod 2)=0:-5mm fi));
+ else:
+ %drawarrow (unitp*valeur[n],-7mm)--(unitp*valeur[n],-3mm);
+ %label.bot(TEX("\pointilles[1cm]"),(unitp*valeur[n],-7mm));
label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+ fi;
drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
drawoptions();
@@ -1464,16 +1481,29 @@
else:
label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
fi;
- drawoptions(withcolor CouleurCroix);
- pointe(unitp*(valeur[n],0));
- drawoptions();
+ drawoptions(withcolor CouleurCroix);
+ pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
elseif AffichageCoord=1:
if p_<>"":
+ if Decale:
+ Labeloffset:=labeloffset;
+ labeloffset:=2pt;
+ if (valeur[n]<>0) and (valeur[n]<>pasx):
+ drawarrow (unitp*valeur[n],-7mm if (n mod 2)=0:-5mm fi)--(unitp*valeur[n],-3mm);
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),(unitp*valeur[n],-7mm if (n mod 2)=0:-5mm fi));
+ fi;
+ labeloffset:=Labeloffset;
+ else:
+ %drawarrow (unitp*valeur[n],-7mm)--(unitp*valeur[n],-3mm);
+ %label.bot(TEX("\pointilles[1cm]"),(unitp*valeur[n],-7mm));
label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
- drawoptions(withcolor CouleurCroix);
- pointe(unitp*(valeur[n],0));
- drawoptions();
+ fi;
+ %label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+ drawoptions(withcolor CouleurCroix);
+ pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
fi;
fi;
diff --git a/macros/latex/contrib/profcollege/latex/PfCRepresenterTableur.tex b/macros/latex/contrib/profcollege/latex/PfCRepresenterTableur.tex
index 4ac96a74e6..35eed81431 100644
--- a/macros/latex/contrib/profcollege/latex/PfCRepresenterTableur.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCRepresenterTableur.tex
@@ -12,6 +12,7 @@
\newcount\Affichecntcol%
\newcount\Affichecntlin%
\makeatletter%
+% Pour la version nicematrix
\newtoks\t@b%
\long\def\ifremain@lines#1\\#2\@nil{%
\csname @\ifx\@empty#2\@empty second\else first\fi oftwo\endcsname}%
@@ -24,14 +25,26 @@
\newcommand\addtot@b[1]{\t@b\expandafter{\the\t@b#1}}%
\newcommand\edftot@b[1]{\edef\temp@{#1}\expandafter\addtot@b\expandafter{\temp@}}%
+%%%%%%%%%%
+% Pour la version tabular
+\newtoks\t@bs%
+\long\def\ifremain@liness#1\\#2\@nil{%
+ \csname @\ifx\@empty#2\@empty second\else first\fi oftwo\endcsname}%
+\long\def\subst@eols#1\\#2\@nil{\addtot@bs{#1\\\hline}%
+ \ifremain@lines#2\\\@nil{\addtot@bs&\subst@eols#2\@nil}{\addtot@bs{#2\end{tabular}}}}%
+\long\def\collectcp@bodys#1\end{\subst@eols#1\@nil\end}%
+
+\newcommand\addtot@bs[1]{\t@bs\expandafter{\the\t@bs#1}}%
+\newcommand\edftot@bs[1]{\edef\temp@{#1}\expandafter\addtot@bs\expandafter{\temp@}}%
+%%%%%%%%%%%%%%%
\newlength\PfCLongInter%
\newlength\PfCTableurLargeurUn%
\newlength\PfCTableurLargeur%
-\newenvironment{Tableur}[1][]{%
+\NewDocumentEnvironment{Tableur}{so}{%
\useKVdefault[Tableur]%
- \setKV[Tableur]{#1}%
+ \setKV[Tableur]{#2}%
\setlength{\PfCTableurLargeurUn}{\fpeval{\useKV[Tableur]{LargeurUn}}pt}%
\setlength{\PfCTableurLargeur}{\fpeval{\useKV[Tableur]{Largeur}}pt}%
\ifnum\useKV[Tableur]{DebutColonnes}=0\relax
@@ -47,6 +60,42 @@
\ttfamily%
\newcolumntype{A}{>{\centering\arraybackslash}m{\PfCTableurLargeurUn}}%
\newcolumntype{B}{>{\centering\arraybackslash}m{\PfCTableurLargeur}}%
+ \IfBooleanTF{#1}{%
+ \setlength{\PfCLongInter}{-40pt+\fpeval{\useKV[Tableur]{LargeurUn}}pt+\fpeval{(\useKV[Tableur]{Colonnes}-2)*\useKV[Tableur]{Largeur}}pt+\fpeval{2*\useKV[Tableur]{Colonnes}-6}\tabcolsep+\fpeval{\useKV[Tableur]{Colonnes}-3}\arrayrulewidth}%
+ \ifboolKV[Tableur]{Bandeau}{%
+ \begin{tabular}{|p{\PfCTableurLargeur}|p{10pt}|p{50pt}|p{\PfCLongInter}|}%
+ \hhline{--~-}%
+ \useKV[Tableur]{Cellule}&\scriptsize$\blacktriangledown$&$f_x$\hfill$\sum$~\scriptsize$\blacktriangledown$\hfill$=$&\useKV[Tableur]{Formule}\hfill\scriptsize$\blacktriangledown$\\%
+ \hhline{--~-}%
+ \end{tabular}%
+ \nopagebreak%
+ \\%
+ }{}%
+ \cntlin\z@%
+ \t@bs{%
+ \begin{tabular}{%
+ |>{%
+ \cellcolor{gray!15}%
+ \global\cntcol\z@
+ \global\advance\cntlin\@ne%
+ \centering\arraybackslash%
+ \ifnum\cntlin>\@ne%
+ \fpeval{\cntlin+\Affichecntlin-1}\fi}%
+ wc{20pt}|A|*{\fpeval{\useKV[Tableur]{Colonnes}-1}}{B|}}%
+ \hline%
+ \rowcolor{gray!15}%
+ }%
+ \loop%
+ \ifnum\cntcol<\useKV[Tableur]{Colonnes}%
+ \advance\cntcol\@ne%
+ \advance\Affichecntcol\@ne%
+ \addtot@bs{&}%
+ % \edftot@bs{\@Alph{\the\cntcol}}%
+ \edftot@bs{\@Alph{\the\Affichecntcol}}%
+ \repeat%
+ \addtot@bs{\\\hline&}%
+ \collectcp@bodys
+ }{%
\setlength{\PfCLongInter}{-40pt+\fpeval{\useKV[Tableur]{LargeurUn}}pt+\fpeval{(\useKV[Tableur]{Colonnes}-2)*\useKV[Tableur]{Largeur}}pt+\fpeval{2*\useKV[Tableur]{Colonnes}-6}\tabcolsep+\fpeval{\useKV[Tableur]{Colonnes}+2}\arrayrulewidth}%
\ifboolKV[Tableur]{Bandeau}{%
\begin{NiceTabular}{p{\PfCTableurLargeur}p{10pt}p{50pt}p{\PfCLongInter}}%
@@ -111,5 +160,5 @@
% fin de modif
\repeat%
\addtot@b{\\&}%
- \collectcp@body}{\the\t@b}%
+ \collectcp@body}}{\IfBooleanTF{#1}{\the\t@bs}{\the\t@b}}%
\makeatother \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCReseauxSociaux.tex b/macros/latex/contrib/profcollege/latex/PfCReseauxSociaux.tex
index 175cb26f7a..996e33c026 100644
--- a/macros/latex/contrib/profcollege/latex/PfCReseauxSociaux.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCReseauxSociaux.tex
@@ -1,9 +1,9 @@
%%%
% Twitter
%%%
-\setKVdefault[Twitter]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Url=ViveLaTeX,EchelleLogo=0.035,Logo=DrStrange,Publie=false}
+\setKVdefault[Twitter]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Url=ViveLaTeX,EchelleLogo=0.035,Logo=DrStrange,Publie=false}%
-\NewEnviron{Twitter}[1][]{%
+\NewDocumentEnvironment{Twitter}{o+b}{%
\useKVdefault[Twitter]%
\setKV[Twitter]{#1}%
\xdef\EchelleLogo{\useKV[Twitter]{EchelleLogo}}%
@@ -26,16 +26,16 @@
left=3em,
bottom=2em]
\vspace*{0.5em}\par
- \BODY%
+ #2
\end{tcolorbox}
-}
+}{}%
%%%
% Facebook
%%%
-\setKVdefault[Facebook]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Heure=3:14,EchelleLogo=0.035,Logo=DrStrange,Publie=false}
+\setKVdefault[Facebook]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Heure=3:14,EchelleLogo=0.035,Logo=DrStrange,Publie=false}%
-\NewEnviron{Facebook}[1][]{%
+\NewDocumentEnvironment{Facebook}{o+b}{%
\useKVdefault[Facebook]%
\setKV[Facebook]{#1}%
\xdef\EchelleLogo{\useKV[Facebook]{EchelleLogo}}%
@@ -68,18 +68,17 @@
colframe=gray!15,
top=2em,
left=3em,
- bottom=4em]
- %\vspace*{0.5em}\par
- \BODY%
+ bottom={\ifboolKV[Facebook]{Publie}{4em}{2em}}]
+ #2
\end{tcolorbox}
-}
+}{}%
%%%
% Instagram
%%%
-\setKVdefault[Instagram]{Largeur=0.95\linewidth,Auteur=Christophe,Expediteur=Pierre,Date=\today,Temps=34,Publie=false,Logo=DrStrange,LogoEx=tiger,EchelleLogo=0.035,Texte={}}
+\setKVdefault[Instagram]{Largeur=0.95\linewidth,Auteur=Christophe,Expediteur=Pierre,Date=\today,Temps=34,Publie=false,Logo=DrStrange,LogoEx=tiger,EchelleLogo=0.035,Texte={}}%
-\NewEnviron{Instagram}[1][]{%
+\NewDocumentEnvironment{Instagram}{o+b}{%
\useKVdefault[Instagram]%
\setKV[Instagram]{#1}%
\xdef\EchelleLogo{\useKV[Instagram]{EchelleLogo}}%
@@ -113,16 +112,16 @@
top=3em,
left=3em,
bottom=7em]
- \BODY%
+ #2
\end{tcolorbox}
-}
+}{}%
%%%
% Snapchat
%%%
-\setKVdefault[Snapchat]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Temps=34,Logo=DrStrange,EchelleLogo=0.035,Texte=Envoyer un Chat}
+\setKVdefault[Snapchat]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Temps=34,Logo=DrStrange,EchelleLogo=0.035,Texte=Envoyer un Chat}%
-\NewEnviron{Snapchat}[1][]{%
+\NewDocumentEnvironment{Snapchat}{o+b}{%
\useKVdefault[Snapchat]%
\setKV[Snapchat]{#1}%
\xdef\EchelleLogo{\useKV[Snapchat]{EchelleLogo}}%
@@ -154,6 +153,43 @@
top=3em,
left=3em,
bottom=3em]
- \BODY%
+ #2
\end{tcolorbox}
-} \ No newline at end of file
+}{}%
+
+%%%
+% Mastodon
+%%%
+\setKVdefault[Mastodon]{Largeur=0.95\linewidth,Auteur=Christophe,Date=2~j,Url=ViveLaTeX,EchelleLogo=0.035,Logo=DrStrange,Publie=false}%
+
+\NewDocumentEnvironment{Mastodon}{o+b}{%
+ \useKVdefault[Mastodon]%
+ \setKV[Mastodon]{#1}%
+ \xdef\EchelleLogo{\useKV[Mastodon]{EchelleLogo}}%
+ \begin{tcolorbox}[%
+ enhanced,%
+ overlay unbroken and first={%
+ \node[anchor=west,xshift=3em,yshift=-2em] at (frame.north west) {%
+ \begin{tabular}{l}
+ \textbf{\useKV[Mastodon]{Auteur}}\\
+ {\color{gray}@\ttfamily \useKV[Mastodon]{Url}}
+ \end{tabular}};
+ \node[anchor=center,xshift=1em+2mm,yshift=-2em] at (frame.north west) {\LogoTW{\useKV[Mastodon]{Logo}}{\EchelleLogo}};
+ \node[anchor=center,yshift=-2em,xshift=-2em] at (frame.north east) {\faGlobeAmericas~\useKV[Mastodon]{Date}};
+ \coordinate[yshift=1em] (A) at (frame.south west);
+ \coordinate[yshift=1em] (B) at (frame.south east);
+ \node[] (C1) at ($(A)!0.1!(B)$) {\faReply\ifboolKV[Mastodon]{Publie}{~\fpeval{randint(1,10)}}{}};
+ \node[] (C2) at ($(A)!0.29!(B)$) {\faRetweet};%\ifboolKV[Mastodon]{Publie}{~\fpeval{randint(1,10)}}{}};
+ \node[] (C3) at ($(A)!0.48!(B)$) {\faStar[regular]};%\ifboolKV[Mastodon]{Publie}{~\fpeval{randint(1,10)}}{}};
+ \node[] (C4) at ($(A)!0.67!(B)$) {\faBookmark[regular]};
+ \node[] (C5) at ($(A)!0.85!(B)$) {...};
+ },
+ colback=white,
+ colframe=gray!15,
+ top=2em,
+ left=3em,
+ bottom=2em]
+ \vspace*{1em}\par
+ #2
+ \end{tcolorbox}
+}{}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCRondeInfernaleold.tex b/macros/latex/contrib/profcollege/latex/PfCRondeInfernaleold.tex
deleted file mode 100644
index bf7cc6225f..0000000000
--- a/macros/latex/contrib/profcollege/latex/PfCRondeInfernaleold.tex
+++ /dev/null
@@ -1,474 +0,0 @@
-%%%
-% Ronde infernale
-%%%
-\newcommand\TestNombrePremier[1]{%
- % #1 le nombre \`a tester
- \newcount\anp\newcount\bnp\newcount\cnp%
- \anp=#1\relax
- \bnp=2\relax
- \premier=-1\relax
- \whiledo{\anp > 1}{%
- \modulo{\the\anp}{\the\bnp}
- \ifnum\remainder=0\relax%
- \global\premier=\numexpr\premier+1\relax%
- \cnp=\numexpr\anp/\bnp\relax%
- \anp=\cnp\relax%
- \else%
- \bnp=\numexpr\bnp+1\relax%
- \fi%
- }%
-}%
-
-\newcommand\PfCRIListeDiviseur[1]{%#1 : nombre entier
- \newcount\anp\newcount\bnp%
- \anp=\fpeval{abs(#1)}%
- \bnp=2\relax%
- \xdef\PfCRIRetiensListeDiviseurs{}%
- \ifnum#1=0%
- \xdef\PfCRIRetiensListeDiviseurs{\fpeval{randint(2,5)},\fpeval{randint(6,9)}}%
- \else
- \whiledo{\bnp<\anp}{%
- \modulo{\the\anp}{\the\bnp}{}%
- \ifnum\remainder=0%
- \ifnum#1>0
- \xdef\PfCRIRetiensListeDiviseurs{\PfCRIRetiensListeDiviseurs \the\bnp,}%
- \else
- \xdef\PfCRIRetiensListeDiviseurs{\PfCRIRetiensListeDiviseurs \the\bnp,-\the\bnp,}%
- \fi
- \fi%
- \bnp=\numexpr\bnp+1%
- }%
- \ifnum#1>0
- \xdef\PfCRIRetiensListeDiviseurs{\PfCRIRetiensListeDiviseurs \the\anp,1}
- \else
- \xdef\PfCRIRetiensListeDiviseurs{\PfCRIRetiensListeDiviseurs \the\anp,-\the\anp}
- \fi
- \fi
-}%
-
-\setKVdefault[RondeInfernale]{Solution=false,Relatifs=false,Etapes=4,Perso=false,Cles=false,Vide,Rayon=2.5cm,Rectangle=false,Div=false,Cdot=false}%
-\defKV[RondeInfernale]{Graine=\PfCGraineAlea{#1}}
-\defKV[RondeInfernale]{Cle=\setKV[RondeInfernale]{Cles}\setKV[RondeInfernale]{Vide=false}}%
-\defKV[RondeInfernale]{ListeOperations=\setKV[RondeInfernale]{Perso}}%
-\defKV[RondeInfernale]{ListeNombres=\setKV[RondeInfernale]{Perso}}%
-%
-
-\NewDocumentCommand\RondeInfernale{ }{%Mise en place pour les germanistes : le " est actif :(
- \begingroup
- \catcode`\"12
- \RondeInfernaleaux
-}%
-
-\NewDocumentCommand\RondeInfernaleaux{o}{%
- \endgroup
- \useKVdefault[RondeInfernale]%
- \setKV[RondeInfernale]{#1}%
- % Graine
-% \ifboolKV[RondeInfernale]{Graines}{\PfCGraineAlea{\useKV[RondeInfernale]{Graine}}}{}%
- % Nombre clé
- \ifboolKV[RondeInfernale]{Cles}{%
- \xdef\PfCRINombreCle{\useKV[RondeInfernale]{Cle}}%
- }{%
- \ifboolKV[RondeInfernale]{Relatifs}{%
- \xdef\PfCRIListeNegatifs{-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10}
- \MelangeListe{\PfCRIListeNegatifs}{1}
- \readlist*\PfCRIListeCle{\faa}
- \xdef\PfCRINombreCle{\PfCRIListeCle[1]}%
- }{%
- \xdef\PfCRINombreCle{\fpeval{randint(2,9)}}%
- }%
- }%
- \ifboolKV[RondeInfernale]{Perso}{%
- \xdef\PfCRIRecupOperations{\useKV[RondeInfernale]{ListeOperations}}%
- \xdef\PfCRIRecupNombres{\useKV[RondeInfernale]{ListeNombres}}%
- }{%
- % On définit les éléments nécessaires
- \xdef\PfCRIListeToutesOperations{+,-,*,/}%
- \xdef\PfCRIListeOperationsSansDiv{+,-,*}%
- \xdef\PfCRIListeOperationsSansMul{+,-,/}%
- \xdef\PfCRIListeOperationsSimple{+,-}%
- \xdef\PfCRIRecupOperations{}%
- \xdef\PfCRIRecupNombres{}%
- \xdef\PfCRIRecupResultats{}%
- \xdef\PfCRINombreATester{\PfCRINombreCle}%
- \xdef\PfCRIRetiensNbEtapes{\useKV[RondeInfernale]{Etapes}}%
- \setsepchar{,}\ignoreemptyitems%
- % Liste des opérations jusqu'à l'étape n-1
- \xintFor* ##1 in{\xintSeq{1}{\fpeval{\useKV[RondeInfernale]{Etapes}-1}}}\do{%
- \TestNombrePremier{\PfCRINombreATester}\relax%
- \xintifboolexpr{\premier==0}{%
- % Définition des opérations
- \MelangeListe{\PfCRIListeOperationsSansDiv}{1}%
- \readlist*\PfCRIRetiensLoperation{\faa}%
- \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}%
- \xdef\PfCRIOperateur{\fpeval{randint(2,9)}}%
- \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRIOperateur,}%
- \xdef\PfCRIResultat{\fpeval{\PfCRINombreATester\PfCRIRetiensLoperation[1]\PfCRIOperateur}}%
- \xdef\PfCRIRecupResultats{\PfCRIRecupResultats \PfCRIResultat,}%
- \xdef\PfCRINombreATester{\PfCRIResultat}%
- }{%
- \MelangeListe{\PfCRIListeToutesOperations}{1}%
- \readlist*\PfCRIRetiensLoperation{\faa}%
- \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}%
- \IfStrEq{\PfCRIRetiensLoperation[1]}{/}{%
- \PfCRIListeDiviseur{\PfCRINombreATester}%
- \MelangeListe{\PfCRIRetiensListeDiviseurs}{1}%
- \readlist*\PfCRIRetiensLeDiviseur{\faa}%
- \xdef\PfCRIOperateur{\PfCRIRetiensLeDiviseur[1]}%
- }{%
- \xdef\PfCRIOperateur{\fpeval{randint(2,9)}}%
- }%
- \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRIOperateur,}%
- \xdef\PfCRIResultat{\fpeval{\PfCRINombreATester\PfCRIRetiensLoperation[1]\PfCRIOperateur}}%
- \xdef\PfCRIRecupResultats{\PfCRIRecupResultats \PfCRIResultat,}%
- \xdef\PfCRINombreATester{\PfCRIResultat}%
- }%
- }%
- % Dernière opération
- \xintifboolexpr{\fpeval{abs(\PfCRINombreATester)-abs(\PfCRINombreCle)}>0}{%
- \modulo{\PfCRINombreATester}{\PfCRINombreCle}{}%
- \xintifboolexpr{\remainder==0}{%
- \MelangeListe{\PfCRIListeOperationsSansMul}{1}%
- \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}%
- \ignoreemptyitems%
- \readlist*\PfCRIRetiensLoperation{\faa}%
- \IfStrEq{\PfCRIRetiensLoperation[1]}{/}{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester/\PfCRINombreCle}}%
- }{%
- \IfStrEq{\PfCRIRetiensLoperation[1]}{-}{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}%
- }{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}%
- }%
- }%
- \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}%
- }{%
- \MelangeListe{\PfCRIListeOperationsSimple}{1}%
- \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}%
- \ignoreemptyitems%
- \readlist*\PfCRIRetiensLoperation{\faa}%
- \IfStrEq{\PfCRIRetiensLoperation[1]}{-}{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}%
- }{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}%
- }%
- \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}%
- }%
- }{%
- \xintifboolexpr{\fpeval{abs(\PfCRINombreATester)-abs(\PfCRINombreCle)}==0}{%
- \xdef\PfCRIRecupOperations{\PfCRIRecupOperations *}%
- \ignoreemptyitems%
- \readlist*\PfCRIRIListeOperations{\PfCRIRecupOperations}%
- \xdef\PfCRIRecupNombres{\PfCRIRecupNombres 1}%
- }{%
- \xintifboolexpr{\PfCRINombreATester==0}{%
- \MelangeListe{\PfCRIListeOperationsSimple}{1}%
- \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}%
- \ignoreemptyitems%
- \readlist*\PfCRIRetiensLoperation{\faa}%
- \IfStrEq{\PfCRIRetiensLoperation[1]}{-}{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}%
- }{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}%
- }%
- \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}%
- }{%
- \modulo{\PfCRINombreCle}{\PfCRINombreATester}{}%
- \xintifboolexpr{\remainder==0}{%-1
- \MelangeListe{\PfCRIListeToutesOperations}{1}%
- \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}%
- \readlist*\PfCRIRetiensLoperation{\faa}%
- \ignoreemptyitems%
- \readlist*\PfCRIRIListeOperations{\PfCRIRecupOperations}%
- \IfStrEq{\PfCRIRetiensLoperation[1]}{*}{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle/\PfCRINombreATester}}%
- \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}%
- }{
- \IfStrEq{\PfCRIRetiensLoperation[1]}{-}{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}%
- }{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}%
- }%
- \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}%
- }%
- }{%
- \MelangeListe{\PfCRIListeOperationsSimple}{1}%
- \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}%
- \ignoreemptyitems%
- \readlist*\PfCRIRIListeOperations{\PfCRIRecupOperations}%
- \IfStrEq{\PfCRIRIListeOperations[\PfCRIRetiensNbEtapes]}{-}{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}%
- }{%
- \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}%
- }%
- \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}%
- }%
- }%
- }%
- }%
- }%
- \ignoreemptyitems%
- \readlist*\PfCRIRIOperations{\PfCRIRecupOperations}%
- \readlist*\PfCRIRINombres{\PfCRIRecupNombres}%
- \reademptyitems%
- % On prépare le dessin
- \xdef\PfCRINombresDessin{}%
- \xdef\PfCRIOperationsDessin{}%
- \foreachitem\compteur\in\PfCRIRINombres{%
- \xintifboolexpr{\PfCRIRINombres[\compteurcnt]<0}{%
- \xdef\PfCRINombresDessin{\PfCRINombresDessin "(\num{\PfCRIRINombres[\compteurcnt]})",}%
- }{%
- \xdef\PfCRINombresDessin{\PfCRINombresDessin "\num{\PfCRIRINombres[\compteurcnt]}",}%
- }%
- }%
- \foreachitem\compteur\in\PfCRIRIOperations{%
- \xdef\PfCRIOperationsDessin{\PfCRIOperationsDessin "\PfCRIRIOperations[\compteurcnt]",}%
- }%
- % On dessine
- \BuildRondeInfernale{\PfCRINombresDessin}{\PfCRIOperationsDessin}%
-}%
-
-\NewDocumentCommand\BuildRondeInfernale{m m}{%
- \ifluatex
- \mplibforcehmode
- \begin{mplibcode}
- boolean Vide,Rectangle,Perso;
- Vide=\useKV[RondeInfernale]{Vide};
- Rectangle=\useKV[RondeInfernale]{Rectangle};
- Perso=\useKV[RondeInfernale]{Perso};
- if Perso:
- string Depart;
- Depart=\useKV[RondeInfernale]{Cle};
- else:
- numeric Depart;
- Depart=\PfCRINombreCle;
- fi;
-
- numeric Rayon;
- Rayon=\useKV[RondeInfernale]{Rayon};
-
- string Nombre[];
-
- vardef Compte(text t)=%On compte le nb d'étapes et on retient les nombres
- nbcase:=0;
- for p_=t:
- nbcase:=nbcase+1;
- Nombre[nbcase]=p_;
- endfor;
- enddef;
-
- vardef AfficheRonde(text t)=%On fait l'affichage des opérations
- n:=0;
- for k=1 upto nbcase:
- fill cercles(rotation(A[k],O,0.5*(360/nbcase)),5mm) withcolor white;
- endfor;
- for p_=t:
- n:=n+1;
- if p_="*":
- label(TEX("$\times"&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase)));
- elseif p_="/":
- label(TEX("$\div"&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase)));
- else:
- label(TEX("$"&p_&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase)));
- fi;
- endfor;
- enddef;
-
- vardef AfficheRectangle(text t)=%On fait l'affichage des opérations
- n:=0;
- for p_=t:
- n:=n+1;
- if n=nbcase:
- if p_="*":
- label.bot(TEX("$\times"&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1));
- elseif p_="/":
- label.bot(TEX("$\div"&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1));
- else:
- label.bot(TEX("$"&p_&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1));
- fi;
- else:
- if p_="*":
- label.top(TEX("$\times"&Nombre[n]&"$"),1/2[A[n-1],A[n]]);
- elseif p_="/":
- label.top(TEX("$\div"&Nombre[n]&"$"),1/2[A[n-1],A[n]]);
- else:
- label.top(TEX("$"&p_&Nombre[n]&"$"),1/2[A[n-1],A[n]]);
- fi;
- fi;
- endfor;
- enddef;
-
- vardef BaseRonde=
- pair O,A[];
- O=(0,0);
- path cc;
- cc=cercles(O,Rayon);
- A[0]=pointarc(cc,0);
- A[nbcase+1]=A[0];
- for k=1 upto nbcase:
- A[k]=rotation(A[0],O,k*(360/nbcase));
- endfor;
- for k=0 upto nbcase:
- drawarrow reverse(arccercle(A[k],A[k+1],O) cutbefore cercles(A[k],5mm) cutafter cercles(A[k+1],5mm)) withpen pencircle scaled 1.5;
- endfor;
- for k=0 upto nbcase:
- fill cercles(A[k],5mm) withcolor white;
- trace cercles(A[k],5mm) withpen pencircle scaled 1.5;
- endfor;
- enddef;
-
- vardef BoiteRectangle=
- save $;
- path $;
- $=u*(0.9,-0.5){dir 0}..{dir 90}(u*(1,-0.4))--(u*(1,0.4)){dir 90}..{dir180}(u*(0.9,0.5))--u*(-0.9,0.5){dir 180}..{dir-90}(u*(-1,0.4))--(u*(-1,-0.4)){dir-90}..{dir0}(u*(-0.9,-0.5))--cycle;
- $
- enddef;
-
- vardef BaseRectangle=
- pair O,A[];
- O=(0,0);
- A[0]=O;
- for k=1 upto nbcase:
- A[k]-A[k-1]=(Rayon+2cm,0);
- endfor;
- for k=0 upto nbcase-2:
- drawarrow (A[k]--A[k+1]) cutbefore (BoiteRectangle shifted A[k]) cutafter (BoiteRectangle shifted A[k+1]) withpen pencircle scaled 1.5;
- endfor;
- drawarrow (A[nbcase-1]--(A[nbcase-1]+u*(0,-1))--(A[0]+u*(0,-1))--A[0]) cutbefore (BoiteRectangle shifted A[nbcase-1]) cutafter (BoiteRectangle shifted A[0]) withpen pencircle scaled 1.5;
- for k=0 upto nbcase-1:
- trace (BoiteRectangle shifted A[k]) withpen pencircle scaled 1.5;
- endfor;
- enddef;
-
- Compte(#1);
-
- if Rectangle:
- BaseRectangle;
- AfficheRectangle(#2);
- else:
- BaseRonde;
- AfficheRonde(#2);
- fi;
- if Vide=false:
- if Perso:
- label(TEX("$"&Depart&"$"),A[0]);
- else:
- label(TEX("$"&decimal(Depart)&"$"),A[0]);
- fi;
- fi;
- \end{mplibcode}
- \else
- \begin{mpost}[mpsettings={%
- boolean Vide,Rectangle,Perso;Vide=\useKV[RondeInfernale]{Vide};Rectangle=\useKV[RondeInfernale]{Rectangle};Perso=\useKV[RondeInfernale]{Perso};if Perso:string Depart;Depart=\useKV[RondeInfernale]{Cle};else:numeric Depart;Depart=\PfCRINombreCle;fi;numeric Rayon;Rayon=\useKV[RondeInfernale]{Rayon};}]
- string Nombre[];
-
- vardef Compte(text t)=%On compte le nb d'étapes et on retient les nombres
- nbcase:=0;
- for p_=t:
- nbcase:=nbcase+1;
- Nombre[nbcase]=p_;
- endfor;
- enddef;
-
- vardef AfficheRonde(text t)=%On fait l'affichage des opérations
- n:=0;
- for k=1 upto nbcase:
- fill cercles(rotation(A[k],O,0.5*(360/nbcase)),5mm) withcolor white;
- endfor;
- for p_=t:
- n:=n+1;
- if p_="*":
- label(LATEX("$\times"&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase)));
- elseif p_="/":
- label(LATEX("$\div"&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase)));
- else:
- label(LATEX("$"&p_&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase)));
- fi;
- endfor;
- enddef;
-
- vardef AfficheRectangle(text t)=%On fait l'affichage des opérations
- n:=0;
- for p_=t:
- n:=n+1;
- if n=nbcase:
- if p_="*":
- label.bot(LATEX("$\times"&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1));
- elseif p_="/":
- label.bot(LATEX("$\div"&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1));
- else:
- label.bot(LATEX("$"&p_&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1));
- fi;
- else:
- if p_="*":
- label.top(LATEX("$\times"&Nombre[n]&"$"),1/2[A[n-1],A[n]]);
- elseif p_="/":
- label.top(LATEX("$\div"&Nombre[n]&"$"),1/2[A[n-1],A[n]]);
- else:
- label.top(LATEX("$"&p_&Nombre[n]&"$"),1/2[A[n-1],A[n]]);
- fi;
- fi;
- endfor;
- enddef;
-
- vardef BaseRonde=
- pair O,A[];
- O=(0,0);
- path cc;
- cc=cercles(O,Rayon);
- A[0]=pointarc(cc,0);
- A[nbcase+1]=A[0];
- for k=1 upto nbcase:
- A[k]=rotation(A[0],O,k*(360/nbcase));
- endfor;
- for k=0 upto nbcase:
- drawarrow reverse(arccercle(A[k],A[k+1],O) cutbefore cercles(A[k],5mm) cutafter cercles(A[k+1],5mm)) withpen pencircle scaled 1.5;
- endfor;
- for k=0 upto nbcase:
- fill cercles(A[k],5mm) withcolor white;
- trace cercles(A[k],5mm) withpen pencircle scaled 1.5;
- endfor;
- enddef;
-
- vardef BoiteRectangle=
- save $;
- path $;
- $=u*(0.9,-0.5){dir 0}..{dir 90}(u*(1,-0.4))--(u*(1,0.4)){dir 90}..{dir180}(u*(0.9,0.5))--u*(-0.9,0.5){dir 180}..{dir-90}(u*(-1,0.4))--(u*(-1,-0.4)){dir-90}..{dir0}(u*(-0.9,-0.5))--cycle;
- $
- enddef;
-
- vardef BaseRectangle=
- pair O,A[];
- O=(0,0);
- A[0]=O;
- for k=1 upto nbcase:
- A[k]-A[k-1]=(Rayon+2cm,0);
- endfor;
- for k=0 upto nbcase-2:
- drawarrow (A[k]--A[k+1]) cutbefore (BoiteRectangle shifted A[k]) cutafter (BoiteRectangle shifted A[k+1]) withpen pencircle scaled 1.5;
- endfor;
- drawarrow (A[nbcase-1]--(A[nbcase-1]+u*(0,-1))--(A[0]+u*(0,-1))--A[0]) cutbefore (BoiteRectangle shifted A[nbcase-1]) cutafter (BoiteRectangle shifted A[0]) withpen pencircle scaled 1.5;
- for k=0 upto nbcase-1:
- trace (BoiteRectangle shifted A[k]) withpen pencircle scaled 1.5;
- endfor;
- enddef;
-
- Compte(#1);
-
- if Rectangle:
- BaseRectangle;
- AfficheRectangle(#2);
- else:
- BaseRonde;
- AfficheRonde(#2);
- fi;
- if Vide=false:
- if Perso:
- label(LATEX("$"&Depart&"$"),A[0]);
- else:
- label(LATEX("$"&decimal(Depart)&"$"),A[0]);
- fi;
- fi;
- \end{mpost}
- \fi
-}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCSimplifierFraction.tex b/macros/latex/contrib/profcollege/latex/PfCSimplifierFraction.tex
index bea6d2d688..94429def36 100644
--- a/macros/latex/contrib/profcollege/latex/PfCSimplifierFraction.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCSimplifierFraction.tex
@@ -180,8 +180,8 @@
}%
}%
-\setKVdefault[ClesSimplification]{Details=false,All=false,Longue=false,Fleches=false,Contraire=0,Couleur=black,Debut=false,Impose=false,Decomposition=false}
-\defKV[ClesSimplification]{Nombre=\setKV[ClesSimplification]{Impose}}
+\setKVdefault[ClesSimplification]{Details=false,All=false,Longue=false,Fleches=false,Contraire=0,Couleur=black,Debut=false,Impose=false,Decomposition=false,DecompositionSeule=false}%
+\defKV[ClesSimplification]{Nombre=\setKV[ClesSimplification]{Impose}}%
\newcounter{NbFrac}%
\setcounter{NbFrac}{0}%
@@ -194,12 +194,8 @@
\setsepchar[*]{,*/}%\ignoreemptyitems
\readlist*\Listea{#2}%
\readlist*\Listeb{#3}%
- \setbox1=\hbox{\Listea[1,1]{}}%
- \setbox2=\hbox{\Listeb[1,1]}%
- \setbox3=\hbox{\Listea[1,3]}%
- \setbox4=\hbox{\Listeb[1,3]}%
\ensuremath{%
- \frac{\tikzmarknode[anchor=north]{A-\theNbFrac}{\Listea[1,1]}{}}{\tikzmarknode[anchor=south]{B-\theNbFrac}{\Listeb[1,1]}{}}=\frac{\tikzmarknode[anchor=north]{C-\theNbFrac}{\Listea[1,3]}{}}{\tikzmarknode[anchor=south]{D-\theNbFrac}{\Listeb[1,3]}{}}%
+ \frac{\tikzmarknode[anchor=north]{A-\theNbFrac}{\num{\Listea[1,1]}}{}}{\tikzmarknode[anchor=south]{B-\theNbFrac}{\num{\Listeb[1,1]}}{}}=\frac{\tikzmarknode[anchor=north]{C-\theNbFrac}{\Listea[1,3]}{}}{\tikzmarknode[anchor=south]{D-\theNbFrac}{\Listeb[1,3]}{}}%
}%
\begin{tikzpicture}[remember picture,overlay]%
\draw[out=45,in=135,-stealth,transform canvas={yshift=0.25em}]
@@ -215,16 +211,20 @@
\frac{\num{#2}}{\num{#3}}=\frac{\num{#2}\times\num{\useKV[ClesSimplification]{Contraire}}}{\num{#3}\times\num{\useKV[ClesSimplification]{Contraire}}}=\frac{\num{\fpeval{\useKV[ClesSimplification]{Contraire}*#2}}}{\num{\fpeval{\useKV[ClesSimplification]{Contraire}*#3}}}%
}%
}{%
- \ifboolKV[ClesSimplification]{Decomposition}{%
+ \ifboolKV[ClesSimplification]{DecompositionSeule}{%
+ \DecompositionSimplificationSeule{#2}{#3}%
+ }{%
+ \ifboolKV[ClesSimplification]{Decomposition}{%
\DecompositionSimplification{#2}{#3}%
}{%
- \ifboolKV[ClesSimplification]{Longue}{%
- \colorlet{PfCSimpliCol}{\useKV[ClesSimplification]{Couleur}}%
- \LongueSimplification{#2}{#3}%
- }{%
- \ifboolKV[ClesSimplification]{Details}{\SSimpli{#2}{#3}}{\ifboolKV[ClesSimplification]{All}{\ensuremath{\SSimpli{#2}{#3}=\SSimplifie{#2}{#3}}}{\SSimplifie{#2}{#3}}}%
+ \ifboolKV[ClesSimplification]{Longue}{%
+ \colorlet{PfCSimpliCol}{\useKV[ClesSimplification]{Couleur}}%
+ \LongueSimplification{#2}{#3}%
+ }{%
+ \ifboolKV[ClesSimplification]{Details}{\SSimpli{#2}{#3}}{\ifboolKV[ClesSimplification]{All}{\ensuremath{\SSimpli{#2}{#3}=\SSimplifie{#2}{#3}}}{\SSimplifie{#2}{#3}}}%
}%
}%
+ }%
}%
}%
}%
@@ -246,10 +246,10 @@
\xintFor* ##2 in{\xintSeq{1}{\LongueurH}}\do{%
\DiviseurCommun{\DiviseurHaut[##2]}{\PfCDeuxiemeFacteur}
\ifnum\PfCDivCom>1%
- \mathcolor{\useKV[ClesSimplification]{Couleur}}{\DiviseurHaut[##2]}
+ \mathcolor{\useKV[ClesSimplification]{Couleur}}{\num{\DiviseurHaut[##2]}}
\xdef\PfCDeuxiemeFacteur{\fpeval{\PfCDeuxiemeFacteur/\DiviseurHaut[##2]}}
\else
- \DiviseurHaut[##2]
+ \num{\DiviseurHaut[##2]}
\fi
\xintifForLast{}{\times}
}
@@ -257,14 +257,14 @@
\xintFor* ##2 in{\xintSeq{1}{\LongueurB}}\do{%
\DiviseurCommun{\DiviseurBas[##2]}{\PfCPremierFacteur}
\ifnum\PfCDivCom>1%
- \mathcolor{\useKV[ClesSimplification]{Couleur}}{\DiviseurBas[##2]}
+ \mathcolor{\useKV[ClesSimplification]{Couleur}}{\num{\DiviseurBas[##2]}}
\xdef\PfCPremierFacteur{\fpeval{\PfCPremierFacteur/\DiviseurBas[##2]}}
\else
- \DiviseurBas[##2]
+ \num{\DiviseurBas[##2]}
\fi
\xintifForLast{}{\times}
}
- }=\frac{\PfCPremierFacteur}{\PfCDeuxiemeFacteur}
+ }=\frac{\num{\PfCPremierFacteur}}{\num{\PfCDeuxiemeFacteur}}
\else
\tofrac{#1/#2}
\fi
@@ -293,10 +293,10 @@
\xintifboolexpr{\fpeval{#1*#2}<0}{\xintifboolexpr{#1<0}{-}{}}{}\xintFor* ##2 in{\xintSeq{1}{\LongueurH}}\do{%
\DiviseurCommun{\DiviseurHaut[##2]}{\PfCDeuxiemeFacteur}
\ifnum\PfCDivCom>1%
- \mathcolor{\useKV[ClesSimplification]{Couleur}}{\DiviseurHaut[##2]}
+ \mathcolor{\useKV[ClesSimplification]{Couleur}}{\num{\DiviseurHaut[##2]}}
\xdef\PfCDeuxiemeFacteur{\fpeval{\PfCDeuxiemeFacteur/\DiviseurHaut[##2]}}
\else
- \DiviseurHaut[##2]
+ \num{\DiviseurHaut[##2]}
\fi
\xintifForLast{}{\times}
}
@@ -304,10 +304,10 @@
\xintifboolexpr{\fpeval{#1*#2}<0}{\xintifboolexpr{#1<0}{}{-}}{}\xintFor* ##2 in{\xintSeq{1}{\LongueurB}}\do{%
\DiviseurCommun{\DiviseurBas[##2]}{\PfCPremierFacteur}
\ifnum\PfCDivCom>1%
- \mathcolor{\useKV[ClesSimplification]{Couleur}}{\DiviseurBas[##2]}
+ \mathcolor{\useKV[ClesSimplification]{Couleur}}{\num{\DiviseurBas[##2]}}
\xdef\PfCPremierFacteur{\fpeval{\PfCPremierFacteur/\DiviseurBas[##2]}}
\else
- \DiviseurBas[##2]
+ \num{\DiviseurBas[##2]}
\fi
\xintifForLast{}{\times}
}
diff --git a/macros/latex/contrib/profcollege/latex/PfCStatistiques.tex b/macros/latex/contrib/profcollege/latex/PfCStatistiques.tex
index b45111daf5..0ae0894e96 100644
--- a/macros/latex/contrib/profcollege/latex/PfCStatistiques.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCStatistiques.tex
@@ -657,11 +657,12 @@ ModeleCouleur=5%
if Qualitatif: tutu(#1); else: toto(#1); fi;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if Grille:
+ %%%%%%%%%%%%%%%% -< Ici
drawoptions(withcolor 0.75white);
for k=0 step PasGrillex until ((maxx+1)):
- trace (k*unitex,0)--(k*unitex,unitey*((floor(maxAxey/Pasy)+1)*Pasy));
+ trace (k*unitex,0)--(k*unitex,unitey*((ceiling(maxAxey/Pasy)+1)*Pasy));
endfor;
- for k=0 step PasGrilley until (floor(maxAxey/Pasy)+1)*Pasy:%((maxy+2*Pasy)):
+ for k=0 step PasGrilley until (ceiling(maxAxey/Pasy)+1)*Pasy:%((maxy+2*Pasy)):
trace (0,k*unitey)--(unitex*(maxx+1),k*unitey);
endfor;
drawoptions();
@@ -711,9 +712,9 @@ ModeleCouleur=5%
endfor;
fi;
drawarrow (0,0)--unitex*(maxx+1,0);
- drawarrow (0,0)--unitey*(0,(floor(maxAxey/Pasy)+1)*Pasy);
+ drawarrow (0,0)--unitey*(0,(ceiling(maxAxey/Pasy)+1)*Pasy);
label.lrt(TEX("\useKV[ClesStat]{Donnee}"),unitex*(maxx+1,0));
- label.urt(TEX("\useKV[ClesStat]{Effectif}"),unitey*(0,(floor(maxAxey/Pasy)+1)*Pasy));
+ label.urt(TEX("\useKV[ClesStat]{Effectif}"),unitey*(0,(ceiling(maxAxey/Pasy)+1)*Pasy));
if Qualitatif: titi(#1); else:tata(#1); fi;
\end{mplibcode}
\else
diff --git a/macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex b/macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex
index c88c18363c..3399cbecff 100644
--- a/macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex
@@ -1,7 +1,7 @@
%%%
% Tables Addition-Multiplication
%%%
-\setKVdefault[Tables]{Addition=false,Soustraction=false,Multiplication,Seul=false,Debut=0,Fin=10,Couleur=white}
+\setKVdefault[Tables]{Addition=false,Soustraction=false,Multiplication,Seul=false,Debut=0,Fin=10,Couleur=white,Inverse=false}
% pour m\'emoire
\newcommand\TableMultiplicationComplete{%
@@ -95,17 +95,68 @@
}%
}%
+\NewDocumentCommand\PfCTableInverse{om}{%
+ % #1 paramètres
+ % #2 dizaine concernée
+ \useKVdefault[Tables]%
+ \setKV[Tables]{#1}%
+ \ifnum#2=0\relax%
+ \xdef\TIDepart{2}%
+ \else%
+ \xdef\TIDepart{\fpeval{#2*10}}%
+ \fi%
+ \xdef\TIFin{\fpeval{#2*10+9}}%
+ % On sauvegarde les nombres non premiers de la dizaine
+ \xdef\PfCRetiensNonPremiersInv{}%
+ \xintFor* ##1 in{\xintSeq{\TIDepart}{\TIFin}}\do{%
+ \TestPremier{##1}%
+ \ifboolKV[ClesEra]{Premier}{}{%
+ \xdef\PfCRetiensNonPremiersInv{\PfCRetiensNonPremiersInv##1,}%
+ }%
+ }%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeNombresRetenus{\PfCRetiensNonPremiersInv}%
+ \reademptyitems%
+ \xdef\PfCRetiensIntermediaire{}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeNombresRetenuslen}}\do{%
+ \xdef\PfCRetiensIntermediaire{\PfCRetiensIntermediaire,\ListeNombresRetenus[##1]}%
+ \xintFor* ##2 in{\xintSeq{2}{\fpeval{floor(sqrt(\ListeNombresRetenus[##1]))}}}\do{%
+ \modulo{\ListeNombresRetenus[##1]}{##2}%
+ \ifnum\remainder=0\relax%
+ \xdef\PfCRetiensIntermediaire{\PfCRetiensIntermediaire/##2}%
+ \fi%
+ }%
+ }%
+ \setsepchar[*]{,*/}\ignoreemptyitems%
+ \readlist*\ListeNombresRetenusInd{\PfCRetiensIntermediaire}%
+ \reademptyitems%
+ \ensuremath{%
+ \begin{array}[t]{ccrcl}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeNombresRetenusIndlen}}\do{%
+ \xintifForFirst{}{\\}%
+ \xintFor* ##2 in{\xintSeq{2}{\listlen\ListeNombresRetenusInd[##1]}}\do{%
+ \num{\ListeNombresRetenusInd[##1,1]}\uppercase{&}=\uppercase{&}\num{\ListeNombresRetenusInd[##1,##2]}\uppercase{&}\times\uppercase{&}\quotient{\ListeNombresRetenusInd[##1,1]}{\ListeNombresRetenusInd[##1,##2]}\num{\the\intquotient}\\%
+ }
+ }
+ \end{array}%
+ }%
+}%
+
\newcommand\Tables[2][]{%
\useKVdefault[Tables]%
\setKV[Tables]{#1}%
\ifboolKV[Tables]{Seul}{%
- \ifboolKV[Tables]{Soustraction}{%
- \TableSoustractionSeule{#2}%
+ \ifboolKV[Tables]{Inverse}{%
+ \PfCTableInverse[#1]{#2}%
}{%
- \ifboolKV[Tables]{Addition}{%
- \TableAdditionSeule{#2}%
+ \ifboolKV[Tables]{Soustraction}{%
+ \TableSoustractionSeule{#2}%
}{%
- \TableMultiplicationSeule{#2}%
+ \ifboolKV[Tables]{Addition}{%
+ \TableAdditionSeule{#2}%
+ }{%
+ \TableMultiplicationSeule{#2}%
+ }%
}%
}%
}{%
diff --git a/macros/latex/contrib/profcollege/latex/PfCThales.tex b/macros/latex/contrib/profcollege/latex/PfCThales.tex
index a0ebd3b36f..ea01972c25 100644
--- a/macros/latex/contrib/profcollege/latex/PfCThales.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCThales.tex
@@ -1214,9 +1214,9 @@
\end{array}
\right\}\ifnum\NumA=\NumB \dfrac{\NomA\NomM}{\NomA\NomB}=\dfrac{\NomA\NomN}{\NomA\NomC}\else\dfrac{\NomA\NomM}{\NomA\NomB}\not=\dfrac{\NomA\NomN}{\NomA\NomC}\fi
\]
- }
+ }%
\ifboolKV[ClesThales]{Propor}{%
- \ifnum\NumA=\NumB Donc le tableau $\begin{array}{c|c}
+ \xintifboolexpr{\NumA==\NumB}{Donc le tableau $\begin{array}{c|c}
\NomA\NomM&\NomA\NomN\\
\hline
\NomA\NomB&\NomA\NomC\\
@@ -1225,8 +1225,8 @@
$\NomA$, $\NomM$, $\NomB$ sont align\'es dans le m\^eme ordre que les
points $\NomA$, $\NomN$, $\NomC$. Donc les droites $(\NomM\NomN)$
et $(\NomB\NomC)$ sont parall\`eles d'apr\`es la r\'eciproque du
- th\'eor\`eme de Thal\`es.\else%
- Donc les droites $(\NomM\NomN)$ et $(\NomB\NomC)$ ne sont pas parall\`eles.\fi
+ th\'eor\`eme de Thal\`es.}{%
+ Donc les droites $(\NomM\NomN)$ et $(\NomB\NomC)$ ne sont pas parall\`eles.}%
}{%
\xintifboolexpr{\NumA==\NumB}{%
De plus, les points $\NomA$, $\NomM$, $\NomB$ sont align\'es dans
@@ -1234,9 +1234,9 @@
droites $(\NomM\NomN)$ et $(\NomB\NomC)$ sont parall\`eles d'apr\`es
la r\'eciproque du th\'eor\`eme de Thal\`es.}{%
Donc les droites $(\NomM\NomN)$ et $(\NomB\NomC)$ ne sont pas
- parall\`eles.}
- }
-}
+ parall\`eles.}%
+ }%
+}%
\newcommand\ReciproqueThales[8][]{%
% #1 Cl\'es
diff --git a/macros/latex/contrib/profcollege/latex/PfCTicketCaisse.tex b/macros/latex/contrib/profcollege/latex/PfCTicketCaisse.tex
new file mode 100644
index 0000000000..1c460e3693
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCTicketCaisse.tex
@@ -0,0 +1,210 @@
+%%%
+% Ticket de caisse
+%%%
+\newcounter{PfCNbInsulte}%
+\setcounter{PfCNbInsulte}{0}%
+
+\NewDocumentCommand\PfCPrixInsulte{sm}{%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\PfCListeInsulte{\%,!,§,\#,*,@,-}%
+ \reademptyitems%
+ \IfBooleanTF{#1}{%
+ \MelangeListe{1,2,3,4,5,6,7}{5}%
+ }{%
+ \stepcounter{PfCNbInsulte}%
+ \MelangeListe{1,2,3,4,5,6,7}{3}%
+ }%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeInsulteMelange{\faa}%
+ \reademptyitems%
+ \ifboolKV[TicketCaisse]{Solution}{\textcolor{PfCTicketCouleurSolution}{#2}}{%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeInsulteMelangelen}}\do{%
+ \xdef\Titi{\ListeInsulteMelange[##1]}%
+ \PfCListeInsulte[\Titi]%
+ }%
+ }%
+}%
+
+\makeatletter
+\NewDocumentCommand\PrixTicket{om}{%
+ \ifboolKV[TicketCaisse]{CHF}{%
+ \DeclareSIUnit{\Tempo}{\PfCCHF}%
+ }{%
+ \ifboolKV[TicketCaisse]{CFA}{%
+ \DeclareSIUnit{\Tempo}{\PfCCFA}%
+ }{%
+ \ifboolKV[TicketCaisse]{CFP}{%
+ \DeclareSIUnit{\Tempo}{\PfCCFP}%
+ }{%
+ \ifboolKV[TicketCaisse]{US}{%
+ \DeclareSIUnit{\Tempo}{\Dollar}%
+ }{%
+ \ifboolKV[TicketCaisse]{UK}{%
+ \DeclareSIUnit{\Tempo}{\LivreSterling}%
+ }{%
+ \ifboolKV[TicketCaisse]{Euro}{%
+ \DeclareSIUnit{\Tempo}{\EuRo}%
+ }{%
+ \if@CHF%
+ \setKV[TicketCaisse]{CHF}%
+ \fi%
+ \DeclareSIUnit{\Tempo}{\DeviseDefaut}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \IfInteger{#2}{%
+ \ifboolKV[TicketCaisse]{CHF}{%
+ \si{\PfCCHF}~\num{#2}.-%
+ }{%
+ \SI[round-mode=places,round-precision=2]{#2}{\Tempo}%
+ }%
+ }{%
+ \SI[round-mode=places,round-precision=2]{#2}{\Tempo}%
+ }%
+}%
+\makeatother
+
+\setKVdefault[TicketCaisse]{Largeur=222,Especes=50,Enseigne=Au comptoir des maths,DateAchat=\today,HeureAchat=15:13:34,Taches=false,Rendu,Total,UK=false,US=false,CFA=false,CFP=false,CHF=false,Euro=false,Solution=false}
+\defKV[TicketCaisse]{Couleur=\colorlet{PfCTicketCouleurSolution}{#1}\setKV[TicketCaisse]{Solution}}
+
+\NewDocumentCommand\TicketCaisse{om}{%
+ \setcounter{PfCNbInsulte}{0}%
+ \useKVdefault[TicketCaisse]%
+ \setKV[TicketCaisse]{#1}%
+ \setsepchar[*]{,*/}%
+ \readlist*\ListeAchats{#2}%
+ % On fait trois listes pour les retenir
+ % Liste Quantités
+ \xdef\PfCFooQuantites{}%
+ \foreachitem\compteur\in\ListeAchats{%
+ \StrChar{\ListeAchats[\compteurcnt,1]}{1}[\MyLetter]%
+ \IfStrEq{\MyLetter}{!}{%
+ \StrBehind{\ListeAchats[\compteurcnt,1]}{!}[\Titi]%
+ \xdef\PfCFooQuantites{\PfCFooQuantites,\Titi}%
+ }{%
+ \xdef\PfCFooQuantites{\PfCFooQuantites,\ListeAchats[\compteurcnt,1]}%
+ }%
+ }%
+ % Liste Elements
+ \xdef\PfCFooElements{}%
+ \foreachitem\compteur\in\ListeAchats{%
+ \xdef\PfCFooElements{\PfCFooElements,\ListeAchats[\compteurcnt,2]}%
+ }%
+ % Liste Prix Unitaire
+ \xdef\PfCFooPUnitaires{}%
+ \foreachitem\compteur\in\ListeAchats{%
+ \StrChar{\ListeAchats[\compteurcnt,3]}{1}[\MyLetter]%
+ \IfStrEqCase{\MyLetter}{%
+ {!}{%
+ \StrBehind{\ListeAchats[\compteurcnt,3]}{!}[\Titi]%
+ \StrChar{\Titi}{1}[\Toto]%
+ \IfStrEq{\Toto}{*}{%
+ \StrBehind{\ListeAchats[\compteurcnt,3]}{!*}[\Tata]%
+ \xdef\PfCFooPUnitaires{\PfCFooPUnitaires,\Tata}%
+ }{%
+ \xdef\PfCFooPUnitaires{\PfCFooPUnitaires,\Titi}%
+ }%
+ }%
+ {*}{\StrBehind{\ListeAchats[\compteurcnt,3]}{*}[\Titi]%
+ \xdef\PfCFooPUnitaires{\PfCFooPUnitaires,\Titi}}%
+ }[\xdef\PfCFooPUnitaires{\PfCFooPUnitaires,\ListeAchats[\compteurcnt,3]}]%
+ }%
+ % On les lit
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeQuantites{\PfCFooQuantites}%
+ \readlist*\ListeElements{\PfCFooElements}%
+ \readlist*\ListePUnitaires{\PfCFooPUnitaires}%
+ % On calcul le coût total
+ \xdef\PfCTCTotal{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeAchatslen}}\do{%
+ \xdef\PfCTCTotal{\fpeval{\PfCTCTotal+\ListeQuantites[##1]*\ListePUnitaires[##1]}}%
+ }%
+% Le coût total est \PfCTCTotal\\
+ {\ttfamily%
+ \begin{NiceTabular}{m{107pt}m{29pt}m{36pt}m{50pt}}%
+ \CodeBefore
+ \tikz\node[opacity=0.2,yshift=-1.5cm] at ($(1-|1)!0.5!(1-|last)$) {\Large\bfseries\reflectbox{
+ \begin{tabular}{c}
+ Papier garanti\\
+ sans Phénol
+ \end{tabular}
+ }
+ };
+ \tikz\node[opacity=0.2,anchor=center,yshift=1cm] at ($(last-|1)!0.5!(last-|last)$) {\Large\bfseries\reflectbox{%
+ \faRecycle~Pensez à trier.%
+ }%
+ };%
+ \tikz\node[opacity=0.5,anchor=center,yshift=2cm] at ($(last-|1)!0.5!(last-|last)$) {\Large\bfseries\reflectbox{
+ \LogoRecyclage[Couleur=0.8white]%
+ }%
+ };%
+ \tikz\draw[fill=Ivory,opacity=0.5] (1-|1) rectangle (last-|last);%
+ \Body
+ &&&\\%
+ \Block{1-4}{\Large\bfseries\useKV[TicketCaisse]{Enseigne}}&&&\\%
+ \\%
+ \Cdots\\%
+ \\%
+ \Block[l]{}{\footnotesize\sc Description}&\Block{}{\footnotesize\sc Qte.}&\Block{}{\footnotesize\sc P.u.}&\Block[r]{}{\footnotesize\sc Prix Net}\\%
+ \\%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeAchatslen}}\do{%
+ \ListeElements[##1]&%
+ \Block{}{%
+ \footnotesize%
+ \StrChar{\ListeAchats[##1,1]}{1}[\MyLetter]%
+ \IfStrEq{\MyLetter}{!}{\PfCPrixInsulte*{\ListeQuantites[##1]}}{\xintifboolexpr{\fpeval{\ListeQuantites[##1]}==1}{}{\num{\ListeQuantites[##1]}}}%
+ }&
+ \Block[r]{}{%
+ \footnotesize
+ %Savoir si le nombre d'articles est affiché
+ \StrChar{\ListeAchats[##1,1]}{1}[\MyLetter]%
+ % Si le nombre d'articles n'est pas affiché, il faut impérativement afficher le prix unitaire
+ \IfStrEq{\MyLetter}{!}{%
+ \PrixTicket{\ListePUnitaires[##1]}%
+ }{%
+ % On regarde si on affiche le prix unitaire
+ \StrChar{\ListeAchats[##1,3]}{1}[\MyLettera]%
+ % Si c'est un !, on affiche pas
+ % Sinon, on affiche
+ \IfStrEq{\MyLettera}{!}{%
+ \PfCPrixInsulte*{\PrixTicket{\ListePUnitaires[##1]}}%
+ }{%
+ \xintifboolexpr{\fpeval{\ListeQuantites[##1]}==1}{}{%
+ \PrixTicket{\ListePUnitaires[##1]}%
+ }%
+ }%
+ }%
+ }%
+ &\Block[r]{}{%
+ \StrChar{\ListeAchats[##1,3]}{1}[\MyLetter]%
+ % Si le premier caractère est !, il faut regarder si le deuxième caractère est une étoile
+ \IfStrEq{\MyLetter}{!}{%
+ \StrChar{\ListeAchats[##1,3]}{2}[\MyLettera]%
+ \IfStrEq{\MyLettera}{*}{%
+ \PfCPrixInsulte*{\PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}}%
+ }{%
+ \PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}%
+ }%
+ }{%il faut regarder si c'est une étoile
+ \StrChar{\ListeAchats[##1,3]}{1}[\MyLettera]%
+ \IfStrEq{\MyLettera}{*}{%
+ \PfCPrixInsulte{\PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}}%
+ }{%
+ \PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}%
+ }%
+ }%
+ }\\
+ }%
+ \\%
+ \Cdots\\%
+ Total&&&\Block[r]{}{\ifboolKV[TicketCaisse]{Total}{\ifnum\thePfCNbInsulte=0\relax\PrixTicket{\PfCTCTotal}\else\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}\fi}{\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}}}\\%
+ Espèces&&&\Block[r]{}{\PrixTicket{\useKV[TicketCaisse]{Especes}}}\\%
+ Rendu&&&\Block[r]{}{\ifboolKV[TicketCaisse]{Rendu}{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}{\PfCPrixInsulte*{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}}}\\%
+ \\%
+ \Block{1-4}{\footnotesize\useKV[TicketCaisse]{DateAchat}\qquad\useKV[TicketCaisse]{HeureAchat}}&&&\\%
+ \end{NiceTabular}
+ }%
+}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCTrio.tex b/macros/latex/contrib/profcollege/latex/PfCTrio.tex
index 11355d5d79..beee6278fa 100644
--- a/macros/latex/contrib/profcollege/latex/PfCTrio.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCTrio.tex
@@ -1,9 +1,11 @@
\newlength\PfCTrioHauteur%
\newcounter{PfCTrioLettre}%
-\setKVdefault[Trio]{Largeur=15pt,Graines=false,Repere=false,Cibles=false,Ligne=1,Colonne=1,Vide=false,VideRepere=false,Relatifs=false,Ecole=false}%
+\setKVdefault[Trio]{Largeur=15pt,Graines=false,Repere=false,Cibles=false,Ligne=1,Colonne=1,Vide=false,VideRepere=false,Relatifs=false,Ecole=false,Horizontal=false,Vertical=false,DiagonaleM=false,DiagonaleD=false,NonAlea=false,NbSolutions=false}%
\defKV[Trio]{Graine=\setKV[Trio]{Graines}}%
\defKV[Trio]{Cible=\setKV[Trio]{Cibles}}%
+\defKV[Trio]{Liste=\setKV[Trio]{NonAlea}}%
+\defKV[Trio]{NbSolution=\setKV[Trio]{NbSolutions}}%
\NewDocumentCommand\TrioCalculs{mmm}{%
Les combinaisons Trio de #1, #2 et #3 sont :%
@@ -17,129 +19,142 @@
\end{enumerate}%
}%
+\NewDocumentCommand\TrioTestCible{O{\useKV[Trio]{Cible}}mmm}{%
+ \xintifboolexpr{%
+ \fpeval{#2*#3+#4}==#1%
+ || \fpeval{#2*#3-#4}==#1%
+ || \fpeval{#3*#4+#2}==#1%
+ || \fpeval{#3*#4-#2}==#1%
+ || \fpeval{#4*#2+#3}==#1%
+ || \fpeval{#4*#2-#3}==#1%
+ % ajout pour une cible négative
+ || \fpeval{#3-#4*#2}==#1%
+ || \fpeval{#4-#2*#3}==#1%
+ || \fpeval{#2-#3*#4}==#1%
+ }{\xdef\PfCRetourTestCible{1}}{\xdef\PfCRetourTestCible{0}}%
+}%
+
\NewDocumentCommand\Trio{o}{%
- \setcounter{PfCTrioLettre}{0}
+ \setcounter{PfCTrioLettre}{0}%
\useKVdefault[Trio]%
\setKV[Trio]{#1}%
+ \xdef\PfCTitiH{0}%
+ \xdef\PfCTitiV{0}%
+ \xdef\PfCTitiDM{0}%
+ \xdef\PfCTitiDD{0}%
+ \ifboolKV[Trio]{Horizontal}{\xdef\PfCTitiV{1}\xdef\PfCTitiDM{1}\xdef\PfCTitiDD{1}}{}%
+ \ifboolKV[Trio]{Vertical}{\xdef\PfCTitiH{1}\xdef\PfCTitiDM{1}\xdef\PfCTitiDD{1}}{}%
+ \ifboolKV[Trio]{DiagonaleM}{\xdef\PfCTitiH{1}\xdef\PfCTitiV{1}\xdef\PfCTitiDD{1}}{}%
+ \ifboolKV[Trio]{DiagonaleD}{\xdef\PfCTitiH{1}\xdef\PfCTitiV{1}\xdef\PfCTitiDM{1}}{}%
\ifboolKV[Trio]{Graines}{\PfCGraineAlea{\useKV[Trio]{Graine}}}{}%
- \ifboolKV[Trio]{Ecole}{\xdef\PfCTrioMaxA{5}\xdef\PfCTrioMaxB{3}}{\xdef\PfCTrioMaxA{7}\xdef\PfCTrioMaxB{5}}
+ \ifboolKV[Trio]{Ecole}{\xdef\PfCTrioMaxA{5}\xdef\PfCTrioMaxB{3}}{\xdef\PfCTrioMaxA{7}\xdef\PfCTrioMaxB{5}}%
\ifboolKV[Trio]{Repere}{\xdef\PfCTrioNbCases{\fpeval{\PfCTrioMaxA+1}}}{\xdef\PfCTrioNbCases{\PfCTrioMaxA}}%
% On définit la liste de nombres
- \ifboolKV[Trio]{Relatifs}{%
- \xdef\PfCTrioFoo{-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4}%
+ \ifboolKV[Trio]{NonAlea}{%
+ \xdef\faa{\useKV[Trio]{Liste}}%
}{%
- \ifboolKV[Trio]{Ecole}{%
- \xdef\PfCTrioFoo{1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5}%
+ \ifboolKV[Trio]{Relatifs}{%
+ \xdef\PfCTrioFoo{-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4}%
}{%
- \xdef\PfCTrioFoo{1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9}%
- }%
+ \ifboolKV[Trio]{Ecole}{%
+ \xdef\PfCTrioFoo{1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5}%
+ }{%
+ \xdef\PfCTrioFoo{1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9}%
+ }%
+ }%
+ \ifboolKV[Trio]{Ecole}{\MelangeListe{\PfCTrioFoo}{25}}{\MelangeListe{\PfCTrioFoo}{49}}%
}%
- \ifboolKV[Trio]{Ecole}{\MelangeListe{\PfCTrioFoo}{25}}{\MelangeListe{\PfCTrioFoo}{49}}%
\setsepchar{,}\ignoreemptyitems%
- \readlist*\PfCTrioMelange{\faa}%
+ \greadlist*\PfCTrioMelange{\faa}%
\reademptyitems%
+ %%%%
+ \ifboolKV[Trio]{Repere}{%
+ \xdef\PfCTrioAjout{1}%
+ }{%
+ \xdef\PfCTrioAjout{0}%
+ }%
\setlength{\PfCTrioHauteur}{\useKV[Trio]{Largeur}+\tabcolsep}%
- \begin{NiceTabular}{*{\PfCTrioNbCases}{m{\useKV[Trio]{Largeur}}}}[hvlines]%
+ \begin{NiceTabular}{*{\PfCTrioNbCases}{m{\useKV[Trio]{Largeur}}}}[hvlines,name=TS]%
\CodeBefore%
\ifboolKV[Trio]{Cibles}{%
\ifboolKV[Trio]{Repere}{%
\xdef\PfCTrioAjout{1}%
}{%
- \xdef\PfCTrioAjout{0}
+ \xdef\PfCTrioAjout{0}%
}%
- % Calculs des horizontaux
+ % Calculs des horizontaux
+ \ifnum\fpeval{\PfCTitiH}=0\relax
\xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
\xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
\xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
\xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+1}]}%
\xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+2}]}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{\tikz\draw[fill=Cornsilk,line width=2pt] (\fpeval{##2+\PfCTrioAjout}-|\fpeval{##1+\PfCTrioAjout}) rectangle (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+3+\PfCTrioAjout});\xintBreakFor}{}%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{\tikz\draw[fill=Cornsilk,line width=2pt] (\fpeval{##2+\PfCTrioAjout}-|\fpeval{##1+\PfCTrioAjout}) rectangle (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+3+\PfCTrioAjout});\xintBreakFor}{}%
}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \xintBreakFor}{}%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xintBreakFor
+ }{}%
}%
+ \fi
% Calculs des verticaux
- \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
- \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{\tikz\draw[fill=LightSteelBlue,line width=2pt] (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+\PfCTrioAjout}) rectangle (\fpeval{##1+3+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout});\xintBreakFor}{}%
+ \ifnum\fpeval{\PfCTitiV}=0\relax
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{\tikz\draw[fill=LightSteelBlue,line width=2pt] (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+\PfCTrioAjout}) rectangle (\fpeval{##1+3+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout});\xintBreakFor}{}%
+ }%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xintBreakFor
+ }{}%
}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \xintBreakFor}{}%
- }%
+ \fi
% Calculs des diag positives (descendantes)
- \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
- \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2)+##1+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2+1)+##1+2}]}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+\PfCTrioAjout}-|\fpeval{##1+\PfCTrioAjout}) rectangle (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+1+\PfCTrioAjout});%
- \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+1+\PfCTrioAjout}) rectangle (\fpeval{##2+2+\PfCTrioAjout}-|\fpeval{##1+2+\PfCTrioAjout});%
- \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+2+\PfCTrioAjout}-|\fpeval{##1+2+\PfCTrioAjout}) rectangle (\fpeval{##2+3+\PfCTrioAjout}-|\fpeval{##1+3+\PfCTrioAjout});%
- \xintBreakFor}{}%
+ \ifnum\fpeval{\PfCTitiDD}=0\relax
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2)+##1+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2+1)+##1+2}]}%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+\PfCTrioAjout}-|\fpeval{##1+\PfCTrioAjout}) rectangle (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+1+\PfCTrioAjout});%
+ \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+1+\PfCTrioAjout}) rectangle (\fpeval{##2+2+\PfCTrioAjout}-|\fpeval{##1+2+\PfCTrioAjout});%
+ \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+2+\PfCTrioAjout}-|\fpeval{##1+2+\PfCTrioAjout}) rectangle (\fpeval{##2+3+\PfCTrioAjout}-|\fpeval{##1+3+\PfCTrioAjout});%
+ \xintBreakFor}{}%
+ }%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xintBreakFor
+ }{}%
}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \xintBreakFor}{}%
- }%
- % Calculs des diagonale négatives (montantes)
- \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
- \xintFor* ##1 in{\xintSeq{2}{\fpeval{\PfCTrioMaxB+1}}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-2)+##2+2}]}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout+1}-|\fpeval{##2+\PfCTrioAjout}) rectangle (\fpeval{##1+2+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout});%
- \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout}) rectangle (\fpeval{##1+1+\PfCTrioAjout}-|\fpeval{##2+2+\PfCTrioAjout});%
- \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1-1+\PfCTrioAjout}-|\fpeval{##2+2+\PfCTrioAjout}) rectangle (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+3+\PfCTrioAjout});%
- \xintBreakFor%
+ \fi
+ % Calculs des diagonales négatives (montantes)
+ \ifnum\fpeval{\PfCTitiDM}=0\relax
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xintFor* ##1 in{\xintSeq{2}{\fpeval{\PfCTrioMaxB+1}}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-2)+##2+2}]}%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout+1}-|\fpeval{##2+\PfCTrioAjout}) rectangle (\fpeval{##1+2+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout});%
+ \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout}) rectangle (\fpeval{##1+1+\PfCTrioAjout}-|\fpeval{##2+2+\PfCTrioAjout});%
+ \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1-1+\PfCTrioAjout}-|\fpeval{##2+2+\PfCTrioAjout}) rectangle (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+3+\PfCTrioAjout});%
+ \xintBreakFor%
+ }{}%
+ }%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xintBreakFor
}{}%
}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \xintBreakFor}{}%
- }%
+ \fi
}{}%
\Body
\ifboolKV[Trio]{Repere}{%
@@ -155,11 +170,100 @@
}\\
}%
\end{NiceTabular}%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifboolKV[Trio]{NbSolutions}{%
+ \xdef\PfCNbSolutionH{0}%
+ \xdef\PfCNbSolutionV{0}%
+ \xdef\PfCNbSolutionDD{0}%
+ \xdef\PfCNbSolutionDM{0}%
+ \xdef\NbCibleSolution{\useKV[Trio]{NbSolution}}%
+ % Calculs des horizontaux
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+2}]}%
+ \TrioTestCible[\NbCibleSolution]{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xdef\PfCNbSolutionH{\fpeval{\PfCNbSolutionH+1}}%
+ \modulo{\PfCNbSolutionH}{2}%
+ \ifnum\remainder=0\relax%
+ \tikz[remember picture,overlay,transform canvas={yshift=0.25\PfCTrioHauteur}]\draw[Crimson,line width=2pt] (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+\PfCTrioAjout}.center) -- (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+3+\PfCTrioAjout-1}.center);%
+ \else%
+ \tikz[remember picture,overlay,transform canvas={yshift=-0.25\PfCTrioHauteur}]\draw[Crimson,line width=2pt] (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+\PfCTrioAjout}.center) -- (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+3+\PfCTrioAjout-1}.center);%
+ \fi%
+ }{}%
+ }%
+ }%
+ % Calculs des verticaux
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
+ \TrioTestCible[\NbCibleSolution]{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xdef\PfCNbSolutionV{\fpeval{\PfCNbSolutionV+1}}%
+ \modulo{\PfCNbSolutionV}{2}%
+ \ifnum\remainder=0\relax%
+ \tikz[remember picture,overlay,transform canvas={xshift=-0.25\PfCTrioHauteur}]\draw[NavyBlue,line width=2pt] (TS-\fpeval{##1+\PfCTrioAjout}-\fpeval{##2+\PfCTrioAjout}.center) -- (TS-\fpeval{##1+3+\PfCTrioAjout-1}-\fpeval{##2+\PfCTrioAjout}.center);%
+ \else%
+ \tikz[remember picture,overlay,transform canvas={xshift=0.25\PfCTrioHauteur}]\draw[NavyBlue,line width=2pt] (TS-\fpeval{##1+\PfCTrioAjout}-\fpeval{##2+\PfCTrioAjout}.center) -- (TS-\fpeval{##1+3+\PfCTrioAjout-1}-\fpeval{##2+\PfCTrioAjout}.center);%
+ \fi%
+ }{}%
+ }%
+ }%
+ % Calculs des diag positives (descendantes)
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2)+##1+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2+1)+##1+2}]}%
+ \TrioTestCible[\NbCibleSolution]{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xdef\PfCNbSolutionDD{\fpeval{\PfCNbSolutionDD+1}}%
+ \modulo{\PfCNbSolutionDD}{2}%
+ \ifnum\remainder=0\relax%
+ \tikz[remember picture,overlay]\draw[Orchid,line width=2pt,transform canvas={xshift=0.25\PfCTrioHauteur,yshift=0.25\PfCTrioHauteur}] (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+\PfCTrioAjout}.center) to (TS-\fpeval{##2+3+\PfCTrioAjout-1}-\fpeval{##1+2+\PfCTrioAjout}.center);%
+ \else%
+ \tikz[remember picture,overlay]\draw[Orchid,line width=2pt,transform canvas={xshift=-0.25\PfCTrioHauteur,yshift=-0.25\PfCTrioHauteur}] (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+\PfCTrioAjout}.center) to (TS-\fpeval{##2+3+\PfCTrioAjout-1}-\fpeval{##1+2+\PfCTrioAjout}.center);%
+ \fi%
+ }{}%
+ }%
+ }%
+ % Calculs des diag négatives (ascendantes)
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xintFor* ##1 in{\xintSeq{2}{\fpeval{\PfCTrioMaxB+1}}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-2)+##2+2}]}%
+ \TrioTestCible[\NbCibleSolution]{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xdef\PfCNbSolutionDM{\fpeval{\PfCNbSolutionDM+1}}%
+ \modulo{\PfCNbSolutionDM}{2}%
+ \ifnum\remainder=0\relax%
+ \tikz[remember picture,overlay]\draw[Lavender,line width=2pt,transform canvas={xshift=-0.25\PfCTrioHauteur,yshift=0.25\PfCTrioHauteur}] (TS-\fpeval{##1+\PfCTrioAjout+1}-\fpeval{##2+\PfCTrioAjout}.center) to (TS-\fpeval{##1+\PfCTrioAjout-1}-\fpeval{##2+3+\PfCTrioAjout-1}.center);%
+ \else%
+ \tikz[remember picture,overlay]\draw[Lavender,line width=2pt,transform canvas={xshift=0.25\PfCTrioHauteur,yshift=-0.25\PfCTrioHauteur}] (TS-\fpeval{##1+\PfCTrioAjout+1}-\fpeval{##2+\PfCTrioAjout}.center) to (TS-\fpeval{##1+\PfCTrioAjout-1}-\fpeval{##2+3+\PfCTrioAjout-1}.center);%
+ \fi%
+ }{}%
+ }%
+ }%
+ }{}%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}%
\NewDocumentCommand\TrioCourt{o}{%
\useKVdefault[Trio]%
\setKV[Trio]{#1}%
+ \xdef\PfCTitiH{0}%
+ \xdef\PfCTitiV{0}%
+ \xdef\PfCTitiDM{0}%
+ \xdef\PfCTitiDD{0}%
+ \ifboolKV[Trio]{Horizontal}{\xdef\PfCTitiV{1}\xdef\PfCTitiDM{1}\xdef\PfCTitiDD{1}}{}%
+ \ifboolKV[Trio]{Vertical}{\xdef\PfCTitiH{1}\xdef\PfCTitiDM{1}\xdef\PfCTitiDD{1}}{}%
+ \ifboolKV[Trio]{DiagonaleM}{\xdef\PfCTitiH{1}\xdef\PfCTitiV{1}\xdef\PfCTitiDD{1}}{}%
+ \ifboolKV[Trio]{DiagonaleD}{\xdef\PfCTitiH{1}\xdef\PfCTitiV{1}\xdef\PfCTitiDM{1}}{}%
\setcounter{PfCTrioLettre}{\useKV[Trio]{Colonne}-1}%
\ifboolKV[Trio]{Repere}{\xdef\PfCTrioNbCases{4}}{\xdef\PfCTrioNbCases{3}}%
\setlength{\PfCTrioHauteur}{\useKV[Trio]{Largeur}+\tabcolsep}%
@@ -169,101 +273,81 @@
\ifboolKV[Trio]{Repere}{%
\xdef\PfCTrioAjout{1}%
}{%
- \xdef\PfCTrioAjout{0}
+ \xdef\PfCTrioAjout{0}%
}%
% Calculs des horizontaux
- \xintFor* ##2 in{\xintSeq{\fpeval{\useKV[Trio]{Ligne}}}{\fpeval{\useKV[Trio]{Ligne}+2}}}\do{%
- \xintFor* ##1 in{\xintSeq{\fpeval{\useKV[Trio]{Colonne}}}{\fpeval{\useKV[Trio]{Colonne}}}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+2}]}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{\tikz\draw[fill=Cornsilk,line width=2pt] (\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});\xintBreakFor}{}%
+ \ifnum\fpeval{\PfCTitiH}=0\relax
+ \xintFor* ##2 in{\xintSeq{\fpeval{\useKV[Trio]{Ligne}}}{\fpeval{\useKV[Trio]{Ligne}+2}}}\do{%
+ \xintFor* ##1 in{\xintSeq{\fpeval{\useKV[Trio]{Colonne}}}{\fpeval{\useKV[Trio]{Colonne}}}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+2}]}%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{\tikz\draw[fill=Cornsilk,line width=2pt] (\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});\xintBreakFor}{}%
+ }%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xintBreakFor
+ }{}%
}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \xintBreakFor}{}%
- }%
+ \fi%
% Calculs des verticaux
- \xintFor* ##2 in{\xintSeq{\fpeval{\useKV[Trio]{Colonne}}}{\fpeval{\useKV[Trio]{Colonne}+2}}}\do{%
- \xintFor* ##1 in{\xintSeq{\useKV[Trio]{Ligne}}{\useKV[Trio]{Ligne}}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{\tikz\draw[fill=LightSteelBlue,line width=2pt] (\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});\xintBreakFor}{}%
+ \ifnum\fpeval{\PfCTitiV}=0\relax
+ \xintFor* ##2 in{\xintSeq{\fpeval{\useKV[Trio]{Colonne}}}{\fpeval{\useKV[Trio]{Colonne}+2}}}\do{%
+ \xintFor* ##1 in{\xintSeq{\useKV[Trio]{Ligne}}{\useKV[Trio]{Ligne}}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{\tikz\draw[fill=LightSteelBlue,line width=2pt] (\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});\xintBreakFor}{}%
+ }%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xintBreakFor
+ }{}%
}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \xintBreakFor}{}%
- }%
+ \fi
% Calculs des diag positives (descendantes)
- \xintFor* ##2 in{\xintSeq{\useKV[Trio]{Ligne}}{\useKV[Trio]{Ligne}}}\do{%
- \xintFor* ##1 in{\xintSeq{\useKV[Trio]{Colonne}}{\useKV[Trio]{Colonne}}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2)+##1+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2+1)+##1+2}]}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
- \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
- \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
- \xintBreakFor}{}%
+ \ifnum\fpeval{\PfCTitiDD}=0\relax
+ \xintFor* ##2 in{\xintSeq{\useKV[Trio]{Ligne}}{\useKV[Trio]{Ligne}}}\do{%
+ \xintFor* ##1 in{\xintSeq{\useKV[Trio]{Colonne}}{\useKV[Trio]{Colonne}}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2)+##1+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2+1)+##1+2}]}%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
+ \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
+ \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
+ \xintBreakFor}{}%
+ }%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xintBreakFor
+ }{}%
}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \xintBreakFor}{}%
- }%
- % Calculs des diagonale négatives (montantes)
- \xintFor* ##2 in{\xintSeq{\useKV[Trio]{Colonne}}{\useKV[Trio]{Colonne}}}\do{%
- \xintFor* ##1 in{\xintSeq{\fpeval{\useKV[Trio]{Ligne}}}{\fpeval{\useKV[Trio]{Ligne}}}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2+2}]}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
- \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
- \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
- \xintBreakFor%
+ \fi
+ % Calculs des diagonales négatives (montantes)
+ \ifnum\fpeval{\PfCTitiDM}=0\relax
+ \xintFor* ##2 in{\xintSeq{\useKV[Trio]{Colonne}}{\useKV[Trio]{Colonne}}}\do{%
+ \xintFor* ##1 in{\xintSeq{\fpeval{\useKV[Trio]{Ligne}}}{\fpeval{\useKV[Trio]{Ligne}}}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2+2}]}%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
+ \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
+ \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});%
+ \xintBreakFor%
+ }{}%
+ }%
+ \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}%
+ \xintifboolexpr{\PfCRetourTestCible==1}{%
+ \xintBreakFor
}{}%
}%
- \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}%
- ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{%
- \xintBreakFor}{}%
- }%
+ \fi%
}{}%
\Body
\ifboolKV[Trio]{Repere}{%
diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
index dd1f5c9237..d09cfda988 100644
--- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty
+++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
@@ -2,9 +2,9 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2024/01/22}%
+\def\filedate{2024/03/24}%
\let\PfCfiledate\filedate%
-\def\fileversion{0.99-z-z}%
+\def\fileversion{0.99-A-b}%
\let\PfCfileversion\fileversion%
\ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]%
@@ -14,6 +14,20 @@
\newif\if@shellescape \@shellescapetrue%
\newif\if@amssymb \@amssymbtrue%
+%
+\newif\if@Euro \@Eurotrue
+\newif\if@CFA \@CFAfalse
+\newif\if@CFP \@CFPfalse
+\newif\if@CHF \@CHFfalse
+\newif\if@US \@USfalse
+\newif\if@UK \@UKfalse
+
+\DeclareOption{CFA}{\@Eurofalse\@CFAtrue}%
+\DeclareOption{CFP}{\@Eurofalse\@CFPtrue}%
+\DeclareOption{CHF}{\@Eurofalse\@CHFtrue}%
+\DeclareOption{UK}{\@Eurofalse\@UKtrue}%
+\DeclareOption{US}{\@Eurofalse\@UStrue}%
+%
\DeclareOption{nonshellescape}{\@shellescapefalse}%
\DeclareOption{nonamssymb}{\@amssymbfalse}%
\ProcessOptions\relax%
@@ -25,8 +39,8 @@
% mathématiques
\RequirePackage{siunitx}%
\sisetup{%
- locale=FR,%
- mode = match, propagate-math-font = true,%
+ locale=FR,%mode = match,
+ propagate-math-font = true,%
reset-math-version = false, reset-text-family = false,%
reset-text-series = false, reset-text-shape = false,%
text-family-to-math = true, text-series-to-math = true,%
@@ -48,6 +62,30 @@
\DeclareSIUnit{\EuRo}{€}%
\DeclareSIUnit{\Dollar}{\$}%
\DeclareSIUnit{\LivreSterling}{£}%
+\DeclareSIUnit{\PfCCFA}{F.C.F.A.}%
+\DeclareSIUnit{\PfCCFP}{F.C.F.P.}%
+\DeclareSIUnit{\PfCCHF}{CHF}%
+
+%
+\if@CFA%
+ \DeclareSIUnit{\DeviseDefaut}{F.C.F.A.}%
+\fi%
+\if@CFP%
+ \DeclareSIUnit{\DeviseDefaut}{F.C.F.P.}%
+\fi%
+\if@CHF%
+ \DeclareSIUnit{\DeviseDefaut}{CHF}%
+\fi%
+\if@Euro%
+ \DeclareSIUnit{\DeviseDefaut}{€}%
+\fi%
+\if@US%
+ \DeclareSIUnit{\DeviseDefaut}{\Dollar}%
+\fi%
+\if@UK%
+ \DeclareSIUnit{\DeviseDefaut}{\LivreSterling}%
+\fi%
+
\RequirePackage[table,svgnames]{xcolor}%Gestion des couleurs
%\PassOptionsToPackage{table,svgnames}{xcolor}
@@ -88,7 +126,6 @@
\RequirePackage{multido}%
\RequirePackage{xlop}%
-\RequirePackage{xfp}%
\RequirePackage{tcolorbox}%
\tcbuselibrary{breakable,external,fitting,hooks,magazine,poster,raster,skins,theorems,listings,listingsutf8}
@@ -98,7 +135,7 @@
%https://tex.stackexchange.com/questions/58656/best-way-to-draw-a-chevron-diagram-using-tikz
\usetikzlibrary{calc,shapes,arrows,tikzmark,chains,positioning,shapes.symbols,babel,fit,backgrounds}%
-\RequirePackage{suffix}%pour la commande étoilée
+%\RequirePackage{suffix}%pour la commande étoilée
\RequirePackage{multicol}%
@@ -107,7 +144,7 @@
\RequirePackage{stackengine}%
\RequirePackage[thicklines]{cancel}%
-\RequirePackage{fontawesome5}%Pour l'environnement Twitter
+\RequirePackage{fontawesome5}%
\RequirePackage{pifont}%Pour la commande \Autonomie
\RequirePackage{nicematrix}%
\NiceMatrixOptions{allow-duplicate-names}%
@@ -115,14 +152,14 @@
\let\myoldmulticolumn\multicolumn%
\AtBeginEnvironment{tabular}{\let\multicolumn\myoldmulticolumn}%
-\RequirePackage{multirow}%
+%\RequirePackage{multirow}%
\RequirePackage{longtable}
\RequirePackage{fmtcount}%
\FCloadlang{french}%
% https://stackoverflow.com/questions/3391103/how-to-make-the-grayed-round-box-using-tiks
-\RequirePackage{environ}%
+%\RequirePackage{environ}%
%%%%% Quelques besoins particuliers
@@ -254,28 +291,6 @@
\newlength{\LongBoitePoint}
-\NewDocumentCommand\PointsSuspensionold{sm}{%
- \setbox2=\hbox{\ldotp}%
- \setlength{\LongBoitePoint}{\wd2}%
- \IfBooleanTF{#1}{%
- \Suspensionfill%
- }{%
- \setbox1=\hbox{#2}%
- \StrLen{#2}[\LongueurPoints]%
- \ifmmode%
- \mathinner{%
- \xintFor* ##1 in {\xintSeq{1}{\LongueurPoints}}\do{%
- \ldotp%
- }%
- }%
- \else%
- \xintFor* ##1 in {\xintSeq{1}{\fpeval{round(\wd1/\wd2)}}}\do{%
- \ldotp%
- }%
- \fi%
- }%
-}%
-
\NewDocumentCommand\PointsSuspension{m}{%
\setbox2=\hbox{\ldotp}%
\setlength{\LongBoitePoint}{\wd2}%
@@ -305,7 +320,6 @@
\kern\z@}%
\NewDocumentCommand\PfCdotover{}{\leavevmode\cleaders\hb@xt@ .22em{\hss $\cdot$\hss}\hfill\kern\z@}%
-
\makeatother%
\NewDocumentCommand\pointilles{o}{%
@@ -519,6 +533,37 @@
\reademptyitems%
}%
+\newcommand\MelangeListeNewTwo[2]{%
+ % #1 Liste à mélanger
+ % #2 Nombre d'éléments à conserver
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeInter{#1}%
+% \xdef\faa{}% Liste construite
+ \xdef\fii{}% Liste détruite
+ % on crée les #2 premieres solutions.
+ \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
+ \xintifboolexpr{\ListeInterlen>1}{%
+ \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
+ \ifnum\fpeval{##1}=1\relax
+ \xdef\faa{\ListeInter[\Alea]}%
+ \else
+ \xdef\faa{\faa,\ListeInter[\Alea]}%
+ \fi
+ \xdef\fii{}%
+ \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
+ \xintifboolexpr{##2 == \Alea}{%
+ }{%
+ \xdef\fii{\fii \ListeInter[##2],}%
+ }%
+ }%
+ }{%
+ \xdef\faa{\faa \ListeInter[1]}%
+ }%
+ \readlist*\ListeInter{\fii}%
+ }%
+ \reademptyitems%
+}%
+
%%%
% Smiley
%%% https://tex.stackexchange.com/questions/3695/smileys-in-latex/227226
@@ -708,12 +753,15 @@
\setsepchar[*]{,*/}\ignoreemptyitems
\readlist*\ListeMateriaux{aluminium/'/2.7,chêne/e~/0.69,bouleau/e~/0.65,sapin/e~/0.45,polystyrène/e~/1.04,porcelaine/la/2.5,acier/'/7.85,cuivre/e~/8.92,fer/e~/7.86,or/'/19.3,argent/'/10.5,bronze/e~/8.4,plomb/e~/11.35,marbre/e~/2.75,laiton/e~/7.3,titane/e~/4.5,PVC/e~/1.38}
-\setsepchar{,}
+\setsepchar{,}\reademptyitems
%Internationalisation
\def\PfCSymbolTimes{\times}%
\def\PfCSymbolDiv{\div}%
+\input{PfCTicketCaisse}
+\input{PfCRecyclage}
+\input{PfCDontCountDots}
\input{PfCConversion}
\input{PfCCritere}
\input{PfCLego}
@@ -842,7 +890,7 @@
%%%
\newcommand\Puissances[2]{%
\ensuremath{%
- \xintifboolexpr{#2==0}{1}{\xintifboolexpr{#2>0}{\xdef\TotalP{\fpeval{#2-1}}#1\multido{\i=1+1}{\TotalP}{\times#1}}{\xdef\TotalP{\fpeval{-#2-1}}\frac{1}{#1\multido{\i=1+1}{\TotalP}{\times#1}}}}%
+ \xintifboolexpr{#2==0}{1}{\xintifboolexpr{#2>0}{\xdef\TotalP{\fpeval{#2-1}}#1\xintFor* ##1 in{\xintSeq{1}{\TotalP}}\do{\times#1}}{\xdef\TotalP{\fpeval{-#2-1}}\frac{1}{#1\xintFor* ##1 in{\xintSeq{1}{\TotalP}}\do{\times#1}}}}%
}%
}%
diff --git a/macros/latex/contrib/profcollege/metapost/PfCCalculatrice.mp b/macros/latex/contrib/profcollege/metapost/PfCCalculatrice.mp
index c308ec750c..78f07bda2d 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCCalculatrice.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCCalculatrice.mp
@@ -145,10 +145,10 @@ vardef Test(expr cptk)(text cptnt)=
elseif substring(cptk,cptk+1) of cptnt=")":draw Affichage("01000001000001000010000100010001000") shifted(Decalage);
elseif substring(cptk,cptk+1) of cptnt="*":draw Affichage("00000001001010101110101010010000000") shifted(Decalage);
elseif substring(cptk,cptk+1) of cptnt="+":draw Affichage("00000001000010011111001000010000000") shifted(Decalage);
- elseif substring(cptk,cptk+1) of cptnt=",":draw Affichage("00000000000000000000011000010001000") shifted(Decalage);
+% elseif substring(cptk,cptk+1) of cptnt=",":draw Affichage("00000000000000000000011000010001000") shifted(Decalage);
elseif substring(cptk,cptk+1) of cptnt="-":draw Affichage("00000000000000011111000000000000000") shifted(Decalage);
elseif substring(cptk,cptk+1) of cptnt=".":draw Affichage("00000000000000000000000000110001100") shifted(Decalage);
- elseif substring(cptk,cptk+1) of cptnt="/":draw Affichage("00000000010001000100010001000000000") shifted(Decalage);
+% elseif substring(cptk,cptk+1) of cptnt="/":draw Affichage("00000000010001000100010001000000000") shifted(Decalage);
elseif substring(cptk,cptk+1) of cptnt=":":if Math=true:
draw Affichage("00000000000000000000000000000000000") shifted(Decalage);
else:
@@ -172,6 +172,7 @@ vardef Test(expr cptk)(text cptnt)=
elseif substring(cptk,cptk+1) of cptnt="$":draw Affichage("00000000000000100001000010000111111") shifted(Decalage);
elseif substring(cptk,cptk+1) of cptnt="^":draw Affichage("00100010101000100000000000000000000") shifted(Decalage);
elseif substring(cptk,cptk+1) of cptnt="_":draw Affichage("11111111111111111111111111111111111") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="~":draw Affichage("01000010000111001000010000100001000") shifted(Decalage);
fi;
enddef;
diff --git a/macros/latex/contrib/profcollege/metapost/PfCMonde.mp b/macros/latex/contrib/profcollege/metapost/PfCMonde.mp
index 11051483e4..fb3064cefd 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCMonde.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCMonde.mp
@@ -32,6 +32,9 @@ payscolor=tan;
vardef flamme=reverse(2mm*(0.5,1){dir90}..2mm*(0.75,1.5)..{dir90}2mm*(1,2))--2mm*(0.5,1){dir=-90}..2mm*(1,0.5)..{dir=90}2mm*(1.5,1)--((2mm*(0.5,1){dir90}..2mm*(0.75,1.5)..{dir90}2mm*(1,2)) reflectedabout (2mm*(1,0),2mm*(1,0)+2mm*(0,1)))--cycle
enddef;
+%
+pair poubelle;
+
%Les marques
string marque_p;
@@ -629,13 +632,23 @@ vardef lecturep(expr nomfichier,fond)=
nbpts:=scantokens readfrom nomfichier;
numeric ll;
ll=0;
- for k=1 upto nbpts:
+ if nbpts<Allegee:
+ Alleg:=4;
+ else:
+ Alleg:=Allegee;
+ fi;
+% for k=1 upto nbpts:
+ for k=1 upto (nbpts div Alleg):
pair latlon;
- latlon=scantokens readfrom nomfichier;
+% latlon=scantokens readfrom nomfichier;
+% latlon=((scantokens readfrom nomfichier)+(scantokens readfrom nomfichier)+(scantokens readfrom nomfichier))/3;
+ latlon=((scantokens readfrom nomfichier) for l=2 upto Alleg:
+ +(scantokens readfrom nomfichier)
+ endfor)/Alleg;
if projection="mercator":
- Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60))
+ Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60));
elseif projection="winkel":
- Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60))
+ Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60));
elseif projection="cylindrique":
Coord[k]=cylindriquec(xpart(latlon/60),ypart(latlon/60));
elseif projection="simple":
@@ -661,11 +674,14 @@ vardef lecturep(expr nomfichier,fond)=
fi;
if ll>0:
pays=Coord[1]
- for l=4 step 3 until ll:%upto ll:
+% for l=4 step 3 until ll:%upto ll:4-3
+ for l=2 upto (nbpts div Alleg):
--Coord[l]
endfor;
if noncolore=true:
- fill pays--cycle withcolor payscolor;
+ if Impression=false:
+ fill pays--cycle withcolor payscolor;
+ fi;
else:
fill pays--cycle withcolor fond;
fi;
@@ -689,9 +705,20 @@ vardef Lectureilesp=
fond=scantokens readfrom nomfichiermul;
numeric ll;
ll=0;
- for k=1 upto nbpts:
+%%%%%%%%%%%%
+ if nbpts<Allegee:
+ Alleg:=1;
+ else:
+ Alleg:=Allegee;
+ fi;
+ %%%%%%%%
+% for k=1 upto nbpts:
+ for k=1 upto (nbpts div Alleg):
pair latlon;
- latlon=scantokens readfrom nomfichiermul;
+% latlon=scantokens readfrom nomfichiermul;
+ latlon=((scantokens readfrom nomfichiermul) for l=2 upto Alleg:
+ +(scantokens readfrom nomfichiermul)
+ endfor)/Alleg;
if projection="mercator":
Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60));
elseif projection="winkel":
@@ -716,13 +743,14 @@ vardef Lectureilesp=
endfor;
path pays;
if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
- ll:=nbpts
+ ll:=(nbpts div Alleg)
fi;
if ll>0:
pays=Coord[1]
- for l=2 upto ll:
+% for l=2 upto ll:
+ for l=2 upto (nbpts div Alleg):
--Coord[l]
- endfor;
+ endfor;
if noncolore=true:
fill pays--cycle withcolor payscolor;
else:
@@ -730,6 +758,12 @@ vardef Lectureilesp=
fi;
draw pays;
fi;
+ % rustine pour tout lire chaque partie de Ile.dat
+ if Alleg>1:
+ for po=1 upto (nbpts mod Alleg):
+ poubelle:=scantokens readfrom nomfichiermul;
+ endfor;
+ fi;
endfor;
closefrom nomfichiermul;
if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple"):
diff --git a/macros/latex/contrib/profcollege/metapost/PfCObjets.mp b/macros/latex/contrib/profcollege/metapost/PfCObjets.mp
index 0fe551dc9c..3b47a88983 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCObjets.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCObjets.mp
@@ -751,6 +751,37 @@ vardef Objetsphere[](expr Rn)=
apj.@:=apj-1;
enddef;
+vardef Objetdemispherebasse[](expr Rn)=
+ Outcolor.@:=outcolor;
+ Incolor.@:=incolor;
+ if creux:Ferme.@:=false else: Ferme.@:=true fi;
+ scantokens("numeric "&substring(0,1) of Rn&"; "&Rn&";");
+ vardef Famille(expr u,v)=(R*(cos(u)*cos(v),cos(u)*sin(v),sin(u))) enddef;
+ umin:=-pi/2; umax:=0; upas:=0.5*pi/nb;
+ vmin:=-pi; vpas:=2*pi/subh; vmax:=0;
+ apj:=0;
+ %On crée les facettes et on calcule la profondeur en Z.
+ for k=0 upto (nb-1):
+ for l=0 upto (subh-1):
+ tcpt.@[apj]:=apj;
+ OTFc.@[apj].nb:=4;
+ OTFc.@[apj][1]:=Image(Famille(umin+(k+1)*upas,vmin+l*vpas));
+ OTFc.@[apj][2]:=Image(Famille(umin+k*upas,vmin+l*vpas));
+ OTFc.@[apj][3]:=Image(Famille(umin+k*upas,vmin+(l+1)*vpas));
+ OTFc.@[apj][4]:=Image(Famille(umin+(k+1)*upas,vmin+(l+1)*vpas));
+ OTFc.@[apj].iso:=(OTFc.@[apj][1]+OTFc.@[apj][2]+OTFc.@[apj][3]+OTFc.@[apj][4])/4;
+ ALT.@[apj]:=-Zpart(GCoord(OTFc.@[apj].iso));
+ if ProduitScalaire(Oeil-OTFc.@[apj].iso,Normal(OTFc.@[apj].iso,OTFc.@[apj][1],OTFc.@[apj][2]))>=0:
+ Vue.@[apj]:=true;coul.@[apj]:=outcolor;
+ else:
+ Vue.@[apj]:=false;coul.@[apj]:=incolor;
+ fi;
+ apj:=apj+1;
+ endfor;
+ endfor;
+ apj.@:=apj-1;
+enddef;
+
vardef ObjetSphereNew[](expr Rn)=
Outcolor.@:=outcolor;
Incolor.@:=incolor;
diff --git a/macros/latex/contrib/profcollege/metapost/PfCScratch.mp b/macros/latex/contrib/profcollege/metapost/PfCScratch.mp
index f60928745c..2a7ce304e2 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCScratch.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCScratch.mp
@@ -66,6 +66,8 @@ print=false;
numeric coefprint;
coefprint:=0.95;
+color White;
+White:=white;
%texte ou symbole droite gauche
boolean symbole;
symbole=true;
@@ -130,7 +132,7 @@ vardef OvalVar(expr ar)=
TAvar=OvalBox(TTv);
Ovar=image(
fill TAvar if print=false : withcolor OrangeTrois else : withcolor white fi;
- draw TAvar if print=false : withcolor coefprint*white fi;
+ draw TAvar if print=false : withcolor coefprint*White fi;
label(TEX("\barre\bfseries "&ar),(0,0)) if print=false : withcolor white fi;
);
Ovar:=Ovar shifted(-center Ovar);
@@ -145,7 +147,7 @@ vardef OvalList(text listelist)=
CList=image(
fill TAlist if print=false : withcolor OrangeListTrois else : withcolor white fi;
draw LOCMt;
- draw TAlist if print=false : withcolor coefprint*white fi;
+ draw TAlist if print=false : withcolor coefprint*White fi;
);
CList:=CList shifted(-center CList);
CList
@@ -189,7 +191,7 @@ vardef OvalNb(expr ar)=
tanb=OvalBox(ar);
Onb=image(
fill tanb withcolor white;
- draw tanb if print=false : withcolor coefprint*white fi;
+ draw tanb if print=false : withcolor coefprint*White fi;
label(TEX("\barre "&ar),(0,0));
);
Onb
@@ -202,7 +204,7 @@ vardef OvalText(expr ar)=
TA=OvalBox(ar);
$=image(%
fill TA withcolor white;
- draw TA if print=false : withcolor coefprint*white fi;
+ draw TA if print=false : withcolor coefprint*White fi;
label(TEX("\barre "&ar),(0,0));
);
$:=$ shifted(-center $);
@@ -216,9 +218,9 @@ vardef OvalOp(text listeop)=
LOPop=ColleBoxNew(listeop);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -232,7 +234,7 @@ vardef OvalApp(text listop)=
ta=OvalBox(TTap);
$=image(
fill ta if print=false : withcolor VioletAppTrois else: withcolor white fi;
- draw ta if print=false : withcolor coefprint*white fi;
+ draw ta if print=false : withcolor coefprint*White fi;
draw TTap;
);
$:=$ shifted(-center $);
@@ -247,7 +249,7 @@ vardef OvalSon(text listop)=
ta=OvalBox(TTap);
$=image(
fill ta if print=false : withcolor SonTrois else: withcolor white fi;
- draw ta if print=false : withcolor coefprint*white fi;
+ draw ta if print=false : withcolor coefprint*White fi;
draw TTap;
);
$:=$ shifted(-center $);
@@ -264,7 +266,7 @@ vardef OvalMusique(expr ar)=
TA=OvalBox(TT);
$=image(
fill TA if print : withcolor white else : withcolor StyloTrois fi;
- draw TT if print=true : withcolor coefprint*white fi;
+ draw TT if print=true : withcolor coefprint*White fi;
);
else:
message("La commande --OvalStylo-- n'accepte qu'un argument de type string.");
@@ -280,7 +282,7 @@ vardef OvalMouv(expr ar)=
ta=OvalBox(TTm);
$=image(
fill ta if print=false : withcolor BleuMouvTrois else: withcolor white fi;
- draw ta if print=false : withcolor coefprint*white fi;
+ draw ta if print=false : withcolor coefprint*White fi;
label(TEX("\longbarre "&ar),center ta) if print=false : withcolor blanc fi;
);
$
@@ -297,7 +299,7 @@ vardef OvalCapMenu(expr ar)=
TAMC=OvalBox(TTm);
$=image(
fill TAMC if print : withcolor white else : withcolor CapFonceTrois fi;
- draw TAMC if print=false : withcolor coefprint*white fi;
+ draw TAMC if print=false : withcolor coefprint*White fi;
label(TEX(TTm),center TAMC);
);
$
@@ -312,7 +314,7 @@ vardef OvalCap(text listecap)=
Cap=image(
fill TAcap if print=false : withcolor CapteurTrois else : withcolor white fi;
draw LOCMcap;
- draw TAcap if print=false : withcolor coefprint*white fi;
+ draw TAcap if print=false : withcolor coefprint*White fi;
);
Cap:=Cap shifted(-center Cap);
Cap
@@ -327,7 +329,7 @@ vardef OvalMouvMenu(expr ar)=
ta=OvalBox(TTm);
$=image(
fill ta if print=false : withcolor dBleuMouvTrois else: withcolor white fi;
- draw ta if print=false : withcolor coefprint*white fi;
+ draw ta if print=false : withcolor coefprint*White fi;
label(TEX(TTm),center ta);
);
$
@@ -341,7 +343,7 @@ vardef OvalAppMenu(expr ar)=
ta=OvalBox(TTm);
$=image(
fill ta if print=false : withcolor FondOvalAppMenu else: withcolor white fi;
- draw ta if print=false : withcolor coefprint*white fi;
+ draw ta if print=false : withcolor coefprint*White fi;
label(TEX(TTm),center ta);
);
$
@@ -359,7 +361,7 @@ vardef OvalMenuSon(expr ar)=
TA=OvalBox(TTm);
$=image(%
fill TA if print : withcolor white else : withcolor DSonTrois fi;
- draw TA if print=false : withcolor coefprint*white fi;
+ draw TA if print=false : withcolor coefprint*White fi;
label(TEX(TTm),center TA);
);
$
@@ -375,7 +377,7 @@ vardef OvalMenuControle(expr ar)=
TA=OvalBox(TTm);
$=image(
fill TA if print : withcolor white else : withcolor CloneTrois fi;
- draw TA if print=false : withcolor coefprint*white fi;
+ draw TA if print=false : withcolor coefprint*White fi;
label(TEX(TTm), center TA);
);
$
@@ -396,7 +398,7 @@ vardef OvalStylo(expr ar)=
TA=OvalBox(TT);
$=image(
fill TA if print : withcolor white else : withcolor OvalStyloTrois fi;
- draw TA if print=false : withcolor coefprint*white fi;
+ draw TA if print=false : withcolor coefprint*White fi;
label(TEX(TT),(0,0)) if print=false : withcolor white fi;
);
else:
@@ -430,7 +432,7 @@ vardef OvalMenuEvenement(expr ar)=
TA=OvalBox(TTm);
$=image(
fill TA if print : withcolor white else : withcolor MessageTrois fi;
- draw TA if print=false : withcolor coefprint*white fi;
+ draw TA if print=false : withcolor coefprint*White fi;
label(TEX(TTm), center TA);
);
$
@@ -445,7 +447,7 @@ vardef RecMouvMenu(expr ar)=
ta=RecBox(TTm);
$=image(
fill ta if print=false : withcolor BleuMouvTrois else: withcolor white fi;
- draw ta if print=false : withcolor coefprint*white fi;
+ draw ta if print=false : withcolor coefprint*White fi;
label(TEX(TTm),center ta);
);
$
@@ -459,7 +461,7 @@ vardef RecMenuApp(expr ar)=
ta=RecBox(TTm);
$=image(
fill ta if print=false : withcolor VioletAppTrois else: withcolor white fi;
- draw ta if print=false : withcolor coefprint*white fi;
+ draw ta if print=false : withcolor coefprint*White fi;
label(TEX(TTm),center ta);
);
$
@@ -474,7 +476,7 @@ vardef RecMenuOp(expr ar)=
TA=RecBox(TTm);
$=image(
fill TA if print : withcolor white else : withcolor FondOvalOp fi;
- draw TA if print=false : withcolor coefprint*white fi;
+ draw TA if print=false : withcolor coefprint*White fi;
label(TEX(TTm), center TA);
);
$
@@ -488,7 +490,7 @@ vardef RecMenuSon(expr ar)=
TA=RecBox(TTm);
$=image(
fill TA if print : withcolor white else : withcolor SonTrois fi;
- draw TA if print=false : withcolor coefprint*white fi;
+ draw TA if print=false : withcolor coefprint*White fi;
label(TEX(TTm), center TA);
);
$
@@ -502,7 +504,7 @@ vardef RecEvenementMenu(expr ar)=
ta=RecBox(TTm);
$=image(
fill ta if print=false : withcolor EvenementTrois else: withcolor white fi;
- draw ta if print=false : withcolor coefprint*white fi;
+ draw ta if print=false : withcolor coefprint*White fi;
label(TEX(TTm),center ta);
);
$
@@ -516,7 +518,7 @@ vardef RecMenuCap(expr ar)=
ta=RecBox(TTm);
$=image(
fill ta if print=false : withcolor CapteurTrois else: withcolor white fi;
- draw ta if print=false : withcolor coefprint*white fi;
+ draw ta if print=false : withcolor coefprint*White fi;
label(TEX(TTm),center ta);
);
$
@@ -531,7 +533,7 @@ vardef RecMenuVar(expr ar)=
TA=RecBox(TTm);
$=image(
fill TA if print : withcolor white else : withcolor OrangeTrois fi;
- draw TA if print=false : withcolor coefprint*white fi;
+ draw TA if print=false : withcolor coefprint*White fi;
label(TEX(TTm), center TA);
);
$
@@ -546,7 +548,7 @@ vardef RecMenuList(expr ar)=
TA=RecBox(TTm);
$=image(
fill TA if print : withcolor white else : withcolor OrangeListTrois fi;
- draw TA if print=false : withcolor coefprint*white fi;
+ draw TA if print=false : withcolor coefprint*White fi;
label(TEX(TTm), center TA);
);
$
@@ -599,7 +601,8 @@ vardef ColleBoxNew(text t)=%Pour coller plusieurs boites
if string p_:
NBCOLLE:=Box(p_);
HOLD:=image(
- label(TEX("\sffamily\bfseries\longbarre "&p_),(0,0)) if print=false : withcolor white fi;%->ok
+% label(TEX("\sffamily\bfseries\longbarre "&p_),(0,0)) if print=false : withcolor white fi;%->ok
+ label(TEX("\sffamily\barre\bfseries "&p_),(0,0)) if print=false : withcolor white fi;%->ok
);
HOLD:=(HOLD shifted ((xpart((center HOLD)-(llcorner HOLD))+LONG,0)));
else:
@@ -637,7 +640,7 @@ vardef AFFI(expr texta)=
cadre=CADRE(texta);
picture TEXT;
TEXT=image(%
- fill cadre withcolor if print=true :coefprint*white else: if unknown ColBloc : white else : ColBloc fi; fi;
+ fill cadre withcolor if print=true :coefprint*White else: if unknown ColBloc : white else : ColBloc fi; fi;
draw texta;
draw cadre withcolor CoulLignes;
);
@@ -693,7 +696,7 @@ vardef AFFICONTROLE(expr texta)=
cadre=CADRECONTROLE(texta);
picture TEXT;
TEXT=image(
- fill cadre withcolor if print=true :coefprint*white else: if unknown ColBloc : white else : ColBloc fi; fi;
+ fill cadre withcolor if print=true :coefprint*White else: if unknown ColBloc : white else : ColBloc fi; fi;
draw texta;
draw tracecadre withcolor CoulLignes;
);
@@ -734,7 +737,7 @@ vardef AFFIED(expr texta)=
cadre=CADREED(texta);
picture TEXT;
TEXT=image(
- fill cadre withcolor if print=true :coefprint*white else: if unknown ColBloc : white else : ColBloc fi; fi;
+ fill cadre withcolor if print=true :coefprint*White else: if unknown ColBloc : white else : ColBloc fi; fi;
draw texta;
draw cadre withcolor CoulLignes;
);
@@ -1384,10 +1387,10 @@ vardef DoubleNote=
save $;
picture $;
$=image(
- draw (((0,0)--(0,18pt)) shifted(-12,-9pt)) withpen pencircle scaled 1bp withcolor if print: coefprint*white else: StyloTrois fi;
+ draw (((0,0)--(0,18pt)) shifted(-12,-9pt)) withpen pencircle scaled 1bp withcolor if print: coefprint*White else: StyloTrois fi;
draw NoteImage shifted((-5,-2));
draw NoteImage shifted((3.5,2));
- draw (((0,0)--(0,18pt)) shifted(12,-9pt)) withpen pencircle scaled 1bp withcolor if print: 0.5*coefprint*white else: (69/255,168/255,140/255) fi;%Trop clair->(14/255,187/255,139/255);
+ draw (((0,0)--(0,18pt)) shifted(12,-9pt)) withpen pencircle scaled 1bp withcolor if print: 0.5*coefprint*White else: (69/255,168/255,140/255) fi;%Trop clair->(14/255,187/255,139/255);
);
$:=$ shifted(-3,0);
$
@@ -1435,7 +1438,7 @@ vardef ImageCrayon=
picture titi;
titi=image(%
draw CrayonImage shifted(-12,0);
- draw (((0,0)--(0,18pt)) shifted(9,-9)) withpen pencircle scaled 1bp withcolor if print: 0.5*coefprint*white else: (69/255,168/255,140/255) fi;%Trop clair->(14/255,187/255,139/255);
+ draw (((0,0)--(0,18pt)) shifted(9,-9)) withpen pencircle scaled 1bp withcolor if print: 0.5*coefprint*White else: (69/255,168/255,140/255) fi;%Trop clair->(14/255,187/255,139/255);
);
titi
enddef;
@@ -1574,7 +1577,7 @@ vardef CrayonImage=
draw (6.496090,12.082000);
drawoptions();
pickup pencircle scaled 0bp;
- draw (-3,0)--(-3,18) withcolor if print : coefprint*white else: StyloTrois fi;
+ draw (-3,0)--(-3,18) withcolor if print : coefprint*White else: StyloTrois fi;
pickup pencircle scaled eppen;
);
cray:=cray shifted((0,-9pt));
@@ -1598,7 +1601,7 @@ vardef AffichageStop=
(ulcorner texto+(0,eb)){dir180}..{dir-90}(ulcorner texto+(-eb,0))--cycle;
picture TEXT;
TEXT=image(
- fill cadre withcolor if print : coefprint*white else : if unknown colControle : LightOrange else : colControle fi fi;
+ fill cadre withcolor if print : coefprint*White else : if unknown colControle : LightOrange else : colControle fi fi;
draw texto;
draw cadre withcolor CoulLignes;
);
@@ -1683,8 +1686,8 @@ cadre=(coindebutbloc[numblocrep]+(0.125,0.125))--
{dir90}(llcorner texto+(0.125,0)+(0,eb))--
cycle;
$=image(
- fill cadre withcolor if print : coefprint*white else : if unknown colControle : LightOrange else : colControle fi fi;
- draw cadre withcolor if print : coefprint*white else : if unknown colControle : LightOrange else : colControle fi fi;
+ fill cadre withcolor if print : coefprint*White else : if unknown colControle : LightOrange else : colControle fi fi;
+ draw cadre withcolor if print : coefprint*White else : if unknown colControle : LightOrange else : colControle fi fi;
AA:=ahangle;
ahangle:=90;
drawarrow (lrcorner texto+(-0.625cm,0.15cm)){dir-15}..{dir90}(urcorner texto+(-0.25cm,-0.1cm)) withpen pencircle scaled2bp if print=false : withcolor white fi;
@@ -1798,8 +1801,8 @@ else:
cycle;
fi;
$=image(
- fill cadre withcolor if print : coefprint*white else : if unknown colControle : LightOrange else : colControle fi fi;
- draw cadre withcolor if print : coefprint*white else : if unknown colControle : LightOrange else : colControle fi fi;
+ fill cadre withcolor if print : coefprint*White else : if unknown colControle : LightOrange else : colControle fi fi;
+ draw cadre withcolor if print : coefprint*White else : if unknown colControle : LightOrange else : colControle fi fi;
draw texto;
if BlocStopAvant=false:
draw (coindebutbloc[numblocrep]+(0.0625+0.5cm,0)+(eb,0)){dir180}..
@@ -1908,8 +1911,8 @@ vardef Sinon=
cycle;
fi;
$=image(
- fill cadre withcolor if print=true : coefprint*white else : if unknown colControle : LightOrange else : colControle fi fi;
- draw cadre withcolor if print=true : coefprint*white else : if unknown colControle : LightOrange else : colControle fi fi;
+ fill cadre withcolor if print=true : coefprint*White else : if unknown colControle : LightOrange else : colControle fi fi;
+ draw cadre withcolor if print=true : coefprint*White else : if unknown colControle : LightOrange else : colControle fi fi;
if print:
label.rt(TEX("\longbarre\sffamily\bfseries sinon"),(xpart(llcorner texto),ypart(center texto)));
else:
@@ -2303,7 +2306,7 @@ vardef AffichageBlocDef=
cycle;
picture TEXT;
TEXT=image(
- fill cadre withcolor if print : coefprint*white else : BlocTrois fi;%if unknown colBloc : DarkPurple else: colBloc fi fi;
+ fill cadre withcolor if print : coefprint*White else : BlocTrois fi;%if unknown colBloc : DarkPurple else: colBloc fi fi;
draw texto;
draw cadre withcolor CoulLignes;
);
@@ -2662,7 +2665,7 @@ vardef CameraImage=
fill (cc shifted(B+(10,3*k))) withcolor coul[k];
draw (cc shifted(B+(10,3*k))) withcolor 0.95*coul[k];
endfor;
- draw ((-3,0)--(-3,18)) withcolor if print : coefprint*white else: StyloTrois fi;
+ draw ((-3,0)--(-3,18)) withcolor if print : coefprint*White else: StyloTrois fi;
pickup pencircle scaled eppen;
);
$:=$ scaled 0.8;
@@ -2674,7 +2677,7 @@ vardef ImageCamera=
picture titi;
titi=image(
draw CameraImage shifted(-12,-5);
- draw (((0,0)--(0,18pt)) shifted(9,-9)) withpen pencircle scaled 1bp withcolor if print: 0.5*coefprint*white else: (69/255,168/255,140/255) fi;
+ draw (((0,0)--(0,18pt)) shifted(9,-9)) withpen pencircle scaled 1bp withcolor if print: 0.5*coefprint*White else: (69/255,168/255,140/255) fi;
);
titi
enddef;
@@ -2734,7 +2737,7 @@ vardef VideoSur(expr nbpas,xa)=
path ta;
ta=OvalBox(texto);
$=image(
- fill ta withcolor if print: coefprint*white else: StyloTrois fi;
+ fill ta withcolor if print: coefprint*White else: StyloTrois fi;
draw ta withcolor CoulLignes;
%label(TEX(TTm),center ta) if print=false : withcolor blanc fi;
draw texto;
@@ -2924,9 +2927,9 @@ vardef OpAdd(expr pasun,pasdeux)=
LOPop=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"$+$",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -2939,9 +2942,9 @@ vardef OpSous(expr pasun,pasdeux)=
LOPop=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"$-$",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -2954,9 +2957,9 @@ vardef OpMul(expr pasun,pasdeux)=
LOPop=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"$\times$",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -2969,9 +2972,9 @@ vardef OpMulS(expr pasun,pasdeux)=
LOPop=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"$*$",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -2984,9 +2987,9 @@ vardef OpDiv(expr pasun,pasdeux)=
LOPop=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"$\div$",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -2999,9 +3002,9 @@ vardef OpDivS(expr pasun,pasdeux)=
LOPop=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"$/$",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -3014,9 +3017,9 @@ vardef OpModulo(expr pasun,pasdeux)=
LOPop=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"modulo",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -3029,9 +3032,9 @@ vardef OpAlea(expr pasun,pasdeux)=
LOPop=ColleBoxNew("nombre aléatoire entre",if string pasun : OvalNb(pasun) else: pasun fi,"et",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -3044,9 +3047,9 @@ vardef OpRegrouper(expr pasun,pasdeux)=
LOPop=ColleBoxNew("regrouper",if string pasun : OvalNb(pasun) else: pasun fi,"et",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -3059,9 +3062,9 @@ vardef OpLettre(expr pasun,pasdeux)=
LOPop=ColleBoxNew("lettre",if string pasun : OvalNb(pasun) else: pasun fi,"de",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -3074,9 +3077,9 @@ vardef OpLongueur(expr pasun)=
LOPop=ColleBoxNew("longueur de",if string pasun : OvalNb(pasun) else: pasun fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -3089,9 +3092,9 @@ vardef OpArrondi(expr pasun)=
LOPop=ColleBoxNew("arrondi de",if string pasun : OvalNb(pasun) else: pasun fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -3104,9 +3107,9 @@ vardef OpFonction(expr pasun,pasdeux)=
LOPop=ColleBoxNew(RecMenuOp(pasun),"de",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAao=OvalBox(LOPop);
Oop=image(
- fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAao if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LOPop;
- draw TAao if print=false : withcolor coefprint*white fi;
+ draw TAao if print=false : withcolor coefprint*White fi;
);
Oop:=Oop shifted(-center Oop);
Oop
@@ -3119,9 +3122,9 @@ vardef TestOpSup(expr pasun, pasdeux)=
LTa=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"$>$",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3134,9 +3137,9 @@ vardef TestOpInf(expr pasun, pasdeux)=
LTa=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"$<$",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3149,9 +3152,9 @@ vardef TestOpEgal(expr pasun, pasdeux)=
LTa=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"$=$",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3164,9 +3167,9 @@ vardef TestOpEt(expr pasun, pasdeux)=
LTa=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"et",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3179,9 +3182,9 @@ vardef TestOpOu(expr pasun, pasdeux)=
LTa=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"ou",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi);
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3194,9 +3197,9 @@ vardef TestOpNon(expr pasun)=
LTa=ColleBoxNew("non",if string pasun : OvalNb(pasun) else: pasun fi);
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3209,9 +3212,9 @@ vardef TestOpContient(expr pasun,pasdeux)=
LTa=ColleBoxNew(if string pasun : OvalNb(pasun) else: pasun fi,"contient",if string pasdeux : OvalNb(pasdeux) else: pasdeux fi,"?");
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor FondOvalOp else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3224,9 +3227,9 @@ vardef AppCostume(expr pasun)=
LTa=ColleBoxNew(RecMenuApp(pasun),"du costume");
TAa=OvalBox(LTa);
$=image(
- fill TAa if print=false : withcolor VioletAppTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor VioletAppTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3239,9 +3242,9 @@ vardef AppAP(expr pasun)=
LTa=ColleBoxNew(RecMenuApp(pasun),"de l'arrière-plan");
TAa=OvalBox(LTa);
$=image(
- fill TAa if print=false : withcolor VioletAppTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor VioletAppTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3254,9 +3257,9 @@ vardef CapDistance(expr pasun)=
LTa=ColleBoxNew("distance de",OvalCapMenu(pasun));
TAa=OvalBox(LTa);
$=image(
- fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3269,9 +3272,9 @@ vardef CapTemps(expr pasun)=
LTa=ColleBoxNew(RecMenuCap(pasun),"actuelle");
TAa=OvalBox(LTa);
$=image(
- fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3284,9 +3287,9 @@ vardef CapNumero(expr pasun,pasdeux)=
LTa=ColleBoxNew(RecMenuCap(pasun),"de",OvalCapMenu(pasdeux));
TAa=OvalBox(LTa);
$=image(
- fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3299,9 +3302,9 @@ vardef TestCapToucheObjet(expr pasun)=
LTa=ColleBoxNew("touche le",OvalCapMenu(pasun),"?");
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3314,9 +3317,9 @@ vardef TestCapCouleur(expr pasun)=
LTa=ColleBoxNew("couleur",OvalCouleur(redpart(pasun),greenpart(pasun),bluepart(pasun)),"touchée ?");
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3329,9 +3332,9 @@ vardef TestCapCouleurs(expr pasun,pasdeux)=
LTa=ColleBoxNew("couleur",OvalCouleur(redpart(pasun),greenpart(pasun),bluepart(pasun)),"touche",OvalCouleur(redpart(pasdeux),greenpart(pasdeux),bluepart(pasdeux)),"?");
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3344,9 +3347,9 @@ vardef TestCapTouche(expr pasun)=
LTa=ColleBoxNew("touche",OvalMenuCap(pasun),"pressée ?");
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3359,9 +3362,9 @@ vardef TestCapSouris=
LTa=ColleBoxNew("souris pressée ?");
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor CapteurTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3374,9 +3377,9 @@ vardef TestListeContient(expr nbpas,nbbas)=
LTa=ColleBoxNew(RecMenuList(nbpas),"contient",if string nbbas:OvalNb(nbbas) else: nbbas fi);
TAa=DiamondBox(LTa);
$=image(
- fill TAa if print=false : withcolor OrangeListTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor OrangeListTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3389,9 +3392,9 @@ vardef ListeElement(expr nbpas,nbbas)=
LTa=ColleBoxNew("élément",if string nbpas:OvalNb(nbpas) else: nbpas fi,"de",RecMenuList(nbbas));
TAa=OvalBox(LTa);
$=image(
- fill TAa if print=false : withcolor OrangeListTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor OrangeListTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3404,9 +3407,9 @@ vardef ListePosition(expr nbpas,nbbas)=
LTa=ColleBoxNew("position de",if string nbpas:OvalNb(nbpas) else: nbpas fi,"de",RecMenuList(nbbas));
TAa=OvalBox(LTa);
$=image(
- fill TAa if print=false : withcolor OrangeListTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor OrangeListTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
@@ -3419,9 +3422,9 @@ vardef ListeLongueur(expr nbpas)=
LTa=ColleBoxNew("longueur de",RecMenuList(nbpas));
TAa=OvalBox(LTa);
$=image(
- fill TAa if print=false : withcolor OrangeListTrois else : withcolor coefprint*white fi;
+ fill TAa if print=false : withcolor OrangeListTrois else : withcolor coefprint*White fi;
draw LTa;
- draw TAa if print=false : withcolor coefprint*white fi;
+ draw TAa if print=false : withcolor coefprint*White fi;
);
$:=$ shifted(-center $);
$
diff --git a/macros/latex/contrib/profcollege/metapost/PfCSolid.mp b/macros/latex/contrib/profcollege/metapost/PfCSolid.mp
index 765533109d..5cc17755a1 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCSolid.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCSolid.mp
@@ -125,7 +125,8 @@ vardef Projette(expr M)=
% (Ypart(M)+0.5*cosd(30)*Xpart(M),Zpart(M)+0.5*sind(30)*Xpart(M))*20%Good avec Theta=-20/Phi=-10
%(Ypart(GCoord(M))+0.5*cosd(-30)*Xpart(GCoord(M)),Zpart(GCoord(M))+0.5*sind(-30)*Xpart(GCoord(M)))*20%Good avec Theta=-20/Phi=-10
% (Xpart(GCoord(M))*cosd(90-30),Ypart(GCoord(M))*sind(90-30)*0.5)*DE%à garder peut-être ?
- (Xpart(GCoordcabinet(M)),Ypart(GCoordcabinet(M)))*DE%
+% (Xpart(GCoordcabinet(M)),Ypart(GCoordcabinet(M)))*DE%<-last good :)
+ ((Xpart(GCoordcabinet(M)),Ypart(GCoordcabinet(M)))/Zpart(GCoordcabinet(M)))*DE
%(Zpart(GCoord(M))+0.5*cosd(-30)*Ypart(GCoord(M)),Xpart(GCoord(M))+0.5*sind(-30)*Ypart(GCoord(M)))*20
% (0.5*cosd(45)*Xpart(GCoord(M)),0.5*sind(45)*Ypart(GCoord(M)))*unit*DE
% (Xpart(GCoord(M)),Ypart(GCoord(M)))*unit*DE