summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-07-04 03:02:41 +0000
committerNorbert Preining <norbert@preining.info>2020-07-04 03:02:41 +0000
commitce9d7362aa8813c6cea1e0fe6974561f28a103a5 (patch)
treeca629fc25eb82851ec99ec6119f47ed425c915c0 /macros
parent925eebea568c77dab877e87724fe7b001b3b5e7f (diff)
CTAN sync 202007040302
Diffstat (limited to 'macros')
-rw-r--r--macros/generic/expkv-opt/README.md29
-rw-r--r--macros/generic/expkv-opt/expkv-opt.dtx944
-rw-r--r--macros/generic/expkv-opt/expkv-opt.pdfbin0 -> 260968 bytes
-rw-r--r--macros/latex/contrib/GuIT/GuITlogo/README7
-rw-r--r--macros/latex/contrib/GuIT/GuITlogo/guit.dtx16
-rw-r--r--macros/latex/contrib/GuIT/GuITlogo/guit.ins6
-rw-r--r--macros/latex/contrib/GuIT/GuITlogo/guit.pdfbin316929 -> 316428 bytes
-rw-r--r--macros/latex/contrib/GuIT/GuITlogo/guittest.pdfbin161459 -> 161156 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb-doc.pdfbin153907 -> 153909 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb-doc.tex6
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb.dtx32
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb.pdfbin325661 -> 326852 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamerthemenord/README.md15
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamercolorthemeNord.sty65
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerfontthemeNord.sty32
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.pdfbin0 -> 65079 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.sty81
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.tex135
18 files changed, 1345 insertions, 23 deletions
diff --git a/macros/generic/expkv-opt/README.md b/macros/generic/expkv-opt/README.md
new file mode 100644
index 0000000000..762484ed12
--- /dev/null
+++ b/macros/generic/expkv-opt/README.md
@@ -0,0 +1,29 @@
+-------------------------------------------------------------------------------
+# expkv-opt -- parse class and package options with expkv
+
+Version 2020-07-02 v0.1
+
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+
+Hosted at https://github.com/Skillmon/tex_expkv-opt
+
+-------------------------------------------------------------------------------
+
+Copyright (C) 2020 Jonathan P. Spratte
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), either version 1.3c of this license or
+(at your option) any later version. The latest version of this license is in
+the file:
+
+ http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status) by
+ Jonathan P. Spratte.
+
+-------------------------------------------------------------------------------
+
+This package allows to parse key=val options for LaTeX classes and packages
+using [`expkv`](https://github.com/Skillmon/tex_expkv). It handles global and
+local options completely separately. The only required package is `expkv`.
diff --git a/macros/generic/expkv-opt/expkv-opt.dtx b/macros/generic/expkv-opt/expkv-opt.dtx
new file mode 100644
index 0000000000..d65c194f33
--- /dev/null
+++ b/macros/generic/expkv-opt/expkv-opt.dtx
@@ -0,0 +1,944 @@
+% \iffalse meta-comment
+%
+% File: expkv-opt.dtx Copyright (C) 2020 Jonathan P. Spratte
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this license or
+% (at your option) any later version. The latest version of this license is in
+% the file:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% ------------------------------------------------------------------------------
+%
+%<*driver>^^A>>=
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+\input l3docstrip.tex
+\askforoverwritefalse
+\preamble
+
+--------------------------------------------------------------
+expkv-opt -- parse class and package options with expkv
+E-mail: jspratte@yahoo.de
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+--------------------------------------------------------------
+
+Copyright (C) 2020 Jonathan P. Spratte
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), either version 1.3c of this license or
+(at your option) any later version. The latest version of this license is in
+the file:
+
+ http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status) by
+ Jonathan P. Spratte.
+
+This work consists of the file expkv-opt.dtx
+and the derived files expkv-opt.pdf
+ expkv-opt.sty
+
+\endpreamble
+% stop docstrip adding \endinput
+\postamble
+\endpostamble
+\generate{\file{expkv-opt.sty}{\from{expkv-opt.dtx}{pkg}}}
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile
+\else
+ \expandafter\endgroup
+\fi
+%
+\IfFileExists{expkv-opt.sty}{\RequirePackage{expkv-opt}}{}
+\ProvidesFile{expkv-opt.dtx}
+ [\csname ekvoDate\endcsname\ parse class and package options with expkv]
+\PassOptionsToPackage{full}{textcomp}
+\documentclass{l3doc}
+\RequirePackage[oldstylenums,nott]{kpfonts}
+\input{glyphtounicode}
+\pdfgentounicode=1
+\RequirePackage{listings}
+\RequirePackage{booktabs}
+\RequirePackage{array}
+\RequirePackage{collcell}
+\RequirePackage{siunitx}
+\RequirePackage{xcolor}
+\RequirePackage{caption}
+\RequirePackage{microtype}
+\RequirePackage{accsupp}
+\lstset
+ {
+ ,flexiblecolumns=false
+ ,basewidth=.53em
+ ,gobble=2
+ ,basicstyle=\fontfamily{jkp}\itshape
+ ,morekeywords=^^A
+ {^^A
+ \ekvoProcessLocalOptions,
+ \ekvoProcessGlobalOptions,
+ \ekvoProcessUnusedGlobalOptions,
+ \ekvoProcessOptionsList,
+ \ekvoUseUnknownHandlers
+ }
+ ,morecomment=[l]\%
+ ,commentstyle=\color[gray]{0.4}
+ ,literate={\{}{{\CodeSymbol\{}}{1}
+ {\}}{{\CodeSymbol\}}}{1}
+ ^^A,literate=*{<key>}{\key}{4}{<set>}{\set}{4}
+ }
+\newcommand*\CodeSymbol[1]{\textbf{#1}}
+\RequirePackage{randtext}
+\let\metaORIG\meta
+\protected\def\meta #1{\texttt{\metaORIG{#1}}}
+\renewcommand*\thefootnote{\fnsymbol{footnote}}
+\definecolor{expkvred}{HTML}{9F393D}
+\colorlet{expkvgrey}{black!75}
+\makeatletter
+\newcommand*\expkv
+ {^^A
+ \texorpdfstring
+ {^^A
+ \mbox
+ {^^A
+ \BeginAccSupp{ActualText=expkv}^^A
+ \href{https://github.com/Skillmon/tex_expkv}
+ {^^A
+ \rmfamily
+ \bfseries
+ {\color{expkvgrey}e\kern-.05em x\kern-.05em}^^A
+ \lower.493ex
+ \hbox{{\color{expkvgrey}P}\kern-.1em{\color{expkvred}k}}^^A
+ \kern-.18em{\color{expkvred}v}^^A
+ }^^A
+ \EndAccSupp{}^^A
+ }^^A
+ }
+ {expkv}^^A
+ }
+\newcommand*\expkvpkg[1]
+ {^^A
+ \texorpdfstring
+ {^^A
+ \mbox
+ {^^A
+ \BeginAccSupp{ActualText=expkv-#1}^^A
+ \href{https://github.com/Skillmon/tex_expkv-#1}
+ {^^A
+ \rmfamily
+ \bfseries
+ {\color{expkvgrey}e\kern-.05em x\kern-.05em}^^A
+ \lower.493ex
+ \hbox{{\color{expkvgrey}P}\kern-.1em{\color{expkvred}k}}^^A
+ \kern-.18em{\color{expkvred}v}^^A
+ {\color{expkvgrey}^^A
+ \kern.05em\rule[-.1ex]{.08em}{1.2ex}\kern.05em\textsc{#1}^^A
+ }^^A
+ }^^A
+ \EndAccSupp{}^^A
+ }^^A
+ }
+ {expkv-#1}^^A
+ }
+\newcommand*\expkvd{\expkvpkg{def}}
+\newcommand*\expkvc{\expkvpkg{cs}}
+\newcommand*\expkvo{\expkvpkg{opt}}
+\newcommand\kv{\meta{key}=\meta{value}}
+\newcommand\key{\meta{key}}
+\newcommand\val{\meta{value}}
+\newcommand\set{\meta{set}}
+\newcommand\enfprot{\textcolor{black}{protected}}
+\newcommand\allprot{\textcolor{gray}{protected}}
+\newcommand\notprot{\textcolor{red!80!black}{protected}}
+\newcommand\enflong{\textcolor{black}{long}}
+\newcommand\alllong{\textcolor{gray}{long}}
+\newcommand\notlong{\textcolor{red!80!black}{long}}
+\newcommand\prefixes[2]
+ {^^A
+ \hfill
+ \ifcase\numexpr#1\relax\or
+ \enfprot\or
+ \allprot\or
+ \notprot\fi\space
+ \ifcase\numexpr#2\relax\or
+ \enflong\or
+ \alllong\or
+ \notlong\fi
+ }
+\hypersetup{linkcolor=red!80!black,urlcolor=purple!80!black}
+\DoNotIndex{\def,\edef,\,,\=,\begingroup,\catcode,\chardef,\csname,\endcsname}
+\DoNotIndex{\endgroup,\endinput,\errmessage,\expandafter,\input,\let,\long}
+\DoNotIndex{\protected,\ProvidesFile,\ProvidesPackage,\relax,\space}
+\DoNotIndex{\@,\unexpanded,\string,\expanded,\dimexpr,\global,\glueexpr,\hbox}
+\DoNotIndex{\numexpr,\RequirePackage,\setbox,\the,\unless,\xdef,\@firstofone}
+\DoNotIndex{\@firstoftwo,\@gobble,\@secondoftwo,\AtEndOfPackage,\newcommand}
+\DoNotIndex{\PackageError,\@classoptionslist,\@clsextension,\@currext}
+\DoNotIndex{\@currname,\@empty,\@gobbletwo,\@onlypreamble,\@unprocessedoptions}
+\DoNotIndex{\@unusedoptionlist}
+\DoNotIndex{\ifcsname}
+\DoNotIndex{\ifx}
+\DoNotIndex{\ifdefined}
+\DoNotIndex{\iffalse}
+\DoNotIndex{\iftrue}
+\DoNotIndex{\else}
+\DoNotIndex{\fi}
+\@gobble\fi ^^A ignoring \ifx, \ifcsname, etc., but only one \fi
+\@gobble\fi ^^A ignoring \ifx, \ifcsname, etc., but only one \fi
+\@gobble\fi ^^A ignoring \ifx, \ifcsname, etc., but only one \fi
+\@gobble\fi ^^A ignoring \ifx, \ifcsname, etc., but only one \fi
+\@ifdefinable\gobbledocstriptag{\def\gobbledocstriptag#1>{}}
+\makeatother
+\begin{document}
+ \title
+ {^^A
+ \texorpdfstring
+ {^^A
+ \huge\expkvo
+ \\[\medskipamount]
+ \Large parse class and package options with \expkv
+ }{expkv-opt - parse class and package options with expkv}^^A
+ }
+ \date{\ekvoDate\space v\ekvoVersion}
+ \author{Jonathan P. Spratte\thanks{\protect\randomize{jspratte@yahoo.de}}}
+ \DocInput{expkv-opt.dtx}
+\end{document}
+%</driver>^^A=<<
+% \fi
+%
+% \maketitle
+% \renewcommand*\thefootnote{\arabic{footnote}}
+%
+% \begin{abstract}
+% \noindent\parfillskip=0pt
+% \expkvo\ provides option parsing for classes and packages in \LaTeXe\ based on
+% \expkv. Global and local options are parsed individually by different
+% commands. The stylised name is \expkvo\ but the files use \file{expkv-opt},
+% this is due to CTAN-rules which don't allow \string| in package names since
+% that is the pipe symbol in *nix shells.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \begin{documentation}^^A>>=
+%
+% \section{Documentation}
+%
+% The \expkv\ family provides at its core a \kv\ parser and additionally
+% packages, one to conveniently define new keys (\expkvd) and another to build
+% expandable \kv\ taking control sequences (\expkvc). Still missing from the mix
+% was a solution to parse \LaTeXe\ class and package options, a gap that's
+% hereby filled with \expkvo.
+%
+% \expkvo\ shouldn't place any restrictions on the keys, but note that parts of
+% \LaTeXe\ can break if the \kv\ list contains braces. This includes the global
+% options list depending on which class you're using. Also keep in mind that
+% every value provided should be save from an |\edef| expansion, as the space
+% stripping code of \LaTeXe\ options (which is applied before \expkvo\ takes
+% control) uses such an expansion.
+%
+% The package can be loaded with
+% \begin{lstlisting}
+% \usepackage{expkv-opt}
+% \end{lstlisting}
+% Unlike the other packages in the \expkv\ family, \expkvo\ is only provided as
+% a \LaTeX\ package.
+%
+% Before reading this documentation you should read \expkv's documentation and
+% might want to also read the documentation of \expkvd.
+%
+%
+% \subsection{Macros}
+%
+% \expkvo's behaviour if it encounters a defined or an undefined \key\ depends
+% on which list is being parsed and whether the current file is a class or not.
+% Of course in every case a defined \key's callback will be invoked but an
+% additional action might be executed. For this reason the rule set of every
+% macro will be given below the short description which list it will parse.
+%
+% During each of the processing macros the current list element (not separated
+% in \key\ and \val\ but as a whole) is stored within the macro
+% \cs{CurrentOption}.
+%
+% \begin{function}{\ekvoProcessLocalOptions}
+% \begin{syntax}
+% \cs{ekvoProcessLocalOptions}\marg{set}
+% \end{syntax}
+% This parses the options which are directly passed to the current class or
+% package for an \expkv\ \set.
+% \end{function}
+% \begin{description}
+% \item[Class:]
+% \begin{description}
+% \item[defined] \emph{nothing}
+% \item[undefined]
+% add the key to the list of unused global options (if the local option
+% list matches the option list of the main class)
+% \end{description}
+% \item[Package:]
+% \begin{description}
+% \item[defined] \emph{nothing}
+% \item[undefined] throw an error
+% \end{description}
+% \end{description}
+%
+% \begin{function}{\ekvoProcessGlobalOptions}
+% \begin{syntax}
+% \cs{ekvoProcessGlobalOptions}\marg{set}
+% \end{syntax}
+% In \LaTeXe\ the options given to |\documentclass| are global options. This
+% macro processes the global options for an \expkv\ \set.
+% \end{function}
+% \begin{description}
+% \item[Class:]
+% \begin{description}
+% \item[defined] remove the option from the list of unused global options
+% \item[undefined] \emph{nothing}
+% \end{description}
+% \item[Package:]
+% \begin{description}
+% \item[defined] remove the option from the list of unused global options
+% \item[undefined] \emph{nothing}
+% \end{description}
+% \end{description}
+%
+% \begin{function}{\ekvoProcessUnusedGlobalOptions}
+% \begin{syntax}
+% \cs{ekvoProcessUnusedGlobalOptions}\marg{set}
+% \end{syntax}
+% If you want to, instead of parsing all global options, you can parse only
+% those global options which weren't yet used by another package or class.
+% \end{function}
+% \begin{description}
+% \item[Class:]
+% \begin{description}
+% \item[defined] remove the option from the list of unused global options
+% \item[undefined] \emph{nothing}
+% \end{description}
+% \item[Package:]
+% \begin{description}
+% \item[defined] remove the option from the list of unused global options
+% \item[undefined] \emph{nothing}
+% \end{description}
+% \end{description}
+%
+% \begin{function}{\ekvoProcessOptionsList}
+% \begin{syntax}
+% \cs{ekvoProcessOptionsList}\meta{list}\marg{set}
+% \end{syntax}
+% Process the \kv\ list stored in the macro \meta{list}.
+% \end{function}
+% \begin{description}
+% \item[Class:]
+% \begin{description}
+% \item[defined] \emph{nothing}
+% \item[undefined] \emph{nothing}
+% \end{description}
+% \item[Package:]
+% \begin{description}
+% \item[defined] \emph{nothing}
+% \item[undefined] \emph{nothing}
+% \end{description}
+% \end{description}
+%
+% \begin{function}{\ekvoUseUnknownHandlers}
+% \begin{syntax}
+% \cs{ekvoUseUnknownHandlers}\meta{cs_1}\meta{cs_2}
+% \end{syntax}
+% With this macro you can change the action \expkvo\ executes if it encounters
+% an undefined \key\ for the next (and only the next) list processing macro.
+% The macro \meta{cs_1} will be called if an undefined \key\ without a \val\
+% is encountered and get one argument, being the \key. Analogous the macro
+% \meta{cs_2} will be called if an undefined \key\ with a \val\ was specified.
+% It will get two arguments, the first being the \key\ and the second the
+% \val.
+% \end{function}
+%
+% \begin{function}{\ekvoVersion,\ekvoDate}
+% These two macros store the version and date of the package.
+% \end{function}
+%
+%
+% \subsection{Example}
+%
+% Let's say we want to create a package that changes the way footnotes are
+% displayed in \LaTeX. For this it will essentially just redefine
+% \cs[no-index]{thefootnote} and we'll call this package \pkg{ex-footnote}.
+% First we report back which package we are:
+% \begin{lstlisting}
+% \ProvidesPackage{ex-footnote}[2020-02-02 v1 change footnotes]
+% \end{lstlisting}
+% Next we'll need to provide the options we want the package to have.
+% \begin{lstlisting}
+% \RequirePackage{color}
+% \RequirePackage{expkv-opt} % also loads expkv
+% \ekvdef{ex-footnote}{color}{\def\exfn@color{#1}}
+% \ekvdef{ex-footnote}{format}{\def\exfn@format{#1}}
+% \end{lstlisting}
+% We can provide initial values just by defining the two macros storing the
+% value.
+% \begin{lstlisting}
+% \newcommand*\exfn@color{}
+% \newcommand*\exfn@format{arabic}
+% \end{lstlisting}
+% Next we need to process the options given to the package. The package should
+% only obey options directly passed to it, so we're only using
+% |\ekvoProcessLocalOptions|:
+% \begin{lstlisting}
+% \ekvoProcessLocalOptions{ex-footnote}
+% \end{lstlisting}
+% Now everything that's still missing is actually changing the way footnotes
+% appear:
+% \begin{lstlisting}
+% \renewcommand*\thefootnote
+% {%
+% \ifx\exfn@color\@empty
+% \csname\exfn@format\endcsname{footnote}%
+% \else
+% \textcolor{\exfn@color}{\csname\exfn@format\endcsname{footnote}}%
+% \fi
+% }
+% \end{lstlisting}
+% \bigskip
+%
+% \noindent
+% So the complete code of the package would look like this:
+% \begin{lstlisting}
+% \ProvidesPackage{ex-footnote}[2020-02-02 v1 change footnotes]
+%
+% \RequirePackage{color}
+% \RequirePackage{expkv-opt} % also loads expkv
+%
+% \ekvdef{ex-footnote}{color}{\def\exfn@color{#1}}
+% \ekvdef{ex-footnote}{format}{\def\exfn@format{#1}}
+% \newcommand*\exfn@color{}
+% \newcommand*\exfn@format{arabic}
+%
+% \ekvoProcessLocalOptions{ex-footnote}
+%
+% \renewcommand*\thefootnote
+% {%
+% \ifx\exfn@color\@empty
+% \csname\exfn@format\endcsname{footnote}%
+% \else
+% \textcolor{\exfn@color}{\csname\exfn@format\endcsname{footnote}}%
+% \fi
+% }
+% \end{lstlisting}
+% \bigskip
+%
+% \noindent
+% And it could be used with one of the following lines:
+% \begin{lstlisting}
+% \usepackage{ex-footnote}
+% \usepackage[format=fnsymbol]{ex-footnote}
+% \usepackage[color=green]{ex-footnote}
+% \usepackage[color=red,format=roman]{ex-footnote}
+% \end{lstlisting}
+%
+%
+% \subsection{Bugs}
+%
+% If you happen to find bugs, it'd be great if you let me know. Just write me an
+% email (see the front page) or submit a bug report on GitHub:
+% \url{https://github.com/Skillmon/tex_expkv-opt}
+%
+%
+% \subsection{License}
+%
+% Copyright \textcopyright\ 2020\unless\ifnum\year=2020--\the\year\fi\
+% Jonathan P. Spratte
+%
+% \medskip\noindent
+% This work may be distributed and/or modified under the conditions of the
+% \LaTeX\ Project Public License (LPPL), either version 1.3c of this license or
+% (at your option) any later version. The latest version of this license is in
+% the file:
+%
+% \url{http://www.latex-project.org/lppl.txt}
+%
+% \noindent
+% This work is ``maintained'' (as per LPPL maintenance status) by
+%
+% \mbox{Jonathan P. Spratte}.
+%
+% \end{documentation}^^A=<<
+%
+% \begin{implementation}^^A>>=
+%
+% \clearpage
+%
+%
+% \section{Implementation}
+%
+% \gobbledocstriptag
+%<*pkg>
+% Start the package with the typical \LaTeX\ standards.
+%
+% \begin{macro}{\ekvoVersion,\ekvoDate}
+% Store the packages version and date in two macros.
+% \begin{macrocode}
+\newcommand*\ekvoVersion{0.1}
+\newcommand*\ekvoDate{2020-07-02}
+% \end{macrocode}
+% \end{macro}
+% And we report who we are and what we need.
+% \begin{macrocode}
+\ProvidesPackage{expkv-opt}
+ [%
+ \ekvoDate\space v\ekvoVersion\space
+ parse class and package options with expkv%
+ ]
+\RequirePackage{expkv}
+% \end{macrocode}
+%
+%
+% \subsection{Loop}
+%
+% \begin{macro}[internal]
+% {\ekvo@CurrentOption@loop,\ekvo@CurrentOption@loop@,\ekvo@end@loop}
+% We'll need some loop which can iterate over a comma separated list. The loop
+% is very basic and only works for commas of category~12. First we insert the
+% delimiters for the actual loop.
+% \begin{macrocode}
+\protected\long\def\ekvo@CurrentOption@loop#1#2%
+ {%
+ \ekvo@CurrentOption@loop@#2\ekv@mark#1,\ekv@stop,\ekvo@tail
+ }
+% \end{macrocode}
+% The actual loop checks whether the final element has been read and if so
+% ends the loop. Else blank elements are ignored, |\CurrentOption| is set and
+% the macro which parses the list elements called. Then call the next
+% iteration.
+% \begin{macrocode}
+\long\def\ekvo@CurrentOption@loop@#1#2,%
+ {%
+ \ekv@gobble@from@mark@to@stop#2\ekvo@end@loop\ekv@stop
+ \ekv@ifblank{#2}%
+ {}%
+ {%
+ \edef\CurrentOption{\unexpanded\expandafter{\@gobble#2}}%
+ #1{#2}%
+ }%
+ \ekvo@CurrentOption@loop@#1\ekv@mark
+ }
+\long\def\ekvo@end@loop#1\ekvo@tail{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Tests}
+%
+% \begin{macro}[internal]{\ekvo@fi@firstoftwo,\ekvo@fi@gobble}
+% These two macros are just fast branching macros.
+% \begin{macrocode}
+\long\def\ekvo@fi@firstoftwo\fi\@secondoftwo#1#2{\fi#1}
+\long\def\ekvo@fi@gobble\fi\@firstofone#1{\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\ekvo@ifx@TF,\ekvo@ifx@F}
+% We'll need branching |\ifx| tests so that user input containing unbalanced
+% \TeX\ ifs doesn't break (at least not because of us, everything else is the
+% fault of \LaTeXe).
+% \begin{macrocode}
+\def\ekvo@ifx@TF#1#2{\ifx#1#2\ekvo@fi@firstoftwo\fi\@secondoftwo}
+\def\ekvo@ifx@F#1#2{\ifx#1#2\ekvo@fi@gobble\fi\@firstofone}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\ekvo@do@with@set,\ekvo@name,\ekvo@setname}
+% This test checks whether the \set\ is defined. If it is we store it in
+% |\ekvo@setname| and set |\ekvo@name| to a short cut to get the \key's
+% callback name. Next we execute the code in |#2|, if the \set\ isn't defined
+% |#2| is gobbled.
+% \begin{macrocode}
+\protected\def\ekvo@do@with@set#1#2%
+ {%
+ \ekv@ifdefined{\ekv@undefined@set{#1}}%
+ {%
+ \expandafter
+ \let\expandafter\ekvo@name\csname\ekv@undefined@set{#1}\endcsname
+ \def\ekvo@setname{#1}%
+ #2%
+ }%
+ {\ekvo@err@undefined@set{#1}}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Key handlers}
+%
+% \expkvo\ uses handlers specifying what happens if a parsed \key\ is defined or
+% undefined.
+%
+% \begin{macro}[internal]
+% {\ekvo@handle@undefined@k@pkg,\ekvo@handle@undefined@kv@pkg}
+% The case for undefined keys in a local list of a package is easy, just throw
+% appropriate errors.
+% \begin{macrocode}
+\protected\long\def\ekvo@handle@undefined@k@pkg#1%
+ {%
+ \ekv@ifdefined{\ekvo@name{#1}}%
+ {\ekvo@err@value@required{#1}}%
+ {\ekvo@err@undefined@key{#1}}%
+ }
+\def\ekvo@handle@undefined@kv@pkg#1#2%
+ {%
+ \ekv@ifdefined{\ekvo@name{#1}N}%
+ {\ekvo@err@value@forbidden{#1}}%
+ {\ekvo@err@undefined@key{#1}}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]
+% {
+% \ekvo@addto@unused@one,\ekvo@addto@unused@two,
+% \ekvo@rmfrom@unused@one,\ekvo@rmfrom@unused@two
+% }
+% These macros will add or remove the |\CurrentOption| to or from the list of
+% unused global options.
+% \begin{macrocode}
+\long\def\ekvo@addto@unused@one#1{\ekvo@addto@list\@unusedoptionlist}
+\long\def\ekvo@addto@unused@two#1#2{\ekvo@addto@list\@unusedoptionlist}
+\long\def\ekvo@rmfrom@unused@one#1{\ekvo@rmfrom@list\@unusedoptionlist}
+\long\def\ekvo@rmfrom@unused@two#1#2{\ekvo@rmfrom@list\@unusedoptionlist}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]
+% {
+% \ekvo@set@handlers@local,\ekvo@set@handlers@global,
+% \ekvo@set@handlers@unusedglobal,\ekvo@set@handlers@list
+% }
+% These macros are boring. They just set up the handlers to respect the rules
+% documented earlier.
+% \begin{macrocode}
+\protected\def\ekvo@set@handlers@local
+ {%
+ \ekvo@if@need@handlers
+ {%
+ \ifx\@currext\@clsextension
+ \ifx\@classoptionslist\relax
+ \let\ekvo@handle@undefined@k\@gobble
+ \let\ekvo@handle@undefined@kv\@gobbletwo
+ \else
+ \expandafter
+ \ifx\csname opt@\@currname.\@currext\endcsname\@classoptionslist
+ \let\ekvo@handle@undefined@k\ekvo@addto@unused@one
+ \let\ekvo@handle@undefined@kv\ekvo@addto@unused@two
+ \else
+ \let\ekvo@handle@undefined@k\@gobble
+ \let\ekvo@handle@undefined@kv\@gobbletwo
+ \fi
+ \fi
+ \else
+ \let\ekvo@handle@undefined@k\ekvo@handle@undefined@k@pkg
+ \let\ekvo@handle@undefined@kv\ekvo@handle@undefined@kv@pkg
+ \fi
+ }%
+ }
+\protected\def\ekvo@set@handlers@global
+ {%
+ \unless\ifx\@unusedoptionlist\@empty
+ \let\ekvo@handle@defined@k\ekvo@rmfrom@unused@one
+ \let\ekvo@handle@defined@kv\ekvo@rmfrom@unused@two
+ \fi
+ \ekvo@if@need@handlers
+ {%
+ \let\ekvo@handle@undefined@k\@gobble
+ \let\ekvo@handle@undefined@kv\@gobbletwo
+ }%
+ }
+\protected\def\ekvo@set@handlers@unusedglobal
+ {%
+ \ekvo@if@need@handlers
+ {%
+ \let\ekvo@handle@undefined@k\ekvo@addto@unused@one
+ \let\ekvo@handle@undefined@kv\ekvo@addto@unused@two
+ \let\@unusedoptionlist\@empty
+ \@gobbletwo
+ }%
+ \@firstofone
+ {%
+ \let\ekvo@handle@defined@k\ekvo@rmfrom@unused@one
+ \let\ekvo@handle@defined@kv\ekvo@rmfrom@unused@two
+ }%
+ }
+\protected\def\ekvo@set@handlers@list
+ {%
+ \ekvo@if@need@handlers
+ {%
+ \let\ekvo@handle@undefined@k\@gobble
+ \let\ekvo@handle@undefined@kv\@gobbletwo
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\ekvo@if@need@handlers,\ekvo@dont@need@handlers}
+% If the user specifies handlers this macro will be let to
+% |\ekvo@dont@need@handlers|, which will act like |\@gobble| and also let it
+% to |\@firstofone| afterwards.
+% \begin{macrocode}
+\let\ekvo@if@need@handlers\@firstofone
+\protected\long\def\ekvo@dont@need@handlers#1%
+ {%
+ \let\ekvo@if@need@handlers\@firstofone
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% We have to set the default for the handlers of defined keys, because they
+% don't necessarily get defined before a list is parsed.
+% \begin{macrocode}
+\let\ekvo@handle@defined@k\@gobble
+\let\ekvo@handle@defined@kv\@gobbletwo
+% \end{macrocode}
+%
+%
+% \subsection{Processing list elements}
+%
+% \begin{macro}[internal]{\ekvo@process@common}
+% All the key processing frontend macros use the same basic structure. |#1|
+% will be a simple test, deciding whether the list will really be parsed or
+% not, |#3| will be the \set, and |#2| will be the individual code of the
+% frontend macro which should be executed if both the test in |#1| is true and
+% the \set\ is defined.
+% \begin{macrocode}
+\protected\def\ekvo@process@common#1#2#3%
+ {%
+ #1{\ekvo@do@with@set{#3}{#2}}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\ekvo@process@list}
+% This macro only expands the list holding macro and forwards it to the
+% loop macro.
+% \begin{macrocode}
+\protected\def\ekvo@process@list#1%
+ {%
+ \expandafter\ekvo@CurrentOption@loop\expandafter{#1}\ekvo@parse
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\ekvo@parse}
+% This macro calls internals of |\ekvparse| such that the code splitting at
+% commas isn't executed, else this is equivalent to
+% |\ekvparse\ekvo@set@k\ekvo@set@kv{#1}|.
+% \begin{macrocode}
+\long\def\ekvo@parse#1%
+ {%
+ \ekv@eq@other#1\ekv@nil\ekv@mark\ekv@parse@eq@other@a
+ =\ekv@mark\ekv@parse@eq@active\ekv@stop
+ \ekvo@set@k\ekvo@set@kv
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\ekvo@set@k,\ekvo@set@kv}
+% These two macros check whether the key is defined and if so call the handler
+% for defined keys and execute the key, else the handler for undefined keys is
+% called.
+% \begin{macrocode}
+\protected\def\ekvo@set@k#1%
+ {%
+ \ekv@ifdefined{\ekvo@name{#1}N}%
+ {%
+ \ekvo@handle@defined@k{#1}%
+ \csname\ekvo@name{#1}N\endcsname
+ }%
+ {\ekvo@handle@undefined@k{#1}}%
+ }
+\protected\def\ekvo@set@kv#1#2%
+ {%
+ \ekv@ifdefined{\ekvo@name{#1}}%
+ {%
+ \ekvo@handle@defined@kv{#1}{#2}%
+ \csname\ekvo@name{#1}\endcsname{#2}%
+ }%
+ {\ekvo@handle@undefined@kv{#1}{#2}}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{List variable helpers}
+%
+% \begin{macro}[internal]{\ekvo@addto@list}
+% This macro is rather simple. If the list to which the |\CurrentOption|
+% should be added is empty we can just let the list to the |\CurrentOption|.
+% Else we have to expand the list once and the |\CurrentOption| once.
+% \begin{macrocode}
+\protected\def\ekvo@addto@list#1%
+ {%
+ \ekvo@ifx@TF#1\@empty
+ {\let#1\CurrentOption}%
+ {%
+ \edef#1%
+ {%
+ \unexpanded\expandafter{#1},%
+ \unexpanded\expandafter{\CurrentOption}%
+ }%
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\ekvo@rmfrom@list,\ekvo@rmfrom@list@}
+% This works by looping over every list item and comparing it to
+% |\ekvo@curropt| which stores the real |\CurrentOption|. This is
+% comparatively slow, but works for items containing braces unlike what
+% \LaTeXe\ does. We could be faster for items not containing braces, though.
+% \begin{macrocode}
+\protected\def\ekvo@rmfrom@list#1%
+ {%
+ \ekvo@ifx@F#1\@empty
+ {%
+ \let\ekvo@tmp@list\@empty
+ \let\ekvo@curropt\CurrentOption
+ \expandafter\ekvo@CurrentOption@loop\expandafter{#1}\ekvo@rmfrom@list@
+ \let\CurrentOption\ekvo@curropt
+ \let#1\ekvo@tmp@list
+ }%
+ }
+\protected\long\def\ekvo@rmfrom@list@#1%
+ {%
+ \ekvo@ifx@F\CurrentOption\ekvo@curropt
+ {\ekvo@addto@list\ekvo@tmp@list}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Errors}
+%
+% \begin{macro}[internal]
+% {
+% \ekvo@err@undefined@key,\ekvo@err@value@required,
+% \ekvo@err@value@forbidden,\ekvo@err@undefined@set
+% }
+% Just some macros to throw errors in the few cases an error has to be thrown.
+% \begin{macrocode}
+\protected\def\ekvo@err@undefined@key#1%
+ {%
+ \PackageError{expkv-opt}{Undefined key `#1' in set `\ekvo@setname'}{}%
+ }
+\protected\def\ekvo@err@value@required#1%
+ {%
+ \PackageError{expkv-opt}%
+ {Value required for key `#1' in set `\ekvo@setname'}%
+ {}%
+ }
+\protected\def\ekvo@err@value@forbidden#1%
+ {%
+ \PackageError{expkv-opt}%
+ {Value forbidden for key `#1' in set `\ekvo@setname'}%
+ {}%
+ }
+\protected\def\ekvo@err@undefined@set#1%
+ {%
+ \PackageError{expkv-opt}%
+ {Undefined set `#1'}%
+ {The set for which you try to parse options isn't defined in expkv.}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{User Interface}
+%
+% The user interface macros just put together the bits and pieces.
+% \begin{macro}{\ekvoProcessLocalOptions}
+% \begin{macrocode}
+\protected\def\ekvoProcessLocalOptions
+ {%
+ \ekvo@process@common
+ {\ekv@ifdefined{opt@\@currname.\@currext}\@firstofone\@gobble}%
+ {%
+ \ekvo@set@handlers@local
+ \expandafter
+ \ekvo@process@list\csname opt@\@currname.\@currext\endcsname
+ \AtEndOfPackage{\let\@unprocessedoptions\relax}%
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ekvoProcessGlobalOptions}
+% \begin{macrocode}
+\protected\def\ekvoProcessGlobalOptions
+ {%
+ \ekvo@process@common{\ekvo@ifx@F\@classoptionslist\relax}%
+ {%
+ \ekvo@set@handlers@global
+ \ekvo@process@list\@classoptionslist
+ \let\ekvo@handle@defined@k\@gobble
+ \let\ekvo@handle@defined@kv\@gobbletwo
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ekvoProcessUnusedGlobalOptions}
+% \begin{macrocode}
+\protected\def\ekvoProcessUnusedGlobalOptions
+ {%
+ \ekvo@process@common{\ekvo@ifx@F\@unusedoptionlist\@empty}%
+ {%
+ \let\ekvo@tmp@list\@unusedoptionlist
+ \ekvo@set@handlers@unusedglobal
+ \ekvo@process@list\ekvo@tmp@list
+ \let\ekvo@handle@defined@k\@gobble
+ \let\ekvo@handle@defined@kv\@gobbletwo
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ekvoProcessOptionsList}
+% \begin{macrocode}
+\protected\def\ekvoProcessOptionsList#1%
+ {%
+ \ekvo@process@common{\ekvo@ifx@F#1\@empty}%
+ {%
+ \ekvo@set@handlers@list
+ \ekvo@process@list#1%
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ekvoUseUnknownHandlers}
+% \begin{macrocode}
+\protected\def\ekvoUseUnknownHandlers#1#2%
+ {%
+ \let\ekvo@handle@undefined@k#1\relax
+ \let\ekvo@handle@undefined@kv#2\relax
+ \let\ekvo@if@need@handlers\ekvo@dont@need@handlers
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% All user interface macros should be only used in the preamble.
+% \begin{macrocode}
+\@onlypreamble\ekvoProcessLocalOptions
+\@onlypreamble\ekvoProcessGlobalOptions
+\@onlypreamble\ekvoProcessUnusedGlobalOptions
+\@onlypreamble\ekvoProcessOptionsList
+\@onlypreamble\ekvoUseUnknownHandlers
+% \end{macrocode}
+%
+% \gobbledocstriptag
+%</pkg>
+%
+% \end{implementation}^^A=<<
+%
+% \clearpage
+% \PrintIndex
+%
+\endinput
+%
+^^A vim: ft=tex fdm=marker fmr=>>=,=<<
diff --git a/macros/generic/expkv-opt/expkv-opt.pdf b/macros/generic/expkv-opt/expkv-opt.pdf
new file mode 100644
index 0000000000..a7eb27e408
--- /dev/null
+++ b/macros/generic/expkv-opt/expkv-opt.pdf
Binary files differ
diff --git a/macros/latex/contrib/GuIT/GuITlogo/README b/macros/latex/contrib/GuIT/GuITlogo/README
index c6c5954018..f116f80a91 100644
--- a/macros/latex/contrib/GuIT/GuITlogo/README
+++ b/macros/latex/contrib/GuIT/GuITlogo/README
@@ -25,6 +25,9 @@ collegamenti ipertestuali al sito del Gruppo (https://www.guitex.org).
Documentation available in Italian only.]
+Modifiche nella versione 1.0.0-alpha.4 (2020/07/03)
+o url viene caricato solo se non è già stato fatto
+
Modifiche nella versione 1.0.0-alpha.3 (2019/07/08)
o url viene caricato con l'opzione hyphens
@@ -121,7 +124,7 @@ Modifiche nella versione 0.1 (2003/02/15)
o Prima release del pacchetto
-------------------------------------------------------------------
- Copyright 2003, 2004, 2005, 2006, 2009, 2012, 2019 Gruppo Utilizzatori
+ Copyright 2003-2006, 2009, 2012, 2019, 2020 Gruppo Utilizzatori
Italiani di TeX
This work may be distributed and/or modified under the
@@ -170,6 +173,6 @@ geometry, guit e rotating, oltre alla dotazione standard di font Type1
fornita dal bundle PSNFSS.
-8 luglio 2019
+3 luglio 2020
Emanuele Vicentini
(emanuelevicentini at yahoo dot it)
diff --git a/macros/latex/contrib/GuIT/GuITlogo/guit.dtx b/macros/latex/contrib/GuIT/GuITlogo/guit.dtx
index 91531dfd5b..dae09f94cc 100644
--- a/macros/latex/contrib/GuIT/GuITlogo/guit.dtx
+++ b/macros/latex/contrib/GuIT/GuITlogo/guit.dtx
@@ -1,7 +1,7 @@
% \iffalse
%
% guit.dtx
-% Copyright 2003, 2004, 2005, 2006, 2009, 2012, 2019 Gruppo Utilizzatori
+% Copyright 2003-2006, 2009, 2012, 2019, 2020 Gruppo Utilizzatori
% Italiani di TeX
%
% This work may be distributed and/or modified under the
@@ -48,8 +48,8 @@
Vediamo un po' come si comporta in una footnote\footnote{\guit~\guit\ldots
direi che \`e passabile, no?}. Diamoci\footnote{Un'altra nota:
\fontfamily{pzc}\fontseries{mb}\fontshape{it}\selectfont\guittext} dentro
-con qualche cosa\footnote{Un ultima nota: Copyright 2003, 2004, 2005, 2006,
-2009, 2012, 2019 \guittext} di ``strambo'':
+con qualche cosa\footnote{Un ultima nota: Copyright 2003-2006, 2009, 2012,
+2019, 2020 \guittext} di ``strambo'':
\begin{center}
\itshape\guit~agus \TeX~go br\'ach!\\
@@ -127,7 +127,7 @@ Per finire, un sfilza di \guit:
%
%
%
-% \CheckSum{544}
+% \CheckSum{546}
%
% \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
@@ -795,14 +795,16 @@ Per finire, un sfilza di \guit:
% automaticamente; suggerimento e codice di Enrico Gregorio}
% \changes{v1.0.0}{2019/07/08}{\pacchetto{url} viene caricato con l'opzione
% \altro{hyphens}}
+% \changes{v1.0.0}{2020/07/03}{\pacchetto{url} viene caricato solo se non
+% \`e gi\`a stato fatto}
% Richiediamo espressamente l'uso di \LaTeXe, ci annunciamo al mondo e
% carichiamo tutti i pacchetti necessari.
% \begin{macrocode}
%<*style>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{guit}[2019/07/08 v1.0.0-alpha.3 Logo del GuIT]
+\ProvidesPackage{guit}[2020/07/03 v1.0.0-alpha.4 Logo del GuIT]
\RequirePackage{graphics}
-\RequirePackage[hyphens]{url}
+\@ifpackageloaded{url}{}{\RequirePackage[hyphens]{url}}
\RequirePackage{xcolor}[2004/07/04]
\RequirePackage{xkeyval}[2005/05/07]
% \end{macrocode}
@@ -1516,7 +1518,7 @@ Per finire, un sfilza di \guit:
% accidentalmente.
% \begin{macrocode}
%<*cfg>
-\ProvidesFile{guit.cfg}[2019/07/08 v1.0.0-alpha.3 File di configurazione di guit.sty]
+\ProvidesFile{guit.cfg}[2020/07/03 v1.0.0-alpha.4 File di configurazione di guit.sty]
%% Esempi:
%% \GuITcolor{1, 0, 1, 0.6}
%% \DeclareGuITLogoCommand{lmr}{-0.26em}{0.714ex}{-0.125em}{-0.125em}
diff --git a/macros/latex/contrib/GuIT/GuITlogo/guit.ins b/macros/latex/contrib/GuIT/GuITlogo/guit.ins
index 04f754069a..a0b657864f 100644
--- a/macros/latex/contrib/GuIT/GuITlogo/guit.ins
+++ b/macros/latex/contrib/GuIT/GuITlogo/guit.ins
@@ -1,6 +1,6 @@
%%
%% guit.ins
-%% Copyright 2003, 2004, 2005, 2006, 2009, 2012, 2019 Gruppo Utilizzatori
+%% Copyright 2003-2006, 2009, 2012, 2019 Gruppo Utilizzatori
%% Italiani di TeX
%%
%% This work may be distributed and/or modified under the
@@ -29,8 +29,8 @@
\input docstrip
\preamble
- Copyright 2003, 2004, 2005, 2006, 2009, 2012, 2019 Gruppo Utilizzatori
- Italiani di TeX
+ Copyright 2003-2006, 2009, 2012, 2019, 2020 Gruppo Utilizzatori Italiani
+ di TeX
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
diff --git a/macros/latex/contrib/GuIT/GuITlogo/guit.pdf b/macros/latex/contrib/GuIT/GuITlogo/guit.pdf
index 78ccfb3846..dd1f614cf8 100644
--- a/macros/latex/contrib/GuIT/GuITlogo/guit.pdf
+++ b/macros/latex/contrib/GuIT/GuITlogo/guit.pdf
Binary files differ
diff --git a/macros/latex/contrib/GuIT/GuITlogo/guittest.pdf b/macros/latex/contrib/GuIT/GuITlogo/guittest.pdf
index 3967b916e6..8bcc57e005 100644
--- a/macros/latex/contrib/GuIT/GuITlogo/guittest.pdf
+++ b/macros/latex/contrib/GuIT/GuITlogo/guittest.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf b/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
index e17f576a21..a1c8ea6289 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
+++ b/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex b/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
index d8c59aeb65..8589fe3043 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
+++ b/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
@@ -125,11 +125,11 @@
%
\title{Documentation sur le module \ext{babel-french}}
\author{\href{mailto:daniel.flipo@free.fr}{Daniel \textsc{Flipo}}}
-\newcommand*{\latestversion}{3.5h}
+\newcommand*{\latestversion}{3.5j}
\date{Version {\latestversion} -- \today}
\begin{document}
-\def\today{18 avril 2020}
+\def\today{2 juillet 2020}
\maketitle
\thispagestyle{empty}
@@ -1531,7 +1531,7 @@ La version 3.5g corrige une bogue ancienne affectant l’usage des polices
type~1 avec Lua\-(La)TeX : tout crénage était supprimé pour ces polices depuis
la version~3.1f (2015) ; les polices OpenType elles, n’ont jamais été affectées.
-La version 3.5i corrige aussi une bogue ancienne affectant les classes
+La version 3.5j corrige aussi une bogue ancienne affectant les classes
koma-script, \cls{memoir} et \cls{beamer} : les redéfinitions du séparateur
des légendes de figures et tables (commandes |\captionformat|, |\captiondelim|,
etc.) sont maintenant prises en compte correctement.
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb.dtx b/macros/latex/contrib/babel-contrib/french/frenchb.dtx
index d253c3b90b..45d56480d4 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb.dtx
+++ b/macros/latex/contrib/babel-contrib/french/frenchb.dtx
@@ -1,4 +1,4 @@
-%\CheckSum{3835}
+%\CheckSum{3841}
%
%\iffalse
% Tell the LaTeX system who we are and write an entry on the
@@ -13,7 +13,7 @@
%<frenchb>\ProvidesLanguage{frenchb}
%<lua>--[[
%<lua> File `frenchb.lua’ generated from frenchb.dtx
- [2020/06/30 v3.5i French support from the babel system]
+ [2020/07/02 v3.5j French support from the babel system]
%<*internal>
\iffalse
%</internal>
@@ -807,6 +807,11 @@
% Version 3.5g fixes a long standing bug affecting LuaTeX: legacy
% kerning was disabled for Type1 fonts since v3.1g (2015).
%
+% Version 3.5j also fixes a long standing bug affecting koma-script,
+% \cls{memoir} et \cls{beamer} classes: redefintions of the caption
+% separator (commands |\captionformat|, |\captiondelim|, etc.) are
+% now taken into account properly.
+%
% \subsubsection*{What’s new in version 3.4?}
%
% Version 3.4a adds a new command |\frenchdate| (see
@@ -2489,8 +2494,22 @@ return french_punctuation
% \subsubsection{Punctuation with standard (pdf)TeX}
% \label{sssec-punct-tex}
%
+% \changes{v3.5j}{2020/07/02}{For memoir, koma-script and beamer
+% captions, \cs{FB@std@sep} has to be defined before activating
+% the colon.}
+%
% In standard (pdf)TeX we need to make the four characters |;| |!| |?|
% and |:| `active’ and provide their definitions.
+% Before doing so, we have to save some definitions involving |:|.
+% \begin{macrocode}
+\newif\ifFB@koma
+\@ifclassloaded{scrartcl}{\FB@komatrue}{}
+\@ifclassloaded{scrbook}{\FB@komatrue}{}
+\@ifclassloaded{scrreprt}{\FB@komatrue}{}
+\ifFB@koma\def\FB@std@capsep{:\ }\fi
+\@ifclassloaded{beamer}{\def\FB@std@capsep{:\ }}{}
+\@ifclassloaded{memoir}{\def\FB@std@capsep{: }}{}
+% \end{macrocode}
% \begin{macrocode}
\ifFB@active@punct
\initiate@active@char{:}%
@@ -4980,8 +4999,7 @@ return french_punctuation
% set to \fbo{true}.
% \begin{macrocode}
\ifFB@koma
- \edef\FB@capsep{\captionformat}\edef\FB@std@capsep{:\ }%
- \ifx\FB@capsep\FB@std@capsep
+ \ifx\captionformat\FB@std@capsep
\ifFBCustomiseFigTabCaptions
\renewcommand*{\captionformat}{\CaptionSeparator}%
\else
@@ -4990,8 +5008,7 @@ return french_punctuation
\fi
\fi
\@ifclassloaded{memoir}%
- {\edef\FB@capsep{\@contdelim}\edef\FB@std@capsep{: }%
- \ifx\FB@capsep\FB@std@capsep
+ {\ifx\@contdelim\FB@std@capsep
\ifFBCustomiseFigTabCaptions
\captiondelim{\CaptionSeparator}%
\else
@@ -4999,8 +5016,7 @@ return french_punctuation
\fi
\fi}{}%
\@ifclassloaded{beamer}%
- {\edef\FB@std@capsep{:\ }%
- \edef\FB@capsep{%
+ {\protected@edef\FB@capsep{%
\csname beamer@@tmpl@caption label separator\endcsname}%
\ifx\FB@capsep\FB@std@capsep
\ifFBCustomiseFigTabCaptions
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb.pdf b/macros/latex/contrib/babel-contrib/french/frenchb.pdf
index e2fdf7b604..f7ac0ff1d4 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb.pdf
+++ b/macros/latex/contrib/babel-contrib/french/frenchb.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/README.md b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/README.md
new file mode 100644
index 0000000000..e22c28ec14
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/README.md
@@ -0,0 +1,15 @@
+# beamerthemeNord
+
+A simple beamer theme using [Nord](https://www.nordtheme.com/) color theme.
+
+## Usage
+
+See [beamerthemeNord.pdf](./beamerthemeNord.pdf) or [beamerthemeNord.tex](./beamerthemeNord.tex)
+
+## Maintainer
+
+Junwei Wang (i.junwei.wang@gmail.com)
+
+## License
+
+This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version. The latest version of this license is in http://www.latex-project.org/lppl.txt . \ No newline at end of file
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamercolorthemeNord.sty b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamercolorthemeNord.sty
new file mode 100644
index 0000000000..3faf457f72
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamercolorthemeNord.sty
@@ -0,0 +1,65 @@
+% Copyright 2020 by Junwei Wang <i.junwei.wang@gmail.com>
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+
+\mode<presentation>
+
+%%%%%%%%%%% Nord color scheme
+%% https://www.nordtheme.com
+
+% Polar Night
+\definecolor{NordDarkBlack}{HTML}{2E3440} % nord0
+\definecolor{NordBlack}{HTML}{3B4252} % nord1
+\definecolor{NordMediumBlack}{HTML}{434C5e} % nord2
+\definecolor{NordBrightBlack}{HTML}{4C566A} % nord3
+% Snow Storm
+\definecolor{NordWhite}{HTML}{E5E9F0} % nord5
+\definecolor{NordBrightWhite}{HTML}{ECEFF4} % nord6
+% Frost
+\definecolor{NordCyan}{HTML}{8FBCBB} % nord7
+\definecolor{NordBrightCyan}{HTML}{88C0D0} % nord8
+\definecolor{NordBlue}{HTML}{81A1C1} % nord9
+\definecolor{NordBrightBlue}{HTML}{5E81AC} % nord10
+% Aurora
+\definecolor{NordRed}{HTML}{BF616A} % nord11
+\definecolor{NordOrange}{HTML}{D08770} % nord12
+\definecolor{NordYellow}{HTML}{EBCB8B} % nord13
+\definecolor{NordGreen}{HTML}{A3BE8C} % nord14
+\definecolor{NordMagenta}{HTML}{B48EAD} % nord15
+
+\setbeamercolor*{background canvas}{bg=NordBlack}
+\setbeamercolor*{normal text}{fg=NordWhite}
+\setbeamercolor*{alerted text}{fg=NordRed}
+\setbeamercolor*{example text}{fg=NordBrightCyan}
+\setbeamercolor*{structure}{fg=NordCyan}
+
+\setbeamercolor*{title}{fg=NordGreen}
+\setbeamercolor*{subtitle}{fg=NordBlue}
+\setbeamercolor*{frametitle}{fg=NordGreen}
+\setbeamercolor*{framesubtitle}{fg=NordBlue}
+\setbeamercolor*{section in toc}{fg=NordGreen}
+\setbeamercolor*{subsection in toc}{fg=NordBlue}
+\setbeamercolor*{subsection in toc shaded}{fg=NordCyan!20!NordBrightBlack}
+
+\setbeamercolor*{itemize item}{fg=NordGreen}
+\setbeamercolor*{enumerate item}{fg=NordGreen}
+
+\setbeamercolor*{section in head/foot}{bg=NordBlack, fg=NordCyan}
+
+\setbeamercolor{block title}{bg=NordBlack!80,fg=NordGreen}
+\setbeamercolor{block title example}{bg=NordBlack!80,parent={example text}}
+\setbeamercolor{block title alerted}{bg=NordBlack!80,parent={alerted text}}
+\setbeamercolor{block body}{bg=NordGreen!50!NordBlack,fg=NordCyan}
+\setbeamercolor{block body example}{bg=NordBrightCyan!50!NordBlack,fg=NordWhite}
+\setbeamercolor{block body alerted}{bg=NordRed!50!NordBlack,fg=NordWhite}
+
+\setbeamercolor{caption}{fg=NordBrightBlue}
+
+\mode
+<all>
+
+\endinput
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerfontthemeNord.sty b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerfontthemeNord.sty
new file mode 100644
index 0000000000..6ae75d74e5
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerfontthemeNord.sty
@@ -0,0 +1,32 @@
+% Copyright 2020 by Junwei Wang <i.junwei.wang@gmail.com>
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+
+\mode<presentation>
+
+%%%%%%%%%%%% fonts
+
+\setbeamerfont{structure}{family=\rmfamily,series=\bfseries}
+
+\setbeamerfont{title}{size=\Huge,parent=structure}
+\setbeamerfont{subtitle}{size=\Large,parent=title}
+
+\setbeamerfont{section in toc}{size=\Large,parent=structure}
+\setbeamerfont{section in head/foot}{size=\tiny,parent=structure}
+\setbeamerfont{subsection in toc}{size=\large,parent={section in toc}}
+
+\setbeamerfont{frametitle}{parent=structure,size=\Large}
+\setbeamerfont{framesubtitle}{parent=frametitle,size=\large}
+
+\setbeamerfont{caption}{size=\footnotesize}
+
+\setbeamerfont{block title}{size=\normalsize,series=\mdseries,parent={structure,block body}}
+
+\setbeamerfont{item}{parent=structure,series=\mdseries}
+
+\mode
+<all>
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.pdf b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.pdf
new file mode 100644
index 0000000000..ac95702492
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.sty b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.sty
new file mode 100644
index 0000000000..40067d2fb8
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.sty
@@ -0,0 +1,81 @@
+% Copyright 2020 by Junwei Wang <i.junwei.wang@gmail.com>
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+
+\ProvidesPackage{beamerthemeNord}[2020/07/03 v0.1.0 A simple beamer theme using Nord color scheme]
+
+\mode<presentation>
+
+\RequirePackage{ifthen}
+
+\usecolortheme{Nord}
+\usefonttheme{Nord}
+
+\setbeamertemplate{navigation symbols}{}
+
+\setbeamersize{text margin left=6mm,text margin right=6mm}
+
+
+\setbeamertemplate{caption}{\insertcaption}
+
+\setbeamertemplate{itemize item}{$\ast$}
+\setbeamertemplate{itemize subitem}{$\ast$}
+\setbeamertemplate{itemize subsubitem}{$\ast$}
+\setbeamertemplate{frametitle}{
+ {\usebeamercolor[fg]{normal text} \mdseries >> }~\boldmath\insertframetitle%
+ \hfill\ifx\insertframesubtitle\@empty\else{\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle}\fi
+}
+\setbeamertemplate{frametitle continuation}[from second][\insertcontinuationtext]
+\setbeamertemplate{headline}
+{%
+\begin{beamercolorbox}{section in head/foot}
+\vskip2pt\insertnavigation{\paperwidth}\vskip5pt
+\end{beamercolorbox}%
+}
+\setbeamertemplate{footline}{
+ \newbox\nord@tmpbox
+ \setbox\nord@tmpbox\hbox{[\insertframenumber/\inserttotalframenumber]}
+ \vspace{5.2mm}
+ \hspace{2mm}\noindent\hfill\box\nord@tmpbox\hspace{2mm}
+ \vspace{1.3mm}
+}
+\setbeamertemplate{title page}{
+ \renewcommand\thefootnote{\fnsymbol{footnote}}
+ \setcounter{footnote}{1} % \dagger
+ {\usebeamerfont{title}\usebeamercolor[fg]{title}\bfseries\boldmath\inserttitle}
+ \ifx\insertsubtitle\@empty\else\\[1em] {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle}\fi~\\[2em]
+ {\structure{by}} \insertauthor\ \ifx\insertinstitute\@empty\else\quad(\insertinstitute)\fi
+ \\[1pt]
+ {\structure{on}} \insertdate\\
+ \renewcommand\thefootnote{\arabic{footnote}}
+ \setcounter{footnote}{0}
+}
+
+% table of contents
+\setbeamertemplate{section in toc}{
+ \inserttocsection\\\smallskip
+}
+\setbeamertemplate{subsection in toc}{~$\ast$~~\inserttocsubsection\\\smallskip}
+\setbeamertemplate{subsection in toc shaded}[default][100]
+
+% block
+\setbeamertemplate{blocks}[rounded][shadow=false]
+\addtobeamertemplate{block begin}{%
+ \setlength{\textwidth}{0.85\textwidth}%
+}{}
+\addtobeamertemplate{block alerted begin}{%
+ \setlength{\textwidth}{0.85\textwidth}%
+}{}
+\addtobeamertemplate{block example begin}{%
+ \setlength{\textwidth}{0.85\textwidth}%
+}{}
+
+
+\mode
+<all>
+
+\endinput
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.tex b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.tex
new file mode 100644
index 0000000000..7159333a36
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.tex
@@ -0,0 +1,135 @@
+% Copyright 2020 by Junwei Wang <i.junwei.wang@gmail.com>
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+
+\documentclass[compress]{beamer}
+
+\usepackage[english]{babel}
+\usepackage{metalogo}
+\usepackage{listings}
+\usepackage{fontspec}
+\usepackage{tikz}
+
+\usetheme{Nord}
+\setmainfont{Yanone Kaffeesatz}
+\setsansfont{Andika New Basic}
+\setmonofont{DejaVu Sans Mono}
+
+\AtBeginSection[]
+{
+ \begin{frame}[c,noframenumbering,plain]
+ \tableofcontents[sectionstyle=show/hide,subsectionstyle=show/show/hide]
+ \end{frame}
+}
+
+\AtBeginSubsection[]
+{
+ \begin{frame}[c,noframenumbering,plain]
+ \tableofcontents[sectionstyle=show/hide,subsectionstyle=show/shaded/hide]
+ \end{frame}
+}
+
+\title{Beamer Theme ``Nord''}
+\subtitle{A simple beamer theme that uses ``Nord'' color scheme}
+\author{Junwei Wang}
+\institute{CryptoExperts}
+\date{\today}
+
+\begin{document}
+
+\begin{frame}[plain,noframenumbering]
+ \maketitle
+\end{frame}
+
+
+\section{Appearance}
+
+\subsection{Colors}
+
+\begin{frame}{Defined Colors}{This is a subtitle}
+ \begin{description}[Snow Storm]
+ \item[Polar Night]
+ \textcolor{NordDarkBlack}{NordDarkBlack} \quad \textcolor{NordBlack}{NordBlack}\\
+ \textcolor{NordMediumBlack}{NordMediumBlack} \quad \textcolor{NordBrightBlack}{NordBrightBlack}
+ \item[Snow Storm]
+ \textcolor{NordWhite}{NordWhite} \quad \textcolor{NordBrightWhite}{NordBrightWhite}
+ \item[Forest]
+ \textcolor{NordCyan}{NordCyan} \quad \textcolor{NordBrightCyan}{NordBrightCyan}\\
+ \textcolor{NordBlue}{NordBlue} \quad \textcolor{NordBrightBlue}{NordBrightBlue}
+ \item[Aurora]
+ \textcolor{NordRed}{NordRed} \quad \textcolor{NordOrange}{NordOrange} \\
+ \textcolor{NordYellow}{NordYellow} \quad \textcolor{NordGreen}{NordGreen} \\
+ \textcolor{NordMagenta}{NordMagenta}
+ \end{description}
+\end{frame}
+
+\subsection{Fonts}
+
+\begin{frame}[fragile]{Recommended Free Fonts}
+ \begin{description}[Selected Fonts]
+ \item[Selected Fonts] recommended for this theme\\
+ \begin{lstlisting}[basicstyle = \ttfamily\small]
+\setmainfont{Yanone Kaffeesatz}
+\setsansfont{Andika New Basic}
+\setmonofont{DejaVu Sans Mono}
+ \end{lstlisting}
+ \item[Download] {\small \url{https://www.fontsquirrel.com/}}
+ \item[Install Fonts] {\small \url{https://www.google.com/get/noto/help/install/}}
+ \item[Compilation] compile with \XeLaTeX~to use system-wide fonts
+ \end{description}
+
+\end{frame}
+
+
+\subsection{Blocks}
+
+\begin{frame}
+ \frametitle{Blocks}
+ \begin{block}{This is an Ordinary Block}
+ \[
+ a^2 + b^2 = c^2
+ \]
+ \end{block}
+ \begin{exampleblock}{This is an Example Block}
+ \[
+ 3^2+4^2 = 5^2
+ \]
+ \end{exampleblock}
+ \begin{alertblock}{This is an Alert Block}
+ \[
+ 3^2+4^2 \neq 5^2
+ \]
+ \end{alertblock}
+
+ \centering
+ \begin{minipage}{1.0\linewidth}
+ \begin{block}{This is an Horizontally-Aligned Ordinary Block}
+ \[
+ a^2 + b^2 = c^2
+ \]
+ \end{block}
+ \end{minipage}
+\end{frame}
+
+\subsection{Figures}
+
+\begin{frame}{Figures}
+ \begin{figure}
+ \centering
+ \begin{tikzpicture}
+ \draw [help lines,NordMagenta] (0,0) grid (5,4);
+ \end{tikzpicture}
+ \caption{Credits to Ti\textit{k}Z}
+ \end{figure}
+\end{frame}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End: