From f3da2d2d43f8edbd18674b2ca6fa6b1a2012f7d0 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sat, 23 Mar 2024 03:01:23 +0000 Subject: CTAN sync 202403230301 --- .../biblatex/doc/examples/01-introduction.run.xml | 93 ----------- macros/latex/contrib/hvextern/Changes | 2 + macros/latex/contrib/hvextern/doc/hvextern.pdf | Bin 1481699 -> 1492062 bytes macros/latex/contrib/hvextern/doc/hvextern.tex | 6 +- macros/latex/contrib/hvextern/latex/hvextern.sty | 12 +- macros/latex/contrib/starray/README.md | 9 +- macros/latex/contrib/starray/doc/starray.pdf | Bin 284852 -> 285149 bytes macros/latex/contrib/starray/doc/starray.tex | 2 +- macros/latex/contrib/starray/latex/starray.sty | 81 +++++----- macros/latex/contrib/ufrgscca/README.md | 9 +- macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf | Bin 593583 -> 593642 bytes macros/latex/contrib/ufrgscca/doc/ufrgscca.tex | 2 +- .../latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty | 12 +- .../contrib/ufrgscca/latex/ufrgscca-base-en.def | 2 +- .../contrib/ufrgscca/latex/ufrgscca-base-ptBR.def | 2 +- .../contrib/ufrgscca/latex/ufrgscca-coord.sty | 101 ++++-------- .../latex/contrib/ufrgscca/latex/ufrgscca-core.sty | 40 ++--- .../contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex | 2 +- .../contrib/ufrgscca/latex/ufrgscca-cover.sty | 14 +- .../latex/contrib/ufrgscca/latex/ufrgscca-curr.sty | 16 +- .../contrib/ufrgscca/latex/ufrgscca-forms.sty | 12 +- .../contrib/ufrgscca/latex/ufrgscca-forms.tex | 2 +- .../contrib/ufrgscca/latex/ufrgscca-lists.sty | 12 +- .../latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty | 12 +- .../contrib/ufrgscca/latex/ufrgscca-terms-en.tex | 2 +- .../contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex | 2 +- macros/latex/contrib/ufrgscca/latex/ufrgscca.cls | 16 +- macros/luatex/latex/bezierplot/README | 4 +- macros/luatex/latex/bezierplot/bezierplot-doc.pdf | Bin 251276 -> 266461 bytes macros/luatex/latex/bezierplot/bezierplot.lua | 176 ++++++++------------- macros/luatex/latex/bezierplot/bezierplot.sty | 4 +- 31 files changed, 228 insertions(+), 419 deletions(-) delete mode 100644 macros/latex/contrib/biblatex/doc/examples/01-introduction.run.xml (limited to 'macros') diff --git a/macros/latex/contrib/biblatex/doc/examples/01-introduction.run.xml b/macros/latex/contrib/biblatex/doc/examples/01-introduction.run.xml deleted file mode 100644 index 4b744a395c..0000000000 --- a/macros/latex/contrib/biblatex/doc/examples/01-introduction.run.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - latex - - 01-introduction.aux - 01-introduction-blx.bib - - - 01-introduction.bbl - - - blx-dm.def - blx-compat.def - blx-bibtex.def - biblatex.def - standard.bbx - authoryear.bbx - authoryear.cbx - biblatex.cfg - english.lbx - american.lbx - - - - bibtex - - bibtex - - 01-introduction - - - 01-introduction.aux - - - 01-introduction.bbl - - - 01-introduction.bbl - - - 01-introduction.aux - 01-introduction-blx.bib - - - biblatex-examples.bib - - - biblatex.bst - - - diff --git a/macros/latex/contrib/hvextern/Changes b/macros/latex/contrib/hvextern/Changes index 2d7f41812e..430476f263 100644 --- a/macros/latex/contrib/hvextern/Changes +++ b/macros/latex/contrib/hvextern/Changes @@ -1,5 +1,7 @@ hvextern.sty ---------------- +v 0.40 2024-03-22 - added option mposttex for metapost program which + can be tex (default) | latex v 0.39 2024-01-30 - fixed bug with check for force option v 0.38 2023-12-08 - change internal macroname \Write@Ex to \hv@Write@EX v 0.37b 2023-11-22 - fix typo in documentation diff --git a/macros/latex/contrib/hvextern/doc/hvextern.pdf b/macros/latex/contrib/hvextern/doc/hvextern.pdf index 793507b058..cc8d172784 100644 Binary files a/macros/latex/contrib/hvextern/doc/hvextern.pdf and b/macros/latex/contrib/hvextern/doc/hvextern.pdf differ diff --git a/macros/latex/contrib/hvextern/doc/hvextern.tex b/macros/latex/contrib/hvextern/doc/hvextern.tex index 7172969db8..77181285d0 100644 --- a/macros/latex/contrib/hvextern/doc/hvextern.tex +++ b/macros/latex/contrib/hvextern/doc/hvextern.tex @@ -1,4 +1,4 @@ -%% $Id: hvextern.tex 853 2024-01-30 20:34:00Z herbert $ +%% $Id: hvextern.tex 883 2024-03-22 19:29:21Z herbert $ \DocumentMetadata{}% for lualatex and pstricks \documentclass[english,paper=a4,twoside,usegeometry]{scrartcl} \usepackage{babel} @@ -1657,7 +1657,9 @@ endfig; end; \end{externalDocument} - +For \MP\ exists an optional argument \Lkeyword{mposttex} which is preset +to \Lkeyval{tex}. If you want to run the \MP\ part with \LaTeX\ instead of +\TeX\ then use \texttt{mposttex=latex}. \subsection{plain\TeX\ example} diff --git a/macros/latex/contrib/hvextern/latex/hvextern.sty b/macros/latex/contrib/hvextern/latex/hvextern.sty index bfe8f75e8f..16e127376f 100644 --- a/macros/latex/contrib/hvextern/latex/hvextern.sty +++ b/macros/latex/contrib/hvextern/latex/hvextern.sty @@ -1,4 +1,4 @@ -%% $Id: hvextern.sty 853 2024-01-30 20:34:00Z herbert $ +%% $Id: hvextern.sty 882 2024-03-22 19:23:40Z herbert $ %% This is file `hvextern.sty', %% %% Copyright (C) 2016-24 @@ -12,8 +12,8 @@ %% and version 1.3c or later is part of all distributions of LaTeX %% version 2005/12/01 or later. -\def\hvexternFileversion{0.39} -\ProvidesFile{hvextern}[2024/01/30 v\hvexternFileversion: package for running external documents (HV)] +\def\hvexternFileversion{0.40} +\ProvidesFile{hvextern}[2024/03/22 v\hvexternFileversion: package for running external documents (HV)] \newif\ifhv@extern@checkCode \hv@extern@checkCodefalse @@ -148,6 +148,7 @@ \define@key{hv}{belowpreambleskip}[2pt]{\setlength\hv@extern@belowpreambleskip{#1}} \define@key{hv}{belowbodyskip}[\smallskipamount]{\setlength\hv@extern@belowbodyskip{#1}} \define@key{hv}{belowskip}[\medskipamount]{\setlength\hv@extern@belowskip{#1}} +\define@key{hv}{mposttex}[tex]{\def\hv@extern@mposttex{#1 }} \def\hvExternSetKeys#1{\setkeys{hv}{#1}} @@ -175,7 +176,7 @@ ext=tex,% file extension float=false,% nicht als Gleitumgebung floatsetting=!htb,% placement - force=false,% Compiler, auch wenn PDF existiert? + force=true,% Compiler, auch wenn PDF existiert? frame=false,% keinen Rahmen um Abbildung framesep=\the\fboxsep,% grfOptions={},% Optionen der einzubindenden Grafik @@ -206,6 +207,7 @@ vshift=\z@,% raise object (pdf) with \raisebox{}{} xindex=false,% xindex laufen lassen? xindexOptions={},% options for xindex + mposttex=tex,% mpost program tex or latex }% } @@ -345,7 +347,7 @@ \def\hv@extern@runMP#1#2#3#4{% path compiler file extension \hv@ex@typeout{running #1#2 #3#4}% - \ShellEscape{#1#2\space -tex=tex\space #3#4}% + \ShellEscape{#1#2\space -tex=\hv@extern@mposttex\space #3#4}% \hv@ex@typeout{running #1tex #3}% \ShellEscape{#1tex\space "\string\input\space epsf\string\relax\string\nopagenumbers\string\epsfbox{#3.1}\string\bye"}% \hv@ex@typeout{running #1dvips #3}% diff --git a/macros/latex/contrib/starray/README.md b/macros/latex/contrib/starray/README.md index 7522d5faee..c36549c601 100644 --- a/macros/latex/contrib/starray/README.md +++ b/macros/latex/contrib/starray/README.md @@ -9,8 +9,8 @@ For more details, see the documentation, -------------- ## Requirements -* none besides a fairly recent LaTeX distribution as recent as 2022/06/01 -(with the new in kernel *\ProcessKeyOptions* and *\NewDocumentCommand*) +* none besides a fairly recent LaTeX distribution as recent as 2023/11/01 +(with the new in kernel *\ProcessKeyOptions* and *\NewDocumentCommand* and *\prop_new_linked:*) ## Installation The stable version is available at [CTAN](https://ctan.org/pkg/starray). @@ -72,7 +72,10 @@ The Current Maintainer of this work is Alceu Frigeri ------------- ## Changelog -* Version 1.7 (this) +* Version 1.8 (this) + - code speedup thanks to 'linked' property lists. Code now relies on a more recent l3kernel. + +* Version 1.7 - code cleanup. Still related to issues: #6, https://github.com/latex3/latex3/issues/1460 and https://github.com/latex3/latex3/issues/1466 - documented \starray_get_uniqueID (helper function, see documentation) diff --git a/macros/latex/contrib/starray/doc/starray.pdf b/macros/latex/contrib/starray/doc/starray.pdf index 4d8645bdab..8302c0d0d9 100644 Binary files a/macros/latex/contrib/starray/doc/starray.pdf and b/macros/latex/contrib/starray/doc/starray.pdf differ diff --git a/macros/latex/contrib/starray/doc/starray.tex b/macros/latex/contrib/starray/doc/starray.tex index d6ef94da90..171cd37038 100644 --- a/macros/latex/contrib/starray/doc/starray.tex +++ b/macros/latex/contrib/starray/doc/starray.tex @@ -15,7 +15,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {1.7} {2024/03/17} +%% This is version {1.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/starray diff --git a/macros/latex/contrib/starray/latex/starray.sty b/macros/latex/contrib/starray/latex/starray.sty index 72cd150410..43b2f39851 100644 --- a/macros/latex/contrib/starray/latex/starray.sty +++ b/macros/latex/contrib/starray/latex/starray.sty @@ -12,22 +12,22 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {1.7} {2024/03/17} +%% This is version {1.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/starray %% %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] - +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplPackage {starray} - {2024/03/17} - {1.7} + {2024/03/22} + {1.8} {A structured array/hash of properties} + %%%%%%% %%% %%% Just an attempt of having my packages info in a regular way @@ -38,8 +38,8 @@ { name .code:n = {starray} , prefix .code:n = {starray} , - date .code:n = {2024/03/17}, - version .code:n = {1.7} , + date .code:n = {2024/03/22}, + version .code:n = {1.8} , description .code:n = {A~structured~array/hash~of~properties} } \cs_if_exist:NF \PkgInfo @@ -167,6 +167,14 @@ %%%%%%%%%%%%%%% %%%%%%%%%%%%%%% +\msg_new:nnnn {starray} {strict / Expl} + { + Expl~ version~ too~ old.~ Update~ needed! + } + { + Expl~ version~ too~ old.~ Update~ needed! + } + \msg_new:nnnn {starray} {strict / (re)define} { (ID:#1)~'#2'~already~defined! @@ -291,6 +299,7 @@ +\IfExplAtLeastTF{2024-03-14}{}{\msg_warning:nn {starray} {strict / Expl} } \cs_new_protected:Npn \__starray_msg:nnnnn #1#2#3#4#5 @@ -417,32 +426,28 @@ %%%%%%%%%%%%%%% %%%%%%%%%%%%%%% -% -% -\prg_new_conditional:Npnn \__starray_if_free:n #1 {p, T, F, TF} - { - \prop_if_exist:cTF {#1} - { \prg_return_false: } - { \prg_return_true: } - } -\prg_generate_conditional_variant:Nnn \__starray_if_free:n {e} {p, T, F, TF} +\prg_new_eq_conditional:NNn \__starray_if_exist:n \prop_if_exist:c {p, T, F, TF} + +\prg_generate_conditional_variant:Nnn \__starray_if_exist:n {e} {p, T, F, TF} \prg_new_conditional:Npnn \starray_if_exist:n #1 {p, T, F, TF} { - \__starray_if_free:nTF {\l__starray_prefix_tl #1 _def_prop} - { \prg_return_false: } + \__starray_if_exist:nTF {\l__starray_prefix_tl #1 _def_prop} { \prg_return_true: } + { \prg_return_false: } } -\prg_new_conditional:Npnn \__starray_if_valid:n #1 {p, T, F, TF} - { - \bool_lazy_and:nnTF {\prop_if_exist_p:c {#1}} {\prop_item:cn {#1} {is_starray}} - { \prg_return_true: } - { \prg_return_false: } - } +%\prg_new_conditional:Npnn \__starray_if_valid:n #1 {p, T, F, TF} +% { +% \bool_lazy_and:nnTF {\prop_if_exist_p:c {#1}} {\prop_item:cn {#1} {is_starray}} +% { \prg_return_true: } +% { \prg_return_false: } +% } + +\prg_new_eq_conditional:NNn \__starray_if_valid:n \prop_if_exist:c {p, T, F, TF} \prg_generate_conditional_variant:Nnn \__starray_if_valid:n {e} {p, T, F, TF} @@ -485,19 +490,9 @@ is_starray = \c_true_bool , } - \prop_gput:cne - { \l__starray_prefix_tl #2 _base_prop } - { cnt } - { \use:c { \l__starray_prefix_tl #2 _base_cnt_int } } - - \prop_gput:cne - { \l__starray_prefix_tl #2 _base_prop } - { iter } - { \use:c {\l__starray_prefix_tl #2 _base_iter_int} } - - \prop_new:c {\l__starray_prefix_tl #2 _base_idxhash_prop} + \prop_new_linked:c {\l__starray_prefix_tl #2 _base_idxhash_prop} - \prop_new:c {\l__starray_prefix_tl #2 _base_iterhash_prop} + \prop_new_linked:c {\l__starray_prefix_tl #2 _base_iterhash_prop} } \cs_generate_variant:Nn \__starray_base_new:nn { ee } @@ -541,13 +536,13 @@ % needs protection. \cs_new_protected:Npn \starray_new:n #1 { - \__starray_if_free:nTF {\l__starray_prefix_tl #1 _def_prop} + \__starray_if_exist:nTF {\l__starray_prefix_tl #1 _def_prop} { - \__starray_new:e {#1 } - \__starray_base_new:ee {#1}{#1} % TODO: might be incomplete !!! + \msg_warning:nnnn {starray} {strict / (re)define} {new:1} {#1} } { - \msg_warning:nnnn {starray} {strict / (re)define} {new:1} {#1} + \__starray_new:e {#1 } + \__starray_base_new:ee {#1}{#1} % TODO: might be incomplete !!! } } @@ -555,13 +550,13 @@ % needs protection. \prg_new_protected_conditional:Npnn \starray_new:n #1 {T, F, TF} { - \__starray_if_free:nTF {\l__starray_prefix_tl #1 _def_prop} + \__starray_if_exist:nTF {\l__starray_prefix_tl #1 _def_prop} + { \prg_return_false: } { \__starray_new:e {#1 } \__starray_base_new:ee {#1}{#1} % TODO: might be incomplete !!! \prg_return_true: } - { \prg_return_false: } } %%%%%%%%%%%%%%% @@ -915,7 +910,7 @@ { \int_use:c {\l__starray_prefix_tl #1 _base_cnt_int} } } - \prop_new:c + \prop_new_linked:c { \l__starray_prefix_tl #1 _ \l__starray_tmpa_tl _term_prop } \prop_get:cnN {\l__starray_prefix_tl #1 _base_prop} {def_ref} \l_tmpb_tl diff --git a/macros/latex/contrib/ufrgscca/README.md b/macros/latex/contrib/ufrgscca/README.md index 7de453521e..7c4834e2e7 100644 --- a/macros/latex/contrib/ufrgscca/README.md +++ b/macros/latex/contrib/ufrgscca/README.md @@ -13,8 +13,8 @@ For more details, see the documentation, -------------- ## Requirements -* a fairly recent LaTeX distribution as recent as 2022/06/01 -(with the new in kernel *\ProcessKeyOptions* and *\NewDocumentCommand*) +* a fairly recent LaTeX distribution as recent as 2023/11/01 +(with the new in kernel *\ProcessKeyOptions* and *\NewDocumentCommand* and *\prop_new_linked:*) ## Installation The stable version is available at [CTAN](https://ctan.org/pkg/ufrgscca). @@ -107,7 +107,10 @@ The Current Maintainer of this work is Alceu Frigeri ## Changelog -* Version 2.7 (this) +* Version 2.8 (this) + - code speedup thanks to 'linked' property lists. Code now relies on a more recent l3kernel. + +* Version 2.7 - fixing issue https://github.com/alceu-frigeri/ufrgscca/issues/1 - removing all V-expansion of property/sequence lists to avoid further issues with l3kernel issues: https://github.com/alceu-frigeri/starray/issues/6, https://github.com/latex3/latex3/issues/1460 and https://github.com/latex3/latex3/issues/1466 diff --git a/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf b/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf index 91e81cb140..b0f6dcc88a 100644 Binary files a/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf and b/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf differ diff --git a/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex b/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex index 9905684720..c230090a62 100644 --- a/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex +++ b/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex @@ -15,7 +15,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty index fcb7856e39..7be544b628 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,13 +22,13 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplPackage {ufrgscca-abnt} - {2024/03/10} - {2.7} + {2024/03/22} + {2.8} {UFRGS/CCA ABNT layout} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-abnt} , prefix .code:n = {ufrgscca} , - date .code:n = {2024/03/10}, - version .code:n = {2.7} , + date .code:n = {2024/03/22}, + version .code:n = {2.8} , description .code:n = {UFRGS/CCA~ abnt~layout} } \cs_if_exist:NF \PkgInfo diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def index 3b3fca1df7..281a093f06 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def index a3a71fe6bb..5eea80143b 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty index c258ab8b34..f487134fef 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,13 +22,13 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplPackage {ufrgscca-coord} - {2024/03/10} - {2.7} + {2024/03/22} + {2.8} {UFRGS/CCA coord commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-coord} , prefix .code:n = {ufrgscca} , - date .code:n = {2024/03/10}, - version .code:n = {2.7} , + date .code:n = {2024/03/22}, + version .code:n = {2.8} , description .code:n = {UFRGS/CCA~ coordination~ report~ commands} } \cs_if_exist:NF \PkgInfo @@ -58,16 +58,6 @@ -%%%%%%% -%%% -%%% V-less : Blocks of code affected: -%%% Coord (checklist) 'kind of easy' -%%% curr (all!) 'to be seen how' -%%% ppc (all!) 'to be seen how' -%%% -%%%%%%% - - \cs_generate_variant:Nn \tl_set:Nn {Ne} @@ -123,7 +113,6 @@ \RequirePackage{ufrgscca-core} \RequirePackage{ufrgscca-forms} -%\RequirePackage{pgfcalendar} \starray_new:n {prof} @@ -788,28 +777,11 @@ } -\prop_new:N \l__ufrgscca_check_prop -\prop_new:N \l__ufrgscca_checkA_prop -\prop_new:N \l__ufrgscca_checkB_prop -\prop_new:N \l__ufrgscca_checkref_prop - \tl_new:N \l__ufrgscca_chkID_tl \tl_new:N \l__ufrgscca_chkIDa_tl \tl_new:N \l__ufrgscca_chkIDb_tl \NewDocumentCommand{\checkdef}{mmm}{ -% \starray_get_prop:nnN {activity}{chkmarked}\l__ufrgscca_check_prop -% \prop_gput:Nnn \l__ufrgscca_check_prop {#1}{\__ufrgscca_checkedbox:~\ #3} -% \starray_gset_prop:nnV {activity}{chkmarked}\l__ufrgscca_check_prop -% -% \starray_get_prop:nnN {activity}{chkunmarked}\l__ufrgscca_check_prop -% \prop_gput:Nnn \l__ufrgscca_check_prop {#1}{\__ufrgscca_uncheckedbox:~\ #3} -% \starray_gset_prop:nnV {activity}{chkunmarked}\l__ufrgscca_check_prop -% -% \starray_get_prop:nnN {activity}{chkref}\l__ufrgscca_check_prop -% \prop_gput:Nnn \l__ufrgscca_check_prop {#2}{#1} -% \starray_gset_prop:nnV {activity}{chkref}\l__ufrgscca_check_prop - \starray_get_prop:nnN {activity}{chkID}\l__ufrgscca_chkID_tl \prop_gput:cnn {l__ufrgscca_ \l__ufrgscca_chkID_tl _chkmarked_prop} {#1}{\__ufrgscca_checkedbox:~\ #3} \prop_gput:cnn {l__ufrgscca_ \l__ufrgscca_chkID_tl _chkunmarked_prop} {#1}{\__ufrgscca_uncheckedbox:~\ #3} @@ -824,64 +796,47 @@ \NewDocumentCommand{\checklist}{O{}m}{ \tl_if_blank:nF {#1} { \starray_set_iter_from_hash:nn {activity}{#1} } -% \starray_get_prop:nnN {student}{checklist}\l__ufrgscca_check_prop -% \starray_get_prop:nnN {activity}{chkmarked}\l__ufrgscca_checkB_prop -% \starray_get_prop:nnN {activity}{chkref}\l__ufrgscca_checkref_prop - %% V-less : checklists as hash_.... prop + \starray_get_prop:nnN {student} {chkID} \l__ufrgscca_chkIDa_tl \starray_get_prop:nnN {activity} {chkID} \l__ufrgscca_chkIDb_tl - \prop_set_eq:Nc \l__ufrgscca_check_prop {l__ufrgscca_ \l__ufrgscca_chkIDa_tl _checklist_prop} - \prop_set_eq:Nc \l__ufrgscca_checkB_prop {l__ufrgscca_ \l__ufrgscca_chkIDb_tl _chkmarked_prop} - \prop_set_eq:Nc \l__ufrgscca_checkref_prop {l__ufrgscca_ \l__ufrgscca_chkIDb_tl _chkref_prop} - + \clist_map_inline:nn {#2} { - \prop_get:NnNT \l__ufrgscca_checkref_prop {##1} \l__ufrgscca_checkref_tl + \prop_get:cnNT {l__ufrgscca_ \l__ufrgscca_chkIDb_tl _chkref_prop} {##1} \l__ufrgscca_checkref_tl { - \prop_get:NeN \l__ufrgscca_checkB_prop {\l__ufrgscca_checkref_tl} \l__ufrgscca_checkB_tl - \prop_gput:Nee \l__ufrgscca_check_prop {\l__ufrgscca_checkref_tl} {\l__ufrgscca_checkB_tl} + \prop_get:ceN {l__ufrgscca_ \l__ufrgscca_chkIDb_tl _chkmarked_prop} {\l__ufrgscca_checkref_tl} \l__ufrgscca_checkB_tl + \prop_gput:cee {l__ufrgscca_ \l__ufrgscca_chkIDa_tl _checklist_prop} {\l__ufrgscca_checkref_tl} {\l__ufrgscca_checkB_tl} } } -% \starray_gset_prop:nnV {student}{checklist}{\l__ufrgscca_check_prop} - %% V-less : could be improved, direct reference - \prop_set_eq:cN {l__ufrgscca_ \l__ufrgscca_chkIDa_tl _checklist_prop} \l__ufrgscca_check_prop } -\prop_new:N \l__ufrgscca_check_list_prop \tl_new:N \l__ufrgscca_tmpx_tl \tl_new:N \l__ufrgscca_tmpy_tl \tl_new:N \l__ufrgscca_table_tl \cs_new_protected:Npn \__ufrgscca_checktable_lines:nn #1#2 { -% \starray_get_prop:nnN {activity} {chkunmarked} \l__ufrgscca_checkA_prop -% \starray_get_prop:nnN {student} {checklist} \l__ufrgscca_check_prop - %% V-less : checklists as hash_.... prop \starray_get_prop:nnN {student} {chkID} \l__ufrgscca_chkIDa_tl \starray_get_prop:nnN {activity} {chkID} \l__ufrgscca_chkIDb_tl - \prop_set_eq:Nc \l__ufrgscca_check_prop {l__ufrgscca_ \l__ufrgscca_chkIDa_tl _checklist_prop} - \prop_set_eq:Nc \l__ufrgscca_checkA_prop {l__ufrgscca_ \l__ufrgscca_chkIDb_tl _chkunmarked_prop} - -% \prop_show:N \l__ufrgscca_check_prop -% \prop_show:c {l__ufrgscca_ \l__ufrgscca_chkIDa_tl _checklist_prop} + { + \prop_map_inline:cn {l__ufrgscca_ \l__ufrgscca_chkIDa_tl _checklist_prop} + { \prop_put:cnn {l__ufrgscca_ \l__ufrgscca_chkIDb_tl _chkunmarked_prop} {##1}{##2} } - \prop_map_inline:Nn \l__ufrgscca_check_prop - { \prop_gput:Nnn \l__ufrgscca_checkA_prop {##1}{##2} } - - \tl_gclear:N \l__ufrgscca_table_tl - \clist_map_inline:nn {#1} - { - \tl_gclear:N \l_tmpa_tl - \clist_map_inline:nn {#2} - { - \tl_gset:Nn \l__ufrgscca_tmpx_tl {##1####1} - \prop_get:NeNTF \l__ufrgscca_checkA_prop {\l__ufrgscca_tmpx_tl} \l__ufrgscca_tmpy_tl - {\tl_gput_right:Ne \l__ufrgscca_table_tl {\l_tmpa_tl~ \l__ufrgscca_tmpy_tl}} - {\tl_gput_right:Ne \l__ufrgscca_table_tl {\l_tmpa_tl~ }} - \tl_gset:Nn \l_tmpa_tl {~&~} - } - \tl_put_right:Nn \l__ufrgscca_table_tl {\\*} + \tl_gclear:N \l__ufrgscca_table_tl + \clist_map_inline:nn {#1} + { + \tl_gclear:N \l_tmpa_tl + \clist_map_inline:nn {#2} + { + \tl_gset:Nn \l__ufrgscca_tmpx_tl {##1####1} + \prop_get:ceNTF {l__ufrgscca_ \l__ufrgscca_chkIDb_tl _chkunmarked_prop} {\l__ufrgscca_tmpx_tl} \l__ufrgscca_tmpy_tl + {\tl_gput_right:Ne \l__ufrgscca_table_tl {\l_tmpa_tl~ \l__ufrgscca_tmpy_tl}} + {\tl_gput_right:Ne \l__ufrgscca_table_tl {\l_tmpa_tl~ }} + \tl_gset:Nn \l_tmpa_tl {~&~} + } + \tl_gput_right:Nn \l__ufrgscca_table_tl {\\*} + } } \l__ufrgscca_table_tl } diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty index f250c0d27c..17235f5ed3 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,13 +22,13 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplPackage {ufrgscca-core} - {2024/03/10} - {2.7} + {2024/03/22} + {2.8} {UFRGS/CCA core commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-core} , prefix .code:n = {ufrgscca} , - date .code:n = {2024/03/10}, - version .code:n = {2.7} , + date .code:n = {2024/03/22}, + version .code:n = {2.8} , description .code:n = {UFRGS/CCA~core~commands/data} } \cs_if_exist:NF \PkgInfo @@ -63,13 +63,6 @@ % starray based student commands% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%\def\tc@IDrule{30mm}% -%%%%\def\tc@emailrule{40mm}% -%%%%\def\tc@namerule{50mm}% -%%%%\def\tc@titlerule{40mm}% -%%%%\def\tc@phonerule{20mm}% -%%%%\def\tc@agreerule{25mm}% -%%%%\def\tc@daterule{15mm}% \dim_new:N \l__ufrgscca_ID_rule_dim \dim_new:N \l__ufrgscca_email_rule_dim @@ -245,7 +238,7 @@ } -\prop_new:N \l__ufrgscca_forms_prop +\prop_new_linked:N \l__ufrgscca_forms_prop \starray_new:n {activity} \starray_def_from_keyval:nn {activity} { @@ -286,13 +279,9 @@ {} {} \starray_gset_prop:nnV {activity}{chkID} \l__ufrgscca_tmpID_tl - \prop_new:c {l__ufrgscca_ \l__ufrgscca_tmpID_tl _chkmarked_prop} - \prop_new:c {l__ufrgscca_ \l__ufrgscca_tmpID_tl _chkunmarked_prop} - \prop_new:c {l__ufrgscca_ \l__ufrgscca_tmpID_tl _chkref_prop} -% \prop_show:c {l__ufrgscca_ \l__ufrgscca_tmpID_tl _chkmarked_prop} -% \starray_gset_prop:nnV {activity}{chkmarked}\c_empty_prop -% \starray_gset_prop:nnV {activity}{chkunmarked}\c_empty_prop -% \starray_gset_prop:nnV {activity}{chkref}\c_empty_prop + \prop_new_linked:c {l__ufrgscca_ \l__ufrgscca_tmpID_tl _chkmarked_prop} + \prop_new_linked:c {l__ufrgscca_ \l__ufrgscca_tmpID_tl _chkunmarked_prop} + \prop_new_linked:c {l__ufrgscca_ \l__ufrgscca_tmpID_tl _chkref_prop} } @@ -401,7 +390,6 @@ {} \starray_gset_prop:nnV {student}{chkID} \l__ufrgscca_tmpID_tl \prop_new:c {l__ufrgscca_ \l__ufrgscca_tmpID_tl _checklist_prop} - %\starray_gset_prop:nnV {student}{checklist}\c_empty_prop }% % \NewDocumentCommand{\eDataSet}{m}{ @@ -650,14 +638,6 @@ }% -%%%\NewDocumentCommand{\coadvisoremptyifnone}{}{%% -%%% \starray_get_cnt:nN {student.coadvisor} \l_tmpa_int -%%% \int_if_zero:nTF \l_tmpa_int -%%% { \starray_new_term:nn {student.coadvisor}{} } -%%% {} -%%%}% - - \NewDocumentCommand{\tutor}{O{}mmO{}}{%% \starray_new_term:nn {student.tutor}{} \__ufrgscca_set_prof:nnnnn {tutor}{#1}{#2}{#3}{#4} diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex index b88c90d7b5..9193806500 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty index e4f32e9687..8ab5c32e66 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,13 +22,13 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplPackage {ufrgscca-cover} - {2024/03/10} - {2.7} + {2024/03/22} + {2.8} {UFRGS/CCA cover commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-cover} , prefix .code:n = {ufrgscca} , - date .code:n = {2024/03/10}, - version .code:n = {2.7} , + date .code:n = {2024/03/22}, + version .code:n = {2.8} , description .code:n = {UFRGS/CCA~ cover~pages} } \cs_if_exist:NF \PkgInfo @@ -83,7 +83,7 @@ }%% -\prop_new:N \l__ufrgscca_coverpages_prop +\prop_new_linked:N \l__ufrgscca_coverpages_prop \NewDocumentCommand{\SetCoverFields}{mm+m}{ diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty index 892d0f0e51..1ae0a418a3 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,13 +22,13 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplPackage {ufrgscca-curr} - {2024/03/10} - {2.7} + {2024/03/22} + {2.8} {UFRGS/CCA curricula commands} %%%%%%% @@ -41,8 +41,8 @@ { name .code:n = {ufrgscca-curr} , prefix .code:n = {ufrgscca} , - date .code:n = {2024/03/10}, - version .code:n = {2.7} , + date .code:n = {2024/03/22}, + version .code:n = {2.8} , description .code:n = {UFRGS/CCA~ curricula~ commands} } \cs_if_exist:NF \PkgInfo @@ -361,11 +361,13 @@ \starray_iterate_over:nn {curricula.sem.class.prereqset} { \seq_gclear:N \l__ufrgscca_tmp_prereq_seq - \starray_iterate_over:nn {curricula.sem.class.prereqset.prereq} + \starray_iterate_over:nnTF {curricula.sem.class.prereqset.prereq} { \starray_get_prop:nnN {curricula.sem.class.prereqset.prereq}{name} \l_tmpa_tl \seq_gput_right:Ne \l__ufrgscca_tmp_prereq_seq {\l_tmpa_tl} } + {} + {} \seq_if_empty:NF \l__ufrgscca_tmp_prereq_seq { \bool_if:NTF \l__ufrgscca_tmp_second_bool diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty index 1406013d02..c22bee9a44 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,13 +22,13 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplPackage {ufrgscca-forms} - {2024/03/10} - {2.7} + {2024/03/22} + {2.8} {UFRGS/CCA forms commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-forms} , prefix .code:n = {ufrgscca} , - date .code:n = {2024/03/10}, - version .code:n = {2.7} , + date .code:n = {2024/03/22}, + version .code:n = {2.8} , description .code:n = {UFRGS/CCA~ forms~commands} } \cs_if_exist:NF \PkgInfo diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex index d4cb25ac4d..141f97a4fe 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty index ab15881f3f..c6c5ff88a7 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,13 +22,13 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplPackage {ufrgscca-lists} - {2024/03/10} - {2.7} + {2024/03/22} + {2.8} {UFRGS/CCA auxiliary lists commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-lists} , prefix .code:n = {ufrgscca} , - date .code:n = {2024/03/10} , - version .code:n = {2.7} , + date .code:n = {2024/03/22} , + version .code:n = {2.8} , description .code:n = {UFRGS/CCA~Auxiliary~ lists~ commands} } \cs_if_exist:NF \PkgInfo diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty index 75d1ba6f22..3b46f85eaa 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,13 +22,13 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplPackage {ufrgscca-ppc} - {2024/03/10} - {2.7} + {2024/03/22} + {2.8} {UFRGS/CCA PPC commands} %%%%%%% @@ -41,8 +41,8 @@ { name .code:n = {ufrgscca-ppc} , prefix .code:n = {ufrgscca} , - date .code:n = {2024/03/10}, - version .code:n = {2.7} , + date .code:n = {2024/03/22}, + version .code:n = {2.8} , description .code:n = {UFRGS/CCA~ auxiliary~ PPC-related~ (indicators)~ commands} } \cs_if_exist:NF \PkgInfo diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex index 040dbb0fa0..66bf0efaff 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex index c0f1de91cc..50bc04014e 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls index eaa190443c..245ac20f40 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.7} {2024/03/10} +%% This is version {2.8} {2024/03/22} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,13 +22,13 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\NeedsTeXFormat{LaTeX2e}[2023/11/01] \ProvidesExplClass {ufrgscca} - {2024/03/10} - {2.7} + {2024/03/22} + {2.8} {UFRGS/CCA class} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca} , prefix .code:n = {ufrgscca} , - date .code:n = {2024/03/10}, - version .code:n = {2.7} , + date .code:n = {2024/03/22}, + version .code:n = {2.8} , description .code:n = {UFRGS/CCA~a~report~based~class~bundle} } \cs_if_exist:NF \PkgInfo @@ -73,7 +73,7 @@ %%% %%%%%%%%%%%%%%%%%%%%%% -\prop_new:N \l__ufrgscca_terms_prop +\prop_new_linked:N \l__ufrgscca_terms_prop \NewDocumentCommand{\SetHeadings}{m} { @@ -118,7 +118,7 @@ { \prop_item:Nn \l__ufrgscca_terms_prop {#1} } -\prop_new:N \l__ufrgscca_const_prop +\prop_new_linked:N \l__ufrgscca_const_prop \NewDocumentCommand{\SetConsts}{m} { diff --git a/macros/luatex/latex/bezierplot/README b/macros/luatex/latex/bezierplot/README index 493bfe5c65..c472443d7a 100644 --- a/macros/luatex/latex/bezierplot/README +++ b/macros/luatex/latex/bezierplot/README @@ -8,13 +8,13 @@ points such as extreme points and inflection points and reduces the number of used points. VERSION: -1.4 2019-06-18 +1.5 2024-03-21 LICENSE: The package and the program are distributed on CTAN under the terms of the LaTeX Project Public License (LPPL) version 1.3c. -Copyright (c) 2018 Linus Romer +Copyright (c) 2018-2024 Linus Romer Please write to linus dot romer at gmx dot ch diff --git a/macros/luatex/latex/bezierplot/bezierplot-doc.pdf b/macros/luatex/latex/bezierplot/bezierplot-doc.pdf index c93fd5f102..7ebb1dbcdd 100644 Binary files a/macros/luatex/latex/bezierplot/bezierplot-doc.pdf and b/macros/luatex/latex/bezierplot/bezierplot-doc.pdf differ diff --git a/macros/luatex/latex/bezierplot/bezierplot.lua b/macros/luatex/latex/bezierplot/bezierplot.lua index 382da2d74e..d023923d45 100755 --- a/macros/luatex/latex/bezierplot/bezierplot.lua +++ b/macros/luatex/latex/bezierplot/bezierplot.lua @@ -1,6 +1,6 @@ #!/usr/bin/env lua -- Linus Romer, published 2018 under LPPL Version 1.3c --- version 1.4 2019-06-18 +-- version 1.5 2024-03-31 abs = math.abs acos = math.acos asin = math.asin @@ -277,99 +277,25 @@ end -- f(x)=a*x^3+b*x+c local function parameters_cubic(xp,yp,xq,yq,xr,yr,xs,ys) - local a = (((xp^2 * xq) * yr) - ((xp^2 * xq) * ys) - - ((xp^2 * xr) * yq) + ((xp^2 * xr) * ys) + ((xp^2 * xs) * yq) - - ((xp^2 * xs) * yr) - ((xp * xq^2) * yr) + ((xp * xq^2) * ys) - + ((xp * xr^2) * yq) - ((xp * xr^2) * ys) - ((xp * xs^2) * yq) - + ((xp * xs^2) * yr) + ((xq^2 * xr) * yp) - ((xq^2 * xr) * ys) - - ((xq^2 * xs) * yp) + ((xq^2 * xs) * yr) - ((xq * xr^2) * yp) - + ((xq * xr^2) * ys) + ((xq * xs^2) * yp) - ((xq * xs^2) * yr) - + ((xr^2 * xs) * yp) - ((xr^2 * xs) * yq) - ((xr * xs^2) * yp) - + ((xr * xs^2) * yq)) / - (((xp^3 * xq^2) * xr) - ((xp^3 * xq^2) * xs) - - ((xp^3 * xq) * xr^2) + ((xp^3 * xq) * xs^2) - + ((xp^3 * xr^2) * xs) - ((xp^3 * xr) * xs^2) - - ((xp^2 * xq^3) * xr) + ((xp^2 * xq^3) * xs) - + ((xp^2 * xq) * xr^3) - ((xp^2 * xq) * xs^3) - - ((xp^2 * xr^3) * xs) + ((xp^2 * xr) * xs^3) - + ((xp * xq^3) * xr^2) - ((xp * xq^3) * xs^2) - - ((xp * xq^2) * xr^3) + ((xp * xq^2) * xs^3) - + ((xp * xr^3) * xs^2) - ((xp * xr^2) * xs^3) - - ((xq^3 * xr^2) * xs) + ((xq^3 * xr) * xs^2) - + ((xq^2 * xr^3) * xs) - ((xq^2 * xr) * xs^3) - - ((xq * xr^3) * xs^2) + ((xq * xr^2) * xs^3)) - local b = ((((-xp^3) * xq) * yr) + ((xp^3 * xq) * ys) - + ((xp^3 * xr) * yq) - ((xp^3 * xr) * ys) - ((xp^3 * xs) * yq) - + ((xp^3 * xs) * yr) + ((xp * xq^3) * yr) - ((xp * xq^3) * ys) - - ((xp * xr^3) * yq) + ((xp * xr^3) * ys) + ((xp * xs^3) * yq) - - ((xp * xs^3) * yr) - ((xq^3 * xr) * yp) + ((xq^3 * xr) * ys) - + ((xq^3 * xs) * yp) - ((xq^3 * xs) * yr) + ((xq * xr^3) * yp) - - ((xq * xr^3) * ys) - ((xq * xs^3) * yp) + ((xq * xs^3) * yr) - - ((xr^3 * xs) * yp) + ((xr^3 * xs) * yq) + ((xr * xs^3) * yp) - - ((xr * xs^3) * yq)) / - (((xp^3 * xq^2) * xr) - ((xp^3 * xq^2) * xs) - - ((xp^3 * xq) * xr^2) + ((xp^3 * xq) * xs^2) - + ((xp^3 * xr^2) * xs) - ((xp^3 * xr) * xs^2) - - ((xp^2 * xq^3) * xr) + ((xp^2 * xq^3) * xs) - + ((xp^2 * xq) * xr^3) - ((xp^2 * xq) * xs^3) - - ((xp^2 * xr^3) * xs) + ((xp^2 * xr) * xs^3) - + ((xp * xq^3) * xr^2) - ((xp * xq^3) * xs^2) - - ((xp * xq^2) * xr^3) + ((xp * xq^2) * xs^3) - + ((xp * xr^3) * xs^2) - ((xp * xr^2) * xs^3) - - ((xq^3 * xr^2) * xs) + ((xq^3 * xr) * xs^2) - + ((xq^2 * xr^3) * xs) - ((xq^2 * xr) * xs^3) - - ((xq * xr^3) * xs^2) + ((xq * xr^2) * xs^3)) - local c = (((xp^3 * xq^2) * yr) - ((xp^3 * xq^2) * ys) - - ((xp^3 * xr^2) * yq) + ((xp^3 * xr^2) * ys) - + ((xp^3 * xs^2) * yq) - ((xp^3 * xs^2) * yr) - - ((xp^2 * xq^3) * yr) + ((xp^2 * xq^3) * ys) - + ((xp^2 * xr^3) * yq) - ((xp^2 * xr^3) * ys) - - ((xp^2 * xs^3) * yq) + ((xp^2 * xs^3) * yr) - + ((xq^3 * xr^2) * yp) - ((xq^3 * xr^2) * ys) - - ((xq^3 * xs^2) * yp) + ((xq^3 * xs^2) * yr) - - ((xq^2 * xr^3) * yp) + ((xq^2 * xr^3) * ys) - + ((xq^2 * xs^3) * yp) - ((xq^2 * xs^3) * yr) - + ((xr^3 * xs^2) * yp) - ((xr^3 * xs^2) * yq) - - ((xr^2 * xs^3) * yp) + ((xr^2 * xs^3) * yq)) / - (((xp^3 * xq^2) * xr) - ((xp^3 * xq^2) * xs) - - ((xp^3 * xq) * xr^2) + ((xp^3 * xq) * xs^2) - + ((xp^3 * xr^2) * xs) - ((xp^3 * xr) * xs^2) - - ((xp^2 * xq^3) * xr) + ((xp^2 * xq^3) * xs) - + ((xp^2 * xq) * xr^3) - ((xp^2 * xq) * xs^3) - - ((xp^2 * xr^3) * xs) + ((xp^2 * xr) * xs^3) - + ((xp * xq^3) * xr^2) - ((xp * xq^3) * xs^2) - - ((xp * xq^2) * xr^3) + ((xp * xq^2) * xs^3) - + ((xp * xr^3) * xs^2) - ((xp * xr^2) * xs^3) - - ((xq^3 * xr^2) * xs) + ((xq^3 * xr) * xs^2) - + ((xq^2 * xr^3) * xs) - ((xq^2 * xr) * xs^3) - - ((xq * xr^3) * xs^2) + ((xq * xr^2) * xs^3)) - local d = ((((xp^(3) * xq^(2)) * xr) * ys) - - (((xp^(3) * xq^(2)) * xs) * yr) - (((xp^(3) * xq) * xr^(2)) * ys) - + (((xp^(3) * xq) * xs^(2)) * yr) + (((xp^(3) * xr^(2)) * xs) * yq) - - (((xp^(3) * xr) * xs^(2)) * yq) - (((xp^(2) * xq^(3)) * xr) * ys) - + (((xp^(2) * xq^(3)) * xs) * yr) + (((xp^(2) * xq) * xr^(3)) * ys) - - (((xp^(2) * xq) * xs^(3)) * yr) - (((xp^(2) * xr^(3)) * xs) * yq) - + (((xp^(2) * xr) * xs^(3)) * yq) + (((xp * xq^(3)) * xr^(2)) * ys) - - (((xp * xq^(3)) * xs^(2)) * yr) - (((xp * xq^(2)) * xr^(3)) * ys) - + (((xp * xq^(2)) * xs^(3)) * yr) + (((xp * xr^(3)) * xs^(2)) * yq) - - (((xp * xr^(2)) * xs^(3)) * yq) - (((xq^(3) * xr^(2)) * xs) * yp) - + (((xq^(3) * xr) * xs^(2)) * yp) + (((xq^(2) * xr^(3)) * xs) * yp) - - (((xq^(2) * xr) * xs^(3)) * yp) - (((xq * xr^(3)) * xs^(2)) * yp) - + (((xq * xr^(2)) * xs^(3)) * yp)) / - (((xp^(3) * xq^(2)) * xr) - - ((xp^(3) * xq^(2)) * xs) - ((xp^(3) * xq) * xr^(2)) - + ((xp^(3) * xq) * xs^(2)) + ((xp^(3) * xr^(2)) * xs) - - ((xp^(3) * xr) * xs^(2)) - ((xp^(2) * xq^(3)) * xr) - + ((xp^(2) * xq^(3)) * xs) + ((xp^(2) * xq) * xr^(3)) - - ((xp^(2) * xq) * xs^(3)) - ((xp^(2) * xr^(3)) * xs) - + ((xp^(2) * xr) * xs^(3)) + ((xp * xq^(3)) * xr^(2)) - - ((xp * xq^(3)) * xs^(2)) - ((xp * xq^(2)) * xr^(3)) - + ((xp * xq^(2)) * xs^(3)) + ((xp * xr^(3)) * xs^(2)) - - ((xp * xr^(2)) * xs^(3)) - ((xq^(3) * xr^(2)) * xs) - + ((xq^(3) * xr) * xs^(2)) + ((xq^(2) * xr^(3)) * xs) - - ((xq^(2) * xr) * xs^(3)) - ((xq * xr^(3)) * xs^(2)) - + ((xq * xr^(2)) * xs^(3))) - return a, b, c, d + return (((xq-xp)*xr^2+(xp^2-xq^2)*xr+xp*xq^2-xp^2*xq)*ys+((xp-xq) + *xs^2+(xq^2-xp^2)*xs-xp*xq^2+xp^2*xq)*yr+((xr-xp)*xs^2+(xp^2-xr^2) + *xs+xp*xr^2-xp^2*xr)*yq+((xq-xr)*xs^2+(xr^2-xq^2)*xs-xq*xr^2+xq^2 + *xr)*yp)/((xq-xp)*(xr-xp)*(xr-xq)*(xs-xp)*(xs-xq)*(xs-xr)), + -(((xq-xp)*xr^3+(xp^3-xq^3)*xr+xp*xq^3-xp^3*xq)*ys+((xp- + xq)*xs^3+(xq^3-xp^3)*xs-xp*xq^3+xp^3*xq)*yr+((xr-xp)*xs^3+(xp^3 + -xr^3)*xs+xp*xr^3-xp^3*xr)*yq+((xq-xr)*xs^3+(xr^3-xq^3)*xs-xq*xr^3 + +xq^3*xr)*yp)/((xq-xp)*(xr-xp)*(xr-xq)*(xs-xp)*(xs-xq)*(xs-xr)), + (((xq^2-xp^2)*xr^3+(xp^3-xq^3)*xr^2+xp^2*xq^3-xp^3*xq^2) + *ys+((xp^2-xq^2)*xs^3+(xq^3-xp^3)*xs^2-xp^2*xq^3+xp^3*xq^2)*yr + +((xr^2-xp^2)*xs^3+(xp^3-xr^3)*xs^2+xp^2*xr^3-xp^3*xr^2)*yq+((xq^2 + -xr^2)*xs^3+(xr^3-xq^3)*xs^2-xq^2*xr^3+xq^3*xr^2)*yp)/((xq-xp) + *(xr-xp)*(xr-xq)*(xs-xp)*(xs-xq)*(xs-xr)), + -(((xp*xq^2-xp^2*xq)*xr^3+(xp^3*xq-xp*xq^3)*xr^2+(xp^2 + *xq^3-xp^3*xq^2)*xr)*ys+((xp^2*xq-xp*xq^2)*xs^3+(xp*xq^3-xp^3*xq) + *xs^2+(xp^3*xq^2-xp^2*xq^3)*xs)*yr+((xp*xr^2-xp^2*xr)*xs^3+(xp^3*xr + -xp*xr^3)*xs^2+(xp^2*xr^3-xp^3*xr^2)*xs)*yq+((xq^2*xr-xq*xr^2)*xs^3 + +(xq*xr^3-xq^3*xr)*xs^2+(xq^3*xr^2-xq^2*xr^3)*xs)*yp)/((xq-xp) + *(xr-xp)*(xr-xq)*(xs-xp)*(xs-xq)*(xs-xr)) end -- f(x)=a*x+b @@ -521,24 +447,47 @@ local function graphtobezierapprox(f,g,starti,endi,maxerror) -- we compute the corner point c, where the controls would meet local cx = ((dp * px) - (ds * sx) - py + sy) / (dp - ds) local cy = (dp * ((ds * px) - (ds * sx) - py + sy) / (dp - ds)) + py + local delta_cpx = .01*(cx-px) + local delta_cpy = .01*(cy-py) + local delta_csx = .01*(cx-sx) + local delta_csy = .01*(cy-sy) -- now we slide q between p and c & r between s and c -- and search for the best qx and best rx - local qx = px+.01*(cx-px) - local qy = py+.01*(cy-py) - local rx = sx+.01*(cx-sx) - local ry = sy+.01*(cy-sy) + local qx = px+delta_cpx + local qy = py+delta_cpy + local rx = sx+delta_csx + local ry = sy+delta_csy local err = squareerror(f,g,starti,endi,qx,qy,rx,ry) + local newerror + local best_j = 1 for i = 2, 99 do - for j = 2, 99 do - xa = px+i*.01*(cx-px) - ya = py+i*.01*(cy-py) - xb = sx+j*.01*(cx-sx) - yb = sy+j*.01*(cy-sy) + xa = px+i*delta_cpx + ya = py+i*delta_cpy + for j = 10, 90, 10 do -- determine j roughly + xb = sx+j*delta_csx + yb = sy+j*delta_csy -- now check, if xa and xb fit better -- than the last qx and rx did -- (sum of squares must be smaller) - local newerror = squareerror(f,g,starti,endi,xa,ya,xb,yb) + newerror = squareerror(f,g,starti,endi,xa,ya,xb,yb) if newerror < err then + best_j = j + qx = xa + qy = ya + rx = xb + ry = yb + err = newerror + end + end + for j = best_j-9, best_j+9 do -- determine j better + xb = sx+j*delta_csx + yb = sy+j*delta_csy + -- now check, if xa and xb fit better + -- than the last qx and rx did + -- (sum of squares must be smaller) + newerror = squareerror(f,g,starti,endi,xa,ya,xb,yb) + if newerror < err then + best_j = j qx = xa qy = ya rx = xb @@ -903,10 +852,20 @@ function bezierplot(functionstring,xminstring,xmaxstring,yminstring,ymaxstring,s return beziertabletostring(bezierpoints,rndx,rndy,isreverse,notation) end --- main program -- +-- This Lua script has to work as a "main" with an external +-- call from pdfLaTeX as well as a "library" with a direct lua use +-- of the function bezierplot() when used with LuaLaTeX +-- However, Lua does not seem to support a natural distinction +-- of the main and the library: +-- https://stackoverflow.com/questions/4521085/main-function-in-lua +-- As https://www.tug.org/pipermail/luatex/2024-February/007935.html +-- states, LuaTeX 1.18 has disabled the use of the debug library. +-- Hence, using "pcall(debug.getlocal, 4, 1)" is no longer possible +-- without restriction. The problem with the now chosen method is +-- that arg could be defined as a global variable in the calling code. -if not pcall(debug.getlocal, 4, 1) then ---if debug.getinfo(3) == nil then +-- main program -- +if (arg ~= nil and arg[-1] ~= nil) then if #arg >= 1 then local xmin = -5 local xmax = 5 @@ -935,6 +894,3 @@ if not pcall(debug.getlocal, 4, 1) then print(bezierplot(arg[1],xmin,xmax,ymin,ymax,samples,notation)) end end - - - diff --git a/macros/luatex/latex/bezierplot/bezierplot.sty b/macros/luatex/latex/bezierplot/bezierplot.sty index 94be30b4dc..c3d0963de2 100644 --- a/macros/luatex/latex/bezierplot/bezierplot.sty +++ b/macros/luatex/latex/bezierplot/bezierplot.sty @@ -1,5 +1,7 @@ +% Linus Romer, published 2018 under LPPL Version 1.3c +% version 1.5 2024-03-31 \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{bezierplot}[2019/06/18 bezierplot] +\ProvidesPackage{bezierplot}[2024/03/21 bezierplot] \RequirePackage{xparse} \RequirePackage{iftex} \ifLuaTeX -- cgit v1.2.3