diff options
Diffstat (limited to 'macros/latex/contrib')
16 files changed, 1171 insertions, 333 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/biblatex-jura2.tex b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/biblatex-jura2.tex index 7ccc9891cc..eb1f03c4d6 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/biblatex-jura2.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/biblatex-jura2.tex @@ -21,7 +21,6 @@ \usepackage{tgtermes} \usepackage[scale=0.85]{tgheros} - % Juristische Kurzgliederung \renewcommand\thesection {\Roman{section}.} \renewcommand\thesubsection {\arabic{subsection}.} @@ -35,13 +34,10 @@ % Großes Fußnotenzahlen in der Fußnote \deffootnote{2em}{2.5em}{\makebox[2em][l]{\thefootnotemark}} - \newcommand\fnurl[1]{\footnote{\url{#1}}} - \newenvironment{MyMinted}{\VerbatimEnvironment\begin{minted}[frame=single, breaklines=true, breaksymbolleft=\textcolor{red}{\tiny\ensuremath{\hookrightarrow}}, fontsize=\small]{tex}}{\end{minted}} - \usepackage[% style = jura2,% backend = biber,% @@ -51,7 +47,7 @@ minnames = 4,% articlein = false,% %innamebeforetitle = true, - date = comp,%short + date = comp,%comp,long, urldate = comp, dateabbrev = true, useprefix = true,% @@ -64,7 +60,7 @@ \addbibresource{mylit.bib} \title{Das \texttt{biblatex-jura2} Paket} -\subtitle{v0.4, August 2020} +\subtitle{v0.5, Oktober 2022} \author{\texttt{biblatex-jura2(a)gmx.net}} \date{} @@ -558,7 +554,7 @@ Schließlich können auch Entscheidungen, die mit den Namen der Parteien bezeich aktenzeichen = {C-208/00}, datenbank = {juris}, ecli = {ECLI:EU:C:2002:632}, - kurzname = {Überseering}, + entscheidungsname = {Überseering}, } @jurisdiction{64387.01, gericht = {EGMR}, @@ -566,7 +562,7 @@ Schließlich können auch Entscheidungen, die mit den Namen der Parteien bezeich entscheidungsdatum = {2005-02-10}, aktenzeichen = {Nr.~64387/01}, ecli = {ECLI:CE:ECHR:2005:0210JUD006438701}, - kurzname = {Uhl/Deutschland}, + entscheidungsname = {Uhl/Deutschland}, } \end{MyMinted} Das ergibt dann diese\footcite[Rn.~52]{c208.00} Fußnoten.\footcite[Rn.~27]{64387.01} Wer möchte macht das auch mit \emph{Reiten im Walde}.\footcite[Rn.~54]{1bvr921.85} Auch die Ziterweise des Bundesverfassungsgerichts, die neuerdings amtliche Sammlung und Randnummer angeben, lässt sich abbilden.\footcite[(341 f.) Rn. 268]{1bvr2821.11} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/biblatex_jura2.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/biblatex_jura2.pdf Binary files differindex d26d623d85..110f237181 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/biblatex_jura2.pdf +++ b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/biblatex_jura2.pdf diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/jura2.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/jura2.bbx index 44dd2e6100..01abf07f14 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/jura2.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/jura2.bbx @@ -1,4 +1,4 @@ -\ProvidesFile{biblatex-jura2.bbx}[2020/08/19 v0.4] +\ProvidesFile{biblatex-jura2.bbx}[2022/10/19 v0.5] % biblatex-jura2 is released under the LaTeX Project Public License v1.3c or later. \RequireBibliographyStyle{ext-authortitle-ibid} @@ -321,8 +321,11 @@ %%% editor für incollection nicht kursiv \DeclareNameWrapperFormat{sortnamenorm}{\mkbibemph{#1}} -\DeclareNameAlias[incollection]{editor}{sortname} -\DeclareNameWrapperAlias[incollection]{editor}{sortnamenorm} +\DeclareNameAlias[incollection]{byeditor}{sortname} +\DeclareNameWrapperAlias[incollection]{byeditor}{sortnamenorm} + +%%%Alle Namen fett +%\renewcommand*\mkbibcompletename[1]{\mkbibbold{#1}} \newtoggle{tnbcbx@fshowcited} \DeclareEntryOption[boolean]{fshowcited}[true]{\settoggle{tnbcbx@fshowcited}{#1}} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/jura2.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/jura2.cbx index 00f193c671..e8bb8def0c 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/jura2.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/jura2.cbx @@ -1,4 +1,4 @@ -\ProvidesFile{biblatex-jura2.cbx}[2020/08/19 v0.4] +\ProvidesFile{biblatex-jura2.cbx}[2022/10/19 v0.5] % biblatex-jura2 is released under the LaTeX Project Public License v1.3c or later. \RequireCitationStyle{ext-authortitle-ibid} @@ -88,6 +88,25 @@ %%% Namen sortiert als Nachname, Vorname \DeclareNameAlias{sortname}{family-given} +%%%Datum kurz ohne Leerstellen +\DefineBibliographyExtras{ngerman}{% + \protected\def\mkbibdateshort#1#2#3{% + \iffieldundef{#3} + {} + {\mkdayzeros{\thefield{#3}}% + \iffieldundef{#2}{}{\adddot}}% + \iffieldundef{#2} + {} + {\mkmonthzeros{\thefield{#2}}% + \iffieldundef{#1}{}{\adddot}}% + \iffieldbibstring{#1}% + {\bibstring{\thefield{#1}}}% + {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% +} + + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Änderungen betr. 'book' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -204,7 +223,6 @@ %%% Titel ohne Anführungszeichen \DeclareFieldFormat[incollection]{citetitle}{\normalfont{#1}} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Änderungen betr. 'online' und andere %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -236,7 +254,7 @@ % Entfernen für Verwendung der ECLI %\iffieldundef{usere}{}{\addspace\mkbibbrackets{\printfield{usere}}}% \iffieldundef{userf}{}{\addcomma\addspace\printfield{userf}}% - \addspace\textendash% + \addcomma\addspace%\textendash% \iffieldundef{userc}{}{\addspace\printfield{userc}}% \iffieldundef{userd}{}{\addspace\printfield{userd}}% }}}}% diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/mylit.bib b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/mylit.bib index db98f7cf9f..f794f08c5d 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-jura2/mylit.bib +++ b/macros/latex/contrib/biblatex-contrib/biblatex-jura2/mylit.bib @@ -232,7 +232,8 @@ booktitle = {Infrastruktur-Recht: Festschrift für Wilfried Erbguth zum 70. Geburtstag}, title = {Ein ausgedachter Artikel zum Infrastukturrecht}, author = {van Laack, Hemd and de Beer, Diamant and Mitautor, Vorname}, - editor = {Sabine Schlacke and Guy Beaucamp and Mathias Schubert}, + %editor = {\mkbibemph{Sabine Schlacke, Guy Beaucamp und Mathias Schubert}}, + editor = {Schlacke, Sabine and Beaucamp, Guy and Schubert, Mathias}, address = {Berlin}, publisher = {Duncker \& Humblot}, year = {2019}, @@ -245,6 +246,7 @@ title = {Unvernunft als Zurechnungskriterium in den \enquote{Retter\-fällen}}, author = {Beckemper, Katharina}, booktitle = {Strafrecht als Scientia Universalis -- Festschrift für Claus Roxin zum 80. Geburtstag}, + %editor = {\mkbibemph{Heinrich Manfred}}, editor = {Manfred, Heinrich}, year = {2011}, pages = {397-411}, diff --git a/macros/latex/contrib/eolang/DEPENDS.txt b/macros/latex/contrib/eolang/DEPENDS.txt new file mode 100644 index 0000000000..ae6ed34e0b --- /dev/null +++ b/macros/latex/contrib/eolang/DEPENDS.txt @@ -0,0 +1,7 @@ +hard stmaryrd +hard amsmath +hard amsfonts +hard iexec +hard pgf +hard fancyvrb +hard pgfopts
\ No newline at end of file diff --git a/macros/latex/contrib/eolang/LICENSE.txt b/macros/latex/contrib/eolang/LICENSE.txt new file mode 100644 index 0000000000..bd949ffdab --- /dev/null +++ b/macros/latex/contrib/eolang/LICENSE.txt @@ -0,0 +1,21 @@ +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/macros/latex/contrib/eolang/README.md b/macros/latex/contrib/eolang/README.md new file mode 100644 index 0000000000..740df01a47 --- /dev/null +++ b/macros/latex/contrib/eolang/README.md @@ -0,0 +1,29 @@ +[![l3build](https://github.com/yegor256/eolang.sty/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/eolang.sty/actions/workflows/l3build.yml) +[![CTAN](https://img.shields.io/ctan/v/eolang.sty)](https://ctan.org/pkg/eolang.sty) +[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/eolang.sty/blob/master/LICENSE.txt) + +This LaTeX package helps you write 𝜑-calculus formulas and +[SODG](https://github.com/objectionary/sodg) graphs +for [EO](https://www.eolang.org) programming language. + +First, [install it](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages) +from [CTAN](https://ctan.org/pkg/eolang) +and then use in the preamble: + +```tex +\documentclass{article} +\usepackage{eolang} +\begin{document} +\begin{phiquation} +x -> [ + \varphi -> |foo|(5), + y -> [ \lambda -> M_1 ]]. +\end{phiquation} +\end{document} +``` + +If you want to contribute yourself, make a fork, then create a branch, +then run `l3build ctan` in the root directory. +It should compile everything without errors. If not, submit an issue and wait. +Otherwise, make your changes and then run `l3build ctan` again. If the build is +still clean, submit a pull request. diff --git a/macros/latex/contrib/eolang/cactus.pdf b/macros/latex/contrib/eolang/cactus.pdf Binary files differnew file mode 100644 index 0000000000..f42d027a49 --- /dev/null +++ b/macros/latex/contrib/eolang/cactus.pdf diff --git a/macros/latex/contrib/eolang/eolang.dtx b/macros/latex/contrib/eolang/eolang.dtx new file mode 100644 index 0000000000..b10f1a8c35 --- /dev/null +++ b/macros/latex/contrib/eolang/eolang.dtx @@ -0,0 +1,415 @@ +% \iffalse meta-comment +% (The MIT License) +% +% Copyright (c) 2021-2022 Yegor Bugayenko +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the 'Software'), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% \fi + +% \CheckSum{0} +% +% \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 \~} + +% \GetFileInfo{eolang.dtx} +% \DoNotIndex{\endgroup,\begingroup,\let,\else,\s,\n,\r,\\,\1,\fi} + +% \iffalse +%<*driver> +\ProvidesFile{eolang.dtx} +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e} +%<package>\ProvidesPackage{eolang} +%<*package> +[2022-10-20 0.0.1 Formulas and Graphs for EO Programming Language] +%</package> +%<*driver> +\documentclass{ltxdoc} +\usepackage[maxnames=1,minnames=1,maxbibnames=1,natbib=true,citestyle=authoryear,bibstyle=authoryear,doi=false,url=false,isbn=false,isbn=false]{biblatex} +\addbibresource{main.bib} +\usepackage[tt=false, type1=true]{libertine} +\usepackage{microtype} +\usepackage{graphicx} +\usepackage[runs=1,dtx]{docshots} +\docshotPrerequisite{eolang.sty} +\usepackage{eolang} +\usepackage{href-ul} +\PageIndex +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{eolang.dtx} + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi + +% \title{\includegraphics[height=1in]{cactus.pdf} \\ |eolang|: \LaTeX{} Package \\ for Formulas and Graphs \\ of EO Programming Language \\ and $\varphi$-calculus\thanks{The sources are in GitHub at \href{https://github.com/yegor256/eolang.sty}{yegor256/eolang.sty}}} +% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}} +% \date{\filedate, \fileversion} +% +% \maketitle +% +% \textbf{NB!} +% You must run \TeX{} processor with |--shell-escape| option +% and you must have \href{https://www.perl.org}{Perl} installed. + +% \section{Introduction} +% +% This package helps you print formulas of $\varphi$-calculus, +% which is a formal foundation of \href{https://www.eolang.org}{EO} +% programming language. The calculus was introduced by \citet{bugayenko2021eolang} +% and later formalized by \citet{kudasov2021}. Here is how you render +% a simple expression: +% \begin{docshot} +% \documentclass{article} +% \pagestyle{empty} +% \usepackage{eolang} +% \begin{document} +% \begin{phiquation*} +% a -> [ +% b -> [ c -> |x|(56), +% \rho -> |hello|(\xi), +% \Delta ~> |01-FE-C3| ]], + +% x -> [ \lambda ~> M_1 ]. +% \end{phiquation*} +% \end{document} +% \end{docshot} + +% \DescribeEnv{phiquation} +% The environment |phiquation| lets you write a $\varphi$-calculus expressions +% using simple plain-text notation, where: +% \begin{itemize}\setlength\itemsep{0em} +% \item ``|->|'' maps to ``$\mapsto$'' (|\mapsto|), +% \item ``|~>|'' maps to ``$\mapstochar\dashrightarrow$'' (|\mapstochar\dashrightarrow|), +% \item ``|[|'' maps to ``$\llbracket$'' (|\llbracket|), +% \item ``|]|'' maps to ``$\rrbracket$'' (|\rrbracket|), +% \item ``$\vert$|abc|$\vert$'' maps to ``\texttt{abc}'' (|\texttt{abc}|). +% \end{itemize} + +% \DescribeMacro{\phiq} +% The command |\phiq| lets you inline a $\varphi$-calculus expressions +% using the same simple plain-text notation: +% \begin{docshot} +% \documentclass{article} +% \usepackage[paperwidth=2in]{geometry} +% \pagestyle{empty} +% \usepackage{eolang} +% \begin{document} +% A simple object +% \phiq{x -> [\varphi -> y]} +% is a decorator of +% the data object +% \phiq{y -> [\Delta ~> 42]}. +% \end{document} +% \end{docshot} + +% \DescribeEnv{phigure} +% The environment |phigure| allows you to draw a \href{https://github.com/objectionary/sodg}{SODG} graph: +% \begin{docshot} +% \documentclass{article} +% \pagestyle{empty} +% \usepackage{eolang} +% \begin{document} +% \begin{phigure} +% v0 +% v1 xy:v0,-2,+1 data:|42| +% v0->v1 a:$x$ rho +% v2 xy:v0,+1,+1 atom:$\xi.x+1$ +% v1->v2 a:|hi| bend:-15 +% v2->v0 pi bend:10 +% \end{phigure} +% \end{document} +% \end{docshot} +% The content of the environment is parsed line by line. Markers in each line are +% separated by a single space. The first marker is either a unique name of a +% vertex, like |v1| in the example above, or an edge, like |v0->v1|. All other markers are either +% unary like |rho| or binary like |atom:$\xi.x+1$|. Binary markers have two +% parts, separated by colon. The following markers are supported for a vertex: +% \begin{itemize}\setlength\itemsep{0em} +% \item ``|data:[<box>]|'' makes it a data vertex with an optional attached |<box>|, +% \item ``|atom:[<box>]|'' makes it an atom with an optional attached |<box>|, +% \item ``|box:<txt>|'' attaches a |<box>| to it, +% \item ``|xy:<v>,<r>,<d>|'' places this vertex in a position relative to the vertex |<v>|, +% shifting it right by |<r>| % and down by |<d>| centimetres. +% \end{itemize} +% The following markers are supported for an edge: +% \begin{itemize}\setlength\itemsep{0em} +% \item ``|rho|'' places a backward snake arrow to the edge, +% \item ``|rrho|'' places a reverse |rho|, +% \item ``|bend:<angle>|'' bend it right by the amount of |<angle>|, +% \item ``|a:<txt>|'' attaches label |<txt>| to it, +% \item ``|pi|'' makes it dotted, with $\pi$ label. +% \end{itemize} + +% \StopEventually{} + +% \section{Implementation} + +% \changes{v0.0.1}{2022/10/05}{Initial version} + +% First, we include a few packages: +% \begin{macrocode} +\RequirePackage{stmaryrd} +\RequirePackage{amsmath} +\RequirePackage{amsfonts} +\RequirePackage{iexec} +\RequirePackage{fancyvrb} +% \end{macrocode} + +% \begin{macro}{\eolang@env} +% Then, we define |\eolang@env| supplementary command. +% It is implemented with the help of |\iexec| from +% \href{https://github.com/yegor256/iexec}{iexec} package: +% \begin{macrocode} +\makeatletter\newcommand\eolang@env[2]{ + \iexec[trace]{ + /bin/echo -n '\\begin{#1}\\begin{split} &'; + /bin/echo -n '\detokenize{#2}' + | perl -pe 's/^\\r\\+//g' + | perl -pe 's/\\r\\+$//g' + | perl -pe 's/->/\\\\mapsto/g' + | perl -pe 's/\unexpanded{~}>/\\\\mapstochar\\\\dashrightarrow/g' + | perl -pe 's/\\|([^\\|]+)\\|/\\\\texttt{\\1}/g' + | perl -pe 's/\\[/\\\\llbracket/g' + | perl -pe 's/\\]/\\\\rrbracket/g' + | perl -pe 's/\\r\\r/\\\\\\\\ \&/g' + | perl -pe 's/\\r/\\\\\\\\[-4pt] \&/g' + | perl -pe 's/([^& ]) {2}([^ ])/\\1 \\2/g' + | perl -pe 's/ {2}/\\\\quad{}/g' + ; + /bin/echo -n '\\end{split}\\end{#1}\\endinput' + }% +}\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{phiquation} +% Then, we define |phiquation| and |phiquation*| environments: +% \begin{macrocode} +\makeatletter +\NewDocumentEnvironment{phiquation*}{b}{% + \eolang@env{equation*}{#1} +}{} +\NewDocumentEnvironment{phiquation}{b}{% + \eolang@env{equation}{#1} +}{} +\makeatother +\AddToHook{env/phiquation*/begin}{\obeylines\obeyspaces} +\AddToHook{env/phiquation/begin}{\obeylines\obeyspaces} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\phiq} +% Then, we define |\phiq| command: +% \begin{macrocode} +\newcommand\phiq[1]{ + \iexec[trace]{ + /bin/echo -n '$'; + /bin/echo -n '\detokenize{#1}' + | perl -pe 's/->/\\\\mapsto/g' + | perl -pe 's/\unexpanded{~}>/\\\\mapstochar\\\\dashrightarrow/g' + | perl -pe 's/\\[/\\\\llbracket/g' + | perl -pe 's/\\]/\\\\rrbracket/g' + ; + /bin/echo -n '$\\endinput' + }% +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{Perl} +% Then, create a Perl script: +% \begin{macrocode} +\begin{VerbatimOut}{\jobname.pl.eolang} +$tex = $ARGV[0]; +$tex =~ s/^\s+|\s+$//g; +$tex =~ s/(\\[a-zA-Z]+)\s+/\1/g; +$tex =~ s/\r\s+/\r/g; +$tex =~ s/\|([^\|]+)\|/\\texttt{\1}/g; +my @cmds = split (/\r/g, $tex); +print '\begin{phig}', "\n"; +foreach my $c (@cmds) { + my ($head, $tail) = split (/ /, $c, 2); + my %opts = {}; + foreach my $p (split (/ /, $tail)) { + my ($q, $t) = split (/:/, $p); + $opts{$q} = $t; + } + if (index($head, '->') == -1) { + print '\node['; + if (exists $opts{'xy'}) { + my ($v, $right, $down) = split(/,/, $opts{'xy'}); + print ',below right='; + print $down; + print 'cm and '; + print $right; + print 'cm of '; + print $v; + } + if (exists $opts{'data'}) { + print ',phi-data'; + if (not $opts{'data'} eq '') { + $opts{'box'} = $opts{'data'}; + } + } elsif (exists $opts{'atom'}) { + print ',phi-atom'; + if (not $opts{'atom'} eq '') { + $opts{'box'} = $opts{'atom'}; + } + } else { + print ',phi-object'; + } + print ']'; + print ' (', $head, ')'; + print ' {$'; + if ($head eq 'v0') { + print '\Phi'; + } else { + print 'v_', substr($head, 1); + } + print '$}'; + if (exists $opts{'box'}) { + print ' node[phi-box] at ('; + print $head, '.south east) {'; + print $opts{'box'}, '}'; + } + } else { + print '\draw['; + if (exists $opts{'pi'}) { + print ',phi-pi'; + if (not exists $opts{'a'}) { + $opts{'a'} = '$\pi$'; + } + } + print ']'; + my ($from, $to) = split (/->/, $head); + print ' (', $from, ') '; + if (exists $opts{'bend'}) { + print 'edge [bend right=', $opts{'bend'}, ']'; + } else { + print '--'; + } + if (exists $opts{'rho'} or exists $opts{'rrho'}) { + print ' pic[sloped,phi-rho]{parallel arrow={'; + print '-' if not exists $opts{'rrho'}; + print '0.3,-0.15}}'; + } + if (exists $opts{'a'}) { + print ' node [phi-attr] {', $opts{'a'}, '}'; + } + print ' (', $to, ')'; + } + print ";\n"; +} +print '\end{phig}', "\n", '\endinput'; +\end{VerbatimOut} +\message{^^Jeolang: file with Perl script (\jobname.pl.eolang) saved^^J}% +\iexec[trace,stdout=/dev/null]{ + perl -pi -e 's/(\\\\[a-zA-Z])\\s+/\\1/g' \jobname.pl.eolang} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{phigure} +% Then, we include |tikz| package and its libraries: +% \begin{macrocode} +\RequirePackage{tikz} + \usetikzlibrary{arrows} + \usetikzlibrary{shapes} + \usetikzlibrary{decorations} + \usetikzlibrary{decorations.pathmorphing} + \usetikzlibrary{intersections} + \usetikzlibrary{positioning} + \usetikzlibrary{backgrounds} + \usetikzlibrary{calc} + \usetikzlibrary{shapes.arrows} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{phig} +% Then, we define internal environment |phig|: +% \begin{macrocode} +\newenvironment{phig}% + {\noindent\begin{tikzpicture}[ + ->,>=stealth',node distance=0,thick, + pics/parallel arrow/.style={ + code={\draw[-latex,phi-rho] (##1) -- (-##1);}}]}% + {\end{tikzpicture}} +\tikzstyle{transforms} = [fill=white!80!black, single arrow, + minimum height=0.5cm, minimum width=0.5cm, + single arrow head extend=2mm] +\tikzstyle{phi-thing} = [thick,inner sep=0pt,minimum height=2.4em, + draw,font={\small}] +\tikzstyle{phi-object} = [phi-thing,circle] +\tikzstyle{phi-data} = [phi-thing,regular polygon, + regular polygon sides=8] +\tikzstyle{phi-empty} = [phi-object] +\tikzstyle{phi-rho} = [draw,decorate,decoration={ + snake,amplitude=.4mm,segment length=2mm,post length=1mm}] +\tikzstyle{phi-pi} = [draw,dotted] +\tikzstyle{phi-atom} = [phi-object,double] +\tikzstyle{phi-box} = [xshift=-5pt,yshift=3pt,draw,fill=white, + rectangle,thin,minimum width=1.2em,anchor=north west, + font={\scriptsize}] +\tikzstyle{phi-attr} = [midway,sloped,inner sep=0pt, + above=2pt,sloped/.append style={transform shape}, + font={\scriptsize},color=black] +% \end{macrocode} +% \end{macro} + +% \begin{macro}{phigure} +% Then, create a new environment |figure|, as suggested +% \href{https://tex.stackexchange.com/questions/661056}{here}: +% \begin{macrocode} +\NewDocumentEnvironment{phigure}{b}{% + \catcode`\ =10 % + \catcode`\^^M=5 % + \iexec[trace,stdout=\jobname.tex.eolang]{ + perl \jobname.pl.eolang '\detokenize{#1}'}% +}{} +\AddToHook{env/phigure/before}{\bgroup\obeylines\obeyspaces} +\AddToHook{env/phigure/after}{\egroup} +% \end{macrocode} +% \end{macro} + +% \Finale + +%\clearpage + +% \printbibliography + +%\PrintChanges +%\clearpage +%\PrintIndex diff --git a/macros/latex/contrib/eolang/eolang.ins b/macros/latex/contrib/eolang/eolang.ins new file mode 100644 index 0000000000..4e11a335ff --- /dev/null +++ b/macros/latex/contrib/eolang/eolang.ins @@ -0,0 +1,55 @@ +%% (The MIT License) +%% +%% Copyright (c) 2021-2022 Yegor Bugayenko +%% +%% Permission is hereby granted, free of charge, to any person obtaining a copy +%% of this software and associated documentation files (the 'Software'), to deal +%% in the Software without restriction, including without limitation the rights +%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%% copies of the Software, and to permit persons to whom the Software is +%% furnished to do so, subject to the following conditions: +%% +%% The above copyright notice and this permission notice shall be included in all +%% copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%% SOFTWARE. + +\input docstrip.tex +\keepsilent +\usedir{macros/latex/contrib/eolang} +\preamble +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +\endpreamble +\generate{\file{eolang.sty}{\from{eolang.dtx}{package}}} +\obeyspaces +\Msg{To finish the installation you have to move the ".sty"} +\Msg{file into a directory searched by TeX. To produce the} +\Msg{documentation run the file ".dtx" through LaTeX. If any} +\Msg{questions, submit a new GitHub issue.} +\endbatchfile diff --git a/macros/latex/contrib/eolang/eolang.pdf b/macros/latex/contrib/eolang/eolang.pdf Binary files differnew file mode 100644 index 0000000000..ba13e9dcb4 --- /dev/null +++ b/macros/latex/contrib/eolang/eolang.pdf diff --git a/macros/latex/contrib/eolang/main.bib b/macros/latex/contrib/eolang/main.bib new file mode 100644 index 0000000000..34ca47a8f2 --- /dev/null +++ b/macros/latex/contrib/eolang/main.bib @@ -0,0 +1,26 @@ +@misc{bugayenko2021eolang, + title={EOLANG and $\varphi$-calculus}, + author={Yegor Bugayenko}, + year={2021}, + eprint={2111.13384}, + archivePrefix={arXiv}, + primaryClass={cs.PL} +} + +@misc{bugayenko2022origins, + title={On the Origins of Objects by Means of Careful Selection}, + author={Yegor Bugayenko}, + year={2022}, + eprint={2206.02585}, + archivePrefix={arXiv}, + primaryClass={cs.PL} +} + +@misc{kudasov2021, + author = {Kudasov, Nikolai and Kim, Violetta}, + title = {$\varphi$-calculus: a purely object-oriented calculus of decorated objects}, + year = 2022, + eprint={2204.07454}, + archivePrefix={arXiv}, + primaryClass={cs.PL} +} diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf Binary files differindex 0e377d341f..985f37eab3 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 25b0e9471c..be4ad40a07 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex @@ -33,6 +33,8 @@ \usepackage{graphics} \usepackage{hvlogos} \usepackage{simplekv} +\usepackage{menukeys} +\let\tab\relax \usepackage{tabto} \usepackage{pgf,pgfplots} \pgfplotsset{ @@ -63,8 +65,8 @@ \setlength{\parindent}{0pt} \definecolor{LightGray}{gray}{0.9} -\def\PLversion{1.3.5} -\def\PLdate{17 Octobre 2022} +\def\PLversion{1.3.6} +\def\PLdate{18 Octobre 2022} \tcbset{vignettes/.style={% nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,% @@ -308,7 +310,7 @@ Le {package} \ctex{ProfLycee} charge les {packages} : \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} et \ctex{xintbinhex} ; + \item \ctex{listofitems}, \ctex{xintexpr} , \ctex{xintbinhex} et \ctex{xintgcd}; \item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{tcolorbox}. \end{itemize} \end{codeinfo} @@ -354,11 +356,11 @@ Par défaut, \ctex{minted} est chargé et donc la compilation nécessite d'utili \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 \textsf{build} du répertoire courant. +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 \textsf{build} avant de compiler un fichier ! +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] @@ -509,7 +511,7 @@ Pour déclarer les paramètres : \end{codetex} \begin{codecles} -Certains paramètres peuvent être gérés directement dans la commande \ctex{\textbackslash splinetikz} : +Certains paramètres peuvent être gérés directement dans la commande \ctex{splinetikz} : % \begin{itemize} \item la couleur de la courbe par la \textsf{clé} \Cle{couleur} ;\hfill{}défaut \Cle{red} @@ -654,11 +656,11 @@ Le plus \og simple \fg{} est donc: \subsection{Définitions} \begin{codeidee} -En parallèle de l'outil \ctex{\textbackslash splinetikz}, il existe l'outil \ctex{\textbackslash tangentetikz} qui va permettre de tracer des tangentes à l'aide de la liste de points précédemment définie pour l'outil \ctex{\textbackslash 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{\textbackslash 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] @@ -1007,7 +1009,7 @@ Les \Cle{Clés} disponibles sont : \subsection{La commande \og ligneCF \fg} \begin{codeinfo} -Une fois les paramètres déclarés, il faut créer les différentes lignes, grâce à la \ctex{\textbackslash ligneCF}. +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] @@ -1089,7 +1091,7 @@ Le package \ctex{listings} ne nécessite pas de compilation particulière, au co \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 commes \ctex{pythontex} ou \ctex{minted}. +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}. \smallskip @@ -1099,7 +1101,7 @@ Donc, si plusieurs \textit{méthodes} sont utilisées pour insérer du code Pyth \subsection{Présentation de code Python grâce à listings} \begin{codeidee} -L'environnement \ctex{\textbackslash envcodepython} permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier. +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] @@ -1288,7 +1290,7 @@ Cela peut donner -- en tout cas -- des idées de personnalisation en ayant une b \subsection{Présentation de code Python via pythontex}\label{pythontex} \begin{codeidee} -L'environnement \ctex{\textbackslash 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{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] @@ -1346,7 +1348,7 @@ Pour celles et ceux qui ne sont pas à l'aise avec le {package} \ctex{pythontex} \end{codeinfo} \begin{codeidee} -L'environnement \ctex{\textbackslash envcodepythonminted} permet de présenter du code python, dans une \ctex{tcolorbox} avec un style (\textit{minted}) particulier. +L'environnement \ctex{envcodepythonminted} permet de présenter du code python, dans une \ctex{tcolorbox} avec un style (\textit{minted}) particulier. \end{codeidee} \begin{codetex}[listing only] @@ -1402,7 +1404,7 @@ 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{\textbackslash envconsolepythontex} qui permet de le faire. +C'est l'environnement \ctex{envconsolepythontex} qui permet de le faire. \end{codeidee} \begin{codetex}[listing only] @@ -1470,7 +1472,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{\textbackslash envpseudocode} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}. +L'environnement \ctex{envpseudocode} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}. \end{codeidee} \begin{codeinfo} @@ -1555,7 +1557,7 @@ 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é, et accessible grâce aux délimiteurs \Cle{(*...*)}. -Cela permet d'insérer du code \LaTeX{} dans l'environnement \ctex{\textbackslash envpseudocode} (attention au fontes de rendu par contre !). +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] @@ -2367,7 +2369,7 @@ 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{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] @@ -2712,9 +2714,9 @@ 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{\textbackslash{}PLfenetre} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ; - \item \ctex{\textbackslash{}PLfenetresimple} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ; - \item \ctex{\textbackslash{}PLorigine} pour rajouter le libellé de l'origine si non affiché par les axes. + \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} @@ -2739,7 +2741,7 @@ Il existe, de manière marginale, quelques commandes complémentaires qui ne ser \end{codetex} \begin{codecles} -Cette commande, liée à la commande \ctex{\textbackslash{}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{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} @@ -2788,7 +2790,7 @@ Cette commande, liée à la commande \ctex{\textbackslash{}PLreglin} permet de r \end{codetex} \begin{codecles} -Cette commande permet de rajouter le point moyen du nuage, calculé par la commande \ctex{\textbackslash{}PLreglin}, avec les \Cle{clés} : +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} ; @@ -3345,8 +3347,8 @@ Les (deux) commandes sont donc liées à un environnement \ctex{tikzpicture}, et 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). + \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} @@ -3556,6 +3558,390 @@ Pour le moment, seules les lois (continues) exponentielles et normales sont disp \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} @@ -3578,7 +3964,7 @@ Peu d'options pour ces commandes : \item le second, mandataire, est le \textsf{calcul} ou la \textsf{division} à convertir. \end{itemize} -À noter que la macro est dans un bloc \textsf{ensuremath} donc les \textsf{\$\ldots\$} ne sont pas nécessaires. +À noter que la macro est dans un bloc \ctex{ensuremath} donc les \ctex{\$...\$} ne sont pas nécessaires. \end{codecles} \begin{codetex}[listing only] @@ -3911,296 +4297,6 @@ En ce qui concerne les autres arguments : \end{center} \end{codesortie} -\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{Style \og main levée \fg{} en \TikZ}\label{mainlevee} @@ -4272,6 +4368,69 @@ Les valeurs \Cle{mainlevee=5mm et 0.6pt} donnent des résultats -- à mon sens - \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}$ + +\medskip + +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} @@ -4336,7 +4495,6 @@ L'option \Cle{csvii} permet de passer l'appel au package en version \LaTeXe. \begin{filecontents*}[overwrite]{basique.csv} A,B,C,D A,B,D,C -B,A,C,D B,A,D,C C,A,B,D \end{filecontents*} @@ -4774,6 +4932,10 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0 \part{Historique} +{\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}) @@ -4806,7 +4968,7 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0 {\small \bverb|v1.2.1|~:~~~~Amélioration de la gestion du csv pour Pixelart -{\small \bverb|v1.2 |~:~~~~Correction d'un méchant bug sur 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}) diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty index b4651856e7..43391bc2b5 100644 --- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty +++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty @@ -3,7 +3,8 @@ % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfLycee}[2022/10/17 v1.3.5 - Aide pour l'utilisation de LaTeX en lycee] +\ProvidesPackage{ProfLycee}[2022/10/18 v1.3.6 - Aide pour l'utilisation de LaTeX en lycee] +% 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 @@ -2989,4 +2990,107 @@ \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 |