diff options
Diffstat (limited to 'macros/latex/contrib')
67 files changed, 12653 insertions, 3268 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index 31349836d9..2e584ed2a0 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -15,7 +15,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2022/11/03}{1.71B} +\ProvidesExplClass{easybook}{2022/11/04}{1.71C} {Easily typesetting Chinese theses or books} \bool_set_false:N \l__eb_compile_draft_bool @@ -304,7 +304,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2022/11/03}{1.71B} +\ProvidesExplPackage{easybase}{2022/11/04}{1.71C} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -2334,7 +2334,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2022/11/03}{1.71B} +\ProvidesExplFile{eb-tcolorbox.cfg}{2022/11/04}{1.71C} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf Binary files differindex 0f6494d544..52763c6ca7 100644 --- a/macros/latex/contrib/easybook/easybook.pdf +++ b/macros/latex/contrib/easybook/easybook.pdf diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index 07bb597e6e..086515d7ee 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -21,8 +21,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v1.71B, - date = 2022/11/03, + version = v1.71C, + date = 2022/11/04, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, @@ -51,7 +51,10 @@ \setlist[1]{labelindent = \parindent} \setlist[itemize,1]{label = smallbullet,leftmargin = *} \setcounter{tocdepth}{2} -\SetTblrInner{hline{1,Z} = {0.8pt,blue}} +\SetTblrInner[talltblr]{hline{1,Z} = {0.8pt,blue}} +\SetTblrTemplate{caption}{empty} +\DefTblrTemplate{remark-sep}{default}{\space} +\SetTblrStyle{remark}{font = \normalfont} \ExplSyntaxOn\makeatletter % * Do not add entries to the index @@ -108,12 +111,12 @@ % Use a separate module margin marker to prevent overlap \newcommand{\smodule}[1]{\cnltx@module@text*{\normalsize #1}} \newcommand{\noitemsep}{\setlength{\itemsep}{0ex}} -\newcommand{\insertblr}[2] +\newcommand{\insertalltblr}[3][] { \begin{center} - \begin{tblr}{#1} - #2 - \end{tblr} + \begin{talltblr}[#1]{#2} + #3 + \end{talltblr} \end{center} } \renewcommand{\cnltx@package@abstract@width}{0.85\linewidth} @@ -223,7 +226,7 @@ \subsection{依赖宏包} 以下为 \pkg*{easybase} 直接调用的关键宏包清单,通常情况下它们是常用且稳定的。棕色背景的宏包表示修改了或依赖它们的内部命令。绿色背景的宏包表示并未调用它们,但做了一些预配置,可在导言区手动载入以实现相关的功能。 -\insertblr +\insertalltblr { colspec = @{}*{5}{c}@{}, cells = {cmd = \pkg*}, @@ -283,21 +286,22 @@ \begin{options} \keychoice{font}{noto,times,times*,ebgaramond,libertine,palatino,auto}\dtag\Default{auto} 预置的英文字体相关配置方案如下表所示。这些字体已经包含在了 \TeX Live 发行版中,所以通常不需要再专门安装。如果您想使用其它英文字体,可以使用 \pkg*{fontspec} 宏包的相关命令进行设置。 - \insertblr - { - colspec = @{}*{4}{c}@{}, - hline{2} = {0.5pt,blue}, - row{1} = {font = \sffamily}, - column{1} = {cmd = \code} - }{ - & 正文字体 & 无衬线字体 & 等宽字体 \\ - noto & Noto Serif & Noto Sans & Noto Sans Mono \\ - times & XITS & TG Heros & TG Cursor \\ - times* & Times New Roman & Arial & Courier New \\ - ebgaramond & EB Garamond & Libertinus Sans & LM Mono \\ - palatino & TG Pagella & Libertinus Sans & LM Mono \\ - libertine & Libertinus Serif & Libertinus Sans & LM Mono - } + \insertalltblr[ + remark{\ding{72}} = \code{times*} 方案为 \textsf{windows} 系统的预置字体。 + ]{ + colspec = @{}*{4}{c}@{}, + hline{2} = {0.5pt,blue}, + row{1} = {font = \sffamily}, + column{1} = {cmd = \code} + }{ + & 正文字体 & 无衬线字体 & 等宽字体 \\ + noto & Noto Serif & Noto Sans & Noto Sans Mono \\ + times & XITS & TG Heros & TG Cursor \\ + times* & Times New Roman & Arial & Courier New \\ + ebgaramond & EB Garamond & Libertinus Sans & LM Mono \\ + palatino & TG Pagella & Libertinus Sans & LM Mono \\ + libertine & Libertinus Serif & Libertinus Sans & LM Mono + } \end{options} \begin{options} @@ -320,7 +324,7 @@ \begin{commands} \command*{ctexset}[\marg{键值列表}] \cls*{easybook} 扩展了 \CTeX 宏集 \hologo{LaTeX3} 风格键值的通用控制命令 \cs*{ctexset},接口选项同样可用它设置,原有的 \meta{键值列表} 仍然可用。本文档类目前有9个模块用于实现常规的排版功能,如下表所示。模块名也是统一接口 \cs*{ctexset} 的路径,不同模块单独接口的命令名\textbf{加上前缀} \code{eb}: - \insertblr + \insertalltblr { colspec = @{}*{5}{c}@{}, hline{3} = {0.5pt,blue}, diff --git a/macros/latex/contrib/mathastext/INSTALL.txt b/macros/latex/contrib/mathastext/INSTALL.txt deleted file mode 100644 index 3efdaf8bbf..0000000000 --- a/macros/latex/contrib/mathastext/INSTALL.txt +++ /dev/null @@ -1,38 +0,0 @@ -The simplest for most users is to use the manager script of the TeX -installation to either install or upgrade mathastext to its current -version. - -Else, download mathastext.dtx and follow these instructions: - -- Run tex or etex on mathastext.dtx to generate the package style - file mathastext.sty as well as additional files: - - mathastext.tex, README.md, ChangeLog.md, and some test files. - -- Move the style file mathastext.sty to a location where TeX can - find it. In a TDS compliant hierarchy this will be - - <TDS>:tex/latex/mathastext/mathastext.sty - -For the documentation: - -- Follow the above steps, then run latex thrice on mathastext.tex - then dvipdfmx on mathastext.dvi. The file mathastext.tex can be - customized to change the font size or set other options therein. - The produced file mathastext.pdf will by default include the - commented source code. - -It is also possible to run pdflatex (thrice) directly on mathastext.dtx. -In that case mathastext.pdf is produced without the commented source code. - -One can NOT use lualatex or xelatex to compile the documentation. - -The test files - - mathastexttestmathversions.tex - mathastexttestunicodemacos.tex - mathastexttestunicodelinux.tex - mathastexttestalphabets.tex - -illustrate some features of the package and are an addendum to the -main documentation mathastext.pdf. diff --git a/macros/latex/contrib/mathastext/README.md b/macros/latex/contrib/mathastext/README.md index fd15e83842..b008e82276 100644 --- a/macros/latex/contrib/mathastext/README.md +++ b/macros/latex/contrib/mathastext/README.md @@ -12,9 +12,9 @@ of the [LPPL1.3c](http://www.latex-project.org/lppl/lppl-1-3c.txt) The Author of this Work is Jean-Francois Burnol -Copyright (C) 2011-2019 Jean-Francois Burnol (`jfbu at free dot fr`) +Copyright (C) 2011-2019, 2022 Jean-Francois Burnol (`jfbu at free dot fr`) - Source: mathastext.dtx 1.3w 2019/11/16 + Source: mathastext.dtx 1.3y 2022/11/04 DESCRIPTION @@ -82,119 +82,57 @@ Main options: `italic`, `subdued`, `LGRgreek`. RECENT CHANGES ============== -1.3w \[2019/11/16\] +1.3y \[2022/11/04\] ---- -* LaTeX 2019-10-01 release (up to patch level 3 inclusive) - together with `amsmath` conspired `:-)` to break `mathastext`, - in connexion with math accents. This has been fixed upstream, - but I am releasing nevertheless a hot fix to this - [issue](https://github.com/latex3/latex2e/issues/216) - (this is compatible with future LaTeX releases). - -* Fix: the `\hbar` is originally a robust command but - becomes a `\mathchardef` token if (e.g.) `amsfonts` is - loaded and then with recent LaTeX `\hbar<space>` is - made undefined and `mathastext` definition of it - remained without effect. The `\mathastext` own `\hbar` - is now defined `\protected`. - -* Fix: option `noendash` (or `symboldelimiters` which implies - it) caused (since `1.3u`) a bug under Unicode engines when - setting up the minus sign. - -* Version names declared via the optional argument of - `\Mathastext` or as first argument of `\MTDeclareVersion` - must not be `normal` or `bold`. Enforce that! (this was - marked as a bug to fix since `2012/10/24`...) - -1.3v \[2019/09/19\] ----- +(the 1.3x had an annoying documentation bug, and had already +been pushed to CTAN, hence the version increase to 1.3y) + +* mathastext now requires the `\expanded` primitive (which is + available with all major engines since TeXLive 2019). + +* Revisit parts of the documentation (mainly + the Examples, and the section on Greek letters) and shuffle + the other parts to surely improve things. Mention + the [mathfont](https://ctan.org/pkg/mathfont) + and [frenchmath](https://ctan.org/pkg/frenchmath) packages. + +* Add the `ncccomma` option which loads the + [ncccomma](https://ctan.org/pkg/ncccomma) + package to allow the comma as decimal separator. + +* Add the `binarysemicolon` option to let the semi-colon + be of type `\mathbin`, not `\mathpunct`. + +* Add the `frenchmath*` option which does all three of + `frenchmath`, `ncccomma` and `binarysemicolon`. + +* Under the `LGRgreek` and `LGRgreeks` options only: + + - make available upright and italic Greek letters in math mode + via `\alphaup`, `\alphait`, ... control sequences, in + addition to those not using such postfixed-names. + + - add `\mathgreekup` and `\mathgreekit` math alphabets. + + - add `\MTgreekupdefault` and `\MTgreekitdefault`. The former + replaces `\updefault` which was used in some places and since + LaTeX 2020-02-02 caused systematic Font Warnings about the + substitution of `up` by `n`. + + These new features required an extensive internal refactoring + which is expected to not induce changes to most existing + documents. But it may induce changes to those using some + unusual configuration in the preamble, as made possible via the + package macros; this can apply only to documents authored by + those few people who actually read the documentation. For full + details make sure to read the PDF documentation about this + change. + +* Fix "`\Digamma` under `LGRgreek` option uses the shape for + lowercase not uppercase Greek". -* LaTeX 2019-10-01 release has made more math macros robust. - This applies in particular to the math accents and to the - `\hbar`. This required for mathastext to adapt. Also - `\leftarrowfill` and `\rightarrowfill` are now defined - robust by the kernel, hence mathastext does the same. These - changes are dropped if mathastext detects an older LaTeX - format. - -* These LaTeX kernel changes motivated an examination of some - redefinitions done (optionally) by mathastext: - - The user math alphabet macros got redefined as expanding - to some other (robust) math alphabet macros, but were not - robust in the strict sense. This does cause some issues - for moving arguments in the context of multiple math - versions, hence it was a bug. The special behaviour of the - math alphabet commands (they redefine themselves and other - macros on first use) makes is somewhat problematic for - mathastext to keep them updated across math versions and - at the same time strictly LaTeX2e robust. Thus mathastext - now requires the e-TeX primitive `\protected` and uses it - for the definitions of the user level math alphabet - macros. - - There are a number of `\mathchardef` tokens which (under - certain options and/or configuration via the package user - interface), mathastext redefines as macros. These macros - cause no issue in moving arguments (they are not - "fragile"), still it is probably better if they expand - only at the time of typesetting. To this effect they are - now also `\protected`: `\exists`, `\forall`, `\colon`, - `\setminus`, `\mid`, `\prod`, `\sum`, `\imath`, `\jmath`. - - The macro `\vert` (which expands to a `\delimiter`) is now - defined robust by LaTeX. Its mathastext redefinition is a - `\protected` one rather. - - The `\{` and `\}` (which get redefined only under - `\MTexplicitbracesobeymathxx` regime) are now strictly - robust in the LaTeX2e sense (formerly they were `\let` to - some robust macros, and this did not make them strictly - LaTeX2e-robust entities). - -* The various changes in mathastext described in the previous item - apply independently of the LaTeX release version. The - LaTeX format itself requires the e-TeX extensions since 2015. - -1.3u (2019/08/20) ---- - -* new feature: the initial release dealt with only one font, and - although shortly thereafter the 1.11 version added support for - extended math versions, it was documented that some font-dependent - set-up (minus as endash, dotless i and j, hbar, math accents) was - done only once. This release makes the relevant characters font - encoding savvy in each mathastext-extended math version. Thus, - they should render correctly even with multiple math versions - using fonts with varying encodings. - - This reinforces importance of using `\MTversion` and not the - LaTeX `\mathversion` when switching to a new math version (which - got declared via the package interface). The implementation is - compatible with Unicode engines and mixed usage of `TU` encoding - (OpenType fonts) with traditional 8bits TeX font encodings. For - all engines, all used (8bits) encodings must have been passed as - options to the `fontenc` package. - - Thanks to Falk Hanisch for feature request and code suggestions. - -* new option `unimathaccents`: this adds to option `mathaccents` - the demand to use the text font accents for OpenType fonts in math - mode via the `\Umathaccent` primitive. Indeed, as my testing - showed that this gave non-satisfactory results both with XeTeX - and LuaTeX regarding the horizontal placement of the accents, - the main option `mathaccents` acts only on 8bits encoded fonts. - -* bugfix: the `\Mathastext` without optional argument forgot to - repeat some font-encoding dependent initialization set-up done - originally during package loading. - -* bugfix: under the `subdued` option macros `\MTmathactiveletters` - or `\MTnonlettersobeymathxx` now act like no-ops if - issued explicitly while in the `normal` or `bold` math version. - Formerly, this was not the case and could cause bugs such as a - disappearing minus sign in math mode. - -* bugfix: the letter `h` used in the `\hbar` obeyed the extra - skips as set-up by `\MTsetmathskips`, badly interfering with the - horizontal positioning of the bar accent. They are now ignored - (as well as the added italic correction). +* Fix some incongruities in log messages related to Greek + letters and emitted during math version creation in the + preamble. diff --git a/macros/latex/contrib/mathastext/mathastext.dtx b/macros/latex/contrib/mathastext/mathastext.dtx index 30f0d90af6..c95ca043e5 100644 --- a/macros/latex/contrib/mathastext/mathastext.dtx +++ b/macros/latex/contrib/mathastext/mathastext.dtx @@ -1,13 +1,18 @@ % -*- coding: iso-latin-1; time-stamp-format: "%02d-%02m-%:y at %02H:%02M:%02S %Z" -*- % N.B.: this dtx file does NOT use \DocInput, it only uses docstrip. -% The LaTeX source of the documentation is NOT prefixed with percent characters. +% The LaTeX source of the documentation is NOT prefixed with %'s. %<*dtx> -\def\dtxtimestamp {Time-stamp: <16-11-2019 at 21:27:02 CET>}% -\def\docdate{2019/11/16} +\def\dtxtimestamp {Time-stamp: <04-11-2022 at 12:36:29 CET>} +\def\docdate{2022/11/04} +% To extract run etex on this file, then to build documentation run +% latexmk on mathastext.tex then dvipdfmx on the dvi. +% For more information see http://jf.burnol.free.fr/v13/INSTALL.txt +% The encoding is deliberately an 8bit one, do not convert to utf-8 +% due to usage of (<A7>) as an active character. %</dtx> %<*drv> -\def\MSTpkgdate {2019/11/16} -\def\MSTpkgversion {1.3w} +\def\MSTpkgdate {2022/11/04} +\def\MSTpkgversion {1.3y} %</drv> %<*dtx> \iffalse % meta-comment @@ -27,27 +32,21 @@ of the [LPPL1.3c](http://www.latex-project.org/lppl/lppl-1-3c.txt) The Author of this Work is Jean-Francois Burnol -Copyright (C) 2011-2019 Jean-Francois Burnol (`jfbu at free dot fr`) +Copyright (C) 2011-2019, 2022 Jean-Francois Burnol (`jfbu at free dot fr`) - Source: mathastext.dtx 1.3w 2019/11/16 + Source: mathastext.dtx 1.3y 2022/11/04 %</readme> %<*dtx> -Generating the documentation from source: - -1a) tex (or etex) mathastext.dtx to extract generated files -1b) then latex mathastext.tex (thrice) and dvipdfmx mathastext.dvi -2) alternative to 1a)+1b): pdflatex mathastext.dtx. The documentation does -not include the documented source code then, in contrast to 1a)+1b) method \fi % end of meta-comment %</dtx> %<*!readme&!changelog> %%---------------------------------------------------------------- %% Package: mathastext %% Info: Use the text font in math mode (JFB) -%% Version: 1.3w 2019/11/16 +%% Version: 1.3y 2022/11/04 %% License: LPPL 1.3c (http://www.latex-project.org/lppl/lppl-1-3c.txt) -%% Copyright (C) 2011-2019 Jean-Francois Burnol <jfbu at free dot fr> +%% Copyright (C) 2011-2019, 2022 Jean-Francois Burnol <jfbu at free dot fr> %% Examples of use of mathastext: %% http://jf.burnol.free.fr/mathastext.html %% http://jf.burnol.free.fr/showcase.html @@ -67,7 +66,7 @@ not include the documented source code then, in contrast to 1a)+1b) method \chardef\Withdvipdfmx 0 % 0 = pdflatex or latex+dvips \chardef\NoSourceCode 1 % \NeedsTeXFormat{LaTeX2e}% - \PassOptionsToClass{a4paper,fontsize=11pt}{scrdoc}% + \PassOptionsToClass{a4paper,fontsize=11pt}{scrartcl}% \else % latex run is on mathastext.tex, \chardef\extractfiles 2 % no extractions \fi @@ -193,129 +192,69 @@ Main options: `italic`, `subdued`, `LGRgreek`. RECENT CHANGES ============== -1.3w \[2019/11/16\] ----- - -* LaTeX 2019-10-01 release (up to patch level 3 inclusive) - together with `amsmath` conspired `:-)` to break `mathastext`, - in connexion with math accents. This has been fixed upstream, - but I am releasing nevertheless a hot fix to this - [issue](https://github.com/latex3/latex2e/issues/216) - (this is compatible with future LaTeX releases). - -* Fix: the `\hbar` is originally a robust command but - becomes a `\mathchardef` token if (e.g.) `amsfonts` is - loaded and then with recent LaTeX `\hbar<space>` is - made undefined and `mathastext` definition of it - remained without effect. The `\mathastext` own `\hbar` - is now defined `\protected`. - -* Fix: option `noendash` (or `symboldelimiters` which implies - it) caused (since `1.3u`) a bug under Unicode engines when - setting up the minus sign. +%</readme> +%<*changelog> +MATHASTEXT CHANGE LOG +===================== -* Version names declared via the optional argument of - `\Mathastext` or as first argument of `\MTDeclareVersion` - must not be `normal` or `bold`. Enforce that! (this was - marked as a bug to fix since `2012/10/24`...) +%</changelog> +%<*readme|changelog> +1.3y \[2022/11/04\] +---- +(the 1.3x had an annoying documentation bug, and had already +been pushed to CTAN, hence the version increase to 1.3y) -1.3v \[2019/09/19\] ----- +* mathastext now requires the `\expanded` primitive (which is + available with all major engines since TeXLive 2019). -* LaTeX 2019-10-01 release has made more math macros robust. - This applies in particular to the math accents and to the - `\hbar`. This required for mathastext to adapt. Also - `\leftarrowfill` and `\rightarrowfill` are now defined - robust by the kernel, hence mathastext does the same. These - changes are dropped if mathastext detects an older LaTeX - format. +* Revisit parts of the documentation (mainly + the Examples, and the section on Greek letters) and shuffle + the other parts to surely improve things. Mention + the [mathfont](https://ctan.org/pkg/mathfont) + and [frenchmath](https://ctan.org/pkg/frenchmath) packages. -* These LaTeX kernel changes motivated an examination of some - redefinitions done (optionally) by mathastext: - - The user math alphabet macros got redefined as expanding - to some other (robust) math alphabet macros, but were not - robust in the strict sense. This does cause some issues - for moving arguments in the context of multiple math - versions, hence it was a bug. The special behaviour of the - math alphabet commands (they redefine themselves and other - macros on first use) makes is somewhat problematic for - mathastext to keep them updated across math versions and - at the same time strictly LaTeX2e robust. Thus mathastext - now requires the e-TeX primitive `\protected` and uses it - for the definitions of the user level math alphabet - macros. - - There are a number of `\mathchardef` tokens which (under - certain options and/or configuration via the package user - interface), mathastext redefines as macros. These macros - cause no issue in moving arguments (they are not - "fragile"), still it is probably better if they expand - only at the time of typesetting. To this effect they are - now also `\protected`: `\exists`, `\forall`, `\colon`, - `\setminus`, `\mid`, `\prod`, `\sum`, `\imath`, `\jmath`. - - The macro `\vert` (which expands to a `\delimiter`) is now - defined robust by LaTeX. Its mathastext redefinition is a - `\protected` one rather. - - The `\{` and `\}` (which get redefined only under - `\MTexplicitbracesobeymathxx` regime) are now strictly - robust in the LaTeX2e sense (formerly they were `\let` to - some robust macros, and this did not make them strictly - LaTeX2e-robust entities). +* Add the `ncccomma` option which loads the + [ncccomma](https://ctan.org/pkg/ncccomma) + package to allow the comma as decimal separator. -* The various changes in mathastext described in the previous item - apply independently of the LaTeX release version. The - LaTeX format itself requires the e-TeX extensions since 2015. +* Add the `binarysemicolon` option to let the semi-colon + be of type `\mathbin`, not `\mathpunct`. +* Add the `frenchmath*` option which does all three of + `frenchmath`, `ncccomma` and `binarysemicolon`. -1.3u (2019/08/20) ---- +* Under the `LGRgreek` and `LGRgreeks` options only: -* new feature: the initial release dealt with only one font, and - although shortly thereafter the 1.11 version added support for - extended math versions, it was documented that some font-dependent - set-up (minus as endash, dotless i and j, hbar, math accents) was - done only once. This release makes the relevant characters font - encoding savvy in each mathastext-extended math version. Thus, - they should render correctly even with multiple math versions - using fonts with varying encodings. + - make available upright and italic Greek letters in math mode + via `\alphaup`, `\alphait`, ... control sequences, in + addition to those not using such postfixed-names. - This reinforces importance of using `\MTversion` and not the - LaTeX `\mathversion` when switching to a new math version (which - got declared via the package interface). The implementation is - compatible with Unicode engines and mixed usage of `TU` encoding - (OpenType fonts) with traditional 8bits TeX font encodings. For - all engines, all used (8bits) encodings must have been passed as - options to the `fontenc` package. + - add `\mathgreekup` and `\mathgreekit` math alphabets. - Thanks to Falk Hanisch for feature request and code suggestions. + - add `\MTgreekupdefault` and `\MTgreekitdefault`. The former + replaces `\updefault` which was used in some places and since + LaTeX 2020-02-02 caused systematic Font Warnings about the + substitution of `up` by `n`. -* new option `unimathaccents`: this adds to option `mathaccents` - the demand to use the text font accents for OpenType fonts in math - mode via the `\Umathaccent` primitive. Indeed, as my testing - showed that this gave non-satisfactory results both with XeTeX - and LuaTeX regarding the horizontal placement of the accents, - the main option `mathaccents` acts only on 8bits encoded fonts. - -* bugfix: the `\Mathastext` without optional argument forgot to - repeat some font-encoding dependent initialization set-up done - originally during package loading. + These new features required an extensive internal refactoring + which is expected to not induce changes to most existing + documents. But it may induce changes to those using some + unusual configuration in the preamble, as made possible via the + package macros; this can apply only to documents authored by + those few people who actually read the documentation. For full + details make sure to read the PDF documentation about this + change. -* bugfix: under the `subdued` option macros `\MTmathactiveletters` - or `\MTnonlettersobeymathxx` now act like no-ops if - issued explicitly while in the `normal` or `bold` math version. - Formerly, this was not the case and could cause bugs such as a - disappearing minus sign in math mode. +* Fix "`\Digamma` under `LGRgreek` option uses the shape for + lowercase not uppercase Greek". -* bugfix: the letter `h` used in the `\hbar` obeyed the extra - skips as set-up by `\MTsetmathskips`, badly interfering with the - horizontal positioning of the bar accent. They are now ignored - (as well as the added italic correction). +* Fix some incongruities in log messages related to Greek + letters and emitted during math version creation in the + preamble. -%</readme> +%</readme|changelog> %<*changelog> -MATHASTEXT CHANGE LOG -===================== - 1.3w \[2019/11/16\] ---- @@ -676,7 +615,7 @@ MATHASTEXT CHANGE LOG * the amsmath `\resetMathstrut@`, which is incompatible with a mathematically active parenthesis ( is now modified only if - necessary (i.e. only when `\MTnonlettersobeymathxx` is issued) and + necessary (i.e.\@ only when `\MTnonlettersobeymathxx` is issued) and is restored to its original value if not needed anymore (i.e. after `\MTnonlettersdonotobeymathxx`, as for example when switching to the normal version under option subdued). @@ -967,7 +906,7 @@ use of mathematically active characters in versions 1.2 and 1.2b. \ProvidesFile{mathastext.tex}% [\MSTpkgdate\space v\MSTpkgversion\space driver file for mathastext documentation (JFB)]% -\PassOptionsToClass{a4paper,fontsize=11pt}{scrdoc} +\PassOptionsToClass{a4paper,fontsize=11pt}{scrartcl} \chardef\Withdvipdfmx 1 % replace 1<space> by 0<space> for using latex/pdflatex \chardef\NoSourceCode 0 % replace 0<space> by 1<space> for no source code \input mathastext.dtx @@ -1078,6 +1017,11 @@ seemingly without effect with \LuaLaTeX{} in the case of the Hoefler Text font for text fonts under \LuaLaTeX, which may be related with this specific issue here). +Update (tested 2022/10/29, with 1.3x and up-to-date TL2022): it appears that +most, perhaps even all, of the remarks in the preceding note are now obsolete +as I do not see obvious differences between outputs from \XeLaTeX{} versus +\LuaLaTeX{} but I did not seriously compare, only quickly done. + \newcommand\TEST[1]{\MTversion{#1}\def\tmpa{#1}% \def\tmpb{normal}\def\tmpc{bold}% \ifx\tmpa\tmpb\else\ifx\tmpa\tmpc\else \MTnonlettersobeymathxx @@ -1469,7 +1413,93 @@ $\mathnormal{ff}$, $\mathrm{ff}$, $\mathit{ff}$, $\mathbf{ff}$, $\mathtt{ff}$ %<*dtx> ^^Afi^^Aendgroup % end of big \iffalse block including generated files % customization should be done in mathastext.tex, not here. -\documentclass[abstract]{scrdoc} +\documentclass[abstract]{scrartcl} +\makeatletter +%%% START OF CUSTOM doc.sty LOADING (May 21, 2022 in xint.dtx) +%%% (October 29, 2022 here, comments trimmed) +% Let's load the doc=V2 version to avoid having to work around +% hypdoc loading interfering with my use of hyperref. +\ifdefined\IfFormatAtLeastTF + \IfFormatAtLeastTF{2022/06/01}% + {% + \IfFileExists{doc-2021-06-01.sty}% + {\usepackage{doc}[=v2]}% +% Why on earth do I lose my time doing this? + {\GenericError + {(mathastext build doc)\@spaces}% + {mathastext build error: % + Your LaTeX installation seems to be broken, format is\MessageBreak + 2022-06-01 or later but `doc' package in its `v2' version\MessageBreak + seems to not be available. \space Will try with `doc' but if\MessageBreak + its `v3' is used there will be an option clash error\MessageBreak + regarding hyperref.}% + {}% + {Please make sure `doc' package matches your LaTeX format.}% + \usepackage{doc}% + }% + }% + {\usepackage{doc}}% +\else +\usepackage{doc} +\fi +% Let's emulate here the little I appear to need from ltxdoc.cls and +% srcdoc.cls. +% +\AtBeginDocument{\MakeShortVerb{\|}} +\DeclareFontShape{OT1}{cmtt}{bx}{n}{<-> ssub * cmtt/m/n}{} +\DeclareFontFamily{OMS}{cmtt}{\skewchar\font 48} % '60 +\DeclareFontShape{OMS}{cmtt}{m}{n}{<-> ssub * cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{n}{<-> ssub * cmsy/b/n}{} +\DeclareFontShape{OT1}{cmss}{m}{it}{<->ssub*cmss/m/sl}{} +\ifnum\NoSourceCode=1 + \OnlyDescription +\fi +\CodelineNumbered +\EnableCrossrefs +% \setcounter{StandardModuleDepth}{1} % we don't use this mechanism currently +\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}} +\def\cmd@to@cs#1#2{\char\number`#2\relax} +% Here I am loading doc=v2 but formerly I was using ltxdoc via scrdoc +% which I dropped at release 1.4l (2022-05-29) and without much +% thinking I had kept this. +\DeclareRobustCommand\cs[1]{\texttt{\bslash#1}} +% As I may have the * active, or macro names with _ or ^, I should +% add \detokenize. But see below for a redefinition anyhow. +% +% More urgent is that I am also using hyperref and this definition gives wrong +% bookmarks if \cs is used in section titles. As I had very very few usags of +% \cs in the whole of xint.dtx, it took me a while to realize the problem +% here. Turns out that doc=v3 by default loads hypdoc which includes this +% configuation for hyperref compatibility: +\AtBeginDocument{% +\pdfstringdefDisableCommands{\def\cs#1{\textbackslash\detokenize{#1}}}% +}% +% As I have not loaded hyperref yet I must delay it to AtBeginDocument. +\providecommand\marg[1]{% + {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}} +\providecommand\oarg[1]{% + {\ttfamily[}\meta{#1}{\ttfamily]}} +\providecommand\parg[1]{% + {\ttfamily(}\meta{#1}{\ttfamily)}} +% \@addtoreset{CodelineNo}{part}% No need for this here +% \def\partname{File}% \partname is "fixed" somewhere further down anyhow +% No need for this, anyhow I don't build the indices +% +% There is very little we seem to need from the scrdoc extras: page geometry +% is set by geometry package and a4paper option from xint.tex file. So it +% seems I only need the hologo loading: +\usepackage{hologo} +\DeclareRobustCommand*{\eTeX}{\hologo{eTeX}}% +\DeclareRobustCommand*{\pdfLaTeX}{\hologo{pdfLaTeX}}% +\DeclareRobustCommand*{\LuaTeX}{\hologo{LuaTeX}}% +\DeclareRobustCommand*{\LuaLaTeX}{\hologo{LuaLaTeX}}% +\DeclareRobustCommand*{\XeTeX}{\hologo{XeTeX}}% +\DeclareRobustCommand*{\XeLaTeX}{\hologo{XeLaTeX}}% +% +\makeatother +%%% end of ltxdoc+srcdoc emulation from June 2022 xint.dtx, +%%% copied over almost verbatim to mathastext.dtx on 2022/10/29. + \ifnum\NoSourceCode=1 \OnlyDescription\fi \makeatletter \ifnum\Withdvipdfmx=1 @@ -1480,7 +1510,7 @@ $\mathnormal{ff}$, $\mathrm{ff}$, $\mathit{ff}$, $\mathbf{ff}$, $\mathtt{ff}$ \PassOptionsToPackage{dvipdfm}{geometry} \PassOptionsToPackage{bookmarks=true}{hyperref} \PassOptionsToPackage{dvipdfmx-outline-open}{hyperref} - \PassOptionsToPackage{dvipdfmx-outline-open}{bookmark} +% \PassOptionsToPackage{dvipdfmx-outline-open}{bookmark} % \def\pgfsysdriver{pgfsys-dvipdfm.def} \else @@ -1491,7 +1521,12 @@ $\mathnormal{ff}$, $\mathrm{ff}$, $\mathit{ff}$, $\mathbf{ff}$, $\mathtt{ff}$ \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{amsmath}\allowdisplaybreaks -\usepackage{lmodern} +\usepackage{mlmodern} +\DeclareEncodingSubset{TS1}{mlmtt}{0} +% cf https://github.com/latex3/latex2e/issues/905 +% How to **quickly** know whether 0 is ok ? +% Not willing to waste half an hour, more probably +% an hour on this (already done, almost). \usepackage{enumitem} \DeclareSymbolFont{largesymbols}{OMX}{txex}{m}{n} @@ -1506,7 +1541,7 @@ $\mathnormal{ff}$, $\mathrm{ff}$, $\mathit{ff}$, $\mathbf{ff}$, $\mathtt{ff}$ \definecolor{DarkMagenta}{RGB}{139,0,139} \definecolor{joli}{RGB}{225,95,0} \usepackage{xspace} -\usepackage{metalogo} +%\usepackage{metalogo}% on utilise dej hologo \usepackage{framed} \usepackage[hscale=0.66]{geometry} @@ -1529,31 +1564,7 @@ pdfpagemode=UseOutlines,% \usepackage{bookmark} -% ---- \centeredeline: OUR OWN LITTLE MACRO FOR CENTERING LINES (fait -% initialement pour la documentation de mes autres paquetages etoc et xint) - -% 7 mars 2013 -% This macro allows to conveniently center a line inside a paragraph and still -% use therein \verb or other commands changing catcodes. -% A proposito, the \LaTeX \centerline uses \hsize and not \linewidth ! -% (which in my humble opinion is bad) - -% \ignorespaces ajout le 9 juin. Cela m'aurait vit des dizaines de % lorsque -% plusieurs \centeredline se suivent (car on reste en mode horizontal si on y -% est au dbut). - -\makeatletter -\newcommand*\centeredline {% - \ifhmode \\\relax - \def\centeredline@{\hss\egroup\hskip\z@skip\ignorespaces }% - \else - \def\centeredline@{\hss\egroup }% - \fi - \afterassignment\@centeredline - \let\next=} -\def\@centeredline - {\hbox to \linewidth \bgroup \hss \bgroup \aftergroup\centeredline@ } -\makeatother +\usepackage{centeredline} \DeclareRobustCommand\cs[1]% j'utilisais avant 189, j'ai essay 23 {{\ttfamily\hyphenchar\font=127 \char`\\#1}} @@ -1581,40 +1592,78 @@ pdfpagemode=UseOutlines,% \let\oldexists\exists\let\oldforall\forall -\usepackage[italic,subdued,asterisk,defaultmathsizes,symbolmisc,symbolre, -LGRgreek]{mathastext} +\usepackage[subdued,% + asterisk,% + defaultmathsizes,% + symbolmisc,symbolre,% + LGRgreek]{mathastext} -\Mathastext[italic] -\MTlettershape{\updefault} +% This version will use the mlmodern font which is current +% last loaded font package in preamble \Mathastext[upright] -\MTupgreek -\MTgreekfont{cmtt} -\MTDeclareVersion[n]{lmvtt}{T1}{lmvtt}{m}{n} +% The mlmodern font with letters in it shape +\MTlettershape{it} +\Mathastext[italic] -\MTlettershape{\itdefault} +\MTlettershape{n}% \updefault would create needless substitution and Font Warning +\MTupgreek % le lettershape suffirait mais plus clair +\MTgreekfont{cmtt} +\MTfamily{lmvtt} +\Mathastext[lmvtt] -\usepackage{newcent} +\usepackage{newcent}% attention that it modifies all three of \rmdefault, + % \sfdefault and \ttdefault +\MTfamily{\rmdefault} +\MTlettershape{it} +\MTitgreek\MTupGreek \Mathastext[newcent] + \MTseries{b} \Mathastext[boldnewcent][bold] +\usepackage{times}% attention that it modifies all three of \rmdefault, + % \sfdefault and \ttdefault +\MTfamily{\rmdefault} +\MTlettershape{it} \MTseries{m} -\MTitgreek\MTupGreek \MTgreekfont{txr} -\usepackage{times} +\MTitgreek\MTupGreek \Mathastext[times] -\MTlettershape{\updefault} + +\MTlettershape{n} +\MTupgreek \MTseries{bx} \Mathastext[timesbold][bold] -\MTlettershape{\itdefault} -\MTseries{m} \usepackage[scaled]{helvet} -\renewcommand\familydefault\sfdefault +\MTfamily{\sfdefault} +\MTlettershape{it} +\MTseries{m} +\MTitgreek \MTgreekfont{cmss} \Mathastext[helvet] +\MTfamily{LibertinusSerif-TLF} +\MTlettershape{n} +\MTseries{m} +\MTgreekfont{LibertinusSerif-TLF} +\MTupgreek +\Mathastext[libertinus] +\MTseries{sb} +% attention je veux pas courier quand je ferai \texttt avec cette version +% donc +\renewcommand{\ttdefault}{mlmtt} +\Mathastext[libertinussemibold] + +\renewcommand\familydefault\sfdefault% attention that it is phv at this stage + +% pas ncessaire car je fais \MTversion{normal} aprs \begin{document} +% \renewcommand\rmdefault{mlmr}% counteract effect of various font packages +% % earlier +% \renewcommand\sfdefault{mlmss}% +% \renewcommand\ttdefault{mlmtt}% + \usepackage{etoc} % - partir de 1.3j: _trs trs_ peu satisfaisant mais pas envie d'y passer @@ -1661,16 +1710,27 @@ LGRgreek]{mathastext} % mais bon, en fait je ne les utilise pas. \begin{document} +% \makeatletter\show\mv@normal\makeatother +% contient +% \getanddefine@fonts +% \symmtgreekup \LGR/mlmr/m/n \getanddefine@fonts \symmtgreekit \LGR/mlmr/m/it +% +% donc au premier mode mathmatique (par \footnote je suppose) +% +% LaTeX Font Info: Trying to load font information for LGR+mlmr on input line +% 1712. +% LaTeX Font Info: No file LGRmlmr.fd. on input line 1712. + \MTversion{normal} \renewcommand\familydefault\sfdefault \pdfbookmark[1]{Title page}{TOP} -\frenchspacing +\nonfrenchspacing \begin{center} {\normalfont\LARGE The \mst package}\\ \textsc{\small Jean-Franois Burnol}\par - \footnotesize \ttfamily + \footnotesize \ttfamily \frenchspacing jfbu (at) free (dot) fr\par \let\thefootnote\empty Package version: \MSTpkgversion\ (\MSTpkgdate)% @@ -1744,22 +1804,319 @@ LGRgreek]{mathastext} \section{What \mst does} -For changes see \autoref{sec:changelog}. +If you have used the package before please make sure to check first +\autoref{sec:changelog} where all changes across releases are recorded. -\subsection{Examples} +\subsection{Aim of this package and basic usage} + +The initial ideology of \mst was to produce mathematical texts with +a very uniform look, not separating math from text as strongly as +is usually done. -\mst's basic aim is to have the same font for text and mathematics. With +\mst's basic aim is thus to have the same font for text and mathematics. With hundreds of free text fonts packaged for \LaTeX{} and only a handful of math ones, chances are your favorite text font does not mix so well with the available math ones; \mst may then help. Note that \mst was initially developed for the traditional \TeX{} fonts and engines, and that compatibility with Unicode engines and OpenType fonts is partial. -Here is an example with -Latin Modern typewriter proportional: +% As soon as one tries out other fonts for text than the Computer Modern +% ones one realizes how extremely ``thin'' are the default \TeX{} fonts +% for mathematics: they definitely do not fit well visually with the +% majority of text fonts. With \mst one can get one's (simple\dots{} or +% not) mathematics typeset in a manner more compatible with the text, +% without having to look for an especially designed font. -{\advance\leftskip.1\linewidth\advance\rightskip.1\linewidth - \MTversion{lmvtt} +Here is a minimal example of what may go into +the preamble: +\begin{verbatim} +\usepackage[T1]{fontenc} +\usepackage{times} +\usepackage[italic]{mathastext} +\end{verbatim} +The package records which font is set up for text, at the time it is +loaded, +%\footnote{alternatively it is possible to configure the text font after + % loading \mst, and then the command \cs{Mathastext} will accomplish the + % necessary changes to the font for letters, digits and a few extra ascii + % symbols in math mode.} +and +then arranges things in order for this text font to be used in math mode as +well. So, with the preamble as above +all letters, digits, and punctuation signs inside math mode will then be +typeset in Times.\footnote{let's do as if we did not know the excellent + |txfonts| package which employs Times for text and has a very complete + math support, including many additional mathematical glyphs in + comparison to the CM fonts. \emph{This was written many years ago, nowadays, + \emph{\texttt{newtx}} is the successor of \emph{\texttt{txfonts}}.}} +The exact list of characters concerned by +\mst is a subset of the basic |ASCII| set: + + \begin{framed}\centering\MTversion{timesbold}% + \begingroup\color{joli}% + $abcdefghijklmnopqrstuvwxyz$\par + $ABCDEFGHIJKLMNOPQRSTUVWXYZ$\par + $0123456789$\par + \DeleteShortVerb{\|}% global! + ${!}\,{?}\,{*}\,{,}\,{.}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\, + {[}\,{]}\,{/}\,{\#}\,{\$}\,{\%}\,{\&}\,{<}\,{>}\,{|}\,{\{}\,{\}} + \textrm{ \color{black}\mdseries and }{\backslash}$% + \endgroup\par\MakeShortVerb{\|}% + \end{framed} + +As one can see, this is a very limited list! Some possibilities exist +regarding Greek letters and will be described later. + +\subsection{Miscellanea} + +Please note that most of this section was written many years +ago. But it should still be valid! +% +\begin{description} +\item[the en-dash as minus sign:] very often the - + character from the text font does not give a good + minus sign. So by default, the package uses the + en-dash sign \textendash{}. Use noendash to + deactivate it. Starting with version |1.12| of the + package this `en-dash as minus' should work in all + encodings, including Unicode (if |fontspec| has been + loaded); see also |unicodeminus| for OpenType fonts. + +\item[amsmath:] \strut the behaviour of the + \cs{DeclareMathOperator}\RightNote{1.3n} command + of |amsmath| is modified by \mst for it to use the correct font. + Additionally, release |1.3n| of \mst at long last also handles an extra + operation done by |amsmath| for |'.:/-*| to be used in operator names + without the extra math spacing.% +% +\footnote{To the experts: there is a long story here that \cs{newmcodes@} + hardcodes the font, that it was not compatible with Unicode engines, that + during some time (2013-2016) \texttt{lualatex-math} fixed that and very + recently |amsopn.sty 2016/03/08 v2.02| also, so now \texttt{lualatex-math + 1.6} does nothing as it is already fixed ``upstream'' in |amsopn.sty|, but + anyhow in both cases, this still hardcoded the font, so finally \mst does + the right thing from its point of view. See the code comments for more, + there is an issue here with \LuaLaTeX\ not applying the curly right quote + contrarily to \XeLaTeX.} +% +This customization is suppressed in subdued mode for the |normal| and |bold| +math versions. + +\item[hbar:] the default \LaTeX\ definition of \hbar would in our context + make use of the |h| of the current math font (so for us, it is also the text + font, perhaps in italic shape), but with a bar accross the |h| from the + original default math font for letters (usually |cmmi|). We redefine + \cs{hbar} to use the text font macron accent (|\=|) as a mock math accent + (this takes into account the italic option and is compatible with + subscripts and superscripts). + + Since |1.12| \mst when dealing with a Unicode font sets the \cs{hbar} + to be the character from the font having hexadecimal codepoint |U+0127|. + + Since |1.3u| the general 8bits font encoding is + supported\RightNote{1.3u} (see discussion of the |mathaccents| option + at end of this list for the shared limitations). Brief testing with + various usual \TeX\ fonts shows that the vertical positioning of + the bar isn't satisfying. It is planned to either add a parameter to + adjust it or to modify altogether the mode of construction of the |\hbar|. + + Use nohbar to tell \mst not do provide its own |\hbar|. + + +\item[dotless i and j:] by default the package redefines \cs{imath} and + \cs{jmath} to give (in math mode) the dotless i and j (if it exists at + all) from the text font.% +% +\footnote{\RightNote{1.3t}Since \texttt{1.12} it also redefined \cs{i} and + \cs{j} for usability both in text and math modes, but this has been + dropped at \texttt{1.3t}. Breaking change!} + +\item[asterisk:] versions of \mst earlier than |1.2d [2013/01/02]| + did not do anything + with the \cs{ast} control sequence but did pick the asterisk + $*$ in the document text font, and this often was a rather + silly thing as the text asterisk is generally in a raised + position. Furthermore, the $*$ lost its status of a binary + operator and was treated as an `ordinary' symbol. An option + |noasterisk| turned this feature off. Starting with |1.2d|, + the |noasterisk| option is deprecated and the new default is + to do nothing. But when option asterisk is received by the + package, then both \cs{ast} and $*$ are simultaneously + modified to use (as binary operators) the text asterisk, + slightly lowered. The amount of lowering\footnote{with the + option \texttt{symbolmisc}, the asterisk is picked from + the Symbol font, and the amount of lowering is + non-customizable; however if a math alphabet command is + used, the asterisk is then again from a text font and the + lowering will be as specified by \cs{MTlowerast}.} is + decided by the mandatory argument to the command + \csb{MTlowerast}\marg{dimen}. The package initially does + \cs{MTlowerast}|{.3\height}|. Doing \cs{MTlowerast}|{.5ex}| is + not a good idea as it does not scale properly in the script + and scriptscript styles. With an argument given as a + multiple of |\height|, the asterisk will behave as expected + in subscripts and subscripts of subscripts. But $*$ is now + `mathematically active'\thinspace\footnote{in a hopefully + safe way, for example {\ttfamily\$\string\label\{eq*1\}\$} + is ok.} and |$R^*$| or |$R^\ast$| \emph{must} be input as + |$R^{*}$| and |$R^{\ast}$|. Furthermore, they will obey the + math alphabet commands. + +\item[\XeTeX{} and \LuaLaTeX{}:] regarding the en-dash and the + dotless i and j, the package is now under the Unicode engines + compatible not only with the ``Unicode'' \LaTeX\ font encodings + EU1 (\XeTeX, old fontspec), EU2 (\LuaLaTeX, old fontspec), TU + (\XeTeX\ and \LuaLaTeX, modern fontspec), but also with + traditional 8bits-encodings declared as a |fontenc| + option.\RightNote{1.3u} Formerly, with a Unicode engine, + only OT1, T1 and LY1 were supported by \mst as the 8bit encoding + of the document text font, regarding the minus as en-dash and + the dotless i and j. + + \item[fontspec:] one more note to users of +\XeTeX{}/\LuaLaTeX{} with |fontspec|:\newline +\fbox{it has to be +loaded {with the option} |no-math|}, +and \emph{before} \mst. + +\item[vec accent:] The default \cs{vec} accent is not + appropriate for upright letters, so \mst + provides a \cs{fouriervec} which takes its glyph in a + Fourier font, and an Ersatz \cs{pmvec} + which is reasonably good looking on upright letters + and works with the \cs{rightarrow} glyph. Contrarily + to version |1.0|, the default \cs{vec} is not + overwritten with \cs{fouriervec}. And contrarily to + version |1.1|, one now needs to pass the option + fouriervec to have the math accent \cs{fouriervec} + defined by the package.% +% +\footnote{this costs a math family, as I never came back to this to try to + do otherwise.} + + +\item[math alphabets:] + \begin{itemize} + \item We define a new math alphabet command + \cs{mathnormalbold} which gives direct access to + the bold version of the \cs{mathnormal} alphabet + (rather than using either the \cs{bm} command from + the |bm| package or the \cs{boldsymbol} command + from the |amsbsy| package). As it does not + exist in the default \LaTeX{} math font set-up, this + alphabet is \emph{not} subjected to the {subdued option} action. + \item The other math alphabet changing commands + defined by the package are \cs{MathEulerBold}, + \cs{MathEuler} and \cs{MathPSymbol}. + \item \cs{mathnormal}, \cs{mathrm}, \cs{mathbf}, + \cs{mathit}, \cs{mathsf} and \cs{mathtt} are modified + to make reference to the document text fonts (this + can be disabled by suitable package options). +\item \RLNote{new:}{1.3x}\mathgreekup and \mathgreekit are math alphabets + modifying the shape of Greek letters, only available under + LGRgreek (or LGRgreeks) option. +\item version |1.2| of \mst has extended the scope of the math + alphabets to apply to non-alphabetical characters and to + operator names. This respects the automatic white spaces + added by \TeX{} around math symbols. +\item the\RightNote{1.3i} + extra skips around letters (see \autoref{sec:mathskips} and + \autoref{sec:ic}) are removed in the scope of the math alphabets. + \end{itemize} + +\item[math accents:] if option mathaccents is used then \mst attempts to let + the math accents |\acute|, |\grave|, etc... use the suitable glyphs from the + text font. Prior to |1.3u| only |OT1|, |T1|, and |LY1| were supported (via + hardcoded slots). It should now work with any 8bits font + encoding\RightNote{1.3u} having been declared as an option to the + |fontenc| package (and of course providing the ten needed text accents which + will mock math accents).% + % + \footnote{The code will raise low-level \TeX\ errors if the user attempts to + use an 8bits font encoding whose \LaTeX\ definition file is lacking the + suitable uses of \cs{DeclareTextAccent} or if the low level \LaTeX\ macro + implementation of text accents changes significantly; in such cases please + report the problem to the author, so that it can be documented in future + releases!} + + The |\vec| math accent is not handled here, as it is not available in the + usual 8bits font encodings. See the fouriervec option or the \pmvec + command. + + The math accents obey the subdued option\RightNote{1.3u} + and will change in sync with the \mst-ified text font used in + each non subdued math version. + + (Very) brief testing during |1.3u| development with \XeTeX\ and \LuaTeX\ let + the author conclude that usage with the \cs{Umathaccent} primitive of an + OpenType accent glyph slot (which in the text font is for usage as a + postpended combining character) gives definitely bad horizontal placements + for both engines (each in its own way). Thus, the redefinitions of accents + for a \mst declared math version with an OpenType font is by default + canceled.% +% +\footnote{I.e., the \cs{grave} etc... control sequences will, in math versions + with an OpenType \mst-ified font, expand to macros holding their initial + meanings, unmodified by \mst, which was in force at the + |\string\begin\string{document\string}|.} +% + Use unimathaccents to force usage of the OpenType font text + accents glyph slots with the \cs{Umathaccent} primitive. Expert users are + invited to check out the code and to contribute suggestions if some extras + can improve it. + +\item[varying font encodings:] the very first release of \mst dealt with only + one font; very soon thereafter it acquired the capacity to define multiple + math versions, each one using its own text font. But, as was documented at + this location formerly, various encoding dependent decisions were done once + and for all during package loading. + + This meant in particular that the minus sign (using the text endash), the + dotless |i| and |j|, the |\hbar|, the math accents were all set up for only + one unique font encoding. It was thus recommended that all math versions + share the same font encoding. + + The |1.3u| release has lifted this restriction.\RightNote{1.3u} +\end{description} + + +\subsection{Examples} +\label{sec:examples} + +Here is another simple example: +\begin{verbatim} +\usepackage{libertinus-type1} +\usepackage[italic,LGRgreek,defaultmathsizes]{mathastext} +\end{verbatim} +The LGRgreek option is there to take advantage that the |libertinus-type1| package% +% +\footnote{Bob \textsc{Tennent}, \emph{Support for using Libertinus fonts with + \LaTeX/\pdfLaTeX}, \url{https://ctan.org/pkg/libertinus-type1}.} +% +also provides Greek letters in LGR encoding, which can thus be used by \mst in +math mode. And we do here as if we did not know about the existence of the +|libertinust1math| package!% +% +\footnote{Michael \textsc{Sharpe}, \emph{A Type 1 font and \LaTeX\ support for Libertinus + Math}, \url{https://ctan.org/pkg/libertinust1math}.} +% +This would have been the obvious choice, but then one wouldn't need \mst and I +couldn't even start this documentation. + + +More sophisticated preambles will use multiple times the \Mathastext command +in the preamble with its optional argument \oarg{math\_version} in order to +define \emph{math versions} corresponding to a given font configuration. +These \mst-enriched math versions are then activated in the document body via +the \MTversion\marg{math\_version} command, which modifies \emph{both} the text +font and the math font. + + +We now give some examples with a verbatim copy of the preamble code +corresponding to them, as can be found in the source of this documentation. +The detailed option and command descriptions will be given later. + +\def\DeepestMathematicsText{% Let $(X,Y)$ be two functions of a variable $a$. If they obey the differential system $(VI_{\nu,n})$: \begin{align*} @@ -1783,73 +2140,133 @@ with parameters $(\alpha,\beta,\gamma,\delta) = (\frac{(\nu+n)^2}2, \frac{-(\nu+n+1)^2}2, \frac{n^2}2, \frac{1 - n^2}2)$.\par +Test of uppercase Greek in math: $\Alpha\Beta\Gamma\Delta\Xi\Omega$.\par +} + +First of all, the package was loaded using this: +\begin{verbatim} +\usepackage[subdued,% + asterisk,% + defaultmathsizes,% + symbolmisc,symbolre,% + LGRgreek]{mathastext} +\end{verbatim} +In the definitions of the \mst-enriched \emph{math versions} we keep commands +which may have been redundant in the original preamble, because they were +issued earlier for a previous math version definition. + +Let's start with Latin Modern typewriter proportional. Its usage was +configured in the preamble using this: +\begin{verbatim} +\MTlettershape{n} +\MTupgreek +\MTgreekfont{cmtt} +\MTfamily{lmvtt} +\Mathastext[lmvtt] +\end{verbatim} +Its usage is triggered using \centeredline{|\MTversion{lmvtt}|} in the +document. Here is an example: + +{\advance\leftskip.1\linewidth\advance\rightskip.1\linewidth + \MTversion{lmvtt} + \DeepestMathematicsText } -Notice that the Latin (and Greek letters) are in upright shape. But perhaps we -insist on obeying the standardized habits: +Both the Latin and Greek letters are upright, in conformity to the +way the |lmvtt| version was defined. + +\bigskip + +Now with the fonts from the |libertinus-type1| distribution% +% +\footnote{Bob \textsc{Tennent}, \emph{Support for using Libertinus fonts with + \LaTeX/\pdfLaTeX}, \url{https://ctan.org/pkg/libertinus-type1}.}. +% +The preamble code is: +\begin{verbatim} +\MTfamily{LibertinusSerif-TLF} +\MTlettershape{n} +\MTseries{m} +\MTgreekfont{LibertinusSerif-TLF} +\MTupgreek +\Mathastext[libertinus] +\MTseries{sb} +\Mathastext[libertinussemibold] +\end{verbatim} +Its usage in the document body for the example below is triggered via +\centeredline{|\MTversion[libertinus]{libertinussemibold}|} This syntax +modifies the text fonts to be those which were defined to hold for the +\mst-math version passed as optional argument, and sets the math fonts +according to the mandatory argument. Hence the math mode uses semibold font +but the text font uses the normal weight. {\advance\leftskip.1\linewidth\advance\rightskip.1\linewidth -\MTversion{times} -Let $(X,Y)$ be two functions of a variable $a$. If they obey the differential -system $(VI_{\nu,n})$: - \begin{align*} - a\frac{d}{da} X &= \nu - X - (1 - X^2)\frac{2n a}{1 - a^2}\frac{aX+Y}{1+a XY} \\ -a\frac{d}{da} Y &= -(\nu+1) Y - + (1 - Y^2)\frac{2n a}{1 - a^2}\frac{X+aY}{1+a XY} - \end{align*} -then the quantity $q = a \frac{aX+Y}{X+aY}$ -satisfies as function of $b= a^2$ the $P_{VI}$ differential equation: -\begin{equation*} -\begin{split} - \frac{d^2 q}{db^2} = \frac12\left\{\frac1q+\frac1{q-1} - +\frac1{q-b}\right\}\left(\frac{dq}{db}\right)^2 - \left\{\frac1b+\frac1{b-1} - +\frac1{q-b}\right\}\frac{dq}{db}\\+\frac{q(q-1)(q-b)}{b^2(b-1)^2}\left\{\alpha+\frac{\beta - b}{q^2} + \frac{\gamma (b-1)}{(q-1)^2}+\frac{\delta - b(b-1)}{(q-b)^2}\right\} -\end{split} -\end{equation*} -with -parameters -$(\alpha,\beta,\gamma,\delta) = (\frac{(\nu+n)^2}2, -\frac{-(\nu+n+1)^2}2, \frac{n^2}2, \frac{1 - n^2}2)$.\par + \MTversion[libertinus]{libertinussemibold} + \DeepestMathematicsText } - This was typeset using the Times font (available in any \TeX{} - distribution). Let us now be a bit more original and have our mathematics - with italic letters from the sans serif font Helvetica, while the letters in - text use New Century Schoolbook. +\bigskip +Now with a Times clone. We will configure Latin letters to be in italic +shape, and Greek letters to be italic for lowercase and upright for uppercase: +\begin{verbatim} +\usepackage{times}% it modifies the \{rm,sf,tt}default's +\MTfamily{\rmdefault} +\MTlettershape{it} +\MTseries{m} +\MTgreekfont{txr} +\MTitgreek\MTupGreek +\Mathastext[times] +% \MTversion{times} will change not only math but also text, so it +% will re-enact the \rmdefault, \sfdefault, \ttdefault from loading times.sty +\end{verbatim} +We now use this in the document body via +\centeredline{|\MTversion{times}|} {\advance\leftskip.1\linewidth\advance\rightskip.1\linewidth -\MTversion[newcent]{helvet} -Let $(X,Y)$ be two functions of a variable $a$. If they obey the differential -system $(VI_{\nu,n})$: - \begin{align*} - a\frac{d}{da} X &= \nu - X - (1 - X^2)\frac{2n a}{1 - a^2}\frac{aX+Y}{1+a XY} \\ -a\frac{d}{da} Y &= -(\nu+1) Y - + (1 - Y^2)\frac{2n a}{1 - a^2}\frac{X+aY}{1+a XY} - \end{align*} -then the quantity $q = a \frac{aX+Y}{X+aY}$ -satisfies as function of $b= a^2$ the $P_{VI}$ differential equation: -\begin{equation*} -\begin{split} - \frac{d^2 q}{db^2} = \frac12\left\{\frac1q+\frac1{q-1} - +\frac1{q-b}\right\}\left(\frac{dq}{db}\right)^2 - \left\{\frac1b+\frac1{b-1} - +\frac1{q-b}\right\}\frac{dq}{db}\\+\frac{q(q-1)(q-b)}{b^2(b-1)^2}\left\{\alpha+\frac{\beta - b}{q^2} + \frac{\gamma (b-1)}{(q-1)^2}+\frac{\delta - b(b-1)}{(q-b)^2}\right\} -\end{split} -\end{equation*} -with -parameters -$(\alpha,\beta,\gamma,\delta) = (\frac{(\nu+n)^2}2, -\frac{-(\nu+n+1)^2}2, \frac{n^2}2, \frac{1 - n^2}2)$.\par + \MTversion{times} + \DeepestMathematicsText +} + +\bigskip +Let us be a bit more original and have our mathematics with italic letters +from the sans serif font Helvetica, while the letters in text use New Century +Schoolbook. Also we want Greek letters (both lowercase and uppercase) to be +in italic shape. The preamble code was: +\begin{verbatim} +\usepackage{newcent}% attention that it modifies all three of \rmdefault, + % \sfdefault and \ttdefault +\MTfamily{\rmdefault} +\MTlettershape{it} +% \MTitgreek\MTupGreek % our demo does not use newcent for math anyway +\Mathastext[newcent] + +\usepackage[scaled]{helvet} +\MTfamily{\sfdefault} +\MTlettershape{it} % redundant here +\MTseries{m} +\MTitgreek % make both lowercase and uppercase Greek italic +\MTgreekfont{cmss} +\Mathastext[helvet] +\end{verbatim} +And the next demo is configured in the document body via +\centeredline{|\MTversion[newcent]{helvet}|} + +{\advance\leftskip.1\linewidth\advance\rightskip.1\linewidth + \MTversion[newcent]{helvet} + \DeepestMathematicsText } +\bigskip And after all that, we may wish to return to the default math typesetting (let's -shorten the extract here in case the reader makes an indigestion \dots): +shorten the extract here in case the reader makes an indigestion \dots). This +is easy because all previous usages were enclosed in braces |{...}| so as to +limit the scope. As \mst was loaded with option subdued the default rendering +(i.e.\@ in the \emph{normal} and \emph{bold} math versions) is (almost) as if +the package was not loaded at all, and it simply matches the document font +configuration. Here it thus matches the +\centeredline{|\usepackage{mlmodern}|} which was included in the document +preamble prior to loading \mst. {\advance\leftskip.1\linewidth\advance\rightskip.1\linewidth Let $(X,Y)$ be two functions of a variable $a$. If they obey the differential @@ -1860,77 +2277,205 @@ system $(VI_{\nu,n})$: a\frac{d}{da} Y &= -(\nu+1) Y + (1 - Y^2)\frac{2n a}{1 - a^2}\frac{X+aY}{1+a XY} \end{align*} -then the quantity $q = a \frac{aX+Y}{X+aY}$ -satisfies as function of $b= a^2$ the $P_{VI}$ differential equation with -parameters -$(\alpha,\beta,\gamma,\delta) = (\frac{(\nu+n)^2}2, -\frac{-(\nu+n+1)^2}2, \frac{n^2}2, \frac{1 - n^2}2)$.\par + then the quantity $q = a \frac{aX+Y}{X+aY}$ satisfies as function of $b= + a^2$ the $P_{VI}$ differential equation with parameters + $(\alpha,\beta,\gamma,\delta) = (\frac{(\nu+n)^2}2, \frac{-(\nu+n+1)^2}2, + \frac{n^2}2, \frac{1 - n^2}2)$.\par +Test of uppercase Greek in math: $%\Alpha\Beta + \Gamma\Delta\Xi\Omega$ (no \string\Alpha, no + \string\Beta).\par } - \vskip\baselineskip Notice that the Greek letters also changed - according to the \emph{math version}: \mst has indeed some (limited) - capabilities to this effect, with its LGRgreek option. This - document uses the |LGR| encoded fonts |cmtt|, |cmss|, and |txr|, - which are part of standard \TeX{} - distributions.\footnote{The first two are available (with no need to - load explicitly any package in the document) via the combination - |cbfonts| (|cbgreek-complete|) \& |babel|, and the |LGR| encoded |txr| font +\bigskip + +If the scope of our earlier examples using \mst-enriched math versions +had not been limited we would have issued \centeredline{|\MTversion{normal}|} +to return to the normal (almost not influenced by \mst{}) math version. + + +The Greek letters varied across our examples thanks to the LGRgreek option +which made the \MTgreekfont command active for configuration of the math +versions.% +% +\footnote{The document used the \texttt{cmtt}, \texttt{cmss}, \texttt{txr}, as well + as \texttt{LibertinusSerif-TLF} font families in \texttt{LGR} encoding. The + first two are available (with no need to + load explicitly any package in the document) if the \LaTeX{} installation + provides the + |cbfonts| (or |cbgreek-complete|) \& |babel| packages, and the |LGR| encoded |txr| font (again no package loading is necessary) is part of the files of the - |txfontsb| package.} + |txfontsb| package. For \texttt{LibertinusSerif-TLF}, the files of the + \texttt{libertinus-type1} package must be present.} % \href{http://mirrors.ctan.org/help/Catalogue/entries/cbgreek-complete.html}{cbfonts}, % \href{http://mirrors.ctan.org/help/Catalogue/entries/txfontsb.html}{txfontsb}. -\subsection{Overview} +\emph{Since |1.3x| this documentation uses globally the |mlmodern|% +% +\footnote{Daniel Benjamin \textsc{Miller}, \emph{A blacker Type 1 version of Computer Modern, with multilingual + support}, \url{https://ctan.org/pkg/mlmodern}. I have added to the preamble + \centeredline{\texttt{\string\DeclareEncodingSubset\{TS1\}\{mlmtt\}\{0\}}} +to circumvent some \LaTeX\ complaints about \texttt{\string\textasciigrave} +(this is a widespread problem when not using default fonts) +related to occurrences of the backtick character in verbatim displays.} + font + package +and has added an example using the Libertinus font in type-1 format% +% +\footnote{Bob \textsc{Tennent}, \emph{Support for using Libertinus fonts with + \LaTeX/\pdfLaTeX}, \url{https://ctan.org/pkg/libertinus-type1}.} +% +although there is an existing accompanying math font% +\footnote{Michael \textsc{Sharpe}, \emph{A Type 1 font and \LaTeX\ support for Libertinus + Math}, \url{https://ctan.org/pkg/libertinust1math}. Note that it is then highly +advantageous to use \texttt{latex+dvipdfmx} and not \texttt{pdflatex} for +reasons of PDF file size.}% +.% +} -\subsubsection{Basic use} +\subsection{Main options} -The initial ideology of \mst was to produce mathematical texts with -a very uniform look, not separating math from text as strongly as -is usually done. + \subsubsection{The \blueit{italic} option} -As soon as one tries out other fonts for text than the Computer Modern -ones one realizes how extremely ``thin'' are the default \TeX{} fonts -for mathematics: they definitely do not fit well visually with the -majority of text fonts. With \mst one can get one's (simple\dots{} or -not) mathematics typeset in a manner more compatible with the text, -without having to look for an especially designed font. +In the initial version |1.0|, the Latin letters in +mathematical mode assumed the exact same shape as in +text mode, and this meant, generally speaking, that +they would turn up upright. Doing this gives a very +uniform look to the document, so that one has to make +an effort and read it with attention, and this was +one of the design goals of \mst. -Here is a minimal example of what may go into -the preamble: -\begin{verbatim} -\usepackage[T1]{fontenc} -\usepackage{times} -\usepackage[italic]{mathastext} -\end{verbatim} -The package records which font is set up for text, at the time it is -loaded,\footnote{alternatively it is possible to configure the text font after - loading \mst, and then the command \cs{Mathastext} will accomplish the - necessary changes to the font for letters, digits and a few extra ascii - symbols in math mode.} and -then arranges things in order for this text font to be used in math mode as -well. So, with the preamble as above -all letters, digits, and punctuation signs inside math mode will then be -typeset in Times.\footnote{let's do as if we did not know the excellent - |txfonts| package which employs Times for text and has a very complete - math support, including many additional mathematical glyphs in - comparison to the CM fonts.} The exact list of characters concerned by -\mst is a subset of the basic |ASCII| set: +Nevertheless, soon after I posted the initial version +of the package to CTAN, I was overwhelmed by +numerous\footnote{this means ``more then one.''} +questions\footnote{I thank in particular +Tariq~\textsc{Perwez} and Kevin~\textsc{Klement} for +their kind remarks (chronological order).} on how to +have the letters be in italic shape. - \begin{framed}\centering\MTversion{timesbold}% - \begingroup\color{joli}% - $abcdefghijklmnopqrstuvwxyz$\par - $ABCDEFGHIJKLMNOPQRSTUVWXYZ$\par - $0123456789$\par - \DeleteShortVerb{\|}% global! - ${!}\,{?}\,{*}\,{,}\,{.}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\, - {[}\,{]}\,{/}\,{\#}\,{\$}\,{\%}\,{\&}\,{<}\,{>}\,{|}\,{\{}\,{\}} - \textrm{ \color{black}\mdseries and }{\backslash}$% - \endgroup\par\MakeShortVerb{\|}% - \end{framed} +The default is still, as in version |1.0|, for everything to be in +upright shape, but it suffices to pass to the package the option +italic\RightNote{1.1} to have the Latin letters in math mode in italic +shape.\footnote{more precisely stated, the value of \cs{itdefault} +is used.} There is also an option frenchmath to make the +uppercase letters nevertheless upright, because this is the way of +traditional French mathematical typography.\footnote{more precisely +stated, the value of \cs{shapedefault} is used.} + + +\subsubsection{The \blueit{defaultmathsizes} option} + +The default sizes give for subscripts of subscripts barely legible glyphs +(author's opinion!). So \mst makes more reasonable choices. It also +redefines \cs{Huge} and defines a \cs{HUGE} size, copied from +the |moresize| package. To cancel all of this use option +defaultmathsizes. + +\subsubsection{The \blueit{subdued} option}\label{sec:subdued} + +This option was introduced in |v1.15|.\RightNote{1.15} It provides a manner to +switch on the \mst-\emph{ification} only for limited portions of +the document, with the help of the mechanism of math versions. Without the +subdued option, the \emph{mathastextification} applies by default +to the whole of the document (and one may also define additional +math versions in the preamble); with the subdued option the +\emph{mathastextification} is done only in \emph{math versions} distinct from +the standard and bold ones. + +Despite some limitations I will now partially describe, the subdued option +has its utility, as I think is illustrated enough by the examples given at the +start of this document and it works reasonably well. + +\begin{framed} + \mst was not written initially in order to allow its action to + be completely canceled. It does not store (all) mathcodes nor + does it set them (all) when changing math versions; only that would + allow a perfect subdued mode (and \LaTeX\ is rather obstinate in + making that tricky or at least uneasy if sticking to its + official interface to math mode, as it is almost entirely + preamble only). + + Releases |1.3t| and |1.3u| do this kind of things to maintain + usability across multiple \mst-ified math versions of characters + which are obviously font encoding dependent such as the minus + sign as en-dash (or unicode minus), the dotless i, the |\hbar|, + the text accents. + + But this should be extended to all \mst-ified characters which + basically would amount to an extensive rewrite of large legacy + portions of the code. Currently the support for the |subdued| + mode and to multiple math versions amounts to some kind of a + kludge, added to an initial design which handled a single unique + text font. +\end{framed} + +To get the displayed math +(almost) as if \mst had not been loaded, one must also +use the option defaultmathsizes. But this does not quite suffice, +as, for example, the colon, the dot, and the minus sign belong +in the default \LaTeX{} math mode set-up to three distinct fonts +whereas \mst will pick (even subdued) the three of them in the same +font,% +\footnote{\RightNote{1.3t}The minus sign is now perfectly subdued, +because its original mathcode is stored and restored; this was only +way to handle the case with Unicode engines +where the math operator font is in a classic +\TeX\ encoding, but the minus sign is configured by \mst to use a Unicode +en-dash or minus character in non-subdued math versions.} +% +and although it will make a reasonable choice of this font, +this is not an exact re-installement of the previously prevailing situation. And +then other packages could have done arbitrary things regarding character +mathcodes, so to +be on the safe side one needs the basic option which limits the +mathastextification to letters and digits.% +% +\footnote{\RightNote{1.3d}The subdued mode does extinguish +in the normal and bold math versions the action of options selfGreek, +eulergreek, and symbolgreek (previously only LGRgreek was +subdue-able).} +\footnote{\RightNote{1.3t}The \texttt{\string\imath} and +\texttt{\string\jmath} now obey the subdued regime.} +\footnote{\RightNote{1.3u}Also \texttt{\string\hbar} +and the math accents (see mathaccents option) obey the subdued regime.} +% +Even then, in some circumstances, this +may not suffice: for example the \emph{euler} package puts +the digits in the same font as the Latin letters in math mode, but +the subdued \mst will pick them up in the same font as used for +operator names, which for example in the case of the \emph{euler} package, is +the main document font. + +\subsubsection{The \blueit{LGRgreek} option} -As one can see, this is a very limited list! some possibilities are offered by -\mst for Greek letters and will be described later. + There is the issue of Greek letters. Sometimes the text font has + Greek glyphs, in |LGR| encoding% +\footnote{For example the default CM and its replacement Latin Modern for european + languages are (transparently to the user) extended with |LGR| + encoded fonts from the |cbfonts| (|cbgreek-complete|) + package.} + (this should be mentioned in the + documentation of the font package). Then option LGRgreek tells + \mst to pick up these Greek letters. + +It is naturally possible to leave the + responsability to set up Greek letters to some other packages + loaded previously to \mst. And even if \mst has been loaded with one of its +Greek related options the command \MTstandardgreek will locally cancel its +customization of Greek letters. The command \MTcustomgreek reenables the +customization done by \mst, if it was loaded with the LGRgreek or one of the +other Greek related options. + +\begin{framed} + Release |1.3x| has added important new aspects to the handling of Greek + letters via the LGRgreek option. Make sure to read the \autoref{sec:newgreek}. +\end{framed} + +\subsection{More miscellanea} + +This may repeat information already given. + +\subsubsection{Derivative, minus, asterisk} The text characters {}'{} and {}-{} are not used, and the asterisk is done optionally: @@ -1964,7 +2509,7 @@ the text font only for the base size: any |\big|, |\bigl|, |\bigr|, etc\dots reverts to the original math symbols. -\subsubsection{always load \mst last} +\subsubsection{load \mst always last} The ``large'' math symbols are not modified in any way by \mst. Only loading some math font packages such as |fourier|, |kpfonts|, |mathabx|, |mathdesign|, @@ -1986,12 +2531,16 @@ text. \begin{document} \end{verbatim} -\subsubsection{using \mst with \texttt{beamer}}\label{ssec:beamer} +\subsubsection{using \mst with \href{https://ctan.org/pkg/beamer}{beamer}}\label{ssec:beamer} %\noindent\llap{\textcolor{green}{\bfseries 2015/02/26}\hspace{1em}} Starting -with release |3.34| of |beamer|, \mst is recognized as a ``math font package''. +with release |3.34| of \href{https://ctan.org/pkg/beamer}{beamer}% +% +\footnote{Till \textsc{Tantau}, Joseph \textsc{Wright}, Vedran \textsc{Mileti\'c}, \emph{A \LaTeX{} class for producing presentations and slides}, \url{https://ctan.org/pkg/beamer}.}, +% +\mst is recognized as a ``math font package''. \emph{Only with \emph{{\bfseries earlier} |beamer| versions} is it necessary to issue} \centeredline{|\usefonttheme{professionalfonts}|} @@ -2020,28 +2569,6 @@ with release |3.34| of |beamer|, \mst is recognized as a ``math font package''. \end{document} \end{verbatim} -\subsubsection{option \blueit{LGRgreek}} - - There is the issue of Greek letters. Sometimes the text font has - Greek glyphs, in |LGR| encoding (this will be mentioned in the - documentation of the font package). Then option LGRgreek tells - \mst to pick up these Greek letters. And it is possible to specify - whether the Greek letters should be upright, or - ``italic''.% -% -\footnote{the default CM and its replacement Latin Modern for european - languages are (transparently to the user) extended with |LGR| - encoded fonts from the |cbfonts| (|cbgreek-complete|) - package.} - -It is naturally possible to leave the - responsability to set up Greek letters to some other packages - loaded previously to \mst. And even if \mst has been loaded with one of its -Greek related options the command \MTstandardgreek will locally cancel its -customization of Greek letters. See also \MTcustomgreek. - - % \href{http://mirrors.ctan.org/help/Catalogue/entries/cbgreek-complete.html}{cbfonts} - \subsubsection{avoid \texorpdfstring{\texttt{OT1}}{OT1} encoding} We specified in our minimal working example a |T1| encoding (|LY1| would @@ -2063,195 +2590,135 @@ customization of Greek letters. See also \MTcustomgreek. |LY1|. \end{framed} -\subsection{Main options} - - \subsubsection{The \blueit{italic} option} - -In the initial version |1.0|, the Latin letters in -mathematical mode assumed the exact same shape as in -text mode, and this meant, generally speaking, that -they would turn up upright. Doing this gives a very -uniform look to the document, so that one has to make -an effort and read it with attention, and this was -one of the design goals of \mst. - -Nevertheless, soon after I posted the initial version -of the package to CTAN, I was overwhelmed by -numerous\footnote{this means ``more then one.''} -questions\footnote{I thank in particular -\textsc{Tariq~Perwez} and \textsc{Kevin~Klement} for -their kind remarks (chronological order).} on how to -have the letters be in italic shape. - -The default is still, as in version |1.0|, for everything to be in -upright shape, but it suffices to pass to the package the option -italic\RightNote{1.1} to have the Latin letters in math mode in italic -shape.\footnote{more precisely stated, the value of \cs{itdefault} -is used.} There is also an option frenchmath to make the -uppercase letters nevertheless upright, because this is the way of -traditional French mathematical typography.\footnote{more precisely -stated, the value of \cs{shapedefault} is used.} - - -\subsubsection{The \blueit{defaultmathsizes} option} - -The default sizes give for subscripts of subscripts barely legible glyphs -(author's opinion!). So \mst makes more reasonable choices. It also -redefines \cs{Huge} and defines a \cs{HUGE} size, copied from -the |moresize| package. To cancel all of this use option -defaultmathsizes. - -\subsubsection{The \blueit{subdued} option}\label{sec:subdued} - -This option was introduced in |v1.15|.\RightNote{1.15} It provides a manner to -switch on the \mst-\emph{ification} only for limited portions of -the document, with the help of the mechanism of math versions. Without the -subdued option, the \emph{mathastextification} applies by default -to the whole of the document (and one may also define additional -math versions in the preamble); with the subdued option the -\emph{mathastextification} is done only in \emph{math versions} distinct from -the standard and bold ones. - -Despite some limitations I will now partially describe, the subdued option -has its utility, as I think is illustrated enough by the examples given at the -start of this document and it works reasonably well. - -\begin{framed} - \mst was not written initially in order to allow its action to - be completely canceled. It does not store (all) mathcodes nor - does it set them (all) when changing math versions; only that would - allow a perfect subdued mode (and \LaTeX\ is rather obstinate in - making that tricky or at least uneasy if sticking to its - official interface to math mode, as it is almost entirely - preamble only). - - Releases |1.3t| and |1.3u| do this kind of things to maintain - usability across multiple \mst-ified math versions of characters - which are obviously font encoding dependent such as the minus - sign as en-dash (or unicode minus), the dotless i, the |\hbar|, - the text accents. - - But this should be extended to all \mst-ified characters which - basically would amount to an extensive rewrite of large legacy - portions of the code. Currently the support for the |subdued| - mode and to multiple math versions amounts to some kind of a - kludge, added to an initial design which handled a single unique - text font. -\end{framed} +\subsubsection{using \mst with \href{https://ctan.org/pkg/frenchmath}{frenchmath}}\label{ssec:frenchmath} -To get the displayed math -(almost) as if \mst had not been loaded, one must also -use the option defaultmathsizes. But this does not quite suffice, -as, for example, the colon, the dot, and the minus sign belong -in the default \LaTeX{} math mode set-up to three distinct fonts -whereas \mst will pick (even subdued) the three of them in the same -font,% -\footnote{\CHANGED{1.3t}The minus sign is now perfectly subdued, -because its original mathcode is stored and restored; this was only -way to handle the case with Unicode engines -where the math operator font is in a classic -\TeX\ encoding, but the minus sign is configured by \mst to use a Unicode -en-dash or minus character in non-subdued math versions.} -% -and although it will make a reasonable choice of this font, -this is not an exact re-installement of the previously prevailing situation. And -then other packages could have done arbitrary things regarding character -mathcodes, so to -be on the safe side one needs the basic option which limits the -mathastextification to letters and digits.% +To use \mst concurrently with the +\href{https://ctan.org/pkg/frenchmath}{frenchmath} package% % -\footnote{\CHANGED{1.3d}The subdued mode does extinguish -in the normal and bold math versions the action of options selfGreek, -eulergreek, and symbolgreek (previously only LGRgreek was -subdue-able).} -\footnote{\CHANGED{1.3t}The \texttt{\string\imath} and -\texttt{\string\jmath} now obey the subdued regime.} -\footnote{\CHANGED{1.3u}Also \texttt{\string\hbar} -and the math accents (see mathaccents option) obey the subdued regime.} +\footnote{Antoine~\textsc{Missier}, \emph{Typesetting mathematics according to French rules}, \url{https://ctan.org/pkg/frenchmath}.} % -Even then, in some circumstances, this -may not suffice: for example the \emph{euler} package puts -the digits in the same font as the Latin letters in math mode, but -the subdued \mst will pick them up in the same font as used for -operator names, which for example in the case of the \emph{euler} package, is -the main document font. - +of +Antoine~\textsc{Missier}: +\begin{itemize} +\item load +\href{https://ctan.org/pkg/frenchmath}{frenchmath} with its option +|capsit|, +\item and load \mst second (after perhaps some relevant font packages) + and with the option frenchmath*. +\end{itemize} +Also, \href{https://ctan.org/pkg/frenchmath}{frenchmath} must be at least at +version |1.6| of |2022/10/16|.% +% +% \footnote{The further package \href{https://ctan.org/pkg/frenchmath}{mismath} +% by the Antoine~\textsc{Missier} may probably be used with \mst, but not in a fully +% inter-operative way, as the packages conflict on some aspects. Reports +% welcome, we have not tested this.} + +Limited testing indicated that the combination (using the options as indicated +above) works as expected but that some adjustments may be needed for some of +the macros defined by \href{https://ctan.org/pkg/frenchmath}{frenchmath}: we +observed in particular that the |\paral| command (which produces +$\mathrel{/\!\!/}$) may not work well if the $/$ is picked up from the text +font due to \mst (alternative could be for most text fonts +|\def\paral{\mathrel{//}}|), and that macros such as |\Oijk| may not work well +due to the font lacking a dotless |j| (use then option defaultimath). + + +You can either use the Greek related options of +\href{https://ctan.org/pkg/frenchmath}{frenchmath} (since its version |2.0| of +|2022/10/24|) or those of \mst. + +To handle properly intervals in French mathematical typesetting it is +recommended to use the \href{https://ctan.org/pkg/mathtools}{mathtools}% +% +\footnote{Morten \textsc{Hgholm}, Lars \textsc{Madsen} and the +\textsc{\LaTeX3} project, \emph{Mathematical tools to use with amsmath}, +\url{https://ctan.org/pkg/mathtools}. As explained elsewhere in this +documentation always load \mst after \texttt{mathtools}.} +% +package facilities in order to define suitable macros for example like this +for open intervals: +\centeredline{|\DeclarePairedDelimiterX\Ioo[2]{]}{[}{#1;#2}|} Use then +|$I = \Ioo{A}{B}$| type mark-up in your source, with variants |\Ioo*| +and |\Ioo[\Big]| for example. We used the semi-colon, as is +observed in some French mathematical texts, often educational, as they +have to handle intervals with decimal numbers as extremities, and the comma is +used as decimal separator. With the frenchmath* option, \mst will let the +semi-colon use |\mathbin| type spacing, matching observed practice in such +mathematical texts. + +\smallskip +{\footnotesize +Very advanced expert note: if using \MTnonlettersobeymathxx, the above macro |\Ioo| +will raise errors except if used as |\Ioo*|. Replace |]| by |{|{$\mskip2mu$}|]}| and |[| +by |{[|{$\mskip2mu$}|}| in the above to get an |\Ioo| which does not raise errors and can be +used also with the optional argument for example |\Ioo[\Bigg]|. Unfortunately then +the starred form |\Ioo*| will fail. This is known limitation and explains why +\mst does not execute \MTnonlettersobeymathxx per default.\par} \subsection{Math versions}\label{sec:mathversions} -\LaTeX{} has the concept of \emph{math versions}, but most font packages -do not define any such version beyond the default normal and bold (that -they possibly customize to use such or such math font). The package -|unicode-math| for unicode engines fruitfully uses this concept. \mst -uses math versions in order to allow the math mode fonts (for letters, -digits, punctuation and a few other ascii symbols) used in the different -parts of the document to be kept in sync with the text fonts. However -the other math symbols (sums, products, integrals, logical signs, -etc\dots) will be the same throughout the document as it is not in \mst -power to modify them. There are some possibilities to use different sets -of fonts for the Greek letters, though. - -The present document illustrated the use of various fonts, here is its -preamble (slightly stripped-down): -\begin{center} - \begin{minipage}{.8\linewidth} -\begin{verbatim} -\usepackage{lmodern} -\usepackage[T1]{fontenc} -\usepackage[subdued,italic,defaultmathsizes]{mathastext} -\MTDeclareVersion[n]{lmvtt}{T1}{lmvtt}{m}{n} -\usepackage{newcent} -\Mathastext[newcent] -\usepackage{times} -\Mathastext[times] -\usepackage[scaled]{helvet} -\renewcommand\familydefault\sfdefault -\Mathastext[helvet] -\begin{document}\MTversion{normal} -\end{verbatim} - \end{minipage} -\end{center} -Let us examine this code: it uses once the command \MTDeclareVersion -and three times the command \Mathastext, thus defining four -|math versions|\footnote{|math versions| are discussed in the document -|fntguide.pdf| from your \TeX{} distribution.}: |lmvtt|, |newcent|, -|times|, and |helvet|. The names can be taken arbitrarily (they only -need to be suitable arguments to the \LaTeX{} \cs{DeclareMathVersion} -command which is invoked internally). Two -additional math versions preexist: the |normal| and |bold|, which, -because there was the subdued option, were left untouched by \mst. - -Once these |math versions| are defined, \MTversion|{name_of_version}|, or -equivalently \Mathastextversion|{name_of_version}|, enacts the font switches -in the body of the document. As is usual with \LaTeX{} one can limit the scope -to the inside of a group, or also switch back to the main set-up through issuing -\cs{Mathastextversion\{normal\}}. - -When \cs{Mathastext} is used in the preamble, it records the current font -defaults and (except for the |normal| and |bold| versions under the subdued -regime) sets up the math font to be used in that version to be the text font -as found in \cs{familydefault}. But it is still possible for a \mst-declared -math version to have distinct fonts for text and math: -\begin{enumerate} -\item in the body of the \TeX{} source, an optional argument (the name - of a \mst-declared math version) to \cs{MTversion} is allowed, and - for example we used in the source of this document - \cs{MTversion[newcent]\{helvet\}} meaning ``New Century Schoolbook - for the text and Helvetica for the math.'' -\item there are preamble-only commands \cs{MTencoding}, \cs{MTfamily}, - \cs{MTseries}, \cs{MTshape}, \cs{MTlettershape} which tell \mst what - to do (for math \emph{only}) in each math version declared - \emph{afterwards}, independently of the text fonts. -\end{enumerate} - -The native \LaTeX{} command -\cs{mathversion}\marg{version\_name} would change only the fonts used in math -mode. It is important to use rather the package command -\csb{MTversion} (or one of its synonyms \cs{mathastextversion}, -\cs{Mathastextversion}, \cs{MTVersion}), with its mandatory argument -\marg{version\_name}, as it does additional actions: +\LaTeX{} has the concept of \emph{math versions}% +% +\footnote{|math versions| are discussed in the document +|fntguide.pdf| from your \TeX{} distribution.}% +% +, but most font packages +do not define any such version beyond the default normal and bold (the +package |unicode-math| for unicode engines does use this concept). + +\mst extends the concept of math versions in order to allow the math mode +fonts (for letters, digits, punctuation and a few other ascii symbols) used in +the different parts of the document to be kept in sync with the text +fonts. + +Most math symbols (sums, products, integrals, logical signs, +etc\dots) are kept the same throughout the document though as it is not in +\mst power to modify them. + +For examples see the earlier \autoref{sec:examples}. The interface to define +a |math version| includes the commands \Mathastext and +\MTDeclareVersion. + +Once such a |math versions| has been defined in the preamble, +\MTversion|{name_of_version}|, or equivalently +\Mathastextversion|{name_of_version}|, enacts the font switches when +encountered in the body of the document. As is usual with \LaTeX{} one can +limit the scope to inside a group, or also switch back to the main +set-up via \cs{Mathastextversion\{normal\}}. + +When \Mathastext is used in the preamble, it records the current text font +defaults (\cs{familydefault} et al.\@ or what has been configured by +\MTfamily and similar commands) and (except for the |normal| and |bold| +versions if in subdued regime) sets up \emph{both} the math font and the +text font in the defined \mst-math version to be this text font. +% +It is still possible to switch on via \MTversion in the document body + distinct fonts for text and math: an optional argument (the name of another + \mst-declared math version) to \cs{MTversion} is allowed (such as for + example \cs{MTversion[newcent]\{helvet\}} for one of the examples of the + \autoref{sec:examples}). It instructs to use as text font the font which was + configured to be used in this second \mst-math version.% +% +\footnote{When not using math versions at all (so not using \texttt{subdued} +mode either) another way to achieve distinct fonts in text and math is +naturally to modify the document text font \emph{after} having loaded \mst (or +after last usage of \cs{Mathastext} without optional argument). +Another way is to use \cs{MTfamily}, \cs{MTencoding}, \cs{MTseries}, +\cs{MTshape}, \cs{MTlettershape} in the preamble before a call to +\cs{Mathastext} which will configure math fonts without having modified the +document text fonts. However if one does \texttt{\string\MTversion\{normal\}} +in the document then the text font will be reset to what was recorded as math +font by the \cs{Mathastext} call in the preamble (as said above, when not +using \texttt{subdued} option).} + +The native \LaTeX{} command \cs{mathversion}\marg{version\_name} would change +only the fonts for the math mode, not the text mode fonts. It is important to +use rather the package command \csb{MTversion} (or one of its synonyms +\cs{mathastextversion}, \cs{Mathastextversion}, \cs{MTVersion}), with its +mandatory argument \marg{version\_name}, as it does additional actions: \begin{itemize} \item it sets the font for math mode (letters, math operator names, digits, punctuations, some other symbols) according to the version name given as @@ -2259,14 +2726,14 @@ mode. It is important to use rather the package command \item it resets the text font of the document and the |\(family,rm,sf,...)default|s to their values as registered at the time of definition of the version. \emph{Use the starred variant in case this is not - desired.} It is possible to also specify within brackets an extra optional + desired.} As explained above tt is possible to specify within brackets an extra optional version name, and the text font will be set according to it. \end{itemize} For all math versions if not using the subdued option, or only for the non-\emph{normal} and non-\emph{bold} math versions if using the subdued option, \cs{MTversion} does further additional tasks: \begin{itemize} -\item it resets\RLNote{NEW FEATURE!}{1.3u} the \hbar, \cs{imath} +\item it resets\RightNote{1.3u} the \hbar, \cs{imath} (see \inodot), \cs{jmath}, math accents (see option mathaccents) and minus sign as en dash according to the used font encoding for the \mst-ified text font, @@ -2312,6 +2779,378 @@ package option LGRgreek and the command \cs{usepackage}|{epigrafica}| followed with |\usepackage[LGRgreek]{mathastext}|. +\subsection{Greek letters} + +\subsubsection{The Greek-related options} + +The Computer Modern fonts are very light and thin in comparison +to many text fonts, and as a result rarely mix +well with them (particularly if the Latin letters in +math mode are upright). The following options are +provided by \mst: +\begin{description} +\item[no option:] nothing is done by the + package, Greek letters are the default Computer + Modern ones or have been set-up by other packages; + for example by the |fourier| package with option + `upright', which gives upright Greek letters. +\item[LGRgreek:] (this was substantially updated at |1.3x|, make sure to + read the new documentation at \autoref{sec:newgreek}) + this option is for fonts which additionally to Latin + letters also provide Greek letters in |LGR| encoding. Here is + a list from a 2012 standard \TeX{} installation: the Computer + Modern, Latin Modern, and the CM-LGC fonts; the Greek Font + Society fonts (such as GFS Didot), the epigrafica and kerkis + packages, the txfontsb package which extends the txfonts + package with LGR-encoded Greek letters; the Droid fonts, the + DejaVu fonts, the Comfortaa font, and the Open Sans font. The + |LGR| encoded |CM/LM| fonts (in serif, sans-serif and typewriter + family) give the nice Greek letters in upright shape from the + |cbfonts| package. To get these letters in your \mst math + mode, you can do the following: +\begin{verbatim} +% instructions to load the document fonts: +\usepackage{nice_font} +% and then the following: +\renewcommand{\familydefault}{cmr} % or cmss or cmtt for sans resp. mono +\usepackage[LGRgreek]{mathastext} +\renewcommand{\familydefault}{\rmdefault} +\Mathastext % this re-initializes mathastext with the nice_font, +% without changing the LGR font cmr/cmss/cmtt used for Greek letters +% in math mode. +\begin{document} +\end{verbatim} + If you use the italic option note that the italic Greek + letters from the |cbfonts| are not the same glyphs as + the default Greek letters from the |OML| encoded font |cmmi|. +\item[eulergreek:] the Greek letters will be taken from the Euler font (the + document does not have to load the eulervm package, \mst directly uses + some file included in this package, as it provides a mechanism to scale + by an arbitrary factor the Euler font.) The letters are upright. +\item[symbolgreek:] the Greek letters will be taken + from the (Adobe Postscript) Symbol font. A command is provided + so that the user can scale the Symbol font to let it + better fit with the text font. The letters are upright. +\item[selfGreek:] this option concerns only the eleven Greek + capitals from the |OT1|-encoding. It does nothing for the + lowercase Greek letters. The encoding used in the document does + not have to be |OT1|. +\end{description} + +There is also LGRgreeks which tells \mst to pick up in each math +version the letters from the |LGR| encoded font used in that version, +and selfGreeks to tell \mst to do as for selfGreek but +separately in all math versions. + +Under the subdued option the Greek letters in the normal and bold math +versions are kept to their defaults as found at the time of loading the +package. + +The commands \MTstandardgreek allow at any point +in the document to turn inactive any Greek related option passed to \mst. And +conversely \MTcustomgreek reactivates it. + + +\subsubsection{Shape of Greek letters} + +Classic \TeX{} uses in math mode italic lowercase and +upright uppercase Greek letters. French typography uses +upright shape for both lowercase and uppercase. And the +ISO standard is to use italic shape for both lowercase +and uppercase. + +The Euler and Symbol fonts not being available in other than their +default upright shape, this question of shapes for Greek letters +raises issues only in the case of the options LGRgreek and +selfGreek. + +The options frenchmath, itgreek, upgreek, itGreek and upGreek +modify the Greek letter shapes according to the following rules, listed +from the lowest to the highest priority: +\begin{description} +\item[no option:] the lowercase Greek letters are in the same shape as + Latin letters, and the uppercase in the same shape as is applied to digits + and operator names, +\item[frenchmath:] both lowercase and uppercase are in the same shape as + the digits and operator names (most of the time this means ``upright + shape'', but it can be otherwise), +\item[itgreek]: says that Greek letters (both lowercase and uppercase) will + be in `|it|' shape. \RLNote{changed:}{1.3x}More precisely the expansion of + \MTgreekitdefault is used. + + This was changed at |1.3x|, formerly the value of \cs{itdefault} which was in + force at the time of using \Mathastext (or at time of loading the package + if no use is made of \Mathastext) was used. +\item[upgreek]: says that Greek letters (both lowercase and uppercase) will + be in `|n|' shape. \RLNote{changed:}{1.3x}More precisely the expansion of + \MTgreekupdefault is used. + + This was changed at |1.3x|, formerly the value of \cs{updefault} which was in + force at the time of using \Mathastext (or at time of loading the package + if no use is made of \Mathastext) was used. But since \LaTeX{} + |2020-02-02| this caused many Font Warnings in the log because + \cs{updefault} is now `|up|', not `|n|' as formerly. +\item[itGreek, upGreek:] same but they apply only to the uppercase Greek + letters. Their effect is computed after having taken into account either + itgreek or upgreek presence. +\end{description} + +So, the default gives the classic \TeX{} behavior when option italic +was passed. Each call to \cs{Mathastext} (or \cs{MathastextWillUse}) +macros (described in a later section) reinitializes the computation of +the shapes. + +The commands \MTitgreek, \MTupgreek, \MTitGreek and \MTupGreek were +added at |1.15c|, they act like the options with the analogous names, as if +these options were activated only at time of use of these commands in the +preamble, prior to some \Mathastext, or +\Mathastext\oarg{math\_version}, or \MTDeclareVersion. + +\begin{framed} + These commands have some effect only if one of the LGRgreek, LGRgreeks, + selfGreek or selfGreeks options was passed to the package. + + Once anyone of these commands has been made use of, changes in the shape + configuration of the Latin letters for new math versions (or prior to using + \Mathastext to redefine the default configuration) via \MTlettershape, + or to the shape of letters of operator names via \MTshape (or via the + arguments of \MTDeclareVersion), will stop being kept in sync with the + shape of the Greek letters. The shape of the Greek letters will respond + only to the way \mst-math versions (or default behaviour if using + \Mathastext in the preamble) are subsequently re-configured via usage of + the \MTitgreek, \MTupgreek, \MTitGreek and \MTupGreek commands in + the preamble. +\end{framed} + +As mentioned already the package allows to define various ``math +versions''. In the case of eulergreek or symbolgreek they apply +to all these versions. In the case of the options LGRgreeks or +selfGreeks (notice the additional ``s''), each math version is +assumed to have its text font available in |LGR| (or |OT1| +encoding) and also the shapes will be local to the math version. + +Finally version |1.15c| of \mst introduces new preamble-only +commands to change the shapes, and even the font, used for Greek +letters, in case of package options LGRgreek/selfGreek. They +are \MTitgreek, \MTupgreek, \MTitGreek, \MTupGreek: these +are used like the options and change only the shapes for the math +versions which will be declared \emph{next} in the preamble; and +\MTgreekfont|{name_of_font}| will tell the \emph{next} math +versions to use that font family. To use this command you need to +know the (little) name of a suitable font family available in |LGR| +encoding: for example |lmr|, |txr| (needs |txfontsb| +package on your system), |DejaVuSerif-TLF| (needs |dejavu| package +on your system), etc\dots + +\subsubsection{New with \texttt{1.3x}: alphabets \cs{mathgreekup} and + \cs{mathgreekit}, control sequences to access directly upright or italic + Greek letters} +\label{sec:newgreek} + +Some changes were made at |1.3x| to enhance the LGRgreek (and LGRgreeks) +options with new features. Everything which will be explained here applies +only to these two options. + +First of all the package now makes available control sequences to access +either the upright or italic shape of the Greek letters. Which shape is meant +by `upright' or `italic' is configured via defining \MTgreekupdefault and +\MTgreekitdefault respectively. Their default definitions are to expand to +`|n|' and `|it|' respectively. + +See\RLNote{new:}{1.3x} the \autoref{table:greekup} and \autoref{table:greekit} +for illustrations (using here the Libertinus Serif font). +\begin{table}[htbp] +\MTversion{libertinus} +\begin{framed} +\begin{multicols}{4} +\noindent +\string\Alphaup\ $\Alphaup$\\ +\string\Betaup\ $\Betaup$\\ +\string\Gammaup\ $\Gammaup$\\ +\string\Deltaup\ $\Deltaup$\\ +\string\Epsilonup\ $\Epsilonup$\\ +\string\Zetaup\ $\Zetaup$\\ +\string\Etaup\ $\Etaup$\\ +\string\Thetaup\ $\Thetaup$\\ +\string\Iotaup\ $\Iotaup$\\ +\string\Kappaup\ $\Kappaup$\\ +\string\Lambdaup\ $\Lambdaup$\\ +\string\Muup\ $\Muup$\\ +\string\Nuup\ $\Nuup$\\ +\string\Xiup\ $\Xiup$\\ +\string\Omicronup\ $\Omicronup$\\ +\string\Piup\ $\Piup$\\ +\string\Rhoup\ $\Rhoup$\\ +\string\Sigmaup\ $\Sigmaup$\\ +\string\Tauup\ $\Tauup$\\ +\string\Upsilonup\ $\Upsilonup$\\ +\string\Phiup\ $\Phiup$\\ +\string\Chiup\ $\Chiup$\\ +\string\Psiup\ $\Psiup$\\ +\string\Omegaup\ $\Omegaup$\\ +\string\Digammaup\ $\Digammaup$\\ +% \columnbreak ne fonctionne pas comme espr +\mbox{}\\ +\string\alphaup\ $\alphaup$\\ +\string\betaup\ $\betaup$\\ +\string\gammaup\ $\gammaup$\\ +\string\deltaup\ $\deltaup$\\ +\string\epsilonup\ $\epsilonup$\\ +\string\zetaup\ $\zetaup$\\ +\string\etaup\ $\etaup$\\ +\string\thetaup\ $\thetaup$\\ +\string\iotaup\ $\iotaup$\\ +\string\kappaup\ $\kappaup$\\ +\string\lambdaup\ $\lambdaup$\\ +\string\muup\ $\muup$\\ +\string\nuup\ $\nuup$\\ +\string\xiup\ $\xiup$\\ +\string\omicronup\ $\omicronup$\\ +\string\piup\ $\piup$\\ +\string\rhoup\ $\rhoup$\\ +\string\sigmaup\ $\sigmaup$\\ +\string\tauup\ $\tauup$\\ +\string\upsilonup\ $\upsilonup$\\ +\string\phiup\ $\phiup$\\ +\string\chiup\ $\chiup$\\ +\string\psiup\ $\psiup$\\ +\string\omegaup\ $\omegaup$\\ +\string\digammaup\ $\digammaup$\\ +\string\varsigmaup\ $\varsigmaup$ +\end{multicols} +\end{framed} +% il y a bien sr d'horribles espacement verticaux typiques de LaTeX +\vspace*{-\baselineskip} +\caption{Greek letters via `up' control sequences (math mode only)} +\label{table:greekup} +\end{table} +\begin{table}[htbp] +\MTversion{libertinus} +\begin{framed} +\begin{multicols}{4} +\noindent +\string\Alphait\ $\Alphait$\\ +\string\Betait\ $\Betait$\\ +\string\Gammait\ $\Gammait$\\ +\string\Deltait\ $\Deltait$\\ +\string\Epsilonit\ $\Epsilonit$\\ +\string\Zetait\ $\Zetait$\\ +\string\Etait\ $\Etait$\\ +\string\Thetait\ $\Thetait$\\ +\string\Iotait\ $\Iotait$\\ +\string\Kappait\ $\Kappait$\\ +\string\Lambdait\ $\Lambdait$\\ +\string\Muit\ $\Muit$\\ +\string\Nuit\ $\Nuit$\\ +\string\Xiit\ $\Xiit$\\ +\string\Omicronit\ $\Omicronit$\\ +\string\Piit\ $\Piit$\\ +\string\Rhoit\ $\Rhoit$\\ +\string\Sigmait\ $\Sigmait$\\ +\string\Tauit\ $\Tauit$\\ +\string\Upsilonit\ $\Upsilonit$\\ +\string\Phiit\ $\Phiit$\\ +\string\Chiit\ $\Chiit$\\ +\string\Psiit\ $\Psiit$\\ +\string\Omegait\ $\Omegait$\\ +\string\Digammait\ $\Digammait$\\ +% \columnbreak ne fonctionne pas comme espr +\mbox{}\\ +\string\alphait\ $\alphait$\\ +\string\betait\ $\betait$\\ +\string\gammait\ $\gammait$\\ +\string\deltait\ $\deltait$\\ +\string\epsilonit\ $\epsilonit$\\ +\string\zetait\ $\zetait$\\ +\string\etait\ $\etait$\\ +\string\thetait\ $\thetait$\\ +\string\iotait\ $\iotait$\\ +\string\kappait\ $\kappait$\\ +\string\lambdait\ $\lambdait$\\ +\string\muit\ $\muit$\\ +\string\nuit\ $\nuit$\\ +\string\xiit\ $\xiit$\\ +\string\omicronit\ $\omicronit$\\ +\string\piit\ $\piit$\\ +\string\rhoit\ $\rhoit$\\ +\string\sigmait\ $\sigmait$\\ +\string\tauit\ $\tauit$\\ +\string\upsilonit\ $\upsilonit$\\ +\string\phiit\ $\phiit$\\ +\string\chiit\ $\chiit$\\ +\string\psiit\ $\psiit$\\ +\string\omegait\ $\omegait$\\ +\string\digammait\ $\digammait$\\ +\string\varsigmait\ $\varsigmait$ +\end{multicols} +\end{framed} +% il y a bien sr d'horribles espacement verticaux typiques de LaTeX +\vspace*{-\baselineskip} +\caption{Greek letters via `it' control sequences (math mode only)} +\label{table:greekit} +\end{table} + +% % dplacer +% These commands can be defined prior to loading the package, +% which spares one to have to issue them after then issue \Mathastext +% (assuming here we are using a single \mst configuration for the whole document). + +The regular control sequences without `|up|' or `|it|' postfix will map to +either one of the two versions according to how the shapes were configured, +i.e.\@ in almost all cases via usage of either the itgreek, upgreek, +etc\dots\ options or \MTitgreek et al.\@ commands. This is on a per \mst-enriched +math version basis, depending only on how the options or commands were used +in the preamble. + +Furthermore\RLNote{new:}{1.3x} two math alphabets are provided +\centeredline{\mathgreekup} +\centeredline{\mathgreekit} +which can be used to map a letter to the corresponding Greek fonts. +For example (using here the semi-bold LGR encoded |LibertinusSerif-TLF|, which +was stored as a \mst-enriched math version with name |libertinussemibold|): +{\MTversion{libertinussemibold} +\centeredline{|$\mathgreekup{a}=\mathgreekup{\alpha}=\mathgreekup{\alphait}=\alphaup$|} +\centeredline{$\mathgreekup{a}=\mathgreekup{\alpha}=\mathgreekup{\alphait}=\alphaup$} +\centeredline{|$\mathgreekup{G}=\mathgreekup{\Gamma}=\mathgreekup{\Gammait}=\Gammaup$|} +\centeredline{$\mathgreekup{G}=\mathgreekup{\Gamma}=\mathgreekup{\Gammait}=\Gammaup$} +\centeredline{|$\mathgreekit{z}=\mathgreekit{\zeta}=\mathgreekit{\zetaup}=\zetait$|} +\centeredline{$\mathgreekit{z}=\mathgreekit{\zeta}=\mathgreekit{\zetaup}=\zetait$} +\centeredline{|$\mathgreekit{W}=\mathgreekit{\Omega}=\mathgreekit{\Omegaup}=\Omegait$|} +\centeredline{$\mathgreekit{W}=\mathgreekit{\Omega}=\mathgreekit{\Omegaup}=\Omegait$} +} + +Some\RLNote{changed!}{1.3x} refactoring% +% +\footnote{Technically, formerly two symbol fonts were declared, one for the + lowercase Greek letters and one for the uppercase Greek letters; now those + are dropped and replaced by two symbol fonts, one for `italic' Greek letters, + the other for `upright' Greek letters.} +% +was required to achieve this at |1.3x| +and it is not 100\% backwards compatible: if none of the itgreek etc\dots\ +things was used, the Greek letters formerly would follow the shape of Latin +letters (for lowercase Greek) and of operator names (for uppercase Greek). +Now, some check is made for each of these two shapes whether it is `|it|' or +`|sl|' and then the `italic' shape, i.e.\@ \MTgreekitdefault +which by default is `|it|' (without the quotes) is used, else the `upright' +shape, i.e.\@ \MTgreekupdefault which by default expands to `|n|' +(without the quotes) is used. Naturally these checks are +done on a per \mst-math version basis, if multiple math versions are used. + +So for example those who used some adventurous `|sc|' for the main shape (the +one used per default for operator names) and used the option LGRgreek but +none of the itgreek et al.\@ options, and none of the \MTitgreek et +al.\@ commands, now will need to adjust \MTgreekupdefault to expand to +`|sc|' prior to some \Mathastext or \Mathastext\oarg{version\_name} or +\MTDeclareVersion in the preamble depending on context. + +It is hoped most documents, even those using multiple math versions, which +made use of the LGRgreek (or LGRgreeks) option will simply produce +unmodified output. Please report to the author unexpected results not fitting +the above attempted description of the only partial backwards +compatibility. + + \subsection{Extra spaces around letters} \label{sec:mathskips} @@ -2547,7 +3386,7 @@ to preserve this behavior). \addtocounter{footnote}{1}% \let\Hy@footnote@currentHref\saved@Href@B % -\footnotetext{\CHANGED{1.3i}Formerly, italic corrections were added to the +\footnotetext{\RightNote{1.3i}Formerly, italic corrections were added to the \cs{mathnormal} arguments.} \makeatother @@ -2578,10 +3417,13 @@ $\mathit{f_i^i}$\par $\mathrm{f_i^i}$ three outputs are different on my \TeX{} installation. \XeTeX{} does not have the italic corrections. \LuaLaTeX{} does, but only for the italic font. pdf\LaTeX{} has them for both the italic and the upright font.% -\footnotemark } +\footnotemark} +%\tracingmacros1 % pour extraire le -0.5em du code de scrartcl... +\footnotetext {2016/11/04: the situation hasn't changed, +at least on current TL2016. -\footnotetext {2016/11/04: the situation hasn't changed a iota since, -at least on current TL2016.} +\noindent\kern-0.5em\relax2022/10/29: no change with current TL2022.} +%\tracingmacros0 % For more see % \url{http://tex.stackexchange.com/a/337076} which explores also the differences @@ -2639,7 +3481,7 @@ version (either at the start of the document body after \cs{boldmath}, or after |\MTversion{bold}|) do not have any extra skip inserted (even one of zero width) after $\oldforall$, $ \oldexists$, or before the ${}'$.% % -\footnote{\CHANGED{1.3j}Formerly, skips of zero widths were inserted.} +\footnote{\RightNote{1.3j}Formerly, skips of zero widths were inserted.} \endgroup @@ -2679,16 +3521,20 @@ A revolutionary\RightNote{1.2} ;-) novelty is introduced with version |1.2| of t \mst, \emph{i.e.}, if not disabled by options, ${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\,{[}\,{]}\,{<}\,{>}\,{\{}\,{\}}$, the asterisk $*$, and - $.\,/\,\vert\,\backslash\,{\#}\,{\$}\,{\%}\,{\&}$\footnote{% - ${\#}\,{\$}\,{\%}\,{\&}$ - obey the math alphabets since the initial version of \mst; the dot - $.$, the slash $/$, the vertical bar $\vert$ and the backslash - $\backslash$ do not have specific spacings inserted by \TeX{} around - them, and the procedure is then not a devilish one, this is why it - is made the default for these characters which are listed apart. The - math symbols \cs{mid} (which is $\vert$ with type \cs{mathrel}) and - \cs{setminus} ($\backslash$ with type \cs{mathbin}) are counted - among the `difficult' cases, not the `easy non-letters'.} will also obey + $.\,/\,\vert\,\backslash\,{\#}\,{\$}\,{\%}\,{\&}$% +% +\footnote{% + ${\#}\,{\$}\,{\%}\,{\&}$ obey the math alphabets since the initial version + of \mst; the dot $.$, the slash $/$, the vertical bar $\vert$ and the + backslash $\backslash$ do not have specific spacings inserted by \TeX{} + around them, and the procedure is then activated by default since + \texttt{1.2} for these characters as they are `easy non-letters'. But for + \cs{mid} and \cs{setminus} which are $\vert$ and $\backslash$ with special + spacing (of type \cs{mathrel} and \cs{mathbin} resp.) the procedure has + some constraints explained in the framed box on next page and the + activation requires \cs{MTnonlettersobeymathxx}.} +% +will also obey the math alphabet commands (when not used as delimiters). The important thing is that the spaces added by \TeX{} before and after are not modified. @@ -2712,19 +3558,23 @@ other packages), and also for $*$ but only if this was required explicitly by the option asterisk, as the user then is supposed to know that |$R^*$| is no valid input anymore and should be replaced by |$R^{*}$|. The remaining `difficult' cases create similar -constraints, which will be commented more upon next. The relevant commands are\\ -\mbox{}\hspace{2cm}\csb{MTmathoperatorsdonotobeymathxx}\\ -\mbox{}\hspace{2cm}\csb{MTnonlettersdonotobeymathxx}\\ -\mbox{}\hspace{2cm}\csb{MTeasynonlettersdonotobeymathxx}\\ -for deactivation and \\ -\mbox{}\hspace{2cm}\csb{MTmathoperatorsobeymathxx}\\ -\mbox{}\hspace{2cm}\csb{MTnonlettersobeymathxx}\\ -\mbox{}\hspace{2cm}\csb{MTeasynonlettersobeymathxx}\\ -for activation.\footnote{these commands are to be used outside of math mode. +constraints, which will be commented more upon next. The commands% +\footnote{these commands are to be used outside of math mode. Their scope is limited to the current \LaTeX{} environment or group. They use the \cs{everymath} and \cs{everydisplay} mechanism so if the document needs to modify these token lists it has to do so in a responsible manner, extending not annihilating their previous contents.} +% +for deactivation are:\\ +\mbox{}\hspace{1cm}\csb{MTmathoperatorsdonotobeymathxx},\\ +\mbox{}\hspace{1cm}\csb{MTeasynonlettersdonotobeymathxx},\\ +\mbox{}\hspace{1cm}\csb{MTnonlettersdonotobeymathxx},\\ +and those for activation:\\ +\mbox{}\hspace{1cm}\csb{MTmathoperatorsobeymathxx} regards operator names and is executed by default,\\ +\mbox{}\hspace{1cm}\csb{MTeasynonlettersobeymathxx} is done by default and applies to \centeredline{${\#}\,{\$}\,{\%}\,{\&}\,.\,/\,\vert\,\backslash$} and also to $*$ under package option asterisk,\\ +\mbox{}\hspace{1cm}\csb{MTnonlettersobeymathxx} is \emph{not} done by default (see explanations why in the framed box next) and regards \centeredline{${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\,{[}\,{]}\,{<}\,{>}$} and also \cs{mid} and \cs{setminus} but applies to +the braces ${\{}\,{\}}$ only if \csb{MTexplicitbracesobeymathxx} is also used.\par +% %% suppression de cette note de bas de page 1.3u car elle est obsolte %% (pas sr si 100%, mais en tout cas l'exemple avec \mathbf{-} n'a plus %% de problme. @@ -2775,7 +3625,7 @@ $\mathsf{\{a, a>b\}}$, or even $\mathnormalbold{\{a, a>b\}}$.\footnote{this Even with \csb{MTnonlettersobeymathxx}, the parenthese-like symbols $($, $)$, $[$, $]$, $<$ and $>$ and the slashes $/$, $\backslash$, \emph{if used as - left/right delimiters} (i.e. with |\left/\right|) do not react to math + left/right delimiters} (i.e.\@ with |\left/\right|) do not react to math alphabet commands. This is mainly explained by the fact that the text font will not contain suitable glyphs, hence no attempt was made to make the delimiters pick up their glyphs there. @@ -2811,162 +3661,56 @@ For comparison, the \LaTeX{} standard behavior for is $\mathbf{\mathopen{<} a,b \mathclose{>}}$ (neither brackets nor the comma do respond). -\subsection{Greek letters} - -The Computer Modern fonts are very light and thin in comparison -to many text fonts, and as a result rarely mix -well with them (particularly if the Latin letters in -math mode are upright). The following options are -provided by \mst: -\begin{description} -\item[no option:] nothing is done by the - package, Greek letters are the default Computer - Modern ones or have been set-up by other packages; - for example by the |fourier| package with option - `upright', which gives upright Greek letters. -\item[LGRgreek:] this is for fonts which additionally to Latin - letters also provide Greek letters in |LGR| encoding. Here is - a list from a 2012 standard \TeX{} installation: the Computer - Modern, Latin Modern, and the CM-LGC fonts; the Greek Font - Society fonts (such as GFS Didot), the epigrafica and kerkis - packages, the txfontsb package which extends the txfonts - package with LGR-encoded Greek letters; the Droid fonts, the - DejaVu fonts, the Comfortaa font, and the Open Sans font. The - |LGR| encoded |CM/LM| fonts (in serif, sans-serif and typewriter - family) give the nice Greek letters in upright shape from the - |cbfonts| package. To get these letters in your \mst math - mode, you can do the following: -\begin{verbatim} -% instructions to load the document fonts: -\usepackage{nice_font} -% and then the following: -\renewcommand{\familydefault}{cmr} % or cmss or cmtt for sans resp. mono -\usepackage[LGRgreek]{mathastext} -\renewcommand{\familydefault}{\rmdefault} -\Mathastext % this re-initializes mathastext with the nice_font, -% without changing the LGR font cmr/cmss/cmtt used for Greek letters -% in math mode. -\begin{document} -\end{verbatim} - If you use the italic option note that the italic Greek - letters from the |cbfonts| are not the same glyphs as - the default Greek letters from the |OML| encoded font |cmmi|. -\item[eulergreek:] the Greek letters will be taken from the Euler font (the - document does not have to load the eulervm package, \mst directly uses - some file included in this package, as it provides a mechanism to scale - by an arbitrary factor the Euler font.) The letters are upright. -\item[symbolgreek:] the Greek letters will be taken - from the (Adobe Postscript) Symbol font. A command is provided - so that the user can scale the Symbol font to let it - better fit with the text font. The letters are upright. -\item[selfGreek:] this option concerns only the eleven Greek - capitals from the |OT1|-encoding. It does nothing for the - lowercase Greek letters. The encoding used in the document does - not have to be |OT1|. -\end{description} - -There is also LGRgreeks which tells \mst to pick up in each math -version the letters from the |LGR| encoded font used in that version, -and selfGreeks to tell \mst to do as for selfGreek but -separately in all math versions. - -Under the subdued option the Greek letters in the normal and bold math -versions are kept to their defaults as found at the time of loading the -package. - -The commands \MTstandardgreek allow at any point -in the document to turn inactive any Greek related option passed to \mst. And -conversely \MTcustomgreek reactivates it. - - -\subsubsection{Shape of Greek letters} - -Classic \TeX{} uses in math mode italic lowercase and -upright uppercase Greek letters. French typography uses -upright shape for both lowercase and uppercase. And the -ISO standard is to use italic shape for both lowercase -and uppercase. - -The Euler and Symbol fonts not being available in other than their -default upright shape, this question of shapes for Greek letters -raises issues only in the case of the options LGRgreek and -selfGreek. - -The options frenchmath, itgreek, upgreek, itGreek and upGreek -modify the Greek letter shapes according to the following rules, listed -from the lowest to the highest priority: -\begin{description} -\item[no option:] the lowercase Greek letters are in the same shape as - Latin letters, and the uppercase in the same shape as applied to digits - and operator names, -\item[frenchmath:] both lowercase and uppercase are in the same shape as - the digits and operator names (most of the time this means ``upright - shape'', but it can be otherwise), -\item[itgreek, upgreek:] both lowercase and uppercase are in the - \cs{itdefault}, respectively the \cs{updefault} shape (at the time of - loading the package or at the time of a subsequent call to - \cs{Mathastext} or \cs{MathastextWillUse}), -\item[itGreek, upGreek:] same as above, but only for the uppercase - letters. -\end{description} - -So, the default gives the classic \TeX{} behavior when option italic -was passed. Each call to \cs{Mathastext} (or \cs{MathastextWillUse}) -macros (described in a later section) reinitializes the computation of -the shapes. - -As mentioned already the package allows to define various ``math -versions''. In the case of eulergreek or symbolgreek they apply -to all these versions. In the case of the options LGRgreeks or -selfGreeks (notice the additional ``s''), each math version is -assumed to have its text font available in |LGR| (or |OT1| -encoding) and also the shapes will be local to the math version. - -Finally version |1.15c| of \mst introduces new preamble-only -commands to change the shapes, and even the font, used for Greek -letters, in case of package options LGRgreek/selfGreek. They -are \MTitgreek, \MTupgreek, \MTitGreek, \MTupGreek: these -are used like the options and change only the shapes for the math -versions which will be declared \emph{next} in the preamble; and -\MTgreekfont|{name_of_font}| will tell the \emph{next} math -versions to use that font family. To use this command you need to -know the (little) name of a suitable font family available in |LGR| -encoding: for example |lmr|, |txr| (needs |txfontsb| -package on your system), |DejaVuSerif-TLF| (needs |dejavu| package -on your system), etc\dots - -\enlargethispage{\baselineskip} \subsection{Unicode engines} \mst is minimally Unicode aware since |1.12| and can be used with \XeTeX{} or -\LuaLaTeX{}. Starting with release |1.3|, it needs |luatex| to be at least +\LuaTeX{}. Starting with release |1.3|, it needs |luatex| to be at least as recent as the one which was provided with the TL2013 distribution. -\subsubsection{Caveat emptor} +However \mst applies only to (a subset of) the |32-127| ascii range, and +optionally to Greek letters, but for the latter only if provided via ``\TeX\ +fonts'' such as Euler, Symbol or LGR-encoded fonts. +It does not know how to use a given Unicode font simultaneously for Latin and +Greek letters. -With \XeTeX{} the user is strongly advised to first consider using the -|mathspec| package, which is designed for Unicode, with a key-value interface. -With both \XeTeX{} and \LuaLaTeX{}, |unicode-math| is recommended for OpenType -math fonts. +Thus, first consider much better alternatives: +\begin{itemize} +\item Since 2018, the package |mathfont|% +% +\footnote{Conrad \textsc{Kosowsky}, \emph{Use TrueType and OpenType fonts in math mode} +\url{https://ctan.org/pkg/mathfont}.} +% +adapts Unicode text fonts to usage in math mode. It works with both \XeTeX\ +and \LuaTeX. +\item For \XeTeX\ only, |mathspec|% +% +\footnote{Andrew Gilbert \textsc{Moschou}, \emph{Specify arbitrary fonts for mathematics in \XeTeX} +\url{https://ctan.org/pkg/mathspec}.} +% +also allows usage of arbitrary text fonts in mathematics. +\item and of course +|unicode-math|% +% +\footnote{Will \textsc{Robertson}, et al., \emph{Unicode mathematics with + support for XeTeX and LuaTeX} \url{https://ctan.org/pkg/unicode-math}.} +% +is the standard package for using OpenType fonts which are equipped with the needed extra +support being used in \TeX\ math mode. +\end{itemize} -Particularly in the latter case (\emph{i.e.} using |unicode-math|) you probably don't need, don't want, and should -not use \mst: it is extremely far from being able to define a math font, as it -applies basically only to a subset of the |32-127| ascii range, and in particular -it does not know how to use a given Unicode font simultaneously for Latin and -Greek letters. Again the user is strongly advised to look at |mathspec| and -|unicode-math|. +If using any one of the above you probably don't need, don't want, and should +not use \mst. -Let me point out explicitly that \mst has not been tested in any systematic +Let me insist that \mst has not been tested in any systematic manner under the Unicode engines; and that it is expected to be most definitely incompatible with |unicode-math|, although your mileage may vary and some features may appear to work. -When using \mst with either \XeTeX{} or \LuaLaTeX{} it is recommended to use -the |fontspec| package (see remark below on \cs{encodingdefault}). -Furthermore, it is \emph{necessary} to load |fontspec| with its |no-math| -option, and this \emph{must} happen before loading \mst. - +When using \mst with either \XeTeX{} or \LuaTeX{} it is recommended to use the +|fontspec| package (see remark below on \cs{encodingdefault}). Furthermore, +if using |fontspec| it is \emph{necessary} to load it with its +|no-math| option, and this \emph{must} happen before loading \mst. \begin{framed} \begin{itemize}[label=$\bullet$, leftmargin=1em] \item @@ -2980,9 +3724,9 @@ option, and this \emph{must} happen before loading \mst. The |amsmath| package, if used, \emph{must} be loaded \emph{prior} to \mst. \item - Under |lualatex| engine, it has long been recommended to also load the package - |lualatex-math|. Please check its documentation as possibly it has now - been incorporated upstream (I am not following up on the situation). + Under |lualatex| engine, it is recommended to also load the package + |lualatex-math|.% Please check its documentation as possibly it has now + % been incorporated upstream (I am not following up on the situation). \end{itemize} \end{framed} @@ -2997,7 +3741,7 @@ option, and this \emph{must} happen before loading \mst. I already mentioned in the section \ref{sec:ic} the fact that the italic corrections were not available for OpenType fonts under the \XeTeX{} engine and only partially available for the -\LuaLaTeX{} engine, with the result that the spacings in math +\LuaTeX{} engine, with the result that the spacings in math mode when using for the letters an upright text font will be less satisfying than with the standard PDF\TeX{} engine (the OpenType fonts not being usable with the latter engine, this is @@ -3020,7 +3764,7 @@ There is now the unicodeminus\RightNote{1.3q} to use rather % BORDEL DE BORDEL DE FAIT CHIER \verb ET Text for \verb command ended by end % of line. je l'ai patch dans etoc et xint mais pas ici encore. |MINUS SIGN U+2212|.% -\footnote{Thanks to \textsc{Tobias~Brink} who asked for this feature.} +\footnote{Thanks to Tobias~\textsc{Brink} who asked for this feature.} % Check \hyperref[nicodeminus]{\ttfamily\hyphenchar\font=189 its documentation} on page \pageref{nicodeminus}. @@ -3214,248 +3958,6 @@ the character was mathematically active remained true). is better to turn \mst off for their dealings. \end{framed} -\section{Package options and commands} - -\subsection{Summary of main options} - \begin{description} -\item[{italic, frenchmath}:] italic letters in -math, upright uppercase if frenchmath. - \item[{subdued}:] acts in a subdued way. The \LaTeX{} normal and bold - math versions are left (quasi) unchanged. With version |1.15e| of - the package this statement applies also to the math alphabets - \cs{mathbf}, \cs{mathit}, \cs{mathsf}, and \cs{mathtt} (and not - only to \cs{mathnormal} and \cs{mathrm} as in previous versions.) -\item[{LGRgreek, eulergreek, symbolgreek}:] the - Greek letters will be taken, respectively from the - text font itself (in |LGR| encoding), or from the Euler - font, or from the Postscript Symbol font. -\item[{symbolmax}:] all characters - other than letters and digits, are taken from the - Symbol font. This option also makes a number of - further glyphs available, such as some basic - mathematical arrows, and the sum and product - signs. For documents with very simple needs in - mathematical symbols, \mst with option - symbolmax may give in the end a PDF file quite - smaller than the one one would get without the - package. -\item[{defaultmathsizes}:] \mst sets up bigger sizes -for subscripts (it also copies code from the |moresize| package to redefine - \cs{Huge} and define \cs{HUGE}). Use this option to prevent it from - doing so. -\item[{defaultalphabets}:] by default, \mst redeclares the math - alphabets \cs{mathrm}, \cs{mathit}, \cs{mathtt} etc\dots{} (but not - \cs{mathcal} of course) to refer to the current document text fonts (at the - time of loading the package and in each \mst math version). Use - this option to prevent it from doing so (each alphabet also has - its own disabling option). -\end{description} - -\subsection{Miscellaneous} - -\begin{description} -\item[the en-dash as minus sign:] very often the - - character from the text font does not give a good - minus sign. So by default, the package uses the - en-dash sign \textendash{}. Use noendash to - deactivate it. Starting with version |1.12| of the - package this `en-dash as minus' should work in all - encodings, including Unicode (if |fontspec| has been - loaded); see also |unicodeminus| for OpenType fonts. - -\item[amsmath:] \strut the behaviour of the - \cs{DeclareMathOperator}\RLNote{changed:}{1.3n} command - of |amsmath| is modified by \mst for it to use the correct font. - Additionally, release |1.3n| of \mst at long last also handles an extra - operation done by |amsmath| for |'.:/-*| to be used in operator names - without the extra math spacing.% -% -\footnote{To the experts: there is a long story here that \cs{newmcodes@} - hardcodes the font, that it was not compatible with Unicode engines, that - during some time (2013-2016) \texttt{lualatex-math} fixed that and very - recently |amsopn.sty 2016/03/08 v2.02| also, so now \texttt{lualatex-math - 1.6} does nothing as it is already fixed ``upstream'' in |amsopn.sty|, but - anyhow in both cases, this still hardcoded the font, so finally \mst does - the right thing from its point of view. See the code comments for more, - there is an issue here with \LuaLaTeX\ not applying the curly right quote - contrarily to \XeLaTeX.} -% -This customization is suppressed in subdued mode for the |normal| and |bold| -math versions. - -\item[hbar:] the default \LaTeX\ definition of \hbar would in our context - make use of the |h| of the current math font (so for us, it is also the text - font, perhaps in italic shape), but with a bar accross the |h| from the - original default math font for letters (usually |cmmi|). We redefine - \cs{hbar} to use the text font macron accent (|\=|) as a mock math accent - (this takes into account the italic option and is compatible with - subscripts and superscripts). - - Since |1.12| \mst when dealing with a Unicode font sets the \cs{hbar} - to be the character from the font having hexadecimal codepoint |U+0127|. - - Since |1.3u| the general 8bits font encoding is - supported\RLNote{changed:}{1.3u} (see discussion of the |mathaccents| option - at end of this list for the shared limitations). Brief testing with - various usual \TeX\ fonts shows that the vertical positioning of - the bar isn't satisfying. It is planned to either add a parameter to - adjust it or to modify altogether the mode of construction of the |\hbar|. - - Use nohbar to tell \mst not do provide its own |\hbar|. - - -\item[dotless i and j:] by default the package redefines \cs{imath} and - \cs{jmath} to give (in math mode) the dotless i and j (if it exists at - all) from the text font.% -% -\footnote{\CHANGED{1.3t}Since \texttt{1.12} it also redefined \cs{i} and - \cs{j} for usability both in text and math modes, but this has been - dropped at \texttt{1.3t}. Breaking change!} - -\item[asterisk:] versions of \mst earlier than |1.2d [2013/01/02]| - did not do anything - with the \cs{ast} control sequence but did pick the asterisk - $*$ in the document text font, and this often was a rather - silly thing as the text asterisk is generally in a raised - position. Furthermore, the $*$ lost its status of a binary - operator and was treated as an `ordinary' symbol. An option - |noasterisk| turned this feature off. Starting with |1.2d|, - the |noasterisk| option is deprecated and the new default is - to do nothing. But when option asterisk is received by the - package, then both \cs{ast} and $*$ are simultaneously - modified to use (as binary operators) the text asterisk, - slightly lowered. The amount of lowering\footnote{with the - option \texttt{symbolmisc}, the asterisk is picked from - the Symbol font, and the amount of lowering is - non-customizable; however if a math alphabet command is - used, the asterisk is then again from a text font and the - lowering will be as specified by \cs{MTlowerast}.} is - decided by the mandatory argument to the command - \csb{MTlowerast}\marg{dimen}. The package initially does - \cs{MTlowerast}|{.3\height}|. Doing \cs{MTlowerast}|{.5ex}| is - not a good idea as it does not scale properly in the script - and scriptscript styles. With an argument given as a - multiple of |\height|, the asterisk will behave as expected - in subscripts and subscripts of subscripts. But $*$ is now - `mathematically active'\thinspace\footnote{in a hopefully - safe way, for example {\ttfamily\$\string\label\{eq*1\}\$} - is ok.} and |$R^*$| or |$R^\ast$| \emph{must} be input as - |$R^{*}$| and |$R^{\ast}$|. Furthermore, they will obey the - math alphabet commands. - -\item[\XeTeX{} and \LuaLaTeX{}:] regarding the en-dash and the - dotless i and j, the package is now under the Unicode engines - compatible not only with the ``Unicode'' \LaTeX\ font encodings - EU1 (\XeTeX, old fontspec), EU2 (\LuaLaTeX, old fontspec), TU - (\XeTeX\ and \LuaLaTeX, modern fontspec), but also with - traditional 8bits-encodings declared as a |fontenc| - option.\RLNote{NEW FEATURE!}{1.3u} Formerly, with a Unicode engine, - only OT1, T1 and LY1 were supported by \mst as the 8bit encoding - of the document text font, regarding the minus as en-dash and - the dotless i and j. - - \item[fontspec:] one more note to users of -\XeTeX{}/\LuaLaTeX{} with |fontspec|:\newline -\fbox{it has to be -loaded {with the option} |no-math|}, -and \emph{before} \mst. - -\item[vec accent:] The default \cs{vec} accent is not - appropriate for upright letters, so \mst - provides a \cs{fouriervec} which takes its glyph in a - Fourier font, and an Ersatz \cs{pmvec} - which is reasonably good looking on upright letters - and works with the \cs{rightarrow} glyph. Contrarily - to version |1.0|, the default \cs{vec} is not - overwritten with \cs{fouriervec}. And contrarily to - version |1.1|, one now needs to pass the option - fouriervec to have the math accent \cs{fouriervec} - defined by the package.% -% -\footnote{this costs a math family, as I never came back to this to try to - do otherwise.} - - -\item[math alphabets:] - \begin{itemize} - \item We define a new math alphabet command - \cs{mathnormalbold} which gives direct access to - the bold version of the \cs{mathnormal} alphabet - (rather than using either the \cs{bm} command from - the |bm| package or the \cs{boldsymbol} command - from the |amsbsy| package). As it does not - exist in the default \LaTeX{} math font set-up, this - alphabet is \emph{not} subjected to the {subdued option} action. - \item The other math alphabet changing commands - defined by the package are \cs{MathEulerBold}, - \cs{MathEuler} and \cs{MathPSymbol}. - \item \cs{mathnormal}, \cs{mathrm}, \cs{mathbf}, - \cs{mathit}, \cs{mathsf} and \cs{mathtt} are modified - to make reference to the document text fonts (this - can be disabled by suitable package options). -\item version |1.2| of \mst has extended the scope of the math - alphabets to apply to non-alphabetical characters and to - operator names. This respects the automatic white spaces - added by \TeX{} around math symbols. -\item the\RightNote{1.3i} - extra skips around letters (see \autoref{sec:mathskips} and - \autoref{sec:ic}) are removed in the scope of the math alphabets. - \end{itemize} - -\item[math accents:] if option mathaccents is used then \mst attempts to let - the math accents |\acute|, |\grave|, etc... use the suitable glyphs from the - text font. Prior to |1.3u| only |OT1|, |T1|, and |LY1| were supported (via - hardcoded slots). It should now work with any 8bits font - encoding\RLNote{NEW FEATURE!}{1.3u} having been declared as an option to the - |fontenc| package (and of course providing the ten needed text accents which - will mock math accents).% - % - \footnote{The code will raise low-level \TeX\ errors if the user attempts to - use an 8bits font encoding whose \LaTeX\ definition file is lacking the - suitable uses of \cs{DeclareTextAccent} or if the low level \LaTeX\ macro - implementation of text accents changes significantly; in such cases please - report the problem to the author, so that it can be documented in future - releases!} - - The |\vec| math accent is not handled here, as it is not available in the - usual 8bits font encodings. See the fouriervec option or the \pmvec - command. - - The math accents obey the subdued option\RLNote{NEW FEATURE!}{1.3u} - and will change in sync with the \mst-ified text font used in - each non subdued math version. - - (Very) brief testing during |1.3u| development with \XeTeX\ and \LuaTeX\ let - the author conclude that usage with the \cs{Umathaccent} primitive of an - OpenType accent glyph slot (which in the text font is for usage as a - postpended combining character) gives definitely bad horizontal placements - for both engines (each in its own way). Thus, the redefinitions of accents - for a \mst declared math version with an OpenType font is by default - canceled.% -% -\footnote{I.e., the \cs{grave} etc... control sequences will, in math versions - with an OpenType \mst-ified font, expand to macros holding their initial - meanings, unmodified by \mst, which was in force at the - |\string\begin\string{document\string}|.} -% - Use unimathaccents to force usage of the OpenType font text - accents glyph slots with the \cs{Umathaccent} primitive. Expert users are - invited to check out the code and to contribute suggestions if some extras - can improve it. - -\item[varying font encodings:] the very first release of \mst dealt with only - one font; very soon thereafter it acquired the capacity to define multiple - math versions, each one using its own text font. But, as was documented at - this location formerly, various encoding dependent decisions were done once - and for all during package loading. - - This meant in particular that the minus sign (using the text endash), the - dotless |i| and |j|, the |\hbar|, the math accents were all set up for only - one unique font encoding. It was thus recommended that all math versions - share the same font encoding. - - The |1.3u| release has lifted this restriction.\RLNote{NEW FEATURE!}{1.3u} -\end{description} % 2 septembre 2013; finalis 22:58 \makeatletter @@ -3465,54 +3967,11 @@ and \emph{before} \mst. {\hyperref[#2]{\ttfamily #1#2}\endgroup}} \makeatother -\subsection{Commands} - -A few preliminary comments, mainly destined to advanced users aware of some -\TeX\ innards (more extensive explanations are to be found in the code -comments). - -The timing for actions of \mst falls into three cases: - -\begin{enumerate} -\item things done during the loading of the package, or delayed to - |\AtBeginDocument|, -\item things done as the result of user commands, either in the preamble or in - the body of the document, -\item things done everytime math mode is entered. -\end{enumerate} - -The second category overlaps with the others, as the (preamble) use of some -commands can have either immediate effect or only trigger some actions in -|\AtBeginDocument| or perhaps only influence the things done later by \mst -each time math mode is entered. - -The third category deserves some brief additional comments: it mainly (but not -exclusively) regards the ``math activation'' of characters, and conversely all -``math activations'' fall into this category. The package re-checks each time -math mode is entered if some characters have been made in-between catcode -active, or math active, and takes appropriate decisions: one important aspect -of this issue is that |babel|'s mechanism for activating character was not, last -time I checked, very robust against math active characters. I now checked -again (on January 15, 2016) that -\begin{verbatim} - \documentclass{article} - \usepackage[french]{babel} - \usepackage{mathtools}\mathtoolsset{centercolon} - \begin{document} - $:$ - \end{document} -\end{verbatim} -creates an infinite loop (see section \ref{sec:compat} where this was -mentioned already, some years ago). Thus \mst has (since |1.2e 2013/01/10|) a -somewhat elaborate mechanism related to these issues (see the code comments), -installed into the list of things done by \TeX\ systematically each time -it enters math mode. For some legacy reason the package also puts into -this list a few other things which could arguably be done elsewhere once and -for all. The command \csb{MTeverymathoff} cancels all actions done by -\mst. +\newsavebox\boite +\section{Package commands} -\newsavebox\boite +\subsection{Commands for regular usage} \subsubsection{Preamble-only commands} These commands mainly facilitate the definition of math versions, in a \mst @@ -3559,7 +4018,7 @@ option). $abcde\displaystyle\ointop\bigvee\biguplus\bigotimes\bigoplus$} Naturally, for this one needs an initial math font setup with some nice bold fonts also for large symbols. This is the case with the excellent - |txfonts| package of \textsc{Young~Ryu}. As the present document must + |txfonts| package of Young~\textsc{Ryu}. As the present document must use many fonts and declares many math alphabets, we did not load the full package and fonts but only the |largesymbols|:\hfill\break |\DeclareSymbolFont{largesymbols}{OMX}{txex}{m}{n}|\hfill\break @@ -3629,16 +4088,416 @@ option). \meta{factor}. \item \MTSymbolScale\marg{factor}: scales the Symbol font by \meta{factor}. -\item \MTitgreek, \MTupgreek, \MTitGreek, \MTupGreek: -optional commands, active only in -the case of the \blueit{LGRgreek} option, to decide the shape of the -Greek letters in the versions which will be declared next. - \item \MTgreekfont\marg{fontfamily}: optional command with a mandatory - argument which specifies the font for Greek letters in all \mst math - versions declared afterwards via \cs{Mathastext} or \cs{MTDeclareVersion}. Only effective with \blueit{LGRgreek} option. +\item \MTitgreek, \MTupgreek, \MTitGreek, \MTupGreek: these commands + are active in case the \blueit{LGRgreek} option was used; they act + as the options of the similar names itgreek, upgreek, itGreek, + upGreek, but only for the Greek letters in the versions yet to be + defined. +\item \MTgreekfont\marg{fontfamily}: a command with a mandatory argument + which specifies the font family for Greek letters in all \mst math versions + declared afterwards via \Mathastext or \MTDeclareVersion. Only + effective if \blueit{LGRgreek} option was passed to the package. + +\end{enumerate} + +\subsubsection{Commands for body or math} + +\begin{enumerate}[label=$\bullet$, leftmargin=1em] +\item \MTversion\oarg{nametext}\marg{namemath}, + \MTversion$\ast$\marg{namemath}, also known as + \Mathastextversion (and as \cs{MTVersion}, and + \cs{mathastextversion}): + \begin{enumerate}[label=$\bullet$] + \item the non-starred version changes + \emph{both} the document text fonts and the math fonts (for those characters + treated by \mst): the mandatory argument is the math version to be used + for math; the optional argument is the name of (another) \mst-declared math + version, the font which was chosen during its declaration will be set as + document text font (and |\familydefault| etc\dots also are + redefined). In the absence of the optional argument, the mandatory one is + used. The versions \emph{must} be either |normal|, or |bold|, or previously + declared ones via \Mathastext or \MTDeclareVersion. + \item the starred variant\RightNote{1.3c} does the math set-up, but changes \emph{nothing} to + the text fonts (see \autoref{sec:mathversions} for a description of the math + set-up, which summarizes + what is done additionally to only using \LaTeX{}'s |\mathversion|). + \end{enumerate} + \cs{MTversion}\oarg{nametext}\marg{namemath} does \MTeverymathdefault + (except for |\MTversion{normal}| and |\MTversion{bold}| under package option + |subdued|), which in particular activates the insertion of skips around + letters specified by \MTsetmathskips and also, if the font used is not + oblique the insertion of italic corrections (for better positioning of + subscripts; see the discussion in \autoref{sec:ic}). Under the |frenchmath| + option the package checks separately the letter shape for lowercase and + uppercase. + + \RightNote{1.3j}\cs{MTversion} also does \MTexistsdoesskip, + \MTforalldoesskip, and also \MTprimedoesskip, + \csb{MTmathoperatorsobeymathxx}, except under the |subdued| option for + \emph{normal} and \emph{bold}, in which case it does the opposite actions. + +\item \hbar: this macro is by default redefined (in a way compatible with + the |italic| option) combining the |h| letter and the \={ } accent from the + \mst font. Note that \cs{mathrm}|{\hbar}| and \cs{mathbf}|{\hbar}| will + work and that \cs{hbar} does scale in subscripts and exponents. Since + |1.3u|, this is a priori compatible with all 8bits text font + encodings\RightNote{1.3u} supporting the |\=| text accent in + the LaTeX way.% +% +\footnote{\RightNote{1.3u}The horizontal skips for letter |h| from + \cs{MTsetmathskips} are ignored for \cs{hbar}. Formerly, a positive + ``before'' skip was not properly taken into account for the horizontal + positioning of the accent and thus gave a bad result. The user can extend + the package \cs{hbar} definition to add skips.} +\footnote{\RightNote{1.3u}The \cs{hbar} redefinition is canceled in normal and + bold math versions under the |subdued| option.} + +\item \fouriervec: this is a |\vec| accent taken from the Fourier font; +the |fourier| package need not be loaded. Active only +if option fouriervec. +\item \pmvec: this provides a poor man \cs{vec} accent command, for +upright letters. It uses the right arrow. Does not change +size in subscripts and exponents. + \item \mathnormal, \mathrm, \mathbf, \mathit, \mathsf, +\mathtt: modifications of the original \cs{mathnormal}, +\cs{mathrm}, \cs{mathbf}, \cs{mathit}, \cs{mathsf}, \cs{mathtt} to +use the mathastextified font. The +underlying internal \LaTeX{} structures related to the original +commands are not overwritten, so the original commands can be saved under +other names before |\usepackage{mathastext}|, to be used in case of +necessity (this is what option |subdued| does.) + \item \mathnormalbold: a bold version of \cs{mathnormal}. Differs +from \mathbf when the |italic| option has been used, or when use +has been made of \MTlettershape to specify a shape for letters +distinct from the one for digits and operator names, or similarly +when the math version has been declared via \MTDeclareVersion with +its optional parameter for shape of letters. +\item \RLNote{new:}{1.3x}\mathgreekup: math alphabet, only available under + LGRgreek (or LGRgreeks) option (and if with subdued only in the + non-|normal| and non-|bold| \mst-enriched math versions) which gives access + to `upright' Greek letters (picked up from a font available in + |LGR|-encoding). The actual shape is configurable via re-defining \MTgreekupdefault. +\item \RLNote{new:}{1.3x}\mathgreekit: math alphabet, only available under + LGRgreek (or LGRgreeks) option (and if with subdued only in the + non-|normal| and non-|bold| \mst-enriched math versions) which gives access + to `italic' Greek letters (picked up from a font available in + |LGR|-encoding). The actual shape is configurable via re-defining \MTgreekitdefault. +\item \inodot, \jnodot: the corresponding glyphs in the \mst-ified + font for use in math mode. By default, |\imath| and |\jmath| are redefined to use + them. Since \texttt{1.3t}, these macros obey the \texttt{subdued} + regime. +% +\footnote{\RightNote{1.3t}Formerly (i.e.\@ since \texttt{1.12}) \mst + redefined the \texttt{\string\i} and \texttt{\string\j} as robust + commands usable both in text and math mode and using the above macros + in the latter. I have decided it wasn't such a good idea and there is + from now on \texttt{1.3t} no such redefinition of \texttt{\string\i} + and \texttt{\string\j}!} +\item \MathEuler, \MathEulerBold: math alphabets to access +all the glyphs of the Euler font, if option |eulergreek| (or +|eulerdigits| was passed to the package. +\item \MathPSymbol: math alphabet to access the Symbol font. +\item when one of the options \blueit{symbolgreek}, + \blueit{eulergreek}, or \blueit{selfGreek} is passed to the package + the capital Greek letters which look like their Latin + counterparts acquire names: \cs{Digamma}, + \cs{Alpha}, \cs{Beta}, \cs{Epsilon}, \cs{Zeta}, + \cs{Eta}, \cs{Iota}, \cs{Kappa}, \cs{Mu}, \cs{Nu}, + \cs{Omicron}, \cs{Rho}, \cs{Tau}, \cs{Chi} (no + \cs{Digamma} for Symbol). Also an \cs{omicron} + control sequence is provided. +\item |LGR| Greek and `var'-letters: only the + \cs{varsigma} is available in this encoding, so using + for example \cs{varphi} will load the previous default math + font. It might thus be suitable when recompiling + already written \LaTeX{} sources to add to the preamble + \cs{let}\cs{varphi}$=$\cs{phi}, + \cs{let}\cs{varepsilon}$=$\cs{epsilon}, etc\dots, + in case only the `variant' form of the letter was used + in the documents. +\item \hypertarget{symbolmisc}{Miscelleneous mathematical symbols} from the + postscript Symbol font are made available (or replaced) by option + symbolmisc.\footnote{option \blueit{asterisk} is also required to treat the + $*$. + Recall from \autoref{sec:mathxx} that the asterisk in math mode (also + when using the control sequence \cs{ast}) appears then to \TeX{} to be + a composite object.} + \makeatletter\let\mst@doasterisk\mst@@doasterisk\makeatother They are + \cs{prod}~$\prod$ \cs{sum}~$\sum$ \cs{implies}~$\implies$ + \cs{impliedby}~$\impliedby$ \cs{iff}~$\iff$ \cs{shortiff}~$\shortiff$ + \cs{to}~$\to$ \cs{longto}~$\longto$ \cs{mapsto}~$\mapsto$ + \cs{longmapsto}~$\longmapsto$ \cs{aleph}~$\aleph$ \cs{inftypsy}~$\inftypsy$ + \cs{emptyset}~$\emptyset$ \cs{surd}~$\surd$ \cs{nabla}~$\nabla$ + \cs{angle}~$\angle$ \cs{forall}~$\forall$ \cs{exists}~$\exists$ + \cs{neg}~$\neg$ \cs{clubsuit}~$\clubsuit$ \cs{diamondsuit}~$\diamondsuit$ + \cs{heartsuit}~$\heartsuit$ \cs{spadesuit}~$\spadesuit$ + \cs{smallint}~$\smallint$ \cs{wedge}~$\wedge$ \cs{vee}~$\vee$ \cs{cap}~$\cap$ + \cs{cup}~$\cup$ \cs{bullet}~$\bullet$ \cs{div}~$\div$ \cs{otimes}~$\otimes$ + \cs{oplus}~$\oplus$ \cs{pm}~$\pm$ \cs{ast}~$\ast$ \cs{times}~$\times$ + \cs{proptopsy}~$\proptopsy$ \cs{mid}~$\mid$ \cs{leq}~$\leq$ \cs{geq}~$\geq$ + \cs{approx}~$\approx$ \cs{supset}~$\supset$ \cs{subset}~$\subset$ + \cs{supseteq}~$\supseteq$ \cs{subseteq}~$\subseteq$ \cs{in}~$\in$ + \cs{sim}~$\sim$ \cs{cong}~$\cong$ \cs{perp}~$\perp$ \cs{equiv}~$\equiv$ + \cs{notin}~$\notin$ \cs{langle}~$\langle$ \cs{rangle}~$\rangle$. And a + \cs{DotTriangle}~$\DotTriangle$ is made available by option symbolre (which + overwrites \cs{Re} and \cs{Im}: $\Re,\Im$). The \cs{inftypsy} and + \cs{proptopsy} have these names to leave up to the user the choice to replace + (or no) the original (larger) \cs{infty} $\infty$ and \cs{propto} $\propto$. + + Regarding the \cs{prod} and \cs{sum} commands: they will use the Symbol + glyphs $\prod\sum$ in inline math, and in display math the Computer Modern + ones (or whatever is set up by other packages; here we have the symbols from + |txfonts|): \[\prod\sum\] The package + provides \cs{prodpsy} and \cs{sumpsy}: if one really wants in all + situations the Symbol glyphs, one can do \cs{let}\cs{prod}\cs{prodpsy} and + \cs{let}\cs{sum}\cs{sumpsy}. Also \cs{MToriginalprod} and \cs{MToriginalsum} + will refer to the \cs{prod} and \cs{sum} before redefinition by the + package: this is to allow constructs such as |$\displaystyle\MToriginalprod$| + or |\[\textstyle\MToriginalprod\]|, because they would not work with the + \cs{prod} and \cs{sum} as re-defined by the package. + +\end{enumerate} + + +\subsection{Commands for expert usage} + +A few preliminary comments, mainly destined to advanced users aware of some +\TeX\ innards (more extensive explanations are to be found in the code +comments). + +The timing for actions of \mst falls into three cases: + +\begin{enumerate} +\item things done during the loading of the package, or delayed to + |\AtBeginDocument|, +\item things done as the result of user commands, either in the preamble or in + the body of the document, +\item things done everytime math mode is entered. +\end{enumerate} + +The second category overlaps with the others, as the (preamble) use of some +commands can have either immediate effect or only trigger some actions in +|\AtBeginDocument| or perhaps only influence the things done later by \mst +each time math mode is entered. + +The third category deserves some brief additional comments: it mainly (but not +exclusively) regards the ``math activation'' of characters, and conversely all +``math activations'' fall into this category. The package re-checks each time +math mode is entered if some characters have been made in-between catcode +active, or math active, and takes appropriate decisions: one important aspect +of this issue is that |babel|'s mechanism for activating character was not, last +time I checked, very robust against math active characters. I now checked +again (on January 15, 2016) that +\begin{verbatim} + \documentclass{article} + \usepackage[french]{babel} + \usepackage{mathtools}\mathtoolsset{centercolon} + \begin{document} + $:$ + \end{document} +\end{verbatim} +creates an infinite loop (see section \ref{sec:compat} where this was +mentioned already, some years ago). Thus \mst has (since |1.2e 2013/01/10|) a +somewhat elaborate mechanism related to these issues (see the code comments), +installed into the list of things done by \TeX\ systematically each time +it enters math mode. For some legacy reason the package also puts into +this list a few other things which could arguably be done elsewhere once and +for all. The command \csb{MTeverymathoff} cancels all actions done by +\mst. + +\subsubsection{Expert commands usable everywhere}\label{sec:cmds} + +\begin{enumerate}[label=$\bullet$, leftmargin=1em] + +\DeleteShortVerb{\|}% + +\item \MTsetmathskips\marg{a-z|A-Z}\marg{muglue\_before}\marg{muglue\_after}: +% +\MakeShortVerb{\|}% +% + is\RightNote{1.3a} used to specify extra skips (or rather mu glue) to be + inserted in math mode, before and after a letter. The rationale is that + standard text fonts used in math mode may sometimes cause glyph (near-) + collisions with math symbols, as \TeX{} has some implicit expectations on the + design of fonts for math letters. + + \begin{framed} + These extra skips around letters are set at their natural width and do not + add any stretchability or shrinkability to the math formula as a whole, + nor do they result in extra potential break points. + \end{framed} + + Random (silly) examples: + \centeredline{|\MTsetmathskips{x}{\medmuskip}{\thickmuskip}|} \centeredline + {|\MTsetmathskips{A}{.5mu}{2.3mu}|} and the effect: + \begingroup\MTversion{italic}\MTsetmathskips{x}{\medmuskip}{\thickmuskip}% + \MTsetmathskips{A}{.5mu}{2.3mu}% + $vwxyzABC^{vwxyzABC}$\endgroup. The effect obeys the usual \LaTeX{} scoping + rules. + + The first argument of \MTsetmathskips may be any expandable code giving a + letter; this facilitates use of |\MTsetmathskip| in |\@for| loops such as + this one: +\begin{verbatim} +\makeatletter +\@for\@tempa:=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z\do{% + \MTsetmathskips{\@tempa}{2mu}{2mu}}% +\makeatother +\end{verbatim} + + \begin{framed} + \emph{\color{magenta}\bfseries Starting with |v1.3i|:} the extra skips are + \emph{not} applied to the letters within the scope of math alphabet + commands, or the letters from operator names (pre-defined or user + declared). + \end{framed} + +{\footnotesize + Note that contrarily to the \csb{MTexistsskip}, \csb{MTforallskip}, and + \csb{MTprimeskip} commands described next, these extra skips (which may be + specified in the preamble) are not recorded in the definition of the math + version (as defined via \Mathastext with its optional argument or via + \MTDeclareVersion). The declared skips hold thoughout the document + until modified or canceled, independently of math versions (of + course, \mst cancels the skips in the normal and bold math versions if + package option \blueit{subdued} was used).\par} + +\DeleteShortVerb{\|} + +\item \MTunsetmathskips\marg{a-z|A-Z}: +% +\MakeShortVerb{\|} +% + cancels the skips + for that letter (they are not set to |0mu| but completely removed). + + + % setting the skips to |0mu| which prevents formation of ligatures + % when the letter is used inside a \cs{mathbf} for example). Example (using a + % version with upright Latin Modern): \centeredline + % {|\MTsetmathskips{f}{8mu}{0mu}$gffg\MTunsetmathskips{f}ff\mathbf{ff}$|} + % gives: \begingroup\MTversion{upright}% + % \MTsetmathskips{f}{8mu}{0mu}$gffg\MTunsetmathskips{f}ff\mathbf{ff}$\endgroup. + % The ligature was correctly formed. + + The argument may be a macro (or any expandable code) expanding to a letter. + + +\item \MTexistsskip\marg{math glue}: specifies the amount of skip or more + generally glue to put after each $\oldexists$ math symbol. Indeed, upright + letters (or digits for that matter) often appear to be positioned a bit too + close to the quantifier: $\oldexists\mathrm{B}$. The package default is to + add a |1mu| skip (this default is set to zero in the case of |italic|): + $\oldexists\mskip 1mu\mathrm{B}$. One can change the default with the + following syntax: |\MTexistsskip{2mu plus 1mu minus 1mu}|, which if used in + the preamble and followed with a \csb{Mathastext} command (or + \csb{MTDeclareVersion}), will be recorded in the definition of this math + version (and subsequent ones). One may also use the command at any time in + the document. In the case of the option |subdued|, the skip is canceled in + the \emph{normal} and \emph{bold} math versions.\footnote{\RightNote{1.3j}% +Formerly, it was set to |0mu|.} In the case of the option |italic|, the + default skip is set to zero. + +\item \RightNote{1.3j}\MTnormalexists, \MTexistsdoesskip: the + latter (done by default if not |subdued|, and also on each use of + |\MTversion| in the body of the document) makes it so that $\oldexists$ + takes into account the math glue as specified by \csb{MTexistsskip}. The + former is its opposite. + +\item \MTforallskip\marg{math glue}: the default is to add a |.6667mu| math + skip after each $\oldforall$ (except with the option |italic| for which the + default skip is set to zero). Compare $\oldforall\mskip.6667mu\mathrm{F}$ + (has the skip) with $\oldforall\mathrm{F}$ (has no skip). Use this command + in the preamble to set up the skip or glue to be used in the \emph{next to + be declared} math versions. In the case of the option |subdued|, the skip + is canceled in the \emph{normal} and \emph{bold} math + versions.\footnote{\RightNote{1.3j}Formerly, it was set to |0mu|.} In the + case of the option |italic|, the default skip is zero for all math versions. + One may use the command at any location in the document. + +\item \RightNote{1.3j}\MTnormalforall, \MTforalldoesskip: the + latter (done by default if not |subdued|, and also on each use of + |\MTversion| in the body of the document) makes it so that $\oldforall$ + takes into account the math glue as specified by \csb{MTforallskip}. The + former is its opposite. + +\item \MTprimeskip\marg{math glue}: the default is to add a |0.5mu| skip + before the derivative glyph, except for the |italic| option. In the case of + the option |subdued|, the skip is canceled in the \emph{normal} and + \emph{bold} math versions.\footnote{\RightNote{1.3j}Formerly, it was set to + |0mu|.} + +% obsolete et mme faux avec 1.3j +% \footnote{if \cs{begin\{document\}} is not followed +% with \cs{MTversion\{normal\}}, the latest values set in the preamble by +% these commands are used at the beginning of the document, +% even under option \texttt{subdued}.} + +\item \MTlowerast\marg{dimen}: a \cs{raisebox} command is + used to lower the text asterisk to produce a reasonable math + asterisk. The package uses this command initially with + argument |0.3\height|, this will have to be fine-tuned for + each given text font but worked out ok with the fonts we + tried. Note that the dimension argument will be used also in + sub-scripts and sub-sub-scripts, so it is best not to use an + absolute dimension. + +\item \MTmathoperatorsobeymathxx, \MTmathoperatorsdonotobeymathxx: the + former is done by default, it makes operator names obey math alphabets. See + also section \ref{sec:mathxx}. This functionality \emph{does + {\normalfont\bfseries not} rely} + on ``math active characters''. Automatically issued by each \cs{MTversion}, + except under option |subdued| when switching to \emph{normal} or \emph{bold}. + + \item \MTcustomgreek:\RightNote{1.3d} in case \mst has been loaded with one of its + Greek related options, this activates the corresponding + customization of Greek letters in math mode. It is issued + automatically by the package in the preamble (except if loaded with + |subdued| option) and at each switch of math version via + |\MTversion| or |\MTversion*| (except for the normal and bold math + versions in subdued mode). Also available as + |\Mathastextcustomgreek|. May be used even inside of math mode. + + \item \MTstandardgreek:\RightNote{1.3d} in case \mst was loaded with one of the Greek + related options this command reverts the customization, it resets the Greek + letters to their definitions in force at package loading time. Can be used + in the preamble, but is mainly for the document body (may even be used + inside math mode ...). Done automatically + under the |subdued| option when switching to the normal or bold math + version. Also available as |\Mathastextstandardgreek|. +\end{enumerate} + +\subsubsection{Expert commands which are preamble-only} + +\begin{enumerate}[label=$\bullet$, leftmargin=1em] +\item \MTgreekupdefault:\RLNote{new:}{1.3x} a command with + no argument whose expansion specifies, under LGRgreek regime, the + shape for the `|up|' Greek control sequences (and for the no-postfix + Greek control sequences under upgreek option) in all \mst math + versions declared \emph{afterwards} via \cs{Mathastext} or + \cs{MTDeclareVersion}. The a priori default for this shape is `|n|' + (without the quotes). See + \autoref{sec:newgreek}. + + This command can also be defined \emph{prior} to loading the package. + Indeed it is defined this way: + \centeredline{|\providecommand*\MTgreekupdefault{n}|} + +\item \MTgreekitdefault:\RLNote{new:}{1.3x} a command with + no argument whose expansion specifies, under LGRgreek regime, the + shape for the `|it|' Greek control sequences (and for the no-postfix + Greek control sequences under itgreek option) in all \mst math + versions declared \emph{afterwards} via \cs{Mathastext} or + \cs{MTDeclareVersion}. The a priori default for this shape is `|it|' + (without the quotes). + See \autoref{sec:newgreek}. + + This command can also be used \emph{prior} to loading the package. + Indeed it is defined this way: + \centeredline{|\providecommand*\MTgreekitdefault{it}|} \end{enumerate} -\subsubsection{Commands usable only outside of math mode}\label{sec:cmdsoutmath} +\subsubsection{Expert commands usable only outside of math mode}\label{sec:cmdsoutmath} They are usable only from outside math mode because they act via turning on or off the execution, each time math mode is entered, of certain macros added @@ -3648,7 +4507,7 @@ by \mst to the \cs{everymath} and \cs{everydisplay} token list variables. \item \MTmathactiveletters: activates the `math activation' of Latin letters. This is done by the package during loading, except under the - |subdued| option.\footnote{\CHANGED{1.3j}Formerly, it was also executed + |subdued| option.\footnote{\RightNote{1.3j}Formerly, it was also executed from each \cs{Mathastext} in the preamble.} It is again executed in the body at each \cs{MTversion}, except under the |subdued| option when switching to the \emph{normal} or \emph{bold} math versions. @@ -3666,7 +4525,7 @@ by \mst to the \cs{everymath} and \cs{everydisplay} token list variables. \item \MTicinmath: this command is executed by default by \mst except in case of option |subdued| or if the user chosen letter shape is oblique (|it| or |sl|). It tells \mst to add italic corrections after all letters in math - mode, except within the scope of math alphabets.\footnote{\CHANGED{1.3i}% + mode, except within the scope of math alphabets.\footnote{\RightNote{1.3i}% Formerly, italic corrections were added to the (non-oblique) letters of \cs{mathnormal} arguments.} @@ -3754,16 +4613,15 @@ Formerly, italic corrections were added to the (non-oblique) letters of In particular, executing \cs{MTnonlettersobeymathxx} in the preamble or at the start of the document body serves nothing, because the document is in the subdued \emph{normal} math version regime then. It must thus be - executed after the first usage of \cs{Mtversion} switching to a + executed after the first usage of \cs{MTversion} switching to a non-subdued math version, and again on each successive exit from the \emph{normal} or \emph{bold} math versions. \end{framed} - {\footnotesize -\MTexplicitbracesobeymathxx extends an earlier \MTnonlettersobeymathxx +\item \MTexplicitbracesobeymathxx: extends an earlier \MTnonlettersobeymathxx to also treat \verb|\{| and \verb|\}|. But then |\left\{|, |\right\}| must be coded |\left\lbrace|, |\right\rbrace| rather. There is also - \MTexplicitbracesdonotobeymathxx.\par} + \MTexplicitbracesdonotobeymathxx. \item \RightNote{1.3j}\MTnormalprime, \MTprimedoesskip: the latter (done by default if not |subdued|, and also on each use of \csb{MTversion} in the body of the document @@ -3850,330 +4708,65 @@ actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par} \end{enumerate} -\footnotesize - -\subsubsection{Commands usable only in math mode}\label{sec:mathonlycmds} +\subsubsection{Expert commands usable only in math mode} -%\begin{enumerate} -%\item -\RightNote{1.3p}\MTfixmathfonts: this used to be an inner macro - but it is given a public name by |1.3p| because I discovered that +\begin{enumerate}[label=$\bullet$, leftmargin=1em] +{\small +\item\RightNote{1.3p}% +\MTfixmathfonts: this used to be an internal package macro + but it is given a public name at |1.3p| because I discovered that |$..\hbox{\mathversion{foo}$..$}..$| causes an issue and one needs to invoke again \cs{MTfixmathfonts} \emph{after} the \verb|\hbox|, for some reason. To be used \emph{only} under \LuaLaTeX{} and only for - such rare cases where it may be needed. -%\end{enumerate} - -\normalsize - -\subsubsection{Commands usable everywhere}\label{sec:cmds} - -\begin{enumerate}[label=$\bullet$, leftmargin=1em] - -\DeleteShortVerb{\|}% - -\item \MTsetmathskips\marg{a-z|A-Z}\marg{muglue\_before}\marg{muglue\_after}: - \MakeShortVerb{\|}is\RightNote{1.3a} used to specify extra skips (or rather mu glue) to be - inserted in math mode, before and after a letter. The rationale is that - standard text fonts used in math mode may sometimes cause glyph (near-) - collisions with math symbols, as \TeX{} has some implicit expectations on the - design of fonts for math letters. - - \begin{framed} - These extra skips around letters are set at their natural width and do not - add any stretchability or shrinkability to the math formula as a whole, - nor do they result in extra potential break points. - \end{framed} - - Random (silly) examples: - \centeredline{|\MTsetmathskips{x}{\medmuskip}{\thickmuskip}|} \centeredline - {|\MTsetmathskips{A}{.5mu}{2.3mu}|} and the effect: - \begingroup\MTversion{italic}\MTsetmathskips{x}{\medmuskip}{\thickmuskip}% - \MTsetmathskips{A}{.5mu}{2.3mu}% - $vwxyzABC^{vwxyzABC}$\endgroup. The effect obeys the usual \LaTeX{} scoping - rules. - - The first argument of \MTsetmathskips may be any expandable code giving a - letter; this facilitates use of |\MTsetmathskip| in |\@for| loops such as - this one: -\begin{verbatim} -\makeatletter -\@for\@tempa:=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z\do{% - \MTsetmathskips{\@tempa}{2mu}{2mu}}% -\makeatother -\end{verbatim} - - \begin{framed} - \emph{\color{magenta}\bfseries Starting with |v1.3i|:} the extra skips are - \emph{not} applied to the letters within the scope of math alphabet - commands, or the letters from operator names (pre-defined or user - declared). - \end{framed} - -{\footnotesize - Note that contrarily to the \csb{MTexistsskip}, \csb{MTforallskip}, and - \csb{MTprimeskip} commands described next, these extra skips (which may be - specified in the preamble) are not recorded in the definition of the math - version (as defined via \Mathastext with its optional argument or via - \MTDeclareVersion). The declared skips hold thoughout the document - until modified or canceled, independently of math versions (of - course, \mst cancels the skips in the normal and bold math versions if - package option \blueit{subdued} was used).\par} - -\DeleteShortVerb{\|} - -\item \MTunsetmathskips\marg{a-z|A-Z}: \MakeShortVerb{\|} cancels the skips - for that letter (they are not set to |0mu| but completely removed). - - - % setting the skips to |0mu| which prevents formation of ligatures - % when the letter is used inside a \cs{mathbf} for example). Example (using a - % version with upright Latin Modern): \centeredline - % {|\MTsetmathskips{f}{8mu}{0mu}$gffg\MTunsetmathskips{f}ff\mathbf{ff}$|} - % gives: \begingroup\MTversion{upright}% - % \MTsetmathskips{f}{8mu}{0mu}$gffg\MTunsetmathskips{f}ff\mathbf{ff}$\endgroup. - % The ligature was correctly formed. - - The argument may be a macro (or any expandable code) expanding to a letter. - - -\item \MTexistsskip\marg{math glue}: specifies the amount of skip or more - generally glue to put after each $\oldexists$ math symbol. Indeed, upright - letters (or digits for that matter) often appear to be positioned a bit too - close to the quantifier: $\oldexists\mathrm{B}$. The package default is to - add a |1mu| skip (this default is set to zero in the case of |italic|): - $\oldexists\mskip 1mu\mathrm{B}$. One can change the default with the - following syntax: |\MTexistsskip{2mu plus 1mu minus 1mu}|, which if used in - the preamble and followed with a \csb{Mathastext} command (or - \csb{MTDeclareVersion}), will be recorded in the definition of this math - version (and subsequent ones). One may also use the command at any time in - the document. In the case of the option |subdued|, the skip is canceled in - the \emph{normal} and \emph{bold} math versions.\footnote{\CHANGED{1.3j}% -Formerly, it was set to |0mu|.} In the case of the option |italic|, the - default skip is set to zero. - -\item \RightNote{1.3j}\MTnormalexists, \MTexistsdoesskip: the - latter (done by default if not |subdued|, and also on each use of - |\MTversion| in the body of the document) makes it so that $\oldexists$ - takes into account the math glue as specified by \csb{MTexistsskip}. The - former is its opposite. - -\item \MTforallskip\marg{math glue}: the default is to add a |.6667mu| math - skip after each $\oldforall$ (except with the option |italic| for which the - default skip is set to zero). Compare $\oldforall\mskip.6667mu\mathrm{F}$ - (has the skip) with $\oldforall\mathrm{F}$ (has no skip). Use this command - in the preamble to set up the skip or glue to be used in the \emph{next to - be declared} math versions. In the case of the option |subdued|, the skip - is canceled in the \emph{normal} and \emph{bold} math - versions.\footnote{\CHANGED{1.3j}Formerly, it was set to |0mu|.} In the - case of the option |italic|, the default skip is zero for all math versions. - One may use the command at any location in the document. - -\item \RightNote{1.3j}\MTnormalforall, \MTforalldoesskip: the - latter (done by default if not |subdued|, and also on each use of - |\MTversion| in the body of the document) makes it so that $\oldforall$ - takes into account the math glue as specified by \csb{MTforallskip}. The - former is its opposite. - -\item \MTprimeskip\marg{math glue}: the default is to add a |0.5mu| skip - before the derivative glyph, except for the |italic| option. In the case of - the option |subdued|, the skip is canceled in the \emph{normal} and - \emph{bold} math versions.\footnote{\CHANGED{1.3j}Formerly, it was set to - |0mu|.} - -% obsolete et mme faux avec 1.3j -% \footnote{if \cs{begin\{document\}} is not followed -% with \cs{MTversion\{normal\}}, the latest values set in the preamble by -% these commands are used at the beginning of the document, -% even under option \texttt{subdued}.} - -\item \MTlowerast\marg{dimen}: a \cs{raisebox} command is - used to lower the text asterisk to produce a reasonable math - asterisk. The package uses this command initially with - argument |0.3\height|, this will have to be fine-tuned for - each given text font but worked out ok with the fonts we - tried. Note that the dimension argument will be used also in - sub-scripts and sub-sub-scripts, so it is best not to use an - absolute dimension. - -\item \MTmathoperatorsobeymathxx, \MTmathoperatorsdonotobeymathxx: the - former is done by default, it makes operator names obey math alphabets. See - also section \ref{sec:mathxx}. This functionality \emph{does - {\normalfont\bfseries not} rely} - on ``math active characters''. Automatically issued by each \cs{MTversion}, - except under option |subdued| when switching to \emph{normal} or \emph{bold}. - - \item \MTcustomgreek:\RightNote{1.3d} in case \mst has been loaded with one of its - Greek related options, this activates the corresponding - customization of Greek letters in math mode. It is issued - automatically by the package in the preamble (except if loaded with - |subdued| option) and at each switch of math version via - |\MTversion| or |\MTversion*| (except for the normal and bold math - versions in subdued mode). Also available as - |\Mathastextcustomgreek|. May be used even inside of math mode. - - \item \MTstandardgreek:\RightNote{1.3d} in case \mst was loaded with one of the Greek - related options this command reverts the customization, it resets the Greek - letters to their definitions in force at package loading time. Can be used - in the preamble, but is mainly for the document body (may even be used - inside math mode ...). Done automatically - under the |subdued| option when switching to the normal or bold math - version. Also available as |\Mathastextstandardgreek|. - + such rare cases where it may be needed.\par +} \end{enumerate} -\subsubsection{Body-only commands} - -\begin{enumerate}[label=$\bullet$, leftmargin=1em] -\item \MTversion\oarg{nametext}\marg{namemath}, - \MTversion$\ast$\marg{namemath}, also known as - \Mathastextversion (and as \cs{MTVersion}, and - \cs{mathastextversion}): - \begin{enumerate}[label=$\bullet$] - \item the non-starred version changes - \emph{both} the document text fonts and the math fonts (for those characters - treated by \mst): the mandatory argument is the math version to be used - for math; the optional argument is the name of (another) \mst-declared math - version, the font which was chosen during its declaration will be set as - document text font (and |\familydefault| etc\dots also are - redefined). In the absence of the optional argument, the mandatory one is - used. The versions \emph{must} be either |normal|, or |bold|, or previously - declared ones via \Mathastext or \MTDeclareVersion. - \item the starred variant\RightNote{1.3c} does the math set-up, but changes \emph{nothing} to - the text fonts (see \autoref{sec:mathversions} for a description of the math - set-up, which summarizes - what is done additionally to only using \LaTeX{}'s |\mathversion|). - \end{enumerate} - \cs{MTversion}\oarg{nametext}\marg{namemath} does \MTeverymathdefault - (except for |\MTversion{normal}| and |\MTversion{bold}| under package option - |subdued|), which in particular activates the insertion of skips around - letters specified by \MTsetmathskips and also, if the font used is not - oblique the insertion of italic corrections (for better positioning of - subscripts; see the discussion in \autoref{sec:ic}). Under the |frenchmath| - option the package checks separately the letter shape for lowercase and - uppercase. - - \RightNote{1.3j}\cs{MTversion} also does \MTexistsdoesskip, - \MTforalldoesskip, and also \MTprimedoesskip, - \csb{MTmathoperatorsobeymathxx}, except under the |subdued| option for - \emph{normal} and \emph{bold}, in which case it does the opposite actions. -\end{enumerate} +\section{Package options} -All further commands are usable only inside math mode. -\begin{enumerate}[label=$\bullet$] -\item \hbar: this macro is by default redefined (in a way compatible with - the |italic| option) combining the |h| letter and the \={ } accent from the - \mst font. Note that \cs{mathrm}|{\hbar}| and \cs{mathbf}|{\hbar}| will - work and that \cs{hbar} does scale in subscripts and exponents. Since - |1.3u|, this is a priori compatible with all 8bits text font - encodings\RLNote{changed:}{1.3u} supporting the |\=| text accent in - the LaTeX way.% -% -\footnote{\CHANGED{1.3u}The horizontal skips for letter |h| from - \cs{MTsetmathskips} are ignored for \cs{hbar}. Formerly, a positive - ``before'' skip was not properly taken into account for the horizontal - positioning of the accent and thus gave a bad result. The user can extend - the package \cs{hbar} definition to add skips.} -\footnote{\CHANGED{1.3u}The \cs{hbar} redefinition is canceled in normal and - bold math versions under the |subdued| option.} - -\item \fouriervec: this is a |\vec| accent taken from the Fourier font; -the |fourier| package need not be loaded. Active only -if option fouriervec. -\item \pmvec: this provides a poor man \cs{vec} accent command, for -upright letters. It uses the right arrow. Does not change -size in subscripts and exponents. - \item \mathnormal, \mathrm, \mathbf, \mathit, \mathsf, -\mathtt: modifications of the original \cs{mathnormal}, -\cs{mathrm}, \cs{mathbf}, \cs{mathit}, \cs{mathsf}, \cs{mathtt} to -use the mathastextified font. The -underlying internal \LaTeX{} structures related to the original -commands are not overwritten, so the original commands can be saved under -other names before |\usepackage{mathastext}|, to be used in case of -necessity (this is what option |subdued| does.) - \item \mathnormalbold: a bold version of \cs{mathnormal}. Differs -from \mathbf when the |italic| option has been used, or when use -has been made of \MTlettershape to specify a shape for letters -distinct from the one for digits and operator names, or similarly -when the math version has been declared via \MTDeclareVersion with -its optional parameter for shape of letters. -\item \inodot, \jnodot: the corresponding glyphs in the \mst-ified - font for use in math mode. By default, |\imath| and |\jmath| are redefined to use - them. Since \texttt{1.3t}, these macros obey the \texttt{subdued} - regime. -% -\footnote{\CHANGED{1.3t}Formerly (i.e. since \texttt{1.12}) \mst - redefined the \texttt{\string\i} and \texttt{\string\j} as robust - commands usable both in text and math mode and using the above macros - in the latter. I have decided it wasn't such a good idea and there is - from now on \texttt{1.3t} no such redefinition of \texttt{\string\i} - and \texttt{\string\j}!} -\item \MathEuler, \MathEulerBold: math alphabets to access -all the glyphs of the Euler font, if option |eulergreek| (or -|eulerdigits| was passed to the package. -\item \MathPSymbol: math alphabet to access the Symbol font. -\item when one of the options \blueit{symbolgreek}, - \blueit{eulergreek}, or \blueit{selfGreek} is passed to the package - the capital Greek letters which look like their Latin - counterparts acquire names: \cs{Digamma}, - \cs{Alpha}, \cs{Beta}, \cs{Epsilon}, \cs{Zeta}, - \cs{Eta}, \cs{Iota}, \cs{Kappa}, \cs{Mu}, \cs{Nu}, - \cs{Omicron}, \cs{Rho}, \cs{Tau}, \cs{Chi} (no - \cs{Digamma} for Symbol). Also an \cs{omicron} - control sequence is provided. -\item |LGR| Greek and `var'-letters: only the - \cs{varsigma} is available in this encoding, so using - for example \cs{varphi} will load the previous default math - font. It might thus be suitable when recompiling - already written \LaTeX{} sources to add to the preamble - \cs{let}\cs{varphi}$=$\cs{phi}, - \cs{let}\cs{varepsilon}$=$\cs{epsilon}, etc\dots, - in case only the `variant' form of the letter was used - in the documents. -\item \hypertarget{symbolmisc}{Miscelleneous mathematical symbols} from the - postscript Symbol font are made available (or replaced) by option - symbolmisc.\footnote{option \blueit{asterisk} is also required to treat the - $*$. - Recall from \autoref{sec:mathxx} that the asterisk in math mode (also - when using the control sequence \cs{ast}) appears then to \TeX{} to be - a composite object.} - \makeatletter\let\mst@doasterisk\mst@@doasterisk\makeatother They are - \cs{prod}~$\prod$ \cs{sum}~$\sum$ \cs{implies}~$\implies$ - \cs{impliedby}~$\impliedby$ \cs{iff}~$\iff$ \cs{shortiff}~$\shortiff$ - \cs{to}~$\to$ \cs{longto}~$\longto$ \cs{mapsto}~$\mapsto$ - \cs{longmapsto}~$\longmapsto$ \cs{aleph}~$\aleph$ \cs{inftypsy}~$\inftypsy$ - \cs{emptyset}~$\emptyset$ \cs{surd}~$\surd$ \cs{nabla}~$\nabla$ - \cs{angle}~$\angle$ \cs{forall}~$\forall$ \cs{exists}~$\exists$ - \cs{neg}~$\neg$ \cs{clubsuit}~$\clubsuit$ \cs{diamondsuit}~$\diamondsuit$ - \cs{heartsuit}~$\heartsuit$ \cs{spadesuit}~$\spadesuit$ - \cs{smallint}~$\smallint$ \cs{wedge}~$\wedge$ \cs{vee}~$\vee$ \cs{cap}~$\cap$ - \cs{cup}~$\cup$ \cs{bullet}~$\bullet$ \cs{div}~$\div$ \cs{otimes}~$\otimes$ - \cs{oplus}~$\oplus$ \cs{pm}~$\pm$ \cs{ast}~$\ast$ \cs{times}~$\times$ - \cs{proptopsy}~$\proptopsy$ \cs{mid}~$\mid$ \cs{leq}~$\leq$ \cs{geq}~$\geq$ - \cs{approx}~$\approx$ \cs{supset}~$\supset$ \cs{subset}~$\subset$ - \cs{supseteq}~$\supseteq$ \cs{subseteq}~$\subseteq$ \cs{in}~$\in$ - \cs{sim}~$\sim$ \cs{cong}~$\cong$ \cs{perp}~$\perp$ \cs{equiv}~$\equiv$ - \cs{notin}~$\notin$ \cs{langle}~$\langle$ \cs{rangle}~$\rangle$. And a - \cs{DotTriangle}~$\DotTriangle$ is made available by option symbolre (which - overwrites \cs{Re} and \cs{Im}: $\Re,\Im$). The \cs{inftypsy} and - \cs{proptopsy} have these names to leave up to the user the choice to replace - (or no) the original (larger) \cs{infty} $\infty$ and \cs{propto} $\propto$. +\subsection{Summary of main options} - Regarding the \cs{prod} and \cs{sum} commands: they will use the Symbol - glyphs $\prod\sum$ in inline math, and in display math the Computer Modern - ones (or whatever is set up by other packages; here we have the symbols from - |txfonts|): \[\prod\sum\] The package - provides \cs{prodpsy} and \cs{sumpsy}: if one really wants in all - situations the Symbol glyphs, one can do \cs{let}\cs{prod}\cs{prodpsy} and - \cs{let}\cs{sum}\cs{sumpsy}. Also \cs{MToriginalprod} and \cs{MToriginalsum} - will refer to the \cs{prod} and \cs{sum} before redefinition by the - package: this is to allow constructs such as |$\displaystyle\MToriginalprod$| - or |\[\textstyle\MToriginalprod\]|, because they would not work with the - \cs{prod} and \cs{sum} as re-defined by the package. -\end{enumerate} +\begin{description} +\item[{italic, frenchmath}:] italic letters in +math, upright uppercase if frenchmath. + \item[{subdued}:] acts in a subdued way. The \LaTeX{} normal and bold + math versions are left (quasi) unchanged. With version |1.15e| of + the package this statement applies also to the math alphabets + \cs{mathbf}, \cs{mathit}, \cs{mathsf}, and \cs{mathtt} (and not + only to \cs{mathnormal} and \cs{mathrm} as in previous versions.) +\item[{LGRgreek, eulergreek, symbolgreek}:] the + Greek letters will be taken, respectively from the + text font itself (in |LGR| encoding), or from the Euler + font, or from the Postscript Symbol font. +\item[{symbolmax}:] all characters + other than letters and digits, are taken from the + Symbol font. This option also makes a number of + further glyphs available, such as some basic + mathematical arrows, and the sum and product + signs. For documents with very simple needs in + mathematical symbols, \mst with option + symbolmax may give in the end a PDF file quite + smaller than the one one would get without the + package. +\item[{defaultmathsizes}:] \mst sets up bigger sizes +for subscripts (it also copies code from the |moresize| package to redefine + \cs{Huge} and define \cs{HUGE}). Use this option to prevent it from + doing so. +\item[{defaultalphabets}:] by default, \mst redeclares the math + alphabets \cs{mathrm}, \cs{mathit}, \cs{mathtt} etc\dots{} (but not + \cs{mathcal} of course) to refer to the current document text fonts (at the + time of loading the package and in each \mst math version). Use + this option to prevent it from doing so (each alphabet also has + its own disabling option). +\end{description} - \subsection{Complete list of options} +\subsection{Complete list of options} + Some items are described succinctly as more developed descriptions were + given earlier. They may sometimes simplify by omission + and not consider all possible configurations, particularly those + resulting from usage of the package commands in the preamble to + configure math versions. \begin{enumerate}[label=$\bullet$, leftmargin=1em] \item basic: only mathastextify letters and digits. \item subdued: do not change the default fonts or the math alphabets in math @@ -4183,13 +4776,63 @@ all the glyphs of the Euler font, if option |eulergreek| (or option |subdued| \cs{MTversion\{normal\}} and \cs{MTversion\{bold\}} do \csb{MTmathoperatorsdonotobeymathxx}, \csb{MTeasynonlettersdonotobeymathxx}, \csb{MTnonlettersdonotobeymathxx}, \csb{MTmathstandardletters}. - \item italic: the letters default to italic shape in - math mode. - \item frenchmath: italic lowercase Latin letters, but - uppercase Latin letters in the same font as for digits and - operator names. In general this means that they will be - upright. In case of the \blueit{LGRgreek} option, frenchmath - influences also the shape of the Greek letters. + \item italic: the Latin letters (both lowercase and uppercase) use + the italic shape (\cs{itdefault}) in math mode; if the package + handles Greek letters, also lowercase (but not uppercase) Greek + letters will use this a priori italic shape except if some other + option such as \blueit{upgreek} was used.% + \footnote{Since \texttt{1.3x}, in presence of the \blueit{LGRgreek} + option in addition to \blueit{italic}, the \cs{MTgreekitdefault} + shape is then used for lowercase Greek letters and + \cs{MTgreekupdefault} for uppercase.} + \item frenchmath: it configures for lowercase Latin letters to use + italic shape (\cs{itdefault}), and uppercase Latin letters to be in + same shape as for digits and operator names (i.e.\@ a priori + \cs{shapedefault}). If the package handles Greek letters both + lowercase% +% +\footnote{If under control of the package.} + and uppercase Greek letters will use the same shape as + operator names, except if some other option such as \blueit{itgreek} + was used.% + \footnote{Under \blueit{LGRgreek} and since |1.3x|, the + \cs{MTgreekupdefault} is used for Greek letters if no other option + such as \blueit{itgreek} was employed.} +\item ncccomma:\RLNote{new:}{1.3x} it triggers the loading of the + \href{https://ctan.org/pkg/ncccomma}{ncccomma} package% +% +\footnote{Alexander I. \textsc{Rozhenko}, \emph{Use comma as decimal + separator in mathematics}, \url{https://ctan.org/pkg/ncccomma}.} +% +and configures \mst for compatibility (this is canceled if +\blueit{nopunctuation} option is used, or \blueit{basic} as it implies +it). + +The effect of the \href{https://ctan.org/pkg/ncccomma}{ncccomma} package will +apply to the entire document body, even to portions using the +\emph{normal} or \emph{bold} math versions with \mst having been loaded with +the \blueit{subdued} +option. Also, in case of usage of package |babel| with |french| option, the +effect of \href{https://ctan.org/pkg/ncccomma}{ncccomma} will also apply to +those parts of the document using another language than French.% +% +\footnote{There is a `feature' of \texttt{babel-french} that the effect of + package \href{https://ctan.org/pkg/ncccomma}{ncccomma} is canceled if one + switches from French to English; and switching back to French does not + reenact it. For background on this issue see + \url{https://github.com/latex3/babel/issues/190}.} +\item binarysemicolon:\RLNote{new:}{1.3x} sets (except if + \blueit{nopunctuation} is used) the semi-colon to let \TeX\ use + spacing of binary type, not punctuation type, around the semi-colon + (it is often used in French mathematical typesetting as separator in + interval denotations, when the extremities are decimal numbers, as the + comma is used as decimal separator). + + The effect applies to all math versions, even the \emph{normal} and + \emph{bold} math versions with \mst having been loaded with the + \blueit{subdued} option. +\item frenchmath*:\RLNote{new:}{1.3x} does all three of \blueit{frenchmath}, + \blueit{ncccomma} and \blueit{binarysemicolon}. \item endash, emdash: use the text font en-dash (\textendash) or even the em-dash (\textemdash, but this seems crazy) for the minus sign rather than {}-{}. endash option is default for the package. @@ -4247,11 +4890,17 @@ Symbol font. \item symbolmax: combines symbol and symboldelimiters. \item eulergreek, eulerdigits: to let Greek letters (digits) use the Euler font. - \item LGRgreek: this is for a font which is also available in - LGR-encoding. It is possible to change the font per math version, via - the use of the \MTgreekfont command in the preamble. + \item LGRgreek: this configures the Greek letters in math mode to use the + text font in + LGR-encoding (it is up to user to ascertain that the font familty is indeed + available in the LGR encoding). It also + activates the command \MTgreekfont which can be used to set a specific + (LGR-encoded) font family for Greek, possibly not related to the font family + for Latin letters. But each use \MTgreekfont must be followed by a \Mathastext + or \Mathastext\oarg{version\_name} to be effective. \item LGRgreeks: each declared math version will be supposed to be with a - font which is also available in LGR-encoding. + font which is also available in LGR-encoding. Attention that macro + \MTgreekfont becomes then inoperant. \item selfGreek: this is for a font which is also available in |OT1|-encoding and contains the glyphs for the default eleven capital Greek letters. @@ -4262,11 +4911,14 @@ letters. options to tell to use \cs{itdefault} or \cs{updefault} for the lowercase and uppercase (or only the uppercase) Greek letters. Only operant in the case of the |LGRgreek(s)| and |selfGreek(s)| options. + + \RLNote{changed:}{1.3x}These options now use \cs{MTgreekitdefault} and + \cs{MTgreekupdefault} rather. \item mathaccents: use the text font also for the math accents. As in vanilla \LaTeX{}, they are taken from the font for the digits and \cs{log}-like names. Obey the alphabet changing commands. - \item unimathaccents:\RLNote{new:}{1.3u} extends |mathaccents| to + \item unimathaccents:\RightNote{1.3u} extends |mathaccents| to OpenType fonts. Gave bad results in my brief testing. \item defaultbf, defaultit, defaultsf, defaulttt: do not set up, respectively, the \cs{mathbf}, \cs{mathit}, \cs{mathsf}, @@ -4315,7 +4967,7 @@ Numerous examples will be found there:\\ \begingroup \def\MacroFont{\footnotesize\normalfont} -% utilis par verbatim en classe scrdoc +% utilis par verbatim en classe scrdoc (ou plutt shortvrb) % (rappel: macrocode utilise \macro@font qui est MacroFont at begin document) \makeatletter @@ -4374,6 +5026,7 @@ Numerous examples will be found there:\\ \lowercase{\endgroup\long\def-}##1\par{\catcode`\M=12 \catcode`\-=12 }% \catcode`1=\active \catcode`\` 9 % lgrement ennuyeux mais bon, c'est le plus simple. + \nonfrenchspacing \input ChangeLog.md } @@ -4404,9 +5057,7 @@ Numerous examples will be found there:\\ \fi -\makeatletter \StopEventually{\end{document}\endinput} -\makeatother \cleardoublepage \newgeometry{hmarginratio=3:2} @@ -4442,7 +5093,7 @@ Numerous examples will be found there:\\ % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage {mathastext} - [2019/11/16 v1.3w Use the text font in math mode (JFB)] + [2022/11/04 v1.3y Use the text font in math mode (JFB)] % \end{macrocode} % \LaTeX{} |2019-10-01| release has made robust math macros such as the math % accents and \cs{hbar}. @@ -4557,14 +5208,22 @@ Numerous examples will be found there:\\ % \begin{macro}{Package options} % |2011/03/09|: |1.13| introduces the option LGRgreek and systematic use % of \cs{if...} conditionals, for better readability (by myself) of -% the code. +% the code. +% +% |1.3x| of |2022/11/03| adds |ncccomma|, |binarysemicolon| and |frenchmath*| options. % \begin{macrocode} \newif\ifmst@italic \newif\ifmst@frenchmath +\newif\ifmst@ncccomma +\newif\ifmst@binarysemicolon \DeclareOption{italic}{\mst@italictrue \def\mst@ltsh{\itdefault}} \DeclareOption{frenchmath}{\mst@frenchmathtrue\mst@italictrue \def\mst@ltsh{\itdefault}} + \DeclareOption{ncccomma}{\mst@ncccommatrue} + \DeclareOption{binarysemicolon}{\mst@binarysemicolontrue} + \DeclareOption{frenchmath*}{\mst@frenchmathtrue\mst@italictrue + \def\mst@ltsh{\itdefault}\mst@ncccommatrue\mst@binarysemicolontrue} \newif\ifmst@endash\mst@endashtrue \DeclareOption{endash}{\mst@endashtrue} \DeclareOption{noendash}{\mst@endashfalse} @@ -4686,7 +5345,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \newif\ifmst@subdued \DeclareOption{subdued}{\mst@subduedtrue} % \end{macrocode} -% |1.3q|: the unicode option. Thanks to \textsc{Tobias~Brink} for suggesting its +% |1.3q|: the unicode option. Thanks to Tobias~\textsc{Brink} for suggesting its % incorporation. The parsing of |\CurrentOption| does not seek any robustness, % it just does its job if the option is used correctly. % \begin{macrocode} @@ -5765,10 +6424,9 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % \end{macro} % \end{macro} % \begin{macro}{LGRgreek} +% \begin{macro}{\MTgreekupdefault} +% \begin{macro}{\MTgreekitdefault} % \begin{macro}{selfGreek} -% \begin{macro}{mtlgrfontupper} -% \begin{macro}{mtlgrfontlower} -% \begin{macro}{mtselfGreekfont} % |1.14b|: We can not move the \cs{DeclareSymbolFont} to the % \cs{Mathastext} macro because it resets the font family in *all* % math versions, and some could have been defined by the user with @@ -5794,31 +6452,118 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % commands \cs{MTitgreek} etc... will be used in-between calls to % \cs{Mathastext} and re-adjust the shapes. And the command \cs{MTgreekfont} % changes the Greek font family. +% +% Note that \cs{mst@ltsh} expands to \cs{shapedefault} or \cs{itdefault} +% at this location. +% +% Note added |2022/11/02|: using \cs{MTitgreek} etc... once implies that +% from then on, for subsequent \mst-math versions, the shape of Greek +% letters will not be kept in sync with the shape and lettershape version +% parameters, but only react to the configuration decided by these commands +% (and |italic/frenchmath| options). +% +% Note |2022/10/29|: for some time \cs{updefault} was made into |up| by +% \LaTeX\ (since 2020-02-02 now that I check this out). As a result this +% triggered Font Warnings in the log about the replacement of |up| by |n|. +% +% |1.3x| refactors completely the handling of Greek letter shapes under the +% |LGRgreek(s)| options (and only under them). Under these options we don't +% use one font for lowercase Greek and anotherone for uppercase Greek (some +% above code comments have not been updated) but one math font |mtgreekit| for italic Greek +% and one math font |mtgreekup| for upright Greek. What `italic' and +% `upright' mean is decided by the expansion of \cs{MTgreekitdefault} and +% \cs{MTgreekupdefault}, which give respectively |it| and |n| per default. +% +% If no |itgreek| et al.\@ options or \cs{MTitgreek} et al.\@ commands +% have been used, we need to map \cs{mst@ltsh} (which was used for +% lowercase Greek, except under |frenchmath| option) and \cs{mst@opsh} to +% either `italic' or `upright'. This is done by testing if they hold `it' +% or `sl'. If yes we map to `italic' by setting to false an `up' Boolean, +% if not we leave the `up' Boolean to true. +% +% In order to maintain perfect identical code for non-|LGRgreek|, the +% |LGRgreek| related code is simply added to previously shared +% constructions. The |LGRgreek| behaviour will remain identical in most +% documents, but for example those who used some adventurous `|sc|' for the +% main shape (the one used per default for operator names) need to adjust +% \cs{MTgreekupdefault} to be `|sc|', for the math version being defined, or +% the default one if this is followed by usage of \cs{Mathastext}. +% +% The new |LGRgreek|-specific commands \cs{MTgreekupdefault} and +% \cs{MTgreekitdefault} are the only ones in the package which can possibly +% be defined previously to loading it. (Perhaps some other macros could be +% also converted to being modifiable prior to loading \mst, thus avoiding +% potential need to use \cs{Mathastext} at least once after loading the +% package; to be examined next time --- which may be a long time in +% future!). +% % \begin{macrocode} +\providecommand*\MTgreekupdefault{n} +\providecommand*\MTgreekitdefault{it} +\newif\ifmst@lgr@lower@up +\newif\ifmst@lgr@upper@up \def\mst@update@greeksh{ - \def\mst@greek@lsh{\mst@ltsh} %% default behavior - \def\mst@greek@ush{\mst@opsh} - \ifmst@itgreek\def\mst@greek@lsh{\itdefault} - \def\mst@greek@ush{\itdefault}\fi - \ifmst@upgreek\def\mst@greek@lsh{\updefault} - \def\mst@greek@ush{\updefault}\fi + \def\mst@lgr@lsh{\mst@ltsh} + \def\mst@lgr@ush{\mst@opsh} + \mst@lgr@lower@uptrue + \expandafter\in@\expanded{{\mst@ltsh.}}{it.,sl.}% + \ifin@\mst@lgr@lower@upfalse\fi + \mst@lgr@upper@uptrue + \expandafter\in@\expanded{{\mst@opsh.}}{it.,sl.}% + \ifin@\mst@lgr@upper@upfalse\fi + \ifmst@itgreek + \def\mst@lgr@lsh{\MTgreekitdefault} + \def\mst@lgr@ush{\MTgreekitdefault} + \mst@lgr@lower@upfalse + \mst@lgr@upper@upfalse + \fi + \ifmst@upgreek + \def\mst@lgr@lsh{\MTgreekupdefault} + \def\mst@lgr@ush{\MTgreekupdefault} + \mst@lgr@lower@uptrue + \mst@lgr@upper@uptrue + \fi \ifmst@frenchmath \ifmst@itgreek\else \ifmst@upgreek\else - \def\mst@greek@lsh{\mst@opsh} - \def\mst@greek@ush{\mst@opsh} + \def\mst@lgr@lsh{\mst@opsh} + \def\mst@lgr@ush{\mst@opsh} + \mst@lgr@lower@uptrue + \mst@lgr@upper@uptrue \fi\fi \fi \ifcase\mst@greek@select - \or\def\mst@greek@ush{\itdefault} - \or\def\mst@greek@ush{\updefault} - \fi} + \or + \def\mst@lgr@ush{\MTgreekitdefault} + \mst@lgr@upper@upfalse + \or + \def\mst@lgr@ush{\MTgreekupdefault} + \mst@lgr@upper@uptrue + \fi +} \mst@update@greeksh +% \end{macrocode} +% \begin{macro}{mtgreekup} +% \begin{macro}{mtgreekit} +% \begin{macro}{\mathgreekup} +% \begin{macro}{\mathgreekit} +% The |1.3x| refactoring was done in order to be able to define \cs{alphaup}, +% etc \dots\ control sequences (\cs{mathchar}'s), as well as the italic ones. +% Formerly two math fonts were created but to be used respectively with +% lowercase or uppercase Greek. Now we have two fonts indexed by their shape, +% and we take advantage to create two math alphabets mapping to the two +% defined symbol fonts |mtgreekup| and |mtgreekit|. +% \begin{macrocode} \ifmst@LGRgreek \DeclareFontEncoding{LGR}{}{} - \DeclareSymbolFont{mtlgrfontlower}{LGR}{\mst@fam}{\mst@ser}{\mst@greek@lsh} - \DeclareSymbolFont{mtlgrfontupper}{LGR}{\mst@fam}{\mst@ser}{\mst@greek@ush} + \DeclareSymbolFont{mtgreekup}{LGR}{\mst@fam}{\mst@ser}{\MTgreekupdefault} + \DeclareSymbolFont{mtgreekit}{LGR}{\mst@fam}{\mst@ser}{\MTgreekitdefault} + \DeclareSymbolFontAlphabet{\mathgreekup}{mtgreekup} + \DeclareSymbolFontAlphabet{\mathgreekit}{mtgreekit} \else +% \end{macrocode} +% \begin{macro}{mtselfGreekfont} +% \begin{macrocode} \ifmst@selfGreek \DeclareSymbolFont{mtselfGreekfont}{OT1}{\mst@fam}{\mst@ser}{\mst@greek@ush} \fi\fi @@ -5828,6 +6573,10 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % \end{macro} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % \begin{macro}{mteulervm} % \begin{macro}{\MathEuler} % \begin{macro}{\MathEulerBold} @@ -5946,8 +6695,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \newcommand*\MTencoding[1]{\def\mst@enc{#1}} \newcommand*\MTfamily[1]{\def\mst@fam{#1}} \newcommand*\MTseries[1]{\def\mst@ser{#1}} -\newcommand*\MTshape[1]{\def\mst@opsh{#1} - \ifmst@italic\else\def\mst@ltsh{#1}\fi} +\newcommand*\MTshape[1]{\def\mst@opsh{#1}\ifmst@italic\else\def\mst@ltsh{#1}\fi} \newcommand*\MTboldvariant[1]{\def\mst@bold{#1}} \newcommand*\MTlettershape[1]{\def\mst@ltsh{#1}} \let\Mathastextencoding\MTencoding @@ -5971,15 +6719,14 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % |1.15c|: These new macros can be used in-between calls to \cs{Mathastext}. % They reset the shapes for Greek letters (applies to LGRgreek(s) and % selfGreek(s) options). The \cs{MTgreekfont} presupposes either LGRgreek or -% selfGreek. |\MTgreekfont{\familydefault}| acts like turning on LGRgreeks or +% selfGreek (it is inoperant under LGRgreeks or selfGreeks). +% |\MTgreekfont{\familydefault}| is somewhat like using LGRgreeks or % selfGreeks. % \begin{macrocode} - \newcommand*\MTitgreek{% -\mst@itgreektrue\mst@upgreekfalse\def\mst@greek@select{0}} - \newcommand*\MTupgreek{% -\mst@upgreektrue\mst@itgreekfalse\def\mst@greek@select{0}} - \newcommand*\MTitGreek{\def\mst@greek@select{1}} - \newcommand*\MTupGreek{\def\mst@greek@select{2}} +\newcommand*\MTitgreek{\mst@itgreektrue\mst@upgreekfalse\def\mst@greek@select{0}} +\newcommand*\MTupgreek{\mst@upgreektrue\mst@itgreekfalse\def\mst@greek@select{0}} +\newcommand*\MTitGreek{\def\mst@greek@select{1}} +\newcommand*\MTupGreek{\def\mst@greek@select{2}} \let\Mathastextitgreek\MTitgreek \let\Mathastextupgreek\MTupgreek \let\MathastextitGreek\MTitGreek @@ -6150,35 +6897,82 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % 1 the number of fonts embedded at the end in the PDF). % % [(Dec. 2012) should I reexamine these definitive sounding remarks?] +% +% |1.3x| of |2022/11/03| adds support for |ncccomma| option. +% +% Some non-obvious hack is needed for compatibility with our home-made +% mechanism of non-letters obeying math alphabet commands. Alternative +% would have been to not load at all this package and provide the +% functionality purely by our own means (rewriting entirely its two +% macros after loading the package would not have made much sense). % \begin{macrocode} -\ifmst@nopunct\else\typeout{** punctuation\string: \string, \string. \string: \string; and \string\colon} -\DeclareMathSymbol{,}{\mathpunct}{\mst@font@tbu}{"2C} -\DeclareMathSymbol{\mst@varfam@comma}{\mathalpha}{\mst@font@tbu}{"2C} -\expandafter\mst@addtodo@nonletters\string,\mathpunct\mst@varfam@comma -\DeclareMathSymbol{.}{\mathord}{\mst@font@tbu}{"2E} -\DeclareMathSymbol{\mst@varfam@dot}{\mathalpha}{\mst@font@tbu}{"2E} -\mst@addtodo@easynonletters\.\mst@varfam@dot -\DeclareMathSymbol{:}{\mathrel}{\mst@font@tbu}{"3A} % relation spacing -\DeclareMathSymbol{\mst@varfam@colon}{\mathalpha}{\mst@font@tbu}{"3A} -\expandafter\mst@addtodo@nonletters\string:\mathrel\mst@varfam@colon -\@ifpackageloaded{amsmath} -{} % \colon defined in amsmath.sty in terms of : with some enlarged explicit - % spacing. No need to intervene. -{% no amsmath, use standard punctuation spacing -\let\colon\undefined - % the reason is if some package has redefined \colon which then - % can not be used in \cs{DeclareMathSymbol} anymore (we - % shamelessly overwrite...) +\ifmst@nopunct\else\typeout{** punctuation\string: \string, \string. \string: + \string; and \string\colon} + \DeclareMathSymbol{,}{\mathpunct}{\mst@font@tbu}{"2C} + \DeclareMathSymbol{\mst@varfam@comma}{\mathalpha}{\mst@font@tbu}{"2C} + \ifmst@ncccomma + \typeout{** loading package ncccomma for `smart comma\string'} + \RequirePackage{ncccomma}% +% \end{macrocode} +% Work around some bad interaction of |ncccomma|, |numprint| with +% |autolanguage| and |babel-frenchb|. Some hesitation whether I should +% use the \cs{noextrasfrench} to work around |babel-frenchb| code +% influencing non-French sections in the document. +% \begin{macrocode} + \AtBeginDocument{\mathcode`\,="8000\relax + \@ifpackageloaded{babel}{% + \addto\noextrasfrench{\mathcode`\,="8000\relax}% + \addto\extrasfrench{\mathcode`\,="8000\relax}% + }{}} + \let\mathcomma\relax + \DeclareMathSymbol{\mathcomma}{\mathpunct}{\mst@font@tbu}{"2C} +% \end{macrocode} +% Complications for compatibility with the \cs{MTnonlettersobeymathxx} mechanism. +% \begin{macrocode} + \edef\mst@NCC@comma{\let\noexpand\@empty\mathpunct + \unexpanded\expandafter{\NCC@comma}% + \let\noexpand\@empty\noexpand\empty} + \mst@do@nonletters\expandafter{\the\mst@do@nonletters + \let\mathcomma\mst@varfam@comma + \let\NCC@comma\mst@NCC@comma + } + \else + \expandafter\mst@addtodo@nonletters\string,\mathpunct\mst@varfam@comma + \fi % ncccomma true + \DeclareMathSymbol{.}{\mathord}{\mst@font@tbu}{"2E} + \DeclareMathSymbol{\mst@varfam@dot}{\mathalpha}{\mst@font@tbu}{"2E} + \mst@addtodo@easynonletters\.\mst@varfam@dot + \DeclareMathSymbol{:}{\mathrel}{\mst@font@tbu}{"3A} % relation spacing + \DeclareMathSymbol{\mst@varfam@colon}{\mathalpha}{\mst@font@tbu}{"3A} + \expandafter\mst@addtodo@nonletters\string:\mathrel\mst@varfam@colon + \@ifpackageloaded{amsmath} + {} % \colon defined in amsmath.sty in terms of : with some enlarged explicit + % spacing. No need to intervene. + {% no amsmath, use standard punctuation spacing + \let\colon\undefined + % the reason is if some package has redefined \colon which then + % can not be used in \cs{DeclareMathSymbol} anymore (we + % shamelessly overwrite...) \DeclareMathSymbol{\colon}{\mathpunct}{\mst@font@tbu}{"3A} \mst@do@nonletters\expandafter{\the\mst@do@nonletters % \end{macrocode} % |1.3v| uses \cs{protected} for the (optional) \cs{colon} redefinition. % \begin{macrocode} - \protected\def\colon{\mathpunct{\mst@varfam@colon}}}} -\DeclareMathSymbol{;}{\mathpunct}{\mst@font@tbu}{"3B} -\DeclareMathSymbol{\mst@varfam@pointvirgule}{\mathalpha}{\mst@font@tbu}{"3B} -\expandafter\mst@addtodo@nonletters\string;\mathpunct\mst@varfam@pointvirgule -\fi + \protected\def\colon{\mathpunct{\mst@varfam@colon}}}% + } + \DeclareMathSymbol{\mst@varfam@pointvirgule}{\mathalpha}{\mst@font@tbu}{"3B} +% \end{macrocode} +% |1.3x| adds |binarysemicolon| option. +% \begin{macrocode} + \ifmst@binarysemicolon + \typeout{** semi-colon set to be of type \string\mathbin} + \DeclareMathSymbol{;}{\mathbin}{\mst@font@tbu}{"3B} + \expandafter\mst@addtodo@nonletters\string;\mathbin\mst@varfam@pointvirgule + \else + \DeclareMathSymbol{;}{\mathpunct}{\mst@font@tbu}{"3B} + \expandafter\mst@addtodo@nonletters\string;\mathpunct\mst@varfam@pointvirgule + \fi % binarysemicolno +\fi % end \ifmst@nopunct else branch % \end{macrocode} % \begin{macro}{\relbar} % Due to the way = and - are used by \LaTeX{} in arrows, we will @@ -7007,10 +7801,10 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \DeclareMathSymbol{\mst@chi}{\mathord}{mtpsymbol}{"63} \DeclareMathSymbol{\mst@psi}{\mathord}{mtpsymbol}{"79} \DeclareMathSymbol{\mst@omega}{\mathord}{mtpsymbol}{"77} - \let\mst@varepsilon=\mst@epsilon + \let\mst@varepsilon=\mst@epsilon \DeclareMathSymbol{\mst@vartheta}{\mathord}{mtpsymbol}{"4A} \DeclareMathSymbol{\mst@varpi}{\mathord}{mtpsymbol}{"76} - \let\mst@varrho=\mst@rho + \let\mst@varrho=\mst@rho \DeclareMathSymbol{\mst@varsigma}{\mathord}{mtpsymbol}{"56} \DeclareMathSymbol{\mst@varphi}{\mathord}{mtpsymbol}{"6A} \DeclareMathSymbol{\mst@partial}{\mathord}{mtpsymbol}{"B6} @@ -7018,68 +7812,190 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \fi \fi \fi +% \end{macrocode} +% \begin{macro}{\alphaup etc...} +% Completely refactored at |1.3x| to define |\Alphaup|, |\Alphait|, +% |\alphaup|, |\alphait|, etc\dots{} and prepare templates |\Alpha|, \dots{}, +% |\alpha|, \dots{}, which when activating a math version will be submitted to +% an |\expanded|, whose behaviour will depend on version-specific conditionals. +% \begin{macrocode} \ifmst@LGRgreek % cf http://milde.users.sourceforge.net/LGR/lgrxenc.def.html % et greek.ldf du package babel -\DeclareMathSymbol{\mst@Alpha}{\mathalpha}{mtlgrfontupper}{65} -\DeclareMathSymbol{\mst@Beta}{\mathalpha}{mtlgrfontupper}{66} -\DeclareMathSymbol{\mst@Epsilon}{\mathalpha}{mtlgrfontupper}{69} -\DeclareMathSymbol{\mst@Zeta}{\mathalpha}{mtlgrfontupper}{90} -\DeclareMathSymbol{\mst@Eta}{\mathalpha}{mtlgrfontupper}{72} -\DeclareMathSymbol{\mst@Iota}{\mathalpha}{mtlgrfontupper}{73} -\DeclareMathSymbol{\mst@Kappa}{\mathalpha}{mtlgrfontupper}{75} -\DeclareMathSymbol{\mst@Mu}{\mathalpha}{mtlgrfontupper}{77} -\DeclareMathSymbol{\mst@Nu}{\mathalpha}{mtlgrfontupper}{78} -\DeclareMathSymbol{\mst@Omicron}{\mathalpha}{mtlgrfontupper}{79} -\DeclareMathSymbol{\mst@Rho}{\mathalpha}{mtlgrfontupper}{82} -\DeclareMathSymbol{\mst@Tau}{\mathalpha}{mtlgrfontupper}{84} -\DeclareMathSymbol{\mst@Chi}{\mathalpha}{mtlgrfontupper}{81} -% -\DeclareMathSymbol{\mst@Digamma}{\mathalpha}{mtlgrfontlower}{195} -% -\DeclareMathSymbol{\mst@Gamma}{\mathalpha}{mtlgrfontupper}{71} -\DeclareMathSymbol{\mst@Delta}{\mathalpha}{mtlgrfontupper}{68} -\DeclareMathSymbol{\mst@Theta}{\mathalpha}{mtlgrfontupper}{74} -\DeclareMathSymbol{\mst@Lambda}{\mathalpha}{mtlgrfontupper}{76} -\DeclareMathSymbol{\mst@Xi}{\mathalpha}{mtlgrfontupper}{88} -\DeclareMathSymbol{\mst@Pi}{\mathalpha}{mtlgrfontupper}{80} -\DeclareMathSymbol{\mst@Sigma}{\mathalpha}{mtlgrfontupper}{83} -\DeclareMathSymbol{\mst@Upsilon}{\mathalpha}{mtlgrfontupper}{85} -\DeclareMathSymbol{\mst@Phi}{\mathalpha}{mtlgrfontupper}{70} -\DeclareMathSymbol{\mst@Psi}{\mathalpha}{mtlgrfontupper}{89} -\DeclareMathSymbol{\mst@Omega}{\mathalpha}{mtlgrfontupper}{87} -% -\DeclareMathSymbol{\mst@alpha}{\mathalpha}{mtlgrfontlower}{97} -\DeclareMathSymbol{\mst@beta}{\mathalpha}{mtlgrfontlower}{98} -\DeclareMathSymbol{\mst@gamma}{\mathalpha}{mtlgrfontlower}{103} -\DeclareMathSymbol{\mst@delta}{\mathalpha}{mtlgrfontlower}{100} -\DeclareMathSymbol{\mst@epsilon}{\mathalpha}{mtlgrfontlower}{101} -\DeclareMathSymbol{\mst@zeta}{\mathalpha}{mtlgrfontlower}{122} -\DeclareMathSymbol{\mst@eta}{\mathalpha}{mtlgrfontlower}{104} -\DeclareMathSymbol{\mst@theta}{\mathalpha}{mtlgrfontlower}{106} -\DeclareMathSymbol{\mst@iota}{\mathalpha}{mtlgrfontlower}{105} -\DeclareMathSymbol{\mst@kappa}{\mathalpha}{mtlgrfontlower}{107} -\DeclareMathSymbol{\mst@lambda}{\mathalpha}{mtlgrfontlower}{108} -\DeclareMathSymbol{\mst@mu}{\mathalpha}{mtlgrfontlower}{109} -\DeclareMathSymbol{\mst@nu}{\mathalpha}{mtlgrfontlower}{110} -\DeclareMathSymbol{\mst@xi}{\mathalpha}{mtlgrfontlower}{120} -\DeclareMathSymbol{\mst@omicron}{\mathalpha}{mtlgrfontlower}{111} -\DeclareMathSymbol{\mst@pi}{\mathalpha}{mtlgrfontlower}{112} -\DeclareMathSymbol{\mst@rho}{\mathalpha}{mtlgrfontlower}{114} -\DeclareMathSymbol{\mst@sigma}{\mathalpha}{mtlgrfontlower}{115} -\DeclareMathSymbol{\mst@tau}{\mathalpha}{mtlgrfontlower}{116} -\DeclareMathSymbol{\mst@upsilon}{\mathalpha}{mtlgrfontlower}{117} -\DeclareMathSymbol{\mst@phi}{\mathalpha}{mtlgrfontlower}{102} -\DeclareMathSymbol{\mst@chi}{\mathalpha}{mtlgrfontlower}{113} -\DeclareMathSymbol{\mst@psi}{\mathalpha}{mtlgrfontlower}{121} -\DeclareMathSymbol{\mst@omega}{\mathalpha}{mtlgrfontlower}{119} -% -\DeclareMathSymbol{\mst@digamma}{\mathalpha}{mtlgrfontlower}{147} + \DeclareMathSymbol{\Alphaup}{\mathalpha}{mtgreekup}{65} + \DeclareMathSymbol{\Betaup}{\mathalpha}{mtgreekup}{66} + \DeclareMathSymbol{\Epsilonup}{\mathalpha}{mtgreekup}{69} + \DeclareMathSymbol{\Zetaup}{\mathalpha}{mtgreekup}{90} + \DeclareMathSymbol{\Etaup}{\mathalpha}{mtgreekup}{72} + \DeclareMathSymbol{\Iotaup}{\mathalpha}{mtgreekup}{73} + \DeclareMathSymbol{\Kappaup}{\mathalpha}{mtgreekup}{75} + \DeclareMathSymbol{\Muup}{\mathalpha}{mtgreekup}{77} + \DeclareMathSymbol{\Nuup}{\mathalpha}{mtgreekup}{78} + \DeclareMathSymbol{\Omicronup}{\mathalpha}{mtgreekup}{79} + \DeclareMathSymbol{\Rhoup}{\mathalpha}{mtgreekup}{82} + \DeclareMathSymbol{\Tauup}{\mathalpha}{mtgreekup}{84} + \DeclareMathSymbol{\Chiup}{\mathalpha}{mtgreekup}{81} + % + \DeclareMathSymbol{\Alphait}{\mathalpha}{mtgreekit}{65} + \DeclareMathSymbol{\Betait}{\mathalpha}{mtgreekit}{66} + \DeclareMathSymbol{\Epsilonit}{\mathalpha}{mtgreekit}{69} + \DeclareMathSymbol{\Zetait}{\mathalpha}{mtgreekit}{90} + \DeclareMathSymbol{\Etait}{\mathalpha}{mtgreekit}{72} + \DeclareMathSymbol{\Iotait}{\mathalpha}{mtgreekit}{73} + \DeclareMathSymbol{\Kappait}{\mathalpha}{mtgreekit}{75} + \DeclareMathSymbol{\Muit}{\mathalpha}{mtgreekit}{77} + \DeclareMathSymbol{\Nuit}{\mathalpha}{mtgreekit}{78} + \DeclareMathSymbol{\Omicronit}{\mathalpha}{mtgreekit}{79} + \DeclareMathSymbol{\Rhoit}{\mathalpha}{mtgreekit}{82} + \DeclareMathSymbol{\Tauit}{\mathalpha}{mtgreekit}{84} + \DeclareMathSymbol{\Chiit}{\mathalpha}{mtgreekit}{81} +% \end{macrocode} +% |1.3w| and earlier had a bug regarding Digamma which was set up +% to use same font shape as for lowercase digamma. +% \begin{macrocode} + \DeclareMathSymbol{\Digammaup}{\mathalpha}{mtgreekup}{195} + \DeclareMathSymbol{\Digammait}{\mathalpha}{mtgreekit}{195} + % + \DeclareMathSymbol{\Gammaup}{\mathalpha}{mtgreekup}{71} + \DeclareMathSymbol{\Deltaup}{\mathalpha}{mtgreekup}{68} + \DeclareMathSymbol{\Thetaup}{\mathalpha}{mtgreekup}{74} + \DeclareMathSymbol{\Lambdaup}{\mathalpha}{mtgreekup}{76} + \DeclareMathSymbol{\Xiup}{\mathalpha}{mtgreekup}{88} + \DeclareMathSymbol{\Piup}{\mathalpha}{mtgreekup}{80} + \DeclareMathSymbol{\Sigmaup}{\mathalpha}{mtgreekup}{83} + \DeclareMathSymbol{\Upsilonup}{\mathalpha}{mtgreekup}{85} + \DeclareMathSymbol{\Phiup}{\mathalpha}{mtgreekup}{70} + \DeclareMathSymbol{\Psiup}{\mathalpha}{mtgreekup}{89} + \DeclareMathSymbol{\Omegaup}{\mathalpha}{mtgreekup}{87} + % + \DeclareMathSymbol{\Gammait}{\mathalpha}{mtgreekit}{71} + \DeclareMathSymbol{\Deltait}{\mathalpha}{mtgreekit}{68} + \DeclareMathSymbol{\Thetait}{\mathalpha}{mtgreekit}{74} + \DeclareMathSymbol{\Lambdait}{\mathalpha}{mtgreekit}{76} + \DeclareMathSymbol{\Xiit}{\mathalpha}{mtgreekit}{88} + \DeclareMathSymbol{\Piit}{\mathalpha}{mtgreekit}{80} + \DeclareMathSymbol{\Sigmait}{\mathalpha}{mtgreekit}{83} + \DeclareMathSymbol{\Upsilonit}{\mathalpha}{mtgreekit}{85} + \DeclareMathSymbol{\Phiit}{\mathalpha}{mtgreekit}{70} + \DeclareMathSymbol{\Psiit}{\mathalpha}{mtgreekit}{89} + \DeclareMathSymbol{\Omegait}{\mathalpha}{mtgreekit}{87} + % + \def\mst@Alpha{\ifmst@lgr@upper@up\Alphaup\else\Alphait\fi}% + \def\mst@Beta{\ifmst@lgr@upper@up\Betaup\else\Betait\fi}% + \def\mst@Epsilon{\ifmst@lgr@upper@up\Epsilonup\else\Epsilonit\fi}% + \def\mst@Zeta{\ifmst@lgr@upper@up\Zetaup\else\Zetait\fi}% + \def\mst@Eta{\ifmst@lgr@upper@up\Etaup\else\Etait\fi}% + \def\mst@Iota{\ifmst@lgr@upper@up\Iotaup\else\Iotait\fi}% + \def\mst@Kappa{\ifmst@lgr@upper@up\Kappaup\else\Kappait\fi}% + \def\mst@Mu{\ifmst@lgr@upper@up\Muup\else\Muit\fi}% + \def\mst@Nu{\ifmst@lgr@upper@up\Nuup\else\Nuit\fi}% + \def\mst@Omicron{\ifmst@lgr@upper@up\Omicronup\else\Omicronit\fi}% + \def\mst@Rho{\ifmst@lgr@upper@up\Rhoup\else\Rhoit\fi}% + \def\mst@Tau{\ifmst@lgr@upper@up\Tauup\else\Tauit\fi}% + \def\mst@Chi{\ifmst@lgr@upper@up\Chiup\else\Chiit\fi}% + % + \def\mst@Digamma{\ifmst@lgr@upper@up\Digammaup\else\Digammait\fi}% + % + \def\mst@Gamma{\ifmst@lgr@upper@up\Gammaup\else\Gammait\fi}% + \def\mst@Delta{\ifmst@lgr@upper@up\Deltaup\else\Deltait\fi}% + \def\mst@Theta{\ifmst@lgr@upper@up\Thetaup\else\Thetait\fi}% + \def\mst@Lambda{\ifmst@lgr@upper@up\Lambdaup\else\Lambdait\fi}% + \def\mst@Xi{\ifmst@lgr@upper@up\Xiup\else\Xiit\fi}% + \def\mst@Pi{\ifmst@lgr@upper@up\Piup\else\Piit\fi}% + \def\mst@Sigma{\ifmst@lgr@upper@up\Sigmaup\else\Sigmait\fi}% + \def\mst@Upsilon{\ifmst@lgr@upper@up\Upsilonup\else\Upsilonit\fi}% + \def\mst@Phi{\ifmst@lgr@upper@up\Phiup\else\Phiit\fi}% + \def\mst@Psi{\ifmst@lgr@upper@up\Psiup\else\Psiit\fi}% + \def\mst@Omega{\ifmst@lgr@upper@up\Omegaup\else\Omegait\fi}% + % + \DeclareMathSymbol{\alphaup}{\mathalpha}{mtgreekup}{97} + \DeclareMathSymbol{\betaup}{\mathalpha}{mtgreekup}{98} + \DeclareMathSymbol{\gammaup}{\mathalpha}{mtgreekup}{103} + \DeclareMathSymbol{\deltaup}{\mathalpha}{mtgreekup}{100} + \DeclareMathSymbol{\epsilonup}{\mathalpha}{mtgreekup}{101} + \DeclareMathSymbol{\zetaup}{\mathalpha}{mtgreekup}{122} + \DeclareMathSymbol{\etaup}{\mathalpha}{mtgreekup}{104} + \DeclareMathSymbol{\thetaup}{\mathalpha}{mtgreekup}{106} + \DeclareMathSymbol{\iotaup}{\mathalpha}{mtgreekup}{105} + \DeclareMathSymbol{\kappaup}{\mathalpha}{mtgreekup}{107} + \DeclareMathSymbol{\lambdaup}{\mathalpha}{mtgreekup}{108} + \DeclareMathSymbol{\muup}{\mathalpha}{mtgreekup}{109} + \DeclareMathSymbol{\nuup}{\mathalpha}{mtgreekup}{110} + \DeclareMathSymbol{\xiup}{\mathalpha}{mtgreekup}{120} + \DeclareMathSymbol{\omicronup}{\mathalpha}{mtgreekup}{111} + \DeclareMathSymbol{\piup}{\mathalpha}{mtgreekup}{112} + \DeclareMathSymbol{\rhoup}{\mathalpha}{mtgreekup}{114} + \DeclareMathSymbol{\sigmaup}{\mathalpha}{mtgreekup}{115} + \DeclareMathSymbol{\tauup}{\mathalpha}{mtgreekup}{116} + \DeclareMathSymbol{\upsilonup}{\mathalpha}{mtgreekup}{117} + \DeclareMathSymbol{\phiup}{\mathalpha}{mtgreekup}{102} + \DeclareMathSymbol{\chiup}{\mathalpha}{mtgreekup}{113} + \DeclareMathSymbol{\psiup}{\mathalpha}{mtgreekup}{121} + \DeclareMathSymbol{\omegaup}{\mathalpha}{mtgreekup}{119} + % + \DeclareMathSymbol{\digammaup}{\mathalpha}{mtgreekup}{147} % only varsigma defined (I should check this again) -\DeclareMathSymbol{\mst@varsigma}{\mathalpha}{mtlgrfontlower}{99} + \DeclareMathSymbol{\varsigmaup}{\mathalpha}{mtgreekup}{99} + % + \DeclareMathSymbol{\alphait}{\mathalpha}{mtgreekit}{97} + \DeclareMathSymbol{\betait}{\mathalpha}{mtgreekit}{98} + \DeclareMathSymbol{\gammait}{\mathalpha}{mtgreekit}{103} + \DeclareMathSymbol{\deltait}{\mathalpha}{mtgreekit}{100} + \DeclareMathSymbol{\epsilonit}{\mathalpha}{mtgreekit}{101} + \DeclareMathSymbol{\zetait}{\mathalpha}{mtgreekit}{122} + \DeclareMathSymbol{\etait}{\mathalpha}{mtgreekit}{104} + \DeclareMathSymbol{\thetait}{\mathalpha}{mtgreekit}{106} + \DeclareMathSymbol{\iotait}{\mathalpha}{mtgreekit}{105} + \DeclareMathSymbol{\kappait}{\mathalpha}{mtgreekit}{107} + \DeclareMathSymbol{\lambdait}{\mathalpha}{mtgreekit}{108} + \DeclareMathSymbol{\muit}{\mathalpha}{mtgreekit}{109} + \DeclareMathSymbol{\nuit}{\mathalpha}{mtgreekit}{110} + \DeclareMathSymbol{\xiit}{\mathalpha}{mtgreekit}{120} + \DeclareMathSymbol{\omicronit}{\mathalpha}{mtgreekit}{111} + \DeclareMathSymbol{\piit}{\mathalpha}{mtgreekit}{112} + \DeclareMathSymbol{\rhoit}{\mathalpha}{mtgreekit}{114} + \DeclareMathSymbol{\sigmait}{\mathalpha}{mtgreekit}{115} + \DeclareMathSymbol{\tauit}{\mathalpha}{mtgreekit}{116} + \DeclareMathSymbol{\upsilonit}{\mathalpha}{mtgreekit}{117} + \DeclareMathSymbol{\phiit}{\mathalpha}{mtgreekit}{102} + \DeclareMathSymbol{\chiit}{\mathalpha}{mtgreekit}{113} + \DeclareMathSymbol{\psiit}{\mathalpha}{mtgreekit}{121} + \DeclareMathSymbol{\omegait}{\mathalpha}{mtgreekit}{119} + % + \DeclareMathSymbol{\digammait}{\mathalpha}{mtgreekit}{147} + \DeclareMathSymbol{\varsigmait}{\mathalpha}{mtgreekit}{99} + % + \def\mst@alpha{\ifmst@lgr@lower@up\alphaup\else\alphait\fi}% + \def\mst@beta{\ifmst@lgr@lower@up\betaup\else\betait\fi}% + \def\mst@gamma{\ifmst@lgr@lower@up\gammaup\else\gammait\fi}% + \def\mst@delta{\ifmst@lgr@lower@up\deltaup\else\deltait\fi}% + \def\mst@epsilon{\ifmst@lgr@lower@up\epsilonup\else\epsilonit\fi}% + \def\mst@zeta{\ifmst@lgr@lower@up\zetaup\else\zetait\fi}% + \def\mst@eta{\ifmst@lgr@lower@up\etaup\else\etait\fi}% + \def\mst@theta{\ifmst@lgr@lower@up\thetaup\else\thetait\fi}% + \def\mst@iota{\ifmst@lgr@lower@up\iotaup\else\iotait\fi}% + \def\mst@kappa{\ifmst@lgr@lower@up\kappaup\else\kappait\fi}% + \def\mst@lambda{\ifmst@lgr@lower@up\lambdaup\else\lambdait\fi}% + \def\mst@mu{\ifmst@lgr@lower@up\muup\else\muit\fi}% + \def\mst@nu{\ifmst@lgr@lower@up\nuup\else\nuit\fi}% + \def\mst@xi{\ifmst@lgr@lower@up\xiup\else\xiit\fi}% + \def\mst@omicron{\ifmst@lgr@lower@up\omicronup\else\omicronit\fi}% + \def\mst@pi{\ifmst@lgr@lower@up\piup\else\piit\fi}% + \def\mst@rho{\ifmst@lgr@lower@up\rhoup\else\rhoit\fi}% + \def\mst@sigma{\ifmst@lgr@lower@up\sigmaup\else\sigmait\fi}% + \def\mst@tau{\ifmst@lgr@lower@up\tauup\else\tauit\fi}% + \def\mst@upsilon{\ifmst@lgr@lower@up\upsilonup\else\upsilonit\fi}% + \def\mst@phi{\ifmst@lgr@lower@up\phiup\else\phiit\fi}% + \def\mst@chi{\ifmst@lgr@lower@up\chiup\else\chiit\fi}% + \def\mst@psi{\ifmst@lgr@lower@up\psiup\else\psiit\fi}% + \def\mst@omega{\ifmst@lgr@lower@up\omegaup\else\omegait\fi}% + % + \def\mst@digamma{\ifmst@lgr@lower@up\digammaup\else\digammait\fi}% + \def\mst@varsigma{\ifmst@lgr@lower@up\varsigmaup\else\varsigmait\fi}% \fi % \end{macrocode} % \end{macro} +% \end{macro} % \begin{macro}{\MTstandardgreek} % \begin{macro}{\MTcustomgreek} % \begin{macro}{\MTrecordstandardgreek} @@ -7222,68 +8138,92 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \let\wp\mst@origwp \let\ell\mst@origell }% \MTstandardgreek +% \end{macrocode} +% Under |selfGreek| or other Greek option but not |LGRgreek|, these Greek +% letter control sequences are already |\mathchar|'s, but under |LGRgreek| +% they need (well not really, but I feel it is cleaner) expansion which will +% react to the Boolean saying if using `upright' or `italic'. This Boolean +% setting is recorded when declaring a math version and reenacted when +% \cs{MTversion} is encountered in the document body. We must be careful not +% to contaminate things in the principal mode from math version declarations +% but I think my (now quite old) code is globally designed to achieve this +% protection see how \cs{MTDeclareVersion} is done. The \cs{MTcustomgreek} +% will always be executed in preamble at least once, except under |subdued| +% option. +% +% The \cs{expanded}'s act on unexpanding tokens if not used under |LGRgreek| +% regimen. +% \begin{macrocode} \renewcommand*{\MTcustomgreek}{% - \let\Alpha\mst@Alpha - \let\Beta\mst@Beta - \let\Epsilon\mst@Epsilon - \let\Zeta\mst@Zeta - \let\Eta\mst@Eta - \let\Iota\mst@Iota - \let\Kappa\mst@Kappa - \let\Mu\mst@Mu - \let\Nu\mst@Nu - \let\Omicron\mst@Omicron - \let\Rho\mst@Rho - \let\Tau\mst@Tau - \let\Chi\mst@Chi + \expanded{% + \let\noexpand\Alpha\mst@Alpha + \let\noexpand\Beta\mst@Beta + \let\noexpand\Epsilon\mst@Epsilon + \let\noexpand\Zeta\mst@Zeta + \let\noexpand\Eta\mst@Eta + \let\noexpand\Iota\mst@Iota + \let\noexpand\Kappa\mst@Kappa + \let\noexpand\Mu\mst@Mu + \let\noexpand\Nu\mst@Nu + \let\noexpand\Omicron\mst@Omicron + \let\noexpand\Rho\mst@Rho + \let\noexpand\Tau\mst@Tau + \let\noexpand\Chi\mst@Chi + }% end of first big \expanded % 1.3h: \mst@Digamma not defined if symbolgreek option - \ifmst@symbolgreek\else\let\Digamma\mst@Digamma\fi -% - \let\Gamma\mst@Gamma - \let\Delta\mst@Delta - \let\Theta\mst@Theta - \let\Lambda\mst@Lambda - \let\Xi\mst@Xi - \let\Pi\mst@Pi - \let\Sigma\mst@Sigma - \let\Upsilon\mst@Upsilon - \let\Phi\mst@Phi - \let\Psi\mst@Psi - \let\Omega\mst@Omega + \ifmst@symbolgreek\else + \expanded{\let\noexpand\Digamma\mst@Digamma}% + \fi + \expanded{% + \let\noexpand\Gamma\mst@Gamma + \let\noexpand\Delta\mst@Delta + \let\noexpand\Theta\mst@Theta + \let\noexpand\Lambda\mst@Lambda + \let\noexpand\Xi\mst@Xi + \let\noexpand\Pi\mst@Pi + \let\noexpand\Sigma\mst@Sigma + \let\noexpand\Upsilon\mst@Upsilon + \let\noexpand\Phi\mst@Phi + \let\noexpand\Psi\mst@Psi + \let\noexpand\Omega\mst@Omega + }% end of second big \expanded % \end{macrocode} % |1.3h 2015/10/31| adds this conditional to correct the bad bug in % |1.3d 2014/05/23| which caused |\alpha| etc... to become undefined % under option |selfGreek|. % \begin{macrocode} \ifmst@selfGreek\else - \let\alpha\mst@alpha - \let\beta\mst@beta - \let\gamma\mst@gamma - \let\delta\mst@delta - \let\epsilon\mst@epsilon - \let\zeta\mst@zeta - \let\eta\mst@eta - \let\theta\mst@theta - \let\iota\mst@iota - \let\kappa\mst@kappa - \let\lambda\mst@lambda - \let\mu\mst@mu - \let\nu\mst@nu - \let\xi\mst@xi - \let\omicron\mst@omicron - \let\pi\mst@pi - \let\rho\mst@rho - \let\sigma\mst@sigma - \let\tau\mst@tau - \let\upsilon\mst@upsilon - \let\phi\mst@phi - \let\chi\mst@chi - \let\psi\mst@psi - \let\omega\mst@omega + \expanded{% + \let\noexpand\alpha\mst@alpha + \let\noexpand\beta\mst@beta + \let\noexpand\gamma\mst@gamma + \let\noexpand\delta\mst@delta + \let\noexpand\epsilon\mst@epsilon + \let\noexpand\zeta\mst@zeta + \let\noexpand\eta\mst@eta + \let\noexpand\theta\mst@theta + \let\noexpand\iota\mst@iota + \let\noexpand\kappa\mst@kappa + \let\noexpand\lambda\mst@lambda + \let\noexpand\mu\mst@mu + \let\noexpand\nu\mst@nu + \let\noexpand\xi\mst@xi + \let\noexpand\omicron\mst@omicron + \let\noexpand\pi\mst@pi + \let\noexpand\rho\mst@rho + \let\noexpand\sigma\mst@sigma + \let\noexpand\tau\mst@tau + \let\noexpand\upsilon\mst@upsilon + \let\noexpand\phi\mst@phi + \let\noexpand\chi\mst@chi + \let\noexpand\psi\mst@psi + \let\noexpand\omega\mst@omega + \let\noexpand\varsigma\mst@varsigma + }% end of third big \expanded % 1.3h: digamma only defined with option LGRgreek: - \ifmst@LGRgreek\let\digamma\mst@digamma\fi -% - \let\varsigma\mst@varsigma + \ifmst@LGRgreek + \expanded{\let\noexpand\digamma\mst@digamma}% + \fi % conditional added 1.3h 2015/10/31 \ifmst@LGRgreek\else \let\varepsilon\mst@varepsilon @@ -7299,7 +8239,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \fi \fi }% \MTcustomgreek -\fi +\fi% end of \ifcustomgreek \let\Mathastextstandardgreek\MTstandardgreek \let\Mathastextcustomgreek\MTcustomgreek \ifmst@subdued\else\MTcustomgreek\fi @@ -7691,7 +8631,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \typeout{** Latin letters in math version `#2\string' will use the font #3/#4/#5/\mst@ltsh^^J% ** Other characters (digits, ...) and \protect\log-like names - will be in #6 shape.}% + will be in `#6\string' shape.}% \expandafter\edef\csname mst@ltshape@\mst@version\endcsname{\mst@ltsh}% \else \SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{#6}% @@ -7704,7 +8644,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \typeout{** Latin letters in math version `#2\string' will use the font #3/#4/#5/#1^^J% ** Other characters (digits, ...) and \protect\log-like - names will be in #6 shape.}% + names will be in `#6\string' shape.}% \expandafter\edef\csname mst@ltshape@\mst@version\endcsname{#1}% \fi \ifmst@nonormalbold\else @@ -7728,47 +8668,105 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % Greek letters depending on the frenchmath and [it/up][g/G]reek % options as well as on the (local to this version) shapes for letters % and digits. +% +% |1.3x| replaces \cs{updefault} by \cs{MTgreekupdefault} and +% \cs{itdefault} by \cs{MTgreekitdefault}. It also prepares to store +% two Boolean settings saying whether lowercase respectively uppercase +% Greek letters will use `upright' or `italic' (|LGRgreek(s)| only). +% +% The |1.3x| refactoring of |LGRgreek| is done via a decoupling, +% thus things are done here under |selfGreek| or other Greek options +% which ultimately serve nothing and conversely things are done here +% for |LGRgreek| which are superfluous. % \begin{macrocode} \def\mst@greek@lsh@loc{\csname mst@ltshape@\mst@version\endcsname}% \def\mst@greek@ush@loc{\csname mst@shape@\mst@version\endcsname}% - \ifmst@itgreek\def\mst@greek@lsh@loc{\itdefault}% - \def\mst@greek@ush@loc{\itdefault}% + \mst@lgr@lower@uptrue + \expandafter\in@\expanded{{\mst@greek@lsh@loc.}}{it.,sl.}% + \ifin@\mst@lgr@lower@upfalse\fi + \mst@lgr@upper@uptrue + \expandafter\in@\expanded{{\mst@greek@ush@loc.}}{it.,sl.}% + \ifin@\mst@lgr@upper@upfalse\fi + \ifmst@itgreek + \def\mst@greek@lsh@loc{\MTgreekitdefault}% + \def\mst@greek@ush@loc{\MTgreekitdefault}% + \mst@lgr@lower@upfalse + \mst@lgr@upper@upfalse \fi - \ifmst@upgreek\def\mst@greek@lsh@loc{\updefault}% - \def\mst@greek@ush@loc{\updefault}% + \ifmst@upgreek + \def\mst@greek@lsh@loc{\MTgreekupdefault}% + \def\mst@greek@ush@loc{\MTgreekupdefault}% + \mst@lgr@lower@uptrue + \mst@lgr@upper@uptrue \fi \ifmst@frenchmath \ifmst@itgreek\else \ifmst@upgreek\else \def\mst@greek@lsh@loc{\csname mst@shape@\mst@version\endcsname}% \def\mst@greek@ush@loc{\csname mst@shape@\mst@version\endcsname}% + \mst@lgr@lower@uptrue + \mst@lgr@upper@uptrue \fi\fi \fi \ifcase\mst@greek@select - \or\def\mst@greek@ush@loc{\itdefault}% - \or\def\mst@greek@ush@loc{\updefault}% + \or + \def\mst@greek@ush@loc{\MTgreekitdefault}% + \mst@lgr@upper@upfalse + \or + \def\mst@greek@ush@loc{\MTgreekupdefault}% + \mst@lgr@upper@uptrue \fi \ifmst@LGRgreeks - \SetSymbolFont{mtlgrfontlower}{#2}{LGR}{#4}{#5}{\mst@greek@lsh@loc}% - \SetSymbolFont{mtlgrfontupper}{#2}{LGR}{#4}{#5}{\mst@greek@ush@loc}% - \typeout{** Greek letters (\mst@greek@lsh@loc/\mst@greek@ush@loc) will use - LGR font #4\ifmst@subdued ^^J** (in non subdued versions)\fi}% + \SetSymbolFont{mtgreekup}{#2}{LGR}{#4}{#5}{\MTgreekupdefault}% + \SetSymbolFont{mtgreekit}{#2}{LGR}{#4}{#5}{\MTgreekitdefault}% +% \end{macrocode} +% This is where the shape of uppercase/lowercase Greek letters is recorded, +% for \cs{MTversion}'s triggered \cs{MTcustomgreek} to do the right thing. +% Also |1.3x| fixes some strange log messages which did not recall +% the math version name and referred to `non subdued versions' (strange). +% \begin{macrocode} + \expandafter\let\csname ifmst@lgr@\mst@version @upper@up\expandafter\endcsname + \csname ifmst@lgr@upper@up\endcsname + \expandafter\let\csname ifmst@lgr@\mst@version @lower@up\expandafter\endcsname + \csname ifmst@lgr@lower@up\endcsname + \typeout{** Greek letters (upper: + `\ifmst@lgr@upper@up\MTgreekupdefault\else\MTgreekitdefault\fi\string', + lower: + `\ifmst@lgr@lower@up\MTgreekupdefault\else\MTgreekitdefault\fi\string') + will use + font family `#4\string' (LGR)^^J** + in mathastext math version `\mst@version\string'.}% \else \ifmst@selfGreeks \SetSymbolFont{mtselfGreekfont}{#2}{OT1}{#4}{#5}{\mst@greek@ush@loc}% - \typeout{** Capital Greek letters (\mst@greek@lsh@loc/\mst@greek@ush@loc) - will use OT1 font #4\ifmst@subdued ^^J** (in non subdued versions)\fi}% + \typeout{** Capital Greek letters (shape `\mst@greek@ush@loc\string') + will use font family `#4\string' (OT1)^^J** + in mathastext math version `\mst@version\string'.}% \else \ifmst@LGRgreek - \SetSymbolFont{mtlgrfontlower}{#2}{LGR}{\mst@greekfont}{#5}{\mst@greek@lsh@loc}% - \SetSymbolFont{mtlgrfontupper}{#2}{LGR}{\mst@greekfont}{#5}{\mst@greek@ush@loc}% - \typeout{** Greek letters (\mst@greek@lsh@loc/\mst@greek@ush@loc) will use - LGR font \mst@greekfont\ifmst@subdued ^^J** (in non subdued versions)\fi}% + \SetSymbolFont{mtgreekup}{#2}{LGR}{\mst@greekfont}{#5}{\MTgreekupdefault}% + \SetSymbolFont{mtgreekit}{#2}{LGR}{\mst@greekfont}{#5}{\MTgreekitdefault}% +% \end{macrocode} +% This is where the shape of uppercase/lowercase Greek letters is recorded, +% for \cs{MTversion}'s triggered \cs{MTcustomgreek} to do the right thing. +% \begin{macrocode} + \expandafter\let\csname ifmst@lgr@\mst@version @upper@up\expandafter\endcsname + \csname ifmst@lgr@upper@up\endcsname + \expandafter\let\csname ifmst@lgr@\mst@version @lower@up\expandafter\endcsname + \csname ifmst@lgr@lower@up\endcsname + \typeout{** Greek letters (upper: + `\ifmst@lgr@upper@up\MTgreekupdefault\else\MTgreekitdefault\fi\string', + lower: + `\ifmst@lgr@lower@up\MTgreekupdefault\else\MTgreekitdefault\fi\string') + will use font family `\mst@greekfont\string' (LGR)^^J** + in mathastext math version `\mst@version\string'.}% \else \ifmst@selfGreek \SetSymbolFont{mtselfGreekfont}{#2}{OT1}{\mst@greekfont}{#5}{\mst@greek@ush@loc}% - \typeout{** Capital Greek letters (\mst@greek@lsh@loc/\mst@greek@ush@loc) - will use OT1 font \mst@greekfont\ifmst@subdued ^^J** (in non subdued versions)\fi}% + \typeout{** Capital Greek letters + (shape `\mst@greek@ush@loc\string') + will use font family `\mst@greekfont\string' (OT1)^^J** + in mathastext math version `\mst@version\string'.}% \fi \fi \fi @@ -7837,8 +8835,11 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % versions has been to all cases, and not only for the % |LGRgreek| option. % -% |1.3u|: version savvy (i.e. font-encoding savvy) minus sign, +% |1.3u|: version savvy (i.e.\@ font-encoding savvy) minus sign, % \cs{hbar}, \cs{imath}, math accents. +% +% |1.3x|: Booleans recovered from stored data in the math version will +% configure the things \cs{MTcustomgreek} do, under |LGRgreek| option. % \begin{macrocode} \newcommand*\MTversion {\@ifstar\MTversion@s\MTversion@ } \newcommand*\MTversion@s [1]{\mathversion{#1}\MTversion@@ } @@ -7964,6 +8965,13 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \mst@subduedminus \else \mst@setalphabets +% \end{macrocode} +% |1.3x| addition for \cs{MTcustomgreek} under |LGRgreeks| option. +% \begin{macrocode} + \expandafter\let\csname ifmst@lgr@upper@up\expandafter\endcsname + \csname ifmst@lgr@\math@version @upper@up\endcsname + \expandafter\let\csname ifmst@lgr@lower@up\expandafter\endcsname + \csname ifmst@lgr@\math@version @lower@up\endcsname \MTcustomgreek \mst@nonsubduedhbar \mst@nonsubduedinodot @@ -7972,6 +8980,13 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \fi \fi \else +% \end{macrocode} +% |1.3x| addition for \cs{MTcustomgreek} under |LGRgreek| option. +% \begin{macrocode} + \expandafter\let\csname ifmst@lgr@upper@up\expandafter\endcsname + \csname ifmst@lgr@\math@version @upper@up\endcsname + \expandafter\let\csname ifmst@lgr@lower@up\expandafter\endcsname + \csname ifmst@lgr@\math@version @lower@up\endcsname \MTcustomgreek % new with 1.3d \mst@nonsubduedhbar \mst@nonsubduedinodot @@ -8039,6 +9054,8 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % loading (things regarding the \cs{hbar}, \cs{imath}, the math accents and % the minus sign). They are now part of the contents of \cs{Mathastext} macro % itself (which is executed during package loading). +% +% |1.3x| has refactored the |LGRgreek| associated math fonts. % \begin{macrocode} \def\Mathastext {\@ifnextchar [\Mathastext@declare\Mathastext@ } \def\Mathastext@declare [#1]{% @@ -8206,17 +9223,19 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % \begin{macro}{LGRgreek*} % \begin{macro}{selfGreek*} % LGRgreek, LGRgreeks, selfGreek, and selfGreeks options. +% +% |1.3x| has refactored the |LGRgreek| associated math fonts. % \begin{macrocode} \ifmst@subdued\else \ifmst@LGRgreek - \SetSymbolFont{mtlgrfontlower}{normal}{LGR}% - {\mst@greekfont}{\mst@series@normal}{\mst@greek@lsh}% - \SetSymbolFont{mtlgrfontlower}{bold}{LGR}% - {\mst@greekfont}{\mst@boldvariant@normal}{\mst@greek@lsh}% - \SetSymbolFont{mtlgrfontupper}{normal}{LGR}% - {\mst@greekfont}{\mst@series@normal}{\mst@greek@ush}% - \SetSymbolFont{mtlgrfontupper}{bold}{LGR}% - {\mst@greekfont}{\mst@boldvariant@bold}{\mst@greek@ush}% + \SetSymbolFont{mtgreekup}{normal}{LGR}% + {\mst@greekfont}{\mst@series@normal}{\MTgreekupdefault}% + \SetSymbolFont{mtgreekup}{bold}{LGR}% + {\mst@greekfont}{\mst@boldvariant@normal}{\MTgreekupdefault}% + \SetSymbolFont{mtgreekit}{normal}{LGR}% + {\mst@greekfont}{\mst@series@normal}{\MTgreekitdefault}% + \SetSymbolFont{mtgreekit}{bold}{LGR}% + {\mst@greekfont}{\mst@boldvariant@bold}{\MTgreekitdefault}% \else \ifmst@selfGreek \SetSymbolFont{mtselfGreekfont}{normal}{OT1}% @@ -8231,14 +9250,17 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % \end{macro} % \begin{macrocode} \ifmst@subdued - \typeout{** subdued mode will be activated for the normal and bold math versions}% + \typeout{** subdued mode will be activated for the `normal\string' and `bold\string' math versions}% \else - \typeout{** Latin letters in the normal (resp. bold) math versions are now^^J% + \typeout{** Latin letters in the `normal\string' (resp. `bold\string') math versions are now^^J% ** set up to use the fonts \mst@encoding@normal/\mst@family@normal/\mst@series@normal% (\mst@boldvariant@normal)/\mst@ltshape@normal}% - \ifmst@LGRgreek\typeout{** Greek letters (\mst@greek@lsh/\mst@greek@ush) - will use LGR/\mst@greekfont}% + \ifmst@LGRgreek\typeout{** Greek letters (upper: + `\ifmst@lgr@upper@up\MTgreekupdefault\else\MTgreekitdefault\fi\string', + lower: + `\ifmst@lgr@lower@up\MTgreekupdefault\else\MTgreekitdefault\fi\string') + will use font family `\mst@greekfont\string' (LGR)}% \fi \ifmst@nodigits\else \typeout{** Other characters (digits, ...) and \protect\log-like names will be^^J% @@ -8290,13 +9312,13 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \ifmst@eulergreek \typeout{** Greek letters will use the Euler font. Use \protect\MathastextEulerScale{<factor>} to scale the font.}% - \ifmst@subdued{\typeout{** (subdued mode: normal and bold math + \ifmst@subdued{\typeout{** (subdued mode: `normal\string' and `bold\string' math version with default Greek letters.)}}\fi \else \ifmst@symbolgreek \typeout{** Greek letters will use the PostScript Symbol font. Use^^J% ** \protect\MathastextSymbolScale{<factor>} to scale the font.}% - \ifmst@subdued{\typeout{** (subdued mode: normal and bold math + \ifmst@subdued{\typeout{** (subdued mode: `normal\string' and `bold\string' math version with default Greek letters.)}}\fi \fi\fi % \end{macrocode} @@ -8654,6 +9676,8 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \do\MathastextitGreek \do\MTgreekfont \do\Mathastextgreekfont +\do\MTgreekupdefault +\do\MTgreekitdefault \do\MTDeclareVersion \do\MathastextDeclareVersion \do\MTWillUse @@ -8669,24 +9693,6 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % \MakePercentComment %</package> %<*dtx> -\CharacterTable - {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z - Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z - Digits \0\1\2\3\4\5\6\7\8\9 - Exclamation \! Double quote \" Hash (number) \# - Dollar \$ Percent \% Ampersand \& - Acute accent \' Left paren \( Right paren \) - Asterisk \* Plus \+ Comma \, - Minus \- Point \. Solidus \/ - Colon \: Semicolon \; Less than \< - Equals \= Greater than \> Question mark \? - Commercial at \@ Left bracket \[ Backslash \\ - Right bracket \] Circumflex \^ Underscore \_ - Grave accent \` Left brace \{ Vertical bar \| - Right brace \} Tilde \~} - -\CheckSum{6187} -\makeatletter\check@checksum\makeatother \Finale %% %% End of file `mathastext.dtx'. diff --git a/macros/latex/contrib/mathastext/mathastext.pdf b/macros/latex/contrib/mathastext/mathastext.pdf Binary files differindex dc8c864908..df962ded91 100644 --- a/macros/latex/contrib/mathastext/mathastext.pdf +++ b/macros/latex/contrib/mathastext/mathastext.pdf diff --git a/macros/latex/contrib/mathastext/mathastexttestalphabets.pdf b/macros/latex/contrib/mathastext/mathastexttestalphabets.pdf Binary files differdeleted file mode 100644 index ff43ebc0d0..0000000000 --- a/macros/latex/contrib/mathastext/mathastexttestalphabets.pdf +++ /dev/null diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf Binary files differindex d851c1652d..73b1ccc4bf 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 3ef3b51a6f..0f52e74b93 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex @@ -1,7 +1,7 @@ % !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: pythontex: {rerun: always} +% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} % arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') \documentclass{article} @@ -17,9 +17,12 @@ \usepackage{amsmath,amssymb} \fi \ifluatex - \RequirePackage[math-style=french,bold-style=ISO]{fourier-otf} + \usepackage{mathtools} + \usepackage{lualatex-math} + \usepackage{luatexbase} + \usepackage[math-style=french,bold-style=ISO]{fourier-otf} \fi -\usepackage[build]{ProfLycee} +\usepackage{ProfLycee} \usepackage{tkz-euclide} \usetikzlibrary{hobby} \usepackage[group-minimum-digits=4]{siunitx} @@ -71,8 +74,8 @@ \setlength{\parindent}{0pt} \definecolor{LightGray}{gray}{0.9} -\def\PLversion{1.3.7} -\def\PLdate{2 Novembre 2022} +\def\PLversion{2.0.0} +\def\PLdate{4 Novembre 2022} \tcbset{vignettes/.style={% nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,% @@ -89,6 +92,16 @@ } } +\tcbset{vignetteMaJ/.style={% + fontupper={\vphantom{pf}\footnotesize\ttfamily}, + vignettes,% + colframe=ForestGreen!50!black,coltitle=white,colback=ForestGreen!25,% + overlay={\begin{tcbclipinterior}% + \fill[fill=ForestGreen!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{Black}{\scalebox{0.85}[0.75]{\textbf{MàJ}}}}} ($(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} @@ -110,6 +123,13 @@ %petite vignette tex \newcommand\ctex[1]{\tcbox[vignettelatex]{#1}} +%petite vignette màj +\newcommand\cmaj[1]{% + \IfStrEq{#1}{\PLversion}% + {\tcbox[vignetteMaJ]{#1}\xspace}% + {}% +} + %gestion de la fenêtre v2 directement dans le tikzpicture \tikzset{% xmin/.store in=\xmin,xmin/.default=-5,xmin=-5, @@ -178,7 +198,7 @@ } \title{% -\begin{minipage}{0.75\linewidth} +\begin{minipage}{0.85\linewidth} \begin{tcolorbox}[colframe=yellow,colback=yellow!15] \begin{center} \begin{tabular}{c} @@ -257,6 +277,8 @@ Une commande pour, en \TikZ, créer des arbres de probas \og classiques \fg. \hfill{}\textit{Merci à Anne pour ses retours et sa relecture !} +\hfill{}\textit{Merci à Christophe pour ses retours et ses éclairages !} + \hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !} \vfill @@ -351,12 +373,15 @@ J'ai utilisé les {packages} de C. Tellechea, je vous conseille d'aller jeter un \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}. +\cmaj{2.0.0} Une compilation \textsf{shell-escape} est recommandée pour l'utilisation de \ctex{ProfLycee}, notamment pour le package \ctex{minted} et la coloration syntaxique de code. + +Cependant, si vous ne \underline{souhaitez pas} charger (et utiliser) \ctex{minted} vous pouvez charger le package \ctex{ProfLycee} avec l'option \Cle{nonshellescape}. \end{codeattention} \begin{codetex}[listing only] ... -\usepackage[nominted]{ProfLycee} +\usepackage[nonshellescape]{ProfLycee} +%package <minted> et librairie <minted> non chargés ... \end{codetex} @@ -387,6 +412,28 @@ Les options précédentes sont cumulables, et, pour info, elles conditionnent le \section{Compléments} +\subsection{Changements à partir de cette version !!} + +\begin{codeattention} +\cmaj{2.0.0} Pour des raisons pratiques, les commandes et environnements disponibles dans \ctex{ProfLycee} ont été renommés, pour utiliser des noms plus génériques et explicites. + +La nomenclature des \Cle{clés} a été également revue, avec -- dans la grande majorité des cas -- une majuscule en début. + +\smallskip + +Je préfère faire ces ajustements tant que le package est assez \textit{jeune} ! +\end{codeattention} + +\begin{codeattention} +\cmaj{2.0.0} L'ancienne version du package \ctex{ProfLycee} est toutefois encore disponible, pour nue migration en douceur, elle est désormais accessible sous le nom \ctex{ProfLycee-old}, et la documentation est également encore disponible. +\end{codeattention} + +\begin{codetex}[listing only] +... +\usepackage[<options>]{ProfLycee-old} +... +\end{codetex} + \subsection{Le système de \og clés/options \fg} \begin{codeidee} @@ -460,7 +507,7 @@ En ce qui concerne les codes \textsf{python} et/ou \textsf{pseudocode}, il faudr \end{codeinfo} \begin{codeattention} -Certains commandes ou environnements nécessitent une compilation spécifique, qui seront indiquées clairement dans la documentation ! +Certains commandes ou environnements nécessitent une compilation spécifique, qui sera indiquée clairement dans la documentation ! \end{codeattention} \subsection{Problèmes éventuels\ldots} @@ -487,107 +534,113 @@ En dehors de cela, ce sont des tests multiples et variés qui permettront de dé \part{Liste des commandes, par thème} +\begin{codeinfo} +\cmaj{2.0.0} Cette section contient un \textit{résumé} des différentes commandes et environnements disponibles dans \ctex{ProfLycee}. + +Elles sont présentées de manière \textit{succincte}, mais elles sont présentées de manière \textit{détaillée} dans la suite de la documentation. +\end{codeinfo} + \begin{codetex}[listing only] %courbe d'interpolation, tangente, dans un environnement tikz -\splinetikz[<options>] -\tangentetikz[<options>] +\SplineTikz[<options>]{<liste>} +\TangenteTikz[<options>]{<liste>} %toile pour une suite récurrente, dans un environnement tikz -\recurrPL[<clés>][<options du tracé>][<option supplémentaire des termes>] +\ToileRecurrence[<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>} +\CalculFormelParametres[<options>] +\CalculFormelLigne+[<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} +\begin{CodePythonLst}(*)[<largeur>]{<commandes tcbox>}...\end{CodePythonLst} +\CodePythonLstFichier(*)[<largeur>]{<commandes tcbox<}{<script>} +\begin{CodePiton}[<options>]...\end{CodePiton} +\begin{CodePythontex}[<options>]...\end{CodePythontex} +\begin{CodePythonMinted}(*)[<largeur>][<options>]...\end{CodePythonMinted} %console Python -\begin{envconsolepythontex}[<options>]...\end{envconsolepythontex} +\begin{ConsolePythontex}[<options>]...\end{ConsolePythontex} %présentation de pseudocode -\begin{envpseudocode}(*)[<largeur>][<options>]...\end{envpseudocode} +\begin{PseudoCode}(*)[<largeur>][<options>]...\end{PseudoCode} %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} +\begin{TerminalWin}[<largeur>]{<clés>}[<options>]...\end{TerminalWin} +\begin{TerminalUnix}[<largeur>]{<clés>}[<options>]...\end{TerminalUnix} +\begin{TerminalOSX}[<largeur>]{<clés>}[<options>]...\end{TerminalOSX} %code Capytale -\liencapytale(*)[<options<]{<code capytale>} +\CartoucheCapytale(*)[<options<]{<code capytale>} \end{codetex} \begin{codetex}[listing only] %pavé et tétraèdre, dans un environnement tikz -\pavePL[<options>] -\tetraPL[<options>] +\PaveTikz[<options>] +\TetraedreTikz[<options>] %cercle trigo, dans un environnement tikz -\cercletrigoPL[<clés>] +\CercleTrigo[<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>} +\CalculsRegLin[<clés>]{<listeX>}{<listeY>} +\PointsRegLin[<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>} +\GrilleTikz[<options>][<options grille ppale>][<options grille second.>] +\AxesTikz[<options>] +\AxexTikz[<options>]{<valeurs>} \AxeyTikz[<options>]{<valeurs>} +\FenetreTikz \OrigineTikz +\FenetreSimpleTikz<options axe Ox>{liste abscisses}<options axe Oy>{liste ordonnées} +\NuagePointsTikz[<options>]{<listeX>}{<listeY>} +\PointMoyenTikz[<options>] +\CourbeTikz[<options>]{<formule>}{<domaine>} %boîte à moustaches, dans un environnement tikz -\PLboitemoust[<options>] -\PLboitemoustaxe[<options>] +\BoiteMoustaches[<options>] +\BoiteMoustachesAxe[<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} +\CalcBinomP{n}{p}{k} +\CalcBinomC{n}{p}{a}{b} +\BinomP(*)[prec]{n}{p}{k} +\BinomC(*)[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} +\CalcPoissP{l}{k} +\CalcPoissC{l}{a}{b} +\PoissonP(*)[prec]{l}{k} +\PoissonC(*)[prec]{l}{a}{b} %loi géométrique G (p) -\calcPgeomP{p}{k} -\calcPgeomC{l}{a}{b} -\numPgeomP{p}{k} -\numPgeomC{l}{a}{b} +\CalcGeomP{p}{k} +\CalcGeomC{l}{a}{b} +\GeomP{p}{k} +\GeomC{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} +\CalcHypergeomP{N}{n}{m}{k} +\CalcHypergeomP{N}{n}{m}{a}{b} +\HypergeomP{N}{n}{m}{k} +\HypergeomC{N}{n}{m}{a}{b} %loi normale N(m,s) -\calcPnormC{m}{s}{a}{b} -\numPnormC(*)[prec]{m}{s}{a}{b} +\CalcNormC{m}{s}{a}{b} +\NormaleC(*)[prec]{m}{s}{a}{b} %loi exponentielle E(l) -\calcPexpoC{l}{a}{b} -\numPexpoC(*)[prec]{l}{a}{b} +\CalcExpoC{l}{a}{b} +\ExpoC(*)[prec]{l}{a}{b} %arbres de probas -\PLarbre[<options>]{<donnees>} -\begin{PLenvarbre}[<options>]{<donnees>}...\end{PLenvarbre} +\ArbreProbasTikz[<options>]{<donnees>} +\begin{EnvArbreProbasTikz}[<options>]{<donnees>}...\end{EnvArbreProbasTikz} %schémas lois continues \LoiNormaleGraphe[options]<options tikz>{m}{s}{a}{b} @@ -596,10 +649,11 @@ En dehors de cela, ce sont des tests multiples et variés qui permettront de dé \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>} +\ConversionDecBin(*)[<clés>]{<nombre>} +\ConversionBinHex[<clés>]{<nombre>} +\ConversionVersDec[<clés>]{<nombre>} +\ConversionBaseDix[<clés>]{<nombre>}{<base de départ>} +\ConversionDepuisBaseDix[<options>]{<nombre en base 10>}{<base d'arrivée>} %PGCD présenté \PresentationPGCD[<options>]{a}{b} @@ -607,14 +661,14 @@ En dehors de cela, ce sont des tests multiples et variés qui permettront de dé \begin{codetex}[listing only] %conversion en fraction -\convertfraction[<option>]{<argument>} +\ConversionFraction[<option>]{<argument>} %ensemble d'éléments -\ensPL[<clés>]{<liste>} +\EcritureEnsemble[<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>] +\MiniSchemaSignes[<clés>] +\MiniSchemaSignesTkzTab[<options>]{<numligne>}[<echelle>][<décalage horizontal>] %trinôme, trinôme aléatoire \EcritureTrinome[<options>]{a}{b}{c} @@ -622,18 +676,18 @@ En dehors de cela, ce sont des tests multiples et variés qui permettront de dé \begin{codetex}[listing only] %pixelart, dans un environnement tikz -\PLpixelart[<clés>]{<fichier>.csv} +\PixelArtTikz[<clés>]{<fichier>.csv} %sudomaths -\PLsudomaths[<options>]{<liste>}. -\begin{PLenvsudomaths}[<options>]{<grille>}...\end{PLenvsudomaths} +\SudoMaths[<options>]{<liste>}. +\begin{EnvSudoMaths}[<options>]{<grille>}...\end{EnvSudoMaths} \end{codetex} \newpage \part{Outils pour l'analyse} -\section{L'outil \og \textbackslash{}splinetikz \fg} +\section{L'outil \og SplineTikz \fg} \subsection{Courbe d'interpolation} @@ -651,7 +705,7 @@ On va utiliser les notions suivantes pour paramétrer le tracé \og automatique 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 liste des points de contrôle (minimum 2 !!) par : \verb|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 ; @@ -667,7 +721,7 @@ Pour déclarer les paramètres : \begin{codetex}[listing only] \begin{tikzpicture} ... - \splinetikz[<options>] + \SplineTikz[<options>]{<liste>} ... \end{tikzpicture} \end{codetex} @@ -676,12 +730,12 @@ Pour déclarer les paramètres : 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} + \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} @@ -724,7 +778,7 @@ Si jamais il existe (un ou) des points \textit{anguleux}, le plus simple est de \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] +\SplineTikz[AffPoints,Coeffs=3,Couleur=red]{\LISTE} \end{codetex} \begin{codeinfo} @@ -733,7 +787,7 @@ 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] + \SplineTikz[affpoints=true]{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} \gennotice \gentangentes \listecoeffs{3}{3}{3}{3} @@ -762,7 +816,7 @@ On peut dans ce cas \textit{jouer} sur les coefficients de cette portion pour \t \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] + \SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE} \gennotice \listecoeffs{3/3}{3/3}{3/3}{2/1} \end{tikzpicture} @@ -773,7 +827,7 @@ On peut dans ce cas \textit{jouer} sur les coefficients de cette portion pour \t ... %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] +\SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE} ... \end{codetex} @@ -792,7 +846,7 @@ On peut dans ce cas \textit{jouer} sur les coefficients de cette portion pour \t % \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] + \SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE} \end{tikzpicture} \end{center} \end{codesortie} @@ -804,29 +858,29 @@ 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 de saisir la commande \ctex{\textbackslash SplineTikz[...]\{\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{}} +\section{L'outil \og 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}. +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 ! +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>] + \TangenteTikz[<options>]{<liste>} ... \end{tikzpicture} \end{codetex} @@ -835,8 +889,8 @@ NB : il peut fonctionner indépendamment de l'outil \ctex{splinetikz} puisque la 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 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} @@ -848,11 +902,11 @@ Cela permet de tracer la tangente : ... \def\LISTE{0/1.5/0§1/2/-0.333§2/0/-5} %spline - \splinetikz[liste=\LISTE,affpoints=true,coeffs=3§2,couleur=red] + \SplineTikz[AffPoints,Coeffs=3§2,Couleur=red]{\LISTE} %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] + \TangenteTikz[xl=0,xr=0.5,Couleur=ForestGreen,Style=dashed]{\LISTE} + \TangenteTikz[xl=0.5,xr=0.75,Couleur=orange,Style=dotted,Point=2]{\LISTE} + \TangenteTikz[xl=0.33,xr=0,Couleur=blue,Style=densely dashed,Point=3]{\LISTE} ... \end{tikzpicture} \end{codetex} @@ -870,11 +924,11 @@ On obtient le résultat suivant (avec les éléments rajoutés utiles à la comp \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] + \SplineTikz[AffPoints,Coeffs=3§2,Couleur=red]{0/1.5/0§1/2/-0.333§2/0/-5} %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] + \TangenteTikz[xl=0,xr=0.5,Couleur=ForestGreen,Style=dashed]{0/1.5/0§1/2/-0.333§2/0/-5} + \TangenteTikz[xl=0.5,xr=0.75,Couleur=orange,Style=dotted,Point=2]{0/1.5/0§1/2/-0.333§2/0/-5} + \TangenteTikz[xl=0.33,xr=0,Couleur=blue,Style=densely dashed,Point=3]{0/1.5/0§1/2/-0.333§2/0/-5} %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}; @@ -909,12 +963,12 @@ On obtient le résultat suivant (avec les éléments rajoutés utiles à la comp %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] + \TangenteTikz[xl=0,xr=1,Couleur=blue,Style=dashed]{\liste} + \TangenteTikz[xl=2,xr=2,Couleur=purple,Style=dotted,Point=2]{\liste} + \TangenteTikz[xl=2,xr=2,Couleur=orange,Style=<->,Point=3]{\liste} + \TangenteTikz[xl=2,xr=0,Couleur=ForestGreen,Point=5]{\liste} %la courbe en elle-même - \splinetikz[liste=\liste,affpoints=true,coeffs=3,couleur=cyan,style=densely dotted] + \SplineTikz[AffPoints,Coeffs=3,Couleur=cyan,Style=densely dotted]{\liste} \end{tikzpicture} \end{codetex} @@ -931,12 +985,12 @@ On obtient le résultat suivant (avec les éléments rajoutés utiles à la comp %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] + \TangenteTikz[xl=0,xr=1,Couleur=blue,Style=dashed]{\liste} + \TangenteTikz[xl=2,xr=2,Couleur=purple,Style=dotted,Point=2]{\liste} + \TangenteTikz[xl=2,xr=2,Couleur=orange,Style=<->,Point=3]{\liste} + \TangenteTikz[xl=2,xr=0,Couleur=ForestGreen,Point=5]{\liste} %la courbe en elle-même - \splinetikz[liste=\liste,affpoints=true,coeffs=3,couleur=cyan,style=densely dotted] + \SplineTikz[AffPoints,Coeffs=3,Couleur=cyan,Style=densely dotted]{\liste} \end{tikzpicture} \end{center} \end{codesortie} @@ -961,7 +1015,7 @@ Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur déf ... \begin{tikzpicture}[<options>] ... - \recurrPL[<clés>][<options du tracé>][<options supplémentaires des termes>] + \ToileRecurrence[<clés>][<options du tracé>][<options supplémentaires des termes>] ... \end{tikzpicture} \end{codetex} @@ -972,15 +1026,15 @@ 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} + \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} ; @@ -1025,7 +1079,7 @@ On va tracer la \textit{toile} des 4 premiers termes de la suite récurrente $\b %fonction définie et réutilisable \def\f{sqrt(5*\x)+1} %toile -\recurrPL[fct={\f},no=1,uno=1,nb=4,decallabel=4pt] +\ToileRecurrence[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) ; @@ -1049,7 +1103,7 @@ Peut-être que -- ultérieurement -- des options \textit{booléennes} seront dis \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] + \ToileRecurrence[Fct={\f},No=0,Uno=2,Nb=5,PosLabel=above right,DecalLabel=0pt] \end{tikzpicture} \end{center} \end{codetex} @@ -1072,7 +1126,7 @@ Peut-être que -- ultérieurement -- des options \textit{booléennes} seront dis \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] + \ToileRecurrence[Fct={\f},No=0,Uno=2,Nb=5,PosLabel=above right,DecalLabel=0pt] \end{tikzpicture} \end{center} \end{codesortie} @@ -1082,8 +1136,8 @@ Peut-être que -- ultérieurement -- des options \textit{booléennes} seront dis \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]% + \ToileRecurrence% + [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}); @@ -1105,7 +1159,9 @@ Peut-être que -- ultérieurement -- des options \textit{booléennes} seront dis %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][] + \ToileRecurrence% + [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} @@ -1132,7 +1188,7 @@ Les sujets d'examens, depuis quelques années, peuvent comporter des \textit{cap À 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} +\subsection{La commande \og \CalculFormelParametres \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}. @@ -1141,7 +1197,7 @@ La première chose à définir est l'ensemble des paramètres \textit{globaux} d \begin{codetex}[listing only] ... \begin{tikzpicture}[...] - \paramCF[<options>] + \CalculFormelParametres[<options>] ... \end{tikzpicture} \end{codetex} @@ -1149,33 +1205,33 @@ La première chose à définir est l'ensemble des paramètres \textit{globaux} d \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} + \item \Cle{Largeur} : largeur de l'environnement ; \hfill{}défaut \Cle{16} + \item \Cle{EspaceLg} : espacement vertical entre les lignes ;\hfill{}défaut \Cle{2pt} + \item \Cle{PremCol} \& \Cle{HautPremCol} : 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} +\subsection{La commande \og CalculFormelLigne \fg} \begin{codeinfo} -Une fois les paramètres déclarés, il faut créer les différentes lignes, grâce à la \ctex{ligneCF}. +Une fois les paramètres déclarés, il faut créer les différentes lignes, grâce à la \ctex{CalculFormelLigne}. \end{codeinfo} \begin{codetex}[listing only] \begin{tikzpicture}[...] - \paramCF[<options>] - \ligneCF[<options>] + \CalculFormelParametres[<options>] + \CalculFormelLigne[<options>]{<commande>}{<résultat>} ... \end{tikzpicture} \end{codetex} @@ -1184,7 +1240,7 @@ Une fois les paramètres déclarés, il faut créer les différentes lignes, gr 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 \Cle{HautCmd} et \Cle{HautRes}: 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} % @@ -1193,9 +1249,10 @@ Chaque argument \textsf{COMMANDE} \& \textsf{RÉSULTAT} peut être formaté (niv \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 +\CalculFormelParametres[Titre=true,CouleurCmd=olive,CouleurRes=orange] +\CalculFormelLigne{COMMANDE 1}{RÉSULTAT 1} +\CalculFormelLigne[HautCmd=0.75,HautRes=1]{\texttt{(x+1)\CFchap2}}{$\mathtt{x^2+2x+1}$} +%\CFchap := ^ en mathtt \end{codetex} \subsection{Visualisation des paramètres} @@ -1205,9 +1262,9 @@ Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les diff \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]{}{} + \CalculFormelParametres[Largeur=12cm,Couleur=lightgray,EspaceLg=12pt,Menu=false] + \CalculFormelLigne{}{} + \CalculFormelLigne[HautCmd=1,HautRes=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} ; @@ -1216,22 +1273,22 @@ Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les diff \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} + \CalculFormelParametres[Titre,Largeur=12cm,EspaceLg=10pt,PremCol=0.5,HautPremCol=0.7,Couleur=lightgray] + \CalculFormelLigne{COMMANDE 1}{RÉSULTAT 1} + \CalculFormelLigne[HautCmd=0.85,HautRes=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}} ; + \draw[CadetBlue,<->] ($(A22) + (0,-12pt)$) -- ($(A52) + (0,-12pt)$) node[midway,below,font=\footnotesize\sffamily] {\Cle{Largeur}} ; + \draw[CadetBlue,<->] ($(A51) + (12pt,0)$) -- ($(A32) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{EsapceLg}} ; + \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{HautPremCol}} ; + \draw[CadetBlue,<->] ($(A31) + (12pt,0)$) -- ($(A41) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{HautCom}} ; + \draw[CadetBlue,<->] ($(A41) + (12pt,0)$) -- ($(A51) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{HautRes}} ; + \draw[CadetBlue,<->] ($(A32) + (12pt,0)$) -- ($(A42) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{HautCom}} ; + \draw[CadetBlue,<->] ($(A42) + (12pt,0)$) -- ($(A52) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{HautRes}} ; + \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} @@ -1263,13 +1320,13 @@ Donc, si plusieurs \textit{méthodes} sont utilisées pour insérer du code Pyth \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. +L'environnement \ctex{CodePythonLst} 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>} +\begin{CodePythonLst}(*)[<largeur>]{<commandes tcbox>} ... -\end{envcodepython} +\end{CodePythonLst} \end{codetex} \begin{codecles} @@ -1301,13 +1358,13 @@ Si cette méthode est utilisée, il ne faut oublier de charger le package \ctex{ \begin{codetex}[listing only] \usepackage{scontents} %si script déclaré dans le fichier tex ... -\envcodepythonfichier(*)[<largeur>]{<commandes tcbox>}{<script>} +\CodePythonLstFichier(*)[<largeur>]{<commandes tcbox>}{<script>} \end{codetex} \subsection{Exemples} \begin{codetex}[listing only] -\begin{envcodepython}{} %les {}, même vides, sont nécessaires (bug avec # sinon !) +\begin{CodePythonLst}{} %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) : @@ -1316,11 +1373,11 @@ if (nb %7 == 0) : def f(x) : return x**2 -\end{envcodepython} +\end{CodePythonLst} \end{codetex} \begin{codesortie} -\begin{envcodepython}{} +\begin{CodePythonLst}{} #environnement par défaut nb = int(input("Saisir un entier positif")) if (nb %7 == 0) : @@ -1329,11 +1386,11 @@ if (nb %7 == 0) : def f(x) : return x**2 -\end{envcodepython} +\end{CodePythonLst} \end{codesortie} \begin{codetex}[listing only] -\begin{envcodepython}*[0.5\linewidth]{flush right} +\begin{CodePythonLst}*[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) : @@ -1342,11 +1399,11 @@ if (nb %7 == 0) : def f(x) : return x**2 -\end{envcodepython} +\end{CodePythonLst} \end{codetex} \begin{codesortie} -\begin{envcodepython}*[0.5\linewidth]{flush right} +\begin{CodePythonLst}*[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) : @@ -1355,7 +1412,7 @@ if (nb %7 == 0) : def f(x) : return x**2 -\end{envcodepython} +\end{CodePythonLst} \end{codesortie} \begin{codetex}[listing only] @@ -1387,7 +1444,7 @@ def trace_parabole_tableaux(): \end{scontents} %environnement centré, avec numéros, largeur 9cm -\envcodepythonfichier[9cm]{center}{testscript.py} +\CodePythonLstFichier[9cm]{center}{testscript.py} \end{codetex} \begin{codesortie} @@ -1418,7 +1475,7 @@ def trace_parabole_tableaux(): return "Temps : " + str(fin-depart) + " s." \end{scontents} -\envcodepythonfichier[9cm]{center}{testscript.py} +\CodePythonLstFichier[9cm]{center}{testscript.py} \end{codesortie} \newpage @@ -1428,7 +1485,7 @@ def trace_parabole_tableaux(): \subsection{Introduction} \begin{codeinfo} -Le package \ctex{piton} permet d'insérer du code Python avec une coloration syntaxique en utilisant la bibliothèque \textsf{Lua LPEG}. +\cmaj{2.0.0} Le package \ctex{piton} permet d'insérer du code Python avec une coloration syntaxique en utilisant la bibliothèque \textsf{Lua LPEG}. \smallskip @@ -1442,10 +1499,10 @@ Le package \ctex{piton} nécessite donc obligatoirement l’emploi de \LuaLaTeX{ \subsection{Présentation de code Python} \begin{codetex}[listing only] -\begin{envcodepiton}[<options>] +\begin{CodePiton}[<options>] ... ... -\end{envcodepiton} +\end{CodePiton} \end{codetex} \begin{codeattention} @@ -1463,69 +1520,69 @@ Plusieurs \Cle{clés} sont disponibles : \end{codecles} \begin{codetex}[listing only] -\begin{envcodepiton} +\begin{CodePiton} #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{CodePiton} \end{codetex} \begin{codesortie} -\begin{envcodepiton} +\begin{CodePiton} #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{CodePiton} \end{codesortie} \pagebreak \begin{codetex}[listing only] -\begin{envcodepiton}[Lignes=false,Largeur=15cm] +\begin{CodePiton}[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} +\end{CodePiton} -\begin{envcodepiton}[Alignement=flush right,Largeur=13cm] +\begin{CodePiton}[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} +\end{CodePiton} -\begin{envcodepiton}[Alignement=flush left,Largeur=11cm] +\begin{CodePiton}[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{CodePiton} \end{codetex} \begin{codesortie} -\begin{envcodepiton}[Lignes=false,Largeur=15cm] +\begin{CodePiton}[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} +\end{CodePiton} -\begin{envcodepiton}[Alignement=flush right,Largeur=13cm] +\begin{CodePiton}[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} +\end{CodePiton} -\begin{envcodepiton}[Alignement=flush left,Largeur=11cm] +\begin{CodePiton}[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{CodePiton} \end{codesortie} \pagebreak @@ -1559,55 +1616,55 @@ Cela peut donner -- en tout cas -- des idées de personnalisation en ayant une b \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. +L'environnement \ctex{CodePythontex} 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>] +\begin{CodePythontex}[<options>] ... -\end{envcodepythontex} +\end{CodePythontex} \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} + \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] +\begin{CodePythontex}[Largeur=12cm] #environnement Python(tex) centré avec numéros de ligne def f(x) : return x**2 -\end{envcodepythontex} +\end{CodePythontex} \end{codetex} \begin{codesortie} -\begin{envcodepythontex}[largeur=12cm] +\begin{CodePythontex}[Largeur=12cm] #environnement Python(tex) centré avec numéros de ligne def f(x) : return x**2 -\end{envcodepythontex} +\end{CodePythontex} \end{codesortie} \begin{codetex}[listing only] -\begin{envcodepythontex}[largeur=12cm,lignes=false,centre=false] +\begin{CodePythontex}[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{CodePythontex} \end{codetex} \begin{codesortie} -\begin{envcodepythontex}[largeur=12cm,lignes=false,centre=false] +\begin{CodePythontex}[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{CodePythontex} \end{codesortie} \subsection{Présentation de code Python via le package minted}\label{pytminted} @@ -1621,9 +1678,9 @@ Le package \ctex{minted} nécessite quand même une compilation avec l'option \c \end{codeattention} \begin{codetex}[listing only] -\begin{envcodepythonminted}(*)[<largeur>][<options>] +\begin{CodePythonMinted}(*)[<largeur>][<options>] ... -\end{envcodepythonminted} +\end{CodePythonMinted} \end{codetex} \begin{codecles} @@ -1637,35 +1694,35 @@ Plusieurs \Cle{arguments} (optionnels) sont disponibles : \end{codecles} \begin{codetex}[listing only] -\begin{envcodepythonminted}[12cm][center] +\begin{CodePythonMinted}[12cm][center] #environnement Python(minted) centré avec numéros, de largeur 12cm def f(x) : return x**2 -\end{envcodepythonminted} +\end{CodePythonMinted} \end{codetex} \begin{codesortie} -\begin{envcodepythonminted}[12cm][center] +\begin{CodePythonMinted}[12cm][center] #environnement Python(minted) centré avec numéros def f(x) : return x**2 -\end{envcodepythonminted} +\end{CodePythonMinted} \end{codesortie} \begin{codetex}[listing only] -\begin{envcodepythonminted}*[0.8\linewidth][] +\begin{CodePythonMinted}*[0.8\linewidth][] #environnement Python(minted) sans numéro, de largeur 0.8\linewidth def f(x) : return x**2 -\end{envcodepythonminted} +\end{CodePythonMinted} \end{codetex} \begin{codesortie} -\begin{envcodepythonminted}*[0.8\linewidth][] +\begin{CodePythonMinted}*[0.8\linewidth][] #environnement Python(minted) sans numéro, de largeur 0.8\linewidth def f(x) : return x**2 -\end{envcodepythonminted} +\end{CodePythonMinted} \end{codesortie} \subsection{Console d'exécution Python} @@ -1673,69 +1730,71 @@ Plusieurs \Cle{arguments} (optionnels) sont disponibles : \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. +C'est l'environnement \ctex{ConsolePythontex} qui permet de le faire. \end{codeidee} \begin{codetex}[listing only] -\begin{envconsolepythontex}[<options>] +\begin{ConsolePythontex}[<options>] ... -\end{envconsolepythontex} +\end{ConsolePythontex} \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} + \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] +\begin{ConsolePythontex}[Largeur=14cm,Centre=false] #console Python(tex) non centrée avec label from math import sqrt 1+1 sqrt(12) -\end{envconsolepythontex} +\end{ConsolePythontex} \end{codetex} \begin{codesortie} \smallskip -\begin{envconsolepythontex}[largeur=14cm,centre=false] +\begin{ConsolePythontex}[Largeur=14cm,Centre=false] #console Python(tex) non centrée avec label from math import sqrt 1+1 sqrt(12) -\end{envconsolepythontex} +\end{ConsolePythontex} \end{codesortie} \begin{codetex}[listing only] -\begin{envconsolepythontex}[largeur=14cm,label=false] +\begin{ConsolePythontex}[Largeur=14cm,Label=false] #console Python(tex) centrée sans label table = [[1,2],[3,4]] table[0][0] + from random import randint 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{ConsolePythontex} \end{codetex} \begin{codesortie} \smallskip -\begin{envconsolepythontex}[largeur=14cm,label=false] +\begin{ConsolePythontex}[Largeur=14cm,Label=false] #console Python(tex) centrée sans label table = [[1,2],[3,4]] table[0][0] + from random import randint 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{ConsolePythontex} \end{codesortie} \begin{codeinfo} @@ -1755,7 +1814,7 @@ Le {package} \ctex{listings} permet d'insérer et de présenter du code, et avec \subsection{Présentation de Pseudo-Code} \begin{codeidee} -L'environnement \ctex{envpseudocode} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}. +L'environnement \ctex{PseudoCode} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}. \end{codeidee} \begin{codeattention} @@ -1763,10 +1822,10 @@ De plus, le package \ctex{listings} avec \ctex{tcolorbox} ne permet pas de gére \end{codeattention} \begin{codetex}[listing only] -\begin{envpseudocode}(*)[<largeur>][<options>] +\begin{PseudoCode}(*)[<largeur>][<options>] %attention à l'indentation, gobble ne fonctionne pas... ... -\end{envpseudocode} +\end{PseudoCode} \end{codetex} \begin{codecles} @@ -1780,43 +1839,43 @@ Plusieurs \Cle{arguments} (optionnels) sont disponibles : \end{codecles} \begin{codetex}[listing only] -\begin{envpseudocode} %non centré, de largeur par défaut (12cm) avec lignes +\begin{PseudoCode} %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{PseudoCode} \end{codetex} \begin{codesortie} -\begin{envpseudocode} +\begin{PseudoCode} List = [...] # à déclarer au préalable n = longueur(List) Pour i allant de 0 à n-1 Faire Afficher(List[i]) FinPour -\end{envpseudocode} +\end{PseudoCode} \end{codesortie} \begin{codetex}[listing only] -\begin{envpseudocode}*[15cm][center] %centré, de largeur 15cm sans ligne +\begin{PseudoCode}*[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{PseudoCode} \end{codetex} \begin{codesortie} -\begin{envpseudocode}*[15cm][center] +\begin{PseudoCode}*[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{PseudoCode} \end{codesortie} \subsection{Compléments} @@ -1840,23 +1899,23 @@ Il s'agit ici de présenter une version \og clé en main \fg{}. \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 !). +Cela permet d'insérer du code \LaTeX{} dans l'environnement \ctex{PseudoCode} (attention au fontes de rendu par contre !). \end{codeinfo} \begin{codetex}[listing only] -\begin{envpseudocode}[12cm][] +\begin{PseudoCode}[12cm][] #Utilisation du mode mathescape Afficher (*\og*) .........(*\fg*) m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*) -\end{envpseudocode} +\end{PseudoCode} \end{codetex} \begin{codesortie} -\begin{envpseudocode}[12cm][] +\begin{PseudoCode}[12cm][] #Utilisation du mode mathescape Afficher (*\og*) .........(*\fg*) m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*) -\end{envpseudocode} +\end{PseudoCode} \end{codesortie} \newpage @@ -1884,17 +1943,17 @@ Comme pour le pseudo-code, pas d'\textsf{autogobble}, donc commandes à aligner \subsection{Commandes} \begin{codetex}[listing only] -\begin{PLtermwin}[<largeur>]{<titre=...>}[<options>] +\begin{TerminalWin}[<largeur>]{<titre=...>}[<options>] ... -\end{PLtermwin} +\end{TerminalWin} -\begin{PLtermunix}[<largeur>]{<titre=...>}[<options>] +\begin{TerminalUnix}[<largeur>]{<titre=...>}[<options>] ... -\end{PLtermunix} +\end{TerminalUnix} -\begin{PLtermosx}[<largeur>]{<titre=...>}[<options>] +\begin{TerminalOSX}[<largeur>]{<titre=...>}[<options>] ... -\end{PLtermosx} +\end{TerminalOSX} \end{codetex} \begin{codecles} @@ -1914,21 +1973,21 @@ De ce fait tous les caractères sont autorisés : même si l'éditeur pourra dé \end{codeinfo} \begin{codetex}[listing only] -\begin{PLtermunix}[12cm]{titre=Terminal Ubuntu}[center] %12cm, avec titre modifié et centré +\begin{TerminalUnix}[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{TerminalUnix} \end{codetex} \begin{codesortie} -\begin{PLtermunix}[12cm]{titre=Terminal Ubuntu}[center] +\begin{TerminalUnix}[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{TerminalUnix} \end{codesortie} \begin{codetex}[listing only] -\begin{PLtermwin}[15cm]{} %largeur 15cm avec titre par défaut +\begin{TerminalWin}[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 @@ -1943,16 +2002,16 @@ 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} +\end{TerminalWin} -\begin{PLtermosx}[0.5\linewidth]{titre=Terminal MacOSX}[flush right] %1/2-largeur et titre modifié et droite +\begin{TerminalOSX}[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{TerminalOSX} \end{codetex} \begin{codesortie} -\begin{PLtermwin}[15cm]{} +\begin{TerminalWin}[15cm]{} Microsoft Windows [version 10.0.22000.493] (c) Microsoft Corporation. Tous droits réservés. C:\Users\test>ping ctan.org @@ -1967,17 +2026,17 @@ 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} +\end{TerminalWin} -\begin{PLtermunix}[12cm]{titre=Terminal Ubuntu}[center] +\begin{TerminalUnix}[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{TerminalUnix} -\begin{PLtermosx}[0.5\linewidth]{titre=Terminal MacOSX}[flush right] +\begin{TerminalOSX}[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{TerminalOSX} \end{codesortie} \newpage @@ -1993,7 +2052,7 @@ L'idée est d'obtenir des \textsf{cartouches} tels que \textsf{Capytale} les pr \subsection{Commandes} \begin{codetex}[listing only] -\liencapytale(*)[<options>]{<code capytale>} +\CartoucheCapytale(*)[<options>]{<code capytale>} \end{codetex} \begin{codecles} @@ -2007,23 +2066,23 @@ Peu d'options pour ces commandes : \end{codecles} \begin{codetex}[listing only] -\liencapytale{abcd-12345} %lien simple, en sf +\CartoucheCapytale{abcd-12345} %lien simple, en sf -\liencapytale[~]{abcd-12345} %lien avec ~ à la fin, en sf +\CartoucheCapytale[~]{abcd-12345} %lien avec ~ à la fin, en sf -\liencapytale*{abcd-12345} %lien simple, en tt +\CartoucheCapytale*{abcd-12345} %lien simple, en tt -\liencapytale*[~]{abcd-12345} %lien avec ~ à la fin, en tt +\CartoucheCapytale*[~]{abcd-12345} %lien avec ~ à la fin, en tt \end{codetex} \begin{codesortie} -\liencapytale{abcd-12345} +\CartoucheCapytale{abcd-12345} -\liencapytale[~]{abcd-12345} +\CartoucheCapytale[~]{abcd-12345} -\liencapytale*{abcd-12345} +\CartoucheCapytale*{abcd-12345} -\liencapytale*[~]{abcd-12345} +\CartoucheCapytale*[~]{abcd-12345} \end{codesortie} \begin{codeinfo} @@ -2034,11 +2093,11 @@ Le \textsf{cartouche} peut être \og cliquable \fg{} grâce à \ctex{href}. \usepackage{hyperref} \urlstyle{same} ... -\href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\liencapytale{abcd-12345}} +\href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\CartoucheCapytale{abcd-12345}} \end{codetex} \begin{codesortie} -\href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\liencapytale{abcd-12345}} +\href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\CartoucheCapytale{abcd-12345}} \end{codesortie} \newpage @@ -2058,7 +2117,7 @@ L'idée est d'obtenir un pavé droit, dans un environnement \TikZ, avec les nœu \begin{codetex}[listing only] ... \begin{tikzpicture}[<options tikz>] - \pavePL[<options>] + \PaveTikz[<options>] ... \end{tikzpicture} \end{codetex} @@ -2067,27 +2126,27 @@ L'idée est d'obtenir un pavé droit, dans un environnement \TikZ, avec les nœu 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} + \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 +\PaveTikz \end{codetex} \begin{codetex}[tikz lower] %code tikz -\pavePL[cube,largeur=2] +\PaveTikz[Cube,Largeur=2] \end{codetex} \begin{codeinfo} @@ -2100,20 +2159,20 @@ Le code crée les nœuds relatifs aux sommets, et les nomme comme les sommets, c \begin{codetex}[listing only] \begin{tikzpicture}[line join=bevel] - \pavePL[aff,largeur=4,profondeur=3,hauteur=2,epaisseur={ultra thick}] + \PaveTikz[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}] + \PaveTikz[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] + \PaveTikz[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} @@ -2123,7 +2182,7 @@ Le code crée les nœuds relatifs aux sommets, et les nomme comme les sommets, c \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] + \PaveTikz[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} @@ -2145,7 +2204,7 @@ L'idée est d'obtenir un tétraèdre, dans un environnement \TikZ, avec les nœu \begin{codetex}[listing only] ... \begin{tikzpicture}[<options tikz>] - \tetraPL[<options>] + \TetraedreTikz[<options>] ... \end{tikzpicture} \end{codetex} @@ -2154,31 +2213,31 @@ L'idée est d'obtenir un tétraèdre, dans un environnement \TikZ, avec les nœu 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} + \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 +\TetraedreTikz \end{codetex} \begin{codetex}[tikz lower] %code tikz -\tetraPL[aff,largeur=2,profondeur=0.625,hauteur=1.5] +\TetraedreTikz[Aff,Largeur=2,Profondeur=0.625,Hauteur=1.5] \end{codetex} \begin{codetex}[tikz lower] %code tikz -\tetraPL[plein,aff,largeur=5,beta=60] +\TetraedreTikz[Plein,Aff,Largeur=5,Beta=60] \end{codetex} %\begin{codeinfo} @@ -2194,10 +2253,10 @@ Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les diff \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} ; + \TetraedreTikz[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) ; @@ -2209,7 +2268,7 @@ Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les diff \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] + \TetraedreTikz[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} @@ -2218,7 +2277,7 @@ Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les diff \begin{codesortie} \begin{center} \begin{tikzpicture}[line join=bevel] - \tetraPL[aff,largeur=7,profondeur=3,hauteur=5,epaisseur={ultra thick},alpha=20,beta=30] + \TetraedreTikz[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} @@ -2259,12 +2318,12 @@ L'idée est d'obtenir une commande pour tracer (en \TikZ) un cercle trigonométr \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. +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{CercleTrigo} pour afficher le cercle. \end{codeidee} \begin{codetex}[tikz lower] %code tikz -\cercletrigoPL +\CercleTrigo \end{codetex} \subsection{Commandes} @@ -2273,7 +2332,7 @@ Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur déf ... \begin{tikzpicture}[<options tikz>] ... - \cercletrigoPL[<clés>] + \CercleTrigo[<clés>] ... \end{tikzpicture} \end{codetex} @@ -2282,17 +2341,17 @@ Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur déf 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} + \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} @@ -2301,15 +2360,15 @@ Plusieurs \Cle{Clés} sont disponibles pour cette commande : \begin{codetex}[listing only] \begin{center} \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,affvaleurs=false,decal=8pt] + \CercleTrigo[Rayon=2.5,AffValeurs=false,Decal=8pt] \end{tikzpicture} ~~~~ \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,affangles=false] + \CercleTrigo[Rayon=2.5,AffAngles=false] \end{tikzpicture} ~~~~ \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,moinspi=false,couleurfond=orange!15] + \CercleTrigo[Rayon=2.5,MoinsPi=false,CouleurFond=orange!15] \end{tikzpicture} \end{center} \end{codetex} @@ -2317,15 +2376,15 @@ Plusieurs \Cle{Clés} sont disponibles pour cette commande : \begin{codesortie} \begin{center} \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,affvaleurs=false,decal=8pt] + \CercleTrigo[Rayon=2.5,AffValeurs=false,Decal=8pt] \end{tikzpicture} ~~~~ \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,affangles=false] + \CercleTrigo[Rayon=2.5,AffAngles=false] \end{tikzpicture} ~~~~ \begin{tikzpicture}[line join=bevel] - \cercletrigoPL[rayon=2.5,moinspi=false,couleurfond=orange!15,taillevaleurs=\tiny] + \CercleTrigo[Rayon=2.5,MoinsPi=false,CouleurFond=orange!15,TailleValeurs=\tiny] \end{tikzpicture} \end{center} \end{codesortie} @@ -2340,31 +2399,31 @@ En plus des \Cle{Clés} précédentes, il existe un complément pour \textit{vis 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 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} + \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] + \CercleTrigo[% + 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] + \CercleTrigo[% + 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] + \CercleTrigo[% + AffTraits=false,AffAngles=false,Rayon=2.75,Equationcos,cos=60,CouleurSol=purple,TailleVvaleurs=\tiny] \end{tikzpicture} \end{center} \end{codetex} @@ -2372,20 +2431,20 @@ Les \Cle{Clés} pour cette possibilité sont : \begin{codesortie} \begin{center} \begin{tikzpicture} - \cercletrigoPL[% - affangles=false,affvaleurs=false,afftraits=false,rayon=2,equationsin,sin=-30,couleursol=red] + \CercleTrigo[% + 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] + \CercleTrigo[% + 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] + \CercleTrigo[% + AffTraits=false,AffAngles=false,Rayon=2.75,Equationcos,cos=60,CouleurSol=purple,TailleVvaleurs=\tiny] \end{tikzpicture} \end{center} \end{codesortie} @@ -2418,12 +2477,12 @@ L'idée est que cette macro calcule et stocke les paramètres dans des variables \begin{codetex}[listing only] ... -\PLreglin[<clés>]{<listeX>}{<listeY>} %listes avec éléments séparés par des , +\CalculsRegLin[<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 ! +La commande \ctex{CalculsRegLin} va définir également des \textsf{macros} pour chaque coefficient, qui de ce fait seront réutilisables après ! \end{codeinfo} \subsection{Commandes} @@ -2432,12 +2491,12 @@ La commande \ctex{PLreglin} va définir également des \textsf{macros} pour chaq 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} + \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} @@ -2445,7 +2504,7 @@ Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour %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} +\CalculsRegLin{\LLX}{\LLY} \end{codetex} \begin{codetex}[listing only] @@ -2467,7 +2526,7 @@ Coefficient $r^2=\COEFFrd$. \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} +\CalculsRegLin{\LLX}{\LLY} Liste des X := \showitems\LX. @@ -2525,8 +2584,8 @@ Les \textsf{macros} qui contiennent les paramètres de la régression sont donc \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} +\CalculsRegLin[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)}}} @@ -2538,7 +2597,7 @@ Le coeff. de corrélation est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\ar \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} +\CalculsRegLin[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)}}} @@ -2571,7 +2630,7 @@ La commande étant \og autonome \fg{}, elle va pouvoir être intégrée dans des }; \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} + \CalculsRegLin{\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)}$}; @@ -2622,7 +2681,7 @@ La commande étant \og autonome \fg{}, elle va pouvoir être intégrée dans des }; \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} + \CalculsRegLin{\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)}$}; @@ -2631,14 +2690,14 @@ La commande étant \og autonome \fg{}, elle va pouvoir être intégrée dans des \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 +Il existe également une commande auxiliaire, \ctex{PointsRegLin} 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>} + \PointsRegLin[<clés>]{<listeX>}{<listeY>} ... \end{tikzpicture} \end{codetex} @@ -2647,8 +2706,8 @@ Il existe également une commande auxiliaire, \ctex{PLreglinpts} pour afficher l 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{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} @@ -2665,8 +2724,8 @@ Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour \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} + \CalculsRegLin{\LLX}{\LLY} + \PointsRegLin[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)}$} ; \\ @@ -2686,8 +2745,8 @@ Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour \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} + \CalculsRegLin{\LLX}{\LLY} +\PointsRegLin[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)}$} ; \\ @@ -2741,7 +2800,7 @@ Le package \ctex{pgfplots} peut être utilisé pour traiter ce genre de situatio %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} +\CalculsRegLin{\LLX}{\LLY} \end{codetex} \begin{codetex}[listing only] @@ -2750,40 +2809,40 @@ Le package \ctex{pgfplots} peut être utilisé pour traiter ce genre de situatio [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 + \GrilleTikz \AxesTikz %grilles et axes + \AxexTikz[Annee]{1992,1994,...,2010} %axeOx + \AxeyTikz{1640,1650,...,1720} %axeOy + \NuagePointsTikz{\LLX}{\LLY} %nuage + \CourbeTikz[line width=1.25pt,ForestGreen,samples=2]% + {\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} %droite de régression + \PointMoyenTikz %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 + [....] %paramètres + \FenetreSimpleTikz<Annee>{1992,1994,...,2010}{1640,1650,...,1720} %fenêtre "simple" + \NuagePointsTikz{\LLX}{\LLY} %nuage + \CourbeTikz[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} +\CalculsRegLin{\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 + \GrilleTikz \AxesTikz + \AxexTikz[Annee]{1992,1994,...,2010} + \AxeyTikz{1640,1650,...,1720} + \NuagePointsTikz{\LLX}{\LLY} + \CourbeTikz[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} + \PointMoyenTikz \end{tikzpicture} \end{codesortie} @@ -2813,14 +2872,14 @@ Pour illustrer les commandes et options de ce paragraphe, la base sera le graphi \begin{codetex}[listing only] %...code tikz - \PLgrilletikz[<options>][<options grille ppale>][<options grille second.>] + \GrilleTikz[<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 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} @@ -2830,14 +2889,14 @@ Cette commande permet de tracer une grille principale et/ou une grille secondair [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 + \GrilleTikz \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] + \GrilleTikz[Affp=false][][orange,densely dotted] \end{tikzpicture} \end{codetex} @@ -2847,48 +2906,48 @@ Cette commande permet de tracer une grille principale et/ou une grille secondair [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 + \GrilleTikz \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] + \GrilleTikz[Affp=false][][orange,densely dotted] \end{tikzpicture} \hfill~ \end{codesortie} \begin{codetex}[listing only] %...code tikz - \PLaxestikz[<options>] + \AxesTikz[<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{>} + \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 + \AxesTikz %code tikz - \PLaxestikz% - [afflabel=xy,labelx={Année},labely={Altitude},% - poslabelx={below right},poslabely={above left}% - police=\small\sffamily] + \AxesTikz% + [AffLabel=xy,Labelx={Année},Labely={Altitude},% + PosLabelx={below right},PosLabely={above left},% + Police=\small\sffamily] \end{codetex} \begin{codesortie} @@ -2897,17 +2956,17 @@ Cette commande permet de tracer les axes, avec des \Cle{clés} : [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 + \AxesTikz \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] + \AxesTikz% + [AffLabel=xy,Labelx={Année},Labely={Altitude},% + PosLabelx={below right},PosLabely={above left},% + Police=\small\sffamily] \end{tikzpicture} \hfill~ \end{codesortie} @@ -2916,32 +2975,32 @@ Cette commande permet de tracer les axes, avec des \Cle{clés} : \begin{codetex}[listing only] %...code tikz - \PLaxextikz[<options>]{valeurs} - \PLaxeytikz[<options>]{valeurs} + \AxexTikz[<options>]{valeurs} + \AxexTikz[<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} + \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} + \AxexTikz[Police=\small]{1992,1994,...,2010} + \AxexTikz{1640,1650,...,1720} %code tikz - \PLaxextikz[police=\small,annee,hautgrad=0pt/4pt]{1992,1994,...,2010} - \PLaxeytikz[affgrad=false,hautgrad=6pt]{1640,1650,...,1720} + \AxeyTikz[Police=\small,Annee,HautGrad=0pt/4pt]{1992,1994,...,2010} + \AxeyTikz[AffGrad=false,HautGrad=6pt]{1640,1650,...,1720} %des axes fictifs (en gris) sont rajoutés pour la lisibilité du code de sortie \end{codetex} @@ -2954,8 +3013,8 @@ Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} ide 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} + \AxexTikz[Police=\small]{1992,1994,...,2010} + \AxeyTikz{1640,1650,...,1720} \end{tikzpicture} ~~ \begin{tikzpicture}% @@ -2964,8 +3023,8 @@ Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} ide 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} + \AxexTikz[Police=\small,Annee,HautGrad=0pt/4pt]{1992,1994,...,2010} + \AxeyTikz[AffGrad=false,HautGrad=6pt]{1640,1650,...,1720} \end{tikzpicture} \hfill~ \end{codesortie} @@ -2976,16 +3035,16 @@ Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} ide 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. + \item \ctex{FenetreTikz} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ; + \item \ctex{FenetreSimpleTikz} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ; + \item \ctex{OrigineTikz} 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} + \FenetreTikz %on restreint les tracés + \FenetreSimpleTikz<options axe Ox>{liste abscisses}<options axe Oy>{liste ordonnées} \end{codetex} %%l'origine @@ -2999,16 +3058,16 @@ Il existe, de manière marginale, quelques commandes complémentaires qui ne ser \begin{codetex}[listing only] %...code tikz - \PLnuagepts[<options>]{listeX}{listeY} + \NuagePointsTikz[<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 : +Cette commande, liée à la commande \ctex{CalculsRegLin} 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} + \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} @@ -3017,99 +3076,99 @@ Cette commande, liée à la commande \ctex{PLreglin} permet de représenter le n \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} + \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \end{tikzpicture} ~~ \begin{tikzpicture}[...] - \PLnuagepts[couleur=ForestGreen,style=x,taille=6pt]{\LLX}{\LLY} + \NuagePointsTikz[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} +\CalculsRegLin{\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} + \GrilleTikz \AxesTikz + \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} + \AxeyTikz{1640,1650,...,1720} + \NuagePointsTikz[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} + \GrilleTikz \AxesTikz + \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} + \AxeyTikz{1640,1650,...,1720} + \NuagePointsTikz[Couleur=ForestGreen,Style=x,Taille=6pt]{\LLX}{\LLY} \end{tikzpicture} \end{codesortie} %point moyen \begin{codetex}[listing only] %...code tikz - \PLnuageptmoy[<options>] + \PointMoyenTikz[<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} : +Cette commande permet de rajouter le point moyen du nuage, calculé par la commande \ctex{CalculsRegLin}, 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{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} + \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} +\CalculsRegLin{\LLX}{\LLY} \begin{tikzpicture}[...] - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} - \PLnuageptmoy + \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} + \PointMoyenTikz \end{tikzpicture} ~~ \begin{tikzpicture}[...] - \PLnuagepts[couleur=ForestGreen,style=x,taille=6pt]{\LLX}{\LLY} - \PLnuageptmoy[couleur=orange,taille=8pt,style=+,nom={$G_1$}] + \NuagePointsTikz[Couleur=ForestGreen,Style=x,Taille=6pt]{\LLX}{\LLY} + \PointMoyenTikz[Couleur=orange,Taille=8pt,Style=+,Nom={$G_1$},Pos=below] \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} +\CalculsRegLin{\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 + \GrilleTikz \AxesTikz + \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} + \AxeyTikz{1640,1650,...,1720} + \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} + \PointMoyenTikz \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] + \GrilleTikz \AxesTikz + \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} + \AxeyTikz{1640,1650,...,1720} + \NuagePointsTikz[Couleur=ForestGreen,Style=x,Taille=6pt]{\LLX}{\LLY} + \PointMoyenTikz[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} + \CourbeTikz[<options>]{formule}{domaine} \end{codetex} \begin{codecles} @@ -3133,25 +3192,25 @@ L'idée principale est de récupérer les variables de la régression linéaire \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} +\CalculsRegLin{\LLX}{\LLY} \begin{tikzpicture}[...] - \PLnuagepts[couleur=blue/red]{\LLX}{\LLY} \PLnuageptmoy - \PLcourbe[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax} + \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \NuagePointsTikz + \CourbeTikz[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} +\CalculsRegLin{\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} + \GrilleTikz \AxesTikz + \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} + \AxeyTikz{1640,1650,...,1720} + \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \PointMoyenTikz + \CourbeTikz[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax} \end{tikzpicture} \end{codesortie} @@ -3160,8 +3219,8 @@ L'idée principale est de récupérer les variables de la régression linéaire \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} + \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \FenetreTikz %on fixe la fenêtre + \CourbeTikz[line width=1.25pt,orange,samples=500]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax} \end{tikzpicture} \end{codetex} @@ -3170,11 +3229,11 @@ L'idée principale est de récupérer les variables de la régression linéaire \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} + \GrilleTikz \AxesTikz + \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} + \AxeyTikz{1640,1650,...,1720} + \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \FenetreTikz + \CourbeTikz[line width=1.25pt,orange,samples=500]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax} \end{tikzpicture} \end{codesortie} @@ -3194,7 +3253,7 @@ Le code ne calcule pas les paramètres, il ne fait \textit{que} tracer la boîte \begin{codetex}[] \begin{tikzpicture} - \PLboitemoust[parametres={10/15/17/19/20}] + \BoiteMoustaches{10/15/17/19/20} \end{tikzpicture} \end{codetex} @@ -3208,23 +3267,22 @@ Le code ne calcule pas les paramètres, il ne fait \textit{que} tracer la boîte 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} + \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] + \BoiteMoustaches[Epaisseur=very thick,Moyenne=18.5,Couleur=blue,AffMoyenne,% + Pointilles,Valeurs,Hauteur=2.25,Elevation=2.75]{10/15/17/19/20} \end{tikzpicture} \end{codetex} @@ -3232,9 +3290,9 @@ Quelques \Cle{clés} sont disponibles pour cette commande : %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] + \BoiteMoustaches[Epaisseur=ultra thick,Couleur=blue]{100/150/170/190/200} + \BoiteMoustaches[Epaisseur=thin,Elevation=2.5,Couleur=red]{80/100/110/120/150} + \BoiteMoustaches[Elevation=4,Couleur=ForestGreen,Remplir=ForestGreen!25]{100/140/145/160/210} \end{tikzpicture} \end{center} \end{codetex} @@ -3245,9 +3303,9 @@ Quelques \Cle{clés} sont disponibles pour cette commande : \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] + \BoiteMoustaches[Epaisseur=ultra thick,Couleur=blue]{100/150/170/190/200} + \BoiteMoustaches[Epaisseur=thin,Elevation=2.5,Couleur=red]{80/100/110/120/150} + \BoiteMoustaches[Elevation=4,Couleur=ForestGreen,Remplir=ForestGreen!25]{100/140/145/160/210} \end{tikzpicture} \end{center} \end{codesortie} @@ -3260,15 +3318,15 @@ L'idée est de proposer, en parallèle de la commande précédente, une commande \begin{codetex}[] \begin{tikzpicture} - \PLboitemoustaxe[min=10,max=20] - \PLboitemoust[parametres={10/15/17/19/20}] + \BoiteMoustachesAxe[Min=10,Max=20] + \BoiteMoustaches{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] + \BoiteMoustachesAxe[Min=10,Max=20] + \BoiteMoustaches[Valeurs,Pointilles]{10/15/17/19/20} \end{tikzpicture} \end{codetex} @@ -3276,20 +3334,20 @@ L'idée est de proposer, en parallèle de la commande précédente, une commande 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. + \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] + \BoiteMoustachesAxe[Min=8,Max=21,AffValeurs,Valeurs={8,9,...,21},Elargir=0.02] + \BoiteMoustaches[Moyenne=18.5,Couleur=blue]{10/15/17/19/20} + \BoiteMoustaches[Elevation=2.5,Couleur=red]{8/10/11/12/15} + \BoiteMoustaches[Elevation=4,Couleur=ForestGreen,Remplir=ForestGreen!25]{10/14/14.5/16/21} \end{tikzpicture} \end{codetex} @@ -3335,26 +3393,26 @@ De ce fait, les options de \ctex{siunitx} de l'utilisateur affecterons les forma \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) +\CalcBinomP{n}{p}{k} %P(X=k) +\CalcBinomC{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) +\CalcPoissP{l}{k} %P(X=k) +\CalcPoissC{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) +\CalcGeomP{p}{k} %P(X=k) +\CalcGeomC{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) +\CalcHypergeomP{N}{n}{m}{k} %P(X=k) +\CalcHypergeomP{N}{n}{m}{a}{b} %P(a<=X<=b) %loi normale N(m,s) -\calcPnormC{m}{s}{a}{b} %P(a<=X<=b) +\CalcNormC{m}{s}{a}{b} %P(a<=X<=b) %loi exponentielle E(l) -\calcPexpoC{l}{a}{b} %P(a<=X<=b) +\CalcExpoC{l}{a}{b} %P(a<=X<=b) \end{codetex} \begin{codecles} @@ -3367,89 +3425,89 @@ Pour les probabilités cumulées, on peut utiliser \ctex{*} comme borne ($a$ ou \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}$. +$P(X=3) \approx \CalcBinomP{5}{0.4}{3}$. +$P(X\leqslant1) \approx \CalcBinomC{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}$. +$P(X=10) \approx \CalcBinomP{100}{0.02}{10}$. +$P(15\leqslant X\leqslant25) \approx \CalcBinomC{100}{0.02}{15}{25}$. % Y -> P(5) -$P(Y=3) \approx \calcPpoissP{5}{3}$. -$P(Y\geqslant2) \approx \calcPpoissC{5}{2}{*}$. +$P(Y=3) \approx \CalcPoissP{5}{3}$. +$P(Y\geqslant2) \approx \CalcPoissC{5}{2}{*}$. % T -> G(0.5) -$P(T=100) \approx \calcPgeomP{0.5}{3}$. -$P(T\leqslant5) \approx \calcPgeomC{0.5}{*}{5}$. +$P(T=100) \approx \CalcPoissP{0.5}{3}$. +$P(T\leqslant5) \approx \CalcPoissC{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}$. +$P(W=4) \approx \CalcHypergeomP{50}{10}{5}{4}$. +$P(1\leqslant W\leqslant3) \approx \CalcHypergeomC{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}$. +$P(X=3) \approx \CalcBinomP{5}{0.4}{3}$.\\ +$P(X\leqslant1) \approx \CalcBinomC{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}$. +$P(X=10) \approx \CalcBinomP{100}{0.02}{10}$.\\ +$P(15\leqslant X\leqslant25) \approx \CalcBinomC{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}{*}$. +$P(Y=3) \approx \CalcPoissP{5}{3}$.\\ +$P(Y\geqslant2) \approx \CalcPoissC{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}$. +$P(T=3) \approx \CalcGeomP{0.5}{3}$.\\ +$P(T\leqslant5) \approx \CalcGeomC{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}$. +$P(W=4) \approx \CalcHypergeomP{50}{10}{5}{4}$.\\ +$P(1\leqslant W\leqslant3) \approx \CalcHypergeomC{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}$. +$P(X\leqslant1) \approx \CalcNormC{0}{1}{*}{1}$. +$P(-1,96\leqslant Z\leqslant1,96) \approx \CalcNormC{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}$. +$P(Y\geqslant600) \approx \CalcNormC{550}{30}{600}{*}$. +$P(500\leqslant Y\leqslant600) \approx \CalcNormC{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}$. +$P(Z\geqslant400) \approx \CalcExpoC{0.001}{400}{*}$. +$P(300\leqslant Z\leqslant750) \approx \CalcExpoC{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}$. +$P(X\leqslant1) \approx \CalcNormC{0}{1}{*}{1}$.\\ +$P(-1,96\leqslant Z\leqslant1,96) \approx \CalcNormC{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}$. +$P(Y\geqslant600) \approx \CalcNormC{550}{30}{600}{*}$.\\ +$P(500\leqslant Y\leqslant600) \approx \CalcNormC{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}$. +$P(Z\geqslant400) \approx \CalcExpoC{0.001}{400}{*}$.\\ +$P(300\leqslant Z\leqslant750) \approx \CalcExpoC{0.001}{300}{750}$. \end{codesortie} -\subsection{Complément avec sortie \og formaté \fg} +\subsection{Complément avec sortie \og formatée \fg} \begin{codeidee} L'idée est ensuite de formater le résultat obtenu par \ctex{xintexpr}, pour un affichage homogène. @@ -3461,13 +3519,13 @@ L'utilisateur peut donc utiliser \og sa \fg{} méthode pour formater les résult \begin{codetex}[listing only] %avec un formatage manuel -\num[exponent-mode=scientific]{\calcPbinomP{100}{0.02}{10}} +\num[exponent-mode=scientific]{\BinomP{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}}$. +$P(X=10) \approx \num[exponent-mode=scientific]{\CalcBinomP{100}{0.02}{10}}$. \end{codesortie} \begin{codeidee} @@ -3483,26 +3541,26 @@ Les commandes sont dans ce cas préfixées par \ctex{num} au lieu de \ctex{calc} \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) +\BinomP(*)[prec]{n}{p}{k} %P(X=k) +\BinomC(*)[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) +\PoissonP(*)[prec]{l}{k} %P(X=k) +\PoissonC(*)[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) +\GeomP{p}{k} %P(X=k) +\GeomC{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) +\HypergeomP{N}{n}{m}{k} %P(X=k) +\HypergeomC{N}{n}{m}{a}{b} %P(a<=X<=b) %loi normale N(m,s) -\numPnormC(*)[prec]{m}{s}{a}{b} %P(a<=X<=b) +\NormaleC(*)[prec]{m}{s}{a}{b} %P(a<=X<=b) %loi exponentielle E(l) -\numPexpoC(*)[prec]{l}{a}{b} %P(a<=X<=b) +\ExpoC(*)[prec]{l}{a}{b} %P(a<=X<=b) \end{codetex} \begin{codecles} @@ -3516,60 +3574,60 @@ Quelques précisions sur les commandes précédentes : \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}$. +$P(Y\geqslant600) \approx \NormaleC[4]{550}{30}{600}{*}$. +$P(500\leqslant Y\leqslant600) \approx \NormaleC[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}$. +$P(X=10) \approx \BinomP[7]{100}{0.02}{10} \approx \BinomP*[7]{100}{0.02}{10}$. +$P(15\leqslant X\leqslant25) \approx \BinomC[10]{100}{0.02}{15}{25} \approx \BinomC*[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}$. +$P(W=4) \approx \HypergeomP[5]{50}{10}{5}{4}$. +$P(1\leqslant W\leqslant3) \approx \HypergeomC[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}$. +$P(Z\geqslant400) \approx \ExpoC{0.001}{400}{*}$. +$P(300\leqslant Z\leqslant750) \approx \ExpoC{0.001}{300}{750}$. % T -> P(5) -$P(T=3) \approx \numPpoissP{5}{3}$. -$P(T\geqslant2) \approx \numPpoissC[4]{5}{2}{*}$. +$P(T=3) \approx \PoissonP{5}{3}$. +$P(T\geqslant2) \approx \PoissonC[4]{5}{2}{*}$. \end{codetex} \begin{codesortie} $\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,;\,30)$ : -$P(Y\geqslant600) \approx \numPnormC[4]{550}{30}{600}{*}$. +$P(Y\geqslant600) \approx \NormaleC[4]{550}{30}{600}{*}$. -$P(500\leqslant Y\leqslant600) \approx \numPnormC[4]{550}{30}{500}{600}$. +$P(500\leqslant Y\leqslant600) \approx \NormaleC[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(X=10) \approx \BinomP[7]{100}{0.02}{10} \approx \BinomP*[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}$. +$P(15\leqslant X\leqslant25) \approx \BinomC[10]{100}{0.02}{15}{25} \approx \BinomC*[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(W=4) \approx \HypergeomP[5]{50}{10}{5}{4}$. -$P(1\leqslant W\leqslant3) \approx \numPhypergeomC[4]{50}{10}{5}{1}{3}$. +$P(1\leqslant W\leqslant3) \approx \HypergeomC[4]{50}{10}{5}{1}{3}$. \medskip $\bullet~~~~Z \hookrightarrow \mathcal{E}_{0,001}$ : -$P(Z\geqslant400) \approx \numPexpoC{0.001}{400}{*}$. +$P(Z\geqslant400) \approx \ExpoC{0.001}{400}{*}$. -$P(300\leqslant Z\leqslant750) \approx \numPexpoC{0.001}{300}{750}$. +$P(300\leqslant Z\leqslant750) \approx \ExpoC{0.001}{300}{750}$. \medskip $\bullet~~~~T \hookrightarrow \mathcal{P}_5$ : -$P(T=3) \approx \numPpoissP{5}{3}$. +$P(T=3) \approx \PoissonP{5}{3}$. -$P(T\geqslant2) \approx \numPpoissC[4]{5}{2}{*}$. +$P(T\geqslant2) \approx \PoissonC[4]{5}{2}{*}$. \end{codesortie} \begin{codeinfo} @@ -3595,12 +3653,12 @@ Les (deux) commandes sont donc liées à un environnement \ctex{tikzpicture}, et \begin{codetex}[listing only] %commande simple pour tracé de l'arbre -\PLarbre[<options>]{<donnees>} +\ArbreProbasTikz[<options>]{<donnees>} %environnement pour tracé et exploitation éventuelle -\begin{PLenvarbre}[<options>]{<donnees>} +\begin{EnvArbreProbasTikz}[<options>]{<donnees>} <code tikz supplémentaire> -\end{PLenvarbre} +\end{EnvArbreProbasTikz} \end{codetex} \subsection{Options et arguments} @@ -3618,16 +3676,16 @@ Les \Cle{donnees} seront à préciser sous forme \ctex{<sommet1>/<proba1>/<posit 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} + \item la clé \Cle{Unite} pour préciser l'unité de l'environnement \TikZ{} ; \hfill~défaut \Cle{1cm} + \item la clé \Cle{EspaceNiveau} pour l'espace (H) entre les étages ; \hfill~défaut \Cle{3.25} + \item la clé \Cle{EspaceFeuille} 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{EpaisseurTrait} pour l'épaisseur des branches, en langage \TikZ{} ; \hfill~défaut \Cle{semithick} \end{itemize} \end{codecles} @@ -3641,13 +3699,13 @@ Quelques \Cle{Clés} (communes) pour les deux commandes : $\overline{B}$/$\frac{1}{3}$/ } -\PLarbre{\ArbreDeuxDeux} +\ArbreProbasTikz{\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}$/} +\begin{EnvArbreProbasTikz}{$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)} ; @@ -3655,12 +3713,12 @@ Quelques \Cle{Clés} (communes) pour les deux commandes : \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} + \draw[lightgray,<->] (0,-4) -- (3.25,-4) node[midway,below,font=\ttfamily\small] {EspaceNiveau} ; + \draw[lightgray,<->] (3.25,-4) -- (6.5,-4) node[midway,below,font=\ttfamily\small] {EspaceNiveau} ; + \draw[lightgray,<->] (7,0) -- (7,-1) node[midway,right,font=\ttfamily\small] {EspaceFeuille} ; + \draw[lightgray,<->] (7,-1) -- (7,-2) node[midway,right,font=\ttfamily\small] {EspaceFeuille} ; + \draw[lightgray,<->] (7,-2) -- (7,-3) node[midway,right,font=\ttfamily\small] {EspaceFeuille} ; +\end{EnvArbreProbasTikz} \end{codesortie} \begin{codeinfo} @@ -3688,15 +3746,15 @@ Les nœuds crées par les commandes sont : $\overline{B}$/$\frac{4}{15}$/below } -\begin{PLenvarbre}[type=3x2,fleche,espniv=5,espfeuille=1.25]{\ArbreTroisDeux} +\begin{EnvArbreProbasTikz}[Type=3x2,Fleche,EspaceNiveau=5,EspaceFeuille=1.25]{\ArbreTroisDeux} \draw[ForestGreen,->] (A24)--($(A24)+(2.5,0)$) node[right,font=\sffamily] {code tikz rajouté} ; -\end{PLenvarbre} +\end{EnvArbreProbasTikz} \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} +\begin{EnvArbreProbasTikz}[Type=3x2,Fleche,EspaceNiveau=5,EspaceFeuille=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{EnvArbreProbasTikz} \end{codesortie} \begin{codetex}[listing only] @@ -3710,7 +3768,7 @@ Les nœuds crées par les commandes sont : $B_2$/.../, $B_3$/$\frac{1}{3}$/below } -\PLarbre[type=2x3,inclineprobas=false,espfeuille=1.15]{\ArbreDeuxTrois} +\ArbreProbasTikz[Type=2x3,InclineProbas=false,EspaceFeuille=1.15]{\ArbreDeuxTrois} \def\ArbreTroisTrois{ $A_1$/\num{0.05}/, @@ -3727,13 +3785,13 @@ Les nœuds crées par les commandes sont : $B_3$/{1/3}/ } -\PLarbre[type=3x3,styletrait={densely dashed},espfeuille=0.7,policeprobas=\scriptsize,police=\small]{\ArbreTroisTrois} +\ArbreProbasTikz[Type=3x3,StyleTrait={densely dashed},EspaceFeuille=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} +\ArbreProbasTikz[Type=2x3,InclineProbas=false,EspaceFeuille=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}/} +\ArbreProbasTikz[Type=3x3,StyleTrait={densely dashed},EspaceFeuille=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 @@ -3872,7 +3930,7 @@ Les macros présentées ici ne font que les intégrer dans un environnement adap \subsection{Conversion décimal vers binaire} \begin{codetex}[listing only] -\PLconvdecbin(*)[<clés>]{<nombre>} +\ConversionDecBin(*)[<clés>]{<nombre>} \end{codetex} \begin{codecles} @@ -3880,7 +3938,7 @@ 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 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} @@ -3893,29 +3951,29 @@ Les nombres écrits en binaire sont, par défaut, présentés en bloc(s) de 4 ch \begin{codetex}[listing only] % Conversion avec affichage de la base et par bloc de 4 -$\PLconvdecbin{415}$ +$\ConversionDecBin{415}$ % Conversion avec affichage de la base et sans forcément des blocs de 4 -$\PLconvdecbin*{415}$ +$\ConversionDecBin*{415}$ % Conversion sans affichage de la base et par bloc de 4 -$\PLconvdecbin[affbase=false]{415}$ +$\ConversionDecBin[AffBase=false]{415}$ % Conversion sans affichage de la base et sans forcément des blocs de 4 -$\PLconvdecbin*[affbase=false]{415}$ +$\ConversionDecBin*[AffBase=false]{415}$ \end{codetex} \begin{codesortie} -$\PLconvdecbin{415}$ +$\ConversionDecBin{415}$ \smallskip -$\PLconvdecbin*{415}$ +$\ConversionDecBin*{415}$ \smallskip -$\PLconvdecbin[affbase=false]{415}$ +$\ConversionDecBin[AffBase=false]{415}$ \smallskip -$\PLconvdecbin*[affbase=false]{415}$ +$\ConversionDecBin*[AffBase=false]{415}$ \end{codesortie} \subsection{Conversion binaire vers hexadécimal} @@ -3932,15 +3990,15 @@ L'idée est ici de présenter la conversion, grâce à la conversion \og directe \end{codeinfo} \begin{codetex}[listing only] -\PLconvbinhex[<clés>]{<nombre>} +\ConversionBinHex[<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 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} @@ -3949,19 +4007,19 @@ Le formatage est géré par le package \ctex{sinuitx}, le mieux est de positionn \begin{codetex}[listing only] %conversion avec détails et affichage de la base -$\PLconvbinhex{110011111}$ +$\ConversionBinHex{110011111}$ %conversion sans détails et affichage de la base -$\PLconvbinhex[details=false]{110011111}$ +$\ConversionBinHex[Details=false]{110011111}$ %conversion sans détails et sans affichage de la base -$\PLconvbinhex[affbase=false,details=false]{110011111}$ +$\ConversionBinHex[AffBase=false,Details=false]{110011111}$ \end{codetex} \begin{codesortie} -$\PLconvbinhex{110011111}$ +$\ConversionBinHex{110011111}$ -$\PLconvbinhex[details=false]{110011111}$ +$\ConversionBinHex[Details=false]{110011111}$ -$\PLconvbinhex[affbase=false,details=false]{110011111}$ +$\ConversionBinHex[AffBase=false,Details=false]{110011111}$ \end{codesortie} \pagebreak @@ -3979,17 +4037,17 @@ L'idée est ici de présenter la conversion, grâce à l'écriture polynômiale \end{codeinfo} \begin{codetex}[listing only] -\PLconvtodec[<clés>]{<nombre>} +\ConversionVersDec[<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} + \item la clé \Cle{BaseDp} 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. @@ -3997,27 +4055,27 @@ Le formatage est toujours géré par le package \ctex{sinuitx}, le mieux est de \begin{codetex}[listing only] %conversion 16->10 avec détails et affichage de la base et zéros -$\PLconvtodec[basedep=16]{19F}$ +$\ConversionVersDec[BaseDep=16]{19F}$ %conversion 2->10 avec détails et affichage de la base et zéros -$\PLconvtodec{110011}$ +$\ConversionVersDec{110011}$ %conversion 2->10 avec détails et affichage de la base et sans zéros -$\PLconvtodec[zeros=false]{110011}$ +$\ConversionVersDec[Zeros=false]{110011}$ %conversion 16->10 sans détails et affichage de la base et avec zéros -$\PLconvtodec[basedep=16,details=false]{AC0DC}$ +$\ConversionVersDec[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}$ +$\ConversionVersDec[Eeros=false,Basedep=16]{AC0DC}$ \end{codetex} \begin{codesortie} -$\PLconvtodec[basedep=16]{19F}$ +$\ConversionVersDec[BaseDep=16]{19F}$ -$\PLconvtodec{110011}$ +$\ConversionVersDec{110011}$ -$\PLconvtodec[zeros=false]{110011}$ +$\ConversionVersDec[Zeros=false]{110011}$ -$\PLconvtodec[basedep=16,details=false]{AC0DC}$ +$\ConversionVersDec[BaseDep=16,Details=false]{AC0DC}$ -$\PLconvtodec[zeros=false,basedep=16]{AC0DC}$ +$\ConversionVersDec[Zeros=false,BaseDep=16]{AC0DC}$ \end{codesortie} \newpage @@ -4048,7 +4106,7 @@ La commande utilise -- par défaut -- du code \TikZ{} en mode \ctex{overlay}, do \begin{codetex}[] %conversion basique -\PLconvDepuisDec{78}{2} +\ConversionDepuisBaseDix{78}{2} \end{codetex} \begin{codeinfo} @@ -4056,53 +4114,53 @@ La \og tableau \fg, qui est géré par \ctex{array} est inséré dans un \ctex{e \end{codeinfo} \begin{codetex}[listing only] -\PLconvDepuisDec[<options>]{<nombre en base 10>}{<base d'arrivée>} +\ConversionDepuisBaseDix[<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} + \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} +\ConversionDepuisBaseDix[Couleur=DarkBlue]{45}{2} %conversion sans le rectangle -Par divisions euclidiennes successives, \PLconvDepuisDec[rect=false]{54}{3}. +Par divisions euclidiennes successives, \ConversionDepuisBaseDix[Rect=false]{54}{3}. %conversion avec gestion du decalh pour le placement précis du rectangle -\PLconvDepuisDec[couleur=Goldenrod,decalh=6pt/2pt]{1012}{16} +\ConversionDepuisBaseDix[Couleur=Goldenrod,DecalH=6pt/2pt]{1012}{16} %conversion avec nœud personnalisé et réutilisation -\PLconvDepuisDec[couleur=ForestGreen,couleurres,noeud=TEST]{100}{9}. +\ConversionDepuisBaseDix[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} +\ConversionDepuisBaseDix[Couleur=DarkBlue]{45}{2} \medskip -Par divisions euclidiennes successives, \PLconvDepuisDec[rect=false]{54}{3}. +Par divisions euclidiennes successives, \ConversionDepuisBaseDix[Rect=false]{54}{3}. \medskip -\PLconvDepuisDec[couleur=Goldenrod,decalh=6pt/2pt]{1012}{16} +\ConversionDepuisBaseDix[Couleur=Goldenrod,DecalH=6pt/2pt]{1012}{16} \medskip -On obtient donc \PLconvDepuisDec[couleur=ForestGreen,couleurres,noeud=TEST]{100}{9}. +On obtient donc \ConversionDepuisBaseDix[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} @@ -4215,7 +4273,7 @@ L'idée est d'obtenir une commande pour \textit{simplifier} un calcul sous forme \end{codeidee} \begin{codetex}[listing only] -\convertfraction[<option>]{<argument>} +\ConversionFraction[<option>]{<argument>} \end{codetex} \begin{codecles} @@ -4230,62 +4288,62 @@ Peu d'options pour ces commandes : \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}$ +\ConversionFraction{111/2145} +\ConversionFraction{111/3} +$\frac{111}{2145}=\ConversionFraction{111/2145}$ +$\frac{3}{15}=\ConversionFraction[]{3/15}$ +$\tfrac{3}{15}=\ConversionFraction[t]{3/15}$ %formatage en \tfrac +$\dfrac{3}{15}=\ConversionFraction[d]{3/15}$ %formatage en \dfrac +$\dfrac{0,42}{0,015}=\ConversionFraction[d]{0.42/0.015}$ +$\dfrac{0,41}{0,015}=\ConversionFraction[d]{0.41/0.015}$ +$\dfrac{1}{7}+\dfrac{3}{8}=\ConversionFraction[d]{1/7+3/8}$ +$\ConversionFraction[d]{1+1/2}$ +$\ConversionFraction{0.1/0.7+30/80}$ \end{codetex} \begin{codesortie} \begin{multicols}{2} -\convertfraction{111/2145} +\ConversionFraction{111/2145} \smallskip -\convertfraction{111/3} +\ConversionFraction{111/3} \smallskip -$\frac{111}{2145}=\convertfraction{111/2145}$ +$\frac{111}{2145}=\ConversionFraction{111/2145}$ \smallskip -$\frac{3}{15}=\convertfraction[]{3/15}$ +$\frac{3}{15}=\ConversionFraction[]{3/15}$ \smallskip -$\tfrac{3}{15}=\convertfraction[t]{3/15}$ +$\tfrac{3}{15}=\ConversionFraction[t]{3/15}$ \smallskip -$\dfrac{3}{15}=\convertfraction[d]{3/15}$ +$\dfrac{3}{15}=\ConversionFraction[d]{3/15}$ \smallskip -$\dfrac{0,42}{0,015}=\convertfraction[d]{0.42/0.015}$ +$\dfrac{0,42}{0,015}=\ConversionFraction[d]{0.42/0.015}$ \smallskip -$\dfrac{0,41}{0,015}=\convertfraction[d]{0.41/0.015}$ +$\dfrac{0,41}{0,015}=\ConversionFraction[d]{0.41/0.015}$ \smallskip -$\dfrac{1}{7}+\dfrac{3}{8}=\convertfraction[d]{1/7+3/8}$ +$\dfrac{1}{7}+\dfrac{3}{8}=\ConversionFraction[d]{1/7+3/8}$ \smallskip -$\convertfraction[d]{1+1/2}$ +$\ConversionFraction[d]{1+1/2}$ \smallskip -$\convertfraction{0.1/0.7+30/80}$ +$\ConversionFraction{0.1/0.7+30/80}$ \end{multicols} ~ @@ -4306,7 +4364,7 @@ Les délimiteurs de l'ensemble créé sont toujours \textsf{\{~~\}}. \end{codeidee} \begin{codetex}[listing only] -\ensPL[<clés>]{<liste>} +\EcritureEnsemble[<clés>]{<liste>} \end{codetex} \begin{codecles} @@ -4315,40 +4373,40 @@ 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} + \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} }$ +$\EcritureEnsemble{a/b/c/d/e}$ +$\EcritureEnsemble[Mathpunct=false]{a/b/c/d/e}$ +$\EcritureEnsemble[Sep={,}]{a/b/c/d/e}$ +$\EcritureEnsemble[Option={\strut}]{a/b/c/d/e}$ % \strut pour "augmenter" un peu la hauteur des {} +$\EcritureEnsemble{ \frac{1}{1+\frac{1}{3}} / b / c / d / \frac{1}{2} }$ \end{codetex} \begin{codesortie} -$\ensPL{a/b/c/d/e}$ +$\EcritureEnsemble{a/b/c/d/e}$ \smallskip -$\ensPL[mathpunct=false]{a/b/c/d/e}$ +$\EcritureEnsemble[Mathpunct=false]{a/b/c/d/e}$ \smallskip -$\ensPL[sep={,}]{a/b/c/d/e}$ +$\EcritureEnsemble[Sep={,}]{a/b/c/d/e}$ \smallskip -$\ensPL[option={\strut}]{a/b/c/d/e}$ +$\EcritureEnsemble[Option={\strut}]{a/b/c/d/e}$ \smallskip -$\ensPL{ \displaystyle\frac{1}{1+\frac{1}{3}} / b / c / d / \displaystyle\frac{1}{2} }$ +$\EcritureEnsemble{ \displaystyle\frac{1}{1+\frac{1}{3}} / b / c / d / \displaystyle\frac{1}{2} }$ \end{codesortie} \begin{codeinfo} @@ -4368,12 +4426,12 @@ Le code est très largement inspiré de celui du package \ctex{tnsana} même si \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. +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{MiniSchemaSignes} pour afficher le schéma. \end{codeidee} \begin{codetex}[tikz lower] %code tikz -\aidesignePL +\MiniSchemaSignes[<clés>] \end{codetex} \subsection{Commandes} @@ -4382,25 +4440,25 @@ Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur déf ... \begin{tikzpicture}[<options>] ... - \aidesignePL[<clés>] + \MiniSchemaSignes[<clés>] ... \end{tikzpicture} \end{codetex} \begin{codetex}[listing only] -... {\tikz[<options>] \aidesignePL[<clés>]}... +... {\tikz[<options>] \MiniSchemaSignes[<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} + \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} @@ -4408,9 +4466,9 @@ Plusieurs \Cle{Clés} sont disponibles pour cette commande : 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 \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} @@ -4420,39 +4478,39 @@ Pour la clé \Cle{code}, il est construit par le type (\textsf{a} pour affine ou \begin{codetex}[listing only] \begin{center} \begin{tikzpicture} - \aidesignePL[code=da+,racines=-4] + \MiniSchemaSignes[Code=da+,Racines=-4] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=da-,racines={h},couleur=blue,largeur=3,cadre=false] + \MiniSchemaSignes[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] + \MiniSchemaSignes[Code=pa+d+,Racines={1/2},Couleur=orange] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=pa+d-,couleur=ForestGreen] + \MiniSchemaSignes[Code=pa+d-,Couleur=ForestGreen] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=pa+d0,racines={5},couleur=purple] + \MiniSchemaSignes[Code=pa+d0,Racines={5},Couleur=purple] \end{tikzpicture} \end{center} % \begin{center} \begin{tikzpicture} - \aidesignePL[code=pa-d+,racines={-3/0},couleur=yellow] + \MiniSchemaSignes[Code=pa-d+,Racines={-3/0},Couleur=yellow] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=pa-d-,couleur=cyan] + \MiniSchemaSignes[Code=pa-d-,Couleur=cyan] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=pa-d0,racines={-1},couleur=magenta] + \MiniSchemaSignes[Code=pa-d0,Racines={-1},Couleur=magenta] \end{tikzpicture} \end{center} \end{codetex} @@ -4460,52 +4518,52 @@ Pour la clé \Cle{code}, il est construit par le type (\textsf{a} pour affine ou \begin{codesortie} \begin{center} \begin{tikzpicture} - \aidesignePL[code=da+,racines=-4] + \MiniSchemaSignes[Code=da+,Racines=-4] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=da-,racines={h},couleur=blue,largeur=3,cadre=false] + \MiniSchemaSignes[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] + \MiniSchemaSignes[Code=pa+d+,Racines={1/2},Couleur=orange] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=pa+d-,couleur=ForestGreen] + \MiniSchemaSignes[Code=pa+d-,Couleur=ForestGreen] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=pa+d0,racines={5},couleur=purple] + \MiniSchemaSignes[Code=pa+d0,Racines={5},Couleur=purple] \end{tikzpicture} \end{center} % \begin{center} \begin{tikzpicture} - \aidesignePL[code=pa-d+,racines={-3/0},couleur=yellow] + \MiniSchemaSignes[Code=pa-d+,Racines={-3/0},Couleur=yellow] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=pa-d-,couleur=cyan] + \MiniSchemaSignes[Code=pa-d-,Couleur=cyan] \end{tikzpicture} ~~~~ \begin{tikzpicture} - \aidesignePL[code=pa-d0,racines={-1},couleur=magenta] + \MiniSchemaSignes[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] +\MiniSchemaSignes[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}. +Ces schémas peuvent être de plus utilisés, via la commande \ctex{MiniSchemaSignesTkzTab} 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} @@ -4513,7 +4571,7 @@ Pour des raisons internes, le fonctionnement de la commande \ctex{aidesignetkzta \begin{codetex}[listing only] \begin{tikzpicture} %commandes tkztab - \aidesignetkztabPL[<options>]{<numligne>}[<echelle>][<décalage horizontal>] + \MiniSchemaSignesTkzTab[<options>]{<numligne>}[<echelle>][<décalage horizontal>] \end{tikzpicture} \end{codetex} @@ -4538,9 +4596,9 @@ En ce qui concerne les autres arguments : \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] + \MiniSchemaSignesTkzTab[Code=da-,Racines={2,5},Couleur=blue]{1} + \MiniSchemaSignesTkzTab[Code=da+,Racines={-2},Couleur=purple]{2} + \MiniSchemaSignesTkzTab[Code=pa-d+,Racines={-2/2,5},Couleur=orange]{3}[0.85][2] \end{tikzpicture} \end{center} \end{codetex} @@ -4552,9 +4610,9 @@ En ce qui concerne les autres arguments : \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] + \MiniSchemaSignesTkzTab[Code=da-,Racines={2,5},Couleur=blue]{1} + \MiniSchemaSignesTkzTab[Code=da+,Racines={-2},Couleur=purple]{2} + \MiniSchemaSignesTkzTab[Code=pa-d+,Racines={-2/2,5},Couleur=orange]{3}[0.85][2] \end{tikzpicture} \end{center} \end{codesortie} @@ -4758,16 +4816,16 @@ C,A,B,D \end{filecontents*} \begin{tikzpicture}%avec lettres - \PLpixelart[codes=ABCD,style=\large\sffamily]{basique.csv} + \PixelArtTikz[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} + \PixelArtTikz[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} + \PixelArtTikz[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} + \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction,BordCases=false]{basique.csv} \end{tikzpicture} \end{codetex} @@ -4790,25 +4848,25 @@ C,A,B,D \hfill\begin{tikzpicture}[scale=0.9] %avec lettres - \PLpixelart[codes=ABCD,style=\large\sffamily]{basique.csv} + \PixelArtTikz[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} + \PixelArtTikz[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} + \PixelArtTikz[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} + \PixelArtTikz[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 : +La commande \ctex{PixelArtTikz} nécessite de connaître : \begin{itemize} \item le fichier \textsf{csv} à traiter ; @@ -4820,20 +4878,20 @@ La commande \ctex{PLpixelart} nécessite de connaître : \begin{codetex}[listing only] %environnement tikz -\PLpixelart[<clés>]{<fichier>.csv} +\PixelArtTikz[<clés>]{<fichier>.csv} \end{codetex} \begin{codecles} Quelques \Cle{Clés} sont nécessaires au bon fonctionnement de la commande : \begin{itemize} - \item la clé \Cle{codes} contient la \textsf{chaîne} des codes \textit{simples} du fichier \textsf{csv} ; - \item la clé \Cle{couleurs} qui contient la \textsf{liste} des couleurs associées ; - \item la clé \Cle{symboles} qui contient la \textsf{liste éventuelles} des caractères alternatifs à afficher dans les cases ; - \item la clé booléenne \Cle{correction} qui permet de colorier le PixelART ;\hfill{}défaut \Cle{false} - \item la clé booléenne \Cle{symb} qui permet d'afficher les caractères \textit{alternatifs} ;\hfill{}défaut \Cle{false} - \item la clé booléenne \Cle{bordcases} qui permet d'afficher les bords des cases de la correction ;\hfill{}défaut \Cle{true} - \item la clé \Cle{style} qui permet de spécifier le style des caractères. \hfill{}défaut \Cle{scriptsize} + \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} @@ -4868,11 +4926,11 @@ Quelques \Cle{Clés} sont nécessaires au bon fonctionnement de la commande : \end{filecontents*} \begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=123469,style=\ttfamily]{perroquet.csv} + \PixelArtTikz[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} + \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv} \end{tikzpicture} \end{codetex} @@ -4926,10 +4984,10 @@ Les symboles affichés dans les cases sont situés aux nœuds de coordonnées $( \begin{center} \begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=123469,style=\ttfamily]{perroquet.csv} + \PixelArtTikz[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} + \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv} \end{tikzpicture} \end{center} @@ -4938,7 +4996,7 @@ Les symboles affichés dans les cases sont situés aux nœuds de coordonnées $( \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} + \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv} \filldraw[Blue] (14,-1) circle[radius=1] ; \filldraw[Yellow] (14,-1) circle[radius=0.8] ; \draw[ForestGreen,very thick,<-] (15,-1) to[bend left=30] (18,-2) node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ; @@ -4984,11 +5042,11 @@ D,-,-,D,-,D,D,F,F,F,F,F,F,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} + \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv} \end{tikzpicture} \begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=ABCDFJ,couleurs={Red,Brown,Yellow,Black,Blue,Gray},correction]{cap.csv} + \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv} \end{tikzpicture} \end{codetex} @@ -5020,11 +5078,11 @@ D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,- \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} + \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv} \end{tikzpicture} ~~ \begin{tikzpicture}[x=0.35cm,y=0.35cm] - \PLpixelart[codes=ABCDFJ,couleurs={Red,Brown,Yellow,Black,Blue,Gray},correction]{cap.csv} + \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv} \end{tikzpicture} \end{center} \end{codesortie} @@ -5044,29 +5102,29 @@ L'environnement créé, lié à \TikZ, trace la grille de SudoMaths (avec les bl \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{} +\SudoMaths{} \end{codetex} \begin{codesortie} -\PLsudomaths{} +\SudoMaths{} \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} ! +La commande \ctex{SudoMaths} 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{} ! +Si on veut exploiter le tracé de la grille, on peut utiliser l'\textit{environnement} \ctex{EnvSudoMaths} dans lequel on peut rajouter toute commande en \TikZ{} ! \end{codeinfo} \begin{codetex}[listing only] %grille "toute seule" -\PLsudomaths[<options>]{<liste>} +\SudoMaths[<options>]{<liste>} %grille avec ajout de code -\begin{PLenvsudomaths}[<options>]{<grille>} +\begin{EnvSudoMaths}[<options>]{<grille>} <commandes tikz> ; -\end{PLenvsudomaths} +\end{EnvSudoMaths} \end{codetex} \pagebreak @@ -5077,21 +5135,21 @@ Si on veut exploiter le tracé de la grille, on peut utiliser l'\textit{environn 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} + \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} @@ -5104,7 +5162,7 @@ Il peut donc être intéressant de \textit{déclarer} la liste au préalable pou \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. +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] @@ -5132,7 +5190,7 @@ La \Cle{couleurcase} est gérée -- en interne -- par le caractère \ctex{*} qui / / / (q)* / / §% } -\PLsudomaths[unite=0.75cm,nbcol=6,nbsubcol=2,nblig=6,nbsublig=3,police=\small\bfseries\ttfamily,couleurtexte=red,couleurcase=yellow!50,legendes=false]{\grilleSuMa} +\SudoMaths[Unite=0.75cm,NbCol=6,NbSubCol=2,NbLig=6,NbSubLig=3,Police=\small\bfseries\ttfamily,CouleurTexte=red,CouleurCase=yellow!50,Legendes=false]{\grilleSuMa} \end{codesortie} \pagebreak @@ -5156,11 +5214,11 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0 *///9////Q/§% } -\begin{PLenvsudomaths}[% - unite=0.66cm,police=\footnotesize\bfseries\ttfamily,couleurcase=ForestGreen!50,% - listelegv=QSDFGHJKL,listelegh=poiuytrez]{\grilleSuMaB} +\begin{EnvSudoMaths}[% + 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{EnvSudoMaths} \end{codetex} \begin{codesortie} @@ -5176,98 +5234,104 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0 *///9////Q/§% } -\begin{PLenvsudomaths}[% - unite=0.66cm,police=\footnotesize\bfseries\ttfamily,couleurcase=ForestGreen!50,% - listelegv=QSDFGHJKL,listelegh=poiuytrez]{\grilleSuMaB} +\begin{EnvSudoMaths}[% + 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{EnvSudoMaths} \end{codesortie} \newpage \part{Historique} -{\small \bverb|v1.3.7|~:~~~~Commandes pour du code python via piton, en compilation \LuaLaTeX{} (page \pageref{pythonpiton}) +{\small \bverb|2022N.a|~:~~~~Refonte du code source avec modification des commandes} + +{\small \bverb| |~:~~~~Refonte de la documentation} + +\hrulefill + +{\small \bverb|v 1.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| |~:~~~~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|v 1.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| |~:~~~~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|v 1.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|v 1.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| |~:~~~~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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.2.0|~:~~~~Correction d'un \textit{méchant} bug sur Pixelart -{\small \bverb|v1.1.9|~:~~~~Pixelart en \TikZ{} (page \pageref{pixelart}) +{\small \bverb|v 1.1.9|~:~~~~Pixelart en \TikZ{} (page \pageref{pixelart}) -{\small \bverb|v1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ (page \pageref{mainlevee}) +{\small \bverb|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.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|v 1.0.1|~:~~~~Modification mineure liée au chargement de \textsf{xcolor} -{\small \bverb|v1.0 |~:~~~~Version initiale} +{\small \bverb|v 1.0 |~:~~~~Version initiale} \end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.pdf Binary files differnew file mode 100644 index 0000000000..d851c1652d --- /dev/null +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.pdf diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.tex new file mode 100644 index 0000000000..3ef3b51a6f --- /dev/null +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-old-doc.tex @@ -0,0 +1,5273 @@ +% !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{iftex,ifpdf,ifxetex,ifluatex} +\ifpdftex + \usepackage[utf8]{inputenc} + \usepackage[T1]{fontenc} + \usepackage[upright]{fourier} + \usepackage[scaled=0.875]{helvet} + \renewcommand\ttdefault{lmtt} + \usepackage[scaled=0.875]{cabin} + \usepackage{amsmath,amssymb} +\fi +\ifluatex + \RequirePackage[math-style=french,bold-style=ISO]{fourier-otf} +\fi +\usepackage[build]{ProfLycee} +\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.7} +\def\PLdate{2 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} 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{} ! +\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.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 new file mode 100644 index 0000000000..43de82fa82 --- /dev/null +++ b/macros/latex/contrib/proflycee/tex/ProfLycee-old.sty @@ -0,0 +1,3123 @@ +% 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/02 v1.3.7 - Aide pour l'utilisation de LaTeX en lycee] +% 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{ifluatex} +%python +\RequirePackage{piton} +\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 +} + +\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}% + } + +%=========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 3b5cce2d14..7b7ba14152 100644 --- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty +++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty @@ -3,7 +3,9 @@ % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfLycee}[2022/11/02 v1.3.7 - Aide pour l'utilisation de LaTeX en lycee] +\ProvidesPackage{ProfLycee}[2022/11/04 2.0.0 Aide pour l'utilisation de LaTeX en lycee] +% 2.0.0 Refonte des commandes, des options, et de la documentation !!! +% ------------------------------------------------------------------ % 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) @@ -44,8 +46,8 @@ % 1.0 Version initiale %------Option(s) -\newif\if@nominted \@nomintedfalse -\DeclareOption{nominted}{\@nomintedtrue} +\newif\if@nonshellescape \@nonshellescapefalse +\DeclareOption{nonshellescape}{\@nonshellescapetrue} \newif\if@build \@buildfalse \DeclareOption{build}{\@buildtrue} \newif\if@csvii \@csviifalse @@ -107,12 +109,23 @@ \if@build \setpythontexoutputdir{./build/pythontex-files-\jobname} %essai de modif pythontex répertoire build \fi +%shellescape +\if@nonshellescape + %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 %---------------SPLINES---------------------- %------commande utile pour extraire des infos d'une liste \newcommand\extractcoeff[2]{% #1=liste & #2=numero \setsepchar{§}% - \readlist\lcoeffs{#1} + \readlist*\lcoeffs{#1} \ifnum \lcoeffslen=1 \def\COEFFA{#1} \def\COEFFB{#1} @@ -126,33 +139,31 @@ %------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} + Epaisseur=\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={} + Epaisseur=1.25pt,% + Couleur=red,% + Coeffs=3,% + CouleurPoints=black,% + TaillePoints=2pt,% + AffPoints=false,% + Style={} } -\newcommand\splinetikz[1][]{% +\newcommand\SplineTikz[2][]{% \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}} + \readlist*\SPLlistepoints{#2}% + \def\SPLnbsplines{\inteval{\SPLlistepointslen-1}}% %si uniquement deux points, pas de boucle... \ifnum \SPLlistepointslen=2 %extraction des coeffs de compensation @@ -180,7 +191,7 @@ \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 + \ifboolKV[spline]{AffPoints}%on affiche les points de contrôle {% \foreach \i in {1,2,...,\SPLlistepointslen}{% \itemtomacro\SPLlistepoints[\i,1]\xa @@ -193,29 +204,27 @@ %------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},% + Epaisseur=\def\TGTepaisseur{#1},% + Couleur=\def\TGTcouleur{#1},% xl=\def\TGTXL{#1},% xr=\def\TGTXR{#1},% - style=\def\TGTstyle{#1},% - point=\def\TGTnumpt{#1} + Style=\def\TGTstyle{#1},% + Point=\def\TGTnumpt{#1} } \setKVdefault[tgte]{ - liste={},% - width=1.25pt,% - couleur=red,% + Epaisseur=1.25pt,% + Couleur=red,% xl=0.5,xr=0.5,% - style={},% - point=1 + Style={},% + Point=1 } -\newcommand\tangentetikz[1][]{% +\newcommand\TangenteTikz[2][]{% \useKVdefault[tgte]% \setKV[tgte]{#1}% on paramètres les nouvelles clés et on les simplifie \setsepchar[.]{§./}% - \readlist\TGTlistepoints\TGTliste + \readlist*\TGTlistepoints{#2}% \itemtomacro\TGTlistepoints[\TGTnumpt,1]\xa \itemtomacro\TGTlistepoints[\TGTnumpt,2]\ya \itemtomacro\TGTlistepoints[\TGTnumpt,3]\fprimea @@ -228,37 +237,43 @@ \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}% + Largeur=\def\CFlarg{#1},% + EspaceLg=\def\CFesplg{#1},% + PremCol=\def\CFpremcol{#1},% + HautPremCol=\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][]{% + Largeur=16,EspaceLg=2pt,PremCol=0.3,HautPremCol=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\CalculFormelParametres[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} + HautCmd=\def\CFhle{#1},% + HautRes=\def\CFhlr{#1} +} +\setKVdefault[paramlgxcas]{% + HautCmd=0.75,% + HautRes=0.75 } -\setKVdefault[paramlgxcas]{hc=0.75,hr=0.75} -\newcommand\ligneCF[3][]{% + +\newcommand\CalculFormelLigne[3][]{% \addtocounter{CFnum}{1} \def\CFL{\theCFnum} \def\CFLA{\inteval{\CFL-1}}% @@ -294,7 +309,7 @@ {\draw (C3\CFL) node[left,\CFcoulcmd,font=\CFtaille] {#2} ;} {} %LA LIGNE DE SÉPARATION - \ifboolKV[paramfenxcas]{sep}%si sep=true + \ifboolKV[paramfenxcas]{Sep}%si sep=true {\draw[\CFcouleur] (A1\CFL) -- (A4\CFL);} {} %LE RÉSULTAT @@ -307,42 +322,42 @@ \IfStrEq{\CFposres}{right}%si posrep=right {\draw (R3\CFL) node[left,\CFcoulres,font=\CFtaille] {#3} ;} {} - \ifboolKV[paramfenxcas]{sep}%si sep=true + \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 + \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 + \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} + 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 + Largeur=\linewidth,% + Centre=true,% + Label=true } -\newenvironment{envconsolepythontex}[1][]{% +\newenvironment{ConsolePythontex}[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 + \ifboolKV[envpythonconsole]{Label}%si label {\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}[][% @@ -356,16 +371,16 @@ %=========CODEPYTHONTEX=========== OK!! \defKV[envpythonverb]{% - largeur=\def\CODPYlargeur{#1},% - centre=\testboolKV{#1} + 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 + Largeur=\linewidth,% + Centre=true,% + Lignes=true } \tcbset{stylepythontex/.style={% @@ -411,38 +426,27 @@ width=#1,stylepythonnolineos } -\newenvironment{envcodepythontex}[1][]{% +\newenvironment{CodePythontex}[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 + \ifboolKV[envpythonverb]{Lignes}%si lignes=true {\begin{tcpythontexcode}[\CODPYlargeur]} {\begin{tcpythontexcodeno}[\CODPYlargeur]} - \ifboolKV[envpythonverb]{lignes}%si lignes=true + \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 + \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, @@ -457,7 +461,7 @@ } } -\DeclareTCBListing{envcodepythonminted}{ s O{12cm} O{} }{% étoilée sans numéro, taille puis option... +\DeclareTCBListing{CodePythonMinted}{ 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,% @@ -565,12 +569,12 @@ } } -\DeclareTCBListing{envcodepython}{ s O{\linewidth} m }{% * off pour numéros de lignes + {largeur} + <options tcbox> +\DeclareTCBListing{CodePythonLst}{ 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 }{ +\NewTCBInputListing{\CodePythonLstFichier}{ s O{\linewidth} m m }{ \IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos}, width=#2,#3, listing file={#4}} @@ -587,7 +591,7 @@ Lignes=true } -\NewPitonEnvironment{envcodepiton}{ O{} }% +\NewPitonEnvironment{CodePiton}{ O{} }% {% \useKVdefault[envpiton]% \setKV[envpiton]{#1}% on paramètres les nouvelles clés et on les simplifie @@ -658,7 +662,7 @@ \newcommand\algomathttPL[1]{\mathtt{#1}} \fi -\DeclareTCBListing{envpseudocode}{ s O{12cm} !O{} }{% étoilée sans numéro, taille puis option... +\DeclareTCBListing{PseudoCode}{ s O{12cm} !O{} }{% étoilée sans numéro, taille puis option... width=#2,#3, stylepseudocodePL, listing only,listing engine=listings, @@ -703,7 +707,7 @@ } } -\setKVdefault[fakeTERMwin]{titre={Terminal Windows}} +\setKVdefault[fakeTERMwin]{Titre={Terminal Windows}} \newcommand\PLcommandeswin{% \begin{tikzpicture}[thick,scale=0.66] @@ -715,11 +719,11 @@ \restoreKV[fakeTERMwin] \setKV[fakeTERMwin]{#1} \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={X[l]r}} - {\footnotesize\faTerminal}~~\useKV[fakeTERMwin]{titre} & \PLcommandeswin \\ % + {\footnotesize\faTerminal}~~\useKV[fakeTERMwin]{Titre} & \PLcommandeswin \\ % \end{tblr} } -\DeclareTCBListing{PLtermwin}{ O{\linewidth} m !O{} }{%[taille] puis {titre=...} puis [option] +\DeclareTCBListing{TerminalWin}{ 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},% @@ -760,17 +764,17 @@ } } -\setKVdefault[fakeTERMnux]{titre={Terminal UNiX}} +\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 \\ + \PLUbuntuWhite~~\PLUbuntuWhite~~\PLUbuntuWhite & \vphantom{p}\useKV[fakeTERMnux]{Titre} & \PLUbuntuMin~~\PLUbuntuMax~~\PLUbuntuClose \\ \end{tblr} } -\DeclareTCBListing{PLtermunix}{ O{\linewidth} m !O{} }{%[taille] puis {titre=...} puis [option] +\DeclareTCBListing{TerminalUnix}{ 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},% @@ -816,11 +820,11 @@ \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 \\ + \PLOSXRed~\PLOSXOrange~\PLOSXGreen & \vphantom{p}\useKV[fakeTERMosx]{Titre} & \PLOSXLG~\PLOSXLG~\PLOSXLG \\ \end{tblr} } -\DeclareTCBListing{PLtermosx}{ O{\linewidth} m !O{} }{%[taille] puis {titre=...} puis [option] +\DeclareTCBListing{TerminalOSX}{ 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},% @@ -830,42 +834,42 @@ %============CartoucheCapytale========= OK !! \definecolor{vertcapyt}{rgb}{0.0,0.5,0.0} %\definecolor{vertcapyt}{HTML}{008000} -\DeclareTotalTCBox{\liencapytale}{ s O{} m } +\DeclareTotalTCBox{\CartoucheCapytale}{ 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} + 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][]{% + 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\PaveTikz[1][]{% \useKVdefault[paramspave]% \setKV[paramspave]{#1}% - \ifboolKV[paramspave]{cube} + \ifboolKV[paramspave]{Cube} {\xdef\PFPavePf{\PFPaveLg}% \xdef\PFPaveHt{\PFPaveLg}} {} \setsepchar{§}% - \readlist\PFListeSommets\PFPaveSommets + \readlist*\PFListeSommets\PFPaveSommets \itemtomacro\PFListeSommets[1]\PaveA \itemtomacro\PFListeSommets[2]\PaveB \itemtomacro\PFListeSommets[3]\PaveC @@ -883,11 +887,11 @@ \coordinate (\PaveF) at ($(\PaveB) + (0,{\PFPaveHt})$) ; \coordinate (\PaveG) at ($(\PaveC) + (0,{\PFPaveHt})$) ; \coordinate (\PaveH) at ($(\PaveD) + (0,{\PFPaveHt})$) ; - \ifboolKV[paramspave]{aff} + \ifboolKV[paramspave]{Aff} {\draw (\PaveA) node[below left] {\PaveA} ; \draw (\PaveB) node[below right] {\PaveB} ; \draw (\PaveC) node[above right] {\PaveC} ; - \ifboolKV[paramspave]{plein} + \ifboolKV[paramspave]{Plein} {} {\draw (\PaveD) node[above left] {\PaveD} ;} \draw (\PaveE) node[below left] {\PaveE} ; @@ -898,7 +902,7 @@ \draw[\PFPaveThick] (\PaveA)--(\PaveB)--(\PaveF)--(\PaveE)--cycle (\PaveB)--(\PaveC)--(\PaveG)--(\PaveF)--cycle (\PaveG)--(\PaveH)--(\PaveE) ; - \ifboolKV[paramspave]{plein} + \ifboolKV[paramspave]{Plein} {} {\draw[dashed,\PFPaveThick] (\PaveA)--(\PaveD)--(\PaveC) (\PaveD)--(\PaveH) ;} @@ -906,31 +910,31 @@ %============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} + 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][]{% + Aff=false,% + Plein=false,% + Largeur=4,% + Profondeur=1.25,% + Hauteur=3,% + Alpha=40,% + Beta=60,% + Epaisseur=thick,% + Sommets=A§B§C§D,% +} + +\newcommand\TetraedreTikz[1][]{% \useKVdefault[paramstetra]% \setKV[paramstetra]{#1}% \setsepchar{§}% - \readlist\PFListeSommets\PFTetraSommets + \readlist*\PFListeSommets\PFTetraSommets \itemtomacro\PFListeSommets[1]\TetraA \itemtomacro\PFListeSommets[2]\TetraB \itemtomacro\PFListeSommets[3]\TetraC @@ -940,7 +944,7 @@ \coordinate (\TetraB) at ($(\TetraA) + ({-\PFTetraAlpha}:{\PFTetraPf})$) ; \coordinate (\TetraC) at ({\PFTetraLg},0) ; \coordinate (\TetraD) at ($(\TetraA) + ({\PFTetraBeta}:{\PFTetraHt})$) ; - \ifboolKV[paramstetra]{aff} + \ifboolKV[paramstetra]{Aff} {\draw (\TetraA) node[left] {\TetraA} ; \draw (\TetraB) node[below] {\TetraB} ; \draw (\TetraC) node[right] {\TetraC} ; @@ -948,33 +952,33 @@ {}%on affiche rien \draw[\PFTetraThick] (\TetraA)--(\TetraD)--(\TetraC)--(\TetraB)--cycle (\TetraD)--(\TetraB) ; - \ifboolKV[paramstetra]{plein} + \ifboolKV[paramstetra]{Plein} {} {\draw[dashed,\PFTetraThick] (\TetraA)--(\TetraC) ;} } %============EnsembleList============== OK !! \defKV[kvensemble]{% - sep=\def\PLenssep{#1},% - option=\def\PLensopt{#1} + Sep=\def\PLenssep{#1},% + Option=\def\PLensopt{#1} } \setKVdefault[kvensemble]{% - sep={;},% - mathpunct=true,% - option={} + Sep={;},% + Mathpunct=true,% + Option={} } -\newcommand\ensPL[2][1]{% +\newcommand\EcritureEnsemble[2][1]{% \useKVdefault[kvensemble]% \setKV[kvensemble]{#1}% - \ifboolKV[kvensemble]{mathpunct}% + \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} +\DeclareDocumentCommand\ConversionFraction{ 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 @@ -990,97 +994,97 @@ %================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},% + 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 + 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 +\NewDocumentCommand\ToileRecurrence{ 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 - \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}}% - } + \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},% + 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} + 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,% + 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 + CouleurSol=blue } -\newcommand\cercletrigoPL[1][]{% +\newcommand\CercleTrigo[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} + \ifboolKV[cercletrigo]{AffAngles} {%valeursdudessus \draw ({\PLcerclerayon},0) node[above right=2pt,font=\PLcercleangles] {0} ; \draw ($(30:{\PLcerclerayon})+(30:\PLcercledecal)$) node[PLagl] {$\tfrac{\pi}{6}$} ; @@ -1093,14 +1097,14 @@ \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 ($(-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$} ;} }% @@ -1111,7 +1115,7 @@ \draw[\PLcerclethick] (0,0) circle[radius=\PLcerclerayon] ; \draw (0,0) node[below left=2pt,PLval] {0} ; %equations - \ifboolKV[cercletrigo]{equationcos} + \ifboolKV[cercletrigo]{Equationcos} {%traitsdeconstructioncos \draw[\PLcerclethick,dotted,gray] (-45:\PLcerclerayon) -- (135:\PLcerclerayon) (-135:\PLcerclerayon) -- (45:\PLcerclerayon) @@ -1123,7 +1127,7 @@ \filldraw[\PLcerclecoleq] ({\PLcerclevalcos}:\PLcerclerayon) circle[radius=2pt] ({-\PLcerclevalcos}:\PLcerclerayon) circle[radius=2pt] ;% } {} - \ifboolKV[cercletrigo]{equationsin} + \ifboolKV[cercletrigo]{Equationsin} {%traitsdeconstructioncos \draw[\PLcerclethick,dotted,gray] (-45:\PLcerclerayon) -- (135:\PLcerclerayon) (-135:\PLcerclerayon) -- (45:\PLcerclerayon) @@ -1136,7 +1140,7 @@ } {} %valeurs - \ifboolKV[cercletrigo]{affvaleurs} + \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}$} ; @@ -1153,7 +1157,7 @@ }% {} %valeurs remarquables en dernier - \ifboolKV[cercletrigo]{afftraits} + \ifboolKV[cercletrigo]{AffTraits} {% \draw[\PLcerclethick,dotted,gray] (-120:\PLcerclerayon) rectangle (60:\PLcerclerayon) ; \draw[\PLcerclethick,dotted,gray] (-150:\PLcerclerayon) rectangle (30:\PLcerclerayon) ; @@ -1170,20 +1174,20 @@ %==================AideTds============= OK !! \defKV[aidetds]{% - code=\def\tdsparam{#1},% - couleur=\def\tdscouleur{#1},% - racines=\def\tdsracine{#1},% - largeur=\def\tdslarg{#1},% - hauteur=\def\tdshaut{#1} + 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 + Code=da+, + Couleur=red,% + Largeur=2,% + Hauteur=1,% + Cadre=true,% + Racines=2 } \NewDocumentCommand\schematdsaff{ s m m m m }{%pour les droites (interne) @@ -1264,7 +1268,7 @@ {} } -\newcommand\aidesignePL[1][]{% +\newcommand\MiniSchemaSignes[1][]{% \useKVdefault[aidetds] \setKV[aidetds]{#1} %simplification des codes @@ -1277,7 +1281,7 @@ \IfEq{\tdsparam}{pa+d-}{\def\xcode{10}}{} \IfEq{\tdsparam}{pa-d-}{\def\xcode{-10}}{} %cadre si booléen true - \ifboolKV[aidetds]{cadre} + \ifboolKV[aidetds]{Cadre} {\draw[lightgray] ({-0.5*\tdslarg},{-0.5*\tdshaut}) rectangle ({0.55*\tdslarg},{0.5*\tdshaut}) ;} {} %restriction de la petite fenêtre @@ -1320,49 +1324,49 @@ %pour l'interaction avec tkz-tab \defKV[aidetdstkz]{% - echelle=\def\tdstkzscale{#1},% - decal=\def\tdstkzoffset{#1} + Echelle=\def\tdstkzscale{#1},% + Decal=\def\tdstkzoffset{#1} } \setKVdefault[aidetdstkz]{% - echelle=1,% - decal=1.25 + Echelle=1,% + Decal=1.25 } -\NewDocumentCommand\aidesignetkztabPL{ o m O{0.85} O{1.5} }{% - #1 = codeaidetikz - #2 = numligne - #3 = échelle - #4 = décalage +\NewDocumentCommand\MiniSchemaSignesTkzTab{ 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]}} ; + \path (Z.east) + (#4,0) pic[right,scale=#3,every node/.style={scale=#3}] {code={\MiniSchemaSignes[#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} + 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 + NomCoeffa=COEFFa,% + NomCoeffb=COEFFb,% + NomCoeffr=COEFFr,% + NomCoeffrd=COEFFrd,% + NomXmin=LXmin,% + NomXmax=LXmax } -\newcommand\PLreglin[3][]{ - \useKVdefault[coeffreglin] +\newcommand\CalculsRegLin[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)}} @@ -1412,20 +1416,20 @@ %pour un nuage en TiKz \defKV[nuagereglin]{% - couleur=\def\RegLinNuageCouleur{#1},% - taille=\def\RegLinNuageTaille{#1}, + Couleur=\def\RegLinNuageCouleur{#1},% + Taille=\def\RegLinNuageTaille{#1}, Ox=\def\RegLinNuageOx{#1},% Oy=\def\RegLinNuageOy{#1},% } \setKVdefault[nuagereglin]{% - couleur=teal,% - taille=2pt,% + Couleur=teal,% + Taille=2pt,% Ox=0,% Oy=0 } -\newcommand\PLreglinpts[3][]{% +\newcommand\PointsRegLin[3][]{% \useKVdefault[nuagereglin] \setKV[nuagereglin]{#1}% on paramètres les nouvelles clés et on les simplifie \def\xliste{#2} @@ -1440,17 +1444,17 @@ %=============ConversionsBases========= OK !! %dec->bin avec blocs de 4 chiffres \setKVdefault[CONVDECBIN]{% - affbase=true + AffBase=true } -\NewDocumentCommand\PLconvdecbin{ s O{} m }{% +\NewDocumentCommand\ConversionDecBin{ 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}}{}} + {\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 @@ -1459,8 +1463,8 @@ %} \setKVdefault[CONVBINHEX]{% %trait=0.5pt,% - affbase=true,% - details=true + AffBase=true,% + Details=true } %bourrage de 0 avant \ExplSyntaxOn @@ -1475,7 +1479,7 @@ %la conversion complète -\newcommand\PLconvbinhex[2][]{% +\newcommand\ConversionBinHex[2][]{% \useKVdefault[CONVBINHEX] \setKV[CONVBINHEX]{#1}% on paramètres les nouvelles clés et on les simplifie \def\chbrut{#2} @@ -1484,8 +1488,8 @@ \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}{% + \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} @@ -1504,18 +1508,18 @@ \!= }% {} - \xintBinToHex{\chbrut}\ifboolKV[CONVBINHEX]{affbase}{_{16}}{} + \xintBinToHex{\chbrut}\ifboolKV[CONVBINHEX]{AffBase}{_{16}}{} } %bin/hexa/bin->dec avec écriture polynomiale \defKV[CONVTODEC]{% - basedep=\def\basedepart{#1} + BaseDep=\def\basedepart{#1} } \setKVdefault[CONVTODEC]{% - basedep=2,% - affbase=true,% - details=true,% - zeros=true + BaseDep=2,% + AffBase=true,% + Details=true,% + Zeros=true } \ExplSyntaxOn @@ -1524,7 +1528,7 @@ } \ExplSyntaxOff -\newcommand\PLconvtodec[2][]{% +\newcommand\ConversionVersDec[2][]{% \useKVdefault[CONVTODEC] \setKV[CONVTODEC]{#1}% on paramètres les nouvelles clés et on les simplifie \def\nbdepart{#2} @@ -1533,15 +1537,15 @@ %si on est en base 16 \xintifboolexpr{\basedepart == 16}% {% - \nbdepart\ifboolKV[CONVTODEC]{affbase}{_{\basedepart}}{} = - \ifboolKV[CONVTODEC]{details}{% + \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}% + \ifboolKV[CONVTODEC]{Zeros}% {% +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% } @@ -1555,20 +1559,20 @@ = } {} - \num{\xintHexToDec{\nbdepart}}\ifboolKV[CONVTODEC]{affbase}{_{10}}{} + \num{\xintHexToDec{\nbdepart}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{} }% {} \xintifboolexpr{\basedepart == 2}% {% - \num[digit-group-size=4]{\nbdepart}\ifboolKV[CONVTODEC]{affbase}{_{\basedepart}}{} = - \ifboolKV[CONVTODEC]{details}{% + \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}% + \ifboolKV[CONVTODEC]{Zeros}% {% +\chiffre\times\basedepart^{\puiss}% } @@ -1582,27 +1586,27 @@ = } {} - \num{\xintBinToDec{\nbdepart}}\ifboolKV[CONVTODEC]{affbase}{_{10}}{} + \num{\xintBinToDec{\nbdepart}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{} }% {} } -\newcommand\PLconvversdix[3][]{%1=options,%2=nb,%3=basedep +\newcommand\ConversionBaseDix[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}{% + \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}% + \ifboolKV[CONVTODEC]{Zeros}% {% +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% } @@ -1616,7 +1620,7 @@ = } {} - \num{\convertbasetobasedix{#2}{#3}}\ifboolKV[CONVTODEC]{affbase}{_{10}}{} + \num{\convertbasetobasedix{#2}{#3}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{} } %==============MainLevée TikZ========== OK !! @@ -1627,24 +1631,24 @@ %==============PixelArt TikZ=========== OK !! \defKV[pixelarttkz]{% - codes=\def\PATlettres{#1},% - couleurs=\def\PATcouleurs{#1},% - symboles=\def\PATchiffres{#1},% - style=\def\PATtaille{#1} + 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 + Style=\scriptsize,% + Correction=false,% + Symb=false,% + BordCases=true } -\newcommand\PLpixelart[2][]{% +\newcommand\PixelArtTikz[2][]{% \useKVdefault[pixelarttkz] \setKV[pixelarttkz]{#1} %affichage du corrigé - \ifboolKV[pixelarttkz]{correction} + \ifboolKV[pixelarttkz]{Correction} {% \csvloop{file=#2,no head,command={% \foreach \l [count=\n] in \csvline {% @@ -1655,7 +1659,7 @@ \xintifboolexpr{\pixcnt>0}% {% \itemtomacro\LCPA[\pixcnt]\pixcol% - \ifboolKV[pixelarttkz]{bordcases}% + \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}) ;}% % @@ -1666,7 +1670,7 @@ } } {% - \ifboolKV[pixelarttkz]{symb} + \ifboolKV[pixelarttkz]{Symb} {%affichage du pixelart versions chiffres si besoin \csvloop{file=#2,no head,command={% \foreach \l [count=\n] in \csvline {% @@ -1728,23 +1732,23 @@ %axeOx \defKV[PLaxextkz]{% - epaisseur=\def\axexwidth{#1},% - police=\def\axexfont{#1},% - hautgrad=\def\axextickwidth{#1},% - posgrad=\def\axexposlabel{#1} + 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 + Epaisseur=1.25pt,% + Police=\normalsize\normalfont,% + PosGrad=below,% + HautGrad=4pt,% + AffGrad=true,% + AffOrigine=true,% + Annee=false } -\DeclareDocumentCommand\PLaxextikz{ O{} m }{% +\DeclareDocumentCommand\AxexTikz{ O{} m }{% \useKVdefault[PLaxextkz] \setKV[PLaxextkz]{#1}% on paramètres les nouvelles clés et on les simplifie %formatage des années @@ -1753,16 +1757,16 @@ {\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]{AffGrad}%on affiche les graduations {% - \ifboolKV[PLaxextkz]{afforigine}%si on demande d'afficher l'origine + \ifboolKV[PLaxextkz]{AffOrigine}%si on demande d'afficher l'origine {node[\axexposlabel,font=\axexfont] - {\ifboolKV[PLaxextkz]{annee}% + {\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}% + {\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}}% } @@ -1775,23 +1779,23 @@ %axeOy \defKV[PLaxeytkz]{% - epaisseur=\def\axeywidth{#1},% - police=\def\axeyfont{#1},% - hautgrad=\def\axeytickwidth{#1},% - posgrad=\def\axeyposlabel{#1} + 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 + Epaisseur=1.25pt,% + Police=\normalsize\normalfont,% + PosGrad=left,% + HautGrad=4pt,% + AffGrad=true,% + AffOrigine=true,% + Annee=false } -\DeclareDocumentCommand\PLaxeytikz{ O{} m }{% +\DeclareDocumentCommand\AxeyTikz{ O{} m }{% \useKVdefault[PLaxeytkz] \setKV[PLaxeytkz]{#1}% on paramètres les nouvelles clés et on les simplifie \IfSubStr{\axeytickwidth}{/} @@ -1799,16 +1803,16 @@ {\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]{AffGrad}%on affiche les graduations {% - \ifboolKV[PLaxeytkz]{afforigine}%si on demande d'afficher l'origine + \ifboolKV[PLaxeytkz]{AffOrigine}%si on demande d'afficher l'origine {node[\axeyposlabel,font=\axeyfont] - {\ifboolKV[PLaxeytkz]{annee}% + {\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}% + {\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}}% } @@ -1821,30 +1825,30 @@ %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} + 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{} }{% + Epaisseur=1.25pt,% + Police=\normalsize\normalfont,% + Labelx=$x$,% + Labely=$y$,% + AffLabel=z,% + PosLabelx=right,% + PosLabely=above,% + EchelleFleche=1,% + TypeFleche=> +} + +\DeclareDocumentCommand\AxesTikz{ O{} }{% \useKVdefault[PLaxestkz] \setKV[PLaxestkz]{#1}% %on affiche les deux axes @@ -1852,67 +1856,67 @@ \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} ;} - {} + {\draw ({\xmax-\axexOx},0) node[\axesposlabelx,font=\axesfont] {\axeslabelx} ;} + {} \IfSubStr{\axesafflabel}{y}% - {\draw (0,{\ymax-\axeyOy}) node[\axesposlabely,font=\axesfont] {\axeslabely} ;} - {} + {\draw (0,{\ymax-\axeyOy}) node[\axesposlabely,font=\axesfont] {\axeslabely} ;} + {} } %fenêtre clippée -\newcommand\PLfenetre{% +\newcommand\FenetreTikz{% \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} + 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 + Police=\normalsize\normalfont,% + Pos={below left},% + Decal=2pt,% + Valeur=0 } -\DeclareDocumentCommand\PLorigine{ O{} }{% - \useKVdefault[PLaxesorig] +\DeclareDocumentCommand\OrigineTikz{ O{} }{% + \useKVdefault[PLaxesorig]% \setKV[PLaxesorig]{#1}% \draw (0,0) node[\axesorpos=\axesordecal,font=\axesorfont] {\axesorval} ; } %grilles \setKVdefault[PLgrillestkz]{% - affp=true,% - affs=true + Affp=true,% + Affs=true } -\DeclareDocumentCommand\PLgrilletikz{ O{} O{thin,lightgray} O{ultra thin,lightgray} }{% +\DeclareDocumentCommand\GrilleTikz{ 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});} - {} + \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} + Taille=\def\ptstaille{#1},% + Couleur=\def\ptscouleur{#1},% + Style=\def\ptsstyle{#1} } \setKVdefault[PLpts]{% - taille=2pt,% - couleur=blue,% - style=o + Taille=2pt,% + Couleur=blue,% + Style=o } \newcommand\PLnuagepoints[2][]{% @@ -1935,7 +1939,7 @@ } } -\newcommand\PLnuagepts[3][]{% +\newcommand\NuagePointsTikz[3][]{% \useKVdefault[PLpts] \setKV[PLpts]{#1}% on paramètres les nouvelles clés et on les simplifie \def\xliste{#2} @@ -1962,31 +1966,31 @@ } \defKV[PLptmoy]{% - police=\def\ptmoyfont{#1},% - taille=\def\ptmoytaille{#1},% - couleur=\def\ptmoycouleur{#1},% - style=\def\ptmoystyle{#1},% + 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},% + Nom=\def\ptmoynom{#1},% + Pos=\def\ptmoypos{#1},% + Decal=\def\ptmoydecal{#1},% } \setKVdefault[PLptmoy]{% - police=\normalsize\normalfont,% - taille=4pt,% - couleur=red,% - style=x,% + Police=\normalsize\normalfont,% + Taille=4pt,% + Couleur=red,% + Style=x,% xg=\LXmoy,% yg=\LYmoy,% - nom=G,% - pos=above,% - decal=0pt,% - affnom=true + Nom=G,% + Pos=above,% + Decal=0pt,% + AffNom=true } -\newcommand\PLnuageptmoy[1][]{% +\newcommand\PointMoyenTikz[1][]{% \useKVdefault[PLptmoy] \setKV[PLptmoy]{#1}% on paramètres les nouvelles clés et on les simplifie \IfStrEq{\ptmoystyle}{o}% @@ -1997,19 +2001,19 @@ } {} \IfStrEq{\ptmoystyle}{x}% - {\draw[\ptmoycouleur] ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) pic {PLdotcross=\ptmoytaille/45} ;} - {} + {\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} ;} - {} + {\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][]{% +\newcommand\CourbeTikz[3][]{% \setsepchar{:}% \readlist\PLdomaine{#3} \itemtomacro\PLdomaine[1]\PLDm @@ -2021,22 +2025,22 @@ } \setKVdefault[PLsimplewindow]{% - axes=true,% - grille=true,% + Axes=true,% + Grille=true,% } -\DeclareDocumentCommand\PLfenetresimple{ O{} D<>{} m D<>{} m }{% - \useKVdefault[PLsimplewindow] +\DeclareDocumentCommand\FenetreSimpleTikz{ 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}} - {} + \ifboolKV[PLsimplewindow]{Grille}% + {\GrilleTikz}% + {}% + \ifboolKV[PLsimplewindow]{Axes}% + {\AxesTikz\AxexTikz[#2]{#3}\AxeyTikz[#4]{#5}}% + {}% } -\NewDocumentEnvironment{PLstats}{ O{} } +\NewDocumentEnvironment{StatsTikz}{ O{} } {% \begin{tikzpicture}[#1] }% @@ -2046,57 +2050,56 @@ %=============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} + 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 + 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} + 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 + Elargir=0.05,% + Epaisseur=thick,% + AffValeurs=false } -\newcommand\PLboitemoustaxe[1][]{ +\newcommand\BoiteMoustachesAxe[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}} ;} - {} + \ifboolKV[boiteamoustachesaxe]{AffValeurs} + {\foreach \x in \BaMAxeValeurs \draw[\BaMAxeEpaisseur] (\x,3pt)--(\x,-3pt) node[below=3pt] {\num{\x}} ;} + {} } -\newcommand\PLboitemoust[1][]{ +\newcommand\BoiteMoustaches[2][]{ \useKVdefault[boiteamoustaches] \setKV[boiteamoustaches]{#1} \setsepchar[.]{/}% - \readlist*\BaMListeparams\BaMListe% + \readlist*\BaMListeparams{#2}% \itemtomacro\BaMListeparams[1]\BaMmin% \itemtomacro\BaMListeparams[2]\BaMqu% \itemtomacro\BaMListeparams[3]\BaMmed% @@ -2105,10 +2108,10 @@ \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} + \ifboolKV[boiteamoustaches]{AffMoyenne} {\filldraw[\BaMCouleur] ({\BaMMoyenne},{\BaMElevation}) circle[radius=2.5pt] ;} {} - \ifboolKV[boiteamoustaches]{pointilles} + \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) ; @@ -2117,7 +2120,7 @@ \draw[\BaMEpaisseur,densely dashed] (\BaMmax,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmax,0) ; } {} - \ifboolKV[boiteamoustaches]{valeurs} + \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}} ; @@ -2130,41 +2133,41 @@ %================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} + 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 } + 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{EnvSudoMaths}{ O{} m } { \useKVdefault[PLTIKZSUDOM] \setKV[PLTIKZSUDOM]{#1}% on paramètres les nouvelles clés et on les simplifie @@ -2201,7 +2204,7 @@ \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} + \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}} ;} @@ -2211,7 +2214,7 @@ \end{tikzpicture} } -\NewDocumentCommand\PLsudomaths{ O{} m }{% +\NewDocumentCommand\SudoMaths{ O{} m }{% \useKVdefault[PLTIKZSUDOM] \setKV[PLTIKZSUDOM]{#1}% on paramètres les nouvelles clés et on les simplifie %calculs intermédiaires @@ -2247,7 +2250,7 @@ \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} + \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}} ;} @@ -2257,10 +2260,10 @@ %================LOISPROBAS============ OK !! %calculs "simples" -\newcommand\calcPbinomP[3]{%npk +\newcommand\CalcBinomP[3]{%npk \xintFloatToDecimal{\xintfloateval{binomial(#1,#3)*#2^#3*(1-#2)^(#1-#3)}} } -\newcommand\calcPbinomC[4]{%npab +\newcommand\CalcBinomC[4]{%npab \def\BorneInf{#3}\def\BorneSup{#4} \ifthenelse{\equal{#3}{*}}% {\def\BorneInf{0}} @@ -2270,10 +2273,10 @@ {} \xintFloatToDecimal{\xintfloateval{add(binomial(#1,i)*#2^i*(1-#2)^(#1-i), i=\BorneInf..\BorneSup)}} } -\newcommand\calcPgeomP[2]{%pk +\newcommand\CalcGeomP[2]{%pk \xintFloatToDecimal{\xintfloateval{(1-#1)^(#2-1)*(#1)}} } -\newcommand\calcPgeomC[3]{%pab +\newcommand\CalcGeomC[3]{%pab \def\BorneInf{#2}\def\BorneSup{#3} \ifthenelse{\equal{#2}{*}}% {\def\BorneInf{1}} @@ -2283,10 +2286,10 @@ {} \xintFloatToDecimal{\xintfloateval{add((1-#1)^(i-1)*(#1), i=\BorneInf..\BorneSup)}} } -\newcommand\calcPhypergeomP[4]{%Nnmk +\newcommand\CalcHypergeomP[4]{%Nnmk \xintFloatToDecimal{\xintfloateval{binomial(#3,#4)*binomial(#1-#3,#2-#4)/binomial(#1,#2)}} } -\newcommand\calcPhypergeomC[5]{%Nnmab +\newcommand\CalcHypergeomC[5]{%Nnmab \def\BorneInf{#4}\def\BorneSup{#5} \ifthenelse{\equal{#4}{*}}% {\def\BorneInf{0}} @@ -2296,10 +2299,10 @@ {} \xintFloatToDecimal{\xintfloateval{add(binomial(#3,i)*binomial(#1-#3,#2-i)/binomial(#1,#2), i=\BorneInf..\BorneSup)}} } -\newcommand\calcPpoissP[2]{%lk +\newcommand\CalcPoissP[2]{%lk \xintFloatToDecimal{\xintfloateval{exp(-#1)*#1^#2/factorial(#2)}} } -\newcommand\calcPpoissC[3]{%lab +\newcommand\CalcPoissC[3]{%lab \def\BorneInf{#2}\def\BorneSup{#3} \ifthenelse{\equal{#2}{*}}% {\def\BorneInf{0}} @@ -2317,7 +2320,7 @@ ((((((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 +\newcommand\CalcNormC[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}{*}}% @@ -2329,7 +2332,7 @@ \xintFloatToDecimal{\xintfloateval{Phi((\BorneSup-#1)/#2)-Phi((\BorneInf-#1)/#2)}} } %calculs "simples" fiabilite -\newcommand\calcPexpoC[3]{%lab +\newcommand\CalcExpoC[3]{%lab \def\BorneInf{#2}\def\BorneSup{#3} \ifthenelse{\equal{#2}{*}}% {\def\BorneInf{0}} @@ -2341,7 +2344,7 @@ } %calculs formatés -\NewDocumentCommand{\numPbinomP}{ s O{3} m m m }{%*=sci,2=prec,3=n,4=p,5=k +\NewDocumentCommand{\BinomP}{ 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)}}} @@ -2351,7 +2354,7 @@ } } -\NewDocumentCommand{\numPbinomC}{ s O{3} m m m m }{%*=sci,2=prec,3=n,4=p,5=a,6=b +\NewDocumentCommand{\BinomC}{ 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}} @@ -2368,7 +2371,7 @@ } } -\NewDocumentCommand{\numPgeomP}{ s O{3} m m }{%*=sci,2=prec,3=p,4=k +\NewDocumentCommand{\GeomP}{ 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)}}} @@ -2378,7 +2381,7 @@ } } -\NewDocumentCommand{\numPgeomC}{ s O{3} m m m }{%*=sci,2=prec,3=p,4=a,5=b +\NewDocumentCommand{\GeomC}{ 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}} @@ -2395,7 +2398,7 @@ } } -\NewDocumentCommand{\numPhypergeomP}{ s O{3} m m m m }{%*=sci,2=prec,3=N,4=n,5=m,6=k +\NewDocumentCommand{\HypergeomP}{ 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)}}} @@ -2405,7 +2408,7 @@ } } -\NewDocumentCommand{\numPhypergeomC}{ s O{3} m m m m m }{%*=sci,2=prec,3=N,4=n,5=m,6=a,7=b +\NewDocumentCommand{\HypergeomC}{ 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}} @@ -2422,7 +2425,7 @@ } } -\NewDocumentCommand{\numPpoissP}{ s O{3} m m }{%*=sci,2=prec,3=lbda,4=k +\NewDocumentCommand{\PoissonP}{ 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)}}} @@ -2432,7 +2435,7 @@ } } -\NewDocumentCommand{\numPpoissC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b +\NewDocumentCommand{\PoissonC}{ 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}} @@ -2449,7 +2452,7 @@ } } -\NewDocumentCommand{\numPnormC}{ s O{3} m m m m }{% +\NewDocumentCommand{\NormaleC}{ 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} @@ -2468,7 +2471,7 @@ } } -\NewDocumentCommand{\numPexpoC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b +\NewDocumentCommand{\ExpoC}{ 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}} @@ -2494,22 +2497,22 @@ \ExplSyntaxOff \defKV[convfromten]{% - couleur=\def\PLConvCouleur{#1},% - decalh=\def\PLConvDecalH{#1},% - decalv=\def\PLConvDecalV{#1},% - noeud=\def\PLConvNoeud{#1} + 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 + Couleur=red,% + DecalH=2pt,% + DecalV=3pt,% + Rect=true,% + Noeud=EEE,% + CouleurRes=false } -\newcommand\PLconvDepuisDec[3][]{% +\newcommand\ConversionDepuisBaseDix[3][]{% \useKVdefault[convfromten]% \setKV[convfromten]{#1}% \xdef\ValRes{\xintDecToHex{#2}}% @@ -2531,8 +2534,8 @@ %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}% + \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}}% @@ -2546,30 +2549,30 @@ %===============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} + Unite=\def\PLAPunite{#1},% + EspaceNiveau=\def\PLAPespniv{#1},% + EspaceFeuille=\def\PLAPespfeuille{#1},% + Type=\def\PLAPtype{#1},% + Police=\def\PLAPfont{#1},% + PoliceProbas=\def\PLAPfontproba{#1},% + StyleTrait=\def\PLAPtypetrait{#1},% + EpaisseurTrait=\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 + Unite=1cm,% + EspaceNiveau=3.25,% + EspaceFeuille=1,% + Type=2x2,% + Police=\normalfont\normalsize,% + PoliceProbas=\normalfont\small,% + InclineProbas=true,% + Fleche=false,% + StyleTrait={},% + EpaisseurTrait=semithick +} + +\NewDocumentCommand\ArbreProbasTikz{ O{} m }{%1=options,2=libellés \useKVdefault[PLTIKZARBRE]% \setKV[PLTIKZARBRE]{#1}% \setsepchar[.]{,./}% @@ -2578,10 +2581,10 @@ %styles \tikzstyle{noeud} = [font=\PLAPfont] \tikzstyle{probas}= [font=\PLAPfontproba] - \ifboolKV[PLTIKZARBRE]{inclineprobas} + \ifboolKV[PLTIKZARBRE]{InclineProbas} {\tikzstyle{PLetiquette}=[pos=0.525,sloped,fill=white]} {\tikzstyle{PLetiquette}=[pos=0.525,fill=white]} - \ifboolKV[PLTIKZARBRE]{fleche} + \ifboolKV[PLTIKZARBRE]{Fleche} {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait]} {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait]} %arbre2x2 @@ -2754,7 +2757,7 @@ \end{tikzpicture} } -\NewDocumentEnvironment{PLenvarbre}{ O{} m }%1=options,2=libellés +\NewDocumentEnvironment{EnvArbreProbasTikz}{ O{} m }%1=options,2=libellés { \useKVdefault[PLTIKZARBRE] \setKV[PLTIKZARBRE]{#1} @@ -2764,10 +2767,10 @@ %styles \tikzstyle{noeud} = [font=\PLAPfont] \tikzstyle{probas}= [font=\PLAPfontproba] - \ifboolKV[PLTIKZARBRE]{inclineprobas} + \ifboolKV[PLTIKZARBRE]{InclineProbas} {\tikzstyle{PLetiquette}=[pos=0.525,sloped,fill=white]} {\tikzstyle{PLetiquette}=[pos=0.525,fill=white]} - \ifboolKV[PLTIKZARBRE]{fleche} + \ifboolKV[PLTIKZARBRE]{Fleche} {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait]} {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait]} %arbre2x2 diff --git a/macros/latex/contrib/tuda-ci/README.md b/macros/latex/contrib/tuda-ci/README.md index fd6c8f5c21..caf65c101d 100644 --- a/macros/latex/contrib/tuda-ci/README.md +++ b/macros/latex/contrib/tuda-ci/README.md @@ -2,7 +2,7 @@ Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2022 - tuda-ci 2022/08/03 v3.27 + tuda-ci 2022/11/04 v3.28 *************************************************************************** @@ -176,7 +176,7 @@ theses | DEMO-TUDaThesis.tex/DEMO-TUDaPhD.tex, using DEMO-TUDaBibliograph scientific poster | DEMO-TUDaSciPoster.tex | tudasciposter.cls announcement poster | DEMO-TUDaPoster.tex | tudaposter.cls theses announcements | DEMO-TUDaAnnouncement.tex | tudaposter.cls -presentation | DEMO-TUDaBeamer.tex | tudaposter.cls +presentation | DEMO-TUDaBeamer.tex | tudabeamer.cls letter | DEMO-TUDaLetter.tex, using DEMO-TUDaFromaddress.lco | tudaletter.cls and tudalettersize10pt.clo exercise sheets/exams | DEMO-TUDaExercise.tex | tudaexercise.cls leaflets | DEMO-TUDaLeaflet.tex | tudaleaflet.cls @@ -323,4 +323,7 @@ leaflets | DEMO-TUDaLeaflet.tex | tudaleaflet.cls - Update TUprints data scheme - Fix incompatibility with TUDaLeaflet and recent KOMA-Script updates * 3.27 (2022-08-03) - - Fix reference issues with subtask* in TUDaExercise
\ No newline at end of file + - Fix reference issues with subtask* in TUDaExercise + * 3.28 (2022-11-04) + - Fix loading mechanism for department specific beamer templates with prefix + - Internal adjustments to increase flexability
\ No newline at end of file diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf Binary files differindex 5acd590a49..965e7fa2d3 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf Binary files differindex 0ec6f8c60c..feceda2151 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf Binary files differindex b203059cc8..e82861946e 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf Binary files differindex 38df0f88b0..f7bb362d3a 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf Binary files differindex ab8a057934..b593024af0 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf Binary files differindex 83dbe24ec4..e0bc84a370 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf Binary files differindex 2e0a3be743..bc0ea6a082 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf Binary files differindex ddeda9b3bb..8d6aca657e 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf Binary files differindex d4289a22d7..cf73aa8bf0 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf Binary files differindex 33d4c9669d..6dd3c8755f 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf Binary files differindex 1110b49775..84546de2a4 100644 --- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf +++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex index fd01db9c69..64b8086b8d 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaAnnouncement.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaAnnouncement.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex index d3ea7fd03f..afbf25d6b9 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaBeamer.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaBeamer.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib index 5df6bf24ee..c99ed9fa12 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaBibliography.bib' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaBibliography.bib' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex index eecc9d341c..b0dcf10d0a 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaExercise.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaExercise.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco index ba0e3d46a3..8bde3dea08 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaFromaddress.lco' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaFromaddress.lco' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex index 5cdce77e2e..1f1aad3bba 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaLeaflet.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaLeaflet.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex index 4b65722f0b..fcf5b455e7 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaLetter.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaLetter.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex index a7685fd145..a222817641 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaPhD.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaPhD.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex index 6941d2395f..1e9693d23e 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaPoster.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaPoster.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex index 210bba4a82..d30b4bf456 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaPub.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaPub.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex index fba2cd446c..e7ebc9d213 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaReport.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaReport.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex index a11951ec9a..35833b9d01 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaSciPoster.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaSciPoster.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex index d7c8184ad3..961b2dbfab 100644 --- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex +++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex @@ -1,4 +1,4 @@ -%% This is file `DEMO-TUDaThesis.tex' version 3.27 (2022/08/03), +%% This is file `DEMO-TUDaThesis.tex' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty index 843b1763ba..727420891c 100644 --- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty +++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty @@ -1,4 +1,4 @@ -%% This is file `beamercolorthemeTUDa.sty' version 3.27 (2022/08/03), +%% This is file `beamercolorthemeTUDa.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{beamercolorthemeTUDa} [\filedate\space\fileversion] diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty index f0e30bca20..e6507bdf56 100644 --- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty +++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty @@ -1,4 +1,4 @@ -%% This is file `beamerfontthemeTUDa.sty' version 3.27 (2022/08/03), +%% This is file `beamerfontthemeTUDa.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{beamerfontthemeTUDa} [\filedate\space\fileversion] diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty index 5f97fb9f55..fe31284d47 100644 --- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty +++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty @@ -1,4 +1,4 @@ -%% This is file `beamerinnerthemeTUDa.sty' version 3.27 (2022/08/03), +%% This is file `beamerinnerthemeTUDa.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \ProvidesExplPackage{beamerinnerthemeTUDa}{\filedate}{\fileversion}{Inner~beamer~theme~of~tuda-ci} diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty index c1e20905d5..bd8c8fbba5 100644 --- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty +++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty @@ -1,4 +1,4 @@ -%% This is file `beamerouterthemeTUDa.sty' version 3.27 (2022/08/03), +%% This is file `beamerouterthemeTUDa.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \ProvidesExplPackage{beamerouterthemeTUDa}{\filedate}{\fileversion}{Outer~beamer~theme~of~tuda-ci} @@ -121,7 +121,7 @@ \box_new:N \g__ptxcd_logo_box \hbox_gset:Nn \g__ptxcd_logo_box {% - \makebox[2.2\c_ptxcd_logoheight_dim][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}% + \makebox[\__ptxcd_logowidth:][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}% } \ptxcd_makeheadrule[color=identbarcolor,width=\paperwidth-2\g__ptxcd_beamer_sep_dim]{ptxcd_beamer_headrule} diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty index 6ecc5a3685..b6732a0728 100644 --- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty +++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty @@ -1,4 +1,4 @@ -%% This is file `beamerthemeTUDa-mecheng.sty' version 3.27 (2022/08/03), +%% This is file `beamerthemeTUDa-mecheng.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \RequirePackage{expl3} \ProvidesExplPackage{beamerthemeTUDa-mecheng}{\filedate}{\fileversion}{specific tudabeamer configuration for the department of mechanical engineering} diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty index 0cbf7abbc6..08f4be7796 100644 --- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty +++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty @@ -1,4 +1,4 @@ -%% This is file `beamerthemeTUDa.sty' version 3.27 (2022/08/03), +%% This is file `beamerthemeTUDa.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{beamerthemeTUDa} [\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt] diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo index ea44b73bb0..b9bd5da1fb 100644 --- a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo +++ b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo @@ -1,4 +1,4 @@ -%% This is file `tuda-a0paper.clo' version 3.27 (2022/08/03), +%% This is file `tuda-a0paper.clo' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \ProvidesExplFile{tuda-a0paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper} \cs_set:Nn \ptxcd_setup_title_sizes: { \cs_set:Nn \ptxcd_title_fontsize: {{125pt}{165pt}} diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo index 3ca9ed7f21..836858d52f 100644 --- a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo +++ b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo @@ -1,4 +1,4 @@ -%% This is file `tuda-a1paper.clo' version 3.27 (2022/08/03), +%% This is file `tuda-a1paper.clo' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \ProvidesExplFile{tuda-a1paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a1paper} \cs_set:Nn \ptxcd_setup_title_sizes: { \cs_set:Nn \ptxcd_title_fontsize: {{86pt}{120pt}} diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo index c268e532aa..854f0b503a 100644 --- a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo +++ b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo @@ -1,4 +1,4 @@ -%% This is file `tuda-a2paper.clo' version 3.27 (2022/08/03), +%% This is file `tuda-a2paper.clo' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \ProvidesExplFile{tuda-a2paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper} \cs_set:Nn \ptxcd_setup_title_sizes: { \cs_set:Nn \ptxcd_title_fontsize: {{65pt}{82pt}} diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo index 043cb4e9cb..4f1aca0e78 100644 --- a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo +++ b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo @@ -1,4 +1,4 @@ -%% This is file `tuda-a3paper.clo' version 3.27 (2022/08/03), +%% This is file `tuda-a3paper.clo' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \ProvidesExplFile{tuda-a3paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a3paper} \cs_set:Nn \ptxcd_setup_title_sizes: { \cs_set:Nn \ptxcd_title_fontsize: {{47pt}{61pt}} diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo index 9c97f50e2c..8cd5e7a024 100644 --- a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo +++ b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo @@ -1,4 +1,4 @@ -%% This is file `tuda-a4paper.clo' version 3.27 (2022/08/03), +%% This is file `tuda-a4paper.clo' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \ProvidesExplFile{tuda-a4paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a4paper} \cs_set:Nn \ptxcd_setup_title_sizes: { \cs_set:Nn \ptxcd_title_fontsize: {{36pt}{47pt}} diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo index 6887cd5bca..4021926b3c 100644 --- a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo +++ b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo @@ -1,4 +1,4 @@ -%% This is file `tuda-a5paper.clo' version 3.27 (2022/08/03), +%% This is file `tuda-a5paper.clo' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \ProvidesExplFile{tuda-a5paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a5paper} \cs_set:Nn \ptxcd_setup_title_sizes: { \cs_set:Nn \ptxcd_title_fontsize: {{22pt}{28pt}} diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty index d07713a043..b37cc67b5a 100644 --- a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty +++ b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty @@ -1,4 +1,4 @@ -%% This is file `tuda-pgfplots.sty' version 3.27 (2022/08/03), +%% This is file `tuda-pgfplots.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} % Special thanks to: Sebastian Schöps Institut Theorie Elektromagnetischer Felder (TEMF), TU Darmstadt % The original version of this file has been inspired by the colorscheme in the Metropolis beamer theme by Matthias Vogelgesang https://github.com/matze/mtheme \ProvidesPackage{tuda-pgfplots}[\filedate\space\fileversion\space tuda-ci pgfplots color schemes] diff --git a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls index 4fd646bede..aa50dcce9d 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls +++ b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls @@ -1,4 +1,4 @@ -%% This is file `tudabeamer.cls' version 3.27 (2022/08/03), +%% This is file `tudabeamer.cls' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{tudabeamer} [\filedate\space\fileversion\space] @@ -38,8 +38,6 @@ \Define@specialopt@Module[ptxcd/beamer] \PassOptionsToClass{10pt}{beamer} -\Module@DefineSpecialPassKey[ptxcd/beamer]{color}<tudacolors> - \ExplSyntaxOn \str_new:N \g_ptxcd_department_str \keys_define:nn {ptxcd/beamer} { @@ -74,6 +72,12 @@ mecheng .meta:n = {department=mecheng}, departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, departmentlogofile .initial:n =, + color .code:n = + \tl_if_in:nnTF {#1} {=} { + \PassOptionsToPackage{#1}{tudacolors} + } { + \PassOptionsToPackage{color=#1}{tudacolors} + } } @@ -223,7 +227,8 @@ \@starttoc{len}% \let\accentfont\normalfont% -\file_if_exist:nT {\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str.sty} {\usetheme{\g__ptxcd_config_prefix_tl TUDa-\g_ptxcd_department_str}} +\file_if_exist:nT {\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str.sty} + {\usepackage{\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str}} \ExplSyntaxOff diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.def b/macros/latex/contrib/tuda-ci/tex/tudacolors.def index a933584b65..ce8f60a0b6 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudacolors.def +++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.def @@ -1,4 +1,4 @@ -%% This is file `tudacolors.def' version 3.27 (2022/08/03), +%% This is file `tudacolors.def' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \ProvidesFile{tudacolors.def} [\filedate\space\fileversion\space Color definitions for tuda-ci] diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty index 30f52f1eb8..7f13847f10 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty +++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty @@ -1,4 +1,4 @@ -%% This is file `tudacolors.sty' version 3.27 (2022/08/03), +%% This is file `tudacolors.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle} @@ -64,6 +64,7 @@ department / unknown .code:n = { \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} }, + departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, mecheng .meta:n = {department=mecheng}, } @@ -128,8 +129,9 @@ } } -\hook_use:n {ptxcd/init-colors} +\file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str-colors.def} +\hook_use:n {ptxcd/init-colors} \colorlet{InfoBox}{white} diff --git a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls index 36e622b11c..3daebb0140 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls +++ b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls @@ -1,4 +1,4 @@ -%% This is file `tudaexercise.cls' version 3.27 (2022/08/03), +%% This is file `tudaexercise.cls' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplClass{tudaexercise} @@ -632,7 +632,7 @@ \rule{0pt}{\bool_if:NTF \g_ptxcd_smalltitle_bool {.25} {.5}\c_ptxcd_logoheight_dim} \par\nointerlineskip \raisebox{-\height}{% - \begin{minipage}[t]{\dimexpr\linewidth-2.2\c_ptxcd_logoheight_dim-1ex} + \begin{minipage}[t]{\dimexpr\linewidth-\__ptxcd_logowidth:-1ex} \bool_if:NT \g_ptxcd_colorback_bool {\begin{addmargin}{3mm}} \raggedright \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}} @@ -665,7 +665,7 @@ {\bool_if:NTF \g_ptxcd_colorback_bool {1.15}{1}} {\bool_if:NTF \g_ptxcd_colorback_bool {1.5}{1.3} }\c_ptxcd_logoheight_dim}] - {\makebox[2.2\c_ptxcd_logoheight_dim][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}} + {\makebox[\__ptxcd_logowidth:][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}} } \par\medskip }} diff --git a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty index c95e0007a9..3db7dd43e7 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty +++ b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty @@ -1,4 +1,4 @@ -%% This is file `tudafonts.sty' version 3.27 (2022/08/03), +%% This is file `tudafonts.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{tudafonts} [\filedate\space\fileversion\space diff --git a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls index e3905ae98b..56cb811975 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls +++ b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls @@ -1,4 +1,4 @@ -%% This is file `tudaleaflet.cls' version 3.27 (2022/08/03), +%% This is file `tudaleaflet.cls' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplPackage{tudaleaflet}{\filedate}{\fileversion}{Leaflets using the Corporate Design of TU Darmstadt} @@ -130,7 +130,7 @@ contents={ \let\height\layerheight \g_ptxcd_titleimage_code_tl }}}} - \put(\dim_to_decimal_in_unit:nn {\layerwidth-2.2\c_ptxcd_logoheight_dim + \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth: } {\unitlength}, \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){ \rlap{\box_use:N \g_ptxcd_title_info_box} @@ -156,7 +156,7 @@ contents={ \cs_new:Nn \ptxcd_Setup_Title_box: { \hbox_gset:Nn \g_ptxcd_title_info_box { - \parbox{\dimexpr2.5\c_ptxcd_logoheight_dim}{ + \parbox{\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}}{ \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}} } } @@ -176,7 +176,7 @@ contents={ \renewcommand*{\maketitle}{ \def\and{,~ } \hbox_gset:Nn \g_ptxcd_sponsor_box { - \def\height{\dimexpr.8\c_ptxcd_logoheight_dim\relax} + \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}} \parbox[b]{\textwidth}{% \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip \vspace{.1\c_ptxcd_logoheight_dim} @@ -384,7 +384,7 @@ contents={ \cs_new:Nn \ptxcd_make_title_info_box:n { \setlength{\fboxsep}{1.5mm}% \colorbox{InfoBox}{ - \makebox[\dim_eval:n {2.2\c_ptxcd_logoheight_dim-\fboxsep}][r]{ + \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{ \parbox{2\c_ptxcd_logoheight_dim}{ \usekomafont{institution} \raggedright% @@ -394,10 +394,10 @@ contents={ \cs_new:Nn \ptxcd_make_title_logo_box:n { \setlength{\fboxsep}{\z@} - \parbox{2.2\c_ptxcd_logoheight_dim}{ + \parbox{\__ptxcd_logowidth:}{ \colorbox{InfoBox}{ \rlap{ - \makebox[2.5\c_ptxcd_logoheight_dim][r]{ + \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{ \colorbox{InfoBox}{#1\hspace{.3\c_ptxcd_logoheight_dim}} } } diff --git a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls index b89f59f2fd..ac33e0fea6 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls +++ b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls @@ -1,4 +1,4 @@ -%% This is file `tudaletter.cls' version 3.27 (2022/08/03), +%% This is file `tudaletter.cls' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplClass{tudaletter} @@ -185,7 +185,7 @@ \smash{\ptxcd_LetterheadRule} \par \vspace{.5\c_ptxcd_logoheight_dim} - \makebox[2.2\c_ptxcd_logoheight_dim][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} + \makebox[\__ptxcd_logowidth:][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} } } diff --git a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo index a817f4c4b6..05f0e1587c 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo +++ b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo @@ -1,4 +1,4 @@ -%% This is file `tudalettersize10pt.clo' version 3.27 (2022/08/03), +%% This is file `tudalettersize10pt.clo' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg index e989413cb2..0d969a5056 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg +++ b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg @@ -1,4 +1,4 @@ -%% This is file `tudamecheng.cfg' version 3.27 (2022/08/03), +%% This is file `tudamecheng.cfg' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \RequirePackage{expl3} \ProvidesExplFile{tudamecheng.cfg} {\filedate}{\fileversion}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)} @@ -81,7 +81,7 @@ \str_if_eq:VnT \c__ptxcd_base_str {pub} { \cs_set:Nn \ptxcd_setup_sponsor_box: { \hbox_gset:Nn \g_ptxcd_sponsor_box { - \def\height{\dimexpr.8\c_ptxcd_logoheight_dim\relax} + \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}} \parbox[t]{\textwidth}{ \bool_if:nF {\seq_if_empty_p:N \g_ptxcd_sponsors_seq && \tl_if_empty_p:N \@sponsors} { \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip @@ -241,7 +241,7 @@ \raisebox{-\height}[0pt][0pt]{ \parbox{\useplength{firstfootwidth}}{ \usekomafont{pagefoot} - \includegraphics[width=1.4\c_ptxcd_logoheight_dim]{\g_ptxcd_departmentlogo_tl}\\ + \includegraphics[width=\dim_eval:n {.5\__ptxcd_logowidth: + \__ptxcd_logosep:}]{\g_ptxcd_departmentlogo_tl}\\ \MechEngArrow{\l_ptxcd_headrule_width_dim} } } diff --git a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls index 5c813164f8..ea4a132480 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls +++ b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls @@ -1,4 +1,4 @@ -%% This is file `tudaposter.cls' version 3.27 (2022/08/03), +%% This is file `tudaposter.cls' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt} @@ -207,7 +207,7 @@ } \bool_if:NTF \g_ptxcd_marginpar_bool { - \dim_gset:Nn \g_ptxcd_marginpar_dim {2.2\c_ptxcd_logoheight_dim} + \dim_gset:Nn \g_ptxcd_marginpar_dim {\__ptxcd_logowidth:} \geometry{ includemp, marginpar=\g_ptxcd_marginpar_dim, marginparsep=\g_ptxcd_columnSep_dim, right = \dim_eval:n { @@ -292,7 +292,7 @@ foreground, align=tr, hoffset=\paperwidth-\g_ptxcd_margin_dim, - width=2.2\c_ptxcd_logoheight_dim, + width=\__ptxcd_logowidth:, height=.5\textheight, contents={\box_use:N \g_ptxcd_title_info_box} ]{TUDa.poster.logo} @@ -463,11 +463,11 @@ \cs_new:Nn \ptxcd_make_title_logo_box:n { \setlength{\fboxsep}{\z@}% - \parbox{2.2\c_ptxcd_logoheight_dim}{ + \parbox{\__ptxcd_logowidth:}{ \colorbox{InfoBox}{ \rlap{ - \makebox[2.5\c_ptxcd_logoheight_dim][r]{ - \colorbox{InfoBox}{#1\hspace{.3\c_ptxcd_logoheight_dim}} + \makebox[\dim_eval:n {\_ptxcd_logowidth: + \_ptxcd_logowsep:}][r]{ + \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}} } } } @@ -499,7 +499,7 @@ \cs_new:Nn \ptxcd_Setup_Title_box: { \hbox_gset:Nn \g_ptxcd_title_info_box - {\parbox{2.2\c_ptxcd_logoheight_dim}{ + {\parbox{\__ptxcd_logowidth:}{ \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\skip_vertical:n { \box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box diff --git a/macros/latex/contrib/tuda-ci/tex/tudapub.cls b/macros/latex/contrib/tuda-ci/tex/tudapub.cls index a096029095..730e7d3979 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudapub.cls +++ b/macros/latex/contrib/tuda-ci/tex/tudapub.cls @@ -1,4 +1,4 @@ -%% This is file `tudapub.cls' version 3.27 (2022/08/03), +%% This is file `tudapub.cls' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplClass{tudapub} @@ -681,7 +681,7 @@ {\msg_warning:nn{tudapub} {infobox-too-high}} \makebox[\linewidth][r]{\smash{ \raisebox{-\height}{ - \makebox[2.2\c_ptxcd_logoheight_dim][l]{ + \makebox[\__ptxcd_logowidth:][l]{ \box_use:N \g_ptxcd_title_info_box }} }} @@ -712,8 +712,8 @@ \cs_new:Nn \ptxcd_make_title_info_box:n { \setlength{\fboxsep}{1.5mm}% \colorbox{InfoBox}{ - \makebox[\dim_eval:n {2.2\c_ptxcd_logoheight_dim-\fboxsep}][r]{ - \parbox{2\c_ptxcd_logoheight_dim}{ + \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{ + \parbox{\dim_eval:n {\__ptxcd_logowidth:+\fboxsep-\__ptxcd_logosep:}}{ \expandafter \fontsize\ptxcd_titlethanks_fontsize:\selectfont\usekomafont{institution}% \raggedright% #1 @@ -722,12 +722,12 @@ \cs_new:Nn \ptxcd_make_title_logo_box:n { \setlength{\fboxsep}{\z@}% - \parbox{2.2\c_ptxcd_logoheight_dim}{ + \parbox{\__ptxcd_logowidth:}{ \colorbox{InfoBox}{ \rlap{ - \makebox[2.5\c_ptxcd_logoheight_dim][r]{ - \colorbox{InfoBox}{#1\hspace{.3\c_ptxcd_logoheight_dim}} - } + \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{ + \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}} + } } } } @@ -774,7 +774,7 @@ \g_ptxcd_titleimage_code_tl }}}} \bool_if:NF \g__ptxcd_LogoInHead_bool { - \put(\dim_to_decimal_in_unit:nn {\layerwidth-2.2\c_ptxcd_logoheight_dim + \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth: } {\unitlength}, \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){ \rlap{\box_use:N \g_ptxcd_title_info_box} @@ -804,7 +804,7 @@ \cs_new:Nn \ptxcd_setup_title_box: { \hbox_gset:Nn \g_ptxcd_title_info_box { - \parbox{\dimexpr2.5\c_ptxcd_logoheight_dim}{ + \parbox{\dim_eval:n {\__ptxcd_logowidth:+\__ptxcd_logosep:}}{ \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}} } } @@ -813,7 +813,7 @@ \cs_new:Nn \ptxcd_setup_sponsor_box: { \bool_if:nF {\seq_if_empty_p:N \g_ptxcd_sponsors_seq && \tl_if_empty_p:N \@sponsors} { \hbox_gset:Nn \g_ptxcd_sponsor_box { - \def\height{\dimexpr.8\c_ptxcd_logoheight_dim\relax} + \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}} \parbox[t]{\textwidth}{ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip \addvspace{\c_ptxcd_rulesep_dim} @@ -1210,7 +1210,7 @@ {\parbox[t]{\g_ptxcd_headwidth_dim}{ \rule{\z@}{.5\c_ptxcd_logoheight_dim}\par\nointerlineskip \raisebox{-\height}{% - \begin{minipage}[t]{\dimexpr\linewidth-2.2\c_ptxcd_logoheight_dim-1ex} + \begin{minipage}[t]{\dim_eval:n {\linewidth-\__ptxcd_logowidth:-1ex}} \bool_if:NT \g_ptxcd_colorbacktitle_bool {\begin{addmargin}{.5\c_ptxcd_largerule_dim}} \raggedright \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}} @@ -1235,14 +1235,13 @@ \hfill \raisebox{-\height}{ \ptxcd_setup_title_box: - \makebox[2.2\c_ptxcd_logoheight_dim][l]{ + \makebox[\__ptxcd_logowidth:][l]{ \box_use:N \g_ptxcd_title_info_box } } - \dim_compare:nNnTF {\box_ht:N \g_ptxcd_title_info_box + \box_ht:N \g_ptxcd_title_info_box} > {1.1\c_ptxcd_logoheight_dim} + \dim_compare:nNnTF {\box_ht:N \g_ptxcd_title_info_box + \box_ht:N \g_ptxcd_title_info_box} > {(\__ptxcd_logowidth:)/2} {\vspace{\c_ptxcd_largerule_dim}} {\vspace{.5\c_ptxcd_logoheight_dim}} - \par }} \par diff --git a/macros/latex/contrib/tuda-ci/tex/tudarules.sty b/macros/latex/contrib/tuda-ci/tex/tudarules.sty index 1356a3b37b..1b5b49646f 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudarules.sty +++ b/macros/latex/contrib/tuda-ci/tex/tudarules.sty @@ -1,4 +1,4 @@ -%% This is file `tudarules.sty' version 3.27 (2022/08/03), +%% This is file `tudarules.sty' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle} @@ -53,8 +53,8 @@ \tl_set:Nn \l_ptxcd_tmpa_tl {c_ptxcd_ \clist_item:nn {largerule, rulesep, smallrule, logoheight} {##1} _dim} - \dim_if_exist:cF {\l_ptxcd_tmpa_tl} {\dim_new:c {\l_ptxcd_tmpa_tl}} - \dim_gset:cn {\l_ptxcd_tmpa_tl} {\seq_item:Nn \l_ptxcd_tmpa_seq {##1}} + \dim_if_exist:cT {\l_ptxcd_tmpa_tl} {\cs_undefine:c {\l_ptxcd_tmpa_tl}} + \dim_const:cn {\l_ptxcd_tmpa_tl} {\seq_item:Nn \l_ptxcd_tmpa_seq {##1}} } \dim_gset:Nn \g_ptxcd_titlerule_dim {.5\c_ptxcd_smallrule_dim} } @@ -110,6 +110,9 @@ {mecheng} {\bool_gset_true:N \g_ptxcd_simple_rules_bool} } +\cs_new:Nn \__ptxcd_logowidth: {\dim_eval:n {2.2\c_ptxcd_logoheight_dim}} +\cs_new:Nn \__ptxcd_logosep:{\dim_eval:n {0.3\c_ptxcd_logoheight_dim}} + \NewDocumentCommand{\ptxcd_makeheadrule}{som}{ \keys_set:nn {ptxcd/rules} { %TODO maybe package options for default diff --git a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls index bdaf759493..cb14068044 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls +++ b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls @@ -1,4 +1,4 @@ -%% This is file `tudasciposter.cls' version 3.27 (2022/08/03), +%% This is file `tudasciposter.cls' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt} @@ -380,7 +380,7 @@ \newlength{\contentheight} \cs_new:Nn \__ptxcd_logo_code:n { - \node[anchor=north~east,inner~sep=0pt,minimum~width=2.5\c_ptxcd_logoheight_dim](#1) at ([xshift=.3\c_ptxcd_logoheight_dim,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~east){ + \node[anchor=north~east,inner~sep=0pt,minimum~width=\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}](#1) at ([xshift=\__ptxcd_logosep:,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~east){ \includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl} }; } @@ -422,7 +422,7 @@ \__ptxcd_logo_code:n {TUDalogo} - \node[inner~sep=0pt,text~width=2.2\c_ptxcd_logoheight_dim,align=right,anchor=north~west,](titlegraphic) at ([yshift=-\c_ptxcd_rulesep_dim]TUDalogo.south~west){\box_use:N \g_ptxcd_titlegraphic_box}; + \node[inner~sep=0pt,text~width=\__ptxcd_logowidth:,align=right,anchor=north~west,](titlegraphic) at ([yshift=-\c_ptxcd_rulesep_dim]TUDalogo.south~west){\box_use:N \g_ptxcd_titlegraphic_box}; \node[anchor=north~west,inner~sep=0pt,] (title) at ([ xshift=\g_ptxcd_titleindent_dim,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~west) {\box_use:N \g_ptxcd_title_box}; @@ -513,7 +513,7 @@ } \tl_if_empty:NF \@titlegraphic { \hbox_gset:Nn \g_ptxcd_titlegraphic_box { - \parbox{2.2\c_ptxcd_logoheight_dim}{ + \parbox{\__ptxcd_logowidth:}{ \raggedleft \@titlegraphic } @@ -523,9 +523,9 @@ \dim_max:nn {\dim_max:nn {2\c_ptxcd_logoheight_dim} - {\box_ht:N \g_ptxcd_titlegraphic_box +\box_dp:N \g_ptxcd_titlegraphic_box+1.8\c_ptxcd_logoheight_dim} + {\box_ht:N \g_ptxcd_titlegraphic_box +\box_dp:N \g_ptxcd_titlegraphic_box+1.5\c_ptxcd_logoheight_dim+\__ptxcd_logosep:} } - {\box_ht:N \g_ptxcd_title_box+ \box_dp:N \g_ptxcd_title_box+.8\c_ptxcd_logoheight_dim} + {\box_ht:N \g_ptxcd_title_box+ \box_dp:N \g_ptxcd_title_box+1.5\c_ptxcd_logoheight_dim+\__ptxcd_logosep:} } } diff --git a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo index 0729781b2c..dca939006b 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo +++ b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo @@ -1,4 +1,4 @@ -%% This is file `tudasize9pt.clo' version 3.27 (2022/08/03), +%% This is file `tudasize9pt.clo' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- diff --git a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg index 9212cc7a46..c81beadbc4 100644 --- a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg +++ b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg @@ -1,4 +1,4 @@ -%% This is file `tudathesis.cfg' version 3.27 (2022/08/03), +%% This is file `tudathesis.cfg' version 3.28 (2022/11/04), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,8 +26,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.27} -\def\filedate{2022/08/03} +\def\fileversion{3.28} +\def\filedate{2022/11/04} \RequirePackage{expl3} \ProvidesExplFile{tudathesis.cfg} {\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Corporate Design (tuda-ci)} |