summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-02-11 03:01:17 +0000
committerNorbert Preining <norbert@preining.info>2023-02-11 03:01:17 +0000
commit73abb311c03e955ad9f7b7464390a5722b20b915 (patch)
treea8e116777430169c28f315127303eb19626a4d30 /macros/latex
parente10a52ebe817fe7ff0235c066d83f51f39d3e023 (diff)
CTAN sync 202302110301
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/authorarchive/CHANGELOG.md10
-rw-r--r--macros/latex/contrib/authorarchive/README.md58
-rw-r--r--macros/latex/contrib/authorarchive/authorarchive.sty96
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.pdfbin67605 -> 64143 bytes
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.tex8
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.pdfbin71839 -> 68345 bytes
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.tex8
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.pdfbin394597 -> 130454 bytes
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.tex6
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.pdfbin257762 -> 250535 bytes
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.tex6
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.pdfbin232514 -> 198627 bytes
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.tex10
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.pdfbin233416 -> 221241 bytes
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.tex19
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.pdfbin141002 -> 190755 bytes
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.tex8
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.pdfbin237936 -> 57049 bytes
-rw-r--r--macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.tex5
-rw-r--r--macros/latex/contrib/authorarchive/icons/README.md21
-rw-r--r--macros/latex/contrib/authorarchive/icons/vector_iD_icon.pdfbin1197 -> 0 bytes
-rw-r--r--macros/latex/contrib/authorarchive/icons/vector_iD_icon.svg17
-rw-r--r--macros/latex/contrib/eolang/eolang.dtx77
-rw-r--r--macros/latex/contrib/eolang/eolang.pdfbin2015121 -> 2063516 bytes
-rw-r--r--macros/latex/contrib/mismath/mismath.dtx534
-rw-r--r--macros/latex/contrib/mismath/mismath.pdfbin258065 -> 265710 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdfbin132738 -> 154471 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex264
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdfbin98310 -> 108019 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex45
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdfbin138727 -> 144719 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex28
-rw-r--r--macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty958
-rw-r--r--macros/latex/contrib/tcolorbox/CHANGES.md100
-rw-r--r--macros/latex/contrib/tcolorbox/README.md6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbbreakable.code.tex20
-rw-r--r--macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbexternal.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbfitting.code.tex28
-rw-r--r--macros/latex/contrib/tcolorbox/tcbhooks.code.tex35
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistings.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingscore.code.tex24
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbmagazine.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbminted.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbposter.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbprocessing.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbraster.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskins.code.tex476
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbtheorems.code.tex49
-rw-r--r--macros/latex/contrib/tcolorbox/tcbvignette.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbxparse.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdfbin281296 -> 281293 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.pdfbin469093 -> 469022 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdfbin456149 -> 455822 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.bib54
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex24
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex113
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex210
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex412
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex54
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex57
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex54
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty3
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.s_snippet.sty10
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex35
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex3
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex108
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.verbatim.tex39
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.pdfbin7670315 -> 7641870 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.sty273
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.tex19
77 files changed, 2916 insertions, 1556 deletions
diff --git a/macros/latex/contrib/authorarchive/CHANGELOG.md b/macros/latex/contrib/authorarchive/CHANGELOG.md
index 8520607b2e..8d8fb5a0ef 100644
--- a/macros/latex/contrib/authorarchive/CHANGELOG.md
+++ b/macros/latex/contrib/authorarchive/CHANGELOG.md
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
+## [1.3.0] - 2023-02-10
+
+### Changed
+
+- use style `orcidlink.sty` instead of local logo for the ORCID icon.
+- `\authorsetup{}` is now the preferred way for configuring the package.
+- use style `etoolbox.sty` providing `\newrobustcommand{}`, which is
+ used instead of `\DeclareRobustCommand{}` for defining BibTeX-logo
+ (avoids problems with `lni.cls`).
## [1.2.1] - 2022-04-25
@@ -47,6 +56,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Initial version uploaded to CTAN.
+[1.3.0]: https://git.logicalhacking.com/adbrucker/authorarchive/compare/v1.3.0...v1.3.0
[1.2.1]: https://git.logicalhacking.com/adbrucker/authorarchive/compare/v1.2.0...v1.2.1
[1.2.0]: https://git.logicalhacking.com/adbrucker/authorarchive/compare/v1.1.1...v1.2.0
[1.1.1]: https://git.logicalhacking.com/adbrucker/authorarchive/compare/v1.1.0...v1.1.1
diff --git a/macros/latex/contrib/authorarchive/README.md b/macros/latex/contrib/authorarchive/README.md
index 7721b1baa2..11da279bcb 100644
--- a/macros/latex/contrib/authorarchive/README.md
+++ b/macros/latex/contrib/authorarchive/README.md
@@ -5,35 +5,51 @@
<!-- toc -->
-- [authorarchive](#authorarchive)
- - [Installation](#installation)
- - [Usage](#usage)
- - [Boolean Switches](#boolean-switches)
- - [Key/Value Options](#key-value-options)
- - [Embedding Bibliography Entries](#embedding-bibliography-entries)
- - [Notes on Self-Archiving](#notes-on-self-archiving)
- - [LNCS](#lncs)
- - [Usage at arXiv.org](#usage-at-arxivorg)
- - [Other publishers](#other-publishers)
- - [Alternative Packages](#alternative-packages)
- - [Authors](#authors)
- - [Contributors](#contributors)
- - [License](#license)
- - [Upstream Repository](#upstream-repository)
+- [Installation](#installation)
+- [Usage](#usage)
+ - [Boolean Switches](#boolean-switches)
+ - [Key/Value Options](#keyvalue-options)
+- [Embedding Bibliography Entries](#embedding-bibliography-entries)
+- [Notes on Self-Archiving](#notes-on-self-archiving)
+- [Usage at arXiv.org](#usage-at-arxivorg)
+- [Other publishers](#other-publishers)
+- [Alternative Packages](#alternative-packages)
+- [Authors](#authors)
+ - [Contributors](#contributors)
+- [License](#license)
+- [Upstream Repository](#upstream-repository)
<!-- tocstop -->
## Installation
-Copy `authorarchive.sty` and the directory `icons` in a directory that
-is searched by LaTeX (e.g., either your `texmf` tree or the local
-directory with your main LaTeX file).
+Copy `authorarchive.sty` in a directory that is searched by LaTeX (e.g., either
+your `texmf` tree or the local directory with your main LaTeX file).
## Usage
A simple use for LNCS-formatted papers is as follows:
```tex
+\usepackage{authorarchive}
+\authorsetup{LNCS,
+ key=brucker-authorarchive-2016,
+ year=2016,
+ publication={Anonymous et al.\ (eds). Proceedings of the International
+ Conference on LaTeX-Hacks, LNCS~42. Some Publisher}
+ startpage={42},
+ doi={00/00_00},
+ doiText={0/00\_00},
+ nocopyright
+}
+```
+
+Note that this is the preferred way of configuring the package, as it allows,
+e.g., for LaTeX commands in options. Only if no (complex) LaTeX commands are
+used, the configuration can also be passes as package options (this is a
+limitation of the way LaTeX is passing options to packages):
+
+```tex
\usepackage[LNCS,
key=brucker-authorarchive-2016,
year=2016,
@@ -43,7 +59,7 @@ A simple use for LNCS-formatted papers is as follows:
doi={00/00_00},
doiText={0/00\_00},
nocopyright
- ]{authorarchive}
+]{authorarchive}
```
The following layout-styles are pre-defined:
@@ -119,8 +135,6 @@ or the postprint. For more information on that, read on at
None of the authors might be hold liable for copyright
violations by using this package.
-### LNCS
-
## Usage at arXiv.org
arXiv.org deletes bib files when submitting a pre print. As workaround, this package
@@ -145,7 +159,7 @@ The default setting just prints the note centered at the bottom of the first pag
```
Still, for some used document classes (e.g., `lncs` and `acmart`) there are specific
-package options available hat produce an alternative layout.
+package options available hat produce an alternative layout.
## Alternative Packages
diff --git a/macros/latex/contrib/authorarchive/authorarchive.sty b/macros/latex/contrib/authorarchive/authorarchive.sty
index 057cceee3b..1f95f82571 100644
--- a/macros/latex/contrib/authorarchive/authorarchive.sty
+++ b/macros/latex/contrib/authorarchive/authorarchive.sty
@@ -1,4 +1,4 @@
-%% Copyright (C) 2008-2019 Achim D. Brucker, https://www.brucker.ch
+%% Copyright (C) 2008-2023 Achim D. Brucker, https://www.brucker.ch
%%
%% License:
%% This program can be redistributed and/or modified under the terms
@@ -11,21 +11,22 @@
%% SPDX-License-Identifier: LPPL-1.3c+ OR BSD-2-Clause
\NeedsTeXFormat{LaTeX2e}\relax
\ProvidesPackage{authorarchive}
- [2022/04/25 v1.2.1
+ [2023/02/10 v1.3.0
Self-archiving information for scientific publications.]
%
\PassOptionsToPackage{hyphens}{url}
%
\RequirePackage{ifthen}
\RequirePackage[inline]{enumitem}
-\RequirePackage{graphicx}
+\RequirePackage{orcidlink}
\RequirePackage{eso-pic}
\RequirePackage{intopdf}
\RequirePackage{kvoptions}
\RequirePackage{hyperref}
\RequirePackage{calc}
\RequirePackage{qrcode}
-\RequirePackage{hvlogos}
+\RequirePackage{etoolbox}
+\newrobustcmd\BibTeX{Bib\TeX}
%
%Better url breaking
\g@addto@macro{\UrlBreaks}{\UrlOrds}
@@ -80,31 +81,51 @@
}
\ProcessKeyvalOptions*
-% Provide command for dynamic configuration seutp
-\def\authorsetup{\kvsetkeys{AA}}
+\newcommand{\AA@defIncludeFiles}{
+ \def\AA@bibBibTeX{\AA@bibtexdir/\AA@key.bib}
+ \def\AA@bibBibTeXLong{\AA@bibtexdir/\AA@key.bibtex}
+ \def\AA@bibWord{\AA@bibtexdir/\AA@key.word.xml}
+ \def\AA@bibEndnote{\AA@bibtexdir/\AA@key.enw}
+ \def\AA@bibRIS{\AA@bibtexdir/\AA@key.ris}
+}
+\AA@defIncludeFiles
+
+\newboolean{AA@bibExists}
+\setboolean{AA@bibExists}{false}
+\newcommand{\AA@defIncludeSwitches}{
+ \IfFileExists{\AA@bibBibTeX}{\setboolean{AA@bibExists}{true}}{}
+ \IfFileExists{\AA@bibBibTeXLong}{\setboolean{AA@bibExists}{true}}{}
+ \IfFileExists{\AA@bibWord}{\setboolean{AA@bibExists}{true}}{}
+ \IfFileExists{\AA@bibEndnote}{\setboolean{AA@bibExists}{true}}{}
+ \IfFileExists{\AA@bibRIS}{\setboolean{AA@bibExists}{true}}{}
+}
+\AA@defIncludeSwitches
+
+
+% Provide command for dynamic configuration setup
+% \def\authorsetup{\kvsetkeys{AA}}
+\newcommand{\authorsetup}[1]{%
+ \kvsetkeys{AA}{#1}
+ \AA@defIncludeFiles
+ \AA@defIncludeSwitches
+}
% Load local configuration
\InputIfFileExists{authorarchive.config}{}{}
+% define proxy command for setting PDF attributes
+\ExplSyntaxOn
+\@ifundefined{pdfmanagement_add:nnn}{%
+ \newcommand{\AA@pdfpagesattribute}[2]{\pdfpagesattr{/#1 #2}}%
+ }{%
+ \newcommand{\AA@pdfpagesattribute}[2]{\pdfmanagement_add:nnn{Pages}{#1}{#2}}%
+ }%
+\ExplSyntaxOff
\newlength\AA@x
\newlength\AA@y
\newlength\AA@width
-\def\AA@bibBibTeX{\AA@bibtexdir/\AA@key.bib}
-\def\AA@bibBibTeXLong{\AA@bibtexdir/\AA@key.bibtex}
-\def\AA@bibWord{\AA@bibtexdir/\AA@key.word.xml}
-\def\AA@bibEndnote{\AA@bibtexdir/\AA@key.enw}
-\def\AA@bibRIS{\AA@bibtexdir/\AA@key.ris}
-
-\newboolean{AA@bibExists}
-\setboolean{AA@bibExists}{false}
-\IfFileExists{\AA@bibBibTeX}{\setboolean{AA@bibExists}{true}}{}
-\IfFileExists{\AA@bibBibTeXLong}{\setboolean{AA@bibExists}{true}}{}
-\IfFileExists{\AA@bibWord}{\setboolean{AA@bibExists}{true}}{}
-\IfFileExists{\AA@bibEndnote}{\setboolean{AA@bibExists}{true}}{}
-\IfFileExists{\AA@bibRIS}{\setboolean{AA@bibExists}{true}}{}
-
\setlength\AA@x{1in+\hoffset+\oddsidemargin}
\newcommand{\authorcrfont}{\footnotesize}
@@ -148,8 +169,7 @@
%%%% LNCS
\ifAA@LNCS%
\ifAA@orcidicon%
- \renewcommand{\orcidID}[1]{\href{https://orcid.org/#1}{%
- \textsuperscript{\,\includegraphics[height=2\fontcharht\font`A]{vector_iD_icon}}}}
+ \renewcommand{\orcidID}[1]{\orcidlink{#1}}
\else\relax\fi%
%
\ifthenelse{\equal{\AA@publisher}{UNKNOWN PUBLISHER}}{%
@@ -157,23 +177,11 @@
}{}
\renewcommand{\authorcrfont}{\scriptsize}
\@ifclasswith{llncs}{a4paper}{%
- \ExplSyntaxOn
- \@ifundefined{pdfmanagement_add:nnn}{%
- \pdfpagesattr{/CropBox [92 114 523 780]}%
- }{%
- \pdfmanagement_add:nnn {Pages}{CropBox}{[92~114~523~780]}
- }%
- \ExplSyntaxOff
+ \AA@pdfpagesattribute{CropBox}{[92 114 523 780]}%
\renewcommand{\authorat}[1]{\put(\LenToUnit{\AA@x},40){#1}}%
}{%
- \ExplSyntaxOn
- \@ifundefined{pdfmanagement_add:nnn}{%
- \pdfpagesattr{/CropBox [92 65 523 731]}% LNCS page: 152x235 mm
- }{%
- \pdfmanagement_add:nnn {Pages}{CropBox}{[92~62~523~731]}
- }%
- \ExplSyntaxOff
- \renewcommand{\authorat}[1]{\put(\LenToUnit{\AA@x},23){#1}}
+ \AA@pdfpagesattribute{CropBox}{[92 65 523 731]}%
+ \renewcommand{\authorat}[1]{\put(\LenToUnit{\AA@x},23){#1}}%
}
\setlength{\AA@width}{\textwidth}
\setcounter{tocdepth}{2}
@@ -186,7 +194,7 @@
}{}
\renewcommand{\authorat}[1]{\put(\LenToUnit{\AA@x},35){#1}}
\renewcommand{\authorcrfont}{\scriptsize}
- \pdfpagesattr{/CropBox [70 65 526.378 748.15]} % TODO
+ \AA@pdfpagesattribute{CropBox}{[70 65 526.378 748.15]}
\setlength{\AA@width}{\textwidth}
\setcounter{tocdepth}{2}
\fi
@@ -218,8 +226,6 @@
draft = false,
bookmarksopen = true,
bookmarksnumbered= true,
- pdfauthor = {\@author},
- pdftitle = {\@title},
}
\@ifpackageloaded{totpages}{%
@@ -305,26 +311,26 @@
\hfill
\begin{itemize*}[label={}, itemjoin={,}]
\IfFileExists{\AA@bibBibTeX}{%
- \item \attachandlink{\AA@bibBibTeX}[application/x-bibtex]{BibTeX entry of this paper}{\BibTeX}%
+ \item \expanded{\attachandlink[\AA@key.bib]{\AA@bibBibTeX}[application/x-bibtex]{BibTeX entry of this paper}{\BibTeX}}%
}{%
\IfFileExists{\AA@bibBibTeXLong}{%
- \item \attachandlink[\AA@key.bib]{\AA@bibBibTeXLong}[application/x-bibtex]{BibTeX entry of this paper}{\BibTeX}%
+ \item \expanded{\attachandlink[\AA@key.bib]{\AA@bibBibTeXLong}[application/x-bibtex]{BibTeX entry of this paper}{\BibTeX}}%
}{%
\typeout{No file \AA@bibBibTeX{} (and no \AA@bibBibTeXLong) found. Not embedded reference in BibTeX format.}%
}%
}%
\IfFileExists{\AA@bibWord}{%
- \item \attachandlink{\AA@bibWord}[application/xml]{XML entry of this paper (e.g., for Word 2007 and later)}{Word}%
+ \item \expanded{\attachandlink[\AA@key.word.xml]{\AA@bibWord}[application/xml]{XML entry of this paper (e.g., for Word 2007 and later)}{Word}}%
}{%
\typeout{No file \AA@bibWord{} found. Not embedded reference for Word 2007 and later.}%
}%
\IfFileExists{\AA@bibEndnote}{%
- \item \attachandlink{\AA@bibEndnote}[application/x-endnote-refer]{Endnote entry of this paper}{EndNote}%
+ \item \expanded{\attachandlink[\AA@key.enw]{\AA@bibEndnote}[application/x-endnote-refer]{Endnote entry of this paper}{EndNote}}%
}{%
\typeout{No file \AA@bibEndnote{} found. Not embedded reference in Endnote format.}%
}%
\IfFileExists{\AA@bibRIS}{%
- \item \attachandlink{\AA@bibRIS}[application/x-research-info-systems]{RIS entry of this paper}{RIS}%
+ \item \expanded{\attachandlink[\AA@key.ris]{\AA@bibRIS}[application/x-research-info-systems]{RIS entry of this paper}{RIS}}%
}{%
\typeout{No file \AA@bibRIS{} found. Not embedded reference in RIS format.}%
}%
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.pdf b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.pdf
index 94f21f7a93..56c3327691 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.pdf
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.pdf
Binary files differ
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.tex b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.tex
index a8650325e1..2094c69481 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.tex
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.tex
@@ -1,6 +1,8 @@
\documentclass[conference]{IEEEtran}
\usepackage[T1]{fontenc}
-\usepackage[IEEE,
+\usepackage{../authorarchive}
+\authorsetup{
+ IEEE,
key=brucker-authorarchive-2016,
year=2016,
publication={Anonymous et al.\ (eds). Proceedings of the International
@@ -8,14 +10,14 @@
startpage={42},
nourl,
nocopyright
- ]{../authorarchive}
+}
\usepackage{lipsum}
\title{A Simple Example of the \texttt{authorarchive} Package for \LaTeX}
\author{%
\IEEEauthorblockN{\protect\href{http://www.brucker.ch/}{Achim D. Brucker}}
- \IEEEauthorblockA{Some Departement \\ Somewhere}
+ \IEEEauthorblockA{Some Department \\ Somewhere}
}
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.pdf b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.pdf
index bf038ed574..8c923577df 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.pdf
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.pdf
Binary files differ
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.tex b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.tex
index 8809fc9ac4..1488854162 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.tex
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.tex
@@ -1,6 +1,8 @@
\documentclass[conference]{IEEEtran}
\usepackage[T1]{fontenc}
-\usepackage[IEEE,
+\usepackage{../authorarchive}
+\authorsetup{
+ IEEE,
key=brucker-authorarchive-2016,
year=2016,
publication={Anonymous et al.\ (eds). Proceedings of the International
@@ -9,14 +11,14 @@
doi={00/00_00},
doiText={0/00\_00},
nocopyright
- ]{../authorarchive}
+}
\usepackage{lipsum}
\title{A Simple Example of the \texttt{authorarchive} Package for \LaTeX}
\author{%
\IEEEauthorblockN{\protect\href{http://www.brucker.ch/}{Achim D. Brucker}}
- \IEEEauthorblockA{Some Departement \\ Somewhere}
+ \IEEEauthorblockA{Some Department \\ Somewhere}
}
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.pdf b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.pdf
index 8aaac22109..6660c089e2 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.pdf
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.pdf
Binary files differ
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.tex b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.tex
index 3c6da448a6..e94e33f945 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.tex
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.tex
@@ -8,7 +8,9 @@
\acmDOI{10.1145/000000.000000}
\acmISBN{000-0-0000-0000-0/00/00}
-\usepackage[acmart,
+\usepackage{../authorarchive}
+\authorsetup{
+ acmart,
key=brucker-authorarchive-2016,
year=2016,
publication={Anonymous et al. (eds). Proceedings of the International
@@ -16,7 +18,7 @@
startpage={42},
doi={00/0000},
nocopyright
- ]{../authorarchive}
+}
\usepackage{lipsum}
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.pdf b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.pdf
index 43d66bb8f4..9413253a84 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.pdf
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.pdf
Binary files differ
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.tex b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.tex
index 9095d7970f..ca97306efe 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.tex
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.tex
@@ -1,6 +1,8 @@
\documentclass{entcs}
\usepackage[T1]{fontenc}
-\usepackage[ENTCS,
+\usepackage{../authorarchive}
+\authorsetup{
+ ENTCS,
key=brucker-authorarchive-2016,
year=2016,
publication={Anonymous et al.\ (eds). Proceedings of the International
@@ -9,7 +11,7 @@
doi={00/00_00},
doiText={0/00\_00},
nocopyright
- ]{../authorarchive}
+}
\usepackage{lipsum}
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.pdf b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.pdf
index 4df12f3cb7..d70ed34b15 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.pdf
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.pdf
Binary files differ
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.tex b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.tex
index 7796d64d2d..cac6599028 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.tex
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.tex
@@ -1,6 +1,8 @@
-\documentclass[final, runningheads, USenglish, a4paper, pdftex]{llncs}
+\documentclass[final, runningheads, USenglish, a4paper]{llncs}
\usepackage[T1]{fontenc}
-\usepackage[LNCS,
+\usepackage{../authorarchive}
+\authorsetup{
+ LNCS,
key=brucker-authorarchive-2016,
year=2016,
publication={Anonymous et al.\ (eds). Proceedings of the International
@@ -9,13 +11,13 @@
doi={00/00_00},
doiText={0/00\_00},
nocopyright
- ]{../authorarchive}
+}
\usepackage{lipsum}
\title{A Simple Example of the \texttt{authorarchive} Package for \LaTeX}
\author{\protect\href{http://www.brucker.ch/}{Achim D. Brucker}}
-\institute{Some Departement, Somewhere}
+\institute{Some Department, Somewhere}
\begin{document}
\maketitle{}
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.pdf b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.pdf
index a663b9f16c..8edfe78b17 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.pdf
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.pdf
Binary files differ
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.tex b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.tex
index 54766ce27b..8774924042 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.tex
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.tex
@@ -1,12 +1,9 @@
-\documentclass[final, runningheads, USenglish, pdftex]{llncs}
+\documentclass[final, runningheads, USenglish]{llncs}
\usepackage[T1]{fontenc}
-% Quickly make vector_iD_icon.pdf available to authorarchive.
-% The global installation is described in ../README.md
-\usepackage{graphicx}
-\graphicspath{{../icons/}}
-
-\usepackage[LNCS,
+\usepackage{../authorarchive}
+\authorsetup{
+ LNCS,
key=brucker-authorarchive-2016,
year=2016,
publication={Anonymous et al.\ (eds). Proceedings of the International
@@ -16,13 +13,17 @@
doiText={0/00\_00},
orcidicon,
nocopyright
- ]{../authorarchive}
+}
+\authorsetup{
+ publication={Anonymous 6\textsuperscript{th} et al.\ (eds). Proceedings of the International
+ Conference on LaTeX-Hacks, LNCS~42. Some Publisher},
+}
\usepackage{lipsum}
\title{A Simple Example of the \texttt{authorarchive} Package for \LaTeX}
\author{\protect\href{http://www.brucker.ch/}{Achim D. Brucker}\orcidID{0000-0002-6355-1200}}
-\institute{Some Departement, Somewhere}
+\institute{Some Department, Somewhere}
\begin{document}
\maketitle{}
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.pdf b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.pdf
index e481830a27..c0a6deda06 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.pdf
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.pdf
Binary files differ
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.tex b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.tex
index 00bff6be9e..675e8e379b 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.tex
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.tex
@@ -1,7 +1,9 @@
\documentclass[english]{lni}
\usepackage[T1]{fontenc}
\AtEndPreamble{
- \usepackage[LNI,
+ \usepackage{../authorarchive}
+ \authorsetup{
+ LNI,
key=brucker-authorarchive-2016,
year=2016,
publication={Anonymous et al.\ (eds). Proceedings of the International
@@ -10,14 +12,14 @@
doi={00/00_00},
doiText={0/00\_00},
nocopyright
- ]{../authorarchive}
+ }
}
\usepackage{lipsum}
\title{A Simple Example of the \texttt{authorarchive} Package for \LaTeX}
\author{%
\protect\href{http://www.brucker.ch/}{Achim D. Brucker}\\
- Some Departement\\
+ Some Department\\
Somewhere
}
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.pdf b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.pdf
index d29dd69796..24e632cff4 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.pdf
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.pdf
Binary files differ
diff --git a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.tex b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.tex
index b6f2ea3fc4..99f5cdb30f 100644
--- a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.tex
+++ b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.tex
@@ -1,6 +1,7 @@
\documentclass[a4paper]{article}
-\usepackage[
+\usepackage{../authorarchive}
+\authorsetup{
key=brucker-authorarchive-2016,
year=2016,
publication={Anonymous et al.\ (eds). Proceedings of the International
@@ -8,7 +9,7 @@
startpage={42},
doi={00/0000},
nocopyright
- ]{../authorarchive}
+}
\usepackage{lipsum}
diff --git a/macros/latex/contrib/authorarchive/icons/README.md b/macros/latex/contrib/authorarchive/icons/README.md
deleted file mode 100644
index 6670cb04fb..0000000000
--- a/macros/latex/contrib/authorarchive/icons/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Icons for the use with authorarchive
-
-This directory contains icons that might be used together with
-the authorarchive LaTeX style. The use of these icons is
-restricted by the respective copyright holders.
-
-## ORCID iD Icon
-
-The iD icon ([vector_iD_icon.svg](vector_iD_icon.svg)) was obtained in
-SVG format from
-<https://orcid.org/trademark-and-id-display-guidelines> and converted
-to PDF ([vector_iD_icon.pdf](vector_iD_icon.pdf)) using
-[Inkscape](https://inkscape.org). According to the use and (display
-guidelines)[https://orcid.org/trademark-and-id-display-guidelines] of
-the ORCID iD icons, it can be used for displaying ORCID identifiers.
-
-An alternative to including the iD icon as PDF image is the
-[academicons](https://ctan.org/pkg/academicons) package. At the time
-of writing, this package requires xe(la)tex or lua(la)tex while the
-[authorarchive](https://ctan.org/pkg/authorarchive) packages requires
-pdf(la)tex.
diff --git a/macros/latex/contrib/authorarchive/icons/vector_iD_icon.pdf b/macros/latex/contrib/authorarchive/icons/vector_iD_icon.pdf
deleted file mode 100644
index 59824b11a1..0000000000
--- a/macros/latex/contrib/authorarchive/icons/vector_iD_icon.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/authorarchive/icons/vector_iD_icon.svg b/macros/latex/contrib/authorarchive/icons/vector_iD_icon.svg
deleted file mode 100644
index 2bddf44f1b..0000000000
--- a/macros/latex/contrib/authorarchive/icons/vector_iD_icon.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="0 0 256 256" style="enable-background:new 0 0 256 256;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#A6CE39;}
- .st1{fill:#FFFFFF;}
-</style>
-<path class="st0" d="M256,128c0,70.7-57.3,128-128,128C57.3,256,0,198.7,0,128C0,57.3,57.3,0,128,0C198.7,0,256,57.3,256,128z"/>
-<g>
- <path class="st1" d="M86.3,186.2H70.9V79.1h15.4v48.4V186.2z"/>
- <path class="st1" d="M108.9,79.1h41.6c39.6,0,57,28.3,57,53.6c0,27.5-21.5,53.6-56.8,53.6h-41.8V79.1z M124.3,172.4h24.5
- c34.9,0,42.9-26.5,42.9-39.7c0-21.5-13.7-39.7-43.7-39.7h-23.7V172.4z"/>
- <path class="st1" d="M88.7,56.8c0,5.5-4.5,10.1-10.1,10.1c-5.6,0-10.1-4.6-10.1-10.1c0-5.6,4.5-10.1,10.1-10.1
- C84.2,46.7,88.7,51.3,88.7,56.8z"/>
-</g>
-</svg> \ No newline at end of file
diff --git a/macros/latex/contrib/eolang/eolang.dtx b/macros/latex/contrib/eolang/eolang.dtx
index daca8ee56f..6ad8663b55 100644
--- a/macros/latex/contrib/eolang/eolang.dtx
+++ b/macros/latex/contrib/eolang/eolang.dtx
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{eolang}
%<*package>
-[2023-02-07 0.11.1 Formulas and Graphs for EO Programming Language]
+[2023-02-09 0.12.0 Formulas and Graphs for EO Programming Language]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -585,6 +585,22 @@
% \end{document}
% \end{docshot}
+% It is possible to use ``manual splitting'' mode in the |phiquation| environment by starting the body with |\begin{split}|:
+% \docshotOptions{firstline=5,lastline=10}
+% \begin{docshot}
+% \documentclass{article}
+% \usepackage{eolang}
+% \thispagestyle{empty}
+% \begin{document}
+% \begin{phiquation*}
+% \begin{split}
+% x(\pi) & -> 4 \\
+% x(a,b,c) & -> [[ \alpha_0 -> ? ]] \\
+% \end{split}
+% \end{phiquation*}
+% \end{document}
+% \end{docshot}
+
% You can make a copy of a vertex together with its kids:
% \docshotOptions{firstline=5,lastline=15}
% \begin{docshot}
@@ -767,7 +783,7 @@
$macro = $ARGV[0];
open(my $fh, '<', $ARGV[1]);
my $tex; { local $/; $tex = <$fh>; }
-print "% This file is auto-generated by 0.11.1\n";
+print "% This file is auto-generated by 0.12.0\n";
print '% There are ', length($tex),
' chars in the input: ', $ARGV[1], "\n";
print '% ---', "\n";
@@ -782,10 +798,19 @@ foreach my $t (@lines) {
print '% ---', "\n";
$tex =~ s/%.*\n/\n/g;
$tex =~ s/^\s+|\s+$//g;
+my $splitting = $tex =~ /^\\begin\{split\}/;
+if ($splitting) {
+ print '% The manual splitting mode is ON since \begin{split} started the text' . "\n";
+}
my $indents = $tex =~ /\n +/g;
my $gathered = (0 == $indents);
if ($gathered) {
- print '% The "gathered" is used since all lines are left-aligned' . "\n";
+ if ($splitting) {
+ print '% The "gathered" is NOT used because of manual splitting' . "\n";
+ $gathered = 0;
+ } else {
+ print '% The "gathered" is used since all lines are left-aligned' . "\n";
+ }
} else {
print '% The "gathered" is NOT used because ' .
$indents . " lines are indented\n";
@@ -798,8 +823,10 @@ if (index($tex, '&&') >= 0) {
print '% The "align" is used because of && seen in the text' . "\n";
}
if ($macro ne 'phiq') {
- $tex =~ s/\\\\\n/\n\n/g;
- $tex =~ s/\\\n\s*//g;
+ if (not $splitting) {
+ $tex =~ s/\\\\\n/\n\n/g;
+ $tex =~ s/\\\n\s*//g;
+ }
$tex =~ s/\n*(\\label\{[^\}]+\})\n*/\1/g;
$tex =~ s/\n{3,}/\n\n/g;
}
@@ -824,7 +851,9 @@ sub trep {
return '{TEXT' . (0+@texts - 1) . '}' . substr($s, $p + 1);
}
$tex =~ s/\\text\{(.+)/trep("$1")/ge;
-$tex =~ s/(?<![{&])&(?![&}])/\\sigma{}/g;
+if (not $splitting) {
+ $tex =~ s/(?<![{&])&(?![&}])/\\sigma{}/g;
+}
$tex =~ s/([^\\{a-z0-9]|^)Q(?![a-z0-9])/\1\\Phi{}/g;
$tex =~ s/([^\\{a-z0-9]|^)D>/\1\\Delta{}..>/g;
$tex =~ s/([^\\{a-z0-9]|^)L>/\1\\lambda{}..>/g;
@@ -835,15 +864,17 @@ $tex =~ s/([^^_]|^)([0-9]+|\*)\/(\\?[a-z]+|\|[a-z]+\|)
$tex =~ s/([^^_]|^)([0-9]+|\*)
(->|\.\.>|~>|:=|!->)/\1\\alpha_{\2}\\space{}\3/xg;
if ($macro ne 'phiq') {
- $tex =~ s/\\begin\{split\}\n/\\begin{split}&/g;
- $tex =~ s/\n\s*\\end\{split\}/\\end{split}/g;
- $tex =~ s/\n\n/\\\\&/g;
- $tex =~ s/\n/\\phiEOL{}\n&/g;
- $tex =~ s/\\\\$//g;
- $tex =~ s/\\\\/\\\\\n/g;
- $tex =~ s/([^&\s])\s{2}([^\s])/\1 \2/g;
- $tex =~ s/\s{2}/ \\quad{}/g;
- $tex = '&' . $tex;
+ if (not $splitting) {
+ $tex =~ s/\\begin\{split\}\n/\\begin{split}&/g;
+ $tex =~ s/\n\s*\\end\{split\}/\\end{split}/g;
+ $tex =~ s/\n\n/\\\\&/g;
+ $tex =~ s/\n/\\phiEOL{}\n&/g;
+ $tex =~ s/\\\\$//g;
+ $tex =~ s/\\\\/\\\\\n/g;
+ $tex =~ s/([^&\s])\s{2}([^\s])/\1 \2/g;
+ $tex =~ s/\s{2}/ \\quad{}/g;
+ $tex = '&' . $tex;
+ }
my $lead = '[^\s]+\s(?:->|:=|=|==)\s';
my @leads = $tex =~ /&${lead}/g;
my @eols = $tex =~ /&/g;
@@ -892,11 +923,10 @@ if ($macro eq 'phiq') {
print '\begin{', $macro, "}\n";
if (not($align)) {
if ($gathered) {
- print '\begin{gathered}';
- } else {
- print '\begin{split}';
+ print '\begin{gathered}' . "\n";
+ } elsif (not $splitting) {
+ print '\begin{split}' . "\n";
}
- print "\n";
}
}
if ($gathered and not($align)) {
@@ -908,11 +938,10 @@ if ($macro eq 'phiq') {
print '$' if ($tex ne '');
} else {
if (not($align)) {
- print "\n";
if ($gathered) {
- print '\end{gathered}';
- } else {
- print '\end{split}';
+ print "\n" . '\end{gathered}';
+ } elsif (not $splitting) {
+ print "\n" . '\end{split}';
}
}
print "\n" . '\end{' . $macro . '}';
@@ -954,12 +983,14 @@ print '\endinput';
\setcounter{FancyVerbLine}{\value{eolang@lineno}}%
\def\eolang@phiSaveTo{\relax}%
}
+%
\newenvironment{phiquation*}%
{\catcode`\|=12 \VerbatimEnvironment%
\setcounter{eolang@lineno}{\value{FancyVerbLine}}%
\begin{VerbatimOut}
{\eolang@tmpdir/\jobname/phiquation.tex}}
{\end{VerbatimOut}\eolang@process{equation*}}
+%
\newenvironment{phiquation}%
{\catcode`\|=12 \VerbatimEnvironment%
\setcounter{eolang@lineno}{\value{FancyVerbLine}}%
diff --git a/macros/latex/contrib/eolang/eolang.pdf b/macros/latex/contrib/eolang/eolang.pdf
index a09b3b17cd..28e6bdeb34 100644
--- a/macros/latex/contrib/eolang/eolang.pdf
+++ b/macros/latex/contrib/eolang/eolang.pdf
Binary files differ
diff --git a/macros/latex/contrib/mismath/mismath.dtx b/macros/latex/contrib/mismath/mismath.dtx
index 7571aa54c4..c610c4e976 100644
--- a/macros/latex/contrib/mismath/mismath.dtx
+++ b/macros/latex/contrib/mismath/mismath.dtx
@@ -20,7 +20,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{mismath}
- [2023/01/06 v2.2 .dtx mismath file]
+ [2023/02/10 v2.3 .dtx mismath file]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -35,12 +35,14 @@
\usepackage[Euler]{upgreek}
\usepackage{sectsty}
\usepackage{xcolor}
+\usepackage{spacingtricks}
+\usepackage{centeredline}
+\usepackage{array}
\definecolor{darkbrown}{rgb}{0.5,0.1,0.1}
\allsectionsfont{\color{darkbrown}}
-%\enumber % commented because I need italicized e in vectors section
-\inumber
-\pinumber[piup]
+\mismathset{inumber, pinumber=piup}
+% enumber=false because I need italicized e in vectors section
% For using in this doc only:
\usepackage[LGR,T1]{fontenc}
\DeclareSymbolFont{UpGr}{LGR}{lmr}{m}{n}
@@ -68,7 +70,7 @@
%</driver>
% \fi
%
-%% \CheckSum{459}
+% \CheckSum{528}
%
% \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
@@ -160,13 +162,20 @@
% - Loading of ibrackets package is now optional, due to an error
% when using DeclarePairedDelimiter with square brackets.}
%
+% \changes{v2.3}{2023/02/06}{
+% - Introducing keyval options for enumber, inumber, jnumber, PEupright
+% (corresponding old commands are maintained for now)
+% - and also for ibrackets, boldvect and arrowvect}
+% \changes{v2.3}{2023/02/09}{
+% - Documentation update}
+%
% \GetFileInfo{mismath.sty}
%
% \title{\textsf{mismath}\\ Miscellaneous mathematical macros\thanks{This document
% corresponds to \textsf{mismath}~\fileversion, dated \filedate.
% Thanks to François Bastouil for help in English translation.}}
% \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}}
-% \date{January 6, 2023}
+% \date{February 10, 2023}
%
% \maketitle
% \tableofcontents
@@ -213,16 +222,28 @@
% |\let\|\meta{command}|\relax| before loading \textsf{mismath}.
%
% \medskip
-% \DescribeEnv{\meta{options}}
+% \DescribeEnv{\oarg{options}}
% The \textsf{amsmath} package is loaded by \textsf{mismath} without option.
% For using \textsf{amsmath} with options (see~\cite{AMS}),
% these options can be added when calling \textsf{mismath}, or
-% \textsf{amsmath} has to be loaded
+% \textsf{amsmath} can be loaded
% with the required options before \textsf{mismath}.
%
-% Another package,
-% \textsf{mathtools} by Morten Høgholm and Lars Madsen~\cite{TOOL}
-% is also loaded. It provides many useful macros and improvements of \textsf{amsmath} package.
+% \medskip
+% \DescribeMacro{\mismathset}
+% \textsf{mismath} has its own options (see further and in section \ref{options}).
+% They are based on the \meta{key}=\meta{value} mechanism,
+% thanks to the \textsf{kvoptions} package by Heiko Oberdiek~\cite{KVO}. Most of them
+% are booleans and they can be called by their key name without typing `\texttt{=true}'.
+% \textsf{mismath} options can be set when calling the package, or later with the
+% macro |\mismathset|\marg{keyval list}, which is an alias for
+% |\setkeys{mismath}|\marg{keyval list}
+% from the \textsf{keyval} package by David Carlisle~\cite{KV}.
+%
+% \medskip
+% \textsf{mismath} loads also the package
+% \textsf{mathtools} by Morten Høgholm and Lars Madsen~\cite{TOOL}.
+% It provides many useful macros and improvements of \textsf{amsmath} package.
%
% \medskip
% A recommendation, seldom observed, is to typeset uppercase Greek letters in italic shape
@@ -233,60 +254,59 @@
% (for instance \textsf{mathpazo} or \textsf{mathptmx} with the option \texttt{slantedGreek}),
% but this feature is not implemented here because this rule is conflicting
% to the one used in France where all mathematics capitals
-% have to be typeset in upright shape\footnote{The \textsf{frenchmath} package~\cite{FR}
+% have to be typeset in upright shape
+% \footnote{The \textsf{frenchmath} package~\cite{FR}
% takes this rule into account.}.
% The choice of loading or not one of these packages remains thus to the user.
%
% \section{Usage}
%
-% \subsection{Mathematical constants}
+% \subsection{Mathematical constants} \label{constants}
%
% \DescribeMacro{\mathup}
-% \DescribeMacro{\e} \DescribeMacro{\i} \DescribeMacro{\j}
% As for classic functions identifiers, \emph{predefined} mathematical constants
% should be typeset in upright shape (generally in roman family),
% even if this practice is not really common and tedious
% to respect. To avoid to stuff a document with |\mathrm{e}| or |\mathrm{i}|
-% (or better |\mathup{e}| and |\mathup{i}|\footnote{\texttt{\bslash mathup}
+% (or better |\mathup{e}| and |\mathup{i}|
+% \footnote{\texttt{\bslash mathup}
% is based on \texttt{\bslash operatorfont}
% (from \textsf{amsopn} package, automatically loaded by \textsf{amsmath}).
% The \textsf{beamer}
% package uses a default sans serif math font, but \texttt{\bslash mathrm}
-% produces a font with serif in \textsf{beamer}. This problem is solved by
-% using \texttt{\bslash mathup} instead
-% of \texttt{\bslash mathrm}.}),
+% produces a font with serif in \textsf{beamer}. Therefore
+% using \texttt{\bslash mathup} is better than \texttt{\bslash mathrm}.}),
+% \DescribeMacro{\e} \DescribeMacro{\i} \DescribeMacro{\j}
% the package provides |\e| command for the base of the natural logarithm
% and |\i| or |\j| for imaginary numbers.
% Let's notice that |\i| and |\j| already exist in \LaTeX:
-% using in LR mode, they produce ``\extrafont{\i,\ \j}'' without the point,
+% using in LR mode, they produce `\extrafont{\i,\ \j}' without the point,
% so you can place accents on them, and in mathematical mode they produce
% ``\texttt{LaTeX Warning: Command \bslash i invalid in math mode on input line} \meta{line}''.
-% Te new definition of |\i| and |\j| concerns only mathematical mode\footnote{Due to this
-% \texttt{\bslash i} command redefinition, there is an incompatibility with
+% The new definition of |\i| and |\j| concerns only the mathematical mode
+% \footnote{Due to this \texttt{\bslash i} command redefinition,
+% there is an incompatibility with
% \textsf{beamer} when using i with accents in beamer titles.
% A solution is to use the classic \texttt{\bslash \textasciicircum i}
% command to produce î in beamer titles for example.}.
%
% \medskip
-% \DescribeMacro{\enumber} \DescribeMacro{\inumber} \DescribeMacro{\jnumber}
+% \DescribeMacro{[enumber]} \DescribeMacro{[inumber]} \DescribeMacro{[jnumber]}
% Nevertheless, it can be tiresome to type a lot of backslashes in a document
% with many formulas containing $\e$ or $\i$.
-% So a way is proposed here to free of it by placing |\enumber|, |\inumber| or |\jnumber|
-% in the preamble:
+% So a way is proposed here to free of it with the package options
+% |enumber|, |inumber| or |jnumber| :
% $\e$, $i$ or $\j$ will then automatically be set in roman
% in the whole document, no need to type |\e|, |\i| or |\j|,
-% let's hope that there are not many other $\mathit{e}$, $\mathit{i}$ or $j$ as variables.
+% as long as there are not many other $\mathit{e}$, $\mathit{i}$ or $j$ as variables.
% However, you can still get italicized
% $\mathit{e}$, $\mathit{i}$ or $\mathit{j}$ with \LaTeX\ command
-% |\mathit| or |\mathnormal|. Of course, this does not fully comply with \LaTeX\ philosophy:
-% in the document body, objects should be pointed out
-% by their nature rather than their typographical characteristics,
-% defined in the preamble. But these macros are really handy and
+% |\mathit| or |\mathnormal|. These options are really handy and
% thanks to them it is possible to bring a document up to the standards
-% afterwards; moreover anyone is free to use them or not.
+% afterwards.
%
% \medskip
-% \DescribeMacro{\pinumber\oarg{command}}
+% \DescribeMacro{[pinumber=\meta{command}]}
% The mathematical constant $\pi$ should also be typeset in upright shape
% (see~\cite{TYPMA}, \cite{NIST}, \cite{ICTNS}), which differs from italicized $\itpi$.
% This recommendation is even less observed than the one concerning
@@ -296,47 +316,57 @@
% (used here), \textsf{kpfonts}~\cite{KPF}, \textsf{fourier}~\cite{FOUR},
% \textsf{libertinust1math},
% \textsf{pxgreeks}, \textsf{txgreeks}, \textsf{libgreek}, etc.
-% A special mention to \textsf{lgrmath} of Jean-François Burnol~\cite{LGR}
+% A special mention for \textsf{lgrmath} of Jean-François Burnol~\cite{LGR}
% which allow to use, in math mode, any Greek LGR-encoded font.
% These packages provide commands like |\uppi| (\textsf{upgreek}),
% |\piup| (\textsf{mathdesign}, \textsf{kpfonts}, \textsf{lgrmath}),
-% |\otherpi| (\textsf{fourier}), etc.\footnote{They also have options to
-% typeset all the Greek lowercase letters in upright shape by default,
-% but this in not our goal here.}
+% |\otherpi| (\textsf{fourier}), etc.
+% \footnote{They also have options to typeset all the Greek lowercase
+% letters in upright shape by default, but this in not our goal here.}
% To preserve default sloped lowercase Greek letters except for pi, and to
-% avoid typing a lot of |\uppi| or |\piup|, we provide the |\pinumber| macro,
-% which has to be put in the preamble. This command redefines |\pi| to match
-% the optional command given, for instance |piup|, assuming the appropriate
+% avoid typing a lot of |\uppi| or |\piup|, we provide the
+% option [\texttt{pinumber=}\meta{command}].
+% This option redefines |\pi| to match
+% the optional command name given (without backslash), for instance |piup|,
+% assuming the appropriate
% package has been loaded before.
%
-% By activating |\enumer|, |\inumber| and |\pinumber[piup]| in the preamble,
+% By calling |\mismathset{enumber,inumber,pinumber=piup}| (\eg with \textsf{mathdesign})
+% in the preamble,
% you can get for instance :
% \begin{center}
-% |$e^{i\pi} = -1$| \enskip \hspace{3em} \enskip $\e^{i\pi}=-1$.
+% |$e^{i\pi} = -1$| \quad yields \quad $\e^{i\pi}=-1$.
% \end{center}
%
-% When no argument is given, |\pinumber| defines |\pi| with an LGR encoding of Greek letters
-% to produce $\mypi$. It looks the same as the one supplied with
+% The \texttt{pinumber} option has a special value `star' : |pinumber=*|,
+% which defines |\pi| with the default LGR font encoding of Greek letters
+% to produce $\mypi$ (the appropriate option \texttt{LGR}
+% for the \textsf{fontenc} package will be automatically loaded).
+% It looks the same as the one supplied with
% Günter Milde's \textsf{textalpha} package~\cite{ALPHA}.
% This $\mypi$ is particularly suitable
-% for use with the default Computer Modern or Latin Modern font family\footnote{This
-% default $\mypi$ doesn't fit well with many text fonts, more bold than Computer Modern;
+% for use with the default Computer Modern or Latin Modern font family
+% \footnote{This default $\mypi$ doesn't fit well with many text fonts,
+% more bold than Computer Modern;
% the \textsf{upgreek} package~\cite{GREEK} provides often a better $\uppi$
% and it has also a \texttt{Symbol} option (using Adobe Symbol font)
% that fits well with several text fonts, for instance Times.}.
%
% \DescribeMacro{\itpi}
-% When |\pinumber| is activated, the original italic $\itpi$ is still available with |\itpi|.
+% When using the |pinumber| option, the original italic $\itpi$
+% is still available with |\itpi|.
%
-% \subsection{Vectors}
+% \subsection{Vectors}\label{vectors}
%
% \DescribeMacro{\vect}
-% By default, the |\vect| command\footnote{As for many macros of this package,
+% By default, the |\vect| command
+% \footnote{As for many macros of this package,
% the definition will take effect only if this macro is not defined before
% by another package.},
% produces vectors with arrows
-% (thanks to the \textsf{esvect} package of Eddie Saudrais\footnote{\textsf{esvect}
-% provides \texttt{\bslash vv} macro used by \texttt{\bslash vect}.})
+% (thanks to the \textsf{esvect} package of Eddie Saudrais
+% \footnote{\textsf{esvect} provides the \texttt{\bslash vv} macro
+% used by \texttt{\bslash vect}.})
% which are more elegant than those produced by \LaTeX's |\overrightarrow| command.
% The \textsf{esvect} package has an optional argument
% (one letter between \texttt{a} and \texttt{h}) defining
@@ -345,7 +375,7 @@
% |\vect{AB}| gives $\vect{AB}$.
% To choose another type of arrow, \textsf{esvect} must be called
% with the required option \emph{before} \textsf{mismath},
-% e.g.\@ |\usepackage[d]{esvect}|
+% \eg |\usepackage[d]{esvect}|
% will give the arrows produced by default in~\cite{VECT}.
%
% \medskip
@@ -353,7 +383,8 @@
% The |\vect| macro allow to typeset vector's names using bold italic
% (according to ISO recommendation~\cite{NIST}~\cite{SI}) rather than arrows.
% For this, calling |\boldvect| will modify the behavior of |\vect|,
-% globally or locally, depending on where |\boldvect| is placed:\\[1ex]
+% globally or locally, depending on where |\boldvect|
+% is placed:\\[1ex]
% \begin{minipage}{8cm}
% \begin{verbatim}
%\[ \boldvect \vect{v}
@@ -365,11 +396,11 @@
% \end{minipage}
%
% \DescribeMacro{\boldvectcommand}
-% By default |\boldvect| uses the |\boldsymbol|
-% command\footnote{\texttt{\bslash mathbf} gives upright bold font,
+% By default |\boldvect| uses the |\boldsymbol| command
+% \footnote{\texttt{\bslash mathbf} gives upright bold font,
% even if used in combination with \texttt{\bslash mathit}.}
% from \textsf{amsbsy} package, loaded by \textsf{amsmath}.
-% But other packages producing bold italic can be preferred, e.g.\@
+% But other packages producing bold italic can be preferred, \eg
% \texttt{\bslash bm} from \textsf{bm} package or |\mathbold| from \textsf{fixmath}
% package or |\mathbfit| from \textsf{isomath}.
% For that, redefine |\boldvectcommand|, for instance:
@@ -377,17 +408,29 @@
%
% By setting |\boldvectcommand| to |\mathbf|, |\vect| produces vectors
% in bold \emph{upright} shape,
-% which tends to be used instead of bold \emph{italic}
-% (but probably for bad reasons).
+% which tends to be used instead of bold \emph{italic},
+% but this is \emph{not} recommended.
%
% \medskip
% \DescribeMacro{\arrowvect}
% At any moment, you can get back to the default behavior with the inverse switch
-% |\arrowvect|. These switches can be placed anywhere:
+% |\arrowvect|.
+% These switches can be placed anywhere:
% inside mathematical mode or inside an environment (with local effect) or outside
% (with global effect).
%
% \medskip
+% \DescribeMacro{[boldvect]}\DescribeMacro{[arrowvect]}
+% Instead of using these switches, you can also set package options
+% \texttt{boldvect} or \texttt{arrowvect}, when calling \textsf{mismath}
+% or with the |\mismathset| command.
+% The latter gives the same flexibility than the previous switches.
+% In fact \texttt{boldvect} and \texttt{arrowvect} options are linked booleans:
+% when one is set to \texttt{true}, the other will be \texttt{false}.
+% So \texttt{arrowvect=false} is equivalent to \texttt{boldvect}
+% (\texttt{=true} can be omitted).
+%
+% \medskip
% \DescribeMacro{\hvect}
% When vectors with arrows are typeset side by side,
% arrows can be set up a bit higher (with a vertical phantom box containing $t$)
@@ -398,9 +441,10 @@
% \item $\hvect{a} \cdot \vect{b}=0$, obtained with |\hvect{a}|,
% is better thant $\vect{a} \cdot \vect{b}=0$.
% \end{itemize}
-% The |\boldvect| switch has the same effect on |\hvect| than on |\vect|.
+% The |\boldvect| and |\arrowvect| switches have the same effect on |\hvect| than on |\vect|,
+% and so have \texttt{boldvect} and \texttt{arrowvect} options.
%
-% \medskip
+% \pagebreak
% \DescribeMacro{\hvec}
% In a similar way, |\hvec| raises the little arrow produced by
% the \LaTeX\ command |\vec| (from height of $t$ letter):
@@ -421,9 +465,9 @@
% instead of $\left\Vert \vec{h} \right\Vert$.
% Let's notice that the height of the bars don't adjust to content,
% but however to context: main text, subscripts or exponents,
-% e.g. $\e^{\norm{\vec{h}}}$.
+% \eg $\e^{\norm{\vec{h}}}$.
%
-% \subsection{Standard operator names}
+% \subsection{Standard operator names}\label{operators}
%
% \DescribeMacro{\di}
% The \emph{differential} operator should be typeset in upright shape and not in
@@ -454,16 +498,14 @@
% This command can also stand for \emph{distance} (hence its name):
% \[\lambda\di(A,\mathcal{F})+\mu\di(B,\mathcal{H}).\]
%
-% \DescribeMacro{\P} \DescribeMacro{\E} \DescribeMacro{\PEupright} \DescribeMacro{\V}
-% To refer to probability\footnote{\LaTeX\ provides
-% also \texttt{\bslash Pr} which gives $\Pr$.}
+% \DescribeMacro{\P} \DescribeMacro{\E} \DescribeMacro{[PEupright]}
+% To refer to probability
+% \footnote{\LaTeX\ provides also \texttt{\bslash Pr} which gives $\Pr$.}
% and expectation the proper use is to typeset capital letters $\P$, $\E$
% in roman as for any standard function identifier.
% This is obtained with |\P| and |\E|.
-% In the same way as for $\i$ and $\j$, you can use |\PEupright| in the preamble
+% In the same way as for $\e$ and $\i$, you can use \texttt{[PEupright]} as package option
% to avoid typing many |\P| or |\E|.
-% Variance is generally denoted by $\var$ or $\Var$ (see table below),
-% but some authors prefer to use $\V$, produced by |\V|.
%
% \medskip
% \DescribeMacro{\Par}
@@ -471,12 +513,17 @@
% and has been redefined, but this symbol can still be obtained with |\Par|.
%
% \medskip
+% \DescribeMacro{\V}
+% Variance is generally denoted by $\var$ or $\Var$ (see table below),
+% but some authors prefer to use $\V$, produced by |\V|.
+%
+% \medskip
% \DescribeMacro{\probastyle}
% Some authors use ``blackboard bold'' font
% to represent probability, expectation and variance: $\mathbb{P}, \mathbb{E}, \mathbb{V}$.
% The |\probastyle| macro sets the appearance of |\P|, |\E| and |\V|:
-% for instance |\renewcommand\probastyle{\mathbb}|\footnote{As for
-% \texttt{\bslash boldvect} and \texttt{\bslash arrowvect},
+% for instance |\renewcommand\probastyle{\mathbb}|
+% \footnote{As for \texttt{\bslash boldvect} and \texttt{\bslash arrowvect},
% effect is local to the container environment.}
% brings the previous ``openwork'' letters.
% |\mathbb| comes from \textsf{amsfonts} package
@@ -484,7 +531,7 @@
% but also available standalone)
% which has to be called in the preamble.
%
-% \medskip
+% \pagebreak
% The following standard operator names are defined in \textsf{mismath}:
% \begin{center}
% \begin{tabular}{rlrlrl}
@@ -507,9 +554,9 @@
% For the variance, the covariance and the identity function,
% two notations are proposed, with or without a first capital letter,
% because they are both very common.
-% On the other hand, ``$\im$'' stands for the image of a linear transformation
-% (like ``$\ker$'' for the kernel)
-% whereas ``$\Im$'' is the imaginary part of a complex number.
+% On the other hand, `$\im$' stands for the image of a linear transformation
+% (like `$\ker$' for the kernel)
+% whereas `$\Im$' is the imaginary part of a complex number.
% Notice that |\div| already exist ($\div$) and |\span| is a \TeX\ primitive
% (used in |\multicolumn|);
% they haven't been redefined, therefore the macros |\divg| (divergence)
@@ -583,9 +630,12 @@
% only transforms the required fraction in display style, we can limit
% the display style effect to the affected symbol, by using the following macros:
% |\dlim|, |\dsum|, |\dprod|, |\dcup|, |\dcap|.
-% So |$\dlim_{x\to +\infty}\frac{1}{x}$| gives $\dlim_{x \to +\infty}\frac{1}{x}$.
+% So
+% \begin{center}
+% |$\dlim_{x\to +\infty}\frac{1}{x}$| \quad gives \quad $\dlim_{x \to +\infty}\frac{1}{x}$.
+% \end{center}
%
-% \bigskip
+% \medskip
% \DescribeMacro{\lbar} \DescribeMacro{\hlbar}
% Large bars over expressions are obtained with |\overline|
% or, shorter, its alias |\lbar|, to get for instance $\lbar{z_1z_2}$.
@@ -597,11 +647,12 @@
% \end{center}
%
% \DescribeMacro{\eqdef} \DescribeMacro{\eqdef*}
-% The |\eqdef| macro writes equality symbol topped with ``def''
-% or with ``$\scriptstyle \Delta$'' for |\eqdef*|
+% The |\eqdef| macro writes equality symbol topped with `def'
+% or with `$\scriptstyle \Delta$' for |\eqdef*|
% (thanks to the \LaTeX\ command |\stackrel|):
%
-% \noindent\begin{minipage}[t]{8cm}
+% \bigskip
+% \noindent\begin{minipage}{8cm}
% \begin{verbatim}
%$ \e^{\i\theta} \eqdef
% \cos\theta + \i\sin\theta $
@@ -611,12 +662,23 @@
% $\e^{\i\theta}\eqdef\cos\theta + \i\sin\theta$
% \end{minipage}
%
+% \noindent\begin{minipage}{8cm}
+% \begin{verbatim}
+%$ \e^{\i\theta} \eqdef*
+% \cos\theta + \i\sin\theta $
+% \end{verbatim}
+% \end{minipage}
+% \begin{minipage}{6cm}
+% $\e^{\i\theta}\eqdef*\cos\theta + \i\sin\theta$
+% \end{minipage}
+%
% \DescribeMacro{\unbr}
-% |\unbr| is an alias for |\underbrace|\footnote{The \textsf{mathtools}
-% package by Morten Høgholm and Lars Madsen~\cite{TOOL}
-% provides a new improved version of \texttt{\bslash underbrace} command
-% (as many other usefull macros);
-% it is loaded by \textsf{mismath}.}, making source code more compact.\\[2ex]
+% |\unbr| is an alias for |\underbrace|
+% \footnote{The \textsf{mathtools} package by Morten Høgholm
+% and Lars Madsen~\cite{TOOL} provides a new improved version
+% of \texttt{\bslash underbrace} command (as many other usefull macros);
+% it is loaded by \textsf{mismath}.},
+% making source code more compact.\\[2ex]
% \begin{minipage}{7.5cm}
% \begin{verbatim}
%$ (QAP)^n = \unbr{QAP\mul QAP\mul
@@ -630,14 +692,15 @@
% \DescribeMacro{\iif}
% |\iif| is an alias for ``\iif'', to be used in text mode.
%
-% \subsection{Improved spacing in mathematical formulas}
+% \pagebreak
+% \subsection{Improved spacing in mathematical formulas}\label{spacing}
%
% \DescribeMacro{\then}
% The |\then| macro produces the symbol $\Longrightarrow$ surrounded by large spaces
% as the standard macro |\iff| does it with $\Longleftrightarrow$.
-% In a similar way, |\txt| \DescribeMacro{\txt}
-% based on the |\text| macro (from the \textsf{amstext} package,
-% loaded by \textsf{amsmath}),
+% In a similar way, |\txt|, \DescribeMacro{\txt}
+% based on the |\text| macro from the \textsf{amstext} package
+% (loaded by \textsf{amsmath}),
% leaves em quad spaces (|\quad|) around the text. See the following example:
% \begin{center}
% |\[ \ln x=a \then x=\e^a \txt{rather than}| \\
@@ -663,7 +726,7 @@
% or enclose the function or the structure with braces:
% \begin{center}
% $x\mul{\sin x}$, obtained with |x\mul{\sin x}|, is slightly better than $x\mul\sin x$.\\[1ex]
-% |$\sin\!{\left( \frac{\pi}{3} \right)} \mul 2$| gives\\
+% |$\sin\!{\left( \frac{\pi}{3} \right)} \mul 2$| \quad gives\\
% $\sin\!{\left(\frac{\pi}{3}\right)}\mul 2$ which is better than
% $\sin\left(\frac{\pi}{3}\right)\mul 2$.
% \end{center}
@@ -678,8 +741,9 @@
% the exponent is little to far from the parenthesis.
% The command |\pow|\marg{expr}\marg{pow} sets
% \meta{expr} between parentheses and puts the exponent \meta{pow}
-% slightly closer to the right parenthesis\footnote{This macro gives bad
-% results with normal sized parenthesis.}. Compare:
+% slightly closer to the right parenthesis
+% \footnote{This macro gives bad results with normal sized parenthesis.}.
+% Compare:
% \[ \e^a \sim\pow{1+\frac{a}{n}}{n} \txt{may be better than}
% \e^a \sim\left(1+\frac{a}{n}\right)^{n}.\]
%
@@ -688,10 +752,10 @@
% |\lvert| \ldots |\rvert| rather than $\mid$ which doesn't respect correct
% spaces for delimiters; for bars whose height has to adapt to content,
% we use |\left\vert| \ldots |\right\vert| or, more simply,
-% the |\abs|\{\ldots\} command which is equivalent\footnote{Another
-% solution is to define \texttt{\bslash abs} with the
-% \texttt{\bslash DeclarePairedDelimiter} command
-% from the \textsf{mathtool} package~\cite{TOOL}.}.
+% the |\abs|\{\ldots\} command which is equivalent
+% \footnote{Another solution is to define \texttt{\bslash abs}
+% with the \texttt{\bslash DeclarePairedDelimiter} command
+% from the \textsf{mathtools} package~\cite{TOOL}.}.
%
% \medskip
% \DescribeMacro{\lfrac}
@@ -709,17 +773,18 @@
% \end{minipage}
%
% \DescribeMacro{[ibrackets]}
-% Open intervals are usually represented with parenthesis, e.g.\@ $(0, +\infty)$,
+% Open intervals are usually represented with parenthesis, \eg $(0, +\infty)$,
% but sometimes we find also
% square brackets, for example in French mathematics.
% In that case the space around them is often unsuitable,
-% e.g.\@ $x \in \mathclose{]} 0, +\infty[$.
-%
+% \eg $x \in \mathclose{]} 0, +\infty[$.
% We have redefine brackets in the \textsf{ibrackets} package~\cite{BRACKET}
-% which can be optionally\footnote{This functionality is optional because it causes
-% error when using a command defined by \texttt{\bslash DeclarePairedDelimiter}~\cite{TOOL}
-% with square brackets.}
-% loaded by \textsf{mismath}.
+% which can be optionally
+% \footnote{This functionality is optional because it causes
+% error when using a command defined by
+% \texttt{\bslash DeclarePairedDelimiter}~\cite{TOOL} with square brackets.}
+% loaded by \textsf{mismath} with \texttt{ibracket} package option.
+%
% Simply type |$x\in ]-\pi,0[ \cup ]2\pi,3\pi[$| to get
% \begin{align*}
% x\in ]-\pi, 0[ \cup ]2\pi, 3\pi[ &\mbox{\quad with \textsf{ibrackets}}, \\
@@ -738,16 +803,16 @@
% Thus, when the left bound contains an operator sign,
% \emph{you don't have to leave a space between the first bracket and the sign},
% otherwise, the spaces surrounding the operator will be too large:
-% e.g.\@ |$x \in ] -\infty, 0]$| yields $x \in ] -\infty, 0]$.
+% \eg |$x \in ] -\infty, 0]$| yields $x \in ] -\infty, 0]$.
% Contrariwise, when you want to write algebra on intervals then
% \emph{you must leave a blank space between the second bracket and the} +/-
% \emph{operations},
-% e.g.\@ |$[a, b] + [c, d]$| yields $[a, b] + [c, d]$
+% \eg |$[a, b] + [c, d]$| yields $[a, b] + [c, d]$
% but |$[a, b]+ [c, d]$| yields $[a, b]+ [c, d]$.
%
% Let us also mention other approaches with the |\interval| macro
% from the \textsf{interval} package~\cite{INT},
-% or |\DeclarePairedDelimiters| from the \textsf{mathtool} package~\cite{TOOL}
+% or |\DeclarePairedDelimiters| from the \textsf{mathtools} package~\cite{TOOL}
% (but the latter is incompatible with \textsf{ibrackets}
% for brackets management).
%
@@ -805,8 +870,8 @@
% In addition we can use the end of line with a spacing option such
% as it has been done above with |\\[1ex]|.
%
-% Another example with |\begin{system}[rl@{\quad}l]|\footnote{\texttt{@\{\ldots\}}
-% sets inter-column space.}:
+% Another example with |\begin{system}[rl@{\quad}l]|
+% \footnote{\texttt{@\{\ldots\}} sets inter-column space.}:
% \begin{equation*}
% \begin{system}[rl@{\quad}l]
% x+3y+5z&=0 & R_1\\ 2x+2y-z&=3 & R_2\\ 3x-y+z&=2 & R_3
@@ -845,10 +910,12 @@
% \subsection{Displaymath in double columns}
%
% \DescribeEnv{mathcols}
-% The \texttt{mathcols} environment activates mathematical mode and enables to arrange
-% ``long''calculation in double columns, separated with a central rule,
+% The \texttt{mathcols} environment enables to arrange
+% ``long'' calculation in double columns, separated with a central rule,
% as shown in the following example.
-% But you have to load the \textsf{multicol} package in the preamble.
+% But the \textsf{multicol} package must be loaded in the preamble.
+% It activates the mathematical mode
+% in display style and with an \texttt{aligned} environment.
% \begin{mathcols}
% & \frac{1}{2 \mul {\pow{\frac{1}{4}}{n}} + 1} \geq 0.999 \\
% \iff\ & 1 \geq 1.998 \pow{\frac{1}{4}}{n} + 0.999 \\
@@ -877,20 +944,91 @@
%\end{mathcols}
% \end{verbatim}
%
+% \vspace{-4ex}
+% \subsection{Summary of available options and deprecated commands}\label{options}
+%
+% Here we present a summary table of available options. Explanations of use
+% are given in the corresponding sections.
+% The default value for booleans is always \texttt{false} except for \texttt{arrowvect}.
+% Deprecated commands (used until version 2.3) are still working.
+%
+% \begin{center} \ttfamily
+% \setlength{\extrarowheight}{1pt}
+% \begin{tabular}{llcc}
+% \hline
+% \textsf{Key} & \textsf{Possible values} & \textsf{See section} &
+% \textsf{Deprecated command} \\
+% \hline
+% enumber & false, true & \ref{constants} & |\enumber| \\
+% inumber & false, true & \ref{constants} & |\inumber| \\
+% jnumber & false, true & \ref{constants} & |\jnumber| \\
+% pinumber & *, \meta{command} & \ref{constants} & |\pinumber|\oarg{command}\\
+% boldvect & false, true & \ref{operators} &\\
+% arrowvect & true, false & \ref{operators} & \\
+% PEupright & false, true & \ref{operators} & |\PEupright| \\
+% ibrackets & false, true & \ref{spacing} & \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% For \texttt{pinumber}, there is no default value,
+% that means that |\pi| is still typeset in italic.
+% If you want it in upright shape, you have to load an appropriate package
+% and give a command name (without backslash) that produces an upright pi;
+% \texttt{pinumber=*} gives the upright $\mypi$ given by the LGR font encoding,
+% without having to load something.
+%
+% \enlargethispage{1ex}
+% \medskip
+% For each option, you can set them when package calling: \eg
+% (with \textsf{upgreek})
+%
+% \smallskip
+% \centeredline{|\usepackage[inumber,pinumber=uppi,boldvect]{mismath}|}
+%
+% \bigskip
+% \DescribeMacro{\mismathset}
+% You can also use the |\mismathset|\{\meta{keyval list}\}
+% command.
+% Nevertheless, only the option \texttt{boldvect} (or \texttt{arrowvect})
+% can be changed dynamically in the document body.
+% The others are usable in the preamble only
+% and will be processed once, at begin document.
+%
% \StopEventually{}
% \section{Implementation}
%
% \begin{macrocode}
-\RequirePackage{ifthen}
-\newboolean{ibrackets}
-\DeclareOption{ibrackets}{\setboolean{ibrackets}{true}}
-\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{amsmath}}
-\ProcessOptions \relax
+\RequirePackage{kvoptions}
+\DeclareBoolOption[false]{enumber}
+\DeclareBoolOption[false]{inumber}
+\DeclareBoolOption[false]{jnumber}
+\DeclareStringOption{pinumber}
+\DeclareBoolOption[true]{arrowvect}
+\DeclareComplementaryOption{boldvect}{arrowvect}
+\DeclareBoolOption[false]{PEupright}
+\DeclareBoolOption[false]{ibrackets}
+\DeclareDefaultOption{%
+ \ifx\CurrentOptionValue\relax
+ \PackageWarningNoLine{\@currname}{%
+ Unknown option `\CurrentOption’\MessageBreak
+ is passed to package `amsmath’}%
+ % Pass the option to package amsmath.
+ % Again it is better to expand \CurrentOption.
+ \expandafter\PassOptionsToPackage
+ \expandafter{\CurrentOption}{amsmath}%
+ \else
+ % Package amsmath does not take options with values.
+ % We provide the standard LaTeX error.
+ \@unknownoptionerror
+ \fi }
+
+\ProcessKeyvalOptions*
+
\@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}}
+\@ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}}
\@ifpackageloaded{esvect}{}{\RequirePackage[b]{esvect}}
\RequirePackage{xspace}
-\RequirePackage{mathtools}
-\ifthenelse{\boolean{ibrackets}}{\RequirePackage{ibrackets}}{}
% \end{macrocode}
% The above conditional packages loading avoids ``option clash'' errors if the packages
@@ -905,11 +1043,103 @@
{\catcode`\|=\z@ \catcode`\\=12 |gdef|bslash{\}} % \bslash command
% \end{macrocode}
+%
+% \medskip
+% \DescribeMacro{\mismathset}
+% This macro allows to set keyval options not only when calling the package.
+% \begin{macrocode}
+\def\mismathset#1{\setkeys{mismath}{#1}}
+
+% \end{macrocode}
+% \medskip
+% Options must be set in the preamble and are processed at begin document,
+% except \texttt{boldvect} or \texttt{arrowvect} which can be changed dynamically
+% anywhere in the document body.
+%
+% Moreover for \textsf{beamer}, $\e, \i, \j$ must be typeset in
+% the family default font (sans serif) and this has no effect without the
+% |\AtBeginDocument|.
+% \begin{macrocode}
+\AtBeginDocument{
+ \ifmismath@enumber
+ \DeclareMathSymbol{e}\mathalpha{operators}{`e} \fi
+ \ifmismath@inumber
+ \DeclareMathSymbol{i}\mathalpha{operators}{`i}\fi
+ \ifmismath@jnumber
+ \DeclareMathSymbol{j}\mathalpha{operators}{`j}\fi
+ \ifthenelse{\equal{\mismath@pinumber}{}}{}{% else
+ \@ifundefined{itpi}{\let\itpi\pi}{\@mwarning{itpi}}
+ \ifthenelse{\equal{\mismath@pinumber}{*}}{
+ \RequirePackage[LGR,T1]{fontenc}
+ \DeclareSymbolFont{UpGr}{LGR}{lmr}{m}{n}
+ \DeclareMathSymbol{\pi}\mathalpha{UpGr}{"70}
+ }{% else
+ \@ifundefined{\mismath@pinumber}{
+ \PackageWarningNoLine{mismath}{%
+ Value \mismath@pinumber\space must be a valid
+ command name\MessageBreak for pinumber option,
+ but command \bslash \mismath@pinumber\space
+ is undefined.\MessageBreak
+ Perhaps a missing package}
+ }{\renewcommand{\pi}{%
+ \csname\mismath@pinumber\endcsname}
+ }
+ }}
+ \ifmismath@PEupright
+ \DeclareMathSymbol{P}\mathalpha{operators}{`P}
+ \DeclareMathSymbol{E}\mathalpha{operators}{`E} \fi
+ \ifmismath@ibrackets \RequirePackage{ibrackets} \fi
+
+ \DisableKeyvalOption[action=warning,package=mismath]{mismath}{enumber}
+ \DisableKeyvalOption[action=warning,package=mismath]{mismath}{inumber}
+ \DisableKeyvalOption[action=warning,package=mismath]{mismath}{jnumber}
+ \DisableKeyvalOption[action=warning,package=mismath]{mismath}{pinumber}
+ \DisableKeyvalOption[action=warning,package=mismath]{mismath}{PEupright}
+ \DisableKeyvalOption[action=warning,package=mismath]{mismath}{ibrackets}
+}
+
+% \end{macrocode}
+% The following commands are deprecated but still work.
+% They were intended to set some letters in upright shape by default
+% in math mode. This is now managed by keyval options.
+% \begin{macrocode}
+\newcommand{\enumber}{%
+ \PackageWarning{mismath}{Command \string\enumber\space
+ is deprecated, \MessageBreak
+ use `enumber' as package option instead}
+ \mismath@enumbertrue
+}
+\newcommand{\inumber}{%
+ \PackageWarning{mismath}{Command \string\inumber\space
+ is deprecated, \MessageBreak
+ use `inumber' as package option instead}
+ \mismath@inumbertrue
+}
+\newcommand{\jnumber}{
+ \PackageWarning{mismath}{Command \string\jnumber\space
+ is deprecated, \MessageBreak
+ use `jnumber' as package option instead}
+ \mismath@jnumbertrue
+}
+\newcommand*{\pinumber}[1][*]{
+ \PackageWarning{mismath}{Command \string\pinumber\space
+ is deprecated,
+ use `pinumber=#1'\MessageBreak as package option instead}
+ \def\mismath@pinumber{#1}
+}
+\newcommand{\PEupright}{
+ \PackageWarning{mismath}{Command \string\PEupright\space
+ is deprecated, \MessageBreak
+ use `PEupright' as package option instead}
+ \mismath@PEuprighttrue
+}
+
+% \end{macrocode}
% \medskip
% \DescribeMacro{\@mwarning} \DescribeMacro{\@mmacro} \DescribeMacro{\@moperator}
-% The three following internal macros are meta commands for a
+% The three following internal macros are meta commands for
% conditional macro definition with a warning message if the macro already exists.
-% They could be useful in other packages.
+% They should be useful in other packages.
% \begin{macrocode}
\newcommand\@mwarning[1]{
\PackageWarningNoLine{mismath}{
@@ -934,16 +1164,12 @@
% \end{macrocode}
%
-% To produce the correct upright shape font even when working
-% with the \textsf{beamer} package, we did not use |\mathrm|
+% To produce the correct upright shape font when working
+% with the \textsf{beamer} package, you don't have to use |\mathrm|
% but |\mathup| (based on |\operatorfont| from the \textsf{amsopn} package).
% This command works also fine with other sans serif fonts like \textsf{cmbright}.
-% Moreover for \textsf{beamer}, |\enumber| must be typeset in
-% the family default font (sans serif),
-% therefore the |\AtBeginDocument| inside the macro (otherwise it has no effect).
-% The same holds for |\inumber| and |\jnumber|.
%
-% |\AtBeginDocument| is also necessary to redefine |\i| when calling
+% |\AtBeginDocument| is necessary to redefine |\i| when calling
% the \textsf{hyperref} package which overwrites the |\i| definition.
%
% \medskip
@@ -954,40 +1180,11 @@
\renewcommand{\i}{\TextOrMath{\oldi}{\mathup{i}}}
\renewcommand{\j}{\TextOrMath{\oldj}{\mathup{j}}} }
-\newcommand{\enumber}{
- \AtBeginDocument{\DeclareMathSymbol{e}\mathalpha{operators}{`e}}}
-\newcommand{\inumber}{
- \AtBeginDocument{\DeclareMathSymbol{i}\mathalpha{operators}{`i}}}
-\newcommand{\jnumber}{
- \AtBeginDocument{\DeclareMathSymbol{j}\mathalpha{operators}{`j}}}
-\newcommand*{\pinumber}[1][defaultpi]{
- \@ifundefined{itpi}{\let\itpi\pi}{\@mwarning{itpi}}
- \ifthenelse{\equal{#1}{defaultpi}}{
- \usepackage[LGR,T1]{fontenc}
- \DeclareSymbolFont{UpGr}{LGR}{lmr}{m}{n}
- \DeclareMathSymbol{\pi}\mathalpha{UpGr}{"70}
- }{
- \@ifundefined{#1}{
- \PackageWarningNoLine{mismath}{
- \bslash pinumber command has changed since v2.0,
- \MessageBreak
- option #1 must be a valid command name \MessageBreak
- (look at the documentation),
- but command \bslash #1 is undefined, \MessageBreak
- I cannot use it for replacement to \bslash pi.
- \MessageBreak
- Perhaps a missing package}
- }{\renewcommand{\pi}{\csname #1\endcsname}}
- }
-}
-
-\newboolean{arrowvect}
-\setboolean{arrowvect}{true}
-\newcommand{\arrowvect}{\setboolean{arrowvect}{true}}
-\newcommand{\boldvect}{\setboolean{arrowvect}{false}}
+\newcommand{\arrowvect}{\mismath@arrowvecttrue}
+\newcommand{\boldvect}{\mismath@arrowvectfalse}
\newcommand{\boldvectcommand}{\boldsymbol} % from amsbsy package
-\@mmacro{vect}{\ifthenelse{\boolean{arrowvect}}{
- \vv}{\boldvectcommand}}
+\@mmacro{vect}{\ifthenelse{\boolean{mismath@arrowvect}}{
+ \vv}{\boldvectcommand}} %\if \fi doesn't work well here
\newcommand*{\hvect}[1]{\vect{\vphantom{t}#1}}
\newcommand*{\hvec}[1]{\vec{\vphantom{t}#1}}
@@ -1012,12 +1209,6 @@
\renewcommand{\P}{\operatorname{\probastyle{P}}}
\@mmacro{E}{\operatorname{\probastyle{E}}}
\@mmacro{V}{\operatorname{\probastyle{V}}}
-\newcommand{\PEupright}{
- \AtBeginDocument{% necessary for working with beamer
- \DeclareMathSymbol{P}\mathalpha{operators}{`P}
- \DeclareMathSymbol{E}\mathalpha{operators}{`E}
- }
-}
\@moperator{\adj}{adj}
\@moperator{\Aut}{Aut}
@@ -1091,7 +1282,7 @@
\@mmacro{then}{\ \Longrightarrow \ \mbox{} }
% \end{macrocode}
-% Without |\mbox{}|, the space produced by |\| would be suppressed in tables.
+% Without |\mbox{}|, space produced by |\| would be suppressed in tables.
% \medskip
% \begin{macrocode}
\@ifundefined{txt}{
@@ -1152,12 +1343,16 @@
% I.M.~Mills and W.V.~Metanomski, ICTNS (Interdivisional Committee
% on Terminology, Nomenclature and Symbols), dec 1999,
% \url{https://old.iupac.org/standing/idcns/italic-roman_dec99.pdf}.
+% \bibitem{KVO} \emph{The \textsf{kvoptions} package}, Heiko Oberdiek, CTAN,
+% v3.13 2019/11/29.
+% \bibitem{KV} \emph{The \textsf{keyval} package}, David Carlisle, CTAN,
+% v1.15 2014/10/28.
% \bibitem{VECT} \emph{\textsf{esvect} -- Typesetting vectors with beautiful
% arrow with \LaTeXe}, Eddie Saudrais, CTAN, v1.3 2013/07/11.
% \bibitem{AMS} \emph{\textsf{amsmath} -- \AmS\ mathmatical facilities for \LaTeX},
% Frank Mittelbach, Rainer Schöpf, Michael Downes, Davis M.~Jones, David Carlisle,
% CTAN, v2.17n 2022/04/08.
-% \bibitem{TOOL} \emph{The \textsf{mathtool} package}, Morten Høgholm, Lars Madsen, CTAN,
+% \bibitem{TOOL} \emph{The \textsf{mathtools} package}, Morten Høgholm, Lars Madsen, CTAN,
% v1.29 2022/06/29.
% \bibitem{FIXM} \emph{The \textsf{fixmath} package for \LaTeXe}, Walter Schmidt,
% CTAN, v0.9 2000/04/11.
@@ -1181,10 +1376,11 @@
% \bibitem{SYST} \emph{L'extension pour \TeX\ et \LaTeX\ \textsf{systeme}},
% Christian Tellechea, CTAN v0.32 2019/01/13.
% \bibitem{SPAL} \emph{The \textsf{spalign} package}, Joseph Rabinoff, CTAN, 2016/10/05.
-% \bibitem{FR} \emph{L'extension \textsf{frenchmath}}, Antoine Missier, CTAN, v2.3 2022/12/26.
+% \bibitem{FR} \emph{L'extension \textsf{frenchmath}}, Antoine Missier, CTAN, v2.4 2023/01/22.
% \bibitem{BRACKET} \emph{Intelligent brackets -- The \textsf{ibrackets} package}
-% Antoine Missier, CTAN, v1.0, 2022/12/19.
-% \bibitem{LSHORT} \emph{The Not So Short Introduction to \LaTeXe}, the \textsf{lshort} package by
+% Antoine Missier, CTAN, v1.1, 2022/12/26.
+% \bibitem{LSHORT} \emph{The Not So Short Introduction to \LaTeXe},
+% the \textsf{lshort} package by
% Tobias Oetiker, Hubert Partl, Irene Hyna and Elisabeth Schlegl, CTAN, v6.4 2021/04/09.
% \url{http://tug.ctan.org/info/lshort/english/lshort.pdf}.
% \bibitem{COMP} \emph{The \LaTeX\ Companion}, Frank Mittelbach, Michel Goossens,
diff --git a/macros/latex/contrib/mismath/mismath.pdf b/macros/latex/contrib/mismath/mismath.pdf
index 0e8f3a9dda..0645cea7fb 100644
--- a/macros/latex/contrib/mismath/mismath.pdf
+++ b/macros/latex/contrib/mismath/mismath.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf
index 9e5d8c6476..92d5440f79 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
index 28b9e5b397..1f7bc60547 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
@@ -2,9 +2,9 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode}
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
-\documentclass[a4paper,11pt]{article}
-\def\TPversion{0.1.2}
-\def\TPdate{8 Février 2023}
+\documentclass[french,a4paper,11pt]{article}
+\def\TPversion{0.1.3}
+\def\TPdate{10 Février 2023}
\usepackage[executable=python.exe]{pyluatex}
\usepackage[table,svgnames]{xcolor}
\usepackage{amsmath,amssymb}
@@ -55,6 +55,7 @@
\usepackage[french]{babel}
\usepackage[most]{tcolorbox}
+\usetikzlibrary{calc}
\tcbuselibrary{minted}
\NewTCBListing{PresentationCode}{ O{blue} m }{%
sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
@@ -85,7 +86,23 @@
#2
}
+\tcbset{vignettes/.style={%
+ nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
+ boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,%
+ }
+}
+
+\tcbset{vignetteMaJ/.style={%
+ fontupper={\vphantom{pf}\footnotesize\ttfamily},
+ vignettes,colframe=ForestGreen!50!black,coltitle=white,colback=ForestGreen!25,%
+ overlay={\begin{tcbclipinterior}%
+ \fill[fill=ForestGreen!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{Black}{\scalebox{0.85}[0.75]{\textbf{MàJ}}}}} ($(interior.north west)+(5pt,0pt)$);%
+ \end{tcbclipinterior}}
+ }
+}
+
\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
+\newcommand\cmaj[1]{\tcbox[vignetteMaJ]{#1}\xspace}
\begin{document}
@@ -106,9 +123,9 @@
\begin{tabular}{c}
{\Huge \texttt{ResolSysteme [fr]}}\\
\\
- {\LARGE Des outils pour des} \\
+ {\LARGE Des outils pour des matrices, } \\
\\
- {\LARGE systèmes linéaires,} \\
+ {\LARGE des systèmes linéaires,} \\
\\
{\LARGE avec xint ou pyluatex.} \\
\end{tabular}
@@ -121,8 +138,6 @@
\end{minipage}
\end{center}
-\vspace{0.5cm}
-
\begin{center}
\begin{tabular}{c}
\texttt{Cédric Pierquet}\\
@@ -137,36 +152,44 @@
\smallskip
-{$\blacktriangleright$~~Des commandes pour calculer le déterminant et l'inverse de matrices carrées (2x2, 3x3 ou 4x4).}
+{$\blacktriangleright$~~Quelques commandes pour effectuer des calculs matriciels (produit, carré, puissance).}
\smallskip
-{$\blacktriangleright$~~Des commandes pour résoudre des systèmes linéaires (2x2, 3x3 ou 4x4).}
+{$\blacktriangleright$~~Des commandes pour calculer le déterminant et l'inverse de matrices carrées (2x2, 3x3 ou 4x4).}
\smallskip
+{$\blacktriangleright$~~Des commandes pour résoudre des systèmes linéaires (2x2, 3x3 ou 4x4).}
+
\vspace{1cm}
\begin{center}
\begin{tcolorbox}[enhanced,colframe=ForestGreen,colback=lightgray!5,center,width=0.95\linewidth,drop fuzzy shadow=lightgray]
+ \verb|$M=\AffMatrice(1,2 § 3,4)$, et $M^3=\MatricePuissancePY(1,2 § 3,4)(3)$.|
+
+ \medskip
+
+ La matrice $M=\AffMatrice(1,2 § 3,4)$ au cube vaut $M^3=\MatricePuissancePY(1,2 § 3,4)(3)$.
+
Le \textbf{déterminant} de $A=\begin{pNiceMatrix} -1&\frac12 \\ \frac12&4 \end{pNiceMatrix}$ est
$\det(A)=\DetMatrice[dec](-1,0.5 § 1/2,4)$.
\medskip
- L'\textbf{inverse} de la matrice $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\-2&-3&-5&-6 \end{pNiceMatrix}$ est $A^{-1}=\MatriceInversePY*[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$.
+ L'\textbf{inverse} de la matrice $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\-2&-3&-5&-6 \end{pNiceMatrix}$ est $A^{-1}=\MatriceInversePY[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$.
\medskip
- La \textbf{solution} de $\systeme[xyzt]{y+z+t=1,x+z+t=-1,x+y+t=1,x+y+z=0}$ est $\mathcal{S}=\left\lbrace\SolutionSystemePY*[d](0,1,1,1 § 1,0,1,1 § 1,1,0,1 § 1,1,1,0)(1,-1,1,0)\right\rbrace$.
+ La \textbf{solution} de $\systeme[xyzt]{y+z+t=1,x+z+t=-1,x+y+t=1,x+y+z=0}$ est $\mathcal{S}=\left\lbrace\SolutionSystemePY[d](0,1,1,1 § 1,0,1,1 § 1,1,0,1 § 1,1,1,0)(1,-1,1,0)\right\rbrace$.
\end{tcolorbox}
\end{center}
\vspace{0.5cm}
-%\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
+\hfill{}\textit{Merci à Denis Bitouzé et à Gilles Le Bourhis pour leurs retours et idées !}
-\hfill{}\textit{Merci à Denis Bitouzé pour leurs retours et idées !}
+\smallskip
\vfill
@@ -198,9 +221,10 @@
\subsection{Introduction}
\begin{noteblock}
-L'idée est de \textit{proposer} des outils pour travailler sur des systèmes linéaires (de taille réduite !) :
+La package \textit{propose} des outils pour travailler sur des matrices ou des systèmes linéaires (de taille réduite !) :
\begin{itemize}
+ \item en calculant des produits matriciels \textit{simples} (dimensions réduites) ;
\item en affichant la \textbf{solution} (si elle existe) ;
\item en affichant le \textbf{déterminant} et l'éventuelle \textbf{inverse} de la matrice des coefficients.
\end{itemize}
@@ -215,7 +239,7 @@ L'idée est de \textit{proposer} des outils pour travailler sur des systèmes li
\item via \textsf{python} et le package \textsf{pyluatex} (à charger manuellement du fait des options spécifiques) pour des formats \textbf{2x2}, \textbf{3x3} ou \textbf{4x4}.
\end{itemize}
-Il n'est pas prévu -- pour le moment -- de travailler sur des matrices/systèmes plus grands.
+Il n'est pas prévu -- pour le moment -- de travailler sur des matrices/systèmes plus grands, car l'idée est de pouvoir formater le résultat, ce qui se fait coefficient par coefficient.
\end{importantblock}
\begin{warningblock}
@@ -232,9 +256,8 @@ La méthode par \textsf{python} utilise quoi qu'il en soit le module \texttt{sym
Le package charge les packages suivantes :
\begin{itemize}
- \item \texttt{xintexpr} et \texttt{xinttools} ;
+ \item \texttt{xintexpr}, \texttt{xinttools}, \texttt{xstring} et \texttt{listofitems} ;
\item \texttt{sinuitx}, \texttt{nicefrac} et \texttt{nicematrix} ;
- \item \texttt{xstring} et \texttt{listofitems}.
\end{itemize}
Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} (obligatoire pour \textsf{pyluatex} !!) ou \textsf{xelatex}.
@@ -248,6 +271,20 @@ Les nombres sont formatés par la commande \texttt{\textbackslash num} de \texts
L'affichage des matrices est gérée par le package \textsf{nicematrix}, et des options spécifiques \textit{simples} pourront être placées dans les différentes commandes.
\end{importantblock}
+\subsection{Fichiers d'exemples}
+
+\begin{noteblock}
+En marge de la présente documentation, compilée en \textsf{lualatex} avec \textsf{shell-escape}, deux fichiers avec des exemples d'utilisation sont proposés :
+
+\begin{itemize}
+ \item \texttt{ResolSysteme-exemples} pour les commandes disponibles en version classique (\textsf{xint}) ;
+ \item \texttt{ResolSysteme-exemples-pyluatex} pour les commandes disponibles en version python (\textsf{pyluatex}).
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{noteblock}
+
+\pagebreak
+
\subsection{Chargement du package, et option}
\begin{importantblock}
@@ -265,6 +302,16 @@ Le package peut donc se charger de deux manières différentes, suivant si l'uti
\usepackage[pyluatex]{ResolSysteme}
\end{PresentationCode}
+\part{Historique}
+
+\verb|v0.1.3|~:~~~~Ajout de commandes pour du calcul matriciel (de taille raisonnable) + inversion comportement des commandes étoilées.
+
+\verb|v0.1.2|~:~~~~Ajout d'une commande d'affichage (formaté) d'une matrice 2x2, 3x3 ou 4x4.
+
+\verb|v0.1.1|~:~~~~Correction d'un bug avec le caractère \og ; \fg.
+
+\verb|v0.1.0|~:~~~~Version initiale.
+
\pagebreak
\part{Commandes}
@@ -287,7 +334,7 @@ En \textit{interne}, le code utilise une commande pour formater un résultat sou
Concernant cette commande, qui est dans un bloc \texttt{ensuremath} :
\begin{itemize}
- \item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+ \item \cmaj{0.1.3} la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} sur le numérateur ;
\item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
\begin{itemize}
\item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
@@ -302,23 +349,18 @@ Concernant cette commande, qui est dans un bloc \texttt{ensuremath} :
\end{tipblock}
\begin{PresentationCode}{listing only}
-\ConvVersFrac{-10+1/3*(-5/16)} %sortie par défaut (fraction avec - sur numérateur)
-
-\ConvVersFrac*{-10+1/3*(-5/16)} %sortie avec - avant la fraction
-
-\ConvVersFrac*[d]{-10+1/3*(-5/16)} %sortie en displaystyle
-
+\ConvVersFrac{-10+1/3*(-5/16)} %sortie par défaut
+\ConvVersFrac*{-10+1/3*(-5/16)} %sortie fraction avec - sur numérateur
+\ConvVersFrac[d]{-10+1/3*(-5/16)} %sortie en displaystyle
\ConvVersFrac[n]{-10+1/3*(-5/16)} %sortie en nicefrac
-
\ConvVersFrac[dec=4]{-10+1/3*(-5/16)} %sortie en décimal arrondi à 0,0001
-
\ConvVersFrac{2+91/7} %entier correctement formaté
\end{PresentationCode}
\begin{PresentationCode}{text only}
\hfill\ConvVersFrac{-10+1/3*(-5/16)} \qquad
\ConvVersFrac*{-10+1/3*(-5/16)} \qquad
-\ConvVersFrac*[d]{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac[d]{-10+1/3*(-5/16)} \qquad
\ConvVersFrac[n]{-10+1/3*(-5/16)} \qquad
\ConvVersFrac[dec=4]{-10+1/3*(-5/16)} \qquad
\ConvVersFrac{2+91/7}\hfill~
@@ -345,7 +387,7 @@ Les \textit{transformations} en fraction devraient pouvoir fonctionner avec des
\subsection{La commande}
\begin{cautionblock}
-La première commande (matricielle) est dédiée à l'affichage d'une matrice \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} :
+La première commande (matricielle) est dédiée à l'affichage d'une matrice \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} (\texttt{python} est ici non nécessaire):
\begin{itemize}
\item en saisissant les coefficients via une syntaxe propre au package (l'affichage est géré en interne par \textsf{nicematrix}) ;
@@ -356,7 +398,7 @@ La première commande (matricielle) est dédiée à l'affichage d'une matrice \t
\begin{PresentationCode}{listing only}
%commande disponible avec les deux versions, pyluatex ou non
-\AffMatrice(*)[option de formatage](matrice)
+\AffMatrice(*)[option de formatage]<(matrice)
\end{PresentationCode}
\subsection{Utilisation}
@@ -365,7 +407,7 @@ La première commande (matricielle) est dédiée à l'affichage d'une matrice \t
Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
\begin{itemize}
- \item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+ \item \cmaj{0.1.3} la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} sur le numérateur ;
\item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
\begin{itemize}
\item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
@@ -388,7 +430,97 @@ et $C=\AffMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\begin{PresentationCode}{}
On considère la matrice
-$M=\AffMatrice*[d]<cell-space-limits=2pt>(1+1/4,0,3+4/5 § 0,1,-5/3 § 1/2,0.45,6/7)$.
+$M=\AffMatrice[d]<cell-space-limits=2pt>(1+1/4,0,3+4/5 § 0,1,-5/3 § 1/2,0.45,6/7)$.
+\end{PresentationCode}
+
+\pagebreak
+
+\section{Calculs matriciels \og simples \fg}
+
+\subsection{Introduction}
+
+\begin{cautionblock}
+L'idée est de proposer des commandes pour effectuer des calculs matriciels \textit{simples} sur des matrices :
+
+\begin{itemize}
+ \item des produits matriciels :
+ \begin{itemize}[label=$\bullet$]
+ \item $(1\times2)\times(2\times1)$ ;
+ \item $(1\times2)\times(2\times2)$ ;
+ \item $(2\times2)\times(2\times2)$ ;
+ \item $(2\times2)\times(2\times1)$ ;
+ \item $(1\times3)\times(3\times1)$ ;
+ \item $(1\times3)\times(3\times3)$ ;
+ \item $(3\times3)\times(3\times3)$ ;
+ \item $(3\times3)\times(3\times1)$ ;
+ \end{itemize}
+ \item le carré d'une matrice 2x2 ou 3x3 ;
+ \item la puissance d'une matrice 2x2 ou 3x3 ou 4x4 (via \textsf{python}).
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+%commandes disponible avec les deux versions, pyluatex ou non
+\ProduitMatrices(*)[option de formatage]<options nicematrix>(matrice 1)(matrice 2)[Clé]
+\CarreMatrice(*)[option de formatage]<options nicematrix>(matrice)(-5,6 § 1,4)[Clé]
+
+%commande disponible avec l'option pyluatex
+\MatricePuissancePY(*)[option de formatage]<options nicematrix>(matrice)(puissance)[Clé]
+\end{PresentationCode}
+
+\begin{warningblock}
+Dans le cas où le produit matriciel n'existe pas, ou ne rentre pas dans le cadre des cas possibles, rien ne sera affiché !
+\end{warningblock}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant ces commandes, qui sont à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+ \item \cmaj{0.1.3} la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} sur le numérateur ;
+ \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+ \begin{itemize}
+ \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+ \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+ \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+ \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+ \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+ \end{itemize}
+ \item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
+ \item les arguments suivants, \textit{obligatoires} et entre \textsf{(...)}, sont quant à eux, les matrices données par leurs coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}) ou la matrice et la puissance ;
+ \item le dernier argument, \textit{optionnel} et entre \textsf{[...]} propose l'unique \frquote{clé} \Cle{Aff} pour afficher le calcul avant le résultat.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{}
+$\ProduitMatrices(-5,6 § 1,4)(2 § 7)[Aff]$ et $\ProduitMatrices(-5,6 § 1,4)(2 § 7)$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+$\ProduitMatrices[dec](0.5,0.3,0.2)(0.75,0.1,0.15 § 0.4,0.4,0.2 § 0.6,0.1,0.3)[Aff]$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+$\CarreMatrice(-5,6 § 1,4)[Aff]$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+$\CarreMatrice(-5,6,8 § 1,4,-9 § 1,-1,1)[Aff]$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+$\MatricePuissancePY(1,1 § 5,-2)(7)[Aff]$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+$\MatricePuissancePY(1,1,-1 § 5,-2,1 § 0,5,2)(3)[Aff]$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+$\MatricePuissancePY(1,1,1,1 § 5,-2,1,5 § 0,5,2,-1 § 0,1,1,1)(5)[Aff]$
\end{PresentationCode}
\pagebreak
@@ -421,7 +553,7 @@ La deuxième commande (matricielle) disponible est pour calculer le déterminant
Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
\begin{itemize}
- \item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+ \item \cmaj{0.1.3} la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} sur le numérateur ;
\item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
\begin{itemize}
\item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
@@ -449,8 +581,8 @@ $\det(A)=\DetMatrice[dec](-1,0.5 § 1/2,4)$.
\begin{PresentationCode}{}
%version classique
-Le dét. de $A=\AffMatrice*[t](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$ est
-$\det(A) \approx \DetMatrice[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
+Le dét. de $A=\AffMatrice[t](-1,1/3,4 § -1/3,4,-1 § -1,0,0)$ est
+$\det(A) \approx \DetMatrice[dec=3](-1,1/3,4 § -1/3,4,-1 § -1,0,0)$.
\end{PresentationCode}
\begin{PresentationCode}{}
@@ -461,7 +593,7 @@ $\det(A)=\DetMatricePY(1,2 § 3,4)$.
\begin{PresentationCode}{}
Le dét. de $A=\AffMatrice[dec](-1,0.5 § 1/2,4)$ est
-$\det(A)=\DetMatricePY*[d](-1,0.5 § 1/2,4)$.\end{PresentationCode}
+$\det(A)=\DetMatricePY[d](-1,0.5 § 1/2,4)$.\end{PresentationCode}
\begin{PresentationCode}{}
%version python
@@ -469,6 +601,8 @@ Le dét. de $A=\AffMatrice(-1,1/3,4 § 1/3,4,-1 § -1,0,0)$ est
$\det(A) \approx \DetMatricePY[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
\end{PresentationCode}
+\pagebreak
+
\section{Inverse d'une matrice}
\subsection{Introduction}
@@ -485,10 +619,10 @@ La troisième commande (matricielle) disponible est pour calculer l'éventuelle
\begin{PresentationCode}{listing only}
%version classique
-\MatriceInverse(*)[option de formatage]<options nicematrix>(matrice)
+\MatriceInverse(*)[option de formatage]<options nicematrix>(matrice)[Clé]
%version python
-\MatriceInversePY(*)[option de formatage]<options nicematrix>(matrice)
+\MatriceInversePY(*)[option de formatage]<options nicematrix>(matrice)[Clé]
\end{PresentationCode}
\subsection{Utilisation}
@@ -497,7 +631,7 @@ La troisième commande (matricielle) disponible est pour calculer l'éventuelle
Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
\begin{itemize}
- \item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+ \item \cmaj{0.1.3} la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} sur le numérateur ;
\item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
\begin{itemize}
\item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
@@ -507,7 +641,8 @@ Concernant cette commande, qui est à insérer dans un environnement \textit{mat
\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
\end{itemize}
\item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
- \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}).
+ \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}) ;
+ \item le dernier argument, \textit{optionnel} et entre \textsf{[...]} propose l'unique \frquote{clé} \Cle{Aff} pour afficher le calcul avant le résultat.
\end{itemize}
À noter que si la matrice n'est pas inversible, le texte \texttt{Matrice non inversible} est affiché.
\end{tipblock}
@@ -521,22 +656,24 @@ $A^{-1}=\MatriceInverse<cell-space-limits=2pt>(1,2 § 3,4)$.
\begin{PresentationCode}{}
%version classique
L'inverse de $A=\AffMatrice(1,2,3 § 4,5,6 § 7,8,8)$ est
-$A^{-1}=\MatriceInverse[n]<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+$A^{-1}=\MatriceInverse[n]<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)[Aff]$.
\end{PresentationCode}
\begin{PresentationCode}{}
%version python
L'inverse de $A=\AffMatrice(1,2 § 3,4)$ est
-$A^{-1}=\MatriceInversePY*[d]<cell-space-limits=2pt>(1,2 § 3,4)$.
+$A^{-1}=\MatriceInversePY[d]<cell-space-limits=2pt>(1,2 § 3,4)[Aff]$.
\end{PresentationCode}
\begin{PresentationCode}{}
%version python
L'inv. de $A=\AffMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$ est
$A^{-1}=
-\MatriceInversePY*[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$.
+\MatriceInversePY[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$.
\end{PresentationCode}
+\pagebreak
+
\section{Résolution d'un système linéaire}
\subsection{Introduction}
@@ -553,10 +690,10 @@ La deuxième commande (matricielle) disponible est pour déterminer l'éventuell
\begin{PresentationCode}{listing only}
%version classique
-\SolutionSysteme(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[opt Matrice]
+\SolutionSysteme(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[Clé]
%version python
-\SolutionSystemePY(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[opt Matrice]
+\SolutionSystemePY(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[Clé]
\end{PresentationCode}
\subsection{Utilisation}
@@ -565,7 +702,7 @@ La deuxième commande (matricielle) disponible est pour déterminer l'éventuell
Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
\begin{itemize}
- \item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+ \item \cmaj{0.1.3} la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} sur le numérateur ;
\item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
\begin{itemize}
\item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
@@ -577,7 +714,7 @@ Concernant cette commande, qui est à insérer dans un environnement \textit{mat
\item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
\item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $A$ donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}) ;
\item le quatrième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $B$ donnée par ses coefficients \textsf{b11,b21,...} (syntaxe héritée de \texttt{sympy}) ;
- \item le dernier argument, \textit{optionnel} et entre \textsf{[...]}, permet -- grâce à \Cle{Matrice} -- de présenter le vecteur solution.
+ \item le dernier argument, \textit{optionnel} et entre \textsf{[...]}, permet -- grâce à la \textit{clé} \Cle{Matrice} -- de présenter le vecteur solution.
\end{itemize}
À noter que si la matrice n'est pas inversible, le texte \texttt{Matrice non inversible} est affiché.
\end{tipblock}
@@ -585,7 +722,7 @@ Concernant cette commande, qui est à insérer dans un environnement \textit{mat
\begin{PresentationCode}{}
%version classique
La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
-\left\lbrace \SolutionSysteme*[d](3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.\\
+\left\lbrace \SolutionSysteme[d](3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.\\
\end{PresentationCode}
\begin{PresentationCode}{}
@@ -602,7 +739,6 @@ est $\mathcal{S}=%
\SolutionSystemePY%
[dec]<cell-space-limits=2pt>%
(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)(-10,0,4,7)%
- [Matrice]
\right\rbrace$.
\end{PresentationCode}
@@ -623,12 +759,16 @@ Elles sont accessibles en \textit{natif} une fois l'option \textsf{lua} activée
\end{cautionblock}
\begin{PresentationCodePython}{listing only}
+#variables symboliques (pour du 4x4 maxi)
import sympy as sy
x = sy.Symbol('x')
y = sy.Symbol('y')
z = sy.Symbol('z')
t = sy.Symbol('t')
+\end{PresentationCodePython}
+\begin{PresentationCodePython}{listing only}
+#résolution de systèmes
def resol_systeme_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,u) :
solution=sy.solve([a*x+b*y+c*z+d*t-e,f*x+g*y+h*z+i*t-j,k*x+l*y+m*z+n*t-o,p*x+q*y+r*z+s*t-u],[x,y,z,t])
return solution
@@ -640,7 +780,10 @@ def resol_systeme_TT(a,b,c,d,e,f,g,h,i,j,k,l) :
def resol_systeme_DD(a,b,c,d,e,f) :
solution=sy.solve([a*x+b*y-c,d*x+e*y-f],[x,y])
return solution
+\end{PresentationCodePython}
+\begin{PresentationCodePython}{listing only}
+#déterminant d'une matrice
def det_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
DetMatTmp = MatTmp.det()
@@ -655,7 +798,10 @@ def det_matrice_DD(a,b,c,d) :
MatTmp = sy.Matrix(([a,b],[c,d]))
DetMatTmp = MatTmp.det()
return DetMatTmp
+\end{PresentationCodePython}
+\begin{PresentationCodePython}{listing only}
+#inverse d'une martrice
def inverse_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
DetMatTmp = MatTmp.inv()
@@ -672,14 +818,22 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
return InvMatTmp
\end{PresentationCodePython}
-\pagebreak
-
-\part{Historique}
-
-\verb|v0.1.2|~:~~~~Ajout d'une commande d'affichage (formaté) d'une matrice 2x2, 3x3 ou 4x4
+\begin{PresentationCodePython}{listing only}
+#puissance d'une matrice
+def puissance_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,puiss) :
+ MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+ PuissMatTmp = MatTmp**puiss
+ return PuissMatTmp
-\verb|v0.1.1|~:~~~~Correction d'un bug avec le caractère \og ; \fg{}
+def puissance_matrice_TT(a,b,c,d,e,f,g,h,i,puiss) :
+ MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+ PuissMatTmp = MatTmp**puiss
+ return PuissMatTmp
-\verb|v0.1.0|~:~~~~Version initiale
+def puissance_matrice_DD(a,b,c,d,puiss) :
+ MatTmp = sy.Matrix(([a,b],[c,d]))
+ PuissMatTmp = MatTmp**puiss
+ return PuissMatTmp
+\end{PresentationCodePython}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf
index 2f1f0191c2..e9f019288e 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex
index 7d891b08a5..c27148ec3a 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex
@@ -1,14 +1,15 @@
+% !TeX document-id = {fc3853a9-0c9c-4d02-b763-6dc6c85d34db}
% !TeX TXS-program:compile = txs:///lualatex/[--shell-escape]
\documentclass[french,a4paper,10pt]{article}
-\def\RSver{0.1.2}
+\def\RSver{0.1.3}
\usepackage[margin=1.5cm]{geometry}
\usepackage[executable=python.exe]{pyluatex}
\usepackage[pyluatex]{ResolSysteme}
\usepackage{systeme}
+\usepackage{babel}
\usepackage[most]{tcolorbox}
\sisetup{locale=FR,output-decimal-marker={,}}
-\usepackage{babel}
\newtcblisting{ShowCodeTeX}[1][]{colback=white,colframe=red!75!black,listing options={style=tcblatex},#1}
\begin{document}
@@ -30,10 +31,34 @@
\begin{ShowCodeTeX}
On considère les matrices $A=\AffMatrice(1,2 § 3,4)$
-et $B=\AffMatrice*[n](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$
+et $B=\AffMatrice[n](-1,-1/3,4 § 1/3,4,-1 § -1,0,0)$
et $C=\AffMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{ShowCodeTeX}
+\section{Calculs avec des matrices, 2x2 ou 3x3}
+
+\begin{ShowCodeTeX}
+$\ProduitMatrices(1,2)(3 § 4)[Aff]$ et $\ProduitMatrices(1,2)(3,4 § 5,6)[Aff]$ \\
+$\ProduitMatrices(-5,6 § 1,4)(2 § 7)[Aff]$ et $\ProduitMatrices(-5,6 § 1,4)(2,-4 § 7,0)[Aff]$
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+$\ProduitMatrices(1,2,3)(4 § 5 § 6)[Aff]$ et $\ProduitMatrices(1,2,3)(1,1,1 § 2,1,5 § 0,5,-6)[Aff]$\\
+$\ProduitMatrices(1,1,1 § 2,1,5 § 0,5,-6)(1 § 2 § 3)[Aff]$ et
+$\ProduitMatrices(1,1,1 § 2,1,5 § 0,5,-6)(1,2,3 § -5,-4,2 § 3,3,10)[Aff]$
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+$\CarreMatrice(-5,6 § 1,4)[Aff]$ \\
+$\CarreMatrice(-5,6,8 § 1,4,-9 § 1,-1,1)[Aff]$
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+$\MatricePuissancePY(1,1 § 5,-2)(7)[Aff]$\\
+$\MatricePuissancePY(1,1,-1 § 5,-2,1 § 0,5,2)(3)[Aff]$ \\
+$\MatricePuissancePY(1,1,1,1 § 5,-2,1,5 § 0,5,2,-1 § 0,1,1,1)(5)[Aff]$
+\end{ShowCodeTeX}
+
\section{Inverse d'une matrice, 2x2 ou 3x3 ou 4x4}
\begin{ShowCodeTeX}
@@ -53,7 +78,7 @@ $A^{-1}=\MatriceInversePY<cell-space-limits=2pt>(1,2 § 3,6)$.
\begin{ShowCodeTeX}
L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
-$A^{-1}=\MatriceInversePY*[d]<cell-space-limits=2pt>(1,2 § 3,4)$.
+$A^{-1}=\MatriceInversePY[d]<cell-space-limits=2pt>(1,2 § 3,4)$.
\end{ShowCodeTeX}
\begin{ShowCodeTeX}
@@ -68,7 +93,7 @@ $A^{-1}=\MatriceInversePY*<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
\begin{ShowCodeTeX}
L'inverse de $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\2&-3&-5&-6 \end{pNiceMatrix}$
-est $A^{-1}=\MatriceInversePY*[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
+est $A^{-1}=\MatriceInversePY[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{ShowCodeTeX}
\section{Résolution d'un système, 2x2 ou 3x3 ou 4x4}
@@ -85,7 +110,7 @@ La solution de $\systeme{x+2y=-5,4x+8y=1}$ est $\mathcal{S}=%
\begin{ShowCodeTeX}
La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
-\left\lbrace \SolutionSystemePY*[d](-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
+\left\lbrace \SolutionSystemePY[d](-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
\end{ShowCodeTeX}
\begin{ShowCodeTeX}
@@ -100,17 +125,15 @@ La solution de $\systeme{x+y+z=-1,3x+2y-z=-5,-x-y+2z=0}$ est donnée par $X=%
\begin{ShowCodeTeX}
La solution de $\systeme[xyzt]{y+z+t=1,x+z+t=-1,x+y+t=1,x+y+z=0}$ est $\mathcal{S}=%
-\left\lbrace\SolutionSystemePY*[d](0,1,1,1 § 1,0,1,1 § 1,1,0,1 § 1,1,1,0)(1,-1,1,0)\right\rbrace$.
+\left\lbrace\SolutionSystemePY[d](0,1,1,1 § 1,0,1,1 § 1,1,0,1 § 1,1,1,0)(1,-1,1,0)\right\rbrace$.
\end{ShowCodeTeX}
\begin{ShowCodeTeX}
-La solution de $\systeme[xyzt]{x+2y+3z+4t=-10,5x+6y+7z=0,x+y+z+t=4,-2x-3y-5z-6t=7}$ est $\mathcal{S}=
-\left\lbrace
+La solution de $\systeme[xyzt]{x+2y+3z+4t=-10,5x+6y+7z=0,x+y+z+t=4,-2x-3y-5z-6t=7}$ est $X=
\SolutionSystemePY
[dec]<cell-space-limits=2pt>
(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)(-10,0,4,7)
- [Matrice]
-\right\rbrace$.
+ [Matrice]$
\end{ShowCodeTeX}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf
index 7a2d7f4576..b331fac8ce 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex
index 2bf3f3b252..4ea7128787 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex
@@ -2,7 +2,7 @@
% !TeX TXS-program:compile = txs:///pdflatex
\documentclass[french,a4paper,10pt]{article}
-\def\RSver{0.1.2}
+\def\RSver{0.1.3}
\usepackage[margin=1.5cm]{geometry}
\usepackage{ResolSysteme}
\usepackage{systeme}
@@ -29,10 +29,28 @@
\begin{ShowCodeTeX}
On considère les matrices $A=\AffMatrice(1,2 § 3,4)$
-et $B=\AffMatrice*[n](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$
+et $B=\AffMatrice[n](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$
et $C=\AffMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{ShowCodeTeX}
+\section{Calculs avec des matrices, 2x2 ou 3x3}
+
+\begin{ShowCodeTeX}
+$\ProduitMatrices(1,2)(3 § 4)[Aff]$ et $\ProduitMatrices(1,2)(3,4 § 5,6)[Aff]$ \\
+$\ProduitMatrices(-5,6 § 1,4)(2 § 7)[Aff]$ et $\ProduitMatrices(-5,6 § 1,4)(2,-4 § 7,0)[Aff]$
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+$\ProduitMatrices(1,2,3)(4 § 5 § 6)[Aff]$ et $\ProduitMatrices(1,2,3)(1,1,1 § 2,1,5 § 0,5,-6)[Aff]$\\
+$\ProduitMatrices(1,1,1 § 2,1,5 § 0,5,-6)(1 § 2 § 3)[Aff]$ et
+$\ProduitMatrices(1,1,1 § 2,1,5 § 0,5,-6)(1,2,3 § -5,-4,2 § 3,3,10)[Aff]$
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+$\CarreMatrice(-5,6 § 1,4)[Aff]$ \\
+$\CarreMatrice(-5,6,8 § 1,4,-9 § 1,-1,1)[Aff]$
+\end{ShowCodeTeX}
+
\section{Déterminant d'une matrice, 2x2 ou 3x3}
\begin{ShowCodeTeX}
@@ -41,8 +59,8 @@ $\det(A)=\DetMatrice(1,2 § 3,4)$.
\end{ShowCodeTeX}
\begin{ShowCodeTeX}
-Le déterminant de $A=\AffMatrice*(-1,0.5 § 1/2,4)$ est
-$\det(A)=\DetMatrice[dec](-1,0.5 § 1/2,4)$.
+Le déterminant de $A=\AffMatrice(-1,0.5 § -1/2,4)$ est
+$\det(A)=\DetMatrice[dec](-1,0.5 § -1/2,4)$.
\end{ShowCodeTeX}
\begin{ShowCodeTeX}
@@ -106,7 +124,7 @@ La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
\begin{ShowCodeTeX}
La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
-\left\lbrace \SolutionSysteme*[d](3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.
+\left\lbrace \SolutionSysteme[d](3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.
\end{ShowCodeTeX}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty b/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty
index 930cfd33e9..5ae5c8fe94 100644
--- a/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty
+++ b/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty
@@ -2,7 +2,8 @@
% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ResolSysteme}[2023/02/08 v0.1.2 Travailler sur un systeme lineaire avec xint ou pyluatex]
+\ProvidesPackage{ResolSysteme}[2023/02/10 v0.1.3 Travailler sur un systeme lineaire avec xint ou pyluatex]
+% 0.1.3 Produit matriciel + Puissance matricielle (2x2/3x3 carré en normal, 2x2/3x3/4x4 avec python) + Inversion comportement commandes étoilées
% 0.1.2 Ajout pour afficher une matrice, à l'aide d'une syntaxe similaire aux autres commandes
% 0.1.1 Correction d'un bug avec le séparateur ";"
% 0.1.0 Version initiale
@@ -74,12 +75,27 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
InvMatTmp = MatTmp.inv()
return InvMatTmp
+def puissance_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,puiss) :
+ MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+ PuissMatTmp = MatTmp**puiss
+ return PuissMatTmp
+
+def puissance_matrice_TT(a,b,c,d,e,f,g,h,i,puiss) :
+ MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+ PuissMatTmp = MatTmp**puiss
+ return PuissMatTmp
+
+def puissance_matrice_DD(a,b,c,d,puiss) :
+ MatTmp = sy.Matrix(([a,b],[c,d]))
+ PuissMatTmp = MatTmp**puiss
+ return PuissMatTmp
+
\end{python}
\fi
%------conversion en fraction, version interne !
\NewDocumentCommand\ConvVersFrac{ s O{} m }{%
- %*=moins devant
+ %*=moins sur le numérateur
%2=argument.optionnel[d/t/dec=...]
%3=argument mandataire {calcul ou fraction}
\def\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B
@@ -90,45 +106,45 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\ifblank{#2}%
{%
\IfBooleanTF{#1}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
{%
\ifthenelse{\numerateur < 0}%
- {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
- {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
}%
- {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
}%
{}%si l'argument optionnel est vide
\IfStrEq{#2}{d}%
{%
\IfBooleanTF{#1}%
+ {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
{%
\ifthenelse{\numerateur < 0}%
- {\ensuremath{-\dfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
- {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {\ensuremath{-\dfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
}%
- {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
}%
{}%si l'argument optionnel est vide
\IfStrEq{#2}{t}%
{%
\IfBooleanTF{#1}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
{%
\ifthenelse{\numerateur < 0}%
- {\ensuremath{-\tfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
- {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {\ensuremath{-\tfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
}%
- {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
}%
{}%si l'argument optionnel est vide
\IfStrEq{#2}{n}%
{%
- \IfBooleanTF{#1}%
- {%
- \ifthenelse{\numerateur < 0}%
- {\ensuremath{-\nicefrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
- {\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}%
- }%
+ %\IfBooleanTF{#1}%
{\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ %{%
+ % \ifthenelse{\numerateur < 0}%
+ % {\ensuremath{-\nicefrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ % {\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ %}%
}%
{}%si l'argument optionnel est vide
\IfSubStr{#2}{dec}%on veut la forme décimale
@@ -150,7 +166,7 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
%------Affichage d'une matrice classique, 2x2 ou 3x3 ou 4x4
\NewDocumentCommand\AffMatrice{ s O{} D<>{} r() }{%
- %*=fractions avec - devant
+ %*=fractions avec - sur le numérateur
%2=options conversion
%3=options nicematrix
%4=matrice (,,;,,)
@@ -290,12 +306,210 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\fi
}
+
+\NewDocumentCommand\CarreMatrice{ s O{} D<>{} r() O{} }{%
+ %*=fractions avec - sur le numérateur
+ %2=options conversion
+ %3=options nicematrix
+ %4=matrice (,,;,,)
+ %5=affichage énoncé avec [Aff]
+ %---------------------
+ %lectures des matrices
+ \setsepchar{§/,}%
+ \readlist*\MAMATRICEA{#4}%
+ %les coeffs de A
+ \ifnum \MAMATRICEAlen=3
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[2,1]\MatD
+ \itemtomacro\MAMATRICEA[2,2]\MatE
+ \itemtomacro\MAMATRICEA[2,3]\MatF
+ \itemtomacro\MAMATRICEA[3,1]\MatG
+ \itemtomacro\MAMATRICEA[3,2]\MatH
+ \itemtomacro\MAMATRICEA[3,3]\MatI
+ %les conversions
+ \IfBooleanTF{#1}%
+ {%
+ \def\MatSQA{\ConvVersFrac*[#2]{\MatA*\MatA+\MatB*\MatD+\MatC*\MatG}}%
+ \def\MatSQB{\ConvVersFrac*[#2]{\MatA*\MatB+\MatB*\MatE+\MatC*\MatH}}%
+ \def\MatSQC{\ConvVersFrac*[#2]{\MatA*\MatC+\MatB*\MatF+\MatC*\MatI}}%
+ \def\MatSQD{\ConvVersFrac*[#2]{\MatD*\MatA+\MatE*\MatD+\MatF*\MatG}}%
+ \def\MatSQE{\ConvVersFrac*[#2]{\MatD*\MatB+\MatE*\MatE+\MatF*\MatH}}%
+ \def\MatSQF{\ConvVersFrac*[#2]{\MatD*\MatC+\MatE*\MatF+\MatF*\MatI}}%
+ \def\MatSQG{\ConvVersFrac*[#2]{\MatG*\MatA+\MatH*\MatD+\MatI*\MatG}}%
+ \def\MatSQH{\ConvVersFrac*[#2]{\MatG*\MatB+\MatH*\MatE+\MatI*\MatH}}%
+ \def\MatSQI{\ConvVersFrac*[#2]{\MatG*\MatC+\MatH*\MatF+\MatI*\MatI}}%
+ }%
+ {%
+ \def\MatSQA{\ConvVersFrac[#2]{\MatA*\MatA+\MatB*\MatD+\MatC*\MatG}}%
+ \def\MatSQB{\ConvVersFrac[#2]{\MatA*\MatB+\MatB*\MatE+\MatC*\MatH}}%
+ \def\MatSQC{\ConvVersFrac[#2]{\MatA*\MatC+\MatB*\MatF+\MatC*\MatI}}%
+ \def\MatSQD{\ConvVersFrac[#2]{\MatD*\MatA+\MatE*\MatD+\MatF*\MatG}}%
+ \def\MatSQE{\ConvVersFrac[#2]{\MatD*\MatB+\MatE*\MatE+\MatF*\MatH}}%
+ \def\MatSQF{\ConvVersFrac[#2]{\MatD*\MatC+\MatE*\MatF+\MatF*\MatI}}%
+ \def\MatSQG{\ConvVersFrac[#2]{\MatG*\MatA+\MatH*\MatD+\MatI*\MatG}}%
+ \def\MatSQH{\ConvVersFrac[#2]{\MatG*\MatB+\MatH*\MatE+\MatI*\MatH}}%
+ \def\MatSQI{\ConvVersFrac[#2]{\MatG*\MatC+\MatH*\MatF+\MatI*\MatI}}%
+ }%
+ %l'affichage
+ \IfStrEq{#5}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} & \ConvVersFrac*[#2]{\MatC} \\
+ \ConvVersFrac*[#2]{\MatD} & \ConvVersFrac*[#2]{\MatE} & \ConvVersFrac*[#2]{\MatF} \\
+ \ConvVersFrac*[#2]{\MatG} & \ConvVersFrac*[#2]{\MatH} & \ConvVersFrac*[#2]{\MatI}
+ \end{pNiceMatrix}}^2=
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} & \ConvVersFrac[#2]{\MatC} \\
+ \ConvVersFrac[#2]{\MatD} & \ConvVersFrac[#2]{\MatE} & \ConvVersFrac[#2]{\MatF} \\
+ \ConvVersFrac[#2]{\MatG} & \ConvVersFrac[#2]{\MatH} & \ConvVersFrac[#2]{\MatI}
+ \end{pNiceMatrix}}^2=
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ {\MatSQA}&{\MatSQB}&{\MatSQC} \\
+ {\MatSQD}&{\MatSQE}&{\MatSQF} \\
+ {\MatSQG}&{\MatSQH}&{\MatSQI}
+ \end{pNiceMatrix}%
+ \fi
+ \ifnum \MAMATRICEAlen=2
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[2,1]\MatC
+ \itemtomacro\MAMATRICEA[2,2]\MatD
+ %les conversions
+ \IfBooleanTF{#1}%
+ {%
+ \def\MatSQA{\ConvVersFrac*[#2]{\MatA*\MatA+\MatB*\MatC}}%
+ \def\MatSQB{\ConvVersFrac*[#2]{\MatA*\MatB+\MatB*\MatD}}%
+ \def\MatSQC{\ConvVersFrac*[#2]{\MatC*\MatA+\MatD*\MatC}}%
+ \def\MatSQD{\ConvVersFrac*[#2]{\MatC*\MatB+\MatD*\MatD}}%
+ }%
+ {%
+ \def\MatSQA{\ConvVersFrac[#2]{\MatA*\MatA+\MatB*\MatC}}%
+ \def\MatSQB{\ConvVersFrac[#2]{\MatA*\MatB+\MatB*\MatD}}%
+ \def\MatSQC{\ConvVersFrac[#2]{\MatC*\MatA+\MatD*\MatC}}%
+ \def\MatSQD{\ConvVersFrac[#2]{\MatC*\MatB+\MatD*\MatD}}%
+ }%
+ %l'affichage
+ \IfStrEq{#5}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} \\
+ \ConvVersFrac*[#2]{\MatC} & \ConvVersFrac*[#2]{\MatD}
+ \end{pNiceMatrix}}^2=
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} \\
+ \ConvVersFrac[#2]{\MatC} & \ConvVersFrac[#2]{\MatD}
+ \end{pNiceMatrix}}^2=
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ {\MatSQA}&{\MatSQB} \\
+ {\MatSQC}&{\MatSQD}
+ \end{pNiceMatrix}%
+ \fi
+ \ifnum \MAMATRICEAlen=4
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[1,4]\MatD
+ \itemtomacro\MAMATRICEA[2,1]\MatE
+ \itemtomacro\MAMATRICEA[2,2]\MatF
+ \itemtomacro\MAMATRICEA[2,3]\MatG
+ \itemtomacro\MAMATRICEA[2,4]\MatH
+ \itemtomacro\MAMATRICEA[3,1]\MatI
+ \itemtomacro\MAMATRICEA[3,2]\MatJ
+ \itemtomacro\MAMATRICEA[3,3]\MatK
+ \itemtomacro\MAMATRICEA[3,4]\MatL
+ \itemtomacro\MAMATRICEA[4,1]\MatM
+ \itemtomacro\MAMATRICEA[4,2]\MatN
+ \itemtomacro\MAMATRICEA[4,3]\MatO
+ \itemtomacro\MAMATRICEA[4,4]\MatP
+ %les conversions
+ \IfBooleanTF{#1}%
+ {%
+ \def\MatAffA{\ConvVersFrac*[#2]{\MatA}}%
+ \def\MatAffB{\ConvVersFrac*[#2]{\MatB}}%
+ \def\MatAffC{\ConvVersFrac*[#2]{\MatC}}%
+ \def\MatAffD{\ConvVersFrac*[#2]{\MatD}}%
+ \def\MatAffE{\ConvVersFrac*[#2]{\MatE}}%
+ \def\MatAffF{\ConvVersFrac*[#2]{\MatF}}%
+ \def\MatAffG{\ConvVersFrac*[#2]{\MatG}}%
+ \def\MatAffH{\ConvVersFrac*[#2]{\MatH}}%
+ \def\MatAffI{\ConvVersFrac*[#2]{\MatI}}%
+ \def\MatAffJ{\ConvVersFrac*[#2]{\MatJ}}%
+ \def\MatAffK{\ConvVersFrac*[#2]{\MatK}}%
+ \def\MatAffL{\ConvVersFrac*[#2]{\MatL}}%
+ \def\MatAffM{\ConvVersFrac*[#2]{\MatM}}%
+ \def\MatAffN{\ConvVersFrac*[#2]{\MatN}}%
+ \def\MatAffO{\ConvVersFrac*[#2]{\MatO}}%
+ \def\MatAffP{\ConvVersFrac*[#2]{\MatP}}%
+ }%
+ {%
+ \def\MatAffA{\ConvVersFrac[#2]{\MatA}}%
+ \def\MatAffB{\ConvVersFrac[#2]{\MatB}}%
+ \def\MatAffC{\ConvVersFrac[#2]{\MatC}}%
+ \def\MatAffD{\ConvVersFrac[#2]{\MatD}}%
+ \def\MatAffE{\ConvVersFrac[#2]{\MatE}}%
+ \def\MatAffF{\ConvVersFrac[#2]{\MatF}}%
+ \def\MatAffG{\ConvVersFrac[#2]{\MatG}}%
+ \def\MatAffH{\ConvVersFrac[#2]{\MatH}}%
+ \def\MatAffI{\ConvVersFrac[#2]{\MatI}}%
+ \def\MatAffJ{\ConvVersFrac[#2]{\MatJ}}%
+ \def\MatAffK{\ConvVersFrac[#2]{\MatK}}%
+ \def\MatAffL{\ConvVersFrac[#2]{\MatL}}%
+ \def\MatAffM{\ConvVersFrac[#2]{\MatM}}%
+ \def\MatAffN{\ConvVersFrac[#2]{\MatN}}%
+ \def\MatAffO{\ConvVersFrac[#2]{\MatO}}%
+ \def\MatAffP{\ConvVersFrac[#2]{\MatP}}%
+ }%
+ %l'affichage
+ \IfStrEq{#5}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} & \ConvVersFrac*[#2]{\MatC} & \ConvVersFrac*[#2]{\MatD} \\
+ \ConvVersFrac*[#2]{\MatE} & \ConvVersFrac*[#2]{\MatF} & \ConvVersFrac*[#2]{\MatG} & \ConvVersFrac*[#2]{\MatH} \\
+ \ConvVersFrac*[#2]{\MatI} & \ConvVersFrac*[#2]{\MatJ} & \ConvVersFrac*[#2]{\MatK} & \ConvVersFrac*[#2]{\MatL} \\
+ \ConvVersFrac*[#2]{\MatM} & \ConvVersFrac*[#2]{\MatN} & \ConvVersFrac*[#2]{\MatO} & \ConvVersFrac*[#2]{\MatP}
+ \end{pNiceMatrix}}^2=
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} & \ConvVersFrac[#2]{\MatC} & \ConvVersFrac[#2]{\MatD} \\
+ \ConvVersFrac[#2]{\MatE} & \ConvVersFrac[#2]{\MatF} & \ConvVersFrac[#2]{\MatG} & \ConvVersFrac[#2]{\MatH} \\
+ \ConvVersFrac[#2]{\MatI} & \ConvVersFrac[#2]{\MatJ} & \ConvVersFrac[#2]{\MatK} & \ConvVersFrac[#2]{\MatL} \\
+ \ConvVersFrac[#2]{\MatM} & \ConvVersFrac[#2]{\MatN} & \ConvVersFrac[#2]{\MatO} & \ConvVersFrac[#2]{\MatP}
+ \end{pNiceMatrix}}^2=
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ {\MatAffA} & {\MatAffB} & {\MatAffC} & {\MatAffD} \\
+ {\MatAffE} & {\MatAffF} & {\MatAffG} & {\MatAffH} \\
+ {\MatAffI} & {\MatAffJ} & {\MatAffK} & {\MatAffL} \\
+ {\MatAffM} & {\MatAffN} & {\MatAffO} & {\MatAffP} \\
+ \end{pNiceMatrix}%
+ \fi
+}
+
%------Commande classique, 2x2 ou 3x3
-\NewDocumentCommand\MatriceInverse{ s O{} D<>{} r() }{%
- %*=fractions avec - devant
+\NewDocumentCommand\MatriceInverse{ s O{} D<>{} r() O{} }{%
+ %*=fractions avec - sur le numérateur
%2=options conversion
%3=options nicematrix
%4=matrice (,,;,,)
+ %5=Affichage énoncé avec [Aff]
%---------------------
%lectures des matrices
\setsepchar{§/,}%
@@ -341,6 +555,24 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\def\MatInvH{\ConvVersFrac[#2]{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}}%
\def\MatInvI{\ConvVersFrac[#2]{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}}%
}%
+ \IfStrEq{#5}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} & \ConvVersFrac*[#2]{\MatC} \\
+ \ConvVersFrac*[#2]{\MatD} & \ConvVersFrac*[#2]{\MatE} & \ConvVersFrac*[#2]{\MatF} \\
+ \ConvVersFrac*[#2]{\MatG} & \ConvVersFrac*[#2]{\MatH} & \ConvVersFrac*[#2]{\MatI} \\
+ \end{pNiceMatrix}}^{-1}=
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} & \ConvVersFrac[#2]{\MatC} \\
+ \ConvVersFrac[#2]{\MatD} & \ConvVersFrac[#2]{\MatE} & \ConvVersFrac[#2]{\MatF} \\
+ \ConvVersFrac[#2]{\MatG} & \ConvVersFrac[#2]{\MatH} & \ConvVersFrac[#2]{\MatI} \\
+ \end{pNiceMatrix}}^{-1}=
+ }%
+ }{}%
\begin{pNiceMatrix}[#3]
{\MatInvA}&{\MatInvB}&{\MatInvC} \\
{\MatInvD}&{\MatInvE}&{\MatInvF} \\
@@ -372,6 +604,22 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\def\MatInvC{\ConvVersFrac[#2]{(-\MatC)/\DETMATRICE}}%
\def\MatInvD{\ConvVersFrac[#2]{(\MatA)/\DETMATRICE}}%
}%
+ \IfStrEq{#5}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} \\
+ \ConvVersFrac*[#2]{\MatC} & \ConvVersFrac*[#2]{\MatD}
+ \end{pNiceMatrix}}^{-1}=
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} \\
+ \ConvVersFrac[#2]{\MatC} & \ConvVersFrac[#2]{\MatD}
+ \end{pNiceMatrix}}^{-1}=
+ }%
+ }{}%
\begin{pNiceMatrix}[#3]
{\MatInvA}&{\MatInvB} \\
{\MatInvC}&{\MatInvD}
@@ -381,7 +629,7 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
}
\NewDocumentCommand\DetMatrice{ s O{} r() }{%
- %*=fractions avec - devant
+ %*=fractions avec - sur le numérateur
%2=options conversion
%3=matrice (,,;,,)
%---------------------
@@ -420,7 +668,7 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
}
\NewDocumentCommand\SolutionSysteme{ s O{} D<>{} r() r() O{} }{%
- %*=fractions avec - devant
+ %*=fractions avec - sur le numérateur
%2=options conversion
%3=options nicematrix
%4=matrice (,,;,,) principale
@@ -530,10 +778,408 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\fi
}
+\NewDocumentCommand\ProduitMatrices{ s O{} D<>{} r() r() O{} }{%
+ %*=fractions avec - sur le numérateur
+ %2=options conversion
+ %3=options nicematrix globales ?
+ %4=matrice (,,§,,) A
+ %5=matrice (,,§,,) B
+ %---------------------
+ %lectures des matrices et dimensions
+ \setsepchar{§/,}%
+ \readlist*\MatA{#4}%
+ \readlist*\MatB{#5}%
+ \def\NbLigMatA{\MatAlen}%
+ \def\NbLigMatB{\MatBlen}%
+ \itemtomacro\MatA[1]{\MatAligne}%
+ \itemtomacro\MatB[1]{\MatBligne}%
+ \setsepchar{,}%
+ \readlist*\TmpA{\MatAligne}%
+ \readlist*\TmpB{\MatBligne}%
+ \def\NbColMatA{\TmpAlen}%
+ \def\NbColMatB{\TmpBlen}%
+ %test de dimensions !!
+ \xintifboolexpr{\NbColMatA != \NbLigMatB}
+ {\text{Erreur de dimensions}}%
+ {
+ \xintifboolexpr{\NbLigMatA==1 'and' \NbColMatA==2 'and' \NbLigMatB==2 'and' \NbColMatB==1}% (1,2)*(2,1)
+ {%
+ \itemtomacro\MatA[1,1]\CoeffAa
+ \itemtomacro\MatA[1,2]\CoeffAb
+ \itemtomacro\MatB[1]\CoeffBa
+ \itemtomacro\MatB[2]\CoeffBb
+ \IfBooleanTF{#1}%version étoilée := moins sur num
+ {%
+ \def\MatRes{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBb}}%
+ }%
+ {%
+ \def\MatRes{\ConvVersFrac[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBb}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffAa} & \ConvVersFrac*[#2]{\CoeffAb} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffBa} \\ \ConvVersFrac*[#2]{\CoeffBb} \end{pNiceMatrix}
+ =
+ }%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffAa} & \ConvVersFrac[#2]{\CoeffAb} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffBa} \\ \ConvVersFrac[#2]{\CoeffBb} \end{pNiceMatrix}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ \MatRes
+ \end{pNiceMatrix}%
+ }{}%fin 1,2*2,1
+ \xintifboolexpr{\NbLigMatA==1 'and' \NbColMatA==2 'and' \NbLigMatB==2 'and' \NbColMatB==2}% (1,2)*(2,2)
+ {%
+ \itemtomacro\MatA[1,1]\CoeffAa
+ \itemtomacro\MatA[1,2]\CoeffAb
+ \itemtomacro\MatB[1,1]\CoeffBa
+ \itemtomacro\MatB[1,2]\CoeffBb
+ \itemtomacro\MatB[2,1]\CoeffBc
+ \itemtomacro\MatB[2,2]\CoeffBd
+ \IfBooleanTF{#1}%version étoilée := moins sur num
+ {%
+ \def\MatResA{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBc}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBb+\CoeffAb*\CoeffBd}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBc}}%
+ \def\MatResB{\ConvVersFrac[#2]{\CoeffAa*\CoeffBb+\CoeffAb*\CoeffBd}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffAa} & \ConvVersFrac*[#2]{\CoeffAb} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffBa} & \ConvVersFrac*[#2]{\CoeffBb} \\ \ConvVersFrac*[#2]{\CoeffBc} & \ConvVersFrac*[#2]{\CoeffBd} \end{pNiceMatrix}
+ =
+ }%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffAa} & \ConvVersFrac[#2]{\CoeffAb} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffBa} & \ConvVersFrac[#2]{\CoeffBb} \\ \ConvVersFrac[#2]{\CoeffBc} & \ConvVersFrac[#2]{\CoeffBd} \end{pNiceMatrix}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ \MatResA & \MatResB
+ \end{pNiceMatrix}%
+ }{}%fin 1,2*2,1
+ \xintifboolexpr{\NbLigMatA==1 'and' \NbColMatA==3 'and' \NbLigMatB==3 'and' \NbColMatB==1}% (1,3)*(3,1)
+ {%
+ \itemtomacro\MatA[1,1]\CoeffAa
+ \itemtomacro\MatA[1,2]\CoeffAb
+ \itemtomacro\MatA[1,3]\CoeffAc
+ \itemtomacro\MatB[1]\CoeffBa
+ \itemtomacro\MatB[2]\CoeffBb
+ \itemtomacro\MatB[3]\CoeffBc
+ \IfBooleanTF{#1}%version étoilée := moins sur num
+ {%
+ \def\MatRes{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBb+\CoeffAc*\CoeffBc}}%
+ }%
+ {%
+ \def\MatRes{\ConvVersFrac[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBb+\CoeffAc*\CoeffBc}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffAa} & \ConvVersFrac*[#2]{\CoeffAb} & \ConvVersFrac*[#2]{\CoeffAc} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffBa} & \ConvVersFrac*[#2]{\CoeffBb} & \ConvVersFrac*[#2]{\CoeffBc} \end{pNiceMatrix}
+ =
+ }%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffAa} & \ConvVersFrac[#2]{\CoeffAb} & \ConvVersFrac[#2]{\CoeffAc} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffBa} \\ \ConvVersFrac[#2]{\CoeffBb} \\ \ConvVersFrac[#2]{\CoeffBc} \end{pNiceMatrix}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ \MatRes
+ \end{pNiceMatrix}%
+ }{}%fin 1,3*3,1
+ \xintifboolexpr{\NbLigMatA==1 'and' \NbColMatA==3 'and' \NbLigMatB==3 'and' \NbColMatB==3}% (1,3)*(3,3)
+ {%
+ \itemtomacro\MatA[1,1]\CoeffAa
+ \itemtomacro\MatA[1,2]\CoeffAb
+ \itemtomacro\MatA[1,3]\CoeffAc
+ \itemtomacro\MatB[1,1]\CoeffBa
+ \itemtomacro\MatB[1,2]\CoeffBb
+ \itemtomacro\MatB[1,3]\CoeffBc
+ \itemtomacro\MatB[2,1]\CoeffBd
+ \itemtomacro\MatB[2,2]\CoeffBe
+ \itemtomacro\MatB[2,3]\CoeffBf
+ \itemtomacro\MatB[3,1]\CoeffBg
+ \itemtomacro\MatB[3,2]\CoeffBh
+ \itemtomacro\MatB[3,3]\CoeffBi
+ \IfBooleanTF{#1}%version étoilée := moins sur num
+ {%
+ \def\MatResA{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBd+\CoeffAc*\CoeffBg}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBb+\CoeffAb*\CoeffBe+\CoeffAc*\CoeffBh}}%
+ \def\MatResC{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBc+\CoeffAb*\CoeffBf+\CoeffAc*\CoeffBi}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBd+\CoeffAc*\CoeffBg}}%
+ \def\MatResB{\ConvVersFrac[#2]{\CoeffAa*\CoeffBb+\CoeffAb*\CoeffBe+\CoeffAc*\CoeffBh}}%
+ \def\MatResC{\ConvVersFrac[#2]{\CoeffAa*\CoeffBc+\CoeffAb*\CoeffBf+\CoeffAc*\CoeffBi}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffAa} & \ConvVersFrac*[#2]{\CoeffAb} & \ConvVersFrac*[#2]{\CoeffAc} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\CoeffBa} & \ConvVersFrac*[#2]{\CoeffBb} & \ConvVersFrac*[#2]{\CoeffBc} \\
+ \ConvVersFrac*[#2]{\CoeffBd} & \ConvVersFrac*[#2]{\CoeffBe} & \ConvVersFrac*[#2]{\CoeffBf} \\
+ \ConvVersFrac*[#2]{\CoeffBg} & \ConvVersFrac*[#2]{\CoeffBh} & \ConvVersFrac*[#2]{\CoeffBi}
+ \end{pNiceMatrix}
+ =
+ }%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffAa} & \ConvVersFrac[#2]{\CoeffAb} & \ConvVersFrac[#2]{\CoeffAc} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\CoeffBa} & \ConvVersFrac[#2]{\CoeffBb} & \ConvVersFrac[#2]{\CoeffBc} \\
+ \ConvVersFrac[#2]{\CoeffBd} & \ConvVersFrac[#2]{\CoeffBe} & \ConvVersFrac[#2]{\CoeffBf} \\
+ \ConvVersFrac[#2]{\CoeffBg} & \ConvVersFrac[#2]{\CoeffBh} & \ConvVersFrac[#2]{\CoeffBi}
+ \end{pNiceMatrix}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ \MatResA & \MatResB & \MatResC
+ \end{pNiceMatrix}%
+ }{}%fin 1,3*3,3
+ \xintifboolexpr{\NbLigMatA==2 'and' \NbColMatA==2 'and' \NbLigMatB==2 'and' \NbColMatB==1}% (2,2)*(2,1)
+ {%
+ \itemtomacro\MatA[1,1]\CoeffAa
+ \itemtomacro\MatA[1,2]\CoeffAb
+ \itemtomacro\MatA[2,1]\CoeffAc
+ \itemtomacro\MatA[2,2]\CoeffAd
+ \itemtomacro\MatB[1]\CoeffBa
+ \itemtomacro\MatB[2]\CoeffBb
+ \IfBooleanTF{#1}%version étoilée := moins sur num
+ {%
+ \def\MatResA{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBb}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\CoeffAc*\CoeffBa+\CoeffAd*\CoeffBb}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBb}}%
+ \def\MatResB{\ConvVersFrac[#2]{\CoeffAc*\CoeffBa+\CoeffAd*\CoeffBb}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffAa} & \ConvVersFrac*[#2]{\CoeffAb} \\ \ConvVersFrac*[#2]{\CoeffAc} & \ConvVersFrac*[#2]{\CoeffAd} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffBa} \\ \ConvVersFrac*[#2]{\CoeffBb} \end{pNiceMatrix}
+ =
+ }%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffAa} & \ConvVersFrac[#2]{\CoeffAb} \\ \ConvVersFrac[#2]{\CoeffAc} & \ConvVersFrac[#2]{\CoeffAd} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffBa} \\ \ConvVersFrac[#2]{\CoeffBb} \end{pNiceMatrix}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ \MatResA \\ \MatResB
+ \end{pNiceMatrix}%
+ }{}%fin 2,2*2,1
+ \xintifboolexpr{\NbLigMatA==2 'and' \NbColMatA==2 'and' \NbLigMatB==2 'and' \NbColMatB==2}% (2,2)*(2,2)
+ {%
+ \itemtomacro\MatA[1,1]\CoeffAa
+ \itemtomacro\MatA[1,2]\CoeffAb
+ \itemtomacro\MatA[2,1]\CoeffAc
+ \itemtomacro\MatA[2,2]\CoeffAd
+ \itemtomacro\MatB[1,1]\CoeffBa
+ \itemtomacro\MatB[1,2]\CoeffBb
+ \itemtomacro\MatB[2,1]\CoeffBc
+ \itemtomacro\MatB[2,2]\CoeffBd
+ \IfBooleanTF{#1}%version étoilée := moins sur num
+ {%
+ \def\MatResA{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBc}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBb+\CoeffAd*\CoeffBd}}%
+ \def\MatResC{\ConvVersFrac*[#2]{\CoeffAc*\CoeffBa+\CoeffAd*\CoeffBc}}%
+ \def\MatResD{\ConvVersFrac*[#2]{\CoeffAc*\CoeffBb+\CoeffAd*\CoeffBd}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBc}}%
+ \def\MatResB{\ConvVersFrac[#2]{\CoeffAa*\CoeffBb+\CoeffAd*\CoeffBd}}%
+ \def\MatResC{\ConvVersFrac[#2]{\CoeffAc*\CoeffBa+\CoeffAd*\CoeffBc}}%
+ \def\MatResD{\ConvVersFrac[#2]{\CoeffAc*\CoeffBb+\CoeffAd*\CoeffBd}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffAa} & \ConvVersFrac*[#2]{\CoeffAb} \\ \ConvVersFrac*[#2]{\CoeffAc} & \ConvVersFrac*[#2]{\CoeffAd} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffBa} & \ConvVersFrac*[#2]{\CoeffBb} \\ \ConvVersFrac*[#2]{\CoeffBc} & \ConvVersFrac*[#2]{\CoeffBd} \end{pNiceMatrix}
+ =
+ }%
+ {%
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffAa} & \ConvVersFrac[#2]{\CoeffAb} \\ \ConvVersFrac[#2]{\CoeffAc} & \ConvVersFrac[#2]{\CoeffAd} \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffBa} & \ConvVersFrac[#2]{\CoeffBb} \\ \ConvVersFrac[#2]{\CoeffBc} & \ConvVersFrac[#2]{\CoeffBd} \end{pNiceMatrix}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ \MatResA & \MatResB \\ \MatResC & \MatResD
+ \end{pNiceMatrix}%
+ }{}%fin 2,2*2,1
+ \xintifboolexpr{\NbLigMatA==3 'and' \NbColMatA==3 'and' \NbLigMatB==3 'and' \NbColMatB==1}% (3,3)*(3,1)
+ {%
+ \itemtomacro\MatA[1,1]\CoeffAa
+ \itemtomacro\MatA[1,2]\CoeffAb
+ \itemtomacro\MatA[1,3]\CoeffAc
+ \itemtomacro\MatA[2,1]\CoeffAd
+ \itemtomacro\MatA[2,2]\CoeffAe
+ \itemtomacro\MatA[2,3]\CoeffAf
+ \itemtomacro\MatA[3,1]\CoeffAg
+ \itemtomacro\MatA[3,2]\CoeffAh
+ \itemtomacro\MatA[3,3]\CoeffAi
+ \itemtomacro\MatB[1]\CoeffBa
+ \itemtomacro\MatB[2]\CoeffBb
+ \itemtomacro\MatB[3]\CoeffBc
+ \IfBooleanTF{#1}%version étoilée := moins sur num
+ {%
+ \def\MatResA{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBb+\CoeffAc*\CoeffBc}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\CoeffAd*\CoeffBa+\CoeffAe*\CoeffBb+\CoeffAf*\CoeffBc}}%
+ \def\MatResC{\ConvVersFrac*[#2]{\CoeffAg*\CoeffBa+\CoeffAh*\CoeffBb+\CoeffAi*\CoeffBc}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBb+\CoeffAc*\CoeffBc}}%
+ \def\MatResB{\ConvVersFrac[#2]{\CoeffAd*\CoeffBa+\CoeffAe*\CoeffBb+\CoeffAf*\CoeffBc}}%
+ \def\MatResC{\ConvVersFrac[#2]{\CoeffAg*\CoeffBa+\CoeffAh*\CoeffBb+\CoeffAi*\CoeffBc}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\CoeffAa} & \ConvVersFrac*[#2]{\CoeffAb} & \ConvVersFrac*[#2]{\CoeffAc} \\
+ \ConvVersFrac*[#2]{\CoeffAd} & \ConvVersFrac*[#2]{\CoeffAe} & \ConvVersFrac*[#2]{\CoeffAf} \\
+ \ConvVersFrac*[#2]{\CoeffAg} & \ConvVersFrac*[#2]{\CoeffAh} & \ConvVersFrac*[#2]{\CoeffAi}
+ \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac*[#2]{\CoeffBa} \\ \ConvVersFrac*[#2]{\CoeffBb} \\ \ConvVersFrac*[#2]{\CoeffBc} \end{pNiceMatrix}
+ =
+ }%
+ {%
+ \begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\CoeffAa} & \ConvVersFrac[#2]{\CoeffAb} & \ConvVersFrac[#2]{\CoeffAc} \\
+ \ConvVersFrac[#2]{\CoeffAd} & \ConvVersFrac[#2]{\CoeffAe} & \ConvVersFrac[#2]{\CoeffAf} \\
+ \ConvVersFrac[#2]{\CoeffAg} & \ConvVersFrac[#2]{\CoeffAh} & \ConvVersFrac[#2]{\CoeffAi}
+ \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3] \ConvVersFrac[#2]{\CoeffBa} \\ \ConvVersFrac[#2]{\CoeffBb} \\ \ConvVersFrac[#2]{\CoeffBc} \end{pNiceMatrix}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ \MatResA \\ \MatResB \\ \MatResC
+ \end{pNiceMatrix}%
+ }{}%fin 3,3*3,1
+ \xintifboolexpr{\NbLigMatA==3 'and' \NbColMatA==3 'and' \NbLigMatB==3 'and' \NbColMatB==3}% (3,3)*(3,3)
+ {%
+ \itemtomacro\MatA[1,1]\CoeffAa
+ \itemtomacro\MatA[1,2]\CoeffAb
+ \itemtomacro\MatA[1,3]\CoeffAc
+ \itemtomacro\MatA[2,1]\CoeffAd
+ \itemtomacro\MatA[2,2]\CoeffAe
+ \itemtomacro\MatA[2,3]\CoeffAf
+ \itemtomacro\MatA[3,1]\CoeffAg
+ \itemtomacro\MatA[3,2]\CoeffAh
+ \itemtomacro\MatA[3,3]\CoeffAi
+ \itemtomacro\MatB[1,1]\CoeffBa
+ \itemtomacro\MatB[1,2]\CoeffBb
+ \itemtomacro\MatB[1,3]\CoeffBc
+ \itemtomacro\MatB[2,1]\CoeffBd
+ \itemtomacro\MatB[2,2]\CoeffBe
+ \itemtomacro\MatB[1,3]\CoeffBf
+ \itemtomacro\MatB[3,1]\CoeffBg
+ \itemtomacro\MatB[3,2]\CoeffBh
+ \itemtomacro\MatB[3,3]\CoeffBi
+ \IfBooleanTF{#1}%version étoilée := moins sur num
+ {%
+ \def\MatResA{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBd+\CoeffAc*\CoeffBg}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBb+\CoeffAb*\CoeffBe+\CoeffAc*\CoeffBh}}%
+ \def\MatResC{\ConvVersFrac*[#2]{\CoeffAa*\CoeffBc+\CoeffAb*\CoeffBf+\CoeffAc*\CoeffBi}}%
+ \def\MatResD{\ConvVersFrac*[#2]{\CoeffAd*\CoeffBa+\CoeffAe*\CoeffBd+\CoeffAf*\CoeffBg}}%
+ \def\MatResE{\ConvVersFrac*[#2]{\CoeffAd*\CoeffBb+\CoeffAe*\CoeffBe+\CoeffAf*\CoeffBh}}%
+ \def\MatResF{\ConvVersFrac*[#2]{\CoeffAd*\CoeffBc+\CoeffAe*\CoeffBf+\CoeffAf*\CoeffBi}}%
+ \def\MatResG{\ConvVersFrac*[#2]{\CoeffAg*\CoeffBa+\CoeffAh*\CoeffBd+\CoeffAi*\CoeffBg}}%
+ \def\MatResH{\ConvVersFrac*[#2]{\CoeffAg*\CoeffBb+\CoeffAh*\CoeffBe+\CoeffAi*\CoeffBh}}%
+ \def\MatResI{\ConvVersFrac*[#2]{\CoeffAg*\CoeffBc+\CoeffAh*\CoeffBf+\CoeffAi*\CoeffBi}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\CoeffAa*\CoeffBa+\CoeffAb*\CoeffBd+\CoeffAc*\CoeffBg}}%
+ \def\MatResB{\ConvVersFrac[#2]{\CoeffAa*\CoeffBb+\CoeffAb*\CoeffBe+\CoeffAc*\CoeffBh}}%
+ \def\MatResC{\ConvVersFrac[#2]{\CoeffAa*\CoeffBc+\CoeffAb*\CoeffBf+\CoeffAc*\CoeffBi}}%
+ \def\MatResD{\ConvVersFrac[#2]{\CoeffAd*\CoeffBa+\CoeffAe*\CoeffBd+\CoeffAf*\CoeffBg}}%
+ \def\MatResE{\ConvVersFrac[#2]{\CoeffAd*\CoeffBb+\CoeffAe*\CoeffBe+\CoeffAf*\CoeffBh}}%
+ \def\MatResF{\ConvVersFrac[#2]{\CoeffAd*\CoeffBc+\CoeffAe*\CoeffBf+\CoeffAf*\CoeffBi}}%
+ \def\MatResG{\ConvVersFrac[#2]{\CoeffAg*\CoeffBa+\CoeffAh*\CoeffBd+\CoeffAi*\CoeffBg}}%
+ \def\MatResH{\ConvVersFrac[#2]{\CoeffAg*\CoeffBb+\CoeffAh*\CoeffBe+\CoeffAi*\CoeffBh}}%
+ \def\MatResI{\ConvVersFrac[#2]{\CoeffAg*\CoeffBc+\CoeffAh*\CoeffBf+\CoeffAi*\CoeffBi}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\CoeffAa} & \ConvVersFrac*[#2]{\CoeffAb} & \ConvVersFrac*[#2]{\CoeffAc} \\
+ \ConvVersFrac*[#2]{\CoeffAd} & \ConvVersFrac*[#2]{\CoeffAe} & \ConvVersFrac*[#2]{\CoeffAf} \\
+ \ConvVersFrac*[#2]{\CoeffAg} & \ConvVersFrac*[#2]{\CoeffAh} & \ConvVersFrac*[#2]{\CoeffAi}
+ \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\CoeffBa} & \ConvVersFrac*[#2]{\CoeffBb} & \ConvVersFrac*[#2]{\CoeffBc} \\
+ \ConvVersFrac*[#2]{\CoeffBd} & \ConvVersFrac*[#2]{\CoeffBe} & \ConvVersFrac*[#2]{\CoeffBf} \\
+ \ConvVersFrac*[#2]{\CoeffBg} & \ConvVersFrac*[#2]{\CoeffBh} & \ConvVersFrac*[#2]{\CoeffBi}
+ \end{pNiceMatrix}
+ =
+ }%
+ {%
+ \begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\CoeffAa} & \ConvVersFrac[#2]{\CoeffAb} & \ConvVersFrac[#2]{\CoeffAc} \\
+ \ConvVersFrac[#2]{\CoeffAd} & \ConvVersFrac[#2]{\CoeffAe} & \ConvVersFrac[#2]{\CoeffAf} \\
+ \ConvVersFrac[#2]{\CoeffAg} & \ConvVersFrac[#2]{\CoeffAh} & \ConvVersFrac[#2]{\CoeffAi}
+ \end{pNiceMatrix}
+ \times
+ \begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\CoeffBa} & \ConvVersFrac[#2]{\CoeffBb} & \ConvVersFrac[#2]{\CoeffBc} \\
+ \ConvVersFrac[#2]{\CoeffBd} & \ConvVersFrac[#2]{\CoeffBe} & \ConvVersFrac[#2]{\CoeffBf} \\
+ \ConvVersFrac[#2]{\CoeffBg} & \ConvVersFrac[#2]{\CoeffBh} & \ConvVersFrac[#2]{\CoeffBi}
+ \end{pNiceMatrix}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ \MatResA & \MatResB & \MatResC \\ \MatResD & \MatResE & \MatResF \\ \MatResG & \MatResH & \MatResI
+ \end{pNiceMatrix}%
+ }{}%fin 3,3*3,3
+ }%
+}
+
+
%------Commandes via pyluatex
\if@pyluatex %package pyluatex à charger par l'utilisateur !
\NewDocumentCommand\SolutionSystemePY{ s O{} D<>{} r() r() O{} }{%
- %*=avec le moins devant
+ %*=fractions avec - sur le numérateur
%2=Option Fraction
%3=matrice du système
%4=second membre
@@ -681,8 +1327,8 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\fi
}
-\NewDocumentCommand\MatriceInversePY{ s O{} D<>{} r() }{%
- %*=fractions avec - devant
+\NewDocumentCommand\MatriceInversePY{ s O{} D<>{} r() O{} }{%
+ %*=fractions avec - sur le numérateur
%2=options conversion
%3=options nicematrix
%4=matrice (,,;,,)
@@ -750,6 +1396,28 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\def\MatInvO{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[14]}}}%
\def\MatInvP{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[15]}}}%
}%
+ \IfStrEq{#5}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} & \ConvVersFrac*[#2]{\MatC} & \ConvVersFrac*[#2]{\MatD} \\
+ \ConvVersFrac*[#2]{\MatE} & \ConvVersFrac*[#2]{\MatF} & \ConvVersFrac*[#2]{\MatG} & \ConvVersFrac*[#2]{\MatH} \\
+ \ConvVersFrac*[#2]{\MatI} & \ConvVersFrac*[#2]{\MatJ} & \ConvVersFrac*[#2]{\MatK} & \ConvVersFrac*[#2]{\MatL} \\
+ \ConvVersFrac*[#2]{\MatM} & \ConvVersFrac*[#2]{\MatN} & \ConvVersFrac*[#2]{\MatO} & \ConvVersFrac*[#2]{\MatO} \\
+ \end{pNiceMatrix}}^{-1}
+ =
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} & \ConvVersFrac[#2]{\MatC} & \ConvVersFrac[#2]{\MatD} \\
+ \ConvVersFrac[#2]{\MatE} & \ConvVersFrac[#2]{\MatF} & \ConvVersFrac[#2]{\MatG} & \ConvVersFrac[#2]{\MatH} \\
+ \ConvVersFrac[#2]{\MatI} & \ConvVersFrac[#2]{\MatJ} & \ConvVersFrac[#2]{\MatK} & \ConvVersFrac[#2]{\MatL} \\
+ \ConvVersFrac[#2]{\MatM} & \ConvVersFrac[#2]{\MatN} & \ConvVersFrac[#2]{\MatO} & \ConvVersFrac[#2]{\MatO} \\
+ \end{pNiceMatrix}}^{-1}
+ =
+ }%
+ }{}%
\begin{pNiceMatrix}[#3]
{\MatInvA} & {\MatInvB} & {\MatInvC} & {\MatInvD} \\
{\MatInvE} & {\MatInvF} & {\MatInvG} & {\MatInvH} \\
@@ -795,6 +1463,26 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\def\MatInvH{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[7]}}}
\def\MatInvI{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[8]}}}
}%
+ \IfStrEq{#5}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} & \ConvVersFrac*[#2]{\MatC} \\
+ \ConvVersFrac*[#2]{\MatD} & \ConvVersFrac*[#2]{\MatE} & \ConvVersFrac*[#2]{\MatF} \\
+ \ConvVersFrac*[#2]{\MatG} & \ConvVersFrac*[#2]{\MatH} & \ConvVersFrac*[#2]{\MatI}
+ \end{pNiceMatrix}}^{-1}
+ =
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} & \ConvVersFrac[#2]{\MatC} \\
+ \ConvVersFrac[#2]{\MatD} & \ConvVersFrac[#2]{\MatE} & \ConvVersFrac[#2]{\MatF} \\
+ \ConvVersFrac[#2]{\MatG} & \ConvVersFrac[#2]{\MatH} & \ConvVersFrac[#2]{\MatI}
+ \end{pNiceMatrix}}^{-1}
+ =
+ }%
+ }{}%
\begin{pNiceMatrix}[#3]
{\MatInvA} & {\MatInvB} & {\MatInvC} \\
{\MatInvD} & {\MatInvE} & {\MatInvF} \\
@@ -824,6 +1512,24 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\def\MatInvC{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[2]}}}
\def\MatInvD{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[3]}}}
}%
+ \IfStrEq{#5}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} \\
+ \ConvVersFrac*[#2]{\MatC} & \ConvVersFrac*[#2]{\MatD}
+ \end{pNiceMatrix}}^{-1}
+ =
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} \\
+ \ConvVersFrac[#2]{\MatC} & \ConvVersFrac[#2]{\MatD}
+ \end{pNiceMatrix}}^{-1}
+ =
+ }%
+ }{}%
\begin{pNiceMatrix}[#3]
{\MatInvA} & {\MatInvB} \\
{\MatInvC} & {\MatInvD}
@@ -832,8 +1538,208 @@ def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
\fi
}
+\NewDocumentCommand\MatricePuissancePY{ s O{} D<>{} r() r() O{} }{%
+ %*=fractions avec - sur le numérateur
+ %2=options conversion
+ %3=options nicematrix
+ %4=matrice (,,;,,)
+ %5=puissance
+ %6=affichage de l'énoncé
+ %---------------------
+ %lectures des matrices
+ \setsepchar{§/,}%
+ \readlist*\MAMATRICEA{#4}%
+ %les coeffs de A et le déterminant et les coeff de l'inverse
+ \ifnum \MAMATRICEAlen=4
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[1,4]\MatD
+ \itemtomacro\MAMATRICEA[2,1]\MatE
+ \itemtomacro\MAMATRICEA[2,2]\MatF
+ \itemtomacro\MAMATRICEA[2,3]\MatG
+ \itemtomacro\MAMATRICEA[2,4]\MatH
+ \itemtomacro\MAMATRICEA[3,1]\MatI
+ \itemtomacro\MAMATRICEA[3,2]\MatJ
+ \itemtomacro\MAMATRICEA[3,3]\MatK
+ \itemtomacro\MAMATRICEA[3,4]\MatL
+ \itemtomacro\MAMATRICEA[4,1]\MatM
+ \itemtomacro\MAMATRICEA[4,2]\MatN
+ \itemtomacro\MAMATRICEA[4,3]\MatO
+ \itemtomacro\MAMATRICEA[4,4]\MatP
+ %les solutions
+ \IfBooleanTF{#1}%
+ {
+ \def\MatPuissA{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[0]}}}%
+ \def\MatPuissB{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[1]}}}%
+ \def\MatPuissC{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[2]}}}%
+ \def\MatPuissD{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[3]}}}%
+ \def\MatPuissE{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[4]}}}%
+ \def\MatPuissF{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[5]}}}%
+ \def\MatPuissG{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[6]}}}%
+ \def\MatPuissH{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[7]}}}%
+ \def\MatPuissI{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[8]}}}%
+ \def\MatPuissJ{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[9]}}}%
+ \def\MatPuissK{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[10]}}}%
+ \def\MatPuissL{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[11]}}}%
+ \def\MatPuissM{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[12]}}}%
+ \def\MatPuissN{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[13]}}}%
+ \def\MatPuissO{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[14]}}}%
+ \def\MatPuissP{\ConvVersFrac*[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[15]}}}%
+ }%
+ {%
+ \def\MatPuissA{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[0]}}}%
+ \def\MatPuissB{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[1]}}}%
+ \def\MatPuissC{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[2]}}}%
+ \def\MatPuissD{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[3]}}}%
+ \def\MatPuissE{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[4]}}}%
+ \def\MatPuissF{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[5]}}}%
+ \def\MatPuissG{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[6]}}}%
+ \def\MatPuissH{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[7]}}}%
+ \def\MatPuissI{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[8]}}}%
+ \def\MatPuissJ{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[9]}}}%
+ \def\MatPuissK{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[10]}}}%
+ \def\MatPuissL{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[11]}}}%
+ \def\MatPuissM{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[12]}}}%
+ \def\MatPuissN{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[13]}}}%
+ \def\MatPuissO{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[14]}}}%
+ \def\MatPuissP{\ConvVersFrac[#2]{\py{puissance_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP,#5)[15]}}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} & \ConvVersFrac*[#2]{\MatC} & \ConvVersFrac*[#2]{\MatD} \\
+ \ConvVersFrac*[#2]{\MatE} & \ConvVersFrac*[#2]{\MatF} & \ConvVersFrac*[#2]{\MatG} & \ConvVersFrac*[#2]{\MatH} \\
+ \ConvVersFrac*[#2]{\MatI} & \ConvVersFrac*[#2]{\MatJ} & \ConvVersFrac*[#2]{\MatK} & \ConvVersFrac*[#2]{\MatL} \\
+ \ConvVersFrac*[#2]{\MatM} & \ConvVersFrac*[#2]{\MatN} & \ConvVersFrac*[#2]{\MatO} & \ConvVersFrac*[#2]{\MatO} \\
+ \end{pNiceMatrix}}^{#5}
+ =
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} & \ConvVersFrac[#2]{\MatC} & \ConvVersFrac[#2]{\MatD} \\
+ \ConvVersFrac[#2]{\MatE} & \ConvVersFrac[#2]{\MatF} & \ConvVersFrac[#2]{\MatG} & \ConvVersFrac[#2]{\MatH} \\
+ \ConvVersFrac[#2]{\MatI} & \ConvVersFrac[#2]{\MatJ} & \ConvVersFrac[#2]{\MatK} & \ConvVersFrac[#2]{\MatL} \\
+ \ConvVersFrac[#2]{\MatM} & \ConvVersFrac[#2]{\MatN} & \ConvVersFrac[#2]{\MatO} & \ConvVersFrac[#2]{\MatO} \\
+ \end{pNiceMatrix}}^{#5}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ {\MatPuissA} & {\MatPuissB} & {\MatPuissC} & {\MatPuissD} \\
+ {\MatPuissE} & {\MatPuissF} & {\MatPuissG} & {\MatPuissH} \\
+ {\MatPuissI} & {\MatPuissJ} & {\MatPuissK} & {\MatPuissL} \\
+ {\MatPuissM} & {\MatPuissN} & {\MatPuissO} & {\MatPuissP} \\
+ \end{pNiceMatrix}%
+ \fi
+ \ifnum \MAMATRICEAlen=3
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[2,1]\MatD
+ \itemtomacro\MAMATRICEA[2,2]\MatE
+ \itemtomacro\MAMATRICEA[2,3]\MatF
+ \itemtomacro\MAMATRICEA[3,1]\MatG
+ \itemtomacro\MAMATRICEA[3,2]\MatH
+ \itemtomacro\MAMATRICEA[3,3]\MatI
+ %les solutions
+ \IfBooleanTF{#1}%
+ {
+ \def\MatPuissA{\ConvVersFrac*[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[0]}}}%
+ \def\MatPuissB{\ConvVersFrac*[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[1]}}}%
+ \def\MatPuissC{\ConvVersFrac*[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[2]}}}%
+ \def\MatPuissD{\ConvVersFrac*[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[3]}}}%
+ \def\MatPuissE{\ConvVersFrac*[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[4]}}}%
+ \def\MatPuissF{\ConvVersFrac*[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[5]}}}%
+ \def\MatPuissG{\ConvVersFrac*[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[6]}}}%
+ \def\MatPuissH{\ConvVersFrac*[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[7]}}}%
+ \def\MatPuissI{\ConvVersFrac*[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[8]}}}%
+ }%
+ {%
+ \def\MatPuissA{\ConvVersFrac[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[0]}}}%
+ \def\MatPuissB{\ConvVersFrac[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[1]}}}%
+ \def\MatPuissC{\ConvVersFrac[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[2]}}}%
+ \def\MatPuissD{\ConvVersFrac[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[3]}}}%
+ \def\MatPuissE{\ConvVersFrac[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[4]}}}%
+ \def\MatPuissF{\ConvVersFrac[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[5]}}}%
+ \def\MatPuissG{\ConvVersFrac[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[6]}}}%
+ \def\MatPuissH{\ConvVersFrac[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[7]}}}%
+ \def\MatPuissI{\ConvVersFrac[#2]{\py{puissance_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,#5)[8]}}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} & \ConvVersFrac*[#2]{\MatC} \\
+ \ConvVersFrac*[#2]{\MatD} & \ConvVersFrac*[#2]{\MatE} & \ConvVersFrac*[#2]{\MatF} \\
+ \ConvVersFrac*[#2]{\MatG} & \ConvVersFrac*[#2]{\MatH} & \ConvVersFrac*[#2]{\MatI}
+ \end{pNiceMatrix}}^{#5}
+ =
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} & \ConvVersFrac[#2]{\MatC} \\
+ \ConvVersFrac[#2]{\MatD} & \ConvVersFrac[#2]{\MatE} & \ConvVersFrac[#2]{\MatF} \\
+ \ConvVersFrac[#2]{\MatG} & \ConvVersFrac[#2]{\MatH} & \ConvVersFrac[#2]{\MatI}
+ \end{pNiceMatrix}}^{#5}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ {\MatPuissA} & {\MatPuissB} & {\MatPuissC} \\
+ {\MatPuissD} & {\MatPuissE} & {\MatPuissF} \\
+ {\MatPuissG} & {\MatPuissH} & {\MatPuissI}
+ \end{pNiceMatrix}%
+ \fi
+ \ifnum \MAMATRICEAlen=2
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[2,1]\MatC
+ \itemtomacro\MAMATRICEA[2,2]\MatD
+ %les solutions
+ \IfBooleanTF{#1}%
+ {
+ \def\MatPuissA{\ConvVersFrac*[#2]{\py{puissance_matrice_DD(\MatA,\MatB,\MatC,\MatD,#5)[0]}}}%
+ \def\MatPuissB{\ConvVersFrac*[#2]{\py{puissance_matrice_DD(\MatA,\MatB,\MatC,\MatD,#5)[1]}}}%
+ \def\MatPuissC{\ConvVersFrac*[#2]{\py{puissance_matrice_DD(\MatA,\MatB,\MatC,\MatD,#5)[2]}}}%
+ \def\MatPuissD{\ConvVersFrac*[#2]{\py{puissance_matrice_DD(\MatA,\MatB,\MatC,\MatD,#5)[3]}}}%
+ }%
+ {%
+ \def\MatPuissA{\ConvVersFrac[#2]{\py{puissance_matrice_DD(\MatA,\MatB,\MatC,\MatD,#5)[0]}}}%
+ \def\MatPuissB{\ConvVersFrac[#2]{\py{puissance_matrice_DD(\MatA,\MatB,\MatC,\MatD,#5)[1]}}}%
+ \def\MatPuissC{\ConvVersFrac[#2]{\py{puissance_matrice_DD(\MatA,\MatB,\MatC,\MatD,#5)[2]}}}%
+ \def\MatPuissD{\ConvVersFrac[#2]{\py{puissance_matrice_DD(\MatA,\MatB,\MatC,\MatD,#5)[3]}}}%
+ }%
+ \IfStrEq{#6}{Aff}%si matrice
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac*[#2]{\MatA} & \ConvVersFrac*[#2]{\MatB} \\
+ \ConvVersFrac*[#2]{\MatC} & \ConvVersFrac*[#2]{\MatD}
+ \end{pNiceMatrix}}^{#5}
+ =
+ }%
+ {%
+ {\begin{pNiceMatrix}[#3]
+ \ConvVersFrac[#2]{\MatA} & \ConvVersFrac[#2]{\MatB} \\
+ \ConvVersFrac[#2]{\MatC} & \ConvVersFrac[#2]{\MatD}
+ \end{pNiceMatrix}}^{#5}
+ =
+ }%
+ }{}%
+ \begin{pNiceMatrix}[#3]
+ {\MatPuissA} & {\MatPuissB} \\
+ {\MatPuissC} & {\MatPuissD}
+ \end{pNiceMatrix}%
+ \fi
+}
+
\NewDocumentCommand\DetMatricePY{ s O{} r() }{%
- %*=fractions avec - devant
+ %*=fractions avec - sur le numérateur
%2=options conversion
%3=matrice (,,;,,)
%---------------------
diff --git a/macros/latex/contrib/tcolorbox/CHANGES.md b/macros/latex/contrib/tcolorbox/CHANGES.md
index 5cd3c33546..cadfdedc32 100644
--- a/macros/latex/contrib/tcolorbox/CHANGES.md
+++ b/macros/latex/contrib/tcolorbox/CHANGES.md
@@ -22,6 +22,80 @@ and this project adheres to
+## [6.0.0] - 2023-02-10
+
+### Added
+- Generalized text alignment options (issue #184)
+ - Option `halign code`
+ - Option `halign upper code`
+ - Option `halign lower code`
+ - Option `halign title code`
+- New Options:
+ - Option `before title*` (equals `before title` until 5.1.1)
+ - Option `after title*` (equals `after title` until 5.1.1)
+- New option for verbatim output and listings:
+ - Option `verbatim ignore indention at end`
+- Option `short title` (part of issue #186)
+- Support for zref / zref-titleref / zref-clever (issue #206)
+ - Option `label is label`
+ - Option `label is zlabel`
+- Library `theorems`: New theorem generation macros. Generated theorema
+ support an optional short title now (part of issue #186):
+ - `\NewTcbTheorem`
+ - `\RenewTcbTheorem`
+ - `\ProvideTcbTheorem`
+ - `\DeclareTcbTheorem`
+- Library `skins`: Default values added to the options
+ - `watermark zoom`
+ - `watermark shrink`
+ - `watermark overzoom`
+ - `watermark stretch`
+
+### Changed
+- Possible visible change: previous hacks of current color handling are removed (issue #204)
+ and color is now inserted at begin of all internal `\box`es. This inserts a whatsit and can
+ give additional space at begin of a box which starts with an `itemize` or a similar environment.
+ If necessary, such a space may be removed by a manual `\vspace{-\parsep}`, see issue #123
+ Note: lualatex with package luacolor removes all spacing problems
+- While producing new types of tcolorbox environment by `\newtcolorbox`
+ leading and trailing spaces are now removed from the environment name
+- `before title` appends `\ignorespaces` now
+- `after title` prepends `\unskip` now
+- `tcbverbatimwrite` sets `verbatim ignore indention at end` to remove spaces from
+ indention of the end of environment
+- `nameref` also sets zref-titleref reference
+- `label type` is used for cleveref and zref-clever
+- The 'TikZ Image and Picture Fill Extensions' are extracted from library `skins`
+ into an `tcolorbox` indendent TikZ library `tikzfill.image` and made part
+ of a new package `tikzfill`. Also, the respective documentation is moved into
+ this new package (issue #185)
+- Library `skins`: The implementation of all watermark options is changed and
+ adapted to `tikzfill`. `clip watermark=false` has now some restrictions (see documentation)
+- Library `skins`: `\tcbincludegraphics` implementation changed to LaTeX3 code
+ (should be more robust; inspired by issue #209)
+- Temporary `\tcbcounter` in `\newtcolorbox[auto counter]` undefined/restored after usage (issue #203)
+- Color setting example of subtitle inside `subtitle style` (issue #189)
+- Documentation:
+ - The documentation orders now `\New...`, `\Renew...`, `\Provide...`, `\Declare...`.
+ Previously, `\Declare...` was often used first.
+ - `NewTotalTColorBox` cannot be used with `saveto` or `savelowerto` (issue #205)
+ - Replacing `\tikzname` by TikZ in a comment line (issue #207)
+ - `list entry`, `list text`, `add to list` moved from *Counters, Labels, and References*
+ to *Lists of tcolorboxes* for clarification (issue #194)
+
+### Removed
+- Code `\tcb@undo@before` which tried to undo vertical space for a breakable box
+ which does not fit partially on the current page but needs to go to the following page.
+ This code did not achieve the goal and was error-prone (issue #200, hint inside issue #183)
+
+### Fixed
+- `\Provide...` commands and environments process initialization options (issue #187)
+- Default initialization options were not issued, if `\newtcolorbox` was used without options (issue #194)
+- Typo in `\RenewTCBox` and `\RenewTotalTCBox` caused errors (issue #201)
+- Typo in README.md (issue #196)
+
+
+
## [5.1.1] - 2022-06-24
### Changed
@@ -30,7 +104,7 @@ and this project adheres to
- Slight implemenation change for `\newtcbtheorem` and `\renewtcbtheorem`
### Fixed
-- Regression bug introduced with v5.0.0 2021-12-16 (issue #182)
+- Regression bug introduced with v5.0.0 2021-12-16 (issue #182)
Instead of `beforeafter skip balanced`, `autoparskip` was set as default, restoring
the situation before v4.40 (with some inconsistencies)
@@ -46,20 +120,20 @@ and this project adheres to
- Option `IfEmptyTF`
- Option `IfEmptyT`
- Option `IfEmptyF`
-- Options to insert code at begin and end of floats (issue #172)
+- Options to insert code at begin and end of floats (issue #172)
- Option `before float`
- Option `after float`
- Option `before float app`
- Option `before float pre`
- Option `after float app`
- - Option `after float pre`
+ - Option `after float pre`
- Library `skins`: overlap of lower part for `bicolor`, `tile`, and `beamer`
made configurable (issue #166) by
- Option `overlaplower`
- `\tcboverlaplower`
-- Library `documentation`: package warning, if `imakeidx` is loaded after the
+- Library `documentation`: package warning, if `imakeidx` is loaded after the
library is loaded (issue #173)
-- Library `documentation`: gather index LaTeX macros and configure gathering (issue #174)
+- Library `documentation`: gather index LaTeX macros and configure gathering (issue #174)
- Option `doclang/commands`
- Option `index gather colors`
- Option `index gather commands`
@@ -68,9 +142,9 @@ and this project adheres to
- Option `index gather keys`
- Option `index gather lengths`
- Option `index gather paths`
- - Option `index gather values`
- - Option `index gather all`
- - Option `index gather none`
+ - Option `index gather values`
+ - Option `index gather all`
+ - Option `index gather none`
### Changed
- Required latex2e specified `\NeedsTeXFormat{LaTeX2e}[2020/10/01]` (issue #170)
@@ -81,7 +155,7 @@ and this project adheres to
to libraries `listings` and `fitting` respectively. `xparse` now only loads
the package `xparse` (issue #180)
- Internal implementation of all `\new*` commands, e.g. `\newtcolorbox` changed.
- Note that a missing backlash for `tcbox`-like commands
+ Note that a missing backlash for `tcbox`-like commands
e.g. `\newtcbox{mybox}` instead of `\newtcbox{\mybox}` is no longer tolerated.
### Fixed
@@ -129,10 +203,10 @@ and this project adheres to
- From now on version numbers adhere to
[Semantic Versioning](http://semver.org/spec/v2.0.0.html)
- Library `documentation`: warn about not installed `marvosym` and `pifont` (issue #153)
-- Environments wrapped with `\tcolorboxenvironment` are now compatible with
+- Environments wrapped with `\tcolorboxenvironment` are now compatible with
all three capture modes `minipage`, `hbox`, and `fitbox` (issue #154)
- Meaningful error prompts when using unknown capture modes (issue #156)
-- Library `raster`: Inside a raster, `tcbrasternum` can now be
+- Library `raster`: Inside a raster, `tcbrasternum` can now be
referenced using `label={mylabel}`, if the box is not numbered otherwise (issue #81 and #119)
- Library `theorem`: Theorems with empty display name are now possible without glitches
- Library `theorem`: Major code parts rewritten in expl3 code
@@ -180,7 +254,7 @@ and this project adheres to
- Documentation: Recommend to use initialization options after loading hyperref (issue #135)
- Documentation: Warn user about white title color becoming invisible
for the skin `empty` (issue #118)
-- Documentation: Corrections (issue #127)
+- Documentation: Corrections (issue #127)
- Documentation of library `skins` is split into a general part and the catalog of skins
- Allocate write registers `\tcb@out` and `\tcb@record@out` only when needed (issue #134)
- `\tcblistof` enhanced to take an optional short title and mimic
@@ -196,7 +270,7 @@ and this project adheres to
## [4.42] - 2020-10-09
### Added
-- Library `breakble`: Option `use color stack`
+- Library `breakable`: Option `use color stack`
### Changed
- Due to several problems with the color algorithm introduced with version 4.32,
diff --git a/macros/latex/contrib/tcolorbox/README.md b/macros/latex/contrib/tcolorbox/README.md
index 7b71ce2749..78942298d0 100644
--- a/macros/latex/contrib/tcolorbox/README.md
+++ b/macros/latex/contrib/tcolorbox/README.md
@@ -1,7 +1,7 @@
-# The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+# The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
-> Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+> Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
> This work may be distributed and/or modified under the
> conditions of the LaTeX Project Public License, either version 1.3
@@ -72,7 +72,7 @@ Alternatively, put the files to their respective locations within the TeX instal
- `tcolorbox.sty` -> /tex/latex/tcolorbox
- `tcbbreakable.code.tex` -> /tex/latex/tcolorbox
-- `tcbdocumenation.code.tex` -> /tex/latex/tcolorbox
+- `tcbdocumentation.code.tex` -> /tex/latex/tcolorbox
- `tcbexternal.code.tex` -> /tex/latex/tcolorbox
- `tcbfitting.code.tex` -> /tex/latex/tcolorbox
- `tcbhooks.code.tex` -> /tex/latex/tcolorbox
diff --git a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
index e0fbb8bbf2..5042be92d2 100644
--- a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbbreakable.code.tex: Code for breakable colorboxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\RequirePackage{pdfcol}
\pdfcolInitStack{tcb@breakable}
@@ -69,7 +69,10 @@
\def\tcb@@break{\par\xleaders\vbox{\rule{0pt}{2\textheight}}\vskip 2\textheight\par}
-\def\tcb@vbox#1#2{%
+% #1 box
+% #2 width
+% #3 color (for color stack)
+\def\tcb@vbox#1#2#3{%
\edef\reserved@a{%
\endgroup%
\setbox#1\vbox{\hsize=#2%
@@ -81,7 +84,6 @@
\let\tcbbreak\tcb@@break%
\iftcb@usecolorstack%
\pdfcolSwitchStack{tcb@breakable}%
- \pdfcolSetCurrentColor%
\fi%
\color@begingroup%
\textwidth\hsize%
@@ -92,7 +94,9 @@
\c@mpfootnote\z@%
\let\@footnotetext\@mpfootnotetext%
\let\@listdepth\@mplistdepth \@mplistdepth\z@%
- \@setminipage\tcb@hyph@fix%
+ \@setminipage%
+ \color{#3}%
+ \tcb@hyph@fix%
\let\tcb@drawcolorbox\tcb@drawcolorbox@standalone%
\let\FN@pp@footnote\@empty% disable perpage mode of 'footmisc' package
}
@@ -178,7 +182,7 @@
\else%
\tcb@hasTitletrue%
\tcbdimto\tcb@w@title{\tcb@innerwidth-\kvtcb@boxsep*2-\kvtcb@lefttitle-\kvtcb@righttitle}%
- \begin{tcb@savebox}{\tcb@titlebox}{\tcb@w@title}\tcb@extras@followingtitle\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@followingtitle\end{tcb@savebox}%
+ \begin{tcb@savebox}{\tcb@titlebox}{\tcb@w@title}{tcbcoltitle}\tcb@extras@followingtitle\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@followingtitle\end{tcb@savebox}%
\tcbdimto\tcb@h@title{\ht\tcb@titlebox+\dp\tcb@titlebox}%
\tcbdimto\tcb@h@padtitle{\kvtcb@title@rule+\kvtcb@boxsep*2+\kvtcb@toptitle+\kvtcb@bottomtitle+\tcb@h@title}%
\fi%
@@ -328,14 +332,12 @@
\tcb@parfillskip@check%
\tcb@split@start%
\endgroup%
- \color{.}% hack for some special cases
\ifx\kvtcb@float\@empty\relax%
\aftergroup\tcb@use@after@lastbox%
\fi%
}
\def\tcb@split@pagebreak{%
- \tcb@undo@before%
\iftcb@multicol\columnbreak\else\pagebreak\fi%
\tcb@nobreak@warning%
\tcb@enlbreak@init\tcb@break@allowedfalse%
diff --git a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
index 0d4e728d76..33ed5d410a 100644
--- a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbdocumentation.code.tex: Code for LaTeX documentations
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\tcbuselibrary{listings,skins,xparse,external,raster}
diff --git a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
index 9a0412f874..d8be787d94 100644
--- a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbexternal.code.tex: Code for externalization
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\tcbuselibrary{pro@cessing}
diff --git a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
index f4afe5b9ad..af6715af69 100644
--- a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbfitting.code.tex: Code for fit boxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\newdimen\tcbfitdim
\newdimen\tcb@lowerfitdim
@@ -240,7 +240,7 @@
\def\tcb@fit@@box{%
\iftcb@hasTitle%
\tcbdimto\tcb@w@title{\kvtcb@width-(\kvtcb@left@rule)-(\kvtcb@right@rule)-(\kvtcb@boxsep)*2-(\kvtcb@lefttitle)-(\kvtcb@righttitle)}%
- \begin{tcb@savebox}{\tcb@titlebox}{\tcb@w@title}\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@before@title\kvtcb@title\kvtcb@after@title\end{tcb@savebox}%
+ \begin{tcb@savebox}{\tcb@titlebox}{\tcb@w@title}{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\tcb@insert@before@title\kvtcb@title\tcb@insert@after@title\end{tcb@savebox}%
\tcbdimto\tcb@h@titletotal{\ht\tcb@titlebox+\dp\tcb@titlebox+\kvtcb@title@rule+(\kvtcb@boxsep)*2+\kvtcb@toptitle+\kvtcb@bottomtitle}%
\else%
\let\tcb@h@titletotal=\tcb@zpt%
@@ -266,8 +266,8 @@
%
\def\tcb@fit@@boxsave##1{%
\tcbdimto\tcb@innerwidth{\kvtcb@width-\kvtcb@left@rule-\kvtcb@right@rule}%
- \begin{tcb@savebox}{\tcb@upperbox}{##1}%
- \color{tcbcolupper}\kvtcb@fontupper\fontsize{\tcbfitdim}{\tcb@fit@@line}\selectfont%
+ \begin{tcb@savebox}{\tcb@upperbox}{##1}{tcbcolupper}%
+ \kvtcb@fontupper\fontsize{\tcbfitdim}{\tcb@fit@@line}\selectfont%
\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper%
\end{tcb@savebox}%
\advance\count@ 1\relax%
@@ -392,17 +392,19 @@
}
}
}
-\NewDocumentCommand \__tcobox_new_tcboxfit_i:w { m +o m }
+\NewDocumentCommand \__tcobox_new_tcboxfit_i:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_tcboxfit_ii:w #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \newtcboxfit { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcboxfit_i:w \newcommand
}
\NewDocumentCommand \renewtcboxfit { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcboxfit_i:w \renewcommand
}
@@ -412,25 +414,29 @@
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\exp_args:Nc #1 { #3 }{ #4 }{ \tcboxfit[#5,options@for=#3] }
}
-\NewDocumentCommand \__tcobox_new_TCBoxFit:w { m +o m }
+\NewDocumentCommand \__tcobox_new_TCBoxFit:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_TCBoxFit:Nnnnn #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \DeclareTCBoxFit { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBoxFit:w \DeclareDocumentCommand
}
\NewDocumentCommand \NewTCBoxFit { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBoxFit:w \NewDocumentCommand
}
\NewDocumentCommand \RenewTCBoxFit { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBoxFit:w \RewewDocumentCommand
}
\NewDocumentCommand \ProvideTCBoxFit { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBoxFit:w \ProvideDocumentCommand
}
@@ -440,25 +446,29 @@
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\exp_args:Nc #1 { #3 }{ #4 }{ \tcboxfit[#5,options@for=#3]{#6} }
}
-\NewDocumentCommand \__tcobox_new_TotalTCBoxFit:w { m +o m }
+\NewDocumentCommand \__tcobox_new_TotalTCBoxFit:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_TotalTCBoxFit:Nnnnnn #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \DeclareTotalTCBoxFit { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBoxFit:w \DeclareDocumentCommand
}
\NewDocumentCommand \NewTotalTCBoxFit { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBoxFit:w \NewDocumentCommand
}
\NewDocumentCommand \RenewTotalTCBoxFit { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBoxFit:w \RewewDocumentCommand
}
\NewDocumentCommand \ProvideTotalTCBoxFit { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBoxFit:w \ProvideDocumentCommand
}
diff --git a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
index 38bf638d87..4d3069c5b3 100644
--- a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbhooks.code.tex: Code for adding hooks
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\tcbset{%
before upper app/.code={\appto\kvtcb@before@upper{#1}},%
@@ -112,18 +112,23 @@
finish middle and last pre/.style={finish middle pre={#1},finish last pre={#1}},%
finish first and middle pre/.style={finish first pre={#1},finish middle pre={#1}},%
%
- watermark tikz app/.style={overlay app={\tcb@drawspec@watermark@tikz{#1}}},
- watermark tikz pre/.style={overlay pre={\tcb@drawspec@watermark@tikz{#1}}},
- watermark tikz app on/.style args={#1 is #2}{overlay #1 app={\tcb@drawspec@watermark@tikz{#2}}},%
- watermark tikz pre on/.style args={#1 is #2}{overlay #1 pre={\tcb@drawspec@watermark@tikz{#2}}},%
- watermark graphics app/.style={overlay app={\tcb@drawspec@watermark@graphics{#1}}},
- watermark graphics pre/.style={overlay pre={\tcb@drawspec@watermark@graphics{#1}}},
- watermark graphics app on/.style args={#1 is #2}{overlay #1 app={\tcb@drawspec@watermark@graphics{#2}}},
- watermark graphics pre on/.style args={#1 is #2}{overlay #1 pre={\tcb@drawspec@watermark@graphics{#2}}},
- watermark text app/.style={overlay app={\tcb@drawspec@watermark@text{#1}}},
- watermark text pre/.style={overlay pre={\tcb@drawspec@watermark@text{#1}}},
- watermark text app on/.style args={#1 is #2}{overlay #1 app={\tcb@drawspec@watermark@text{#2}}},
- watermark text pre on/.style args={#1 is #2}{overlay #1 pre={\tcb@drawspec@watermark@text{#2}}},
+ watermark@overlay app/.style={overlay app={\tcb@drawspec@watermark{#1}}},
+ watermark@overlay pre/.style={overlay pre={\tcb@drawspec@watermark{#1}}},
+ watermark@overlay@on app/.style n args={2}{overlay #1 app={\tcb@drawspec@watermark{#2}}},
+ watermark@overlay@on pre/.style n args={2}{overlay #1 pred={\tcb@drawspec@watermark{#2}}},
+ %
+ watermark tikz app/.style={watermark@overlay app={fill@picture={#1}}},
+ watermark tikz pre/.style={watermark@overlay pre={fill@picture={#1}}},
+ watermark tikz app on/.style args={#1 is #2}{watermark@overlay@on app={#1}{fill@picture={#2}}},
+ watermark tikz pre on/.style args={#1 is #2}{watermark@overlay@on pre={#1}{fill@picture={#2}}},
+ watermark graphics app/.style={watermark@overlay app={fill@image={#1}}},
+ watermark graphics pre/.style={watermark@overlay pre={fill@image={#1}}},
+ watermark graphics app on/.style args={#1 is #2}{watermark@overlay@on app={#1}{fill@image={#2}}},
+ watermark graphics pre on/.style args={#1 is #2}{watermark@overlay@on pre={#1}{fill@image={#2}}},
+ watermark text app/.style={watermark@overlay app={fill@picture={\node[inner sep=0pt,align=flush center]{#1};}}},
+ watermark text pre/.style={watermark@overlay pre={fill@picture={\node[inner sep=0pt,align=flush center]{#1};}}},
+ watermark text app on/.style args={#1 is #2}{watermark@overlay@on app={#1}{fill@picture={\node[inner sep=0pt,align=flush center]{#2};}}},
+ watermark text pre on/.style args={#1 is #2}{watermark@overlay@on pre={#1}{fill@picture={\node[inner sep=0pt,align=flush center]{#2};}}},
%
minted options app/.code={\appto\kvtcb@minted@options{,#1}},
minted options pre/.code={\preto\kvtcb@minted@options{#1,}},
diff --git a/macros/latex/contrib/tcolorbox/tcblistings.code.tex b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
index 57093d0d48..98fd687ea6 100644
--- a/macros/latex/contrib/tcolorbox/tcblistings.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcblistings.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\RequirePackage{listings}[2007/02/22]
diff --git a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
index 28dac54eea..5f91c91f29 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcblistingscode.code.tex: Auxiliary code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\tcbuselibrary{pro@cessing}
@@ -280,7 +280,7 @@
\ExplSyntaxOn
-\NewDocumentCommand \__tcobox_new_tcblisting:w { m +o m o +o +m }
+\NewDocumentCommand \__tcobox_new_tcblisting:w { m +O{} >{\TrimSpaces} m o +o +m }
{
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\tl_if_novalue:nTF { #4 }
@@ -299,33 +299,39 @@
}
\NewDocumentCommand \newtcblisting { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcblisting:w \newenvironment
}
\NewDocumentCommand \renewtcblisting { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcblisting:w \renewenvironment
}
-\NewDocumentCommand \__tcobox_new_TCBListing:w { m +o m +m +m }
+\NewDocumentCommand \__tcobox_new_TCBListing:w { m +O{} >{\TrimSpaces} m +m +m }
{
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
#1 { #3 }{ #4 }{ \tcblisting{#5,options@for=#3} }{ \endtcblisting }
}
\NewDocumentCommand \DeclareTCBListing { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBListing:w \DeclareDocumentEnvironment
}
\NewDocumentCommand \NewTCBListing { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBListing:w \NewDocumentEnvironment
}
\NewDocumentCommand \RenewTCBListing { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBListing:w \RenewDocumentEnvironment
}
\NewDocumentCommand \ProvideTCBListing { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBListing:w \ProvideDocumentEnvironment
}
@@ -347,17 +353,19 @@
}
}
}
-\NewDocumentCommand \__tcobox_new_tcbinputlisting_i:w { m +o m }
+\NewDocumentCommand \__tcobox_new_tcbinputlisting_i:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_tcbinputlisting_ii:w #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \newtcbinputlisting { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcbinputlisting_i:w \newcommand
}
\NewDocumentCommand \renewtcbinputlisting { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcbinputlisting_i:w \renewcommand
}
@@ -374,18 +382,22 @@
}
\NewDocumentCommand \DeclareTCBInputListing { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBInputListing:w \DeclareDocumentCommand
}
\NewDocumentCommand \NewTCBInputListing { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBInputListing:w \NewDocumentCommand
}
\NewDocumentCommand \RenewTCBInputListing { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBInputListing:w \RewewDocumentCommand
}
\NewDocumentCommand \ProvideTCBInputListing { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBInputListing:w \ProvideDocumentCommand
}
diff --git a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
index eb618f90a5..fd4b66f3c5 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcblistingsutf8.code.tex: Code for colorboxes with listings in UTF-8
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\tcbuselibrary{listings}
diff --git a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
index 4aa35dac70..8d1ba9b71f 100644
--- a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbmagazine.code.tex: Code for box sets and magazine styles
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\tcbuselibrary{breakable}
diff --git a/macros/latex/contrib/tcolorbox/tcbminted.code.tex b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
index 73e4666aff..817ba635bf 100644
--- a/macros/latex/contrib/tcolorbox/tcbminted.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbminted.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\RequirePackage{minted}[2021/12/24]
diff --git a/macros/latex/contrib/tcolorbox/tcbposter.code.tex b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
index 3e208f58ed..95c8b1f507 100644
--- a/macros/latex/contrib/tcolorbox/tcbposter.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbposter.code.tex: Code for posters
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\tcbuselibrary{breakable,magazine,skins,fitting}
diff --git a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
index 3d5fac78d0..77c2182888 100644
--- a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbprocessing.code.tex: Code for conditional processing
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\RequirePackage{pdftexcmds}
\RequirePackage{shellesc}
diff --git a/macros/latex/contrib/tcolorbox/tcbraster.code.tex b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
index d3e62b531a..47e394433e 100644
--- a/macros/latex/contrib/tcolorbox/tcbraster.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\newcounter{tcbrastercolumn}
\newcounter{tcbrasterrow}
diff --git a/macros/latex/contrib/tcolorbox/tcbskins.code.tex b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
index 65a29a24c9..183ed011dd 100644
--- a/macros/latex/contrib/tcolorbox/tcbskins.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbskins.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,9 +17,10 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\RequirePackage{tikz}[2010/10/13]
+\RequirePackage{tikzfill.image}
\newenvironment{tikzpicture@tcb@hooked}{%
\edef\tcb@tikzpicture@begin{\noexpand\tikzpicture[\expandonce\tcb@tikz@option@hook]}%
@@ -1134,7 +1135,7 @@
\colorlet{tcbtranscol@back}{tcbcolbacktitle}%
\let\tcb@trans@skin@current\kvtcb@skin@current%
\let\tcb@trans@boxedstyle\kvtcb@style@boxedtitle%
- \setbox\tcb@titlebox\color@hbox\bgroup\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@before@boxedtitle\kvtcb@haligntitle\kvtcb@before@title\tcbtitletext\kvtcb@after@title\kvtcb@after@boxedtitle\egroup\color@endbox%
+ \setbox\tcb@titlebox\color@hbox\bgroup\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@before@boxedtitle\kvtcb@haligntitle\tcb@insert@before@title\tcbtitletext\tcb@insert@after@title\kvtcb@after@boxedtitle\egroup\color@endbox%
\setbox\tcb@titlebox\color@hbox\tcbox[skin=\tcb@trans@skin@current,colframe=tcbtranscol@frame,colback=tcbtranscol@back,%
code={\pgfkeysalsofrom\tcb@trans@boxedsize\pgfkeysalsofrom\tcb@trans@boxedstyle%
\ifcase#6
@@ -1210,77 +1211,55 @@
}
-\newbox\tcb@waterbox
-
-\def\tcb@setratio#1#2#3{\edef#1{\strip@pt\dimexpr\number\numexpr\number\dimexpr#2\relax*65536/\number\dimexpr#3\relax\relax sp\relax}}
-
-\def\tcb@setratiorobust#1#2#3{\ifdim\dimexpr#3<1pt\relax\tcb@setratio#1{#2}{1pt}\else\tcb@setratio#1{#2}{#3}\fi}
-
-\def\tcb@comp@waterbox@stretch#1#2#3{%
- \tcb@setratiorobust\tcb@scale@x{#1\dimexpr#2}{\wd\tcb@waterbox}%
- \tcb@setratiorobust\tcb@scale@y{#1\dimexpr#3}{\ht\tcb@waterbox+\dp\tcb@waterbox}%
-}
-
-\def\tcb@comp@waterbox@zoom#1#2#3{%
- \tcb@comp@waterbox@stretch{#1}{#2}{#3}%
- \ifdim\dimexpr\tcb@scale@x pt\relax<\dimexpr\tcb@scale@y pt\relax\let\tcb@scale@y=\tcb@scale@x\else\let\tcb@scale@x=\tcb@scale@y\fi%
-}
-
-\def\tcb@comp@waterbox@overzoom#1#2#3{%
- \tcb@comp@waterbox@stretch{#1}{#2}{#3}%
- \ifdim\dimexpr\tcb@scale@x pt\relax>\dimexpr\tcb@scale@y pt\relax\let\tcb@scale@y=\tcb@scale@x\else\let\tcb@scale@x=\tcb@scale@y\fi%
-}
-
-\def\tcb@comp@waterbox@shrink#1#2#3{%
- \tcb@comp@waterbox@zoom{#1}{#2}{#3}%
- \ifdim\dimexpr\tcb@scale@x pt\relax>1pt\relax%
- \edef\tcb@scale@x{1}\edef\tcb@scale@y{1}%
- \fi%
-}
-
-\def\tcb@box@scaled@waterbox{\scalebox{\tcb@scale@x}[\tcb@scale@y]{\box\tcb@waterbox}}
-
-\def\tcb@drawspec@watermark@@noclip{%
- \tcb@comp@wm%
- \node[opacity=\kvtcb@watermark@opacity,anchor=center] at (interior) {\tcb@box@scaled@waterbox};%
-}
-
-\def\tcb@drawspec@watermark@@clip{%
+\def\tcb@drawspec@watermark@@clip#1{%
\begin{tcbclipinterior}%
- \tcb@drawspec@watermark@@noclip%
+ \color{\kvtcb@watermark@color}%
+ \path[%
+ fill image opacity=\kvtcb@watermark@opacity,
+ fill image scale=\kvtcb@watermark@scale,
+ #1,
+ ]
+ (interior.south west) rectangle (interior.north east);
\end{tcbclipinterior}%
}
-\def\tcb@drawspec@watermark@tikz#1{%
- \setbox\tcb@waterbox=\color@hbox\pgfinterruptpicture{\pgfsetbaseline{0pt}\begin{tikzpicture}[color=\kvtcb@watermark@color]#1\end{tikzpicture}}\endpgfinterruptpicture\color@endbox%
- \tcb@drawspec@watermark%
-}
-
-\def\tcb@drawspec@watermark@graphics#1{%
- \setbox\tcb@waterbox=\color@hbox\pgfinterruptpicture{\includegraphics{#1}}\endpgfinterruptpicture\color@endbox%
- \tcb@drawspec@watermark%
-}
-
-\def\tcb@drawspec@watermark@text#1{%
- \tcb@drawspec@watermark@tikz{\node[inner sep=0pt,align=flush center]{#1};}%
+\def\tcb@drawspec@watermark@@noclip#1{%
+ \color{\kvtcb@watermark@color}%
+ \path[%
+ fill image opacity=\kvtcb@watermark@opacity,
+ fill image scale=(\kvtcb@watermark@scale)/4,
+ #1,
+ ]
+ ([xshift=-\tcb@innerwidth*2,yshift=-\tcb@innerheight*2]interior.center)
+ rectangle +(\tcb@innerwidth*4,\tcb@innerheight*4);
}
-
\tcbset{%
watermark opacity/.store in=\kvtcb@watermark@opacity,%
watermark color/.store in=\kvtcb@watermark@color,%
%
- watermark stretch/.code={\def\tcb@comp@wm{\tcb@comp@waterbox@stretch{#1}{\tcb@innerwidth}{\tcb@innerheight}}},%
- watermark zoom/.code={\def\tcb@comp@wm{\tcb@comp@waterbox@zoom{#1}{\tcb@innerwidth}{\tcb@innerheight}}},%
- watermark overzoom/.code={\def\tcb@comp@wm{\tcb@comp@waterbox@overzoom{#1}{\tcb@innerwidth}{\tcb@innerheight}}},%
- watermark shrink/.code={\def\tcb@comp@wm{\tcb@comp@waterbox@shrink{#1}{\tcb@innerwidth}{\tcb@innerheight}}},%
+ watermark stretch/.code={\def\kvtcb@watermark@scale{#1}%
+ \tikzset{fill@image/.style={fill stretch image={##1}},fill@picture/.style={fill stretch picture={##1}}}},%
+ watermark stretch/.default=1,
+ watermark zoom/.code={\def\kvtcb@watermark@scale{#1}%
+ \tikzset{fill@image/.style={fill zoom image={##1}},fill@picture/.style={fill zoom picture={##1}}}},%
+ watermark zoom/.default=1,
+ watermark overzoom/.code={\def\kvtcb@watermark@scale{#1}%
+ \tikzset{fill@image/.style={fill overzoom image={##1}},fill@picture/.style={fill overzoom picture={##1}}}},%
+ watermark overzoom/.default=1,
+ watermark shrink/.code={\def\kvtcb@watermark@scale{#1}%
+ \tikzset{fill@image/.style={fill shrink image={##1}},fill@picture/.style={fill shrink picture={##1}}}},%
+ watermark shrink/.default=1,
+%
+ watermark@overlay/.style={overlay={\tcb@drawspec@watermark{#1}}},
+ watermark@overlay@on/.style n args={2}{overlay #1={\tcb@drawspec@watermark{#2}}},
%
- watermark tikz/.style={overlay={\tcb@drawspec@watermark@tikz{#1}}},
- watermark tikz on/.style args={#1 is #2}{overlay #1={\tcb@drawspec@watermark@tikz{#2}}},%
- watermark graphics/.style={overlay={\tcb@drawspec@watermark@graphics{#1}}},
- watermark graphics on/.style args={#1 is #2}{overlay #1={\tcb@drawspec@watermark@graphics{#2}}},
- watermark text/.style={overlay={\tcb@drawspec@watermark@text{#1}}},
- watermark text on/.style args={#1 is #2}{overlay #1={\tcb@drawspec@watermark@text{#2}}},
+ watermark tikz/.style={watermark@overlay={fill@picture={#1}}},
+ watermark tikz on/.style args={#1 is #2}{watermark@overlay@on={#1}{fill@picture={#2}}},
+ watermark graphics/.style={watermark@overlay={fill@image={#1}}},
+ watermark graphics on/.style args={#1 is #2}{watermark@overlay@on={#1}{fill@image={#2}}},
+ watermark text/.style={watermark@overlay={fill@picture={\node[inner sep=0pt,align=flush center]{#1};}}},
+ watermark text on/.style args={#1 is #2}{watermark@overlay@on={#1}{fill@picture={\node[inner sep=0pt,align=flush center]{#2};}}},
no watermark/.style={no overlay},
clip watermark/.is choice,
clip watermark/true/.code={\let\tcb@drawspec@watermark=\tcb@drawspec@watermark@@clip},
@@ -1311,115 +1290,6 @@
}
-\def\tcb@process@ppbb{%
- \pgf@process{\pgfpointanchor{path picture bounding box}{south west}}%
- \pgf@xa\pgf@x\pgf@ya\pgf@y%
- \pgf@process{\pgfpointanchor{path picture bounding box}{north east}}%
- \pgf@xb\pgf@x\pgf@yb\pgf@y%
- \pgfsetfillopacity{\tcb@tikz@fill@graphics@opacity}%
- \pgfsetstrokeopacity{\tcb@tikz@fill@graphics@opacity}%
-}
-
-\def\tcb@process@ppbb@wh{%
- \tcb@process@ppbb%
- \tcbdimto\tcb@ppbb@width{\pgf@xb-\pgf@xa}%
- \tcbdimto\tcb@ppbb@height{\pgf@yb-\pgf@ya}%
-}
-
-\def\tcb@ppbb@textbox#1{\pgftext[x=\the\dimexpr\pgf@xa+\tcb@ppbb@width/2\relax,y=\pgf@ya+\tcb@ppbb@height/2]{#1}}
-
-\def\tcb@set@waterbox@to@graphics#1{%
- \setbox\tcb@waterbox=\color@hbox\pgfinterruptpicture%
- \begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@tikz@fill@graphics@options]}\x{#1}%
- \endpgfinterruptpicture\color@endbox%
-}
-
-\def\tcb@set@waterbox@to@picture#1{%
- \setbox\tcb@waterbox=\color@hbox\pgfinterruptpicture{\pgfsetbaseline{0pt}\begin{tikzpicture}#1\end{tikzpicture}}\endpgfinterruptpicture\color@endbox%
-}
-
-\tikzset{%
- fill image opacity/.store in=\tcb@tikz@fill@graphics@opacity,%
- fill image opacity=1,%
- fill image scale/.store in=\tcb@tikz@fill@graphics@scale,%
- fill image scale=1,%
- fill image options/.store in=\tcb@tikz@fill@graphics@options,%
- fill image options=,%
- fill plain image/.style={path picture={%
- \tcb@process@ppbb@wh%
- \tcb@ppbb@textbox{\begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@tikz@fill@graphics@options]}\x{#1}}%
- }},
- fill plain picture/.style={path picture={%
- \tcb@process@ppbb@wh%
- \tcb@set@waterbox@to@picture{#1}%
- \tcb@ppbb@textbox{\box\tcb@waterbox}%
- }},
- fill stretch image/.style={path picture={%
- \tcb@process@ppbb@wh%
- \tcb@ppbb@textbox{\begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@tikz@fill@graphics@options,%
- width=\the\dimexpr\tcb@tikz@fill@graphics@scale\dimexpr\tcb@ppbb@width\relax,%
- height=\the\dimexpr\tcb@tikz@fill@graphics@scale\dimexpr\tcb@ppbb@height\relax]}\x{#1}}%
- }},
- fill stretch picture/.style={path picture={%
- \tcb@process@ppbb@wh%
- \tcb@set@waterbox@to@picture{#1}%
- \tcb@comp@waterbox@stretch{\tcb@tikz@fill@graphics@scale}{\tcb@ppbb@width}{\tcb@ppbb@height}%
- \tcb@ppbb@textbox{\tcb@box@scaled@waterbox}%
- }},
- fill@overzoom/.style={path picture={%
- \tcb@process@ppbb@wh%
- #1%
- \tcb@comp@waterbox@overzoom{\tcb@tikz@fill@graphics@scale}{\tcb@ppbb@width}{\tcb@ppbb@height}%
- \tcb@ppbb@textbox{\tcb@box@scaled@waterbox}%
- }},
- fill overzoom image/.style={fill@overzoom={\tcb@set@waterbox@to@graphics{#1}}},%
- fill overzoom picture/.style={fill@overzoom={\tcb@set@waterbox@to@picture{#1}}},%
- fill@zoom/.style={path picture={%
- \tcb@process@ppbb@wh%
- #1%
- \tcb@comp@waterbox@zoom{\tcb@tikz@fill@graphics@scale}{\tcb@ppbb@width}{\tcb@ppbb@height}%
- \tcb@ppbb@textbox{\tcb@box@scaled@waterbox}%
- }},
- fill zoom image/.style={fill@zoom={\tcb@set@waterbox@to@graphics{#1}}},%
- fill zoom picture/.style={fill@zoom={\tcb@set@waterbox@to@picture{#1}}},%
- fill@shrink/.style={path picture={%
- \tcb@process@ppbb@wh%
- #1%
- \tcb@comp@waterbox@shrink{\tcb@tikz@fill@graphics@scale}{\tcb@ppbb@width}{\tcb@ppbb@height}%
- \tcb@ppbb@textbox{\tcb@box@scaled@waterbox}%
- }},
- fill shrink image/.style={fill@shrink={\tcb@set@waterbox@to@graphics{#1}}},%
- fill shrink picture/.style={fill@shrink={\tcb@set@waterbox@to@picture{#1}}},%
- fill@tile/.style={path picture={%
- \tcb@process@ppbb%
- #1%
- \tcbdimto\tcb@ppbb@tilew{\wd\tcb@waterbox}%
- \tcbdimto\tcb@ppbb@tileh{\ht\tcb@waterbox+\dp\tcb@waterbox}%
- \pgf@xc\pgf@xa\pgf@yc\pgf@yb%
- \pgfutil@loop%
- \pgfutil@loop%
- \pgftext[x=\pgf@xc,y=\pgf@yc,left,top]{\copy\tcb@waterbox}%
- \ifdim\pgf@xc<\pgf@xb\relax%
- \advance\pgf@xc\tcb@ppbb@tilew%
- \pgfutil@repeat%
- \ifdim\pgf@yc>\pgf@ya\relax%
- \advance\pgf@yc-\tcb@ppbb@tileh%
- \pgf@xc\pgf@xa%
- \pgfutil@repeat%
- }},%
- fill tile image/.style={fill@tile={\tcb@set@waterbox@to@graphics{#1}}},%
- fill tile picture/.style={fill@tile={\tcb@set@waterbox@to@picture{#1}}},%
- fill tile picture*/.style 2 args={fill@tile={\tcb@set@waterbox@to@picture{#2}%
- \setbox\tcb@waterbox=\color@hbox\scalebox{#1}{\box\tcb@waterbox}\color@endbox}},%
- %
- fill plain image*/.style 2 args={fill image options={#1},fill plain image={#2}},%
- fill stretch image*/.style 2 args={fill image options={#1},fill stretch image={#2}},%
- fill overzoom image*/.style 2 args={fill image options={#1},fill overzoom image={#2}},%
- fill zoom image*/.style 2 args={fill image options={#1},fill zoom image={#2}},%
- fill shrink image*/.style 2 args={fill image options={#1},fill shrink image={#2}},%
- fill tile image*/.style 2 args={fill image options={#1},fill tile image={#2}},%
-}
-
\tcbset{%
frame style image/.style={frame style={fill=none,fill stretch image={#1}}},
frame style tile/.style 2 args={frame style={fill=none,fill tile image*={#1}{#2}}},
@@ -1815,104 +1685,6 @@
}
-\def\tcb@include@graphics{%
- \let\tcb@graphics@options\kvtcb@graphics@options%
- \ifnum\kvtcb@graphics@orientation>-1\relax%
- \setbox\tcb@waterbox=\color@hbox\begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@graphics@options]}\x{\imagepath}\color@endbox%
- \ifcase\kvtcb@graphics@orientation\relax%
- \ifdim\wd\tcb@waterbox<\dimexpr\ht\tcb@waterbox+\dp\tcb@waterbox\relax%
- \appto\tcb@graphics@options{,angle=90}%
- \fi%
- \or%
- \ifdim\wd\tcb@waterbox<\dimexpr\ht\tcb@waterbox+\dp\tcb@waterbox\relax%
- \appto\tcb@graphics@options{,angle=-90}%
- \fi%
- \or%
- \ifdim\wd\tcb@waterbox>\dimexpr\ht\tcb@waterbox+\dp\tcb@waterbox\relax%
- \appto\tcb@graphics@options{,angle=90}%
- \fi%
- \or%
- \ifdim\wd\tcb@waterbox>\dimexpr\ht\tcb@waterbox+\dp\tcb@waterbox\relax%
- \appto\tcb@graphics@options{,angle=-90}%
- \fi%
- \fi%
- \fi%
- \ifdefstring{\kvtcb@capture}{hbox}{%
- \tcbox{%
- \begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@graphics@options]}%
- \x{\imagepath}%
- }%
- }{%
- \iftcb@fixedheight%
- \begin{tcolorbox}%
- \begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@graphics@options,width=\linewidth,height=\tcbtextheight,keepaspectratio]}%
- \x{\imagepath}%
- \end{tcolorbox}%
- \else%
- \ifdefempty\tcb@height@adjust{%
- \begin{tcolorbox}%
- \begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@graphics@options,width=\linewidth]}%
- \x{\imagepath}%
- \end{tcolorbox}%
- }{% height fill
- \begin{tcolorbox}[underlay={%
- \begin{tcbclipinterior}%
- \path[fill zoom image*={\tcb@graphics@options}{\imagepath}]
- ([xshift=\kvtcb@boxsep+\kvtcb@leftupper,yshift=\kvtcb@boxsep+\kvtcb@bottom]interior.south west) rectangle
- ([xshift=-\kvtcb@boxsep-\kvtcb@rightupper,yshift=-\kvtcb@boxsep-\kvtcb@top]interior.north east);
- \end{tcbclipinterior}%
- }]%
- \end{tcolorbox}%
- }%
- \fi%
- }%
-}
-
-\def\tcb@scanfilename#1#2{%
- \begingroup%
- \everyeof{\noexpand}%
- \endlinechar -1%
- \catcode`\_=11%
- \catcode`\~=11%
- \edef\x{\scantokens\expandafter{#2}}%
- \expandafter\endgroup%
- \expandafter\def\expandafter #1\expandafter{\x}%
-}%
-
-
-\def\tcb@include@graphics@preparefile#1{%
- \tcb@scanfilename\tcb@temp{#1}%
- \filename@parse{\tcb@temp}%
- \ifx\filename@ext\relax%
- \let\imagename\filename@base%
- \else%
- \def\imagename{\filename@base\Gin@sepdefault\filename@ext}%
- \fi%
- \ifdefined\grffile@Ginclude@graphics%
- % grffile package loaded
- \ifx\kvtcb@graphics@directory\@empty%
- \def\imagepath{#1}%
- \else%
- \def\imagepath{\kvtcb@graphics@directory/#1}%
- \fi%
- \else%
- \ifx\kvtcb@graphics@directory\@empty%
- \edef\imagepath{#1}%
- \else%
- \edef\imagepath{\kvtcb@graphics@directory/#1}%
- \fi%
- \fi%
-}
-
-\newcommand{\tcbincludegraphics}[2][]{%
- \begingroup%
- \tcb@layer@pushup%
- \tcb@apply@box@options{enhanced,clip upper=true,valign=center,center upper,#1}%
- \tcb@include@graphics@preparefile{#2}%
- \edef\imagepage{1}%
- \tcb@include@graphics%
- \endgroup%
-}
\def\tcb@set@pdfpages#1#2{%
\IfFileExists{#2}{%
@@ -1940,20 +1712,158 @@
\relax%
}
-\newcommand{\tcbincludepdf}[2][]{%
- \tcb@include@graphics@preparefile{#2}%
- \tcb@set@pdfpages\pdfpages{\imagepath}%
- \foreach \imagepage in \kvtcb@graphics@pages%
- {%
- \begingroup%
- \tcb@layer@pushup%
- \tcb@apply@box@options{enhanced,clip upper=true,valign=center,center upper,#1}%
- \appto\kvtcb@graphics@options{,page=\imagepage}%
- \tcb@include@graphics%
- \endgroup%
- }%
+
+\ExplSyntaxOn
+
+\tl_new:N \l__tcobox_graphics_options_tl
+
+
+\cs_new:Npn \__tcobox_include_graphics:nn #1#2
+ {
+ \tl_set:Nn \l_tmpa_tl { \includegraphics }
+ \tl_put_right:Nx \l_tmpa_tl { [#1] }
+ \l_tmpa_tl {#2}
+ }
+
+
+\cs_new:Npn \__tcobox_include_graphics:
+ {
+ \tl_set_eq:NN \l__tcobox_graphics_options_tl \kvtcb@graphics@options
+
+ \int_compare:nNnT \kvtcb@graphics@orientation > {-1}
+ {
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \__tcobox_include_graphics:nn { \l__tcobox_graphics_options_tl }{ \imagepath }
+ }
+ \if_case:w \kvtcb@graphics@orientation
+ \dim_compare:nNnT {\box_wd:N\l_tmpa_box} < {\box_ht_plus_dp:N \l_tmpa_box}
+ {
+ \tl_put_right:Nn \l__tcobox_graphics_options_tl {,angle=90}
+ }
+ \or:
+ \dim_compare:nNnT {\box_wd:N\l_tmpa_box} < {\box_ht_plus_dp:N \l_tmpa_box}
+ {
+ \tl_put_right:Nn \l__tcobox_graphics_options_tl {,angle=-90}
+ }
+ \or:
+ \dim_compare:nNnT {\box_wd:N\l_tmpa_box} > {\box_ht_plus_dp:N \l_tmpa_box}
+ {
+ \tl_put_right:Nn \l__tcobox_graphics_options_tl {,angle=90}
+ }
+ \or:
+ \dim_compare:nNnT {\box_wd:N\l_tmpa_box} > {\box_ht_plus_dp:N \l_tmpa_box}
+ {
+ \tl_put_right:Nn \l__tcobox_graphics_options_tl {,angle=-90}
+ }
+ \fi:
+ }
+
+ \tl_if_eq:NnTF \kvtcb@capture {hbox}
+ {
+ \tcbox
+ {
+ \__tcobox_include_graphics:nn { \l__tcobox_graphics_options_tl }{ \imagepath }
+ }
+ }
+ {
+ \legacy_if:nTF {tcb@fixedheight}
+ {
+ \begin{tcolorbox}
+ \__tcobox_include_graphics:nn { \l__tcobox_graphics_options_tl,width=\linewidth,height=\tcbtextheight,keepaspectratio }{ \imagepath }
+ \end{tcolorbox}
+ }
+ {
+ \tl_if_empty:NTF \tcb@height@adjust
+ {
+ \begin{tcolorbox}
+ \__tcobox_include_graphics:nn { \l__tcobox_graphics_options_tl,width=\linewidth }{ \imagepath }
+ \end{tcolorbox}%
+ }{% height fill
+ \begin{tcolorbox}[
+ underlay=
+ {
+ \begin{tcbclipinterior}
+ \path[fill~zoom~image*={\l__tcobox_graphics_options_tl}{\imagepath}]
+ ([xshift=\kvtcb@boxsep+\kvtcb@leftupper,yshift=\kvtcb@boxsep+\kvtcb@bottom]interior.south~west)~rectangle~
+ ([xshift=-\kvtcb@boxsep-\kvtcb@rightupper,yshift=-\kvtcb@boxsep-\kvtcb@top]interior.north~east);
+ \end{tcbclipinterior}
+ }]
+ \end{tcolorbox}
+ }
+ }
+ }
+ }
+
+
+\cs_new:Npn \__tcobox_include_graphics_preparefile:n #1
+ {
+ \file_parse_full_name:nNNN {#1} \l_tmpa_tl \imagename \l_tmpb_tl
+ \tl_put_right:NV \imagename \l_tmpb_tl
+ \tl_set_eq:NN \imagepath \imagename
+ \tl_if_empty:NF \l_tmpa_tl
+ {
+ \tl_put_left:Nn \imagepath {/}
+ \tl_if_eq:NnF \l_tmpa_tl {/}
+ {
+ \tl_put_left:NV \imagepath \l_tmpa_tl
+ }
+ }
+ \tl_if_empty:NF \kvtcb@graphics@directory
+ {
+ \tl_put_left:Nn \imagepath {/}
+ \tl_if_eq:NnF \kvtcb@graphics@directory {/}
+ {
+ \tl_put_left:NV \imagepath \kvtcb@graphics@directory
+ }
+ }
+ \tl_set_rescan:Nno \imagename
+ {
+ \char_set_catcode_letter:N \_
+ \char_set_catcode_letter:N \~
+ \char_set_catcode_letter:N \{
+ \char_set_catcode_letter:N \}
+ \char_set_catcode_letter:N \$
+ \char_set_catcode_letter:N \^
+ \char_set_catcode_letter:N \#
+ \char_set_catcode_letter:N \%
+ }
+ {
+ \imagename
+ }
+ }
+
+
+\NewDocumentCommand \tcbincludegraphics { +O{} m }
+ {
+ \group_begin:
+ \tcb@layer@pushup
+ \tcb@apply@box@options{enhanced,clip~upper=true,valign=center,center~upper,#1}
+ \__tcobox_include_graphics_preparefile:n {#2}
+ \cs_set:Npn \imagepage {1}
+ \__tcobox_include_graphics:
+ \group_end:
+ }
+
+
+\NewDocumentCommand \tcbincludepdf { +O{} m }
+ {
+ \__tcobox_include_graphics_preparefile:n {#2}
+ \tcb@set@pdfpages\pdfpages{\imagepath}
+ \foreach~\imagepage~in~\kvtcb@graphics@pages
+ {
+ \group_begin:
+ \tcb@layer@pushup
+ \tcb@apply@box@options{enhanced,clip~upper=true,valign=center,center~upper,#1}
+ \tl_put_right:Nn \kvtcb@graphics@options {,page=\imagepage}
+ \__tcobox_include_graphics:
+ \group_end:
+ }
}
+\ExplSyntaxOff
+
+
\tcbset{%
graphics options/.store in=\kvtcb@graphics@options,
graphics pages/.store in=\kvtcb@graphics@pages,
diff --git a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
index 8d1fb2abcd..183095ad64 100644
--- a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\tcbuselibrary{skins}
diff --git a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
index dc6b5651e7..7135eaba32 100644
--- a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbtheorems.code.tex: Code for theorems in colorboxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\RequirePackage{amsmath}
@@ -147,18 +147,25 @@
}
-\NewDocumentCommand \__tcobox_new_tcbtheorem:w { m O{} m m +m m }
+\NewDocumentCommand \__tcobox_new_tcbtheorem_x:w { m O{} m m +m m }
{
- #1 [auto~counter,#2]{#3}[3][]
+ #1 [auto~counter,#2] {#3} { +O{} +o +m m }
{
#5,
- title = {\__tcobox_theo_title:nnn{#4}{\thetcbcounter}{##2}},
- list~entry = {\protect\numberline{\thetcbcounter}##2},
- nameref = {##2},
- theo@label = {#6}{##3},
+ title = {\__tcobox_theo_title:nnn{#4}{\thetcbcounter}{##3}},
+ IfValueTF = {##2}
+ {
+ list~entry = {\protect\numberline{\thetcbcounter}##2},
+ nameref = {##2},
+ }
+ {
+ list~entry = {\protect\numberline{\thetcbcounter}##3},
+ nameref = {##3},
+ },
+ theo@label = {#6}{##4},
##1
}
- #1 [#2,no~counter,list~inside=]{#3*}[2][]
+ #1 [#2,no~counter,list~inside=] {#3*} { +O{} +m }
{
#5,
title = {\__tcobox_theo_title:nnn{#4}{}{##2}},
@@ -167,15 +174,29 @@
}
-\NewDocumentCommand \newtcbtheorem {}
+\NewDocumentCommand \NewTcbTheorem {}
+ {
+ \__tcobox_new_tcbtheorem_x:w \NewTColorBox
+ }
+\NewCommandCopy\newtcbtheorem\NewTcbTheorem
+
+
+\NewDocumentCommand \RenewTcbTheorem {}
+ {
+ \__tcobox_new_tcbtheorem_x:w \RenewTColorBox
+ }
+\NewCommandCopy\renewtcbtheorem\RenewTcbTheorem
+
+
+\NewDocumentCommand \DeclareTcbTheorem {}
{
- \__tcobox_new_tcbtheorem:w \newtcolorbox
+ \__tcobox_new_tcbtheorem_x:w \DeclareTColorBox
}
-\NewDocumentCommand \renewtcbtheorem {}
+\NewDocumentCommand \ProvideTcbTheorem {}
{
- \__tcobox_new_tcbtheorem:w \renewtcolorbox
+ \__tcobox_new_tcbtheorem_x:w \ProvideTColorBox
}
diff --git a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
index 900e14ad95..92d194860c 100644
--- a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbvignette.code.tex: Code for ornamental frames
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\tcbuselibrary{skins}
diff --git a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
index 477ae4dc6c..56ad29b0d4 100644
--- a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcbxparse.code.tex: Code for xparse features
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,6 +18,6 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{5.1.1}
+\tcb@set@library@version{6.0.0}
\RequirePackage{xparse}[2013/12/31]
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
index 4fc5f5f334..f77ca2e8a9 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
index 699d19a9c7..4dbfcb4fec 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcolorbox-example-poster.tex: a poster example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
index c68ebb8fbe..08b56c8ef9 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
index 1d4ee51c68..8a705f8fd2 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcolorbox-example.tex: an example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
index 7cb12cfa72..3640c4b7f0 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
index 0427651ee3..2980d2253e 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
@@ -1,9 +1,9 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcolorbox-tutorial-poster.tex: a tutorial for poster creation with tcolorbox
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib b/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib
index 5569800e3d..d67c8a362a 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib
@@ -7,7 +7,7 @@
language = {english}
}
-@manual{schoepf:2001a,
+@manual{schoepf:verbatim,
author = {Rainer Sch{\"o}pf and Bernd Raichle and Chris Rowley},
title = {A New Implementation of {\LaTeX}'s verbatim and verbatim* Environments},
url = {https://mirror.ctan.org/macros/latex/required/tools/verbatim.pdf},
@@ -49,12 +49,12 @@
@book{sturm:latex,
author = {Thomas F. Sturm},
- title = {\LaTeX -- Einführung in das Textsatzsystem},
- publisher = {Leibnitz Universität Hannover IT Services (LUIS)},
+ title = {\LaTeX -- Einf{\"u}hrung in das Textsatzsystem},
+ publisher = {Leibnitz Universit{\"a}t Hannover IT Services (LUIS)},
address = {Hannover},
edition = 12,
- series = {IT-Handb\"ucher},
- url = {https://www.luis.uni-hannover.de/de/services/schulung-beratung-und-support/handbuecher/it-handbuecher-und-ebooks/details/manuals/latex/},
+ series = {IT-Handb{\"u}cher},
+ url = {https://www.luis.uni-hannover.de/de/services/kurse-beratung-und-support/handbuecher/it-handbuecher-und-ebooks/details/manuals/latex},
date = {2019-07},
language = {german}
}
@@ -63,18 +63,18 @@
@manual{tantau:tikz_and_pgf,
author = {Till Tantau},
title = {The TikZ and PGF Packages},
- subtitle = {Manual for version 3.1.5b},
+ subtitle = {Manual for version 3.1.10},
url = {https://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf},
- date = {2020-01-08},
+ date = {2023-01-15},
}
@manual{tantau:beamer,
author = {Till Tantau and Joseph Wright and Vedran Mileti\'{c}},
title = {The Beamer Class},
- subtitle = {User Guide for version 3.57},
+ subtitle = {User Guide for version 3.68},
url = {https://mirrors.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf},
- date = {2019-09-30},
+ date = {2022-09-17},
}
@@ -106,7 +106,7 @@
author = {Frank Mittelbach},
title = {An environment for multicolumn output},
url = {https://mirror.ctan.org/macros/latex/required/tools/multicol.pdf},
- date = {2020-02-02},
+ date = {2022-10-31},
}
@@ -138,7 +138,7 @@
author = {Philipp Lehman and Joseph Wright},
title = {The etoolbox Package},
url = {https://mirror.ctan.org/macros/latex/contrib/etoolbox/etoolbox.pdf},
- date = {2019-09-21},
+ date = {2020-10-05},
}
@@ -155,13 +155,13 @@
title = {The minted package},
subtitle = {Highlighted source code in \LaTeX},
url = {https://mirror.ctan.org/macros/latex/contrib/minted/minted.pdf},
- date = {2017-07-19},
+ date = {2022-12-12},
}
@online{pygments:web,
title = {Pygments},
subtitle = {Python syntax highlighter},
- date = {2019},
+ date = {2023},
url = {https://pygments.org/},
}
@@ -169,7 +169,7 @@
author = {The \LaTeX3 Project},
title = {The xparse Package},
url = {https://mirror.ctan.org/macros/latex/contrib/l3packages/xparse.pdf},
- date = {2020-03-06},
+ date = {2023-02-02},
}
@@ -184,8 +184,8 @@
@manual{rahtz:hyperref,
author = {Sebastian Rahtz and Heiko Oberdiek},
title = {Hypertext marks in \LaTeX: a manual for hyperref},
- url = {https://mirrors.ctan.org/macros/latex/contrib/hyperref/doc/manual.pdf},
- date = {2020-01},
+ url = {https://mirrors.ctan.org/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf},
+ date = {2023-02-07},
language = {english}
}
@@ -194,6 +194,26 @@
author = {Heiko Oberdiek},
title = {The bookmark package},
url = {https://mirrors.ctan.org/macros/latex/contrib/bookmark/bookmark.pdf},
- date = {2019-12-03},
+ date = {2020-11-06},
language = {english}
}
+
+
+@manual{oberdiek:zref,
+ author = {Heiko Oberdiek},
+ title = {The zref package},
+ url = {https://mirrors.ctan.org/macros/latex/contrib/zref/zref.pdf},
+ date = {2022-04-07},
+ language = {english}
+}
+
+
+@manual{barros:zref-clever,
+ author = {Gustavo Barros},
+ title = {The zref-clever package},
+ url = {https://mirrors.ctan.org/macros/latex/contrib/zref-clever/zref-clever.pdf},
+ date = {2023-01-03},
+ language = {english}
+}
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
index 344cf30273..7841220a06 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
@@ -335,6 +335,11 @@ The |break at| option can be used to insert better break points by hand.
\refKey{/tcb/use color stack} is silently ignored.
\clearpage
+The result of the following example depends on the used \LaTeX\ engine and
+loaded packages. The right-hand side is blue, if compiled using
+pdf\TeX, Lua\TeX{} without |luacolor|, and Xe\TeX.
+Lua\TeX{} with |luacolor| gives the next but one result.
+
\begin{dispExample}
% \usepackage{multicol,lipsum}
\begin{multicols}{2}\footnotesize
@@ -342,17 +347,18 @@ Breakable box without color stack.
\begin{tcolorbox}[enhanced jigsaw,
size=small, colframe=gray, colback=yellow!10!white, colupper=blue,
enforce breakable,% use only breakable in the real world!
- vfill before first, pad at break=1mm, break at=3.3cm ]
- \begin{itemize}\item Some blue text.\end{itemize}
- {\color{red}\itshape\lipsum[2]}\par
+ vfill before first, pad at break=1mm, break at=33mm ]
+ Some blue text.\par\smallskip
+ {\color{red}\itshape\lipsum[2]}\par\smallskip
More blue text.
\end{tcolorbox}
Text after box.
\end{multicols}
\end{dispExample}
-We do again with \refKey{/tcb/use color stack}. Observe the additional spacing
-at the begin of the box:
+We do again with \refKey{/tcb/use color stack}. Again, the result depends on
+the used \LaTeX\ engine. The right-hand side stays blue for Xe\TeX{} and
+and is red and blue for pdf\TeX{} and Lua\TeX{}.
\begin{dispExample}
% \usepackage{multicol,lipsum}
@@ -361,9 +367,9 @@ Breakable box with color stack.
\begin{tcolorbox}[enhanced jigsaw, use color stack,
size=small, colframe=gray, colback=yellow!10!white, colupper=blue,
enforce breakable,% use only breakable in the real world!
- vfill before first, pad at break=1mm, break at=3.3cm ]
- \begin{itemize}\item Some blue text.\end{itemize}
- {\color{red}\itshape\lipsum[2]}\par
+ vfill before first, pad at break=1mm, break at=33mm ]
+ Some blue text.\par\smallskip
+ {\color{red}\itshape\lipsum[2]}\par\smallskip
More blue text.
\end{tcolorbox}
Text after box.
@@ -433,7 +439,7 @@ Text after box.
and \refKey{/tcb/pad after break}.
\end{docTcbKey}
-\enlargethispage*{5mm}
+\enlargethispage*{10mm}
\begin{docTcbKey}{pad at break*}{=\meta{length}}{style, no default}
Sets \refKey{/tcb/pad at break} to \meta{length} and
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
index 110edf0626..4008a00a8f 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
@@ -141,7 +141,7 @@ Text \tcbox[tcbox raise base]{Hello World}\hfill
% Fitted width box (like hbox or makebox)
\tcbox{Hello\\World!}
-% Fitted width box (using a \tikzname\ node)
+% Fitted width box (using a TikZ node)
\tcbox[tikznode]{Hello\\World!}
\end{dispExample}
@@ -211,21 +211,20 @@ numbered title and options.
\clearpage
-\begin{docCommand}{DeclareTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+\begin{docCommand}{NewTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
Creates a new environment \meta{name} based on \refEnv{tcolorbox}.\\
- Basically, |\DeclareTColorBox| operates like |\DeclareDocumentEnvironment|. This means,
+ Basically, \refCom{NewTColorBox} operates like |\NewDocumentEnvironment|. This means,
the new environment \meta{name} is constructed with the given argument \meta{specification}.
+ An error is issued if an environment with \meta{name} has already been defined.
The \meta{options} are given to the underlying \refEnv{tcolorbox}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
automatically.\\
The \meta{init options} allow setting up automatic numbering,
- see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
- The new environment is always created, irrespective of an already existing
- environment with the same name.
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
\begin{dispExample}
% counter from previous example
-\DeclareTColorBox[use counter from=pabox]{mybox}{ O{red} m d"" !O{} }
+\NewTColorBox[use counter from=pabox]{mybox}{ O{red} m d"" !O{} }
{enhanced,colframe=#1!75!black,colback=#1!5!white,
fonttitle=\bfseries,title={\thetcbcounter~#2},
IfValueT={#3}{watermark text={#3}},#4}
@@ -253,40 +252,42 @@ This is a tcolorbox.
\end{docCommand}
\clearpage
-\begin{docCommand}{NewTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTColorBox}, but based on |\NewDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
- An error is issued if \meta{name} has already been defined.
-\end{docCommand}
-
\begin{docCommand}{RenewTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTColorBox}, but based on |\RenewDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ Operates like \refCom{NewTColorBox}, but based on |\RenewDocumentEnvironment| instead of |\NewDocumentEnvironment|.
An existing environment is redefined.
\end{docCommand}
\begin{docCommand}{ProvideTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTColorBox}, but based on |\ProvideDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ Operates like \refCom{NewTColorBox}, but based on |\ProvideDocumentEnvironment| instead of |\NewDocumentEnvironment|.
The environment \meta{name} is only created if it is not already defined.
\end{docCommand}
+\begin{docCommand}{DeclareTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Operates like \refCom{NewTColorBox}, but based on |\DeclareDocumentEnvironment| instead of |\NewDocumentEnvironment|.
+ The new environment is always created, irrespective of an already existing
+ environment with the same name.
+\end{docCommand}
+
\clearpage
-\begin{docCommand}{DeclareTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+\begin{docCommand}{NewTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
Creates a new command \texttt{\textbackslash}\meta{name} based on \refEnv{tcolorbox}.
- In contrast to \refCom{DeclareTColorBox}, also the \meta{content} of the |tcolorbox| is specified.\\
- Basically, |\DeclareTotalTColorBox| operates like |\DeclareDocumentCommand|. This means,
+ In contrast to \refCom{NewTColorBox}, also the \meta{content} of the |tcolorbox| is specified.\\
+ Basically, \refCom{NewTotalTColorBox} operates like |\NewDocumentCommand|. This means,
the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refEnv{tcolorbox} which is filled with
the specified \meta{content}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
- automatically.\\
+ automatically.
+ Also note that \refKey{/tcb/saveto} and \refKey{/tcb/savelowerto}
+ cannot be used with \refCom{NewTotalTColorBox} and friends.\\
The \meta{init options} allow setting up automatic numbering,
- see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
- The new command is always created, irrespective of an already existing
- command with the same name.
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
\begin{dispExample}
-\DeclareTotalTColorBox{\diabox}{ O{} v m }
+\NewTotalTColorBox{\diabox}{ O{} v m }
{ bicolor,nobeforeafter,equal height group=diabox,width=5.7cm,
fonttitle=\bfseries\ttfamily,adjusted title={#2},center title,
colframe=blue!20!black,leftupper=0mm,rightupper=0mm,colback=black!75!white,#1}
@@ -295,25 +296,24 @@ This is a tcolorbox.
\diabox{blueshade.png}{Created with |GIMP|.\\\url{http://www.gimp.org}}
\diabox{goldshade.png}{Created with |GIMP|.\\\url{http://www.gimp.org}}
-
\end{dispExample}
\end{docCommand}
-\begin{docCommand}{NewTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
- Operates like \refCom{DeclareTotalTColorBox}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
- An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
-\end{docCommand}
-
\begin{docCommand}{RenewTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
- Operates like \refCom{DeclareTotalTColorBox}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTotalTColorBox}, but based on |\RenewDocumentCommand| instead of |\NewDocumentCommand|.
An existing command is redefined.
\end{docCommand}
\begin{docCommand}{ProvideTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
- Operates like \refCom{DeclareTotalTColorBox}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTotalTColorBox}, but based on |\ProvideDocumentCommand| instead of |\NewDocumentCommand|.
The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
\end{docCommand}
+\begin{docCommand}{DeclareTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{NewTotalTColorBox}, but based on |\DeclareDocumentCommand| instead of |\NewDocumentCommand|.
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+\end{docCommand}
\clearpage
@@ -383,21 +383,20 @@ The \xmybox[green]{quick} brown \xmybox{fox} \xmybox[blue]{jumps} over the
\end{docCommand}
-\begin{docCommand}{DeclareTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+\begin{docCommand}{NewTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcbox}.
- Basically, |\DeclareTCBox| operates like |\DeclareDocumentCommand|. This means,
+ Basically, \refCom{NewTCBox} operates like |\NewDocumentCommand|. This means,
the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcbox}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
automatically.\\
The \meta{init options} allow setting up automatic numbering,
- see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
- The new command is always created, irrespective of an already existing
- command with the same name.
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
\begin{dispExample}
% counter from previous example
-\DeclareTCBox[use counter from=pabox]{\mybox}{ s m s }
+\NewTCBox[use counter from=pabox]{\mybox}{ s m s }
{ nobeforeafter,colback=red!5!white,colframe=red!75!black,
title={#2 (Box \thetcbcounter)},fonttitle=\bfseries,
IfBooleanT={#1}{enhanced,drop shadow},
@@ -413,41 +412,41 @@ The \xmybox[green]{quick} brown \xmybox{fox} \xmybox[blue]{jumps} over the
\end{dispExample}
\end{docCommand}
-\begin{docCommand}{NewTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBox}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
- An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
-\end{docCommand}
\begin{docCommand}{RenewTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBox}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTCBox}, but based on |\RenewDocumentCommand| instead of |\NewDocumentCommand|.
An existing command is redefined.
\end{docCommand}
\begin{docCommand}{ProvideTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBox}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTCBox}, but based on |\ProvideDocumentCommand| instead of |\NewDocumentCommand|.
The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
\end{docCommand}
+\begin{docCommand}{DeclareTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{NewTCBox}, but based on |\DeclareDocumentCommand| instead of |\NewDocumentCommand|.
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+\end{docCommand}
\clearpage
-\begin{docCommand}{DeclareTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+\begin{docCommand}{NewTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcbox}.
- In contrast to \refCom{DeclareTCBox}, also the \meta{content} of the |tcbox| is specified.\\
- Basically, |\DeclareTotalTCBox| operates like |\DeclareDocumentCommand|. This means,
+ In contrast to \refCom{NewTCBox}, also the \meta{content} of the |tcbox| is specified.\\
+ Basically, \refCom{NewTotalTCBox} operates like |\NewDocumentCommand|. This means,
the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcbox} which is filled with
the specified \meta{content}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
automatically.\\
The \meta{init options} allow setting up automatic numbering,
- see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
- The new command is always created, irrespective of an already existing
- command with the same name.
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
\begin{dispExample}
-\DeclareTotalTCBox{\myverb}{ O{red} v !O{} }
+\NewTotalTCBox{\myverb}{ O{red} v !O{} }
{ fontupper=\ttfamily,nobeforeafter,tcbox raise base,arc=0pt,outer arc=0pt,
top=0pt,bottom=0pt,left=0mm,right=0mm,
leftrule=0pt,rightrule=0pt,toprule=0.3mm,bottomrule=0.3mm,boxsep=0.5mm,
@@ -466,7 +465,7 @@ typeset the verbatim content.
\begin{dispExample}
% \usepackage{listings} or \tcbuselibrary{listings}
-\DeclareTotalTCBox{\commandbox}{ s v }
+\NewTotalTCBox{\commandbox}{ s v }
{verbatim,colupper=white,colback=black!75!white,colframe=black}
{\IfBooleanT{#1}{\textcolor{red}{\ttfamily\bfseries > }}%
\lstinline[language=command.com,keywordstyle=\color{blue!35!white}\bfseries]^#2^}
@@ -481,21 +480,23 @@ typeset the verbatim content.
\end{docCommand}
\clearpage
-\begin{docCommand}{NewTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
- Operates like \refCom{DeclareTotalTCBox}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
- An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
-\end{docCommand}
\begin{docCommand}{RenewTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
- Operates like \refCom{DeclareTotalTCBox}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTotalTCBox}, but based on |\RenewDocumentCommand| instead of |\NewDocumentCommand|.
An existing command is redefined.
\end{docCommand}
\begin{docCommand}{ProvideTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
- Operates like \refCom{DeclareTotalTCBox}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTotalTCBox}, but based on |\ProvideDocumentCommand| instead of |\NewDocumentCommand|.
The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
\end{docCommand}
+\begin{docCommand}{DeclareTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{NewTotalTCBox}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+\end{docCommand}
+
\begin{docCommand}{tcboxverb}{\oarg{options}\marg{verbatim box content}}
Creates a colored box based on \refCom{tcbox} which is fitted to the width of the given
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
index aad10b052a..70ac6c7ff8 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
@@ -210,7 +210,8 @@ just like any other \refEnv{tcolorbox}.
coltitle=red!25!black,
fonttitle=\bfseries,
subtitle style={boxrule=0.4pt,
- colback=yellow!50!red!25!white} ]
+ colback=yellow!50!red!25!white,
+ colupper=red!75!gray} ]
This is a \textbf{tcolorbox}.
\tcbsubtitle{My subtitle}
Further text.
@@ -594,7 +595,20 @@ This is a \textbf{tcolorbox}.
\clearpage
\subsection{Text Alignment}
-\begin{docTcbKey}[][doc new=2015-05-07]{halign}{=\meta{alignment}}{no default, initially \texttt{justify}}
+\begin{docTcbKeys}[
+ doc parameter = {=\meta{alignment}},
+ doc description = {no default, initially \texttt{justify}},
+ doc new = 2015-05-07,
+ ]
+ {
+ {
+ doc name = halign,
+ },
+ {
+ doc name = halign upper,
+ }
+ }
+%\begin{docTcbKey}[][doc new=2015-05-07]{halign}{=\meta{alignment}}{no default, initially \texttt{justify}}
If there is no lower part, |halign| determines the horizontal \meta{alignment}
of the text content.
Otherwise, |halign| determines the horizontal \meta{alignment}
@@ -614,6 +628,7 @@ This is a \textbf{tcolorbox}.
detail in the \tikzname\ manual \cite{tantau:tikz_and_pgf}. The short story is that
the non-flush versions will often look more balanced but with more
hyphenations.
+ \refKey{/tcb/halign upper} is an alias for \refKey{/tcb/halign}.
\begin{exdispExample}{halign}
\tcbset{colback=red!5!white,colframe=red!75!black,size=small,
@@ -641,14 +656,30 @@ This is a demonstration text for showing how line breaking works.
\end{tcolorbox}
\end{exdispExample}
-\end{docTcbKey}
+\end{docTcbKeys}
+\clearpage
+
+\begin{docTcbKeys}[
+ doc parameter = {=\marg{code}},
+ doc description = {no default},
+ doc new = 2022-07-07,
+ ]
+ {
+ {
+ doc name = halign code,
+ },
+ {
+ doc name = halign upper code,
+ }
+ }
+ If \refKey{/tcb/halign} resp. \refKey{/tcb/halign upper} is not flexible enough,
+ \refKey{/tcb/halign code} resp. \refKey{/tcb/halign upper code} allows to set
+ arbitrary \meta{code} to configure the horizontal alignment of the text content,
+ e.g. using alignments from specialized packages.
+\end{docTcbKeys}
-\begin{docTcbKey}[][doc new=2015-05-07]{halign upper}{=\meta{alignment}}{no default, initially \texttt{justify}}
- Alias for \refKey{/tcb/halign}.
-\end{docTcbKey}
-\newpage
\begin{docTcbKey}[][doc new=2015-05-07]{halign lower}{=\meta{alignment}}{no default, initially \texttt{justify}}
|halign lower| determines the horizontal \meta{alignment} of the lower part of the box.
The feasible values for \meta{alignment} are the same as for \refKey{/tcb/halign}.
@@ -681,6 +712,19 @@ This is a demonstration text for showing how line breaking works.
\end{docTcbKey}
+\begin{docTcbKeys}[
+ doc parameter = {=\marg{code}},
+ doc description = {no default},
+ doc new = 2022-07-07,
+ doc name = halign lower code,
+ ]{}
+ If \refKey{/tcb/halign lower} is not flexible enough,
+ \refKey{/tcb/halign lower code} allows to set
+ arbitrary \meta{code} to configure the horizontal alignment of the lower
+ part of the box.
+\end{docTcbKeys}
+
+
\clearpage
\begin{docTcbKey}[][doc new=2015-05-07]{halign title}{=\meta{alignment}}{no default, initially \texttt{justify}}
|halign lower| determines the horizontal \meta{alignment} of the title of the box.
@@ -713,7 +757,20 @@ This is a demonstration text for showing how line breaking works.
\end{exdispExample}
\end{docTcbKey}
-\enlargethispage*{1cm}
+
+\begin{docTcbKeys}[
+ doc parameter = {=\marg{code}},
+ doc description = {no default},
+ doc new = 2022-07-07,
+ doc name = halign title code,
+ ]{}
+ If \refKey{/tcb/halign title} is not flexible enough,
+ \refKey{/tcb/halign title code} allows to set
+ arbitrary \meta{code} to configure the horizontal alignment of the title
+ of the box.
+\end{docTcbKeys}
+
+
\begin{docTcbKey}[][doc updated=2015-05-07]{flushleft upper}{}{style, no value}
Shortcut for setting \refKey{/tcb/halign} to \docValue{flush left}.
@@ -1825,7 +1882,7 @@ used for boxes inside a \refEnv{tcbraster}.
\begin{exdispExample}{inherit_height}
\tcbset{colframe=blue!75!black,colback=white,fonttitle=\bfseries}
-\begin{tcolorbox}[title=Outer box with fixed height 4cm,height=4cm]
+\begin{tcolorbox}[title=Outer box with fixed height 3.5cm,height=3.5cm]
\begin{tcolorbox}[title=Inner box,nobeforeafter,inherit height]
This inner box matches the available space.
\end{tcolorbox}
@@ -2135,9 +2192,10 @@ The following options introduce some arbitrary \meta{code} to the content
of a |tcolorbox|. These additions can be given at the beginning or at the ending
of the title, the upper part, or the lower part.
-\begin{docTcbKey}{before title}{=\meta{code}}{no default, initially unset}
+\begin{docTcbKey}[][doc updated=2023-01-27]{before title}{=\meta{code}}{no default, initially unset}
The given \meta{code} is placed \emph{after} the color and font settings
and \emph{before} the content of the title.
+ The \meta{code} is appended by a final |\ignorespaces|.
\begin{exdispExample}{before_title}
\tcbset{before title={\textcolor{yellow}{\large Important:}~},
colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
@@ -2149,8 +2207,16 @@ This is a \textbf{tcolorbox}.
\end{docTcbKey}
-\begin{docTcbKey}{after title}{=\meta{code}}{no default, initially unset}
+\begin{docTcbKey}[][doc new=2023-01-27]{before title*}{=\meta{code}}{no default, initially unset}
+ The given \meta{code} is placed \emph{after} the color and font settings
+ and \emph{before} the content of the title.
+ In contrast to \refKey{/tcb/before title}, no |\ignorespaces| is appended.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc updated=2023-01-27]{after title}{=\meta{code}}{no default, initially unset}
The given \meta{code} is placed \emph{after} the content of the title.
+ The \meta{code} is prepended by a leading |\unskip|.
\begin{exdispExample}{after_title}
\tcbset{after title={\hfill\colorbox{Navy}{approved}},
colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
@@ -2162,6 +2228,12 @@ This is a \textbf{tcolorbox}.
\end{docTcbKey}
+\begin{docTcbKey}[][doc new=2023-01-27]{after title*}{=\meta{code}}{no default, initially unset}
+ The given \meta{code} is placed \emph{after} the content of the title.
+ In contrast to \refKey{/tcb/after title}, no |\unskip| is prepended.
+\end{docTcbKey}
+
+
\clearpage
\begin{docTcbKey}{before upper}{=\meta{code}}{no default, initially empty}
The given \meta{code} is placed \emph{after} the color and font settings
@@ -3923,7 +3995,7 @@ This is a tcolorbox.
a |minipage|. In a |minipage| or |parbox|, paragraphs are formatted slightly different
as the main text. If the key value is set to |false|, the normal main text
behavior is restored. In some situations, this has some unwanted side
- effects. It is recommended that you use this experimental setting only
+ effects. It is recommended that you use this \textbf{experimental setting} only
where you really want to have this feature.
\end{docTcbKey}
@@ -4118,32 +4190,43 @@ Example \ref{exe:tabular_example} on page \pageref{exe:tabular_example}.
Removes the phantom code if set before.
\end{docTcbKey}
-\begin{docTcbKey}{label}{=\meta{marker}}{no default, initially unset}
-The \meta{marker} is set as label text for a reference with the |\ref| macro.
+
+\begin{docTcbKey}[][doc new=2023-02-08]{label is label}{}{no value, initially set}
+Sets |\label| as labelling for |tcolorbox| (global or per box).
+When \refKey{/tcb/label} and friends are used, the underlying labeling macro is |\label|.
+References can be made by |\ref|, |\pageref|, and similar macros. This is the
+default \LaTeX\ behaviour.
+Note that this option is not getting reset by \refKey{/tcb/reset}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2023-02-08]{label is zlabel}{}{no value, initially unset}
+Sets |\zlabel| as labelling for |tcolorbox| (global or per box).
+When \refKey{/tcb/label} and friends are used, the underlying labeling macro is |\zlabel|.
+This needs the |zref| package \cite{oberdiek:zref} or packages building upon |zref| to be loaded.
+References can be made by |\zref|. If the |zref-clever| package \cite{barros:zref-clever} is loaded,
+|\zcref|, |\zcpageref|, and similar macros can be applied.
+Note that this option is not getting reset by \refKey{/tcb/reset}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc updated=2023-02-08]{label}{=\meta{marker}}{no default, initially unset}
+The \meta{marker} is set as label text with |\label| for a reference with the |\ref| macro,
+if \refKey{/tcb/label is label} is active,
+or as label text with |\zlabel| for a reference with the |\zref| macro and similar,
+if \refKey{/tcb/label is zlabel} is active.
Typically, this option is used for numbered boxes, see Subsection \ref{sec:numberedboxes}
from page \pageref{sec:numberedboxes}, e.\,g.\ \refKey{/tcb/new/auto counter}.
\end{docTcbKey}
+
\begin{docTcbKey}[][doc new=2014-11-28]{phantomlabel}{=\meta{marker}}{no default, initially unset}
Equivalent to \refKey{/tcb/label} for an \emph{unnumbered} box.
A |\phantomsection| from the package |hyperref| \cite{rahtz:hyperref} is used to set a correct
hyperlink target. This is not needed for a numbered box.
\end{docTcbKey}
-
-\begin{docTcbKey}{label type}{=\meta{type}}{no default, initially unset}
-This option key can be used only in conjunction with the |cleveref| package
-\cite{cubitt:2018a} which has to be loaded separately.
-\meta{type} has to be a cross-reference type \emph{known} to |cleveref|
-like |theorem|, |algorithm|, |result|, etc. References made with |cleveref|
-will use this type. Note that using |label type| will result in compilation
-errors, if |cleveref| is not loaded.
-For an example, see \Vref{theo:meanvaluetheorem}.
-\end{docTcbKey}
-
-\begin{docTcbKey}{no label type}{}{no value, initially set}
-Removes a \refKey{/tcb/label type}, if set before.
-\end{docTcbKey}
+\clearpage
\begin{docTcbKey}{step}{=\meta{counter}}{no default, initially unset}
Shortcut for |phantom={\refstepcounter{#1}}|. The given \meta{counter} is
@@ -4160,43 +4243,46 @@ see Subsection \ref{sec:numberedboxes}
from page \pageref{sec:numberedboxes}.
\end{docTcbKey}
-\clearpage
-\begin{docTcbKey}{list entry}{=\meta{text}}{no default, initially unset}
-If the \flqq list of tcolorbox(es)\frqq\ feature described in Subsection
-\ref{sec:listsof} from page \pageref{sec:listsof} is used, this key
-describes the \meta{text} for an entry into the generated list, e.\,g.
-\begin{dispListing}
-list entry={\protect\numberline{\thetcbcounter}My beautiful Example}
-\end{dispListing}
-See Section \ref{listing:exercises} from page \pageref{listing:exercises}
-for a complete example.
-\end{docTcbKey}
-\begin{docTcbKey}[][doc new=2014-09-19]{list text}{=\meta{text}}{style, no default}
-This is a shortcut for setting \refKey{/tcb/list entry} to\\
-|\protect\numberline{\thetcbcounter}|\meta{text}.
-So, the following settings are identical:
-\begin{dispListing}
-list text={My beautiful Example},
-list entry={\protect\numberline{\thetcbcounter}My beautiful Example}
-\end{dispListing}
-See Section \ref{listing:exercises} from page \pageref{listing:exercises}
-for a complete example.
+\begin{docTcbKey}[][doc updated=2023-02-09]{label type}{=\meta{type}}{no default, initially unset}
+This option has a different meaning based upon the chosen labeling mechanism.
+\begin{itemize}
+\item If \refKey{/tcb/label is label} is active:\par
+ The option key \refKey{/tcb/label type} can be used only in conjunction with the |cleveref| package
+ \cite{cubitt:2018a} which has to be loaded separately.
+ \meta{type} has to be a cross-reference type \emph{known} to |cleveref|
+ like |theorem|, |algorithm|, |result|, etc. References made with |cleveref|
+ will use this type. Note that using |label type| will result in compilation
+ errors, if |cleveref| is not loaded.
+ For an example, see \Vref{theo:meanvaluetheorem}.
+\item If \refKey{/tcb/label is zlabel} is active:\par
+ The option key \refKey{/tcb/label type} can be used only in conjunction with the |zref-clever| package
+ \cite{barros:zref-clever}
+ which has to be loaded separately.
+ \meta{type} has to be a cross-reference type \emph{known} to |zref-clever|.
+ This \meta{type} is bound to an automatic |tcolorbox| counter which has to be set up using
+ \refKey{/tcb/new/auto counter},
+ \refKey{/tcb/new/use counter from},
+ \refKey{/tcb/new/use counter}, or
+ \refKey{/tcb/new/use counter*}.
+ If \refKey{/tcb/label is zlabel} is set, but |zref-clever| is not loaded,
+ using |zref-clever countertype| will be silently ignored.
+\end{itemize}
\end{docTcbKey}
-\begin{docTcbKey}{add to list}{=\marg{list}\marg{type}}{no default, initially unset}
-If the \flqq list of tcolorbox(es)\frqq\ feature described in Subsection
-\ref{sec:listsof} from page \pageref{sec:listsof} is used, list entries are
-generated automatically. With this key, you can enforce an entry to the
-given \meta{list} with the given \meta{type}.
-This issues:\\
-|\addcontentsline|\marg{list}\marg{type}\marg{entry text}
+
+\begin{docTcbKey}[][doc updated=2023-02-09]{no label type}{}{no value, initially set}
+Removes a \refKey{/tcb/label type}, if set before.
\end{docTcbKey}
-\begin{docTcbKey}[][doc new and updated={2016-06-22}{2016-11-18}]{nameref}{=\meta{text}}{no default, initially unset}
+\clearpage
+\begin{docTcbKey}[][doc new and updated={2016-06-22}{2023-02-08}]{nameref}{=\meta{text}}{no default, initially unset}
If the |nameref| package is loaded, the given \meta{text} is used for
-corresponding |\nameref| macros. Typically, the \meta{text} will be chosen
+corresponding |\nameref| macros.
+If the |zref-titleref| package is loaded, the given \meta{text} is used to
+set the reference text for |\ztitleref|.
+Typically, the \meta{text} will be chosen
to be identical or nearly identical to the one for \refKey{/tcb/title}.
\inputpreamblelisting{A}
@@ -4217,6 +4303,14 @@ The box is titled \enquote{\nameref{mynamelabel}}.
\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2022-07-18]{short title}{=\meta{text}}{style, no default}
+Sets both \refKey{/tcb/list entry} and \refKey{/tcb/nameref} to \meta{text}.
+The most likely use case is to set a \emph{short title} for the
+\flqq list of tcolorbox(es)\frqq\ and for box referencing.
+\end{docTcbKey}
+
+
\clearpage
\begin{docTcbKey}[][doc new=2017-02-03]{hypertarget}{=\meta{marker}}{no default, initially unset}
A |\hypertarget| from the package |hyperref| \cite{rahtz:hyperref} is used to
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
index 7b207b6255..7eae0cc4ff 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
@@ -1,9 +1,9 @@
% !TeX root = tcolorbox.tex
% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
\clearpage
-\section{\tikzname\ Image and Picture Fill Extensions; Auxiliary Macros}\label{sec:tikzimagefilling}%
+\section{\tikzname\ Auxiliary Macros}\label{sec:tikzimagefilling}%
\tcbset{external/prefix=external/filling_}%
-The \mylib{skins} library adds some image and picture fill options to the vast option set of
+The \mylib{skins} library adds some auxiliary options to the vast option set of
\tikzname\ \cite{tantau:tikz_and_pgf}. These options can be used in any |tikzpicture|.
For the following options, the \mylib{skins} library has to be loaded
by a package option or inside the preamble by:
@@ -13,409 +13,11 @@ by a package option or inside the preamble by:
See \Vref{sec:skins} for the documentation of all other options of the \mylib{skins} library.
-\subsection{Fill Plain}
-\begin{docTikzKey}{fill plain image}{=\meta{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The image is put in the center of the path, but it is not resized to fit into
- the path area.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill plain image=goldshade.png]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill plain image*}{=\meta{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The image is put in the center of the path, but it is not resized to fit into
- the path area.
- The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,
- fill plain image*={width=2.5cm}{goldshade.png}]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-\enlargethispage*{1cm}
-
-\begin{docTikzKey}{fill plain picture}{=\meta{graphical code}}{no default, initially unset}
- Fills the current path with the given \meta{graphical code}.
- The result is put in the center of the path, but it is not resized to fit into
- the path area. Note that this is almost identical to the standard |path picture| option.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill plain picture={%
- \draw[red!50!yellow,line width=2mm]
- (0,0) circle (1cm);
- \draw[red,line width=5mm] (-1,-1) -- (1,1);
- \draw[red,line width=5mm] (-1,1) -- (1,-1);
- }]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\clearpage
-\subsection{Fill Stretch}
-\begin{docTikzKey}{fill stretch image}{=\meta{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The image is stretched to fill the path area.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[fill stretch image=goldshade.png]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill stretch image*}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
- The image is stretched to fill the path area.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[fill stretch image*=
- {angle=90,origin=c}{goldshade.png}]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill stretch picture}{=\meta{graphical code}}{no default, initially unset}
- Fills the current path with the given \meta{graphical code}.
- The result is stretched to fill the path area.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill stretch picture={%
- \draw[red!50!yellow,line width=2mm]
- (0,0) circle (1cm);
- \draw[red,line width=5mm] (-1,-1) -- (1,1);
- \draw[red,line width=5mm] (-1,1) -- (1,-1);
- }]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\clearpage
-\subsection{Fill Overzoom}
-\begin{docTikzKey}{fill overzoom image}{=\meta{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The image is zoomed such that the path area fills the image.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[fill overzoom image=goldshade.png]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill overzoom image*}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
- The image is zoomed such that the path area fills the image.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[fill overzoom image*=
- {angle=90,origin=c}{goldshade.png}]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill overzoom picture}{=\meta{graphical code}}{no default, initially unset}
- Fills the current path with the given \meta{graphical code}.
- The result is zoomed such that the path area fills the image.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill overzoom picture={%
- \draw[red!50!yellow,line width=2mm]
- (0,0) circle (1cm);
- \draw[red,line width=5mm] (-1,-1) -- (1,1);
- \draw[red,line width=5mm] (-1,1) -- (1,-1);
- }]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\clearpage
-\subsection{Fill Zoom}
-\begin{docTikzKey}{fill zoom image}{=\meta{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The image is zoomed such that it fits inside the path area.
- Typically, some parts of the path area will stay unfilled.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill zoom image=goldshade.png]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill zoom image*}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
- The image is zoomed such that it fits inside the path area.
- Typically, some parts of the path area will stay unfilled.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill zoom image*=
- {angle=90,origin=c}{goldshade.png}]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill zoom picture}{=\meta{graphical code}}{no default, initially unset}
- Fills the current path with the given \meta{graphical code}.
- The result is zoomed such that it fits inside the path area.
- Typically, some parts of the path area will stay unfilled.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill zoom picture={%
- \draw[red!50!yellow,line width=2mm]
- (0,0) circle (1cm);
- \draw[red,line width=5mm] (-1,-1) -- (1,1);
- \draw[red,line width=5mm] (-1,1) -- (1,-1);
- }]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\clearpage
-\subsection{Fill Shrink}
-\begin{docTikzKey}{fill shrink image}{=\meta{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The image is zoomed such that it fits inside the path area, but it never
- gets enlarged.
- Typically, some parts of the path area will stay unfilled.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill shrink image=goldshade.png]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill shrink image*}{=\meta{file name}}{no default, initially unset}
- Fills the current path with an external image referenced by \meta{file name}.
- The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
- The image is zoomed such that it fits inside the path area, but it never
- gets enlarged.
- Typically, some parts of the path area will stay unfilled.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,
- fill shrink image*={width=1.5cm}{goldshade.png}]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill shrink picture}{=\meta{graphical code}}{no default, initially unset}
- Fills the current path with the given \meta{graphical code}.
- The result is zoomed such that it fits inside the path area, but it never
- gets enlarged.
- Typically, some parts of the path area will stay unfilled.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill shrink picture={%
- \draw[red!50!yellow,line width=2mm]
- (0,0) circle (1cm);
- \draw[red,line width=5mm] (-1,-1) -- (1,1);
- \draw[red,line width=5mm] (-1,1) -- (1,-1);
- }]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\clearpage
-\subsection{Fill Tile}
-\begin{docTikzKey}{fill tile image}{=\meta{file name}}{no default, initially unset}
- Fills the current path with a tile pattern using an external image referenced by \meta{file name}.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[fill tile image=pink_marble.png]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill tile image*}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
- Fills the current path with a tile pattern using an external image referenced by \meta{file name}.
- The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[fill tile image*={width=1cm}{pink_marble.png}]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-\begin{docTikzKey}{fill tile picture}{=\meta{graphical code}}{no default, initially unset}
- Fills the current path with a tile pattern using the given \meta{graphical code}.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill tile picture={%
- \draw[red!50!yellow,line width=2mm]
- (0,0) circle (1cm);
- \draw[red,line width=5mm] (-1,-1) -- (1,1);
- \draw[red,line width=5mm] (-1,1) -- (1,-1);
- }]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill tile picture*}{=\marg{fraction}\marg{graphical code}}{no default, initially unset}
- Fills the current path with a tile pattern using the given \meta{graphical code}.
- The graphic is resized by \meta{fraction}.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[draw,fill tile picture*={0.25}{%
- \draw[red!50!yellow,line width=2mm]
- (0,0) circle (1cm);
- \draw[red,line width=5mm] (-1,-1) -- (1,1);
- \draw[red,line width=5mm] (-1,1) -- (1,-1);
- }]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\clearpage
-\subsection{Filling Options}
-\begin{docTikzKey}{fill image opacity}{=\meta{fraction}}{no default, initially |1.0|}
- Sets the fill opacity for the image or picture fill options to the given \meta{fraction}.
-\begin{dispExample}
-\begin{tikzpicture}
-\path[fill stretch image=goldshade.png] (0,0) circle (1cm);
-\path[fill=red,fill stretch image=goldshade.png,fill image opacity=0.75]
- (2,0) circle (1cm);
-\path[fill=red,fill stretch image=goldshade.png,fill image opacity=0.5]
- (4,0) circle (1cm);
-\path[fill=red,fill stretch image=goldshade.png,fill image opacity=0.25]
- (6,0) circle (1cm);
-\path[fill=red] (8,0) circle (1cm);
-\end{tikzpicture}
-\end{dispExample}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}{fill image scale}{=\meta{fraction}}{no default, initially |1.0|}
- Stretches, zooms, overzooms or shrinks the image or picture to the given \meta{fraction} of the
- width and height of the current path.
-\begin{dispExample}
-\begin{tikzpicture}
-\path[draw,fill zoom image=goldshade.png]
- (0,0) rectangle +(2,2);
-
-\path[draw,fill zoom image=goldshade.png,fill image scale=0.75]
- (3,0) rectangle +(2,2);
-
-\path[draw,fill zoom image=goldshade.png,fill image scale=1.5]
- (6,0) rectangle +(2,2);
-\end{tikzpicture}
-\end{dispExample}
-\end{docTikzKey}
-
-
-\begin{docTikzKey}[][doc updated=2018-03-18]{fill image options}{=\meta{graphics options}}{no default, initially empty}
- The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command
- for the image fill options. This can be just together with
- \refKey{/tikz/fill stretch image}, \refKey{/tikz/fill overzoom image}, \refKey{/tikz/fill zoom image},
- and \refKey{/tikz/fill tile image}.
-\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
-\begin{tikzpicture}
-\path[fill image options={width=1cm},
- fill tile image=pink_marble.png]
- (2.75,-0.75) -- (3,0) -- (2.75,0.75)
- \foreach \w in {45,90,...,315}
- { -- (\w:1.5cm) } -- cycle;
-\end{tikzpicture}
-\end{dispExample*}
-\end{docTikzKey}
-
-
-\begin{dispExample*}{sbs,lefthand ratio=0.6,center lower,fonttitle=\bfseries,
- title=Image blending example}
-\begin{tikzpicture}[every node/.style=
- {circle,minimum width=2cm}]
-\node[fill stretch image=blueshade.png]
- (A) at (120:3cm) {A};
-\node[fill stretch image=goldshade.png]
- (B) at (60:3cm) {B};
-\node[
- preaction={fill stretch image=blueshade.png},
- fill stretch image=goldshade.png,
- fill image opacity=0.5] (C) {C};
-\path (A) -- node{$+$} (B);
-\draw[->,very thick] (A)--(C);
-\draw[->,very thick] (B)--(C);
-\end{tikzpicture}
-\end{dispExample*}
+\begin{marker}
+Up to version 5.1.1 (2022/06/24) of |tcolorbox|, \tikzname\ image and picture fill extensions
+were documented here. These extensions are now separate \tikzname\ libraries
+and part of the |tikzfill| package where they are documented now.
+\end{marker}
\subsection{Straightening of the Arcs}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
index aa4854d8a6..d0761ca03d 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
@@ -142,22 +142,21 @@ The library is loaded by a package option or inside the preamble by:
\clearpage
-\begin{docCommand}{DeclareTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+\begin{docCommand}{NewTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcboxfit}.
- Basically, |\DeclareTCBoxFit| operates like |\DeclareDocumentCommand|. This means,
+ Basically, \refCom{NewTCBoxFit} operates like |\NewDocumentCommand|. This means,
the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcboxfit}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
automatically.\\
The \meta{init options} allow setting up automatic numbering,
- see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
- The new command is always created, irrespective of an already existing
- command with the same name.
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
\begin{dispExample*}{sbs,lefthand ratio=0.6}
% \usepackage{lipsum}
-\DeclareTCBoxFit{\mybox}{ O{} m !o }
+\NewTCBoxFit{\mybox}{ O{} m !o }
{colback=red!5!white,
colframe=red!75!black,
width=#2,height=#2/3*2,
@@ -171,41 +170,41 @@ The library is loaded by a package option or inside the preamble by:
\end{dispExample*}
\end{docCommand}
-\begin{docCommand}{NewTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBoxFit}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
- An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
-\end{docCommand}
-
\begin{docCommand}{RenewTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBoxFit}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTCBoxFit}, but based on |\RenewDocumentCommand| instead of |\NewDocumentCommand|.
An existing command is redefined.
\end{docCommand}
\begin{docCommand}{ProvideTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBoxFit}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTCBoxFit}, but based on |\ProvideDocumentCommand| instead of |\NewDocumentCommand|.
The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
\end{docCommand}
+\begin{docCommand}{DeclareTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{NewTCBoxFit}, but based on |\DeclareDocumentCommand| instead of |\NewDocumentCommand|.
+ The new command \texttt{\textbackslash}\meta{name} is always created, irrespective of an already existing
+ command with the same name.
+\end{docCommand}
+
\clearpage
-\begin{docCommand}{DeclareTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+\begin{docCommand}{NewTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcboxfit}.
- In contrast to \refCom{DeclareTCBoxFit}, also the \meta{content} of the |tcboxfit| is specified.\\
- Basically, |\DeclareTotalTCBoxFit| operates like |\DeclareDocumentCommand|. This means,
+ In contrast to \refCom{NewTCBoxFit}, also the \meta{content} of the |tcboxfit| is specified.\\
+ Basically, \refCom{NewTotalTCBoxFit} operates like |\NewDocumentCommand|. This means,
the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcboxfit} which is filled with
the specified \meta{content}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
automatically.\\
The \meta{init options} allow setting up automatic numbering,
- see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
- The new command is always created, irrespective of an already existing
- command with the same name.
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
\begin{dispExample}
% \usepackage{lipsum}
-\DeclareTotalTCBoxFit{\multibox}{ O{} m O{10} m }
+\NewTotalTCBoxFit{\multibox}{ O{} m O{10} m }
{nobeforeafter,colback=red!5!white,colframe=red!75!black,width=#2,height=#2/3*2,
valign=center,#1}
{ \foreach \n in {1,...,#3} { #4} }
@@ -216,21 +215,22 @@ The library is loaded by a package option or inside the preamble by:
\end{dispExample}
\end{docCommand}
-\begin{docCommand}{NewTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
- Operates like \refCom{DeclareTotalTCBoxFit}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
- An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
-\end{docCommand}
-
\begin{docCommand}{RenewTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
- Operates like \refCom{DeclareTotalTCBoxFit}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTotalTCBoxFit}, but based on |\RenewDocumentCommand| instead of |\NewDocumentCommand|.
An existing command is redefined.
\end{docCommand}
\begin{docCommand}{ProvideTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
- Operates like \refCom{DeclareTotalTCBoxFit}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTotalTCBoxFit}, but based on |\ProvideDocumentCommand| instead of |\NewDocumentCommand|.
The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
\end{docCommand}
+\begin{docCommand}{DeclareTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{NewTotalTCBoxFit}, but based on |\DeclareDocumentCommand| instead of |\NewDocumentCommand|.
+ The new command \texttt{\textbackslash}\meta{name} is always created, irrespective of an already existing
+ command with the same name.
+\end{docCommand}
+
\clearpage
\subsection{Option Keys of the Library}\label{subsec:fit}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex
index 48af585551..bb7c0361ce 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex
@@ -376,10 +376,65 @@ To set a short title for headings with the default |\section| setting, use for e
for all Students of my Course}
\end{dispListing}
-\medskip
\begin{marker}
The core of the list is generated by |\@starttoc|\marg{name} which
can be wrapped into an own macro.
\end{marker}
\end{docCommand}
+\clearpage
+
+\begin{marker}
+The following options are not initialization options, but common options,
+which are typically reasonable in connection with lists of |tcolorbox|es.
+\end{marker}
+
+\begin{docTcbKey}{list entry}{=\meta{text}}{no default, initially unset}
+If the \flqq list of tcolorbox(es)\frqq\ feature described in
+%Subsection \ref{sec:listsof} from page \pageref{sec:listsof}
+the current subsection
+is used, this key
+describes the \meta{text} for an entry into the generated list, e.\,g.
+\begin{dispListing}
+list entry={\protect\numberline{\thetcbcounter}My beautiful Example}
+\end{dispListing}
+See Section \ref{listing:exercises} from page \pageref{listing:exercises}
+for a complete example.\par
+If |\thetcbcounter| is omitted, \refKey{/tcb/list entry} could be used for
+unnumbered boxes too.
+\begin{marker}
+This is a customization option. For numbered boxes, \refKey{/tcb/list entry}
+typically has not to be given, because this entry will be generated automatically.
+\end{marker}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{list text}{=\meta{text}}{style, no default}
+This is a shortcut for setting \refKey{/tcb/list entry} to\\
+|\protect\numberline{\thetcbcounter}|\meta{text}.
+So, the following settings are identical:
+\begin{dispListing}
+list text={My beautiful Example},
+list entry={\protect\numberline{\thetcbcounter}My beautiful Example}
+\end{dispListing}
+See Section \ref{listing:exercises} from page \pageref{listing:exercises}
+for a complete example.
+\end{docTcbKey}
+
+\begin{docTcbKey}{add to list}{=\marg{list}\marg{type}}{no default, initially unset}
+If the \flqq list of tcolorbox(es)\frqq\ feature described in
+%Subsection \ref{sec:listsof} from page \pageref{sec:listsof}
+the current subsection
+is used, list entries are
+generated automatically. With this key, you can enforce an entry to the
+given \meta{list} with the given \meta{type}.
+This issues:\par
+|\addcontentsline|\marg{list}\marg{type}\marg{entry text}\par
+\meta{entry text} may be given by \refKey{/tcb/list entry}.
+\begin{marker}
+This is a customization option. For numbered boxes, this feature is configured
+automatically, where
+\meta{list} is set by \refKey{/tcb/new/list inside} and
+\meta{type} is set by \refKey{/tcb/new/list type}
+\end{marker}
+\end{docTcbKey}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex
index 0147fe42e9..548c70e081 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex
@@ -48,7 +48,7 @@ for some hints. The short story is: you have to install not only
\subsection{Loading the Package}
The base package |tcolorbox| loads the packages
-|pgf| \cite{tantau:tikz_and_pgf}, |verbatim| \cite{schoepf:2001a},
+|pgf| \cite{tantau:tikz_and_pgf}, |verbatim| \cite{schoepf:verbatim},
|etoolbox| \cite{lehmann:etoolbox},
and |environ| \cite{robertson:2014a}.
|tcolorbox| itself is loaded in the usual manner in the preamble:
@@ -151,7 +151,7 @@ The following keys are used inside |\tcbuselibrary| respectively
\clearpage
\begin{docTcbKey}[library]{xparse}{}{\mylib{xparse}}
- Loads |xparse| and is considered a legacy library kept for compatibility;
+ Loads the package |xparse| and is considered a legacy library kept for compatibility;
see Section~\ref{sec:xparse} from page~\pageref{sec:xparse}.
\end{docTcbKey}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
index c2108cc97f..c2e8b5fe27 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
@@ -279,20 +279,19 @@ This is my \LaTeX\ box.
\clearpage
-\begin{docCommand}{DeclareTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+\begin{docCommand}{NewTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
Creates a new environment \meta{name} based on \refEnv{tcblisting}.\\
- Basically, |\DeclareTCBListing| operates like |\DeclareDocumentEnvironment|. This means,
+ Basically, \refCom{NewTCBListing} operates like |\NewDocumentEnvironment|. This means,
the new environment \meta{name} is constructed with the given argument \meta{specification}.
+ An error is issued if \meta{name} has already been defined.
The \meta{options} are given to the underlying \refEnv{tcblisting}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
automatically.\\
The \meta{init options} allow setting up automatic numbering,
- see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
- The new environment is always created, irrespective of an already existing
- environment with the same name.
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
\begin{dispExample*}{sbs,lefthand ratio=0.5}
-\DeclareTCBListing{mybox}{ s O{} m }{%
+\NewTCBListing{mybox}{ s O{} m }{%
colback=red!5!white,
colframe=red!75!black,
fonttitle=\bfseries,
@@ -321,21 +320,22 @@ This is my
\end{dispExample*}
\end{docCommand}
-\begin{docCommand}{NewTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBListing}, but based on |\NewDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
- An error is issued if \meta{name} has already been defined.
-\end{docCommand}
-
\begin{docCommand}{RenewTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBListing}, but based on |\RenewDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ Operates like \refCom{NewTCBListing}, but based on |\RenewDocumentEnvironment| instead of |\NewDocumentEnvironment|.
An existing environment is redefined.
\end{docCommand}
\begin{docCommand}{ProvideTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBListing}, but based on |\ProvideDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ Operates like \refCom{NewTCBListing}, but based on |\ProvideDocumentEnvironment| instead of |\NewDocumentEnvironment|.
The environment \meta{name} is only created if it is not already defined.
\end{docCommand}
+\begin{docCommand}{DeclareTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Operates like \refCom{NewTCBListing}, but based on |\DeclareDocumentEnvironment| instead of |\NewDocumentEnvironment|.
+ The new environment is always created, irrespective of an already existing
+ environment with the same name.
+\end{docCommand}
+
\clearpage
\begin{marker}
@@ -426,19 +426,18 @@ Note that the following code uses \verb+!O{}+ now.
\clearpage
-\begin{docCommand}{DeclareTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+\begin{docCommand}{NewTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcbinputlisting}.
- Basically, |\DeclareTCBInputListing| operates like |\DeclareDocumentCommand|. This means,
+ Basically, \refCom{NewTCBInputListing} operates like |\NewDocumentCommand|. This means,
the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcbinputlisting}.\\
The \meta{init options} allow setting up automatic numbering,
- see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
- The new command is always created, irrespective of an already existing
- command with the same name.
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
\begin{dispExample}
% counter from previous example
-\DeclareTCBInputListing[use counter from=pabox]{\mylisting}{ O{} O{red} m }{%
+\NewTCBInputListing[use counter from=pabox]{\mylisting}{ O{} O{red} m }{%
listing file={#3},title=Listing~\thetcbcounter,
colback=#2!5!white,colframe=#2!50!black,colbacktitle=#2!75!black,
fonttitle=\bfseries,listing only,#1}
@@ -448,21 +447,22 @@ Note that the following code uses \verb+!O{}+ now.
\end{dispExample}
\end{docCommand}
-\begin{docCommand}{NewTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBInputListing}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
- An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
-\end{docCommand}
-
\begin{docCommand}{RenewTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBInputListing}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTCBInputListing}, but based on |\RenewDocumentCommand| instead of |\NewDocumentCommand|.
An existing command is redefined.
\end{docCommand}
\begin{docCommand}{ProvideTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
- Operates like \refCom{DeclareTCBInputListing}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ Operates like \refCom{NewTCBInputListing}, but based on |\ProvideDocumentCommand| instead of |\NewDocumentCommand|.
The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
\end{docCommand}
+\begin{docCommand}{DeclareTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{NewTCBInputListing}, but based on |\DeclareDocumentCommand| instead of |\NewDocumentCommand|.
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+\end{docCommand}
+
\clearpage
@@ -655,6 +655,8 @@ Sets a \meta{programming language} known to |Pygments| \cite{pygments:web}.
\refKey{/tcb/minted options} are \emph{not} used. The intended use is
inside the preamble to change the default behavior.
Note that setting \refKey{/tcb/default minted options} also resets \refKey{/tcb/minted options}.
+ Since |minted| \cite{poore:minted} v2.6 set |stripnl=false|, adding
+ |stripnl| could be helpful to remove leading and trailing blank lines.
\begin{dispListing}
% inside the preamble
\tcbset{%
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
index 6d9c15c834..3aae917da1 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
@@ -8,7 +8,7 @@
\@namedef{opt@hypdoc.sty}{hypdoc}
\RequirePackage[T1]{fontenc}
-\RequirePackage[utf8]{inputenc}
+%\RequirePackage[utf8]{inputenc}
\RequirePackage[english]{babel}
\RequirePackage{lmodern,parskip,array,ifthen,calc}
\RequirePackage{amsmath,amssymb}
@@ -196,6 +196,7 @@
tcbbreak,
% theorems
tcbmaketheorem,tcboxmath,tcbhighmath,thetcbcounter,newtcbtheorem,
+ NewTcbTheorem,RenewTcbTheorem,ProvideTcbTheorem,DeclareTcbTheorem,
% documentation
brackets,
colDef,colOpt,cs,
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_snippet.sty b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_snippet.sty
index 9bd1a069ef..3771159be2 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_snippet.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_snippet.sty
@@ -58,7 +58,7 @@
\begin{tcbverbatimwrite}{\jobname_preamble_F.tex}
-\newtcbtheorem[number within=section]{mytheo}{My Theorem}%
+\NewTcbTheorem[number within=section]{mytheo}{My Theorem}%
{colback=green!5,colframe=green!35!black,fonttitle=\bfseries}{th}
\end{tcbverbatimwrite}
\input{\jobname_preamble_F.tex}
@@ -72,11 +72,11 @@
theostyle/.style={fonttitle=\bfseries\upshape, fontupper=\slshape,
colback=red!10!white,colframe=red!75!black},
}
-\newtcbtheorem[number within=subsection,crefname={definition}{definitions}]%
+\NewTcbTheorem[number within=subsection,crefname={definition}{definitions}]%
{Definition}{Definition}{defstyle}{def}
-\newtcbtheorem[use counter from=Definition,crefname={theorem}{theorems}]%
+\NewTcbTheorem[use counter from=Definition,crefname={theorem}{theorems}]%
{Theorem}{Theorem}{theostyle}{theo}
-\newtcbtheorem[use counter from=Definition,crefname={corollary}{corollaries}]%
+\NewTcbTheorem[use counter from=Definition,crefname={corollary}{corollaries}]%
{Corollary}{Corollary}{theostyle}{cor}
\end{tcbverbatimwrite}
\input{\jobname_preamble_G.tex}
@@ -103,7 +103,7 @@
\begin{tcbverbatimwrite}{\jobname_preamble_J.tex}
-\newtcbtheorem[use counter from=mytheo]{theorem}{Theorem}{%
+\NewTcbTheorem[use counter from=mytheo]{theorem}{Theorem}{%
fonttitle=\bfseries\upshape,fontupper=\itshape,
colframe=green!50!black,colback=green!10!white,
colbacktitle=green!20!white,coltitle=blue!75!black}{theo}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
index 73d93d228b..0292ceb48a 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
@@ -42,8 +42,6 @@ This is the lower part.
\begin{docTcbKey}{frame style image}{=\meta{file name}}{no default, initially unset}
Fills the frame with an external image referenced by \meta{file name}.
- For advanced features like blending of a picture with the background,
- use \refKey{/tcb/frame style} together with \refKey{/tikz/fill stretch image}.
\begin{exdispExample*}{frame_style_image}{sbs,lefthand ratio=0.66}
\tcbset{colback=red!5!white,fonttitle=\bfseries}
@@ -60,8 +58,6 @@ This is the lower part.
\begin{docTcbKey}{frame style tile}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
Fills the frame with a tile pattern based on an external image referenced by \meta{file name}.
The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
- For advanced features like blending of a picture with the background,
- use \refKey{/tcb/frame style} together with \refKey{/tikz/fill tile image}.
\begin{exdispExample*}{frame_style_tile}{sbs,lefthand ratio=0.66}
\tcbset{colback=red!5!white,coltitle=red!30!black,
opacityback=0.75,fonttitle=\bfseries}
@@ -119,8 +115,6 @@ This is the lower part.
\clearpage
\begin{docTcbKey}{interior style image}{=\meta{file name}}{no default, initially unset}
Fills the interior with an external image referenced by \meta{file name}.
- For advanced features like blending of a picture with the background,
- use \refKey{/tcb/interior style} together with \refKey{/tikz/fill stretch image}.
\begin{exdispExample*}{interior_style_image}{sbs,lefthand ratio=0.66}
\tcbset{colframe=red!75!black,fonttitle=\bfseries}
@@ -137,9 +131,6 @@ This is the lower part.
\begin{docTcbKey}{interior style tile}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
Fills the interior with a tile pattern based on an external image referenced by \meta{file name}.
The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
- For advanced features like blending of a picture with the background,
- use \refKey{/tcb/interior style} together with \refKey{/tikz/fill tile image}.
-
\begin{exdispExample*}{interior_style_tile}{sbs,lefthand ratio=0.66}
\tcbset{colframe=red!75!black,fonttitle=\bfseries}
@@ -237,9 +228,6 @@ This is the lower part.
\clearpage
\begin{docTcbKey}{title style image}{=\meta{file name}}{no default, initially unset}
Fills the title area with an external image referenced by \meta{file name}.
- For advanced features like blending of a picture with the background,
- use \refKey{/tcb/title style} together with \refKey{/tikz/fill stretch image}.
-
\begin{exdispExample*}{title_style_image}{sbs,lefthand ratio=0.66}
\tcbset{colback=blue!5!white,colframe=blue!75!black,
fonttitle=\bfseries}
@@ -257,9 +245,6 @@ This is the lower part.
\begin{docTcbKey}{title style tile}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
Fills the title area with a tile pattern based on an external image referenced by \meta{file name}.
The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
- For advanced features like blending of a picture with the background,
- use \refKey{/tcb/title style} together with \refKey{/tikz/fill tile image}.
-
\begin{exdispExample*}{title_style_tile}{sbs,lefthand ratio=0.66}
\tcbset{colback=red!5!white,colframe=red!75!black,
coltitle=blue!50!black,fonttitle=\bfseries}
@@ -1233,7 +1218,7 @@ This example uses a public domain picture from\\
\enlargethispage*{1cm}
-\begin{docTcbKey}{watermark zoom}{=\meta{fraction}}{no default, initially |0.75|}
+\begin{docTcbKey}[][doc updated=2022-07-21]{watermark zoom}{=\meta{fraction}}{default |1|, initially |0.75|}
Sets the zoom value for a watermark. The zoom respects the aspect ratio.
The value $1.0$ means to fill the whole box until the watermark touches the frame.
\begin{dispExample}
@@ -1251,13 +1236,13 @@ This example uses a public domain picture from\\
\clearpage
-\begin{docTcbKey}{watermark shrink}{=\meta{fraction}}{no default, initially unset}
+\begin{docTcbKey}[][doc updated=2022-07-21]{watermark shrink}{=\meta{fraction}}{default |1|, initially unset}
Identically to \refKey{/tcb/watermark zoom}, but the watermark
never gets enlarged. Thus, the watermark keeps its original size or is shrunk.
\end{docTcbKey}
-\begin{docTcbKey}{watermark overzoom}{=\meta{fraction}}{no default, initially unset}
+\begin{docTcbKey}[][doc updated=2022-07-21]{watermark overzoom}{=\meta{fraction}}{default |1|, initially unset}
Sets the overzoom value for a watermark. The overzoom respects the aspect ratio.
The value $1.0$ means to fill the whole box until the watermark touches
all four sides of the frame.
@@ -1284,7 +1269,7 @@ To avoid this optical glitch, just set \refKey{/tcb/pad at break} to any desired
\end{marker}
\clearpage
-\begin{docTcbKey}{watermark stretch}{=\meta{fraction}}{no default, initially unset}
+\begin{docTcbKey}[][doc updated=2022-07-21]{watermark stretch}{=\meta{fraction}}{default |1|, initially unset}
Sets the stretch value for a watermark. The stretch value is applied to width
and height in relation to the box dimensions. It does not respect the aspect ratio.
The value $1.0$ means to fill the whole box.
@@ -1333,6 +1318,16 @@ To avoid this optical glitch, just set \refKey{/tcb/pad at break} to any desired
\end{dispExample}
\end{docTcbKey}
+\begin{marker}
+Removing the clipping should be necessary only in very rare situations. Until
+version 5.1.1 (2022/06/24), theoretically, the watermark could be extended
+over the boundaries of the box without limit. Newer versions restrict the
+watermark to a box scaled 4 times the actual |tcolorbox|.
+If you really need to extend further, you are strongly advised to implement
+this by using \refKey{/tcb/overlay} or \refKey{/tcb/underlay} directly
+where no restrictions apply.
+Note that a watermark is just a special \refKey{/tcb/overlay}.
+\end{marker}
\clearpage
@@ -2507,6 +2502,8 @@ The differences between underlays and overlays are:
\refKey{/tcb/underlay} overwrites this key.
\end{docTcbKey}
+\enlargethispage*{1cm}
+
\begin{docTcbKey}{underlay unbroken}{=\meta{graphical code}}{no default, initially unset}
If the box is set to be \refKey{/tcb/breakable} but \emph{is not} broken actually
or if the box is set to be \refKey{/tcb/unbreakable},
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
index 9b1155ddc5..1e6960ffd2 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
@@ -238,7 +238,7 @@ be any \tikzname\ code.
\begin{tcolorbox}[enhanced,frame code={
\foreach \n in {north east,north west,south east,south west}
- {\path [fill=red!75!black] (interior.\n) circle (3mm); }; }]
+ {\path [fill=red!75!black] (interior.\n) circle (3mm); } }]
This is a \textbf{tcolorbox}.
\tcblower
This is the lower part.
@@ -701,6 +701,7 @@ considered to be \textit{read-only} and should never be redefined by the user.
\end{dispExample}
\end{docCommand}
+\enlargethispage*{1cm}
\begin{docCommand}[doc new=2016-02-16]{tcbtextwidth}{}
This property describes the box content width.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
index fefe023cc3..5e21a0b92f 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
@@ -9,9 +9,19 @@ The library is loaded by a package option or inside the preamble by:
\end{dispListing}
This also loads the package |amsmath|.
+Denis Bitouz\'e, Muzimuzhi, and many others provided very valuable input for this library.
+
+
\subsection{Macros of the Library}
-\begin{docCommand}[doc updated=2016-06-22]{newtcbtheorem}{\oarg{init options}\marg{name}\marg{display name}\marg{options}\marg{prefix}}
+\begin{docCommands}[
+ doc parameter = \oarg{init options}\marg{name}\marg{display name}\marg{options}\marg{prefix},
+ doc updated=2022-07-18
+ ]
+ {
+ { doc name = NewTcbTheorem },
+ { doc name = newtcbtheorem }
+ }
Creates new environments \meta{name} and \meta{name}|*| based on |tcolorbox| to frame a
(mathematical) theorem. The \meta{display name} is used in the title line
with a number, e.\,g. \mbox{\flqq Theorem 5.1\frqq}.
@@ -19,19 +29,40 @@ This also loads the package |amsmath|.
the appearance.
%The \meta{counter} is used for automatic numbering.
The \meta{init options} allow setting up automatic numbering,
- see \Vref{sec:initkeys}.\par
- The new environment \meta{name} takes one optional and two mandatory
- parameters. The optional parameter supplements the options and should be
- used only in rare cases.
- The first mandatory parameter is the title text for the theorem and
- is also set as \refKey{/tcb/nameref} identifier.
- The second mandatory parameter is a \meta{marker}. The theorem is
- automatically labeled with \meta{prefix}\meta{separator}\meta{marker}
- where \meta{separator} is predefined as \enquote{|:|}, see \refKey{/tcb/label separator}.\par
- The new environment \meta{name}|*| takes one optional and one mandatory
- parameter and represents an unnumbered variant of the environment \meta{name}.
- This variant is not labeled and not listed in lists of theorems.
-\enlargethispage*{20mm}
+ see \Vref{sec:initkeys}.\par\medskip
+
+ If \meta{name} is chosen as |footheorem|, the new environments are described by
+ \begin{docEnvironments}[
+ doc no index,
+ doc name = footheorem,
+ doc parameter = \oarg{keys}\oarg{short}\marg{title}\marg{marker}
+ ]{}
+ Here, \meta{title} is the title text for the theorem and
+ is also set as \refKey{/tcb/nameref} identifier.
+ Optionally, the \meta{short} title used instead as \refKey{/tcb/nameref} identifier
+ and in lists of theorems.
+ \meta{keys} supplement the \meta{options} and may be
+ used only in rare cases. The theorem is
+ automatically labeled with \meta{prefix}\meta{separator}\meta{marker}
+ where \meta{separator} is predefined as \enquote{|:|}, see \refKey{/tcb/label separator}.
+ \end{docEnvironments}
+ \begin{docEnvironments}[
+ doc no index,
+ doc name = footheorem*,
+ doc parameter = \oarg{keys}\marg{title}
+ ]{}
+ This represents an unnumbered variant. Again, \meta{title} is the title text for the theorem
+ and \meta{keys} supplement the \meta{options}.
+ This variant is not labeled and not listed in lists of theorems.
+ \end{docEnvironments}
+
+ \begin{marker}
+ \refCom{NewTcbTheorem} and \refCom{newtcbtheorem} are identical and both
+ rely on \refCom{NewTColorBox} based on |\NewDocumentCommand|.
+ \end{marker}
+\clearpage
+
+
\inputpreamblelisting{F}
\begin{dispExample}
% usage of `\nameref' needs `nameref' or `hyperref' to be loaded
@@ -43,6 +74,17 @@ This also loads the package |amsmath|.
\end{mytheo}
\end{dispExample}
+
+\begin{dispExample}
+% usage of `\nameref' needs `nameref' or `hyperref' to be loaded
+\begin{mytheo}[][Concise title]{This my very long theorem title with
+ too much words}{theoexample2}
+ Here we have a long and a short title. This theorem is numbered with
+ \ref{th:theoexample2}, it is given on page~\pageref{th:theoexample2},
+ and it is titled \flqq\nameref{th:theoexample2}\frqq.
+\end{mytheo}
+\end{dispExample}
+
\begin{dispExample}
\begin{mytheo}[label=myownlabel]{This is my title}{}
The label parameter can be left empty without \LaTeX\ error.
@@ -74,13 +116,41 @@ To switch off the \texttt{nameref} feature permanently, add
\mbox{\texttt{nameref/.style=\{\}}} inside the \meta{options} list.
\end{marker}
-\end{docCommand}
+\end{docCommands}
+\medskip
-\begin{docCommand}{renewtcbtheorem}{\oarg{init options}\marg{name}\marg{display name}\marg{options}\marg{prefix}}
- Operates like \refCom{newtcbtheorem}, but based on |\renewenvironment| instead of |\newenvironment|.
- An existing environment is redefined.
-\end{docCommand}
+\begin{docCommands}[
+ doc parameter = \oarg{init options}\marg{name}\marg{display name}\marg{options}\marg{prefix},
+ doc updated=2022-07-18
+ ]
+ {
+ { doc name = RenewTcbTheorem },
+ { doc name = renewtcbtheorem }
+ }
+ Operates like \refCom{NewTcbTheorem}, but based on |\RenewDocumentEnvironment| instead of |\NewDocumentEnvironment|.
+ Existing environments are redefined.
+\end{docCommands}
+
+
+\begin{docCommands}[
+ doc parameter = \oarg{init options}\marg{name}\marg{display name}\marg{options}\marg{prefix},
+ doc new = 2022-07-18,
+ doc name = ProvideTcbTheorem,
+ ]{}
+ Operates like \refCom{NewTcbTheorem}, but based on |\ProvideDocumentEnvironment| instead of |\NewDocumentEnvironment|.
+ New environments are is only created if they are not already defined.
+\end{docCommands}
+
+
+\begin{docCommands}[
+ doc parameter = \oarg{init options}\marg{name}\marg{display name}\marg{options}\marg{prefix},
+ doc new = 2022-07-18,
+ doc name = DeclareTcbTheorem,
+ ]{}
+ Operates like \refCom{NewTcbTheorem}, but based on |\DeclareDocumentEnvironment| instead of |\NewDocumentEnvironment|.
+ New environments are always created and possibly redefine existing ones.
+\end{docCommands}
\clearpage
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.verbatim.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.verbatim.tex
index de7d56aeb9..b2228a7b6a 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.verbatim.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.verbatim.tex
@@ -115,3 +115,42 @@ and this is my 10\% text.
\end{docTcbKey}
+\clearpage
+
+\begin{docTcbKey}[][doc new=2023-02-10]{verbatim ignore indention at end}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+ If this option is set to be |true|, spaces and tabs before |\end{tcbverbatimwrite}|
+ on the same line are ignored. The same is true for all environments based
+ on \refEnv{tcbverbatimwrite}. If anything else precedes |\end{tcbverbatimwrite}|
+ on the same line, the complete content is written.\par
+ If this option is set to be |false|, everything preceding |\end{tcbverbatimwrite}|
+ is written. This was the default behavior before version 6.0.0.\par
+ The idea of \refKey{/tcb/verbatim ignore indention at end} is that the
+ environment can be indented. The creation of this option was inspired by Yukai Chou.
+
+\begin{dispExample}
+% \tcbuselibrary{minted}
+\texttt{verbatim ignore indention at end=false}
+
+ \begin{tcblisting}{listing engine=minted, listing only,
+ verbatim ignore indention at end=false}
+ int a;
+ \end{tcblisting}
+
+ \begin{tcblisting}{listing engine=minted, listing only,
+ verbatim ignore indention at end=false}
+ int a;
+ int b; \end{tcblisting}
+
+\texttt{verbatim ignore indention at end=true}
+
+ \begin{tcblisting}{listing engine=minted, listing only,
+ verbatim ignore indention at end}
+ int a;
+ \end{tcblisting}
+
+ \begin{tcblisting}{listing engine=minted, listing only,
+ verbatim ignore indention at end}
+ int a;
+ int b; \end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.pdf b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
index 6803beb246..703ab400a6 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.sty b/macros/latex/contrib/tcolorbox/tcolorbox.sty
index 21447f7a97..87d8d40309 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.sty
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcolorbox.sty: Text color boxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,8 +18,8 @@
%% This work consists of all files listed in README
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{tcolorbox}[2022/06/24 version 5.1.1 text color boxes]
-\def\tcb@version{5.1.1}
+\ProvidesPackage{tcolorbox}[2023/02/10 version 6.0.0 text color boxes]
+\def\tcb@version{6.0.0}
\RequirePackage{pgf}[2008/01/15]
\RequirePackage{verbatim}[2003/08/22]
@@ -142,7 +142,7 @@
\newcommand\tcbtitle{\ifx\tcbtitletext\@empty\else%
- \leavevmode{\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@before@title\tcbtitletext\kvtcb@after@title}\fi}
+ \leavevmode{\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\tcb@insert@before@title\tcbtitletext\tcb@insert@after@title}\fi}
\def\tcb@detach@title@code@{%
\let\tcbtitletext\kvtcb@title%
@@ -181,10 +181,16 @@
\def\tcb@insert@before@upper@noignore{\kvtcb@before@upper}
\def\tcb@insert@before@lower@ignore{\kvtcb@before@lower\ignorespaces}
\def\tcb@insert@before@lower@noignore{\kvtcb@before@lower}
+\def\tcb@insert@before@title@ignore{\kvtcb@before@title\ignorespaces}
+\def\tcb@insert@before@title@noignore{\kvtcb@before@title}
+
\def\tcb@insert@after@upper@unskip{\ifvmode\else\unskip\fi\kvtcb@after@upper}
\def\tcb@insert@after@upper@nounskip{\kvtcb@after@upper}
\def\tcb@insert@after@lower@unskip{\ifvmode\else\unskip\fi\kvtcb@after@lower}
\def\tcb@insert@after@lower@nounskip{\kvtcb@after@lower}
+\def\tcb@insert@after@title@unskip{\ifvmode\else\unskip\fi\kvtcb@after@title}
+\def\tcb@insert@after@title@nounskip{\kvtcb@after@title}
+
\tcbset{%
title/.store in=\kvtcb@title,
@@ -293,7 +299,7 @@
parfillskip restore/.default=true,%
parfillskip restore/true/.code={\let\tcb@parfillskip@check=\tcb@parfillskip@restore},%
parfillskip restore/false/.code={\let\tcb@parfillskip@check=\@empty},%
- before/.code={\def\kvtcb@beforebox{#1}\let\tcb@undo@before=\@empty\let\tcb@use@autoparskip=\relax},
+ before/.code={\def\kvtcb@beforebox{#1}\let\tcb@use@autoparskip=\relax},
after/.code={\def\kvtcb@afterbox{#1}\let\tcb@use@autoparskip=\relax},
before skip balanced/.style={before={%
\ifnum\lastnodetype=-1\relax%
@@ -306,18 +312,13 @@
\fi%
\else%
\ifdim\prevdepth<\z@\relax%
- \tcbdimto\tcb@prevdepth{\prevdepth}%
\addvspace{\glueexpr#1-\parskip}%
- \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
\else%
\ifdim\prevdepth>.3\baselineskip\relax%
- \tcbdimto\tcb@prevdepth{\prevdepth}%
\addvspace{\glueexpr#1-\parskip}%
\else%
- \tcbdimto\tcb@prevdepth{.3\baselineskip}%
\addvspace{\glueexpr#1+.3\baselineskip-\prevdepth-\parskip}%
\fi%
- \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
\fi%
\fi%
\nointerlineskip%
@@ -336,15 +337,13 @@
}},
beforeafter skip balanced/.style={before skip balanced={#1},after skip balanced={#1}},
autoparskip/.code={\let\tcb@use@autoparskip=\tcb@use@auto@parskip},
- parskip/.style={before={\ifnum\lastnodetype=-1\relax\else\par%
- \ifvmode\edef\tcb@prevdepth{\the\glueexpr\prevdepth+\lineskip+\parskip}%
- \def\tcb@undo@before{\addvspace{-\glueexpr\tcb@prevdepth}}%
- \pagebreak[0]\fi\fi\noindent},
+ parskip/.style={%
+ before={\ifnum\lastnodetype=-1\relax\else\par%
+ \ifvmode\pagebreak[0]\fi\fi\noindent},
after={\tcb@parfillskip@check\par}},
- noparskip/.style={before={\ifnum\lastnodetype=-1\relax\else\par%
- \ifvmode\edef\tcb@prevdepth{\the\glueexpr\prevdepth+\lineskip}%
- \def\tcb@undo@before{\addvspace{-\glueexpr\smallskipamount+\tcb@prevdepth}}%
- \pagebreak[0]\smallskip\fi\fi\noindent},
+ noparskip/.style={%
+ before={\ifnum\lastnodetype=-1\relax\else\par%
+ \ifvmode\pagebreak[0]\smallskip\fi\fi\noindent},
after={\tcb@parfillskip@check\par\smallskip}},
nobeforeafter/.style={before=,after=},
force nobeforeafter/.code={\tcbset@late@options{nobeforeafter}},
@@ -358,9 +357,7 @@
\addvspace{-\parskip}%
\fi%
\else%
- \tcbdimto\tcb@prevdepth{\prevdepth}%
\addvspace{\glueexpr#1-\parskip}%
- \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
\fi%
\nointerlineskip%
\fi%
@@ -445,6 +442,8 @@
halign/center/.code={\let\kvtcb@halignupper=\tcb@raggedcenter@plain},
halign/justify/.code={\let\kvtcb@halignupper=\@empty},
halign upper/.style={halign=#1},
+ halign upper code/.store in=\kvtcb@halignupper,
+ halign code/.store in=\kvtcb@halignupper,
%
halign lower/.is choice,
halign lower/flush left/.code={\let\kvtcb@halignlower=\raggedright},
@@ -454,6 +453,7 @@
halign lower/right/.code={\let\kvtcb@halignlower=\tcb@raggedleft@plain},
halign lower/center/.code={\let\kvtcb@halignlower=\tcb@raggedcenter@plain},
halign lower/justify/.code={\let\kvtcb@halignlower=\@empty},
+ halign lower code/.store in=\kvtcb@halignlower,
%
halign title/.is choice,
halign title/flush left/.code={\let\kvtcb@haligntitle=\raggedright},
@@ -463,6 +463,7 @@
halign title/right/.code={\let\kvtcb@haligntitle=\tcb@raggedleft@plain},
halign title/center/.code={\let\kvtcb@haligntitle=\tcb@raggedcenter@plain},
halign title/justify/.code={\let\kvtcb@haligntitle=\@empty},
+ halign title code/.store in=\kvtcb@haligntitle,
%
valign scale limit/.store in=\kvtcb@valignscalelimit,
valign scale limit=1.1,
@@ -634,8 +635,6 @@
no overlay/.style={overlay=},%
standard/.style={skin=standard},%
standard jigsaw/.style={skin=standard jigsaw},%
- before title/.store in=\kvtcb@before@title,%
- after title/.store in=\kvtcb@after@title,%
before upper/.code={\def\kvtcb@before@upper{#1}\let\tcb@insert@before@upper\tcb@insert@before@upper@ignore},%
before upper*/.code={\def\kvtcb@before@upper{#1}\let\tcb@insert@before@upper\tcb@insert@before@upper@noignore},%
after upper/.code={\def\kvtcb@after@upper{#1}\let\tcb@insert@after@upper\tcb@insert@after@upper@unskip},%
@@ -644,6 +643,10 @@
before lower*/.code={\def\kvtcb@before@lower{#1}\let\tcb@insert@before@lower\tcb@insert@before@lower@noignore},%
after lower/.code={\def\kvtcb@after@lower{#1}\let\tcb@insert@after@lower\tcb@insert@after@lower@unskip},%
after lower*/.code={\def\kvtcb@after@lower{#1}\let\tcb@insert@after@lower\tcb@insert@after@lower@nounskip},%
+ before title/.code={\def\kvtcb@before@title{#1}\let\tcb@insert@before@title\tcb@insert@before@title@ignore},%
+ before title*/.code={\def\kvtcb@before@title{#1}\let\tcb@insert@before@title\tcb@insert@before@title@noignore},%
+ after title/.code={\def\kvtcb@after@title{#1}\let\tcb@insert@after@title\tcb@insert@after@title@unskip},%
+ after title*/.code={\def\kvtcb@after@title{#1}\let\tcb@insert@after@title\tcb@insert@after@title@nounskip},%
center title/.style={halign title=flush center},%
center upper/.style={halign upper=flush center},%
center lower/.style={halign lower=flush center},%
@@ -791,10 +794,7 @@
\tcbifoddpageoroneside{\tcbset{#1}}{\tcbset{#2}}%
},
phantom/.code={\appto\kvtcb@phantom{#1}},
- step and label/.style 2 args={phantom={\refstepcounter{#1}\tcb@set@label{#2}}},%
step/.style={phantom={\refstepcounter{#1}}},%
- label/.style={phantom={\tcb@set@label{#1}}},%
- phantomlabel/.style={phantom={\ifdefined\phantomsection\phantomsection\fi\tcb@set@label{#1}}},%
hypertarget/.style={phantom={\ifdefined\hypertarget\Hy@raisedlink{\hypertarget{#1}{}}\fi}},
bookmark*/.style 2 args={phantom={\ifdefined\bookmark%
\Hy@raisedlink{\hypertarget{tcb@\thetcolorboxnumber}{}}%
@@ -803,9 +803,6 @@
bookmark/.style={bookmark*={}{#1}},
index/.style={phantom={\index{#1}}},%
index*/.style 2 args={phantom={\index[#1]{#2}}},%
- nameref/.code={\tcb@gettitle{#1}},%
- label type/.store in=\kvtcb@label@type,%
- no label type/.style={label type=},%
add to list/.style 2 args={phantom={\tcb@addcontentsline{#1}{#2}}},
nophantom/.code={\def\kvtcb@phantom{}},%
shield externalize/.is choice,
@@ -819,6 +816,7 @@
options@for/.code={\letcs\tcb@new@colop{tcb@opt@#1}\pgfkeysalsofrom\tcb@new@colop},
list entry/.store in=\kvtcb@listentry,
list text/.style={list entry={\protect\numberline{\thetcbcounter}{\ignorespaces #1}}},
+ short title/.style={list text={#1},nameref={#1}},
title filled/.is if=tcb@titlefilled,%
@colbacktitle/.colorlet=tcbcolbacktitle,
colbacktitle/.style={title filled,@colbacktitle={#1}},
@@ -873,8 +871,67 @@
}
\ExplSyntaxOn
+
+\tl_new:N \l__tcobox_kv_labeltype_tl
+
+
+\cs_new:Npn \__tcobox_label_label:n #1
+ {
+ \quark_if_nil:NTF \l__tcobox_kv_labeltype_tl
+ {
+ \label{#1}
+ }
+ {
+ \exp_last_unbraced:NNV \label[\l__tcobox_kv_labeltype_tl]{#1}
+ }
+ }
+
+
+\cs_new:Npn \__tcobox_zcsetup_countertype:nn #1#2
+ {
+ \cs_if_exist:NT \zcsetup
+ {
+ \zcsetup { countertype={#1={#2}} }
+ }
+ }
+
+
+\cs_new:Npn \__tcobox_label_zlabel:n #1
+ {
+ \quark_if_nil:NF \l__tcobox_kv_labeltype_tl
+ {
+ \cs_if_exist:NT \tcbcounter
+ {
+ \exp_args:NVV \__tcobox_zcsetup_countertype:nn \tcbcounter \l__tcobox_kv_labeltype_tl
+ }
+ }
+ \cs_if_exist:NT \zlabel
+ {
+ \zlabel { #1 }
+ }
+ }
+
+
\tcbset
{
+ label /.style = { phantom={\__tcobox_label:n{#1}} },
+ phantomlabel /.style = { phantom={\cs_if_exist_use:N\phantomsection\__tcobox_label:n{#1}} },
+ step~and~label /.style~n~args = { 2 }{ phantom={\refstepcounter{#1}\__tcobox_label:n{#2}} },
+ nameref /.code =
+ {
+ \tcb@gettitle{#1}
+ \cs_if_exist:NT \zref@titleref@setcurrent { \zref@titleref@setcurrent{#1} }
+ },
+ label~type / .store~in = \l__tcobox_kv_labeltype_tl,
+ no~label~type / .style = { label~type=\q_nil },
+ label~is~label/.code=
+ {
+ \cs_set_eq:NN \__tcobox_label:n \__tcobox_label_label:n
+ },
+ label~is~zlabel/.code=
+ {
+ \cs_set_eq:NN \__tcobox_label:n \__tcobox_label_zlabel:n
+ },
IfBlankTF/.code~n~args={3}{\tl_if_blank:nTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
IfBlankT/.code~n~args={2}{\tl_if_blank:nT{#1}{\pgfkeysalso{#2}}},
IfBlankF/.code~n~args={2}{\tl_if_blank:nF{#1}{\pgfkeysalso{#2}}},
@@ -896,19 +953,11 @@
\def\kvtcb@beforebox{}
\def\kvtcb@afterbox{}
-\def\tcb@set@label#1{%
- \ifx\kvtcb@label@type\@empty%
- \label{#1}%
- \else%
- \label[\kvtcb@label@type]{#1}%
- \fi%
-}
-
\def\tcb@parbox@true@indent{}%
\def\tcb@parbox@false@indent{%
- \preto\kvtcb@before@title{\noindent}%
- \preto\kvtcb@before@upper{\noindent}%
- \preto\kvtcb@before@lower{\noindent}%
+ \preto\kvtcb@before@title{\vspace{-\parskip}\noindent}%
+ \preto\kvtcb@before@upper{\vspace{-\parskip}\noindent}%
+ \preto\kvtcb@before@lower{\vspace{-\parskip}\noindent}%
}%
\let\tcb@parboxrestore=\@parboxrestore
@@ -937,7 +986,10 @@
\let\tcb@minipage=\tcb@minipage@bottom
% lrbox with integrated minipage
-\def\tcb@lrbox#1#2{%
+% #1 box
+% #2 width
+% #3 color (for color stack)
+\def\tcb@lrbox#1#2#3{%
\edef\reserved@a{%
\endgroup
\setbox#1\hbox{%
@@ -945,20 +997,22 @@
\def\noexpand\@currenvir{\@currenvir}%
\def\noexpand\@currenvline{\on@line}}%
\reserved@a
- \@endpefalse
+ \@endpefalse%
\let\tcbbreak\par%
\csname tcb@parbox@use@\kvtcb@parbox\endcsname%
- \tcb@minipage#2\tcb@hyph@fix\ignorespaces}
+ \tcb@minipage{#2}%
+ \color{#3}%
+ \tcb@hyph@fix\ignorespaces}
\let\endtcb@lrbox=\endminipage
\let\tcb@savebox=\tcb@lrbox
\let\endtcb@savebox=\endtcb@lrbox
\def\tcb@saveupperbox{%
-\begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}\tcb@lua@color{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper}
+\begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper}
\def\tcb@savelowerbox{%
-\begin{tcb@savebox}{\tcb@lowerbox}{\tcb@w@lower}\tcb@lua@color{tcbcollower}\kvtcb@fontlower\kvtcb@halignlower\tcb@insert@before@lower}
+\begin{tcb@savebox}{\tcb@lowerbox}{\tcb@w@lower}{tcbcollower}\kvtcb@fontlower\kvtcb@halignlower\tcb@insert@before@lower}
% counter for float
@@ -974,11 +1028,11 @@
\tcbset{autoparskip/.style=noparskip}%
\fi%
\tcb@use@autoparskip%
-\ifx\luacolorProcessBox\@undefined%
- \def\tcb@lua@color#1{}%
-\else%
- \def\tcb@lua@color#1{\color{#1}}%
-\fi%
+%\ifx\luacolorProcessBox\@undefined%
+% \def\tcb@lua@color#1{}%
+%\else%
+% \def\tcb@lua@color#1{\color{#1}}%
+%\fi%
}
\long\def\tcb@colorbox{%
@@ -998,7 +1052,7 @@
\ifx\kvtcb@title\@empty\tcb@hasTitlefalse\tcb@specialtitle@hook\else%
\tcb@hasTitletrue%
\tcbdimto\tcb@w@title{\kvtcb@width-(\kvtcb@left@rule+\kvtcb@right@rule+(\kvtcb@boxsep)*2+\kvtcb@lefttitle+\kvtcb@righttitle)}%
- \begin{tcb@savebox}{\tcb@titlebox}{\tcb@w@title}\tcb@lua@color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@before@title\kvtcb@title\kvtcb@after@title\end{tcb@savebox}%
+ \begin{tcb@savebox}{\tcb@titlebox}{\tcb@w@title}{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\tcb@insert@before@title\kvtcb@title\tcb@insert@after@title\end{tcb@savebox}%
\fi%
}
@@ -1067,24 +1121,12 @@
\sbox{\tcb@lowerbox}{\color{tcbcollower}\kvtcb@fontlower\kvtcb@halignlower\tcb@insert@before@lower\tcb@sbs@text@right\tcb@insert@after@lower}%
}
-\def\tcb@set@color#1{%
- \edef\current@color{\@nameuse{\string\color@#1}}%
- \colorlet{.}{#1}%
-}
-
-\def\tcb@reset@color{%
- \colorlet{.}{tcbcol@origin}%
- \edef\current@color{\@nameuse{\string\color@tcbcol@origin}}%
-}
-
\def\tcb@set@@upper@and@lower{%
- \colorlet{tcbcol@origin}{.}%
\let\tcb@insert@after@part=\tcb@insert@after@upper%
% switch for lower box
\def\tcblower{%
\tcb@insert@after@part%
\end{tcb@savebox}%
- \tcb@set@color{tcbcollower}%
\unless\iftcb@sidebyside%
\tcbdimto\tcb@w@lower{\tcb@innerwidth-\kvtcb@boxsep*2-\kvtcb@leftlower-\kvtcb@rightlower}%
\fi%
@@ -1099,7 +1141,6 @@
\fi%
\tcb@startbox}%
% start of upper box
- \tcb@set@color{tcbcolupper}%
\ifx\kvtcb@saveupperto\@empty%
\let\tcb@startbox\tcb@saveupperbox%
\let\endtcolorbox\tcb@endboxanddraw%
@@ -1321,7 +1362,6 @@
\def\tcb@endboxanddraw{%
\tcb@insert@after@part%
\end{tcb@savebox}%
- \tcb@reset@color%
\tcb@draw@color@box%
\tcb@finalize@environment%
}
@@ -1804,7 +1844,7 @@
}
\def\tcb@sbs@mix{%
- \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper@real}%
+ \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper@real}{tcbcolupper}%
\tcb@box@align{\tcb@upperbox}%
\iftcb@uppervisible%
\tcbdimto{\tcb@temp@wd}{\tcb@w@upper-\wd\tcb@upperbox+\kvtcb@sbs@gap}%
@@ -1957,13 +1997,11 @@
\long\def\tcbox@inner@hbox#1{%
\tcb@set@@phantom%
- \colorlet{tcbcol@origin}{.}%
- \tcb@set@color{tcbcolupper}%
\sbox\tcb@upperbox{\tcb@embed@tcbox{%
\csname tcb@parbox@use@\kvtcb@parbox\endcsname%
\@parboxrestore%
- \tcb@lua@color{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper}}%
- \tcb@reset@color%
+ \color{tcbcolupper}%
+ \kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper}}%
\tcbdimto\tcb@val@raisebase{\the\dimexpr\dp\tcb@upperbox+\kvtcb@bottom+\kvtcb@boxsep+\kvtcb@bottom@rule@stand+\kvtcb@bbbottom@stand\relax}%
\tcbdimto\kvtcb@width{\wd\tcb@upperbox+\kvtcb@left@rule+\kvtcb@leftupper+\kvtcb@boxsep*2+\kvtcb@rightupper+\kvtcb@right@rule}%
\tcb@hasLowerfalse%
@@ -1977,10 +2015,7 @@
\tcb@set@@phantom%
\tcb@set@@title%
\tcb@set@@dimensions%
- \colorlet{tcbcol@origin}{.}%
- \tcb@set@color{tcbcolupper}%
- \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}\tcb@lua@color{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper\end{tcb@savebox}%
- \tcb@reset@color%
+ \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper\end{tcb@savebox}%
\tcb@hasLowerfalse%
\tcb@draw@color@box%
}
@@ -2077,6 +2112,7 @@
}
\def\tcb@proc@counter@autoanduse#1{%
+ \let\tcb@tcbcounter@savetemp=\tcbcounter%
\letcs\tcbcounter{tcb@cnt@#1}%
\ifx\kvtcb@new@numberwithin\@empty%
\csxdef{the\tcbcounter}{\expandafter\noexpand\kvtcb@new@format{\tcbcounter}}%
@@ -2090,6 +2126,7 @@
\fi%
\global\csletcs{thetcb@cnt@#1}{the\tcbcounter}%
\appto\tcb@new@colopt{,code={\letcs\tcbcounter{tcb@cnt@#1}\letcs\thetcbcounter{thetcb@cnt@#1}\stepcounter{\tcbcounter}\preto\kvtcb@phantom{\addtocounter{\tcbcounter}{-1}\refstepcounter{\tcbcounter}}}}%
+ \let\tcbcounter=\tcb@tcbcounter@savetemp%
}
\def\tcb@proc@counter@auto#1{%
@@ -2135,16 +2172,20 @@
\ExplSyntaxOn
+\bool_new:N \l__tcobox_prevent_init_overwrite_bool
+
\cs_new:Npn \__tcobox_process_newtcolorbox:nn #1#2
{
- \edef\tcb@new@boxname{#2}
- \def\tcb@new@colopt{}
- \tl_if_novalue:nF { #1 }
+ \bool_lazy_and:nnF
+ { \l__tcobox_prevent_init_overwrite_bool }
+ { \cs_if_exist_p:c { tcb@opt@#2 } }
{
+ \edef\tcb@new@boxname{#2}
+ \def\tcb@new@colopt{}
\tcb@proc@options@init{#1}{#2}
+ \preto\tcb@new@colopt{savedelimiter=#2}
+ \exp_args:Nc \cs_set_eq:NN { tcb@opt@#2 } \tcb@new@colopt
}
- \preto\tcb@new@colopt{savedelimiter=#2}
- \exp_args:Nc \cs_set_eq:NN { tcb@opt@#2 } \tcb@new@colopt
}
@@ -2156,7 +2197,7 @@
}
-\NewDocumentCommand \__tcobox_new_tcolorbox:w { m +o m o +o +m }
+\NewDocumentCommand \__tcobox_new_tcolorbox:w { m +O{} >{\TrimSpaces} m o +o +m }
{
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\tl_if_novalue:nTF { #4 }
@@ -2175,33 +2216,39 @@
}
\NewDocumentCommand \newtcolorbox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcolorbox:w \newenvironment
}
\NewDocumentCommand \renewtcolorbox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcolorbox:w \renewenvironment
}
-\NewDocumentCommand \__tcobox_new_TColorBox:w { m +o m +m +m }
+\NewDocumentCommand \__tcobox_new_TColorBox:w { m +O{} >{\TrimSpaces} m +m +m }
{
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
#1 { #3 }{ #4 }{ \tcolorbox[#5,options@for=#3] }{ \endtcolorbox }
}
\NewDocumentCommand \DeclareTColorBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TColorBox:w \DeclareDocumentEnvironment
}
\NewDocumentCommand \NewTColorBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TColorBox:w \NewDocumentEnvironment
}
\NewDocumentCommand \RenewTColorBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TColorBox:w \RenewDocumentEnvironment
}
\NewDocumentCommand \ProvideTColorBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TColorBox:w \ProvideDocumentEnvironment
}
@@ -2211,25 +2258,29 @@
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\exp_args:Nc #1 { #3 }{ #4 }{ \begin{tcolorbox}[#5,options@for=#3]#6\end{tcolorbox} }
}
-\NewDocumentCommand \__tcobox_new_TotalTColorBox:w { m +o m }
+\NewDocumentCommand \__tcobox_new_TotalTColorBox:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_TotalTColorBox:Nnnnnn #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \DeclareTotalTColorBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTColorBox:w \DeclareDocumentCommand
}
\NewDocumentCommand \NewTotalTColorBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTColorBox:w \NewDocumentCommand
}
\NewDocumentCommand \RenewTotalTColorBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTColorBox:w \RenewDocumentCommand
}
\NewDocumentCommand \ProvideTotalTColorBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTColorBox:w \ProvideDocumentCommand
}
@@ -2251,17 +2302,19 @@
}
}
}
-\NewDocumentCommand \__tcobox_new_tcbox_i:w { m +o m }
+\NewDocumentCommand \__tcobox_new_tcbox_i:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_tcbox_ii:w #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \newtcbox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcbox_i:w \newcommand
}
\NewDocumentCommand \renewtcbox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcbox_i:w \renewcommand
}
@@ -2271,25 +2324,29 @@
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\exp_args:Nc #1 { #3 }{ #4 }{ \tcbox[#5,options@for=#3] }
}
-\NewDocumentCommand \__tcobox_new_TCBox:w { m +o m }
+\NewDocumentCommand \__tcobox_new_TCBox:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_TCBox:Nnnnn #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \DeclareTCBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBox:w \DeclareDocumentCommand
}
\NewDocumentCommand \NewTCBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBox:w \NewDocumentCommand
}
\NewDocumentCommand \RenewTCBox { }
{
- \__tcobox_new_TCBox:w \RewewDocumentCommand
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
+ \__tcobox_new_TCBox:w \RenewDocumentCommand
}
\NewDocumentCommand \ProvideTCBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBox:w \ProvideDocumentCommand
}
@@ -2299,25 +2356,29 @@
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\exp_args:Nc #1 { #3 }{ #4 }{ \tcbox[#5,options@for=#3]{#6} }
}
-\NewDocumentCommand \__tcobox_new_TotalTCBox:w { m +o m }
+\NewDocumentCommand \__tcobox_new_TotalTCBox:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_TotalTCBox:Nnnnnn #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \DeclareTotalTCBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBox:w \DeclareDocumentCommand
}
\NewDocumentCommand \NewTotalTCBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBox:w \NewDocumentCommand
}
\NewDocumentCommand \RenewTotalTCBox { }
{
- \__tcobox_new_TotalTCBox:w \RewewDocumentCommand
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
+ \__tcobox_new_TotalTCBox:w \RenewDocumentCommand
}
\NewDocumentCommand \ProvideTotalTCBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBox:w \ProvideDocumentCommand
}
@@ -2418,9 +2479,11 @@
\let\tcb@verbatim@begin@hook\@empty
\let\tcb@verbatim@end@hook\@empty
\let\tcb@verbatim@change@percent\@empty
+\let\tcb@set@verbatim@finish\@empty
\def\tcbverbatimwrite#1{%
\@bsphack
+ \tcb@set@verbatim@finish%
\tcb@allocate@tcb@out%
\immediate\openout\tcb@out #1
\tcb@verbatim@begin@hook%
@@ -2439,6 +2502,41 @@
}
+\ExplSyntaxOn
+
+\cs_new_nopar:Npn \__tcobox_verbatim_finish:
+ {
+ \tl_set_rescan:Nnx \l_tmpa_tl
+ {
+ \char_set_catcode_space:n { 9 }
+ \char_set_catcode_space:n { 32 }
+ } { \the\verbatim@line }
+ \tl_if_blank:VF \l_tmpa_tl
+ {
+ \verbatim@processline
+ }
+ }
+
+\tcbset{%
+ verbatim~ignore~indention~at~end/.is~choice,
+ verbatim~ignore~indention~at~end/true/.code=
+ {
+ \cs_set:Npn \tcb@set@verbatim@finish
+ {
+ \cs_set_eq:NN \verbatim@finish \__tcobox_verbatim_finish:
+ }
+ },
+ verbatim~ignore~indention~at~end/false/.code=
+ {
+ \cs_set_eq:NN \tcb@set@verbatim@finish \prg_do_nothing:
+ },
+ verbatim~ignore~indention~at~end/.default=true,
+ verbatim~ignore~indention~at~end
+}
+
+\ExplSyntaxOff
+
+
% saving of the lower box
\def\tcb@lowerverbatim{%
@@ -2568,6 +2666,7 @@
\tcbset{%
minipage,savedelimiter=tcolorbox,%
set@extensions@preframe=,set@extensions@postframe=,set@extensions@final=,%
+ label is label,
}%
\def\tcbsetforeverylayer#1{\tcbset{initialize@reset={#1}}}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.tex b/macros/latex/contrib/tcolorbox/tcolorbox.tex
index 8d410884c3..bcabeb82d0 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.tex
@@ -1,9 +1,9 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcolorbox.tex: Manual
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -29,6 +29,12 @@
\documentclass[a4paper,11pt]{ltxdoc}
+\RequirePackage{l3benchmark}
+\ExplSyntaxOn
+\AtEndDocument { \benchmark_toc: }
+\benchmark_tic:
+\ExplSyntaxOff
+
\usepackage{tcolorbox.doc.s_main}
\tcbEXTERNALIZE
\usepackage{tcolorbox.doc.s_snippet}
@@ -36,7 +42,7 @@
\tcbAUXmkdir{external}
\tcbAUXmkdir{solutions}
-%\usepackage{csquotes}
+\usepackage{csquotes}
\usepackage[style=numeric-comp,sorting=nyt,
maxnames=8,minnames=8,abbreviate=false,backend=biber,
bibencoding=latin1,texencoding=ascii]{biblatex}
@@ -45,8 +51,8 @@
\setlength{\bibitemsep}{\smallskipamount}
\addbibresource{tcolorbox.doc.bib}
-\def\version{5.1.1}%
-\def\datum{2022/06/24}%
+\def\version{6.0.0}%
+\def\datum{2023/02/10}%
\makeindex
\hypersetup{
@@ -64,8 +70,7 @@
%\geometry{showframe}
%\tcbset{draftmode}
\tcbset{/tcb/external/-}% for final run
-%\includeonly{tcolorbox.doc.theorems}
-
+%\includeonly{tcolorbox.doc.breakable}
%\hypersetup{colorlinks=false}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%