From 73abb311c03e955ad9f7b7464390a5722b20b915 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sat, 11 Feb 2023 03:01:17 +0000 Subject: CTAN sync 202302110301 --- macros/latex/contrib/authorarchive/CHANGELOG.md | 10 + macros/latex/contrib/authorarchive/README.md | 58 +- .../latex/contrib/authorarchive/authorarchive.sty | 96 ++- .../brucker-authorarchive-2016-IEEEtran-nourl.pdf | Bin 67605 -> 64143 bytes .../brucker-authorarchive-2016-IEEEtran-nourl.tex | 8 +- .../brucker-authorarchive-2016-IEEEtran.pdf | Bin 71839 -> 68345 bytes .../brucker-authorarchive-2016-IEEEtran.tex | 8 +- .../examples/brucker-authorarchive-2016-acmart.pdf | Bin 394597 -> 130454 bytes .../examples/brucker-authorarchive-2016-acmart.tex | 6 +- .../examples/brucker-authorarchive-2016-entcs.pdf | Bin 257762 -> 250535 bytes .../examples/brucker-authorarchive-2016-entcs.tex | 6 +- .../brucker-authorarchive-2016-llncs-a4.pdf | Bin 232514 -> 198627 bytes .../brucker-authorarchive-2016-llncs-a4.tex | 10 +- .../examples/brucker-authorarchive-2016-llncs.pdf | Bin 233416 -> 221241 bytes .../examples/brucker-authorarchive-2016-llncs.tex | 19 +- .../examples/brucker-authorarchive-2016-lni.pdf | Bin 141002 -> 190755 bytes .../examples/brucker-authorarchive-2016-lni.tex | 8 +- .../examples/brucker-authorarchive-2016.pdf | Bin 237936 -> 57049 bytes .../examples/brucker-authorarchive-2016.tex | 5 +- macros/latex/contrib/authorarchive/icons/README.md | 21 - .../contrib/authorarchive/icons/vector_iD_icon.pdf | Bin 1197 -> 0 bytes .../contrib/authorarchive/icons/vector_iD_icon.svg | 17 - macros/latex/contrib/eolang/eolang.dtx | 77 +- macros/latex/contrib/eolang/eolang.pdf | Bin 2015121 -> 2063516 bytes macros/latex/contrib/mismath/mismath.dtx | 534 ++++++++---- macros/latex/contrib/mismath/mismath.pdf | Bin 258065 -> 265710 bytes .../contrib/resolsysteme/doc/ResolSysteme-doc.pdf | Bin 132738 -> 154471 bytes .../contrib/resolsysteme/doc/ResolSysteme-doc.tex | 264 ++++-- .../doc/ResolSysteme-exemples-pyluatex.pdf | Bin 98310 -> 108019 bytes .../doc/ResolSysteme-exemples-pyluatex.tex | 45 +- .../resolsysteme/doc/ResolSysteme-exemples.pdf | Bin 138727 -> 144719 bytes .../resolsysteme/doc/ResolSysteme-exemples.tex | 28 +- .../contrib/resolsysteme/tex/ResolSysteme.sty | 958 ++++++++++++++++++++- macros/latex/contrib/tcolorbox/CHANGES.md | 100 ++- macros/latex/contrib/tcolorbox/README.md | 6 +- .../latex/contrib/tcolorbox/tcbbreakable.code.tex | 20 +- .../contrib/tcolorbox/tcbdocumentation.code.tex | 6 +- .../latex/contrib/tcolorbox/tcbexternal.code.tex | 6 +- macros/latex/contrib/tcolorbox/tcbfitting.code.tex | 28 +- macros/latex/contrib/tcolorbox/tcbhooks.code.tex | 35 +- .../latex/contrib/tcolorbox/tcblistings.code.tex | 6 +- .../contrib/tcolorbox/tcblistingscore.code.tex | 24 +- .../contrib/tcolorbox/tcblistingsutf8.code.tex | 6 +- .../latex/contrib/tcolorbox/tcbmagazine.code.tex | 6 +- macros/latex/contrib/tcolorbox/tcbminted.code.tex | 6 +- macros/latex/contrib/tcolorbox/tcbposter.code.tex | 6 +- .../latex/contrib/tcolorbox/tcbprocessing.code.tex | 6 +- macros/latex/contrib/tcolorbox/tcbraster.code.tex | 6 +- macros/latex/contrib/tcolorbox/tcbskins.code.tex | 476 +++++----- .../contrib/tcolorbox/tcbskinsjigsaw.code.tex | 6 +- .../latex/contrib/tcolorbox/tcbtheorems.code.tex | 49 +- .../latex/contrib/tcolorbox/tcbvignette.code.tex | 6 +- macros/latex/contrib/tcolorbox/tcbxparse.code.tex | 6 +- .../contrib/tcolorbox/tcolorbox-example-poster.pdf | Bin 281296 -> 281293 bytes .../contrib/tcolorbox/tcolorbox-example-poster.tex | 4 +- .../latex/contrib/tcolorbox/tcolorbox-example.pdf | Bin 469093 -> 469022 bytes .../latex/contrib/tcolorbox/tcolorbox-example.tex | 4 +- .../tcolorbox/tcolorbox-tutorial-poster.pdf | Bin 456149 -> 455822 bytes .../tcolorbox/tcolorbox-tutorial-poster.tex | 4 +- macros/latex/contrib/tcolorbox/tcolorbox.doc.bib | 54 +- .../contrib/tcolorbox/tcolorbox.doc.breakable.tex | 24 +- .../contrib/tcolorbox/tcolorbox.doc.coremacros.tex | 113 +-- .../tcolorbox/tcolorbox.doc.coreoptions.tex | 210 +++-- .../contrib/tcolorbox/tcolorbox.doc.filling.tex | 412 +-------- .../contrib/tcolorbox/tcolorbox.doc.fitting.tex | 54 +- .../tcolorbox/tcolorbox.doc.initoptions.tex | 57 +- .../contrib/tcolorbox/tcolorbox.doc.intro.tex | 4 +- .../contrib/tcolorbox/tcolorbox.doc.listings.tex | 54 +- .../contrib/tcolorbox/tcolorbox.doc.s_main.sty | 3 +- .../contrib/tcolorbox/tcolorbox.doc.s_snippet.sty | 10 +- .../contrib/tcolorbox/tcolorbox.doc.skins.tex | 35 +- .../contrib/tcolorbox/tcolorbox.doc.technical.tex | 3 +- .../contrib/tcolorbox/tcolorbox.doc.theorems.tex | 108 ++- .../contrib/tcolorbox/tcolorbox.doc.verbatim.tex | 39 + macros/latex/contrib/tcolorbox/tcolorbox.pdf | Bin 7670315 -> 7641870 bytes macros/latex/contrib/tcolorbox/tcolorbox.sty | 273 ++++-- macros/latex/contrib/tcolorbox/tcolorbox.tex | 19 +- 77 files changed, 2916 insertions(+), 1556 deletions(-) delete mode 100644 macros/latex/contrib/authorarchive/icons/README.md delete mode 100644 macros/latex/contrib/authorarchive/icons/vector_iD_icon.pdf delete mode 100644 macros/latex/contrib/authorarchive/icons/vector_iD_icon.svg (limited to 'macros/latex') 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,34 +5,50 @@ -- [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) ## 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, @@ -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 Binary files a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.pdf and b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran-nourl.pdf 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 Binary files a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.pdf and b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-IEEEtran.pdf 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 Binary files a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.pdf and b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-acmart.pdf 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 Binary files a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.pdf and b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-entcs.pdf 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 Binary files a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.pdf and b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs-a4.pdf 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 Binary files a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.pdf and b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-llncs.pdf 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 Binary files a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.pdf and b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016-lni.pdf 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 Binary files a/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.pdf and b/macros/latex/contrib/authorarchive/examples/brucker-authorarchive-2016.pdf 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 - 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 Binary files a/macros/latex/contrib/authorarchive/icons/vector_iD_icon.pdf and /dev/null 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 @@ - - - - - - - - - - - \ 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 @@ %\NeedsTeXFormat{LaTeX2e} %\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] % %<*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/(?/\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 Binary files a/macros/latex/contrib/eolang/eolang.pdf and b/macros/latex/contrib/eolang/eolang.pdf 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] % %<*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 @@ % % \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 @@ -904,12 +1042,104 @@ % \begin{macrocode} {\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 Binary files a/macros/latex/contrib/mismath/mismath.pdf and b/macros/latex/contrib/mismath/mismath.pdf 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 Binary files a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf and b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf 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](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](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](1+1/4,0,3+4/5 § 0,1,-5/3 § 1/2,0.45,6/7)$. +$M=\AffMatrice[d](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](matrice 1)(matrice 2)[Clé] +\CarreMatrice(*)[option de formatage](matrice)(-5,6 § 1,4)[Clé] + +%commande disponible avec l'option pyluatex +\MatricePuissancePY(*)[option de formatage](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](matrice) +\MatriceInverse(*)[option de formatage](matrice)[Clé] %version python -\MatriceInversePY(*)[option de formatage](matrice) +\MatriceInversePY(*)[option de formatage](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(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](1,2,3 § 4,5,6 § 7,8,8)$. +$A^{-1}=\MatriceInverse[n](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](1,2 § 3,4)$. +$A^{-1}=\MatriceInversePY[d](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](1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$. +\MatriceInversePY[n](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](matriceA)(matriceB)[opt Matrice] +\SolutionSysteme(*)[opt de formatage](matriceA)(matriceB)[Clé] %version python -\SolutionSystemePY(*)[opt de formatage](matriceA)(matriceB)[opt Matrice] +\SolutionSystemePY(*)[opt de formatage](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]% (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 Binary files a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf and b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf 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(1,2 § 3,6)$. \begin{ShowCodeTeX} L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est -$A^{-1}=\MatriceInversePY*[d](1,2 § 3,4)$. +$A^{-1}=\MatriceInversePY[d](1,2 § 3,4)$. \end{ShowCodeTeX} \begin{ShowCodeTeX} @@ -68,7 +93,7 @@ $A^{-1}=\MatriceInversePY*(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](1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$. +est $A^{-1}=\MatriceInversePY[n](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] (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 Binary files a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf and b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf 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 +> Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm > 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 Binary files a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf and b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 Binary files a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf and b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 Binary files a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf and b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 Binary files a/macros/latex/contrib/tcolorbox/tcolorbox.pdf and b/macros/latex/contrib/tcolorbox/tcolorbox.pdf 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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 +%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% 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} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- cgit v1.2.3