diff options
author | Norbert Preining <norbert@preining.info> | 2022-05-31 03:04:25 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-05-31 03:04:25 +0000 |
commit | 3edd04afa0bdf4e328d976fe85603e2421e36d2a (patch) | |
tree | 772b169a412a8479c33e330349b9e5508bf135ca /macros/latex | |
parent | e86bbda34fc68baf4c550857dde06eb51a304c0d (diff) |
CTAN sync 202205310304
Diffstat (limited to 'macros/latex')
129 files changed, 799 insertions, 360 deletions
diff --git a/macros/latex/contrib/aomart/README b/macros/latex/contrib/aomart/README index 2fa8715ea8..4bdab51407 100644 --- a/macros/latex/contrib/aomart/README +++ b/macros/latex/contrib/aomart/README @@ -1,12 +1,18 @@ LaTeX Class for The Annals of Mathematics Boris Veytsman - Version 1.25 + Version 1.27 This package provides the class for typesetting articles for The Annals of Mathematics, http://annals.princeton.edu/. Changes: + Version 1.27 + New command: \funding + + Version 1.26 + Interface for contributors + Version 1.25 New command: \fullpageref diff --git a/macros/latex/contrib/aomart/aomart.dtx b/macros/latex/contrib/aomart/aomart.dtx index f5e7e0d025..0af4820992 100644 --- a/macros/latex/contrib/aomart/aomart.dtx +++ b/macros/latex/contrib/aomart/aomart.dtx @@ -1,7 +1,7 @@ % \iffalse -% $Id: aomart.dtx,v 1.78 2021/04/11 00:14:37 boris Exp $ +% $Id: aomart.dtx,v 1.80 2022/05/01 03:07:24 boris Exp $ % -% Copyright 2010-2021, Princeton University (Mathematics Department) +% Copyright 2010-2022, Princeton University (Mathematics Department) % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either % version 1.3 of this license or (at your option) any @@ -23,7 +23,7 @@ % public domain. % % \fi -% \CheckSum{1536} +% \CheckSum{0} % % %% \CharacterTable @@ -66,7 +66,7 @@ % \GetFileInfo{aomart.dtx} % \newcommand{\progname}[1]{\textsf{#1}} % \title{\LaTeX{} Class for The \emph{Annals of -% Mathematics}\thanks{\copyright 2010--2021, Princeton University +% Mathematics}\thanks{\copyright 2010--2022, Princeton University % (Mathematics Department)}} % \author{Boris Veytsman\thanks{% % \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}}, @@ -341,6 +341,27 @@ % the author for the online version of the journal and various % databases. % +% \DescribeMacro{\contrib}% +% Sometimes there are contributors to a paper, who are not full authors: +% the person may write an appendix or other part of the paper. You +% can use the command \cs{contrib}\oarg{role}\marg{name} for +% indicating these persons. Note that \oarg{role} argument has a +% special meaning, indicating that the role of this person is the same +% as for the previous contributor, for example, +% \begin{verbatim} +% \contrib[with Appendix~A by]{A. U. Thor} +% \givenname{Alexandra}\surname{Thor} +% \contrib{A. N. Other} +% \givenname{Antony N.}\surname{Other} +% \contrib[with Appendix~B by]{Y. Etanother} +% \givenname{Yakov}\surname{Etanother} +% \end{verbatim} +% In this example Appendix~A is written by A.~U.~Thor and +% A. N. Another, and Appendix~B is written by Y.~Etanother. +% Commands \cs{orcid}, \cs{email}, \cs{address}, \cs{fulladdress}, +% \cs{givenname} and \cs{surname} can be used for contributors in the +% same way they are used for authors. +% % \DescribeMacro{\shortauthors} % In some cases the authors list may be too long for the running head, % even if the abbreviated forms are used for each author. In this @@ -351,7 +372,7 @@ % \begin{verbatim} % \renewcommand{\shortauthors}{A.~Smith et al} % \end{verbatim} -% +% % % \DescribeMacro{\thanks} % Like \progname{amsart} (and unlike standard \LaTeX{}), @@ -683,6 +704,32 @@ % discussion of \LaTeX{} graphics possibilities). % % +%\subsection{Funding} +%\label{sec:ug_funding} +% +% \DescribeMacro{\funding}% +% There is a special command for showing the support for the paper, +% \cs{funding}\oarg{text}\marg{sponsor}\marg{grantid}. Normally it +% prints the name of the sponsor and in parentheses the id of the +% grant, if it is not empty. However, you can override this using the +% optional argument of the command. For example, the following text +% \begin{verbatim} +% AB is grateful to \funding{NASA}{123GH456}, while MJ was supported +% by \funding{NIH}{}. Both authors acknowledge \funding[the generous +% help of other agencies]{Department of Defense}{Special project +% grant}. +% \end{verbatim} +% will expand to +% \begin{verbatim} +% % AB is grateful to NASA (123GH456), while MJ was supported +% by NIH. Both authors acknowledge the generous +% help of other agencies. +% \end{verbatim} +% +% The command will save the information about the grants in the form +% suitable for automatic processing. +% +% %\subsection{Bibliography} %\label{sec:biblio} % @@ -796,7 +843,7 @@ \ProvidesFile{aomart.dtx} %</gobble> %<class>\ProvidesClass{aomart} -[2021/04/10 v1.25 Typesetting articles for the Annals of Mathematics] +[2022/04/30 v1.27 Typesetting articles for the Annals of Mathematics] % \end{macrocode} % % @@ -1287,6 +1334,7 @@ % \begin{macrocode} \@onlypreamble{\title} \@onlypreamble{\author} +\@onlypreamble{\contrib} \@onlypreamble{\email} \@onlypreamble{\address} \@onlypreamble{\curraddr} @@ -1371,6 +1419,100 @@ % % \end{macro} % +% \begin{macro}{\@currentcontribution} +% \changes{v1.26}{2022/01/18}{Introduced macro} +% The current contribution +% \begin{macrocode} +\def\@currentcontribution{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@currentcontributors} +% \changes{v1.26}{2022/01/18}{Introduced macro} +% The current contributors with the same contribution +% \begin{macrocode} +\def\@currentcontributors{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\contribs} +% \changes{v1.26}{2022/01/18}{Introduced macro} +% All contributors to the paper +% \begin{macrocode} +\def\contribs{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@startcontribgroup} +% \changes{v1.26}{2022/01/19}{Introduced macro} +% A switch whether the new group is started +% \begin{macrocode} +\newif\if@startcontribgroup +\@startcontribgroupfalse +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@processcurrentcontribgroup} +% \changes{v1.26}{2022/01/19}{Introduced macro} +% Add current contributors to \cs{contributors} +% \begin{macrocode} +\def\@processcurrentcontribgroup{% + \ifx\@currentcontributors\@empty\else + \def\@@and{{\upshape \@aom@and}}% + \author@andify\@currentcontributors + \ifx\contribs\@empty\else + \g@addto@macro\contribs{\and}% + \fi + \expandafter\g@addto@macro\expandafter\contribs + \expandafter{\@currentcontribution}% + \g@addto@macro\contribs{\space}% + \expandafter\g@addto@macro\expandafter\contribs + \expandafter{\@currentcontributors}% + \fi +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\contrib} +% \changes{v1.26}{2022/01/19}{Redefined amsart macro} +% The processing of contributors. Contributors are separated into +% groups with the same contribution. Within the group one can omit +% the contribution. +% \begin{macrocode} +\renewcommand{\contrib}[2][]{% + \def\@tempa{#1}% + \@startcontribgrouptrue + \ifx\@tempa\@empty\relax + \ifx\@currentcontribution\@empty\relax + \ClassError{aomart}{You must define contribution for + contributors}{The first \contrib command must have the + optional argument indicating the contribution}% + \else + \@startcontribgroupfalse + \fi + \fi + \ifx\@currentcontribution\@tempa\relax + \@startcontribgroupfalse + \fi + \if@startcontribgroup + \@processcurrentcontribgroup + \gdef\@currentcontribution{#1}% + \gdef\@currentcontributors{#2}% + \else + \g@addto@macro\@currentcontributors{\and#2}% + \fi + \g@addto@macro\@names{\and contributor=#2;}% + \g@addto@macro\@names{role=}% + \expandafter\g@addto@macro\expandafter% + \@names\expandafter{\@currentcontribution}% + \g@addto@macro\@names{;}% +} +% \end{macrocode} +% +% \end{macro} +% % \begin{macro}{\email} % \changes{v1.16}{2016/12/03}{Redefined amsart definition} % We change amsart macro to output metadata @@ -1710,6 +1852,8 @@ % \changes{v1.20}{2017/05/09}{Make primary and secondary subjects % separated} % \changes{v1.21}{2017/12/13}{Added main language} +% \changes{v1.27}{2022/04/30}{Keep the .rpi file open till the end of +% document} % This writes the information about the paper into the file % |jobname.rpi|. Note that hyperref makes our life a little bit % more complex @@ -1769,7 +1913,7 @@ {\@percentchar abstract=\@aom@abstract}% \protected@write\@mainrpi{}% {\@percentchar articlelanguage=\languagename}% - \closeout\@mainrpi + \AtEndDocument{\closeout\@mainrpi}% \fi \egroup} % \end{macrocode} @@ -1816,17 +1960,17 @@ \centering\footnotesize \@topsep30\p@\relax \advance\@topsep by -\baselineskip \item\relax - \def\@@and{{\upshape \@aom@and}} + \def\@@and{{\upshape \@aom@and}}% \author@andify\authors \ifpdf \hypersetup{pdfauthor=\authors}% \fi \def\\{\protect\linebreak}% \small \@aom@by{} \scshape\authors% + \@processcurrentcontribgroup \ifx\@empty\contribs \else ,\penalty-3 \space \@setcontribs - \@closetoccontribs \fi \endtrivlist \endgroup @@ -1838,8 +1982,9 @@ % Contributors are set up in the same way as authors: % \begin{macrocode} \def\@setcontribs{% - \@xcontribs - {\scshape \xcontribs}% + \def\@@and{{\upshape \@aom@and}}% + \author@andify\contribs + \contribs } % \end{macrocode} % \end{macro} @@ -2374,6 +2519,25 @@ % % \end{macro} % +% \begin{macro}{\funding} +% \changes{v1.27}{2022/04/30}{Added macro} +% The macro to print grants. It adds to the rpi file the information +% about grants +% \begin{macrocode} +\newcommand\funding[3][]{% + \protected@write\@mainrpi{}% + {\@percentchar sponsor=#2, grantid=#3}% + \def\@tempa{#1}\relax% + \ifx\@tempa\@empty\relax + \def\@tempb{#3}% + #2% + \ifx\@tempb\@empty\relax\else\ (grant~#3)\fi + \else + #1 + \fi} +% \end{macrocode} +% +% \end{macro} % %\subsection{End of Class} %\label{end} diff --git a/macros/latex/contrib/aomart/aomart.pdf b/macros/latex/contrib/aomart/aomart.pdf Binary files differindex 1ae47991e8..ec0a495c5d 100644 --- a/macros/latex/contrib/aomart/aomart.pdf +++ b/macros/latex/contrib/aomart/aomart.pdf diff --git a/macros/latex/contrib/aomart/aomfrench.pdf b/macros/latex/contrib/aomart/aomfrench.pdf Binary files differindex 2412c92901..91b285a449 100644 --- a/macros/latex/contrib/aomart/aomfrench.pdf +++ b/macros/latex/contrib/aomart/aomfrench.pdf diff --git a/macros/latex/contrib/aomart/aomsample.pdf b/macros/latex/contrib/aomart/aomsample.pdf Binary files differindex 1faf78a4e9..9b17f576a9 100644 --- a/macros/latex/contrib/aomart/aomsample.pdf +++ b/macros/latex/contrib/aomart/aomsample.pdf diff --git a/macros/latex/contrib/aomart/aomsample.tex b/macros/latex/contrib/aomart/aomsample.tex index 2ecba3e18d..f827924670 100644 --- a/macros/latex/contrib/aomart/aomsample.tex +++ b/macros/latex/contrib/aomart/aomsample.tex @@ -113,7 +113,7 @@ Providence, Rhode Island} \author{Boris Veytsman} \address{George Mason University\\ Fairfax, Virginia} -\fulladdress{Computational Materials Science Center, MS 6A2\\ +\fulladdress{School of Systems Biology\\ George Mason University\\ Fairfax, VA 22030} \email{borisv@lk.net} @@ -122,6 +122,17 @@ Fairfax, VA 22030} \surname{Veytsman} \copyrightyear{2008--2020} \copyrightnote{\textcopyright~2008--2020 Boris Veytsman} +\contrib[with appendix by]{Frodo Baggins} +\givenname{Frodo} +\surname{Baggins} +\contrib{Bilbo Baggins} +\givenname{Bilbo} +\surname{Baggins} +\contrib[with afterword by]{Bilbo Baggins} +\givenname{Bilbo} +\surname{Baggins} +\address{The Unseen Univeresity} + \thanks{The class was commissioned by Annals of Mathematics} \keyword{Hamiltonian paths} @@ -1732,6 +1743,13 @@ and now in \cn{Large} size: \]} \end{verbatim} +\subsection{Acknowledgements} +\label{sec:acks} + +The authors are grateful to \funding{NASA}{123456} and +\funding{NIH}{}. They acknowledge \funding[the generous help of other +agencies]{Department of Defense}{Special project Secret Defense}. + \bibliography{aomsample} \bibliographystyle{aomplain} diff --git a/macros/latex/contrib/aomart/aomsample1.pdf b/macros/latex/contrib/aomart/aomsample1.pdf Binary files differindex da11f5c574..c8a115f533 100644 --- a/macros/latex/contrib/aomart/aomsample1.pdf +++ b/macros/latex/contrib/aomart/aomsample1.pdf diff --git a/macros/latex/contrib/aomart/aomsample1.tex b/macros/latex/contrib/aomart/aomsample1.tex index 30a52e5691..920c6971ef 100644 --- a/macros/latex/contrib/aomart/aomsample1.tex +++ b/macros/latex/contrib/aomart/aomsample1.tex @@ -113,7 +113,7 @@ Providence, Rhode Island} \author{Boris Veytsman} \address{George Mason University\\ Fairfax, Virginia} -\fulladdress{Computational Materials Science Center, MS 6A2\\ +\fulladdress{School of Systems Biology\\ George Mason University\\ Fairfax, VA 22030} \email{borisv@lk.net} @@ -122,6 +122,17 @@ Fairfax, VA 22030} \surname{Veytsman} \copyrightyear{2008--2020} \copyrightnote{\textcopyright~2008--2020 Boris Veytsman} +\contrib[with appendix by]{Frodo Baggins} +\givenname{Frodo} +\surname{Baggins} +\contrib{Bilbo Baggins} +\givenname{Bilbo} +\surname{Baggins} +\contrib[with afterword by]{Bilbo Baggins} +\givenname{Bilbo} +\surname{Baggins} +\address{The Unseen Univeresity} + \thanks{The class was commissioned by Annals of Mathematics} \keyword{Hamiltonian paths} @@ -1731,6 +1742,13 @@ and now in \cn{Large} size: \]} \end{verbatim} +\subsection{Acknowledgements} +\label{sec:acks} + +The authors are grateful to \funding{NASA}{123456} and +\funding{NIH}{}. They acknowledge \funding[the generous help of other +agencies]{Department of Defense}{Special project Secret Defense}. + \bibliography{aomsample} \bibliographystyle{aomplain} diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md index af04384145..3178c32976 100644 --- a/macros/latex/contrib/l3kernel/CHANGELOG.md +++ b/macros/latex/contrib/l3kernel/CHANGELOG.md @@ -7,10 +7,19 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2022-05-30] + +### Added +- Add `\lua_load_module:n` + +### Fixed +- Typo in implementation of titlecase `hy-x-yiwn` +- Definition order issue with `\str_case:Nn(TF)` + ## [2022-05-04] ### Added -- Language settings `hy` and `hy-x-yiwn` for handling of ech-yiwm ligature +- Language settings `hy` and `hy-x-yiwn` for handling of ech-yiwn ligature uppercasing ## Changed @@ -1104,7 +1113,8 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2022-05-04...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2022-05-30...HEAD +[2022-05-30]: https://github.com/latex3/latex3/compare/2022-05-04...2022-05-30 [2022-05-04]: https://github.com/latex3/latex3/compare/2022-04-29...2022-05-04 [2022-04-29]: https://github.com/latex3/latex3/compare/2022-04-20...2022-04-29 [2022-04-20]: https://github.com/latex3/latex3/compare/2022-04-10...2022-04-20 diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md index efe036c7a8..40d1496218 100644 --- a/macros/latex/contrib/l3kernel/README.md +++ b/macros/latex/contrib/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2022-05-04 +Release 2022-05-30 Overview -------- diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx index 03ed15fff0..7409587c2a 100644 --- a/macros/latex/contrib/l3kernel/expl3.dtx +++ b/macros/latex/contrib/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2022-05-04}% +\def\ExplFileDate{2022-05-30}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf Binary files differindex db8466e7d6..8c3a74a9cd 100644 --- a/macros/latex/contrib/l3kernel/expl3.pdf +++ b/macros/latex/contrib/l3kernel/expl3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf Binary files differindex 6fa25e9a52..e915eee8bc 100644 --- a/macros/latex/contrib/l3kernel/interface3.pdf +++ b/macros/latex/contrib/l3kernel/interface3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex index ef2ddeb5fb..5274f97459 100644 --- a/macros/latex/contrib/l3kernel/interface3.tex +++ b/macros/latex/contrib/l3kernel/interface3.tex @@ -54,7 +54,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2022-05-04} +\date{Released 2022-05-30} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx index 98a8586400..8f06184031 100644 --- a/macros/latex/contrib/l3kernel/l3basics.dtx +++ b/macros/latex/contrib/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx index 327ded9907..0119949aef 100644 --- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx +++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx index 4fce9d4010..44fd741e4c 100644 --- a/macros/latex/contrib/l3kernel/l3box.dtx +++ b/macros/latex/contrib/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx index 44a583297c..ec2647278e 100644 --- a/macros/latex/contrib/l3kernel/l3candidates.dtx +++ b/macros/latex/contrib/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx index 5ccace56c9..e2e7511594 100644 --- a/macros/latex/contrib/l3kernel/l3cctab.dtx +++ b/macros/latex/contrib/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx index 02090d75ae..7dfea946bc 100644 --- a/macros/latex/contrib/l3kernel/l3clist.dtx +++ b/macros/latex/contrib/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx index 0175afca38..b2b27f3a3f 100644 --- a/macros/latex/contrib/l3kernel/l3coffins.dtx +++ b/macros/latex/contrib/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx index efafd42c6b..b31bd71f12 100644 --- a/macros/latex/contrib/l3kernel/l3color.dtx +++ b/macros/latex/contrib/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx index 4cc21ba16d..e8c3affaf9 100644 --- a/macros/latex/contrib/l3kernel/l3debug.dtx +++ b/macros/latex/contrib/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx index f12a893d16..b0ffac2fd7 100644 --- a/macros/latex/contrib/l3kernel/l3deprecation.dtx +++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx index 8594547d58..ebe85ac66c 100644 --- a/macros/latex/contrib/l3kernel/l3doc.dtx +++ b/macros/latex/contrib/l3kernel/l3doc.dtx @@ -85,7 +85,7 @@ and all files in that bundle must be distributed together. % require you to do updates, if the class changes.}} % % \author{\Team} -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % \maketitle % \tableofcontents % diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf Binary files differindex ee681acb49..76368ad82b 100644 --- a/macros/latex/contrib/l3kernel/l3doc.pdf +++ b/macros/latex/contrib/l3kernel/l3doc.pdf diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx index 4c62ab9613..81a9e592ba 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.dtx +++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf Binary files differindex 6699e38649..1c5309b6fe 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.pdf +++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx index 1ae9a6b1d9..ed52ef0c7d 100644 --- a/macros/latex/contrib/l3kernel/l3expan.dtx +++ b/macros/latex/contrib/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx index 790f2ee654..1cc76bfe24 100644 --- a/macros/latex/contrib/l3kernel/l3file.dtx +++ b/macros/latex/contrib/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx index f7394dbee1..29ec1e1fe0 100644 --- a/macros/latex/contrib/l3kernel/l3flag.dtx +++ b/macros/latex/contrib/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx index 7d44c73d76..43619e1d5f 100644 --- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx index b9b714b4df..0e8d54af58 100644 --- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx index 888050ee93..a6bf25bbf1 100644 --- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx index 43fff05120..fe4db6c621 100644 --- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx index aad962fbd6..ad8e96156c 100644 --- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx index ca7c6482ae..8ce504bdfa 100644 --- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx index 300b319336..d5246b8e6d 100644 --- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx index d4df6a8ac6..ce980f4de0 100644 --- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx index a90a201cef..7e042850dc 100644 --- a/macros/latex/contrib/l3kernel/l3fp-random.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx index 04635ccdb2..56aec6e4f3 100644 --- a/macros/latex/contrib/l3kernel/l3fp-round.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx index af02bf955b..47c205a9fe 100644 --- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx index cdfed0da5d..6e112628e2 100644 --- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx index 23c6e42feb..1850413f0c 100644 --- a/macros/latex/contrib/l3kernel/l3fp.dtx +++ b/macros/latex/contrib/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx index 8fc0951c06..a68e2bbdaf 100644 --- a/macros/latex/contrib/l3kernel/l3fparray.dtx +++ b/macros/latex/contrib/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx index 96dc4d14b8..4bfe4cf0d4 100644 --- a/macros/latex/contrib/l3kernel/l3int.dtx +++ b/macros/latex/contrib/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx index 3b29c4b6ef..f3bdd99991 100644 --- a/macros/latex/contrib/l3kernel/l3intarray.dtx +++ b/macros/latex/contrib/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx index 3157f8abbf..5d258e39c1 100644 --- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx index 5fa2ae2e42..7a863bc893 100644 --- a/macros/latex/contrib/l3kernel/l3keys.dtx +++ b/macros/latex/contrib/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx index ae1c4f1f5e..35d37e8745 100644 --- a/macros/latex/contrib/l3kernel/l3legacy.dtx +++ b/macros/latex/contrib/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx index 914c389e0a..8f8922dbb9 100644 --- a/macros/latex/contrib/l3kernel/l3luatex.dtx +++ b/macros/latex/contrib/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % @@ -115,6 +115,24 @@ % \end{texnote} % \end{function} % +% \begin{function}[added = 2022-05-14]{\lua_load_module:n} +% \begin{syntax} +% \cs{lua_load_module:n} \Arg{Lua module name} +% \end{syntax} +% Loads a Lua module into the Lua interpreter. +% +% \cs{lua_now:n} passes its \Arg{token list} argument to the Lua interpreter +% as a single line, with characters interpreted under the current catcode +% regime. These two facts mean that \cs{lua_now:n} rarely behaves as expected +% for larger pieces of code. Therefore, package authors should \textbf{not} +% write significant amounts of Lua code in the arguments to \cs{lua_now:n}. +% Instead, it is strongly recommended that they write the majorty of their Lua +% code in a separate file, and then load it using \cs{lua_load_module:n}. +% \begin{texnote} +% This is a wrapper around the Lua call |require '|\meta{module}|'|. +% \end{texnote} +% \end{function} +% % \section{Lua interfaces} % % As well as interfaces for \TeX{}, there are a small number of Lua functions @@ -208,9 +226,7 @@ % \begin{macro}[EXP]{\lua_now:n, \lua_now:e} % \begin{macro}{\lua_shipout_e:n, \lua_shipout:n} % \begin{macro}[EXP]{\lua_escape:n, \lua_escape:e} -% Wrappers around the primitives. As with engines other than \LuaTeX{} -% these have to be macros, we give them the same status in all cases. -% When \LuaTeX{} is not in use, simply give an error message/ +% Wrappers around the primitives. % \begin{macrocode} \cs_new:Npn \lua_now:e #1 { \@@_now:n {#1} } \cs_new:Npn \lua_now:n #1 { \lua_now:e { \exp_not:n {#1} } } @@ -219,6 +235,31 @@ { \lua_shipout_e:n { \exp_not:n {#1} } } \cs_new:Npn \lua_escape:e #1 { \@@_escape:n {#1} } \cs_new:Npn \lua_escape:n #1 { \lua_escape:e { \exp_not:n {#1} } } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\lua_load_module:n} +% Wrapper around |require'|\meta{module}|'|. +% \begin{macrocode} +\str_new:N \l_@@_err_msg_str +\cs_generate_variant:Nn \msg_error:nnnn { nnnV } +\cs_new_protected:Npn \lua_load_module:n #1 + { + \bool_if:nF { \@@_load_module_p:n { #1 } } + { + \msg_error:nnnV + { luatex } { module-not-found } { #1 } { \l_@@_err_msg_str } + } + } +% \end{macrocode} +% \end{macro} +% +% As with engines other than \LuaTeX{} +% these have to be macros, we give them the same status in all cases. +% When \LuaTeX{} is not in use, simply give an error message/ +% \begin{macrocode} \sys_if_engine_luatex:F { \clist_map_inline:nn @@ -234,7 +275,7 @@ } } \clist_map_inline:nn - { \lua_shipout_e:n , \lua_shipout:n } + { \lua_shipout_e:n , \lua_shipout:n, \lua_load_module:n } { \cs_set_protected:Npn #1 ##1 { @@ -244,10 +285,6 @@ } } % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% % \subsection{Messages} % % \begin{macrocode} @@ -257,6 +294,19 @@ The~feature~you~are~using~is~only~available~ with~the~LuaTeX~engine.~LaTeX3~ignored~'#1'. } + +\msg_new:nnnn { luatex } { module-not-found } + { Lua~module~`#1'~not~found. } + { + The~file~`#1.lua'~could~not~be~found.~Please~ensure~ + that~the~file~was~properly~installed~and~that~the~ + filename~database~is~current. \\ \\ + The~Lua~loader~provided~this~additional~information: \\ + #2 + } + +\prop_gput:Nnn \g_msg_module_name_prop { luatex } { LaTeX3 } +\prop_gput:Nnn \g_msg_module_type_prop { luatex } { } % \end{macrocode} % % \begin{macrocode} @@ -311,6 +361,9 @@ local cprint = tex.cprint local write = tex.write local write_nl = texio.write_nl local utf8_char = utf8.char +local package_loaded = package.loaded +local package_searchers = package.searchers +local table_concat = table.concat local scan_int = token.scan_int or token.scan_integer local scan_string = token.scan_string @@ -318,6 +371,7 @@ local scan_keyword = token.scan_keyword local put_next = token.put_next local token_create = token.create local token_new = token.new +local set_macro = token.set_macro % \end{macrocode} % % Since token.create only returns useful values after the tokens @@ -554,6 +608,57 @@ end % \end{macrocode} % \end{macro} % +% \begin{macro}[int]{try_require} +% Loads a Lua module. This function loads the module similarly to the standard +% Lua global function |require|, with a few differences. On success, +% |try_require| returns |true, module|. If the module cannot be found, it +% returns |false, err_msg|. If the module is found, but something goes wrong +% when loading it, the function throws an error. +% \begin{macrocode} +local function try_require(name) + if package_loaded[name] then + return true, package_loaded[name] + end + + local failure_details = {} + for _, searcher in ipairs(package_searchers) do + local loader, data = searcher(name) + if type(loader) == 'function' then + package_loaded[name] = loader(name, data) or true + return true, package_loaded[name] + elseif type(loader) == 'string' then + failure_details[#failure_details + 1] = loader + end + end + + return false, table_concat(failure_details, '\n') +end +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_load_module_p:n} +% Check to see if we can load a module using |require|. If we +% can load the module, then we load it immediately. Otherwise, we save the +% error message in |\l_@@_err_msg_str|. +% \begin{macrocode} +local char_given = command_id'char_given' +local c_true_bool = token_create(1, char_given) +local c_false_bool = token_create(0, char_given) +local c_str_cctab = token_create('c_str_cctab').mode + +luacmd('@@_load_module_p:n', function() + local success, result = try_require(scan_string()) + if success then + set_macro(c_str_cctab, 'l_@@_err_msg_str', '') + put_next(c_true_bool) + else + set_macro(c_str_cctab, 'l_@@_err_msg_str', result) + put_next(c_false_bool) + end +end) +% \end{macrocode} +% \end{macro} +% % \subsection{Preserving iniTeX Lua data for runs} % % \begin{macrocode} @@ -595,7 +700,7 @@ if luatexbase then end % \end{macrocode} % \end{macro} -% +% % The actual work is done in \texttt{pre_dump}. The \texttt{luadata_order} is used % to ensure that the order is consistent over multiple runs. % \begin{macrocode} diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx index 7dbe45171e..e23de3a563 100644 --- a/macros/latex/contrib/l3kernel/l3msg.dtx +++ b/macros/latex/contrib/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx index 948b64119c..0f4c3f2672 100644 --- a/macros/latex/contrib/l3kernel/l3names.dtx +++ b/macros/latex/contrib/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf Binary files differindex 6270a2fa15..bff41a2afc 100644 --- a/macros/latex/contrib/l3kernel/l3news.pdf +++ b/macros/latex/contrib/l3kernel/l3news.pdf diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf Binary files differindex 3fc8d97c40..4780cbd10e 100644 --- a/macros/latex/contrib/l3kernel/l3news01.pdf +++ b/macros/latex/contrib/l3kernel/l3news01.pdf diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf Binary files differindex 68acef120c..bbb4ab0a2d 100644 --- a/macros/latex/contrib/l3kernel/l3news02.pdf +++ b/macros/latex/contrib/l3kernel/l3news02.pdf diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf Binary files differindex c8c3d81991..a9cb150cc1 100644 --- a/macros/latex/contrib/l3kernel/l3news03.pdf +++ b/macros/latex/contrib/l3kernel/l3news03.pdf diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf Binary files differindex 468fcef3db..8114272f2e 100644 --- a/macros/latex/contrib/l3kernel/l3news04.pdf +++ b/macros/latex/contrib/l3kernel/l3news04.pdf diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf Binary files differindex bb77a950ae..0e0d7aa57f 100644 --- a/macros/latex/contrib/l3kernel/l3news05.pdf +++ b/macros/latex/contrib/l3kernel/l3news05.pdf diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf Binary files differindex 900edb6318..939e11cfd1 100644 --- a/macros/latex/contrib/l3kernel/l3news06.pdf +++ b/macros/latex/contrib/l3kernel/l3news06.pdf diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf Binary files differindex c1267a3b36..c746d437bf 100644 --- a/macros/latex/contrib/l3kernel/l3news07.pdf +++ b/macros/latex/contrib/l3kernel/l3news07.pdf diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf Binary files differindex ce187aea13..b3a2c0051c 100644 --- a/macros/latex/contrib/l3kernel/l3news08.pdf +++ b/macros/latex/contrib/l3kernel/l3news08.pdf diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf Binary files differindex d8e9065888..39ea20c0e9 100644 --- a/macros/latex/contrib/l3kernel/l3news09.pdf +++ b/macros/latex/contrib/l3kernel/l3news09.pdf diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf Binary files differindex 6e9e45b343..42537b1bb0 100644 --- a/macros/latex/contrib/l3kernel/l3news10.pdf +++ b/macros/latex/contrib/l3kernel/l3news10.pdf diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf Binary files differindex 8bf964afda..3998a32270 100644 --- a/macros/latex/contrib/l3kernel/l3news11.pdf +++ b/macros/latex/contrib/l3kernel/l3news11.pdf diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf Binary files differindex cc6097f334..ba32031a33 100644 --- a/macros/latex/contrib/l3kernel/l3news12.pdf +++ b/macros/latex/contrib/l3kernel/l3news12.pdf diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx index ede34ba6f8..8c95bdc132 100644 --- a/macros/latex/contrib/l3kernel/l3pdf.dtx +++ b/macros/latex/contrib/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv index a09799708c..762387f09d 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.csv +++ b/macros/latex/contrib/l3kernel/l3prefixes.csv @@ -47,6 +47,7 @@ color,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https conteq,conteq,Joachim Breitner,https://github.com/nomeata/conteq,https://github.com/nomeata/conteq.git,https://github.com/nomeata/conteq/issues,2013-05-26,2013-05-27, cookingunits,cooking-units,Ben Vitecek,https://github.com/Vidabe/cooking-units,https://github.com/Vidabe/cooking-units.git,https://github.com/Vidabe/cooking-units/issues,2018-09-26,2018-09-26, cs,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, +csl,citation-style-language,Zeping Lee,https://github.com/zepinglee/citeproc-lua,https://github.com/zepinglee/citeproc-lua.git,https://github.com/zepinglee/citeproc-lua/issues,2022-05-09,2022-05-09, csvsim,csvsimple,Thomas F. Sturm,https://github.com/T-F-S/csvsimple,https://github.com/T-F-S/csvsimple.git,https://github.com/T-F-S/csvsimple/issues,2020-02-19,2020-02-19, ctex,ctex,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2014-03-08,2014-03-08, ctuthesis,ctuthesis,Tom Hejda,https://github.com/tohecz/ctuthesis,https://github.com/tohecz/ctuthesis.git,https://github.com/tohecz/ctuthesis/issues,2015-07-26,2015-07-26, diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf Binary files differindex b238847923..32e5649186 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.pdf +++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx index d55f9b81d6..72da59c926 100644 --- a/macros/latex/contrib/l3kernel/l3prg.dtx +++ b/macros/latex/contrib/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx index 5f59356660..304ab640aa 100644 --- a/macros/latex/contrib/l3kernel/l3prop.dtx +++ b/macros/latex/contrib/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx index d0d4d37b20..b3286b9679 100644 --- a/macros/latex/contrib/l3kernel/l3quark.dtx +++ b/macros/latex/contrib/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx index 02f48cf6c3..80a654c8a6 100644 --- a/macros/latex/contrib/l3kernel/l3regex.dtx +++ b/macros/latex/contrib/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx index dfb37ba8ec..0fcb2cc430 100644 --- a/macros/latex/contrib/l3kernel/l3seq.dtx +++ b/macros/latex/contrib/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx index 498f94f231..62d0aa1b0d 100644 --- a/macros/latex/contrib/l3kernel/l3skip.dtx +++ b/macros/latex/contrib/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx index 455cbe9533..32b63918eb 100644 --- a/macros/latex/contrib/l3kernel/l3sort.dtx +++ b/macros/latex/contrib/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx index 8e0b77cb24..96560ddeaa 100644 --- a/macros/latex/contrib/l3kernel/l3str-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx index 1070c6e7f6..1582d42043 100644 --- a/macros/latex/contrib/l3kernel/l3str.dtx +++ b/macros/latex/contrib/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % @@ -1234,12 +1234,12 @@ \cs_new:Npn \@@_case:nnTF #1#2#3#4 { \@@_case:nw {#1} #2 {#1} { } \s_@@_mark {#3} \s_@@_mark {#4} \s_@@_stop } \cs_generate_variant:Nn \str_case:nn { V , o , nV , nv } +\prg_generate_conditional_variant:Nnn \str_case:nn + { V , o , nV , nv } { T , F , TF } \cs_new_eq:NN \str_case:Nn \str_case:Vn \cs_new_eq:NN \str_case:NnT \str_case:VnT \cs_new_eq:NN \str_case:NnF \str_case:VnF \cs_new_eq:NN \str_case:NnTF \str_case:VnTF -\prg_generate_conditional_variant:Nnn \str_case:nn - { V , o , nV , nv } { T , F , TF } \cs_new:Npn \@@_case:nw #1#2#3 { \str_if_eq:nnTF {#1} {#2} diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf Binary files differindex 3fe8f01fd3..625bb3fa6e 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.pdf +++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex index f16bb02569..8404de30d4 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.tex +++ b/macros/latex/contrib/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2022-05-04} +\date{Released 2022-05-30} \begin{document} diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf Binary files differindex a574812600..08d5a2da81 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex index 14de94bda0..7a833c12c7 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2022-05-04} +\date{Released 2022-05-30} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx index e5084eb0fc..c076db1847 100644 --- a/macros/latex/contrib/l3kernel/l3sys.dtx +++ b/macros/latex/contrib/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf Binary files differindex a128f1efbd..0145acbb80 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf +++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex index 6f257080c0..28289b87a5 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.tex +++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2022-05-04} +\date{Released 2022-05-30} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx index f236813b89..155bcd5bd0 100644 --- a/macros/latex/contrib/l3kernel/l3text-case.dtx +++ b/macros/latex/contrib/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % @@ -1301,7 +1301,7 @@ \cs_new:cpn { @@_change_case_upper_hy-x-yiwn:nnnN } #1#2#3#4 { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 } \cs_new_eq:cc { @@_change_case_title_hy-x-yiwn:nnnN } - { @@_change_case_upper_hy-x-yiwm:nnnN } + { @@_change_case_upper_hy-x-yiwn:nnnN } } % \end{macrocode} % \end{macro} diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx index bcdf6097a3..7cb9ed598c 100644 --- a/macros/latex/contrib/l3kernel/l3text-purify.dtx +++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx index cea1966acc..090ed99429 100644 --- a/macros/latex/contrib/l3kernel/l3text.dtx +++ b/macros/latex/contrib/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx index 4878c898da..eca3716316 100644 --- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx index 8063176863..578cc9e60e 100644 --- a/macros/latex/contrib/l3kernel/l3tl.dtx +++ b/macros/latex/contrib/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx index 2181a732fb..d42837f022 100644 --- a/macros/latex/contrib/l3kernel/l3token.dtx +++ b/macros/latex/contrib/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx index d0e0849541..9448e591a2 100644 --- a/macros/latex/contrib/l3kernel/l3unicode.dtx +++ b/macros/latex/contrib/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2022-05-04} +% \date{Released 2022-05-30} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf Binary files differindex 33b2d8a30b..564502255a 100644 --- a/macros/latex/contrib/l3kernel/source3.pdf +++ b/macros/latex/contrib/l3kernel/source3.pdf diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex index 73ca28277e..8f3d1e9cd5 100644 --- a/macros/latex/contrib/l3kernel/source3.tex +++ b/macros/latex/contrib/l3kernel/source3.tex @@ -53,7 +53,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2022-05-04} +\date{Released 2022-05-30} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3packages/CHANGELOG.md b/macros/latex/contrib/l3packages/CHANGELOG.md index b2a8dedbdc..0205576bb5 100644 --- a/macros/latex/contrib/l3packages/CHANGELOG.md +++ b/macros/latex/contrib/l3packages/CHANGELOG.md @@ -7,6 +7,17 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2022-05-30] + +## Added +- `\SetTemplateKeys` for _ad hoc_ adjustment of template values + +### Changed +- Make `\AssignTemplateKeys` optional + +### Removed +- `\EvaluateNow` command + ## [2022-01-12] ### Changed @@ -170,7 +181,8 @@ this project uses date-based 'snapshot' version identifiers. - Switch to ISO date format - Improve cross-module use of internal functions -[Unreleased]: https://github.com/latex3/latex3/compare/2022-01-12...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2022-05-30...HEAD +[2022-05-30]: https://github.com/latex3/latex3/compare/2022-01-12...2022-05-30 [2022-01-12]: https://github.com/latex3/latex3/compare/2021-11-12...2022-01-12 [2021-11-12]: https://github.com/latex3/latex3/compare/2021-08-27...2021-11-12 [2021-08-27]: https://github.com/latex3/latex3/compare/2021-08-04...2021-08-27 diff --git a/macros/latex/contrib/l3packages/README.md b/macros/latex/contrib/l3packages/README.md index 8b3a45ddf5..d683ea95ec 100644 --- a/macros/latex/contrib/l3packages/README.md +++ b/macros/latex/contrib/l3packages/README.md @@ -1,7 +1,7 @@ LaTeX3 High-Level Concepts ========================== -Release 2022-01-12 +Release 2022-05-30 Overview -------- diff --git a/macros/latex/contrib/l3packages/l3keys2e.dtx b/macros/latex/contrib/l3packages/l3keys2e.dtx index 675b914f44..8ff82d96bf 100644 --- a/macros/latex/contrib/l3packages/l3keys2e.dtx +++ b/macros/latex/contrib/l3packages/l3keys2e.dtx @@ -62,7 +62,7 @@ % }^^A % } % -% \date{Released 2022-01-12} +% \date{Released 2022-05-30} % % \maketitle % @@ -139,7 +139,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3keys2e}{2022-01-12}{} +\ProvidesExplPackage{l3keys2e}{2022-05-30}{} {LaTeX2e option processing using LaTeX3 keys} % \end{macrocode} % diff --git a/macros/latex/contrib/l3packages/l3keys2e.pdf b/macros/latex/contrib/l3packages/l3keys2e.pdf Binary files differindex c4ad006e71..9d92531a64 100644 --- a/macros/latex/contrib/l3packages/l3keys2e.pdf +++ b/macros/latex/contrib/l3packages/l3keys2e.pdf diff --git a/macros/latex/contrib/l3packages/xfp.dtx b/macros/latex/contrib/l3packages/xfp.dtx index 5863f1579d..631c3976b5 100644 --- a/macros/latex/contrib/l3packages/xfp.dtx +++ b/macros/latex/contrib/l3packages/xfp.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2022-01-12} +% \date{Released 2022-05-30} % % \maketitle % @@ -171,7 +171,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfp}{2022-01-12}{} +\ProvidesExplPackage{xfp}{2022-05-30}{} {L3 Floating point unit} % \end{macrocode} % diff --git a/macros/latex/contrib/l3packages/xfp.pdf b/macros/latex/contrib/l3packages/xfp.pdf Binary files differindex 1ab1072a41..80bc16fe6c 100644 --- a/macros/latex/contrib/l3packages/xfp.pdf +++ b/macros/latex/contrib/l3packages/xfp.pdf diff --git a/macros/latex/contrib/l3packages/xfrac.dtx b/macros/latex/contrib/l3packages/xfrac.dtx index 4fb469ae59..9694a1abb4 100644 --- a/macros/latex/contrib/l3packages/xfrac.dtx +++ b/macros/latex/contrib/l3packages/xfrac.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % %% File: xfrac.dtx -% +% % Copyright (C) 2004,2008-2010 Morten Hoegholm % (C) 2011,2012,2014-2022 The LaTeX Project % @@ -65,7 +65,7 @@ % }^^A % } % -% \date{Released 2022-01-12} +% \date{Released 2022-05-30} % % \maketitle % @@ -535,7 +535,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfrac}{2022-01-12}{} +\ProvidesExplPackage{xfrac}{2022-05-30}{} {L3 Experimental split-level fractions} % \end{macrocode} % @@ -781,7 +781,6 @@ % whether the surroundings are text or math(s), and react accordingly. % \begin{macrocode} { - \AssignTemplateKeys \mode_if_math:TF { \cs_set_eq:NN \@@_text_or_math:n \text diff --git a/macros/latex/contrib/l3packages/xfrac.pdf b/macros/latex/contrib/l3packages/xfrac.pdf Binary files differindex 33722acc5d..11d1d7d44e 100644 --- a/macros/latex/contrib/l3packages/xfrac.pdf +++ b/macros/latex/contrib/l3packages/xfrac.pdf diff --git a/macros/latex/contrib/l3packages/xparse.dtx b/macros/latex/contrib/l3packages/xparse.dtx index 03243ec0e2..d1a8872fd7 100644 --- a/macros/latex/contrib/l3packages/xparse.dtx +++ b/macros/latex/contrib/l3packages/xparse.dtx @@ -67,7 +67,7 @@ % }^^A % } % -% \date{Released 2022-01-12} +% \date{Released 2022-05-30} % % \maketitle % @@ -1064,7 +1064,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xparse}{2022-01-12}{} +\ProvidesExplPackage{xparse}{2022-05-30}{} {L3 Experimental document command parser} % \end{macrocode} % diff --git a/macros/latex/contrib/l3packages/xparse.pdf b/macros/latex/contrib/l3packages/xparse.pdf Binary files differindex 87b141c5d2..f2a4e2c48d 100644 --- a/macros/latex/contrib/l3packages/xparse.pdf +++ b/macros/latex/contrib/l3packages/xparse.pdf diff --git a/macros/latex/contrib/l3packages/xtemplate.dtx b/macros/latex/contrib/l3packages/xtemplate.dtx index 987e20b6dd..6dd4e2edfd 100644 --- a/macros/latex/contrib/l3packages/xtemplate.dtx +++ b/macros/latex/contrib/l3packages/xtemplate.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2022-01-12} +% \date{Released 2022-05-30} % % \maketitle % @@ -358,22 +358,12 @@ % \cs{AssignTemplateKeys} % \end{syntax} % In the final argument of \cs{DeclareTemplateCode} the assignment of -% keys defined by the template is carried out by using the function -% \cs{AssignTemplateKeys}. Thus no keys are assigned if this is missing -% from the \meta{code} used. -% \end{function} -% -% \begin{function}{\EvaluateNow} -% \begin{syntax} -% \cs{EvaluateNow} \Arg{expression} -% \end{syntax} -% The standard method when creating an instance from a template is to -% evaluate the \meta{expression} when the instance is used. However, it may -% be desirable to calculate the value when declared, which can be -% forced using \cs{EvaluateNow}. Currently, this functionality is -% regarded as experimental: the team have not found an example where it -% is actually needed, and so it may be dropped \emph{if} no good -% examples are suggested! +% keys defined by the template may be delayed by including the command +% \cs{AssignTemplateKeys}. If this is \emph{not} present, keys are assigned +% immediately before the template code. If \cs{AssignTemplateKeys} is +% present, assignment is delayed until this point. Note that the +% command must be \emph{directly} present in the code, not placed +% within a nested command/macro. % \end{function} % % \section{Multiple choices} @@ -587,6 +577,40 @@ % be changed when creating an instance. % \end{function} % +% \section{\emph{Ad hoc} adjustment of templates} +% +% \begin{function}{\SetTemplateKeys} +% \begin{syntax} +% \cs{SetTemplateKeys} \Arg{object type} \Arg{template} \Arg{keyvals} +% \end{syntax} +% At point of use it may be useful to apply changed to individual instances. +% This is supported as each template key is made available for adjustment +% using \cs{SetTemplateKeys}. +% \end{function} +% +% For example, after +% \begin{verbatim} +% \DeclareObjectType{MyObj}{0} +% \DeclareTemplateInterface{MyObj}{TemplateA}{0} +% { +% akey: tokenlist , +% bkey: function{2} +% } +% \DeclareTemplateCode{MyObj}{TemplateA}{0} +% { +% akey = SomeTokens , +% bkey = \func:nn , +% } +% \end{verbatim} +% the template keys could be adjusted in an \emph{ad hoc} fashion using +% \begin{verbatim} +% \SetTemplateKeys{MyObj}{TemplateA} +% { +% akey = OtherTokens , +% bkey = \AltFunc:nn +% } +% \end{verbatim} +% % \section{Getting information about templates and instances} % % \begin{function}{\ShowInstanceValues} @@ -682,10 +706,15 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xtemplate}{2022-01-12}{} +\ProvidesExplPackage{xtemplate}{2022-05-30}{} {L3 Experimental prototype document functions} % \end{macrocode} % +% \begin{macrocode} +\cs_generate_variant:Nn \keys_define:nn { nx } +\cs_generate_variant:Nn \tl_trim_spaces:n { e } +% \end{macrocode} +% % \subsection{Variables and constants} % % \begin{variable}{\c_@@_code_root_tl} @@ -979,8 +1008,7 @@ % \end{macro} % % \begin{macro}[TF]{\@@_if_key_value:n, \@@_if_key_value:o} -% Tests for the first token in a string being \cs{KeyValue}, where -% \cs{EvaluateNow} is not important. +% Tests for the first token in a string being \cs{KeyValue}. % \begin{macrocode} \prg_new_conditional:Npnn \@@_if_key_value:n #1 { T , F , TF } { @@ -994,18 +1022,6 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_if_eval_now:nTF} -% Tests for the first token in a string being \cs{EvaluateNow}. -% \begin{macrocode} -\prg_new_conditional:Npnn \@@_if_eval_now:n #1 { TF } - { - \str_if_eq:noTF { \EvaluateNow } { \tl_head:w #1 \q_nil \q_stop } - { \prg_return_true: } - { \prg_return_false: } - } -% \end{macrocode} -% \end{macro} -% % \begin{macro}[TF]{\@@_if_instance_exist:nnn} % Testing for an instance is collection dependent. % \begin{macrocode} @@ -1305,8 +1321,8 @@ % \begin{macro}{\@@_split_keytype:n} % \begin{macro}{\@@_split_keytype_aux:w} % The keytype and key name should be separated by |:|. As the -% definition might be given inside or outside of a code block, spaces -% are removed and the category code of colons is standardised. After +% definition might be given inside or outside of a code block, +% the category code of colons is standardised. After % that, the standard delimited argument method is used to separate the % two parts. % \begin{macrocode} @@ -1314,7 +1330,6 @@ { \exp_not:N \bool_set_false:N \exp_not:N \l_@@_error_bool \tl_set:Nn \exp_not:N \l_@@_tmp_tl {#1} - \tl_remove_all:Nn \exp_not:N \l_@@_tmp_tl { ~ } \tl_replace_all:Nnn \exp_not:N \l_@@_tmp_tl { : } { \token_to_str:N : } \tl_if_in:onTF \exp_not:N \l_@@_tmp_tl { \token_to_str:N : } { @@ -1336,7 +1351,10 @@ ##1 \token_to_str:N : ##2 \s_@@_stop { \tl_put_right:Nx \exp_not:N \l_@@_key_name_tl - { \exp_not:N \tl_to_str:n {##1} } + { + \exp_not:N \tl_trim_spaces:e + { \exp_not:N \tl_to_str:n {##1} } + } \tl_if_in:nnTF {##2} { \token_to_str:N : } { \tl_put_right:Nn \exp_not:N \l_@@_key_name_tl @@ -1419,30 +1437,9 @@ % value to be processed and potentially stored. % % \begin{macro}{\@@_store_value_boolean:n} -% Storing Boolean values requires a test for delayed evaluation, but -% is different to the various numerical variable types as there are -% only two possible values to store. So the code here tests the default -% switch and then records the meaning (either \texttt{true} or -% \texttt{false}). % \begin{macrocode} \cs_new_protected:Npn \@@_store_value_boolean:n #1 - { - \@@_if_eval_now:nTF {#1} - { - \bool_if:cTF { c_ #1 _bool } - { - \prop_put:Non \l_@@_values_prop \l_@@_key_name_tl - { true } - } - { - \prop_put:Non \l_@@_values_prop \l_@@_key_name_tl - { false } - } - } - { - \prop_put:Non \l_@@_values_prop \l_@@_key_name_tl {#1} - } - } + { \prop_put:Non \l_@@_values_prop \l_@@_key_name_tl {#1} } % \end{macrocode} % \end{macro} % @@ -1464,17 +1461,9 @@ % \@@_store_value_real:n, \@@_store_value_skip:n, % \@@_store_value_tokenlist:n, \@@_store_value_commalist:n} % Storing values in \cs{l_@@_values_prop} is in most cases the same. -% If evaluation is taking place now, one \texttt{x}-expands an -% evaluation function and the result is then stored. On the other -% hand, if evaluation is delayed the current data is simply stored -% \enquote{as is}. % \begin{macrocode} \cs_new_protected:Npn \@@_store_value_aux:Nn #1#2 - { - \@@_if_eval_now:nTF {#2} - { \prop_put:NVx \l_@@_values_prop \l_@@_key_name_tl { #1 {#2} } } - { \prop_put:Non \l_@@_values_prop \l_@@_key_name_tl {#2} } - } + { \prop_put:Non \l_@@_values_prop \l_@@_key_name_tl {#2} } \cs_new_protected:Npn \@@_store_value_integer:n { \@@_store_value_aux:Nn \int_eval:n } \cs_new_protected:Npn \@@_store_value_length:n @@ -1494,6 +1483,7 @@ % \subsection{Implementation part of template declaration} % % \begin{macro}{\@@_declare_template_code:nnnnn} +% \begin{macro}{\@@_declare_template_code:nnn} % The main function for implementing a template starts with a couple of % simple checks to make sure that there are no obvious mistakes: the % number of arguments must agree and the template keys must have been @@ -1508,15 +1498,25 @@ \@@_if_keys_exist:nnT {#1} {#2} { \@@_store_key_implementation:nnn {#1} {#2} {#4} - \cs_generate_from_arg_count:cNnn - { \c_@@_code_root_tl #1 / #2 } - \cs_gset_protected:Npn {#3} {#5} + \regex_match:nnTF { \c { AssignTemplateKeys } } {#5} + { \@@_declare_template_code:nnn { #1 / #2 } {#3} {#5} } + { + \@@_declare_template_code:nnn + { #1 / #2 } {#3} { \AssignTemplateKeys #5 } + } } } } } +\cs_new_protected:Npn \@@_declare_template_code:nnn #1#2#3 + { + \cs_generate_from_arg_count:cNnn + { \c_@@_code_root_tl #1 } + \cs_gset_protected:Npn {#2} {#3} + } % \end{macrocode} % \end{macro} +% \end{macro} % % \begin{macro}{\@@_store_key_implementation:nnn} % Actually storing the implementation part of a template is quite easy @@ -1532,8 +1532,8 @@ \@@_recover_restrictions:n { #1 / #2 } \@@_recover_keytypes:n { #1 / #2 } \prop_clear:N \l_@@_vars_prop - \keyval_parse:NNn - \@@_parse_vars_elt:n \@@_parse_vars_elt:nn {#3} + \keyval_parse:nnn + { \@@_parse_vars_elt:n } { \@@_parse_vars_elt:nnn { #1 / #2 } } {#3} \@@_store_vars:n { #1 / #2 } \@@_store_restrictions:n { #1 / #2 } \prop_map_inline:Nn \l_@@_keytypes_prop @@ -1554,125 +1554,162 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_parse_vars_elt:nn} +% \begin{macro}{\@@_parse_vars_elt:nnn} % The actual storage part here is very simple: the storage bin name % is placed into the property list. At the same time, a comparison is % made with the keytypes defined earlier: if there is a mismatch then % an error is raised. % \begin{macrocode} -\cs_new_protected:Npn \@@_parse_vars_elt:nn #1#2 +\cs_new_protected:Npn \@@_parse_vars_elt:nnn #1#2#3 { - \tl_set:Nx \l_@@_key_name_tl { \tl_to_str:n {#1} } - \tl_remove_all:Nn \l_@@_key_name_tl { ~ } + \tl_set:Nx \l_@@_key_name_tl + { \tl_trim_spaces:e { \tl_to_str:n {#2} } } \prop_get:NoNTF \l_@@_keytypes_prop \l_@@_key_name_tl \l_@@_keytype_tl { \@@_split_keytype_arg:o \l_@@_keytype_tl - \@@_parse_vars_elt_aux:n {#2} + \@@_parse_vars_elt_aux:nn {#1} {#3} \prop_remove:NV \l_@@_keytypes_prop \l_@@_key_name_tl } - { \msg_error:nnx { xtemplate } { unknown-key } {#1} } + { \msg_error:nnx { xtemplate } { unknown-key } {#2} } } % \end{macrocode} % \end{macro} -% \begin{macro}{\@@_parse_vars_elt_aux:n} -% \begin{macro}{\@@_parse_vars_elt_aux:w} -% There now needs to be some sanity checking on the variable name -% given. This does not apply for \texttt{choice} or -% \texttt{code} \enquote{variables}, but in all other cases the variable -% needs to exist. Also, the only prefix acceptable is \texttt{global}. So -% there are a few related checks to make. +% \begin{macro}{\@@_parse_vars_elt_aux:nn} +% \begin{macro}{\@@_parse_vars_elt_aux:nw} +% \begin{macro}{\@@_parse_vars_elt_aux:nnn} +% \begin{macro}{\@@_parse_vars_elt_key:nn} +% Split off any leading \texttt{global} and they look for the way to +% implement. % \begin{macrocode} -\cs_new_protected:Npn \@@_parse_vars_elt_aux:n #1 +\cs_new_protected:Npn \@@_parse_vars_elt_aux:nn #1#2 + { + \@@_parse_vars_elt_aux:nw {#1} #2 global global \s_@@_stop + } +\cs_new_protected:Npn \@@_parse_vars_elt_aux:nw + #1#2 global #3 global #4 \s_@@_stop + { + \tl_if_blank:nTF {#4} + { \@@_parse_vars_elt_aux:nnn {#1} { } {#2} } + { + \tl_if_blank:nTF {#2} + { + \exp_args:Nnnx \@@_parse_vars_elt_aux:nnn + {#1} { global } { \tl_trim_spaces:n {#3} } + } + { \msg_error:nnn { xtemplate } { bad-variable } { #2 global #3 } } + } + } +\cs_new_protected:Npn \@@_parse_vars_elt_aux:nnn #1#2#3 { - \str_if_eq:onTF \l_@@_keytype_tl { choice } - { \@@_implement_choices:n {#1} } + \str_case:VnF \l_@@_keytype_tl { - \str_if_eq:onTF \l_@@_keytype_tl { code } + { choice } { \@@_implement_choices:nn {#1} {#3} } + { code } { + \@@_parse_vars_elt_key:nn {#1} + { + .cs_ \str_if_eq:nnT {#1} { global } { g } + set_protected:Np = \exp_not:N #3 + } \prop_put:Non \l_@@_vars_prop - \l_@@_key_name_tl {#1} + \l_@@_key_name_tl {#2#3} } + { function } { - \tl_if_single:nTF {#1} + \cs_if_exist:NF #3 + { \cs_new:Npn #3 { } } + \@@_parse_vars_elt_key:nn {#1} { - \cs_if_exist:NF #1 - { \@@_create_variable:N #1 } - \prop_put:Non \l_@@_vars_prop - \l_@@_key_name_tl {#1} + .code:n = + { + \exp_not:c + { cs_ \str_if_eq:nnT {#1} { global } { g } seq_eq:NN } + \exp_not:N #3 ####1 + } } + \prop_put:Non \l_@@_vars_prop + \l_@@_key_name_tl {#2#3} + } + { instance } + { + \@@_parse_vars_elt_key:nn {#1} { - \tl_if_in:nnTF {#1} { global } - { \@@_parse_vars_elt_aux:w #1 \s_@@_stop } + .code:n = { - \msg_error:nnx { xtemplate } { bad-variable } - { \tl_to_str:n {#1} } + \exp_not:c + { cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn } + \exp_not:N #3 { \UseInstance {####1} } } } + \prop_put:Non \l_@@_vars_prop + \l_@@_key_name_tl {#2#3} } } - } -\cs_new_protected:Npn \@@_parse_vars_elt_aux:w #1 global #2 \s_@@_stop - { - \tl_if_empty:nTF {#1} { - \tl_if_single:nTF {#2} + \tl_if_single:nTF {#3} { - \cs_if_exist:NF #2 - { \@@_create_variable:N #2 } + \cs_if_exist:NF #3 + { \use:c { \@@_map_var_type: _new:N } #3 } + \@@_parse_vars_elt_key:nn {#1} + { + . \@@_map_var_type: + _ \str_if_eq:nnT {#1} { global } { g } set:N + = \exp_not:N #3 + } \prop_put:Non \l_@@_vars_prop - \l_@@_key_name_tl { #1 global #2 } - } - { - \msg_error:nnx { xtemplate } { bad-variable } - { \tl_to_str:n { #1 global #2 } } + \l_@@_key_name_tl {#2#3} } + { \msg_error:nnx { xtemplate } { bad-variable } { #2#3 } } } - { - \msg_error:nnx { xtemplate } { bad-variable } - { \tl_to_str:n { #1 global #2 } } - } + } +\cs_new_protected:Npn \@@_parse_vars_elt_key:nn #1#2 + { + \keys_define:nx { template / #1 } + { \l_@@_key_name_tl #2 } } % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} % -% \begin{macro}{\@@_create_variable:N} -% A shortcut to create non-declared variables. Some types need a name -% mapping, others can be used directly. +% \begin{macro}[EXP]{\@@_map_var_type:} +% Turn a \enquote{friendly} variable type into an \texttt{expl3} one. % \begin{macrocode} -\cs_new_protected:Npn \@@_create_variable:N #1 +\cs_new:Npn \@@_map_var_type: { - \str_case:onF \l_@@_keytype_tl + \str_case:on \l_@@_keytype_tl { - { boolean } { \bool_new:N #1 } - { commalist } { \clist_new:N #1 } - { function } { \cs_new:Npn #1 { } } - { instance } { \cs_new_protected:Npn #1 { } } - { integer } { \int_new:N #1 } - { length } { \dim_new:N #1 } - { real } { \fp_new:N #1 } - { tokenlist } { \tl_new:N #1 } + { boolean } { bool } + { commalist } { clist } + { integer } { int } + { length } { dim } + { muskip } { muskip } + { real } { fp } + { skip } { skip } + { tokenlist } { tl } } - { \use:c { \l_@@_keytype_tl _ new:N } #1 } } % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_implement_choices:n} +% \begin{macro}{\@@_implement_choices:nn} % \begin{macro}{\@@_implement_choices_default:} % Implementing choices requires a second key--value loop. So after a % little set-up, the standard parser is called. % \begin{macrocode} -\cs_new_protected:Npn \@@_implement_choices:n #1 +\cs_new_protected:Npn \@@_implement_choices:nn #1#2 { \clist_set:No \l_@@_tmp_clist { \l_@@_keytype_arg_tl } \prop_put:Non \l_@@_vars_prop \l_@@_key_name_tl { } - \keyval_parse:NNn - \@@_implement_choice_elt:n \@@_implement_choice_elt:nn - {#1} + \keys_define:nx { template / #1 } { \l_@@_key_name_tl .choice: } + \keyval_parse:nnn + { \@@_implement_choice_elt:n } + { \@@_implement_choice_elt:nnn {#1} } + {#2} \prop_get:NoNT \l_@@_values_prop \l_@@_key_name_tl \l_@@_tmp_tl { \@@_implement_choices_default: } @@ -1714,47 +1751,57 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\@@_implement_choice_elt:nnn, \@@_implement_choice_elt_aux:nnn} % \begin{macro}{\@@_implement_choice_elt:n} -% \begin{macro}{\@@_implement_choice_elt:nn} % The actual storage of the implementation of a choice is mainly about % error checking. The code here ensures that all choices have to have % been declared, apart from the special \texttt{unknown} choice, which % must come last. The code for each choice is stored along with the % key name in the variables property list. % \begin{macrocode} -\cs_new_protected:Npn \@@_implement_choice_elt:n #1 +\cs_new_protected:Npn \@@_implement_choice_elt:nnn #1#2#3 { \clist_if_empty:NTF \l_@@_tmp_clist { - \str_if_eq:nnF {#1} { unknown } + \str_if_eq:nnTF {#2} { unknown } + { \@@_implement_choice_elt_aux:nnn {#1} {#2} {#3} } { \prop_get:NoN \l_@@_keytypes_prop \l_@@_key_name_tl \l_@@_tmp_tl \@@_split_keytype_arg:o \l_@@_tmp_tl \msg_error:nnxxx { xtemplate } { unknown-choice } - { \l_@@_key_name_tl } {#1} + { \l_@@_key_name_tl } {#2} { \l_@@_keytype_arg_tl } } } { - \clist_if_in:NnTF \l_@@_tmp_clist {#1} - { \clist_remove_all:Nn \l_@@_tmp_clist {#1} } + \clist_if_in:NnTF \l_@@_tmp_clist {#2} + { + \clist_remove_all:Nn \l_@@_tmp_clist {#2} + \@@_implement_choice_elt_aux:nnn {#1} {#2} {#3} + } { \prop_get:NoN \l_@@_keytypes_prop \l_@@_key_name_tl \l_@@_tmp_tl \@@_split_keytype_arg:o \l_@@_tmp_tl \msg_error:nnxxx { xtemplate } { unknown-choice } - { \l_@@_key_name_tl } {#1} + { \l_@@_key_name_tl } {#2} { \l_@@_keytype_arg_tl } } } } -\cs_new_protected:Npn \@@_implement_choice_elt:nn #1#2 +\cs_new_protected:Npn \@@_implement_choice_elt_aux:nnn #1#2#3 { - \@@_implement_choice_elt:n {#1} + \keys_define:nx { template / #1 } + { \l_@@_key_name_tl / #2 .code:n = { \exp_not:n {#3} } } \tl_set:Nx \l_@@_tmp_tl - { \l_@@_key_name_tl \c_space_tl #1 } - \prop_put:Non \l_@@_vars_prop \l_@@_tmp_tl {#2} + { \l_@@_key_name_tl \c_space_tl #2 } + \prop_put:Non \l_@@_vars_prop \l_@@_tmp_tl {#3} + } +\cs_new_protected:Npn \@@_implement_choice_elt:n #1 + { + \msg_error:nnxxx { xtemplate } { choice-requires-code } + { \l_@@_key_name_tl } {#1} } % \end{macrocode} % \end{macro} @@ -1849,8 +1896,8 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_parse_values_elt:nn #1#2 { - \tl_set:Nx \l_@@_key_name_tl { \tl_to_str:n {#1} } - \tl_remove_all:Nn \l_@@_key_name_tl { ~ } + \tl_set:Nx \l_@@_key_name_tl + { \tl_trim_spaces:e { \tl_to_str:n {#1} } } \prop_get:NoNTF \l_@@_keytypes_prop \l_@@_key_name_tl \l_@@_tmp_tl { @@ -2351,8 +2398,7 @@ { \exp_after:wN \@@_key_to_value_auxi:w \l_@@_value_tl } \cs_new_protected:Npn \@@_key_to_value_auxi:w \KeyValue #1 { - \tl_set:Nx \l_@@_tmp_tl { \tl_to_str:n {#1} } - \tl_remove_all:Nn \l_@@_key_name_tl { ~ } + \tl_set:Nx \l_@@_tmp_tl { \tl_trim_spaces:e { \tl_to_str:n {#1} } } \prop_get:NoNTF \l_@@_vars_prop \l_@@_tmp_tl @@ -2591,6 +2637,13 @@ each~choice~name~must~have~an~associated~implementation.\\ This~should~be~given~after~a~'='~sign:~LaTeX~did~not~find~one. } +\msg_new:nnnn { xtemplate } { choice-requires-code } + { The~choice~'#2'~for~key~'#1'~requires~an~implementation. } + { + You~should~have~put:\\ + \ \ #1~:~choice~{~#2 = <code> ~} \\ + but~LaTeX~did~not~find~any~<code>. + } \msg_new:nnnn { xtemplate } { duplicate-key-interface } { Key~'#1'~appears~twice~in~interface~definition~\msg_line_context:. } { @@ -2842,16 +2895,12 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\EvaluateNow} % \begin{macro}{\KeyValue} -% These are both do nothing functions. Both simply dump their arguments -% when executed: this should not happen with \cs{KeyValue}. +% Simply dump the argument when executed: this should not happen. % \begin{macrocode} -\cs_new_protected:Npn \EvaluateNow #1 {#1} \cs_new_protected:Npn \KeyValue #1 {#1} % \end{macrocode} % \end{macro} -% \end{macro} % % \begin{macro}{\AssignTemplateKeys} % A short call to use a token register by proxy. @@ -2861,6 +2910,14 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\SetTemplateKeys} +% A friendly wrapper +% \begin{macrocode} +\cs_new_protected:Npn \SetTemplateKeys #1#2#3 + { \keys_set:nn { template / #1 / #2 } {#3} } +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} \cs_new_eq:NN \ShowTemplateKeytypes \ShowTemplateInterface % \end{macrocode} diff --git a/macros/latex/contrib/l3packages/xtemplate.pdf b/macros/latex/contrib/l3packages/xtemplate.pdf Binary files differindex 7e726a0126..94192df344 100644 --- a/macros/latex/contrib/l3packages/xtemplate.pdf +++ b/macros/latex/contrib/l3packages/xtemplate.pdf diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md index 5f0f5ceccf..600220cc5c 100644 --- a/macros/latex/contrib/tagpdf/README.md +++ b/macros/latex/contrib/tagpdf/README.md @@ -1,6 +1,6 @@ #tagpdf — A package to create tagged pdf -Packageversion: 0.94 -Packagedate: 2022/05/11 +Packageversion: 0.95 +Packagedate: 2022/05/29 Author: Ulrike Fischer ## License diff --git a/macros/latex/contrib/tagpdf/global-ex.png b/macros/latex/contrib/tagpdf/global-ex.png Binary files differindex f1ad7558e4..90bb73d157 100644 --- a/macros/latex/contrib/tagpdf/global-ex.png +++ b/macros/latex/contrib/tagpdf/global-ex.png diff --git a/macros/latex/contrib/tagpdf/pac3.PNG b/macros/latex/contrib/tagpdf/pac3.PNG Binary files differindex f1ad7558e4..a3955577a9 100644 --- a/macros/latex/contrib/tagpdf/pac3.PNG +++ b/macros/latex/contrib/tagpdf/pac3.PNG diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx index 17fd440792..8e11951780 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx @@ -47,13 +47,13 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{implementation} % \begin{macrocode} %<@@=tag> %<*luatex> -\ProvidesExplFile {tagpdf-luatex.def} {2022-05-11} {0.94} +\ProvidesExplFile {tagpdf-luatex.def} {2022-05-29} {0.95} {tagpdf~driver~for~luatex} % \end{macrocode} % \section{Loading the lua} @@ -157,8 +157,8 @@ local ProvidesLuaModule = { name = "tagpdf", - version = "0.94", --TAGVERSION - date = "2022-05-11", --TAGDATE + version = "0.95", --TAGVERSION + date = "2022-05-29", --TAGDATE description = "tagpdf lua code", license = "The LATEX Project Public License 1.3c" } diff --git a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx index add77ce81f..120de5eb0f 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx @@ -48,7 +48,7 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{documentation} % \section{Commands} @@ -294,7 +294,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-checks-code} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-checks-code} {2022-05-29} {0.95} {part of tagpdf - code related to checks, conditionals, debugging and messages} %</header> % \end{macrocode} @@ -455,16 +455,17 @@ \msg_new:nnnn { tag } {para-hook-count-wrong} {The~number~of~automatic~begin~(#1)~and~end~(#2)~para~hooks~differ!} {This~quite~probably~a~coding~error~and~the~structure~will~be~wrong!} +%</package> % \end{macrocode} % \end{macro} % \section{Retrieving data} % \begin{macro}[EXP]{\tag_get:n} % This retrieves some data. % This is a generic command to retrieve data. Currently -% the only sensible values for the argument are |mc_tag| and |struct_tag|. +% the only sensible values for the argument are |mc_tag|, |struct_tag| +% and |struct-num|. % \begin{macrocode} -\cs_new:Npn \tag_get:n #1 { \use:c {@@_get_data_#1: } } -%</package> +%<base>\cs_new:Npn \tag_get:n #1 { \use:c {@@_get_data_#1: } } % \end{macrocode} % \end{macro} % diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf Binary files differindex 6ecb01b35d..5b8d418079 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-code.pdf +++ b/macros/latex/contrib/tagpdf/tagpdf-code.pdf diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx index e0713b61d6..003c2a2748 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{documentation} % \end{documentation} @@ -55,11 +55,11 @@ % \begin{macrocode} %<@@=tag> %<*generic> -\ProvidesExplPackage {tagpdf-mc-code-generic} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-mc-code-generic} {2022-05-29} {0.95} {part of tagpdf - code related to marking chunks - generic mode} %</generic> %<*debug> -\ProvidesExplPackage {tagpdf-debug-generic} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-debug-generic} {2022-05-29} {0.95} {part of tagpdf - debugging code related to marking chunks - generic mode} %</debug> % \end{macrocode} @@ -664,8 +664,8 @@ % the state is passed to the end command through a global var and % a global boolean. % \begin{macrocode} -%<base>\cs_new_protected:Npn \tag_mc_begin:n #1 {} -%<base>\cs_new_protected:Nn \tag_mc_end:{} +%<base>\cs_new_protected:Npn \tag_mc_begin:n #1 { \@@_whatsits: } +%<base>\cs_new_protected:Nn \tag_mc_end:{ \@@_whatsits: } %<*generic|debug> %<*generic> \cs_set_protected:Npn \tag_mc_begin:n #1 %#1 keyval diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx index af6dbd1b39..6d5e568e96 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{implementation} % The code is splitted into three parts: code shared by all engines, @@ -86,7 +86,7 @@ % \begin{macrocode} %<@@=tag> %<*luamode> -\ProvidesExplPackage {tagpdf-mc-code-lua} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-mc-code-lua} {2022-05-29} {0.95} {tagpdf - mc code only for the luamode } %</luamode> % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx index bbf8b3f720..3ac4696ad0 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{documentation} % \section{Public Commands} @@ -174,7 +174,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-mc-code-shared} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-mc-code-shared} {2022-05-29} {0.95} {part of tagpdf - code related to marking chunks - code shared by generic and luamode } %</header> @@ -308,7 +308,7 @@ % % TODO: is testing for struct the right test? % \begin{macrocode} -%<base>\cs_new_protected:Npn \tag_mc_use:n #1 {} +%<base>\cs_new_protected:Npn \tag_mc_use:n #1 { \@@_whatsits: } %<*shared> \cs_set_protected:Npn \tag_mc_use:n #1 %#1: label name { diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx index 5fa36ce06e..40122ccfb8 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{documentation} % \begin{function} @@ -87,7 +87,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-roles-code} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-roles-code} {2022-05-29} {0.95} {part of tagpdf - code related to roles and structure names} %</header> % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx index 21a41f959f..7b6a75d8ea 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{documentation} % \begin{function}{interwordspace (setup-key)} @@ -64,7 +64,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-space-code} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-space-code} {2022-05-29} {0.95} {part of tagpdf - code related to real space chars} %</header> % \end{macrocode} @@ -76,6 +76,15 @@ % \begin{macro}{interwordspace (setup-key),show-spaces (setup-key)} % \begin{macrocode} %<*package> +\keys_define:nn { @@ / setup } + { + interwordspace .choices:nn = { true, on } + { \msg_warning:nnx {tag}{sys-no-interwordspace}{\c_sys_engine_str} }, + interwordspace .choices:nn = { false, off } + { \msg_warning:nnx {tag}{sys-no-interwordspace}{\c_sys_engine_str} }, + interwordspace .default:n = true, + show-spaces .bool_set:N = \l_@@_showspaces_bool + } \sys_if_engine_pdftex:T { \sys_if_output_pdf:TF @@ -126,19 +135,6 @@ show-spaces .default:n = true } } - -\sys_if_engine_xetex:T - { - \keys_define:nn { @@ / setup } - { - interwordspace .choices:nn = { true, on } - { \msg_warning:nnn {tag}{sys-no-interwordspace}{xetex} }, - interwordspace .choices:nn = { false, off } - { \msg_warning:nnn {tag}{sys-no-interwordspace}{xetex} }, - interwordspace .default:n = true, - show-spaces .bool_set:N = \l_@@_showspaces_bool - } - } % \end{macrocode} % \end{macro} % diff --git a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx index 621ef672b8..103e337e9d 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{documentation} % \section{Public Commands} @@ -217,7 +217,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-struct-code} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-struct-code} {2022-05-29} {0.95} {part of tagpdf - code related to storing structure} %</header> % \end{macrocode} @@ -228,9 +228,8 @@ % to have a chance to avoid double structures in align etc. % % \begin{macrocode} -%<*package> -\newcounter { g_@@_struct_abs_int } -\int_gzero:N \c@g_@@_struct_abs_int +%<base>\newcounter { g_@@_struct_abs_int } +%<base>\int_gzero:N \c@g_@@_struct_abs_int % \end{macrocode} % \end{variable} % @@ -241,6 +240,7 @@ % consecutively and so the index of the seq can be used. % A seq allows easy mapping over the structures. % \begin{macrocode} +%<*package> \@@_seq_new:N \g_@@_struct_objR_seq % \end{macrocode} % \end{variable} @@ -503,18 +503,21 @@ % \end{macrocode} % \end{macro} % \begin{macro} -% {\@@_struct_kid_OBJR_gput_right:nn,\@@_struct_kid_OBJR_gput_right:xx} +% {\@@_struct_kid_OBJR_gput_right:nnn,\@@_struct_kid_OBJR_gput_right:xxx} % At last the command to add an OBJR object. This has to write an object first. % The first argument is the number of the parent structure, the second the -% (expanded) object reference of the annotation. +% (expanded) object reference of the annotation. The last argument is the page +% object reference +% % \begin{macrocode} -\cs_new_protected:Npn\@@_struct_kid_OBJR_gput_right:nn #1 #2 %#1 num of parent struct, +\cs_new_protected:Npn\@@_struct_kid_OBJR_gput_right:nnn #1 #2 #3 %#1 num of parent struct, %#2 obj reference + %#3 page object reference { \pdf_object_unnamed_write:nn { dict } { - /Type/OBJR/Obj~#2 + /Type/OBJR/Obj~#2/Pg~#3 } \@@_seq_gput_right:cx { g_@@_struct_kids_#1_seq } @@ -523,7 +526,7 @@ } } -\cs_generate_variant:Nn\@@_struct_kid_OBJR_gput_right:nn { xx } +\cs_generate_variant:Nn\@@_struct_kid_OBJR_gput_right:nnn { xxx } % \end{macrocode} % \end{macro} @@ -705,13 +708,17 @@ } %put the obj number of the annot in the kid entry, this also creates %the OBJR object - \@@_struct_kid_OBJR_gput_right:xx + \ref_label:nn {__tag_objr_page_#2 }{ tagabspage } + \@@_struct_kid_OBJR_gput_right:xxx { \l_@@_struct_stack_parent_tmpa_tl } { #1 % } + { + \pdf_pageobject_ref:n { \@@_ref_value:nnn {__tag_objr_page_#2 }{ tagabspage }{1} } + } % add the parent obj number to the parent tree: \exp_args:Nnx \@@_parenttree_add_objr:nn @@ -740,6 +747,20 @@ \prop_item:cn {g_@@_struct_\g__tag_struct_stack_current_tl _prop}{S} } } +%</package> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_get_data_struct_num:} +% this command allows \cs{tag_get:n} to get the current +% structure number with the keyword |struct_num|. We will need to handle nesting +% \begin{macrocode} +%<*base> +\cs_new:Npn \@@_get_data_struct_num: + { + \int_use:N\c@g_@@_struct_abs_int + } +%</base> % \end{macrocode} % \end{macro} % @@ -761,6 +782,7 @@ % E (struct-key) % } % \begin{macrocode} +%<*package> \keys_define:nn { @@ / struct } { label .tl_set:N = \l_@@_struct_key_label_tl, @@ -1000,7 +1022,7 @@ % % \begin{macro}{\tag_struct_begin:n,\tag_struct_end:} % \begin{macrocode} -%<base>\cs_new_protected:Npn \tag_struct_begin:n #1 {} +%<base>\cs_new_protected:Npn \tag_struct_begin:n #1 {\int_gincr:N \c@g_@@_struct_abs_int} %<base>\cs_new_protected:Npn \tag_struct_end:{} %<*package|debug> %<package>\cs_set_protected:Npn \tag_struct_begin:n #1 %#1 key-val @@ -1170,7 +1192,7 @@ % \section{Attributes and attribute classes} % \begin{macrocode} %<*header> -\ProvidesExplPackage {tagpdf-attr-code} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-attr-code} {2022-05-29} {0.95} {part of tagpdf - code related to attributes and attribute classes} %</header> % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx index a63dce4687..a8ea5b9b00 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx @@ -47,13 +47,13 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{implementation} % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-tree-code} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-tree-code} {2022-05-29} {0.95} {part of tagpdf - code related to writing trees and dictionaries to the pdf} %</header> % \end{macrocode} @@ -125,7 +125,7 @@ % \end{macro} % % \begin{macro}{\@@_tree_write_structelements:} -% This writes out the other struct elems, the absolute number is in the counter +% This writes out the other struct elems, the absolute number is in the counter. % \begin{macrocode} \cs_new_protected:Npn \@@_tree_write_structelements: { @@ -397,6 +397,7 @@ % TODO (when tabular are done or if someone requests it): IDTree % \begin{macro}{ \@@_finish_structure: } % \begin{macrocode} +\hook_new:n {tagpdf/finish/before} \cs_new_protected:Npn \@@_finish_structure: { \bool_if:NT\g_@@_active_tree_bool diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx index 5b7cf4bb40..30f5abc3b4 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-user.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-user.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.94, released 2022-05-11} +% \date{Version 0.95, released 2022-05-29} % \maketitle % \begin{documentation} % \section{Setup commands} @@ -246,7 +246,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-user} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-user} {2022-05-29} {0.95} {tagpdf - user commands} %</header> % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx index 95154859ee..32b4100163 100644 --- a/macros/latex/contrib/tagpdf/tagpdf.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf.dtx @@ -81,7 +81,7 @@ % \begin{macrocode} %<@@=tag> %<*package> -\ProvidesExplPackage {tagpdf} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf} {2022-05-29} {0.95} { A package to experiment with pdf tagging } \bool_if:nF @@ -107,7 +107,7 @@ % \end{macrocode} %<*debug> % \begin{macrocode} -\ProvidesExplPackage {tagpdf-debug} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-debug} {2022-05-29} {0.95} { debug code for tagpdf } \@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput} \end{macrocode} @@ -148,10 +148,27 @@ % \end{macrocode} % \begin{macrocode} %<*base> -\ProvidesExplPackage {tagpdf-base} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdf-base} {2022-05-29} {0.95} {part of tagpdf - provide base, no-op versions of the user commands } %</base> % \end{macrocode} +% The no-op version should behave a near enough to the real code as +% possible, so we define a command which a special in the relevant backends: +% \begin{macrocode} +%<*base> +\AddToHook{begindocument} + { + \str_case:VnF \c_sys_backend_str + { + { luatex } { \cs_new_protected:Npn \@@_whatsits: {} } + { dvisvgm } { \cs_new_protected:Npn \@@_whatsits: {} } + } + { + \cs_new_protected:Npn \@@_whatsits: {\tex_special:D {} } + } + } +%</base> +% \end{macrocode} % \section{Temporary code} % This is code which will be removed when proper support exists in LaTeX % \subsection{a LastPage label} diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf Binary files differindex d031e46f2d..d679c20913 100644 --- a/macros/latex/contrib/tagpdf/tagpdf.pdf +++ b/macros/latex/contrib/tagpdf/tagpdf.pdf diff --git a/macros/latex/contrib/tagpdf/tagpdf.tex b/macros/latex/contrib/tagpdf/tagpdf.tex index 8b1cf9f9b0..70a771de2b 100644 --- a/macros/latex/contrib/tagpdf/tagpdf.tex +++ b/macros/latex/contrib/tagpdf/tagpdf.tex @@ -4,8 +4,8 @@ \DocumentMetadata{pdfversion=2.0,lang=en-UK,testphase=phase-II} \makeatletter -\def\UlrikeFischer@package@version{0.94} -\def\UlrikeFischer@package@date{2022-05-11} +\def\UlrikeFischer@package@version{0.95} +\def\UlrikeFischer@package@date{2022-05-29} \makeatother \documentclass[DIV=12,parskip=half-,bibliography=totoc]{scrartcl} @@ -936,7 +936,7 @@ In \emph{lua mode} it tests if the mc-attribute is currently unset. You can't te \begin{docCommand}{tag_get:n}{\marg{key word}}\end{docCommand} -This command give back some variables. Currently the only working key words are \verb+mc\_tag+ and \verb+struct\_tag+. +This command give back some variables. Currently the only working key words are \verb+mc\_tag+, \verb+struct\_tag+ and \verb+struct\_num+. The last returns a number works also if only \pkg{tagpdf-base} has been loaded. \subsubsection{Luamode: global or not global -- that is the question}\label{sec:global-local} diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty index 102560ead0..677e2b5070 100644 --- a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty +++ b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty @@ -1,5 +1,5 @@ %\RequirePackage[enable-debug]{expl3}[2018/06/14] -\ProvidesExplPackage {tagpdfdocu-patches} {2022-05-11} {0.94} +\ProvidesExplPackage {tagpdfdocu-patches} {2022-05-29} {0.95} {patches/commands for the tagpdf documentation} \RequirePackage{etoolbox} diff --git a/macros/latex/contrib/unbtex/README.md b/macros/latex/contrib/unbtex/README.md index f981474adf..cd84db77d8 100644 --- a/macros/latex/contrib/unbtex/README.md +++ b/macros/latex/contrib/unbtex/README.md @@ -1,6 +1,6 @@ # UnBTeX: A class for bachelor, master, and doctoral thesis at the University of Brasilia (UnB), Brazil. -Version 1.1 2022/05/23 +Version 1.1.1 2022/05/30 Copyright (C) 2021-2022 by Henrique C. Ferreira <hcferreira@unb.br> @@ -23,10 +23,13 @@ Here is a history of changes: 1.0 (2021-12-15): Initial release 1.1 (2022-05-23): . changed \codigocutter to \numerocutter - . added a argument in \orient and \coorient to allows more general - advisor's labels, for example, "Orientadora" and "Coorientadora" . the argument of \preambulo command now admits a more general text . updated example + 1.1.1 (2022-05-30): + . changed abntex2 commands \orientador and \coorientador to do the + same as \orient and \coorient + . changed hyphenation for \preambulo text in portuguese when english + language is selected ## Overleaf diff --git a/macros/latex/contrib/unbtex/unbtex-example.pdf b/macros/latex/contrib/unbtex/unbtex-example.pdf Binary files differindex 47cc2ce427..c14ed70cbe 100644 --- a/macros/latex/contrib/unbtex/unbtex-example.pdf +++ b/macros/latex/contrib/unbtex/unbtex-example.pdf diff --git a/macros/latex/contrib/unbtex/unbtex-example.tex b/macros/latex/contrib/unbtex/unbtex-example.tex index 56860445e1..a2ef4431af 100644 --- a/macros/latex/contrib/unbtex/unbtex-example.tex +++ b/macros/latex/contrib/unbtex/unbtex-example.tex @@ -1,7 +1,7 @@ %% %% UnBTeX: A class for bachelor, master, and doctoral thesis at the %% University of Brasilia (UnB), Brazil -%% Version 1.1 2022/05/23 +%% Version 1.1.1 2022/05/30 %% Copyright (C) 2021-2022 by Henrique C. Ferreira <hcferreira@unb.br> %% %% This class file may be distributed and/or modified under the conditions @@ -79,34 +79,35 @@ % Título (no idioma do texto) \titulo{Modelo de Trabalho \\ Acadêmico com UnB\TeX} % insira \\ para forçar quebras de linha no título -% Não utilize caixa alta para o título do trabalho e nem das seções (com exceção de siglas). -% Título em português caso o texto do trabalho seja em inglês (caso contrário, deixe vazio) +% Não utilize caixa alta para o título do trabalho e nem das seções (com exceção de siglas) +% Em inglês caso o trabalho seja em inglês. \tituloestrangeiro{} +% Obrigatório título em português caso o texto do trabalho seja em inglês (caso contrário, deixe vazio) % Autores \autori[]{Carlos}{Lisboa} % \autori[]{Nome}{Sobrenome} \autorii[]{}{} % deixe os argumentos vazios se não tiver segundo autor % Orientadores -\orient[Orientador]{Prof. Dr.}{Lourenço Nassib}{Chehab} % \orient[Orientadora]{Título}{Nome}{Sobrenome} -\coorient[Coorientador]{Prof. Dr.}{}{} % deixe os argumentos vazios se não tiver coorientador -% \coorient[Orientadora]{Título}{Nome}{Sobrenome} +\orientador[Prof. Dr.]{Lourenço Nassib}{Chehab} % É possível alterar o gênero para orientadora mais abaixo, após o comando \begin{document} +\coorientador[Prof. Dr.]{}{} % deixe os argumentos vazios se não tiver coorientador +% É possível alterar o gênero para coorientadora mais abaixo, após o comando \begin{document} % Tipo de trabalho -\tipotrabalho{Trabalho de Graduação} % Dissertação de Mestrado; Tese de Doutorado -\tipocurso{Engenharia de Controle e Automação} % Programa de Pós-Graduação em Engenharia Elétrica -\preambulo{Trabalho de Graduação submetido como requisito parcial para obtenção do grau de Engenheiro de Controle e Automação} % Texto que aparece na folha de rosto e na folha de aprovação. Pode variar, por exemplo, de acordo com o tipo de trabalho (Trabalho de Conclusão de Curso, Dissertação de Mestrado, Tese de Doutorado), do grau (Bacharel, mestre, doutor) e do curso. Consulte a secretaria/coordenação do curso para saber o que deve ser escrito no preâmbulo. +\tipotrabalho{Trabalho de Graduação} % Dissertação de Mestrado; Tese de Doutorado (em português, mesmo que o trabalho seja em inglês) +\tipocurso{Engenharia de Controle e Automação} % Programa de Pós-Graduação em Engenharia Elétrica (em português, mesmo que o trabalho seja em inglês) +\preambulo{Trabalho de Graduação submetido como requisito parcial para obtenção do grau de Engenheiro de Controle e Automação} % Texto que aparece na folha de rosto e na folha de aprovação. Pode variar, por exemplo, de acordo com o tipo de trabalho (Trabalho de Conclusão de Curso, Dissertação de Mestrado, Tese de Doutorado), do grau (Bacharel, mestre, doutor) e do curso. Consulte a secretaria/coordenação do curso para saber o que deve ser escrito no preâmbulo. Use português mesmo que o trabalho seja em inglês. % Instituição \instituicao[Universidade de Brasília]{Faculdade de Tecnologia}{} -%\instituicao[Universidade de Brasília]{Faculdade de Tecnologia}{Departamento de Engenharia Elétrica} +%\instituicao[Universidade de Brasília]{Faculdade de Tecnologia}{Departamento de Engenharia Elétrica} +% Use português mesmo que o trabalho seja em inglês. % Local e data -\local{Brasilía} -\dia{23} +\local{Brasília} +\dia{30} \mes{maio} \ano{2022} -%\data{2021} % Palavras-chave (pelo menos três devem ser informadas) \pchavei{Palavra chave 1} @@ -119,12 +120,12 @@ \kwordiv{Keyword 4} % deixar vazio se não tiver % Código Cutter para a ficha catalográfica: -%A ficha catalográfica deve conter o código Cutter, que pode ser obtido com a ajuda de alguns sites da internet (por exemplo, https://cuttersonline.com/app/). O sobrenome do primeiro autor é associado a um número com três dígitos, que deve ser utilizado como argumento do comando \numerocutter presente no arquivo *.tex principal do relatório. Quando compilar o arquivo, a ficha catalográfica gerada terá antes e depois do número de três dígitos, a primeira letra do sobrenome (em maiúsculo) e a primeira letra do título do trabalho (em minúscula), respectivamente. +% A ficha catalográfica deve conter o código Cutter, que pode ser obtido com a ajuda de alguns sites da internet (por exemplo, https://cuttersonline.com/app/). O sobrenome do primeiro autor é associado a um número com três dígitos, que deve ser utilizado como argumento do comando \numerocutter presente no arquivo *.tex principal do relatório. Quando compilar o arquivo, a ficha catalográfica gerada terá antes e depois do número de três dígitos, a primeira letra do sobrenome (em maiúsculo) e a primeira letra do título do trabalho (em minúscula), respectivamente. \numerocutter{769} % Correspondente à entrada: Lisboa, Carlos % Membros da banca \membrodabancai{Prof. Dr. Lourenço Nassib Chehab, UnB/FT/ENE} % Membro 1 - Geralmente é o orientador -\membrodabancaifuncao{Orientador} +\membrodabancaifuncao{Orientador} % Em português mesmo que o trabalho seja em inglês. \membrodabancaii{Prof. Dr. Roberto Aureliano Salmeron, UnB/FT/ENM} % Membro 2 \membrodabancaiifuncao{Examinador interno} \membrodabancaiii{Prof. Dr. Anísio Spínola Teixeira, UnB/FT/CIC} % Membro 3 @@ -142,22 +143,22 @@ % ------------------------------------------------------------------------ \begin{document} -% Altere para o idioma no qual o trabalho será escrito +% Alterar para o idioma no qual o trabalho será escrito \selectlanguage{brazil} -%\selectlanguage{english} +%\selectlanguage{english} % Para trabalhos escritos em inglês, é obrigatório conter um apêndice com resumo estendido em língua portuguesa. -\IfStrEq*{\languagename}{english}{ -\thmnameen -\renewcommand{\bibname}{References} -\renewcommand{\orientadorname}{Orientador:} % Não altera para Advisor mesmo se for selecionado inglês -\renewcommand{\coorientadorname}{Coorientador:} % Alterar o gênero, se for o caso -\renewcommand{\lstlistingname}{Code} -}{ +\IfStrEq*{\languagename}{brazil}{ \thmnamebr \renewcommand{\bibname}{Referências} -\renewcommand{\orientadorname}{Orientador:} % Alterar para Orientadora, se for o caso -\renewcommand{\coorientadorname}{Coorientador:} % Alterar para Coorientadora, se for o caso \renewcommand{\lstlistingname}{Código} +\renewcommand{\orientadorname}{Orientador} % O gênero pode ser alterado para Orientadora +\renewcommand{\coorientadorname}{Coorientador} % O gênero pode ser alterado para Coorientadora +}{ +\thmnameen +\renewcommand{\bibname}{References} +\renewcommand{\lstlistingname}{Code} +\renewcommand{\orientadorname}{Orientador} % O gênero pode ser alterado para Orientadora. Não alterar para Supervisor/Advisor, mesmo que o trabalho seja em inglês. +\renewcommand{\coorientadorname}{Coorientador} % O gênero pode ser alterado para Coorientadora. Não alterar para Co-Supervisor/Co-Advisor, mesmo que o trabalho seja em inglês. } % ------------------------------------------------------------------------ @@ -265,7 +266,7 @@ Agradecimentos do segundo autor. \setlength{\absparsep}{18pt} % ajusta o espaçamento dos parágrafos do resumo \begin{resumo}[Resumo] % --- -Segundo a \textcite[seções 3.1-3.2]{NBR6028:2003}, o resumo deve ressaltar o objetivo, o método, os resultados e as conclusões do documento. A ordem e a extensão destes itens dependem do tipo de resumo (informativo ou indicativo) e do tratamento que cada item recebe no documento original. O resumo deve ser precedido da referência do documento, com exceção do resumo inserido no próprio documento. (\ldots) As palavras-chave devem figurar logo abaixo do resumo, antecedidas da expressão Palavras-chave:, separadas entre si por ponto e finalizadas também por ponto. +Segundo a \textcite[seções 3.1-3.2]{NBR6028:2003}, o resumo deve ressaltar o objetivo, o método, os resultados e as conclusões do documento. A ordem e a extensão destes itens dependem do tipo de resumo (informativo ou indicativo) e do tratamento que cada item recebe no documento original. O resumo deve ser precedido da referência do documento, com exceção do resumo inserido no próprio documento. (\ldots) As palavras-chave devem figurar logo abaixo do resumo, antecedidas da expressão Palavras-chave: separadas entre si por ponto e finalizadas também por ponto. % --- \vspace{\onelineskip} diff --git a/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex b/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex index 63ac344a42..6e02fa8eaa 100644 --- a/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex +++ b/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex @@ -187,7 +187,7 @@ pinstyle/.style={ \caption{Sistema de controle em malha fechada\label{fig:syscl}} \end{figure} -Ou então figuras podem ser incorporadas de arquivos externos, como é o caso da \autoref{fig_grafico}. Se a figura que for incluída se tratar de um diagrama, um gráfico ou uma ilustração que você mesmo produza, priorize o uso de imagens vetoriais no formato PDF. Com isso, o tamanho do arquivo final do trabalho será menor, e as imagens terão uma apresentação melhor, principalmente quando impressas, uma vez que imagens vetoriais são perfeitamente escaláveis para qualquer dimensão. Nesse caso, se for utilizar o Microsoft Excel para produzir gráficos, ou o Microsoft Word para produzir ilustrações, exporte-os como PDF e os incorpore ao documento conforme o exemplo abaixo. No entanto, para manter a coerência no uso de software livre (já que você está usando \LaTeX\ e \abnTeX), teste a ferramenta \textsf{InkScape} (\url{http://inkscape.org/}). Ela é uma excelente opção de código-livre para produzir ilustrações vetoriais, similar ao CorelDraw ou ao Adobe Illustrator. De todo modo, caso não seja possível utilizar arquivos de imagens como PDF, utilize qualquer outro formato, como JPEG, GIF, BMP, etc. Nesse caso, você pode tentar aprimorar as imagens incorporadas com o software livre \textsf{Gimp} (\url{http://www.gimp.org/}). Ele é uma alternativa livre ao Adobe Photoshop. +Figuras também podem ser incorporadas de arquivos externos, como é o caso da \autoref{fig_grafico}. Se a figura que for incluída se tratar de um diagrama, um gráfico ou uma ilustração que você mesmo produza, priorize o uso de imagens vetoriais no formato PDF. Com isso, o tamanho do arquivo final do trabalho será menor, e as imagens terão uma apresentação melhor, principalmente quando impressas, uma vez que imagens vetoriais são perfeitamente escaláveis para qualquer dimensão. Nesse caso, se for utilizar o Microsoft Excel para produzir gráficos, ou o Microsoft Word para produzir ilustrações, exporte-os como PDF e os incorpore ao documento conforme o exemplo abaixo. No entanto, para manter a coerência no uso de software livre (já que você está usando \LaTeX\ e \abnTeX), teste a ferramenta \textsf{InkScape} (\url{http://inkscape.org/}). Ela é uma excelente opção de código-livre para produzir ilustrações vetoriais, similar ao CorelDraw ou ao Adobe Illustrator. De todo modo, caso não seja possível utilizar arquivos de imagens como PDF, utilize qualquer outro formato, como JPEG, GIF, BMP, etc. Nesse caso, você pode tentar aprimorar as imagens incorporadas com o software livre \textsf{Gimp} (\url{http://www.gimp.org/}). Ele é uma alternativa livre ao Adobe Photoshop. \begin{figure}[htb] \begin{center} diff --git a/macros/latex/contrib/unbtex/unbtex.cls b/macros/latex/contrib/unbtex/unbtex.cls index db93c8313a..9ff76b48b0 100644 --- a/macros/latex/contrib/unbtex/unbtex.cls +++ b/macros/latex/contrib/unbtex/unbtex.cls @@ -1,7 +1,7 @@ %% %% UnBTeX: A class for bachelor, master, and doctoral thesis at the %% University of Brasilia (UnB), Brazil -%% Version 1.1 2022/05/23 +%% Version 1.1.1 2022/05/30 %% Copyright (C) 2021-2022 by Henrique C. Ferreira <hcferreira@unb.br> %% %% This class file may be distributed and/or modified under the conditions @@ -21,7 +21,7 @@ %% \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{unbtex}[2022/05/23 v1.1 Modelo da Universidade de Brasília baseado em abnTeX2] +\ProvidesClass{unbtex}[2022/05/30 v1.1.1 Modelo da Universidade de Brasília baseado em abnTeX2] % --- % Repassa todos os parâmetros a classe abntex2, @@ -300,10 +300,8 @@ \newcommand{\autorii}[3][]{\def\autoriinome{#2}\def\autoriisobrenome{#3}} % Orientadores -\newcommand{\orient}[4][]{\def\orientgenero{#1}\def\orienttitulo{#2}\def\orientnome{#3}\def\orientsobrenome{#4}} -\newcommand{\coorient}[4][]{\def\coorientgenero{#1}\def\coorienttitulo{#2}\def\coorientnome{#3}\def\coorientsobrenome{#4}} -\orientador[\orientgenero:]{\orienttitulo\\orientnome\\orientsobrenome} -\coorientador[\coorientgenero:]{\coorienttitulo\ \coorientnome\ \coorientsobrenome} +\renewcommand{\orientador}[3][]{\def\orienttitulo{#1}\def\orientnome{#2}\def\orientsobrenome{#3}} +\renewcommand{\coorientador}[3][]{\def\coorienttitulo{#1}\def\coorientnome{#2}\def\coorientsobrenome{#3}} % Tipo de trabalho \newcommand{\tipocurso}[1]{\def\imprimircurso{#1}} @@ -408,15 +406,20 @@ \hspace{.45\textwidth} \begin{minipage}{.5\textwidth} {\SingleSpacing + \IfStrEq*{\languagename}{english}{ + \begin{otherlanguage*}{brazil} + \imprimirpreambulo + \end{otherlanguage*}}{ \imprimirpreambulo} + } \end{minipage}% \vfill }% -{\large\imprimirorientadorRotulo\ \orienttitulo\ \orientnome\ \orientsobrenome\par} +{\large \orientadorname: \orienttitulo\ \orientnome\ \orientsobrenome\par} \abntex@ifnotempty{\coorientnome}{% - {\large\imprimircoorientadorRotulo\ \coorienttitulo\ \coorientnome\ \coorientsobrenome}% + {\large\coorientadorname: \coorienttitulo\ \coorientnome\ \coorientsobrenome}% }% \vfill\vfill @@ -444,7 +447,7 @@ \begin{tabular}{p{1.25cm} p{10.25cm}} & \autorisobrenome, \autorinome. \\ \StrChar{\autorisobrenome}{1}\imprimircutter\StrChar{\imprimirtitulo}{1}[\SUBtemp]\MakeLowercase{\SUBtemp} -& \hspace{0.5cm} \StrDel{\imprimirtitulo}{\\} ~/ \autorinome\ \autorisobrenome; \ifthenelse{\equal{\autoriinome}{}}{}{\autoriinome\ \autoriisobrenome;} \MakeLowercase\orientgenero\ \orientnome\ \orientsobrenome \ifthenelse{\equal{\coorientnome}{}}{.}{;~\MakeLowercase\coorientgenero\ \coorientnome\ \coorientsobrenome.} \texttt{-{}-} \imprimirlocal, \imprimirano. \\ +& \hspace{0.5cm} \StrDel{\imprimirtitulo}{\\} ~/ \autorinome\ \autorisobrenome; \ifthenelse{\equal{\autoriinome}{}}{}{\autoriinome\ \autoriisobrenome;} \MakeLowercase\orientadorname\ \orientnome\ \orientsobrenome \ifthenelse{\equal{\coorientnome}{}}{.}{;~\MakeLowercase\coorientadorname\ \coorientnome\ \coorientsobrenome.} \texttt{-{}-} \imprimirlocal, \imprimirano. \\ & \hspace{0.5cm}\thelastpage~p. \\ & \\ & \hspace{0.5cm} \imprimirtipotrabalho\ (\imprimircurso)\ \texttt{-{}-} \instituicaoi, \imprimirano. \\ @@ -486,7 +489,12 @@ \hspace{.45\textwidth} \begin{minipage}{.5\textwidth} {\SingleSpacing + \IfStrEq*{\languagename}{english}{ + \begin{otherlanguage*}{brazil} + \imprimirpreambulo + \end{otherlanguage*}}{ \imprimirpreambulo} + } \end{minipage}% \vfill }% |