diff options
author | Norbert Preining <norbert@preining.info> | 2024-09-03 03:03:24 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-09-03 03:03:24 +0000 |
commit | d62e0417014cfe0dc6c41513f5a94be51b84ecc8 (patch) | |
tree | c1d2904810ac3af84257bf072218cb8631f13e56 /macros/latex | |
parent | 3db8670ef00e32f264e65d1d585ffae78289ee38 (diff) |
CTAN sync 202409030303
Diffstat (limited to 'macros/latex')
18 files changed, 885 insertions, 58 deletions
diff --git a/macros/latex/contrib/jwjournal/README.md b/macros/latex/contrib/jwjournal/README.md index 6185459348..f48c6a8745 100644 --- a/macros/latex/contrib/jwjournal/README.md +++ b/macros/latex/contrib/jwjournal/README.md @@ -1,7 +1,9 @@ -<!-- Copyright (C) 2023 by Jinwen XU --> +<!-- Copyright (C) 2023-2024 by Jinwen XU --> # `jwjournal`, a personal LaTeX class for writing journals +> Package dependencies: [`enumitem`](https://ctan.org/pkg/enumitem), [*`einfart`*](https://ctan.org/pkg/minimalist), [`minimalist`](https://ctan.org/pkg/minimalist), [`needspace`](https://ctan.org/pkg/needspace), [`projlib`](https://ctan.org/pkg/projlib), [`tcolorbox`](https://ctan.org/pkg/tcolorbox). + ## Introduction A typical journal entry produced by `jwjournal` looks like this: @@ -25,9 +27,9 @@ Codewise, it is as simple as below: (( <0.45> {example-image-c} ``` -> It is also possible to write the date as `2023/01/01`. +> It is also possible to write the date with other separators, such as `2023/01/01` or `2023.01.01`. -> With the options `month-day-year` or `day-month-year`, you can also write date in the format `mm-dd-yyyy` or `dd-mm-yyyy`, respectively. You may refer to the English and French demo documents for examples. +> With the options `month-day-year` or `day-month-year`, you can also write date in the format `mm-dd-yyyy` or `dd-mm-yyyy`, respectively. You may refer to the English, French and German demo documents for examples. Every day of the week has its unique color, like this: ![image](https://github.com/Jinwen-XU/jwjournal/raw/main/screenshots/demo2.png) @@ -44,7 +46,7 @@ By the way, the conversion from plain date string like `2023-01-01` to natural l The structure of the document is very simple: ```latex -\documentclass[11pt, paperstyle = light yellow, color entry]{jwjournal} +\documentclass[11pt, paperstyle = light yellow, color entry, use indent = false]{jwjournal} \UseLanguage{⟨language⟩} % For English this line can be omitted. \begin{document} @@ -62,6 +64,12 @@ The available class options include: - `color entry` adds more color to the title of each entry; - `scroll` turns the scroll mode on, which generates a single-page pdf similar to a long screenshot. +> There are also some relevant options provided by the base class of `jwjournal`: +> - `use indent = false`: disable the paragraph indentation and add some space between each paragraph instead. +> - `use style = ⟨provided style⟩`: select the designing style of the current article; for our purpose here, it is recommended to use the style `classical` (with this the option `use indent = false` is added by default), together with the options `title in boldface` and `title in sffamily`, see the comment below regarding the usage of "Section". +> +> You may refer to the demo documents to see their actual usage. + Here are the major syntaxes for your main text: 1) Title - Any line begins with date like `2023-01-01` or `2023/01/01` would be regard as the *Title* line. @@ -70,7 +78,7 @@ Here are the major syntaxes for your main text: ``` 2023-01-01 Sunny | Apartment ``` - > With the options `month-day-year` or `day-month-year`, you can also write date in the format `mm-dd-yyyy` or `dd-mm-yyyy`, respectively. You may refer to the English and French demo documents for examples. + > With the options `month-day-year` or `day-month-year`, you can also write date in the format `mm-dd-yyyy` or `dd-mm-yyyy`, respectively. You may refer to the English, French and German demo documents for examples. 1) Note - Any line begins with something like `[Note]` would be regard as the *Note* line. - Example: @@ -241,6 +249,12 @@ Language and date format can both be set in two ways: as class option or with co ### Scroll mode The scroll mode is achieved by directly accessing `\pdfpageheight` (pdfTeX and XeTeX) or `\pageheight` (LuaTeX). The minimal page height is set to be `10in`. It is worth noting that in order to calculate the height needed, the entire content are put into a single box, which puts a limitation on the length of your document (but this usually wouldn't be a problem). -# License + +## Acknowledgement + +The author would like to thank his friend Junzhuo Zhao for his valuable help with the German language. Danke schön! + + +## License This work is released under the LaTeX Project Public License, v1.3c or later. diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdf b/macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdf Binary files differindex 010d83d024..ba83bdf73e 100644 --- a/macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdf +++ b/macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdf diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex b/macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex index 213bf34d51..639fabf903 100644 --- a/macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex +++ b/macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex @@ -14,9 +14,9 @@ 在文中出现的日期和标注不会被识别: 2023-12-25、[标注]、【标注】,放心使用! [文本] - 你可以使用*斜体*、**粗体**或者***两者结合***。 + 你可以使用*斜体*、**粗体**或者***两者结合***(具体效果取决于字体设置)。 \\ - 数学模式下的星号不会被识别: + 数学模式下的星号不会被识别:$a^* b^*$。 【说明】 % 【...】与 [...] 效果相同 在一些特殊情况需要把星号用 \texttt{\{\}} 隔开:**像**{}***这***{}*样*。 diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-de.pdf b/macros/latex/contrib/jwjournal/jwjournal-demo-de.pdf Binary files differnew file mode 100644 index 0000000000..4f4efc58cc --- /dev/null +++ b/macros/latex/contrib/jwjournal/jwjournal-demo-de.pdf diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-de.tex b/macros/latex/contrib/jwjournal/jwjournal-demo-de.tex new file mode 100644 index 0000000000..ac4ff8b96f --- /dev/null +++ b/macros/latex/contrib/jwjournal/jwjournal-demo-de.tex @@ -0,0 +1,118 @@ +\documentclass[11pt, paperstyle=light yellow, color entry, day-month-year, + title in boldface, title in sffamily, use style = classical]{jwjournal} +% "paperstyle = ..." passt die Papierfarbe an, Optionen sind: lightyellow、yellow、parchment、green、lightgray、gray、nord、dark +% "color entry" fügt dem Titel jedes Eintrags mehr Farbe hinzu +% "scroll" schaltet den Scroll-Modus ein und kann ein einseitiges PDF ähnlich einem langen Screenshot generieren + +\UseLanguage { German } + +\begin{document} + + +01.01.2024 Sonnig | Ort + + Im Text erscheinende Daten und Anmerkungen werden nicht erkannt: 25.12.2023, [Anmerkung], können Sie diese ruhig schreiben. + + [Text] + Sie können Text in *kursiv*, **fett** oder ***beides*** schreiben. + \\ + Sternchen im Mathematikmodus werden nicht erkannt: $a^* b^*$. + + [Anmerkung] In einigen Sonderfällen kann es notwendig sein, die Sternchen mit~\texttt{\{\}} zu trennen: **genau**{}***wie***{}*dieses*. + + >>> Sie können Text in einen farbigen Block wie diesen einfügen. + + Bilder können eingefügt über: + + || <.4> {example-image} % oder || {example-image} <.4> + >> (Anmerkung zum Bild) + >> (Weitere Bemerkung...) + + +++ + Sie können das Bild auch links oder rechts anzeigen: + (( <.4> {example-image-a} % oder (( {example-image-a} <.4> + -> <.3> % fügen Sie etwas vertikalen Abstand hinzu, hier ist „0.3\baselineskip“ + )) <.4> {example-image-b} % oder )) {example-image-b} <.4> + + +## {\textsc{Ein neuer Abschnitt}} + +02.01.2024 +Unbekannt (das Wetter kann je nach Wunsch auch in die zweite Zeile geschrieben werden) + + Die Farbe der Beschriftungen ändert sich je nach Datum und langer Text wird automatisch umbrochen und eingerückt: + + [Hinweis] Ich habe heute nicht gelernt, aber ich habe sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr viel Code geschrieben: `Inline-Code`. + + [Achtung] Sonderzeichen im Inline-Code müssen maskiert werden. Beispielsweise sollte `\textbackslash` als `\textbackslash textbackslash` geschrieben werden, `\{` sollte als `\textbackslash\{` geschrieben werden, `\%` sollte als `\textbackslash\%` geschrieben werden usw. + + ----- + + Drei oder mehr \textquote{\texttt{-}} in einem separaten Absatz ergeben eine Trennlinie --- + + --- + + --- aber die aktuelle Zeile wird nicht abgeglichen, da sich hinter \texttt{-}\texttt{-}\texttt{-} zusätzlicher Text befindet. + + ----- + + Wenn auf die Beschriftung mehrere Absätze folgen, können Sie \texttt{\textbackslash\textbackslash} und \texttt{\slash\slash} verwenden, um sie zu verketten, sodass alle Texte richtig eingerückt werden: + + [Beschriftung] Etwas Text. + // + Mehr Text (mit \texttt{\slash\slash}, also mit etwas vertikalem Abstand zum obigen Text). + // + Mehr Text (dasselbe, mit etwas vertikalem Abstand zum obigen Text). + // + (Einige Anmerkungen) + \\ + (Eine weitere Anmerkung, die aufgrund der Verwendung von \texttt{\textbackslash\textbackslash} direkt neben der obigen Anmerkung) + \\ + (Weitere Anmerkungen --- ähnlich, direkt neben der obigen Anmerkung) + + + +03.01.2024 + + [Anmerkung] Wenn nur das Datum geschrieben wird, dann gäbe es kein zweites Trennzeichen danach. + + ++++ +04.01.2024 Bewölkt + + Drei Pluszeichen \texttt{+++} können die aktuelle Seite um etwa eine Zeile vergrößern. Manchmal fallen ein einzelner Satz oder ein paar Wörter auf die nächste Seite --- in solchen Fällen können Sie es verwenden, um den Anzeigeeffekt zu verbessern. + + + +05.01.2024 Bewölkt --- Arbeit zu Hause +=============================================== + +Sie können Ihren Code auch so organisieren. + + +========== +06.01.2024 Sonnig --- Arbeit zu Hause +========== + +Oder so... + + + +07.01.2024 Bewölkt + + ... + + + +08.01.2024 Bewölkt + + Eine Woche später wird die Farbe wieder auf die vorherige zurückgesetzt. + + + +09.01.2024 Bewölkt + + ... + + +\end{document} diff --git a/macros/latex/contrib/jwjournal/jwjournal.cls b/macros/latex/contrib/jwjournal/jwjournal.cls index 3b968ce12e..3e84c935ba 100644 --- a/macros/latex/contrib/jwjournal/jwjournal.cls +++ b/macros/latex/contrib/jwjournal/jwjournal.cls @@ -1,6 +1,6 @@ %% -%% Copyright (C) 2023 by Jinwen XU -%% ------------------------------- +%% Copyright (C) 2023-2024 by Jinwen XU +%% ------------------------------------ %% %% This file may be distributed and/or modified under the conditions of %% the LaTeX Project Public License, either version 1.3c of this license @@ -12,7 +12,7 @@ \NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplClass {jwjournal} - {2023/12/19} {} + {2024/09/01} {} {JW's journal class} \keys_define:nn { jwjournal } @@ -33,11 +33,11 @@ \sys_if_engine_pdftex:TF { - \PassOptionsToClass { use indent = false } { minimart } + % \PassOptionsToClass { use indent = false } { minimart } \LoadClass { minimart } } { - \PassOptionsToClass { use indent = false } { einfart } + % \PassOptionsToClass { use indent = false } { einfart } \LoadClass { einfart } } @@ -554,14 +554,14 @@ } \regex_replace_once:nnN { ❄️ (.*) ❄️ } { ❄️ \1 } \l_jwjournal_tmp_tl - \regex_replace_once:nnN - { ❄️ (\ *)? (\d{4}-\d{1,2}-\d{1,2}) (\ *)? (.*) } - { \c{JWJournalEntry} {\2} {\4} } - \l_jwjournal_tmp_tl - \regex_replace_once:nnN - { ❄️ (\ *)? (\d{1,2}-\d{1,2}-\d{4}) (\ *)? (.*) } - { \c{JWJournalEntry} {\2} {\4} } - \l_jwjournal_tmp_tl + % \regex_replace_once:nnN + % { ❄️ (\ *)? (\d{4}-\d{1,2}-\d{1,2}) (\ *)? (.*) } + % { \c{JWJournalEntry} {\2} {\4} } + % \l_jwjournal_tmp_tl + % \regex_replace_once:nnN + % { ❄️ (\ *)? (\d{1,2}-\d{1,2}-\d{4}) (\ *)? (.*) } + % { \c{JWJournalEntry} {\2} {\4} } + % \l_jwjournal_tmp_tl \regex_replace_once:nnN { ❄️ (\ *)? (\d{4} \D \d{1,2} \D \d{1,2}) (\ *)? (.*) } { \c{JWJournalEntry} {\2} {\4} } diff --git a/macros/latex/contrib/media9/ChangeLog b/macros/latex/contrib/media9/ChangeLog index 712cf2598e..293d408e4e 100644 --- a/macros/latex/contrib/media9/ChangeLog +++ b/macros/latex/contrib/media9/ChangeLog @@ -1,3 +1,8 @@ +2024-09-02 + * v1.27 : media9.sty + * v0.57 : pdfbase.sty + * fix : internal page counter + 2024-08-28 * v1.26 : media9.sty * v0.56 : pdfbase.sty diff --git a/macros/latex/contrib/media9/doc/media9.pdf b/macros/latex/contrib/media9/doc/media9.pdf Binary files differindex 526dc37408..0596f0c160 100644 --- a/macros/latex/contrib/media9/doc/media9.pdf +++ b/macros/latex/contrib/media9/doc/media9.pdf diff --git a/macros/latex/contrib/media9/media9.sty b/macros/latex/contrib/media9/media9.sty index 9651cd0468..a32e487478 100644 --- a/macros/latex/contrib/media9/media9.sty +++ b/macros/latex/contrib/media9/media9.sty @@ -39,8 +39,8 @@ % % The Current Maintainer of this work is A. Grahn. -\def\g@mix@date@tl{2024/08/28} -\def\g@mix@version@tl{1.26} +\def\g@mix@date@tl{2024/09/02} +\def\g@mix@version@tl{1.27} \NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl} @@ -2446,8 +2446,8 @@ % % The Current Maintainer of this work is A. Grahn. -\def\g@mix@date@tl{2024/08/28} -\def\g@mix@version@tl{1.26} +\def\g@mix@date@tl{2024/09/02} +\def\g@mix@version@tl{1.27} \NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl} diff --git a/macros/latex/contrib/media9/pdfbase.sty b/macros/latex/contrib/media9/pdfbase.sty index 66c76fff80..54242a5d9c 100644 --- a/macros/latex/contrib/media9/pdfbase.sty +++ b/macros/latex/contrib/media9/pdfbase.sty @@ -156,8 +156,8 @@ % % The Current Maintainer of this work is A. Grahn. -\def\g@pbs@date@tl{2024/08/28} -\def\g@pbs@version@tl{0.56} +\def\g@pbs@date@tl{2024/09/02} +\def\g@pbs@version@tl{0.57} \NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl} @@ -1311,6 +1311,7 @@ % modify page output routine for inserting actions at begin and end \cs_set_eq:NN\pbs_outputpage_orig:\@outputpage \cs_set_protected_nopar:Npn\@outputpage{ + \int_gincr:N\g_pbs_page_int \vbox_set:Nn\@outputbox{ %begin of page \seq_map_inline:Nn\g_pbs_bop_seq{##1} @@ -1334,8 +1335,6 @@ \pbs_makecol_orig: } -\AddToHook{shipout}{\int_gincr:N\g_pbs_page_int} - \AddToHook{shipout/foreground}{ %insert /Properties into current page's resources \put(0,0){\pbs_insert_properties_entry:} @@ -1557,8 +1556,8 @@ % % The Current Maintainer of this work is A. Grahn. -\def\g@pbs@date@tl{2024/08/28} -\def\g@pbs@version@tl{0.56} +\def\g@pbs@date@tl{2024/09/02} +\def\g@pbs@version@tl{0.57} \NeedsTeXFormat{LaTeX2e}[2022-06-01] \ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl} @@ -2639,6 +2638,7 @@ % modify page output routine for inserting actions at begin and end \cs_set_eq:NN\pbs_outputpage_orig:\@outputpage \cs_set_protected_nopar:Npn\@outputpage{ + \int_gincr:N\g_pbs_page_int \vbox_set:Nn\@outputbox{ %begin of page \seq_map_inline:Nn\g_pbs_bop_seq{##1} @@ -2662,8 +2662,6 @@ \pbs_makecol_orig: } -\AddToHook{shipout}{\int_gincr:N\g_pbs_page_int} - \AddToHook{shipout/background}{ % workaround for curious AR bug (pdf annot or link placed on % OCG remains active although OCG is hidden) diff --git a/macros/latex/contrib/profcollege/doc/profcollege-doc.pdf b/macros/latex/contrib/profcollege/doc/profcollege-doc.pdf Binary files differindex 794f5fdcb0..787b93d169 100644 --- a/macros/latex/contrib/profcollege/doc/profcollege-doc.pdf +++ b/macros/latex/contrib/profcollege/doc/profcollege-doc.pdf diff --git a/macros/latex/contrib/profcollege/latex/PfCBillard.tex b/macros/latex/contrib/profcollege/latex/PfCBillard.tex index 758e752977..dc0082cef8 100644 --- a/macros/latex/contrib/profcollege/latex/PfCBillard.tex +++ b/macros/latex/contrib/profcollege/latex/PfCBillard.tex @@ -1,8 +1,8 @@ %%% % Billard %%% -\def\filedateBillard{2024/08/04}% -\def\fileversionBillard{0.1}% +\def\filedateBillard{2024/08/28}% +\def\fileversionBillard{0.1a}% \message{-- \filedateBillard\space v\fileversionBillard}% % \newtoks\tokPfCMotBillard{}% @@ -231,11 +231,9 @@ }% \def\MPBillardSolution#1#2#3{% - % \mplibcodeinherit{enable}% \mplibforcehmode \xdef\PfCNomBillard{\useKV[ClesBillard]{Nom}} \begin{mplibcode}[\PfCNomBillard] -% Figure(0,0,\useKV[ClesBillard]{Longueur}+2cm,\useKV[ClesBillard]{Largeur}+3cm); trace rec; % Tracés drawarrow Pt[1]--(Pt[1]+1.5cm*unitvector(Pt[2]-Pt[1])) withpen pencircle scaled 1.25; @@ -257,14 +255,16 @@ else: dotlabel.bot(TEX(substring(0,1) of #1),Pt[1]); fi; + path segmenttest; for k=2 upto BLong: - if (demidroite(1/1000[Pt[k-1],Pt[k]],Pt[k]) intersectiontimes cote[1])<>(-1,-1): + segmenttest:=(9/10)[Pt[k-1],Pt[k]]--(11/10)[Pt[k-1],Pt[k]]; + if segmenttest intersectiontimes cote[1]<>(-1,-1): dotlabel.bot(TEX(substring(k-1,k) of #1),Pt[k]); - elseif (demidroite(1/1000[Pt[k-1],Pt[k]],Pt[k]) intersectiontimes cote[2])<>(-1,-1): + elseif segmenttest intersectiontimes cote[2]<>(-1,-1): dotlabel.rt(TEX(substring(k-1,k) of #1),Pt[k]); - elseif (demidroite(1/1000[Pt[k-1],Pt[k]],Pt[k]) intersectiontimes cote[3])<>(-1,-1): + elseif segmenttest intersectiontimes cote[3]<>(-1,-1): dotlabel.top(TEX(substring(k-1,k) of #1),Pt[k]); - elseif (demidroite(1/1000[Pt[k-1],Pt[k]],Pt[k]) intersectiontimes cote[4])<>(-1,-1): + elseif segmenttest intersectiontimes cote[4]<>(-1,-1): dotlabel.lft(TEX(substring(k-1,k) of #1),Pt[k]); fi; endfor; @@ -274,5 +274,4 @@ label.top(TEX(substring(k-1,k) of #1),((xpart(Co),5mm)-center Reponse)+(k-1)*(7mm,0)+(2.5mm,0)); endfor; \end{mplibcode}% -% \mplibcodeinherit{disable}% }%
\ No newline at end of file diff --git a/macros/latex/contrib/profcollege/latex/PfCCheque.tex b/macros/latex/contrib/profcollege/latex/PfCCheque.tex new file mode 100644 index 0000000000..531af4efc1 --- /dev/null +++ b/macros/latex/contrib/profcollege/latex/PfCCheque.tex @@ -0,0 +1,125 @@ +%%% +% PfCCheque +%%% +\def\filedateCheque{2024/09/03}% +\def\fileversionCheque{0.1}% +\message{-- \filedateCheque\space v\fileversionCheque}% +\newlength{\oldbaseline} +\newlength{\PfCTailleCursive} + +\setKVdefault[Cheque]{Sigle=CMF,Banque=Crédit Mathématique de France,Date=\today,Lieu={},Lire=false,Destinataire=Institut Curie,Solution=false,Longueur=15,Taille=\normalsize,Ajust=0pt} + +%https://tex.stackexchange.com/questions/406015/defining-macro-gsetlength-as-global-setlength-reliable +\makeatletter +\gdef\gsetlength#1#2{% + \begingroup + \setlength\skip@{#2}% Local assignment to a scratch register. + \global#1=\skip@ % Global assignement to #1; + % \relax is not necessary because of the following \endgroup. + \endgroup % \skip@ is restored by end of group. +} +\makeatother + +\NewDocumentCommand{\Cheque}{om}{% + \useKVdefault[Cheque]% + \setKV[Cheque]{#1}% + \setbox1=\hbox{\useKV[Cheque]{Taille}\myfontCursive abcdefghijklmnopqrstuvwxyz}% + {\useKV[Cheque]{Taille}\myfontCursive\gsetlength{\oldbaseline}{\baselineskip}\normalsize}% + \setlength{\PfCTailleCursive}{0.5\ht1+\useKV[Cheque]{Ajust}}% + \BuildCheque{#2}% +}% + +\NewDocumentCommand{\BuildCheque}{m}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + boolean Solution,Lire; + Solution=\useKV[Cheque]{Solution}; + Lire=\useKV[Cheque]{Lire}; + Longueur=\useKV[Cheque]{Longueur}; + baselinecp=\fpeval{\oldbaseline}; + % + pair A,B,C,D,M[],N[]; + A=(0,0); + B-A=u*(Longueur,0); + C-B=u*(0,5); + D-C=A-B; + % + M1=1/3[D,A]; + % + picture Payez; + Payez=image( + label.rt(TEX("Payez contre ce chèque"),M1); + ); + % + M20=(xpart(M1),ypart(llcorner Payez)); + M2-M20=(0,-baselinecp); + M3-M2=u*(0,-0.5); + M4-M3=M2-M1; + M5-M4=u*(0.4*Longueur,-0.25); + M6-M4=u*(0,-0.25)+u*(0.5,0); + M7-M6=u*(2,0); + % + A:=(xpart(M4),ypart(M6)-1u); + B:=A+C-D; + % + N1=1/2[M1,M2]+0.8*(B-A); + N2-N1=M2-M1; + N3-N2=0.18*(B-A); + N4-N3=N1-N2; + drawoptions(withcolor NavyBlue); + picture BaseLettre; + %%%%%%%%%%%%%%%% + fill polygone(A,B,C,D) withcolor 0.8[LightSteelBlue,white]; + trace polygone(A,B,C,D); + draw Payez; + label.rt(TEX("{\sffamily \Huge \useKV[Cheque]{Sigle}}"),D+u*(0,-0.5)); + label.rt(TEX("{\sffamily \useKV[Cheque]{Banque}}"),D+u*(0,-1)); + trace (lrcorner Payez)--(0.75[(xpart(M1),ypart(lrcorner Payez)),(xpart(M1+B-A),ypart(lrcorner Payez))]); + label.rt(TEX("\tiny non endossable sauf au profit d'une banque ou d'un établissement assimilé."),M1+u*(0,-0.300)); + trace 1/90[M2,M2+B-A]--(0.75[M2,M2+B-A]); + label.rt(TEX("À \useKV[Cheque]{Destinataire}"),M3); + trace 1/45[M3+u*(0,-0.2),M3+u*(0,-0.2)+B-A]--(0.75[M3+u*(0,-0.2),M3+u*(0,-0.2)+B-A]); + fill polygone(N1,N2,N3,N4) withcolor white; + trace polygone(N1,N2,N3,N4) withpen pencircle scaled 1.2 withcolor NavyBlue; + if Lire=false: + label.rt(TEX("\si{\EuRo}~#1"),iso(N1,N2)); + else: + if Solution: + label.rt(TEX("\si{\EuRo}~\num{#1}"),iso(N1,N2)); + fi; + fi; + label.rt(TEX("À~\hbox to"&decimal(Longueur/5)&"cm{\hrulefill}\quad Le~\hbox to"&decimal(Longueur/5)&"cm{\hrulefill}"),M5); + label.top(TEX("\Huge \si{\EuRo}uro"),iso(N4,N1)+u*(0,1)); + label(TEX("\tiny « à régler exclusivement en euros »"),iso(N4,N1)+u*(-0.5,1)); + label(TEX("\ChoixAlea{100000}{999999}{\numcheque}\numcheque"),iso(M6,M7)); + trace cotationmil(M6,M7,2.5mm,25,TEX("\scriptsize chèque \no")); + %% +% drawoptions(withcolor red); +% draw (llcorner Payez)--(llcorner Payez+B-A); +% draw M2--(M2+B-A); +% drawoptions(); + picture Sous; + Sous=image(% + label(TEX("\begin{minipage}{\fpeval{0.75*"&decimal(Longueur)&"}cm} + \hspace{"&decimal(abs(lrcorner Payez-llcorner Payez))&"pt}\myfontCursive\useKV[Cheque]{Taille}\Ecriture{#1}~euros + \end{minipage}"),(0,0)); + ); + pair PointBase,PointTest,Decalage; + PointBase=1/2[M20,M2+(u*0.75Longueur,0)]; + PointTest=(0,0);% + if abs(llcorner Sous-ulcorner Sous)>baselinecp: + Decalage=(8pt,\fpeval{\PfCTailleCursive}); + else: + Decalage=(8pt,2*\fpeval{\PfCTailleCursive}); + fi; + if Lire: + draw Sous shifted (PointBase-PointTest+Decalage); + else: + if Solution: + draw Sous shifted (PointBase-PointTest+Decalage); + fi; + fi; + \end{mplibcode} + \fi% +}%
\ No newline at end of file diff --git a/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex b/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex index 7bbc738f70..a741919482 100644 --- a/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex +++ b/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex @@ -1,8 +1,8 @@ %%% % Nombre Premier %%% -\def\filedateDecompNbPremier{2024/08/04}% -\def\fileversionDecompNbPremier{0.1}% +\def\filedateDecompNbPremier{2024/09/01}% +\def\fileversionDecompNbPremier{0.1a}% \message{-- \filedateDecompNbPremier\space v\fileversionDecompNbPremier}% % \setKVdefault[ClesNombrePremier]{Tableau=false,TableauVide=false,TableauVertical=false,TableauVerticalVide=false,Exposant=false,Longue=false,All=false,Arbre=false,ArbreVide=false,ArbreComplet=false,ArbreDessine=false,ArbreDessineVide=false,Entoure=false,Entourefin=false,Diviseurs=false,DiviseursT=false,Dot=\dotfill,Impose=false,ImposeAll=false,Potence=false,Decalage=10,Vide=false,CouleurFeuillage=ForestGreen,CouleurTronc=BurlyWood,CouleurFruits=Red,CouleurTexte=white,Poisson=false,Echelle=1cm,AngleArete=45,CouleurPoisson=white,Visible=false,Solution=false}% @@ -963,13 +963,13 @@ \begin{tabular}{c|c}% 1&\num{#1}\\ \xintFor* ##1 in {\xintSeq {1}{\fpeval{(\cnpT+1)/2}}}\do{% - \DiviseurNumero{#1}{##1}\num{\fpeval{\dnpT}}\uppercase{&}\DiviseurNumero{#1}{##1}\xintifboolexpr{\dnpT=\fpeval{#1/\dnpT}}{}{\num{\fpeval{#1/\dnpT}}}\\ + \DiviseurNumero{#1}{##1}\num{\fpeval{\dnpT}}\uppercase{&}\DiviseurNumero{#1}{##1}\xintifboolexpr{\dnpT==\fpeval{#1/\dnpT}}{\num{\fpeval{\dnpT}}}{\num{\fpeval{#1/\dnpT}}}\\ } \end{tabular}% \else% \begin{tabular}{c|c} 1&\num{#1} - \ifnum\cnpT>2\relax\\ + \ifnum\cnpT>1\relax\\ \xintFor* ##1 in {\xintSeq {1}{\fpeval{\cnpT/2}}}\do{% \DiviseurNumero{#1}{##1}\num{\fpeval{\dnpT}}\uppercase{&}\DiviseurNumero{#1}{##1}\num{\fpeval{#1/\dnpT}}\\ } diff --git a/macros/latex/contrib/profcollege/latex/PfCLego.tex b/macros/latex/contrib/profcollege/latex/PfCLego.tex index 6d89f82408..80bc5ddc1a 100644 --- a/macros/latex/contrib/profcollege/latex/PfCLego.tex +++ b/macros/latex/contrib/profcollege/latex/PfCLego.tex @@ -1,8 +1,8 @@ %%% % Lego %%% -\def\filedateLego{2024/08/04}% -\def\fileversionLego{0.1}% +\def\filedateLego{2024/09/01}% +\def\fileversionLego{0.1a}% \message{-- \filedateLego\space v\fileversionLego}% % \setKVdefault[Lego]{Echelle=1,Couleur=LightSteelBlue,Unite=8,Diviseur=2,Perso=false,Plaque=false,Largeura=2,Largeurb=2,Unique=false}% @@ -31,10 +31,14 @@ }{% \xdef\PfCNbCouleurs{\fpeval{floor(\useKV[Lego]{Unite}/\useKV[Lego]{Diviseur})}}% }% - \ChoixCouleur{\PfCNbCouleurs}% \ifboolKV[Lego]{Perso}{% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeAvantChoixCouleurs{\PfCFooLegoListePerso}% + \ChoixCouleur{\ListeAvantChoixCouleurslen}% + \reademptyitems% \BuildBarreLego{\FooCouleur}{\PfCFooLegoListePerso}% }{% + \ChoixCouleur{\PfCNbCouleurs}% \BuildBarreLego{\FooCouleur}{}% }% }% diff --git a/macros/latex/contrib/profcollege/latex/PfCRepresentationGraphique.tex b/macros/latex/contrib/profcollege/latex/PfCRepresentationGraphique.tex index 3eed5f9d03..47ed10c376 100644 --- a/macros/latex/contrib/profcollege/latex/PfCRepresentationGraphique.tex +++ b/macros/latex/contrib/profcollege/latex/PfCRepresentationGraphique.tex @@ -91,7 +91,7 @@ fi; endfor; label.ulft(TEX("\num{"&decimal(ymin)&"}"),(0,0) shifted Origine); - for k=1 step pasgrady until (ymax-ymin): + for k=pasgrady step pasgrady until (ymax-ymin): trace ((-0.5mm,0)--(0.5mm,0)) shifted ((0,k*y.u) shifted Origine) withpen pencircle scaled1.25; label.lft(TEX("\num{"&decimal(ymin+k)&"}"),(0,k*y.u) shifted Origine); endfor; diff --git a/macros/latex/contrib/profcollege/latex/PfCRepresenterFraction.tex b/macros/latex/contrib/profcollege/latex/PfCRepresenterFraction.tex index e8b37b8c6c..2beb3ee5ed 100644 --- a/macros/latex/contrib/profcollege/latex/PfCRepresenterFraction.tex +++ b/macros/latex/contrib/profcollege/latex/PfCRepresenterFraction.tex @@ -1,11 +1,11 @@ %%% % Fractions %%% -\def\filedateRepFrac{2024/08/04}% -\def\fileversionRepFrac{0.1}% +\def\filedateRepFrac{2024/08/30}% +\def\fileversionRepFrac{0.1a}% \message{-- \filedateRepFrac\space v\fileversionRepFrac}% % -\setKVdefault[ClesFraction]{Rayon=2cm,Disque,Regulier=false,Segment=false,Rectangle=false,Longueur=5cm,Largeur=2cm,Cotes=5,Triangle=false,Parts=3,Eprouvette=false,Couleur=green,Reponse=false,Multiple=1,Hachures=false,Epaisseur=1} +\setKVdefault[ClesFraction]{Rayon=2cm,Disque,Regulier=false,Segment=false,Rectangle=false,Longueur=5cm,Largeur=2cm,Cotes=5,Triangle=false,Parts=3,Eprouvette=false,Couleur=green,Reponse=false,Multiple=1,Hachures=false,Epaisseur=1,Aleatoire=false} \def\MPFractionEprouvetteCode{% Hauteur=\useKV[ClesFraction]{Longueur}; @@ -84,6 +84,7 @@ \ifluatex \mplibforcehmode \begin{mplibcode} + % Pas d'aléa ici : l'eau ne peut pas être en lévitation :) \MPFractionEprouvetteCode trace eprouvette(#2,#1); \end{mplibcode} @@ -94,6 +95,107 @@ \fi } +\def\MPFractionRegulierCodeAlea{% + Rayon=\useKV[ClesFraction]{Rayon}; + Cotes=\useKV[ClesFraction]{Cotes}; + color ColPolyReg; + ColPolyReg=\useKV[ClesFraction]{Couleur}; + boolean Hachures,Reponse; + Reponse=\useKV[ClesFraction]{Reponse}; + Hachures=\useKV[ClesFraction]{Hachures}; + Epaisseur=\useKV[ClesFraction]{Epaisseur}; + pair O,A[],B[]; + O=u*(0,0); + path cc,cd; + cc=cercles(O,Rayon); + for k=0 upto Cotes: + A[k]=pointarc(cc,k*(360/Cotes)); + endfor; + cd=polygone(A0 for k=1 upto Cotes-1:,A[k] endfor); + path part[]; + vardef FractionPolyReg(expr nume,deno)= + for k=0 upto deno: + B[k]=point(k*(Cotes/deno)) of cd; + dotlabel("",B[k]); + endfor; + for k=0 upto deno-1: + part[k]=O--B[k] for l=1 upto Cotes-1:if (B[k]--B[k+1]) intersectiontimes (O--A[l])<>(-1,-1):--A[l] fi endfor --B[k+1]--cycle;%O--arccercle(B[k],B[k+1],O)--cycle; + endfor; + m=(nume div deno); + if (nume mod deno)=0:m:=m-1; fi; + picture RetourFraction; + RetourFraction=image(% + Reste=((nume div deno)+1)*deno; + RetiensPart=0; + if Reponse: + if m>0: + for l=0 upto (m-1): + for k=0 upto deno-1: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(l*(2*Rayon+0.5cm,0)),1.5*360/deno,0.25,0) withcolor ColPolyReg; + else: + fill part[k] shifted(l*(2*Rayon+0.5cm,0)) withcolor ColPolyReg; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(l*(2*Rayon+0.5cm,0)),1.5*360/deno,0.25,0) withcolor ColPolyReg; + else: + fill part[k] shifted(l*(2*Rayon+0.5cm,0)) withcolor ColPolyReg; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + endfor; + fi; + for k=0 upto deno-1: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(m*(2*Rayon+0.5cm,0)),1.5*360/deno,0.25,0) withcolor ColPolyReg; + else: + fill part[k] shifted(m*(2*Rayon+0.5cm,0)) withcolor ColPolyReg; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(m*(2*Rayon+0.5cm,0)),1.5*360/deno,0.25,0) withcolor ColPolyReg; + else: + fill part[k] shifted(m*(2*Rayon+0.5cm,0)) withcolor ColPolyReg; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + fi; + drawoptions(withpen pencircle scaled Epaisseur); + for l=0 upto m: + draw cd shifted(l*(2*Rayon+0.5cm,0)); + for k=0 upto (deno-1): + draw segment(O,B[k]) shifted(l*(2*Rayon+0.5cm,0)); + endfor; + endfor; + drawoptions(); + ); + RetourFraction + enddef; +}% + \def\MPFractionRegulierCode{% Rayon=\useKV[ClesFraction]{Rayon}; Cotes=\useKV[ClesFraction]{Cotes}; @@ -172,7 +274,13 @@ \ifluatex \mplibforcehmode \begin{mplibcode} + boolean Alea; + Alea=\useKV[ClesFraction]{Aleatoire}; + if Alea: + \MPFractionRegulierCodeAlea; + else: \MPFractionRegulierCode + fi; trace FractionPolyReg(#1,#2); \end{mplibcode} \else @@ -182,6 +290,122 @@ \fi }% +\def\MPFractionTriangleCodeAlea{% + Longueur:=\useKV[ClesFraction]{Longueur}; + nbparts:=\useKV[ClesFraction]{Parts}; + color ColTriangle; + ColTriangle=\useKV[ClesFraction]{Couleur}; + boolean Hachures,Reponse; + Reponse=\useKV[ClesFraction]{Reponse}; + Hachures=\useKV[ClesFraction]{Hachures}; + Epaisseur=\useKV[ClesFraction]{Epaisseur}; + nbtriangle=0; + % + vardef Ligne(expr longueur)= + for k=0 upto 2*(longueur-1): + nbtriangle:=nbtriangle+1; + if (k mod 2)=0: + M[nbtriangle]=(Tria shifted(0.5*k*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A)); + else: + M[nbtriangle]=(Trir shifted(0.5*(k-1)*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A)); + fi; + endfor; + enddef; + % + pair A,B,C; + A=u*(0.5,0.5); + B-A=(Longueur,0); + C=rotation(B,A,60); + % + path Tria,Trir,M[]; + Tria=polygone(A,(1/nbparts)[A,B],(1/nbparts)[A,C]); + Trir=symetrie(Tria,(1/nbparts)[A,B],(1/nbparts)[A,C]); + % + for k=nbparts downto 1: + Ligne(k); + endfor; + % + picture FondTriangle; + FondTriangle=image( + for k=1 upto nbtriangle: + trace M[k]; + endfor; + ); + % + vardef FractionTriangle(expr nume,deno)= + m:=nume div deno; + if (nume mod deno)=0: + m:=m-1; + fi; + picture RetourFraction; + RetourFraction=image( + Reste=((nume div deno)+1)*deno; + RetiensPart=0; + if Reponse: + if m>0: + for l=0 upto (m-1): + for k=1 upto nbtriangle: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(M[k] shifted(l*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle; + else: + fill M[k] shifted(l*(Longueur+1cm,0)) withcolor ColTriangle; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(M[k] shifted(l*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle; + else: + fill M[k] shifted(l*(Longueur+1cm,0)) withcolor ColTriangle; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + endfor; + fi; + for k=1 upto nbtriangle: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(M[k] shifted(m*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle; + else: + fill M[k] shifted(m*(Longueur+1cm,0)) withcolor ColTriangle; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(M[k] shifted(m*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle; + else: + fill M[k] shifted(m*(Longueur+1cm,0)) withcolor ColTriangle; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + fi; + drawoptions(withpen pencircle scaled Epaisseur); + for l=0 upto m: + trace FondTriangle shifted(l*(Longueur+1cm,0)); + endfor; + ); + RetourFraction +enddef; +}% + \def\MPFractionTriangleCode{% Longueur:=\useKV[ClesFraction]{Longueur}; nbparts:=\useKV[ClesFraction]{Parts}; @@ -245,7 +469,7 @@ trace hachurage(polygone(A,B,C) shifted(l*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle; drawoptions(withpen pencircle scaled Epaisseur); else: - remplis polygone(A,B,C) withcolor ColRectangle; + remplis polygone(A,B,C) withcolor ColTriangle; fi; fi; for k=1 upto nbparts: @@ -264,7 +488,13 @@ \ifluatex \mplibforcehmode \begin{mplibcode} - \MPFractionTriangleCode + boolean Alea; + Alea=\useKV[ClesFraction]{Aleatoire}; + if Alea: + \MPFractionTriangleCodeAlea; + else: + \MPFractionTriangleCode; + fi; draw FractionTriangle(#1,#2); \end{mplibcode} \else @@ -274,6 +504,117 @@ \fi }% +\def\MPFractionRectangleCodeAlea{% + Longueur=\useKV[ClesFraction]{Longueur}; + Largeur=\useKV[ClesFraction]{Largeur}; + color ColRectangle; + ColRectangle=\useKV[ClesFraction]{Couleur}; + boolean Hachures,Reponse; + Reponse=\useKV[ClesFraction]{Reponse}; + Hachures=\useKV[ClesFraction]{Hachures}; + Epaisseur=\useKV[ClesFraction]{Epaisseur}; + Multiple=\useKV[ClesFraction]{Multiple}; + % + pair A,B,C,D,M[],N[],R[],S[]; + A=(0,0); + B-A=(Longueur,0); + C-B=(0,Largeur); + D-C=A-B; + vardef FractionRectangle(expr nume,deno)= + m=nume div deno; + if (nume mod deno)=0: + m:=m-1; + fi; + numeric parts; + parts=(deno div Multiple); + for k=0 upto parts: + M[k]=(k/parts)[A,B]; + N[k]=(k/parts)[D,C]; + endfor; + if Multiple>1: + for k=0 upto Multiple: + R[k]=(k/Multiple)[A,D]; + S[k]=(k/Multiple)[B,C]; + endfor; + fi; + picture FondRectangle; + FondRectangle=image(% + path case[]; + for k=0 upto Multiple-1: + for l=0 step Multiple until (deno-1): + case[k*(deno div Multiple)+(l div Multiple)]=(unitsquare xscaled (Multiple*abs(A-B)/deno) yscaled (abs(D-A)/Multiple)) shifted (((l/deno)[A,B]-A)+((k/Multiple)[A,D]-A)); + trace case[k*(deno div Multiple)+(l div Multiple)]; + endfor; + endfor; + ); + picture RetourRectangle; + RetourRectangle=image( + Reste=((nume div deno)+1)*deno; + RetiensPart=0; + if Reponse: + if m>0: + for l=0 upto (m-1): + for k=0 upto deno-1: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(case[k] shifted(l*(Longueur+1cm,0)),45,0.25,0) withcolor ColRectangle; + else: + fill case[k] shifted(l*(Longueur+1cm,0)) withcolor ColRectangle; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(case[k] shifted(l*(Longueur+1cm,0)),45,0.25,0) withcolor ColRectangle; + else: + fill case[k] shifted(l*(Longueur+1cm,0)) withcolor ColRectangle; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + endfor; + fi; + for k=0 upto deno-1: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(case[k] shifted(m*(Longueur+1cm,0)),45,0.25,0) withcolor ColRectangle; + else: + fill case[k] shifted(m*(Longueur+1cm,0)) withcolor ColRectangle; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(case[k] shifted(m*(Longueur+1cm,0)),45,0.25,0) withcolor ColRectangle; + else: + fill case[k] shifted(m*(Longueur+1cm,0)) withcolor ColRectangle; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + fi; + for l=0 upto m: + trace FondRectangle shifted(l*(Longueur+1cm,0)); + endfor; + ); + RetourRectangle + enddef; +}% + \def\MPFractionRectangleCode{% Longueur=\useKV[ClesFraction]{Longueur}; Largeur=\useKV[ClesFraction]{Largeur}; @@ -382,7 +723,13 @@ \ifluatex% \mplibforcehmode% \begin{mplibcode} - \MPFractionRectangleCode + boolean Alea; + Alea=\useKV[ClesFraction]{Aleatoire}; + if Alea: + \MPFractionRectangleCodeAlea; + else: + \MPFractionRectangleCode; + fi; trace FractionRectangle(#1,#2); \end{mplibcode} \else% @@ -392,6 +739,101 @@ \fi% }% +\def\MPFractionDisqueCodeAlea{% + Rayon=\useKV[ClesFraction]{Rayon}; + Epaisseur=\useKV[ClesFraction]{Epaisseur}; + color ColDisque; + ColDisque=\useKV[ClesFraction]{Couleur}; + boolean Hachures,Reponse; + Hachures=\useKV[ClesFraction]{Hachures}; + Reponse:=\useKV[ClesFraction]{Reponse}; + % + pair A,B[]; + A=(0,0); + path cc,part[]; + cc=cercles(A,Rayon); + vardef FractionDisque(expr nume,deno)= + for k=0 upto deno+1: + B[k]=pointarc(cc,(360/deno)*k); + endfor; + for k=0 upto deno-1: + part[k]=A--arccercle(B[k],B[k+1],A)--cycle; + endfor; + m=(nume div deno); + if (nume mod deno)=0:m:=m-1; fi; + picture RetourFraction; + RetourFraction=image(% + Reste=((nume div deno)+1)*deno; + RetiensPart=0; + if Reponse: + if m>0: + for l=0 upto (m-1): + for k=0 upto deno-1: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(l*(2*Rayon+1cm,0)),1.5*360/deno,0.25,0) withcolor ColDisque; + else: + fill part[k] shifted(l*(2*Rayon+1cm,0)) withcolor ColDisque; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(l*(2*Rayon+1cm,0)),1.5*360/deno,0.25,0) withcolor ColDisque; + else: + fill part[k] shifted(l*(2*Rayon+1cm,0)) withcolor ColDisque; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + endfor; + fi; + for k=0 upto deno-1: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(m*(2*Rayon+1cm,0)),1.5*360/deno,0.25,0) withcolor ColDisque; + else: + fill part[k] shifted(m*(2*Rayon+1cm,0)) withcolor ColDisque; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(m*(2*Rayon+1cm,0)),1.5*360/deno,0.25,0) withcolor ColDisque; + else: + fill part[k] shifted(m*(2*Rayon+1cm,0)) withcolor ColDisque; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + fi; + drawoptions(withpen pencircle scaled Epaisseur); + for l=0 upto m: + draw cc shifted(l*(2*Rayon+1cm,0)); + for k=0 upto (deno-1): + draw segment(A,B[k]) shifted(l*(2*Rayon+1cm,0)); + endfor; + endfor; + drawoptions(); + ); + RetourFraction + enddef; +}% + \def\MPFractionDisqueCode{% Rayon=\useKV[ClesFraction]{Rayon}; Epaisseur=\useKV[ClesFraction]{Epaisseur}; @@ -448,7 +890,13 @@ \ifluatex \mplibforcehmode \begin{mplibcode} + boolean Alea; + Alea=\useKV[ClesFraction]{Aleatoire}; + if Alea: + \MPFractionDisqueCodeAlea; + else: \MPFractionDisqueCode + fi; trace FractionDisque(#1,#2); \end{mplibcode} \else @@ -458,6 +906,115 @@ \fi } +\def\MPFractionSegmentCodeAlea{% + Longueur=\useKV[ClesFraction]{Longueur}; + color ColSegment; + ColSegment=\useKV[ClesFraction]{Couleur}; + boolean Hachures,Reponse; + Reponse=\useKV[ClesFraction]{Reponse}; + Hachures=\useKV[ClesFraction]{Hachures}; + Epaisseur=\useKV[ClesFraction]{Epaisseur}; + % + pair A,C,B[]; + A=(0,0); + C-A=(Longueur,0); + % + path part[]; + % + vardef FractionSegment(expr nume,deno)= + for k=0 upto deno: + B[k]=(k/deno)[A,C]; + endfor; + for k=0 upto deno-1: + part[k]=polygone(B[k]+u*(0,-0.15),B[k+1]+u*(0,-0.15),B[k+1]+u*(0,0.15),B[k]+u*(0,0.15)); + endfor; + m=nume div deno; + picture RetourFraction; + RetourFraction=image( + Reste=((nume div deno)+1)*deno; + RetiensPart=0; + % Reponse + if Reponse: + if m>0: + for l=0 upto (m-1): + for k=0 upto deno-1: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(l*(Longueur+1cm,0)),120,0.2,0) withcolor ColSegment; + drawoptions(); + else: + draw (segment(B[k],B[k+1]) shifted(l*(Longueur+1cm,0))) withpen pencircle scaled 2 withcolor ColSegment; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(l*(Longueur+1cm,0)),120,0.2,0) withcolor ColSegment; + drawoptions(); + else: + draw (segment(B[k],B[k+1]) shifted(l*(Longueur+1cm,0))) withpen pencircle scaled 2 withcolor ColSegment; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + endfor; + fi; + for k=0 upto deno-1: + if RetiensPart<nume: + if Reste>(nume-RetiensPart): + test:=uniformdeviate(1); + if test>0.5: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(m*(Longueur+1cm,0)),120,0.2,0) withcolor ColSegment; + drawoptions(); + else: + draw (segment(B[k],B[k+1]) shifted(m*(Longueur+1cm,0))) withpen pencircle scaled 2 withcolor ColSegment; + fi; + fi; + else: + RetiensPart:=RetiensPart+1; + if Hachures: + drawoptions(withpen pencircle scaled Epaisseur); + draw hachurage(part[k] shifted(m*(Longueur+1cm,0)),120,0.2,0) withcolor ColSegment; + else: + draw (segment(B[k],B[k+1]) shifted(m*(Longueur+1cm,0))) withpen pencircle scaled 2 withcolor ColSegment; + fi; + fi; + fi; + Reste:=Reste-1; + endfor; + fi; + %fin Reponse + if Hachures:drawoptions(withpen pencircle scaled Epaisseur);fi; + % draw (segment(B[0],B[nume mod deno]) shifted(m*(Longueur+1cm,0))); + for l=0 upto m: + draw segment(A,C) shifted(l*(Longueur+1cm,0)); + endfor; + marque_p:="tiretv"; + for l=0 upto m-1: + for k=0 upto deno: + pointe(B[k] shifted(l*(Longueur+1cm,0))); + endfor; + endfor; + if (nume mod deno)<>0: + for k=0 upto deno: + pointe(B[k] shifted(m*(Longueur+1cm,0))); + endfor; + fi; + ); + RetourFraction + enddef; +} + \def\MPFractionSegmentCode{% Longueur=\useKV[ClesFraction]{Longueur}; color ColSegment; @@ -529,7 +1086,13 @@ \ifluatex \mplibforcehmode \begin{mplibcode} + boolean Alea; + Alea=\useKV[ClesFraction]{Aleatoire}; + if Alea: + \MPFractionSegmentCodeAlea; + else: \MPFractionSegmentCode + fi; trace FractionSegment(#1,#2); \end{mplibcode} \else diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty index cfef5e5232..a7b20bf698 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/08/27}% +\def\filedate{2024/09/03}% \let\PfCfiledate\filedate% -\def\fileversion{0.99-A-h}% +\def\fileversion{0.99-A-i}% \let\PfCfileversion\fileversion% \ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]% @@ -856,6 +856,7 @@ \def\PfCSymbolTimes{\times}% \def\PfCSymbolDiv{\div}% +\input{PfCCheque} \input{PfCCalculsDetailles} \input{PfCTableauDoubleEntree} \input{PfCUrneProba} |