summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-06-05 03:05:04 +0000
committerNorbert Preining <norbert@preining.info>2023-06-05 03:05:04 +0000
commitefea33d6e2fb0152b0caee865514c497e12a0e8c (patch)
tree9f7a31e6522d99b67ccc8fdbf23f5fa239032880 /macros/latex/contrib
parenta97550e5701ef45ead3de2808ac2302149b6a804 (diff)
CTAN sync 202306050305
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/jourrr/LICENSE427
-rw-r--r--macros/latex/contrib/jourrr/README.md65
-rw-r--r--macros/latex/contrib/jourrr/imgs/jourrr-signature.pngbin0 -> 13842 bytes
-rw-r--r--macros/latex/contrib/jourrr/jourrr.cls184
-rw-r--r--macros/latex/contrib/jourrr/jourrr.pdfbin0 -> 82561 bytes
-rw-r--r--macros/latex/contrib/jourrr/jourrr.tex171
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-code.dtx109
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-code.pdfbin909512 -> 911018 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.pdfbin575208 -> 581333 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.tex85
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.pdfbin592717 -> 596415 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.tex101
-rw-r--r--macros/latex/contrib/starray/README.md5
-rw-r--r--macros/latex/contrib/starray/doc/starray.pdfbin266666 -> 266418 bytes
-rw-r--r--macros/latex/contrib/starray/doc/starray.tex4
-rw-r--r--macros/latex/contrib/starray/latex/starray.sty220
16 files changed, 1185 insertions, 186 deletions
diff --git a/macros/latex/contrib/jourrr/LICENSE b/macros/latex/contrib/jourrr/LICENSE
new file mode 100644
index 0000000000..3b7b82d0da
--- /dev/null
+++ b/macros/latex/contrib/jourrr/LICENSE
@@ -0,0 +1,427 @@
+Attribution-ShareAlike 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+ Considerations for licensors: Our public licenses are
+ intended for use by those authorized to give the public
+ permission to use material in ways otherwise restricted by
+ copyright and certain other rights. Our licenses are
+ irrevocable. Licensors should read and understand the terms
+ and conditions of the license they choose before applying it.
+ Licensors should also secure all rights necessary before
+ applying our licenses so that the public can reuse the
+ material as expected. Licensors should clearly mark any
+ material not subject to the license. This includes other CC-
+ licensed material, or material used under an exception or
+ limitation to copyright. More considerations for licensors:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Considerations for the public: By using one of our public
+ licenses, a licensor grants the public permission to use the
+ licensed material under specified terms and conditions. If
+ the licensor's permission is not necessary for any reason--for
+ example, because of any applicable exception or limitation to
+ copyright--then that use is not regulated by the license. Our
+ licenses grant only permissions under copyright and certain
+ other rights that a licensor has authority to grant. Use of
+ the licensed material may still be restricted for other
+ reasons, including because others have copyright or other
+ rights in the material. A licensor may make special requests,
+ such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to
+ respect those requests where reasonable. More_considerations
+ for the public:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution-ShareAlike 4.0 International Public
+License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution-ShareAlike 4.0 International Public License ("Public
+License"). To the extent this Public License may be interpreted as a
+contract, You are granted the Licensed Rights in consideration of Your
+acceptance of these terms and conditions, and the Licensor grants You
+such rights in consideration of benefits the Licensor receives from
+making the Licensed Material available under these terms and
+conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright
+ and Similar Rights in Your contributions to Adapted Material in
+ accordance with the terms and conditions of this Public License.
+
+ c. BY-SA Compatible License means a license listed at
+ creativecommons.org/compatiblelicenses, approved by Creative
+ Commons as essentially the equivalent of this Public License.
+
+ d. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ e. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ f. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ g. License Elements means the license attributes listed in the name
+ of a Creative Commons Public License. The License Elements of this
+ Public License are Attribution and ShareAlike.
+
+ h. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ i. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ j. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ k. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ l. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ m. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. Additional offer from the Licensor -- Adapted Material.
+ Every recipient of Adapted Material from You
+ automatically receives an offer from the Licensor to
+ exercise the Licensed Rights in the Adapted Material
+ under the conditions of the Adapter's License You apply.
+
+ c. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
+
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified
+ form), You must:
+
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of
+ warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
+
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
+
+ b. ShareAlike.
+
+ In addition to the conditions in Section 3(a), if You Share
+ Adapted Material You produce, the following conditions also apply.
+
+ 1. The Adapter's License You apply must be a Creative Commons
+ license with the same License Elements, this version or
+ later, or a BY-SA Compatible License.
+
+ 2. You must include the text of, or the URI or hyperlink to, the
+ Adapter's License You apply. You may satisfy this condition
+ in any reasonable manner based on the medium, means, and
+ context in which You Share Adapted Material.
+
+ 3. You may not offer or impose any additional or different terms
+ or conditions on, or apply any Effective Technological
+ Measures to, Adapted Material that restrict exercise of the
+ rights granted under the Adapter's License You apply.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database;
+
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material,
+
+ including for purposes of Section 3(b); and
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the “Licensor.” The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/macros/latex/contrib/jourrr/README.md b/macros/latex/contrib/jourrr/README.md
new file mode 100644
index 0000000000..bfa7620553
--- /dev/null
+++ b/macros/latex/contrib/jourrr/README.md
@@ -0,0 +1,65 @@
+# A LaTeX template for a journal rebuttal letter (response to editors/reviewers)
+<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
+[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-)
+<!-- ALL-CONTRIBUTORS-BADGE:END -->
+
+## About
+
+The repository hosts a template for writing responses to editors'/reviewers' comments for journal submissions written in LaTex that is minimalistic in one way while pre-defined with several commands that drastically speed up the process of preparing letters during the revision process.
+
+### Main Features of this template:
+- With front page included
+- **Response ticks** to mark as completed
+- Custom response color
+- Minimalistic design
+- Everything is customizable
+- Predefined commands for a journal name, submission ID, author, editor, associate editor, date, etc.
+- Many macros included
+- Predefined different valedictions for different types of submissions (e.g., Yours sincerely, Yours faithfully, Best regards, etc.)
+- Custom greeting (e.g., "Dear Editor" or "Dear Editor-in-Chief" for regular submission, etc.)
+- (Optional) Table of contents, jump to the reply you wish to address
+- Option to add custom Signature (i.e. an image of your hand-written signature)
+
+
+## Download/Install
+
+
+## Related templates
+
+[A cover letter template for a journal paper submission in LaTex](https://github.com/firefly-cpp/cover-letter-latex)
+
+# Disclaimer
+This software is provided as-is, and there are no guarantees that it fits your purposes or that it is bug-free. Use it at your own risk!
+
+## License
+Material in this folder is licensed under a
+[Creative Commons Attribution-ShareAlike 4.0 International License][cc-by-sa].
+
+[![CC BY-SA 4.0][cc-by-sa-image]][cc-by-sa]
+
+[cc-by-sa]: http://creativecommons.org/licenses/by-sa/4.0/
+[cc-by-sa-image]: https://licensebuttons.net/l/by-sa/4.0/88x31.png
+[cc-by-sa-shield]: https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg
+
+## Contributors ✨
+
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
+
+<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
+<!-- prettier-ignore-start -->
+<!-- markdownlint-disable -->
+<table>
+ <tbody>
+ <tr>
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/KukovecRok"><img src="https://avatars.githubusercontent.com/u/33880044?v=4?s=100" width="100px;" alt="Tatookie"/><br /><sub><b>Tatookie</b></sub></a><br /><a href="https://github.com/firefly-cpp/latex-response-reviewers/commits?author=KukovecRok" title="Code">💻</a> <a href="https://github.com/firefly-cpp/latex-response-reviewers/commits?author=KukovecRok" title="Documentation">📖</a> <a href="https://github.com/firefly-cpp/latex-response-reviewers/issues?q=author%3AKukovecRok" title="Bug reports">🐛</a> <a href="#example-KukovecRok" title="Examples">💡</a></td>
+ <td align="center" valign="top" width="14.28%"><a href="http://www.iztok-jr-fister.eu/"><img src="https://avatars.githubusercontent.com/u/1633361?v=4?s=100" width="100px;" alt="Iztok Fister Jr."/><br /><sub><b>Iztok Fister Jr.</b></sub></a><br /><a href="https://github.com/firefly-cpp/latex-response-reviewers/commits?author=firefly-cpp" title="Code">💻</a> <a href="#mentoring-firefly-cpp" title="Mentoring">🧑‍🏫</a> <a href="#ideas-firefly-cpp" title="Ideas, Planning, & Feedback">🤔</a></td>
+ </tr>
+ </tbody>
+</table>
+
+<!-- markdownlint-restore -->
+<!-- prettier-ignore-end -->
+
+<!-- ALL-CONTRIBUTORS-LIST:END -->
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
diff --git a/macros/latex/contrib/jourrr/imgs/jourrr-signature.png b/macros/latex/contrib/jourrr/imgs/jourrr-signature.png
new file mode 100644
index 0000000000..d6427aa8e2
--- /dev/null
+++ b/macros/latex/contrib/jourrr/imgs/jourrr-signature.png
Binary files differ
diff --git a/macros/latex/contrib/jourrr/jourrr.cls b/macros/latex/contrib/jourrr/jourrr.cls
new file mode 100644
index 0000000000..42420539c7
--- /dev/null
+++ b/macros/latex/contrib/jourrr/jourrr.cls
@@ -0,0 +1,184 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{jourrr}[2023/06/04 Response to reviewers template]
+
+% load class
+\LoadClass[11pt,a4paper]{article} % Font size and paper type
+
+% include dependencies
+\RequirePackage{graphicx}
+\RequirePackage{fancyhdr}
+\RequirePackage{parskip}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage[english]{babel}
+\RequirePackage[iso,american]{isodate}
+\RequirePackage{fontawesome5}
+\RequirePackage{geometry}
+\RequirePackage{wasysym}
+\RequirePackage{array}
+\RequirePackage{xcolor}
+\RequirePackage{bookmark}
+
+% no indent for whole document
+\setlength\parindent{0pt}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+%----------------------------------------------------------------------
+% process options
+\ProcessOptions\relax
+
+% styling of document
+%----------------------------------------------------------------------
+
+% set margins
+ \newgeometry{ % Defaults for a4
+ left=35mm, % default 25
+ right=35mm, % default 25
+ top=20mm, % default 20
+ bottom=45mm} % default 20
+\savegeometry{title}
+ \newgeometry{ % Defaults for a4
+ left=25mm, % default 25
+ right=25mm, % default 25
+ top=20mm, % default 20
+ bottom=20mm} % default 20
+\savegeometry{doc}
+
+\setlength{\headheight}{42.0pt}
+
+% set a little indendation for paragraphs
+\setlength{\parindent}{0pt}
+
+% space between paragraphs
+\setlength{\parskip}{1em}
+
+%----------------------------------------------------------------------
+% new command for the information of author
+\newcommand{\responseheader}[1]{
+%\noindent
+\fancyfoot{}
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}
+
+\pagestyle{fancy}
+ \fancyhf{}
+ % show in the middle
+ \fancyhead[C]{\leavevmode\large
+ \begin{tabular}[t]{c@{}}
+ #1
+ \end{tabular}}
+}
+
+
+%----------------------------------------------------------------------
+% Your data
+%----------------------------------------------------------------------
+% % Name and Surname of the reviewer
+\def\NameSurname#1{\def\@NameSurname{#1}}
+\newcommand{\pNameSurname}{\@NameSurname}
+%----------------------------------------------------------------------
+% Submission data
+%----------------------------------------------------------------------
+
+% journal name
+\def\JournalName#1{\def\@JournalName{#1}}
+\newcommand{\pJournalName}{\@JournalName}
+
+% title of your manuscript
+\def\Title#1{\def\@Title{#1}}
+\newcommand{\pTitle}{\@Title}
+
+% manuscript Id
+\def\ManuscriptID#1{\def\@ManuscriptID{#1}}
+\newcommand{\pManuscriptID}{\@ManuscriptID}
+
+% name of the Editor
+\def\toEditor#1{\def\@toEditor{#1}}
+\newcommand{\ptoEditor}{\@toEditor}
+
+% name of the Editor
+\def\Editor#1{\def\@Editor{#1}}
+\newcommand{\pEditor}{\@Editor}
+
+% name of the Associate Editor
+\def\AssociateEditor#1{\def\@AssociateEditor{#1}}
+\newcommand{\pAssociateEditor}{\@AssociateEditor}
+
+% name of the Special issue (optional)
+\def\SpecialIssue#1{\def\@SpecialIssue{#1}}
+\newcommand{\pSpecialIssue}{\@SpecialIssue}
+
+
+%
+% FIRST PART
+%
+
+% Addressing the Person
+\def\PersonAddressing#1{\def\@PersonAddressing{#1}}
+\newcommand{\pPersonAddressing}{\@PersonAddressing}
+
+% We thank editor
+\def\Introduction#1{\def\@Introduction{#1}}
+\newcommand{\pIntroduction}{\@Introduction}
+
+% We thank reviewers
+\def\ReviewerThank#1{\def\@ReviewerThank{#1}}
+\newcommand{\pReviewerThank}{\@ReviewerThank}
+
+% Valediction - Ending of the letter
+\def\valediction#1{\def\@valediction{#1}}
+\newcommand{\pvalediction}{\@valediction}
+
+% Different predefined valedictions
+\newcommand{\yourssincerely}[1]{Yours sincerely,\\}
+\newcommand{\yoursfaithfully}[1]{Yours faithfully,\\}
+\newcommand{\yourstruly}[1]{Yours truly,\\}
+\newcommand{\bestregards}[1]{Best regards,\\}
+
+% Signature
+\def\signature#1{\def\@signature{#1}}
+\newcommand{\psignature}{\@signature}
+
+% SignaturePath
+\def\signaturePath#1{\def\@signaturePath{#1}}
+\newcommand{\pSignaturePath}{\@signaturePath}
+
+% Show Signature command
+\def \showSignature#1{
+\vspace{-2cm}\begin{flushright}\includegraphics[width=4cm,height=4cm,keepaspectratio]{#1}\end{flushright}}
+
+% Checkbox
+\newcommand{\checkbox}{\Square} % Checkbox symbol command
+\newcommand{\checkedbox}{\CheckedBox} % Checked checkbox symbol command
+
+\newcommand{\completed}[1]{\ifthenelse{\equal{#1}{true}}{\rlap{{\checkedbox}}} {\hspace{0.6cm}\checkbox}} % if true - checked; else - unchecked (square)
+
+% Page 2 - N commands
+
+\newcounter{refereecounter}
+\setcounter{refereecounter}{1}
+\newcounter{commentcounter}
+\setcounter{commentcounter}{0}
+\newcounter{eiccommentcounter}
+\setcounter{eiccommentcounter}{1}
+\newcounter{aecommentcounter}
+\setcounter{aecommentcounter}{1}
+
+\newcommand{\referee}[0]{\underline{\large The authors’ reply to the Reviewer \therefereecounter:} \phantomsection \addcontentsline{toc}{section}{Author's reply to reviewer \therefereecounter} \\ \newline
+\textbf{\Large Referee \therefereecounter:} \addtocounter{refereecounter}{1}\\\setcounter{commentcounter}{1}}
+
+\newcommand{\response}[3]{%
+\hspace{-0.3cm}
+ \begin{tabular}{p{14cm} w{c}{3cm}}
+ \textbf{Response:} {\color{#2} #3} & {\Huge \completed{#1}} \\ % Set font of checkbox here
+ \end{tabular} %
+}
+
+
+\newcommand{\comment}[1]{\textbf{Comment \thecommentcounter:} #1 \addtocounter{commentcounter}{1}}
+
+
+% macros for responding editor/associate editor
+\newcommand{\editorcomment}[1]{\textbf{Editor's Comment \theeiccommentcounter: } #1\addtocounter{eiccommentcounter}{1}}
+\newcommand{\editorresponse}[0]{\underline{\large The authors’ reply to the Editor-in-Chief} \phantomsection \addcontentsline{toc}{section}{Editor in Chief}}
+
+\newcommand{\associateeditorcomment}[1]{\textbf{Associate Editor's Comment \theaecommentcounter: } #1\addtocounter{aecommentcounter}{1}}
+\newcommand{\associateeditorresponse}[0]{\underline{\large The authors’ reply to the Associate Editor} \phantomsection \addcontentsline{toc}{section}{Associate Editor}}
diff --git a/macros/latex/contrib/jourrr/jourrr.pdf b/macros/latex/contrib/jourrr/jourrr.pdf
new file mode 100644
index 0000000000..118ed72e8e
--- /dev/null
+++ b/macros/latex/contrib/jourrr/jourrr.pdf
Binary files differ
diff --git a/macros/latex/contrib/jourrr/jourrr.tex b/macros/latex/contrib/jourrr/jourrr.tex
new file mode 100644
index 0000000000..6998b73061
--- /dev/null
+++ b/macros/latex/contrib/jourrr/jourrr.tex
@@ -0,0 +1,171 @@
+\documentclass{jourrr}
+
+% Path to your signature (if you have one).
+\signaturePath{imgs/jourrr-signature.png}
+%----------------------------------------------------------------------
+% Your Data
+%----------------------------------------------------------------------
+% change according to your data
+\NameSurname{Name Surname}
+%----------------------------------------------------------------------
+% Article data
+%----------------------------------------------------------------------
+% journal name
+\JournalName{JournalName}
+% title of your paper
+\Title{A review of journal name title}
+% name of the EiC
+\Editor{Prof. Name Surname}
+% name of the special issue (if any)
+\SpecialIssue{SI 2022}
+% Manuscript ID
+\ManuscriptID{1234567890}
+
+% Name of the Associate Editor
+\AssociateEditor{Prof. Name Surname}
+
+
+%----------------------------------------------------------------------
+% Response letter main part
+%----------------------------------------------------------------------
+% No need to change the following part - here for customization
+% Line spacing
+\renewcommand{\baselinestretch}{1.3}
+% Addressing the Person
+\PersonAddressing{Dear Editor}
+
+% change valediction in \valediction{ \OPTION_HERE } or \valediction{ Custom text }
+% \yoursfaithfully % In case we do not know the name of the Editor
+% \yourssincerely % In case we know the name of the Editor
+% \yourstruly % American version of Yours faithfully
+% \bestregards
+\valediction{\yourssincerely}
+
+\signature{\pNameSurname (On behalf of all Authors)\newline \break
+University of City}
+
+%----------------------------------------------------------------------
+
+\Introduction{We would like to Thank you very much for your help, kindness, and your willingness by giving us a chance to submit our manuscript to the review process of your journal. We have studied each comment carefully and had acted upon every point raised by the reviewers. \newline \break
+We also revised our manuscript as suggested by reviewers. We made changes which enhance the written quality and flow of the paper. \newline \break
+Below, we have highlighted responses to each comment from the reviewers and indicated possible solutions to them. \newline \break
+Looking forward to hearing from you soon.}
+
+\ReviewerThank{Authors would like to sincerely thank the both Reviewers for the time spent on reading and commenting the manuscript. The given remarks are very thorough and extremely helpful to overcome the shortcomings and ambiguities in the manuscript. The Reviewer's effort is highly appreciated. In what follows, a point-by-point reply to the Reviewer’s remarks, comments and suggestions is given.}
+%----------------------------------------------------------------------
+% Possible colors for reviewers are:
+% red, green, blue, cyan, magenta, yellow, black, gray, white, darkgray,
+% lightgray, brown, lime, olive, orange, pink, purple, teal, violet
+% Refer to the xcolor package for more information
+%----------------------------------------------------------------------
+
+\begin{document}
+\loadgeometry{title}
+\begin{titlepage}
+
+\large % Font size
+\responseheader{
+ Responses to Reviewers Comments on\\
+ ``\pJournalName``\\
+ (\pManuscriptID)
+ }
+%----------------------------------------------------------------------%
+% Title page %
+%----------------------------------------------------------------------%
+
+\begin{center}
+Responses to Reviewers Comments on\\
+ ``\pJournalName``\\
+ (\pManuscriptID)
+\end{center}
+
+% Today's date
+\today
+
+\vspace*{1\baselineskip}
+\pPersonAddressing,
+
+\pIntroduction
+
+\vfill
+
+\pvalediction\par
+
+\psignature
+
+% Next line shows your signature. Comment it out if you don't have one / plan to use digital on .pdf
+\showSignature{\pSignaturePath}
+
+\end{titlepage}
+
+%----------------------------------------------------------------------%
+% Table of contents %
+%----------------------------------------------------------------------%
+
+\tableofcontents
+
+\clearpage
+
+%----------------------------------------------------------------------%
+% Main part %
+%----------------------------------------------------------------------%
+
+\pagestyle{empty}
+% Load predefined geometry for document
+\loadgeometry{doc}
+% Set linespread for this part
+\linespread{1.5}\selectfont
+
+\pReviewerThank
+
+\editorresponse \newline
+
+\editorcomment{This is the comment from the EiC}
+% comment
+
+\associateeditorresponse \newline
+
+\associateeditorcomment{This is the comment from the AE}
+
+\referee{}\newline
+Comments to the Author.
+
+General comment of reviewer to the author.
+
+\response{true}{blue}{Authors thanks the Reviewer 1 for his/her positive mention about our work.}
+
+\comment{This is the comment}
+
+\response{false}{blue}{This is the response}
+
+\comment{This is the comment}
+
+\response{false}{blue}{This is the response}
+
+\referee{}\newline
+Comments to the Author.
+
+General comment of reviewer to the author.
+
+\response{true}{blue}{Authors thanks the Reviewer 1 for his/her positive mention about our work.}
+
+\comment{This is the comment}
+
+\response{false}{blue}{This is the response}
+
+\comment{This is the comment}
+
+\response{false}{blue}{This is the response}
+
+\referee{}\newline
+...
+
+\vfill
+
+\pvalediction\\
+\pNameSurname
+
+% Next line shows your signature. Comment it out if you don't have one / plan to use digital on .pdf
+\showSignature{\pSignaturePath}
+
+\end{document}
diff --git a/macros/latex/contrib/nicematrix/nicematrix-code.dtx b/macros/latex/contrib/nicematrix/nicematrix-code.dtx
index 93555aa1e5..07b6fe8513 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-code.dtx
+++ b/macros/latex/contrib/nicematrix/nicematrix-code.dtx
@@ -17,8 +17,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{6.19a}
-\def\myfiledate{2023/05/25}
+\def\myfileversion{6.20}
+\def\myfiledate{2023/06/04}
%
%
%<*batchfile>
@@ -173,11 +173,11 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_msg_new:nn { \msg_new:nnn { nicematrix } }
% \end{macrocode}
%
-% With Overleaf, a document is compiled in non-stop mode. When there is an
-% error, there is no way to the user to use the key H in order to have more
-% information. That's why we decide to put that piece of information (for the
-% messages with such information) in the main part of the message when the key
-% |messages-for-Overleaf| is used (at load-time).
+% With Overleaf, by default, a document is compiled in non-stop mode. When there
+% is an error, there is no way to the user to use the key H in order to have
+% more information. That's why we decide to put that piece of information (for
+% the messages with such information) in the main part of the message when the
+% key |messages-for-Overleaf| is used (at load-time).
% \begin{macrocode}
\cs_new_protected:Npn \@@_msg_new:nnn #1 #2 #3
{
@@ -188,8 +188,8 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \bigskip
-% We also create a command which will genereate usually an error but only a
-% warning on Overleaf. The argument is given by currification.
+% We also create a command which will generate usually an error but only a
+% warning on Overleaf. The argument is given by curryfication.
% \begin{macrocode}
\cs_new_protected:Npn \@@_error_or_warning:n
{ \bool_if:NTF \c_@@_messages_for_Overleaf_bool \@@_warning:n \@@_error:n }
@@ -1998,6 +1998,11 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \bigskip
+% The following parameter corresponds to the key |xdots/horizontal_labels|.
+% \begin{macrocode}
+\bool_new:N \l_@@_xdots_h_labels_bool
+% \end{macrocode}
+% \bigskip
% The following dimension is the distance between two dots for the dotted lines
% (when |line-style| is equal to |standard|, which is the initial value). The
% initial value is 0.45~em but it will be changed if the option |small| is used.
@@ -2219,6 +2224,8 @@ version 2005/12/01 or later.
% \begin{macrocode}
\keys_define:nn { NiceMatrix / xdots }
{
+ horizontal-labels .bool_set:N = \l_@@_xdots_h_labels_bool ,
+ horizontal-labels .default:n = true ,
line-style .code:n =
{
\bool_lazy_or:nnTF
@@ -3145,7 +3152,8 @@ version 2005/12/01 or later.
%
% \bigskip
% The first argument is a boolean which indicates whether you must put the
-% instruction on the left or on the right on the list of instructions.
+% instruction on the left or on the right on the list of instructions (with
+% consequences for the parallelisation of the diagonal lines).
% \begin{macrocode}
\cs_new_protected:Npn \@@_instruction_of_type:nnn #1 #2 #3
{
@@ -6169,7 +6177,7 @@ version 2005/12/01 or later.
% (with the command |\item|) . |#1| is the label (when the command
% |\tabularnote| has been used with an optional argument between square
% brackets) and |#2| is the text of the note. The second argument is provided by
-% currification.
+% curryfication.
% \begin{macrocode}
\cs_set_protected:Npn \@@_one_tabularnote:nn #1
{
@@ -8532,8 +8540,8 @@ version 2005/12/01 or later.
\pgfrememberpicturepositiononpagetrue
\pgf@relevantforpicturesizefalse
\bool_lazy_or:nnTF
- { \tl_if_eq_p:NN \l_@@_xdots_line_style_tl \c_@@_standard_tl }
- \l_@@_dotted_bool
+ { \tl_if_eq_p:NN \l_@@_xdots_line_style_tl \c_@@_standard_tl }
+ \l_@@_dotted_bool
\@@_draw_standard_dotted_line:
\@@_draw_unstandard_dotted_line:
}
@@ -8566,9 +8574,37 @@ version 2005/12/01 or later.
\cs_generate_variant:Nn \@@_draw_unstandard_dotted_line:n { o }
% \end{macrocode}
%
+%
+% \bigskip
+% The following Tikz styles are for both labels (set by the symbols |_| and |^|)
+% of a continous line with a non-standard style.
+% \begin{macrocode}
+\hook_gput_code:nnn { begindocument } { . }
+ {
+ \IfPackageLoadedTF { tikz }
+ {
+ \tikzset
+ {
+ @@_node_above / .style = { sloped , above } ,
+ @@_node_below / .style = { sloped , below }
+ }
+ }
+ { }
+ }
+% \end{macrocode}
+%
+% \bigskip
% \begin{macrocode}
\cs_new_protected:Npn \@@_draw_unstandard_dotted_line:nnn #1 #2 #3
{
+ \bool_if:NT \l_@@_xdots_h_labels_bool
+ {
+ \tikzset
+ {
+ @@_node_above / .style = { auto = left } ,
+ @@_node_below / .style = { auto = right }
+ }
+ }
\draw
[
#1 ,
@@ -8581,8 +8617,8 @@ version 2005/12/01 or later.
% following lines because we are in the contents of Tikz nodes (and they will be
% \emph{rescanned} if the Tikz library \pkg{babel} is loaded).
% \begin{macrocode}
- -- node [ sloped , above ] { $ \scriptstyle #2 $ }
- node [ sloped , below ] { $ \scriptstyle #3 $ }
+ -- node [ @@_node_above ] { $ \scriptstyle #2 $ }
+ node [ @@_node_below ] { $ \scriptstyle #3 $ }
( \l_@@_x_final_dim , \l_@@_y_final_dim ) ;
\end { scope }
}
@@ -8606,24 +8642,26 @@ version 2005/12/01 or later.
{ \pgfpoint \l_@@_x_initial_dim \l_@@_y_initial_dim }
{ \pgfpoint \l_@@_x_final_dim \l_@@_y_final_dim }
}
- \pgftransformrotate
+ \fp_set:Nn \l_tmpa_fp
{
- \fp_eval:n
- {
- atand
- (
- \l_@@_y_final_dim - \l_@@_y_initial_dim ,
- \l_@@_x_final_dim - \l_@@_x_initial_dim
- )
- }
- }
+ atand
+ (
+ \l_@@_y_final_dim - \l_@@_y_initial_dim ,
+ \l_@@_x_final_dim - \l_@@_x_initial_dim
+ )
+ }
+ \pgftransformrotate { \fp_use:N \l_tmpa_fp }
+ \bool_if:NF \l_@@_xdots_h_labels_bool { \fp_zero:N \l_tmpa_fp }
\pgfnode
{ rectangle }
{ south }
{
- \c_math_toggle_token
- \scriptstyle \l_@@_xdots_up_tl
- \c_math_toggle_token
+ \rotatebox { \fp_eval:n { - \l_tmpa_fp } }
+ {
+ \c_math_toggle_token
+ \scriptstyle \l_@@_xdots_up_tl
+ \c_math_toggle_token
+ }
}
{ }
{ \pgfusepath { } }
@@ -8631,9 +8669,12 @@ version 2005/12/01 or later.
{ rectangle }
{ north }
{
- \c_math_toggle_token
- \scriptstyle \l_@@_xdots_down_tl
- \c_math_toggle_token
+ \rotatebox { \fp_eval:n { - \l_tmpa_fp } }
+ {
+ \c_math_toggle_token
+ \scriptstyle \l_@@_xdots_down_tl
+ \c_math_toggle_token
+ }
}
{ }
{ \pgfusepath { } }
@@ -9619,7 +9660,7 @@ version 2005/12/01 or later.
% \bigskip
% The command |\@@_color_opacity:w| takes in as argument only the optional
% argument. One may consider that the second argument (the actual definition of
-% the color) is provided by currification.
+% the color) is provided by curryfication.
% \begin{macrocode}
\cs_new_protected:Npn \@@_color_opacity:w [ #1 ]
{
@@ -13851,6 +13892,9 @@ version 2005/12/01 or later.
% The four following token lists correspond to the position of the |\SubMatrix|.
% \begin{macrocode}
\@@_compute_i_j:nn { #2 } { #3 }
+ % added 6.19b
+ \int_compare:nNnT \l_@@_first_i_tl = \l_@@_last_i_tl
+ { \cs_set:Npn \arraystretch { 1 } }
\bool_lazy_or:nnTF
{ \int_compare_p:nNn \l_@@_last_i_tl > \g_@@_row_total_int }
{ \int_compare_p:nNn \l_@@_last_j_tl > \g_@@_col_total_int }
@@ -15105,6 +15149,7 @@ version 2005/12/01 or later.
{
The~available~keys~are~(in~alphabetic~order):~
'color',~
+ 'horizontal-labels',~
'inter',~
'line-style',~
'radius',~
diff --git a/macros/latex/contrib/nicematrix/nicematrix-code.pdf b/macros/latex/contrib/nicematrix/nicematrix-code.pdf
index 923fd4f553..384552b056 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-code.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
index d7c7d18c98..7a0776a2bb 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex
index b27ce64a4e..688e3b032b 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex
@@ -3227,6 +3227,25 @@ $\begin{bNiceMatrix}
0 & & 1
\end{bNiceMatrix}$
+\medskip
+\colorbox{yellow!50}{\textbf{Nouveau 6.20}}\enskip
+Avec la clé |xdots/horizontal-labels|, les labels restent horizontaux.\par\nobreak
+
+\begin{BVerbatim}[baseline=c,boxwidth=10cm]
+$\begin{bNiceMatrix}[xdots/horizontal-labels]
+1 & \hspace*{1cm} & 0 \\[8mm]
+ & ~emphase#\Ddots^{n \text{ fois}}@ & \\
+0 & & 1
+\end{bNiceMatrix}$
+\end{BVerbatim}
+$\begin{bNiceMatrix}[xdots/horizontal-labels]
+1 & \hspace*{1cm} & 0 \\[8mm]
+ & \Ddots^{n \text{ fois}} & \\
+0 & & 1
+\end{bNiceMatrix}$
+
+
+
\subsection{Personnalisation des lignes en pointillés}
\label{customization}
@@ -3237,6 +3256,8 @@ $\begin{bNiceMatrix}
\index{shorten (clé pour les lignes pointillées)}
\index{shorten-end (clé pour les lignes pointillées)}
\index{shorten-start (clé pour les lignes pointillées)}
+\index{horizontal-labels (clé pour les lignes pointillées)}
+
Les lignes pointillées tracées par |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|,
|\Iddots|, |\Hdotsfor| et |\Vdotsfor| (ainsi que par la commande |\line| dans le
@@ -3244,6 +3265,7 @@ Les lignes pointillées tracées par |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|,
par les options suivantes (que l'on met entre crochets après la commande) :
%
\begin{itemize}
+\item |horizontal-labels| ;
\item |color| ;
\item |radius| ;
\item |shorten-start|, |shorten-end| et |shorten| ;
@@ -3257,6 +3279,7 @@ niveau d'un environnement mais elles doivent alors être préfixées par |xdots|
|\Vdots|, etc.), ce qui fait que leurs noms deviennent :
%
\begin{itemize}
+\item |xdots/horizontal-labels| ;
\item |xdots/color| ;
\item |xdots/radius| ;
\item |xdots/shorten-start|, |xdots/shorten-end| et |xdots/shorten| ;
@@ -3266,46 +3289,34 @@ niveau d'un environnement mais elles doivent alors être préfixées par |xdots|
%
Pour la clarté, dans la suite, on utilisera ces noms-là.
-\medskip
-\textbf{L'option xdots/color}\par\nobreak
+\bigskip
+La clé \Definition{xdots/horizontal-labels} demande que les labels (introduits
+par |_| et |^|) restent horizontaux.
-\smallskip
-L'option |xdots/color| indique bien entendu la couleur de la ligne tracée. On
-remarquera néanmoins que les lignes tracées dans les rangées et colonnes
-extérieures (décrites plus loin) bénéficient d'un régime spécial : cf.
+\medskip
+L'option \Definition{xdots/color} indique bien entendu la couleur de la ligne
+tracée. On remarquera néanmoins que les lignes tracées dans les rangées et
+colonnes extérieures (décrites plus loin) bénéficient d'un régime spécial : cf.
p.~\pageref{exterior}.
\medskip
-\textbf{L'option xdots/radius}\par\nobreak
-
-\smallskip
-L'option |radius| correspond au rayon des points circulaires qui sont tracés. La
-valeur initiale est $0.53$~pt.
-
+L'option \Definition{radius} correspond au rayon des points circulaires qui sont
+tracés. La valeur initiale est $0.53$~pt.
\medskip
-\textbf{L'option xdots/shorten}\par\nobreak
-
-\smallskip
-Les clés |xdots/shorten-start| et |xdots/shorten-end| indiquent la marge qui est
-laissée aux deux extrémités de la ligne. La clé |xdots/shorten| fixe les deux
-clés simultanément. La valeur initiale de $0.3$~em (il est conseillé d'utiliser une
-unité de mesure dépendante de la fonte courante).
-
-\smallskip
-Les clés |xdots/shorten-start| et |xdots/shorten-end| ont été introduites dans
-la version~6.10. Les versions précédentes ne proposaient que |xdots/shorten|.
+Les clés \Definition{xdots/shorten-start} et \Definition{xdots/shorten-end}
+indiquent la marge qui est laissée aux deux extrémités de la ligne. La clé
+\Definition{xdots/shorten} fixe les deux clés simultanément. La valeur initiale
+de $0.3$~em (il est conseillé d'utiliser une unité de mesure dépendante de la
+fonte courante).
\medskip
-\textbf{L'option xdots/inter}\par\nobreak
-
-\smallskip
-L'option |xdots/inter| indique la distance entre deux points. La valeur
-initiale est $0.45$~em (il est conseillé d'utiliser une
-unité de mesure dépendante de la fonte courante).
+L'option \Definition{xdots/inter} indique la distance entre deux points. La
+valeur initiale est $0.45$~em (il est conseillé d'utiliser une unité de mesure
+dépendante de la fonte courante).
\medskip
-\textbf{L'option xdots/line-style}\par\nobreak
+\textbf{L'option \Definition{xdots/line-style}}\par\nobreak
\smallskip
Il faut savoir que, par défaut, les lignes de TikZ tracées avec le paramètre
@@ -3942,17 +3953,17 @@ Les commandes |\OverBrace| et |\UnderBrace| acceptent en fait un premier
argument optionnel (entre crochets) pour une liste de couples
\textsl{clé=valeur}. Les clés disponibles sont les suivantes :
\begin{itemize}
-\item |left-shorten| et |right-shorten| qui ne prennent pas de valeur ; quand
+\item \Definition{left-shorten} et \Definition{right-shorten} qui ne prennent pas de valeur ; quand
|left-shorten| est utilisée, l'abscisse de l'extrémité de gauche de l'accolade
est calculée à partir du contenu du sous-tableau concerné alors que, sinon,
c'est la position du filet vertical éventuel qui est utilisée (de même pour
|right-shorten|) ;
-\item |shorten|, qui est la conjonction des clés |left-shorten| et |right-shorten| ;
+\item \Definition{shorten}, qui est la conjonction des clés |left-shorten| et |right-shorten| ;
-\item |yshift|, qui déplace verticalement l'accolade (et son label) ;
+\item \Definition{yshift}, qui déplace verticalement l'accolade (et son label) ;
-\item |color| qui fixe la couleur de l'accolade et du label.
+\item \Definition{color} qui fixe la couleur de l'accolade et du label.
\end{itemize}
\bigskip
@@ -6172,7 +6183,7 @@ $\begin{pNiceArray}{*6c|c}[nullify-dots,last-col,code-for-last-col=\scriptstyle]
L'option |line-style| permet de changer le style des lignes tracées par
|\Ldots|, |\Cdots|, etc. On peut de ce fait tracer des lignes qui ne sont plus
-pointillées.
+pointillées (TikZ doit être chargé).
\index{line-style (clé pour les lignes pointillées)|textit}
@@ -6231,7 +6242,7 @@ On peut même tracer des lignes continues.\footnote{Dans ce document, la
\begin{Verbatim}
\NiceMatrixOptions
{nullify-dots,code-for-first-col = \color{blue},code-for-first-row=\color{blue}}
-$\begin{pNiceMatrix}[first-row,first-col]
+$\begin{pNiceMatrix}[first-row,first-col,xdots/horizontal-labels]
& & \Ldots[line-style={solid,<->},shorten=0pt]^{n \text{ colonnes}} \\
& 1 & 1 & 1 & \Ldots & 1 \\
& 1 & 1 & 1 & & 1 \\
@@ -6246,7 +6257,7 @@ $\begin{pNiceMatrix}[first-row,first-col]
\begin{scope}
\NiceMatrixOptions
{nullify-dots,code-for-first-col = \color{blue},code-for-first-row=\color{blue}}
-\[\begin{pNiceMatrix}[first-row,first-col]
+\[\begin{pNiceMatrix}[first-row,first-col,xdots/horizontal-labels]
& & \Ldots[line-style={solid,<->},shorten=0pt]^{n \text{ colonnes}} \\
& 1 & 1 & 1 & \Ldots & 1 \\
& 1 & 1 & 1 & & 1 \\
diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf
index 9f3a9dfb70..e754fc3aec 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix.tex b/macros/latex/contrib/nicematrix/nicematrix.tex
index f09d282e10..dc565d2160 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix.tex
@@ -17,9 +17,8 @@
\usepackage{tocloft}
\setlength{\cftsubsecnumwidth}{3em} % for the numbers of subsections of the TOC
-% On utilise \MakeShortVerb de shortvrb et pas \DefineShortVerb de fancyvrb
-% car on ne veut pas que le contenu des petits éléments en verbatim soit colorié
-% en gris
+% We use \MakeShortVerb of shortvrb and not \DefineShortVerb of fancyvrb
+% because we don't want small elements in verbatim to be colored in gray
\usepackage{shortvrb}
\MakeShortVerb{\|}
@@ -3151,6 +3150,26 @@ $\begin{bNiceMatrix}
0 & & 1
\end{bNiceMatrix}$
+
+\bigskip
+\colorbox{yellow!50}{\textbf{New 6.20}}\enskip
+With the key |xdots/horizontal-labels|, the labels stay horizontal\par\nobreak
+%
+\medskip
+\begin{BVerbatim}[baseline=c,boxwidth=10cm]
+$\begin{bNiceMatrix}[xdots/horizontal-labels]
+1 & \hspace*{1cm} & 0 \\[8mm]
+ & ~emphase#\Ddots^{n \text{ times}}@ & \\
+0 & & 1
+\end{bNiceMatrix}$
+\end{BVerbatim}
+$\begin{bNiceMatrix}[xdots/horizontal-labels]
+1 & \hspace*{1cm} & 0 \\[8mm]
+ & \Ddots^{n \text{ times}} & \\
+0 & & 1
+\end{bNiceMatrix}$
+
+
\subsection{Customisation of the dotted lines}
\label{customisation}
@@ -3161,12 +3180,14 @@ $\begin{bNiceMatrix}
\index{shorten (key for the dotted rules)}
\index{shorten-end (key for the dotted rules)}
\index{shorten-start (key for the dotted rules)}
+\index{horizontal-labels (key for the dotted rules)}
The dotted lines drawn by |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Iddots|,
|\Hdotsfor| and |\Vdotsfor| (and by the command |\line| in the |\CodeAfter|
which is described p.~\pageref{line-in-code-after}) may be customized by the following
options (specified between square brackets after the command):
\begin{itemize}
+\item |horizontal-labels|;
\item |color|;
\item |radius|;
\item |shorten-start|, |shorten-end| and |shorten|;
@@ -3179,6 +3200,7 @@ These options may also be fixed with |\NiceMatrixOptions|, as options of
must be prefixed by |xdots| (\textsl{xdots} to remind that it works for
|\Cdots|, |\Ldots|, |\Vdots|, etc.), and, thus have for names:
\begin{itemize}
+\item |xdots/horizontal-labels|;
\item |xdots/color|;
\item |xdots/radius|;
\item |xdots/shorten-start|, |xdots/shorten-end| and |xdots/shorten|;
@@ -3188,38 +3210,33 @@ must be prefixed by |xdots| (\textsl{xdots} to remind that it works for
For the clarity of the explanations, we will use those names.
-\bigskip
-\textbf{The option xdots/color}\par\nobreak
-
-\smallskip
-The option |xdots/color| fixes the color or the dotted line. However, one should
-remark that the dotted lines drawn in the exterior rows and columns have a
-special treatment: cf. p.~\pageref{exterior}.
\bigskip
-\textbf{The option xdots/radius}\par\nobreak
-
-The option |radius| fixes the radius of the dots. The initial value is 0.53~pt.
+With the key \Definition{xdots/horizontal-labels}, the labels (introduced by |_|
+and |^|) stay horizontal.
\bigskip
-\textbf{The option xdots/shorten}\par\nobreak
+The option \Definition{xdots/color} fixes the color or the dotted line. However,
+one should remark that the dotted lines drawn in the exterior rows and columns
+have a special treatment: cf. p.~\pageref{exterior}.
-\smallskip
-The keys |xdots/shorten-start| and |xdots/shorten-end| fix the margin at the
-extremities of the line. The key |xdots/shorten| fixes both parameters.
-The initial value is 0.3~em (it is recommanded to use a unit of length
-dependent of the current font).
+\bigskip
+The option \Definition{radius} fixes the radius of the dots. The initial value
+is 0.53~pt.
\bigskip
-\textbf{The option xdots/inter}\par\nobreak
+The keys \Definition{xdots/shorten-start} and \Definition{xdots/shorten-end} fix
+the margin at the extremities of the line. The key |xdots/shorten| fixes both
+parameters. The initial value is 0.3~em (it is recommanded to use a unit of
+length dependent of the current font).
-\smallskip
-The option |xdots/inter| fixes the length between the dots. The initial value
-is 0.45~em (it is recommanded to use a unit of length dependent of the current
-font).
+\bigskip
+The option \Definition{xdots/inter} fixes the length between the dots. The
+initial value is 0.45~em (it is recommanded to use a unit of length dependent of
+the current font).
\bigskip
-\textbf{The option xdots/line-style}\par\nobreak
+\textbf{The option \Definition{xdots/line-style}}\par\nobreak
\smallskip
It should be pointed that, by default, the lines drawn by Tikz with the
@@ -3851,18 +3868,18 @@ In fact, the commands |\OverBrace| and |\UnderBrace| take in an optional
argument (in first position and between square brackets) for a list of
\textsl{key=value} pairs. The available keys are:
\begin{itemize}
-\item |left-shorten| and |right-shorten| which do not take in value; when the
-key |left-shorten| is used, the abscissa of the left extremity of the brace is
-computed with the contents of the cells of the involved sub-array, otherwise,
-the position of the potential vertical rule is used (idem for
-|right-shorten|).
+\item \Definition{left-shorten} and \Definition{right-shorten} which do not take
+in value; when the key |left-shorten| is used, the abscissa of the left
+extremity of the brace is computed with the contents of the cells of the
+involved sub-array, otherwise, the position of the potential vertical rule is
+used (idem for |right-shorten|).
-\item |shorten|, which is the conjunction of the keys |left-shorten| and
-|right-shorten|;
+\item \Definition{shorten}, which is the conjunction of the keys |left-shorten|
+and |right-shorten|;
-\item |yshift|, which shifts vertically the brace (and its label);
+\item \Definition{yshift}, which shifts vertically the brace (and its label);
-\item |color|, which sets the color of the brace (and its label).
+\item \Definition{color}, which sets the color of the brace (and its label).
\end{itemize}
\bigskip
@@ -4077,7 +4094,7 @@ with the following code (the package \pkg{caption} has been loaded in this docum
\begin{NiceTabular}{@{}llc@{}
[
caption = A tabular whose caption has been specified by the key
- \texttt{caption}~emphase#\tabularnote[$\star$]{It's possible to put a tabular note in the caption}! ,
+ \texttt{caption}~emphase#\tabularnote[$\star$]{It's possible to put a tabular note in the caption.}! ,
label = t:tabularnote ,
tabularnote = Some text before the notes. ,
notes/bottomrule
@@ -5381,7 +5398,7 @@ been created with |\SubMatrix\{{2-2}{3-3}\}|).
\index{node@\textbf{Nodes of PGF/Tikz}|)}
-\section{API for the developpers}
+\section{API for the developers}
The package \pkg{nicematrix} provides two variables which are internal but
public\footnote{According to the LaTeX3 conventions,
@@ -5399,7 +5416,7 @@ These variables contain the code of what we have called the ``|code-before|''
(usually specified at the beginning of the environment with the syntax using
the keywords |\CodeBefore| and |\Body|) and the ``|code-after|'' (usually
specified at the end of the environment after the keyword |\CodeAfter|). The
-developper can use them to add code from a cell of the array (the affectation
+developer can use them to add code from a cell of the array (the affectation
must be global, allowing to exit the cell, which is a TeX group).
\medskip
@@ -6074,7 +6091,7 @@ $\begin{pNiceArray}{*6c|c}[nullify-dots,last-col,code-for-last-col=\scriptstyle]
The option |line-style| controls the style of the lines drawn by |\Ldots|,
|\Cdots|, etc. Thus, it's possible with these commands to draw lines which are
-not longer dotted.
+not longer dotted (TikZ should be loaded).
\index{line-style (key for the dotted rules)|textit}
@@ -6132,7 +6149,7 @@ has been loaded, which impacts the shape of the arrow tips.}
\begin{Verbatim}
\NiceMatrixOptions
{nullify-dots,code-for-first-col = \color{blue},code-for-first-row=\color{blue}}
-$\begin{pNiceMatrix}[first-row,first-col]
+$\begin{pNiceMatrix}[first-row,first-col,xdots/horizontal-labels]
& & \Ldots[line-style={solid,<->},shorten=0pt]^{n \text{ columns}} \\
& 1 & 1 & 1 & \Ldots & 1 \\
& 1 & 1 & 1 & & 1 \\
@@ -6146,7 +6163,7 @@ $\begin{pNiceMatrix}[first-row,first-col]
\begin{scope}
\NiceMatrixOptions
{nullify-dots,code-for-first-col = \color{blue},code-for-first-row=\color{blue}}
-\[\begin{pNiceMatrix}[first-row,first-col]
+\[\begin{pNiceMatrix}[first-row,first-col,xdots/horizontal-labels]
& & \Ldots[line-style={solid,<->},shorten=0pt]^{n \text{ columns}} \\
& 1 & 1 & 1 & \Ldots & 1 \\
& 1 & 1 & 1 & & 1 \\
@@ -6860,6 +6877,10 @@ The successive versions of the file |nicematrix.sty| provided by TeXLive are ava
\nolinkurl{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}
}
+\subsection*{Changes between version 6.19 and 6.20}
+
+New key |xdots/horizontal-labels|.
+
\subsection*{Changes between version 6.18 and 6.19}
The command |\tabularnote| now supports an optional argument (between square
diff --git a/macros/latex/contrib/starray/README.md b/macros/latex/contrib/starray/README.md
index 3e5aec2fea..e00db9e4a1 100644
--- a/macros/latex/contrib/starray/README.md
+++ b/macros/latex/contrib/starray/README.md
@@ -73,7 +73,10 @@ The Current Maintainer of this work is Alceu Frigeri
## Changelog
-* Version 1.2 (this)
+* Version 1.3 (this)
+ - Fixed issue #4, where (in some instances) _set_from_keyval could render a quark loop.
+
+* Version 1.2
- Issues #3
- added expandable versions of some commands (see manual)
- documentation
diff --git a/macros/latex/contrib/starray/doc/starray.pdf b/macros/latex/contrib/starray/doc/starray.pdf
index 5fef74c731..9523653f0a 100644
--- a/macros/latex/contrib/starray/doc/starray.pdf
+++ b/macros/latex/contrib/starray/doc/starray.pdf
Binary files differ
diff --git a/macros/latex/contrib/starray/doc/starray.tex b/macros/latex/contrib/starray/doc/starray.tex
index d52e6ec101..5837d2308f 100644
--- a/macros/latex/contrib/starray/doc/starray.tex
+++ b/macros/latex/contrib/starray/doc/starray.tex
@@ -15,7 +15,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.2 (2023/05/20)
+%% This is version 1.3 (2023/06/04)
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/starray
@@ -611,7 +611,7 @@ This can be used after any command which 'parses a term', for instance \tsobj{\s
The \tsmacro{\starray_if_in:nnTF}{starray-ref,key,\ldots,\ldots} tests if a given \tsobj[marg]{key} is present, whilst \tsmacro{\starray_term_syntax:nTF}{starray-ref,if-true,if-false} just verifies if the \tsobj[marg]{starray-ref} syntax is valid or not, branching accordly.
\end{codedescribe}
-\begin{codedescribe}{\starray_term_syntax:n}
+\begin{codedescribe}[code,new=2023/05/20]{\starray_term_syntax:n}
\begin{codesyntax}%
\tsmacro{\starray_term_syntax:n}{starray-ref}
\end{codesyntax}
diff --git a/macros/latex/contrib/starray/latex/starray.sty b/macros/latex/contrib/starray/latex/starray.sty
index a475c3d098..0bfe015ab2 100644
--- a/macros/latex/contrib/starray/latex/starray.sty
+++ b/macros/latex/contrib/starray/latex/starray.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.2 (2023/05/20)
+%% This is version 1.3 (2023/06/04)
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/starray
@@ -24,8 +24,8 @@
\ProvidesExplPackage
{starray}
- {2023/05/20}
- {1.2}
+ {2023/06/04}
+ {1.3}
{A structured array/hash of properties}
%%%%%%%
@@ -38,8 +38,8 @@
{
name .code:n = starray ,
prefix .code:n = starray ,
- date .code:n = 2023/05/20 ,
- version .code:n = 1.2 ,
+ date .code:n = 2023/06/04,
+ version .code:n = 1.3 ,
description .code:n = A~structured~array/hash~of~properties
}
\cs_if_exist:NF \__codedesc_pkg_info:nn
@@ -68,51 +68,61 @@
\keys_define:nn { starray }
-{
- prefix .tl_set:N = \l__starray_prefix_tl ,
- prefix .value_required:n = true ,
- prefix .initial:n = l__starray_ ,
- prefix .usage:n = load ,
-
- msg-err .choice: ,
- msg-err / none .code:n = {
- % \msg_redirect_module:nnn { starray } { warning } { none }
- },
- msg-err / default .code:n = {} ,
- msg-err / strict .code:n = {
+ {
+ prefix .tl_set:N = \l__starray_prefix_tl ,
+ prefix .value_required:n = true ,
+ prefix .initial:n = l__starray_ ,
+ prefix .usage:n = load ,
+
+ msg-err .choice: ,
+ msg-err / none .code:n = { },
+ msg-err / default .code:n = {} ,
+ msg-err / strict .code:n =
+ {
\msg_redirect_module:nnn { starray / strict } { warning } { error }
- },
- msg-err / syntax .code:n = {
+ } ,
+ msg-err / syntax .code:n =
+ {
\msg_redirect_module:nnn { starray / strict } { warning } { error }
\msg_redirect_module:nnn { starray / syntax } { warning } { error }
} ,
- msg-err / reference .code:n = {
+ msg-err / reference .code:n =
+ {
\msg_redirect_module:nnn { starray / strict } { warning } { error }
\msg_redirect_module:nnn { starray / syntax } { warning } { error }
\msg_redirect_module:nnn { starray / reference } { warning } { error }
} ,
- msg-err / all .code:n = \msg_redirect_module:nnn { starray } { warning } { error } ,
- msg-err . usage:n = load ,
-
- msg-supress .choice: ,
- msg-supress / none .code:n = {} ,
- msg-supress / reference .code:n = {
- \msg_redirect_module:nnn { starray / reference } { warning } { none }
- },
- msg-supress / syntax .code:n = {
- \msg_redirect_module:nnn { starray / strict } { warning } { none }
- \msg_redirect_module:nnn { starray / syntax } { warning } { none }
- } ,
- msg-supress / strict .code:n = {
- \msg_redirect_module:nnn { starray / strict } { warning } { none }
- \msg_redirect_module:nnn { starray / syntax } { warning } { none }
- \msg_redirect_module:nnn { starray / reference } { warning } { none }
- } ,
- msg-supress / all .code:n = \msg_redirect_module:nnn { starray } { warning } { none } ,
- msg-supress . usage:n = load ,
-
-
-}
+ msg-err / all .code:n =
+ {
+ \msg_redirect_module:nnn { starray } { warning } { error }
+ } ,
+ msg-err . usage:n = load ,
+
+ msg-supress .choice: ,
+ msg-supress / none .code:n = {} ,
+ msg-supress / reference .code:n =
+ {
+ \msg_redirect_module:nnn { starray / reference } { warning } { none }
+ } ,
+ msg-supress / syntax .code:n =
+ {
+ \msg_redirect_module:nnn { starray / strict } { warning } { none }
+ \msg_redirect_module:nnn { starray / syntax } { warning } { none }
+ } ,
+ msg-supress / strict .code:n =
+ {
+ \msg_redirect_module:nnn { starray / strict } { warning } { none }
+ \msg_redirect_module:nnn { starray / syntax } { warning } { none }
+ \msg_redirect_module:nnn { starray / reference } { warning } { none }
+ } ,
+ msg-supress / all .code:n =
+ {
+ \msg_redirect_module:nnn { starray } { warning } { none }
+ } ,
+ msg-supress . usage:n = load ,
+
+
+ }
\ProcessKeyOptions [ starray ]
@@ -363,7 +373,7 @@
%%%% parser related ones
%%%%
\bool_const:Nn \c__starray_no_idx_ending_bool \c_true_bool
-\bool_const:Nn \c__starray_idx_ending_bool \c_false_bool
+\bool_const:Nn \c__starray_idx_ending_bool \c_false_bool
%%%%
@@ -371,9 +381,9 @@
%%%%
\tl_new:N \l__starray_parsed_tl
\tl_new:N \l__starray_parsed_ref_tl
+\tl_new:N \l__starray_parsed_ref_no_idx_ending_tl
\tl_new:N \l__starray_parsed_base_ref_tl
\tl_new:N \l__starray_parsed_root_ref_tl
-\tl_new:N \l__starray_parsed_ref_no_idx_ending_tl
\tl_new:N \l__starray_parsing_term_tl
@@ -452,7 +462,10 @@
%%%%
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
-
+%%%
+%%% TODO: to add another property list mapping hash/idx -> iter
+%%% intend: \__starray_set_iter_hash !
+%%%
% needs protection.
\cs_new_protected:Npn \__starray_base_new:nn #1#2
{
@@ -489,6 +502,11 @@
{ \l__starray_prefix_tl #2 _base_prop }
{ idx_hash }
\c_empty_prop
+
+ \prop_gput:cnV
+ { \l__starray_prefix_tl #2 _base_prop }
+ { iter_hash }
+ \c_empty_prop
}
\cs_generate_variant:Nn \__starray_base_new:nn { ee }
@@ -843,7 +861,6 @@
\cs_new_protected:Npn \starray_def_from_keyval:nn #1#2
{
-% \bool_set_true:N \l__starray_rtn_bool
\__starray_if_valid:nTF { \l__starray_prefix_tl #1 _def_prop}
{
\keyval_parse:nnn
@@ -882,6 +899,10 @@
%%%%
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
+%%%
+%%% TODO: to add {_iter_from_hash} property {hash} -> iter (integer!)
+%%%
+%%%
\cs_new_protected:Npn \__starray_new_term:nn #1#2
{
@@ -895,20 +916,30 @@
% idx_hash Update.
\prop_get:cnN {\l__starray_prefix_tl #1 _base_prop} {idx_hash} \l_tmpa_prop
+ \prop_get:cnN {\l__starray_prefix_tl #1 _base_prop} {iter_hash} \l_tmpb_prop
\prop_put:Nee \l_tmpa_prop
{ \int_use:N \prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt} }
{ \int_to_Alph:e { \prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt} } }
+ \prop_put:Nee \l_tmpb_prop
+ { \int_use:N \prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt} }
+ { \int_use:N \prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt} }
+
\tl_if_blank:nF {#2}
{
\prop_put:Nee \l_tmpa_prop
{ #2 }
{ \int_to_Alph:e { \prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt} } }
+ \prop_put:Nee \l_tmpb_prop
+ { #2 }
+ { \int_use:N \prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt} }
}
\prop_gput:cnV {\l__starray_prefix_tl #1 _base_prop} {idx_hash} \l_tmpa_prop
+ \prop_gput:cnV {\l__starray_prefix_tl #1 _base_prop} {iter_hash} \l_tmpb_prop
+
% creating the 'new property list' (aka. term)
\tl_set:Ne \l_tmpa_tl
{ \int_to_Alph:e { \prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt} } }
@@ -980,13 +1011,13 @@
\cs_new_protected:Npn \__starray_incr_iter:n #1
{
\int_compare:nNnTF
- {\prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {iter}} <
- {\prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt}}
+ {\prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {iter}} <
+ {\prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {cnt}}
{
\int_gincr:N { \prop_item:cn {\l__starray_prefix_tl #1 _base_prop} {iter} }
}
{
- % TODO: should it be a potential 'warning' ???
+ % TODO: validade _rtn_bool for end user???
\bool_set_false:N \l__starray_rtn_bool
}
}
@@ -1105,6 +1136,7 @@
{\prg_return_false:}
}
{
+ \bool_set_false:N \l__starray_rtn_bool
\seq_clear:N \l__starray_msg_seq
\prg_return_false:
}
@@ -1158,7 +1190,7 @@
\cs_new_protected:Npn \starray_next_iter:n #1
{
-% \bool_set_true:N \l__starray_rtn_bool
+ \bool_set_true:N \l__starray_rtn_bool
\seq_clear:N \l__starray_msg_seq
\__starray_parser:nnTF {\c__starray_no_idx_ending_bool}{#1}
@@ -1168,7 +1200,7 @@
}
{
\__starray_msg_dispatch:
-% \bool_set_false:N \l__starray_rtn_bool
+ \bool_set_false:N \l__starray_rtn_bool
\msg_warning:nnnn {starray} {syntax / iter} {iter:5} {#1}
} % returns nothing by default
}
@@ -1188,7 +1220,10 @@
{\prg_return_true:}
{\prg_return_false:}
}
- { \prg_return_false: }
+ {
+ \bool_set_false:N \l__starray_rtn_bool
+ \prg_return_false:
+ }
}
%%%%%%%%%%%%%%%
@@ -1564,12 +1599,12 @@
-\cs_new_protected:Npn \__starray_set_from_keyval_parse:nnnn #1#2#3#4
+\cs_new:Npn \__starray_set_from_keyval_parse:nnnn #1#2#3#4
{
\__starray_set_prop:nnn {#3}{#4}{}
}
-\cs_generate_variant:Nn \__starray_set_from_keyval_parse:nnnn {nnen}
+\cs_generate_variant:Nn \__starray_set_from_keyval_parse:nnnn {neen}
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
@@ -1581,21 +1616,41 @@
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
-
-\cs_new_protected:Npn \__starray_set_from_keyval_parse:nnnnn #1#2#3#4#5
+%%% what a mess. :(
+%%% #1 => tmp series A, AA, AAA
+%%% #2 => no_idx_ending ref
+%%% #3 => idx_ending ref !!!
+%%% #4 => prop/struct(key from keyval)
+%%% #5 => val/keyval (val from keyval)
+%%%
+\cs_new:Npn \__starray_set_from_keyval_parse:nnnnn #1#2#3#4#5
{
\tl_clear:c {l__starray_tmp #1 _tl}
+
\__starray_set_parse_begin:wTF {#1}#4 [ \q_nil \q_stop
{
\tl_if_blank:eTF {\tl_use:c{l__starray_tmp #1 :A_tl}}
{
+ %
+ % what should be here:
+ % get #2_base_prop -> _def_prop -> @st_seq
+ % _base_prop comes from (parser) _no_idx_ending_tl
+ %
+ % from there #3.<#4> => {}{...} 'next #2'
+ % #3.<#4>_[<#4>] (idx construct from #4) 'next #3'
+ %
+ \prop_get:cnc
+ {\l__starray_prefix_tl #2 _base_prop}
+ {def_ref}
+ {l__starray_tmp #1 _def_prop}
+
\prop_get:cnc
- {\l__starray_prefix_tl #2 _def_prop}
+ {\l__starray_prefix_tl \tl_use:c {l__starray_tmp #1 _def_prop} _def_prop}
{@st_seq}
{l__starray_tmp #1 _seq}
-
+
\seq_if_in:cnTF {l__starray_tmp #1 _seq}{#4}
- {
+ {
\prop_get:cnc
{ \l__starray_prefix_tl #3 .#4 _base_prop }
{ idx_hash }
@@ -1614,17 +1669,18 @@
\tl_set:ce
{ l__starray_tmp #1 _tl }
{ #3.#4 _ \int_to_Alph:e {\int_use:c {l__starray_tmp #1 _int}} }
+
\keyval_parse:nnn
{
- \__starray_set_from_keyval_parse:nnen
+ \__starray_set_from_keyval_parse:neen
{ #1 A }
- { #2.#4 }
+ { #3.#4 }
{ \tl_use:c { l__starray_tmp #1 _tl } }
}
{
- \__starray_set_from_keyval_parse:nnenn
+ \__starray_set_from_keyval_parse:neenn
{ #1 A }
- { #2.#4 }
+ { #3.#4 }
{ \tl_use:c { l__starray_tmp #1 _tl } }
}
{ #5 }
@@ -1636,10 +1692,15 @@
}
}
{
+ \prop_get:cnc
+ {\l__starray_prefix_tl #2 _base_prop}
+ {def_ref}
+ {l__starray_tmp #1 _def_prop}
+
\prop_get:cnc
- { \l__starray_prefix_tl #2 _def_prop }
- { @st_seq }
- { l__starray_tmp #1 _seq }
+ {\l__starray_prefix_tl \tl_use:c {l__starray_tmp #1 _def_prop} _def_prop}
+ {@st_seq}
+ {l__starray_tmp #1 _seq}
\seq_if_in:ceTF
{ l__starray_tmp #1 _seq } { \tl_use:c{l__starray_tmp #1 :B_tl} }
@@ -1656,20 +1717,20 @@
{ l__starray_tmp #1 _hash_prop }
{ \tl_use:c{ l__starray_tmp #1 :A_tl } }
}
- \tl_put_left:cn { l__starray_tmp #1 :B_tl } { #2 . }
+ \tl_put_left:cn { l__starray_tmp #1 :B_tl } { #3 . }
\prop_if_in:ceTF
{ l__starray_tmp #1 _hash_prop }
{ \tl_use:c{l__starray_tmp #1 :A_tl}}
{
\keyval_parse:nnn
{
- \__starray_set_from_keyval_parse:nnen
+ \__starray_set_from_keyval_parse:neen
{ #1 A }
{ \tl_use:c{l__starray_tmp #1 :B_tl} }
{ \tl_use:c { l__starray_tmp #1 _idx_tl } }
}
{
- \__starray_set_from_keyval_parse:nnenn
+ \__starray_set_from_keyval_parse:neenn
{ #1 A }
{ \tl_use:c{l__starray_tmp #1 :B_tl} }
{ \tl_use:c { l__starray_tmp #1 _idx_tl } }
@@ -1697,7 +1758,7 @@
}
}
-\cs_generate_variant:Nn \__starray_set_from_keyval_parse:nnnnn {nnenn}
+\cs_generate_variant:Nn \__starray_set_from_keyval_parse:nnnnn {neenn}
%%%%%%%%%%%%%%%
@@ -1706,15 +1767,20 @@
%%%%
%%%%%%%%%%%%%%%
+\tl_new:N \l__starray_from_keyval_orgref_tl
\cs_new_protected:Npn \__starray_set_from_keyval:nn #1#2
{
\bool_set_true:N \l__starray_rtn_bool
+
+ %%% just in case, for msg_err messages
+ \tl_set:Nn \l__starray_from_keyval_orgref_tl {#1}
+
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
{
\keyval_parse:nnn
- {\__starray_set_from_keyval_parse:nnen {A}{#1}{\l__starray_parsed_ref_tl}}
- {\__starray_set_from_keyval_parse:nnenn {A}{#1}{\l__starray_parsed_ref_tl}}
+ {\__starray_set_from_keyval_parse:neen {A}{\l__starray_parsed_ref_no_idx_ending_tl}{\l__starray_parsed_ref_tl}}
+ {\__starray_set_from_keyval_parse:neenn {A}{\l__starray_parsed_ref_no_idx_ending_tl}{\l__starray_parsed_ref_tl}}
{ #2 }
\bool_if:NF \l__starray_rtn_bool
{ \__starray_msg_dispatch: }
@@ -1745,11 +1811,15 @@
\cs_new_protected:Npn \__starray_set_from_keyvalTF:nn #1#2
{
\bool_set_true:N \l__starray_rtn_bool
+
+ %%% just in case, for msg_err messages
+ \tl_set:Nn \l__starray_from_keyval_orgref_tl {#1}
+
\__starray_parser:nnTF {\c__starray_idx_ending_bool}{#1}
{
\keyval_parse:nnn
- {\__starray_set_from_keyval_parse:nnen {A}{#1}{\l__starray_parsed_ref_tl}}
- {\__starray_set_from_keyval_parse:nnenn {A}{#1}{\l__starray_parsed_ref_tl}}
+ {\__starray_set_from_keyval_parse:neen {A}{\l__starray_parsed_ref_no_idx_ending_tl}{\l__starray_parsed_ref_tl}}
+ {\__starray_set_from_keyval_parse:neenn {A}{\l__starray_parsed_ref_no_idx_ending_tl}{\l__starray_parsed_ref_tl}}
{ #2 }
\bool_if:NTF \l__starray_rtn_bool
{\prg_return_true:}
@@ -1962,6 +2032,7 @@
%%%%
%%%% parser 'true' returns:
%%%% \l__starray_parsed_ref_tl
+%%%% \l__starray_parsed_ref_no_idx_ending_tl
%%%% \l__starray_parsed_base_ref_tl
%%%% \l__starray_parsed_root_ref_tl
%%%% parser 'false' returns:
@@ -1977,6 +2048,7 @@
\tl_clear:N \l__starray_parsed_tl
\tl_clear:N \l__starray_parsed_ref_tl
+ \tl_clear:N \l__starray_parsed_ref_no_idx_ending_tl
\tl_clear:N \l__starray_parsed_base_ref_tl
\tl_clear:N \l__starray_parsed_root_ref_tl