summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/README3
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdfbin374962 -> 375557 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex28
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx28
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx4
-rw-r--r--macros/latex/contrib/clicks/LICENSE.txt21
-rw-r--r--macros/latex/contrib/clicks/README.md5
-rw-r--r--macros/latex/contrib/clicks/clicks.dtx234
-rw-r--r--macros/latex/contrib/clicks/clicks.ins55
-rw-r--r--macros/latex/contrib/clicks/clicks.pdfbin261653 -> 243984 bytes
-rw-r--r--macros/latex/contrib/clicks/clicks.sty82
-rw-r--r--macros/latex/contrib/clicks/clicks.tex92
-rw-r--r--macros/latex/contrib/crumbs/DEPENDS.txt2
-rw-r--r--macros/latex/contrib/crumbs/LICENSE.txt21
-rw-r--r--macros/latex/contrib/crumbs/README.md3
-rw-r--r--macros/latex/contrib/crumbs/crumbs.dtx351
-rw-r--r--macros/latex/contrib/crumbs/crumbs.ins55
-rw-r--r--macros/latex/contrib/crumbs/crumbs.pdfbin352858 -> 256895 bytes
-rw-r--r--macros/latex/contrib/crumbs/crumbs.sty120
-rw-r--r--macros/latex/contrib/crumbs/crumbs.tex155
-rw-r--r--macros/latex/contrib/debate/DEPENDS.txt5
-rw-r--r--macros/latex/contrib/debate/LICENSE.txt21
-rw-r--r--macros/latex/contrib/debate/README.md3
-rw-r--r--macros/latex/contrib/debate/debate.dtx178
-rw-r--r--macros/latex/contrib/debate/debate.ins55
-rw-r--r--macros/latex/contrib/debate/debate.pdfbin235941 -> 328802 bytes
-rw-r--r--macros/latex/contrib/debate/debate.sty53
-rw-r--r--macros/latex/contrib/debate/debate.tex80
-rw-r--r--macros/latex/contrib/ffcode/DEPENDS.txt2
-rw-r--r--macros/latex/contrib/ffcode/LICENSE.txt21
-rw-r--r--macros/latex/contrib/ffcode/README.md3
-rw-r--r--macros/latex/contrib/ffcode/ffcode.dtx383
-rw-r--r--macros/latex/contrib/ffcode/ffcode.ins55
-rw-r--r--macros/latex/contrib/ffcode/ffcode.pdfbin224529 -> 395644 bytes
-rw-r--r--macros/latex/contrib/ffcode/ffcode.sty100
-rw-r--r--macros/latex/contrib/ffcode/ffcode.tex155
-rw-r--r--macros/latex/contrib/href-ul/LICENSE.txt21
-rw-r--r--macros/latex/contrib/href-ul/README.md5
-rw-r--r--macros/latex/contrib/href-ul/href-ul.dtx144
-rw-r--r--macros/latex/contrib/href-ul/href-ul.ins55
-rw-r--r--macros/latex/contrib/href-ul/href-ul.pdfbin49130 -> 229763 bytes
-rw-r--r--macros/latex/contrib/href-ul/href-ul.sty40
-rw-r--r--macros/latex/contrib/href-ul/href-ul.tex70
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin852659 -> 861172 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex1208
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty22
-rw-r--r--macros/latex/contrib/teubner/README3
-rw-r--r--macros/latex/contrib/teubner/teubner-doc.pdfbin431632 -> 432909 bytes
-rw-r--r--macros/latex/contrib/teubner/teubner-doc.tex26
-rw-r--r--macros/latex/contrib/teubner/teubner.dtx63
-rw-r--r--macros/latex/contrib/teubner/teubner.pdfbin670679 -> 671724 bytes
-rw-r--r--macros/latex/contrib/teubner/teubner.txt25
-rw-r--r--macros/latex/contrib/to-be-determined/DEPENDS.txt3
-rw-r--r--macros/latex/contrib/to-be-determined/LICENSE.txt21
-rw-r--r--macros/latex/contrib/to-be-determined/README.md3
-rw-r--r--macros/latex/contrib/to-be-determined/to-be-determined.dtx166
-rw-r--r--macros/latex/contrib/to-be-determined/to-be-determined.ins55
-rw-r--r--macros/latex/contrib/to-be-determined/to-be-determined.pdfbin102667 -> 232654 bytes
-rw-r--r--macros/latex/contrib/to-be-determined/to-be-determined.sty49
-rw-r--r--macros/latex/contrib/to-be-determined/to-be-determined.tex70
60 files changed, 2657 insertions, 1765 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
index 03fc943a6a..2204ba29df 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
@@ -46,6 +46,9 @@ instructions.
== CHANGES ==
+* V. 1.27 (2022-10-03):
+ - Fix once more plauthor check with non-ASCII chars and macros.
+
* V. 1.26 (2022-01-05):
- Provide means to add peer review information.
- Add a data model (*.dbx) file.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
index 449d209f27..168b332893 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
index d36ea6480b..e1b2115212 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
@@ -102,7 +102,7 @@
\thanks{Please report issues via \protect\url{https://github.com/jspitz/biblatex-publist}.}%
}
-\date{Version 1.26 2022/01/05}
+\date{Version 1.27 2022/10/03}
\maketitle
\begin{abstract}
@@ -625,15 +625,22 @@ which has to be passed to \jfcsmacro{printbibliography}, as in:
This will effectively print only publications which have been authored or edited by the
person(s) specified as via \jcsmacro{plauthorname} (or the corresponding option).
-Of course, you can also use other filter possibilities provided by
-\bibltx, such as filtering by type or by keyword. So if you want
-to extract all of your articles from a larger database with entries
+If you do not use reverse numbering (see below), you can also use other filter
+possibilities provided by \bibltx, such as filtering by type or by keyword.
+So if you want to extract all of your articles from a larger database with entries
of diverse type and authors, specify:
\begin{lstlisting}[moretexcs={[1]{printbibliography}}]
\printbibliography[heading=none,filter=mine,type=article]
\end{lstlisting}
%
-Note that several reruns of \texttt{latex} might be required to fix the numbering.
+Note that this method sometimes requires several reruns of \texttt{latex}
+to fix the numbering (with standard ascending numbers).
+
+With reverse (descending) numbering (\joption{reversenumbering=true}),
+the numbering does not correctly work if you filter by type or keyword.
+If you need descending numbering, please resort to separated bibliography databases
+(as advised in sec.~\ref{sec:example}) rather than to \joption{type} or
+\joption{keyword} filtering!
\section{Sorting\label{sec:sorting}}
@@ -709,6 +716,11 @@ or
\begin{description}
+ \item [{V. 1.27 (2022-10-03):}]~
+ \begin{itemize}
+ \item Fix once more plauthor check with non-ASCII chars and macros.
+ \end{itemize}
+
\item [{V. 1.26 (2022-01-05):}]~
\begin{itemize}
\item Provide means to add peer review information (see section~\ref{sec:peerreview}).
@@ -969,9 +981,9 @@ Gregorio.%
Thanks go to Enrico Gregorio (egreg on \emph{tex.stackexchange.com})
for helping me with correct name parsing (actually, the code the package
uses is completely his), user gusbrs on \emph{tex.stackexchange.com},
-Marko Budi¨i\'{c}, Ulrike Fischer, Clea F. Rees, Yannick Kalff, Moritz Wemheuer and many
-other users for testing, bug reports and suggestions, Nicolas Markey for
-\emph{publist.bst} and of course Philipp Lehman and the current
+Marko Budi¨i\'{c}, David Carlisle, Ulrike Fischer, Clea F. Rees, Yannick Kalff,
+Moritz Wemheuer and many other users for testing, bug reports and suggestions,
+Nicolas Markey for \emph{publist.bst} and of course Philipp Lehman and the current
\bibltx\ team (Philipp Kime, Moritz Wemheuer, Audrey Boruvka and
Joseph Wright) for \bibltx.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
index d8309df788..c89a6f821f 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
@@ -25,8 +25,8 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{1.26}
-\def\bpl@rdate{2022/01/05}
+\def\bpl@version{1.27}
+\def\bpl@rdate{2022/10/03}
\ProvidesFile{publist.bbx}[\bpl@rdate\space v.\bpl@version\space
biblatex bibliography style (JSP)]
@@ -285,7 +285,7 @@
% 2. Fully expanded macro content comparison
\NewExpandableDocumentCommand{\bpl@ifstreq}{ m m m m }
{
- \str_if_eq:eeTF { #1 } { #2 } { #3 } { #4 }
+ \str_if_eq:eeTF { \text_purify:n { #1 } } { \text_purify:n { #2 } } { #3 } { #4 }
}
\ExplSyntaxOff
@@ -1512,24 +1512,10 @@
% Link titles if so requested
\AtBeginDocument{%
-\iftoggle{bpl@linktitle}{%
- \DeclareStyleSourcemap{
- \maps[datatype=bibtex]{
- \map[overwrite=true]{
- \step[fieldsource=title,
- match=\regexp{(.*)},
- replace=\regexp{\\usebibmacro{bpl:linked}{$1}},
- final=true]
- }
- \map[overwrite=true]{
- \step[fieldsource=subtitle,
- match=\regexp{(.*)},
- replace=\regexp{\\usebibmacro{bpl:linked}{$1}},
- final=true]
- }
- }
- }
-}{}
+ \iftoggle{bpl@linktitle}{%
+ \DeclareFieldInputHandler{title}{\def\NewValue{\usebibmacro{bpl:linked}{#1}}}
+ \DeclareFieldInputHandler{subtitle}{\def\NewValue{\usebibmacro{bpl:linked}{#1}}}
+ }{}
}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
index 06b5b151c6..2de500984f 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
@@ -26,8 +26,8 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{1.26}
-\def\bpl@rdate{2022/01/05}
+\def\bpl@version{1.27}
+\def\bpl@rdate{2022/10/03}
\ProvidesFile{publist.cbx}[\bpl@rdate\space v.\bpl@version\space
biblatex citation style (JSP)]
diff --git a/macros/latex/contrib/clicks/LICENSE.txt b/macros/latex/contrib/clicks/LICENSE.txt
new file mode 100644
index 0000000000..bd949ffdab
--- /dev/null
+++ b/macros/latex/contrib/clicks/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/clicks/README.md b/macros/latex/contrib/clicks/README.md
index f77fe27323..5357152b3b 100644
--- a/macros/latex/contrib/clicks/README.md
+++ b/macros/latex/contrib/clicks/README.md
@@ -1,4 +1,4 @@
-[![make](https://github.com/yegor256/clicks/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/clicks/actions/workflows/latexmk.yml)
+[![make](https://github.com/yegor256/clicks/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/clicks/actions/workflows/l3build.yml)
[![CTAN](https://img.shields.io/ctan/v/clicks)](https://ctan.org/pkg/clicks)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/clicks/blob/master/LICENSE.txt)
@@ -20,9 +20,6 @@ And then live happily ever after.
\end{document}
```
-The full example and all commands are available in the
-[`clicks.tex`](https://github.com/yegor256/clicks/blob/master/clicks.tex) file.
-
If you want to contribute yourself, make a fork, then create a branch,
then run `make` in the root directory.
It should compile everything without errors. If not, submit an issue and wait.
diff --git a/macros/latex/contrib/clicks/clicks.dtx b/macros/latex/contrib/clicks/clicks.dtx
new file mode 100644
index 0000000000..d103ee064f
--- /dev/null
+++ b/macros/latex/contrib/clicks/clicks.dtx
@@ -0,0 +1,234 @@
+% \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{clicks.dtx}
+% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment}
+
+% \iffalse
+%<*driver>
+\ProvidesFile{clicks.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{clicks}
+%<*package>
+[2022-10-03 0.4.1 Slide Deck Animation]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[tt=false, type1=true]{libertine}
+\usepackage{clicks}
+\usepackage{href-ul}
+\PageIndex
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{clicks.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+
+% \title{|clicks|: \LaTeX{} Package \\ for Slide Deck Animation\thanks{The sources are in GitHub at \href{https://github.com/yegor256/clicks}{yegor256/clicks}}}
+% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}}
+% \date{\filedate, \fileversion}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This package helps simulate animation in PDF documents. You put
+% some content on the page, then you ``click'' and the pages ends,
+% while the content gets copied to the next page. There, you add new
+% content. In the full-screen presentation mode this will look
+% like animation, similar to what you can get with MS PowerPoint:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{clicks}
+\begin{document}
+\print{Here is your wedding plan:}\click
+\print{1. Buy a ring}\click
+\print{2. Propose}\click
+\print{3. Get married}\flush
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+
+% You can make it shorter, with the help of
+% |\plick| and |\plush| commands:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{clicks}
+\begin{document}
+\plick[2]{Here is your wedding plan:}
+\plick[3]{1. Buy a ring}
+\plick[5]{2. Propose}
+\plush[1]{3. Get married}
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+
+% The optional parameters at |\plick| and |\plush|
+% are the minutes: how long you are planning to stay at this animation.
+% The minutes are accumulated in the |minutes| counter, which
+% you can show, for example, at your header. This will help you track
+% time during the presentation. The commands
+% |\click| and |\flush| also have the
+% same optional arguments.
+
+% \section{Package Options}
+
+% \begin{macro}{static}
+% If you need to render the document without animation, just
+% use the |static| package option.
+% \end{macro}
+
+% \StopEventually{}
+
+% \section{Implementation}
+
+% \changes{v0.1.0}{2021/09/13}{Initial version}
+
+% First, we include a few packages:
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+\RequirePackage{etoolbox}
+% \end{macrocode}
+
+% Then, we parse package options:
+% \begin{macrocode}
+\makeatletter
+\newif\ifclicks@static
+\DeclareOption{static}{\clicks@statictrue}
+\makeatother
+\ProcessOptions\relax
+% \end{macrocode}
+
+% Then, we define a few supplementary commands:
+% \begin{macrocode}
+\makeatletter\newcommand*\clicks@body{}\makeatother
+\makeatletter\newcommand\clicks@flush{%
+ \clicks@body\vspace*{0pt}\newpage%
+}\makeatother
+% \end{macrocode}
+
+% Then, we declare a counter of minutes:
+% \begin{macrocode}
+\newcounter{minutes}
+% \end{macrocode}
+
+% \begin{macro}{\print}
+% Then, we define |\print| command:
+% \begin{macrocode}
+\makeatletter\newcommand\print[1]{%
+ \gappto\clicks@body{{#1\par}}%
+}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\flush}
+% Then, we define |\flush| command:
+% \begin{macrocode}
+\makeatletter\newcommand\flush[1][1]{%
+ \ifx\clicks@body\empty\else%
+ \clicks@flush%
+ \renewcommand*\clicks@body{}%
+ \fi%
+ \ifclicks@static\else%
+ \addtocounter{minutes}{#1}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\click}
+% Then, we define |\click| command:
+% \begin{macrocode}
+\makeatletter\newcommand\click[1][0]{%
+ \ifclicks@static\else%
+ \addtocounter{minutes}{#1}%
+ \fi%
+ \ifclicks@static\else%
+ \clicks@flush%
+ \fi%
+}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\plush}
+% Then, we define |\plush| command:
+% \begin{macrocode}
+\newcommand\plush[2][1]{%
+ \print{#2}%
+ \flush[#1]%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\plick}
+% Then, we define |\plick| command:
+% \begin{macrocode}
+\newcommand\plick[2][1]{%
+ \print{#2}%
+ \click[#1]%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \Finale
+
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
diff --git a/macros/latex/contrib/clicks/clicks.ins b/macros/latex/contrib/clicks/clicks.ins
new file mode 100644
index 0000000000..28083d43ef
--- /dev/null
+++ b/macros/latex/contrib/clicks/clicks.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/clicks}
+\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{clicks.sty}{\from{clicks.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/clicks/clicks.pdf b/macros/latex/contrib/clicks/clicks.pdf
index 41a3696a45..9f26f16493 100644
--- a/macros/latex/contrib/clicks/clicks.pdf
+++ b/macros/latex/contrib/clicks/clicks.pdf
Binary files differ
diff --git a/macros/latex/contrib/clicks/clicks.sty b/macros/latex/contrib/clicks/clicks.sty
deleted file mode 100644
index b2aa13ff69..0000000000
--- a/macros/latex/contrib/clicks/clicks.sty
+++ /dev/null
@@ -1,82 +0,0 @@
-% (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.
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{clicks}[2022/09/13 0.3.1 Clicks]
-
-\RequirePackage{xkeyval}
-\RequirePackage{etoolbox}
-
-\makeatletter\newif\ifclicks@static\makeatother
-\makeatletter\DeclareOption{static}{\clicks@statictrue}\makeatother
-\ProcessOptions\relax
-
-\makeatletter\newcommand*\clicks@body{}\makeatother
-\makeatletter\newcommand\clicks@flush{%
- \clicks@body\vspace*{0pt}\newpage%
-}\makeatother
-
-\newcounter{minutes}
-
-% Print the content as is.
-\makeatletter\newcommand\print[1]{%
- \gappto\clicks@body{{#1\par}}%
-}\makeatother
-
-% Flush the page: print the entire content.
-\makeatletter\newcommand\flush[1][1]{%
- \ifx\clicks@body\empty\else%
- \clicks@flush%
- \renewcommand*\clicks@body{}%
- \fi%
- \ifclicks@static\else%
- \addtocounter{minutes}{#1}%
- \fi%
-}
-
-% Print the content and wait for more.
-\makeatletter\newcommand\click[1][0]{%
- \ifclicks@static\else%
- \addtocounter{minutes}{#1}%
- \fi%
- \ifclicks@static\else%
- \clicks@flush%
- \fi%
-}\makeatother
-
-% Print and flush
-% [1]: How many minutes to stay here
-% {1}: The content to print
-\newcommand\plush[2][1]{%
- \print{#2}%
- \flush[#1]%
-}
-
-% Print and click
-% [1]: How many minutes to stay here
-% {1}: The content to print
-\newcommand\plick[2][1]{%
- \print{#2}%
- \click[#1]%
-}
-
-\endinput
diff --git a/macros/latex/contrib/clicks/clicks.tex b/macros/latex/contrib/clicks/clicks.tex
deleted file mode 100644
index 7967601410..0000000000
--- a/macros/latex/contrib/clicks/clicks.tex
+++ /dev/null
@@ -1,92 +0,0 @@
-% (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.
-
-\documentclass[12pt]{article}
-\usepackage[T1]{fontenc}
-\usepackage[tt=false,type1=true]{libertine}
-\usepackage{clicks}
-\usepackage{ffcode}
-
-\title{\ff{clicks}: \LaTeX{} Package \\ for Slide Deck Animation}
-\author{Yegor Bugayenko}
-\date{0.3.1 2022/09/13}
-
-\begin{document}
-\pagenumbering{gobble}
-\raggedbottom
-\setlength{\parindent}{0pt}
-\setlength{\columnsep}{32pt}
-\setlength{\parskip}{6pt}
-
-\maketitle
-
-\section[Intro]{Introduction}
-
-This package helps simulate animation in PDF documents. You put
-some content on the page, then you ``click'' and the pages ends,
-while the content gets copied to the next page. There, you add new
-content. In the full-screen presentation mode this will look
-like animation, similar to what you can get with MS PowerPoint.
-
-\begin{ffcode}
-\documentclass{article}
-\usepackage{clicks}
-\begin{document}
-\print{Here is your wedding plan:}\click
-\print{1. Buy a ring}\click
-\print{2. Propose}\click
-\print{3. Get married}\flush
-\end{document}
-\end{ffcode}
-
-You can make it shorter, with the help of
-\ff{\char`\\plick\{\}} and \ff{\char`\\plush\{\}} commands:
-
-\begin{ffcode}
-\documentclass{article}
-\usepackage{clicks}
-\begin{document}
-\plick[2]{Here is your wedding plan:}
-\plick[3]{1. Buy a ring}
-\plick[5]{2. Propose}
-\plush[1]{3. Get married}
-\end{document}
-\end{ffcode}
-
-If you need to render the document without animation, just
-use the \ff{static} package option.
-
-The optional parameters at \ff{\char`\\plick\{\}} and \ff{\char`\\plush\{\}}
-are the minutes: how long you are planning to stay at this animation.
-The minutes are accumulated in the \ff{minutes} counter, which
-you can show, for example, at your header. This will help you track
-time during the presentation. The commands
-\ff{\char`\\click\{\}} and \ff{\char`\\flush\{\}} also have the
-same optional arguments.
-
-More details about this package you can find
-in the \ff{yegor256/clicks} GitHub repository.
-
-If you want to add a feature or fix a bug, you are welcome
-to submit an issue or make a pull request.
-
-\end{document}
diff --git a/macros/latex/contrib/crumbs/DEPENDS.txt b/macros/latex/contrib/crumbs/DEPENDS.txt
index 78c5e550c1..abac7d8497 100644
--- a/macros/latex/contrib/crumbs/DEPENDS.txt
+++ b/macros/latex/contrib/crumbs/DEPENDS.txt
@@ -1,3 +1,3 @@
hard xkeyval
hard etoolbox
-hard catchfile
+hard catchfile \ No newline at end of file
diff --git a/macros/latex/contrib/crumbs/LICENSE.txt b/macros/latex/contrib/crumbs/LICENSE.txt
new file mode 100644
index 0000000000..bd949ffdab
--- /dev/null
+++ b/macros/latex/contrib/crumbs/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/crumbs/README.md b/macros/latex/contrib/crumbs/README.md
index d01b1cc418..121ee434bb 100644
--- a/macros/latex/contrib/crumbs/README.md
+++ b/macros/latex/contrib/crumbs/README.md
@@ -1,4 +1,5 @@
-[![make](https://github.com/yegor256/crumbs/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/crumbs/actions/workflows/latexmk.yml)
+[![make](https://github.com/yegor256/crumbs/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/crumbs/actions/workflows/l3build.yml)
+[![CTAN](https://img.shields.io/ctan/v/crumbs)](https://ctan.org/pkg/crumbs)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/crumbs/blob/master/LICENSE.txt)
This LaTeX package adds nagivation crumbs to your document, which
diff --git a/macros/latex/contrib/crumbs/crumbs.dtx b/macros/latex/contrib/crumbs/crumbs.dtx
new file mode 100644
index 0000000000..ee9a6b168c
--- /dev/null
+++ b/macros/latex/contrib/crumbs/crumbs.dtx
@@ -0,0 +1,351 @@
+% \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{crumbs.dtx}
+% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment}
+
+% \iffalse
+%<*driver>
+\ProvidesFile{crumbs.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{crumbs}
+%<*package>
+[2022-10-03 0.4.1 Inputable Shell Executions]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[tt=false, type1=true]{libertine}
+\usepackage{crumbs}
+\usepackage{href-ul}
+\PageIndex
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{crumbs.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+
+% \title{|crumbs|: \LaTeX{} Package \\ for Navigation Crumbs\thanks{The sources are in GitHub at \href{https://github.com/yegor256/crumbs}{yegor256/crumbs}}}
+% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}}
+% \date{\filedate, \fileversion}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This package helps you add navigation crumbs to your document,
+% which is most useful for presentations and slide decks:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{crumbs}
+\usepackage{fancyhdr}
+ \fancyhf{}
+ \pagestyle{fancy}
+ \fancyhead[L]{\crumbs / \subcrumbs}
+\begin{document}
+\section{Introduction}
+Some text here.
+\section{Related Works}
+Some other text here.
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+
+% \begin{macro}{\crumb}
+% You may redefine |\crumb{}| and |\subcrumb{}|
+% commands, if you want your crumbs to look nicer, for example:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\renewcommand\crumb[2]{{
+ \ifnum\value{section}=\value{crumbi}
+ \color{orange}
+ \fi
+ #1
+}}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+% \end{macro}
+% The command will be called by |\crumbs| with two arguments. The first one
+% will be the short name of the crumb, the second one will be the long one.
+% The counter |crumbi| will be equal to the position of the crumb
+% being rendered, starting from zero.
+
+% \begin{macro}{\subcrumb}
+% The same for |\subcrumb{}|, but the comparison should be
+% done not between |section| and |crumbi|, but between
+% |subsection| and |subcrumbi| counters.
+% \end{macro}
+
+% \begin{macro}{\section}
+% The first parameter of both |\crumb{}| and |\subcrumb{}|
+% is the optional parameter of |\section{}| and |\subsection{}|
+% calls respectively. The second one is the mandatory parameter of them, which
+% is the full text of the section and sub-section.
+% When you use |crumbs| package, you can use |\section| and |\subsection| with
+% an optional argument, which will be used in the crumbs, e.g.:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\section[Details]{More Details About The Method}
+\subsection[SLR]{Systematic Literature Review}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+% \end{macro}
+
+% \section{Package Options}
+
+% \begin{macro}{dry}
+% You may turn on the ``dry'' mode, which will prohibit the package to
+% renew |\section{}| and |\subsection{}| commands.
+% You will still be able to use the crumbs mechanism through
+% |\crumbection{}| and |\subcrumbection{}| commands, for example:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage[dry]{crumbs}
+\begin{document}
+\crumbection[Intro]{Introduction} % Add it to \crumbs
+\section{Introduction} % Print it to the page
+Hello, world!
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+% \end{macro}
+
+% \begin{macro}{increment}
+% You can also instruct it to increment
+% |\section{}| and |\subsection{}|
+% on each call to |\crumbection{}| and |\subcrumbection{}|
+% respectively. Just use the |increment| package option.
+% \end{macro}
+
+% \section{How It Works}
+
+% On the first run, a new file |jobname.crumbs| is created,
+% where all |\section| and |\subsection| commands
+% are being logged.
+
+% On the second run, the file is loaded and two commands are being
+% created: |\crumbs| and |\subcrumbs|. The first
+% one is a collection of |\crumb{}| calls, while the second
+% one is a collection of |\subcrumb{}| ones.
+
+% \StopEventually{}
+
+% \section{Implementation}
+
+% \changes{v0.2.0}{2021/07/10}{Initial version}
+
+% \iffalse
+\RequirePackage{xkeyval}
+\RequirePackage{etoolbox}
+\makeatletter\newif\ifcrumbs@dry\makeatother
+\makeatletter\DeclareOption{dry}{\crumbs@drytrue}\makeatother
+\makeatletter\newif\ifcrumbs@increment\makeatother
+\makeatletter\DeclareOption{increment}{\crumbs@incrementtrue}\makeatother
+\ProcessOptions\relax
+% \fi
+
+% \begin{macro}{\crumbs}
+% It is implemented with the help of |catchfile| package. First,
+% we define special commands for special characters inside the
+% |jobname.crumbs| files, as suggested \href{https://tex.stackexchange.com/a/12414/1449}{here}:
+% \begin{macrocode}
+\makeatletter\newcommand\crumbs@back{\@backslashchar}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\appendtofile}
+% Then, we define a new command |\appendtofile|:
+% \begin{macrocode}
+\RequirePackage{catchfile}
+ \newwrite\appendwrite
+ \ExplSyntaxOn\cs_new:Npn\appendtofile#1#2{%
+ \begingroup
+ \IfFileExists{#1}%
+ {\CatchFileDef{\filecontent}{#1}{\endlinechar=`^^J\catcode\endlinechar=12\relax}}% keep existing end-of-lines
+ {\let\filecontent\empty}%
+ \immediate\openout\appendwrite=#1\relax
+ \immediate\write\appendwrite{\unexpanded\expandafter{\filecontent} \text_purify:n{#2}}%
+ \immediate\closeout\appendwrite
+ \endgroup
+ }\ExplSyntaxOff
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\subcrumbs}
+% The command |\subcrumbs| prints all sub-crumbs for the current subsection:
+% \begin{macrocode}
+\newcommand\subcrumbs{%
+ \ifnum\value{section}=0\else%
+ \expandafter\ifcsname crumbs\romannumeral\the\value{section}\endcsname%
+ \csname crumbs\romannumeral\the\value{section}\endcsname{}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\crumbection}
+% The command |\crumbection| registers a new crumb:
+% \begin{macrocode}
+\makeatletter\newcommand\crumbection[2][]{%
+ \def\temp{#1}%
+ \ifx\crumbs\empty%
+ \appendtofile{\jobname.crumbs}{%
+ \crumbs@back ifx\crumbs@back crumbs\crumbs@back empty%
+ \crumbs@back gappto\crumbs@back crumbs\{\crumbs@back setcounter\{crumbi\}\{0\}\}%
+ \crumbs@back fi%
+ \crumbs@back gappto\crumbs@back crumbs\{\crumbs@back stepcounter\{crumbi\}\crumbs@back crumb{\ifx\temp\empty \{#2\}\else \{#1\}\fi}{\{#2\}}\}%
+ }%
+ \fi%
+ \ifcrumbs@increment\stepcounter{section}\fi%
+}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\subcrumbection}
+% The command |\subcrumbection| registers a new subcrumb:
+% \begin{macrocode}
+\makeatletter\newcommand\subcrumbection[2][]{%
+ \def\temp{#1}%
+ \ifx\crumbs\empty%
+ \appendtofile{\jobname.crumbs}{%
+ \crumbs@back ifcsname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\crumbs@back else
+ \crumbs@back expandafter\crumbs@back newcommand\crumbs@back csname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\{%
+ \crumbs@back setcounter\{subcrumbi\}\{0\}%
+ \}%
+ \crumbs@back fi%
+ \crumbs@back expandafter\crumbs@back gappto\crumbs@back csname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\{%
+ \crumbs@back stepcounter\{subcrumbi\}%
+ \crumbs@back subcrumb{\ifx\temp\empty \{#2\}\else \{#1\}\fi}{\{#2\}}\}%
+ }%
+ \fi%
+ \ifcrumbs@increment\stepcounter{subsection}\fi%
+}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\section}
+% We also redefined |\section| and |\subsection| commands:
+% \begin{macrocode}
+\makeatletter\ifcrumbs@dry%
+ \message{Since "dry" mode is ON we don't renew "section" and "subsection" commands}%
+\else%
+ \NewCommandCopy\crumbs@oldsection\section
+ \renewcommand\section[2][]{%
+ \crumbection[#1]{#2}%
+ \crumbs@oldsection{#2}%
+ }
+ \NewCommandCopy\crumbs@oldsubsection\subsection
+ \renewcommand\subsection[2][]{%
+ \subcrumbection[#1]{#2}%
+ \crumbs@oldsubsection{#2}%
+ }
+\fi\makeatletter
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\crumb}
+% We define default implementations of |\crumb| command:
+% \begin{macrocode}
+\ifcsname crumb\endcsname%
+ \message{The command "crumb" is already defined}%
+\else%
+ \newcommand\crumb[2]{#1}%
+\fi%
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\subcrumb}
+% We define default implementations of |\subcrumb| command:
+% \begin{macrocode}
+\ifcsname subcrumb\endcsname%
+ \message{The command "subcrumb" is already defined}%
+\else%
+ \newcommand\subcrumb[2]{#1}%
+\fi%
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{crumbi}
+% We also define a few counters:
+% \begin{macrocode}
+\newcommand*\crumbs{}
+\newcounter{crumbi}
+\newcounter{subcrumbi}
+% \end{macrocode}
+% \end{macro}
+
+% Finally, we load the file into the document:
+% \begin{macrocode}
+\AtBeginDocument{\IfFileExists{\jobname.crumbs}{\input{\jobname.crumbs}}{}}
+% \end{macrocode}
+
+% \Finale
+
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
diff --git a/macros/latex/contrib/crumbs/crumbs.ins b/macros/latex/contrib/crumbs/crumbs.ins
new file mode 100644
index 0000000000..019bc22d00
--- /dev/null
+++ b/macros/latex/contrib/crumbs/crumbs.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/crumbs}
+\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{crumbs.sty}{\from{crumbs.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/crumbs/crumbs.pdf b/macros/latex/contrib/crumbs/crumbs.pdf
index 9b06354575..93341aca89 100644
--- a/macros/latex/contrib/crumbs/crumbs.pdf
+++ b/macros/latex/contrib/crumbs/crumbs.pdf
Binary files differ
diff --git a/macros/latex/contrib/crumbs/crumbs.sty b/macros/latex/contrib/crumbs/crumbs.sty
deleted file mode 100644
index dc35f811c2..0000000000
--- a/macros/latex/contrib/crumbs/crumbs.sty
+++ /dev/null
@@ -1,120 +0,0 @@
-% (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.
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{crumbs}[2022/09/21 0.3.2 Navigation Crumbs]
-
-\RequirePackage{xkeyval}
-\RequirePackage{etoolbox}
-
-\makeatletter\newif\ifcrumbs@dry\makeatother
-\makeatletter\DeclareOption{dry}{\crumbs@drytrue}\makeatother
-\makeatletter\newif\ifcrumbs@increment\makeatother
-\makeatletter\DeclareOption{increment}{\crumbs@incrementtrue}\makeatother
-\ProcessOptions\relax
-
-% see https://tex.stackexchange.com/a/12414/1449
-\makeatletter\newcommand\crumbs@back{\@backslashchar}\makeatother
-% \makeatletter\newcommand\crumbs@percent{\@percentchar}\makeatother
-\RequirePackage{catchfile}
- \newwrite\appendwrite
- \ExplSyntaxOn\cs_new:Npn\appendtofile#1#2{%
- \begingroup
- \IfFileExists{#1}%
- {\CatchFileDef{\filecontent}{#1}{\endlinechar=`^^J\catcode\endlinechar=12\relax}}% keep existing end-of-lines
- {\let\filecontent\empty}%
- \immediate\openout\appendwrite=#1\relax
- \immediate\write\appendwrite{\unexpanded\expandafter{\filecontent} \text_purify:n{#2}}%
- \immediate\closeout\appendwrite
- \endgroup
- }\ExplSyntaxOff
-
-\newcommand\subcrumbs{%
- \ifnum\value{section}=0\else%
- \expandafter\ifcsname crumbs\romannumeral\the\value{section}\endcsname%
- \csname crumbs\romannumeral\the\value{section}\endcsname{}%
- \fi%
- \fi%
-}
-
-\makeatletter\newcommand\crumbection[2][]{%
- \def\temp{#1}%
- \ifx\crumbs\empty%
- \appendtofile{\jobname.crumbs}{%
- \crumbs@back ifx\crumbs@back crumbs\crumbs@back empty%
- \crumbs@back gappto\crumbs@back crumbs\{\crumbs@back setcounter\{crumbi\}\{0\}\}%
- \crumbs@back fi%
- \crumbs@back gappto\crumbs@back crumbs\{\crumbs@back stepcounter\{crumbi\}\crumbs@back crumb{\ifx\temp\empty \{#2\}\else \{#1\}\fi}{\{#2\}}\}%
- }%
- \fi%
- \ifcrumbs@increment\stepcounter{section}\fi%
-}\makeatother
-
-\makeatletter\newcommand\subcrumbection[2][]{%
- \def\temp{#1}%
- \ifx\crumbs\empty%
- \appendtofile{\jobname.crumbs}{%
- \crumbs@back ifcsname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\crumbs@back else
- \crumbs@back expandafter\crumbs@back newcommand\crumbs@back csname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\{%
- \crumbs@back setcounter\{subcrumbi\}\{0\}%
- \}%
- \crumbs@back fi%
- \crumbs@back expandafter\crumbs@back gappto\crumbs@back csname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\{%
- \crumbs@back stepcounter\{subcrumbi\}%
- \crumbs@back subcrumb{\ifx\temp\empty \{#2\}\else \{#1\}\fi}{\{#2\}}\}%
- }%
- \fi%
- \ifcrumbs@increment\stepcounter{subsection}\fi%
-}\makeatother
-
-\makeatletter\ifcrumbs@dry%
- \message{Since "dry" mode is ON we don't renew "section" and "subsection" commands}%
-\else%
- \NewCommandCopy\crumbs@oldsection\section
- \renewcommand\section[2][]{%
- \crumbection[#1]{#2}%
- \crumbs@oldsection{#2}%
- }
- \NewCommandCopy\crumbs@oldsubsection\subsection
- \renewcommand\subsection[2][]{%
- \subcrumbection[#1]{#2}%
- \crumbs@oldsubsection{#2}%
- }
-\fi\makeatletter
-
-\ifcsname crumb\endcsname%
- \message{The command "crumb" is already defined}%
-\else%
- \newcommand\crumb[2]{#1}%
-\fi%
-\ifcsname subcrumb\endcsname%
- \message{The command "subcrumb" is already defined}%
-\else%
- \newcommand\subcrumb[2]{#1}%
-\fi%
-
-\newcommand*\crumbs{}
-\newcounter{crumbi}
-\newcounter{subcrumbi}
-\AtBeginDocument{\IfFileExists{\jobname.crumbs}{\input{\jobname.crumbs}}{}}
-
-\endinput
diff --git a/macros/latex/contrib/crumbs/crumbs.tex b/macros/latex/contrib/crumbs/crumbs.tex
deleted file mode 100644
index 8a76e866e6..0000000000
--- a/macros/latex/contrib/crumbs/crumbs.tex
+++ /dev/null
@@ -1,155 +0,0 @@
-% (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.
-
-\documentclass[12pt]{article}
-\usepackage[T1]{fontenc}
-\usepackage[tt=false,type1=true]{libertine}
-\usepackage{ffcode}
-\usepackage{xcolor}
-\usepackage{crumbs}
-\usepackage{fancyhdr}
- \fancyhf{}
- \setlength{\headheight}{1.2in}
- \renewcommand{\headrulewidth}{1pt}
- \renewcommand\crumb[2]{{\sffamily[{\ifnum\value{section}=\value{crumbi}\color{orange}\fi#1}]\quad}}
- \renewcommand\subcrumb[2]{{\sffamily[{\ifnum\value{subsection}=\value{subcrumbi}\color{orange}\fi#1}]$\;$}}
- \fancyhead[L]{
- \ff{\char`\\crumbs}: \crumbs
- \\[3pt]
- \small\ff{\char`\\subcrumbs}: \subcrumbs
- \\[3pt]
- \footnotesize\ttfamily section=\the\value{section}, crumbi=\the\value{crumbi}, subcrumbi=\the\value{subcrumbi}
- }
-
-\title{\ff{crumbs}: \LaTeX{} Package \\ for Navigation Crumbs}
-\author{Yegor Bugayenko}
-\date{0.3.2 2022/09/21}
-
-\begin{document}
-\pagenumbering{gobble}
-\raggedbottom
-\setlength{\parindent}{0pt}
-\setlength{\columnsep}{32pt}
-\setlength{\parskip}{6pt}
-
-\maketitle
-\pagestyle{fancy}
-\thispagestyle{fancy}
-
-Before the first \ff{\char`\\section} command:
-
-\ff{\char`\\crumbs}: \crumbs
-\\[3pt]
-\small\ff{\char`\\subcrumbs}: \subcrumbs
-
-\section[Intro]{Introduction}
-
-This package helps you add navigation crumbs to your document,
-which is most useful for presentation and slide decks:
-
-\begin{ffcode}
-\documentclass{article}
-\usepackage{crumbs}
-\usepackage{fancyhdr}
- \fancyhf{}
- \pagestyle{fancy}
- \fancyhead[L]{\crumbs / \subcrumbs}
-\begin{document}
-\section{Introduction}
-Some text here.
-\section{Related Works}
-Some other text here.
-\end{document}
-\end{ffcode}
-
-You may redefine \ff{\char`\\crumb\{\}} and \ff{\char`\\subcrumb\{\}}
-commands, if you want your crumbs to look nicer, for example:
-
-\begin{ffcode}
-\renewcommand\crumb[2]{
- {
- \ifnum\value{section}=\value{crumbi}
- \color{orange}
- \fi
- #1
- }
-}
-\end{ffcode}
-
-The same for \ff{\char`\\subcrumb\{\}}, but the comparison should be
-done not between \ff{section} and \ff{crumbi}, but between
-\ff{subsection} and \ff{subcrumbi} counters.
-
-The first parameter of both \ff{\char`\\crumb\{\}} and \ff{\char`\\subcrumb\{\}}
-is the optional parameter of \ff{\char`\\section\{\}} and \ff{\char`\\subsection\{\}}
-calls respectively. The second one is the mandatory parameter of them, which
-is the full text of the section and sub-section.
-
-You can use \ff{\char`\\section} and \ff{\char`\\subsection} with
-an optional argument, which will be used in the crumbs, e.g.:
-
-\begin{ffcode}
-\section[Details]{More Details About The Method}
-\subsection[SLR]{Systematic Literature Review}
-\end{ffcode}
-
-\subsection{How to Contribute}
-
-You may turn on the ``dry'' mode, which will prohibit the package to
-renew \ff{\char`\\section\{\}} and \ff{\char`\\subsection\{\}} commands.
-You will still be able to use the crumbs mechanism through
-\ff{\char`\\crumbection\{\}} and \ff{\char`\\subcrumbection\{\}}
-commands, for example:
-
-\begin{ffcode}
-\documentclass{article}
-\usepackage[dry]{crumbs}
-\begin{document}
-\crumbection[Intro]{Introduction} % Add it to \crumbs
-\section{Introduction} % Print it to the page
-Hello, world!
-\end{document}
-\end{ffcode}
-
-You can also instruct it to increment
-\ff{\char`\\section\{\}} and \ff{\char`\\subsection\{\}}
-on each call to \ff{\char`\\crumbection\{\}} and \ff{\char`\\subcrumbection\{\}}
-respectively. Just use the \ff{increment} package option.
-
-More details about this package you can find
-in the \ff{yegor256/crumbs} GitHub repository.
-
-If you want to add a feature or fix a bug, you are welcome
-to submit an issue or make a pull request.
-
-\section{How It Works}
-
-On the first run, a new file \ff{\char`\\jobname.crumbs} is created,
-where all \ff{\char`\\section} and \ff{\char`\\subsection} commands
-are being logged.
-
-On the second run, the file is loaded and two commands are being
-created: \ff{\char`\\crumbs} and \ff{\char`\\subcrumbs}. The first
-one is a collection of \ff{\char`\\crumb\{\}} calls, while the second
-one is a collection of \ff{\char`\\subcrumb\{\}} ones.
-
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/debate/DEPENDS.txt b/macros/latex/contrib/debate/DEPENDS.txt
index a468679b1f..7a17e9bd3f 100644
--- a/macros/latex/contrib/debate/DEPENDS.txt
+++ b/macros/latex/contrib/debate/DEPENDS.txt
@@ -1,3 +1,6 @@
+hard xkeyval
hard xcolor
hard tcolorbox
-hard xkeyval
+hard pdfcol
+hard listings
+hard listingsutf8 \ No newline at end of file
diff --git a/macros/latex/contrib/debate/LICENSE.txt b/macros/latex/contrib/debate/LICENSE.txt
new file mode 100644
index 0000000000..bd949ffdab
--- /dev/null
+++ b/macros/latex/contrib/debate/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/debate/README.md b/macros/latex/contrib/debate/README.md
index 3d8d0294c0..ff457dfa4b 100644
--- a/macros/latex/contrib/debate/README.md
+++ b/macros/latex/contrib/debate/README.md
@@ -1,4 +1,5 @@
-[![make](https://github.com/yegor256/debate/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/debate/actions/workflows/latexmk.yml)
+[![make](https://github.com/yegor256/debate/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/debate/actions/workflows/l3build.yml)
+[![CTAN](https://img.shields.io/ctan/v/debate)](https://ctan.org/pkg/debate)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/debate/blob/master/LICENSE.txt)
This LaTeX package helps you organize debates between a few reviewers
diff --git a/macros/latex/contrib/debate/debate.dtx b/macros/latex/contrib/debate/debate.dtx
new file mode 100644
index 0000000000..955229ae6f
--- /dev/null
+++ b/macros/latex/contrib/debate/debate.dtx
@@ -0,0 +1,178 @@
+% \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{debate.dtx}
+% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment}
+
+% \iffalse
+%<*driver>
+\ProvidesFile{debate.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{debate}
+%<*package>
+[2022-10-03 0.2.0 Debates Between Reviewers]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[tt=false, type1=true]{libertine}
+\usepackage{multicol}
+\usepackage{debate}
+\usepackage{href-ul}
+\usepackage{xcolor}
+\usepackage{microtype}
+\PageIndex
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{debate.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+
+% \title{|debate|: \LaTeX{} Package \\ for Debates Between Reviewers\thanks{The sources are in GitHub at \href{https://github.com/yegor256/debate}{yegor256/debate}}}
+% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}}
+% \date{\filedate, \fileversion}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This package helps you organize debates between a few people
+% right inside your documents:
+
+% \begin{multicols}{2}
+% \raggedcolumns
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage[T1]{fontenc}
+\usepackage{debate}
+\begin{document}
+I think apples are tastier
+\debate[Jeff]{I don't think it's true!}
+\debate[Anna]{It is indeed true!}
+than pears!
+
+And I don't want to argue with me.
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+%
+% \columnbreak
+%
+% I think apples are tastier
+% \debate[Jeff]{I don't think it's true!}
+% \debate[Anna]{It is indeed true!}
+% than pears!
+%
+% And I don't want to argue with me.
+% \end{multicols}
+
+% \textbf{NB!}
+% If you want to use |tcolorbox| package, make sure you include
+% |debate| first.
+
+% \section{Package Options}
+
+% \begin{macro}{hide}
+% You can hide them all using |hide| package option.
+% \end{macro}
+
+% \StopEventually{}
+
+% \section{Implementation}
+
+% \changes{v0.1.0}{2021/09/26}{Initial version}
+
+% First, we include a few packages:
+% \begin{macrocode}
+\RequirePackage{xcolor}
+\PassOptionsToPackage{most}{tcolorbox}
+\RequirePackage{tcolorbox}
+% \end{macrocode}
+
+% Then, we parse package options:
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+\makeatletter
+\newif\ifdebate@hide
+\DeclareOptionX{hide}{\debate@hidetrue}
+\ProcessOptionsX\relax
+\makeatother
+% \end{macrocode}
+
+% \begin{macro}{\debate}
+% Finally, we define |\debate| command:
+% \begin{macrocode}
+\makeatletter\newcommand\debate[2][Reviewer]{%
+ \ifdebate@hide%
+ #1%
+ \else%
+ {%
+ \begin{tcolorbox}[frame hidden,sharp corners,enhanced,borderline west={1pt}{0pt}{red},interior hidden,boxsep=0pt,left=0pt,right=0pt,top=0pt,bottom=0pt,beforeafter skip balanced=0pt]
+ \sffamily\color{gray}%
+ \raggedright%
+ \addtolength\leftskip{18pt}\setlength\parskip{0pt}\setlength\parindent{0pt}%
+ \textcolor{red}{\bfseries\scshape #1}: #2
+ \end{tcolorbox}
+ \vspace{-\parskip}
+ }%
+ \fi%
+}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \Finale
+
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
diff --git a/macros/latex/contrib/debate/debate.ins b/macros/latex/contrib/debate/debate.ins
new file mode 100644
index 0000000000..b1e10ebfcf
--- /dev/null
+++ b/macros/latex/contrib/debate/debate.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/debate}
+\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{debate.sty}{\from{debate.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/debate/debate.pdf b/macros/latex/contrib/debate/debate.pdf
index b6ac58b76f..336aed0d9f 100644
--- a/macros/latex/contrib/debate/debate.pdf
+++ b/macros/latex/contrib/debate/debate.pdf
Binary files differ
diff --git a/macros/latex/contrib/debate/debate.sty b/macros/latex/contrib/debate/debate.sty
deleted file mode 100644
index 6650f4bfc5..0000000000
--- a/macros/latex/contrib/debate/debate.sty
+++ /dev/null
@@ -1,53 +0,0 @@
-% (The MIT License)
-%
-% Copyright (c) 2021 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.
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{debate}[2021/10/10 0.1.1 Debates Between Reviewers]
-
-\RequirePackage{xcolor}
-\PassOptionsToPackage{most}{tcolorbox}
-\RequirePackage{tcolorbox}
-
-\RequirePackage{xkeyval}
-\makeatletter
-\newif\ifdebate@hide
-\DeclareOptionX{hide}{\debate@hidetrue}
-\ProcessOptionsX\relax
-\makeatother
-
-\makeatletter\newcommand\debate[2][Author]{%
- \ifdebate@hide%
- #1%
- \else%
- {%
- \begin{tcolorbox}[frame hidden,sharp corners,enhanced,borderline west={1pt}{0pt}{red},interior hidden,boxsep=0pt,left=0pt,right=0pt,top=0pt,bottom=0pt,beforeafter skip balanced=0pt]
- \sffamily\color{gray}%
- \raggedright%
- \addtolength\leftskip{18pt}\setlength\parskip{0pt}\setlength\parindent{0pt}%
- \textcolor{red}{\bfseries\scshape #1}: #2
- \end{tcolorbox}
- \vspace{-\parskip}
- }%
- \fi%
-}\makeatother
-
-\endinput
diff --git a/macros/latex/contrib/debate/debate.tex b/macros/latex/contrib/debate/debate.tex
deleted file mode 100644
index e6d09c3a34..0000000000
--- a/macros/latex/contrib/debate/debate.tex
+++ /dev/null
@@ -1,80 +0,0 @@
-% (The MIT License)
-%
-% Copyright (c) 2021 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.
-
-\documentclass[12pt]{article}
-\usepackage[T1]{fontenc}
-\usepackage[tt=false,type1=true]{libertine}
-\usepackage{multicol}
-\usepackage{debate}
-\usepackage{ffcode}
-\usepackage{xcolor}
-\usepackage{microtype}
-\title{\ff{debate}: \LaTeX{} Package \\ for Debates Between Reviewers}
-\author{Yegor Bugayenko}
-\date{0.1.1 2021/10/10}
-\begin{document}
-\pagenumbering{gobble}
-\raggedbottom
-\setlength{\parindent}{0pt}
-\setlength{\columnsep}{32pt}
-\setlength{\parskip}{6pt}
-\maketitle
-
-This package helps you organize debates between a few people
-right inside your documents:
-
-\begin{multicols}{2}
-\scriptsize
-\raggedcolumns
-\begin{verbatim}
-\documentclass{article}
-\usepackage[T1]{fontenc}
-\usepackage{debate}
-\begin{document}
-I think apples are tastier
-\debate[Jeff]{I don't think it's true!}
-\debate[Anna]{It is indeed true!}
-than pears!
-
-And I don't want to argue with me.
-\end{document}
-\end{verbatim}
-
-\columnbreak
-
-I think apples are tastier
-\debate[Jeff]{I don't think it's true!}
-\debate[Anna]{It is indeed true!}
-than pears!
-
-And I don't want to argue with me.
-\end{multicols}
-
-You can hide them all using \ff{hide} package option.
-
-If you want to use \ff{tcolorbox} package, make sure you include
-\ff{debate} first.
-
-More details about this package you can find
-in the \ff{yegor256/debate} GitHub repository.
-
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/ffcode/DEPENDS.txt b/macros/latex/contrib/ffcode/DEPENDS.txt
index 935840f850..52a46fbc48 100644
--- a/macros/latex/contrib/ffcode/DEPENDS.txt
+++ b/macros/latex/contrib/ffcode/DEPENDS.txt
@@ -1,3 +1,5 @@
hard xkeyval
hard minted
hard tcolorbox
+hard pgf
+hard environ
diff --git a/macros/latex/contrib/ffcode/LICENSE.txt b/macros/latex/contrib/ffcode/LICENSE.txt
new file mode 100644
index 0000000000..bd949ffdab
--- /dev/null
+++ b/macros/latex/contrib/ffcode/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/ffcode/README.md b/macros/latex/contrib/ffcode/README.md
index 13e012d767..fe0332ddfe 100644
--- a/macros/latex/contrib/ffcode/README.md
+++ b/macros/latex/contrib/ffcode/README.md
@@ -1,4 +1,5 @@
-[![make](https://github.com/yegor256/ffcode/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/ffcode/actions/workflows/latexmk.yml)
+[![make](https://github.com/yegor256/ffcode/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/ffcode/actions/workflows/l3build.yml)
+[![CTAN](https://img.shields.io/ctan/v/ffcode)](https://ctan.org/pkg/ffcode)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/ffcode/blob/master/LICENSE.txt)
This LaTeX package helps you write source code in your academic papers
diff --git a/macros/latex/contrib/ffcode/ffcode.dtx b/macros/latex/contrib/ffcode/ffcode.dtx
new file mode 100644
index 0000000000..c6d717c7b5
--- /dev/null
+++ b/macros/latex/contrib/ffcode/ffcode.dtx
@@ -0,0 +1,383 @@
+% \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{ffcode.dtx}
+% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment}
+
+% \iffalse
+%<*driver>
+\ProvidesFile{ffcode.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{ffcode}
+%<*package>
+[03.10.2022 0.5.0 Fixed Font Code]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage[tt=false,type1=true]{libertine}
+\usepackage{microtype}
+\usepackage{href-ul}
+\usepackage{ffcode}
+\usepackage{amsmath}
+\usepackage{multicol}
+\usepackage{xcolor}
+\PageIndex
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{ffcode.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+
+% \title{|ffcode|: \LaTeX{} Package \\ for Fixed-Font Code Blocks\thanks{The sources are in GitHub at \href{https://github.com/yegor256/ffcode}{yegor256/ffcode}}}
+% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}}
+% \date{\filedate, \fileversion}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This package helps you write source code in your articles
+% and make sure it looks nice. Install it from CTAN and then
+% use like this (pay attention to |\ff| command
+% and |ffcode| environment):
+% \begin{multicols}{2}
+% \setlength{\parskip}{0pt}
+% \raggedcolumns
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{ffcode}
+\begin{document}
+The function \ff{fibo()}
+is recursive:
+\begin{ffcode}
+int fibo(int n) {
+ if (n < 2) {
+ return n; |$\label{ln:ret}$|
+ }
+ return fibo(n-1)+fibo(n-2);
+}
+\end{ffcode}
+The line no.~\ref{ln:ret}
+terminates it.
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+%
+% \columnbreak
+%
+% The function \ff{fibo()} is recursive:
+%
+%\iffalse
+%<*verb>
+%\fi
+\begin{ffcode}
+int fibo(int n) {
+ if (n < 2) {
+ return n; |$\label{ln:ret}$|
+ }
+ return fibo(n-1)+fibo(n-2);
+}
+\end{ffcode}
+%\iffalse
+%</verb>
+%\fi
+%
+% The line no.~\ref{ln:ret} terminates it.
+% \end{multicols}
+
+% \section{Package Options}
+
+% \begin{macro}{nopygments}
+% You have to run |pdflatex| with |--shell-escape| flag
+% in order to let |minted| (the package we use) to run Pygments
+% and format the code. If you don't want this to happen,
+% just use |nopygments| option.
+% \end{macro}
+
+% \begin{macro}{noframes}
+% If you want to omit the light gray frames around |\ff|
+% texts, use the package option |noframes|.
+% \end{macro}
+
+% \begin{macro}{nobars}
+% To omit the vertical gray bar at the left side of each snippet,
+% use |nobars| option of the package.
+% \end{macro}
+
+% \begin{macro}{nonumbers}
+% To omit the line numbers, use |nonumbers| option of the package.
+% \end{macro}
+
+% \begin{macro}{nocn}
+% By default, the numbering is continuous: line numbers start at the
+% first snippet and increment until the end of the document. If you
+% want them to start from one at each snippet, use |nocn|
+% (stands for ``no continuous numbering'')
+% option of the package.
+% \end{macro}
+
+% \section{Typesetting}
+
+% By the way, the package correctly formats low-height texts, for example, just
+% a dot: \ff{.}
+
+% A pair of vertical lines decorate a TeX command inside the snippet.
+% If you want to print a single vertical line, use this:
+% \ff{|\char`\\vert|}.
+
+% The command |\ff| behaves differently in math mode --- it doesn't
+% add gray frames:
+% \begin{multicols}{2}
+% \setlength{\parskip}{0pt}
+% \raggedcolumns
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{ffcode}
+\begin{document}
+\begin{equation}
+x = \int_\ff{home}^N f(x).
+\end{equation}
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+%
+% \columnbreak
+%
+%\iffalse
+%<*verb>
+%\fi
+% \begin{equation}
+% x = \int_\ff{home}^N f(x).
+% \end{equation}
+%\iffalse
+%</verb>
+%\fi
+% \end{multicols}
+
+% \section{Line Highlighting}
+
+% You can highlight some lines in your |ffcode| environment,
+% or can use any other additional configuration parameters from
+% |minted| package:
+
+% \begin{multicols}{2}
+% \setlength{\parskip}{0pt}
+% \raggedcolumns
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{ffcode}
+\begin{document}
+\begin{ffcode*}
+ {highlightlines={1,4-5}}
+while (true) {
+ print("Hello!")
+ print("Enter your name:")
+ scan(x)
+ print("You name is " + x)
+}
+\end{ffcode*}
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+%
+% \columnbreak
+%
+%\iffalse
+%<*verb>
+%\fi
+\begin{ffcode*}{highlightlines={7,10-11}}
+while (true) {
+ print("Hello!")
+ print("Enter your name:")
+ scan(x)
+ print("You name is " + x)
+}
+\end{ffcode*}
+%\iffalse
+%</verb>
+%\fi
+% \end{multicols}
+
+% Using this second argument of |ffcode*| (with the trailing asterisk),
+% you can provide any other options from |minted| package to the
+% snippet.
+
+% \StopEventually{}
+
+% \section{Implementation}
+
+% \changes{v0.2.0}{2021/07/10}{Initial version}
+
+% First, we parse package options:
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+\makeatletter
+\DeclareOptionX{nopygments}{\PassOptionsToPackage{draft=true}{minted}}
+\newif\ifff@noframes
+\DeclareOptionX{noframes}{\ff@noframestrue}
+\newif\ifff@nobars
+\DeclareOptionX{nobars}{\ff@nobarstrue}
+\newif\ifff@nonumbers
+\DeclareOptionX{nonumbers}{\ff@nonumberstrue}
+\newif\ifff@nocn
+\DeclareOptionX{nocn}{\ff@nocntrue}
+\ProcessOptionsX\relax
+\makeatother
+% \end{macrocode}
+
+% Then, we configure |minted| package:
+% \begin{macrocode}
+\RequirePackage{minted}
+\setminted{breaklines}
+\setminted{escapeinside=||,mathescape}
+\setminted{highlightcolor=gray!25}
+\usemintedstyle{bw}
+% \end{macrocode}
+
+% \begin{macro}{ffcode}
+% Then, we define |ffcode| environment:
+% \begin{macrocode}
+\makeatletter\ifff@nonumbers
+ \ifff@nobars
+ \newminted[ffcode]{text}{}
+ \else
+ \newminted[ffcode]{text}{framesep=6pt,
+ framerule=1pt,rulecolor=gray,frame=leftline}
+ \fi
+\else
+ \renewcommand{\theFancyVerbLine}{\textcolor{gray}
+ {\tiny\oldstylenums{\ttfamily\arabic{FancyVerbLine}}}}
+ \ifff@nocn
+ \ifff@nobars
+ \newminted[ffcode]{text}{
+ linenos,numbersep=2pt
+ }
+ \else
+ \newminted[ffcode]{text}{
+ framesep=6pt,framerule=1pt,rulecolor=gray,
+ frame=leftline,linenos,numbersep=2pt
+ }
+ \fi
+ \else
+ \ifff@nobars
+ \newminted[ffcode]{text}{
+ firstnumber=last,linenos,numbersep=2pt
+ }
+ \else
+ \newminted[ffcode]{text}{
+ framesep=6pt,framerule=1pt,rulecolor=gray,
+ frame=leftline,firstnumber=last,linenos,numbersep=2pt
+ }
+ \fi
+ \fi
+\fi\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\ff@print}
+% Then, we define supplementary commands |\ff@print| and |\ff@printx|:
+% \begin{macrocode}
+\makeatletter
+\newcommand\ff@print{\begingroup\obeyspaces\ff@printx}
+\newcommand\ff@printx[1]{\texttt{#1}\endgroup}
+\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\ff@rule}
+% Then, we define supplementary command |\ff@rule|:
+% \begin{macrocode}
+\makeatletter\newcommand\ff@rule
+ {\vrule height 6pt depth 1pt width 0pt}
+\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\ff}
+% Finally, we define |\ff| command:
+% \begin{macrocode}
+\makeatletter\ifff@noframes
+ \newcommand\ff[1]{\ff@rule\ff@print{#1}}
+\else
+ \RequirePackage{tcolorbox}
+ \newtcbox\ff@box{nobeforeafter,colframe=gray!80!white,
+ colback=gray!5!white,boxrule=0.1pt,arc=1pt,
+ boxsep=1.2pt,left=0.5pt,right=0.5pt,top=0.2pt,bottom=0.2pt,
+ tcbox raise base}
+ \newcommand\ff[1]{\relax\ifmmode%
+ {\ff@rule\ff@print{#1}}%
+ \else%
+ {\ff@box{\ff@rule\ff@print{#1}}}
+ \fi}
+\fi\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \Finale
+
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
diff --git a/macros/latex/contrib/ffcode/ffcode.ins b/macros/latex/contrib/ffcode/ffcode.ins
new file mode 100644
index 0000000000..758b0a2a81
--- /dev/null
+++ b/macros/latex/contrib/ffcode/ffcode.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/ffcode}
+\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{ffcode.sty}{\from{ffcode.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/ffcode/ffcode.pdf b/macros/latex/contrib/ffcode/ffcode.pdf
index 9f63f91545..1533df9d95 100644
--- a/macros/latex/contrib/ffcode/ffcode.pdf
+++ b/macros/latex/contrib/ffcode/ffcode.pdf
Binary files differ
diff --git a/macros/latex/contrib/ffcode/ffcode.sty b/macros/latex/contrib/ffcode/ffcode.sty
deleted file mode 100644
index ee3c25fed7..0000000000
--- a/macros/latex/contrib/ffcode/ffcode.sty
+++ /dev/null
@@ -1,100 +0,0 @@
-% (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.
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ffcode}[2022/09/12 0.4.4 Fixed Font Code]
-
-\RequirePackage{xkeyval}
-
-\makeatletter
-\DeclareOptionX{nopygments}{\PassOptionsToPackage{draft=true}{minted}}
-\newif\ifff@noframes
-\DeclareOptionX{noframes}{\ff@noframestrue}
-\newif\ifff@nobars
-\DeclareOptionX{nobars}{\ff@nobarstrue}
-\newif\ifff@nonumbers
-\DeclareOptionX{nonumbers}{\ff@nonumberstrue}
-\newif\ifff@nocn
-\DeclareOptionX{nocn}{\ff@nocntrue}
-\ProcessOptionsX\relax
-\makeatother
-
-\RequirePackage{minted}
-
-\setminted{breaklines}
-\setminted{escapeinside=||,mathescape}
-\setminted{highlightcolor=gray!30}
-\usemintedstyle{bw}
-
-\makeatletter\ifff@nonumbers
- \ifff@nobars
- \newminted[ffcode]{text}{}
- \else
- \newminted[ffcode]{text}{
- framesep=6pt,framerule=1pt,rulecolor=gray,frame=leftline
- }
- \fi
-\else
- \renewcommand{\theFancyVerbLine}{\textcolor{gray}{\tiny\oldstylenums{\ttfamily\arabic{FancyVerbLine}}}}
- \ifff@nocn
- \ifff@nobars
- \newminted[ffcode]{text}{
- linenos,numbersep=2pt
- }
- \else
- \newminted[ffcode]{text}{
- framesep=6pt,framerule=1pt,rulecolor=gray,frame=leftline,
- linenos,numbersep=2pt
- }
- \fi
- \else
- \ifff@nobars
- \newminted[ffcode]{text}{
- firstnumber=last,linenos,numbersep=2pt
- }
- \else
- \newminted[ffcode]{text}{
- framesep=6pt,framerule=1pt,rulecolor=gray,frame=leftline,
- firstnumber=last,linenos,numbersep=2pt
- }
- \fi
- \fi
-\fi\makeatother
-
-\makeatletter
-\newcommand\ff@print{\begingroup\obeyspaces\ff@printx}
-\newcommand\ff@printx[1]{\texttt{#1}\endgroup}
-\makeatother
-
-\makeatletter\newcommand\ff@rule{\vrule height 6pt depth 1pt width 0pt}
-\makeatletter\ifff@noframes
- \newcommand\ff[1]{\ff@rule\ff@print{#1}}
-\else
- \RequirePackage{tcolorbox}
- \newtcbox\ff@box{nobeforeafter,colframe=gray!80!white,
- colback=gray!5!white,boxrule=0.1pt,arc=1pt,
- boxsep=1.2pt,left=0.5pt,right=0.5pt,top=0.2pt,bottom=0.2pt,
- tcbox raise base}
- \newcommand\ff[1]{\relax\ifmmode{\ff@rule\ff@print{#1}}\else{\ff@box{\ff@rule\ff@print{#1}}}\fi}
-\fi\makeatother
-
-\endinput
diff --git a/macros/latex/contrib/ffcode/ffcode.tex b/macros/latex/contrib/ffcode/ffcode.tex
deleted file mode 100644
index 1d73cc21bb..0000000000
--- a/macros/latex/contrib/ffcode/ffcode.tex
+++ /dev/null
@@ -1,155 +0,0 @@
-% (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.
-
-\documentclass[12pt]{article}
-\usepackage[T1]{fontenc}
-\usepackage[tt=false,type1=true]{libertine}
-\usepackage{amsmath}
-\usepackage{multicol}
-\usepackage{ffcode}
-\usepackage{xcolor}
-\usepackage{microtype}
-\title{\ff{ffcode}: \LaTeX{} Package \\ for Fixed-Font Code Blocks}
-\author{Yegor Bugayenko}
-\date{0.4.4 2022/09/12}
-\begin{document}
-\pagenumbering{gobble}
-\raggedbottom
-\setlength{\parindent}{0pt}
-\setlength{\columnsep}{32pt}
-\setlength{\parskip}{6pt}
-\maketitle
-
-This package helps you write source code in your articles
-and make sure it looks nice. Install it from CTAN and then
-use like this (pay attention to \ff{\char`\\ff} command
-and \ff{ffcode} environment):
-
-\begin{multicols}{2}
-\setlength{\parskip}{0pt}
-\scriptsize
-\raggedcolumns
-\begin{verbatim}
-\documentclass{article}
-\usepackage[T1]{fontenc}
-\usepackage{ffcode}
-\begin{document}
-The function \ff{fibo()} is recursive:
-\begin{ffcode}
-int fibo(int n) {
- if (n < 2) {
- return n; |$\label{ln:ret}$|
- }
- return fibo(n - 1) + fibo(n - 2);
-}
-\end{ffcode}
-The line no.~\ref{ln:ret} terminates it.
-\end{document}
-\end{verbatim}
-
-\columnbreak
-
-The function \ff{fibo()} is recursive:
-
-\begin{ffcode}
-int fibo(int n) {
- if (n < 2) {
- return n; |$\label{ln:ret}$|
- }
- return fibo(n - 1) + fibo(n - 2);
-}
-\end{ffcode}
-
-The line no.~\ref{ln:ret} terminates it.
-\end{multicols}
-
-You have to run \ff{pdflatex} with \ff{--shell-escape} flag
-in order to let \ff{minted} (the package we use) to run Pygments
-and format the code. If you don't want this to happen,
-just use \ff{nopygments} option.
-
-A pair of vertical lines decorate a TeX command inside the snippet.
-If you want to print a single vertical line, use this:
-\ff{|\char`\\vert|}.
-
-If you want to omit the light gray frames around \ff{\char`\\ff}
-texts, use the package option \ff{noframes}.
-
-The command \ff{\char`\\ff\char`\{...\char`\}} behaves differently in math mode: it doesn't
-add gray frames:
-\begin{equation}
-x = \int_\ff{home}^N f(x).
-\end{equation}
-
-To omit the vertical gray bar at the left side of each snippet,
-use \ff{nobars} option of the package.
-
-To omit the line numbers, use \ff{nonumbers} option of the package.
-
-By default, the numbering is continuous: line numbers start at the
-first snippet and increment until the end of the document. If you
-want them to start from one at each snippet, use \ff{nocn}
-(stands for ``no continuous numbering'')
-option of the package.
-
-You can highlight some lines in your \ff{ffcode} environment,
-or can use any other additional configuration parameters from
-\ff{minted} package:
-
-\begin{multicols}{2}
-\setlength{\parskip}{0pt}
-\scriptsize
-\raggedcolumns
-\begin{verbatim}
-\begin{ffcode*}{highlightlines={1,4-5}}
-while (true) {
- print("Hello!")
- print("Enter your name:")
- scan(x)
- print("You name is " + x)
-}
-\end{ffcode*}
-\end{verbatim}
-
-\columnbreak
-
-\begin{ffcode*}{highlightlines={7,10-11}}
-while (true) {
- print("Hello!")
- print("Enter your name:")
- scan(x)
- print("You name is " + x)
-}
-\end{ffcode*}
-\end{multicols}
-
-Using this second argument of \ff{ffcode*} (with the trailing asterisk),
-you can provide any other options from \ff{minted} package to the
-snippet.
-
-By the way, the package correctly formats low-height texts, for example, just
-a dot: \ff{.}
-
-More details about this package you can find
-in \ff{yegor256/ffcode} GitHub repository.
-
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/href-ul/LICENSE.txt b/macros/latex/contrib/href-ul/LICENSE.txt
new file mode 100644
index 0000000000..bd949ffdab
--- /dev/null
+++ b/macros/latex/contrib/href-ul/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/href-ul/README.md b/macros/latex/contrib/href-ul/README.md
index 67b18d010e..c508666cf1 100644
--- a/macros/latex/contrib/href-ul/README.md
+++ b/macros/latex/contrib/href-ul/README.md
@@ -1,7 +1,8 @@
-[![make](https://github.com/yegor256/href-ul/actions/workflows/make.yml/badge.svg)](https://github.com/yegor256/href-ul/actions/workflows/make.yml)
+[![make](https://github.com/yegor256/href-ul/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/href-ul/actions/workflows/l3build.yml)
+[![CTAN](https://img.shields.io/ctan/v/href-ul)](https://ctan.org/pkg/href-ul)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/href-ul/blob/master/LICENSE.txt)
-This LaTeX package makes hyperlinks underscored.
+This LaTeX package makes hyperlinks underlined.
The package uses [`hyperref`](https://ctan.org/pkg/hyperref)
and [`ulem`](https://ctan.org/pkg/ulem) packages.
diff --git a/macros/latex/contrib/href-ul/href-ul.dtx b/macros/latex/contrib/href-ul/href-ul.dtx
new file mode 100644
index 0000000000..41d4a9d0b5
--- /dev/null
+++ b/macros/latex/contrib/href-ul/href-ul.dtx
@@ -0,0 +1,144 @@
+% \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{href-ul.dtx}
+% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment}
+
+% \iffalse
+%<*driver>
+\ProvidesFile{href-ul.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{href-ul}
+%<*package>
+[03.10.2022 0.2.0 Underlined Hyperlinks]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[tt=false, type1=true]{libertine}
+\usepackage{microtype}
+\usepackage{href-ul}
+\usepackage{xcolor}
+\PageIndex
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{href-ul.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+
+% \title{|href-ul|: \LaTeX{} Package \\ That Makes Underscored Links\thanks{The sources are in GitHub at \href{https://github.com/yegor256/href-ul}{yegor256/href-ul}}}
+% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}}
+% \date{\filedate, \fileversion}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This package helps you make your hyperlinks underlined:
+%
+% \begin{multicols}{2}
+% \setlength{\parskip}{0pt}
+% \raggedcolumns
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{href-ul}
+\begin{document}
+Go to
+ \href{https://google.com}{Google}!
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+%
+% \columnbreak
+%
+% Go to \href{https://google.com}{Google}!
+% \end{multicols}
+
+% Changing the {\color{red}\href{https://github.com/yegor256/href-ul}{color}} of the text also changes the color of the line.
+
+% Changing the {\Large\href{https://github.com/yegor256/href-ul}{size}} of the text doesn't change the height of the line.
+
+% \StopEventually{}
+
+% \section{Implementation}
+
+% \changes{v0.2.0}{2021/06/11}{Initial version}
+
+% First, we include two packages:
+% \begin{macrocode}
+\PassOptionsToPackage{normalem}{ulem}
+\RequirePackage{ulem}
+\PassOptionsToPackage{hidelinks}{hyperref}
+\RequirePackage{hyperref}
+% \end{macrocode}
+
+% \begin{macro}{\href}
+% Then, we define the |\href| command:
+% \begin{macrocode}
+\makeatletter\begingroup%
+\catcode`\$=6 %
+\catcode`\#=12 %
+\gdef\href@split$1#$2#$3\\$4{%
+ \hyper@@link{$1}{$2}{\uline{$4}}%
+ \endgroup%
+}%
+\endgroup\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \Finale
+
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
diff --git a/macros/latex/contrib/href-ul/href-ul.ins b/macros/latex/contrib/href-ul/href-ul.ins
new file mode 100644
index 0000000000..582fd9ba13
--- /dev/null
+++ b/macros/latex/contrib/href-ul/href-ul.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/href-ul}
+\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{href-ul.sty}{\from{href-ul.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/href-ul/href-ul.pdf b/macros/latex/contrib/href-ul/href-ul.pdf
index f480b994d3..37a3867c0e 100644
--- a/macros/latex/contrib/href-ul/href-ul.pdf
+++ b/macros/latex/contrib/href-ul/href-ul.pdf
Binary files differ
diff --git a/macros/latex/contrib/href-ul/href-ul.sty b/macros/latex/contrib/href-ul/href-ul.sty
deleted file mode 100644
index 570f4ca51a..0000000000
--- a/macros/latex/contrib/href-ul/href-ul.sty
+++ /dev/null
@@ -1,40 +0,0 @@
-% (The MIT License)
-%
-% Copyright (c) 2021 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.
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{href-ul}[2021/06/13 0.1.0 Underscored Hyperlinks]
-
-\PassOptionsToPackage{normalem}{ulem}
-\RequirePackage{ulem}
-\PassOptionsToPackage{hidelinks}{hyperref}
-\RequirePackage{hyperref}
-
-\makeatletter\begingroup%
-\catcode`\$=6 %
-\catcode`\#=12 %
-\gdef\href@split$1#$2#$3\\$4{%
- \hyper@@link{$1}{$2}{\uline{$4}}%
- \endgroup%
-}%
-\endgroup\makeatother
-
-\endinput
diff --git a/macros/latex/contrib/href-ul/href-ul.tex b/macros/latex/contrib/href-ul/href-ul.tex
deleted file mode 100644
index 3f60b3f3ea..0000000000
--- a/macros/latex/contrib/href-ul/href-ul.tex
+++ /dev/null
@@ -1,70 +0,0 @@
-% (The MIT License)
-%
-% Copyright (c) 2021 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.
-
-\documentclass[12pt]{article}
-\usepackage{href-ul} % the package from the current dir
-\usepackage{ffcode}
-\usepackage{multicol}
-\usepackage{xcolor}
-\title{\ff{href-ul}: \LaTeX{} Package \newline That Makes Underscored Links}
-\author{Yegor Bugayenko}
-\date{0.1.0 2021/06/13}
-
-\begin{document}
-\pagenumbering{gobble}
-\raggedbottom
-\setlength{\parindent}{0pt}
-\setlength{\columnsep}{32pt}
-\setlength{\parskip}{6pt}
-\maketitle
-
-This package helps you make your hyperlinks underscored:
-
-\begin{multicols}{2}
-\setlength{\parskip}{0pt}
-\scriptsize
-\raggedcolumns
-\begin{verbatim}
-\documentclass{article}
-\usepackage{href-ul}
-\begin{document}
-Go to \href{https://google.com}{Google}!
-\end{document}
-\end{verbatim}
-
-\columnbreak
-
-Go to \href{https://google.com}{Google}!
-\end{multicols}
-
-Changing the {\color{red}\href{https://github.com/yegor256/href-ul}{color}} of the text also changes the color of the line.
-
-Changing the {\Large\href{https://github.com/yegor256/href-ul}{size}} of the text doesn't change the width of the line.
-
-The package uses
-\ff{\href{https://ctan.org/pkg/hyperref}{hyperref}}
-and \ff{\href{https://ctan.org/pkg/ulem}{ulem}} packages.
-
-More details about this package you can find
-in the \ff{\href{https://github.com/yegor256/href-ul}{yegor256/href-ul}} GitHub repository.
-
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index fb6a67967d..b050328eed 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index 237021230d..d2df28ed97 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -18,6 +18,10 @@
\usepackage[group-minimum-digits=4]{siunitx}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
+\usepackage{multicol}
+%\makeatletter
+% \@addtoreset{section}{part}
+%\makeatother
%fancy
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
@@ -57,8 +61,8 @@
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}
-\def\PLversion{1.2.7}
-\def\PLdate{1\ier{} Octobre 2022}
+\def\PLversion{1.2.9}
+\def\PLdate{3 Octobre 2022}
\tcbset{vignettes/.style={%
nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
@@ -272,7 +276,9 @@ Des commandes pour effectuer des calculs de probas (lois binomiale, exponentiell
\newpage
-\section{Introduction}
+\part{Introduction}
+
+\section{Le package ProfLycee}
\subsection{\og Philosophie \fg{} du package}
@@ -359,6 +365,8 @@ Les options précédentes sont cumulables, et, pour info, elles conditionnent le
\end{itemize}
\end{codeinfo}
+\section{Compléments}
+
\subsection{Le système de \og clés/options \fg}
\begin{codeidee}
@@ -447,6 +455,8 @@ En dehors de cela, ce sont des tests multiples et variés qui permettront de dé
\newpage
+\part{Outils pour l'analyse}
+
\section{L'outil \og splinetikz \fg}
\subsection{Courbe d'interpolation}
@@ -465,11 +475,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 par : \verb|liste=x1/y1/d1§x2/y2/d2§...|
- \begin{itemize}
- \item il faut au-moins deux points ;
- \item avec les points \pverb|(xi;yi)| et \vverb|f'(xi)=di|.
- \end{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 ;
@@ -499,7 +505,7 @@ Certains paramètres peuvent être gérés directement dans la commande \ctex{\t
\item l'épaisseur de la courbe par la \textsf{clé} \Cle{epaisseur} ;\hfill{}défaut \Cle{1.25pt}
\item du style supplémentaire pour la courbe peut être rajouté, grâce à la \textsf{clé} \Cle{style=} ;\hfill{}défaut \Cle{vide}
\item les coefficients de \textit{compensation} gérés par la \textsf{clé} \Cle{coeffs} ;\hfill{}défaut \Cle{3}
- \item les points de contrôle ne sont pas affichés par défaut, mais la \textsf{clé booléenne} \Cle{affpoints} permet de les afficher ;\hfill{}défaut \Cle{true}
+ \item les points de contrôle non affichés par défaut, mais la \textsf{clé booléenne} \Cle{affpoints} permet de les afficher ;\hfill{}défaut \Cle{true}
\item la taille des points de contrôle est géré par la \textsf{clé} \Cle{taillepoints}.\hfill{}défaut \Cle{2pt}
\end{itemize}
\end{codecles}
@@ -764,6 +770,179 @@ On obtient le résultat suivant (avec les éléments rajoutés utiles à la comp
\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é>][<option supplémentaire 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{-0.25*\x*\x+\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}
@@ -832,8 +1011,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} : hauteur de la ligne de commande d'entrée ;\hfill{}défaut \Cle{0.75}
- \item \Cle{hr} : hauteur de la ligne de commande de sortie ;\hfill{}défaut \Cle{0.75}
+ \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}
%
@@ -853,34 +1031,34 @@ Chaque argument \textsf{COMMANDE} \& \textsf{RÉSULTAT} peut être formaté (niv
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=1cm,y=1cm,line width=1pt]
+ \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=\ttfamily] {A\noeud} ;
+ \draw[blue] (A\noeud) node[font=\footnotesize\ttfamily] {A\noeud} ;
\end{tikzpicture}
\end{center}
\begin{center}
- \begin{tikzpicture}[x=1cm,y=1cm,line width=1pt]
+ \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=\sffamily] {\Cle{larg}} ;
- \draw[CadetBlue,<->] ($(A51) + (12pt,0)$) -- ($(A32) + (12pt,0)$) node[midway,right,font=\sffamily] {\Cle{esplg}} ;
- \draw[CadetBlue,<->] ($(A02) + (0,2pt)$) -- ($(A02) + (0,2pt) + ({-\CFpremcol},0) $) node[midway,above,font=\sffamily] {\Cle{premcol}} ;
- \draw[CadetBlue,<->] ($(A02) + ({-\CFpremcol},0) + (-2pt,0)$) -- ($(A02) + ({-\CFpremcol},{-\CFhpremcol}) +(-2pt,0)$) node[midway,left,font=\sffamily] {\Cle{hpremcol}} ;
- \draw[CadetBlue,<->] ($(A31) + (12pt,0)$) -- ($(A41) + (12pt,0)$) node[midway,right,font=\sffamily] {\Cle{hc}} ;
- \draw[CadetBlue,<->] ($(A41) + (12pt,0)$) -- ($(A51) + (12pt,0)$) node[midway,right,font=\sffamily] {\Cle{hr}} ;
- \draw[CadetBlue,<->] ($(A32) + (12pt,0)$) -- ($(A42) + (12pt,0)$) node[midway,right,font=\sffamily] {\Cle{hc}} ;
- \draw[CadetBlue,<->] ($(A42) + (12pt,0)$) -- ($(A52) + (12pt,0)$) node[midway,right,font=\sffamily] {\Cle{hr}} ;
- \draw[CadetBlue,->] ($(A12) + (0,-12pt)$) to[bend left=10] ($(A12) + (0,-12pt) + (-18pt,-12pt)$) node[below left,font=\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=\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=\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=\sffamily] {\Cle{titre} \& \Cle{tailletitre} \& \Cle{labeltitre}} ;
+ \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}
@@ -1096,7 +1274,7 @@ Compte tenu de la \textit{relative complexité} pour gérer les options (par par
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 via pythontex}
+\subsection{Présentation de code Python via pythontex}\label{pythontex}
\begin{codeidee}
L'environnement \ctex{\textbackslash envcodepythontex} (chargé par \ctex{ProfLycee}, avec l'option \textit{autogobble}) permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier.
@@ -1150,9 +1328,7 @@ Comme précédemment, des \Cle{Clés} qui permettent de \textit{légèrement} mo
\end{envcodepythontex}
\end{codesortie}
-\newpage
-
-\subsection{Présentation de code Python via minted}
+\subsection{Présentation de code Python via 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 (il nécessite quand même une compilation avec l'option \ctex{--shell-escape} ou \ctex{-write18}).
@@ -1272,7 +1448,7 @@ Les \Cle{Clés} disponibles sont :
\newpage
-\section{Pseudo-Code}
+\section{Pseudo-Code}\label{pseudocode}
\subsection{Introduction}
@@ -1389,7 +1565,7 @@ m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*)
\newpage
-\section{Terminal Windows/UNiX/OSX}
+\section{Terminal Windows/UNiX/OSX}\label{terms}
\subsection{Introduction}
@@ -1510,7 +1686,7 @@ PING ctan.org (5.35.249.60) 56(84) bytes of data.
\newpage
-\section{Cartouche Capytale}
+\section{Cartouche Capytale}\label{capytale}
\subsection{Introduction}
@@ -1571,7 +1747,9 @@ Le \textsf{cartouche} peut être \og cliquable \fg{} grâce à \ctex{href}.
\newpage
-\section{Pavé droit \og simple \fg{}}
+\part{Outils pour la géométrie}
+
+\section{Pavé droit \og simple \fg}\label{pave}
\subsection{Introduction}
@@ -1613,7 +1791,7 @@ Quelques \Cle{clés} sont disponibles pour cette commande :
\begin{codetex}[tikz lower]
%code tikz
-\pavePL[cube,largeur=3]
+\pavePL[cube,largeur=2]
\end{codetex}
\begin{codeinfo}
@@ -1658,7 +1836,7 @@ Le code crée les nœuds relatifs aux sommets, et les nomme comme les sommets, c
\newpage
-\section{Tétraèdre \og simple \fg{}}
+\section{Tétraèdre \og simple \fg}\label{tetra}
\subsection{Introduction}
@@ -1774,325 +1952,9 @@ Pour \textit{illustrer} un peu les \Cle{clĂ©s}, un petit schĂ©ma, avec les diffĂ
\newpage
-\section{Fractions, ensembles}
-
-\subsection{Fractions}
-
-\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 \textsf{ensuremath} donc les \textsf{\$\ldots\$} 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}
-\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{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}
-
-\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{Suites récurrentes et \og toile \fg}
-
-\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é>][<option supplémentaire 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{-0.25*\x*\x+\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
-
-\section{Cercle trigo}
+%\newpage
+%
+\section{Cercle trigo}\label{cercletrigo}
\subsection{Idée}
@@ -2143,32 +2005,32 @@ 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]
- \end{tikzpicture}
+ \cercletrigoPL[rayon=2.5,affvaleurs=false,decal=8pt]
+ \end{tikzpicture}
~~~~
\begin{tikzpicture}[line join=bevel]
- \cercletrigoPL[rayon=2.5,affangles=false]
- \end{tikzpicture}
+ \cercletrigoPL[rayon=2.5,affangles=false]
+ \end{tikzpicture}
~~~~
\begin{tikzpicture}[line join=bevel]
- \cercletrigoPL[rayon=2.5,moinspi=false,couleurfond=orange!15]
- \end{tikzpicture}
+ \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}
+ \cercletrigoPL[rayon=2.5,affvaleurs=false,decal=8pt]
+ \end{tikzpicture}
~~~~
\begin{tikzpicture}[line join=bevel]
- \cercletrigoPL[rayon=2.5,affangles=false]
- \end{tikzpicture}
+ \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}
+ \cercletrigoPL[rayon=2.5,moinspi=false,couleurfond=orange!15,taillevaleurs=\tiny]
+ \end{tikzpicture}
\end{center}
\end{codesortie}
@@ -2234,209 +2096,7 @@ Les \Cle{Clés} pour cette possibilité sont :
\newpage
-\section{Petits schémas pour le signe d'une fonction affine ou d'un trinôme}
-
-\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
+\part{Outils pour les probabilités et les statistiques}\label{reglin}
\section{Paramètres d'une régression linéaire par la méthode des moindres carrés}
@@ -2490,6 +2150,9 @@ 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}
\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.
@@ -2596,8 +2259,6 @@ Le coefficient de corrélation linéaire est $r=\arrond[4]{\TESTr}$, et son carr
\hfill~\includegraphics[height=3cm]{./graphics/pl-doc-stats_d}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_e}\hfill~
\end{codeinfo}
-\pagebreak
-
\subsection{Intégration dans un environnement \TikZ}
\begin{codeinfo}
@@ -2694,8 +2355,6 @@ La commande étant \og autonome \fg{}, elle va pouvoir être intégrée dans des
\end{tikzpicture}
\end{codesortie}
-\pagebreak
-
\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}
@@ -3390,7 +3049,7 @@ Les commandes sont de deux natures :
\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 formatage du résultat, la commande va \og forcer \fg{} les arrondis et l'écriture scientifique.
+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}
@@ -3554,7 +3213,362 @@ $P(15\leqslant X\leqslant25) \approx \numPbinomC[10]{100}{0.02}{15}{25} \approx
\newpage
-\section{Conversions binaire/hexadécimal/décimal}
+\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 \textsf{ensuremath} donc les \textsf{\$\ldots\$} 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}
+
+\section{Conversions binaire/hexadécimal/décimal}\label{conversions}
\subsection{Idée}
@@ -3758,7 +3772,7 @@ $\PLconvtodec[zeros=false,basedep=16]{AC0DC}$
\newpage
-\section{Style \og main levée \fg{} en \TikZ}
+\section{Style \og main levée \fg{} en \TikZ}\label{mainlevee}
\subsection{Idée}
@@ -3827,6 +3841,8 @@ Les valeurs \Cle{mainlevee=5mm et 0.6pt} donnent des résultats -- à mon sens -
\newpage
+\part{Jeux et récréations}
+
\section{PixelART via un fichier csv, en \TikZ}\label{pixelart}
\subsection{Introduction}
@@ -4313,7 +4329,11 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
\newpage
-\section{Historique}
+\part{Historique}
+
+{\small \bverb|v1.2.9|~:~~~~Correction des commandes avec 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})
@@ -4333,37 +4353,37 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
{\small \bverb|v1.1.9|~:~~~~Pixelart en \TikZ{} (page \pageref{pixelart})
-{\small \bverb|v1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ
+{\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 \ctex{xintbinhex}) avec quelques détails
+{\small \bverb|v1.1.7|~:~~~~Conversions bin/hex/dec (basées sur \ctex{xintbinhex}) avec quelques détails (page \pageref{conversions})
-{\small \bverb|v1.1.6|~:~~~~Ajout d'une commande \textsf{PLreglin} pour déterminer les paramètres d'une régression linéaire par moindres carrés
+{\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 \textsf{aidesignePL} et \textsf{aidesignetkztabPL} pour, en \TikZ, créer des petits schémas \og de signe \fg
+{\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 \textsf{cercletrigoPL} pour, en \TikZ, créer facilement un cercle trigo avec \textit{options}
+{\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 \textsf{convertfraction}, \textsf{ensPL} et \textsf{recurrPL}
+{\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 \textsf{ligneCF} (calcul formel), avec prise de charge de la taille du texte !
+{\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 \textsf{tetraPL} pour créer des tétraèdres (avec nœuds) en \TikZ
+{\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 \textsf{pavePL} pour créer des pavés droits (avec nœuds) en \TikZ
+{\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 \textsf{liencapytale} pour créer des cartouches de lien "comme capytale"
+{\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 \textsf{./build}
+{\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 \ctex{minted} (pas besoin de compiler avec \textsf{shell-escape})
+{\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 (minted)
+{\small \bverb|v1.0.5|~:~~~~Ajout d'un environnement pour Python (minted) (page \pageref{pytminted})
-{\small \bverb|v1.0.4|~:~~~~Ajout des environnements pour Terminal (win, osx, unix)
+{\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
+{\small \bverb|v1.0.3|~:~~~~Ajout des environnements pour PseudoCode (page \pageref{pseudocode})
-{\small \bverb|v1.0.2|~:~~~~Ajout des environnements pour Python (pythontex)
+{\small \bverb|v1.0.2|~:~~~~Ajout des environnements pour Python (pythontex) (page \pageref{pythontex})
{\small \bverb|v1.0.1|~:~~~~Modification mineure liée au chargement de \ctex{xcolor}
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index 708ef7b813..e13bf2a31e 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/10/01 v1.2.7 - Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2022/10/03 v1.2.9 - Aide pour l'utilisation de LaTeX en lycee]
+% 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
@@ -83,6 +85,8 @@
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows,arrows.meta}
\usetikzlibrary{babel}
+\usetikzlibrary{shapes.geometric}
+\usetikzlibrary{decorations.pathmorphing}
%tcolorbox
\RequirePackage[most]{tcolorbox}
%divers
@@ -123,14 +127,14 @@
}
\setKVdefault[spline]{%
- liste=,%
+ spline={},%
width=1.25pt,%
couleur=red,%
coeffs=3,%
couleurpoints=black,%
taillepoints=2pt,%
affpoints=false,%
- style=
+ style={}
}
\newcommand\splinetikz[1][]{%
@@ -190,11 +194,11 @@
}
\setKVdefault[tgte]{
- liste=,%
+ liste={},%
width=1.25pt,%
couleur=red,%
xl=0.5,xr=0.5,%
- style=,%
+ style={},%
point=1
}
@@ -923,8 +927,8 @@
\setKVdefault[kvensemble]{%
sep={;},%
- option=,%
- mathpunct=true
+ mathpunct=true,%
+ option={}
}
\newcommand\ensPL[2][1]{%
@@ -1762,7 +1766,7 @@
police=\normalsize\normalfont,%
labelx=$x$,%
labely=$y$,%
- afflabel=,%
+ afflabel=z,%
poslabelx=right,%
poslabely=above,%
echellefleche=1,%
@@ -2191,7 +2195,7 @@
{\def\BorneInf{0}}
{}
\ifthenelse{\equal{#4}{*}}%
- {\def\BorneSup{#4}}
+ {\def\BorneSup{#1}}
{}
\xintFloatToDecimal{\xintfloateval{add(binomial(#1,i)*#2^i*(1-#2)^(#1-i), i=\BorneInf..\BorneSup)}}
}
diff --git a/macros/latex/contrib/teubner/README b/macros/latex/contrib/teubner/README
index 065a7a3c92..d1b6912675 100644
--- a/macros/latex/contrib/teubner/README
+++ b/macros/latex/contrib/teubner/README
@@ -1,4 +1,5 @@
-This accompanies the teubner bundle version 5.x dated November 2020 or later.
+This README file accompanies the teubner bundle version 5.x dated
+November 2020 or later.
Copyright 2010-2022 Claudio Beccari
diff --git a/macros/latex/contrib/teubner/teubner-doc.pdf b/macros/latex/contrib/teubner/teubner-doc.pdf
index 1facc3adc6..b95983eb0c 100644
--- a/macros/latex/contrib/teubner/teubner-doc.pdf
+++ b/macros/latex/contrib/teubner/teubner-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/teubner/teubner-doc.tex b/macros/latex/contrib/teubner/teubner-doc.tex
index aed4713fcf..2fcc2b241d 100644
--- a/macros/latex/contrib/teubner/teubner-doc.tex
+++ b/macros/latex/contrib/teubner/teubner-doc.tex
@@ -46,7 +46,7 @@
An extension for Greek philology\\
User manual}
\author{Claudio Beccari\thanks{\texttt{claudio dot beccari at gmail dot com}}}
-\date{October 2022}% <---- this is the date of the teubenr-doc document!
+\date{October 2022}% <---- this is the date of the teubner-doc document!
\def\comando#1{\expandafter\texttt\expandafter{\string#1}}
\def\cs#1{\texttt{\char92#1}}
\def\ARG#1{\texttt{\char123}\meta{#1}\texttt{\char125}}
@@ -568,18 +568,6 @@ if you type \texttt{\comando\AtticNumeral\{1999\}} you get \textLipsias{\AtticNu
if you type \texttt{\comando\AtticNumeral\{55555\}} you get \textLipsias{\AtticNumeral{55555}}
\end{quote}
-\section{New commands}
-This package introduces many new commands for typesetting Greek in a philological way. Most such commands are collected in table~\ref{t:extcomandi}.
-
-A short remark on the command \comando\ap: this useful command inserts \emph{anything} as a superscript of anything else; it works both in text mode and in math mode\footnote{Numerical superscripts or apices do not require math mode; numerical footnote labels are automatically inserted by \LaTeX's \comando\footnote\ command; non numerical footnote labels are easily inserted with \LaTeX's \comando\footnotemark\ and \comando\footnotetext\ commands with their optional arguments.}. In particular while typesetting a philological text in different languages and with different alphabets, \comando\ap\ typesets the superscript with the current language and alphabet; if any change is required, the \comando\ap's argument can contain any language or alphabet specific declaration. You can typeset something such as \textLipsias{Baq\'ulides\,\ap{\textlatin{a}}} by switching language and alphabet as required; the specific declarations and the commands contained in table~\ref{t:extcomandi} come handy also in these cases.
-
-Please, read the \file{teubner.pdf} file for what concerns command \cs{LLadd}; it accepts two optional kerning values in order to adapt the internal spaces in accordance with the nature of the \meta{text} argument; with capital letters and/or sloping fonts, such kerning values may come handy for a perfect final result.
-Its new syntax is the following:
-\begin{quote}
-\cs{LLadd}\oarg{left kerning}\marg{text}\oarg{right kerning}
-\end{quote}
-where both kerning values imply a reduction of space if they are specified as positive values; use o font size units, such as \texttt{ex} or \texttt{em} are recommended, since they assure the automatic correct value even when changing font size.
-
\begin{table}[!p]\thrule
\let\c\comando
@@ -636,6 +624,18 @@ with the homonymous math command; this is now resolved. Thank you Ansten.\par}
\caption{Extended commands}\label{t:extcomandi}
\end{table}
+\section{New commands}
+This package introduces many new commands for typesetting Greek in a philological way. Most such commands are collected in table~\ref{t:extcomandi}.
+
+A short remark on the command \comando\ap: this useful command inserts \emph{anything} as a superscript of anything else; it works both in text mode and in math mode\footnote{Numerical superscripts or apices do not require math mode; numerical footnote labels are automatically inserted by \LaTeX's \comando\footnote\ command; non numerical footnote labels are easily inserted with \LaTeX's \comando\footnotemark\ and \comando\footnotetext\ commands with their optional arguments.}. In particular while typesetting a philological text in different languages and with different alphabets, \comando\ap\ typesets the superscript with the current language and alphabet; if any change is required, the \comando\ap's argument can contain any language or alphabet specific declaration. You can typeset something such as \textLipsias{Baq\'ulides\,\ap{\textlatin{a}}} by switching language and alphabet as required; the specific declarations and the commands contained in table~\ref{t:extcomandi} come handy also in these cases.
+
+Please, read the \file{teubner.pdf} file for what concerns command \cs{LLadd}; it accepts two \emph{optional} kerning values in order to adapt the internal spaces in accordance with the nature of the \meta{text} argument; with capital letters and/or sloping fonts, such kerning values may come handy for a perfect final result. Nevertheless a lot of attention was used to cope with such situations so as to avoid the above described corrections.
+Its new syntax is the following:
+\begin{quote}
+\cs{LLadd}\oarg{left kerning}\marg{text}\oarg{right kerning}
+\end{quote}
+where both kerning values imply a \emph{reduction} of space if they are specified as positive values; therefore if you specify negative values, the space is increased. Using of font size units, such as \texttt{ex} or \texttt{em} is recommended, since xuch units assure the automatic correct value even when changing font size.
+
\section{Metrics}
Philological writings often require the description of metrics;
diff --git a/macros/latex/contrib/teubner/teubner.dtx b/macros/latex/contrib/teubner/teubner.dtx
index 6a3e029252..bd656ecbda 100644
--- a/macros/latex/contrib/teubner/teubner.dtx
+++ b/macros/latex/contrib/teubner/teubner.dtx
@@ -43,7 +43,7 @@ See the end of the file.
%<package>\ProvidesPackage{teubner}[%
%<tbtx>\ProvidesPackage{teubnertx}[%
%<*driver,package,tbtx>
-2022/10/01 v.5.7.1
+2022/10/03 v.5.7.3
%<package>Extensions for Greek philology]
%<tbtx>Access to the LGR encoded Greek fonts that match the TX fonts]
%</driver,package,tbtx>
@@ -84,7 +84,7 @@ See the end of the file.
%</driver>
% \fi
%
-% \CheckSum{4190}
+% \CheckSum{4206}
% \begin{multicols}{2}\tableofcontents\end{multicols}
%
%
@@ -618,7 +618,9 @@ Type X <return> to exit.}%
\DeclareFontShape{U}{mtr}{m}{it}{<->ssub*mtr/m/n}{}%
\DeclareFontShape{U}{mtr}{b}{it}{<->ssub*mtr/m/n}{}%
\DeclareFontShape{U}{mtr}{bx}{n}{<->ssub*mtr/m/n}{}%
-\newcommand*\metricsfont{\fontencoding{U}\fontfamily{mtr}\normalshape}
+\DeclareRobustCommand*\metricsfont{%
+ \fontencoding{U}\fontfamily{mtr}\normalshape}
+\DeclareTextFontCommand{\textmtr}{\metricsfont}
% \end{macrocode}
% \end{macro} Next we require the package for extensible math fonts;
% it might be strange to use extensible math fonts in Greek philology,
@@ -1024,16 +1026,16 @@ Type X <return> to exit.}%
\ProvideDocumentEnvironment{GRL}{m}{}{}
\RenewDocumentEnvironment{GRL}{o}{\begin{otherlanguage*}{greek}%
-\@ifclassloaded{memoir}{\def\bfseries{\fontseries{bx}\selectfont}}{\relax}
-\@ifclassloaded{scrbook}{\def\bfseries{\fontseries{bx}\selectfont}}{\relax}
+\@ifclassloaded{memoir}{\def\bfseries{\fontseries{bx}\selectfont}}{\relax}%
+\@ifclassloaded{scrbook}{\def\bfseries{\fontseries{bx}\selectfont}}{\relax}%
\IfValueTF{#1}{\fontseries{#1}}{}%
- \fontshape{li}\selectfont}{\end{otherlanguage*}}
+ \fontshape{li}\selectfont}{\end{otherlanguage*}}%
\RenewDocumentEnvironment{GRD}{o}{\begin{otherlanguage*}{greek}%
-\@ifclassloaded{memoir}{\def\bfseries{\fontseries{bx}\selectfont}}{\relax}
-\@ifclassloaded{scrbook}{\def\bfseries{\fontseries{bx}\selectfont}}{\relax}
+\@ifclassloaded{memoir}{\def\bfseries{\fontseries{bx}\selectfont}}{\relax}%
+\@ifclassloaded{scrbook}{\def\bfseries{\fontseries{bx}\selectfont}}{\relax}%
\IfValueTF{#1}{\fontseries{#1}}{}%
- \fontshape{up}\selectfont}{\end{otherlanguage*}}
+ \fontshape{up}\selectfont}{\end{otherlanguage*}}%
}
% \end{macrocode}
%\end{environment}
@@ -1066,9 +1068,9 @@ Type X <return> to exit.}%
%\begin{macro}{\textui}
%\begin{macro}{\rsshape}
%\begin{macro}{\textrs}
-% The other switching font macros for using the other shapes that are available
-% with the CB fonts are working only when typesetting in Greek and the default
-% encoding is therefore LGR.
+% The other switching font macros for using the other shapes that are
+% available with the CB fonts are working only when typesetting in
+% Greek and the default encoding is therefore LGR.
% \begin{macrocode}
\DeclareRobustCommand\uishape{%
\ifthenelse{\equal{\f@encoding}{\GRenc@name}}%
@@ -2220,7 +2222,9 @@ Type X <return> to exit.}%
% designed as to be higher and deeper than the font total height, so as
% not to interfere with Greek accents and to accomodate for at least one
% level of nesting (for example square brackets enclosing lower part of
-% square brackets. The single glyphs may be used directly by the
+% square brackets.
+%
+% The single glyphs may be used directly by the
% typesetter, but we think that the commands requiring some text are
% far more useful. |\Ladd| and its double version |\LLadd| enclose text
% that should be added for sure. |\ladd| and its double version |\lladd|
@@ -2229,20 +2233,29 @@ Type X <return> to exit.}%
% with the lower part of open and closed square brackets. |\mqs| surrounds
% some text with the upper part of open and closed square brackets.
% See \texttt{teubenr-doc.pdf} for samples of such commands.
+%
% Command |\LLadd| has been modified since |teubner| previous version
-% because it contained a spurios space; in addition it has been
+% because it contained a spurious space; in addition it has been
% rewritten with the |\NewDocumentCommand| in \LaTeX\,3 language, so as
% to accept two optional kerning values so as to get the double square
-% brackets closer to the enclosed text; it syntax is now
+% brackets closer to the enclosed text; its syntax is now
%\begin{sintassi}
%\cs{LLadd}\oarg{left kerning}\marg{text}\oarg{right kerning}
%\end{sintassi}
-% Both kerning values are positive in order to get the square brackets
+% Both kerning values are positive in order to get the angle brackets
% closer to the text; this facility is especially useful with slanted
% text. In any case such kernings should be set only while reviewing the
% document draft. We suggest to use units of measure depending on the
-% font body (|ex| or |em|) so that if the body is changed the corrections
-% keep working properly.
+% font size (|ex| or |em|) so that if the size is changed the corrections
+% keep working properly. Some settings are already part of the code in
+% order to kern the angle brackets and the \meta{text} depending on the
+% font slant; but, when capital letters appear at the beginning or at
+% the end of the \meta{text} string, some small correction might be
+% necessary; similar small corrections might be different if the capital
+% is inscribed in a triangle, as A, T, Y, V, and the like; in substance
+% such small corrections might result necessary while reviewing the
+% document drafts, because they depend too much from the particular
+% \meta{text} string.
% \begin{macrocode}
\DeclareRobustCommand{\lbrk}{{\metricsfont\posthindspace[\negthinspace}}
\DeclareRobustCommand{\rbrk}{{\metricsfont]}}
@@ -2253,13 +2266,15 @@ Type X <return> to exit.}%
\DeclareRobustCommand\mqi[1]{\posthinspace\lmqi\negthinspace
{#1\/}\rmqi}\let\mezzeq\mqi
\DeclareRobustCommand\mqs[1]{\lmqs{#1\/}\rmqs}
-\DeclareRobustCommand{\Ladd}[1]{{\metricsfont<}{\!\!#1\/}%
- {\metricsfont>}}% litterae certe addendae
+\DeclareRobustCommand{\Ladd}[1]{%
+ \textmtr{<}{\!\!#1\/}\textmtr{>}}% litterae certe addendae
\providecommand\LLadd{}
-\RenewDocumentCommand{\LLadd}{O{0pt}m O{0pt}}{%
- {\metricsfont<\kern-0.3ex<\kern-0.3ex}{\kern-#1\relax#2\kern-#3}%
- {\metricsfont>\kern-0.3ex>}%
-}% litterae certe addendae
+\DeclareRobustCommand\LLaddKern[2]%
+ {\ifdim\fontdimen1\font=\z@\kern#1\else\kern#2\fi}
+\RenewDocumentCommand{\LLadd}{O{0pt} m O{0pt}}{% litterae certe addendae
+ \textmtr{<\kern-0.3ex<}{\LLaddKern{-0.1ex}{-0.3ex}%
+ \kern-#1\relax#2\/\LLaddKern{\z@}{0.1ex}\kern-#3}\textmtr{>\kern-0.3ex>}%
+}%
\DeclareRobustCommand{\ladd}[1]{{\metricsfont\kern.15ex[\negthinspace}%
{#1\/}{\metricsfont]\kern-.15ex}}% litterae addendae
\DeclareRobustCommand{\lladd}[1]{{\metricsfont\kern.15ex[\kern-.3ex[%
diff --git a/macros/latex/contrib/teubner/teubner.pdf b/macros/latex/contrib/teubner/teubner.pdf
index ab9ec25648..5368b72abe 100644
--- a/macros/latex/contrib/teubner/teubner.pdf
+++ b/macros/latex/contrib/teubner/teubner.pdf
Binary files differ
diff --git a/macros/latex/contrib/teubner/teubner.txt b/macros/latex/contrib/teubner/teubner.txt
index 5bbd82c191..788df7def9 100644
--- a/macros/latex/contrib/teubner/teubner.txt
+++ b/macros/latex/contrib/teubner/teubner.txt
@@ -1,5 +1,5 @@
- THE TEUBNER PACKAGE VERSION 5.7 OF OCTOBER 2022
+ THE TEUBNER PACKAGE VERSION 5.7.3 OF OCTOBER 2022
EXTENSION FOR PHILOLOGICAL TYPESETTING
@@ -39,7 +39,7 @@ through the packages txfonts and pxfonts, are already built in; the
compatibility with the Latin Modern fonts was already available with
version 2.x of this package.
-With the upgrade of the Greek support to babel through file greek.ldf
+With the upgrade of the Greek support for babel through file greek.ldf
version 1.10, teubner package versions previous to 5.0 became unable to
transform Arabic numerals into the classical Milesian and Attic number
representations. From version 5.0 the teubner package has been patched
@@ -74,22 +74,22 @@ specified the TX fonts by calling the txfonts package.
In order to use this extension package with LaTeX you have to install it.
May be the very installation of your (recent) TeX system distribution
already provided for this task; may be your TeX system is configured to
-load missing packages on the fly. In any case you can check and possibly
-run your Package Manager: with MiKTeX follow the path:
- Programs|MiKTeX Settings|Packages;
-with TeXlive and MacTeX (if their installation configuration was not
+load missing packages on the fly. In any case with MiKTeX you can check
+and possibly run your Package Manager: X follow the path:
+ Programs|MiKTeX Settings|Packages.
+With TeXlive and MacTeX (if their installation configuration was not
the default complete one) run tlmgr.
If you feel more comfortable to do everything by yourself and/or want to
make a personal installation, run teubner.dtx through pdflatex; the
generated files are teubner.sty and the aforementioned teubnertx.sty
file; they must be moved where TeX-the-program can find them. This
-depends very much on your particular implementation of the TeX system,
-but if your system copes with the TDS (standard TeX Directory Structure)
-and has a multiplicity of different TeX directory trees, you probably
-have a \localtexmf rooted TDS, or a /texmf one in your Home directory
+depends very much on your particular installation of the TeX system,
+but if your system copes with the TDS (standard TeX Directory Structure)
+and has a multiplicity of different TeX directory trees, you probably
+have a \localtexmf rooted TDS, or a /texmf one in your Home directory
containing a /tex directory tree which on turn contains a latex directory.
-Under the latter one create a new directory named, say, teubner, and
+Under the latter one create a new directory named, say, teubner, and
move to this folder the teubner.sty, and teubnertx.sty files.
I suggest to create a directory /teubner in the /doc directory of the
@@ -100,8 +100,7 @@ For what concerns fonts, they should already be installed with a recent
TeX system distribution; this means that there are already all the
files TeX-the-program needs in order to do its work; there is one
point, though, that requires full attention; the default *basic* TeX
-system installation loads only the PostScript fonts in size 10pt; all
-other sizes are obtained by reducing or enlarging that single size.
+system installation loads only the Type 1 fonts in size 10pt; all other sizes are obtained by reducing or enlarging that single size.
A *complete* TeX system installation does not exhibit this limitation.
There are also non standard scalable Type 1 fonts, such for example, the
Fourier ones, that come only in one size, the 10pt one; for these
diff --git a/macros/latex/contrib/to-be-determined/DEPENDS.txt b/macros/latex/contrib/to-be-determined/DEPENDS.txt
index ba363a7c9f..65d662e55e 100644
--- a/macros/latex/contrib/to-be-determined/DEPENDS.txt
+++ b/macros/latex/contrib/to-be-determined/DEPENDS.txt
@@ -1,3 +1,2 @@
-hard xkeyval
hard xcolor
-hard soul
+hard soul \ No newline at end of file
diff --git a/macros/latex/contrib/to-be-determined/LICENSE.txt b/macros/latex/contrib/to-be-determined/LICENSE.txt
new file mode 100644
index 0000000000..bd949ffdab
--- /dev/null
+++ b/macros/latex/contrib/to-be-determined/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/to-be-determined/README.md b/macros/latex/contrib/to-be-determined/README.md
index 26adf210da..5f8596eb58 100644
--- a/macros/latex/contrib/to-be-determined/README.md
+++ b/macros/latex/contrib/to-be-determined/README.md
@@ -1,4 +1,5 @@
-[![make](https://github.com/yegor256/to-be-determined/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/to-be-determined/actions/workflows/latexmk.yml)
+[![make](https://github.com/yegor256/to-be-determined/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/to-be-determined/actions/workflows/l3build.yml)
+[![CTAN](https://img.shields.io/ctan/v/to-be-determined)](https://ctan.org/pkg/to-be-determined)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/to-be-determined/blob/master/LICENSE.txt)
This LaTeX package helps you highlight pieces of your code that needs
diff --git a/macros/latex/contrib/to-be-determined/to-be-determined.dtx b/macros/latex/contrib/to-be-determined/to-be-determined.dtx
new file mode 100644
index 0000000000..030208ef00
--- /dev/null
+++ b/macros/latex/contrib/to-be-determined/to-be-determined.dtx
@@ -0,0 +1,166 @@
+% \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{to-be-determined.dtx}
+% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment}
+
+% \iffalse
+%<*driver>
+\ProvidesFile{to-be-determined.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{to-be-determined}
+%<*package>
+[03.10.2022 0.2.0 Highlighting places requiring future work]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[tt=false, type1=true]{libertine}
+\usepackage{microtype}
+\usepackage{to-be-determined}
+\usepackage{href-ul}
+\PageIndex
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{to-be-determined.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+
+% \title{|to-be-determined|: \LaTeX{} Package \\ for highlighting places that require more work\thanks{The sources are in GitHub at \href{https://github.com/yegor256/to-be-determined}{yegor256/to-be-determined}}}
+% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}}
+% \date{\filedate, \fileversion}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This package helps you highlight places in your articles
+% and make sure it looks nice. Install it from CTAN and then
+% use like this:
+
+% \begin{multicols}{2}
+% \setlength{\parskip}{0pt}
+% \raggedcolumns
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{to-be-determined}
+\begin{document}
+The budget is \tbd{99.00 USD}.
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+%
+% \columnbreak
+%
+% The budget is \tbd{99.00 USD}.
+%
+% \end{multicols}
+
+% \section{Package Options}
+
+% \begin{macro}{hide}
+% If you want to hide the content of what's inside |\tbd|,
+% use |hide| option of the package. They will all be replaced with
+% \tbd{TBD} placeholders.
+% \end{macro}
+
+% \begin{macro}{off}
+% If you want them to disappear entirely, use the |off| package option.
+% \end{macro}
+
+% \StopEventually{}
+
+% \section{Implementation}
+
+% \changes{v0.2.0}{2021/07/15}{Initial version}
+
+% First, we parse package options:
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+\makeatletter
+\newif\iftbd@hide
+\DeclareOptionX{hide}{\tbd@hidetrue}
+\newif\iftbd@off
+\DeclareOptionX{off}{\tbd@offtrue}
+\makeatother
+\ProcessOptionsX\relax
+% \end{macrocode}
+
+% Then, we include a few packages:
+% \begin{macrocode}
+\RequirePackage{xcolor}
+\RequirePackage{soul}
+% \end{macrocode}
+
+% \begin{macro}{\tbd}
+% Finally, we define the |\tbd| command:
+% \begin{macrocode}
+\makeatletter\newcommand\tbd[1]{{%
+ \iftbd@off\else%
+ \sethlcolor{yellow}%
+ \iftbd@hide%
+ \hl{TBD}%
+ \else%
+ \hl{#1}%
+ \fi%
+ \fi%
+}}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \Finale
+
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
diff --git a/macros/latex/contrib/to-be-determined/to-be-determined.ins b/macros/latex/contrib/to-be-determined/to-be-determined.ins
new file mode 100644
index 0000000000..c228470fb3
--- /dev/null
+++ b/macros/latex/contrib/to-be-determined/to-be-determined.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/to-be-determined}
+\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{to-be-determined.sty}{\from{to-be-determined.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/to-be-determined/to-be-determined.pdf b/macros/latex/contrib/to-be-determined/to-be-determined.pdf
index b62c65762d..83ad44bee3 100644
--- a/macros/latex/contrib/to-be-determined/to-be-determined.pdf
+++ b/macros/latex/contrib/to-be-determined/to-be-determined.pdf
Binary files differ
diff --git a/macros/latex/contrib/to-be-determined/to-be-determined.sty b/macros/latex/contrib/to-be-determined/to-be-determined.sty
deleted file mode 100644
index b5e343b1cd..0000000000
--- a/macros/latex/contrib/to-be-determined/to-be-determined.sty
+++ /dev/null
@@ -1,49 +0,0 @@
-% (The MIT License)
-%
-% Copyright (c) 2021 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.
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{to-be-determined}[2021/09/22 0.1.2 Highlighting places requiring future work]
-
-\RequirePackage{xkeyval}
-\makeatletter
-\newif\iftbd@hide
-\DeclareOptionX{hide}{\tbd@hidetrue}
-\newif\iftbd@off
-\DeclareOptionX{off}{\tbd@offtrue}
-\makeatother
-\ProcessOptionsX\relax
-
-\RequirePackage{xcolor}
-\RequirePackage{soul}
-
-\makeatletter\newcommand\tbd[1]{{%
- \iftbd@off\else%
- \sethlcolor{yellow}%
- \iftbd@hide%
- \hl{TBD}%
- \else%
- \hl{#1}%
- \fi%
- \fi%
-}}\makeatother
-
-\endinput
diff --git a/macros/latex/contrib/to-be-determined/to-be-determined.tex b/macros/latex/contrib/to-be-determined/to-be-determined.tex
deleted file mode 100644
index 9f787004e9..0000000000
--- a/macros/latex/contrib/to-be-determined/to-be-determined.tex
+++ /dev/null
@@ -1,70 +0,0 @@
-% (The MIT License)
-%
-% Copyright (c) 2021 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.
-
-\documentclass[12pt]{article}
-\usepackage[tt=false,type1=true]{libertine}
-\usepackage{multicol}
-\usepackage{to-be-determined}
-\usepackage{ffcode}
-\title{\ff{to-be-determined}: \LaTeX{} Package \\ for highlighting places that require more work}
-\author{Yegor Bugayenko}
-\date{0.1.2 2021/09/22}
-\begin{document}
-\pagenumbering{gobble}
-\raggedbottom
-\setlength{\parindent}{0pt}
-\setlength{\columnsep}{32pt}
-\setlength{\parskip}{6pt}
-\maketitle
-
-This package helps you highlight places in your articles
-and make sure it looks nice. Install it from CTAN and then
-use like this:
-
-\begin{multicols}{2}
-\setlength{\parskip}{0pt}
-\scriptsize
-\raggedcolumns
-\begin{verbatim}
-\documentclass{article}
-\usepackage{to-be-determined}
-\begin{document}
-The budget is \tbd{99.00 USD}.
-\end{document}
-\end{verbatim}
-
-\columnbreak
-
-The budget is \tbd{99.00 USD}.
-
-\end{multicols}
-
-If you want to hide the content of what's inside \ff{\char`\\tbd},
-use \ff{hide} option of the package. They will all be replaced with
-\tbd{TBD} placeholders.
-
-If you want them to disappear entirely, use the \ff{off} package option.
-
-More details about this package you find
-in the \ff{yegor256/to-be-determined} GitHub repository.
-
-\end{document} \ No newline at end of file