diff options
Diffstat (limited to 'macros/latex/contrib')
24 files changed, 373 insertions, 8694 deletions
diff --git a/macros/latex/contrib/arraycols/README.md b/macros/latex/contrib/arraycols/README.md index 5c316f85f8..6cdafd4ee7 100644 --- a/macros/latex/contrib/arraycols/README.md +++ b/macros/latex/contrib/arraycols/README.md @@ -7,8 +7,8 @@ This small package provides new column types for array and tabular environments, horizontally and vertically centered, or with adjusted height for big mathematical expressions. -The columns width can be fixed or calculated like in tabularx environments. -Macros for drawing vertical and horizontal rules of variable thickness are also provided. +The columns width can be either fixed or calculated, similar to tabularx environments. +Column types or macro for drawing vertical and horizontal rules of variable thickness are also provided. ## Installation diff --git a/macros/latex/contrib/arraycols/arraycols.dtx b/macros/latex/contrib/arraycols/arraycols.dtx index 9a62fa7f1c..43dc0fe7ea 100644 --- a/macros/latex/contrib/arraycols/arraycols.dtx +++ b/macros/latex/contrib/arraycols/arraycols.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2020 by Antoine Missier <antoine.missier@ac-toulouse.fr> +% Copyright (C) 2019-2023 by Antoine Missier <antoine.missier@ac-toulouse.fr> % % This file may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3 of this license @@ -19,8 +19,8 @@ %</driver> %<*package> \NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{arraycols} - [2020/11/23 v1.1 .dtx arraycols file] +\ProvidesPackage{arraycols} + [2023/08/09 v1.3 .dtx arraycols file] %</package> %<*driver> \documentclass{ltxdoc} @@ -29,23 +29,23 @@ \usepackage[french,english]{babel} \usepackage{lmodern} \usepackage{arraycols} -\DisableCrossrefs +\DisableCrossrefs %\CodelineIndex %\RecordChanges \usepackage{hyperref} \hypersetup{% colorlinks, - linkcolor=blue, + linkcolor=blue, citecolor=blue, - pdftitle={arraycols}, - pdfsubject={LaTeX package}, + pdftitle={arraycols}, + pdfsubject={LaTeX package}, pdfauthor={Antoine Missier} } -\MakeShortVerb{*} +\MakeShortVerb{"} \begin{document} - \DocInput{arraycols.dtx} - %\PrintChanges - %\PrintIndex +\DocInput{arraycols.dtx} +%\PrintChanges +%\PrintIndex \end{document} %</driver> % \fi @@ -73,52 +73,53 @@ % \changes{v1.0}{2019/06/17}{English translation by François Bastouil} % \changes{v1.1}{2020/11/23}{Incompatibility with tablestyles mentioned, % minor changes in documentation} +% \changes{v1.2}{2021/09/20}{Incompatibility with siunitx package (called by pstricks-add) is solved} +% \changes{v1.3}{2023/09/08}{Small changes in the documentation} % % \GetFileInfo{arraycols.sty} % % \title{The \textsf{arraycols} package\thanks{This document % corresponds to \textsf{arraycols}~\fileversion, dated \filedate. -% Thanks to François Bastouil for help in English translation.}} +% Thanks to François Bastouil for assistance with the English translation.}} % \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}} -% \date{November 23, 2020} +% \date{August 9, 2023} % \maketitle % % \section{Introduction} % -% This package provides new predefined column types to typeset tables in addition to -% the \textsf{array} package by Frank Mittelbach and David Carlisle~\cite{ARRAY} -% (loaded by \textsf{arraycols}) and also a command to draw wide horizontal rules. -% Here is a summary of the column types and macro, defined by \textsf{arraycols}, -% which we detail in the next section. +% This package introduces new predefined column types for tables, alongside +% the \textsf{array} package by Frank Mittelbach and David Carlisle~\cite{ARRAY}. It also includes a command for wide horizontal rule drawing. +% Below is a summary of the column types and macro defined by \textsf{arraycols}, +% with further to follow. % % \begin{center}\small \setlength{\extrarowheight}{1pt} % \begin{tabular}{|cIm{7.9cm}|} % \whline % \multicolumn{2}{|c|}{\thead{Column definitions}} \\ % \Xhline{0.7pt} -% \texttt{L} & Left adjusted column (LR mode in \texttt{array} environments -% or math mode in \texttt{tabular} environment) \\ +% \texttt{L} & Left adjusted column (applicable in LR mode for \texttt{array} environments +% or math mode for \texttt{tabular} environment) \\ % \hline -% \texttt{C} & Centered adjusted column (idem) \\ +% \texttt{C} & Centered-adjusted column (similar to L but centered) \\ % \hline -% \texttt{R} & Right adjusted column (idem) \\ +% \texttt{R} & Right-adjusted column (similar to L but right-adjusted) \\ % \hline -% \texttt{t}\marg{width} & Text column (LR mode) of fixed \meta{width} like \texttt{p}, -% but horizontally and vertically centered \\ +% \texttt{t}\marg{width} & Text column of fixed \meta{width} (LR mode), similar to \texttt{p}, +% but with horizontal and vertical centering \\ % \hline % \texttt{x} & Centered column in math mode with adjusted height to % avoid touching the horizontal rules \\ % \hline -% \texttt{y} & Left aligned column in math mode with adjusted height \\ +% \texttt{y} & Left-aligned column in math mode with adjusted height \\ % \hline -% \texttt{z}\marg{width} & Centered column in math mode with adjusted height, like \texttt{x}, -% and fixed \meta{width} \\ +% \texttt{z}\marg{width} & Centered column in math mode, similar to \texttt{x}, with adjusted height, +% but with fixed \meta{width} \\ % \hline % \texttt{T} & Centered text column with adjusted width % for \texttt{tabularx} environments (calculated like \texttt{X} column) \\ % \hline -% \texttt{Z} & Centered column for \texttt{tabularx}, like \texttt{T}, -% but in math mode with adjusted height, like \texttt{x} and \texttt{z} \\ +% \texttt{Z} & Centered column for \texttt{tabularx}, similar to \texttt{T}, +% but in math mode with adjusted height, like \texttt{x} and \texttt{z} \\ % \hline % \texttt{I} & Thick vertical rule (1\,pt) \\ % \hline @@ -131,63 +132,64 @@ % \end{tabular} % \end{center} % -% Note that if a column type has already been defined previously, -% it will be overwritten with a warning message. +% Note that if a column type has been previously defined, +% using \textsf{arraycols} will overwrite it and display a warning message. % -% Besides \textsf{array}, \textsf{arraycols} loads the \textsf{cellspace} package~\cite{CELLSP}, -% necessary for the \texttt{x}, \texttt{y}, \texttt{z} and \texttt{Z} types of columns and -% \textsf{tabularx}~\cite{TABX}, necessary for \texttt{T} and \texttt{Z}, -% as well as \textsf{makecell}~\cite{MKCELL} for various alignments of multilined table cells. -% The \textsf{tablestyles} package~\cite{TBLSTY} defines also L, C, R, Z column types -% but in a different way, nevertheless this package is incompatible with \textsf{makecell} -% and therefore with \textsf{arraycols} too. +% In addition to loading the \textsf{array} package, \textsf{arraycols} also requires the \textsf{cellspace} package~\cite{CELLSP}, +% which is necessary for the \texttt{x}, \texttt{y}, \texttt{z} and \texttt{Z} column types. Moreover it relies on +% \textsf{tabularx}~\cite{TABX} for \texttt{T} and \texttt{Z} column types and +% loads \textsf{makecell}~\cite{MKCELL} for creation of multilined tabular cells. +% It's worth mentioning that the \textsf{tablestyles} package~\cite{TBLSTY} +% also defines L, C, R and Z column types differently. +% Nevertheless, \textsf{tablestyles} is incompatible with \textsf{makecell} +% and consequently with \textsf{arraycols} as well. % -% With a very short code, this package does not claim to develop new macros. -% Its main action is to combine and set features coming from other packages. +% Despite its minimal code, this package does not aim to introduce new macros. +% Its main purpose is to combine and configure features derived from other packages. % % \section{Usage} % %\medskip % \DescribeEnv{L} \DescribeEnv{C} \DescribeEnv{R} % Referring to an example from the \textsf{array} package documentation, -% \textsf{arraycols} provides the |L|, |C|, |R| columns types -% which reverse the mathematical mode. -% Then we can use them to get centered, left-aligned or right-aligned -% LR-mode in an \texttt{array} environment or math-mode in a \texttt{tabular} environment. -% For instance, the declaration *\begin{tabular}{|l|C|r|}* sets centered mathematical mode -% in the second column and declaration *\begin{array}{|L|c|c|}* -% sets text mode, left aligned in the first column\footnote{The declarations +% the |L|, |C| and |R| columns types, offered by \textsf{arraycols}, provide the convenience +% of reversing the mathematical mode. +% This allows to achieve centered, left-aligned or right-aligned +% LR-mode in an \texttt{array} environment or an equivalent math-mode +% in a \texttt{tabular} environment. +% For instance, using the declaration "\begin{tabular}{|l|C|r|}" sets the second column +% in centered mathematical mode. Similarly, using the declaration "\begin{array}{|L|c|c|}" +% sets the first column\footnote{The declarations % \texttt{L, C, R} do not work in a \texttt{tabularx} environment. -% Note that the \textsf{tabulary} package by David Carlisle~\cite{TABY} -% already defines the \texttt{L, C, R, J} column types for particular alignments -% in tables of same type as \texttt{tabularx}, -% but there is no incompatibility because these column definitions -% only apply in \texttt{tabulary} environments. -% }. +% Additionally, the \mbox{\textsf{tabulary}} package by David Carlisle~\cite{TABY} +% already defines the \texttt{L, C, R} and \texttt{J} column types for specific alignments +% in tables of the same type as \texttt{tabularx}. +% However there is no incompatibility with \textsf{arraycols} because these column definitions +% apply exclusively in \texttt{tabulary} environments. +% } in text mode, left-aligned. % % \medskip % \DescribeEnv{t\marg{width}} -% The new column type definition \texttt{t}\{\meta{width}\} (text in LR-mode) -% produces horizontal and vertical centering in the column unlike the classics +% The newly introduced column type definition \texttt{t}\{\meta{width}\} (text in LR-mode) +% achieves both horizontal and vertical centering within the column. It is distinct from the traditional % \texttt{p}\marg{width} (in standard \LaTeX) and \texttt{m}\marg{width} -% (from the \textsf{array} package) which produce left aligned text (visible when the column -% is wider than the text inside). +% (from the \textsf{array} package) column types, which are equivalent to +% "\parbox[t]" or "\parbox". % % \medskip % \DescribeEnv{x} \DescribeEnv{y} -% To ensure sufficient height for rows, for instance in displaymath mode -% formulas, we provide the columntypes \texttt{x} (centered) +% In order to guarantee adequate row heights, especially for displaymath mode +% formulas, the package includes the column types \texttt{x} (centered) % and \texttt{y} (left aligned), based on the \textsf{cellspace} package % by Josselin Noirel~\cite{CELLSP}. -% They allow automatic adjustment of row heights to avoid touching the -% horizontal rules when content is too high. -% Although \textsf{cellspace} is defined \emph{a priori} for \texttt{tabular} environments, -% the new \texttt{x} and \texttt{y} column types, defined by \textsf{arraycols}, -% produce a column in mathematical mode with good adjustment, -% either in a \texttt{tabular} or in an \texttt{array} environment. -% -% Look at the following examples produced with -% *\begin{array}{|c|}* and with *\begin{array}{|x|}*. +% These column types allow automatic adjustment of row heights to prevent any overlap with +% horizontal rules in cases where the content is too tall. +% While \textsf{cellspace} is initially designed for \texttt{tabular} environments, +% the new \texttt{x} and \texttt{y} column types, introduces by \mbox{\textsf{arraycols}}, +% generate mathematically well-adjusted columns. +% They are applicable in both \texttt{tabular} and \texttt{array} environments. +% Examine the following examples created using +% "\begin{array}{|c|}" and "\begin{array}{|x|}". % \[ % \begin{array}{|c|} % \hline @@ -220,46 +222,54 @@ % \og the \textsf{amsmath} package can be loaded beforehand with other % packages (such as \texttt{empheq} or \texttt{mathtools}), % were an incompatibility to arise from one’s loading it later\fg.} -% for a good management of row heights in matrix tables. +% to effectively manage row heights in matrix tables. +% Another option of \textsf{cellspace}, \texttt{column=Q} +% (with \texttt{S} being the default in \textsf{cellspace})\footnote{The +% selection of the letter Q to substitute the default column modifier S of the \textsf{cellspace} +% package is here arbitrary.}, was necessary to prevent any compatibility issues +% with the \textsf{siunitx} package (also loaded by \textsf{pstricks-add}). +% The \texttt{Q} column type serves as a \og modifier \fg{} +% that, when combined with the traditional +% column types \texttt{l, c, r}, permits the adjustment of cell height. % % \medskip -% Notice that another package, \textsf{booktabs}~\cite{BOOK}, also provides -% an excellent adjustment of row heights, but unfortunately, it doesn't handle height -% of vertical separators *|*. -% To get the same vertical adjustment as \textsf{booktabs}, -% we set the \textsf{cellspace} parameters as follows:\\ -% |\setlength{\cellspacetoplimit}{3pt}|, \\ -% |\setlength{\cellspacebottomlimit}{2pt}|. +% Notice that another package, \textsf{booktabs}~\cite{BOOK}, also offers +% excellent row height adjustment. However, regrettably, it doesn't handle the height +% of vertical separators "|". +% In order to achieve a similar vertical adjustment as \textsf{booktabs}, +% we configure the \textsf{cellspace} parameters as follows:\\ +% "\setlength{\cellspacetoplimit}{3pt}", \\ +% "\setlength{\cellspacebottomlimit}{2pt}". % -% We should also mention the \textsf{tabls} package by Donald Arneseau~\cite{TABLS} +% Additionally, it's worth mentioning the \textsf{tabls} package by Donald Arneseau~\cite{TABLS} % that makes a good adjustment of row heights as well, but it is incompatible % with the \textsf{array} and \textsf{numprint} packages. % % \medskip -% At last, it is also possible to make manual adjustments with the |\vstrut| command -% from the \textsf{spacingtricks} package~\cite{SPA}, or |\gape| and |\Gape| +% Finally, manual adjustments can also be achieved using the "\vstrut" command +% from the \textsf{spacingtricks} package~\cite{SPA}, or by utilizing "\gape" and "\Gape" % from the \textsf{makecell} package~\cite{MKCELL}, -% or |\bigstrut| from the \textsf{bigstrut} package~\cite{STRUT}. +% as well as employing "\bigstrut" from the \textsf{bigstrut} package~\cite{STRUT}. % % \medskip % \DescribeEnv{z\marg{width}} -% The column type \texttt{z}\marg{width} enables to set the column width, -% as \texttt{t}\marg{width}, -% but also activates the math mode and adjusts the row height, -% as \texttt{x}. +% The \texttt{z}\marg{width} column type allows you to define the column width, +% just like \texttt{t}\marg{width}, +% and it also activates math mode and adjusts the row height, +% similar to the \texttt{x} column type. % % \medskip % \DescribeEnv{T} \DescribeEnv{Z} -% The \textsf{tabularx} package by David Carlisle~\cite{TABX} provides -% the \texttt{X} column definition whose width is calculated according -% to the required width for the whole table, and with left alignment -% as for \texttt{p}\marg{width}. -% *\begin{tabularx}{8cm}{|c|X|X|}* adjusts the width of the \texttt{X} columns -% for a total witdh of the table equals to 8\,cm. As a complement, we propose -% the \texttt{T} declaration, doing the same thing but with horizontal centering -% and \texttt{Z} which furthermore activates the mathematical mode and adjusts -% line heights (as \texttt{x} or \texttt{z}). Here is an example with -% *\begin{tabularx}{\linewidth}{|T|y|x|Z|T|}*. +% The \textsf{tabularx} package by David Carlisle~\cite{TABX} introduces +% the \texttt{X} column definition, which calculates its width based on +% the required width for the entire table. It aligns text to the left +% akin to \texttt{p}\marg{width}. +% For instance, using "\begin{tabularx}{8cm}{|c|X|X|}" adjusts the width of the \texttt{X} columns +% to achieve a total width of 8\,cm. To complement this, we offer +% the \texttt{T} declaration, which performs a similar function but centers the content horizontally. +% Additionally the \texttt{Z} declaration goes further by activating mathematical mode and adjusting +% line heights, comparable to \texttt{x} or \texttt{z}). Here's an example with +% "\begin{tabularx}{\linewidth}{|T|y|x|Z|T|}". % \begin{center} % \begin{tabularx}{\linewidth}{|T|y|x|Z|T|} % \hline @@ -267,44 +277,43 @@ % \displaystyle\lim_{\substack{x \to 1\\x>1}} \ln\left(\dfrac{x^2}{x-1}\right) & % \dfrac{a}{b} & % \dfrac{a}{b} + \displaystyle \int_{1}^{X} \frac{1}{t}\,\mathrm{d}t & -% \makecell{a multiline \\ piece of text}\\ +% \makecell{a multi-line \\ piece of text}\\ % \hline % \end{tabularx} % \end{center} -% To keep the perfect aligment of fraction bars in mathematical formulas, -% cells are not vertically centered, however, to get a proper vertical positioning -% in the last cell, we have used the powerfull |\makecell| command of +% In order to maintain precise alignment of fraction bars within mathematical formulas, +% cells are deliberately not vertically centered. Nevertheless, for achieving accurate vertical positioning +% within the last cell, we have used the powerful "\makecell" command from % the \textsf{makecell} package by Olga Lapko~\cite{MKCELL}: -% |\makecell{a multiline \\ piece of text}|. +% "\makecell{a multi-line \\ piece of text}". % -% \medskip +% \bigskip % \DescribeEnv{I} \DescribeEnv{V\marg{thickness}} -% The column definition \texttt{I} is suggested in The \LaTeX\ Companion~\cite{COMP} -% and enables to draw a thick vertical line (1\,pt thick) instead of the one obtained -% with standard declaration *|*. To choose thickness, we propose further column +% The column definition \texttt{I} is mentioned in The \LaTeX\ Companion~\cite{COMP} +% and allows for drawing a thicker \emph{vertical} line (1\,pt thick) compared to the one achieved +% with the standard declaration "|". For selecting the line thickness, we additionally provide the column % definition \texttt{V}\marg{thickness}\footnote{The definition of \texttt{V} -% would have been simplified by using an optional argument for \texttt{I} -% but this way out is not working.}. +% would have been simplified by utilizing an optional argument for \texttt{I}, but unfortunately, this approach doesn't function.}. % % \medskip % \DescribeMacro{\whline} -% Likewise, the |\whline| command, proposed in The \LaTeX\ Companion, enables to draw a -% thick horizontal line (1\,pt thick) instead of the one obtained with |\hline| -% and the \textsf{makecell} package provides further command |\Xhline|\marg{thickness} -% enabling to choose the thickness of the horizontal rule. +% Similarly, the "\whline" command, suggested in The \LaTeX\ Companion, allows for drawing a +% thicker \emph{horizontal} line (1\,pt thick) compared to the line obtained with "\hline". +% Moreover, the \textsf{makecell} package provides the command "\Xhline"\marg{thickness} +% enabling the choice of horizontal rule thickness. % % \medskip -% The introduction table has been typeset with a column declaration \texttt{I} -% as separator between the two columns of text, and with |\whline| for the horizontal rules -% at the begin and at the end of the table, -% and |\Xhline{0.8pt}| for the one following the legend rows. -% Formatting header lines has been done with |\thead| command from the \textsf{makecell} -% package. For this command \textsf{arraycols} sets by default:\\ -% |\renewcommand\theadfont{\footnotesize\sffamily}| \\ -% (originally |\footnotesize| only, without |\sffamily|). -% At last, according to a recommendation of the \textsf{array} package~\cite{ARRAY}, -% 1\,pt has been added to the normal height of every row of this table, with the command -% |\setlength{\extrarowheight}{1pt}|\footnote{As mentioned +% The introductory table has been typeset with a column declaration \texttt{I} +% serving as a separator between the two text columns. +% Horizontal rules at the beginning and end of the table are accomplished using "\whline", +% while a "\Xhline{0.8pt}" rule is employed after the legend rows. +% The formatting of header rows is achieved using the "\thead" command from the \textsf{makecell} +% package. By default, \textsf{arraycols} sets: +% "\renewcommand\theadfont{\footnotesize\sffamily}" +% (initially |\footnotesize| only, without "\sffamily"). +% Lastly, following a recommendation of the \textsf{array} package~\cite{ARRAY}, +% an additional 1\,pt has been added to the standard height of each row within this table. This adjustment is implemented with the command +% "\setlength{\extrarowheight}{1pt}"\footnote{As stated % in the \textsf{array} package documentation: % \og This is important for tables with horizontal lines because those % lines normally touch the capital letters\fg.}. @@ -314,7 +323,7 @@ % \section{Implementation} % \begin{macrocode} \RequirePackage{array} -\RequirePackage[math]{cellspace} +\RequirePackage[math,column=Q]{cellspace} \RequirePackage{tabularx} % must be loaded after cellspace \RequirePackage{makecell} @@ -323,41 +332,41 @@ \newcolumntype{R}{>{$}r<{$}} \newcolumntype{t}[1]{>{\centering\arraybackslash}m{#1}} % \end{macrocode} -% The \textsf{cellspace} package provides the \texttt{S} modifier enabling, -% when placed before a column declaration, to adjust the height of the content of the cells -% to avoid to touch horizontal rules. Spacing between the content and the rules -% is controlled by the parameters -% |\cellspacetoplimit| and |\cellspacebottomlimit|. +% The \textsf{cellspace} package offers the \texttt{S} modifier (we used \texttt{Q} instead), which, +% when placed before a column declaration, allows for the adjustment of cell content height +% to prevent any overlap with horizontal rules. The spacing between the content and the rules +% is governed by the parameters +% "\cellspacetoplimit" and "\cellspacebottomlimit". % % \begin{macrocode} -\newcolumntype{x}{>{$}Sc<{$}} -\newcolumntype{y}{>{$}Sl<{$}} +\newcolumntype{x}{>{$}Qc<{$}} +\newcolumntype{y}{>{$}Ql<{$}} \setlength{\cellspacetoplimit}{3pt} \setlength{\cellspacebottomlimit}{2pt} -\newcolumntype{z}[1]{>{$}S{>{\centering\arraybackslash}p{#1}}<{$}} +\newcolumntype{z}[1]{>{$}Q{>{\centering\arraybackslash}p{#1}}<{$}} % \end{macrocode} -% For the \texttt{z} definition of column, we use \texttt{p} and not \texttt{m} -% (which automatically centers) in order to keep a correct alignment for mathematical -% expressions in the cells of a same row. +% When defining the \texttt{z} column type, we employ the \texttt{p} column type instead of \texttt{m} +% (which centers content automatically). This choice ensures proper alignment of mathematical +% expressions within cells of the same row. % \medskip % \begin{macrocode} \newcolumntype{T}{>{\centering\arraybackslash}X} -\newcolumntype{Z}{>{$}ST<{$}} +\newcolumntype{Z}{>{$}QT<{$}} % \end{macrocode} -% The \texttt{T} columns are not automatically centered. It would be possible to do it -% with the command |\renewcommand{\tabularxcolumn}[1]{m{#1}}| +% The \texttt{T} columns are not centered automatically. Although it's possible to achieve this +% by using the command "\renewcommand{\tabularxcolumn}[1]{m{#1}}" % (with \texttt{m} instead of default value \texttt{p}), -% but unfortunately this has a global effect for all the declarations of columns based -% on \texttt{X}, so \texttt{T} but also \texttt{Z}, and this would lead to disturb -% alignment of mathematical expressions in the cells of a same row. +% unfortunately, this approach has a global effect on all column declarations based +% on \texttt{X}, including \texttt{T} and \texttt{Z}. As a result, it could disrupt the +% alignment of mathematical expressions within cells of the same row. % \begin{macrocode} \newcolumntype{I}{!{\vrule width 1pt}} \newcolumntype{V}[1]{!{\vrule width #1}} \newlength\savedwidth \newcommand{\whline}{% - \noalign{\global\savedwidth\arrayrulewidth\global\arrayrulewidth 1pt} - \hline - \noalign{\global\arrayrulewidth\savedwidth} + \noalign{\global\savedwidth\arrayrulewidth\global\arrayrulewidth 1pt} + \hline + \noalign{\global\arrayrulewidth\savedwidth} } \renewcommand\theadfont{\footnotesize\sffamily} % \end{macrocode} @@ -378,7 +387,7 @@ % \bibitem{STRUT} \emph{The \textsf{multirow}, \textsf{bigstrut} and \textsf{bigdelim} packages}, % Piet van Oostrum, Øystein Bache, Jerry Leichter, CTAN, v2.4 2019/01/01. % \bibitem{SPA} \emph{The \textsf{spacingtricks} package}, Antoine Missier, -% CTAN, v1.0 2019/06/26. +% CTAN, v1.3 2020/11/02. % \bibitem{COMP} \emph{The \LaTeX\ Companion}. Frank Mittelbach, Michel Goossens, % Johannes Braams, David Carlisle, Chris Rowley, 2nd edition, Pearson Education, 2004. % \end{thebibliography} diff --git a/macros/latex/contrib/arraycols/arraycols.ins b/macros/latex/contrib/arraycols/arraycols.ins index 5c6a796f93..567b7a7540 100644 --- a/macros/latex/contrib/arraycols/arraycols.ins +++ b/macros/latex/contrib/arraycols/arraycols.ins @@ -1,5 +1,5 @@ %% -%% Copyright (C) 2019-2020 by Antoine Missier <antoine.missier@ac-toulouse.fr> +%% Copyright (C) 2019-2023 by Antoine Missier <antoine.missier@ac-toulouse.fr> %% %% This file may be distributed and/or modified under the conditions of %% the LaTeX Project Public License, either version 1.3 of this license @@ -21,7 +21,7 @@ This is a generated file. -Copyright (C) 2019-2020 by Antoine Missier <antoine.missier@ac-toulouse.fr> +Copyright (C) 2019-2023 by Antoine Missier <antoine.missier@ac-toulouse.fr> This file may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license diff --git a/macros/latex/contrib/arraycols/arraycols.pdf b/macros/latex/contrib/arraycols/arraycols.pdf Binary files differindex e00a2109e3..d66dd231be 100644 --- a/macros/latex/contrib/arraycols/arraycols.pdf +++ b/macros/latex/contrib/arraycols/arraycols.pdf diff --git a/macros/latex/contrib/huawei/huawei.dtx b/macros/latex/contrib/huawei/huawei.dtx index 7546b37e56..7297aae941 100644 --- a/macros/latex/contrib/huawei/huawei.dtx +++ b/macros/latex/contrib/huawei/huawei.dtx @@ -50,7 +50,7 @@ %<class>\NeedsTeXFormat{LaTeX2e} %<class>\ProvidesClass{huawei} %<*class> -[2023-08-03 0.17.0 Template for Huawei Documents] +[2023-08-09 0.18.0 Template for Huawei Documents] %</class> %<*driver> \documentclass{ltxdoc} @@ -351,42 +351,39 @@ $pdflatex = 'pdflatex %O --shell-escape %S'; \LoadClass[12pt]{article} % \end{macrocode} -% Then, we parse package options: +% Then, we parse class options: % \changes{v0.15.0}{2022/12/13}{A new package option \texttt{breaks} introduced, which forces all sections to start from a new page.} -% \begin{macrocode} -\makeatletter -\DeclareOption{breaks}{ - \let\huawei@oldsection\section - \renewcommand\section{\clearpage\huawei@oldsection} +% \changes{v0.18.0}{2023/08/09}{Now we use \texttt{pfgopts} for parsing class options.} +% \begin{macrocode} +\RequirePackage{pgfopts} +\pgfkeys{ + /huawei/.cd, + breaks/.store in=\huawei@breaks, + slides/.store in=\huawei@slides, + nosecurity/.store in=\huawei@nosecurity, + authordraft/.store in=\huawei@authordraft, + nobrand/.store in=\huawei@nobrand, + nodate/.store in=\huawei@nodate, + nocover/.store in=\huawei@nocover, + nopaging/.store in=\huawei@nopaging, + landscape/.store in=\huawei@landscape, + anonymous/.store in=\huawei@anonymous, } -\newif\ifhuawei@dark -\DeclareOption{dark}{\huawei@darktrue} -\newif\ifhuawei@slides -\DeclareOption{slides}{\huawei@slidestrue} -\newif\ifhuawei@nosecurity -\DeclareOption{nosecurity}{\huawei@nosecuritytrue} -\newif\ifhuawei@authordraft -\DeclareOption{authordraft}{\huawei@authordrafttrue} -\newif\ifhuawei@nobrand -\DeclareOption{nobrand}{\huawei@nobrandtrue} -\newif\ifhuawei@nodate -\DeclareOption{nodate}{\huawei@nodatetrue} -\newif\ifhuawei@nocover -\DeclareOption{nocover}{\huawei@nocovertrue} -\newif\ifhuawei@nopaging -\DeclareOption{nopaging}{\huawei@nopagingtrue} -\newif\ifhuawei@landscape -\DeclareOption{landscape}{\huawei@landscapetrue} -\newif\ifhuawei@anonymous -\DeclareOption{anonymous}{\huawei@anonymoustrue} -\ProcessOptions\relax -\makeatother +\ProcessPgfPackageOptions{/huawei} +% \end{macrocode} + +% Then, we redefine |\section| command in order to break pages for each section: +% \begin{macrocode} +\makeatletter\ifdefined\huawei@breaks +\let\huawei@oldsection\section +\renewcommand\section{\clearpage\huawei@oldsection} +\fi\makeatother % \end{macrocode} % Then, we set the size of the page: % \begin{macrocode} \RequirePackage{geometry} -\makeatletter\ifhuawei@landscape +\makeatletter\ifdefined\huawei@landscape \geometry{paperwidth=16in, paperheight=9in, left=4in, right=2in, top=1.5in, bottom=1.5in} \else @@ -397,7 +394,7 @@ $pdflatex = 'pdflatex %O --shell-escape %S'; % Then, we set the size of the font: % \begin{macrocode} -\makeatletter\ifhuawei@slides +\makeatletter\ifdefined\huawei@slides \usepackage[fontsize=24pt]{fontsize} \fi\makeatother % \end{macrocode} @@ -529,7 +526,7 @@ $pdflatex = 'pdflatex %O --shell-escape %S'; % Then, we define |\huawei@header|: % \begin{macrocode} \makeatletter\newcommand\huawei@header[1]{{% - \ifhuawei@slides% + \ifdefined\huawei@slides% \setstretch{0.8}% \fontsize{19pt}{24pt}\selectfont% \else% @@ -557,8 +554,8 @@ $pdflatex = 'pdflatex %O --shell-escape %S'; % Then, we define |\huawei@logo|: % \begin{macrocode} \makeatletter\newcommand\huawei@logo[1]{ -\def\BLACK{\ifhuawei@dark white\else black\fi} -\def\BLANK{\ifhuawei@dark black\else white\fi} +\def\BLACK{\ifdefined\huawei@dark white\else black\fi} +\def\BLANK{\ifdefined\huawei@dark black\else white\fi} \begin{tikzpicture}[y=0.80pt, x=0.80pt, yscale=-#1, xscale=#1, inner sep=0pt, outer sep=0pt] \begin{scope}[even odd rule,line width=0.800pt] @@ -706,7 +703,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt] \fancyhf{} \makeatletter\fancyfoot[L]{ \huawei@bar - \ifhuawei@authordraft% + \ifdefined\huawei@authordraft% \begin{textblock}{14}[0.5,0.5](8,8)% \tikz \node[minimum width=14\TPHorizModule] {% \fontsize{64}{64}\selectfont\sffamily\scshape% @@ -717,9 +714,9 @@ xscale=#1, inner sep=0pt, outer sep=0pt] }\makeatother \makeatletter\fancyhead[L]{ \ifnum\value{page}=1\else% - \ifhuawei@nobrand\else% + \ifdefined\huawei@nobrand\else% \begin{textblock}{8}[0,0](1.2,0.2)% - \huawei@logo{\ifhuawei@slides 1.8\else 1\fi}% + \huawei@logo{\ifdefined\huawei@slides 1.8\else 1\fi}% \end{textblock}% \fi% \fi% @@ -727,7 +724,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt] \makeatletter\fancyhead[R]{ \begin{textblock}{8}[1,0](15.8,0.2)% \raggedleft\huawei@header{% - \ifhuawei@nosecurity\else% + \ifdefined\huawei@nosecurity\else% \thesecurity \fi% }% @@ -737,16 +734,16 @@ xscale=#1, inner sep=0pt, outer sep=0pt] \begin{textblock}{8}[0,1](1.2,15.8)% \ifnum\value{page}=1\else% \huawei@header{\raggedright% - \ifhuawei@anonymous\else% + \ifdefined\huawei@anonymous\else% \theauthor% - \ifhuawei@nosecurity\else% + \ifdefined\huawei@nosecurity\else% \ifx\theid\empty\else, \theid\fi \fi% - \ifhuawei@nobrand\else% + \ifdefined\huawei@nobrand\else% \newline \fi% \fi% - \ifhuawei@nobrand\else% + \ifdefined\huawei@nobrand\else% \thecompany{} \fi% }% @@ -755,14 +752,14 @@ xscale=#1, inner sep=0pt, outer sep=0pt] \begin{textblock}{8}[1,1](15.8,15.8)% \raggedleft\huawei@header{% \ifnum\value{page}=1\else% - \ifhuawei@nopaging\else% + \ifdefined\huawei@nopaging\else% Page \#\thepage{} of \pageref*{LastPage}% - \ifhuawei@nodate\else% + \ifdefined\huawei@nodate\else% \\ \fi% \fi% \fi% - \ifhuawei@nodate\else% + \ifdefined\huawei@nodate\else% \today{} \settimeformat{daytime}\currenttime{}% \fi% }% @@ -789,23 +786,23 @@ xscale=#1, inner sep=0pt, outer sep=0pt] \ifx\thesubtitle\empty\else% {\color{gray!50!black}\large\thesubtitle\par} \fi - \ifhuawei@nobrand\else% - \ifhuawei@anonymous\else% + \ifdefined\huawei@nobrand\else% + \ifdefined\huawei@anonymous\else% \ifx\thecompany\empty\else% \thecompany\newline \fi \fi \fi \ifx\theauthor\empty\else% - {\scshape\ifhuawei@anonymous + {\scshape\ifdefined\huawei@anonymous Anonymous Authors \else% \theauthor \fi}% \fi% - \ifhuawei@anonymous\else% + \ifdefined\huawei@anonymous\else% \ifx\theauthor\empty\else - \ifhuawei@nobrand\else% + \ifdefined\huawei@nobrand\else% \ifx\theid\empty\else $\;$/ {\theid} \fi @@ -854,7 +851,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt] \textbf{Disclaimer}: The opinions expressed in this document are in good faith and while every care has been taken in preparing it, - \ifhuawei@nobrand% + \ifdefined\huawei@nobrand% the author% \else% \thecompany{}% @@ -863,7 +860,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt] of whatever nature in respect of these documents, including but not limited to the accuracy or completeness of any information, facts and/or opinions contained therein. - \ifhuawei@nobrand% + \ifdefined\huawei@nobrand% The author% \else% \thecompany{}% @@ -882,7 +879,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt] % Then, we define |\PrintFirstPage|: % \begin{macrocode} \makeatletter\newcommand\PrintFirstPage[1]{ - \ifhuawei@landscape\else + \ifdefined\huawei@landscape\else \PackageError{huawei}{It's allowed to use PrintFirstPage only in landscape mode}{Read huawei.pdf for more information} @@ -895,7 +892,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt] \fi \vspace*{0.5in} \maketitle - \ifhuawei@nocover\else + \ifdefined\huawei@nocover\else \begin{textblock}{14}[1,1](14,14) \raggedleft\includegraphics[height=3.6in]{huawei-cover-picture.pdf} \end{textblock} @@ -908,7 +905,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt] % Then, we define |\PrintLastPage|: % \begin{macrocode} \makeatletter\newcommand\PrintLastPage{ - \ifhuawei@landscape\else + \ifdefined\huawei@landscape\else \PackageError{huawei}{It's allowed to use PrintLastPage only in landscape mode}{Read huawei.pdf for more information} @@ -941,7 +938,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt] from those expressed or implied in the predictive statements. Therefore, such information is provided for reference purpose only and constitutes neither an offer nor an acceptance. - \ifhuawei@nobrand% + \ifdefined\huawei@nobrand% The author% \else% \thecompany{}% @@ -955,31 +952,38 @@ xscale=#1, inner sep=0pt, outer sep=0pt] % \begin{macro}{\PrintBibliography} % Then, we define |\PrintBibliography|: +% \changes{v0.18.0}{2023/08/09}{The bibliography prints in one column unless \texttt{breaks} class option is specified.} % \begin{macrocode} -\makeatletter\newcommand\PrintBibliography{ - \setlength\bibitemsep{3pt} - \AtNextBibliography{\small} - \newpage - \raggedright - \ifhuawei@landscape - \begin{multicols}{3}\setstretch{0.95}\printbibliography\end{multicols} - \else - \begin{multicols}{2}\setstretch{0.95}\printbibliography\end{multicols} - \fi +\makeatletter\newcommand\PrintBibliography{% + \setlength\bibitemsep{3pt}% + \AtNextBibliography{\small}% + \ifdefined\huawei@breaks\newpage\fi% + \begingroup% + \raggedright% + \setstretch{0.95}% + \ifdefined\huawei@landscape% + \begin{multicols}{3}\printbibliography\end{multicols}% + \else% + \ifdefined\huawei@breaks% + \begin{multicols}{2}\printbibliography\end{multicols}% + \else + \printbibliography% + \fi% + \fi% }\makeatother % \end{macrocode} % \end{macro} -% Then, we set the background color of the document: +% Then, we set the background color of the document, if required by the |dark| class option: % \begin{macrocode} -\makeatletter\ifhuawei@dark - \RequirePackage{pagecolor} - \pagecolor{black} - \color{white} +\makeatletter\ifdefined\huawei@dark + \RequirePackage{pagecolor}% + \pagecolor{black}% + \color{white}% \fi % \end{macrocode} -% Then, we configure layout: +% Then, we configure the layout: % \begin{macrocode} \AtBeginDocument{% \raggedbottom% diff --git a/macros/latex/contrib/huawei/huawei.pdf b/macros/latex/contrib/huawei/huawei.pdf Binary files differindex 8355c298f1..f002dcbce5 100644 --- a/macros/latex/contrib/huawei/huawei.pdf +++ b/macros/latex/contrib/huawei/huawei.pdf diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf Binary files differindex 188e150a29..0ef3c920c5 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex index b967adb55c..549e60d405 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex @@ -5,8 +5,8 @@ % arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') \documentclass[a4paper,french,11pt]{article} -\def\PLversion{2.7.0} -\def\PLdate{15 juin 2023} +\def\PLversion{2.7.1} +\def\PLdate{08 août 2023} \usepackage{amsfonts} \usepackage{ProfLycee} \useproflyclib{piton,minted,pythontex} @@ -434,7 +434,7 @@ Le {package} \ctex{ProfLycee} charge et utilise les {packages} : \item \ctex{mathtools}, \ctex{amssymb} ; \item \ctex{xcolor} avec l' option \textsf{[table,svgnames]} ; \item \ctex{tikz}, \ctex{pgf}, \ctex{pgffor}, \ctex{nicefrac}, \ctex{nicematrix} ; - \item \ctex{tcolorbox} avec l'option \textsf{[most]} ; + \item \ctex{tcolorbox} avec les librairies \ctex{breakable,fitting,skins,listings,listingsutf8,hooks} ; \item \ctex{xparse}, \ctex{xstring}, \ctex{simplekv}, \ctex{xinttools} ; \item \ctex{listofitems}, \ctex{xintexpr} , \ctex{xintbinhex}, \ctex{xintgcd} ; \item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{randomlist}, \ctex{fancyvrb}. @@ -7444,6 +7444,8 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0 \part{Historique} +{\small \bverb|v 2.7.1|~:~~~~Chargement de \textsf{tcolorbox} par librairies (au lieu de \textsf{[most]}) + {\small \bverb|v 2.7.0|~:~~~~Ajout de la clé \Cle{Frac} pour les axes verticaux (\pageref{reperagetikz}) {\small \bverb| |~:~~~~Fonction de répartition discrète (\pageref{fctrepart}) diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf Binary files differindex d9a165fe28..757a5a5f34 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex index c993ade44c..adf46e1690 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex @@ -2,11 +2,11 @@ % !TeX TXS-program:compile = txs:///lualatex/[--shell-escape] \documentclass[french,a4paper,10pt]{article} -\def\PLver{2.6.9} +\def\PLver{2.7.1} \usepackage[margin=1.5cm]{geometry} \usepackage{ProfLycee} \useproflyclib{piton} -\usepackage[executable=python.exe]{pyluatex} +\usepackage[executable=python,ignoreerrors]{pyluatex} \usepackage{babel} \sisetup{locale=FR,output-decimal-marker={,},group-minimum-digits=4} \usepackage{codehigh} diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.pdf Binary files differindex b8ba967585..8c7e855b09 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.pdf +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.pdf diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.tex index f25a865eba..2ddbf43ff4 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.tex +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.tex @@ -5,7 +5,7 @@ % arara: lualatex: {shell: no, synctex: yes, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') \documentclass[french,a4paper,10pt]{article} -\def\PLver{2.5.8} +\def\PLver{2.7.1} \usepackage[margin=1.5cm]{geometry} \usepackage{ProfLycee} \useproflyclib{pythontex} diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.pdf Binary files differdeleted file mode 100644 index e88f2d146d..0000000000 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.pdf +++ /dev/null diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.tex deleted file mode 100644 index cb42767b37..0000000000 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.tex +++ /dev/null @@ -1,5268 +0,0 @@ -% !TeX TXS-program:compile = txs:///arara -% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} -% arara: pythontex: {rerun: modified} if found('pytxcode', 'PYTHONTEX#py') -% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('pytxcode', 'PYTHONTEX#py') -% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') - -\documentclass{article} -\usepackage[french]{babel} -\usepackage{mathtools} -\usepackage{lualatex-math} -\usepackage{luatexbase} -\usepackage[math-style=french,bold-style=ISO]{fourier-otf} -\usepackage{ProfLycee-old} -\usepackage{tkz-euclide} -\usetikzlibrary{hobby} -\usepackage[group-minimum-digits=4]{siunitx} -\usepackage{fancyvrb} -\usepackage{fancyhdr} -\usepackage{multicol} -%\makeatletter -% \@addtoreset{section}{part} -%\makeatother -%fancy -\fancyhf{} -\renewcommand{\headrulewidth}{0pt} -\lfoot{\sffamily \small [ProfLycee]} -\cfoot{\sffamily \small - \thepage{} -} -\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} - -\usepackage{graphics} -\usepackage{hvlogos} -\usepackage{simplekv} -\usepackage{menukeys} -\let\tab\relax -\usepackage{tabto} -\usepackage{pgf,pgfplots} -\pgfplotsset{ - compat=newest, - xlabel near ticks, - ylabel near ticks -} -\usepackage{tkz-tab} -\tikzstyle{every picture}+=[remember picture] -\usepackage{listofitems} -\usepackage{xintexpr} -\usepackage{codehigh} -\usepackage{scontents} -\usepackage{hyperref} -\urlstyle{same} -\hypersetup{pdfborder=0 0 0} - -\sisetup{locale=FR} -\usepackage{geometry} -\geometry{margin=1.5cm} -\usepackage{newverbs} -\newverbcommand{\pverb}{\color{purple}}{} -\newverbcommand{\rverb}{\color{red}}{} -\newverbcommand{\vverb}{\color{ForestGreen}}{} -\newverbcommand{\averb}{\color{CadetBlue}}{} -\newverbcommand{\overb}{\color{orange}}{} -\newverbcommand{\bverb}{\color{blue}}{} -\setlength{\parindent}{0pt} -\definecolor{LightGray}{gray}{0.9} - -\def\PLversion{1.3.8} -\def\PLdate{6 Novembre 2022} - -\tcbset{vignettes/.style={% - nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,% - boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,% - } -} -\tcbset{vignettelatex/.style={% - fontupper={\vphantom{pf}\footnotesize\ttfamily}, - vignettes,% - colframe=CadetBlue,coltitle=white,colback=CadetBlue!5,% - overlay={\begin{tcbclipinterior}% - \fill[fill=lightgray!50]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{CadetBlue}{\scalebox{0.6}[0.75]{\textbf{\LaTeX}}}}} ($(interior.north west)+(5pt,0pt)$);% - \end{tcbclipinterior}} - } -} - -\newtcblisting{codetex}[1][]{% - colback=white,colframe=red!75!black,title={\small \faCode} Code \LaTeX,fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} - -\newtcolorbox{codeattention}[1][]{% - colback=Yellow!50,colframe=Yellow!50!Black,title={\small \faBomb} Attention,fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} - -\newtcolorbox{codesortie}[1][]{% - colback=white,colframe=red!75!black,title={\small \faArrowAltCircleRight[regular]} Sortie \LaTeX,fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} - -\newtcolorbox{codeidee}[1][]{% - colback=white,colframe=PeachPuff!75!black,title={\small \faLightbulb[regular]} Idée(s),fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} - -\newtcolorbox{codeinfo}[1][]{% - colback=white,colframe=SteelBlue,title={\small \faPuzzlePiece} Information(s),fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} - -\newtcolorbox{codecles}[1][]{% - colback=white,colframe=ForestGreen!75,title={\small \faPaperclip} Clés et options,fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} - -%petite vignette tex -\newcommand\ctex[1]{\tcbox[vignettelatex]{#1}} - -%gestion de la fenêtre v2 directement dans le tikzpicture -\tikzset{% - xmin/.store in=\xmin,xmin/.default=-5,xmin=-5, - xmax/.store in=\xmax,xmax/.default=5,xmax=5, - ymin/.store in=\ymin,ymin/.default=-5,ymin=-5, - ymax/.store in=\ymax,ymax/.default=5,ymax=5, - xgrille/.store in=\xgrille,xgrille/.default=1,xgrille=1, - xgrilles/.store in=\xgrilles,xgrilles/.default=0.5,xgrilles=0.5, - ygrille/.store in=\ygrille,ygrille/.default=1,ygrille=1, - ygrilles/.store in=\ygrilles,ygrilles/.default=0.5,ygrilles=0.5, - xunit/.store in=\xunit,unit/.default=1,xunit=1, - yunit/.store in=\yunit,unit/.default=1,yunit=1 -} -\newcommand\tgrilles[1][ultra thin,lightgray]{% - \draw[xstep=\xgrilles,ystep=\ygrilles,#1] (\xmin,\ymin) grid (\xmax,\ymax);% -} -\newcommand\tgrillep[1][thin,gray]{% - \draw[xstep=\xgrille,ystep=\ygrille,#1] (\xmin,\ymin) grid (\xmax,\ymax);% -} - -\newcommand\genfenetre{% - %styles - \tikzset{noeudexpl/.style={purple,font=\sffamily\small}} - \tikzset{portionexpl/.style={orange,thick,<->}} - \tikzset{expl/.style={midway,inner sep=1pt,above right=0,orange,font=\sffamily\scriptsize,rotate=45}} - \tikzset{coeffs/.style={CadetBlue!50!black,circle,draw=CadetBlue,thick,fill=CadetBlue!5,font=\small\ttfamily}} - \tikzset{tangente/.style={teal,line width=1pt,dashed}} - %grilles & axes - \tgrilles[line width=0.3pt,lightgray!50] - \tgrillep[line width=0.6pt,lightgray!50] - \draw[line width=1.5pt,->,gray] (\xmin,0)--(\xmax,0) ; - \draw[line width=1.5pt,->,gray] (0,\ymin)--(0,\ymax) ; - \foreach \x in {0,1,...,10} {\draw[gray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} - \foreach \y in {0,1,...,6} {\draw[gray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} -} - -\newcommand\gennotice{% - %notice - \draw (0,1) node[noeudexpl,below] {point 1} ; - \draw (4,3.667) node[noeudexpl,above] {point 2} ; - \draw (7.5,1.75) node[noeudexpl,below] {point 3} ; - \draw (9,2) node[noeudexpl,above] {point 4} ; - \draw (10,0) node[noeudexpl,below] {point 5} ; - \draw[portionexpl] (0,6)--(4,6) node[expl] {portion 1} ; - \draw[portionexpl] (4,6)--(7.5,6) node[expl] {portion 2} ; - \draw[portionexpl] (7.5,6)--(9,6) node[expl] {portion 3} ; - \draw[portionexpl] (9,6)--(10,6) node[expl] {portion 4} ; - \draw[orange,densely dashed,thick] (4,0)--(4,6) (7.5,0)--(7.5,6) (9,0)--(9,6) (10,0)--(10,6) ; -} - -\newcommand\gentangentes{% - %tangentes - \draw[tangente] (0,1)--(1,1) ; - \draw[tangente,domain=3:5] plot (\x,{-1/3*(\x-9)+2}) ; - \draw[tangente] (6.5,1.75)--(8.5,1.75) ; - \draw[tangente,domain=8:10] plot (\x,{-1/3*(\x-9)+2}) ; - \draw[tangente,domain=9.5:10] plot (\x,{-10*(\x-10)+0}) ;% -} - -\newcommand\listecoeffs[4]{% - \draw (0,5.5) node[left,CadetBlue,font=\small\ttfamily] {Coeffs} ; - \node[coeffs] at (2,5.5) {#1} ; - \node[coeffs] at ({(4+7.5)/2},5.5) {#2} ; - \node[coeffs] at ({(7.5+9)/2},5.5) {#3} ; - \node[coeffs] at ({(9+10)/2},5.5) {#4} ;% -} - -\title{% -\begin{minipage}{0.75\linewidth} - \begin{tcolorbox}[colframe=yellow,colback=yellow!15] - \begin{center} - \begin{tabular}{c} - \lstinline!ProfLycee!\\ - \\ - Quelques \textit{petites} commandes pour \LaTeX{} (au lycée) - \end{tabular} - \end{center} - \end{tcolorbox} -\end{minipage} -} -\author{ - \begin{tabular}{c} - Cédric Pierquet\\ - {\ttfamily c pierquet -- at -- outlook . fr} - \end{tabular} -} -\date{Version \PLversion{} -- \PLdate} - -\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}} - -\begin{document} - -%\AddToShipoutPicture{% -%\begin{tikzpicture}[remember picture,overlay] -% \node [anchor=center,yshift=1cm,xshift=-1.5cm] (box\thepage) at (current page.south east){\hyperlink{matoc}{\LARGE\faArrowAltCircleUp[regular]}}; -%\end{tikzpicture}} - -\pagestyle{fancy} - -\maketitle - -\thispagestyle{empty} - -{\Large {\bfseries Résumé} : Quelques commandes pour faciliter l'utilisation de \LaTeX{} pour les enseignants de mathématiques en lycée.} - -\medskip - -\noindent Quelques commandes pour des courbes \textit{lisses} avec gestion des extrema et des dérivées. - -Quelques commandes pour simuler une fenêtre de logiciel de calcul formel, en \TikZ. - -Quelques environnements (\textsf{tcbox}) pour présenter du code \textsf{python} ou \textsf{pseudocode}. - -Quelques environnements (\textsf{tcbox}) pour présenter des commandes dans un terminal (\textsf{win} ou \textsf{mac} ou \textsf{linux}). - -Un cartouche (\textsf{tcbox}) pour présenter des codes de partage \textsf{capytale}. - -Une commande pour tracer un pavé en droit, en \TikZ, avec création des nœuds liés aux sommets. - -Une commande pour simplifier des calculs sous forme fractionnaire. - -Une commande pour simplifier l'écriture d'un ensemble, avec espaces \og automatiques \fg. - -Une commande pour créer, en \TikZ, la \textit{toile} pour une suite récurrente. - -Une commande pour créer, en \TikZ, un cercle trigo avec options. - -Une commande pour afficher un petit schéma, en \TikZ, sur le signe d'une fonction affine ou d'un trinôme. - -Deux commandes pour, en \TikZ, créer des petits schémas \og de signe \fg. - -Une commande pour travailler sur les statistiques à deux variables (algébriques et graphiques). - -Quelques commandes pour convertir bin/dec/hex avec certains détails. - -Une commande pour, en \TikZ, créer un pixelart avec correction éventuelle. - -Une commande pour, en \TikZ, créer un SudoMaths non forcément $9\times9$. - -Des commandes pour effectuer des calculs de probas (lois binomiale, exponentielle, de Poisson, normale). - -Une commande pour, en \TikZ, créer des arbres de probas \og classiques \fg. - -\vspace{1.5cm} - -\hfill{}\textit{Merci à Anne pour ses retours et sa relecture !} - -\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !} - -\vfill - -\hrule - -\medskip - -\begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}} - {\huge \LaTeX} & & & & &\\ - & {\huge \pdfLaTeX} & & & & \\ - & & {\huge \LuaLaTeX} & & & \\ - & & & {\huge \TikZ} & & \\ - & & & & {\huge \TeXLive} & \\ - & & & & & {\huge \MiKTeX} \\ -\end{tblr} - -\medskip - -\hrule - -\vfill - -~ - -\newpage - -\phantomsection -\hypertarget{matoc}{} - -\tableofcontents - -\newpage - -\part{Introduction} - -\section{Le package ProfLycee} - -\subsection{\og Philosophie \fg{} du package} - -\begin{codeidee} -Ce \ctex{package}, très largement inspiré (et beaucoup moins abouti !) de l'excellent \ctex{ProfCollege} de C. Poulain et des excellents \ctex{tkz-*} d'A. Matthes, va définir quelques outils pour des situations particulières qui ne sont pas encore dans \ctex{ProfCollege}. - -On peut le voir comme un (maigre) complément à \ctex{ProfCollege}, et je précise que la syntaxe est très proche (car pertinente de base) et donc pas de raison de changer une équipe qui gagne ! - -\medskip - -Il se charge, dans le préambule, par \ctex{\textbackslash usepackage\{ProfLycee\}}. Il charge quelques {packages} utiles, mais j'ai fait le choix de laisser l'utilisateur gérer ses autres {packages}, comme notamment \ctex{amssymb} qui peut poser souci en fonction de la \textit{position} de son chargement. - -L'utilisateur est libre de charger ses autres {packages} utiles et habituels, ainsi que ses \textsf{polices} et \textsf{encodages} habituels. -\end{codeidee} - -\begin{codeinfo} -Le {package} \ctex{ProfLycee} charge les {packages} : - -\begin{itemize} - \item \ctex{xcolor} avec les options \textsf{[table,svgnames]} ; - \item \ctex{tikz}, \ctex{pgf}, \ctex{xfp} ; - \item \ctex{xparse}, \ctex{xkeyval}, \ctex{xstring}, \ctex{simplekv} ; - \item \ctex{listofitems}, \ctex{xintexpr} , \ctex{xintbinhex} et \ctex{xintgcd}; - \item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{tcolorbox} ; - \item \ctex{piton} et \ctex{pythontex} -\end{itemize} -\end{codeinfo} - -\begin{codeidee} -J'ai utilisé les {packages} de C. Tellechea, je vous conseille d'aller jeter un œil sur ce qu'il est possible de faire en \LaTeX{} avec \ctex{listofitems}, \ctex{randomlist}, \ctex{simplekv} ou encore \ctex{xstring} ! -\end{codeidee} - -\subsection{Chargement du package} - -\begin{codetex}[listing only] -%exemple de chargement pour une compilation en (pdf)latex -\documentclass{article} -\usepackage[french]{babel} -\usepackage[utf8]{inputenc} -\usepackage[T1]{fontenc} -\usepackage{ProfLycee} -... -\end{codetex} - -\begin{codetex}[listing only] -%exemple de chargement pour une compilation en (xe/lua)latex -\documentclass{article} -\usepackage[french]{babel} -\usepackage{mathtools} -\usepackage{fontspec} -\usepackage{ProfLycee} -... -\end{codetex} - -\subsection{Options du package} - -\begin{codeattention} -Par défaut, \ctex{minted} est chargé et donc la compilation nécessite d'utiliser \textsf{shell-escape}. Cependant, si vous ne \underline{souhaitez pas} utiliser les commandes nécessitant \ctex{minted} vous pouvez charger le package \ctex{ProfLycee} avec l'option \Cle{nominted}. -\end{codeattention} - -\begin{codetex}[listing only] -... -\usepackage[nominted]{ProfLycee} -... -\end{codetex} - -\begin{codeinfo} -En compilant (notamment avec les packages \ctex{minted} et \ctex{pythontex}) on peut spécifier des répertoires particuliers pour les (ou des) fichiers auxiliaires. - -Avec l'option \Cle{build}, l'utilisateur a la possibilité de placer les fichiers temporaires de \ctex{minted} et \ctex{pythontex} dans un répertoire \menu{build} du répertoire courant. - -\smallskip - -Dans ce cas il vaut mieux créer au préalable le répertoire \menu{build} avant de compiler un fichier ! -\end{codeinfo} - -\begin{codetex}[listing only] -... -\usepackage[build]{ProfLycee} -... -\end{codetex} - -\begin{codeinfo} -Les options précédentes sont cumulables, et, pour info, elles conditionnent le chargement des {packages} avec les options : - -\begin{itemize} - \item \ctex{\textbackslash setpythontexoutputdir\{./build/pythontex-files-\textbackslash jobname\}} - \item \ctex{\textbackslash RequirePackage[outputdir=build]\{minted\}} -\end{itemize} -\end{codeinfo} - -\section{Compléments} - -\subsection{Le système de \og clés/options \fg} - -\begin{codeidee} -L'idée est de conserver -- autant que faire se peut -- l'idée de \Cle{Clés} qui sont : -% -\begin{itemize} - \item modifiables ; - \item définies (en majorité) par défaut pour chaque commande. -\end{itemize} - -Pour certaines commandes, le système de \Cle{Clés} pose quelques soucis, de ce fait le fonctionnement est plus \textit{basique} avec un système d'\textsf{arguments} optionnels (entre \textsf{[\ldots]}) ou mandataires (entre \textsf{\{\ldots\}}). - -\smallskip - -À noter que les : -% -\begin{itemize} - \item les \Cle{Clés} peuvent être mises dans n'importe quel ordre, elles peuvent être omises lorsque la valeur par défaut est conservée ; - \item les \textsf{arguments} doivent, eux, être positionnés dans le \textit{bon ordre}. -\end{itemize} -\end{codeidee} - -\begin{codeinfo} -Les \textsf{commandes} et \textsf{environnements} présentés seront explicités via leur \textsf{syntaxe} avec les \textsf{options} ou \textsf{arguments}. - -Autant que faire se peut, des exemples/illustrations/remarques seront proposés à chaque fois. - -\smallskip - -Les \textsf{codes} seront présentés dans des \textsf{boîtes} \textcolor{red!75!black}{{\small \faCode} Code \LaTeX}, si possible avec la \textsf{sortie} dans la même boîte, et sinon la \textsf{sortie} sera visible dans des \textsf{boîtes} \textcolor{red!75!black}{{\small \faArrowAltCircleRight[regular]} Sortie \LaTeX}. - -Les \textsf{clés} ou \textsf{options} seront présentées dans des \textsf{boîtes} \textcolor{ForestGreen}{{\small \faPaperclip} Clés}. -\end{codeinfo} - -%\subsection{Outils disponibles} -% -%\begin{codeidee} -%Le {package}, qui s'enrichira peut-être au fil du temps permet -- pour le moment -- de : -% -%\begin{itemize} -% \item tracer des splines cubiques avec gestion \textit{assez fine} des tangentes ; -% \item tracer des tangentes (ou portions) de tangentes sur la même base que pour les splines ; -% \item simuler une fenêtre de logiciel formel (\textit{à la manière de} \textsf{XCas}) ; -% \item mettre en forme du code \textsf{python} ou \textsf{pseudocode} ; -% \item simuler une fenêtre de terminal (win/unix/osx) ; -% \item créer un cartouche \textit{à la manière de} Capytale ; -% \item créer rapidement un pavé droit ou un tétraèdre en \TikZ, avec gestion des nœuds ; -% \item créer rapidement un ensemble d'éléments, avec gestion des espaces ; -% \item créer, dans un environnement \TikZ, la \og toile \fg{} pour une suite récurrente : -% \item etc -%\end{itemize} -%\end{codeidee} - -\begin{codeinfo} -À noter que certaines commandes disponibles sont liées à un environnement \ctex{tikzpicture}, elles ne sont pas autonomes mais permettent de conserver -- en parallèle -- toute commande liée à \TikZ{} ! -\end{codeinfo} - -\subsection{Compilateur(s)} - -\begin{codeinfo} -Le package \ctex{ProfLycee} est compatible avec les compilateurs classiques : \textsf{latex}, \textsf{pdflatex} ou encore \textsf{lualatex}. - -\smallskip - -En ce qui concerne les codes \textsf{python} et/ou \textsf{pseudocode}, il faudra : - -\begin{itemize} - \item compiler en chaîne \textsf{pdflatex + pythontex + pdflatex} pour les environnements avec \ctex{pythontex} ; - \item compiler avec \textsf{shell-escape} (ou \textsf{write18}) pour les environnements avec \ctex{minted}. -\end{itemize} -\end{codeinfo} - -\begin{codeattention} -Certains commandes ou environnements nécessitent une compilation spécifique, qui seront indiquées clairement dans la documentation ! -\end{codeattention} - -\subsection{Problèmes éventuels\ldots} - -\begin{codeinfo} -Certaines \textsf{commandes} sont à intégrer dans un environnement \TikZ, afin de pouvoir rajouter des éléments, elles ont été testés dans des environnement \ctex{tikzpicture}, à vérifier que la gestion des axes par l'environnement \ctex{axis} est compatible\ldots - -\smallskip - -Certains packages ont une fâcheuse tendance à être tatillons sur leurs options (les \textit{fameux} \textsf{option clash for} \ldots) ou leur \textit{position} dans le chargement, donc attention notamment au chargement de \ctex{xcolor} et de \ctex{amsmath}. - -\smallskip - -En dehors de cela, ce sont des tests multiples et variés qui permettront de détecter d'éventuels bugs ! -\end{codeinfo} - -\vfill - -\hfill{\Huge $\leftrightsquigarrow$ Bonne(s) découverte(s) $\leftrightsquigarrow$}\hfill~ - -\vfill - -\newpage - -\part{Liste des commandes, par thème} - -\begin{codetex}[listing only] -%courbe d'interpolation, tangente, dans un environnement tikz -\splinetikz[<options>] -\tangentetikz[<options>] - -%toile pour une suite récurrente, dans un environnement tikz -\recurrPL[<clés>][<options du tracé>][<option supplémentaire des termes>] - -%présentation type calcul formel, dans un environnement tikz -\paramCF[<options>] -\ligneCF[<options>]{<commande>}{<résultat>} -\end{codetex} - -\begin{codetex}[listing only] -%présentation de code Python -\begin{envcodepython}(*)[<largeur>]{<commandes tcbox>}...\end{envcodepython} -\envcodepythonfichier(*)[<largeur>]{<commandes tcbox<}{<script>} -\begin{envcodepiton}[<options>]...\end{envcodepiton} -\begin{envcodepythontex}[<options>]...\end{envcodepythontex} -\begin{envcodepythonminted}(*)[<largeur>][<options>]...\end{envcodepythonminted} - -%console Python -\begin{envconsolepythontex}[<options>]...\end{envconsolepythontex} - -%présentation de pseudocode -\begin{envpseudocode}(*)[<largeur>][<options>]...\end{envpseudocode} - -%terminal OS -\begin{PLtermwin}[<largeur>]{<clés>}[<options>]...\end{PLtermwin} -\begin{PLtermunix}[<largeur>]{<clés>}[<options>]...\end{PLtermunix} -\begin{PLtermosx}[<largeur>]{<clés>}[<options>]...\end{PLtermosx} - -%code Capytale -\liencapytale(*)[<options<]{<code capytale>} -\end{codetex} - -\begin{codetex}[listing only] -%pavé et tétraèdre, dans un environnement tikz -\pavePL[<options>] -\tetraPL[<options>] - -%cercle trigo, dans un environnement tikz -\cercletrigoPL[<clés>] -\end{codetex} - -\begin{codetex}[listing only] -%paramètres d'une régression linéaire, nuage de points -\PLreglin[<clés>]{<listeX>}{<listeY>} -\PLreglinpts[<clés>]{<listeX>}{<listeY>} - -%stats à 2 variables, dans un environnement tikz -\PLgrilletikz[<options>][<options grille ppale>][<options grille second.>] -\PLaxestikz[<options>] -\PLaxextikz[<options>]{<valeurs>} \PLaxeytikz[<options>]{<valeurs>} -\PLfenetre -\PLfenetresimple<options axe Ox>{liste abscisses}<options axe Oy>{liste ordonnées} -\PLnuagepts[<options>]{<listeX>}{<listeY>} -\PLnuageptmoy[<options>] -\PLcourbe[<options>]{<formule>}{<domaine>} - -%boîte à moustaches, dans un environnement tikz -\PLboitemoust[<options>] -\PLboitemoustaxe[<options>] -\end{codetex} - -\begin{codetex}[listing only] -%loi binomiale B(n,p) -\calcPbinomP{n}{p}{k} -\calcPbinomC{n}{p}{a}{b} -\numPbinomP(*)[prec]{n}{p}{k} -\numPbinomC(*)[prec]{n}{p}{a}{b} - -%loi de Poisson P (l) -\calcPpoissP{l}{k} -\calcPpoissC{l}{a}{b} -\numPpoissP(*)[prec]{l}{k} -\numPpoissC(*)[prec]{l}{a}{b} - -%loi géométrique G (p) -\calcPgeomP{p}{k} -\calcPgeomC{l}{a}{b} -\numPgeomP{p}{k} -\numPgeomC{l}{a}{b} - -%loi hypergéométrique H (N,n,m) -\calcPhypergeomP{N}{n}{m}{k} -\calcPhypergeomP{N}{n}{m}{a}{b} -\numPhypergeomP{N}{n}{m}{k} -\numPhypergeomC{N}{n}{m}{a}{b} - -%loi normale N(m,s) -\calcPnormC{m}{s}{a}{b} -\numPnormC(*)[prec]{m}{s}{a}{b} - -%loi exponentielle E(l) -\calcPexpoC{l}{a}{b} -\numPexpoC(*)[prec]{l}{a}{b} - -%arbres de probas -\PLarbre[<options>]{<donnees>} -\begin{PLenvarbre}[<options>]{<donnees>}...\end{PLenvarbre} - -%schémas lois continues -\LoiNormaleGraphe[options]<options tikz>{m}{s}{a}{b} -\LoiExpoGraphe[options]<options tikz>{l}{a}{b} -\end{codetex} - -\begin{codetex}[listing only] -%conversions -\PLconvdecbin(*)[<clés>]{<nombre>} -\PLconvbinhex[<clés>]{<nombre>} -\PLconvtodec[<clés>]{<nombre>} -\PLconvDepuisDec[<options>]{<nombre en base 10>}{<base d'arrivée>} - -%PGCD présenté -\PresentationPGCD[<options>]{a}{b} -\end{codetex} - -\begin{codetex}[listing only] -%conversion en fraction -\convertfraction[<option>]{<argument>} - -%ensemble d'éléments -\ensPL[<clés>]{<liste>} - -%schémas pour le signe affine/trinôme, dans un environnement tikz -\aidesignePL[<clés>] -\aidesignetkztabPL[<options>]{<numligne>}[<echelle>][<décalage horizontal>] - -%trinôme, trinôme aléatoire -\EcritureTrinome[<options>]{a}{b}{c} -\end{codetex} - -\begin{codetex}[listing only] -%pixelart, dans un environnement tikz -\PLpixelart[<clés>]{<fichier>.csv} - -%sudomaths -\PLsudomaths[<options>]{<liste>}. -\begin{PLenvsudomaths}[<options>]{<grille>}...\end{PLenvsudomaths} -\end{codetex} - -\newpage - -\part{Outils pour l'analyse} - -\section{L'outil \og \textbackslash{}splinetikz \fg} - -\subsection{Courbe d'interpolation} - -\begin{codeinfo} -On va utiliser les notions suivantes pour paramétrer le tracé \og automatique \fg{} grâce à \ctex{..controls} : -% -\begin{itemize} - \item il faut rentrer les \textcolor{purple}{\textsf{points de contrôle}} ; - \item il faut préciser les \textcolor{ForestGreen}{\textsf{pentes des tangentes}} (pour le moment on travaille avec les mêmes à gauche et à droite\ldots) ; - \item on peut \og affiner \fg{} les portions de courbe en paramétrant des \textcolor{CadetBlue}{\textsf{coefficients}} (voir un peu plus loin\ldots). -\end{itemize} - -\medskip - -Pour déclarer les paramètres : -% -\begin{itemize} - \item liste des points de contrôle (minimum 2 !!) par : \verb|liste=x1/y1/d1§x2/y2/d2§...| avec les points \pverb|(xi;yi)| et \vverb|f'(xi)=di| ; - \item coefficients de contrôle par \verb|coeffs=...| : - \begin{itemize} - \item \averb|coeffs=x| pour mettre tous les coefficients à x ; - \item \averb|coeffs=C1§C2§...| pour spécifier les coefficients par portion (donc il faut avoir autant de § que pour les points !) ; - \item \averb|coeffs=C1G/C1D§...| pour spécifier les coefficients par portion et par partie gauche/droite ; - \item on peut mixer avec \averb|coeffs=C1§C2G/C2D§...|. - \end{itemize} -\end{itemize} -\end{codeinfo} - -\subsection{Code, clés et options} - -\begin{codetex}[listing only] -\begin{tikzpicture} - ... - \splinetikz[<options>] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Certains paramètres et \Cle{clés} peuvent être gérés directement dans la commande \ctex{splinetikz} : -% -\begin{itemize} - \item la couleur de la courbe par la {clé} \Cle{couleur} ;\hfill{}défaut \Cle{red} - \item l'épaisseur de la courbe par la {clé} \Cle{epaisseur} ;\hfill{}défaut \Cle{1.25pt} - \item du style supplémentaire pour la courbe peut être rajouté, grâce à la {clé} \Cle{style} ;\hfill{}défaut \Cle{vide} - \item les coefficients de \textit{compensation} gérés par la {clé} \Cle{coeffs} ;\hfill{}défaut \Cle{3} - \item les points de contrôle , affichés ou non par la {clé booléenne} \Cle{affpoints} ;\hfill{}défaut \Cle{false} - \item la taille des points de contrôle est géré par la {clé} \Cle{taillepoints}.\hfill{}défaut \Cle{2pt} -\end{itemize} -\end{codecles} - -\subsection{Compléments sur les coefficients de \og compensation \fg} - -\begin{codeidee} -Le choix a été fait ici, pour \textit{simplifier} le code, le travailler sur des courbes de Bézier. - -Pour \textit{simplifier} la gestion des nombres dérivés, les points de contrôle sont gérés par leurs coordonnées \textit{polaires}, les \textsf{coefficients de compensation} servent donc -- grosso modo -- à gérer la position radiale. - -\smallskip - -Le coefficient \Cle{3} signifie que, pour une courbe de Bézier entre $x=a$ et $x=b$, les points de contrôles seront situés à une distance radiale de $\frac{b-a}{3}$. - -Pour \textit{écarter} les points de contrôle, on peut du coup \textit{réduire} le coefficient de compensation ! - -\medskip - -Pour des intervalles \textit{étroits}, la \textit{pente} peut paraître abrupte, et donc le(s) coefficient(s) peuvent être modifiés, de manière fine. - -\medskip - -Si jamais il existe (un ou) des points \textit{anguleux}, le plus simple est de créer les splines en plusieurs fois. -\end{codeidee} - -\subsection{Exemples} - -\begin{codetex}[tikz lower] -%code tikz -\def\x{0.9cm}\def\y{0.9cm} -\def\xmin{-1}\def\xmax{11}\def\xgrille{1}\def\xgrilles{0.5} -\def\ymin{-1}\def\ymax{5}\def\ygrille{1}\def\ygrilles{0.5} -%axes et grilles -\draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax); -\draw[line width=1.5pt,->,gray] (\xmin,0)--(\xmax,0) ; -\draw[line width=1.5pt,->,gray] (0,\ymin)--(0,\ymax) ; -\foreach \x in {0,1,...,10} {\draw[gray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} -\foreach \y in {0,1,...,4} {\draw[gray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} -\draw[darkgray] (1,-4pt) node[below,font=\sffamily] {1} ; -\draw[darkgray] (-4pt,1) node[left,font=\sffamily] {1} ; -%splines -\def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} -\splinetikz[liste=\LISTE,affpoints=true,coeffs=3,couleur=red] -\end{codetex} - -\begin{codeinfo} -Avec des explications utiles à la compréhension : - -\begin{center} - \begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=7,ygrille=1,ygrilles=0.5] - \genfenetre - \splinetikz[liste=0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10,affpoints=true] - \gennotice - \gentangentes - \listecoeffs{3}{3}{3}{3} - \end{tikzpicture} -\end{center} -\end{codeinfo} - -\subsection{Avec une gestion plus fine des \og coefficients \fg} - -\begin{codeinfo} -Dans la majorité des cas, le \textit{coefficient} \textcircled{3} permet d'obtenir une courbe (ou une portion) très satisfaisante ! - -Dans certains cas, il se peut que la portion paraisse un peu trop \og abrupte \fg{}. - -On peut dans ce cas \textit{jouer} sur les coefficients de cette portion pour \textit{arrondir} un peu tout cela (\textit{ie} diminuer le \textsf{coeff}\ldots)! - -%\begin{itemize} -% \item être donnés (pour utiliser le même partout) sous la forme \Cle{coeffs=C} ; -% \item être donnés portion par portion, sous la forme \Cle{coeffs=C1§C2§...} ; -% \item être donné de manière très fine, portion par portion et côté par côté, sous la forme \Cle{coeffs=C1G/C1D§C2G/C2D§...}. -%\end{itemize} - -\begin{center} - \begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=7,ygrille=1,ygrilles=0.5] - \genfenetre - \draw (1,-4pt) node[below,font=\sffamily] {1} ; - \draw (-4pt,1) node[left,font=\sffamily] {1} ; - \def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} - \splinetikz[liste=\LISTE,affpoints=true,coeffs=3§3§3§2/1] - \gennotice - \listecoeffs{3/3}{3/3}{3/3}{2/1} - \end{tikzpicture} -\end{center} -\end{codeinfo} - -\begin{codetex}[listing only] -... -%splines -\def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} -\splinetikz[liste=\LISTE,affpoints=true,coeffs=3§3§3§2/1] -... -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=5,ygrille=1,ygrilles=0.5] - %axes et grilles - \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax); - \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax); - \draw[line width=1.5pt,->,gray] (\xmin,0)--(\xmax,0) ; - \draw[line width=1.5pt,->,gray] (0,\ymin)--(0,\ymax) ; - \foreach \x in {0,1,...,10} {\draw[gray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} - \foreach \y in {0,1,...,4} {\draw[gray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} - \draw[darkgray] (1,-4pt) node[below,font=\sffamily] {1} ; - \draw[darkgray] (-4pt,1) node[left,font=\sffamily] {1} ; -% \draw (1,-4pt) node[below,font=\sffamily] {1} ; -% \draw (-4pt,1) node[left,font=\sffamily] {1} ; - \def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} - \splinetikz[liste=\LISTE,affpoints=true,coeffs=3§3§3§2/1] - \end{tikzpicture} -\end{center} -\end{codesortie} - -\subsection{Conclusion} - -\begin{codeinfo} -Le plus \og simple \fg{} est donc: -% -\begin{itemize} - \item de déclarer la liste des points de contrôle, grâce à \ctex{\textbackslash def\textbackslash LISTE\{x1/y1/d1§x2/y2/d2§...\}} ; - \item de saisir la commande \ctex{\textbackslash splinetikz[liste=\textbackslash LISTE]} ; - \item d'ajuster les options et coefficients en fonction du rendu ! -\end{itemize} -\end{codeinfo} - -\newpage - -\section{L'outil \og \textbackslash{}tangentetikz \fg{}} - -\subsection{Définitions} - -\begin{codeidee} -En parallèle de l'outil \ctex{splinetikz}, il existe l'outil \ctex{tangentetikz} qui va permettre de tracer des tangentes à l'aide de la liste de points précédemment définie pour l'outil \ctex{splinetikz}. - -\smallskip - -NB : il peut fonctionner indépendamment de l'outil \ctex{splinetikz} puisque la liste des points de travail est gérée de manière autonome ! -\end{codeidee} - -\begin{codetex}[listing only] -\begin{tikzpicture} - ... - \tangentetikz[<options>] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Cela permet de tracer la tangente : -% -\begin{itemize} - \item au point numéro \Cle{point} de la liste \Cle{liste}, de coordonnées \textsf{xi/yi} avec la pente \textsf{di} ; - \item avec une épaisseur de \Cle{epaisseur}, une couleur \Cle{couleur} et un style additionnel \Cle{style} ; - \item en la traçant à partir de \Cle{xl} avant \textsf{xi} et jusqu'à \Cle{xr} après \textsf{xi}. -\end{itemize} -\end{codecles} - -\subsection{Exemple et illustration} - -\begin{codetex}[listing only] -\begin{tikzpicture} - ... - \def\LISTE{0/1.5/0§1/2/-0.333§2/0/-5} - %spline - \splinetikz[liste=\LISTE,affpoints=true,coeffs=3§2,couleur=red] - %tangente - \tangentetikz[liste=\LISTE,xl=0,xr=0.5,couleur=ForestGreen,style=dashed] - \tangentetikz[liste=\LISTE,xl=0.5,xr=0.75,couleur=orange,style=dotted,point=2] - \tangentetikz[liste=\LISTE,xl=0.33,xr=0,couleur=blue,style=densely dashed,point=3] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -On obtient le résultat suivant (avec les éléments rajoutés utiles à la compréhension) : - -\begin{center} - \begin{tikzpicture}[x=3cm,y=2cm,xmin=0,xmax=2,xgrilles=0.25,ymin=0,ymax=2.25,ygrilles=0.25] - \tikzset{noeudexpl/.style={purple,font=\sffamily\small}} - \tgrilles - \draw[line width=1.5pt,->,darkgray] (\xmin,0)--(\xmax,0) ; - \draw[line width=1.5pt,->,darkgray] (0,\ymin)--(0,\ymax) ; - \draw (0,1.5) node[noeudexpl,below] {point 1} ; - \draw (1,2) node[noeudexpl,below] {point 2} ; - \draw (2,0) node[noeudexpl,above left] {point 3} ; - %spline - \splinetikz[liste=0/1.5/0§1/2/-0.333§2/0/-5,affpoints=true,coeffs=3§2,couleur=red] - %tangente - \tangentetikz[liste=0/1.5/0§1/2/-0.333§2/0/-5,xl=0,xr=0.5,couleur=ForestGreen,style=dashed] - \tangentetikz[liste=0/1.5/0§1/2/-0.333§2/0/-5,xl=0.5,xr=0.75,couleur=orange,style=dotted,point=2] - \tangentetikz[liste=0/1.5/0§1/2/-0.333§2/0/-5,xl=0.33,xr=0,couleur=blue,style=densely dashed,point=3] - %explications - \draw[<->,very thick,darkgray] (0.5,2.2)--(1,2.2) node[midway,above,font=\sffamily] {xl} ; - \draw[<->,very thick,darkgray] (1,2.2)--(1.75,2.2) node[midway,above,font=\sffamily] {xr}; - \draw[thick,darkgray] (1,4pt)--(1,-4pt) node[below,font=\sffamily] {1} ; - \draw[thick,darkgray] (4pt,1)--(-4pt,1) node[left,font=\sffamily] {1} ; - \end{tikzpicture} -\end{center} -\end{codesortie} - -\subsection{Exemple avec les deux outils, et \og personnalisation \fg} - -\begin{codetex}[listing only] -\tikzset{% - xmin/.store in=\xmin,xmin/.default=-5,xmin=-5, - xmax/.store in=\xmax,xmax/.default=5,xmax=5, - ymin/.store in=\ymin,ymin/.default=-5,ymin=-5, - ymax/.store in=\ymax,ymax/.default=5,ymax=5, - xgrille/.store in=\xgrille,xgrille/.default=1,xgrille=1, - xgrilles/.store in=\xgrilles,xgrilles/.default=0.5,xgrilles=0.5, - ygrille/.store in=\ygrille,ygrille/.default=1,ygrille=1, - ygrilles/.store in=\ygrilles,ygrilles/.default=0.5,ygrilles=0.5, - xunit/.store in=\xunit,unit/.default=1,xunit=1, - yunit/.store in=\yunit,unit/.default=1,yunit=1 -} - -\begin{tikzpicture}[x=0.5cm,y=0.5cm,xmin=0,xmax=16,xgrilles=1,ymin=0,ymax=16,ygrilles=1] - \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray] (\xmin,\ymin) grid (\xmax,\ymax) ; - \draw[line width=1.5pt,->,darkgray] (\xmin,0)--(\xmax,0) ; - \draw[line width=1.5pt,->,darkgray] (0,\ymin)--(0,\ymax) ; - \foreach \x in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} - \foreach \y in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} - %la liste pour la courbe d'interpolation - \def\liste{0/6/3§3/11/0§7/3/0§10/0/0§14/14/6} - %les tangentes "stylisées" - \tangentetikz[liste=\liste,xl=0,xr=1,couleur=blue,style=dashed] - \tangentetikz[liste=\liste,xl=2,xr=2,couleur=purple,style=dotted,point=2] - \tangentetikz[liste=\liste,xl=2,xr=2,couleur=orange,style=<->,point=3] - \tangentetikz[liste=\liste,xl=2,xr=0,couleur=ForestGreen,point=5] - %la courbe en elle-même - \splinetikz[liste=\liste,affpoints=true,coeffs=3,couleur=cyan,style=densely dotted] -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\begin{center} -\begin{tikzpicture}[x=0.5cm,y=0.5cm,xmin=0,xmax=16,xgrilles=1,ymin=0,ymax=16,ygrilles=1] - \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray] (\xmin,\ymin) grid (\xmax,\ymax) ; - \draw[line width=1.5pt,->,darkgray] (\xmin,0)--(\xmax,0) ; - \draw[line width=1.5pt,->,darkgray] (0,\ymin)--(0,\ymax) ; - \foreach \x in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} - \foreach \y in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} - \draw[darkgray] (2,-4pt) node[below,font=\sffamily] {2} ; - \draw[darkgray] (-4pt,2) node[left,font=\sffamily] {2} ; - %la liste pour la courbe d'interpolation - \def\liste{0/6/3§3/11/0§7/3/0§10/0/0§14/14/6} - %les tangentes "stylisées" - \tangentetikz[liste=\liste,xl=0,xr=1,couleur=blue,style=dashed] - \tangentetikz[liste=\liste,xl=2,xr=2,couleur=purple,style=dotted,point=2] - \tangentetikz[liste=\liste,xl=2,xr=2,couleur=orange,style=<->,point=3] - \tangentetikz[liste=\liste,xl=2,xr=0,couleur=ForestGreen,point=5] - %la courbe en elle-même - \splinetikz[liste=\liste,affpoints=true,coeffs=3,couleur=cyan,style=densely dotted] - \end{tikzpicture} -\end{center} -\end{codesortie} - -\newpage - -\section{Suites récurrentes et \og toile \fg}\label{recurr} - -\subsection{Idée} - -\begin{codeidee} -L'idée est d'obtenir une commande pour tracer (en \TikZ) la \og toile \fg{} permettant d'obtenir -- graphiquement -- les termes d'une suite récurrente définie par une relation $u_{n+1}=f(u_n)$. - -\smallskip - -Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur définir et créer son environnement \TikZ, et d'insérer la commande \ctex{recurrPL} pour afficher la \og toile \fg. -\end{codeidee} - -\subsection{Commandes} - -\begin{codetex}[listing only] -... -\begin{tikzpicture}[<options>] - ... - \recurrPL[<clés>][<options du tracé>][<options supplémentaires des termes>] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Plusieurs \Cle{arguments} (optionnels) sont disponibles : - -\begin{itemize} - \item le premier argument optionnel définit les \Cle{Clés} de la commande : - \begin{itemize} - \item la clé \Cle{fct} qui définit la fonction $f$ ;\hfill{}défaut \Cle{vide} - \item la clé \Cle{nom} qui est le \textit{nom} de la suite ;\hfill{}défaut \Cle{u} - \item la clé \Cle{no} qui est l'indice initial ;\hfill{}défaut \Cle{0} - \item la clé \Cle{uno} qui est la valeur du terme initial ;\hfill{}défaut \Cle{vide} - \item la clé \Cle{nb} qui est le nombre de termes à construire ;\hfill{}défaut \Cle{5} - \item la clé \Cle{poslabel} qui correspond au placement des labels par rapport à l'axe des abscisses ;\hfill{}défaut \Cle{below} - \item la clé \Cle{decallabel} qui correspond au décalage des labels par rapport aux abscisses ;\hfill{}défaut \Cle{6pt} - \item la clé \Cle{taillelabel} qui correspond à la taille des labels ;\hfill{}défaut \Cle{small} - \item un booléen \Cle{afftermes} qui permet d'afficher les termes de la suite sur l'axe $(Ox)$.\hfill{}défaut \Cle{true} - \end{itemize} - \item le deuxième argument optionnel concerne les \Cle{options} du tracé de l'\textit{escalier} en \textit{langage \TikZ} ; - - \hfill{}défaut \Cle{thick,color=magenta} ; - \item le troisième argument optionnel concerne les \Cle{options} du tracé des termes en \textit{langage \TikZ}. - - \hfill{}défaut \Cle{dotted}. -\end{itemize} -\end{codecles} - -\begin{codeinfo} -Il est à noter que le \textsf{code} n'est pas autonome, et doit être intégré dans un environnement \ctex{tikzpicture}. - -\smallskip - -L'utilisateur est donc libre de définir ses styles pour l'affichage des éléments de son graphique, et il est libre également de rajouter des éléments en plus du tracé de la \textit{toile} ! - -\smallskip - -La macro ne permet -- pour le moment -- ni de tracer la bissectrice, ni de tracer la courbe$\ldots$ - -En effet, il y aurait trop d'options pour ces deux éléments, et l'idée est quand même de conserver une commande \textit{simple} ! Donc l'utilisateur se chargera de tracer et de personnaliser sa courbe et sa bissectrice ! -\end{codeinfo} - -\subsection{Exemples} - -\begin{codeinfo} -On va tracer la \textit{toile} des 4 premiers termes de la suite récurrente $\begin{dcases} u_1 = 1 \\ u_{n+1} = \sqrt{5u_n}+1 \text{ pour tout entier } n \geqslant 1\end{dcases}$. -\end{codeinfo} - -\begin{codetex}[tikz lower] -%code tikz -\def\x{1.5cm}\def\y{1.5cm} -\def\xmin{0}\def\xmax{10}\def\xgrille{1}\def\xgrilles{0.5} -\def\ymin{0}\def\ymax{8}\def\ygrille{1}\def\ygrilles{0.5} -%axes et grilles -\draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax); -\draw[line width=1.5pt,->,darkgray] (\xmin,0)--(\xmax,0) ; -\draw[line width=1.5pt,->,darkgray] (0,\ymin)--(0,\ymax) ; -\foreach \x in {0,1,...,9} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} -\foreach \y in {0,1,...,7} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} -%fonction définie et réutilisable -\def\f{sqrt(5*\x)+1} -%toile -\recurrPL[fct={\f},no=1,uno=1,nb=4,decallabel=4pt] -%éléments supplémentaires -\draw[very thick,blue,domain=0:8,samples=250] plot (\x,{\f}) ; -\draw[very thick,ForestGreen,domain=0:8,samples=2] plot (\x,\x) ; -\end{codetex} - -\begin{codeinfo} -Peut-être que -- ultérieurement -- des options \textit{booléennes} seront disponibles pour un tracé \textit{générique} de la courbe et de la bissectrice, mais pour le moment la \textsf{macro} ne fait \textit{que} l'escalier. -\end{codeinfo} - -\subsection{Influence des paramètres} - -\begin{codetex}[listing only] -\begin{center} - \begin{tikzpicture}[x=4cm,y=3cm] - %axes + grilles + graduations - ... - %fonction - \def\f{-0.25*\x*\x+\x} - %tracés - \begin{scope} - \clip (0,0) rectangle (2.5,1.25) ; - \draw[line width=1.25pt,blue,domain=0:2.5,samples=200] plot (\x,{\f}) ; - \end{scope} - \recurrPL[fct={\f},no=0,uno=2,nb=5,poslabel=above right,decallabel=0pt] -\end{tikzpicture} -\end{center} -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture}[x=4cm,y=3cm] - \draw[xstep=0.25,ystep=0.25,line width=0.3pt,lightgray!50] (0,0) grid (2.5,1.25); - \draw[thick,->] (0,0)--(2.5,0) ; - \draw[thick,->] (0,0)--(0,1.25) ; - \foreach \x in {0,1,2} - \draw[line width=1.25pt] (\x,4pt) -- (\x,-4pt) node[below] {\num{\x}} ; - \foreach \y in {0,0.5,1.0} - \draw[line width=1.25pt] (4pt,\y) -- (-4pt,\y) node[left] {\num{\y}} ; - \draw[line width=1.25pt,red](0,0) -- (1.25,1.25) ; - %fonction - \def\f{-0.25*\x*\x+\x} - %tracés - \begin{scope} - \clip (0,0) rectangle (2.5,1.25) ; - \draw[line width=1.25pt,blue,domain=0:2.5,samples=200] plot (\x,{\f}) ; - \end{scope} - \recurrPL[fct={\f},no=0,uno=2,nb=5,poslabel=above right,decallabel=0pt] -\end{tikzpicture} -\end{center} -\end{codesortie} - -\begin{codetex}[listing only] -\begin{center} - \begin{tikzpicture}[x=5cm,y=1.5cm] - ... - \def\f{1+1/\x} - \recurrPL% - [fct={\f},no=0,uno=1,nb=7,poslabel=above right,decallabel=0pt,afftermes=false]% - [line width=1.25pt,ForestGreen,densely dashed][] - \draw[line width=1.25pt,blue,domain=0:2.25,samples=2] plot(\x,{\x}); - \draw[line width=1.25pt,red,domain=0.8:2.5,samples=250] plot(\x,{\f}); - \end{tikzpicture} -\end{center} -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture}[x=5cm,y=1.5cm] - %axes et grille - \draw[xstep=0.5,ystep=0.25,line width=0.3pt,lightgray!50] (0,0) grid (2.5,2.25); - \draw[thick,->] (0,0)--(2.5,0) ; - \draw[thick,->] (0,0)--(0,2.25) ; - \foreach \x in {0,0.5,...,2} - \draw[line width=1.25pt] (\x,4pt) -- (\x,-4pt) node[below] {\num{\x}}; - \foreach \y in {0,0.5,...,2} - \draw[line width=1.25pt] (4pt,\y) -- (-4pt,\y) node[left] {\num{\y}}; - %fonction - \def\f{1+1/\x} - %tracés - \recurrPL[fct={\f},no=0,uno=1,nb=7,poslabel=above right,decallabel=0pt,afftermes=false][line width=1.25pt,ForestGreen,densely dashed][] - \draw[line width=1.25pt,blue,domain=0:2.25,samples=2] plot(\x,{\x}); - \draw[line width=1.25pt,red,domain=0.8:2.5,samples=250] plot(\x,{\f}); - \end{tikzpicture} -\end{center} -\end{codesortie} - -\newpage - -\part{Présentation de codes} - -\section{L'outil \og Calcul Formel \fg} - -\subsection{Introduction} - -\begin{codeidee} -L'idée des commandes suivantes est de définir, dans un environnement \TikZ, une présentation proche de celle d'un logiciel de calcul formel comme \textsf{XCas} ou \textsf{Geogebra}. - -\smallskip - -Les sujets d'examens, depuis quelques années, peuvent comporter des \textit{captures d'écran} de logiciel de calcul formel, l'idée est ici de reproduire, de manière autonome, une telle présentation. - -\smallskip - -À la manière du {package} \ctex{tkz-tab}, l'environnement de référence est un environnement \TikZ, dans lequel les lignes sont créées petit à petit, à l'aide de nœuds qui peuvent être réutilisés à loisir ultérieurement. -\end{codeidee} - -\subsection{La commande \og \textbackslash{}paramCF \fg} - -\begin{codeinfo} -La première chose à définir est l'ensemble des paramètres \textit{globaux} de la fenêtre de calcul formel, à l'aide de \Cle{Clés}. -\end{codeinfo} - -\begin{codetex}[listing only] -... -\begin{tikzpicture}[...] - \paramCF[<options>] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Les \Cle{Clés} disponibles sont : -\begin{itemize} - \item \Cle{larg} : largeur de l'environnement ; \hfill{}défaut \Cle{16} - \item \Cle{esplg} : espacement vertical entre les lignes ;\hfill{}défaut \Cle{2pt} - \item \Cle{premcol} \& \Cle{hpremcol} : largeur et hauteur de la case du \textit{petit numéro} ;\hfill{}défaut \Cle{0.3} \& \Cle{0.4} - \item \Cle{taille} : taille du texte ;\hfill{}défaut \Cle{\textbackslash normalsize} - \item \Cle{couleur} : couleur des traits de l'environnement ;\hfill{}défaut \Cle{darkgray} - \item \Cle{titre} : booléen pour l'affichage d'un bandeau de titre ;\hfill{}défaut \Cle{false} - \item \Cle{tailletitre} : taille du titre ;\hfill{}défaut \Cle{\textbackslash normalsize} - \item \Cle{poscmd} : position horizontale de la commande d'entrée ;\hfill{}défaut \Cle{gauche} - \item \Cle{posres} : position horizontale de la commande de sortie ;\hfill{}défaut \Cle{centre} - \item \Cle{couleurcmd} : couleur de la commande d'entrée ;\hfill{}défaut \Cle{red} - \item \Cle{couleurres} : couleur de la commande de sortie ;\hfill{}défaut \Cle{blue} - \item \Cle{sep} : booléen pour l'affichage du trait de séparation E/S ;\hfill{}défaut \Cle{true} - \item \Cle{menu} : booléen pour l'affichage du \textit{bouton} MENU ;\hfill{}défaut \Cle{true} - \item \Cle{labeltitre} : libellé du titre.\hfill{}défaut \Cle{Résultats obtenus avec un logiciel de Calcul Formel} -\end{itemize} -\end{codecles} - -\subsection{La commande \og \textbackslash{}ligneCF \fg} - -\begin{codeinfo} -Une fois les paramètres déclarés, il faut créer les différentes lignes, grâce à la \ctex{ligneCF}. -\end{codeinfo} - -\begin{codetex}[listing only] -\begin{tikzpicture}[...] - \paramCF[<options>] - \ligneCF[<options>] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Les (quelques) \Cle{Clés} disponibles sont : - -\begin{itemize} - \item \Cle{hc} et \Cle{hr}: hauteur de la ligne de commande d'entrée et de sortie ;\hfill{}défaut \Cle{0.75} - \item deux \textsf{arguments}, celui de la commande d'entrée et celui de la commande de sortie. -\end{itemize} -% -Chaque argument \textsf{COMMANDE} \& \textsf{RÉSULTAT} peut être formaté (niveau police) de manière indépendante. -\end{codecles} - -\begin{codetex}[tikz lower] -%code tikz -\paramCF[titre=true,couleurcmd=olive,couleurres=orange] -\ligneCF{COMMANDE 1}{RÉSULTAT 1} -\ligneCF[hc=0.75,hr=1]{\texttt{(x+1)\CFchap2}}{$\mathtt{x^2+2x+1}$} %\CFchap := ^ en mathtt -\end{codetex} - -\subsection{Visualisation des paramètres} - -\begin{codeinfo} -Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les différents nœuds crées par les \textsf{macros}. - -\begin{center} - \begin{tikzpicture}[x=0.7cm,y=0.5cm,line width=1pt] - \paramCF[larg=12cm,couleur=lightgray,esplg=12pt,menu=false] - \ligneCF{}{} - \ligneCF[hc=1,hr=1.25]{}{} - %explications - \foreach \noeud in {01,11,21,31,41,51,02,12,22,32,42,52} - \draw[blue] (A\noeud) node[font=\footnotesize\ttfamily] {A\noeud} ; -\end{tikzpicture} -\end{center} - -\begin{center} - \begin{tikzpicture}[x=0.7cm,y=0.7cm,line width=1pt] - \paramCF[titre=true,larg=12cm,esplg=10pt,premcol=0.5,hpremcol=0.7,couleur=lightgray] - \ligneCF{COMMANDE 1}{RÉSULTAT 1} - \ligneCF[hc=0.85,hr=1.05]{COMMANDE 2}{RÉSULTAT 2} - %explications - \draw[CadetBlue,<->] ($(A22) + (0,-12pt)$) -- ($(A52) + (0,-12pt)$) node[midway,below,font=\footnotesize\sffamily] {\Cle{larg}} ; - \draw[CadetBlue,<->] ($(A51) + (12pt,0)$) -- ($(A32) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{esplg}} ; - \draw[CadetBlue,<->] ($(A02) + (0,2pt)$) -- ($(A02) + (0,2pt) + ({-\CFpremcol},0) $) node[midway,above,font=\footnotesize\sffamily] {\Cle{premcol}} ; - \draw[CadetBlue,<->] ($(A02) + ({-\CFpremcol},0) + (-2pt,0)$) -- ($(A02) + ({-\CFpremcol},{-\CFhpremcol}) +(-2pt,0)$) node[midway,left,font=\footnotesize\sffamily] {\Cle{hpremcol}} ; - \draw[CadetBlue,<->] ($(A31) + (12pt,0)$) -- ($(A41) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{hc}} ; - \draw[CadetBlue,<->] ($(A41) + (12pt,0)$) -- ($(A51) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{hr}} ; - \draw[CadetBlue,<->] ($(A32) + (12pt,0)$) -- ($(A42) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{hc}} ; - \draw[CadetBlue,<->] ($(A42) + (12pt,0)$) -- ($(A52) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{hr}} ; - \draw[CadetBlue,->] ($(A12) + (0,-12pt)$) to[bend left=10] ($(A12) + (0,-12pt) + (-18pt,-12pt)$) node[below left,font=\footnotesize\sffamily] {\Cle{couleur}} ; - \draw[CadetBlue,->] ($(A52) + (-0.65,0.25)$) to[bend left=10] ($(A52) + (-0.65,0.25) + (-18pt,12pt)$) node[inner sep=0pt,above left=1pt,font=\footnotesize\sffamily] {\Cle{menu}} ; - \draw[CadetBlue,->] ($(A12) + (16pt,0)$) to[bend left=10] ($(A12) + (16pt,0) + (18pt,-12pt)$) node[inner sep=0pt,below right=1pt,font=\footnotesize\sffamily] {\Cle{sep}} ; - \draw[CadetBlue,->] ($(A01) + (8pt,2pt) + (0,1em)$) to[bend left=10] ($(A01) + (8pt,2pt) + (0,1em) + (-18pt,12pt)$) node[inner sep=0pt,above=1pt,font=\footnotesize\sffamily] {\Cle{titre} \& \Cle{tailletitre} \& \Cle{labeltitre}} ; -\end{tikzpicture} -\end{center} -\end{codeinfo} - -\newpage - -\section{Code Python \og simple \fg{} via le package listings}\label{pythonsimple} - -\subsection{Introduction} - -\begin{codeidee} -Le {package} \ctex{listings} permet d'insérer et de formater du code, notamment du code Python. - -En \textit{partenariat} avec \ctex{tcolorbox}, on peut donc présenter \textit{joliment} du code python ! -\end{codeidee} - -\begin{codeinfo} -Le package \ctex{listings} ne nécessite pas de compilation particulière, au contraire d'autres (comme \ctex{pythontex} ou \ctex{minted} ou \ctex{piton}) qui seront présentés ultérieurement. -\end{codeinfo} - -\begin{codeinfo} -Le style utilisé pour formater le code Python n'est pas modifiable. Il donne un rendu proche de celui des packages comme \ctex{pythontex} ou \ctex{minted} ou \ctex{piton}. - -\smallskip - -Donc, si plusieurs \textit{méthodes} sont utilisées pour insérer du code Python (via les \textit{méthodes} suivantes), le rendu pourra être légèrement différent. -\end{codeinfo} - -\subsection{Commande et options} - -\begin{codeidee} -L'environnement \ctex{envcodepython} permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier. -\end{codeidee} - -\begin{codetex}[listing only] -\begin{envcodepython}(*)[<largeur>]{<commandes tcbox>} -... -\end{envcodepython} -\end{codetex} - -\begin{codecles} -Plusieurs \Cle{arguments} sont disponibles : - -\begin{itemize} - \item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ; - \item le premier argument (optionnel), concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth} - \item le second argument (mandataire), concerne des \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}, comme l'alignement. -\end{itemize} -\end{codecles} - -\begin{codeattention} -Les environnements \ctex{DeclareTCBListing} créés par \ctex{tcolorbox} et \ctex{listings} ne sont pas compatibles avec les options \Cle{gobble} (pour supprimer les tabulations d'environnement), donc il faut bien penser à \og aligner \fg{} le code à gauche, pour éviter des tabulations non esthétiques ! -\end{codeattention} - -\subsection{Insertion via un fichier \og externe \fg} - -\begin{codeidee} -Pour des raison pratiques, il est parfois intéressant d'avoir le code Python dans un fichier externe au ficher \ctex{tex}, ou bien créé directement par le fichier \ctex{tex} (via \ctex{scontents}, notamment, mais non chargé par \ctex{ProfLycee}). - -Dans ce cas, il n'est pas nécessaire d'aligner le code \og à gauche \fg, en utilisant une commande alternative. - -\smallskip - -Si cette méthode est utilisée, il ne faut oublier de charger le package \ctex{scontents}. -\end{codeidee} - -\begin{codetex}[listing only] -\usepackage{scontents} %si script déclaré dans le fichier tex -... -\envcodepythonfichier(*)[<largeur>]{<commandes tcbox>}{<script>} -\end{codetex} - -\subsection{Exemples} - -\begin{codetex}[listing only] -\begin{envcodepython}{} %les {}, même vides, sont nécessaires (bug avec # sinon !) -#environnement par défaut -nb = int(input("Saisir un entier positif")) -if (nb %7 == 0) : - print(f"{nb} est bien divisible par 7") -#endif - -def f(x) : - return x**2 -\end{envcodepython} -\end{codetex} - -\begin{codesortie} -\begin{envcodepython}{} -#environnement par défaut -nb = int(input("Saisir un entier positif")) -if (nb %7 == 0) : - print(f"{nb} est bien divisible par 7") -#endif - -def f(x) : - return x**2 -\end{envcodepython} -\end{codesortie} - -\begin{codetex}[listing only] -\begin{envcodepython}*[0.5\linewidth]{flush right} -#largeur de 50%, sans numéro, et aligné à droite -nb = int(input("Saisir un entier Python positif")) -if (nb %7 == 0) : - print(f"{nb} est bien divisible par 7") -#endif - -def f(x) : - return x**2 -\end{envcodepython} -\end{codetex} - -\begin{codesortie} -\begin{envcodepython}*[0.5\linewidth]{flush right} -#largeur de 50%, sans numéro, et aligné à droite -nb = int(input("Saisir un entier Python positif")) -if (nb %7 == 0) : - print(f"{nb} est bien divisible par 7") -#endif - -def f(x) : - return x**2 -\end{envcodepython} -\end{codesortie} - -\begin{codetex}[listing only] -\begin{scontents}[overwrite,write-out=testscript.py] -# Calcul de la factorielle en langage Python -def factorielle(x): - if x < 2: - return 1 - else: - return x * factorielle(x-1) - -# rapidité de tracé -import matplotlib.pyplot as plt -import time -def trace_parabole_tableaux(): - depart=time.clock() - X = [] # Initialisation des listes - Y = [] - a = -2 - h = 0.001 - while a<2: - X.append(a) # Ajout des valeurs - Y.append(a*a) # au "bout" de X et Y - a = a+h - # Tracé de l'ensemble du tableau de valeurs - plt.plot(X,Y,".b") - fin=time.clock() - return "Temps : " + str(fin-depart) + " s." -\end{scontents} - -%environnement centré, avec numéros, largeur 9cm -\envcodepythonfichier[9cm]{center}{testscript.py} -\end{codetex} - -\begin{codesortie} -\begin{scontents}[overwrite,write-out=testscript.py] -# Calcul de la factorielle en langage Python -def factorielle(x): - if x < 2: - return 1 - else: - return x * factorielle(x-1) - -# rapidité de tracé -import matplotlib.pyplot as plt -import time -def trace_parabole_tableaux(): - depart=time.clock() - X = [] # Initialisation des listes - Y = [] - a = -2 - h = 0.001 - while a<2: - X.append(a) # Ajout des valeurs - Y.append(a*a) # au "bout" de X et Y - a = a+h - # Tracé de l'ensemble du tableau de valeurs - plt.plot(X,Y,".b") - fin=time.clock() - return "Temps : " + str(fin-depart) + " s." -\end{scontents} - -\envcodepythonfichier[9cm]{center}{testscript.py} -\end{codesortie} - -\newpage - -\section{Code Python via le package piton}\label{pythonpiton} - -\subsection{Introduction} - -\begin{codeinfo} -Le package \ctex{piton} (compatible uniquement avec une compilation en \LuaLaTeX{} !) permet d'insérer du code Python avec une coloration syntaxique en utilisant la bibliothèque \textsf{Lua LPEG}. - -\smallskip - -En \textit{partenariat} avec \ctex{tcolorbox}, on peut avoir une présentation de code Python ! -\end{codeinfo} - -\begin{codeattention} -Le package \ctex{piton} nécessite donc obligatoirement l’emploi de \LuaLaTeX{} ! - -Ce package n'est chargé que si la compilation détectée est en \LuaLaTeX{} ! -\end{codeattention} - -\subsection{Présentation de code Python} - -\begin{codetex}[listing only] -\begin{envcodepiton}[<options>] -... -... -\end{envcodepiton} -\end{codetex} - -\begin{codeattention} -Les environnements créés par \ctex{piton} et \ctex{tcolorbox} ne sont -- a priori -- pas compatibles avec les options de type \Cle{gobble} (pour supprimer les tabulations d'environnement), donc il faut bien penser à \og aligner \fg{} le code à gauche, pour éviter des tabulations non esthétiques ! -\end{codeattention} - -\begin{codecles} -Plusieurs \Cle{clés} sont disponibles : - -\begin{itemize} - \item la clé booléenne \Cle{Lignes} pour afficher ou non les numéros de lignes ; \hfill{}défaut \Cle{true} - \item la clé \Cle{Largeur} qui correspond à la largeur de la \ctex{tcbox} ; \hfill{}défaut \Cle{\textbackslash linewidth} - \item la clé \Cle{Alignement} qui paramètre l'alignement de la \ctex{tcbox}. \hfill{}défaut \Cle{center} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\begin{envcodepiton} -#environnement piton avec numéros de ligne, pleine largeur -def f(x) : - """fonction qui renvoie le carré d'un réel""" - return x**2 -\end{envcodepiton} -\end{codetex} - -\begin{codesortie} -\begin{envcodepiton} -#environnement piton avec numéros de ligne, pleine largeur -def f(x) : - """fonction qui renvoie le carré d'un réel""" - return x**2 -\end{envcodepiton} -\end{codesortie} - -\pagebreak - -\begin{codetex}[listing only] -\begin{envcodepiton}[Lignes=false,Largeur=15cm] -#sans numéro, de largeur 15cm -def f(x) : - """fonction qui renvoie le carré d'un réel""" - return x**2 -\end{envcodepiton} - -\begin{envcodepiton}[Alignement=flush right,Largeur=13cm] -#avec numéros, de largeur 13cm, aligné à droite -def f(x) : - """fonction qui renvoie le carré d'un réel""" - return x**2 -\end{envcodepiton} - -\begin{envcodepiton}[Alignement=flush left,Largeur=11cm] -#avec numéros, de largeur 11cm, aligné à gauche -def f(x) : - """fonction qui renvoie le carré d'un réel""" - return x**2 -\end{envcodepiton} -\end{codetex} - -\begin{codesortie} -\begin{envcodepiton}[Lignes=false,Largeur=15cm] -#sans numéro, de largeur 15cm -def f(x) : - """fonction qui renvoie le carré d'un réel""" - return x**2 -\end{envcodepiton} - -\begin{envcodepiton}[Alignement=flush right,Largeur=13cm] -#avec numéros, de largeur 13cm, aligné à droite -def f(x) : - """fonction qui renvoie le carré d'un réel""" - return x**2 -\end{envcodepiton} - -\begin{envcodepiton}[Alignement=flush left,Largeur=11cm] -#avec numéros, de largeur 11cm, aligné à gauche -def f(x) : - """fonction qui renvoie le carré d'un réel""" - return x**2 -\end{envcodepiton} -\end{codesortie} - -\pagebreak - -\section{Code \& Console Python, via les packages Pythontex ou Minted} - -\subsection{Introduction} - -\begin{codeidee} -Le {package} \ctex{pythontex} permet d'insérer et d'exécuter du code Python. On peut : - -\begin{itemize} - \item présenter du code Python ; - \item exécuter du code Python dans un environnement type \og console \fg{} ; - \item charger du code Python, et éventuellement l'utiliser dans la console. -\end{itemize} -\end{codeidee} - -\begin{codeattention} -\textbf{Attention : }il faut dans ce cas une compilation en plusieurs étapes, comme par exemple \textsf{pdflatex puis pythontex puis pdflatex} ! - -Voir par exemple \url{http://lesmathsduyeti.fr/fr/informatique/latex/pythontex/} ! -\end{codeattention} - -\begin{codeinfo} -Compte tenu de la \textit{relative complexité} pour gérer les options (par paramètres/clés\ldots) des \textit{tcbox} et des \textit{fancyvrb}, le style est \og fixé \fg{} tel quel, et seules la taille et la position de la \textit{tcbox} sont modifiables. Si toutefois vous souhaitez personnaliser davantage, il faudra prendre le code correspondant et appliquer vos modifications ! - -Cela peut donner -- en tout cas -- des idées de personnalisation en ayant une base \textit{pré}existante ! -\end{codeinfo} - -\subsection{Présentation de code Python grâce au package pythontex}\label{pythontex} - -\begin{codeidee} -L'environnement \ctex{envcodepythontex} est donc lié à \ctex{pythontex} (chargé par \ctex{ProfLycee}, avec l'option \textit{autogobble}) permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier. -\end{codeidee} - -\begin{codetex}[listing only] -\begin{envcodepythontex}[<options>] -... -\end{envcodepythontex} -\end{codetex} - -\begin{codecles} -Comme précédemment, des \Cle{Clés} qui permettent de \textit{légèrement} modifier le style : - -\begin{itemize} - \item \Cle{largeur} : largeur de la \textit{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth} - \item \Cle{centre} : booléen pour centrer ou non la \textit{tcbox} ;\hfill{}défaut \Cle{true} - \item \Cle{lignes} : booléen pour afficher ou non les numéros de ligne.\hfill{}défaut \Cle{true} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\begin{envcodepythontex}[largeur=12cm] - #environnement Python(tex) centré avec numéros de ligne - def f(x) : - return x**2 -\end{envcodepythontex} -\end{codetex} - -\begin{codesortie} -\begin{envcodepythontex}[largeur=12cm] - #environnement Python(tex) centré avec numéros de ligne - def f(x) : - return x**2 -\end{envcodepythontex} -\end{codesortie} - -\begin{codetex}[listing only] -\begin{envcodepythontex}[largeur=12cm,lignes=false,centre=false] - #environnement Python(tex) non centré sans numéro de ligne - def f(x) : - return x**2 -\end{envcodepythontex} -\end{codetex} - -\begin{codesortie} -\begin{envcodepythontex}[largeur=12cm,lignes=false,centre=false] - #environnement Python(tex) non centré sans numéro de ligne - def f(x) : - return x**2 -\end{envcodepythontex} -\end{codesortie} - -\subsection{Présentation de code Python via le package minted}\label{pytminted} - -\begin{codeinfo} -Pour celles et ceux qui ne sont pas à l'aise avec le {package} \ctex{pythontex} et notamment sa spécificité pour compiler, il existe le {package} \ctex{minted} qui permet de présenter du code, et notamment Python. -\end{codeinfo} - -\begin{codeattention} -Le package \ctex{minted} nécessite quand même une compilation avec l'option \ctex{--shell-escape} ou \ctex{-write18} ! -\end{codeattention} - -\begin{codetex}[listing only] -\begin{envcodepythonminted}(*)[<largeur>][<options>] -... -\end{envcodepythonminted} -\end{codetex} - -\begin{codecles} -Plusieurs \Cle{arguments} (optionnels) sont disponibles : - -\begin{itemize} - \item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ; - \item le premier argument optionnel concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{12cm} - \item le second argument optionnel concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}.\hfill{}défaut \Cle{vide} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\begin{envcodepythonminted}[12cm][center] - #environnement Python(minted) centré avec numéros, de largeur 12cm - def f(x) : - return x**2 -\end{envcodepythonminted} -\end{codetex} - -\begin{codesortie} -\begin{envcodepythonminted}[12cm][center] - #environnement Python(minted) centré avec numéros - def f(x) : - return x**2 -\end{envcodepythonminted} -\end{codesortie} - -\begin{codetex}[listing only] -\begin{envcodepythonminted}*[0.8\linewidth][] - #environnement Python(minted) sans numéro, de largeur 0.8\linewidth - def f(x) : - return x**2 -\end{envcodepythonminted} -\end{codetex} - -\begin{codesortie} -\begin{envcodepythonminted}*[0.8\linewidth][] - #environnement Python(minted) sans numéro, de largeur 0.8\linewidth - def f(x) : - return x**2 -\end{envcodepythonminted} -\end{codesortie} - -\subsection{Console d'exécution Python} - -\begin{codeidee} -\ctex{pythontex} permet également de \textit{simuler} (en exécutant également !) du code python dans une \textit{console}. - -C'est l'environnement \ctex{envconsolepythontex} qui permet de le faire. -\end{codeidee} - -\begin{codetex}[listing only] -\begin{envconsolepythontex}[<options>] -... -\end{envconsolepythontex} -\end{codetex} - -\begin{codecles} -Les \Cle{Clés} disponibles sont : - -\begin{itemize} - \item \Cle{largeur} : largeur de la \textit{console} ;\hfill{}défaut \Cle{\textbackslash linewidth} - \item \Cle{centre} : booléen pour centrer ou non la \textit{console} ;\hfill{}défaut \Cle{true} - \item \Cle{label} : booléen pour afficher ou non le titre.\hfill{}défaut \Cle{true} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\begin{envconsolepythontex}[largeur=14cm,centre=false] - #console Python(tex) non centrée avec label - from math import sqrt - 1+1 - sqrt(12) -\end{envconsolepythontex} -\end{codetex} - -\begin{codesortie} -\smallskip -\begin{envconsolepythontex}[largeur=14cm,centre=false] - #console Python(tex) non centrée avec label - from math import sqrt - 1+1 - sqrt(12) -\end{envconsolepythontex} -\end{codesortie} - -\begin{codetex}[listing only] -\begin{envconsolepythontex}[largeur=14cm,label=false] - #console Python(tex) centrée sans label - table = [[1,2],[3,4]] - table[0][0] - - tableau = [[randint(1,20) for j in range(0,6)] for i in range(0,3)] - tableau - len(tableau), len(tableau[0]) - tableau[1][4] -\end{envconsolepythontex} -\end{codetex} - -\begin{codesortie} -\smallskip -\begin{envconsolepythontex}[largeur=14cm,label=false] - #console Python(tex) centrée sans label - table = [[1,2],[3,4]] - table[0][0] - - tableau = [[randint(1,20) for j in range(0,6)] for i in range(0,3)] - tableau - len(tableau), len(tableau[0]) - tableau[1][4] -\end{envconsolepythontex} -\end{codesortie} - -\begin{codeinfo} -Le package \ctex{pythontex} peut donc servir à présenter du code Python, comme \ctex{minted} ou \ctex{piton}, sa particularité est toutefois de pouvoir \textit{exécuter} du code Python pour une présentation de type \textit{console}. -\end{codeinfo} - -\newpage - -\section{Pseudo-Code}\label{pseudocode} - -\subsection{Introduction} - -\begin{codeinfo} -Le {package} \ctex{listings} permet d'insérer et de présenter du code, et avec \ctex{tcolorbox} on peut obtenir une présentation similaire à celle du code Python. Pour le moment la \textit{philosophie} de la commande est un peu différente de celle du code python, avec son système de \Cle{Clés}, car l'environnement \ctex{tcblisting} est un peu différent\ldots -\end{codeinfo} - -\subsection{Présentation de Pseudo-Code} - -\begin{codeidee} -L'environnement \ctex{envpseudocode} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}. -\end{codeidee} - -\begin{codeattention} -De plus, le package \ctex{listings} avec \ctex{tcolorbox} ne permet pas de gérer le paramètre \textit{autogobble}, donc il faudra être vigilant quant à la position du code (pas de tabulation en fait\ldots) -\end{codeattention} - -\begin{codetex}[listing only] -\begin{envpseudocode}(*)[<largeur>][<options>] -%attention à l'indentation, gobble ne fonctionne pas... -... -\end{envpseudocode} -\end{codetex} - -\begin{codecles} -Plusieurs \Cle{arguments} (optionnels) sont disponibles : - -\begin{itemize} - \item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ; - \item le premier argument optionnel concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{12cm} - \item le second argument optionnel concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}.\hfill{}défaut \Cle{vide} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\begin{envpseudocode} %non centré, de largeur par défaut (12cm) avec lignes -List = [...] # à déclarer au préalable -n = longueur(List) -Pour i allant de 0 à n-1 Faire - Afficher(List[i]) -FinPour -\end{envpseudocode} -\end{codetex} - -\begin{codesortie} -\begin{envpseudocode} -List = [...] # à déclarer au préalable -n = longueur(List) -Pour i allant de 0 à n-1 Faire - Afficher(List[i]) -FinPour -\end{envpseudocode} -\end{codesortie} - -\begin{codetex}[listing only] -\begin{envpseudocode}*[15cm][center] %centré, de largeur 15cm sans ligne -List = [...] # à déclarer au préalable -n = longueur(List) -Pour i allant de 0 à n-1 Faire - Afficher(List[i]) -FinPour -\end{envpseudocode} -\end{codetex} - -\begin{codesortie} -\begin{envpseudocode}*[15cm][center] -List = [...] # à déclarer au préalable -n = longueur(List) -Pour i allant de 0 à n-1 Faire - Afficher(List[i]) -FinPour -\end{envpseudocode} -\end{codesortie} - -\subsection{Compléments} - -\begin{codeinfo} -À l'instar de packages existants, la \textit{philosophie} ici est de laisser l'utilisateur gérer \textit{son} langage pseudo-code. - -J'ai fait le choix de ne pas définir des \textsf{mots clés} à mettre en valeur car cela reviendrait à \textit{imposer} des choix ! Donc ici, pas de coloration syntaxique ou de mise en évidence de mots clés, uniquement un formatage basique de pseudo-code. -\end{codeinfo} - -\begin{codeidee} -Évidemment, le code source est récupérable et adaptable à volonté, en utilisant les possibilités du package \ctex{listings}. - -\smallskip - -Celles et ceux qui sont déjà à l'aise avec les packages \ctex{listings} ou \ctex{minted} doivent déjà avoir leur environnement personnel prêt ! - -Il s'agit ici de présenter une version \og clé en main \fg{}. -\end{codeidee} - -\begin{codeinfo} -Le style \ctex{listings} utilisé par la commande a l'option \Cle{mathescape} activée, et accessible grâce aux délimiteurs \Cle{(*...*)}. - -Cela permet d'insérer du code \LaTeX{} dans l'environnement \ctex{envpseudocode} (attention au fontes de rendu par contre !). -\end{codeinfo} - -\begin{codetex}[listing only] -\begin{envpseudocode}[12cm][] -#Utilisation du mode mathescape -Afficher (*\og*) .........(*\fg*) -m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*) -\end{envpseudocode} -\end{codetex} - -\begin{codesortie} -\begin{envpseudocode}[12cm][] -#Utilisation du mode mathescape -Afficher (*\og*) .........(*\fg*) -m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*) -\end{envpseudocode} -\end{codesortie} - -\newpage - -\section{Terminal Windows/UNiX/OSX}\label{terms} - -\subsection{Introduction} - -\begin{codeidee} -L'idée des \textsf{commandes} suivantes est de permettre de simuler des fenêtres de \textsf{Terminal}, que ce soit pour Windows, Ubuntu ou OSX. - -\smallskip - -L'idée de base vient du {package} \ctex{termsim}, mais ici la gestion du \textsf{code} et des \textsf{fenêtres} est légèrement différente. - -\smallskip - -Le \textsf{contenu} est géré par le package \ctex{listings}, sans langage particulier, et donc sans coloration syntaxique particulière. -\end{codeidee} - -\begin{codeattention} -Comme pour le pseudo-code, pas d'\textsf{autogobble}, donc commandes à aligner à gauche ! -\end{codeattention} - -\subsection{Commandes} - -\begin{codetex}[listing only] -\begin{PLtermwin}[<largeur>]{<titre=...>}[<options>] -... -\end{PLtermwin} - -\begin{PLtermunix}[<largeur>]{<titre=...>}[<options>] -... -\end{PLtermunix} - -\begin{PLtermosx}[<largeur>]{<titre=...>}[<options>] -... -\end{PLtermosx} -\end{codetex} - -\begin{codecles} -Peu d'options pour ces commandes : - -\begin{itemize} - \item le premier, optionnel, est la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth} - \item le deuxième, mandataire, permet de spécifier le titre par la clé \Cle{titre}.\hfill{}défaut \Cle{Terminal Windows/UNiX/OSX} - \item le troisième, optionnel, concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}.\hfill{}défaut \Cle{vide} -\end{itemize} -\end{codecles} - -\begin{codeinfo} -Le \textsf{code} n'est pas formaté, ni mis en coloration syntaxique. - -De ce fait tous les caractères sont autorisés : même si l'éditeur pourra détecter le \% comme le début d'un commentaire, tout sera intégré dans le code mis en forme ! -\end{codeinfo} - -\begin{codetex}[listing only] -\begin{PLtermunix}[12cm]{titre=Terminal Ubuntu}[center] %12cm, avec titre modifié et centré -test@DESKTOP:~$ ping -c 2 ctan.org -PING ctan.org (5.35.249.60) 56(84) bytes of data. -\end{PLtermunix} -\end{codetex} - -\begin{codesortie} -\begin{PLtermunix}[12cm]{titre=Terminal Ubuntu}[center] -test@DESKTOP:~$ ping -c 2 ctan.org -PING ctan.org (5.35.249.60) 56(84) bytes of data. -\end{PLtermunix} -\end{codesortie} - -\begin{codetex}[listing only] -\begin{PLtermwin}[15cm]{} %largeur 15cm avec titre par défaut -Microsoft Windows [version 10.0.22000.493] -(c) Microsoft Corporation. Tous droits réservés. -C:\Users\test>ping ctan.org - -Envoi d’une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données : -Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51 -Réponse de 5.35.249.60 : octets=32 temps=37 ms TTL=51 -Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51 -Réponse de 5.35.249.60 : octets=32 temps=39 ms TTL=51 - -Statistiques Ping pour 5.35.249.60: -Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%), -Durée approximative des boucles en millisecondes : -Minimum = 35ms, Maximum = 39ms, Moyenne = 36ms -\end{PLtermwin} - -\begin{PLtermosx}[0.5\linewidth]{titre=Terminal MacOSX}[flush right] %1/2-largeur et titre modifié et droite -[test@server]$ ping -c 2 ctan.org -PING ctan.org (5.35.249.60) 56(84) bytes of data. -\end{PLtermosx} -\end{codetex} - -\begin{codesortie} -\begin{PLtermwin}[15cm]{} -Microsoft Windows [version 10.0.22000.493] -(c) Microsoft Corporation. Tous droits réservés. -C:\Users\test>ping ctan.org - -Envoi d’une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données : -Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51 -Réponse de 5.35.249.60 : octets=32 temps=37 ms TTL=51 -Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51 -Réponse de 5.35.249.60 : octets=32 temps=39 ms TTL=51 - -Statistiques Ping pour 5.35.249.60: -Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%), -Durée approximative des boucles en millisecondes : -Minimum = 35ms, Maximum = 39ms, Moyenne = 36ms -\end{PLtermwin} - -\begin{PLtermunix}[12cm]{titre=Terminal Ubuntu}[center] -test@DESKTOP:~$ ping -c 2 ctan.org -PING ctan.org (5.35.249.60) 56(84) bytes of data. -\end{PLtermunix} - -\begin{PLtermosx}[0.5\linewidth]{titre=Terminal MacOSX}[flush right] -[test@server]$ ping -c 2 ctan.org -PING ctan.org (5.35.249.60) 56(84) bytes of data. -\end{PLtermosx} -\end{codesortie} - -\newpage - -\section{Cartouche Capytale}\label{capytale} - -\subsection{Introduction} - -\begin{codeidee} -L'idée est d'obtenir des \textsf{cartouches} tels que \textsf{Capytale} les présente, pour partager un code afin d'accéder à une activité \textsf{python}. -\end{codeidee} - -\subsection{Commandes} - -\begin{codetex}[listing only] -\liencapytale(*)[<options>]{<code capytale>} -\end{codetex} - -\begin{codecles} -Peu d'options pour ces commandes : - -\begin{itemize} - \item la version \textit{étoilée} qui permet de passer de la police \Cle{sffamily} à la police \Cle{ttfamily}, et donc dépendante des fontes du document ; - \item le deuxième, optionnel, permet de rajouter des caractères après le code (comme un \textsf{espace}) ;\hfill{}défaut \Cle{vide} - \item le troisième, mandataire, est le \textsf{code capytale} à afficher. -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\liencapytale{abcd-12345} %lien simple, en sf - -\liencapytale[~]{abcd-12345} %lien avec ~ à la fin, en sf - -\liencapytale*{abcd-12345} %lien simple, en tt - -\liencapytale*[~]{abcd-12345} %lien avec ~ à la fin, en tt -\end{codetex} - -\begin{codesortie} -\liencapytale{abcd-12345} - -\liencapytale[~]{abcd-12345} - -\liencapytale*{abcd-12345} - -\liencapytale*[~]{abcd-12345} -\end{codesortie} - -\begin{codeinfo} -Le \textsf{cartouche} peut être \og cliquable \fg{} grâce à \ctex{href}. -\end{codeinfo} - -\begin{codetex}[listing only] -\usepackage{hyperref} -\urlstyle{same} -... -\href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\liencapytale{abcd-12345}} -\end{codetex} - -\begin{codesortie} -\href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\liencapytale{abcd-12345}} -\end{codesortie} - -\newpage - -\part{Outils pour la géométrie} - -\section{Pavé droit \og simple \fg}\label{pave} - -\subsection{Introduction} - -\begin{codeidee} -L'idée est d'obtenir un pavé droit, dans un environnement \TikZ, avec les nœuds créés et nommés directement pour utilisation ultérieure. -\end{codeidee} - -\subsection{Commandes} - -\begin{codetex}[listing only] -... -\begin{tikzpicture}[<options tikz>] - \pavePL[<options>] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Quelques \Cle{clés} sont disponibles pour cette commande : - -\begin{itemize} - \item \Cle{largeur} : largeur du pavé ;\hfill{}défaut \Cle{2} - \item \Cle{profondeur} : profondeur du pavé ;\hfill{}défaut \Cle{1} - \item \Cle{hauteur} : hauteur du pavé ;\hfill{}défaut \Cle{1.25} - \item \Cle{angle} : angle de fuite de la perspective ;\hfill{}défaut \Cle{30} - \item \Cle{fuite} : coefficient de fuite de la perspective ;\hfill{}défaut \Cle{0.5} - \item \Cle{sommets} : liste des sommets (avec délimiteur § !) ;\hfill{}défaut \Cle{A§B§C§D§E§F§G§H} - \item \Cle{epaisseur} : épaisseur des arêtes (en \textit{langage simplifié} \TikZ) ;\hfill{}défaut \Cle{thick} - \item \Cle{aff} : booléen pour afficher les noms des sommets ;\hfill{}défaut \Cle{false} - \item \Cle{plein} : booléen pour ne pas afficher les arêtes \textit{invisibles} ;\hfill{}défaut \Cle{false} - \item \Cle{cube} : booléen pour préciser qu'il s'agit d'un cube (seule la valeur \Cle{largeur} est util(isé)e).\hfill{}défaut \Cle{false} -\end{itemize} -\end{codecles} - -\begin{codetex}[tikz lower] -%code tikz -\pavePL -\end{codetex} - -\begin{codetex}[tikz lower] -%code tikz -\pavePL[cube,largeur=2] -\end{codetex} - -\begin{codeinfo} -La ligne est de ce fait à insérer dans un environnement \TikZ, avec les options au choix pour cet environnement. - -Le code crée les nœuds relatifs aux sommets, et les nomme comme les sommets, ce qui permet de les réutiliser pour éventuellement compléter la figure ! -\end{codeinfo} - -\subsection{Influence des paramètres} - -\begin{codetex}[listing only] -\begin{tikzpicture}[line join=bevel] - \pavePL[aff,largeur=4,profondeur=3,hauteur=2,epaisseur={ultra thick}] -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\begin{tikzpicture}[line join=bevel] - \pavePL[aff,largeur=4,profondeur=3,hauteur=2,epaisseur={ultra thick}] -\end{tikzpicture} -\end{codesortie} - -\begin{codetex}[listing only] -\begin{center} - \begin{tikzpicture}[line join=bevel] - \pavePL[plein,aff,largeur=7,profondeur=3.5,hauteur=4,sommets=Q§S§D§F§G§H§J§K] - \draw[thick,red,densely dotted] (G)--(J) ; - \draw[thick,blue,densely dotted] (K)--(H) ; - \end{tikzpicture} -\end{center} -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture}[line join=bevel] - \pavePL[plein,aff,largeur=7,profondeur=3.5,hauteur=4,sommets=Q§S§D§F§G§H§J§K] - \draw[thick,red,densely dotted] (G)--(J) ; - \draw[thick,blue,densely dotted] (K)--(H) ; - \end{tikzpicture} -\end{center} -\end{codesortie} - -\newpage - -\section{Tétraèdre \og simple \fg}\label{tetra} - -\subsection{Introduction} - -\begin{codeidee} -L'idée est d'obtenir un tétraèdre, dans un environnement \TikZ, avec les nœuds créés et nommés directement pour utilisation ultérieure. -\end{codeidee} - -\subsection{Commandes} - -\begin{codetex}[listing only] -... -\begin{tikzpicture}[<options tikz>] - \tetraPL[<options>] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Quelques \Cle{clés} sont disponibles pour cette commande : - -\begin{itemize} - \item \Cle{largeur} : \textit{largeur} du tétraèdre ;\hfill{}défaut \Cle{4} - \item \Cle{profondeur} : \textit{profondeur} du tétraèdre ;\hfill{}défaut \Cle{1.25} - \item \Cle{hauteur} : \textit{hauteur} du tétraèdre ;\hfill{}défaut \Cle{3} - \item \Cle{alpha} : angle \textit{du sommet de devant} ;\hfill{}défaut \Cle{40} - \item \Cle{beta} : angle \textit{du sommet du haut} ;\hfill{}défaut \Cle{60} - \item \Cle{sommets} : liste des sommets (avec délimiteur § !) ;\hfill{}défaut \Cle{A§B§C§D} - \item \Cle{epaisseur} : épaisseur des arêtes (en \textit{langage simplifié} \TikZ) ;\hfill{}défaut \Cle{thick} - \item \Cle{aff} : booléen pour afficher les noms des sommets ;\hfill{}défaut \Cle{false} - \item \Cle{plein} : booléen pour ne pas afficher l'arête \textit{invisible} .\hfill{}défaut \Cle{false} -\end{itemize} -\end{codecles} - -\begin{codetex}[tikz lower] -%code tikz -\tetraPL -\end{codetex} - -\begin{codetex}[tikz lower] -%code tikz -\tetraPL[aff,largeur=2,profondeur=0.625,hauteur=1.5] -\end{codetex} - -\begin{codetex}[tikz lower] -%code tikz -\tetraPL[plein,aff,largeur=5,beta=60] -\end{codetex} - -%\begin{codeinfo} -%La ligne est de ce fait à insérer dans un environnement \TikZ, avec les options au choix pour cet environnement. -% -%Le code créé les nœuds relatifs aux sommets, et les nomme comme les sommets, ce qui permet de les réutiliser pour éventuellement compléter la figure ! -%\end{codeinfo} - -\subsection{Influence des paramètres} - -\begin{codeinfo} -Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les différents paramètres utiles. - -\begin{center} - \begin{tikzpicture}[x=1.25cm,y=1.25cm,line width=1pt,line join=bevel] - \tetraPL[largeur=5,profondeur=1.95,hauteur=2.75,alpha=45,beta=70] - \draw[draw=none] (A)--(C) node[midway,sloped,above,font=\small\sffamily,CadetBlue] {largeur} ; - \draw[draw=none] (A)--(B) node[midway,sloped,below,font=\small\sffamily,CadetBlue] {profondeur} ; - \draw[draw=none] (A)--(D) node[midway,sloped,above,font=\small\sffamily,CadetBlue] {hauteur} ; - \draw[purple] (0.5,0) arc (0:-45:0.5) ; - \draw (-22.5:0.5) node[purple,right] {$\alpha$} ; - \draw[orange] (0.75,0) arc (0:70:0.75) ; - \draw (35:0.75) node[orange,right] {$\beta$} ; - \end{tikzpicture} -\end{center} -\end{codeinfo} - -\begin{codetex}[listing only] -\begin{center} - \begin{tikzpicture}[line join=bevel] - \tetraPL[aff,largeur=7,profondeur=3,hauteur=5,epaisseur={ultra thick},alpha=20,beta=30] - \draw[very thick,ForestGreen,<->] ($(A)!0.5!(D)$)--($(B)!0.5!(D)$) ; - \end{tikzpicture} -\end{center} -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture}[line join=bevel] - \tetraPL[aff,largeur=7,profondeur=3,hauteur=5,epaisseur={ultra thick},alpha=20,beta=30] - \draw[very thick,ForestGreen,<->] ($(A)!0.5!(D)$)--($(B)!0.5!(D)$) ; - \end{tikzpicture} -\end{center} -\end{codesortie} -% -%\begin{codetex}[listing only] -% \begin{center} -% \begin{tikzpicture}[line join=bevel] -% \pavePL[plein,aff,largeur=7,profondeur=3.5,hauteur=4,sommets=Q§S§D§F§G§H§J§K] -% \draw[thick,red,densely dotted] (G)--(J) ; -% \draw[thick,blue,densely dotted] (K)--(H) ; -% \end{tikzpicture} -% \end{center} -%\end{codetex} -% -%\medskip -% -%\begin{codesortie} -% \begin{center} -% \begin{tikzpicture}[line join=bevel] -% \pavePL[plein,aff,largeur=7,profondeur=3.5,hauteur=4,sommets=Q§S§D§F§G§H§J§K] -% \draw[thick,red,densely dotted] (G)--(J) ; -% \draw[thick,blue,densely dotted] (K)--(H) ; -% \end{tikzpicture} -% \end{center} -%\end{codesortie} - -\newpage - -%\newpage -% -\section{Cercle trigo}\label{cercletrigo} - -\subsection{Idée} - -\begin{codeidee} -L'idée est d'obtenir une commande pour tracer (en \TikZ) un cercle trigonométrique, avec personnalisation des affichages. - -\smallskip - -Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur définir et créer son environnement \TikZ, et d'insérer la commande \ctex{cercletrigoPL} pour afficher le cercle. -\end{codeidee} - -\begin{codetex}[tikz lower] -%code tikz -\cercletrigoPL -\end{codetex} - -\subsection{Commandes} - -\begin{codetex}[listing only] -... -\begin{tikzpicture}[<options tikz>] - ... - \cercletrigoPL[<clés>] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Plusieurs \Cle{Clés} sont disponibles pour cette commande : - -\begin{itemize} - \item la clé \Cle{rayon} qui définit le rayon du cercle ;\hfill{}défaut \Cle{3} - \item la clé \Cle{epaisseur} qui donne l'épaisseur des traits de base ;\hfill{}défaut \Cle{thick} - \item la clé \Cle{marge} qui est l'\textit{écartement} de axes ;\hfill{}défaut \Cle{0.25} - \item la clé \Cle{taillevaleurs} qui est la taille des valeurs remarquables ;\hfill{}défaut \Cle{scriptsize} - \item la clé \Cle{tailleangles} qui est la taille des angles ;\hfill{}défaut \Cle{footnotesize} - \item la clé \Cle{couleurfond} qui correspond à la couleur de fond des labels ;\hfill{}défaut \Cle{white} - \item la clé \Cle{decal} qui correspond au décalage des labels par rapport au cercle ;\hfill{}défaut \Cle{10pt} - \item un booléen \Cle{moinspi} qui bascule les angles \og -pipi \fg{} à \og zerodeuxpi \fg{} ;\hfill{}défaut \Cle{true} - \item un booléen \Cle{affangles} qui permet d'afficher les angles ;\hfill{}défaut \Cle{true} - \item un booléen \Cle{afftraits} qui permet d'afficher les \textit{traits de construction} ;\hfill{}défaut \Cle{true} - \item un booléen \Cle{affvaleurs} qui permet d'afficher les valeurs remarquables.\hfill{}défaut \Cle{true} -\end{itemize} -\end{codecles} - -\pagebreak - -\begin{codetex}[listing only] -\begin{center} - \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,affvaleurs=false,decal=8pt] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,affangles=false] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,moinspi=false,couleurfond=orange!15] - \end{tikzpicture} -\end{center} -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,affvaleurs=false,decal=8pt] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,affangles=false] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,moinspi=false,couleurfond=orange!15,taillevaleurs=\tiny] - \end{tikzpicture} -\end{center} -\end{codesortie} - -\subsection{Équations trigos} - -\begin{codeinfo} -En plus des \Cle{Clés} précédentes, il existe un complément pour \textit{visualiser} des solutions d'équations simples du type $\cos(x)=\ldots$ ou $\sin(x)=\ldots$. -\end{codeinfo} - -\begin{codecles} -Les \Cle{Clés} pour cette possibilité sont : - -\begin{itemize} - \item un booléen \Cle{equationcos} pour \textit{activer} \og $\cos=$ \fg; \hfill{}défaut \Cle{false} - \item un booléen \Cle{equationsin} pour \textit{activer} \og $\sin=$ \fg;\hfill{}défaut \Cle{false} - \item la clé \Cle{sin} qui est la valeur de l'angle (en degrés) du sin ;\hfill{}défaut \Cle{30} - \item la clé \Cle{cos} qui est la valeur de l'angle (en degrés) cos ;\hfill{}défaut \Cle{45} - \item la clé \Cle{couleursol} qui est la couleur des \textit{solutions}.\hfill{}défaut \Cle{blue} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\begin{center} - \begin{tikzpicture} - \cercletrigoPL[% - affangles=false,affvaleurs=false,afftraits=false,rayon=2,equationsin,sin=-30,couleursol=red] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \cercletrigoPL[% - affangles=false,affvaleurs=false,afftraits=false,rayon=2,equationcos,cos=135,couleursol=orange] - \end{tikzpicture} - - \medskip - - \begin{tikzpicture} - \cercletrigoPL[% - afftraits=false,affangles=false,rayon=2.75,equationcos,cos=60,couleursol=purple,taillevaleurs=\tiny] - \end{tikzpicture} -\end{center} -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture} - \cercletrigoPL[% - affangles=false,affvaleurs=false,afftraits=false,rayon=2,equationsin,sin=-30,couleursol=red] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \cercletrigoPL[% - affangles=false,affvaleurs=false,afftraits=false,rayon=2,equationcos,cos=150,couleursol=orange] - \end{tikzpicture} - - \medskip - - \begin{tikzpicture} - \cercletrigoPL[% - afftraits=false,affangles=false,rayon=2.75,equationcos,cos=60,couleursol=purple,taillevaleurs=\tiny] - \end{tikzpicture} -\end{center} -\end{codesortie} - -\newpage - -\part{Outils pour les statistiques} - -\section{Paramètres d'une régression linéaire par la méthode des moindres carrés}\label{reglin} - -\subsection{Idée} - -\begin{codeidee} -L'idée est d'utiliser une commande qui va permettre de calculer les paramètres principaux d'un régression linéaire par la méthode des moindres carrés. - -Le package \ctex{pgfpots} permet de le faire nativement, mais le moteur de calculs de \textsf{pgf} n'est pas des plus performants avec de grandes valeurs, donc ici cela passe par \ctex{xfp} qui permet de gagner en précision ! - -\smallskip - -L'idée est que cette macro calcule et stocke les paramètres dans des variables (le nom peut être personnalisé !) pour exploitation ultérieure : - -\begin{itemize} - \item en calculs \textit{purs} ; - \item dans un environnement \TikZ{} via \textsf{pgfplots} ou bien en \textit{natif} ; - \item dans un environnement \PSTricks{} ; - \item dans un environnement \METAPOST{} (à vérifier quand même) ; - \item \ldots -\end{itemize} -\end{codeidee} - -\begin{codetex}[listing only] -... -\PLreglin[<clés>]{<listeX>}{<listeY>} %listes avec éléments séparés par des , -... -\end{codetex} - -\begin{codeinfo} -La commande \ctex{PLreglin} va définir également des \textsf{macros} pour chaque coefficient, qui de ce fait seront réutilisables après ! -\end{codeinfo} - -\subsection{Commandes} - -\begin{codecles} -Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour \textit{renommer} les paramètres : - -\begin{itemize} - \item la clé \Cle{nomcoeffa} qui permet de définir la variable qui contiendra $a$ ;\hfill{}défaut \Cle{COEFFa} - \item la clé \Cle{nomcoeffb} qui permet de définir la variable qui contiendra $b$ ;\hfill{}défaut \Cle{COEFFb} - \item la clé \Cle{nomcoeffr} qui permet de définir la variable qui contiendra $r$ ;\hfill{}défaut \Cle{COEFFr} - \item la clé \Cle{nomcoeffrd} qui permet de définir la variable qui contiendra $r^2$ ;\hfill{}défaut \Cle{COEFFrd} - \item la clé \Cle{nomxmin} qui permet de définir la variable qui contiendra $x_{\text{min}}$ ;\hfill{}défaut \Cle{LXmin} - \item la clé \Cle{nomxmax} qui permet de définir la variable qui contiendra $x_{\text{max}}$.\hfill{}défaut \Cle{LXmax} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -%les espaces verticaux n'ont pas été écrits ici -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} -\PLreglin{\LLX}{\LLY} -\end{codetex} - -\begin{codetex}[listing only] -%vérif des calculs (noms non modifiables...) -Liste des X := \showitems\LX. -Liste des Y := \showitems\LY. -Somme des X := \LXSomme{} et somme des Y := \LYSomme. -Moyenne des X := \LXmoy{} et moyenne des Y := \LYmoy. -Variance des X := \LXvar{} et variance des Y := \LYvar{} -Covariance des X/Y := \LXYvar. -%les coefficients, avec des noms modifiables ! -Min des X := \LXmin{} et Max des X := \LXmax. -Coefficient $a=\COEFFa$. -Coefficient $b=\COEFFb$. -Coefficient $r=\COEFFr$. -Coefficient $r^2=\COEFFrd$. -\end{codetex} - -\begin{codesortie} -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} -\PLreglin{\LLX}{\LLY} - -Liste des X := \showitems\LX. - -\smallskip - -Liste des Y := \showitems\LY. - -\smallskip - -Somme des X := \LXSomme{} et somme des Y := \LYSomme. - -\smallskip - -Moyenne des X := \LXmoy{} et moyenne des Y := \LYmoy. - -\smallskip - -Variance des X := \LXvar{} et variance des Y := \LYvar{} - -\smallskip - -Covariance des X/Y := \LXYvar. - -\smallskip - -Min des X := \LXmin{} et Max des X := \LXmax. - -\smallskip - -Coefficient $a=\COEFFa$.\tabto{0.5\textwidth}Coefficient $b=\COEFFb$. - -%\smallskip -% -%Coefficient $b=\COEFFb$. - -\smallskip - -Coefficient $r=\COEFFr$.\tabto{0.5\textwidth}Coefficient $r^2=\COEFFrd$. - -%\smallskip -% -%Coefficient $r^2=\COEFFrd$. -\end{codesortie} - -\begin{codeinfo} -\hfill~\includegraphics[height=3cm]{./graphics/pl-doc-stats_a}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_b}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_c}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_c2}\hfill~ -\end{codeinfo} - -\begin{codeinfo} -Les \textsf{macros} qui contiennent les paramètres de la régression sont donc réutilisables, en tant que nombres réels, donc exploitables par \ctex{siunitx} et \ctex{xfp} pour affichage \textit{fin} ! Ci-dessous un exemple permettant de visualiser tout cela. -\end{codeinfo} - -\begin{codetex}[listing only] -%les espaces verticaux n'ont pas été écrits ici -\def\LstX{0,1,3,4,5,6} -\def\LstY{-35,-37.4,-37.7,-39.9,-39,-39.6} -%on lance les calculs et on change le nom des "macros-résultats" -\PLreglin[nomcoeffa=TESTa,nomcoeffb=TESTb,nomcoeffr=TESTr,nomcoeffrd=TESTrd,% - nomxmin=TESTmin,nomxmax=TESTmax]{\LstX}{\LstY} -%commandes complémentaires -\DeclareDocumentCommand\arrond{ s O{3} m }{% * pour afficher signe / opt = précision / argument = nb - \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{round(#3,#2)}}}{\num{\fpeval{round(#3,#2)}}} -} -%paramètres -Les valeurs extr. de X sont \TESTmin{} et \TESTmax. Une éq. est $y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$. -Le coeff. de corrélation est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\arrond[4]{\TESTrd}$. -\end{codetex} - -\begin{codesortie} -\def\LstX{0,1,3,4,5,6}\def\LstY{-35,-37.4,-37.7,-39.9,-39,-39.6} -\PLreglin[nomcoeffa=TESTa,nomcoeffb=TESTb,nomcoeffr=TESTr,nomcoeffrd=TESTrd,nomxmin=TESTmin,nomxmax=TESTmax]{\LstX}{\LstY} -\DeclareDocumentCommand\arrond{ s O{3} m }{ - \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{ceil(#3,#2)}}} - {\num{\fpeval{round(#3,#2)}}} -} - -Les valeurs extrêmes de X sont \TESTmin{} et \TESTmax. Une équation de la droite de régression de $y$ en $x$ est $y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$. - -\smallskip - -Le coefficient de corrélation linéaire est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\arrond[4]{\TESTrd}$. -\end{codesortie} - -\begin{codeinfo} -\hfill~\includegraphics[height=3cm]{./graphics/pl-doc-stats_d}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_e}\hfill~ -\end{codeinfo} - -\subsection{Intégration dans un environnement \TikZ} - -\begin{codeinfo} -La commande étant \og autonome \fg{}, elle va pouvoir être intégrée dans des environnements graphiques pour permettre un tracé \textit{facile} de la droite de régression. -\end{codeinfo} - -\begin{codetex}[listing only] -\begin{tikzpicture} - \begin{axis}[<options des axes, non présentées ici...>] - \addplot[teal, only marks] table{ - X Y - 1994 1718 1995 1710 1996 1708 1997 1700 1998 1698 1999 1697 2000 1691 2001 1688 - 2002 1683 2004 1679 2005 1671 2006 1670 2007 1663 2008 1661 2009 1656 2010 1649 - }; - \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} - \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} - \PLreglin{\LLX}{\LLY} - \addplot [thick,orange,domain=\LXmin:\LXmax,samples=2]{\COEFFa*x+\COEFFb}; - \addlegendentry{$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$}; - \addlegendentry{$R^2=\fpeval{round(\COEFFrd,5)}$}; - \end{axis} -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\begin{tikzpicture} - \begin{axis}[ - /pgf/number format/.cd, - use comma, - xmin = 1992, xmax = 2012, - ymin = 1640, ymax = 1730, - width = 0.7\textwidth, - height = 0.35\textwidth, - xtick distance = 2, - ytick distance = 10, - grid = both, - minor tick num = 1, - major grid style = {lightgray}, - minor grid style = {lightgray!25}, - xlabel = {\small Année ($x$)}, - ylabel = {\small Altitude du glacier (en m) ($y$)}, - x tick label style={/pgf/number format/.cd, set thousands separator={}}, - y tick label style={/pgf/number format/.cd, set thousands separator={}}, - legend cell align = {left}, - legend pos = north east - ] - \addplot[teal, only marks] table{ - X Y - 1994 1718 - 1995 1710 - 1996 1708 - 1997 1700 - 1998 1698 - 1999 1697 - 2000 1691 - 2001 1688 - 2002 1683 - 2004 1679 - 2005 1671 - 2006 1670 - 2007 1663 - 2008 1661 - 2009 1656 - 2010 1649 - }; - \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} - \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} - \PLreglin{\LLX}{\LLY} - \addplot [thick,orange,domain=\LXmin:\LXmax,samples=2]{\COEFFa*x+\COEFFb}; - \addlegendentry{$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$}; - \addlegendentry{$R^2=\fpeval{round(\COEFFrd,5)}$}; - \end{axis} -\end{tikzpicture} -\end{codesortie} - -\begin{codeinfo} -Il existe également une commande auxiliaire, \ctex{PLreglinpts} pour afficher le nuage de points avec quelques options, dans un environnement \TikZ{} classique (sans \textsf{pgfplot})\ldots -\end{codeinfo} - -\begin{codetex}[listing only] -... -\begin{tikzpicture}[<options>] - ... - \PLreglinpts[<clés>]{<listeX>}{<listeY>} - ... -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour la mise en forme du nuage : - -\begin{itemize} - \item la clé \Cle{couleur} pour la couleur des points du nuage ;\hfill{}défaut \Cle{teal} - \item la clé \Cle{taille} pour la taille des points (type \textit{cercle}) ;\hfill{}défaut \Cle{2pt} - \item la clé \Cle{Ox} pour spécifier la valeur initiale Ox (si changement d'origine) ;\hfill{}défaut \Cle{0} - \item la clé \Cle{Oy} pour spécifier la valeur initiale Oy (si changement d'origine).\hfill{}défaut \Cle{0} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\begin{tikzpicture}[x=0.5cm,y=0.05cm] - \draw[xstep=1,ystep=5,lightgray!50,very thin] (0,0) grid (20,100); - \draw[xstep=2,ystep=10,lightgray,thin] (0,0) grid (20,100); - \draw[thick,->] (0,0)--(20,0) ; - \draw[thick,->] (0,0)--(0,100) ; - \foreach \x in {1992,1994,...,2010} \draw[thick] ({\x-1992},4pt)--({\x-1992},-4pt) node[below] {$\x$} ; - \foreach \y in {1640,1650,...,1730} \draw[thick] (4pt,{\y-1640})--(-4pt,{\y-1640}) node[left] {$\y$} ; - \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} - \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} - \def\Ox{1992}\def\Oy{1640} - \PLreglin{\LLX}{\LLY} - \PLreglinpts[Ox=1992,Oy=1640,couleur=blue,taille=3pt]{\LLX}{\LLY} - \draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ; - \matrix [draw,fill=white,below left] at (current bounding box.north east) { - \node {$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$} ; \\ - \node {$R^2=\fpeval{round(\COEFFrd,5)}$} ; \\ - }; -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\begin{tikzpicture}[x=0.5cm,y=0.05cm] - \draw[xstep=1,ystep=5,lightgray!50,very thin] (0,0) grid (20,100); - \draw[xstep=2,ystep=10,lightgray,thin] (0,0) grid (20,100); - \draw[thick,->] (0,0)--(20,0) ; - \draw[thick,->] (0,0)--(0,100) ; - \foreach \x in {1992,1994,...,2010} \draw[thick] ({\x-1992},4pt)--({\x-1992},-4pt) node[below] {$\x$} ; - \foreach \y in {1640,1650,...,1730} \draw[thick] (4pt,{\y-1640})--(-4pt,{\y-1640}) node[left] {$\y$} ; - \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} - \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} - \def\Ox{1992}\def\Oy{1640} - \PLreglin{\LLX}{\LLY} - \PLreglinpts[Ox=1992,Oy=1640,couleur=blue,taille=3pt]{\LLX}{\LLY} - \draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ; - \matrix [draw,fill=white,below left] at (current bounding box.north east) { - \node {$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$} ; \\ - \node {$R^2=\fpeval{round(\COEFFrd,5)}$} ; \\ - }; -\end{tikzpicture} -\end{codesortie} - -\newpage - -\section{Statistiques à deux variables}\label{statsdeuxvars} - -\subsection{Idées} - -\begin{codeidee} -L'idée est de \textit{prolonger} le paragraphe précédent pour proposer un environnement \TikZ{} adapté à des situations venant de statistiques à deux variables. - -\smallskip - -Un des soucis pour ces situations est le fait que le repère dans lequel on travaille n'a pas forcément pour origine $(0\,;\,0)$. - -De ce fait - pour éviter des erreurs de \ctex{dimension too large} liées à \TikZ{} - il faut \textit{décaler les axes} pour se ramener à une origine en $O$. - -\smallskip - -Le code, intimement lié à un environnement \ctex{tikzpicture}, va donc : - -\begin{itemize} - \item préciser les informations utiles comme \ctex{xmin}, \ctex{xmax}, \ctex{Ox}, \ctex{xgrille}, etc - \item proposer des commandes (sans se soucier des \textit{translations} !) pour : - \begin{itemize} - \item tracer une grille (principale et/ou secondaire) ; - \item tracer les axes (avec légendes éventuelles) et éventuellement les graduer ; - \end{itemize} -\end{itemize} - -En utilisant les commandes de \textsf{régression linéaire} du paragraphe précédent, il sera de plus possible (sans calculs !) de : - -\begin{itemize} - \item représenter le nuage de points ; - \item placer le point moyen ; - \item tracer la droite d'ajustement (obtenue par \ctex{ProfLycee}) ou une autre courbe. -\end{itemize} -\end{codeidee} - -\begin{codeinfo} -Le package \ctex{pgfplots} peut être utilisé pour traiter ce genre de situation, mais ne l'utilisant pas, j'ai préféré préparer des \textsf{macros} permettant de s'affranchir de ce package (est-ce pertinent, ça c'est une autre question\ldots). -\end{codeinfo} - -\begin{codetex}[listing only] -%Listes et calculs -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} -\PLreglin{\LLX}{\LLY} -\end{codetex} - -\begin{codetex}[listing only] -%tracé (simple), les options seront présentées juste après -\begin{tikzpicture}% - [x=0.5cm,y=0.1cm, %unités - Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1, %axe Ox - Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] %axe Oy - \PLgrilletikz \PLaxestikz %grilles et axes - \PLaxextikz[annee]{1992,1994,...,2010} %axeOx - \PLaxeytikz{1640,1650,...,1720} %axeOy - \PLnuagepts{\LLX}{\LLY} %nuage - \PLcourbe[line width=1.25pt,ForestGreen,samples=2]% - {\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} %droite de régression - \PLnuageptmoy %point moyen -\end{tikzpicture} -\end{codetex} - -\begin{codetex}[listing only] -%tracé avec options fenêtre par défaut -\begin{tikzpicture}% - [....] %paramètres - \PLfenetresimple<annee>{1992,1994,...,2010}{1640,1650,...,1720} %fenêtre "simple" - \PLnuagepts{\LLX}{\LLY} %nuage - \PLcourbe[line width=1.25pt,ForestGreen,samples=2]% - {\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} %droite de régression - \PLnuageptmoy %point moyen -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} -\PLreglin{\LLX}{\LLY} - -\begin{tikzpicture}[x=0.5cm,y=0.1cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz \PLaxestikz - \PLaxextikz[annee]{1992,1994,...,2010} - \PLaxeytikz{1640,1650,...,1720} - \PLnuagepts{\LLX}{\LLY} - \PLcourbe[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} - \PLnuageptmoy -\end{tikzpicture} -\end{codesortie} - -\subsection{Commandes, clés et options} - -\begin{codeinfo} -Les \Cle{paramètres} nécessaires à la bonne utilisation des commandes suivantes sont à déclarer directement dans l'environnement \ctex{tikzpicture}, seules versions \og x \fg{} sont présentées ici: - -\begin{itemize} - \item \Cle{xmin}, stockée dans \ctex{\textbackslash{}xmin} ;\hfill{}défaut \Cle{-3} - \item \Cle{xmax}, stockée dans \ctex{\textbackslash{}xmax} ;\hfill{}défaut \Cle{3} - \item \Cle{Ox}, stockée dans \ctex{\textbackslash{}axexOx}, origine de l'axe $(Ox)$ ;\hfill{}défaut \Cle{0} - \item \Cle{xgrille}, stockée dans \ctex{\textbackslash{}xgrille}, graduation principale ;\hfill{}défaut \Cle{1} - \item \Cle{xgrilles}, stockée dans \ctex{\textbackslash{}xgrilles}, graduation secondaire.\hfill{}défaut \Cle{0.5} -\end{itemize} - -La fenêtre d'affichage (de sortie) sera donc \textit{portée} par le rectangle de coins $(xmin\,;\,ymin)$ et $(xmax\,;\,ymax)$ ; ce qui correspond en fait à la fenêtre \TikZ{} \textit{portée} par le rectangle de coins $(xmin-Ox\,;\,ymin-Oy)$ et $(xmax-Ox\,;\,ymax-Oy)$. - -\smallskip - -Les commandes ont -- pour certaines -- pas mal de \Cle{clés} pour des réglages fins, mais dans la majorité des cas elles ne sont pas forcément \textit{utiles}. -\end{codeinfo} - -\begin{codeinfo} -Pour illustrer les commandes et options de ce paragraphe, la base sera le graphique présenté précédemment. -\end{codeinfo} - -\begin{codetex}[listing only] -%...code tikz - \PLgrilletikz[<options>][<options grille ppale>][<options grille second.>] -\end{codetex} - -\begin{codecles} -Cette commande permet de tracer une grille principale et/ou une grille secondaire : - -\begin{itemize} - \item les premières \Cle{clés} sont les booléens \Cle{affp} et \Cle{affs} qui affichent ou non les grilles ;\hfill~défaut \Cle{true} - \item les options des grilles sont en \TikZ. \hfill~défaut \Cle{thin,lightgray} et \Cle{very thin,lightgray} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\begin{tikzpicture}% - [x=0.35cm,y=0.07cm,% - Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% - Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz -\end{tikzpicture} -~~ -\begin{tikzpicture}% - [x=0.35cm,y=0.07cm,% - Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% - Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz[affp=false][][orange,densely dotted] -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\hfill~ -\begin{tikzpicture}% - [x=0.35cm,y=0.07cm,% - Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% - Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz -\end{tikzpicture} -~~ -\begin{tikzpicture}% - [x=0.35cm,y=0.07cm,% - Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% - Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz[affp=false][][orange,densely dotted] -\end{tikzpicture} -\hfill~ -\end{codesortie} - -\begin{codetex}[listing only] -%...code tikz - \PLaxestikz[<options>] -\end{codetex} - -\begin{codecles} -Cette commande permet de tracer les axes, avec des \Cle{clés} : - -\begin{itemize} - \item \Cle{epaisseur} qui est l'épaisseur des traits ; \hfill~défaut \Cle{1.25pt} - \item \Cle{police} qui est le style des labels des axes ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} - \item \Cle{labelx} qui est le label de l'axe $(Ox)$ ; \hfill~défaut \Cle{\${}x\$} - \item \Cle{labely} qui est le label de l'axe $(Oy)$ ; \hfill~défaut \Cle{\${}y\$} - \item \Cle{afflabel} qui est le code pour préciser quels labels afficher, entre \Cle{x}, \Cle{y} ou \Cle{xy} ; \hfill~défaut \Cle{vide} - \item \Cle{poslabelx} pour la position du label de $(Ox)$ en bout d'axe ; \hfill~défaut \Cle{right} - \item \Cle{poslabely} pour la position du label de $(Oy)$ en bout d'axe ; \hfill~défaut \Cle{above} - \item \Cle{echellefleche} qui est l'échelle de la flèche des axes ; \hfill~défaut \Cle{1} - \item \Cle{typefleche} qui est le type de la flèche des axes.\hfill~défaut \Cle{>} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -%code tikz - \PLaxestikz - -%code tikz - \PLaxestikz% - [afflabel=xy,labelx={Année},labely={Altitude},% - poslabelx={below right},poslabely={above left}% - police=\small\sffamily] -\end{codetex} - -\begin{codesortie} -\hfill~ -\begin{tikzpicture}% - [x=0.35cm,y=0.07cm,% - Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% - Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLaxestikz -\end{tikzpicture} -~~ -\begin{tikzpicture}% - [x=0.35cm,y=0.07cm,% - Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% - Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLaxestikz% - [afflabel=xy,labelx={Année},labely={Altitude},% - poslabelx={below right},poslabely={above left},% - police=\small\sffamily] -\end{tikzpicture} -\hfill~ -\end{codesortie} - -%les axes - -\begin{codetex}[listing only] -%...code tikz - \PLaxextikz[<options>]{valeurs} - \PLaxeytikz[<options>]{valeurs} -\end{codetex} - -\begin{codecles} -Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} identiques pour les deux directions : - -\begin{itemize} - \item \Cle{epaisseur} qui est l'épaisseur des graduations ; \hfill~défaut \Cle{1.25pt} - \item \Cle{police} qui est le style des labels des graduations ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} - \item \Cle{posgrad} qui est la position des graduations par rapport à l'axe ; \hfill~défaut \Cle{below} et \Cle{left} - \item \Cle{hautgrad} qui est la position des graduations (sous la forme \Cle{lgt} ou \Cle{lgta/lgtb}) ; \hfill~défaut \Cle{4pt} - \item le booléen \Cle{affgrad} pour afficher les valeurs (formatés avec \ctex{num} donc dépendant de \ctex{sisetup}) des graduations ; \hfill~défaut \Cle{true} - \item le booléen \Cle{afforigine} pour afficher la graduation de l'origine ; \hfill~défaut \Cle{true} - \item le booléen \Cle{annee} qui permet de ne pas formater les valeurs des graduations (type \textsf{année}). \hfill~défaut \Cle{false} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -%code tikz - \PLaxextikz[police=\small]{1992,1994,...,2010} - \PLaxeytikz{1640,1650,...,1720} - -%code tikz - \PLaxextikz[police=\small,annee,hautgrad=0pt/4pt]{1992,1994,...,2010} - \PLaxeytikz[affgrad=false,hautgrad=6pt]{1640,1650,...,1720} - -%des axes fictifs (en gris) sont rajoutés pour la lisibilité du code de sortie -\end{codetex} - -\begin{codesortie} -\hfill~ -\begin{tikzpicture}% - [x=0.35cm,y=0.07cm,% - Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% - Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \draw[gray,line width=1.25pt,->] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ; - \draw[gray,line width=1.25pt,->] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ; - \PLaxextikz[police=\small]{1992,1994,...,2010} - \PLaxeytikz{1640,1650,...,1720} -\end{tikzpicture} -~~ -\begin{tikzpicture}% - [x=0.35cm,y=0.07cm,% - Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% - Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \draw[gray,line width=1.25pt,->] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ; - \draw[gray,line width=1.25pt,->] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ; - \PLaxextikz[police=\small,annee,hautgrad=0pt/4pt]{1992,1994,...,2010} - \PLaxeytikz[affgrad=false,hautgrad=6pt]{1640,1650,...,1720} -\end{tikzpicture} -\hfill~ -\end{codesortie} - -\subsection{Commandes annexes} - -\begin{codeinfo} -Il existe, de manière marginale, quelques commandes complémentaires qui ne seront pas trop détaillées mais qui sont présentes dans l'introduction : - -\begin{itemize} - \item \ctex{PLfenetre} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ; - \item \ctex{PLfenetresimple} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ; - \item \ctex{PLorigine} pour rajouter le libellé de l'origine si non affiché par les axes. -\end{itemize} -\end{codeinfo} - -\begin{codetex}[listing only] -%code tikz - \PLfenetre %on restreint les tracés - \PLfenetresimple<options axe Ox>{liste abscisses}<options axe Oy>{liste ordonnées} -\end{codetex} - -%%l'origine -% -%\begin{codetex}[listing only] -%%...code tikz -% \PLorigine[<options>] -%\end{codetex} - -\subsection{Interactions avec PLreglin} - -\begin{codetex}[listing only] -%...code tikz - \PLnuagepts[<options>]{listeX}{listeY} -\end{codetex} - -\begin{codecles} -Cette commande, liée à la commande \ctex{PLreglin} permet de représenter le nuage de points associé aux deux listes, avec les \Cle{clés} suivantes : - -\begin{itemize} - \item \Cle{taille} qui est la taille des points du nuage ; \hfill~défaut \Cle{2pt} - \item \Cle{style} parmi \Cle{o} (rond) ou \Cle{x} (croix) ou \Cle{+} (plus) ; \hfill~défaut \Cle{o} - \item \Cle{couleur} qui est la couleur (éventuellement \Cle{couleurA/couleurB} pour les ronds). \hfill~défaut \Cle{blue} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} - -\begin{tikzpicture}[...] - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} -\end{tikzpicture} -~~ -\begin{tikzpicture}[...] - \PLnuagepts[couleur=ForestGreen,style=x,taille=6pt]{\LLX}{\LLY} -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} -\PLreglin{\LLX}{\LLY} - -\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz \PLaxestikz - \PLaxextikz[annee,police=\small]{1992,1994,...,2010} - \PLaxeytikz{1640,1650,...,1720} - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} -\end{tikzpicture} -~~ -\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz \PLaxestikz - \PLaxextikz[annee,police=\small]{1992,1994,...,2010} - \PLaxeytikz{1640,1650,...,1720} - \PLnuagepts[couleur=ForestGreen,style=x,taille=6pt]{\LLX}{\LLY} -\end{tikzpicture} -\end{codesortie} - -%point moyen -\begin{codetex}[listing only] -%...code tikz - \PLnuageptmoy[<options>] -\end{codetex} - -\begin{codecles} -Cette commande permet de rajouter le point moyen du nuage, calculé par la commande \ctex{PLreglin}, avec les \Cle{clés} : - -\begin{itemize} - \item \Cle{police}, comme précédemment ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} ; - \item \Cle{taille}, taille du point moyen ; \hfill~défaut \Cle{4pt} - \item \Cle{couleur}, couleur du point moyen ; \hfill~défaut \Cle{red} - \item \Cle{style} parmi \Cle{o} (rond) ou \Cle{x} (croix) ou \Cle{+} (plus) ; \hfill~défaut \Cle{o} - \item \Cle{xg}, abscisse du point moyen, récupérable via \ctex{PLRegLin} ; \hfill~défaut \Cle{\textbackslash{}LXmoy} - \item \Cle{yg}, ordonnée du point moyen, récupérable via \ctex{PLRegLin} ; \hfill~défaut \Cle{\textbackslash{}LYmoy} - \item \Cle{nom}, label du point moyen ; \hfill~défaut \Cle{G} - \item \Cle{pos} qui est la position du label par rapport au point ; \hfill~défaut \Cle{above} - \item \Cle{decal} qui est l'éloignement de la position du label par rapport au point ; \hfill~défaut \Cle{0pt} - \item la booléen \Cle{affnom} qui affiche ou non le libellé.\hfill~défaut \Cle{true} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} -\PLreglin{\LLX}{\LLY} - -\begin{tikzpicture}[...] - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} - \PLnuageptmoy -\end{tikzpicture} -~~ -\begin{tikzpicture}[...] - \PLnuagepts[couleur=ForestGreen,style=x,taille=6pt]{\LLX}{\LLY} - \PLnuageptmoy[couleur=orange,taille=8pt,style=+,nom={$G_1$}] -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} -\PLreglin{\LLX}{\LLY} - -\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz \PLaxestikz - \PLaxextikz[annee,police=\small]{1992,1994,...,2010} - \PLaxeytikz{1640,1650,...,1720} - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} - \PLnuageptmoy -\end{tikzpicture} -~~ -\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz \PLaxestikz - \PLaxextikz[annee,police=\small]{1992,1994,...,2010} - \PLaxeytikz{1640,1650,...,1720} - \PLnuagepts[couleur=ForestGreen,style=x,taille=6pt]{\LLX}{\LLY} - \PLnuageptmoy[couleur=orange,taille=8pt,style=+,nom={$G_1$},pos=below] -\end{tikzpicture} -\end{codesortie} - -%courbe -\begin{codetex}[listing only] -%...code tikz - \PLcourbe[<options>]{formule}{domaine} -\end{codetex} - -\begin{codecles} -Cette commande permet de rajouter une courbe sur le graphique (sans se soucier de la transformation de son expression) avec les arguments : - -\begin{itemize} - \item \Cle{optionnels} qui sont - en \TikZ{} - les paramètres du tracé ; - \item le premier mandataire, est - en langage \TikZ{} - l'expression de la fonction à tracer, donc avec \ctex{\textbackslash{}x} comme variable ; - \item le second mandataire est le domaine du tracé , sous la forme \ctex{valxmin:valxmax}. -\end{itemize} -\end{codecles} - -\begin{codeinfo} -L'idée principale est de récupérer les variables de la régression linéaire pour tracer la droite d'ajustement \textit{à moindres frais} ! -\end{codeinfo} - -\begin{codeinfo} - Toute courbe peut être tracée sur ce principe, par contre il faudra saisir la fonction \textit{à la main}. -\end{codeinfo} - -\begin{codetex}[listing only] -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} -\PLreglin{\LLX}{\LLY} - -\begin{tikzpicture}[...] - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} \PLnuageptmoy - \PLcourbe[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax} -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} -\PLreglin{\LLX}{\LLY} - -\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz \PLaxestikz - \PLaxextikz[annee,police=\small]{1992,1994,...,2010} - \PLaxeytikz{1640,1650,...,1720} - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} \PLnuageptmoy - \PLcourbe[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax} -\end{tikzpicture} -\end{codesortie} - -\begin{codetex}[listing only] -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} - -\begin{tikzpicture}[...] - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} \PLfenetre %on fixe la fenêtre - \PLcourbe[line width=1.25pt,orange,samples=500]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax} -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} -\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} - -\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] - \PLgrilletikz \PLaxestikz - \PLaxextikz[annee,police=\small]{1992,1994,...,2010} - \PLaxeytikz{1640,1650,...,1720} - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} \PLfenetre - \PLcourbe[line width=1.25pt,orange,samples=500]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax} -\end{tikzpicture} -\end{codesortie} - -\newpage - -\section{Boîtes à moustaches}\label{boiteamoustaches} - -\subsection{Introduction} - -\begin{codeidee} -L'idée est de proposer une commande, à intégrer dans un environnement \TikZ, pour tracer une boîte à moustaches grâce aux paramètres, saisis par l'utilisateur. - -\smallskip - -Le code ne calcule pas les paramètres, il ne fait \textit{que} tracer la boîte à moustaches ! -\end{codeidee} - -\begin{codetex}[] -\begin{tikzpicture} - \PLboitemoust[parametres={10/15/17/19/20}] -\end{tikzpicture} -\end{codetex} - -\begin{codeinfo} -Étant donnée que la commande est intégrée dans un environnement \TikZ, les unités peuvent/doivent donc être précisées, \textit{comme d'habitude}, si besoin. -\end{codeinfo} - -\subsection{Clés et options} - -\begin{codecles} -Quelques \Cle{clés} sont disponibles pour cette commande : - -\begin{itemize} - \item la clé \Cle{parametres} qui sont sous la forme \Cle{Min/Q1/Med/Q3/Max} ; - \item la clé \Cle{couleur} qui est la couleur de la boîte ; \hfill~défaut \Cle{black} - \item la clé \Cle{elevation} qui est la position verticale (ordonnée des moustaches) de la boîte ; \hfill~défaut \Cle{1.5} - \item la clé \Cle{hauteur} qui est la hauteur de la boîte ; \hfill~défaut \Cle{1} - \item la clé \Cle{moyenne} qui est la moyenne (optionnelle) de la série ; - \item la clé \Cle{epaisseur} qui est l'épaisseur des traits de la boîte ; \hfill~défaut \Cle{thick} - \item la clé \Cle{remplir} qui est la couleur de remplissage de la boîte ; \hfill~défaut \Cle{white} - \item le booléen \Cle{affmoyenne} qui permet d'afficher ou non la moyenne (sous forme d'un point) ; \hfill~défaut \Cle{false} - \item le booléen \Cle{pointilles} qui permet d'afficher des pointillés au niveau des paramètres ; \hfill~défaut \Cle{false} - \item le booléen \Cle{valeurs} qui permet d'afficher les valeurs des paramètres au niveau des abscisses.\hfill~défaut \Cle{false} -\end{itemize} -\end{codecles} - -\begin{codetex}[] -\begin{tikzpicture} - \PLboitemoust[epaisseur=very thick,parametres={10/15/17/19/20},moyenne=18.5,couleur=blue,affmoyenne,% - pointilles,valeurs,hauteur=2.25,elevation=2.75] -\end{tikzpicture} -\end{codetex} - -\begin{codetex}[listing only] -%une grille a été rajoutée pour visualiser la "position verticale" -\begin{center} - \begin{tikzpicture}[x=0.1cm] - \PLboitemoust[epaisseur=ultra thick,parametres={100/150/170/190/200},couleur=blue] - \PLboitemoust[epaisseur=thin,elevation=2.5,parametres={80/100/110/120/150},couleur=red] - \PLboitemoust[elevation=4,parametres={100/140/145/160/210},couleur=ForestGreen,remplir=ForestGreen!25] -\end{tikzpicture} -\end{center} -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture}[x=0.1cm] - \draw[xstep=10,ystep=0.5,very thin,lightgray] (80,0) grid (210,4.5) ; - \foreach \x in {80,90,...,210} \draw[very thin,lightgray] (\x,3pt)--(\x,-3pt) node[below] {\num{\x}} ; - \foreach \y in {0,0.5,...,4.5} \draw[very thin,lightgray] ($(210,\y)+(-3pt,0)$)--($(210,\y)+(3pt,0)$) node[right] {\num{\y}} ; - \PLboitemoust[epaisseur=ultra thick,parametres={100/150/170/190/200},couleur=blue] - \PLboitemoust[epaisseur=thin,elevation=2.5,parametres={80/100/110/120/150},couleur=red] - \PLboitemoust[elevation=4,parametres={100/140/145/160/210},couleur=ForestGreen,remplir=ForestGreen!25] - \end{tikzpicture} -\end{center} -\end{codesortie} - -\subsection{Commande pour placer un axe horizontal} - -\begin{codeidee} -L'idée est de proposer, en parallèle de la commande précédente, une commande pour tracer un axe horizontal \og sous \fg{} les éventuelles boîtes à moustaches. -\end{codeidee} - -\begin{codetex}[] -\begin{tikzpicture} - \PLboitemoustaxe[min=10,max=20] - \PLboitemoust[parametres={10/15/17/19/20}] -\end{tikzpicture} -\end{codetex} - -\begin{codetex}[] -\begin{tikzpicture} - \PLboitemoustaxe[min=10,max=20,] - \PLboitemoust[parametres={10/15/17/19/20},valeurs,pointilles] -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Quelques \Cle{clés} sont disponibles pour cette commande : - -\begin{itemize} - \item la clé \Cle{min} qui est la valeur minimale de l'axe horizontal ; - \item la clé \Cle{max} qui est la valeur minimale de l'axe horizontal ; - \item la clé \Cle{elargir} qui est le pourcentage l'élargissement de l'axe ;\hfill~défaut \Cle{0.1} - \item la clé \Cle{epaisseur} qui est l'épaisseur des traits de la boîte ; \hfill~défaut \Cle{thick} - \item la clé \Cle{valeurs} qui est la liste (compréhensible en \TikZ) des valeurs à afficher. -\end{itemize} -\end{codecles} - -\begin{codetex}[] -\begin{tikzpicture} - \PLboitemoustaxe[min=8,max=21,affvaleurs,valeurs={8,9,...,21},elargir=0.02] - \PLboitemoust[parametres={10/15/17/19/20},moyenne=18.5,couleur=blue] - \PLboitemoust[elevation=2.5,parametres={8/10/11/12/15},couleur=red] - \PLboitemoust[elevation=4,parametres={10/14/14.5/16/21},couleur=ForestGreen,remplir=ForestGreen!25] -\end{tikzpicture} -\end{codetex} - -\begin{codeinfo} -Le placement des différentes boîtes n'est pas automatique, donc il faut penser à cela avant de se lancer dans le code. - -Sachant que la hauteur par défaut est de 1, il est -- a priori -- intéressant de placer les boîtes à des \Cle{élévations} de \num{1} puis \num{2.5} puis \num{4} etc -\end{codeinfo} - -\newpage - -\part{Outils pour les probabilités} - -\section{Calculs de probabilités}\label{calcprobas} - -\subsection{Introduction} - -\begin{codeidee} -L'idée est de proposer des commandes permettant de calculer des probabilités avec des lois classiques : - -\begin{itemize} - \item binomiale ; - \item normale ; - \item exponentielle ; - \item de Poisson ; - \item géométrique ; - \item hypergéométrique. -\end{itemize} -\end{codeidee} - -\begin{codeinfo} -Les commandes sont de deux natures : - -\begin{itemize} - \item des commandes pour calculer, grâce au package \ctex{xintexpr} ; - \item des commandes pour formater le résultat de \ctex{xintexpr}, grâce à \ctex{siunitx}. -\end{itemize} - -De ce fait, les options de \ctex{siunitx} de l'utilisateur affecterons les formatages du résultat, la commande va \og forcer \fg{} les arrondis et l'écriture scientifique. -\end{codeinfo} - -\subsection{Calculs \og simples \fg} - -\begin{codetex}[listing only] -%loi binomiale B(n,p) -\calcPbinomP{n}{p}{k} %P(X=k) -\calcPbinomC{n}{p}{a}{b} %P(a<=X<=b) - -%loi de Poisson P (l) -\calcPpoissP{l}{k} %P(X=k) -\calcPpoissC{l}{a}{b} %P(a<=X<=b) - -%loi géométrique G (p) -\calcPgeomP{p}{k} %P(X=k) -\calcPgeomC{l}{a}{b} %P(a<=X<=b) - -%loi hypergéométrique H (N,n,m) -\calcPhypergeomP{N}{n}{m}{k} %P(X=k) -\calcPhypergeomP{N}{n}{m}{a}{b} %P(a<=X<=b) - -%loi normale N(m,s) -\calcPnormC{m}{s}{a}{b} %P(a<=X<=b) - -%loi exponentielle E(l) -\calcPexpoC{l}{a}{b} %P(a<=X<=b) -\end{codetex} - -\begin{codecles} -Les probabilités calculables sont donc -- comme pour beaucoup de modèles de calculatrices -- les probabilités \textbf{P}onctuelles ($P(X=k)$) et \textbf{C}umulées ($P(a\leqslant X\leqslant b)$). - -\smallskip - -Pour les probabilités cumulées, on peut utiliser \ctex{*} comme borne ($a$ ou $b$), pour les probabilités du type $P(X\leqslant b)$ et $P(X \geqslant a)$. -\end{codecles} - -\begin{codetex}[listing only] -% X -> B(5,0.4) -$P(X=3) \approx \calcPbinomP{5}{0.4}{3}$. -$P(X\leqslant1) \approx \calcPbinomC{5}{0.4}{*}{1}$. - -% X -> B(100,0.02) -$P(X=10) \approx \calcPbinomP{100}{0.02}{10}$. -$P(15\leqslant X\leqslant25) \approx \calcPbinomC{100}{0.02}{15}{25}$. - -% Y -> P(5) -$P(Y=3) \approx \calcPpoissP{5}{3}$. -$P(Y\geqslant2) \approx \calcPpoissC{5}{2}{*}$. - -% T -> G(0.5) -$P(T=100) \approx \calcPgeomP{0.5}{3}$. -$P(T\leqslant5) \approx \calcPgeomC{0.5}{*}{5}$. - -% W -> H(50,10,5) -$P(W=4) \approx \calcPhypergeomP{50}{10}{5}{4}$. -$P(1\leqslant W\leqslant3) \approx \calcPhypergeomP{50}{10}{5}{1}{3}$. -\end{codetex} - -\begin{codesortie}[listing only] -$\bullet~~~~X \hookrightarrow \mathcal{B}(5\,;\,0,4)$ :\\ -$P(X=3) \approx \calcPbinomP{5}{0.4}{3}$.\\ -$P(X\leqslant1) \approx \calcPbinomC{5}{0.4}{*}{1}$. - -\medskip - -$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,;\,0,02)$ :\\ -$P(X=10) \approx \calcPbinomP{100}{0.02}{10}$.\\ -$P(15\leqslant X\leqslant25) \approx \calcPbinomC{100}{0.02}{15}{25}$. - -\medskip - -$\bullet~~~~Y \hookrightarrow \mathcal{P}_5$ :\\ -$P(Y=3) \approx \calcPpoissP{5}{3}$.\\ -$P(Y\geqslant2) \approx \calcPpoissC{5}{2}{*}$. - -\medskip - -$\bullet~~~~T \hookrightarrow \mathcal{G}_{0,5}$ :\\ -$P(T=3) \approx \calcPgeomP{0.5}{3}$.\\ -$P(T\leqslant5) \approx \calcPgeomC{0.5}{*}{5}$. - -\medskip - -$\bullet~~~~W \hookrightarrow \mathcal{H}(50\,;\,10\,;\,5)$ :\\ -$P(W=4) \approx \calcPhypergeomP{50}{10}{5}{4}$.\\ -$P(1\leqslant W\leqslant3) \approx \calcPhypergeomC{50}{10}{5}{1}{3}$. -\end{codesortie} - -\begin{codetex}[listing only] -% X -> N(0,1) -$P(X\leqslant1) \approx \calcPnormC{0}{1}{*}{1}$. -$P(-1,96\leqslant Z\leqslant1,96) \approx \calcPnormC{0}{1}{-1.96}{1.96}$. - -% X -> N(550,30) -$P(Y\geqslant600) \approx \calcPnormC{550}{30}{600}{*}$. -$P(500\leqslant Y\leqslant600) \approx \calcPnormC{550}{30}{500}{600}$. - -% Z -> E(0.001) -$P(Z\geqslant400) \approx \calcPexpoC{0.001}{400}{*}$. -$P(300\leqslant Z\leqslant750) \approx \calcPexpoC{0.001}{300}{750}$. -\end{codetex} - -\begin{codesortie} -$\bullet~~~~X \hookrightarrow \mathcal{N}(0\,;\,1)$ :\\ -$P(X\leqslant1) \approx \calcPnormC{0}{1}{*}{1}$.\\ -$P(-1,96\leqslant Z\leqslant1,96) \approx \calcPnormC{0}{1}{-1.96}{1.96}$. - -\medskip - -$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,;\,30)$ :\\ -$P(Y\geqslant600) \approx \calcPnormC{550}{30}{600}{*}$.\\ -$P(500\leqslant Y\leqslant600) \approx \calcPnormC{550}{30}{500}{600}$. - -\medskip - -$\bullet~~~~Z \hookrightarrow \mathcal{E}_{0,001}$ :\\ -$P(Z\geqslant400) \approx \calcPexpoC{0.001}{400}{*}$.\\ -$P(300\leqslant Z\leqslant750) \approx \calcPexpoC{0.001}{300}{750}$. -\end{codesortie} - -\subsection{Complément avec sortie \og formaté \fg} - -\begin{codeidee} -L'idée est ensuite de formater le résultat obtenu par \ctex{xintexpr}, pour un affichage homogène. - -\smallskip - -L'utilisateur peut donc utiliser \og sa \fg{} méthode pour formater les résultats obtenus par \ctex{xintexpr} ! -\end{codeidee} - -\begin{codetex}[listing only] -%avec un formatage manuel -\num[exponent-mode=scientific]{\calcPbinomP{100}{0.02}{10}} -\end{codetex} - -\begin{codesortie} -$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,;\,0,02)$ : - -$P(X=10) \approx \num[exponent-mode=scientific]{\calcPbinomP{100}{0.02}{10}}$. -\end{codesortie} - -\begin{codeidee} -Le package \ctex{ProfLycee} propose -- en complément -- des commandes pour formater, grâce à \ctex{siunitx}, le résultat. - -Les commandes sont dans ce cas préfixées par \ctex{num} au lieu de \ctex{calc} : - -\begin{itemize} - \item formatage sous forme décimale \textit{pure} : $0,00\ldots$ ; - \item formatage sous forme scientifique : $n,\ldots\times10^{\ldots}$. -\end{itemize} -\end{codeidee} - -\begin{codetex}[listing only] -%loi binomiale B(n,p) -\numPbinomP(*)[prec]{n}{p}{k} %P(X=k) -\numPbinomC(*)[prec]{n}{p}{a}{b} %P(a<=X<=b) - -%loi de Poisson P (l) -\numPpoissP(*)[prec]{l}{k} %P(X=k) -\numPpoissC(*)[prec]{l}{a}{b} %P(a<=X<=b) - -%loi géométrique G (p) -\numPgeomP{p}{k} %P(X=k) -\numPgeomC{l}{a}{b} %P(a<=X<=b) - -%loi hypergéométrique H (N,n,m) -\numPhypergeomP{N}{n}{m}{k} %P(X=k) -\numPhypergeomC{N}{n}{m}{a}{b} %P(a<=X<=b) - -%loi normale N(m,s) -\numPnormC(*)[prec]{m}{s}{a}{b} %P(a<=X<=b) - -%loi exponentielle E(l) -\numPexpoC(*)[prec]{l}{a}{b} %P(a<=X<=b) -\end{codetex} - -\begin{codecles} -Quelques précisions sur les commandes précédentes : - -\begin{itemize} - \item la version étoilée \Cle{*} des commandes formate le résultat en mode scientifique ; - \item l'argument optionnel (par défaut \Cle{3}) correspond à quant à lui à l'arrondi. -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -% X -> N(550,30) -$P(Y\geqslant600) \approx \numPnormC[4]{550}{30}{600}{*}$. -$P(500\leqslant Y\leqslant600) \approx \numPnormC[4]{550}{30}{500}{600}$. -% X -> B(100,0.02) -$P(X=10) \approx \numPbinomP[7]{100}{0.02}{10} \approx \numPbinomP*[7]{100}{0.02}{10}$. -$P(15\leqslant X\leqslant25) \approx \numPbinomC[10]{100}{0.02}{15}{25} \approx \numPbinomC*[10]{100}{0.02}{15}{25}$. -% H -> H(50,10,5) -$P(W=4) \approx \numPhypergeomP[5]{50}{10}{5}{4}$. -$P(1\leqslant W\leqslant3) \approx \numPhypergeomC[4]{50}{10}{5}{1}{3}$. -% Z-> E(0,001)$ : -$P(Z\geqslant400) \approx \numPexpoC{0.001}{400}{*}$. -$P(300\leqslant Z\leqslant750) \approx \numPexpoC{0.001}{300}{750}$. -% T -> P(5) -$P(T=3) \approx \numPpoissP{5}{3}$. -$P(T\geqslant2) \approx \numPpoissC[4]{5}{2}{*}$. -\end{codetex} - -\begin{codesortie} -$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,;\,30)$ : - -$P(Y\geqslant600) \approx \numPnormC[4]{550}{30}{600}{*}$. - -$P(500\leqslant Y\leqslant600) \approx \numPnormC[4]{550}{30}{500}{600}$. - -\medskip - -$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,;\,0,02)$ : - -$P(X=10) \approx \numPbinomP[7]{100}{0.02}{10} \approx \numPbinomP*[7]{100}{0.02}{10}$. - -$P(15\leqslant X\leqslant25) \approx \numPbinomC[10]{100}{0.02}{15}{25} \approx \numPbinomC*[10]{100}{0.02}{15}{25}$. - -\medskip - -$\bullet~~~~W \hookrightarrow \mathcal{H}(50\,;\,10\,;\,5)$ : - -$P(W=4) \approx \numPhypergeomP[5]{50}{10}{5}{4}$. - -$P(1\leqslant W\leqslant3) \approx \numPhypergeomC[4]{50}{10}{5}{1}{3}$. - -\medskip - -$\bullet~~~~Z \hookrightarrow \mathcal{E}_{0,001}$ : - -$P(Z\geqslant400) \approx \numPexpoC{0.001}{400}{*}$. - -$P(300\leqslant Z\leqslant750) \approx \numPexpoC{0.001}{300}{750}$. - -\medskip - -$\bullet~~~~T \hookrightarrow \mathcal{P}_5$ : - -$P(T=3) \approx \numPpoissP{5}{3}$. - -$P(T\geqslant2) \approx \numPpoissC[4]{5}{2}{*}$. -\end{codesortie} - -\begin{codeinfo} -\hfill~\includegraphics[height=3cm]{./graphics/pl-doc-probas_a}~~\includegraphics[height=3cm]{./graphics/pl-doc-probas_c}~~\includegraphics[height=3cm]{./graphics/pl-doc-probas_e}~~\includegraphics[height=3cm]{./graphics/pl-doc-probas_f}\hfill~ -\end{codeinfo} - -\newpage - -\section{Arbres de probabilités \og classiques \fg}\label{arbresprobas} - -\subsection{Introduction} - -\begin{codeidee} -L'idée est de proposer des commandes pour créer des arbres de probabilités classiques (et homogènes), en \TikZ, de format : - -\begin{itemize} - \item $2\times2$ ou $2\times3$ ; - \item $3\times2$ ou $3\times3$. -\end{itemize} - -Les (deux) commandes sont donc liées à un environnement \ctex{tikzpicture}, et elles créent les nœuds de l'arbre, pour exploitation ultérieure éventuelle. -\end{codeidee} - -\begin{codetex}[listing only] -%commande simple pour tracé de l'arbre -\PLarbre[<options>]{<donnees>} - -%environnement pour tracé et exploitation éventuelle -\begin{PLenvarbre}[<options>]{<donnees>} - <code tikz supplémentaire> -\end{PLenvarbre} -\end{codetex} - -\subsection{Options et arguments} - -\begin{codeinfo} -Les \Cle{donnees} seront à préciser sous forme \ctex{<sommet1>/<proba1>/<position1>,<sommet2>/<proba2>/<position2>,...} avec comme \og sens de lecture \fg{} de la gauche vers la droite puis du haut vers le bas (on balaye les \textit{sous-arbres}), avec comme possibilités : - -\begin{itemize} - \item une donnée \Cle{proba} peut être laissée vide ; - \item une donnée \Cle{position} peut valoir \Cle{above} (au-dessus), \Cle{below} (en-dessous) ou être laissée \Cle{vide} (sur). -\end{itemize} -\end{codeinfo} - -\begin{codecles} -Quelques \Cle{Clés} (communes) pour les deux commandes : - -\begin{itemize} - \item la clé \Cle{unite} pour préciser l'unité de l'environnement \TikZ{} ; \hfill~défaut \Cle{1cm} - \item la clé \Cle{espniv} pour l'espace (H) entre les étages ; \hfill~défaut \Cle{3.25} - \item la clé \Cle{espfeuille} pour l'espace (V) entre les feuilles ; \hfill~défaut \Cle{1} - \item la clé \Cle{type} pour le format, parmi \Cle{2x2} ou \Cle{2x3} ou \Cle{3x2} ou \Cle{3x3} ; \hfill~défaut \Cle{2x2} - \item la clé \Cle{police} pour la police des nœuds ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize} - \item la clé \Cle{policeprobas} pour la police des probas ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}small} - \item le booléen \Cle{inclineprobas} pour incliner les probas ; \hfill~défaut \Cle{true} - \item le booléen \Cle{fleche} pour afficher une flèche sur les branches ; \hfill~défaut \Cle{false} - \item la clé \Cle{styletrait} pour les branches, en langage \TikZ{} ; \hfill~défaut \Cle{vide} - \item la clé \Cle{eptrait} pour l'épaisseur des branches, en langage \TikZ{} ; \hfill~défaut \Cle{semithick} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -\def\ArbreDeuxDeux{ - $A$/\num{0.5}/, - $B$/\num{0.4}/, - $\overline{B}$/.../, - $\overline{A}$/.../, - $B$/.../, - $\overline{B}$/$\frac{1}{3}$/ -} - -\PLarbre{\ArbreDeuxDeux} - -%des éléménts, en gris, ont été rajoutés pour illustrer certaines options -\end{codetex} - -\begin{codesortie} -\begin{PLenvarbre}{$A$/\num{0.5}/,$B$/\num{0.4}/,$\overline{B}$/.../,$\overline{A}$/.../,$B$/.../,$\overline{B}$/$\frac{1}{3}$/} - \draw[lightgray] (R) node[left,font=\ttfamily\small] {(R)} ; - \draw[lightgray] (A11) node[below,font=\ttfamily\small] {(A11)} ; - \draw[lightgray] (A12) node[below,font=\ttfamily\small] {(A12)} ; - \draw[lightgray] (A21) node[below,font=\ttfamily\small] {(A21)} ; - \draw[lightgray] (A22) node[below,font=\ttfamily\small] {(A22)} ; - \draw[lightgray] (A23) node[below,font=\ttfamily\small] {(A23)} ; - \draw[lightgray] (A24) node[below,font=\ttfamily\small] {(A24)} ; - \draw[lightgray,<->] (0,-4) -- (3.25,-4) node[midway,below,font=\ttfamily\small] {espniv} ; - \draw[lightgray,<->] (3.25,-4) -- (6.5,-4) node[midway,below,font=\ttfamily\small] {espniv} ; - \draw[lightgray,<->] (7,0) -- (7,-1) node[midway,right,font=\ttfamily\small] {espfeuille} ; - \draw[lightgray,<->] (7,-1) -- (7,-2) node[midway,right,font=\ttfamily\small] {espfeuille} ; - \draw[lightgray,<->] (7,-2) -- (7,-3) node[midway,right,font=\ttfamily\small] {espfeuille} ; -\end{PLenvarbre} -\end{codesortie} - -\begin{codeinfo} -Les nœuds crées par les commandes sont : - -\begin{itemize} - \item \ctex{R} pour la racine ; - \item \ctex{A1x} pour les nœuds du 1\up{er} niveau (de haut en bas) ; - \item \ctex{A2x} pour les nœuds du 2\up{d} niveau (de haut en bas). -\end{itemize} -\end{codeinfo} - -\subsection{Exemples complémentaires} - -\begin{codetex}[listing only] -\def\ArbreTroisDeux{ - $A_1$/\num{0.5}/above, - $B$/\num{0.4}/above, - $\overline{B}$/.../below, - $A_2$/.../above, - $B$/.../above, - $\overline{B}$/$\frac{1}{3}$/below, - $A_3$/.../below, - $B$/.../above, - $\overline{B}$/$\frac{4}{15}$/below -} - -\begin{PLenvarbre}[type=3x2,fleche,espniv=5,espfeuille=1.25]{\ArbreTroisDeux} - \draw[ForestGreen,->] (A24)--($(A24)+(2.5,0)$) node[right,font=\sffamily] {code tikz rajouté} ; -\end{PLenvarbre} -\end{codetex} - -\begin{codesortie} -\begin{PLenvarbre}[type=3x2,fleche,espniv=5,espfeuille=1.25]{$A_1$/\num{0.5}/above,$B$/\num{0.4}/above,$\overline{B}$/.../below,$A_2$/.../above,$B$/.../above,$\overline{B}$/$\frac{1}{3}$/below,$A_3$/.../below,$B$/.../above,$\overline{B}$/$\frac{4}{15}$/below} - \draw[ForestGreen,->] (A24)--($(A24)+(2.5,0)$) node[right,font=\sffamily] {code tikz rajouté} ; -\end{PLenvarbre} -\end{codesortie} - -\begin{codetex}[listing only] -\def\ArbreDeuxTrois{ - $A$/\num{0.05}/above, - $B_1$/\num{0.4}/above, - $B_2$/\num{0.35}/, - $B_3$//below, - $\overline{A}$/.../below, - $B_1$/$\frac{2}{15}$/above, - $B_2$/.../, - $B_3$/$\frac{1}{3}$/below -} -\PLarbre[type=2x3,inclineprobas=false,espfeuille=1.15]{\ArbreDeuxTrois} - -\def\ArbreTroisTrois{ - $A_1$/\num{0.05}/, - $B_1$/{1/3}/, - $B_2$/{1/3}/, - $B_3$/{1/3}/, - $A_2$/\num{0.80}/, - $B_1$/{1/3}/, - $B_2$/{1/3}/, - $B_3$/{1/3}/, - $A_3$/\num{0.15}/, - $B_1$/{1/3}/, - $B_2$/{1/3}/, - $B_3$/{1/3}/ -} - -\PLarbre[type=3x3,styletrait={densely dashed},espfeuille=0.7,policeprobas=\scriptsize,police=\small]{\ArbreTroisTrois} -\end{codetex} - -\begin{codesortie} -\PLarbre[type=2x3,inclineprobas=false,espfeuille=1.15]{$A$/\num{0.05}/above,$B_1$/\num{0.4}/above,$B_2$/\num{0.35}/,$B_3$//below,$\overline{A}$/.../below,$B_1$/$\frac{2}{15}$/above,$B_2$/.../,$B_3$/$\frac{1}{3}$/below} -~~ -\PLarbre[type=3x3,styletrait={densely dashed},espfeuille=0.7,policeprobas=\scriptsize,police=\small]{$A_1$/\num{0.05}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,$A_2$/\num{0.80}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,$A_3$/\num{0.15}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/} -\end{codesortie} - -\newpage - -\section{Petits schémas pour des probabilités continues}\label{schemasprobas} - -\subsection{Idée} - -\begin{codeidee} -L'idée est de proposer des commandes pour illustrer, sous forme de schémas en \TikZ, des probabilités avec des lois continues (normales et exponentielles). - -\smallskip - -Ces \og schémas \fg{} peuvent être insérés en tant que graphique explicatif, ou bien en tant que petite illustration rapide ! -\end{codeidee} - -\begin{codetex}[listing only] -\LoiNormaleGraphe[options]<options tikz>{m}{s}{a}{b} - -\LoiExpoGraphe[options]<options tikz>{l}{a}{b} -\end{codetex} - -\begin{codesortie} -\hfill\LoiNormaleGraphe{100}{20}{80}{120}\hspace{3cm}\LoiExpoGraphe{0.001}{250}{1500}\hfill~ -\end{codesortie} - -\begin{codecles} -Les probabilités \textit{illustrables} sont donc des probabilités \textbf{C}umulées ($P(a\leqslant X\leqslant b)$). - -\smallskip - -On peut utiliser \ctex{*} comme borne ($a$ ou $b$), pour les probabilités du type $P(X\leqslant b)$ et $P(X \geqslant a)$. -\end{codecles} - -\subsection{Commandes et options} - -\begin{codecles} -Quelques \Cle{Clés} sont disponibles pour ces commandes : - -\begin{itemize} - \item la clé \Cle{CouleurAire} pour l'aire sous la courbe ; \hfill{}défaut \Cle{LightGray} - \item la clé \Cle{CouleurCourbe} pour la courbe ; \hfill{}défaut \Cle{red} - \item la clé \Cle{Largeur} qui sera la largeur (en cm) du graphique ; \hfill{}défaut \Cle{2} - \item la clé \Cle{Hauteur} qui sera la hauteur (en cm) du graphique ; \hfill{}défaut \Cle{1} - \item un booléen \Cle{AfficheM} qui affiche la moyenne ; \hfill{}défaut \Cle{true} - \item un booléen \Cle{AfficheCadre} qui affiche un cadre pour délimiter le schéma. \hfill{}défaut \Cle{true} -\end{itemize} -\end{codecles} - -\begin{codeinfo} -Les commandes sont donc des environnements \TikZ, sans possibilité de \og rajouter \fg{} des éléments. Ces petis \textit{schémas} sont donc vraiment dédiés à \textit{montrer} rapidement une probabilité continue, sans fioriture. -\end{codeinfo} - -\begin{codetex} -Avec centrage vertical sur l'axe des abscisses : -\LoiNormaleGraphe[AfficheM=false,CouleurCourbe=Blue,CouleurAire=LightBlue]<baseline=0pt>{1000}{100}{950}{*} -\end{codetex} - -\begin{codetex} -Avec quelques modifications : - -\LoiNormaleGraphe[Largeur=4,Hauteur=2]{150}{12.5}{122}{160} - -\medskip - -Avec centrage vertical : -\LoiNormaleGraphe[Largeur=5,Hauteur=2.5]<baseline=(current bounding box.center)>{200}{5}{204}{*} - -\medskip - -Avec centrage vertical sur l'axe des abscisses : -\LoiExpoGraphe[AfficheM=false,CouleurCourbe=Blue,CouleurAire=LightBlue]<baseline=0pt>{0.05}{*}{32} - -\medskip - -\LoiExpoGraphe[Largeur=4,Hauteur=2]{0.00025}{5000}{*} -\end{codetex} - -\subsection{Remarques et compléments} - -\begin{codeinfo} -Pour le moment, seules les lois (continues) exponentielles et normales sont disponibles, peut-être que d'autres lois seront ajoutées, mais il ne me semble pas très pertinent de proposer des schémas similaires pour des lois discrètes, qui ont des \textit{représentations} assez variables\ldots -\end{codeinfo} - -\newpage - -\part{Outils pour l'arithmétique} - -\section{Conversions binaire/hexadécimal/décimal}\label{conversions} - -\subsection{Idée} - -\begin{codeidee} -L'idée est de \textit{compléter} les possibilités offertes par le package \ctex{xintbinhex}, en mettant en forme quelques conversions : - -\begin{itemize} - \item décimal en binaire avec blocs de 4 chiffres en sortie ; - \item conversion binaire ou hexadécimal en décimal avec écriture polynomiale. -\end{itemize} -\end{codeidee} - -\begin{codeinfo} -Le package \ctex{xintbinhex} est la base de ces macros, puisqu'il permet de faire des conversions directes ! - -\smallskip - -Les macros présentées ici ne font que les intégrer dans un environnement adapté à une correction ou une présentation ! -\end{codeinfo} - -\begin{codetex}[listing only] -\xintDecToHex{100} -\xintDecToBin{51} -\xintHexToDec{A4C} -\xintBinToDec{110011} -\xintBinToHex{11111111} -\xintHexToBin{ACDC} -\xintCHexToBin{3F} -\end{codetex} - -\begin{codesortie} -\xintDecToHex{100} - -\xintDecToBin{51} - -\xintHexToDec{A4C} - -\xintBinToDec{110011} - -\xintBinToHex{11111111} - -\xintHexToBin{ACDC} - -\xintCHexToBin{3F} -\end{codesortie} - -\subsection{Conversion décimal vers binaire} - -\begin{codetex}[listing only] -\PLconvdecbin(*)[<clés>]{<nombre>} -\end{codetex} - -\begin{codecles} -Concernant la commande en elle même, peu de paramétrage : - -\begin{itemize} - \item la version \textit{étoilée} qui permet de ne pas afficher de zéros avant pour \og compléter \fg{} ; - \item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true} - \item l'argument, mandataire, est le nombre entier à convertir. -\end{itemize} - -Le formatage est géré par \ctex{sinuitx}, le mieux est donc de positionner la commande dans un environnement mathématique. - -\smallskip - -Les nombres écrits en binaire sont, par défaut, présentés en bloc(s) de 4 chiffres. -\end{codecles} - -\begin{codetex}[listing only] -% Conversion avec affichage de la base et par bloc de 4 -$\PLconvdecbin{415}$ -% Conversion avec affichage de la base et sans forcément des blocs de 4 -$\PLconvdecbin*{415}$ -% Conversion sans affichage de la base et par bloc de 4 -$\PLconvdecbin[affbase=false]{415}$ -% Conversion sans affichage de la base et sans forcément des blocs de 4 -$\PLconvdecbin*[affbase=false]{415}$ -\end{codetex} - -\begin{codesortie} -$\PLconvdecbin{415}$ - -\smallskip - -$\PLconvdecbin*{415}$ - -\smallskip - -$\PLconvdecbin[affbase=false]{415}$ - -\smallskip - -$\PLconvdecbin*[affbase=false]{415}$ -\end{codesortie} - -\subsection{Conversion binaire vers hexadécimal} - -\begin{codeinfo} -L'idée est ici de présenter la conversion, grâce à la conversion \og directe \fg{} par blocs de 4 chiffres : - -\begin{itemize} - \item la macro rajoute éventuellement les zéros pour compléter ; - \item elle découpe par blocs de 4 chiffres binaires ; - \item elle présente la conversion de chacun des blocs de 4 chiffres binaires ; - \item elle affiche la conversion en binaire. -\end{itemize} -\end{codeinfo} - -\begin{codetex}[listing only] -\PLconvbinhex[<clés>]{<nombre>} -\end{codetex} - -\begin{codecles} -Quelques \Cle{clés} sont disponibles pour cette commande : - -\begin{itemize} - \item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true} - \item le booléen \Cle{details} qui permet d'afficher ou le détail par bloc de 4. \hfill{}défaut \Cle{true} - %\item la clé \Cle{trait} qui permet de modifier l'épaisseur du crochet. \hfill{}défaut \Cle{0.5pt} -\end{itemize} - -Le formatage est géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique. -\end{codecles} - -\begin{codetex}[listing only] -%conversion avec détails et affichage de la base -$\PLconvbinhex{110011111}$ -%conversion sans détails et affichage de la base -$\PLconvbinhex[details=false]{110011111}$ -%conversion sans détails et sans affichage de la base -$\PLconvbinhex[affbase=false,details=false]{110011111}$ -\end{codetex} - -\begin{codesortie} -$\PLconvbinhex{110011111}$ - -$\PLconvbinhex[details=false]{110011111}$ - -$\PLconvbinhex[affbase=false,details=false]{110011111}$ -\end{codesortie} - -\pagebreak - -\subsection{Conversion binaire ou hexadécimal en décimal} - -\begin{codeinfo} -L'idée est ici de présenter la conversion, grâce à l'écriture polynômiale : - -\begin{itemize} - \item écrit la somme des puissances ; - \item convertir si besoin les \textit{chiffres} hexadécimal ; - \item peut ne pas afficher les monômes de coefficient 0. -\end{itemize} -\end{codeinfo} - -\begin{codetex}[listing only] -\PLconvtodec[<clés>]{<nombre>} -\end{codetex} - -\begin{codecles} -Quelques \Cle{clés} sont disponibles pour cette commande : - -\begin{itemize} - \item la clé \Cle{basedep} qui est la base de départ (2 ou 16 !) ; \hfill{}défaut \Cle{2} - \item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true} - \item le booléen \Cle{details} qui permet d'afficher ou le détail par bloc de 4 ; \hfill{}défaut \Cle{true} - \item le booléen \Cle{zeros} qui affiche les chiffres 0 dans la somme. \hfill{}défaut \Cle{true} -\end{itemize} - -Le formatage est toujours géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique. -\end{codecles} - -\begin{codetex}[listing only] -%conversion 16->10 avec détails et affichage de la base et zéros -$\PLconvtodec[basedep=16]{19F}$ -%conversion 2->10 avec détails et affichage de la base et zéros -$\PLconvtodec{110011}$ -%conversion 2->10 avec détails et affichage de la base et sans zéros -$\PLconvtodec[zeros=false]{110011}$ -%conversion 16->10 sans détails et affichage de la base et avec zéros -$\PLconvtodec[basedep=16,details=false]{AC0DC}$ -%conversion 16->10 avec détails et sans affichage de la base et sans zéros -$\PLconvtodec[zeros=false,basedep=16]{AC0DC}$ -\end{codetex} - -\begin{codesortie} -$\PLconvtodec[basedep=16]{19F}$ - -$\PLconvtodec{110011}$ - -$\PLconvtodec[zeros=false]{110011}$ - -$\PLconvtodec[basedep=16,details=false]{AC0DC}$ - -$\PLconvtodec[zeros=false,basedep=16]{AC0DC}$ -\end{codesortie} - -\newpage - -\section{Conversion \og présentée \fg{} d'un nombre en décimal}\label{convrestes} - -\subsection{Idée} - -\begin{codeidee} -L'idée est de proposer une \og présentation \fg{} par divisions euclidiennes pour la conversion d'un entier donné en base 10 dans une base quelconque. - -\smallskip - -Les commandes de la section précédente donne \textit{juste} les résultats, dans cette section il y a en plus la présentation de la conversion. - -\smallskip - -La commande utilise -- par défaut -- du code \TikZ{} en mode \ctex{overlay}, donc on pourra déclarer -- si ce n'est pas fait -- dans le préambule, la commande qui suit. -\end{codeidee} - -\begin{codetex}[listing only] -... -\tikzstyle{every picture}+=[remember picture] -... -\end{codetex} - -\subsection{Code et clés} - -\begin{codetex}[] -%conversion basique -\PLconvDepuisDec{78}{2} -\end{codetex} - -\begin{codeinfo} -La \og tableau \fg, qui est géré par \ctex{array} est inséré dans un \ctex{ensuremath}, donc les \ctex{\$...\$} ne sont pas utiles. -\end{codeinfo} - -\begin{codetex}[listing only] -\PLconvDepuisDec[<options>]{<nombre en base 10>}{<base d'arrivée>} -\end{codetex} - -\begin{codecles} -Quelques options pour cette commande : - -\begin{itemize} - \item la clé \Cle{couleur} pour la couleur du \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{red} - \item la clé \Cle{decalh} pour gérer le décalage H du \og rectangle \fg{}, qui peut être donné soit sous la forme \Cle{esp} ou soit sous la forme \Cle{espgauche/espdroite}; \hfill{}défaut \Cle{2pt} - \item la clé \Cle{decalv} pour le décalage vertical du \og rectangle \fg{} ; \hfill{}défaut \Cle{3pt} - \item la clé \Cle{noeud} pour le préfixe du nœud du premier et du dernier reste (pour utilisation en \TikZ) ; \hfill{}défaut \Cle{EEE} - \item le booléen \Cle{rect} pour afficher ou non le \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{true} - \item le booléen \Cle{couleurres} pour afficher ou non la conversion en couleur (identique au rectangle). \hfill{}défaut \Cle{false} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -%conversion avec changement de couleur -\PLconvDepuisDec[couleur=DarkBlue]{45}{2} - -%conversion sans le rectangle -Par divisions euclidiennes successives, \PLconvDepuisDec[rect=false]{54}{3}. - -%conversion avec gestion du decalh pour le placement précis du rectangle -\PLconvDepuisDec[couleur=Goldenrod,decalh=6pt/2pt]{1012}{16} - -%conversion avec nœud personnalisé et réutilisation -\PLconvDepuisDec[couleur=ForestGreen,couleurres,noeud=TEST]{100}{9}. -\begin{tikzpicture} - \draw[overlay,ForestGreen,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ; -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\PLconvDepuisDec[couleur=DarkBlue]{45}{2} - -\medskip - -Par divisions euclidiennes successives, \PLconvDepuisDec[rect=false]{54}{3}. - -\medskip - -\PLconvDepuisDec[couleur=Goldenrod,decalh=6pt/2pt]{1012}{16} - -\medskip - -On obtient donc \PLconvDepuisDec[couleur=ForestGreen,couleurres,noeud=TEST]{100}{9}. -\begin{tikzpicture} - \draw[overlay,ForestGreen,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ; -\end{tikzpicture} - -\vspace{1.5cm} - -~ -\end{codesortie} - -\newpage - -\section{Algorithme d'Euclide pour le PGCD}\label{prespgcd} - -\subsection{Idée} - -\begin{codeidee} -L'idée est de proposer une \og présentation \fg{} de l'algorithme d'Euclide pour le calcul du PGCD de deux entiers. - -Le package \ctex{xintgcd} permet déjà de le faire, il s'agit ici de travailler sur la \textit{mise en forme} avec alignement des restes. -\end{codeidee} - -\begin{codetex}[listing only] -\PresentationPGCD[<options>]{a}{b} -\end{codetex} - -\begin{codetex}[listing only] -... -\tikzstyle{every picture}+=[remember picture] -... -\PresentationPGCD{150}{27} -\end{codetex} - -\begin{codesortie} -\PresentationPGCD{150}{27} -\end{codesortie} - -\begin{codeattention} -La mise en valeur du dernier reste non nul est géré par du code \TikZ, en mode \ctex{overlay}, donc il faut bien penser à déclarer dans le préambule : - -\hspace{5mm}\ctex{\textbackslash{}tikzstyle\{every picture\}+=[remember picture]} -\end{codeattention} - -\subsection{Options et clés} - -\begin{codecles} -Quelques options disponibles pour cette commande : - -\begin{itemize} - \item la clé \Cle{Couleur} qui correspond à la couleur pour la mise en valeur ; \hfill{}défaut \Cle{red} - \item la clé \Cle{DecalRect} qui correspond à l'écartement du rectangle de mise en valeur ; \hfill{}défaut \Cle{2pt} - \item le booléen \Cle{Rectangle} qui gère l'affichage ou non du rectangle de mise ne valeur ; \hfill{}défaut \Cle{true} - \item la clé \Cle{Noeud} qui gère le préfixe du nom du nœud \TikZ{} du rectangle (pour exploitation ultérieure) ; \hfill{}défaut \Cle{FFF} - \item le booléen \Cle{CouleurResultat} pour mettre ou non en couleur de PGCD ; \hfill{}défaut \Cle{false} - \item le booléen \Cle{AfficheConclusion} pour afficher ou non la conclusion ; \hfill{}défaut \Cle{true} - \item le booléen \Cle{AfficheDelimiteurs} pour afficher ou non les délimiteurs (accolade gauche et trait droit). \hfill{}défaut \Cle{true} -\end{itemize} - -\medskip - -Le rectangle de mise en valeur est donc un nœud \TikZ{} qui sera nommé, par défaut \ctex{FFF1}. - -\medskip - -La présentation est dans un environnement \ctex{ensuremath} donc les \ctex{\$...\$} ne sont pas indispensables. -\end{codecles} - -\begin{codetex}[] -\PresentationPGCD[CouleurResultat]{150}{27} -\end{codetex} - -\pagebreak - -\begin{codetex}[] -\PresentationPGCD[CouleurResultat,Couleur=ForestGreen]{1250}{450}. - -\PresentationPGCD[CouleurResultat,Couleur=DarkBlue]{13500}{2500}. - -\PresentationPGCD[Rectangle=false]{420}{540}. - -\medskip - -D'après l'algorithme d'Euclide, on a $\left| \PresentationPGCD[Couleur=LightSkyBlue,AfficheConclusion=false,AfficheDelimiteurs=false]{123456789}{9876} \right.$ -\begin{tikzpicture} - \draw[overlay,LightSkyBlue,thick,<-] (FFF1.east) to[bend right] ++ (2cm,0.75cm) node[right] {dernier reste non nul} ; -\end{tikzpicture} -\end{codetex} - -\subsection{Compléments} - -\begin{codeinfo} -La présentation des divisions euclidiennes est gérée par un tableau du type \ctex{array}, avec alignement vertical de symboles \ctex{=} et \ctex{+}. - -Par défaut, les délimiteurs choisis sont donc l'accolade gauche et le trait droit, mais la clé booléenne \Cle{AfficheDelimiteurs=false} permet de choisir des délimiteurs différents. -\end{codeinfo} - -\begin{codetex}[] -$\left[ \PresentationPGCD[AfficheConclusion=false,AfficheDelimiteurs=false]{1234}{5} \right]$ -\end{codetex} - -\newpage - -\part{Outils divers et variés} - -\section{Fractions, ensembles} - -\subsection{Fractions}\label{convfrac} - -\begin{codeidee} -L'idée est d'obtenir une commande pour \textit{simplifier} un calcul sous forme de fraction irréductible. -\end{codeidee} - -\begin{codetex}[listing only] -\convertfraction[<option>]{<argument>} -\end{codetex} - -\begin{codecles} -Peu d'options pour ces commandes : - -\begin{itemize} -\item le premier argument, optionnel, permet de spécifier le mode de sortie de la fraction \textsf{[t]} pour \textsf{tfrac} et \textsf{[d]} pour \textsf{dfrac} ; -\item le second, mandataire, est le \textsf{calcul} ou la \textsf{division} à convertir. -\end{itemize} - -À noter que la macro est dans un bloc \ctex{ensuremath} donc les \ctex{\$...\$} ne sont pas nécessaires. -\end{codecles} - -\begin{codetex}[listing only] -\convertfraction{111/2145} -\convertfraction{111/3} -$\frac{111}{2145}=\convertfraction{111/2145}$ -$\frac{3}{15}=\convertfraction[]{3/15}$ -$\tfrac{3}{15}=\convertfraction[t]{3/15}$ %formatage en \tfrac -$\dfrac{3}{15}=\convertfraction[d]{3/15}$ %formatage en \dfrac -$\dfrac{0,42}{0,015}=\convertfraction[d]{0.42/0.015}$ -$\dfrac{0,41}{0,015}=\convertfraction[d]{0.41/0.015}$ -$\dfrac{1}{7}+\dfrac{3}{8}=\convertfraction[d]{1/7+3/8}$ -$\convertfraction[d]{1+1/2}$ -$\convertfraction{0.1/0.7+30/80}$ -\end{codetex} - -\begin{codesortie} -\begin{multicols}{2} -\convertfraction{111/2145} - -\smallskip - -\convertfraction{111/3} - -\smallskip - -$\frac{111}{2145}=\convertfraction{111/2145}$ - -\smallskip - -$\frac{3}{15}=\convertfraction[]{3/15}$ - -\smallskip - -$\tfrac{3}{15}=\convertfraction[t]{3/15}$ - -\smallskip - -$\dfrac{3}{15}=\convertfraction[d]{3/15}$ - -\smallskip - -$\dfrac{0,42}{0,015}=\convertfraction[d]{0.42/0.015}$ - -\smallskip - -$\dfrac{0,41}{0,015}=\convertfraction[d]{0.41/0.015}$ - -\smallskip - -$\dfrac{1}{7}+\dfrac{3}{8}=\convertfraction[d]{1/7+3/8}$ - -\smallskip - -$\convertfraction[d]{1+1/2}$ - -\smallskip - -$\convertfraction{0.1/0.7+30/80}$ -\end{multicols} - -~ -\end{codesortie} - -\begin{codeinfo} -A priori le package \ctex{xint} permet de s'en sortir pour des calculs \og simples \fg, je ne garantis pas que tout calcul ou toute division donne un résultat \textit{satisfaisant} ! -\end{codeinfo} - -\pagebreak - -\subsection{Ensembles}\label{ensembles} - -\begin{codeidee} -L'idée est d'obtenir une commande pour simplifier l'écriture d'un ensemble d'éléments, en laissant gérer les espaces. - -Les délimiteurs de l'ensemble créé sont toujours \textsf{\{~~\}}. -\end{codeidee} - -\begin{codetex}[listing only] -\ensPL[<clés>]{<liste>} -\end{codetex} - -\begin{codecles} -Peu d'options pour ces commandes : - -\begin{itemize} -\item le premier argument, optionnel, permet de spécifier les \Cle{Clés} : -\begin{itemize} - \item clé \Cle{sep} qui correspond au délimiteur des éléments de l'ensemble ; \hfill{}défaut \Cle{;} - \item clé \Cle{option} qui est un code (par exemple \textsf{strut}\dots) inséré avant les éléments ;\hfill{}défaut \Cle{vide} - \item un booléen \Cle{mathpunct} qui permet de préciser si on utilise l'espacement mathématique \textsf{mathpunct};\hfill{}défaut \Cle{true} -\end{itemize} -\item le second, mandataire, est la \textsf{liste} des éléments, séparés par \textsf{/}. -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -$\ensPL{a/b/c/d/e}$ -$\ensPL[mathpunct=false]{a/b/c/d/e}$ -$\ensPL[sep={,}]{a/b/c/d/e}$ -$\ensPL[option={\strut}]{a/b/c/d/e}$ % \strut pour "augmenter" un peu la hauteur des {} -$\ensPL{ \frac{1}{1+\frac{1}{3}} / b / c / d / \frac{1}{2} }$ -\end{codetex} - -\begin{codesortie} -$\ensPL{a/b/c/d/e}$ - -\smallskip - -$\ensPL[mathpunct=false]{a/b/c/d/e}$ - -\smallskip - -$\ensPL[sep={,}]{a/b/c/d/e}$ - -\smallskip - -$\ensPL[option={\strut}]{a/b/c/d/e}$ - -\smallskip - -$\ensPL{ \displaystyle\frac{1}{1+\frac{1}{3}} / b / c / d / \displaystyle\frac{1}{2} }$ -\end{codesortie} - -\begin{codeinfo} -Attention cependant au comportement de la commande avec des éléments en mode \textsf{mathématique}, ceux-ci peuvent générer une erreur si \textsf{displaystyle} n'est pas utilisé\ldots -\end{codeinfo} - -\newpage - -\section{Petits schémas pour le signe d'une fonction affine ou d'un trinôme}\label{aidesigne} - -\subsection{Idée} - -\begin{codeidee} -L'idée est d'obtenir une commande pour tracer (en \TikZ) un petit schéma pour \textit{visualiser} le signe d'une fonction affine ou d'un trinôme. - -Le code est très largement inspiré de celui du package \ctex{tnsana} même si la philosophie est légèrement différente. - -\smallskip - -Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur définir et créer son environnement \TikZ, et d'insérer la commande \ctex{aidesignePL} pour afficher le schéma. -\end{codeidee} - -\begin{codetex}[tikz lower] -%code tikz -\aidesignePL -\end{codetex} - -\subsection{Commandes} - -\begin{codetex}[listing only] -... -\begin{tikzpicture}[<options>] - ... - \aidesignePL[<clés>] - ... -\end{tikzpicture} -\end{codetex} - -\begin{codetex}[listing only] -... {\tikz[<options>] \aidesignePL[<clés>]}... -\end{codetex} - -\begin{codecles} -Plusieurs \Cle{Clés} sont disponibles pour cette commande : - -\begin{itemize} - \item la clé \Cle{code} qui permet de définir le type d'expression (voir en-dessous) ;\hfill{}défaut \Cle{da+} - \item la clé \Cle{couleur} qui donne la couleur de la représentation ;\hfill{}défaut \Cle{red} - \item la clé \Cle{racines} qui définit la ou les racines ;\hfill{}défaut \Cle{2} - \item la clé \Cle{largeur} qui est la largeur du schéma ;\hfill{}défaut \Cle{2} - \item la clé \Cle{hauteur} qui est la hauteur du schéma ;\hfill{}défaut \Cle{1} - \item un booléen \Cle{cadre} qui affiche un cadre autour du schéma.\hfill{}défaut \Cle{true} -\end{itemize} -\end{codecles} - -\begin{codecles} -Pour la clé \Cle{code}, il est construit par le type (\textsf{a} pour affine ou \textsf{p} comme parabole) puis les éléments caractéristiques (\textsf{a+} pour $a>0$, \textsf{d0} pour $\Delta=0$, etc) : - -\begin{itemize} - \item \Cle{code=da+} := une droite croissante ; - \item \Cle{code=da-} := une droite décroissante ; - \item \Cle{code=pa+d+} := une parabole \textit{souriante} avec deux racines ; - \item etc -\end{itemize} -\end{codecles} - -\pagebreak - -\begin{codetex}[listing only] -\begin{center} - \begin{tikzpicture} - \aidesignePL[code=da+,racines=-4] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=da-,racines={h},couleur=blue,largeur=3,cadre=false] - \end{tikzpicture} -\end{center} -% -\begin{center} - \begin{tikzpicture} - \aidesignePL[code=pa+d+,racines={1/2},couleur=orange] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=pa+d-,couleur=ForestGreen] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=pa+d0,racines={5},couleur=purple] - \end{tikzpicture} -\end{center} -% -\begin{center} - \begin{tikzpicture} - \aidesignePL[code=pa-d+,racines={-3/0},couleur=yellow] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=pa-d-,couleur=cyan] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=pa-d0,racines={-1},couleur=magenta] - \end{tikzpicture} -\end{center} -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture} - \aidesignePL[code=da+,racines=-4] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=da-,racines={h},couleur=blue,largeur=3,cadre=false] - \end{tikzpicture} -\end{center} -% -\begin{center} - \begin{tikzpicture} - \aidesignePL[code=pa+d+,racines={1/2},couleur=orange] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=pa+d-,couleur=ForestGreen] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=pa+d0,racines={5},couleur=purple] - \end{tikzpicture} -\end{center} -% -\begin{center} - \begin{tikzpicture} - \aidesignePL[code=pa-d+,racines={-3/0},couleur=yellow] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=pa-d-,couleur=cyan] - \end{tikzpicture} - ~~~~ - \begin{tikzpicture} - \aidesignePL[code=pa-d0,racines={-1},couleur=magenta] - \end{tikzpicture} -\end{center} -\end{codesortie} - -\begin{codetex}[tikz lower] -%code tikz -\aidesignePL[largeur=3.5,hauteur=1.5,code=da-,racines=\tfrac{-b}{a},couleur=Plum] -\end{codetex} - -\subsection{Intégration avec tkz-tab} - -\begin{codeidee} -Ces schémas peuvent être de plus utilisés, via la commande \ctex{aidesignetkztabPL} pour illustrer les signes obtenus dans un tableau de signes présentés grâce au package \ctex{tkz-tab}. - -Pour des raisons internes, le fonctionnement de la commande \ctex{aidesignetkztabPL} est légèrement différent et, pour des raisons que j'ignore, le code est légèrement différent en \textit{interne} (avec une \textit{déconnexion} des caractères \textsf{:} et \textsf{\textbackslash}) pour que la librairie \TikZ{} \ctex{calc} puisse fonctionner (mystère pour le moment\ldots) -\end{codeidee} - -\begin{codetex}[listing only] -\begin{tikzpicture} - %commandes tkztab - \aidesignetkztabPL[<options>]{<numligne>}[<echelle>][<décalage horizontal>] -\end{tikzpicture} -\end{codetex} - -\begin{codecles} -Les \Cle{Clés} pour le premier argument optionnel sont les mêmes que pour la version \textit{initiale} de la commande précédente. - -En ce qui concerne les autres arguments : - -\begin{itemize} - \item le deuxième argument, mandataire, est le numéro de la ligne à côté de laquelle placer le schéma ; - \item le troisième argument, optionnel et valant \Cle{0.85} par défaut, est l'échelle à appliquer sur l'ensemble du schéma (à ajuster en fonction de la hauteur de la ligne) ; - \item le quatrième argument, optionnel et valant \Cle{1.5} par défait, est lié à l'écart horizontal entre le bord de la ligne du tableau et le schéma. -\end{itemize} - -À noter que si l'un des arguments optionnels (le n°3 et/ou le n°4) sont utilisés, il vaut mieux préciser les 2 ! -\end{codecles} - -\begin{codetex}[listing only] -\begin{center} - \begin{tikzpicture} - \tkzTabInit[]{$x$/1,$-2x+5$/1,$2x+4$/1,$p(x)$/1}{$-\infty$,$-2$,${2,5}$,$+\infty$} - \tkzTabLine{,+,t,+,z,-,} - \tkzTabLine{,-,z,+,t,+,} - \tkzTabLine{,-,z,+,z,-,} - \aidesignetkztabPL[code=da-,racines={2,5},couleur=blue]{1} - \aidesignetkztabPL[code=da+,racines={-2},couleur=purple]{2} - \aidesignetkztabPL[code=pa-d+,racines={-2/2,5},couleur=orange]{3}[0.85][2] - \end{tikzpicture} -\end{center} -\end{codetex} - -\begin{codesortie} -\begin{center} - \begin{tikzpicture} - \tkzTabInit[]{$x$/1,$-2x+5$/1,$2x+4$/1,$p(x)$/1}{$-\infty$,$-2$,${2,5}$,$+\infty$} - \tkzTabLine{,+,t,+,z,-,} - \tkzTabLine{,-,z,+,t,+,} - \tkzTabLine{,-,z,+,z,-,} - \aidesignetkztabPL[code=da-,racines={2,5},couleur=blue]{1} - \aidesignetkztabPL[code=da+,racines={-2},couleur=purple]{2} - \aidesignetkztabPL[code=pa-d+,racines={-2/2,5},couleur=orange]{3}[0.85][2] - \end{tikzpicture} -\end{center} -\end{codesortie} - -\newpage - -\section{Style \og main levée \fg{} en \TikZ}\label{mainlevee} - -\subsection{Idée} - -\begin{codeidee} -L'idée est de \textit{proposer} un style \textit{tout prêt} pour simuler un tracé, en \TikZ, à \og main levée \fg. - -Il s'agit d'un style \textit{basique} utilisant la librairie \ctex{decorations} avec \textsf{random steps}. -\end{codeidee} - -\begin{codetex}[listing only] -\tikzset{% - mainlevee/.style args={#1et#2}{decorate,decoration={random steps, segment length=#1,amplitude=#2}}, - mainlevee/.default={5mm et 0.6pt} -} -\end{codetex} - -\subsection{Utilisation basique} - -\begin{codeinfo} -Il s'agit ni plus ni moins d'un style \TikZ{} à intégrer dans les tracés et constructions \TikZ ! -\end{codeinfo} - -\begin{codecles} -Concernant le style en lui-même, deux paramètres peuvent être précisés via \Cle{mainlevee=\#1 et \#2} : - -\begin{itemize} - \item \Cle{\#1} correspond à l'option \textsf{segment length} (longueur des segments \textit{types}) ;\hfill{}défaut \Cle{5mm} - \item \Cle{\#2} correspond à l'option \textsf{amplitude} (amplitude maximale de la \textit{déformation}).\hfill{}défaut \Cle{0.6pt} -\end{itemize} - -Les valeurs \Cle{mainlevee=5mm et 0.6pt} donnent des résultats -- à mon sens -- satisfaisants, mais l'utilisateur pourra modifier à loisir ces paramètres ! -\end{codecles} - -\begin{codetex}[listing only] -%la grille a été rajoutée pour la sortie -\begin{tikzpicture} - \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; -\end{tikzpicture} - -\begin{tikzpicture} - \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; -\end{tikzpicture} - -\begin{tikzpicture} - \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\hfill~\begin{tikzpicture} - \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); - \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; -\end{tikzpicture} -\hspace{1.5cm} -\begin{tikzpicture} - \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); - \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; -\end{tikzpicture} -\hspace{1.5cm} -\begin{tikzpicture} - \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); - \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; -\end{tikzpicture} -\hfill~ -\end{codesortie} - -\newpage - -\section{Écriture d'un trinôme, trinôme aléatoire}\label{trinome} - - -\subsection{Idée} - -\begin{codeidee} -L'idée est de proposer une commande pour écrire, sous forme développée réduite, un trinôme en fonction de ses coefficients $a$, $b$ et $c$ (avec $a\neq0$), avec la gestion des coefficients nuls ou égaux à $\pm1$. - -\smallskip - -En combinant avec le package \ctex{xfp} et fonction de générateur d'entiers aléatoires, on peut de ce fait proposer une commande pour générer aléatoirement des trinômes à coefficients entiers (pour des fiches d'exercices par exemple). - -\smallskip - -L'affichage des monômes est géré par le package \ctex{siunitx} et le tout est dans un environnement \ctex{ensuremath}. -\end{codeidee} - -\begin{codetex}[listing only] -\EcritureTrinome[<options>]{a}{b}{c} -\end{codetex} - -\begin{codetex}[] -\EcritureTrinome{1}{7}{0}\\ -\EcritureTrinome{1.5}{7.3}{2.56}\\ -\EcritureTrinome{-1}{0}{12}\\ -\EcritureTrinome{-1}{-5}{0} -\end{codetex} - -\subsection{Clés et options} - -\begin{codecles} -Quelques clés et options sont disponibles : - -\begin{itemize} - \item la clé booléenne \Cle{Alea} pour autoriser les coefficients aléatoires (voir plus bas pour la syntaxe) ;\hfill{}défaut \Cle{false} - \item la clé booléenne \Cle{Anegatif} pour autoriser $a$ à être négatif.\hfill{}défaut \Cle{true} -\end{itemize} -\end{codecles} - -\begin{codeinfo} -La clé \Cle{Alea} va modifier la manière de saisir les coefficients, il suffira dans ce cas de préciser les bornes, sous la forme \ctex{valmin,valmax}, de chacun des coefficients. C'est ensuite le package \ctex{xfp} qui va se charger de générer les coefficients. -\end{codeinfo} - -\begin{codetex}[sidebyside] -Avec $a$ entre 1 et 5 (et signe aléatoire) puis $b$ entre $-2$ et 7 puis $c$ entre $-10$ et 20 : - -$f(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\ -$g(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\ -$h(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\ - -Avec $a$ entre 1 et 10 (forcément positif) puis $b$ entre $-2$ et 2 puis $c$ entre 0 et 4 : - -\EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}\\ -\EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}\\ -\EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4} -\end{codetex} - -\newpage - -\part{Jeux et récréations} - -\section{PixelART via un fichier csv, en \TikZ}\label{pixelart} - -\subsection{Introduction} - -\begin{codeidee} -L'idée est de \textit{proposer}, dans un environnement \TikZ, une commande permettant de générer des grilles PixelART. - -Les données sont \textit{lues} à partir d'un fichier \textsf{csv}, externe au fichier \textsf{tex} ou déclaré en interne grâce à l'environnement \ctex{filecontents}. -\end{codeidee} - -\begin{codeinfo} -Avant toute chose, quelques petites infos sur les données au format \textsf{csv}, surtout dans l'optique de sa lecture et de son traitement par \ctex{ProfLycee} : - -\begin{itemize} - \item le fichier de données \textsf{csv} doit être formaté avec le séparateur décimal \og , \fg ; - \item des cases vides seront codées par \og \texttt{-} \fg. -\end{itemize} - -Le fichier \textsf{csv} peut être déclaré directement dans le fichier \textsf{tex}, grâce à l'environnement \ctex{filecontents} (intégré en natif sur les dernières versions de \LaTeX) : - -\begin{Verbatim}[tabsize=2,fontsize=\scriptsize] -\begin{filecontents*}{<nomfichier>.csv} -A,B,C,D -A,B,D,C -B,A,C,D -B,A,D,C -\end{filecontents*} -\end{Verbatim} - -À la compilation, le fichier \textsf{<nomfichier>.csv} sera créé automatiquement, et l'option \Cle{[overwrite]} permet (logiquement) de propager les modifications au fichier \textsf{csv}. -\end{codeinfo} - -\subsection{Package csvsimple et option} - -\begin{codeinfo} -Le package \textit{central} est ici \ctex{csvsimple}, qui permet de lire et traiter le fichier \textsf{csv}. - -Il est \og disponible \fg{} en version \LaTeXe{} ou en version \LaTeXIII. Par défaut, \ctex{ProfLycee} le charge en version \LaTeXIII{}, mais une \Cle{option} est disponible pour une \textit{rétro-compatibilité} avec la version \LaTeXe. - -\smallskip - -L'option \Cle{csvii} permet de passer l'appel au package en version \LaTeXe. -\end{codeinfo} - -\begin{codetex}[listing only] -\usepackage{ProfLycee} %chargement du package version 3 -%qui charge : -%\RequirePackage{expl3} -%\RequirePackage[l3]{csvsimple} - -\usepackage[csvii]{ProfLycee} %chargement du package version 2 -%qui charge : -%\RequirePackage[legacy]{csvsimple} -\end{codetex} - -\subsection{Exemple simple, clés et options} - -\begin{codetex}[listing only] -%déclaration du fichier csv -\begin{filecontents*}[overwrite]{basique.csv} -A,B,C,D -A,B,D,C -B,A,D,C -C,A,B,D -\end{filecontents*} - -\begin{tikzpicture}%avec lettres - \PLpixelart[codes=ABCD,style=\large\sffamily]{basique.csv} -\end{tikzpicture} -\begin{tikzpicture}%avec chiffres - \PLpixelart[codes=ABCD,symboles={45,22,1,7},symb,style=\large\sffamily]{basique.csv} -\end{tikzpicture} -\begin{tikzpicture}%avec correction - \PLpixelart[codes=ABCD,couleurs={Black,Green,Yellow,Red},correction]{basique.csv} -\end{tikzpicture} -\begin{tikzpicture}%avec correction sans bordure - \PLpixelart[codes=ABCD,couleurs={Black,Green,Yellow,Red},correction,bordcases=false]{basique.csv} -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\begin{filecontents*}[overwrite]{basique.csv} -A,B,C,D -A,B,D,C -B,A,D,C -C,A,B,D -\end{filecontents*} - -\begin{center} - \begin{tblr}{colspec={*{4}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}} - \SetCell[c=4]{c} Notice & & & \\ - A & B & C & D \\ - 45 & 22 & 1 & 7 \\ - Noir & Vert & Jaune & Rouge \\ - \end{tblr} -\end{center} - -\hfill\begin{tikzpicture}[scale=0.9] - %avec lettres - \PLpixelart[codes=ABCD,style=\large\sffamily]{basique.csv} -\end{tikzpicture} -\begin{tikzpicture}[scale=0.9] - %avec chiffres - \PLpixelart[codes=ABCD,symboles={45,22,1,7},symb,style=\large\sffamily]{basique.csv} -\end{tikzpicture} -\begin{tikzpicture}[scale=0.9] - %avec correction - \PLpixelart[codes=ABCD,couleurs={Black,Green,Yellow,Red},correction]{basique.csv} -\end{tikzpicture} -\begin{tikzpicture}[scale=0.9] - %avec correction - \PLpixelart[codes=ABCD,couleurs={Black,Green,Yellow,Red},correction,bordcases=false]{basique.csv} -\end{tikzpicture} -\hfill~ -\end{codesortie} - -\begin{codeinfo} -La commande \ctex{PLpixelart} nécessite de connaître : - -\begin{itemize} - \item le fichier \textsf{csv} à traiter ; - \item la liste (en fait sous forme de chaîne) des codes utilisés dans le fichier \textsf{csv} (comme \ctex{234679} ou \ctex{ABCDJK}\ldots); - \item la liste des symboles (éventuellement !) à afficher dans les cases s'il y a ambiguïté, comme \ctex{25,44,12} ou \ctex{AA,AB,AC}; - \item la liste des couleurs (si la correction est demandée), dans le même ordre que la liste des caractères. -\end{itemize} -\end{codeinfo} - -\begin{codetex}[listing only] -%environnement tikz -\PLpixelart[<clés>]{<fichier>.csv} -\end{codetex} - -\begin{codecles} -Quelques \Cle{Clés} sont nécessaires au bon fonctionnement de la commande : - -\begin{itemize} - \item la clé \Cle{codes} contient la \textsf{chaîne} des codes \textit{simples} du fichier \textsf{csv} ; - \item la clé \Cle{couleurs} qui contient la \textsf{liste} des couleurs associées ; - \item la clé \Cle{symboles} qui contient la \textsf{liste éventuelles} des caractères alternatifs à afficher dans les cases ; - \item la clé booléenne \Cle{correction} qui permet de colorier le PixelART ;\hfill{}défaut \Cle{false} - \item la clé booléenne \Cle{symb} qui permet d'afficher les caractères \textit{alternatifs} ;\hfill{}défaut \Cle{false} - \item la clé booléenne \Cle{bordcases} qui permet d'afficher les bords des cases de la correction ;\hfill{}défaut \Cle{true} - \item la clé \Cle{style} qui permet de spécifier le style des caractères. \hfill{}défaut \Cle{scriptsize} -\end{itemize} -\end{codecles} - -\begin{codetex}[listing only] -%codes simples et sans ambiguïté -%une case vide sera codée par - - -\begin{filecontents*}[overwrite]{perroquet.csv} --,-,-,-,-,-,4,4,4,4,-,-,-,-,-,- --,-,-,-,4,4,1,1,1,1,4,4,-,-,-,- --,-,-,4,1,1,1,1,1,1,1,1,4,-,-,- --,-,4,1,1,1,1,1,1,1,1,1,1,4,-,- --,-,4,1,1,1,1,1,1,1,1,1,1,4,-,- --,4,1,9,9,1,1,1,1,1,1,9,9,1,4,- --,4,9,9,9,9,4,4,4,4,9,9,9,9,4,- --,4,9,4,9,9,4,4,4,4,9,4,9,9,4,- --,4,1,9,9,9,4,4,4,4,9,9,9,1,4,- --,-,4,1,1,9,4,4,4,4,9,1,1,4,-,- --,-,4,1,1,1,4,4,4,4,1,1,1,4,-,- --,-,-,4,1,1,1,4,4,1,1,1,4,-,-,- --,-,4,3,1,1,1,1,1,1,1,1,3,4,-,- --,4,6,3,1,1,1,1,1,1,1,1,3,6,4,- --,4,6,6,1,1,1,1,1,1,1,1,6,6,4,- --,4,6,6,1,1,1,1,1,1,1,1,6,6,4,- --,4,6,4,1,1,1,4,4,1,1,1,4,6,4,- -2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2 -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 --,-,-,-,-,4,1,1,1,1,4,-,-,-,-,- --,-,-,-,-,-,4,1,1,4,-,-,-,-,-,- --,-,-,-,-,-,-,4,4,-,-,-,-,-,-,- -\end{filecontents*} - -\begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=123469,style=\ttfamily]{perroquet.csv} -\end{tikzpicture} - -\begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=123469,couleurs={Red,Brown,Yellow,Black,Blue,White},correction]{perroquet.csv} -\end{tikzpicture} -\end{codetex} - -\subsection{Exemples complémentaires} - -\begin{codeinfo} -Les symboles affichés dans les cases sont situés aux nœuds de coordonnées $(c\,;\,-l)$ où $l$ et $c$ sont les numéros de ligne et de colonne correspondants à la position de la donnée dans le fichier \textsf{csv}. -\end{codeinfo} - -\begin{codesortie} -\begin{filecontents*}[overwrite]{perroquet.csv} --,-,-,-,-,-,4,4,4,4,-,-,-,-,-,- --,-,-,-,4,4,1,1,1,1,4,4,-,-,-,- --,-,-,4,1,1,1,1,1,1,1,1,4,-,-,- --,-,4,1,1,1,1,1,1,1,1,1,1,4,-,- --,-,4,1,1,1,1,1,1,1,1,1,1,4,-,- --,4,1,9,9,1,1,1,1,1,1,9,9,1,4,- --,4,9,9,9,9,4,4,4,4,9,9,9,9,4,- --,4,9,4,9,9,4,4,4,4,9,4,9,9,4,- --,4,1,9,9,9,4,4,4,4,9,9,9,1,4,- --,-,4,1,1,9,4,4,4,4,9,1,1,4,-,- --,-,4,1,1,1,4,4,4,4,1,1,1,4,-,- --,-,-,4,1,1,1,4,4,1,1,1,4,-,-,- --,-,4,3,1,1,1,1,1,1,1,1,3,4,-,- --,4,6,3,1,1,1,1,1,1,1,1,3,6,4,- --,4,6,6,1,1,1,1,1,1,1,1,6,6,4,- --,4,6,6,1,1,1,1,1,1,1,1,6,6,4,- --,4,6,4,1,1,1,4,4,1,1,1,4,6,4,- -2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2 -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 --,-,-,-,-,4,1,1,1,1,4,-,-,-,-,- --,-,-,-,-,-,4,1,1,4,-,-,-,-,-,- --,-,-,-,-,-,-,4,4,-,-,-,-,-,-,- -\end{filecontents*} - -\begin{center} - \begin{tblr}{colspec={*{6}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}} - \SetCell[c=6]{c} Notice & & & & & \\ - 1 & 2 & 3 & 5 & 6 & 9 \\ - Rouge & Marron & Jaune & Noir & Bleu & Blanc \\ - \end{tblr} -% \renewcommand\arraystretch{1.25} -% \begin{tabular}{|c|c|c|c|c|c|} -% \hline -% \multicolumn{6}{|c|}{Notice} \\ \hline -% 1 & 2 & 3 & 5 & 6 & 9 \\ \hline -% Rouge & Marron & Jaune & Noir & Bleu & Blanc \\ \hline -% \end{tabular} -\end{center} - -\begin{center} - \begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=123469,style=\ttfamily]{perroquet.csv} - \end{tikzpicture} - \begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=123469,couleurs={Red,Brown,Yellow,Black,Blue,White},correction]{perroquet.csv} - \end{tikzpicture} -\end{center} - -\begin{center} - \begin{tikzpicture}[x=0.35cm,y=0.35cm] - \draw[very thin,gray,xstep=1,ystep=1] (0,0) grid (17,-24) ; - \foreach \x in {0,1,...,17} \draw[very thin,gray] (\x,-3pt)--(\x,3pt) node[above,font=\scriptsize\sffamily] {\x} ; - \foreach \y in {0,-1,...,-24} \draw[very thin,gray] (3pt,\y)--(-3pt,\y) node[left,font=\scriptsize\sffamily] {\y} ; - \PLpixelart[codes=123469,couleurs={Red,Brown,Yellow,Black,Blue,White},correction]{perroquet.csv} - \filldraw[Blue] (14,-1) circle[radius=1] ; - \filldraw[Yellow] (14,-1) circle[radius=0.8] ; - \draw[ForestGreen,very thick,<-] (15,-1) to[bend left=30] (18,-2) node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ; - \end{tikzpicture} -\end{center} -\end{codesortie} - -\begin{codetex}[listing only] -%code tikz et pixelart -\filldraw[Blue] (14,-1) circle[radius=1] ; -\filldraw[Yellow] (14,-1) circle[radius=0.8] ; -\draw[ForestGreen,very thick,<-] (15,-1) to[bend left=30] (18,-2) node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ; -\end{codetex} - -\pagebreak - -\begin{codetex}[listing only] -%codes avec ambiguïté - -\begin{filecontents*}[overwrite]{cap.csv} --,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,- --,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,- -D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,- --,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,- --,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,- --,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,- --,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,- --,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,- --,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,- --,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,- --,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,- --,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,- --,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,- --,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,- --,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,- --,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D --,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D --,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D --,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,- --,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,- --,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,- --,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,- -\end{filecontents*} - -\begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=ABCDFJ,symboles={1,2,3,4,6,10},symb,style=\tiny\sffamily]{cap.csv} -\end{tikzpicture} - -\begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=ABCDFJ,couleurs={Red,Brown,Yellow,Black,Blue,Gray},correction]{cap.csv} -\end{tikzpicture} -\end{codetex} - -\begin{codesortie} -\begin{filecontents*}[overwrite]{cap.csv} --,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,- --,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,- -D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,- --,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,- --,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,- --,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,- --,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,- --,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,- --,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,- --,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,- --,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,- --,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,- --,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,- --,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,- --,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,- --,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D --,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D --,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D --,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,- --,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,- --,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,- --,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,- -\end{filecontents*} - -\begin{center} - \begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=ABCDFJ,symboles={1,2,3,4,6,10},symb,style=\tiny\sffamily]{cap.csv} - \end{tikzpicture} - ~~ - \begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=ABCDFJ,couleurs={Red,Brown,Yellow,Black,Blue,Gray},correction]{cap.csv} - \end{tikzpicture} -\end{center} -\end{codesortie} - -\newpage - -\section{SudoMaths, en \TikZ}\label{sudomaths} - -\subsection{Introduction} - -\begin{codeidee} -L'idée est de \textit{proposer} un environnement \TikZ, une commande permettant de tracer des grilles de SudoMaths. - -L'environnement créé, lié à \TikZ, trace la grille de SudoMaths (avec les blocs démarqués), et peut la remplir avec une liste d'éléments. -\end{codeidee} - -\begin{codetex}[listing only] -%grille classique non remplie, avec légendes H et V -%les {} non nécessaires pour préciser que les cases seront "vides" -\PLsudomaths{} -\end{codetex} - -\begin{codesortie} -\PLsudomaths{} -\end{codesortie} - -\begin{codeinfo} -La commande \ctex{PLsudomaths} crée donc la grille (remplie ou non), dans un environnement \TikZ, c'est \textit{c'est tout} ! - -\smallskip - -Si on veut exploiter le tracé de la grille, on peut utiliser l'\textit{environnement} \ctex{PLenvsudomaths} dans lequel on peut rajouter toute commande en \TikZ{} ! -\end{codeinfo} - -\begin{codetex}[listing only] -%grille "toute seule" -\PLsudomaths[<options>]{<liste>} - -%grille avec ajout de code -\begin{PLenvsudomaths}[<options>]{<grille>} - <commandes tikz> ; -\end{PLenvsudomaths} -\end{codetex} - -\pagebreak - -\subsection{Clés et options} - -\begin{codecles} -Quelques \Cle{clés} sont disponibles pour cette commande : - -\begin{itemize} - \item la clé \Cle{epaisseurg} pour gérer l'épaisseur des traits épais ; \hfill~défaut \Cle{1.5pt} - \item la clé \Cle{epaisseur} pour gérer l'épaisseur des traits fins ; \hfill~défaut \Cle{0.5pt} - \item la clé \Cle{unite} qui est l'unité graphique de la figure ; \hfill~défaut \Cle{1cm} - \item la clé \Cle{couleurcase} pour la couleur (éventuelles) des cases ; \hfill~défaut \Cle{LightBlue!50} - \item la clé \Cle{couleurtexte} pour gérer la couleur du label des cases ; \hfill~défaut \Cle{blue} - \item la clé \Cle{nbcol} qui est le nombre de colonnes ; \hfill~défaut \Cle{9} - \item la clé \Cle{nbsubcol} qui est le nombre de sous-colonnes ; \hfill~défaut \Cle{3} - \item la clé \Cle{nblig} qui est le nombre de lignes ; \hfill~défaut \Cle{9} - \item la clé \Cle{nbsublig} qui est le nombre de sous-colonnes ; \hfill~défaut \Cle{3} - \item la clé \Cle{police} qui formatte le label des cases ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize} - \item le booléen \Cle{legendes} qui affiche ou non les légendes (H et V) des cases ; \hfill~défaut \Cle{true} - \item la clé \Cle{policeleg} qui formatte le label des légendes ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize} - \item la clé \Cle{listelegv} qui est la liste de la légende verticale ; \hfill~défaut \Cle{ABCD...WXYZ} - \item la clé \Cle{listelegh} qui est la liste de la légende horizontale ; \hfill~défaut \Cle{abcd...wxyz} - \item la clé \Cle{decallegende} qui est le décalage de la légende par rapport à la grille. \hfill~défaut \Cle{0.45} -\end{itemize} -\end{codecles} - -\begin{codeinfo} -La liste éventuelle des éléments à rentrer dans le tableau est traitée par le package \ctex{listofitems}, et se présente sous la forme suivante : \ctex{ / / / ... / / § / / / ... / / § ... § / / / ... / / } - -\smallskip - -Il peut donc être intéressant de \textit{déclarer} la liste au préalable pour simplifier la saisie de la commande ! -\end{codeinfo} - -\begin{codeinfo} -La \Cle{couleurcase} est gérée -- en interne -- par le caractère \ctex{*} qui permet de préciser qu'on veut que la case soit coloriée. -\end{codeinfo} - -\begin{codetex}[listing only] -%grille 6x6 avec blocs 2x3, avec coloration de cases (présentée sous forme de "cases") -\def\grilleSuMa{% - (a)* / (b)* / / / (c)* / (d)* §% - (e)* / / / (f)* / (g)* / (h)* §% - / / (i)* / / / (j)* §% - / / (k)* / / (l)* / (m)* §% - (n)* / / (o)* / / / (p)* §% - / / / (q)* / / §% -} - -\PLsudomaths[unite=0.75cm,nbcol=6,nbsubcol=2,nblig=6,nbsublig=3,police=\small\bfseries\ttfamily,% - couleurtexte=red,couleurcase=yellow!50,legendes=false]{\grilleSuMa} -\end{codetex} - -\begin{codesortie} -\def\grilleSuMa{% - (a)* / (b)* / / / (c)* / (d)* §% - (e)* / / / (f)* / (g)* / (h)* §% - / / (i)* / / / (j)* §% - / / (k)* / / (l)* / (m)* §% - (n)* / / (o)* / / / (p)* §% - / / / (q)* / / §% -} - -\PLsudomaths[unite=0.75cm,nbcol=6,nbsubcol=2,nblig=6,nbsublig=3,police=\small\bfseries\ttfamily,couleurtexte=red,couleurcase=yellow!50,legendes=false]{\grilleSuMa} -\end{codesortie} - -\pagebreak - -\begin{codeinfo} -La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0\,;\,0)$ et $(\text{nbcol}\,;\,-\text{nblig})$, de sorte que les labels des cases sont situés au nœuds de coordonnées $(x,5\,;\,-y,5)$. -\end{codeinfo} - -\begin{codetex}[listing only] -%grille classique avec coloration de cases et commande tikz -%graduations rajoutées pour la lecture des coordonnées -\def\grilleSuMaB{% - */////4///§% - /*///3////§% - //*//////§% - ///*/////§% - ////*////§% - /////*///§% - //5*/////*/§% - /////B///*§% - *///9////Q/§% -} - -\begin{PLenvsudomaths}[% - unite=0.66cm,police=\footnotesize\bfseries\ttfamily,couleurcase=ForestGreen!50,% - listelegv=QSDFGHJKL,listelegh=poiuytrez]{\grilleSuMaB} - \draw[red,very thick,<-] (7.5,-4.5) to[bend right] ++ (4,-1) node[right] {code rajouté...} ; -\end{PLenvsudomaths} -\end{codetex} - -\begin{codesortie} -\def\grilleSuMaB{% - */////4///§% - /*///3////§% - //*//////§% - ///*/////§% - ////*////§% - /////*///§% - //5*/////*/§% - /////B///*§% - *///9////Q/§% -} - -\begin{PLenvsudomaths}[% - unite=0.66cm,police=\footnotesize\bfseries\ttfamily,couleurcase=ForestGreen!50,% - listelegv=QSDFGHJKL,listelegh=poiuytrez]{\grilleSuMaB} - \draw[red,very thick,<-] (7.5,-4.5) to[bend right] ++ (4,-1) node[right] {code rajouté pour montrer la case \textsf{Ge}} ; - \foreach \x in {0,1,...,9} \draw[lightgray] (\x,-9) node[below,font=\scriptsize\ttfamily] {\x} ; - \foreach \y in {-1,-2,...,-9} \draw[lightgray] (9,\y) node[right,font=\scriptsize\ttfamily] {\y} ; - \draw[lightgray] (9,0) node[right,font=\scriptsize\ttfamily] {~0} ; -\end{PLenvsudomaths} -\end{codesortie} - -\newpage - -\part{Historique} - -{\small \bverb|v1.3.8|~:~~~~Chargement du package \textsf{piton} uniquement si compilation en \LuaLaTeX{} (page \pageref{pythonpiton}) - -{\small \bverb|v1.3.7|~:~~~~Commandes pour du code python via piton, en compilation \LuaLaTeX{} (page \pageref{pythonpiton}) - -{\small \bverb| |~:~~~~Corrections et modifications mineures de la documentation - -{\small \bverb|v1.3.6|~:~~~~Présentation de l'algorithme d'Euclide pour le PGCD (page \pageref{prespgcd}) - -{\small \bverb| |~:~~~~Affichage d'un trinôme par coefficients, aléatoires ou non (page \pageref{trinome}) - -{\small \bverb|v1.3.5|~:~~~~Correction d'un bug avec la loi géométrique (page \pageref{calcprobas}) - -{\small \bverb|v1.3.4|~:~~~~Ajout de petits schémas, en \TikZ{}, de lois normales et exponentielles (page \pageref{schemasprobas}) - -{\small \bverb| |~:~~~~Calculs de probas avec les lois géométriques et hypergéométriques (page \pageref{calcprobas}) - -{\small \bverb|v1.3.3|~:~~~~Ajout d'un environnement pour des arbres de probas classiques, en \TikZ{} (page \pageref{arbresprobas}) - -{\small \bverb|v1.3.2|~:~~~~Correction d'un bug sur les conversions bintohex avec lualatex (page \pageref{conversions}) - -{\small \bverb|v1.3.1|~:~~~~Ajout d'une option pour ne pas afficher les bordures des corrections de pixelart (page \pageref{pixelart}) - -{\small \bverb|v1.3.0|~:~~~~Commande pour présenter une conversion depuis la base 10 (page \pageref{convrestes}) - -{\small \bverb|v1.2.9|~:~~~~Correction des commandes avec \textsf{simplekv} - -{\small \bverb|v1.2.8|~:~~~~Ajout d'une librairie \TikZ{} oubliée, et remise en forme de la documentation - -{\small \bverb|v1.2.7|~:~~~~Ajout de commandes pour des calculs de probabilités (page \pageref{calcprobas}) - -{\small \bverb|v1.2.6|~:~~~~Ajout d'un environnement pour des SudoMaths (page \pageref{sudomaths}) - -{\small \bverb|v1.2.5|~:~~~~Ajout de commandes pour des boîtes à moustaches (page \pageref{boiteamoustaches}) - -{\small \bverb|v1.2.4|~:~~~~Correction de quelques bugs mineurs, et mise à jour de la doc - -{\small \bverb|v1.2.3|~:~~~~Commandes pour du code python "simple", sans compilation particulière (page \pageref{pythonsimple}) - -{\small \bverb|v1.2.2|~:~~~~Commandes pour travailler sur des stats à 2 variables (page \pageref{statsdeuxvars}) - -{\small \bverb|v1.2.1|~:~~~~Amélioration de la gestion du csv pour Pixelart - -{\small \bverb|v1.2.0|~:~~~~Correction d'un \textit{méchant} bug sur Pixelart - -{\small \bverb|v1.1.9|~:~~~~Pixelart en \TikZ{} (page \pageref{pixelart}) - -{\small \bverb|v1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ (page \pageref{mainlevee}) - -{\small \bverb|v1.1.7|~:~~~~Conversions bin/hex/dec (basées sur \textsf{xintbinhex}) avec quelques détails (page \pageref{conversions}) - -{\small \bverb|v1.1.6|~:~~~~Ajout d'une commande pour déterminer les paramètres d'une régression linéaire par moindres carrés (page \pageref{reglin}) - -{\small \bverb|v1.1.5|~:~~~~Ajout de deux commandes pour, en \TikZ, créer des petits schémas \og de signe \fg{} (page \pageref{aidesigne}) - -{\small \bverb|v1.1.4|~:~~~~Ajout d'une commande pour, en \TikZ, créer facilement un cercle trigo avec \textit{options} (page \pageref{cercletrigo}) - -{\small \bverb|v1.1.3|~:~~~~Ajout des commandes pour fractions, ensembles et récurrence (pages \pageref{convfrac}, \pageref{ensembles} et \pageref{recurr}) - -{\small \bverb|v1.1.1|~:~~~~Modification mineure de l'environnement calcul formel, avec prise de charge de la taille du texte - -{\small \bverb|v1.1.0|~:~~~~Ajout d'une commande pour créer des tétraèdres (avec nœuds) en \TikZ{} (page \pageref{tetra}) - -{\small \bverb|v1.0.9|~:~~~~Ajout d'une commande pour créer des pavés droits (avec nœuds) en \TikZ{} (page \pageref{pave}) - -{\small \bverb|v1.0.8|~:~~~~Ajout d'une commande pour créer des cartouches de lien "comme capytale" (page \pageref{capytale}) - -{\small \bverb|v1.0.7|~:~~~~Ajout d'une option \textsf{build} pour placer certains fichiers auxiliaires dans un répertoire externe - -{\small \bverb|v1.0.6|~:~~~~Ajout d'une option \textsf{nominted} pour ne pas charger (pas besoin de compiler avec \textsf{shell-escape}) - -{\small \bverb|v1.0.5|~:~~~~Ajout d'un environnement pour Python (\textsf{minted}) (page \pageref{pytminted}) - -{\small \bverb|v1.0.4|~:~~~~Ajout des environnements pour Terminal (win, osx, unix) (page \pageref{terms}) - -{\small \bverb|v1.0.3|~:~~~~Ajout des environnements pour PseudoCode (page \pageref{pseudocode}) - -{\small \bverb|v1.0.2|~:~~~~Ajout des environnements pour Python (\textsf{pythontex}) (page \pageref{pythontex}) - -{\small \bverb|v1.0.1|~:~~~~Modification mineure liée au chargement de \textsf{xcolor} - -{\small \bverb|v1.0 |~:~~~~Version initiale} - -\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee-old.sty b/macros/latex/contrib/proflycee/tex/ProfLycee-old.sty deleted file mode 100644 index dc3c35fdd7..0000000000 --- a/macros/latex/contrib/proflycee/tex/ProfLycee-old.sty +++ /dev/null @@ -1,3125 +0,0 @@ -% Author : C. Pierquet -% licence : Released under the LaTeX Project Public License v1.3c -% or later, see http://www.latex-project.org/lppl.txtf - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfLycee-old}[2022/11/06 v1.3.8 - Aide pour l'utilisation de LaTeX en lycee] -% 1.3.8 Chargement de Piton uniquement en cas de compilation en lua -% 1.3.7 Ajout d'un environnement simplifié pour du code python via piton -% 1.3.6 Ajout d'un "générateur" de trinômes (ou mise en forme basique) -% 1.3.5 Correction de bugs sur les calculs de probas (loi géométrique) -% 1.3.4 Ajout des calculs de probas geomtriques et hypergeometriques + petits schémas probas -% 1.3.3 Ajout de commandes pour des arbres de probas classiques, en tikz -% 1.3.2 Correction d'une commande liée à la conversion bintohex (suppression clé trait) -% 1.3.1 Ajout d'une option pour ne pas afficher les bords des cases en pixelart -% 1.3.0 Ajout d'une commande pour mettre en forme une conversion depuis la base 10 -% 1.2.9 Correction d'une incompatibilité avec simplekv (clés vides...) -% 1.2.8 Correction de l'oubli d'une librairie tikz et remise en forme de la documentation -% 1.2.7 Calculs de probas pour des lois classiques -% 1.2.6 Ajout d'un environnement tikz pour des sudomaths personnalisés -% 1.2.5 Ajout d'une commande pour des boites à moustaches, en tikz -% 1.2.4 Correction de quelques bugs mineurs, et mise à jour de la doc -% 1.2.3 Ajout d'un environnement simplifié pour du code python -% 1.2.2 Ajouts de commandes pour des stats à 2 variables -% 1.2.1 Amélioration de la gestion du csv pour les pixelart -% 1.2 Correction d'un méchant bug avec pixelart, erf... -% 1.1.9 Commande pour du pixelart en tikz (avec option csvii pour compatibilité) -% 1.1.8 Ajout d'un style mainlevee pour tikz -% 1.1.7 Ajout de commandes pour des conversions bin/dec/hex -% 1.1.6 Ajout d'une commande pour déterminer les paramètres d'un régression linéaire par moindres carrés -% 1.1.5 Ajout de commandes pour "visualiser" le signe de ax+b ou de ax2+bx+c (cf tnsana !) -% 1.1.4 Ajout d'une commande cercletrigoPL pour, en \TikZ, créer facilement un cercle trigo avec options -% 1.1.3 Ajout d'une commande ensemble pour créer un ensemble à partir d'une liste -% 1.1.2 Modifs mineures -% 1.1.1 Modification mineure de l'environnement CF, avec prise de charge de la taille du texte ! -% 1.1.0 Ajout d'une commande tetraPL pour un tetraèdre dans un environnement TikZ -% 1.0.9 Ajout d'une commande pavePL pour un pave droit dans un environnement TikZ -% 1.0.8 Ajout d'une commande liencapytale pour créer un cartouche "comme sur capytale" -% 1.0.7 Option [build] pour placer les fichiers temporaires dans un répertoire build (désactivée par défaut) -% 1.0.6 Option [nominted] pour éviter de charger minted & nettoyage amssymb -% 1.0.5 Environnement code python avec minted -% 1.0.4 Environnement pour simuler terminal windows & linux -% 1.0.3 Environnement pour présenter du pseudocode -% 1.0.2 Environnement pour présenter du code python (avec pythontex) -% 1.0.1 Modif mineure du chargement de xcolor (compatibilité avec d'autres packages notamment...) -% 1.0 Version initiale - -%------Option(s) -\newif\if@nominted \@nomintedfalse -\DeclareOption{nominted}{\@nomintedtrue} -\newif\if@build \@buildfalse -\DeclareOption{build}{\@buildtrue} -\newif\if@csvii \@csviifalse -\DeclareOption{csvii}{\@csviitrue} -\DeclareOption*{} -\ProcessOptions\relax - -%------Packages utiles -\RequirePackage[table,svgnames]{xcolor}%Gestion des couleurs -\RequirePackage{tikz} -\RequirePackage{tkz-tab} -\RequirePackage{mathtools} -\RequirePackage{pgf,pgffor} -\RequirePackage{ifthen} -\RequirePackage{xparse} -\RequirePackage{xkeyval} -\RequirePackage{xfp} -\RequirePackage{xstring} -\RequirePackage{xintexpr} -\RequirePackage{xintbinhex} -\RequirePackage{simplekv} -\RequirePackage{listofitems} -\RequirePackage{tabularray} -\RequirePackage{siunitx} %test avec v3 -\sisetup{% - 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,% - output-decimal-marker={,},% - group-minimum-digits=4% -}% -\RequirePackage{fontawesome5} -\if@csvii - \RequirePackage[legacy]{csvsimple} -\else - \RequirePackage{expl3} - \RequirePackage[l3]{csvsimple} -\fi -%librairies tikz -\usetikzlibrary{calc} -\usetikzlibrary{decorations} -\usetikzlibrary{decorations.pathreplacing} -\usetikzlibrary{decorations.markings} -\usetikzlibrary{arrows,arrows.meta} -\usetikzlibrary{babel} -\usetikzlibrary{shapes.geometric} -\usetikzlibrary{decorations.pathmorphing} -%tcolorbox -\RequirePackage[most]{tcolorbox} -%divers -\RequirePackage{iftex} -%python -\RequirePackage{fancyvrb} -\RequirePackage[gobble=auto]{pythontex} -\setpythontexlistingenv{pythont} %pour ne pas télescoper lstlistings (?) -\if@build - \setpythontexoutputdir{./build/pythontex-files-\jobname} %essai de modif pythontex répertoire build -\fi - -%---------------SPLINES---------------------- -%------commande utile pour extraire des infos d'une liste -\newcommand\extractcoeff[2]{% #1=liste & #2=numero - \setsepchar{§}% - \readlist\lcoeffs{#1} - \ifnum \lcoeffslen=1 - \def\COEFFA{#1} - \def\COEFFB{#1} - \else - \itemtomacro\lcoeffs[#2]\COEFF - \IfSubStr{\COEFF}{/}% - {\StrCut{\COEFF}{/}{\COEFFA}{\COEFFB}}% - {\def\COEFFA{\COEFF}\def\COEFFB{\COEFF}} - \fi -} - -%------splines en tikz avec ..controls -\defKV[spline]{% - liste=\def\SPLliste{#1},% - width=\def\SPLepaisseur{#1},% - couleur=\def\SPLcouleur{#1},% - coeffs=\def\SPLcoeffs{#1},% - couleurpoints=\def\SPLcouleurpoints{#1},% - taillepoints=\def\SPLtaillepoints{#1},% - style=\def\SPLstyle{#1} -} - -\setKVdefault[spline]{% - spline={},% - width=1.25pt,% - couleur=red,% - coeffs=3,% - couleurpoints=black,% - taillepoints=2pt,% - affpoints=false,% - style={} -} - -\newcommand\splinetikz[1][]{% - \useKVdefault[spline] - \setKV[spline]{#1}% on paramètres les nouvelles clés et on les simplifie - %on lit la liste des points/nbderivés et on stocke dans \listepoints - \setsepchar[.]{§./}% - \readlist\SPLlistepoints\SPLliste - \def\SPLnbsplines{\inteval{\SPLlistepointslen-1}} - %si uniquement deux points, pas de boucle... - \ifnum \SPLlistepointslen=2 - %extraction des coeffs de compensation - \extractcoeff{\SPLcoeffs}{1}% - %extraction des coordonnées - \itemtomacro\SPLlistepoints[1,1]\xa - \itemtomacro\SPLlistepoints[1,2]\ya - \itemtomacro\SPLlistepoints[1,3]\fprimea - \itemtomacro\SPLlistepoints[2,1]\xb - \itemtomacro\SPLlistepoints[2,2]\yb - \itemtomacro\SPLlistepoints[2,3]\fprimeb - \draw[line width=\SPLepaisseur,\SPLcouleur,\SPLstyle] (\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFA}).. (\xb,\yb) ;% - %sinon on construit bout par bout ! - \else - \foreach \i in {1,2,...,\SPLnbsplines}{ - %extraction des coeffs de compensation - \extractcoeff{\SPLcoeffs}{\i} - \def\j{\inteval{\i+1}} - \itemtomacro\SPLlistepoints[\i,1]\xa - \itemtomacro\SPLlistepoints[\i,2]\ya - \itemtomacro\SPLlistepoints[\i,3]\fprimea - \itemtomacro\SPLlistepoints[\j,1]\xb - \itemtomacro\SPLlistepoints[\j,2]\yb - \itemtomacro\SPLlistepoints[\j,3]\fprimeb - \draw[line width=\SPLepaisseur,\SPLcouleur,\SPLstyle] (\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFB}).. (\xb,\yb) ;% - } - \fi - \ifboolKV[spline]{affpoints}%on affiche les points de contrôle - {% - \foreach \i in {1,2,...,\SPLlistepointslen}{% - \itemtomacro\SPLlistepoints[\i,1]\xa - \itemtomacro\SPLlistepoints[\i,2]\ya - \filldraw[\SPLcouleurpoints] (\xa,\ya) circle[radius=\SPLtaillepoints] ;% - } - } - {} -} - -%------tangente(s) en TikZ, avec point/dérivée ou liste points/dérivées -\defKV[tgte]{% - liste=\def\TGTliste{#1},% - width=\def\TGTepaisseur{#1},% - couleur=\def\TGTcouleur{#1},% - xl=\def\TGTXL{#1},% - xr=\def\TGTXR{#1},% - style=\def\TGTstyle{#1},% - point=\def\TGTnumpt{#1} -} - -\setKVdefault[tgte]{ - liste={},% - width=1.25pt,% - couleur=red,% - xl=0.5,xr=0.5,% - style={},% - point=1 -} - -\newcommand\tangentetikz[1][]{% - \useKVdefault[tgte]% - \setKV[tgte]{#1}% on paramètres les nouvelles clés et on les simplifie - \setsepchar[.]{§./}% - \readlist\TGTlistepoints\TGTliste - \itemtomacro\TGTlistepoints[\TGTnumpt,1]\xa - \itemtomacro\TGTlistepoints[\TGTnumpt,2]\ya - \itemtomacro\TGTlistepoints[\TGTnumpt,3]\fprimea - \def\TGTDEB{\fpeval{\xa-\TGTXL}}\def\TGTFIN{\fpeval{\xa+\TGTXR}}% - \draw[line width=\TGTepaisseur,\TGTcouleur,domain=\TGTDEB:\TGTFIN,\TGTstyle] plot (\x,{\fprimea*(\x-\xa)+\ya}) ;% -} - -%----------------FENÊTRE CALCUL FORMEL -\newcommand\CFchap{\textasciicircum} -\newcounter{CFnum} -%def des clés -\defKV[paramfenxcas]{% - larg=\def\CFlarg{#1},% - esplg=\def\CFesplg{#1},% - premcol=\def\CFpremcol{#1},% - hpremcol=\def\CFhpremcol{#1},% - taille=\def\CFtaille{#1},% - couleur=\def\CFcouleur{#1},% - tailletitre=\def\CFtailletitre{#1},% - couleurcmd=\def\CFcoulcmd{#1},% - couleurres=\def\CFcoulres{#1},% - poscmd=\def\CFposcmd{#1},% - posres=\def\CFposres{#1},% - labeltitre=\def\CFlabeltitre{#1}% -} -\setKVdefault[paramfenxcas]{% - larg=16,esplg=2pt,premcol=0.3,hpremcol=0.4,% - couleur=darkgray,menu=true,titre=false,tailletitre=\normalsize,taille=\normalsize,% - sep=true,posres=centre,poscmd=gauche,% - couleurcmd=red,couleurres=blue,% - labeltitre={Résultats obtenus avec un logiciel de Calcul Formel}} -\newcommand\paramCF[1][]{% - \setcounter{CFnum}{0} - \useKVdefault[paramfenxcas]% - \setKV[paramfenxcas]{#1}% on paramètres les nouvelles clés et on les simplifie -} -%def des clés -\defKV[paramlgxcas]{% - hc=\def\CFhle{#1},% - hr=\def\CFhlr{#1} -} -\setKVdefault[paramlgxcas]{hc=0.75,hr=0.75} -\newcommand\ligneCF[3][]{% - \addtocounter{CFnum}{1} - \def\CFL{\theCFnum} - \def\CFLA{\inteval{\CFL-1}}% - \useKVdefault[paramlgxcas]% - \setKV[paramlgxcas]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\CFLA{\inteval{\CFL-1}}% - %DÉCLARATION DES NŒUDS (les "6" coins des lignes commande et résultat) - \xintifboolexpr{\CFL == 1}%si c'est la première ligne - {\coordinate (A0\CFL) at (0,0);} - {\coordinate (A0\CFL) at ($(A2\CFLA) + (0,{-\CFesplg})$);} - \coordinate (A1\CFL) at ($(A0\CFL) + (0,{-\CFhle})$); - \coordinate (A2\CFL) at ($(A1\CFL) + (0,{-\CFhlr})$); - \coordinate (A3\CFL) at ($(A0\CFL) + ({\CFlarg},0)$); - \coordinate (A4\CFL) at ($(A1\CFL) + ({\CFlarg},0)$); - \coordinate (A5\CFL) at ($(A2\CFL) + ({\CFlarg},0)$); - %DÉCLARATION DES NŒUDS INTERMÉDIAIRES (pour les commandes et les résultats) - \coordinate (C1\CFL) at ($(A0\CFL) + (0,{-0.5*\CFhle})$); - \coordinate (C2\CFL) at ($(A0\CFL) + ({0.5*\CFlarg},{-0.5*\CFhle})$); - \coordinate (C3\CFL) at ($(A0\CFL) + ({\CFlarg},{-0.5*\CFhle})$); - \coordinate (R1\CFL) at ($(A1\CFL) + (0,{-0.5*\CFhlr})$); - \coordinate (R2\CFL) at ($(A1\CFL) + ({0.5*\CFlarg},{-0.5*\CFhlr})$); - \coordinate (R3\CFL) at ($(A1\CFL) + ({\CFlarg},{-0.5*\CFhlr})$); - %RECTANGLE DE BASE - \draw[\CFcouleur] (A0\CFL) rectangle (A5\CFL) ; - %LA COMMANDE EN ROUGE - \IfStrEq{\CFposcmd}{centre}%si poscmd=center - {\draw (C2\CFL) node[\CFcoulcmd,font=\CFtaille] {#2} ;} - {} - \IfStrEq{\CFposcmd}{gauche}%si poscmd=left - {\draw (C1\CFL) node[right,\CFcoulcmd,font=\CFtaille] {#2} ;} - {} - \IfStrEq{\CFposcmd}{right}%si poscmd=right - {\draw (C3\CFL) node[left,\CFcoulcmd,font=\CFtaille] {#2} ;} - {} - %LA LIGNE DE SÉPARATION - \ifboolKV[paramfenxcas]{sep}%si sep=true - {\draw[\CFcouleur] (A1\CFL) -- (A4\CFL);} - {} - %LE RÉSULTAT - \IfStrEq{\CFposres}{centre}%si posrep=center - {\draw (R2\CFL) node[\CFcoulres,font=\CFtaille] {#3} ;} - {} - \IfStrEq{\CFposres}{gauche}%si posrep=left - {\draw (R1\CFL) node[right,\CFcoulres,font=\CFtaille] {#3} ;} - {} - \IfStrEq{\CFposres}{right}%si posrep=right - {\draw (R3\CFL) node[left,\CFcoulres,font=\CFtaille] {#3} ;} - {} - \ifboolKV[paramfenxcas]{sep}%si sep=true - {\draw[\CFcouleur] (A1\CFL) -- (A4\CFL);}% - {} - %LE PETIT NUMÉRO - \draw[\CFcouleur] (A0\CFL) rectangle ++ ({-\CFpremcol},{-\CFhpremcol}) node[\CFcouleur,midway,font=\small\sffamily\bfseries] {\CFL} ; - %LE RECTANGLE "MENU" - \ifboolKV[paramfenxcas]{menu}%si menu=true - {\draw[\CFcouleur,fill=\CFcouleur!25] (A5\CFL) rectangle ++ (-0.65,0.25) node[black,midway,font=\tiny\sffamily\bfseries] {MENU} ;}% - {} - %LE BLOC "TITRE" - \ifboolKV[paramfenxcas]{titre}%si titre=true - {\draw[\CFcouleur,fill=lightgray!25,rounded corners] ($(A01) + (0,2pt)$) rectangle ++ ($({\CFlarg},2em)$) node[ForestGreen!50!\CFcouleur,midway,font=\CFtailletitre\ttfamily\bfseries] {\CFlabeltitre};} - {} -} - -%=========CONSOLEPYTHON=========== OK !! -\defKV[envpythonconsole]{% - largeur=\def\CSPYlargeur{#1},% - centre=\testboolKV{#1} - {\def\hookcenterpre{\begin{center}}\def\hookcenterpost{\end{center}}} - {\def\hookcenterpre{\begin{flushleft}}\def\hookcenterpost{\end{flushleft}}} -} - -\setKVdefault[envpythonconsole]{% - largeur=\linewidth,% - centre=true,% - label=true -} - -\newenvironment{envconsolepythontex}[1][]{% - \useKVdefault[envpythonconsole]% - \setKV[envpythonconsole]{#1}% on paramètres les nouvelles clés et on les simplifie - \VerbatimEnvironment - \hookcenterpre - \begin{minipage}{\CSPYlargeur} - \ifboolKV[envpythonconsole]{label}%si sep=true - {\begin{pyconsole}[][% - framesep=3mm,frame=single,fontsize=\footnotesize,framerule=1pt,rulecolor=\color{ForestGreen},label={[\scriptsize Début de la console python]\scriptsize Fin de la console python}]}% - {\begin{pyconsole}[][% - framesep=3mm,frame=single,fontsize=\footnotesize,framerule=1pt,rulecolor=\color{ForestGreen}]} - } - { - \end{pyconsole} - \end{minipage} - \hookcenterpost -} - -%=========CODEPYTHONTEX=========== OK!! -\defKV[envpythonverb]{% - largeur=\def\CODPYlargeur{#1},% - centre=\testboolKV{#1} - {\def\verbcenterpre{\begin{center}}\def\verbcenterpost{\end{center}}} - {\def\verbcenterpre{}\def\verbcenterpost{}} -} - -\setKVdefault[envpythonverb]{% - largeur=\linewidth,% - centre=true,% - lignes=true -} - -\tcbset{stylepythontex/.style={% - enhanced,boxrule=1.25pt,% - sharp corners=downhill,arc=12pt, - before skip=12pt,after skip=12pt,% - top=10pt,bottom=1mm,rightupper=4pt,%leftupper=25pt, - attach boxed title to top right={yshift=-\tcboxedtitleheight}, - boxed title style={ - size=small,colback=ForestGreen!25,boxrule=1.25pt, - colframe=Green,boxsep=1.25pt, - sharp corners=downhill, - arc=12pt, - top=2pt,bottom=1pt,left=6pt,right=6pt - }, - fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize, - title={\scriptsize\faPython}\:Code Python\vphantom{p}, - watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50, - } -} - -\tcbset{stylepythonnolineos/.style={% - stylepythontex,leftupper=10pt, - colframe=Green,colback=ForestGreen!5,% - fontlower=\small,% - before upper = \renewcommand\theFancyVerbLine{\scriptsize\ttfamily\color{Green}\arabic{FancyVerbLine}} - } -} - -\tcbset{stylepythonlineos/.style={% - stylepythontex,leftupper=25pt, - colframe=Green,colback=ForestGreen!5,% - fontlower=\small,% - before upper = \renewcommand\theFancyVerbLine{\scriptsize\ttfamily\color{Green}\arabic{FancyVerbLine}} - } -} - -\newtcolorbox{tcpythontexcode}[1][\linewidth]{% - width=#1,stylepythonlineos -} - -\newtcolorbox{tcpythontexcodeno}[1][\linewidth]{% - width=#1,stylepythonnolineos -} - -\newenvironment{envcodepythontex}[1][]{% - \useKVdefault[envpythonverb]% - \setKV[envpythonverb]{#1}% on paramètres les nouvelles clés et on les simplifie - \VerbatimEnvironment - \verbcenterpre - \ifboolKV[envpythonverb]{lignes}%si lignes=true - {\begin{tcpythontexcode}[\CODPYlargeur]} - {\begin{tcpythontexcodeno}[\CODPYlargeur]} - \ifboolKV[envpythonverb]{lignes}%si lignes=true - {\begin{pyverbatim}[][fontsize=\footnotesize,numbers=left,numbersep=10pt,commandchars=\\\{\},mathescape]} - {\begin{pyverbatim}[][numbers=none,numbersep=0pt,fontsize=\footnotesize,commandchars=\\\{\},mathescape]} - } - { - \end{pyverbatim} - \ifboolKV[envpythonverb]{lignes}%si lignes=true - {\end{tcpythontexcode}} - {\end{tcpythontexcodeno}} - \verbcenterpost -} - -%=========PYTHONMINTED========= OK !! -\if@nominted - %on ne charge pas minted et la librairie tcbox -\else - \if@build - %on charge minted avec le répertoire build - \RequirePackage[outputdir=build]{minted} - \fi - %on charge minted via la librairie tcbox - \tcbuselibrary{minted} -\fi - -\tcbset{pytmintedno/.style={% - listing engine=minted,minted style=colorful, - minted language=python,listing only, - minted options={tabsize=4,fontsize=\small,autogobble}, - } -} - -\tcbset{pytminted/.style={% - listing engine=minted,minted style=colorful, - minted language=python,listing only, - minted options={tabsize=4,fontsize=\small,autogobble,xleftmargin=16pt,linenos,numbersep=10pt}, - } -} - -\DeclareTCBListing{envcodepythonminted}{ s O{12cm} O{} }{% étoilée sans numéro, taille puis option... - \IfBooleanTF{#1}{pytmintedno}{pytminted}, - enhanced,width=#2,#3, - colframe=Green,colback=ForestGreen!5,% - boxrule=1.25pt, - sharp corners=downhill,arc=12pt, - before skip=12pt,after skip=12pt,% - leftupper=8pt,top=10pt,bottom=4pt,rightupper=4pt,% - attach boxed title to top right={yshift=-\tcboxedtitleheight}, - boxed title style={ - size=small,colback=ForestGreen!25,boxrule=1.25pt, - colframe=Green,boxsep=1.25pt, - sharp corners=downhill, - arc=12pt, - top=2pt,bottom=1pt,left=6pt,right=6pt - }, - fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize, - title={\scriptsize\faPython}\:Code Python\vphantom{y}, - watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50, - before upper = \renewcommand{\theFancyVerbLine}{\scriptsize\ttfamily\color{Green}\arabic{FancyVerbLine}} -} - -%=======STYLE ALGO LST========= OK ! -\ifluatex - \tcbuselibrary{listings} - \lstdefinelanguage{langnat}{% - keywords={}, - inputencoding=utf8, - comment=[l]{}} - \lstdefinestyle{PLpython}{% - language = python, - inputencoding = utf8, - basicstyle = \ttfamily\footnotesize, - keywordstyle = \color{ForestGreen}, - keywordstyle = [2]\color{magenta}, - commentstyle = \color{gray}\itshape, - stringstyle = \color{red!75}, - numberstyle = \scriptsize\ttfamily\color{Green}, - aboveskip = 4pt, - belowskip = 1pt, - tabsize = 4, - showstringspaces = false, - columns = fullflexible, - keepspaces = true, - breaklines = true, - breakatwhitespace = true - } -\else - \tcbuselibrary{listingsutf8} - \lstdefinelanguage{langnat}{% - keywords={}, - inputencoding=utf8/latin1, - comment=[l]{}} - \lstdefinestyle{PLpython}{% - language = python, - inputencoding = utf8/latin1, - basicstyle = \ttfamily\footnotesize, - keywordstyle = \color{ForestGreen}, - keywordstyle = [2]\color{magenta}, - commentstyle = \color{gray}\itshape, - stringstyle = \color{red!75}, - numberstyle = \scriptsize\ttfamily\color{Green}, - aboveskip = 4pt, - belowskip = 1pt, - tabsize = 4, - showstringspaces = false, - columns = fullflexible, - keepspaces = true, - breaklines = true, - breakatwhitespace = true - } -\fi - -%=======PYTHONLISTINGS========= OK !! -\tcbset{stylepythonlst/.style={% - enhanced,boxrule=1.25pt,% - leftupper=10pt, - sharp corners=downhill,arc=12pt, - before skip=12pt,after skip=12pt,% - top=10pt,bottom=1mm,rightupper=4pt,%leftupper=25pt, - attach boxed title to top right={yshift=-\tcboxedtitleheight}, - boxed title style={ - size=small,colback=ForestGreen!25,boxrule=1.25pt, - colframe=Green,boxsep=1.25pt, - sharp corners=downhill, - arc=12pt, - top=2pt,bottom=1pt,left=6pt,right=6pt - }, - colframe=Green,colback=ForestGreen!5,% - fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize, - title={\scriptsize\faPython}\:Code Python\vphantom{p}, - watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50, - listing only,listing engine=listings,% - } -} - -\tcbset{stylepythonlstnolineos/.style={% - stylepythonlst, - listing options={style=PLpython,xleftmargin=0pt,numbers=none} - } -} - -\tcbset{stylepythonlstlineos/.style={% - stylepythonlst, - listing options={style=PLpython,xleftmargin=16pt,numbers=left} - } -} - -\DeclareTCBListing{envcodepython}{ s O{\linewidth} m }{% * off pour numéros de lignes + {largeur} + <options tcbox> - \IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos}, - width=#2,#3 -} - -\NewTCBInputListing{\envcodepythonfichier}{ s O{\linewidth} m m }{ - \IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos}, - width=#2,#3, - listing file={#4}} - -%=========PYTHONPITON========== OK !! -\defKV[envpiton]{% - Largeur=\def\CODPITlargeur{#1},% - Alignement=\def\CODPITalign{#1} -} - -\setKVdefault[envpiton]{% - Largeur=\linewidth,% - Alignement=center,% - Lignes=true -} -\ifluatex - \RequirePackage{piton} - \NewPitonEnvironment{envcodepiton}{ O{} }% - {% - \useKVdefault[envpiton]% - \setKV[envpiton]{#1}% on paramètres les nouvelles clés et on les simplifie - \ifboolKV[envpiton]{Lignes}%si lignes=true - {\PitonOptions{left-margin=12.75pt,line-numbers}}% - {\PitonOptions{}}% - \begin{tcolorbox}[stylepythontex,leftupper=8pt,colframe=Green,colback=ForestGreen!5,width=\CODPITlargeur,fontlower=\small,\CODPITalign] - }% - {% - \end{tcolorbox}% - } -\fi - -%=========PSEUDOCODE=========== OK !! -%language pseudocode listings -\lstdefinestyle{pseudocodePL}{% - language=langnat, - basicstyle=\footnotesize\ttfamily, - numberstyle=\scriptsize\ttfamily\color{gray}, - keywordstyle=\bfseries, - stringstyle=\color{red!75}, - keepspaces=true, - tabsize=4,numbersep=10pt, - xleftmargin=14pt, - numbers=left, - morestring=[b]", - showstringspaces=false, - %showtabs=false, - escapeinside={(*}{*)} -} - -\lstdefinestyle{pseudocodenoPL}{% - language=langnat, - basicstyle=\footnotesize\ttfamily, - numberstyle=\scriptsize\ttfamily\color{gray}, - keywordstyle=\bfseries, - stringstyle=\color{red!75}, - keepspaces=true, - tabsize=4,numbersep=10pt, - numbers=none, - showstringspaces=false, - morestring=[b]", - %showtabs=true, - escapeinside={(*}{*)} -} - -%style tcbox pseudocode avec bannière hautdroite -\tcbset{stylepseudocodePL/.style={% - %fontupper=\small\sffamily,% - enhanced,boxrule=1.25pt,sharp corners=downhill,arc=12pt, - before skip=12pt,after skip=12pt,leftupper=10pt,top=8pt,bottom=2pt,rightupper=4pt,% - attach boxed title to top right={yshift=-\tcboxedtitleheight}, - boxed title style={ - size=small,colback=gray!25,boxrule=1.25pt, - colframe=darkgray,boxsep=1.25pt, - sharp corners=downhill, - arc=12pt, - top=2pt,bottom=1pt,left=6pt,right=6pt - }, - fonttitle=\color{darkgray}\ttfamily\footnotesize, - title={\scriptsize\faFileCode}\:\textit{Pseudo-Code}\vphantom{p}, - watermark text={\faCode},watermark opacity=0.175,watermark zoom=0.50, - } -} - -\ifluatex - \newcommand\algomathttPL[1]{\symtt{#1}} -\else - \newcommand\algomathttPL[1]{\mathtt{#1}} -\fi - -\DeclareTCBListing{envpseudocode}{ s O{12cm} !O{} }{% étoilée sans numéro, taille puis option... - width=#2,#3, - stylepseudocodePL, - listing only,listing engine=listings, - listing options={ - style=\IfBooleanTF{#1}{pseudocodenoPL}{pseudocodePL},%version étoilée sans numéro de lignes - aboveskip=2pt,belowskip=2pt, - columns=fullflexible, - literate={é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1% - {ú}{{\'u}}1 {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1% - {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1% - {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1% - {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1% - {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1% - {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1% - {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1% - {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1% - {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1% - {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1% - {€}{{\texteuro}}1 {£}{{\pounds}}1% - {=}{\textleftarrow}1 {==}{=}1% - {*}{$\algomathttPL{\times}$}{1}% - } -} - -%============FakeTerm=========== OK !! -%couleurs (inspirées par termsim !) -\definecolor{PLmpurple}{RGB}{48,10,36} -\definecolor{PLmgray}{RGB}{70,72,67} -\definecolor{PLogray}{RGB}{148,147,141} -\definecolor{PLoorange}{RGB}{233,101,56} -\definecolor{PLterminal}{RGB}{80,78,70} -\definecolor{PLlinux}{RGB}{0,39,51} -\definecolor{PLwinblue}{HTML}{1883D7} -\definecolor{PLosxgray}{HTML}{D8D6D9} - -%WINDOWS -\tcbset{PLfaketermwin/.style={% - enhanced,boxrule=1pt,sharp corners,before skip=12pt,after skip=12pt,% - colframe=PLwinblue,colback=black,colbacktitle=white,colupper=white,coltitle=black,% - titlerule=0.4pt,left=2pt,top=2pt,bottom=2pt,right=2pt,middle=2pt,% - fonttitle=\bfseries\small\sffamily - } -} - -\setKVdefault[fakeTERMwin]{titre={Terminal Windows}} - -\newcommand\PLcommandeswin{% - \begin{tikzpicture}[thick,scale=0.66] - \draw (0,0)--(1em,0) ; \draw (2em,0) rectangle (3em,1em) ; \draw (4em,1em)--(5em,0) (4em,0)--(5em,1em) ; - \end{tikzpicture}% -} - -\newcommand\termwintitre[1][]{% - \restoreKV[fakeTERMwin] - \setKV[fakeTERMwin]{#1} - \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={X[l]r}} - {\footnotesize\faTerminal}~~\useKV[fakeTERMwin]{titre} & \PLcommandeswin \\ % - \end{tblr} -} - -\DeclareTCBListing{PLtermwin}{ O{\linewidth} m !O{} }{%[taille] puis {titre=...} puis [option] - PLfaketermwin,title={\termwintitre[#2]},% - listing only,listing engine=listings,% - listing options={style=tcblatex,language={},basicstyle=\footnotesize\ttfamily},% - width=#1,#3 -} - -%LINUX -\newcommand{\PLUbuntuWhite}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[PLmgray] (0,0.25em) circle[radius=0.5em] ; - \end{tikzpicture}% -} -\newcommand{\PLUbuntuMin}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[color=PLogray!50!white] (0,0.25em) circle[radius=0.5em]; - \draw[PLterminal](-0.35em,0.25em)--(0.35em,0.25em); - \end{tikzpicture}% -} -\newcommand{\PLUbuntuClose}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[color=PLoorange!70!white] (0,0.25em) circle[radius=0.5em]; - \draw[PLterminal] (-0.32em,-0.07em)--(0.32em,0.57em); - \draw[PLterminal] (-0.32em,0.57em)--(0.32em,-0.07em); - \end{tikzpicture}% -} -\newcommand{\PLUbuntuMax}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[color=PLogray!50!white] (0,0.25em) circle[radius=0.5em]; - \draw[PLterminal] (-0.32em,0.5em) rectangle (0.32em,0); - \end{tikzpicture}% -} - -\tcbset{PLtermlinux/.style={% - enhanced,boxrule=1pt,arc=4pt,before skip=12pt,after skip=12pt,% - colframe=PLmgray,colback=PLmpurple,colbacktitle=PLmgray,colupper=white,coltitle=white,% - titlerule=0.4pt,left=2pt,top=2pt,bottom=2pt,right=2pt,middle=2pt,% - fonttitle=\bfseries\small\sffamily - } -} - -\setKVdefault[fakeTERMnux]{titre={Terminal UNiX}} - -\newcommand\termnuxtitre[1][]{% - \restoreKV[fakeTERMnux] - \setKV[fakeTERMnux]{#1} - \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={lX[c]r}} - \PLUbuntuWhite~~\PLUbuntuWhite~~\PLUbuntuWhite & \vphantom{p}\useKV[fakeTERMnux]{titre} & \PLUbuntuMin~~\PLUbuntuMax~~\PLUbuntuClose \\ - \end{tblr} -} - -\DeclareTCBListing{PLtermunix}{ O{\linewidth} m !O{} }{%[taille] puis {titre=...} puis [option] - PLtermlinux,title={\termnuxtitre[#2]},% - listing only,listing engine=listings,% - listing options={style=tcblatex,language={},basicstyle=\footnotesize\ttfamily},% - width=#1,#3 -} - -%OSX -\tcbset{PLfaketermosx/.style={% - enhanced,boxrule=1pt,arc=6pt,before skip=12pt,after skip=12pt,% - colframe=PLosxgray,colback=lightgray!15,colbacktitle=PLosxgray,colupper=black,coltitle=black,% - titlerule=0.4pt,left=2pt,top=2pt,bottom=2pt,right=2pt,middle=2pt,% - fonttitle=\bfseries\small\sffamily - } -} - -\newcommand{\PLOSXRed}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[red] (0,0.25em) circle[radius=0.45em] ; - \end{tikzpicture}% -} - -\newcommand{\PLOSXOrange}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[orange] (0,0.25em) circle[radius=0.45em] ; - \end{tikzpicture}% -} - -\newcommand{\PLOSXGreen}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[ForestGreen] (0,0.25em) circle[radius=0.45em] ; - \end{tikzpicture}% -} - -\newcommand{\PLOSXLG}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[PLosxgray] (0,0.25em) circle[radius=0.45em] ; - \end{tikzpicture}% -} - -\setKVdefault[fakeTERMosx]{titre={Terminal OSX}} - -\newcommand\termosxtitre[1][]{% - \restoreKV[fakeTERMosx] - \setKV[fakeTERMosx]{#1} - \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={lX[c]r}} - \PLOSXRed~\PLOSXOrange~\PLOSXGreen & \vphantom{p}\useKV[fakeTERMosx]{titre} & \PLOSXLG~\PLOSXLG~\PLOSXLG \\ - \end{tblr} -} - -\DeclareTCBListing{PLtermosx}{ O{\linewidth} m !O{} }{%[taille] puis {titre=...} puis [option] - PLfaketermosx,title={\termosxtitre[#2]},% - listing only,listing engine=listings,% - listing options={style=tcblatex,language={},basicstyle=\footnotesize\ttfamily},% - width=#1,#3 -} - -%============CartoucheCapytale========= OK !! -\definecolor{vertcapyt}{rgb}{0.0,0.5,0.0} -%\definecolor{vertcapyt}{HTML}{008000} -\DeclareTotalTCBox{\liencapytale}{ s O{} m } - {enhanced,size=fbox,on line,arc=3pt,colback=vertcapyt,colframe=vertcapyt,fontupper=\IfBooleanTF{#1}{\ttfamily}{\sffamily}\bfseries,colupper=white}% - {#3#2~{\scriptsize\faLink}} - -%============PaveDroitTikZ============= OK !! -\defKV[paramspave]{% - largeur=\xdef\PFPaveLg{#1},% - profondeur=\xdef\PFPavePf{#1},% - hauteur=\xdef\PFPaveHt{#1},% - angle=\xdef\PFPaveAngl{#1},% - fuite=\xdef\PFPaveFuite{#1},% - sommets=\def\PFPaveSommets{#1},% - epaisseur=\xdef\PFPaveThick{#1} -} -\setKVdefault[paramspave]{% - aff=false,% - plein=false,% - largeur=2,% - profondeur=1,% - hauteur=1.25,% - angle=30,% - fuite=0.5,% - epaisseur=thick,% - sommets=A§B§C§D§E§F§G§H,% - cube=false -} - -\newcommand\pavePL[1][]{% - \useKVdefault[paramspave]% - \setKV[paramspave]{#1}% - \ifboolKV[paramspave]{cube} - {\xdef\PFPavePf{\PFPaveLg}% - \xdef\PFPaveHt{\PFPaveLg}} - {} - \setsepchar{§}% - \readlist\PFListeSommets\PFPaveSommets - \itemtomacro\PFListeSommets[1]\PaveA - \itemtomacro\PFListeSommets[2]\PaveB - \itemtomacro\PFListeSommets[3]\PaveC - \itemtomacro\PFListeSommets[4]\PaveD - \itemtomacro\PFListeSommets[5]\PaveE - \itemtomacro\PFListeSommets[6]\PaveF - \itemtomacro\PFListeSommets[7]\PaveG - \itemtomacro\PFListeSommets[8]\PaveH - %les nœuds du pave - \coordinate (\PaveA) at (0,0) ; - \coordinate (\PaveB) at ({\PFPaveLg},0) ; - \coordinate (\PaveC) at ($(\PaveB) + ({\PFPaveAngl}:{\PFPaveFuite*\PFPavePf})$) ; - \coordinate (\PaveD) at ($(\PaveA) + ({\PFPaveAngl}:{\PFPaveFuite*\PFPavePf})$) ; - \coordinate (\PaveE) at ($(\PaveA) + (0,{\PFPaveHt})$) ; - \coordinate (\PaveF) at ($(\PaveB) + (0,{\PFPaveHt})$) ; - \coordinate (\PaveG) at ($(\PaveC) + (0,{\PFPaveHt})$) ; - \coordinate (\PaveH) at ($(\PaveD) + (0,{\PFPaveHt})$) ; - \ifboolKV[paramspave]{aff} - {\draw (\PaveA) node[below left] {\PaveA} ; - \draw (\PaveB) node[below right] {\PaveB} ; - \draw (\PaveC) node[above right] {\PaveC} ; - \ifboolKV[paramspave]{plein} - {} - {\draw (\PaveD) node[above left] {\PaveD} ;} - \draw (\PaveE) node[below left] {\PaveE} ; - \draw (\PaveF) node[below right] {\PaveF} ; - \draw (\PaveG) node[above right] {\PaveG} ; - \draw (\PaveH) node[above left] {\PaveH} ;} - {}%on affiche rien - \draw[\PFPaveThick] (\PaveA)--(\PaveB)--(\PaveF)--(\PaveE)--cycle - (\PaveB)--(\PaveC)--(\PaveG)--(\PaveF)--cycle - (\PaveG)--(\PaveH)--(\PaveE) ; - \ifboolKV[paramspave]{plein} - {} - {\draw[dashed,\PFPaveThick] (\PaveA)--(\PaveD)--(\PaveC) - (\PaveD)--(\PaveH) ;} -} - -%============TétraèdreTikZ============= OK !! -\defKV[paramstetra]{% - largeur=\xdef\PFTetraLg{#1},% - profondeur=\xdef\PFTetraPf{#1},% - hauteur=\xdef\PFTetraHt{#1},% - alpha=\xdef\PFTetraAlpha{#1},% - beta=\xdef\PFTetraBeta{#1},% - sommets=\def\PFTetraSommets{#1},% - epaisseur=\xdef\PFTetraThick{#1} -} -\setKVdefault[paramstetra]{% - aff=false,% - plein=false,% - largeur=4,% - profondeur=1.25,% - hauteur=3,% - alpha=40,% - beta=60,% - epaisseur=thick,% - sommets=A§B§C§D,% -} - -\newcommand\tetraPL[1][]{% - \useKVdefault[paramstetra]% - \setKV[paramstetra]{#1}% - \setsepchar{§}% - \readlist\PFListeSommets\PFTetraSommets - \itemtomacro\PFListeSommets[1]\TetraA - \itemtomacro\PFListeSommets[2]\TetraB - \itemtomacro\PFListeSommets[3]\TetraC - \itemtomacro\PFListeSommets[4]\TetraD - %les nœuds du tétraèdre - \coordinate (\TetraA) at (0,0) ; - \coordinate (\TetraB) at ($(\TetraA) + ({-\PFTetraAlpha}:{\PFTetraPf})$) ; - \coordinate (\TetraC) at ({\PFTetraLg},0) ; - \coordinate (\TetraD) at ($(\TetraA) + ({\PFTetraBeta}:{\PFTetraHt})$) ; - \ifboolKV[paramstetra]{aff} - {\draw (\TetraA) node[left] {\TetraA} ; - \draw (\TetraB) node[below] {\TetraB} ; - \draw (\TetraC) node[right] {\TetraC} ; - \draw (\TetraD) node[above] {\TetraD} ;} - {}%on affiche rien - \draw[\PFTetraThick] (\TetraA)--(\TetraD)--(\TetraC)--(\TetraB)--cycle - (\TetraD)--(\TetraB) ; - \ifboolKV[paramstetra]{plein} - {} - {\draw[dashed,\PFTetraThick] (\TetraA)--(\TetraC) ;} -} - -%============EnsembleList============== OK !! -\defKV[kvensemble]{% - sep=\def\PLenssep{#1},% - option=\def\PLensopt{#1} -} - -\setKVdefault[kvensemble]{% - sep={;},% - mathpunct=true,% - option={} -} - -\newcommand\ensPL[2][1]{% - \useKVdefault[kvensemble]% - \setKV[kvensemble]{#1}% - \ifboolKV[kvensemble]{mathpunct}% - {\left\lbrace \PLensopt{} \mathpunct{} \StrSubstitute{#2}{/}{\mathpunct{}{\PLenssep}\mathpunct{}} \mathpunct{} \right\rbrace}% - {\left\lbrace \PLensopt{} \StrSubstitute{#2}{/}{{\PLenssep}} \right\rbrace} -} - -%===============SimplFrac============== OK !! -\DeclareDocumentCommand\convertfraction{ O{} m }{% argument optionnel [d ou t] puis argument mandataire {calcul ou fraction} - \def\calculargument{\xintPRaw{\xintIrr{\xinteval{#2}}}}%on calcule et on transforme en A/B - \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît - {%si oui := fraction - \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur - \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur - \ifblank{#1}{\ensuremath{\frac{\numerateur}{\denominateur}}}{}%si l'argument optionnel est vide - \IfStrEq{#1}{d}{\ensuremath{\dfrac{\numerateur}{\denominateur}}}{}%si l'arg opt est d - \IfStrEq{#1}{t}{\ensuremath{\tfrac{\numerateur}{\denominateur}}}{}%si l'arg opt est t - }{%si non := entier - \num{\calculargument}%on affiche l'entier, avec le package siunitx - } -} - -%================CabWeb================ OK !! -\defKV[webrecurr]{% - fct=\def\PLRecurfct{#1},% - nom=\def\PLRecurnom{#1},% - no=\def\PLRecurno{#1},% - nb=\def\PLRecurnb{#1},% - uno=\def\PLRecuruno{#1},% - poslabel=\def\PLRecurposlab{#1},% - decallabel=\def\PLRecuroffset{#1},% - taillelabel=\def\PLRecurlabelsize{#1},% -} - -\setKVdefault[webrecurr]{ - no=0,% - nom=u,% - nb=5,% - afftermes=true,% - poslabel=below,% - decallabel=6pt,% - taillelabel=\small -} - -%\newcommand\recurr[1][]{% - \NewDocumentCommand\recurrPL{ O{} O{thick,color=magenta} O{dotted} }{ - %<clés> + <style cabweb> + <style supplémentaire pointillés> - \useKVdefault[webrecurr]% - \setKV[webrecurr]{#1}% on paramètres les nouvelles clés et on les simplifie - \foreach \i [remember=\i as \x (initially \PLRecuruno)] in {1,...,\PLRecurnb}{% - \def\y{\fpeval{\PLRecurfct}} - %test de la position courbe / bissectrice ? - \ifnum \i=1 - \newdimen \X - \newdimen \Y - \X = \x pt - \Y = \y pt - \ifdim \Y < \X - \draw[#2] (\x,\y)--(\y,\y) ; - \else - \draw[#2] (\x,\x)--(\x,\y)--(\y,\y) ; - \fi - \else - \draw[#2] (\x,\x)--(\x,\y)--(\y,\y) ; - \fi - \ifboolKV[webrecurr]{afftermes} - {\def\indice{\fpeval{\i+\PLRecurno-1}} - \draw[#2,#3] (\x,\y)--(\x,0) node[\PLRecurposlab=\PLRecuroffset,font=\PLRecurlabelsize]{$\PLRecurnom_\indice$};} - {} - \def\i{\fpeval{\y}}% - } - } - -%================CercleTrigo=========== OK !! -\defKV[cercletrigo]{% - rayon=\def\PLcerclerayon{#1},% - epaisseur=\def\PLcerclethick{#1},% - epaisseursol=\def\PLcerclesolthick{#1},% - marge=\def\PLcerclemarge{#1},% - taillevaleurs=\def\PLcerclevaleurs{#1},% - tailleangles=\def\PLcercleangles{#1},% - couleurfond=\def\PLcerclefond{#1},% - decal=\def\PLcercledecal{#1},% - cos=\def\PLcerclevalcos{#1},% - sin=\def\PLcerclevalsin{#1},% - couleursol=\def\PLcerclecoleq{#1} -} - -\setKVdefault[cercletrigo]{ - rayon=3,% - marge=0.25,% - decal=10pt,% - epaisseur=thick,% - epaisseursol=very thick,% - affangles=true,% - afftraits=true,% - affvaleurs=true,% - moinspi=true,% - taillevaleurs=\scriptsize,% - tailleangles=\footnotesize,% - couleurfond=white,% - equationcos=false,% - equationsin=false,% - cos=45,% - sin=30,% - couleursol=blue -} - -\newcommand\cercletrigoPL[1][]{% - \useKVdefault[cercletrigo] - \setKV[cercletrigo]{#1} - \tikzset{PLval/.style={inner sep=1pt,font=\PLcerclevaleurs,fill=\PLcerclefond}} - \tikzset{PLagl/.style={inner sep=1pt,font=\PLcercleangles,fill=\PLcerclefond}} - %valeurs remarquables - \ifboolKV[cercletrigo]{affangles} - {%valeursdudessus - \draw ({\PLcerclerayon},0) node[above right=2pt,font=\PLcercleangles] {0} ; - \draw ($(30:{\PLcerclerayon})+(30:\PLcercledecal)$) node[PLagl] {$\tfrac{\pi}{6}$} ; - \draw ($(45:{\PLcerclerayon})+(45:\PLcercledecal)$) node[PLagl] {$\tfrac{\pi}{4}$} ; - \draw ($(60:{\PLcerclerayon})+(60:\PLcercledecal)$) node[PLagl] {$\tfrac{\pi}{3}$} ; - \draw (0,{\PLcerclerayon}) node[above right=2pt,PLagl] {$\tfrac{\pi}{2}$} ; - \draw ({-\PLcerclerayon},0) node[above left=2pt,PLagl] {$\pi$} ; - \draw ($(150:{\PLcerclerayon})+(150:\PLcercledecal)$) node[PLagl] {$\tfrac{5\pi}{6}$} ; - \draw ($(135:{\PLcerclerayon})+(135:\PLcercledecal)$) node[PLagl] {$\tfrac{3\pi}{4}$} ; - \draw ($(120:{\PLcerclerayon})+(120:\PLcercledecal)$) node[PLagl] {$\tfrac{2\pi}{3}$} ; - \draw ($(30:{\PLcerclerayon})+(30:\PLcercledecal)$) node[PLagl] {$\tfrac{\pi}{6}$} ; - %valeursdudessous - \draw ($(-30:{\PLcerclerayon})+(-30:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{moinspi}{-}{11}\pi}{6}$} ; - \draw ($(-45:{\PLcerclerayon})+(-45:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{moinspi}{-}{7}\pi}{4}$} ; - \draw ($(-60:{\PLcerclerayon})+(-60:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{moinspi}{-}{5}\pi}{3}$} ; - \draw (0,{-\PLcerclerayon}) node[below right=2pt,PLagl] {$\tfrac{\ifboolKV[cercletrigo]{moinspi}{-}{3}\pi}{2}$} ; - \draw ($(-120:{\PLcerclerayon})+(-120:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{moinspi}{-2}{4}\pi}{3}$} ; - \draw ($(-135:{\PLcerclerayon})+(-135:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{moinspi}{-3}{5}\pi}{4}$} ; - \draw ($(-150:{\PLcerclerayon})+(-150:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{moinspi}{-5}{7}\pi}{6}$} ; - \ifboolKV[cercletrigo]{moinspi} - {\draw ({-\PLcerclerayon},0) node[below left=2pt,PLagl] {$-\pi$} ;} - {\draw ({\PLcerclerayon},0) node[below right=2pt,PLagl] {$2\pi$} ;} - }% - {} - %tracés - \draw[\PLcerclethick,->] ({-\PLcerclerayon-\PLcerclemarge},0)--({\PLcerclerayon+\PLcerclemarge},0) ; - \draw[\PLcerclethick,->] (0,{-\PLcerclerayon-\PLcerclemarge})--(0,{\PLcerclerayon+\PLcerclemarge}) ; - \draw[\PLcerclethick] (0,0) circle[radius=\PLcerclerayon] ; - \draw (0,0) node[below left=2pt,PLval] {0} ; - %equations - \ifboolKV[cercletrigo]{equationcos} - {%traitsdeconstructioncos - \draw[\PLcerclethick,dotted,gray] (-45:\PLcerclerayon) -- (135:\PLcerclerayon) - (-135:\PLcerclerayon) -- (45:\PLcerclerayon) - (30:\PLcerclerayon) -- (150:\PLcerclerayon) - (-30:\PLcerclerayon) -- (-150:\PLcerclerayon) - (-60:\PLcerclerayon)--(60:\PLcerclerayon) - (-120:\PLcerclerayon)--(120:\PLcerclerayon) ; - \draw[\PLcerclesolthick,\PLcerclecoleq] ({\PLcerclevalcos}:\PLcerclerayon)--({-\PLcerclevalcos}:\PLcerclerayon) ; - \filldraw[\PLcerclecoleq] ({\PLcerclevalcos}:\PLcerclerayon) circle[radius=2pt] ({-\PLcerclevalcos}:\PLcerclerayon) circle[radius=2pt] ;% - } - {} - \ifboolKV[cercletrigo]{equationsin} - {%traitsdeconstructioncos - \draw[\PLcerclethick,dotted,gray] (-45:\PLcerclerayon) -- (135:\PLcerclerayon) - (-135:\PLcerclerayon) -- (45:\PLcerclerayon) - (30:\PLcerclerayon) -- (150:\PLcerclerayon) - (-30:\PLcerclerayon) -- (-150:\PLcerclerayon) - (-60:\PLcerclerayon)--(60:\PLcerclerayon) - (-120:\PLcerclerayon)--(120:\PLcerclerayon) ; - \draw[\PLcerclesolthick,\PLcerclecoleq] ({\PLcerclevalsin}:\PLcerclerayon)--({180-\PLcerclevalsin}:\PLcerclerayon) ; - \filldraw[\PLcerclecoleq] ({\PLcerclevalsin}:\PLcerclerayon) circle[radius=2pt] ({180-\PLcerclevalsin}:\PLcerclerayon) circle[radius=2pt] ;% - } - {} - %valeurs - \ifboolKV[cercletrigo]{affvaleurs} - {% - \draw ({0.5*\PLcerclerayon},0) node[below=2pt,PLval] {$\tfrac{1}{2}$} ; - \draw ({-0.5*\PLcerclerayon},0) node[below=2pt,PLval] {$-\tfrac{1}{2}$} ; - \draw (0,{0.5*\PLcerclerayon}) node[left=2pt,PLval] {$\tfrac{1}{2}$} ; - \draw (0,{-0.5*\PLcerclerayon}) node[left=2pt,PLval] {$-\tfrac{1}{2}$} ; - \draw ({0.866*\PLcerclerayon},0) node[below=2pt,PLval] {$\tfrac{\sqrt{3}}{2}$} ; - \draw ({-0.866*\PLcerclerayon},0) node[below=2pt,PLval] {$-\tfrac{\sqrt{3}}{2}$} ; - \draw (0,{0.866*\PLcerclerayon}) node[left=2pt,PLval] {$\tfrac{\sqrt{3}}{2}$} ; - \draw (0,{-0.866*\PLcerclerayon}) node[left=2pt,PLval] {$-\tfrac{\sqrt{3}}{2}$} ; - \draw ({0.707*\PLcerclerayon},0) node[above=2pt,PLval] {$\tfrac{\sqrt{2}}{2}$} ; - \draw ({-0.707*\PLcerclerayon},0) node[above=2pt,PLval] {$-\tfrac{\sqrt{2}}{2}$} ; - \draw (0,{0.707*\PLcerclerayon}) node[right=2pt,PLval] {$\tfrac{\sqrt{2}}{2}$} ; - \draw (0,{-0.707*\PLcerclerayon}) node[right=2pt,PLval] {$-\tfrac{\sqrt{2}}{2}$} ; - }% - {} - %valeurs remarquables en dernier - \ifboolKV[cercletrigo]{afftraits} - {% - \draw[\PLcerclethick,dotted,gray] (-120:\PLcerclerayon) rectangle (60:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-150:\PLcerclerayon) rectangle (30:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-135:\PLcerclerayon) rectangle (45:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-120:\PLcerclerayon)--(60:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-150:\PLcerclerayon)--(30:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-135:\PLcerclerayon)--(45:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (120:\PLcerclerayon)--(-60:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (150:\PLcerclerayon)--(-30:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (135:\PLcerclerayon)--(-45:\PLcerclerayon) ; - }% - {} -} - -%==================AideTds============= OK !! -\defKV[aidetds]{% - code=\def\tdsparam{#1},% - couleur=\def\tdscouleur{#1},% - racines=\def\tdsracine{#1},% - largeur=\def\tdslarg{#1},% - hauteur=\def\tdshaut{#1} -} - -\setKVdefault[aidetds]{% - code=da+, - couleur=red,% - largeur=2,% - hauteur=1,% - cadre=true,% - racines=2 -} - -\NewDocumentCommand\schematdsaff{ s m m m m }{%pour les droites (interne) - % * = étoilée -> a négatif - % #2 = couleur - % #3 = largeur - % #4 = hauteur - % #5 = racine - \IfBooleanTF{#1}%si étoile := droite qui descend - {% - \def\possgnavant{above right}\def\possgnapres{below left}\def\sgnavant{\strut+}\def\sgnapres{\strut-}% - \draw[thick,#2] ({-0.5*#3},{0.5*#4})--({0.5*#3},{-0.5*#4}); - } - {% - \def\possgnavant{below right}\def\possgnapres{above left}\def\sgnavant{\strut-}\def\sgnapres{\strut+}% - \draw[thick,#2] ({-0.5*#3},{-0.5*#4})--({0.5*#3},{0.5*#4}); - } - \draw[#2] ({-0.5*#3},0) node[inner sep=0pt,\possgnavant=1pt,font=\scriptsize] {\textcircled{$\sgnavant$}}; - \draw[#2] ({0.5*#3},0) node[inner sep=0pt,\possgnapres=1pt,font=\scriptsize] {\textcircled{$\sgnapres$}}; - \draw[#2] (0,0) node[inner sep=0pt,above=3pt,font=\scriptsize] {$\strut#5$} ; - \filldraw[#2] (0,0) circle[radius=2pt] ; -} - -\NewDocumentCommand\schematdsparab{ m m m m m o }{%pour les paraboles (interne) - % #1 = signe de a (1 ou -1) ? - % #2 = couleur - % #3 = largeur - % #4 = hauteur - % #5 = nb racine - % #6 = liste racines (option) - \xintifboolexpr{ #1 > 0 'and' #5 == 2 } %a>0 et delta>0 - {% - \StrCut{#6}{/}{\xun}{\xdeux} - \draw[thick,#2] ({-0.375*#3},{0.5*#4}) parabola bend (0,{-0.5*#4}) ({0.375*#3},{0.5*#4}) ; - \draw[#2] ({-0.5*#3},0) node[above right=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - \draw[#2] ({0.5*#3},0) node[above left=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - \draw[#2] (0,0) node[below=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - \filldraw[#2] ({0.2625*#3},0) circle[radius=2pt] node[below right=1pt,inner sep=0pt,font=\scriptsize] {$\strut\xdeux$}; - \filldraw[#2] ({-0.2625*#3},0) circle[radius=2pt] node[below left=1pt,inner sep=0pt,font=\scriptsize] {$\strut\xun$};% - } - {} - \xintifboolexpr{ #1 < 0 'and' #5 == 2 } %a<0 et delta>0 - {% - \StrCut{#6}{/}{\xun}{\xdeux} - \draw[thick,#2] ({-0.375*#3},{-0.5*#4}) parabola bend (0,{0.5*#4}) ({0.375*#3},{-0.5*#4}) ; - \draw[#2] ({-0.5*#3},0) node[below right=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - \draw[#2] ({0.5*#3},0) node[below left=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - \draw[#2] (0,0) node[above=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - \filldraw[#2] ({0.2625*#3},0) circle[radius=2pt] node[above right=1pt,inner sep=0pt,font=\scriptsize] {$\strut\xdeux$}; - \filldraw[#2] ({-0.2625*#3},0) circle[radius=2pt] node[above left=1pt,inner sep=0pt,font=\scriptsize] {$\strut\xun$};% - } - {} - \xintifboolexpr{ #1 > 0 'and' #5 == 1 } %a>0 et delta=0 - {% - \draw[thick,#2] ({-0.375*#3},{0.5*#4}) parabola bend (0,0) ({0.375*#3},{0.5*#4}) ; - \filldraw[#2] (0,0) circle[radius=2pt] node[below=3pt,inner sep=1pt,font=\scriptsize] {$#6$}; - \draw[#2] (0,0) node[above=3pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - } - {} - \xintifboolexpr{ #1 < 0 'and' #5 == 1 } %a>0 et delta=0 - {% - \draw[thick,#2] ({-0.375*#3},{-0.5*#4}) parabola bend (0,0) ({0.375*#3},{-0.5*#4}) ; - \filldraw[#2] (0,0) circle[radius=2pt] node[above=3pt,inner sep=0pt,font=\scriptsize] {$#6$}; - \draw[#2] (0,0) node[below=3pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - } - {} - \xintifboolexpr{ #1 > 0 'and' #5 == 0 } %a>0 et delta<0 - {% - \draw[thick,#2] ({-0.375*#3},{0.5*#4}) parabola bend (0,{0.075*#4}) ({0.375*#3},{0.5*#4}) ; - \draw[#2] (0,{0.075*#4}) node[above=2pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - } - {} - \xintifboolexpr{ #1 < 0 'and' #5 == 0 } %a>0 et delta<0 - {% - \draw[thick,#2] ({-0.375*#3},{-0.5*#4}) parabola bend (0,{-0.075*#4}) ({0.375*#3},{-0.5*#4}) ; - \draw[#2] (0,{-0.075*#4}) node[below=2pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - } - {} -} - -\newcommand\aidesignePL[1][]{% - \useKVdefault[aidetds] - \setKV[aidetds]{#1} - %simplification des codes - \IfEq{\tdsparam}{da+}{\def\xcode{1}}{} - \IfEq{\tdsparam}{da-}{\def\xcode{-1}}{} - \IfEq{\tdsparam}{pa+d+}{\def\xcode{12}}{} - \IfEq{\tdsparam}{pa-d+}{\def\xcode{-12}}{} - \IfEq{\tdsparam}{pa+d0}{\def\xcode{11}}{} - \IfEq{\tdsparam}{pa-d0}{\def\xcode{-11}}{} - \IfEq{\tdsparam}{pa+d-}{\def\xcode{10}}{} - \IfEq{\tdsparam}{pa-d-}{\def\xcode{-10}}{} - %cadre si booléen true - \ifboolKV[aidetds]{cadre} - {\draw[lightgray] ({-0.5*\tdslarg},{-0.5*\tdshaut}) rectangle ({0.55*\tdslarg},{0.5*\tdshaut}) ;} - {} - %restriction de la petite fenêtre - \clip ({-0.5*\tdslarg},{-0.5*\tdshaut}) rectangle ({0.55*\tdslarg},{0.5*\tdshaut}) ; - %axe (Ox) - \draw[thick,->] ({-0.5*\tdslarg},0)--({0.55*\tdslarg},0); - %1er degré a+ code = 1 - \ifnum\xcode=1 - \schematdsaff{\tdscouleur}{\tdslarg}{\tdshaut}{\tdsracine} - \fi - %1er degré a- code = -1 - \ifnum\xcode=-1 - \schematdsaff*{\tdscouleur}{\tdslarg}{\tdshaut}{\tdsracine} - \fi - %2d degré a+delta+ code = 12 - \ifnum\xcode=12 - \schematdsparab{1}{\tdscouleur}{\tdslarg}{\tdshaut}{2}[\tdsracine] - \fi - %2d degré a-delta+ code = -12 - \ifnum\xcode=-12 - \schematdsparab{-1}{\tdscouleur}{\tdslarg}{\tdshaut}{2}[\tdsracine] - \fi - %2d degré a+delta0 code = 11 - \ifnum\xcode=11 - \schematdsparab{1}{\tdscouleur}{\tdslarg}{\tdshaut}{1}[\tdsracine] - \fi - %2d degré a-delta0 code = -11 - \ifnum\xcode=-11 - \schematdsparab{-1}{\tdscouleur}{\tdslarg}{\tdshaut}{1}[\tdsracine] - \fi - %2d degré a+delta- code = 10 - \ifnum\xcode=10 - \schematdsparab{1}{\tdscouleur}{\tdslarg}{\tdshaut}{0} - \fi - %2d degré a-delta- code = -10 - \ifnum\xcode=-10 - \schematdsparab{-1}{\tdscouleur}{\tdslarg}{\tdshaut}{0} - \fi -} - -%pour l'interaction avec tkz-tab -\defKV[aidetdstkz]{% - echelle=\def\tdstkzscale{#1},% - decal=\def\tdstkzoffset{#1} -} - -\setKVdefault[aidetdstkz]{% - echelle=1,% - decal=1.25 -} - -\NewDocumentCommand\aidesignetkztabPL{ o m O{0.85} O{1.5} }{% - %#1 = codeaidetikz - %#2 = numligne - %#3 = échelle - %#4 = décalage - %\shorthandoff{:}\shorthandoff{!} %bizzzzzzzzare - %\NoAutoSpacing - \coordinate (Z) at ($(T2#2)!.5!(T2\the\numexpr#2+1\relax)$) ; - %\shorthandon{:}\shorthandon{!} - \path (Z.east) + (#4,0) pic[right,scale=#3,every node/.style={scale=#3}] {code={\aidesignePL[#1]}} ; -} - -%=============RegressionLinéaire======= OK !! -%calcul des paramètres -\defKV[coeffreglin]{% - nomcoeffa=\def\RegLinCoeffa{#1},% - nomcoeffb=\def\RegLinCoeffb{#1},% - nomcoeffr=\def\RegLinCoeffr{#1},% - nomcoeffrd=\def\RegLinCoeffrd{#1},% - nomxmin=\def\RegLinCoeffXmin{#1},% - nomxmax=\def\RegLinCoeffXmax{#1} -} - -\setKVdefault[coeffreglin]{% - nomcoeffa=COEFFa,% - nomcoeffb=COEFFb,% - nomcoeffr=COEFFr,% - nomcoeffrd=COEFFrd,% - nomxmin=LXmin,% - nomxmax=LXmax -} - -\newcommand\PLreglin[3][]{ - \useKVdefault[coeffreglin] - \setKV[coeffreglin]{#1}% on paramètres les nouvelles clés et on les simplifie - %xmin et xmax - \expandafter\def\csname\RegLinCoeffXmin\endcsname{\fpeval{min(#2)}} - \expandafter\def\csname\RegLinCoeffXmax\endcsname{\fpeval{max(#2)}} - %listes des données - \def\xliste{#2} - \def\yliste{#3} - \readlist*\LX{\xliste} - \readlist*\LY{\yliste} - %taille des listes - \def\LNB{\inteval{\LXlen}} - %somme des LX et des LY OK - \xdef\LXSomme{0} - \xdef\LYSomme{0} - \foreach \i in {1,2,...,\LNB}{ - \xdef\LXSomme{\fpeval{\LXSomme+\LX[\i]}} - } - \foreach \i in {1,2,...,\LNB}{ - \xdef\LYSomme{\fpeval{\LYSomme+\LY[\i]}} - } - %moyenne des LX et des LY OK - \xdef\LXmoy{\fpeval{\LXSomme/\LNB}} - \xdef\LYmoy{\fpeval{\LYSomme/\LNB}} - %variance des LX et des LY OK - \xdef\LXvar{0} - \foreach \i in {1,2,...,\LNB}{ - \xdef\LXvar{\fpeval{\LXvar+(\LX[\i]-\LXmoy)*(\LX[\i]-\LXmoy)}} - } - \xdef\LXvar{\fpeval{\LXvar/\LNB}} - \xdef\LYvar{0} - \foreach \i in {1,2,...,\LNB}{ - \xdef\LYvar{\fpeval{\LYvar+(\LY[\i]-\LYmoy)*(\LY[\i]-\LYmoy)}} - } - \xdef\LYvar{\fpeval{\LYvar/\LNB}} - %covariance des XY OK - \xdef\LXYvar{0} - \foreach \i in {1,2,...,\LNB}{ - \xdef\LXYvar{\fpeval{\LXYvar+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}} - } - \xdef\LXYvar{\fpeval{\LXYvar/\LNB}} - %COEFFS OK - \expandafter\def\csname\RegLinCoeffa\endcsname{\fpeval{\LXYvar/\LXvar}} - \expandafter\def\csname\RegLinCoeffb\endcsname{\fpeval{\LYmoy-\csname\RegLinCoeffa\endcsname*\LXmoy}} - \expandafter\def\csname\RegLinCoeffr\endcsname{\fpeval{\LXYvar/sqrt(\LXvar*\LYvar)}} - \expandafter\def\csname\RegLinCoeffrd\endcsname{\fpeval{\csname\RegLinCoeffr\endcsname*\csname\RegLinCoeffr\endcsname}} -} - -%pour un nuage en TiKz -\defKV[nuagereglin]{% - couleur=\def\RegLinNuageCouleur{#1},% - taille=\def\RegLinNuageTaille{#1}, - Ox=\def\RegLinNuageOx{#1},% - Oy=\def\RegLinNuageOy{#1},% -} - -\setKVdefault[nuagereglin]{% - couleur=teal,% - taille=2pt,% - Ox=0,% - Oy=0 -} - -\newcommand\PLreglinpts[3][]{% - \useKVdefault[nuagereglin] - \setKV[nuagereglin]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\xliste{#2} - \def\yliste{#3} - \readlist*\LX{\xliste} - \readlist*\LY{\yliste} - %taille des listes - \def\LNB{\inteval{\LXlen}} - \foreach \i in {1,2,...,\LNB} {\filldraw[\RegLinNuageCouleur] ({\LX[\i]-\RegLinNuageOx},{\LY[\i]-\RegLinNuageOy}) circle[radius=\RegLinNuageTaille] ;} -} - -%=============ConversionsBases========= OK !! -%dec->bin avec blocs de 4 chiffres -\setKVdefault[CONVDECBIN]{% - affbase=true -} -\NewDocumentCommand\PLconvdecbin{ s O{} m }{% - \useKVdefault[CONVDECBIN] - \setKV[CONVDECBIN]{#2}% on paramètres les nouvelles clés et on les simplifie - \def\resbrut{\xintDecToBin{#3}} - \StrLen{\resbrut}[\nbchiffres] - \def\nbgrp{\fpeval{4*ceil(\nbchiffres/4,0)}} - \IfBooleanTF{#1} - {\num{#3}\ifboolKV[CONVDECBIN]{affbase}{_{10}}{}=\num[digit-group-size=4]{\resbrut}\ifboolKV[CONVDECBIN]{affbase}{_{2}}{}} - {\num{#3}\ifboolKV[CONVDECBIN]{affbase}{_{10}}{}=\num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resbrut}\ifboolKV[CONVDECBIN]{affbase}{_{2}}{}} -} - -%bin->hexa avec blocs de 4 chiffres -%\defKV[CONVBINHEX]{% -% trait=\def\epcrochet{#1} -%} -\setKVdefault[CONVBINHEX]{% - %trait=0.5pt,% - affbase=true,% - details=true -} -%bourrage de 0 avant -\ExplSyntaxOn -\NewExpandableDocumentCommand{\PLstrzeros}{m} -{ - \int_compare:nT { #1 > 0 } - { - 0 \prg_replicate:nn { #1 - 1 } { 0 } - } -} -\ExplSyntaxOff - - -%la conversion complète -\newcommand\PLconvbinhex[2][]{% - \useKVdefault[CONVBINHEX] - \setKV[CONVBINHEX]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\chbrut{#2} - \StrLen{\chbrut}[\nbchiffres] %nb de chiffres du binaire - \xdef\nbgrp{\fpeval{4*ceil(\nbchiffres/4,0)}} %nb de chiffres avec blocs de 4 - \xdef\nbblocs{\fpeval{\nbgrp/4}} %nb de blocs - %on rajoute des zeros si besoin := OK - \xdef\resinter{\chbrut} - \num[digit-group-size=4]{\chbrut}\ifboolKV[CONVBINHEX]{affbase}{_{2}}{}= - \ifboolKV[CONVBINHEX]{details}{% - \ifnum\nbchiffres<\nbgrp - \xdef\nbz{\inteval{\nbgrp-\nbchiffres}} - \xdef\resinter{\PLstrzeros{\nbz}\chbrut} - \num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resinter}= - \fi - %découpage par blocs et conversion en hexa := OK - \newcount\cpt - \cpt0 - \loop\ifnum \cpt<\nbblocs - \def\iinit{\fpeval{4*\cpt+1}}% - \def\ifinal{\fpeval{4*(\cpt+1)}}% - \StrMid{\resinter}{\iinit}{\ifinal}[\blocinter]% - {\underbracket{\blocinter}_{\xintBinToHex{\blocinter}}\,} - \advance\cpt by 1 - \repeat - \!= - }% - {} - \xintBinToHex{\chbrut}\ifboolKV[CONVBINHEX]{affbase}{_{16}}{} -} - -%bin/hexa/bin->dec avec écriture polynomiale -\defKV[CONVTODEC]{% - basedep=\def\basedepart{#1} -} -\setKVdefault[CONVTODEC]{% - basedep=2,% - affbase=true,% - details=true,% - zeros=true -} - -\ExplSyntaxOn -\newcommand\convertbasetobasedix[2]{% - \int_from_base:nn {#1}{#2} -} -\ExplSyntaxOff - -\newcommand\PLconvtodec[2][]{% - \useKVdefault[CONVTODEC] - \setKV[CONVTODEC]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\nbdepart{#2} - \StrLen{\nbdepart}[\nbchiffres] - \StrChar{\nbdepart}{1}[\chiffre] - %si on est en base 16 - \xintifboolexpr{\basedepart == 16}% - {% - \nbdepart\ifboolKV[CONVTODEC]{affbase}{_{\basedepart}}{} = - \ifboolKV[CONVTODEC]{details}{% - \xintHexToDec{\chiffre}\times\basedepart^{\inteval{\nbchiffres-1}}% - \newcount\cpt - \cpt2 - \loop\ifnum \cpt<\inteval{\nbchiffres+1} - \def\puiss{\inteval{\nbchiffres-\cpt}} - \StrChar{\nbdepart}{\cpt}[\chiffre] - \ifboolKV[CONVTODEC]{zeros}% - {% - +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% - } - { - \ifnum\xintHexToDec{\chiffre} > 0 - +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% - \fi - } - \advance\cpt by 1 - \repeat - = - } - {} - \num{\xintHexToDec{\nbdepart}}\ifboolKV[CONVTODEC]{affbase}{_{10}}{} - }% - {} - \xintifboolexpr{\basedepart == 2}% - {% - \num[digit-group-size=4]{\nbdepart}\ifboolKV[CONVTODEC]{affbase}{_{\basedepart}}{} = - \ifboolKV[CONVTODEC]{details}{% - \chiffre\times\basedepart^{\inteval{\nbchiffres-1}}% - \newcount\cpt - \cpt2 - \loop\ifnum \cpt<\inteval{\nbchiffres+1} - \def\puiss{\inteval{\nbchiffres-\cpt}} - \StrChar{\nbdepart}{\cpt}[\chiffre] - \ifboolKV[CONVTODEC]{zeros}% - {% - +\chiffre\times\basedepart^{\puiss}% - } - { - \ifnum\chiffre > 0 - +\chiffre\times\basedepart^{\puiss}% - \fi - } - \advance\cpt by 1 - \repeat - = - } - {} - \num{\xintBinToDec{\nbdepart}}\ifboolKV[CONVTODEC]{affbase}{_{10}}{} - }% - {} -} - -\newcommand\PLconvversdix[3][]{%1=options,%2=nb,%3=basedep - \useKVdefault[CONVTODEC] - \setKV[CONVTODEC]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\NBdepart{#2} - \def\basedepart{#3} - \StrLen{\NBdepart}[\nbchiffres] - \StrChar{\NBdepart}{1}[\chiffre] - \NBdepart\ifboolKV[CONVTODEC]{affbase}{_{\basedepart}}{} = - \ifboolKV[CONVTODEC]{details}{% - \xintHexToDec{\chiffre}\times\basedepart^{\inteval{\nbchiffres-1}}% - \newcount\cpt - \cpt2 - \loop\ifnum \cpt<\inteval{\nbchiffres+1} - \def\puiss{\inteval{\nbchiffres-\cpt}} - \StrChar{\NBdepart}{\cpt}[\chiffre] - \ifboolKV[CONVTODEC]{zeros}% - {% - +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% - } - { - \ifnum\xintHexToDec{\chiffre} > 0 - +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% - \fi - } - \advance\cpt by 1 - \repeat - = - } - {} - \num{\convertbasetobasedix{#2}{#3}}\ifboolKV[CONVTODEC]{affbase}{_{10}}{} -} - -%==============MainLevée TikZ========== OK !! -\tikzset{% - mainlevee/.style args={#1et#2}{decorate,decoration={random steps, segment length=#1,amplitude=#2}}, - mainlevee/.default={5mm et 0.6pt} -} - -%==============PixelArt TikZ=========== OK !! -\defKV[pixelarttkz]{% - codes=\def\PATlettres{#1},% - couleurs=\def\PATcouleurs{#1},% - symboles=\def\PATchiffres{#1},% - style=\def\PATtaille{#1} -} - -\setKVdefault[pixelarttkz]{% - style=\scriptsize,% - correction=false,% - symb=false,% - bordcases=true -} - -\newcommand\PLpixelart[2][]{% - \useKVdefault[pixelarttkz] - \setKV[pixelarttkz]{#1} - %affichage du corrigé - \ifboolKV[pixelarttkz]{correction} - {% - \csvloop{file=#2,no head,command={% - \foreach \l [count=\n] in \csvline {% - \StrDel{\l}{ }[\l] - \setsepchar{,} - \readlist\LCPA\PATcouleurs - \StrPosition{\PATlettres}{\l}[\pixcnt]% - \xintifboolexpr{\pixcnt>0}% - {% - \itemtomacro\LCPA[\pixcnt]\pixcol% - \ifboolKV[pixelarttkz]{bordcases}% - {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}% - {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}% - % - }% - {} - } - } - } - } - {% - \ifboolKV[pixelarttkz]{symb} - {%affichage du pixelart versions chiffres si besoin - \csvloop{file=#2,no head,command={% - \foreach \l [count=\n] in \csvline {% - \StrDel{\l}{ }[\l] - \setsepchar{,} - \readlist\LCNA\PATchiffres - \StrPosition{\PATlettres}{\l}[\pixpos]% - \xintifboolexpr{\pixpos>0}% - {% - \itemtomacro\LCNA[\pixpos]\pixchf% - \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;% - } - {}% - } - } - } - } - {%affichage du pixelart versions lettres ou chiffres simples (<=9) - \csvloop{file=#2,no head,command={% - \foreach \l [count=\n] in \csvline {% - \StrDel{\l}{ }[\l] - \IfSubStr{\PATlettres}{\l}% - {% - \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\l};} - {} - } - } - } - } - } -} - -%=========STATS2VAR========= -%variables directement dans tikzpicture -\tikzset{% - Ox/.store in=\axexOx,Ox/.default=0,Ox=0,%essai - Oy/.store in=\axeyOy,Oy/.default=0,Oy=0,%essai - xmin/.store in=\xmin,xmin/.default=-5,xmin=-5, - xmax/.store in=\xmax,xmax/.default=5,xmax=5, - ymin/.store in=\ymin,ymin/.default=-5,ymin=-5, - ymax/.store in=\ymax,ymax/.default=5,ymax=5, - xgrille/.store in=\xgrille,xgrille/.default=1,xgrille=1, - xgrilles/.store in=\xgrilles,xgrilles/.default=0.5,xgrilles=0.5, - ygrille/.store in=\ygrille,ygrille/.default=1,ygrille=1, - ygrilles/.store in=\ygrilles,ygrilles/.default=0.5,ygrilles=0.5, - xunit/.store in=\xunit,xunit/.default=1,xunit=1, - yunit/.store in=\yunit,yunit/.default=1,yunit=1 -} - -%style point croix -\tikzset{pics/PLdotcross/.style args={#1/#2}{ - code={ - \draw[line width={0.5*#1},rotate=#2] (-#1,0) -- (#1,0); - \draw[line width={0.5*#1},rotate=#2] (0,-#1) -- (0, #1); - } - }, - pics/PLdotcross/.default={4pt/0} -} - -%axeOx -\defKV[PLaxextkz]{% - epaisseur=\def\axexwidth{#1},% - police=\def\axexfont{#1},% - hautgrad=\def\axextickwidth{#1},% - posgrad=\def\axexposlabel{#1} -} - -\setKVdefault[PLaxextkz]{% - epaisseur=1.25pt,% - police=\normalsize\normalfont,% - posgrad=below,% - hautgrad=4pt,% - affgrad=true,% - afforigine=true,% - annee=false -} - -\DeclareDocumentCommand\PLaxextikz{ O{} m }{% - \useKVdefault[PLaxextkz] - \setKV[PLaxextkz]{#1}% on paramètres les nouvelles clés et on les simplifie - %formatage des années - \IfSubStr{\axextickwidth}{/} - {\StrCut{\axextickwidth}{/}{\axextickwidthA}{\axextickwidthB}} - {\def\axextickwidthA{\axextickwidth}\def\axextickwidthB{\axextickwidth}} - \foreach \x in {#2}{% - \draw[line width=\axexwidth] ({\x-\axexOx},{\axextickwidthA}) -- ({\x-\axexOx},{-\axextickwidthB})% - \ifboolKV[PLaxextkz]{affgrad}%on affiche les graduations - {% - \ifboolKV[PLaxextkz]{afforigine}%si on demande d'afficher l'origine - {node[\axexposlabel,font=\axexfont] - {\ifboolKV[PLaxextkz]{annee}% - {\num[group-digits=none]{\x}}% - {\num[text-family-to-math=true,text-series-to-math=true]{\x}}% - } - } - {\xintifboolexpr{\x==\axexOx}{}{node[\axexposlabel,font=\axexfont] {\ifboolKV[PLaxextkz]{annee}% - {\num[group-digits=none]{\x}}% - {\num[text-family-to-math=true,text-series-to-math=true]{\x}}% - } - } - } - } - {} - ;} -} - -%axeOy -\defKV[PLaxeytkz]{% - epaisseur=\def\axeywidth{#1},% - police=\def\axeyfont{#1},% - hautgrad=\def\axeytickwidth{#1},% - posgrad=\def\axeyposlabel{#1} -} - -\setKVdefault[PLaxeytkz]{% - epaisseur=1.25pt,% - police=\normalsize\normalfont,% - posgrad=left,% - hautgrad=4pt,% - affgrad=true,% - afforigine=true,% - annee=false -} - -\DeclareDocumentCommand\PLaxeytikz{ O{} m }{% - \useKVdefault[PLaxeytkz] - \setKV[PLaxeytkz]{#1}% on paramètres les nouvelles clés et on les simplifie - \IfSubStr{\axeytickwidth}{/} - {\StrCut{\axeytickwidth}{/}{\axeytickwidthA}{\axeytickwidthB}} - {\def\axeytickwidthA{\axeytickwidth}\def\axeytickwidthB{\axeytickwidth}} - \foreach \y in {#2}{% - \draw[line width=\axeywidth] ({\axeytickwidthA},{\y-\axeyOy}) -- ({-\axeytickwidthB},{\y-\axeyOy})% - \ifboolKV[PLaxeytkz]{affgrad}%on affiche les graduations - {% - \ifboolKV[PLaxeytkz]{afforigine}%si on demande d'afficher l'origine - {node[\axeyposlabel,font=\axeyfont] - {\ifboolKV[PLaxeytkz]{annee}% - {\num[group-digits=none]{\y}}% - {\num[text-family-to-math=true,text-series-to-math=true]{\y}}% - } - } - {\xintifboolexpr{\y==\axeyOy}{}{node[\axeyposlabel,font=\axeyfont] {\ifboolKV[PLaxeytkz]{annee}% - {\num[group-digits=none]{\y}}% - {\num[text-family-to-math=true,text-series-to-math=true]{\y}}% - } - } - } - } - {} - ;} -} - -%axes -\defKV[PLaxestkz]{% - epaisseur=\def\axeswidth{#1},% - police=\def\axesfont{#1},% - labelx=\def\axeslabelx{#1},% - labely=\def\axeslabely{#1},% - poslabelx=\def\axesposlabelx{#1},% - poslabely=\def\axesposlabely{#1},% - echellefleche=\def\axesechellefleche{#1},% - typefleche=\def\axestypefleche{#1},% - afflabel=\def\axesafflabel{#1} -} - -\setKVdefault[PLaxestkz]{% - epaisseur=1.25pt,% - police=\normalsize\normalfont,% - labelx=$x$,% - labely=$y$,% - afflabel=z,% - poslabelx=right,% - poslabely=above,% - echellefleche=1,% - typefleche=> -} - -\DeclareDocumentCommand\PLaxestikz{ O{} }{% - \useKVdefault[PLaxestkz] - \setKV[PLaxestkz]{#1}% - %on affiche les deux axes - \draw[line width=\axeswidth,-{\axestypefleche[scale=\axesechellefleche]}] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ; - \draw[line width=\axeswidth,-{\axestypefleche[scale=\axesechellefleche]}] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ; - %les labels éventuels - \IfSubStr{\axesafflabel}{x}% - {\draw ({\xmax-\axexOx},0) node[\axesposlabelx,font=\axesfont] {\axeslabelx} ;} - {} - \IfSubStr{\axesafflabel}{y}% - {\draw (0,{\ymax-\axeyOy}) node[\axesposlabely,font=\axesfont] {\axeslabely} ;} - {} -} - -%fenêtre clippée -\newcommand\PLfenetre{% - \clip ({\xmin-\axexOx},{\ymin-\axeyOy}) rectangle ({\xmax-\axexOx},{\ymax-\axeyOy}) ; -} - -%origine -\defKV[PLaxesorig]{% - police=\def\axesorfont{#1},% - pos=\def\axesorpos{#1},% - decal=\def\axesordecal{#1},% - valeur=\def\axesorval{#1} -} - -\setKVdefault[PLaxesorig]{% - police=\normalsize\normalfont,% - pos={below left},% - decal=2pt,% - valeur=0 -} - -\DeclareDocumentCommand\PLorigine{ O{} }{% - \useKVdefault[PLaxesorig] - \setKV[PLaxesorig]{#1}% - \draw (0,0) node[\axesorpos=\axesordecal,font=\axesorfont] {\axesorval} ; -} - -%grilles -\setKVdefault[PLgrillestkz]{% - affp=true,% - affs=true -} - -\DeclareDocumentCommand\PLgrilletikz{ O{} O{thin,lightgray} O{ultra thin,lightgray} }{% - \useKVdefault[PLgrillestkz] - \setKV[PLgrillestkz]{#1}% - \ifboolKV[PLgrillestkz]{affs} - {\draw[xstep=\xgrilles,ystep=\ygrilles,#3] ({\xmin-\axexOx},{\ymin-\axeyOy}) grid ({\xmax-\axexOx},{\ymax-\axeyOy});} - {} - \ifboolKV[PLgrillestkz]{affp} - {\draw[xstep=\xgrille,ystep=\ygrille,#2] ({\xmin-\axexOx},{\ymin-\axeyOy}) grid ({\xmax-\axexOx},{\ymax-\axeyOy});} - {} -} - -%point(s) avec changement origines -\defKV[PLpts]{% - taille=\def\ptstaille{#1},% - couleur=\def\ptscouleur{#1},% - style=\def\ptsstyle{#1} -} - -\setKVdefault[PLpts]{% - taille=2pt,% - couleur=blue,% - style=o -} - -\newcommand\PLnuagepoints[2][]{% - \useKVdefault[PLpts] - \setKV[PLpts]{#1}% - \setsepchar{§}% - \readlist\listepointsaffiches{#2} - \foreachitem\point\in\listepointsaffiches{% - \StrBetween{\point}{(}{,}[\XPT] - \StrBetween{\point}{,}{)}[\YPT] - \IfStrEq{\ptsstyle}{o}% - {\filldraw[\ptscouleur] ({\XPT-\axexOx},{\YPT-\axeyOy}) circle[radius=\ptstaille] ;} - {} - \IfStrEq{\ptsstyle}{x}% - {\draw[\ptscouleur] ({\XPT-\axexOx},{\YPT-\axeyOy}) pic {PLdotcross=\ptstaille/45} ;} - {} - \IfStrEq{\ptsstyle}{+}% - {\draw[\ptscouleur] ({\XPT-\axexOx},{\YPT-\axeyOy}) pic {PLdotcross=\ptstaille/0} ;} - {} - } -} - -\newcommand\PLnuagepts[3][]{% - \useKVdefault[PLpts] - \setKV[PLpts]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\xliste{#2} - \def\yliste{#3} - \readlist*\LX{\xliste} - \readlist*\LY{\yliste} - %taille des listes - \def\LNB{\inteval{\LXlen}} - \foreach \i in {1,2,...,\LNB} { - \IfStrEq{\ptsstyle}{o}% - { - \IfSubStr{\ptscouleur}{/} - {\StrCut{\ptscouleur}{/}{\ptscouleurA}{\ptscouleurB}\draw[thick,\ptscouleurA,fill=\ptscouleurB] ({\LX[\i]-\axexOx},{\LY[\i]-\axeyOy}) circle[radius=\ptstaille] ;} - {\draw[\ptscouleur,fill=\ptscouleur] ({\LX[\i]-\axexOx},{\LY[\i]-\axeyOy}) circle[radius=\ptstaille] ;} - } - {} - \IfStrEq{\ptsstyle}{x}% - {\draw[\ptscouleur] ({\LX[\i]-\axexOx},{\LY[\i]-\axeyOy}) pic {PLdotcross=\ptstaille/45} ;} - {} - \IfStrEq{\ptsstyle}{+}% - {\draw[\ptscouleur] ({\LX[\i]-\axexOx},{\LY[\i]-\axeyOy}) pic {PLdotcross=\ptstaille/0} ;} - {} - } -} - -\defKV[PLptmoy]{% - police=\def\ptmoyfont{#1},% - taille=\def\ptmoytaille{#1},% - couleur=\def\ptmoycouleur{#1},% - style=\def\ptmoystyle{#1},% - xg=\def\ptmoyx{#1},% - yg=\def\ptmoyy{#1},% - nom=\def\ptmoynom{#1},% - pos=\def\ptmoypos{#1},% - decal=\def\ptmoydecal{#1},% -} - -\setKVdefault[PLptmoy]{% - police=\normalsize\normalfont,% - taille=4pt,% - couleur=red,% - style=x,% - xg=\LXmoy,% - yg=\LYmoy,% - nom=G,% - pos=above,% - decal=0pt,% - affnom=true -} - -\newcommand\PLnuageptmoy[1][]{% - \useKVdefault[PLptmoy] - \setKV[PLptmoy]{#1}% on paramètres les nouvelles clés et on les simplifie - \IfStrEq{\ptmoystyle}{o}% - { - \IfSubStr{\ptmoycouleur}{/} - {\StrCut{\ptmoycouleur}{/}{\ptmoycouleurA}{\ptmoycouleurB}\draw[thick,\ptmoycouleurA,fill=\ptmoycouleurB] ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) circle[radius=\ptmoytaille] ;} - {\draw[\ptmoycouleur,fill=\ptmoycouleur] ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) circle[radius=\ptmoytaille] ;} - } - {} - \IfStrEq{\ptmoystyle}{x}% - {\draw[\ptmoycouleur] ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) pic {PLdotcross=\ptmoytaille/45} ;} - {} - \IfStrEq{\ptmoystyle}{+}% - {\draw[\ptmoycouleur] ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) pic {PLdotcross=\ptmoytaille/0} ;} - {} - \ifboolKV[PLptmoy]{affnom} - {\draw ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) node[\ptmoypos={\ptmoytaille+\ptmoydecal},font=\ptmoyfont] {\ptmoynom} ;} - {} - -} - -%courbe ? -\newcommand\PLcourbe[3][]{% - \setsepchar{:}% - \readlist\PLdomaine{#3} - \itemtomacro\PLdomaine[1]\PLDm - \itemtomacro\PLdomaine[2]\PLDM - \saveexpandmode\noexpandarg - \StrSubstitute{#2}{\x}{(\x+\axexOx)}[\fctdecx] - \restoreexpandmode % restore the previous mode - \draw[#1] plot[domain={\PLDm-\axexOx}:{\PLDM-\axexOx}] (\x,{\fctdecx-\axeyOy}) ; -} - -\setKVdefault[PLsimplewindow]{% - axes=true,% - grille=true,% -} - -\DeclareDocumentCommand\PLfenetresimple{ O{} D<>{} m D<>{} m }{% - \useKVdefault[PLsimplewindow] - \setKV[PLsimplewindow]{#1}% on paramètres les nouvelles clés et on les simplifie - \ifboolKV[PLsimplewindow]{grille} - {\PLgrilletikz} - {} - \ifboolKV[PLsimplewindow]{axes} - {\PLaxestikz\PLaxextikz[#2]{#3}\PLaxeytikz[#4]{#5}} - {} -} - -\NewDocumentEnvironment{PLstats}{ O{} } -{% - \begin{tikzpicture}[#1] - }% - {% - \end{tikzpicture}% -} - -%=============BOITES MOUSTACHES======== OK !! -\defKV[boiteamoustaches]{% - parametres=\def\BaMListe{#1},% - couleur=\def\BaMCouleur{#1},% - elevation=\def\BaMElevation{#1},% - hauteur=\def\BaMHauteur{#1},% - moyenne=\def\BaMMoyenne{#1},% - epaisseur=\def\BaMEpaisseur{#1},% - remplir=\def\BaMRemplissage{#1} -} - -\setKVdefault[boiteamoustaches]{% - couleur=black,% - elevation=1,% - hauteur=1,% - affmoyenne=false,% - epaisseur=thick,% - pointilles=false,% - valeurs=false,% - remplir=white -} - -\defKV[boiteamoustachesaxe]{% - min=\def\BaMAxeMin{#1},% - max=\def\BaMAxeMax{#1},% - elargir=\def\BaMAxeElarg{#1},% - epaisseur=\def\BaMAxeEpaisseur{#1},% - valeurs=\def\BaMAxeValeurs{#1} -} - -\setKVdefault[boiteamoustachesaxe]{% - elargir=0.05,% - epaisseur=thick,% - affvaleurs=false -} - -\newcommand\PLboitemoustaxe[1][]{ - \useKVdefault[boiteamoustachesaxe] - \setKV[boiteamoustachesaxe]{#1} - \def\BaMaxelargeur{\fpeval{\BaMAxeMax-\BaMAxeMin}} - \def\BaMaxexmin{\fpeval{\BaMAxeMin-\BaMAxeElarg*\BaMaxelargeur}} - \def\BaMaxexmax{\fpeval{\BaMAxeMax+\BaMAxeElarg*\BaMaxelargeur}} - \draw[\BaMAxeEpaisseur,->] (\BaMaxexmin,0) -- (\BaMaxexmax,0) ; - \ifboolKV[boiteamoustachesaxe]{affvaleurs} - {\foreach \x in \BaMAxeValeurs \draw[\BaMAxeEpaisseur] (\x,3pt)--(\x,-3pt) node[below=3pt] {\num{\x}} ;} - {} -} - -\newcommand\PLboitemoust[1][]{ - \useKVdefault[boiteamoustaches] - \setKV[boiteamoustaches]{#1} - \setsepchar[.]{/}% - \readlist*\BaMListeparams\BaMListe% - \itemtomacro\BaMListeparams[1]\BaMmin% - \itemtomacro\BaMListeparams[2]\BaMqu% - \itemtomacro\BaMListeparams[3]\BaMmed% - \itemtomacro\BaMListeparams[4]\BaMqt% - \itemtomacro\BaMListeparams[5]\BaMmax% - \draw[draw,\BaMEpaisseur,\BaMCouleur,fill=\BaMRemplissage] ({\BaMqu},{\BaMElevation-0.5*\BaMHauteur}) rectangle ({\BaMqt},{\BaMElevation+0.5*\BaMHauteur}) ; - \draw[\BaMEpaisseur,\BaMCouleur] (\BaMmin,{\BaMElevation-0.5*\BaMHauteur})--(\BaMmin,{\BaMElevation+0.5*\BaMHauteur}) (\BaMmax,{\BaMElevation-0.5*\BaMHauteur})--(\BaMmax,{\BaMElevation+0.5*\BaMHauteur}) (\BaMmed,{\BaMElevation-0.5*\BaMHauteur})--(\BaMmed,{\BaMElevation+0.5*\BaMHauteur}); - \draw[\BaMEpaisseur,\BaMCouleur] ({\BaMmin},{\BaMElevation})--({\BaMqu},{\BaMElevation}) ({\BaMqt},{\BaMElevation})--({\BaMmax},{\BaMElevation}) ; - \ifboolKV[boiteamoustaches]{affmoyenne} - {\filldraw[\BaMCouleur] ({\BaMMoyenne},{\BaMElevation}) circle[radius=2.5pt] ;} - {} - \ifboolKV[boiteamoustaches]{pointilles} - { - \draw[\BaMEpaisseur,densely dashed] (\BaMmin,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmin,0) ; - \draw[\BaMEpaisseur,densely dashed] (\BaMqu,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMqu,0) ; - \draw[\BaMEpaisseur,densely dashed] (\BaMmed,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmed,0) ; - \draw[\BaMEpaisseur,densely dashed] (\BaMqt,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMqt,0) ; - \draw[\BaMEpaisseur,densely dashed] (\BaMmax,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmax,0) ; - } - {} - \ifboolKV[boiteamoustaches]{valeurs} - { - \filldraw (\BaMmin,0) circle[radius=2pt] node[below=4pt] {\num{\BaMmin}} ; - \filldraw (\BaMqu,0) circle[radius=2pt] node[below=4pt] {\num{\BaMqu}} ; - \filldraw (\BaMmed,0) circle[radius=2pt] node[below=4pt] {\num{\BaMmed}} ; - \filldraw (\BaMqt,0) circle[radius=2pt] node[below=4pt] {\num{\BaMqt}} ; - \filldraw (\BaMmax,0) circle[radius=2pt] node[below=4pt] {\num{\BaMmax}} ; - } - {} -} - -%================SUDOMATHS============= OK !! -\defKV[PLTIKZSUDOM]{% - couleurtexte=\def\PLSMcoultexte{#1},% - epaisseur=\def\PLSMepf{#1},% - epaisseurg=\def\PLSMepg{#1},% - unite=\def\PLSMunite{#1},% - couleurcase=\def\PLSMcoulcase{#1},% - nbcol=\def\PLSMnbcol{#1},% - nbsubcol=\def\PLSMnbsubcol{#1},% - nblig=\def\PLSMnblig{#1},% - nbsublig=\def\PLSMnbsublig{#1},% - police=\def\PLSMfonte{#1},% - policeleg=\def\PLSMfonteleg{#1},% - listelegv=\def\PLSMlistelegv{#1},% - listelegh=\def\PLSMlistelegh{#1},% - decallegende=\def\PLSMdecalleg{#1} -} - -\setKVdefault[PLTIKZSUDOM]{% - epaisseurg=1.5pt,% - epaisseur=0.5pt,% - unite=1cm,% - couleurcase=LightBlue!50,% - couleurtexte=blue,% - nbcol=9,% - nbsubcol=3,% - nblig=9,% - nbsublig=3, - police=\normalfont\normalsize,% - policeleg=\normalfont\sffamily,% - legendes=true,% - listelegv=ABCDEFGHIJKLMNOPQRSTUVWXYZ,% - listelegh=abcdefghijklmnopqrstuvwxyz,% - decallegende=0.45 -} - -\NewDocumentEnvironment{PLenvsudomaths}{ O{} m } - { - \useKVdefault[PLTIKZSUDOM] - \setKV[PLTIKZSUDOM]{#1}% on paramètres les nouvelles clés et on les simplifie - %calculs intermédiaires - \def\larcolinter{\inteval{\PLSMnbcol/\PLSMnbsubcol}} - \def\larliginter{\inteval{\PLSMnblig/\PLSMnbsublig}} - %lecture liste - \IfEq{#2}{}{}% - {% - \setsepchar[.]{§./}% - \readlist*\SPGrilleSudoMaths{#2}% - } - %débt envtik - \begin{tikzpicture}[x=\PLSMunite,y=\PLSMunite,line join=miter] - %cases - \IfEq{#2}{}{}% - {% - \foreach \i in {1,2,...,\PLSMnblig}{% - \foreach \j in {1,2,...,\PLSMnbcol}{% - \itemtomacro\SPGrilleSudoMaths[\i,\j]\SMcase - \IfSubStr{\SMcase}{*}%si on veut colorier via * - {% - \StrDel{\SMcase}{*}[\SMcaseb]% - \draw[draw=none,fill=\PLSMcoulcase] ({\j-1},{1-\i}) rectangle++ (1,-1) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte,midway] {\SMcaseb} ;% - } - {% - \draw ({\j-0.5},{0.5-\i}) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte] {\SMcase} ;% - } - } - }% - } - %grilles - \draw[line width=\PLSMepg] (0,0) rectangle ({\PLSMnbcol},{-\PLSMnblig}) ; - \draw[line width=\PLSMepf,xstep=1,ystep=1] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ; - \draw[line width=\PLSMepg,xstep=\larcolinter,ystep=\larliginter] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ; - %légendes - \ifboolKV[PLTIKZSUDOM]{legendes} - {% - \foreach \i in {1,2,...,\PLSMnbcol}{\draw ({\i-0.5},{\PLSMdecalleg}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\strut\StrChar{\PLSMlistelegh}{\i}} ;} - \foreach \j in {1,2,...,\PLSMnblig}{\draw ({-\PLSMdecalleg},{0.5-\j}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\StrChar{\PLSMlistelegv}{\j}} ;} - }{} - } - { - \end{tikzpicture} - } - -\NewDocumentCommand\PLsudomaths{ O{} m }{% - \useKVdefault[PLTIKZSUDOM] - \setKV[PLTIKZSUDOM]{#1}% on paramètres les nouvelles clés et on les simplifie - %calculs intermédiaires - \def\larcolinter{\inteval{\PLSMnbcol/\PLSMnbsubcol}} - \def\larliginter{\inteval{\PLSMnblig/\PLSMnbsublig}} - %lecture liste - \IfEq{#2}{}{}% - {% - \setsepchar[.]{§./}% - \readlist*\SPGrilleSudoMaths{#2}% - } - %débt envtik - \begin{tikzpicture}[x=\PLSMunite,y=\PLSMunite,line join=miter] - %cases - \IfEq{#2}{}{}% - {% - \foreach \i in {1,2,...,\PLSMnblig}{% - \foreach \j in {1,2,...,\PLSMnbcol}{% - \itemtomacro\SPGrilleSudoMaths[\i,\j]\SMcase - \IfSubStr{\SMcase}{*}%si on veut colorier via * - {% - \StrDel{\SMcase}{*}[\SMcaseb]% - \draw[draw=none,fill=\PLSMcoulcase] ({\j-1},{1-\i}) rectangle++ (1,-1) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte,midway] {\SMcaseb} ;% - } - {% - \draw ({\j-0.5},{0.5-\i}) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte] {\SMcase} ;% - } - } - }% - } - %grilles - \draw[line width=\PLSMepg] (0,0) rectangle ({\PLSMnbcol},{-\PLSMnblig}) ; - \draw[line width=\PLSMepf,xstep=1,ystep=1] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ; - \draw[line width=\PLSMepg,xstep=\larcolinter,ystep=\larliginter] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ; - %légendes - \ifboolKV[PLTIKZSUDOM]{legendes} - {% - \foreach \i in {1,2,...,\PLSMnbcol}{\draw ({\i-0.5},{\PLSMdecalleg}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\strut\StrChar{\PLSMlistelegh}{\i}} ;} - \foreach \j in {1,2,...,\PLSMnblig}{\draw ({-\PLSMdecalleg},{0.5-\j}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\StrChar{\PLSMlistelegv}{\j}} ;} - }{} - \end{tikzpicture} -} - -%================LOISPROBAS============ OK !! -%calculs "simples" -\newcommand\calcPbinomP[3]{%npk - \xintFloatToDecimal{\xintfloateval{binomial(#1,#3)*#2^#3*(1-#2)^(#1-#3)}} -} -\newcommand\calcPbinomC[4]{%npab - \def\BorneInf{#3}\def\BorneSup{#4} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneSup{#1}} - {} - \xintFloatToDecimal{\xintfloateval{add(binomial(#1,i)*#2^i*(1-#2)^(#1-i), i=\BorneInf..\BorneSup)}} -} -\newcommand\calcPgeomP[2]{%pk - \xintFloatToDecimal{\xintfloateval{(1-#1)^(#2-1)*(#1)}} -} -\newcommand\calcPgeomC[3]{%pab - \def\BorneInf{#2}\def\BorneSup{#3} - \ifthenelse{\equal{#2}{*}}% - {\def\BorneInf{1}} - {} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneSup{\fpeval{trunc(1/#1*10,0)}}} - {} - \xintFloatToDecimal{\xintfloateval{add((1-#1)^(i-1)*(#1), i=\BorneInf..\BorneSup)}} -} -\newcommand\calcPhypergeomP[4]{%Nnmk - \xintFloatToDecimal{\xintfloateval{binomial(#3,#4)*binomial(#1-#3,#2-#4)/binomial(#1,#2)}} -} -\newcommand\calcPhypergeomC[5]{%Nnmab - \def\BorneInf{#4}\def\BorneSup{#5} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneSup{#1}} - {} - \xintFloatToDecimal{\xintfloateval{add(binomial(#3,i)*binomial(#1-#3,#2-i)/binomial(#1,#2), i=\BorneInf..\BorneSup)}} -} -\newcommand\calcPpoissP[2]{%lk - \xintFloatToDecimal{\xintfloateval{exp(-#1)*#1^#2/factorial(#2)}} -} -\newcommand\calcPpoissC[3]{%lab - \def\BorneInf{#2}\def\BorneSup{#3} - \ifthenelse{\equal{#2}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneSup{10*#1}} - {} - \xintFloatToDecimal{\xintfloateval{add(exp(-#1)*#1^i/factorial(i), i=\BorneInf..\BorneSup)}} -} -%utiles idée de https://tex.stackexchange.com/questions/355574/im-searching-for-a-table-with-cdf-of-standard-normal-distribution -\xintdeffloatvar a_1,a_2,a_3,a_4,a_5,a_6 := -0.0705230784,0.0422820123,0.0092705272,0.0001520143,0.0002765672,0.0000430638; -\xintdeffloatvar rac2inv := sqrt(2)/2 ; -\xintdeffloatfunc erfc(x) := % uniquement pour x positif -((((((a_6*x+a_5)*x+a_4)*x+a_3)*x+a_2)*x+a_1)*x+1)**-16 ; % fin de définition de erfc(x) -\xintdeffloatfunc Phi(z) := (z>=0)?{1 - 0.5 * erfc(rac2inv * z)}{0.5 * erfc(-rac2inv * z)}; - -\newcommand\calcPnormC[4]{%msab - %def des bornes de l'intervalle suivant l'absence de a ou de b... - \def\BorneInf{#3}\def\BorneSup{#4} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneInf{#4-10*#2}} - {} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneSup{#3+10*#2}} - {} - \xintFloatToDecimal{\xintfloateval{Phi((\BorneSup-#1)/#2)-Phi((\BorneInf-#1)/#2)}} -} -%calculs "simples" fiabilite -\newcommand\calcPexpoC[3]{%lab - \def\BorneInf{#2}\def\BorneSup{#3} - \ifthenelse{\equal{#2}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneSup{100/#1}} - {} - \xintFloatToDecimal{\xintfloateval{exp(-#1*\BorneInf)-exp(-#1*\BorneSup)}} -} - -%calculs formatés -\NewDocumentCommand{\numPbinomP}{ s O{3} m m m }{%*=sci,2=prec,3=n,4=p,5=k - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}} - } -} - -\NewDocumentCommand{\numPbinomC}{ s O{3} m m m m }{%*=sci,2=prec,3=n,4=p,5=a,6=b - \def\BorneInf{#5}\def\BorneSup{#6} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#6}{*}}% - {\def\BorneSup{#3}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}} - } -} - -\NewDocumentCommand{\numPgeomP}{ s O{3} m m }{%*=sci,2=prec,3=p,4=k - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round((1-#3)^(#4-1)*(#3),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round((1-#3)^(#4-1)*(#3),#2)}}} - } -} - -\NewDocumentCommand{\numPgeomC}{ s O{3} m m m }{%*=sci,2=prec,3=p,4=a,5=b - \def\BorneInf{#4}\def\BorneSup{#5} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneInf{1}} - {} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneSup{\fpeval{trunc(1/#3*10,0)}}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add((1-#3)^(i-1)*(#3), i=\BorneInf..\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add((1-#3)^(i-1)*(#3), i=\BorneInf..\BorneSup),#2)}}} - } -} - -\NewDocumentCommand{\numPhypergeomP}{ s O{3} m m m m }{%*=sci,2=prec,3=N,4=n,5=m,6=k - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(binomial(#5,#6)*binomial(#3-#5,#4-#6)/binomial(#3,#4),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(binomial(#5,#6)*binomial(#3-#5,#4-#6)/binomial(#3,#4),#2)}}} - } -} - -\NewDocumentCommand{\numPhypergeomC}{ s O{3} m m m m m }{%*=sci,2=prec,3=N,4=n,5=m,6=a,7=b - \def\BorneInf{#6}\def\BorneSup{#7} - \ifthenelse{\equal{#6}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#7}{*}}% - {\def\BorneSup{#3}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#5,i)*binomial(#3-#5,#4-i)/binomial(#3,#4), i=\BorneInf..\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#5,i)*binomial(#3-#5,#4-i)/binomial(#3,#4), i=\BorneInf..\BorneSup),#2)}}} - } -} - -\NewDocumentCommand{\numPpoissP}{ s O{3} m m }{%*=sci,2=prec,3=lbda,4=k - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}} - } -} - -\NewDocumentCommand{\numPpoissC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b - \def\BorneInf{#4}\def\BorneSup{#5} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneSup{10*#3}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}} - } -} - -\NewDocumentCommand{\numPnormC}{ s O{3} m m m m }{% - %*=ing,2=prec,3=mu,4=sigma,5=a,6=b - %def des bornes de l'intervalle suivant l'absence de a ou de b... - \def\BorneInf{#5}\def\BorneSup{#6} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneInf{#6-10*#4}} - {} - \ifthenelse{\equal{#6}{*}}% - {\def\BorneSup{#5+10*#4}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}} - } -} - -\NewDocumentCommand{\numPexpoC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b - \def\BorneInf{#4}\def\BorneSup{#5} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneSup{100/#3}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3*\BorneInf)-exp(-#3*\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintFloatToDecimal{\xintfloateval{round(exp(-#3*\BorneInf)-exp(-#3*\BorneSup),#2)}}}} - } -} - -%===============CONVFROMDEC============ OK !! -\newcommand\PLnoeud[2]{\tikz[remember picture,baseline=(#1.base)]\node[shape=rectangle,inner sep=0pt](#1){#2};} -\ExplSyntaxOn -\newcommand\convertbasedixtobase[2]{% - \int_to_Base:nn {#1}{#2} -} -\ExplSyntaxOff - -\defKV[convfromten]{% - couleur=\def\PLConvCouleur{#1},% - decalh=\def\PLConvDecalH{#1},% - decalv=\def\PLConvDecalV{#1},% - noeud=\def\PLConvNoeud{#1} -} - -\setKVdefault[convfromten]{% - couleur=red,% - decalh=2pt,% - decalv=3pt,% - rect=true,% - noeud=EEE,% - couleurres=false -} - -\newcommand\PLconvDepuisDec[3][]{% - \useKVdefault[convfromten]% - \setKV[convfromten]{#1}% - \xdef\ValRes{\xintDecToHex{#2}}% - \xdef\ValA{#2}\xdef\ValB{#3}% - \xdef\ValTMP{#2}% - \xdef\ValMU{\inteval{#3-1}}% - \ensuremath{% - \left\lbrace\begin{array}{@{\,}r@{\;=\;}l@{\;+\;}r} - %1ere division - \xdef\ValQ{\fpeval{trunc(\ValTMP/#3,0)}}\xdef\ValR{\fpeval{\ValTMP-#3*\ValQ}} - \num{\ValTMP}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}\PLnoeud{\PLConvNoeud1}{\num{\ValR}}% - \xdef\ValTMP{\ValQ}% - \whiledo {\ValTMP > \ValMU}% - {% - \xdef\ValQ{\fpeval{trunc(\ValTMP/#3,0)}}\xdef\ValR{\fpeval{\ValTMP-#3*\ValQ}}% - \\ \num{\ValTMP}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}\num{\ValR} - \xdef\ValTMP{\ValQ}% - } - %dernière - \xdef\ValQ{\fpeval{trunc(\ValTMP/#3,0)}}\xdef\ValR{\fpeval{\ValTMP-#3*\ValQ}}% - \\ \num{\ValTMP}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}\PLnoeud{\PLConvNoeud2}{\num{\ValR}} - \end{array} \right| \Rightarrow \num{#2}_{10}=\ifboolKV[convfromten]{couleurres}{\mathcolor{\PLConvCouleur}{\convertbasedixtobase{#2}{#3}_{#3}}}{\convertbasedixtobase{#2}{#3}_{#3}}}% - \ifboolKV[convfromten]{rect}% - {% - \IfSubStr{\PLConvDecalH}{/}% - {\StrCut{\PLConvDecalH}{/}{\PLConvDecalHg}{\PLConvDecalHd}}% - {\def\PLConvDecalHg{\PLConvDecalH}\def\PLConvDecalHd{\PLConvDecalH}}% - \begin{tikzpicture} - \draw[overlay,rounded corners=4pt,\PLConvCouleur,thick] ($(\PLConvNoeud1.north west)+(-\PLConvDecalHg,\PLConvDecalV)$) rectangle ($(\PLConvNoeud2.south east)+(\PLConvDecalHd,-\PLConvDecalV)$) ; - \draw[overlay,rounded corners=4pt,\PLConvCouleur,thick,->,>=latex] ($(\PLConvNoeud2.east)+(\PLConvDecalHd,0)$)--++(0,{0.75\baselineskip}) ; - \end{tikzpicture}% - }{}% -} - -%===============ARBRESPROBAS=========== OK !! -\defKV[PLTIKZARBRE]{% - unite=\def\PLAPunite{#1},% - espniv=\def\PLAPespniv{#1},% - espfeuille=\def\PLAPespfeuille{#1},% - type=\def\PLAPtype{#1},% - police=\def\PLAPfont{#1},% - policeprobas=\def\PLAPfontproba{#1},% - styletrait=\def\PLAPtypetrait{#1},% - eptrait=\def\PLAPeptrait{#1} -} - -\setKVdefault[PLTIKZARBRE]{% - unite=1cm,% - espniv=3.25,% - espfeuille=1,% - type=2x2,% - police=\normalfont\normalsize,% - policeprobas=\normalfont\small,% - inclineprobas=true,% - fleche=false,% - styletrait={},% - eptrait=semithick -} - -\NewDocumentCommand\PLarbre{ O{} m }{%1=options,2=libellés - \useKVdefault[PLTIKZARBRE]% - \setKV[PLTIKZARBRE]{#1}% - \setsepchar[.]{,./}% - \readlist*\PLARBREDONNES{#2}% - \begin{tikzpicture}[x=\PLAPunite,y=\PLAPunite] - %styles - \tikzstyle{noeud} = [font=\PLAPfont] - \tikzstyle{probas}= [font=\PLAPfontproba] - \ifboolKV[PLTIKZARBRE]{inclineprobas} - {\tikzstyle{PLetiquette}=[pos=0.525,sloped,fill=white]} - {\tikzstyle{PLetiquette}=[pos=0.525,fill=white]} - \ifboolKV[PLTIKZARBRE]{fleche} - {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait]} - {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait]} - %arbre2x2 - \IfEq{\PLAPtype}{2x2} - {% - \coordinate (R) at ({0*\PLAPespniv},{-1.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-0.5*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \IfEq{\PLARBREDONNES[1,2]}{} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \IfEq{\PLARBREDONNES[2,2]}{} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \IfEq{\PLARBREDONNES[3,2]}{} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \IfEq{\PLARBREDONNES[4,2]}{} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \IfEq{\PLARBREDONNES[5,2]}{} - {\draw[PLfleche] (A12)--(A23) ;} - {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \IfEq{\PLARBREDONNES[6,2]}{} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - }{} - %arbre3x2 - \IfEq{\PLAPtype}{3x2} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-2.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-0.5*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A13) at ({1*\PLAPespniv},{-4.5*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[9,1]}; - %branches - \IfEq{\PLARBREDONNES[1,2]}{} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \IfEq{\PLARBREDONNES[2,2]}{} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \IfEq{\PLARBREDONNES[3,2]}{} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \IfEq{\PLARBREDONNES[4,2]}{} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \IfEq{\PLARBREDONNES[5,2]}{} - {\draw[PLfleche] (A12)--(A23) ;} - {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \IfEq{\PLARBREDONNES[6,2]}{} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \IfEq{\PLARBREDONNES[7,2]}{} - {\draw[PLfleche] (R)--(A13) ;} - {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \IfEq{\PLARBREDONNES[8,2]}{} - {\draw[PLfleche] (A13)--(A25) ;} - {\draw[PLfleche] (A13)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - \IfEq{\PLARBREDONNES[9,2]}{} - {\draw[PLfleche] (A13)--(A26) ;} - {\draw[PLfleche] (A13)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;} - }{} - %arbre2x3 - \IfEq{\PLAPtype}{2x3} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-2.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - %branches - \IfEq{\PLARBREDONNES[1,2]}{} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \IfEq{\PLARBREDONNES[5,2]}{} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \IfEq{\PLARBREDONNES[2,2]}{} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \IfEq{\PLARBREDONNES[3,2]}{} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \IfEq{\PLARBREDONNES[4,2]}{} - {\draw[PLfleche] (A11)--(A23) ;} - {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \IfEq{\PLARBREDONNES[6,2]}{} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \IfEq{\PLARBREDONNES[7,2]}{} - {\draw[PLfleche] (A12)--(A25) ;} - {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \IfEq{\PLARBREDONNES[8,2]}{} - {\draw[PLfleche] (A12)--(A26) ;} - {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - }{} - %arbre2x3 - \IfEq{\PLAPtype}{3x3} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-4*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A13) at ({1*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[10,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - \node[noeud] (A27) at ({2*\PLAPespniv},{-6*\PLAPespfeuille}) {\PLARBREDONNES[10,1]}; - \node[noeud] (A28) at ({2*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[11,1]}; - \node[noeud] (A29) at ({2*\PLAPespniv},{-8*\PLAPespfeuille}) {\PLARBREDONNES[12,1]}; - %branches - \IfEq{\PLARBREDONNES[1,2]}{} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \IfEq{\PLARBREDONNES[5,2]}{} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \IfEq{\PLARBREDONNES[9,2]}{} - {\draw[PLfleche] (R)--(A13) ;} - {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;} - %N2 - \IfEq{\PLARBREDONNES[2,2]}{} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \IfEq{\PLARBREDONNES[3,2]}{} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \IfEq{\PLARBREDONNES[4,2]}{} - {\draw[PLfleche] (A11)--(A23) ;} - {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \IfEq{\PLARBREDONNES[6,2]}{} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \IfEq{\PLARBREDONNES[7,2]}{} - {\draw[PLfleche] (A12)--(A25) ;} - {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \IfEq{\PLARBREDONNES[8,2]}{} - {\draw[PLfleche] (A12)--(A26) ;} - {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - \IfEq{\PLARBREDONNES[10,2]}{} - {\draw[PLfleche] (A13)--(A27) ;} - {\draw[PLfleche] (A13)--(A27) node[probas,PLetiquette,{\PLARBREDONNES[10,3]}] {{\PLARBREDONNES[10,2]}} ;} - \IfEq{\PLARBREDONNES[11,2]}{} - {\draw[PLfleche] (A13)--(A28) ;} - {\draw[PLfleche] (A13)--(A28) node[probas,PLetiquette,{\PLARBREDONNES[11,3]}] {{\PLARBREDONNES[11,2]}} ;} - \IfEq{\PLARBREDONNES[12,2]}{} - {\draw[PLfleche] (A13)--(A29) ;} - {\draw[PLfleche] (A13)--(A29) node[probas,PLetiquette,{\PLARBREDONNES[12,3]}] {{\PLARBREDONNES[12,2]}} ;} - }{} - \end{tikzpicture} -} - -\NewDocumentEnvironment{PLenvarbre}{ O{} m }%1=options,2=libellés -{ - \useKVdefault[PLTIKZARBRE] - \setKV[PLTIKZARBRE]{#1} - \setsepchar[.]{,./}% - \readlist*\PLARBREDONNES{#2} - \begin{tikzpicture}[x=\PLAPunite,y=\PLAPunite] - %styles - \tikzstyle{noeud} = [font=\PLAPfont] - \tikzstyle{probas}= [font=\PLAPfontproba] - \ifboolKV[PLTIKZARBRE]{inclineprobas} - {\tikzstyle{PLetiquette}=[pos=0.525,sloped,fill=white]} - {\tikzstyle{PLetiquette}=[pos=0.525,fill=white]} - \ifboolKV[PLTIKZARBRE]{fleche} - {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait]} - {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait]} - %arbre2x2 - \IfEq{\PLAPtype}{2x2} - {% - \coordinate (R) at ({0*\PLAPespniv},{-1.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-0.5*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \IfEq{\PLARBREDONNES[1,2]}{} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \IfEq{\PLARBREDONNES[2,2]}{} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \IfEq{\PLARBREDONNES[3,2]}{} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \IfEq{\PLARBREDONNES[4,2]}{} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \IfEq{\PLARBREDONNES[5,2]}{} - {\draw[PLfleche] (A12)--(A23) ;} - {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \IfEq{\PLARBREDONNES[6,2]}{} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - }{} - %arbre3x2 - \IfEq{\PLAPtype}{3x2} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-2.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-0.5*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A13) at ({1*\PLAPespniv},{-4.5*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[9,1]}; - %branches - \IfEq{\PLARBREDONNES[1,2]}{} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \IfEq{\PLARBREDONNES[2,2]}{} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \IfEq{\PLARBREDONNES[3,2]}{} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \IfEq{\PLARBREDONNES[4,2]}{} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \IfEq{\PLARBREDONNES[5,2]}{} - {\draw[PLfleche] (A12)--(A23) ;} - {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \IfEq{\PLARBREDONNES[6,2]}{} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \IfEq{\PLARBREDONNES[7,2]}{} - {\draw[PLfleche] (R)--(A13) ;} - {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \IfEq{\PLARBREDONNES[8,2]}{} - {\draw[PLfleche] (A13)--(A25) ;} - {\draw[PLfleche] (A13)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - \IfEq{\PLARBREDONNES[9,2]}{} - {\draw[PLfleche] (A13)--(A26) ;} - {\draw[PLfleche] (A13)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;} - }{} - %arbre2x3 - \IfEq{\PLAPtype}{2x3} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-2.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - %branches - \IfEq{\PLARBREDONNES[1,2]}{} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \IfEq{\PLARBREDONNES[5,2]}{} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \IfEq{\PLARBREDONNES[2,2]}{} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \IfEq{\PLARBREDONNES[3,2]}{} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \IfEq{\PLARBREDONNES[4,2]}{} - {\draw[PLfleche] (A11)--(A23) ;} - {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \IfEq{\PLARBREDONNES[6,2]}{} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \IfEq{\PLARBREDONNES[7,2]}{} - {\draw[PLfleche] (A12)--(A25) ;} - {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \IfEq{\PLARBREDONNES[8,2]}{} - {\draw[PLfleche] (A12)--(A26) ;} - {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - }{} - %arbre2x3 - \IfEq{\PLAPtype}{3x3} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-4*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A13) at ({1*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[10,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - \node[noeud] (A27) at ({2*\PLAPespniv},{-6*\PLAPespfeuille}) {\PLARBREDONNES[10,1]}; - \node[noeud] (A28) at ({2*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[11,1]}; - \node[noeud] (A29) at ({2*\PLAPespniv},{-8*\PLAPespfeuille}) {\PLARBREDONNES[12,1]}; - %branches - \IfEq{\PLARBREDONNES[1,2]}{} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \IfEq{\PLARBREDONNES[5,2]}{} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \IfEq{\PLARBREDONNES[9,2]}{} - {\draw[PLfleche] (R)--(A13) ;} - {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;} - %N2 - \IfEq{\PLARBREDONNES[2,2]}{} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \IfEq{\PLARBREDONNES[3,2]}{} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \IfEq{\PLARBREDONNES[4,2]}{} - {\draw[PLfleche] (A11)--(A23) ;} - {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \IfEq{\PLARBREDONNES[6,2]}{} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \IfEq{\PLARBREDONNES[7,2]}{} - {\draw[PLfleche] (A12)--(A25) ;} - {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \IfEq{\PLARBREDONNES[8,2]}{} - {\draw[PLfleche] (A12)--(A26) ;} - {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - \IfEq{\PLARBREDONNES[10,2]}{} - {\draw[PLfleche] (A13)--(A27) ;} - {\draw[PLfleche] (A13)--(A27) node[probas,PLetiquette,{\PLARBREDONNES[10,3]}] {{\PLARBREDONNES[10,2]}} ;} - \IfEq{\PLARBREDONNES[11,2]}{} - {\draw[PLfleche] (A13)--(A28) ;} - {\draw[PLfleche] (A13)--(A28) node[probas,PLetiquette,{\PLARBREDONNES[11,3]}] {{\PLARBREDONNES[11,2]}} ;} - \IfEq{\PLARBREDONNES[12,2]}{} - {\draw[PLfleche] (A13)--(A29) ;} - {\draw[PLfleche] (A13)--(A29) node[probas,PLetiquette,{\PLARBREDONNES[12,3]}] {{\PLARBREDONNES[12,2]}} ;} - }{} - } - { - \end{tikzpicture} -} - -%==============SCHEMASPROBAS============= OK! -%densites utiles -\def\densnorm#1{1/(sqrt(2*pi))*exp(-0.5*(#1*#1))} -\def\densexpo#1{exp(-#1)} - -\defKV[GRPHPROBCONTINUES]{% - CouleurAire=\def\GRPHPROBcoulsurf{#1},% - CouleurCourbe=\def\GRPHPROBcoulcbe{#1},% - Largeur=\def\GRPHPROBlarg{#1},% - Hauteur=\def\GRPHPROBhauteur{#1} -} - -\setKVdefault[GRPHPROBCONTINUES]{% - CouleurAire=LightGray,% - CouleurCourbe=red,% - Largeur=2,% - Hauteur=1,% - AfficheM=true,% - AfficheCadre=true -} - -\NewDocumentCommand\LoiNormaleGraphe{ O{} D<>{} m m m m }{%1=options,2=optionstikz,3=m,4=s,5=a,6=b - %simplekv - \useKVdefault[GRPHPROBCONTINUES]% - \setKV[GRPHPROBCONTINUES]{#1}% - %unites - \def\UNITEX{\fpeval{\GRPHPROBlarg/8}}\def\UNITEY{\fpeval{\GRPHPROBhauteur/0.5}}% - %bornes - \def\BorneInf{\fpeval{(#5-#3)/#4}}\def\BorneSup{\fpeval{(#6-#3)/#4}}% - \ifthenelse{\equal{#5}{*}}{\def\BorneInf{-4}}{}% - \ifthenelse{\equal{#6}{*}}{\def\BorneSup{4}}{}% - %tikzpicture - \begin{tikzpicture}[x=\UNITEX cm,y=\UNITEY cm,#2] - \ifboolKV[GRPHPROBCONTINUES]{AfficheM}% - {\draw (0,-0.0375) node[font=\tiny,scale={2*\UNITEX}] {#3} ;} - {} - \ifboolKV[GRPHPROBCONTINUES]{AfficheCadre}% - {\draw[Gray] (-4,-0.075) rectangle (4,0.425) ;} - {} - \clip (-4,-0.075) rectangle (4,0.425) ; - \draw[black,semithick,fill=\GRPHPROBcoulsurf] ({\BorneInf},0) -- plot [domain={\BorneInf}:{\BorneSup},samples=100] (\x,{\densnorm{\x}}) -- ({\BorneSup},0) -- cycle; - \draw[thick,->,>=stealth] (-4,0)--(4,0) ; - \draw[thick,densely dotted] (0,0)--(0,0.39894) ; - \draw[thick,domain=-4:4,samples=100,\GRPHPROBcoulcbe] plot (\x,{\densnorm{\x}}) ; - \end{tikzpicture} -} - -\NewDocumentCommand\LoiExpoGraphe{ O{} D<>{} m m m }{%1=options,2=optionstikz,3=l,4=a,5=b - %simplekv - \useKVdefault[GRPHPROBCONTINUES]% - \setKV[GRPHPROBCONTINUES]{#1}% - %unites - \def\UNITEX{\fpeval{\GRPHPROBlarg/4}}\def\UNITEY{\fpeval{\GRPHPROBhauteur/1}}% - \def\MOYENNE{\fpeval{trunc(1/#3,0)}}% - %bornes - \def\BorneInf{\fpeval{#3*#4}}\def\BorneSup{\fpeval{#3*#5}}% - \ifthenelse{\equal{#4}{*}}{\def\BorneInf{0}}{}% - \ifthenelse{\equal{#5}{*}}{\def\BorneSup{4}}{}% - %tikzpicture - \begin{tikzpicture}[x=\UNITEX cm,y=\UNITEY cm,#2] - \ifboolKV[GRPHPROBCONTINUES]{AfficheCadre}% - {\draw[Gray] (-0.2,-0.15) rectangle (3.8,0.85) ;} - {} - \clip (-0.2,-0.15) rectangle (3.8,0.85) ; - \draw[black,semithick,fill=\GRPHPROBcoulsurf] ({\BorneInf},0) -- plot [domain={\BorneInf}:{\BorneSup},samples=100] (\x,{0.7*\densexpo{\x}}) -- ({\BorneSup},0) -- cycle; - \ifboolKV[GRPHPROBCONTINUES]{AfficheM}% - {\draw (1,-0.075) node[font=\tiny,scale={\UNITEX}] {\MOYENNE} ; - \draw[thick,densely dotted] (1,0)--(1,{0.7*\densexpo{1}}) ;} - {} - \draw[thick,->,>=stealth] (-0.2,0)--(3.8,0) ; - \draw[thick,->,>=stealth] (0,-0.15)--(0,0.85) ; - \draw[thick,domain=0:3.8,samples=100,\GRPHPROBcoulcbe] plot (\x,{0.7*\densexpo{\x}}) ; - \end{tikzpicture} -} - -%===============TRINOMEALEA============== OK! -\setKVdefault[trinomealea]{% - Alea=false,% - Anegatif=true -} - -\NewDocumentCommand\EcritureTrinome{ O{} m m m }{% - \useKVdefault[trinomealea]% - \setKV[trinomealea]{#1}% - \ifboolKV[trinomealea]{Alea}% - {% - \xdef\Coeffa{\fpeval{randint(#2)}}\xdef\Coeffb{\fpeval{randint(#3)}}\xdef\Coeffc{\fpeval{randint(#4)}}% - \xdef\AleaSigneA{\fpeval{randint(1,2)}}% - \ifboolKV[trinomealea]{Anegatif}% - {\xintifboolexpr{\AleaSigneA == 1}{\def\TriSigneA{}}{\def\TriSigneA{-}}}% - {\def\TriSigneA{}}%forcément a>0 - }% - {% - \xdef\Coeffa{#2}\xdef\Coeffb{#3}\xdef\Coeffc{#4}% - \def\TriSigneA{}% - }% - \def\TriPartieA{\num{\TriSigneA\Coeffa} x^2}% - \xintifboolexpr{\Coeffa == 1}% - {\def\TriPartieA{x^2}}{}% - \xintifboolexpr{\Coeffa == -1}% - {\def\TriPartieA{-x^2}}{}% - \def\TriPartieB{\num[print-implicit-plus]{\Coeffb}x}% - \xintifboolexpr{\Coeffb == 0}% - {\def\TriPartieB{}}{}% - \xintifboolexpr{\Coeffb == 1}% - {\def\TriPartieB{+x}}{}% - \xintifboolexpr{\Coeffb == -1}% - {\def\TriPartieB{-x}}{}% - \xintifboolexpr{\Coeffc == 0}% - {\def\TriPartieC{}}{\def\TriPartieC{\num[print-implicit-plus]{\Coeffc}}}% - %formatage - \ensuremath{\TriPartieA\TriPartieB\TriPartieC}% -} - - -%=================PRESPGCD=============== OK! -\DeclareMathOperator{\PLpgcd}{PGCD} -\defKV[prespgcd]{% - Couleur=\def\PLPGCDCouleur{#1},% - DecalRect=\def\PLPGCDDecal{#1},% - Noeud=\def\PLPGCDNoeud{#1} -} - -\setKVdefault[prespgcd]{% - Couleur=red,% - DecalRect=2pt,% - Rectangle=true,% - Noeud=FFF,% - CouleurResultat=false,% - AfficheConclusion=true,% - AfficheDelimiteurs=true -} - -\newcommand\PresentationPGCD[3][]{% - \useKVdefault[prespgcd]% - \setKV[prespgcd]{#1}% - \xdef\respgcd{\xinteval{gcd(#2,#3)}} - \xdef\ValA{#2}\xdef\ValB{#3}%on stocke les valeurs du départ - \ensuremath{% - \ifboolKV[prespgcd]{AfficheDelimiteurs}% - {\left\lbrace}% - {}% - \begin{array}{@{\,}r@{\;=\;}l@{\;+\;}r} - %1ère division - \xdef\ValQ{\fpeval{trunc(\ValA/\ValB,0)}}\xdef\ValR{\fpeval{\ValA-\ValB*\ValQ}} - \num{\ValA}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}% - \xintifboolexpr{\ValR == \respgcd}% - {\PLnoeud{\PLPGCDNoeud1}{\num{\ValR}}}%noeud si c'est le pgcd - {\num{\ValR}}% - \xdef\ValA{\ValB}\xdef\ValB{\ValR}%nouvelles valeurs - \whiledo {\ValR > 0}% - {% - \xdef\ValQ{\fpeval{trunc(\ValA/\ValB,0)}}\xdef\ValR{\fpeval{\ValA-\ValB*\ValQ}}% - \\% - \num{\ValA}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}% - \xintifboolexpr{\ValR == \respgcd}% - {\PLnoeud{\PLPGCDNoeud1}{\num{\ValR}}}%noeud si c'est le pgcd - {\num{\ValR}}% - \xdef\ValA{\ValB}\xdef\ValB{\ValR}%nouvelles valeurs - }% - \end{array}% - \ifboolKV[prespgcd]{AfficheDelimiteurs}% - {\right|}% - {}% - \ifboolKV[prespgcd]{AfficheConclusion}% - {% - \Rightarrow \PLpgcd\left(\num{#2}\mathpunct{};\num{#3}\right)=\ifboolKV[prespgcd]{CouleurResultat}{\mathcolor{\PLPGCDCouleur}{\num{\respgcd}}}{\num{\respgcd}}% - }% - {}% - }% - \ifboolKV[prespgcd]{Rectangle}% - {% - \begin{tikzpicture} - \draw[overlay,rounded corners=4pt,\PLPGCDCouleur,thick] ($(\PLPGCDNoeud1.north west)+(-\PLPGCDDecal,\PLPGCDDecal)$) rectangle ($(\PLPGCDNoeud1.south east)+(\PLPGCDDecal,-\PLPGCDDecal)$) ; - \end{tikzpicture}% - }{}% -} - -\endinput
\ No newline at end of file diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty index bed6473cca..d2c18333cf 100644 --- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty +++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty @@ -3,7 +3,8 @@ % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfLycee}[2023/06/15 2.7.0 Aide pour l'utilisation de LaTeX en lycee] +\ProvidesPackage{ProfLycee}[2023/08/08 2.7.1 Aide pour l'utilisation de LaTeX en lycee] +% 2.7.1 Modification du chargement de tcolorbox % 2.7.0 Ajout de la clé [Frac] pour \AxeyTikz + \FonctionRepartTikz % 2.6.9 Correction de bugs et améliorations des boîtes de codes % 2.6.8 Ajout d'une grille (manuelle) pour les histogrammes non réguliers @@ -105,7 +106,9 @@ \usetikzlibrary{shapes.geometric} \usetikzlibrary{decorations.pathmorphing} %tcolorbox -\RequirePackage[most]{tcolorbox} +%\RequirePackage[most]{tcolorbox} +\RequirePackage{tcolorbox}% +\tcbuselibrary{breakable,fitting,skins,listings,listingsutf8,hooks} %divers \RequirePackage{iftex} diff --git a/macros/latex/contrib/verbatimbox/verbatimbox.pdf b/macros/latex/contrib/verbatimbox/verbatimbox.pdf Binary files differindex 494eb02444..1f8c180599 100644 --- a/macros/latex/contrib/verbatimbox/verbatimbox.pdf +++ b/macros/latex/contrib/verbatimbox/verbatimbox.pdf diff --git a/macros/latex/contrib/verbatimbox/verbatimbox.sty b/macros/latex/contrib/verbatimbox/verbatimbox.sty index dbfda1e387..de3e9a83ea 100644 --- a/macros/latex/contrib/verbatimbox/verbatimbox.sty +++ b/macros/latex/contrib/verbatimbox/verbatimbox.sty @@ -1,6 +1,6 @@ -\def\verbatimboxVersionNumber{v3.13 } +\def\verbatimboxVersionNumber{v3.2} \ProvidesPackage{verbatimbox} - [2014/03/12 \verbatimboxVersionNumber + [2023/08/08 \verbatimboxVersionNumber\ Routines for placing verbatim text into boxes, useful in places where the verbatim environment is inaccessible. Secondarily, for adding vertical buffer around an object.] @@ -44,7 +44,10 @@ vertical buffer around an object.] % -When using two lengths in \addvbuffer optional argument, % they MUST be individually in {}, rather than "~" or "\ " between % 3.13 -Corrected residual bug from V3.11, when \addvbuffer called -% without an optional argument, +% without an optional argument. +% 3.2 -Reworked \addvbuffer definition completely, to avoid use of +% deprecated \getargsC reference. Instead, new approach employs +% listofitems package to decode optional argument. \NeedsTeXFormat{LaTeX2e} \@ifundefined{verbatim@processline}{\RequirePackage{verbatim}}{} \usepackage{readarray} @@ -171,7 +174,7 @@ vertical buffer around an object.] \if #1t% % The t option is for outputting the savedverbbox inside a tabular % environment (else insufficent vertical space above box) - \addvbuffer[{\boxtopsep} {\boxbottomsep}]{\usebox{\savedverbbox}}% + \addvbuffer[\boxtopsep{} \boxbottomsep]{\usebox{\savedverbbox}}% \else% \usebox{\savedverbbox}% \fi% @@ -198,13 +201,17 @@ vertical buffer around an object.] \global\newlength\boxtop@sep \global\newlength\boxbottom@sep -\newcommand\addvbuffer[2][{\boxtopsep} {\boxbottomsep}]{% - \getargsC{#1}% - \setlength\boxtop@sep{\argi}% - \if1\narg\setlength\boxbottom@sep{\argi}\else% - \setlength\boxbottom@sep{\argii}\fi% +\newcommand\addvbuffer[2][\boxtopsep{} \boxbottomsep]{\bgroup% + \setsepchar{ }% + \readlist\tmplist{#1}% + \setlength\boxtop@sep{\tmplist[1]}% + \ifnum\listlen\tmplist[]=1 + \setlength\boxbottom@sep{\tmplist[1]}% + \else% + \setlength\boxbottom@sep{\tmplist[2]}% + \fi% \add@vbuffer{#2}% -} +\egroup} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The following two "nobox" commands are basically versions of diff --git a/macros/latex/contrib/verbatimbox/verbatimbox.tex b/macros/latex/contrib/verbatimbox/verbatimbox.tex index 6ae4998898..c9863c8261 100644 --- a/macros/latex/contrib/verbatimbox/verbatimbox.tex +++ b/macros/latex/contrib/verbatimbox/verbatimbox.tex @@ -69,7 +69,7 @@ for adding vertical buffer around an object. \end{minipage} }\\ \rule{0em}{2.7em}\large Steven B. Segletes\\ -steven.b.segletes.civ@mail.mil\\ +SSegletes@verizon.net\\ \rule{0em}{1.7em}\today\\ \verbatimboxVersionNumber \end{center} @@ -107,10 +107,12 @@ follows:\\\itshape \tvb\lb\texttt{\upshape t}\rb\\ \bts\eq length\\ \bbs\eq length\\ - \avb\lb length \lb below length\rb\rb\lbr object\rbr\\ + \avb\lb length\rb\lbr object\rbr{} \textup{OR}\\ + \mbox{}\hspace{3ex}\avb\lb above-length below-length\rb\lbr object\rbr\\ \bgn\lbr\vrnobox\rbr\lb pre-commands\rb\ldots\edng\lbr\vrnobox\rbr\\ \vbfnobox\lb pre-commands\rb\lbr filename\rbr -}}\\\upshape +}}\\[10pt] +\upshape In addition, there is a counter, \vln\margenv{\vln}, which contains the current verbatim line number being processed. It's use as part of the optional pre-commands to \vrbox, \myvrbox, or {\vbfbox} (in the form @@ -341,19 +343,20 @@ adding negative buffer \verb|\fbox{\addvbuffer[-5pt -5pt]{A test}}|: This ability to work on a variety of objects makes {\avb} a powerful command in many applications. -\textbf{ATTENTION. This paragraph represents a change as of V3.11, and -can break backward compatibilty}. Likewise, if two length variables are to be used in the optional -argument, the two lengths must be separately braced, with a space in between: +argument, a non-absorbed space must exist between them. +Thus, if the first of the two lengths is a macro or length register, + an empty group \verb|{}| should be placed at the end of it, so that + the subsequent space is not absorbed: \begin{verbatim} - \fbox{\addvbuffer[{\baselineskip} {.5\baselineskip}]{A test}} + \fbox{\addvbuffer[\baselineskip{} .5\baselineskip]{A test}} \end{verbatim} -\rl\fbox{\addvbuffer[{\baselineskip} {.5\baselineskip}]{A test}} +\rl\fbox{\addvbuffer[\baselineskip{} .5\baselineskip]{A test}} -{\bfseries One may no longer use a ``\verb|\ |'' hard space to separate the -two arguments.} +One may not use a ``\verb|\ |'' hard space to separate the +two arguments, but instead the method prescribed above. \subsection{The ``nobox'' Alternatives} diff --git a/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-en.pdf b/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-en.pdf Binary files differindex ea99e67782..8fd6d57bd4 100644 --- a/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-en.pdf +++ b/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-en.pdf diff --git a/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-en.tex b/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-en.tex index 43d5f7ec15..a4eb7773f4 100644 --- a/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-en.tex +++ b/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-en.tex @@ -45,8 +45,8 @@ \setlength{\parindent}{0pt} \definecolor{LightGray}{gray}{0.9} -\def\TPversion{0.1.3} -\def\TPdate{18/03/2023} +\def\TPversion{0.1.4} +\def\TPdate{09/08/2023} \usepackage[most]{tcolorbox} \tcbuselibrary{minted} @@ -168,10 +168,14 @@ It’s mostly compatible with \textsf{latex}, \textsf{pdflatex}, \textsf{lualate \medskip +For a better compatibility, \texttt{xcolor} isn't charged anymore with options, so the usefull colors are directly defined within the package. + +\medskip + It loads the following packages and libraries : \begin{itemize} - \item \texttt{xcolor} with options \Cle{table,svgnames} ; + %\item \texttt{xcolor} with options \Cle{table,svgnames} ; \item \texttt{tikz} with the librairies \Cle{calc} and \Cle{positionning} ; \item \texttt{xstring}, \texttt{xparse} and \texttt{simplekv}. \end{itemize} @@ -202,7 +206,7 @@ For example, a $5\times5$ grid : \item with a size 24x5 squares ; \item with an overtaking by \textcolor{red}{2 squares at the left} and \textcolor{blue}{3 squares at the right} ; \item with a global margin of \textcolor{orange}{1 square} ; - \item with a \textcolor{ForestGreen}{\textit{border}} to show the \textit{basis} grid. + \item with a \textcolor{green!50!black}{\textit{border}} to show the \textit{basis} grid. \end{itemize} \medskip @@ -215,16 +219,16 @@ For example, a $5\times5$ grid : \draw[blue,thick,decorate,decoration={brace,amplitude=8pt,mirror}] ({0.5*24},{-0.5*5-0.25})--({0.5*24+3*0.5},{-0.5*5-0.25}) node[midway,below=8pt,font=\small\sffamily] {3C} ; \draw[thick,decorate,decoration={brace,amplitude=8pt}] ({0.5*24+3*0.5+0.25},0)--({0.5*24+3*0.5+0.25},{-0.5*5}) node[midway,right=8pt,font=\small\sffamily] {5C} ; \draw[very thick,orange,densely dashed] ({0.5*1},0)--({0.5*1},{-0.5*5}) ; - \draw[ForestGreen,thick] (0,0) rectangle ({0.5*24},{-0.5*5}) ; + \draw[green!50!black,thick] (0,0) rectangle ({0.5*24},{-0.5*5}) ; \end{tikzpicture} \vspace{1.25cm} -The \texttt{tikzpicture} is \textit{bounded} by the \textcolor{ForestGreen}{\textit{border}}, in order to specify overtakings or alignment. +The \texttt{tikzpicture} is \textit{bounded} by the \textcolor{green!50!black}{\textit{border}}, in order to specify overtakings or alignment. \smallskip -Le left-border of the \textcolor{ForestGreen}{\textit{border}} is aligned on the left-margin of the page, so take care of the \texttt{\textbackslash parindent}. +Le left-border of the \textcolor{green!50!black}{\textit{border}} is aligned on the left-margin of the page, so take care of the \texttt{\textbackslash parindent}. \subsection{Predefined colors} @@ -232,10 +236,20 @@ The package \textsf{WriteOnGrid} proposes "shortcuts" for classic colors ! \begin{PresentationCode}{listing only} \definecolor{TyrianPurple}{rgb}{0.4,0.01,0.24} +\definecolor{PapierRose}{HTML}{E6B8E6} +\definecolor{PapierGris}{HTML}{D7E2EE} %Colors for Seyes -\def\ColSeyes{Plum!75/LightSteelBlue!50} +\def\ColSeyes{PapierRose/PapierGris} %Colors for Ruled -\def\ColRuled{LightSteelBlue!50/TyrianPurple} +\def\ColRuled{PapierGris/TyrianPurple} +\end{PresentationCode} + +\begin{PresentationCode}{text only} +{\tikz \filldraw[TyrianPurple] (0,0) rectangle++ (6,1) node[midway,font=\bfseries\large,text=white] {\verb+TyrianPurple+};} + +{\tikz \filldraw[PapierRose] (0,0) rectangle++ (6,1) node[midway,font=\bfseries\large,text=black] {\verb+PapierRose+};} + +{\tikz \filldraw[PapierGris] (0,0) rectangle++ (6,1) node[midway,font=\bfseries\large,text=black] {\verb+PapierGris+};} \end{PresentationCode} \pagebreak @@ -275,8 +289,8 @@ The second argument, \textit{optional}, between \texttt{<...>} is the color(s) o %18x4 big squares, w/o overtaking, Seyes colors, w/o margin/bar \DispGrid[NumSquares=18x4,Grid=Seyes,DispBar=false]<\ColSeyes> -%36x8 small squares, overtakings 3/3, LightSteelBlue color -\DispGrid[NumSquares=36x8,Enlarge=3/3]<LightSteelBlue> +%36x8 small squares, overtakings 3/3, PapierGris color +\DispGrid[NumSquares=36x8,Enlarge=3/3]<PapierGris> %12x3 lines "Ruled", w/o overtakins, Ruled colors, centered, with 2-margin \begin{center} @@ -290,7 +304,7 @@ The second argument, \textit{optional}, between \texttt{<...>} is the color(s) o \medskip -\DispGrid[NumSquares=36x8,Enlarge=3/3]<LightSteelBlue> +\DispGrid[NumSquares=36x8,Enlarge=3/3]<PapierGris> \smallskip @@ -336,8 +350,8 @@ The second argument, \textit{optional}, between \texttt{<...>} is the color(s) o \begin{EnvGrid}[NumSquares=18x4,Grid=Seyes,Margin=3]<\ColSeyes> \end{EnvGrid} -%36x8 small squares, overtakings 3/3, LightSteelBlue color -\begin{EnvGrid}[NumSquares=36x8,Enlarge=3/3]<LightSteelBlue> +%36x8 small squares, overtakings 3/3, PapierGris color +\begin{EnvGrid}[NumSquares=36x8,Enlarge=3/3]<PapierGris> \end{EnvGrid} %12x3 lines "Ruled", w/o overtakins, Ruled colors, centered, with 2-margin @@ -354,7 +368,7 @@ The second argument, \textit{optional}, between \texttt{<...>} is the color(s) o \smallskip -\begin{EnvGrid}[NumSquares=36x8,Enlarge=3/3]<LightSteelBlue> +\begin{EnvGrid}[NumSquares=36x8,Enlarge=3/3]<PapierGris> \end{EnvGrid} \smallskip @@ -393,7 +407,7 @@ The fisrt argument, \textit{optional}, between \texttt{[...]} give the \Cle{keys \item \Cle{Scale} to specify the scale of the given text.\hfill~default : \Cle{1} \end{itemize} -the second argument, \textit{optional}, between \texttt{<...>} is the horizontal alignment (\Cle{left/center/right}) of the text in the basis \textcolor{ForestGreen}{\textit{border}}, \Cle{left} by default. +the second argument, \textit{optional}, between \texttt{<...>} is the horizontal alignment (\Cle{left/center/right}) of the text in the basis \textcolor{green!50!black}{\textit{border}}, \Cle{left} by default. \medskip @@ -454,7 +468,7 @@ To sum up, they create full paper grid (by preference for \texttt{\textbf{a4pape \LignePapierRuled[Echelle=1.25,Ligne=1]{C. PIERQUET \hfill LaTeX} \LignePapierRuled[Echelle=1.25,Ligne=2,Couleur=red]<center>{\underline{\cursive\bfseries Evaluation 3}} \CadreNoteRuled{3} - \LignePapierRuled[Echelle=1.25,Ligne=8,Couleur=ForestGreen]{\sffamily\underline{Exercise 1 :}} + \LignePapierRuled[Echelle=1.25,Ligne=8,Couleur=green!50!black]{\sffamily\underline{Exercise 1 :}} \ParagraphePapierRuled[Ligne=9]{\cursive\lipsum[1]} \ParagraphePapierRuled[Ligne=22] {% @@ -473,7 +487,7 @@ To sum up, they create full paper grid (by preference for \texttt{\textbf{a4pape \LignePapierRuled[Echelle=1.25,Ligne=1]{C. PIERQUET \hfill LaTeX} \LignePapierRuled[Echelle=1.25,Ligne=2,Couleur=red]<center>{\underline{\cursive\bfseries Evaluation 3}} \CadreNoteRuled{3} - \LignePapierRuled[Echelle=1.25,Ligne=8,Couleur=ForestGreen]{\sffamily\underline{Exercise 1 :}} + \LignePapierRuled[Echelle=1.25,Ligne=8,Couleur=green!50!black]{\sffamily\underline{Exercise 1 :}} \ParagraphePapierRuled[Ligne=9]{\cursive\lipsum[1]} \ParagraphePapierRuled[Ligne=22] {% @@ -485,9 +499,10 @@ To sum up, they create full paper grid (by preference for \texttt{\textbf{a4pape \pagebreak - \part*{History} +\verb|v0.1.4|~:~~~~\texttt{xcolor} isn't loadeed with \textsf{[table,svgnames]}) + \verb|v0.1.3|~:~~~~Command to display a grid (w/o writing on it) \verb|v0.1.2|~:~~~~Shortcuts for default colors + small bugfixes diff --git a/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-fr.pdf b/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-fr.pdf Binary files differindex 192f3003b0..4d2e8e30a7 100644 --- a/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-fr.pdf +++ b/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-fr.pdf diff --git a/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-fr.tex b/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-fr.tex index 9de5e053b8..f8eb908f45 100644 --- a/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-fr.tex +++ b/macros/latex/contrib/writeongrid/doc/WriteOnGrid-doc-fr.tex @@ -48,8 +48,8 @@ \setlength{\parindent}{0pt} \definecolor{LightGray}{gray}{0.9} -\def\TPversion{0.1.3} -\def\TPdate{18 Mars 2023} +\def\TPversion{0.1.4} +\def\TPdate{09 août 2023} \usepackage[most]{tcolorbox} \tcbuselibrary{minted} @@ -180,12 +180,16 @@ Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdfl \medskip +Pour des soucis de compatibilité, \texttt{xcolor} n'est pas chargé avec des options spécifiques, les couleurs utiles ont été définies directement dans le package. + +\medskip + Il charge les packages et librairies suivantes : \begin{itemize} - \item \texttt{xcolor} avec les options \Cle{table,svgnames} ; + %\item \texttt{xcolor} avec les options \Cle{table,svgnames} ; \item \texttt{tikz} avec les librairies \Cle{calc} et \Cle{positionning} ; - \item \texttt{xstring}, \texttt{xparse} et \texttt{simplekv}. + \item \texttt{xstring} et \texttt{simplekv}. \end{itemize} \subsection{\og Philosophie \fg{} du package} @@ -214,7 +218,7 @@ Ci-dessous on représente une grille $5\times5$ : \item de taille 24x5 ; \item avec un élargissement de \textcolor{red}{2 carreaux à gauche} et \textcolor{blue}{3 carreaux à droite} ; \item en commençant à écrire au niveau du \textcolor{orange}{1\up{er} carreau} ; - \item un \textcolor{ForestGreen}{\textit{cadre}} est rajouté pour visualiser la grille \textit{de base}. + \item un \textcolor{green!50!black}{\textit{cadre}} est rajouté pour visualiser la grille \textit{de base}. \end{itemize} \medskip @@ -227,16 +231,18 @@ Ci-dessous on représente une grille $5\times5$ : \draw[blue,thick,decorate,decoration={brace,amplitude=8pt,mirror}] ({0.5*24},{-0.5*5-0.25})--({0.5*24+3*0.5},{-0.5*5-0.25}) node[midway,below=8pt,font=\small\sffamily] {3C} ; \draw[thick,decorate,decoration={brace,amplitude=8pt}] ({0.5*24+3*0.5+0.25},0)--({0.5*24+3*0.5+0.25},{-0.5*5}) node[midway,right=8pt,font=\small\sffamily] {5C} ; \draw[very thick,orange,densely dashed] ({0.5*1},0)--({0.5*1},{-0.5*5}) ; - \draw[ForestGreen,thick] (0,0) rectangle ({0.5*24},{-0.5*5}) ; + \draw[green!50!black,thick] (0,0) rectangle ({0.5*24},{-0.5*5}) ; \end{tikzpicture} \vspace{1.5cm} -Il est à noter que le figure \texttt{tikzpicture} est \textit{délimitée} par le \textcolor{ForestGreen}{\textit{cadre}}, afin de pouvoir gérer les débordements et l'alignement de l'environnement ! +Il est à noter que le figure \texttt{tikzpicture} est \textit{délimitée} par le \textcolor{green!50!black}{\textit{cadre}}, afin de pouvoir gérer les débordements et l'alignement de l'environnement ! \smallskip -De plus, le bord gauche du \textcolor{ForestGreen}{\textit{cadre}} est aligné sur la marge gauche de la page, donc la position du quadrillage dépend en partie de la configuration de \texttt{\textbackslash parindent}. +De plus, le bord gauche du \textcolor{green!50!black}{\textit{cadre}} est aligné sur la marge gauche de la page, donc la position du quadrillage dépend en partie de la configuration de \texttt{\textbackslash parindent}. + +\pagebreak \subsection{Couleurs prédéfinies} @@ -244,12 +250,24 @@ Le package \textsf{WriteOnGrid} définit également des couleurs pour une saisie \begin{PresentationCode}{listing only} \definecolor{TyrianPurple}{rgb}{0.4,0.01,0.24} +\definecolor{PapierRose}{HTML}{E6B8E6} +\definecolor{PapierGris}{HTML}{D7E2EE} %Couleurs adaptées pour le Seyes -\def\CoulSeyes{Plum!75/LightSteelBlue!50} +\def\CoulSeyes{PapierRose/PapierGris} %Couleurs adaptées pour le Ruled -\def\CoulRuled{LightSteelBlue!50/TyrianPurple} +\def\CoulRuled{PapierGris/TyrianPurple} +\end{PresentationCode} + +\begin{PresentationCode}{text only} +{\tikz \filldraw[TyrianPurple] (0,0) rectangle++ (6,1) node[midway,font=\bfseries\large,text=white] {\verb+TyrianPurple+};} + +{\tikz \filldraw[PapierRose] (0,0) rectangle++ (6,1) node[midway,font=\bfseries\large,text=black] {\verb+PapierRose+};} + +{\tikz \filldraw[PapierGris] (0,0) rectangle++ (6,1) node[midway,font=\bfseries\large,text=black] {\verb+PapierGris+};} \end{PresentationCode} + + \pagebreak \section{Grilles individuelles} @@ -290,8 +308,8 @@ Le second argument, \textit{optionnel}, entre \texttt{<...>} correspond quant à %18x4 grands carreaux, sans dépassement, couleurs adaptées, sans marge/barre \AffQuadrillage[NbCarreaux=18x4,Grille=Seyes,AffBarre=false]<\CoulSeyes> -%36x8 petits carreaux, avec débordements 3/3, couleur LightSteelBlue!50 -\AffQuadrillage[NbCarreaux=36x8,Elargir=3/3]<LightSteelBlue!50> +%36x8 petits carreaux, avec débordements 3/3, couleur PapierGris +\AffQuadrillage[NbCarreaux=36x8,Elargir=3/3]<PapierGris> %12x3 lignes "Ruled", sans débordements, couleur Ruled, centré, avec marge \begin{center} @@ -305,7 +323,7 @@ Le second argument, \textit{optionnel}, entre \texttt{<...>} correspond quant à \medskip -\AffQuadrillage[NbCarreaux=36x8,Elargir=3/3]<LightSteelBlue!50> +\AffQuadrillage[NbCarreaux=36x8,Elargir=3/3]<PapierGris> \begin{center} \AffQuadrillage[NbCarreaux=12x3,Elargir=2/2,Grille=Ruled,Marge=2]<\CoulRuled> @@ -352,8 +370,8 @@ Le second argument, \textit{optionnel}, entre \texttt{<...>} correspond quant à \begin{EnvQuadrillage}[NbCarreaux=18x4,Grille=Seyes,Marge=3]<\CoulSeyes> \end{EnvQuadrillage} -%36x8 petits carreaux, avec débordements 3/3, couleur LightSteelBlue!50 -\begin{EnvQuadrillage}[NbCarreaux=36x8,Elargir=3/3]<LightSteelBlue!50> +%36x8 petits carreaux, avec débordements 3/3, couleur PapierGris +\begin{EnvQuadrillage}[NbCarreaux=36x8,Elargir=3/3]<PapierGris> \end{EnvQuadrillage} %12x3 lignes "Ruled", sans débordements, couleur Ruled, centré, avec marge @@ -370,7 +388,7 @@ Le second argument, \textit{optionnel}, entre \texttt{<...>} correspond quant à \smallskip -\begin{EnvQuadrillage}[NbCarreaux=36x8,Elargir=3/3,Cadre]<LightSteelBlue!50> +\begin{EnvQuadrillage}[NbCarreaux=36x8,Elargir=3/3,Cadre]<PapierGris> \end{EnvQuadrillage} \begin{center} @@ -407,7 +425,7 @@ Le premier argument, entre \texttt{[...]} propose les \Cle{clés} : \item \Cle{Echelle} pour spécifier l'échelle du texte à écrire.\hfill~défaut : \Cle{1} \end{itemize} -Le deuxième argument, \textit{optionnel}, entre \texttt{<...>} permet de spécifier l'alignement horizontal (parmi \Cle{left/center/right}) du texte dans le \textcolor{ForestGreen}{\textit{cadre}} de base, \Cle{left} par défaut. +Le deuxième argument, \textit{optionnel}, entre \texttt{<...>} permet de spécifier l'alignement horizontal (parmi \Cle{left/center/right}) du texte dans le \textcolor{green!50!black}{\textit{cadre}} de base, \Cle{left} par défaut. \medskip @@ -484,8 +502,8 @@ Tout le placement est géré grâce à un point (fictif), nommé \texttt{(SeyesO Pour l'environnement de création de la grille, l'argument, \textit{optionnel} et entre \texttt{[...]}, propose : \begin{itemize} - \item la clé \Cle{CouleurP} pour la couleur des \textit{gros traits} ;\hfill~défaut : \Cle{Plum!66} - \item la clé \Cle{CouleurS} pour la couleur des \textit{petits traits} ;\hfill~défaut : \Cle{LightSteelBlue!33} + \item la clé \Cle{CouleurP} pour la couleur des \textit{gros traits} ;\hfill~défaut : \Cle{PapierRose} + \item la clé \Cle{CouleurS} pour la couleur des \textit{petits traits} ;\hfill~défaut : \Cle{PapierGris} \item la clé \Cle{CouleurMarge} pour la couleur du trait de la marge ;\hfill~défaut : \Cle{red!75} \item le booléen \Cle{NumLignes} pour afficher le numéro des lignes (pour aider !). \hfill~défaut : \Cle{false} \end{itemize} @@ -539,7 +557,7 @@ La commande \texttt{ParagraphePapierSeyes} permet de saisir des commandes \texti \ParagraphePapierSeyes[options]<alignement>(ajustement){texte} \end{PresentationCode} -\faBomb{} Cet aspect \textit{multilignes} pourra sans doute être problématique pour un placement optimal, donc doit être utilisée avec précautions\ldots +\faBomb{} Cet aspect \textit{multilignes} pourra sans doute être problématique pour un placement optimal, donc doit être utilisé avec précautions\ldots \smallskip @@ -577,7 +595,7 @@ Un exemple \textit{détaillé}, avec le rendu en page suivante, avec quelques co %cadre de notes \CadreNoteSeyes{3} %ligne pour un petit titre - \LignePapierSeyes[Echelle=1.5,Ligne=9,Couleur=ForestGreen]{\sffamily\underline{Exercice 1 :}} + \LignePapierSeyes[Echelle=1.5,Ligne=9,Couleur=green!50!black]{\sffamily\underline{Exercice 1 :}} %un paragraphe de quelques lignes \ParagraphePapierSeyes[Ligne=10]{\cursive\lipsum[1]} %un paragraphe avec des maths @@ -617,7 +635,7 @@ Un exemple \textit{détaillé}, avec le rendu en page suivante, avec quelques co %cadre de notes \CadreNoteSeyes{3} %ligne pour un petit titre - \LignePapierSeyes[Echelle=1.5,Ligne=9,Couleur=ForestGreen]{\sffamily\underline{Exercice 1 :}} + \LignePapierSeyes[Echelle=1.5,Ligne=9,Couleur=green!50!black]{\sffamily\underline{Exercice 1 :}} %un paragraphe de quelques lignes \ParagraphePapierSeyes[Ligne=10]{\cursive\lipsum[1]} %un paragraphe avec des maths @@ -687,7 +705,7 @@ Les exemples des pages suivantes ont été obtenus de la même manière que celu \LignePapierCinqCinq[Echelle=1.25,Ligne=1]{C. PIERQUET \hfill LaTeX} \LignePapierCinqCinq[Echelle=1.25,Ligne=3,Couleur=red]<center>{\underline{\cursive\bfseries Devoir 2}} \CadreNoteCinqCinq{4} - \LignePapierCinqCinq[Echelle=1.25,Ligne=9,Couleur=ForestGreen]{\sffamily\underline{Exercice 1 :}} + \LignePapierCinqCinq[Echelle=1.25,Ligne=9,Couleur=green!50!black]{\sffamily\underline{Exercice 1 :}} \ParagraphePapierCinqCinq[Ligne=11]{\cursive\lipsum[1]} \ParagraphePapierCinqCinq[Ligne=30] {% @@ -704,7 +722,7 @@ Les exemples des pages suivantes ont été obtenus de la même manière que celu \LignePapierRuled[Echelle=1.25,Ligne=1]{C. PIERQUET \hfill LaTeX} \LignePapierRuled[Echelle=1.25,Ligne=2,Couleur=red]<center>{\underline{\cursive\bfseries Devoir 3}} \CadreNoteRuled{3} - \LignePapierRuled[Echelle=1.25,Ligne=8,Couleur=ForestGreen]{\sffamily\underline{Exercice 1 :}} + \LignePapierRuled[Echelle=1.25,Ligne=8,Couleur=green!50!black]{\sffamily\underline{Exercice 1 :}} \ParagraphePapierRuled[Ligne=9]{\cursive\lipsum[1]} \ParagraphePapierRuled[Ligne=22] {% @@ -722,7 +740,7 @@ Les exemples des pages suivantes ont été obtenus de la même manière que celu \LignePapierCinqCinq[Echelle=1.25,Ligne=1]{C. PIERQUET \hfill LaTeX} \LignePapierCinqCinq[Echelle=1.25,Ligne=3,Couleur=red]<center>{\underline{\cursive\bfseries Devoir 2}} \CadreNoteCinqCinq{4} - \LignePapierCinqCinq[Echelle=1.25,Ligne=9,Couleur=ForestGreen]{\sffamily\underline{Exercice 1 :}} + \LignePapierCinqCinq[Echelle=1.25,Ligne=9,Couleur=green!50!black]{\sffamily\underline{Exercice 1 :}} \ParagraphePapierCinqCinq[Ligne=11]{\cursive\lipsum[1]} \ParagraphePapierCinqCinq[Ligne=30] {% @@ -739,7 +757,7 @@ Les exemples des pages suivantes ont été obtenus de la même manière que celu \LignePapierRuled[Echelle=1.25,Ligne=1]{C. PIERQUET \hfill LaTeX} \LignePapierRuled[Echelle=1.25,Ligne=2,Couleur=red]<center>{\underline{\cursive\bfseries Devoir 3}} \CadreNoteRuled{3} - \LignePapierRuled[Echelle=1.25,Ligne=8,Couleur=ForestGreen]{\sffamily\underline{Exercice 1 :}} + \LignePapierRuled[Echelle=1.25,Ligne=8,Couleur=green!50!black]{\sffamily\underline{Exercice 1 :}} \ParagraphePapierRuled[Ligne=9]{\cursive\lipsum[1]} \ParagraphePapierRuled[Ligne=22] {% @@ -752,6 +770,8 @@ Les exemples des pages suivantes ont été obtenus de la même manière que celu \section{Historique} +\verb|v0.1.4|~:~~~~Modification de la gestion des couleurs (\texttt{xcolor} n'est plus chargé avec \textsf{[table,svgnames]}) + \verb|v0.1.3|~:~~~~Ajout d'une commande pour afficher (sans écrire dessus) une grille \verb|v0.1.2|~:~~~~Ajustement au niveau des couleurs + raccourcis couleurs par défaut diff --git a/macros/latex/contrib/writeongrid/tex/WriteOnGrid.sty b/macros/latex/contrib/writeongrid/tex/WriteOnGrid.sty index 3936233bff..f5a6f6adf9 100644 --- a/macros/latex/contrib/writeongrid/tex/WriteOnGrid.sty +++ b/macros/latex/contrib/writeongrid/tex/WriteOnGrid.sty @@ -2,28 +2,37 @@ % licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{WriteOnGrid}[2023/03/18 v0.1.3 package to write on grid lines] +\ProvidesPackage{WriteOnGrid}[2023/08/09 v0.1.4 package to write on grid lines] +% 0.1.4 Suppression des options de xcolor (définition manuelle des couleurs) % 0.1.3 Ajout de commandes simples pour des mini-quadrillages autonomes, sans texte % 0.1.2 Modification locale des couleurs + raccourcis couleurs Seyes / Ruled % 0.1.1 Ajout de la couleur + modifications mineures + grille "Ruled" + grilles pleine page ! % 0.1.0 Version initiale [fr] & [en] %------Packages utiles -\RequirePackage[table,svgnames]{xcolor} +%\RequirePackage[table,svgnames]{xcolor} \RequirePackage{tikz} \RequirePackage{simplekv} \RequirePackage{xstring} -\RequirePackage{xparse} %librairies tikz \usetikzlibrary{calc,positioning} %------Variables \newcounter{lgquadri}%compteur des lignes, qui sera incrémenté + +%-----Couleurs utiles \definecolor{TyrianPurple}{rgb}{0.4,0.01,0.24} -\def\CoulSeyes{Plum!75/LightSteelBlue!50} -\def\CoulRuled{LightSteelBlue!50/TyrianPurple} -\def\ColSeyes{Plum!75/LightSteelBlue!50} -\def\ColRuled{LightSteelBlue!50/TyrianPurple} +\definecolor{PapierRose}{HTML}{E6B8E6} +\definecolor{PapierGris}{HTML}{D7E2EE} +\def\CoulSeyes{PapierRose/PapierGris} +\def\CoulRuled{PapierGris/TyrianPurple} +\def\ColSeyes{PapierRose/PapierGris} +\def\ColRuled{PapierGris/TyrianPurple} + +% \def\CoulSeyes{Plum!75/LightSteelBlue!50} +% \def\CoulRuled{LightSteelBlue!50/TyrianPurple} +% \def\ColSeyes{Plum!75/LightSteelBlue!50} +% \def\ColRuled{LightSteelBlue!50/TyrianPurple} %------Commandes [fr] \newcommand\PasseLigne{\addtocounter{lgquadri}{1}}%passer une ligne @@ -299,8 +308,8 @@ CouleurMarge=\xdef\SeyesFullCoulM{#1} } \setKVdefault[SeyesFull]{% - CouleurP=Plum!66,% - CouleurS=LightSteelBlue!33,% + CouleurP=PapierRose,% + CouleurS=PapierGris,% CouleurMarge=red!75, NumLignes=false } @@ -465,7 +474,7 @@ CouleurMarge=\xdef\RuledFullCoulMarge{#1} } \setKVdefault[RuledFull]{% - Couleur=LightSteelBlue!50,% + Couleur=PapierGris,% CouleurMarge=TyrianPurple,% NumLignes=false } |