diff options
author | Norbert Preining <norbert@preining.info> | 2023-05-31 03:00:51 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-05-31 03:00:51 +0000 |
commit | 63f5147c70933ab652aa5c700beabb6685d1139a (patch) | |
tree | 0c25a1485a60eb8d64426d4492cfa9fb74faccec | |
parent | f827efba635562d077a72b37051b2d219388a93b (diff) |
CTAN sync 202305310300
51 files changed, 1391 insertions, 593 deletions
diff --git a/FILES.byname b/FILES.byname index d37bc2b177..4690f118d5 100644 --- a/FILES.byname +++ b/FILES.byname @@ -2056,12 +2056,12 @@ 2023/04/13 | 1675 | biblio/citation-style-language/README.md 2023/04/13 | 11957 | biblio/citation-style-language/vancouver.csl 2023/04/13 | 4516625 | biblio/citation-style-language.zip -2023/05/29 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx +2023/05/30 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx 2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx -2023/05/29 | 2786892 | biblio/ctan-bibdata/ctan.bib -2023/05/29 | 3677267 | biblio/ctan-bibdata/ctan.pdf +2023/05/30 | 2786892 | biblio/ctan-bibdata/ctan.bib +2023/05/30 | 3677376 | biblio/ctan-bibdata/ctan.pdf 2023/01/16 | 1489 | biblio/ctan-bibdata/README -2023/05/29 | 4077060 | biblio/ctan-bibdata.zip +2023/05/30 | 4076809 | biblio/ctan-bibdata.zip 2023/02/23 | 3126 | biblio/pbibtex/pbibtex-base/cpp.awk 2023/02/23 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh 2023/02/23 | 22362 | biblio/pbibtex/pbibtex-base/jabbrv.bst @@ -5417,7 +5417,7 @@ 1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp 1990/10/02 | 812 | dviware/vutex/vaxvms.ins 1990/10/02 | 127576 | dviware/vutex/vutex.web -2023/05/29 | 74017 | FILES.last07days +2023/05/30 | 68187 | FILES.last07days 2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs 2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf 2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf @@ -194592,7 +194592,7 @@ 2021/07/17 | 1183440 | install/macros/luatex/latex/emoji.tds.zip 2023/05/21 | 1551331 | install/macros/luatex/latex/letgut.tds.zip 2013/09/26 | 155171 | install/macros/luatex/latex/luabibentry.tds.zip -2022/11/16 | 802013 | install/macros/luatex/latex/luacas.tds.zip +2023/05/29 | 804456 | install/macros/luatex/latex/luacas.tds.zip 2012/01/23 | 423265 | install/macros/luatex/latex/luacode.tds.zip 2010/11/19 | 426632 | install/macros/luatex/latex/luainputenc.tds.zip 2022/01/01 | 214658 | install/macros/luatex/latex/lualatex-math.tds.zip @@ -202085,7 +202085,7 @@ 2013/04/01 | 14776 | macros/context/contrib/context-visualcounter/tex/context/third/visualcounter/t-visualcounter.mkvi 2018/03/05 | 11 | macros/context/contrib/context-visualcounter/VERSION 2018/03/22 | 276789 | macros/context/contrib/context-visualcounter.zip -2023/05/28 | 115289139 | macros/context/latest/cont-tmf.zip +2023/05/29 | 115295535 | macros/context/latest/cont-tmf.zip 2016/04/21 | 32846 | macros/cstex/base/cmexb.tar.gz 2016/06/26 | 1728262 | macros/cstex/base/csfonts-t1.tar.gz 2007/03/01 | 187106 | macros/cstex/base/csfonts.tar.gz @@ -217838,11 +217838,11 @@ 2011/09/01 | 599 | macros/latex/contrib/coseoul/cosexamp.tex 2011/09/01 | 2431 | macros/latex/contrib/coseoul/README 2011/09/06 | 163357 | macros/latex/contrib/coseoul.zip -2023/05/19 | 48872 | macros/latex/contrib/counterz/counterz.dtx -2023/05/19 | 2659 | macros/latex/contrib/counterz/counterz.ins -2023/05/19 | 300058 | macros/latex/contrib/counterz/counterz.pdf -2023/05/19 | 715 | macros/latex/contrib/counterz/README -2023/05/19 | 307295 | macros/latex/contrib/counterz.zip +2023/05/30 | 58484 | macros/latex/contrib/counterz/counterz.dtx +2023/05/30 | 2659 | macros/latex/contrib/counterz/counterz.ins +2023/05/30 | 315915 | macros/latex/contrib/counterz/counterz.pdf +2023/05/30 | 715 | macros/latex/contrib/counterz/README.txt +2023/05/30 | 324514 | macros/latex/contrib/counterz.zip 2012/08/31 | 7031 | macros/latex/contrib/counttexruns/counttexruns.dtx 2012/08/31 | 694 | macros/latex/contrib/counttexruns/counttexruns.ins 2012/08/31 | 231467 | macros/latex/contrib/counttexruns/counttexruns.pdf @@ -244812,89 +244812,87 @@ 2019/10/27 | 2147 | macros/luatex/latex/luabidi/tex/luabidi-footnotes.def 2019/10/27 | 2307 | macros/luatex/latex/luabidi/tex/luabidi.sty 2019/10/28 | 97434 | macros/luatex/latex/luabidi.zip -2022/11/15 | 3149 | macros/luatex/latex/luacas/doc/appendix/latexcode.tex -2022/11/15 | 5283 | macros/luatex/latex/luacas/doc/appendix/luacas.dat -2022/11/15 | 332 | macros/luatex/latex/luacas/doc/appendix/versionhistory.tex -2022/11/15 | 3753 | macros/luatex/latex/luacas/doc/intro/intropart.tex -2022/11/15 | 6610 | macros/luatex/latex/luacas/doc/intro/intro.tex -2022/11/15 | 760471 | macros/luatex/latex/luacas/doc/luacas.pdf -2022/11/15 | 4645 | macros/luatex/latex/luacas/doc/luacas.tex -2022/11/15 | 27612 | macros/luatex/latex/luacas/doc/reference/ref_algebra/ref_algebra_classes/ref_algebra_classes.tex -2022/11/15 | 37803 | macros/luatex/latex/luacas/doc/reference/ref_algebra/ref_algebra_methods/ref_algebra_methods.tex -2022/11/15 | 10876 | macros/luatex/latex/luacas/doc/reference/ref_algebra/ref_algebra.tex -2022/11/15 | 7351 | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_classes/ref_calculus_classes.tex -2022/11/15 | 13931 | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_methods/ref_calculus_methods.tex -2022/11/15 | 6105 | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus.tex -2022/11/15 | 13963 | macros/luatex/latex/luacas/doc/reference/ref_core/ref_core_classes/ref_core_classes.tex -2022/11/15 | 32763 | macros/luatex/latex/luacas/doc/reference/ref_core/ref_core_methods/ref_core_methods.tex -2022/11/15 | 7876 | macros/luatex/latex/luacas/doc/reference/ref_core/ref_core.tex -2022/11/15 | 8536 | macros/luatex/latex/luacas/doc/reference/ref.tex -2022/11/15 | 7828 | macros/luatex/latex/luacas/doc/tutorial/tut1/tut1.tex -2022/11/15 | 18161 | macros/luatex/latex/luacas/doc/tutorial/tut2/tut2.tex -2022/11/15 | 957 | macros/luatex/latex/luacas/doc/tutorial/tut3/demotut3.dat -2022/11/15 | 18004 | macros/luatex/latex/luacas/doc/tutorial/tut3/tut3.tex -2022/11/15 | 6636 | macros/luatex/latex/luacas/doc/tutorial/tut.tex -2022/11/15 | 1902 | macros/luatex/latex/luacas/README.md -2022/11/15 | 1951 | macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua -2022/11/15 | 827 | macros/luatex/latex/luacas/tex/algebra/luacas-algebra_init.lua -2022/11/15 | 5768 | macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua -2022/11/15 | 1770 | macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua -2022/11/15 | 2732 | macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua -2022/11/15 | 1567 | macros/luatex/latex/luacas/tex/algebra/luacas-field.lua -2022/11/15 | 24905 | macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua -2022/11/15 | 4833 | macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua -2022/11/15 | 5239 | macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua -2022/11/15 | 28395 | macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua -2022/11/15 | 7111 | macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua -2022/11/15 | 9634 | macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua -2022/11/15 | 4872 | macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua -2022/11/15 | 7120 | macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua -2022/11/15 | 12129 | macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua -2022/11/15 | 5622 | macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-berlekampfactoring.lua -2022/11/15 | 3067 | macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-decomposition.lua -2022/11/15 | 7332 | macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-zassenhausfactoring.lua -2022/11/15 | 222 | macros/luatex/latex/luacas/tex/calculus/luacas-calculus_init.lua -2022/11/15 | 9708 | macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua -2022/11/15 | 5701 | macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua -2022/11/15 | 33292 | macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua -2022/11/15 | 558 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-difference.lua -2022/11/15 | 6409 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-power.lua -2022/11/15 | 9926 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-product.lua -2022/11/15 | 557 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-quotient.lua -2022/11/15 | 8622 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-sum.lua -2022/11/15 | 1594 | macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua -2022/11/15 | 31724 | macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua -2022/11/15 | 1271 | macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua -2022/11/15 | 1555 | macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua -2022/11/15 | 556 | macros/luatex/latex/luacas/tex/core/luacas-core_init.lua -2022/11/15 | 8940 | macros/luatex/latex/luacas/tex/core/luacas-expression.lua -2022/11/15 | 9890 | macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua -2022/11/15 | 3463 | macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua -2022/11/15 | 9605 | macros/luatex/latex/luacas/tex/_lib/luacas-inspect.lua -2022/11/15 | 19972 | macros/luatex/latex/luacas/tex/_lib/luacas-pepperfish.lua -2022/11/15 | 4582 | macros/luatex/latex/luacas/tex/_lib/luacas-table.lua -2022/11/15 | 7738 | macros/luatex/latex/luacas/tex/luacas.sty -2022/11/15 | 1641 | macros/luatex/latex/luacas/tex/test/calculus/luacas-derivatives.lua -2022/11/15 | 6936 | macros/luatex/latex/luacas/tex/test/calculus/luacas-integrals.lua -2022/11/15 | 6298 | macros/luatex/latex/luacas/tex/test/expressions/luacas-autosimplify.lua -2022/11/15 | 837 | macros/luatex/latex/luacas/tex/test/expressions/luacas-collect.lua -2022/11/15 | 902 | macros/luatex/latex/luacas/tex/test/expressions/luacas-equations.lua -2022/11/15 | 550 | macros/luatex/latex/luacas/tex/test/expressions/luacas-functions.lua -2022/11/15 | 1007 | macros/luatex/latex/luacas/tex/test/expressions/luacas-logarithms.lua -2022/11/15 | 835 | macros/luatex/latex/luacas/tex/test/expressions/luacas-rationalexponent.lua -2022/11/15 | 930 | macros/luatex/latex/luacas/tex/test/expressions/luacas-simplify.lua -2022/11/15 | 396 | macros/luatex/latex/luacas/tex/test/expressions/luacas-substitute.lua -2022/11/15 | 11472 | macros/luatex/latex/luacas/tex/test/luacas-helper.lua -2022/11/15 | 4833 | macros/luatex/latex/luacas/tex/test/luacas-main.lua -2022/11/15 | 8315 | macros/luatex/latex/luacas/tex/test/luacas-parser.lua -2022/11/15 | 601 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-partialfractions.lua -2022/11/15 | 7334 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomial.lua -2022/11/15 | 6268 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomialmod.lua -2022/11/15 | 4054 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-roots.lua -2022/11/15 | 12966 | macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua -2022/11/15 | 537 | macros/luatex/latex/luacas/tex/test/rings/luacas-modulararithmetic.lua -2022/11/15 | 3393 | macros/luatex/latex/luacas/tex/test/rings/luacas-number.lua -2022/11/17 | 794750 | macros/luatex/latex/luacas.zip +2023/05/26 | 3149 | macros/luatex/latex/luacas/doc/appendix/latexcode.tex +2023/05/26 | 5279 | macros/luatex/latex/luacas/doc/appendix/luacas.dat +2023/05/26 | 631 | macros/luatex/latex/luacas/doc/appendix/versionhistory.tex +2023/05/26 | 3753 | macros/luatex/latex/luacas/doc/intro/intropart.tex +2023/05/26 | 6610 | macros/luatex/latex/luacas/doc/intro/intro.tex +2023/05/26 | 761064 | macros/luatex/latex/luacas/doc/luacas.pdf +2023/05/26 | 4644 | macros/luatex/latex/luacas/doc/luacas.tex +2023/05/26 | 27612 | macros/luatex/latex/luacas/doc/reference/ref_algebra/ref_algebra_classes/ref_algebra_classes.tex +2023/05/26 | 37803 | macros/luatex/latex/luacas/doc/reference/ref_algebra/ref_algebra_methods/ref_algebra_methods.tex +2023/05/26 | 10876 | macros/luatex/latex/luacas/doc/reference/ref_algebra/ref_algebra.tex +2023/05/26 | 7351 | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_classes/ref_calculus_classes.tex +2023/05/26 | 13931 | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_methods/ref_calculus_methods.tex +2023/05/26 | 6105 | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus.tex +2023/05/26 | 13963 | macros/luatex/latex/luacas/doc/reference/ref_core/ref_core_classes/ref_core_classes.tex +2023/05/26 | 32763 | macros/luatex/latex/luacas/doc/reference/ref_core/ref_core_methods/ref_core_methods.tex +2023/05/26 | 7876 | macros/luatex/latex/luacas/doc/reference/ref_core/ref_core.tex +2023/05/26 | 8536 | macros/luatex/latex/luacas/doc/reference/ref.tex +2023/05/26 | 7828 | macros/luatex/latex/luacas/doc/tutorial/tut1/tut1.tex +2023/05/26 | 18161 | macros/luatex/latex/luacas/doc/tutorial/tut2/tut2.tex +2023/05/26 | 957 | macros/luatex/latex/luacas/doc/tutorial/tut3/demotut3.dat +2023/05/26 | 18004 | macros/luatex/latex/luacas/doc/tutorial/tut3/tut3.tex +2023/05/26 | 6636 | macros/luatex/latex/luacas/doc/tutorial/tut.tex +2023/05/26 | 1902 | macros/luatex/latex/luacas/README.md +2023/05/26 | 1957 | macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua +2023/05/26 | 5774 | macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua +2023/05/26 | 1776 | macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua +2023/05/26 | 2738 | macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua +2023/05/26 | 1573 | macros/luatex/latex/luacas/tex/algebra/luacas-field.lua +2023/05/26 | 25070 | macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua +2023/05/26 | 4909 | macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua +2023/05/26 | 5245 | macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua +2023/05/26 | 28741 | macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua +2023/05/26 | 7330 | macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua +2023/05/26 | 9640 | macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua +2023/05/26 | 4878 | macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua +2023/05/26 | 7126 | macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua +2023/05/26 | 12135 | macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua +2023/05/26 | 5622 | macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-berlekampfactoring.lua +2023/05/26 | 3067 | macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-decomposition.lua +2023/05/26 | 7332 | macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-zassenhausfactoring.lua +2023/05/26 | 9714 | macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua +2023/05/26 | 5707 | macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua +2023/05/26 | 33298 | macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua +2023/05/26 | 558 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-difference.lua +2023/05/26 | 6409 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-power.lua +2023/05/26 | 9926 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-product.lua +2023/05/26 | 557 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-quotient.lua +2023/05/26 | 8622 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-sum.lua +2023/05/26 | 1600 | macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua +2023/05/26 | 31891 | macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua +2023/05/26 | 1277 | macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua +2023/05/26 | 1561 | macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua +2023/05/26 | 8940 | macros/luatex/latex/luacas/tex/core/luacas-expression.lua +2023/05/26 | 9896 | macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua +2023/05/26 | 3469 | macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua +2023/05/26 | 9605 | macros/luatex/latex/luacas/tex/_lib/luacas-inspect.lua +2023/05/26 | 19972 | macros/luatex/latex/luacas/tex/_lib/luacas-pepperfish.lua +2023/05/26 | 4582 | macros/luatex/latex/luacas/tex/_lib/luacas-table.lua +2023/05/26 | 9792 | macros/luatex/latex/luacas/tex/luacas_init.lua +2023/05/29 | 7738 | macros/luatex/latex/luacas/tex/luacas.sty +2023/05/26 | 1641 | macros/luatex/latex/luacas/tex/test/calculus/luacas-derivatives.lua +2023/05/26 | 6936 | macros/luatex/latex/luacas/tex/test/calculus/luacas-integrals.lua +2023/05/26 | 6298 | macros/luatex/latex/luacas/tex/test/expressions/luacas-autosimplify.lua +2023/05/26 | 837 | macros/luatex/latex/luacas/tex/test/expressions/luacas-collect.lua +2023/05/26 | 902 | macros/luatex/latex/luacas/tex/test/expressions/luacas-equations.lua +2023/05/26 | 550 | macros/luatex/latex/luacas/tex/test/expressions/luacas-functions.lua +2023/05/26 | 1007 | macros/luatex/latex/luacas/tex/test/expressions/luacas-logarithms.lua +2023/05/26 | 835 | macros/luatex/latex/luacas/tex/test/expressions/luacas-rationalexponent.lua +2023/05/26 | 930 | macros/luatex/latex/luacas/tex/test/expressions/luacas-simplify.lua +2023/05/26 | 396 | macros/luatex/latex/luacas/tex/test/expressions/luacas-substitute.lua +2023/05/26 | 11472 | macros/luatex/latex/luacas/tex/test/luacas-helper.lua +2023/05/26 | 5098 | macros/luatex/latex/luacas/tex/test/luacas-main.lua +2023/05/26 | 8782 | macros/luatex/latex/luacas/tex/test/luacas-parser.lua +2023/05/26 | 601 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-partialfractions.lua +2023/05/26 | 7334 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomial.lua +2023/05/26 | 6268 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomialmod.lua +2023/05/26 | 4054 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-roots.lua +2023/05/26 | 13018 | macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua +2023/05/26 | 537 | macros/luatex/latex/luacas/tex/test/rings/luacas-modulararithmetic.lua +2023/05/26 | 3393 | macros/luatex/latex/luacas/tex/test/rings/luacas-number.lua +2023/05/30 | 797217 | macros/luatex/latex/luacas.zip 2022/02/23 | 158771 | macros/luatex/latex/luacensor/luacensor.pdf 2022/02/23 | 14334 | macros/luatex/latex/luacensor/luacensor.sty 2022/02/23 | 27205 | macros/luatex/latex/luacensor/luacensor.tex @@ -300967,7 +300965,7 @@ 2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz -2023/05/29 | 426888 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67237.tar.xz +2023/05/30 | 427008 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67242.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz 2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz @@ -300989,7 +300987,7 @@ 2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz -2023/05/29 | 114068 | systems/texlive/tlnet/archive/texlive-scripts.r67237.tar.xz +2023/05/30 | 114048 | systems/texlive/tlnet/archive/texlive-scripts.r67242.tar.xz 2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz 2023/05/14 | 60312 | systems/texlive/tlnet/archive/texlive-scripts.windows.r67095.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz @@ -301117,9 +301115,9 @@ 2023/02/27 | 892 | systems/texlive/tlnet/archive/tex.r66186.tar.xz 2021/01/08 | 423944 | systems/texlive/tlnet/archive/tex-refs.doc.r57349.tar.xz 2021/01/08 | 488 | systems/texlive/tlnet/archive/tex-refs.r57349.tar.xz -2022/08/31 | 1247384 | systems/texlive/tlnet/archive/texshade.doc.r64242.tar.xz -2022/08/31 | 61900 | systems/texlive/tlnet/archive/texshade.r64242.tar.xz -2022/08/31 | 315880 | systems/texlive/tlnet/archive/texshade.source.r64242.tar.xz +2023/05/30 | 1302448 | systems/texlive/tlnet/archive/texshade.doc.r67243.tar.xz +2023/05/30 | 61848 | systems/texlive/tlnet/archive/texshade.r67243.tar.xz +2023/05/30 | 315924 | systems/texlive/tlnet/archive/texshade.source.r67243.tar.xz 2019/02/28 | 324 | systems/texlive/tlnet/archive/texsis.aarch64-linux.r46208.tar.xz 2019/02/28 | 324 | systems/texlive/tlnet/archive/texsis.amd64-freebsd.r16472.tar.xz 2019/02/28 | 324 | systems/texlive/tlnet/archive/texsis.amd64-netbsd.r30191.tar.xz @@ -302853,16 +302851,16 @@ 2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz 2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz 2023/03/12 | 125532 | systems/texlive/tlnet/install-tl -2023/05/29 | 5736890 | systems/texlive/tlnet/install-tl-unx.tar.gz -2023/05/29 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2023/05/29 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2023/05/30 | 5736664 | systems/texlive/tlnet/install-tl-unx.tar.gz +2023/05/30 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2023/05/30 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2023/05/13 | 5083 | systems/texlive/tlnet/install-tl-windows.bat -2023/05/29 | 21036253 | systems/texlive/tlnet/install-tl-windows.exe -2023/05/29 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2023/05/29 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2023/05/29 | 26025726 | systems/texlive/tlnet/install-tl.zip -2023/05/29 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2023/05/29 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2023/05/30 | 21036527 | systems/texlive/tlnet/install-tl-windows.exe +2023/05/30 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2023/05/30 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2023/05/30 | 26025707 | systems/texlive/tlnet/install-tl.zip +2023/05/30 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2023/05/30 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc 2023/03/19 | 1229 | systems/texlive/tlnet/README.md 2023/03/19 | 0 | systems/texlive/tlnet/TEXLIVE_2023 2023/01/17 | 8401 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg @@ -302872,7 +302870,7 @@ 2023/01/17 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg 2023/01/17 | 49938 | systems/texlive/tlnet/tlpkg/installer/config.guess 2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt -2023/05/28 | 7444 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2023/05/29 | 7314 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2023/01/11 | 216583 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt 2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe 2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt @@ -302914,12 +302912,12 @@ 2023/02/21 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm 2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm 2023/04/08 | 28167 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm -2023/05/29 | 18113954 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2023/05/29 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2023/05/30 | 18113954 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2023/05/30 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2023/02/20 | 86803 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm -2023/05/29 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2023/05/29 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2023/05/29 | 2451248 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2023/05/30 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2023/05/30 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2023/05/30 | 2452236 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm 2023/02/26 | 42350 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm 2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm @@ -313432,7 +313430,7 @@ 2014/07/05 | 611 | systems/win32/yandy/README 2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz 2014/07/05 | 1012416 | systems/win32/yandy.zip -2023/05/30 | 186 | timestamp +2023/05/31 | 186 | timestamp 2002/08/26 | 61898 | usergrps/dante/antrag.pdf 2002/08/26 | 118217 | usergrps/dante/antrag.ps 2021/11/11 | 917 | usergrps/dante/dtk/doc/beispiel.bib diff --git a/FILES.byname.gz b/FILES.byname.gz Binary files differindex 865b9e50d5..4c0f20fdfc 100644 --- a/FILES.byname.gz +++ b/FILES.byname.gz diff --git a/FILES.last07days b/FILES.last07days index c635631791..d5fca8159d 100644 --- a/FILES.last07days +++ b/FILES.last07days @@ -1,67 +1,79 @@ +2023/05/30 | 797217 | macros/luatex/latex/luacas.zip +2023/05/30 | 715 | macros/latex/contrib/counterz/README.txt +2023/05/30 | 61848 | systems/texlive/tlnet/archive/texshade.r67243.tar.xz +2023/05/30 | 58484 | macros/latex/contrib/counterz/counterz.dtx +2023/05/30 | 5736664 | systems/texlive/tlnet/install-tl-unx.tar.gz +2023/05/30 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2023/05/30 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2023/05/30 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2023/05/30 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2023/05/30 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2023/05/30 | 427008 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67242.tar.xz +2023/05/30 | 4076809 | biblio/ctan-bibdata.zip +2023/05/30 | 3677376 | biblio/ctan-bibdata/ctan.pdf +2023/05/30 | 324514 | macros/latex/contrib/counterz.zip +2023/05/30 | 315924 | systems/texlive/tlnet/archive/texshade.source.r67243.tar.xz +2023/05/30 | 315915 | macros/latex/contrib/counterz/counterz.pdf +2023/05/30 | 2786892 | biblio/ctan-bibdata/ctan.bib +2023/05/30 | 2659 | macros/latex/contrib/counterz/counterz.ins +2023/05/30 | 26025707 | systems/texlive/tlnet/install-tl.zip +2023/05/30 | 2452236 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2023/05/30 | 21036527 | systems/texlive/tlnet/install-tl-windows.exe +2023/05/30 | 18113954 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2023/05/30 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx +2023/05/30 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2023/05/30 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2023/05/30 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2023/05/30 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2023/05/30 | 1302448 | systems/texlive/tlnet/archive/texshade.doc.r67243.tar.xz +2023/05/30 | 114048 | systems/texlive/tlnet/archive/texlive-scripts.r67242.tar.xz 2023/05/29 | 9188 | macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def 2023/05/29 | 8941 | macros/latex/contrib/ufrgscca/latex/ufrgscca-formsTR.sty 2023/05/29 | 885084 | systems/texlive/tlnet/archive/mcf2graph.doc.r67238.tar.xz 2023/05/29 | 8816 | macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def 2023/05/29 | 8596 | macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty +2023/05/29 | 804456 | install/macros/luatex/latex/luacas.tds.zip +2023/05/29 | 7738 | macros/luatex/latex/luacas/tex/luacas.sty 2023/05/29 | 7477 | macros/latex/contrib/ufrgscca/latex/ufrgscca.cls +2023/05/29 | 7314 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2023/05/29 | 70005 | macros/latex/contrib/ufrgscca/doc/ufrgscca.tex 2023/05/29 | 632266 | macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf 2023/05/29 | 626176 | macros/latex/contrib/ufrgscca.zip 2023/05/29 | 579240 | systems/texlive/tlnet/archive/tikz2d-fr.doc.r67239.tar.xz -2023/05/29 | 5736890 | systems/texlive/tlnet/install-tl-unx.tar.gz 2023/05/29 | 5380 | macros/latex/contrib/ufrgscca/README.md 2023/05/29 | 5349 | macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty 2023/05/29 | 5122 | macros/latex/contrib/texshade/README -2023/05/29 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 -2023/05/29 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2023/05/29 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc -2023/05/29 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2023/05/29 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2023/05/29 | 4852 | macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty 2023/05/29 | 4819 | macros/latex/contrib/ufrgscca/latex/ufrgscca-formsintern.sty 2023/05/29 | 4564 | macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty 2023/05/29 | 448 | systems/texlive/tlnet/archive/mcf2graph.r67238.tar.xz -2023/05/29 | 426888 | systems/texlive/tlnet/archive/texlive-scripts.doc.r67237.tar.xz -2023/05/29 | 4077060 | biblio/ctan-bibdata.zip 2023/05/29 | 4069 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def 2023/05/29 | 39596 | systems/texlive/tlnet/archive/proflycee.r67240.tar.xz -2023/05/29 | 3677267 | biblio/ctan-bibdata/ctan.pdf 2023/05/29 | 34300 | macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty -2023/05/29 | 2786892 | biblio/ctan-bibdata/ctan.bib 2023/05/29 | 2760 | systems/texlive/tlnet/archive/tikz2d-fr.r67239.tar.xz 2023/05/29 | 2696 | macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty -2023/05/29 | 26025726 | systems/texlive/tlnet/install-tl.zip 2023/05/29 | 2545 | macros/latex/contrib/texshade/texshade.ins 2023/05/29 | 2481 | macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def -2023/05/29 | 2451248 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2023/05/29 | 2223 | macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def 2023/05/29 | 2205 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def -2023/05/29 | 21036253 | systems/texlive/tlnet/install-tl-windows.exe 2023/05/29 | 20486 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty 2023/05/29 | 20150 | macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty 2023/05/29 | 1930608 | systems/texlive/tlnet/archive/proflycee.doc.r67240.tar.xz -2023/05/29 | 18113954 | systems/texlive/tlnet/tlpkg/texlive.tlpdb 2023/05/29 | 17368 | macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty -2023/05/29 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx 2023/05/29 | 16303 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def 2023/05/29 | 1592 | systems/texlive/tlnet/archive/collection-pictures.r67239.tar.xz 2023/05/29 | 1565024 | macros/latex/contrib/texshade/texshade.pdf -2023/05/29 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2023/05/29 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 2023/05/29 | 1507451 | macros/latex/contrib/texshade.zip 2023/05/29 | 1478681 | macros/latex/contrib/texshade/texshade.dtx -2023/05/29 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2023/05/29 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 2023/05/29 | 14403 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def +2023/05/29 | 115295535 | macros/context/latest/cont-tmf.zip 2023/05/29 | 11522 | macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty 2023/05/29 | 11489 | macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty -2023/05/29 | 114068 | systems/texlive/tlnet/archive/texlive-scripts.r67237.tar.xz 2023/05/28 | 98780 | graphics/mcf2graph/mcf2graph.mp 2023/05/28 | 98236 | graphics/mcf2graph/mcf_manual.tex 2023/05/28 | 90480 | systems/texlive/tlnet/archive/hyperref.r67233.tar.xz 2023/05/28 | 894898 | graphics/mcf2graph.zip 2023/05/28 | 7676 | systems/texlive/tlnet/archive/footmisc.r67232.tar.xz -2023/05/28 | 7444 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2023/05/28 | 6540 | macros/latex/contrib/proflycee/tex/ProfLycee.sty 2023/05/28 | 579952 | graphics/pgf/contrib/tikz2d-fr.zip 2023/05/28 | 560724 | systems/texlive/tlnet/archive/naive-ebnf.doc.r67234.tar.xz @@ -81,7 +93,6 @@ 2023/05/28 | 20235 | graphics/mcf2graph/CHANGELOG 2023/05/28 | 1457052 | systems/texlive/tlnet/archive/fduthesis.doc.r67231.tar.xz 2023/05/28 | 116676 | systems/texlive/tlnet/archive/fduthesis.source.r67231.tar.xz -2023/05/28 | 115289139 | macros/context/latest/cont-tmf.zip 2023/05/28 | 1096636 | systems/texlive/tlnet/archive/kpfonts-otf.r67230.tar.xz 2023/05/28 | 108308 | systems/texlive/tlnet/archive/fduthesis.r67231.tar.xz 2023/05/28 | 105744 | graphics/mcf2graph/main_lib.mcf @@ -162,43 +173,89 @@ 2023/05/27 | 102516 | fonts/kpfonts-otf/fonts/KpSans-Regular.otf 2023/05/26 | 9981 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.tex 2023/05/26 | 99448 | systems/texlive/tlnet/archive/listlbls.doc.r67215.tar.xz +2023/05/26 | 9926 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-product.lua +2023/05/26 | 9896 | macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua 2023/05/26 | 9796350 | install/macros/latex-dev/required/latex-lab-dev.tds.zip +2023/05/26 | 9792 | macros/luatex/latex/luacas/tex/luacas_init.lua 2023/05/26 | 9726798 | macros/latex-dev/required/latex-lab.zip +2023/05/26 | 9714 | macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua +2023/05/26 | 9640 | macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua +2023/05/26 | 9605 | macros/luatex/latex/luacas/tex/_lib/luacas-inspect.lua +2023/05/26 | 957 | macros/luatex/latex/luacas/doc/tutorial/tut3/demotut3.dat +2023/05/26 | 930 | macros/luatex/latex/luacas/tex/test/expressions/luacas-simplify.lua 2023/05/26 | 928 | macros/latex/contrib/hyperref/doc/hyperref-doc2.html +2023/05/26 | 902 | macros/luatex/latex/luacas/tex/test/expressions/luacas-equations.lua +2023/05/26 | 8940 | macros/luatex/latex/luacas/tex/core/luacas-expression.lua 2023/05/26 | 893592 | systems/texlive/tlnet/archive/dynkin-diagrams.doc.r67211.tar.xz 2023/05/26 | 882 | macros/latex/contrib/hyperref/doc/hyperref-doc5.html +2023/05/26 | 8782 | macros/luatex/latex/luacas/tex/test/luacas-parser.lua 2023/05/26 | 869960 | macros/latex/contrib/hyperref/hyperref.dtx +2023/05/26 | 8622 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-sum.lua +2023/05/26 | 8536 | macros/luatex/latex/luacas/doc/reference/ref.tex 2023/05/26 | 84736 | systems/texlive/tlnet/archive/nicematrix.source.r67216.tar.xz +2023/05/26 | 837 | macros/luatex/latex/luacas/tex/test/expressions/luacas-collect.lua +2023/05/26 | 835 | macros/luatex/latex/luacas/tex/test/expressions/luacas-rationalexponent.lua 2023/05/26 | 832 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsOneZero.tfm 2023/05/26 | 82846 | macros/latex/contrib/footmisc/footmisc.dtx 2023/05/26 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc8.html 2023/05/26 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc7.html 2023/05/26 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc3.html 2023/05/26 | 793 | macros/latex/contrib/hyperref/doc/hyperref-doc6.html +2023/05/26 | 7876 | macros/luatex/latex/luacas/doc/reference/ref_core/ref_core.tex +2023/05/26 | 7828 | macros/luatex/latex/luacas/doc/tutorial/tut1/tut1.tex +2023/05/26 | 761064 | macros/luatex/latex/luacas/doc/luacas.pdf 2023/05/26 | 7536 | macros/latex/contrib/hyperref/hyperref-patches.dtx 2023/05/26 | 735896 | systems/texlive/tlnet/archive/latex-base-dev.source.r67218.tar.xz +2023/05/26 | 7351 | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_classes/ref_calculus_classes.tex +2023/05/26 | 7334 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomial.lua +2023/05/26 | 7332 | macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-zassenhausfactoring.lua +2023/05/26 | 7330 | macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua +2023/05/26 | 7126 | macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua 2023/05/26 | 70914 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.pdf +2023/05/26 | 6936 | macros/luatex/latex/luacas/tex/test/calculus/luacas-integrals.lua 2023/05/26 | 6892 | systems/texlive/tlnet/archive/oststud.r67217.tar.xz 2023/05/26 | 6771 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.tex 2023/05/26 | 66886 | macros/latex/contrib/covington/covington.tex 2023/05/26 | 665 | fonts/simpleicons/README.md +2023/05/26 | 6636 | macros/luatex/latex/luacas/doc/tutorial/tut.tex 2023/05/26 | 66360 | systems/texlive/tlnet/archive/latex-amsmath-dev.source.r67218.tar.xz +2023/05/26 | 6610 | macros/luatex/latex/luacas/doc/intro/intro.tex +2023/05/26 | 6409 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-power.lua +2023/05/26 | 631 | macros/luatex/latex/luacas/doc/appendix/versionhistory.tex +2023/05/26 | 6298 | macros/luatex/latex/luacas/tex/test/expressions/luacas-autosimplify.lua +2023/05/26 | 6268 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomialmod.lua +2023/05/26 | 6105 | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus.tex +2023/05/26 | 601 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-partialfractions.lua 2023/05/26 | 595984 | systems/texlive/tlnet/archive/l3kernel.source.r67219.tar.xz 2023/05/26 | 594228 | systems/texlive/tlnet/archive/tikz3d-fr.doc.r67212.tar.xz 2023/05/26 | 5876 | systems/texlive/tlnet/archive/listlbls.source.r67215.tar.xz +2023/05/26 | 5774 | macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua 2023/05/26 | 5766 | macros/latex/contrib/hyperref/xr-hyper.sty 2023/05/26 | 5732 | macros/latex/contrib/covington/README +2023/05/26 | 5707 | macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua +2023/05/26 | 5622 | macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-berlekampfactoring.lua 2023/05/26 | 560970 | macros/latex/contrib/msu-thesis.zip +2023/05/26 | 558 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-difference.lua +2023/05/26 | 557 | macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-quotient.lua +2023/05/26 | 550 | macros/luatex/latex/luacas/tex/test/expressions/luacas-functions.lua 2023/05/26 | 545597 | macros/latex/contrib/covington.zip +2023/05/26 | 537 | macros/luatex/latex/luacas/tex/test/rings/luacas-modulararithmetic.lua 2023/05/26 | 5313592 | systems/texlive/tlnet/archive/latex-tools-dev.doc.r67218.tar.xz +2023/05/26 | 5279 | macros/luatex/latex/luacas/doc/appendix/luacas.dat 2023/05/26 | 52768 | systems/texlive/tlnet/archive/biblatex-gb7714-2015.r67214.tar.xz 2023/05/26 | 525291 | macros/latex/contrib/hyperref/doc/hyperref-doc.html +2023/05/26 | 5245 | macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua 2023/05/26 | 520384 | macros/latex/contrib/covington/covington.pdf 2023/05/26 | 512 | systems/texlive/tlnet/archive/tex-nutshell.r67213.tar.xz +2023/05/26 | 5098 | macros/luatex/latex/luacas/tex/test/luacas-main.lua 2023/05/26 | 50695 | macros/latex/contrib/hyperref/hluatex.dtx 2023/05/26 | 5043547 | fonts/simpleicons.zip 2023/05/26 | 5026 | macros/latex/contrib/hyperref/hyperref.ins +2023/05/26 | 4909 | macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua +2023/05/26 | 4878 | macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua 2023/05/26 | 468 | macros/latex/contrib/footmisc/README.md +2023/05/26 | 4644 | macros/luatex/latex/luacas/doc/luacas.tex +2023/05/26 | 4582 | macros/luatex/latex/luacas/tex/_lib/luacas-table.lua 2023/05/26 | 4479 | macros/latex/contrib/hyperref/README.md 2023/05/26 | 4475237 | install/macros/latex/contrib/hyperref.tds.zip 2023/05/26 | 440240 | macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf @@ -206,29 +263,43 @@ 2023/05/26 | 4294885 | macros/latex/contrib/hyperref.zip 2023/05/26 | 42498 | macros/latex/contrib/msu-thesis/msu-thesis.cls 2023/05/26 | 42282 | macros/latex/contrib/msu-thesis/docs/msu-thesis.tex +2023/05/26 | 4054 | macros/luatex/latex/luacas/tex/test/polynomials/luacas-roots.lua +2023/05/26 | 396 | macros/luatex/latex/luacas/tex/test/expressions/luacas-substitute.lua 2023/05/26 | 393 | macros/latex/contrib/msu-thesis/samples/chap2bib.tex 2023/05/26 | 39292 | systems/texlive/tlnet/archive/nicematrix.r67216.tar.xz 2023/05/26 | 384001 | macros/latex/contrib/hyperref/doc/slides.pdf +2023/05/26 | 37803 | macros/luatex/latex/luacas/doc/reference/ref_algebra/ref_algebra_methods/ref_algebra_methods.tex +2023/05/26 | 3753 | macros/luatex/latex/luacas/doc/intro/intropart.tex 2023/05/26 | 368556 | systems/texlive/tlnet/archive/oststud.doc.r67217.tar.xz 2023/05/26 | 365983 | macros/latex/contrib/footmisc/footmisc-code.pdf 2023/05/26 | 35718 | macros/latex/contrib/covington/covington.sty +2023/05/26 | 3469 | macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua +2023/05/26 | 3393 | macros/luatex/latex/luacas/tex/test/rings/luacas-number.lua 2023/05/26 | 3332 | systems/texlive/tlnet/archive/tikz3d-fr.r67212.tar.xz +2023/05/26 | 33298 | macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua 2023/05/26 | 327 | macros/latex/contrib/msu-thesis/samples/chap4bib.tex 2023/05/26 | 32794552 | systems/texlive/tlnet/archive/latex-base-dev.doc.r67218.tar.xz +2023/05/26 | 32763 | macros/luatex/latex/luacas/doc/reference/ref_core/ref_core_methods/ref_core_methods.tex 2023/05/26 | 321331 | macros/latex/contrib/hyperref/doc/hyperref-doc.pdf 2023/05/26 | 319 | macros/latex/contrib/msu-thesis/samples/chap3bib.tex +2023/05/26 | 31891 | macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua 2023/05/26 | 3161 | macros/latex/contrib/hyperref/bmhydoc.sty +2023/05/26 | 3149 | macros/luatex/latex/luacas/doc/appendix/latexcode.tex 2023/05/26 | 31040 | systems/texlive/tlnet/archive/latex-amsmath-dev.r67218.tar.xz +2023/05/26 | 3067 | macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-decomposition.lua 2023/05/26 | 302628 | systems/texlive/tlnet/archive/tex-nutshell.doc.r67213.tar.xz 2023/05/26 | 2936 | macros/latex/contrib/msu-thesis/README.md +2023/05/26 | 28741 | macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua 2023/05/26 | 28597 | macros/latex/contrib/hyperref/backref.dtx 2023/05/26 | 284 | macros/latex/contrib/hyperref/ntheorem-hyper.sty 2023/05/26 | 2840 | fonts/simpleicons/enc/simpleiconsOne.enc 2023/05/26 | 280 | macros/latex/contrib/hyperref/minitoc-hyper.sty 2023/05/26 | 27910 | macros/latex/contrib/hyperref/nameref.dtx 2023/05/26 | 277 | macros/latex/contrib/msu-thesis/samples/chap1bib.tex +2023/05/26 | 27612 | macros/luatex/latex/luacas/doc/reference/ref_algebra/ref_algebra_classes/ref_algebra_classes.tex 2023/05/26 | 274 | fonts/simpleicons/tex/usimpleiconsOneZero.fd 2023/05/26 | 2744 | fonts/simpleicons/enc/simpleiconsFour.enc +2023/05/26 | 2738 | macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua 2023/05/26 | 2719 | fonts/simpleicons/enc/simpleiconsEight.enc 2023/05/26 | 2670 | fonts/simpleicons/enc/simpleiconsTwo.enc 2023/05/26 | 264 | fonts/simpleicons/tex/usimpleiconsThree.fd @@ -244,6 +315,7 @@ 2023/05/26 | 254 | fonts/simpleicons/tex/usimpleiconsSix.fd 2023/05/26 | 254 | fonts/simpleicons/tex/usimpleiconsOne.fd 2023/05/26 | 2543 | fonts/simpleicons/enc/simpleiconsNine.enc +2023/05/26 | 25070 | macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua 2023/05/26 | 250295 | macros/latex/contrib/footmisc/footmisc-doc.pdf 2023/05/26 | 247116 | macros/latex/contrib/hyperref/paperslides99.zip 2023/05/26 | 2464 | fonts/simpleicons/enc/simpleiconsFive.enc @@ -261,24 +333,38 @@ 2023/05/26 | 20732 | systems/texlive/tlnet/archive/dynkin-diagrams.r67211.tar.xz 2023/05/26 | 206645 | macros/latex/contrib/hyperref/doc/backref.pdf 2023/05/26 | 2018987 | fonts/simpleicons/doc/simpleicons.pdf +2023/05/26 | 19972 | macros/luatex/latex/luacas/tex/_lib/luacas-pepperfish.lua +2023/05/26 | 1957 | macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua 2023/05/26 | 19445 | macros/latex/contrib/hyperref/hyperref-linktarget.dtx 2023/05/26 | 1940 | systems/texlive/tlnet/archive/listlbls.r67215.tar.xz 2023/05/26 | 1929 | macros/latex/contrib/hyperref/manifest.txt 2023/05/26 | 1917248 | fonts/simpleicons/opentype/SimpleIcons.otf +2023/05/26 | 1902 | macros/luatex/latex/luacas/README.md 2023/05/26 | 1844 | fonts/simpleicons/doc/simpleicons.tex +2023/05/26 | 18161 | macros/luatex/latex/luacas/doc/tutorial/tut2/tut2.tex 2023/05/26 | 181585 | macros/latex/contrib/hyperref/doc/nameref.pdf +2023/05/26 | 18004 | macros/luatex/latex/luacas/doc/tutorial/tut3/tut3.tex 2023/05/26 | 1786219 | fonts/simpleicons/type1/SimpleIcons.pfb +2023/05/26 | 1776 | macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua 2023/05/26 | 176 | macros/latex/contrib/footmisc/footmisc-doc.tex 2023/05/26 | 172608 | systems/texlive/tlnet/archive/l3kernel.r67219.tar.xz 2023/05/26 | 169140 | macros/latex/contrib/hyperref/doc/hyperref-doc.tex +2023/05/26 | 1641 | macros/luatex/latex/luacas/tex/test/calculus/luacas-derivatives.lua +2023/05/26 | 1600 | macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua 2023/05/26 | 15896 | systems/texlive/tlnet/archive/oststud.source.r67217.tar.xz +2023/05/26 | 1573 | macros/luatex/latex/luacas/tex/algebra/luacas-field.lua +2023/05/26 | 1561 | macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua 2023/05/26 | 15605 | macros/latex/contrib/hyperref/doc/hyperref-doc.css 2023/05/26 | 1559 | fonts/simpleicons/tex/simpleicons.sty 2023/05/26 | 1535 | macros/latex/contrib/footmisc/changes.txt 2023/05/26 | 1419940 | systems/texlive/tlnet/archive/biblatex-gb7714-2015.doc.r67214.tar.xz +2023/05/26 | 13963 | macros/luatex/latex/luacas/doc/reference/ref_core/ref_core_classes/ref_core_classes.tex +2023/05/26 | 13931 | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_methods/ref_calculus_methods.tex 2023/05/26 | 138593 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.pdf 2023/05/26 | 132446 | macros/latex/contrib/hyperref/doc/paper.pdf 2023/05/26 | 131052 | fonts/simpleicons/doc/bindings.tex +2023/05/26 | 13018 | macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua +2023/05/26 | 1277 | macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua 2023/05/26 | 1276 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.tex 2023/05/26 | 124045 | macros/latex/contrib/hyperref/ChangeLog.txt 2023/05/26 | 1236 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsSeven.tfm @@ -290,12 +376,16 @@ 2023/05/26 | 1232 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsFive.tfm 2023/05/26 | 1232 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsEight.tfm 2023/05/26 | 1228 | fonts/simpleicons/tfm/SimpleIcons--simpleiconsOne.tfm +2023/05/26 | 12135 | macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua 2023/05/26 | 11889472 | systems/texlive/tlnet/archive/l3kernel.doc.r67219.tar.xz +2023/05/26 | 11472 | macros/luatex/latex/luacas/tex/test/luacas-helper.lua 2023/05/26 | 114156 | macros/latex/contrib/msu-thesis/msu-thesis.pdf 2023/05/26 | 1119 | fonts/simpleicons/map/simpleicons.map 2023/05/26 | 1088 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.bib +2023/05/26 | 10876 | macros/luatex/latex/luacas/doc/reference/ref_algebra/ref_algebra.tex 2023/05/26 | 1030 | macros/latex/contrib/hyperref/doc/hyperref-doc4.html 2023/05/26 | 101 | macros/latex/contrib/footmisc/footmisc-code.tex +2023/05/26 | 1007 | macros/luatex/latex/luacas/tex/test/expressions/luacas-logarithms.lua 2023/05/25 | 99 | macros/latex-dev/base/ltpara-code.tex 2023/05/25 | 9935 | macros/latex-dev/base/ltnews21.tex 2023/05/25 | 9779 | macros/latex-dev/base/format.ins @@ -911,33 +1001,3 @@ 2023/05/24 | 10161 | graphics/pgf/contrib/tikz3d-fr/tex/tikz3d-fr.sty 2023/05/24 | 10080 | systems/texlive/tlnet/archive/mlacls.source.r67201.tar.xz 2023/05/24 | 100188 | systems/texlive/tlnet/archive/newfloat.doc.r67201.tar.xz -2023/05/23 | 998152 | systems/texlive/tlnet/archive/kaytannollista-latexia.doc.r67190.tar.xz -2023/05/23 | 9802 | graphics/pstricks/contrib/luapstricks/luapstricks-plugin-pstcie.lua -2023/05/23 | 7624 | graphics/pstricks/contrib/luapstricks/PSTricksDotFont.otf -2023/05/23 | 6888 | systems/texlive/tlnet/archive/collection-latexextra.r67187.tar.xz -2023/05/23 | 67572 | systems/texlive/tlnet/archive/letgut.source.r67192.tar.xz -2023/05/23 | 6428 | systems/texlive/tlnet/archive/yb-book.source.r67188.tar.xz -2023/05/23 | 613884 | systems/texlive/tlnet/archive/fenetrecas.doc.r67185.tar.xz -2023/05/23 | 5856 | systems/texlive/tlnet/archive/outilsgeomtikz.r67186.tar.xz -2023/05/23 | 572 | systems/texlive/tlnet/archive/kaytannollista-latexia.r67190.tar.xz -2023/05/23 | 56645 | macros/latex/contrib/movement-arrows.zip -2023/05/23 | 54904 | systems/texlive/tlnet/archive/sudoku.doc.r67189.tar.xz -2023/05/23 | 53976 | systems/texlive/tlnet/archive/textcsc.doc.r67193.tar.xz -2023/05/23 | 53068 | systems/texlive/tlnet/archive/letgut.r67192.tar.xz -2023/05/23 | 5005 | graphics/pstricks/contrib/luapstricks/luapstricks-plugin-pstsolides3d.lua -2023/05/23 | 439 | graphics/pgf/contrib/tikz2d-fr/README.md -2023/05/23 | 4360 | systems/texlive/tlnet/archive/sudoku.source.r67189.tar.xz -2023/05/23 | 422344 | systems/texlive/tlnet/archive/outilsgeomtikz.doc.r67186.tar.xz -2023/05/23 | 41774 | graphics/pstricks/contrib/luapstricks.zip -2023/05/23 | 3836 | systems/texlive/tlnet/archive/yb-book.r67188.tar.xz -2023/05/23 | 3736 | systems/texlive/tlnet/archive/fenetrecas.r67185.tar.xz -2023/05/23 | 283680 | systems/texlive/tlnet/archive/yb-book.doc.r67188.tar.xz -2023/05/23 | 272 | systems/texlive/tlnet/archive/texlive-en.r67184.tar.xz -2023/05/23 | 25515 | macros/latex/contrib/proflycee/tex/proflycee-tools-geom.tex -2023/05/23 | 18964 | graphics/pstricks/contrib/luapstricks/luapstricks-plugin-pstmarble.lua -2023/05/23 | 1868584 | systems/texlive/tlnet/archive/texlive-en.doc.r67184.tar.xz -2023/05/23 | 1844 | systems/texlive/tlnet/archive/sudoku.r67189.tar.xz -2023/05/23 | 1667 | graphics/pstricks/contrib/luapstricks/README.md -2023/05/23 | 1351568 | systems/texlive/tlnet/archive/letgut.doc.r67192.tar.xz -2023/05/23 | 134244 | graphics/pstricks/contrib/luapstricks/luapstricks.lua -2023/05/23 | 1132 | systems/texlive/tlnet/archive/textcsc.r67193.tar.xz diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib index 13620c9851..57dae383de 100644 --- a/biblio/ctan-bibdata/ctan.bib +++ b/biblio/ctan-bibdata/ctan.bib @@ -1,7 +1,7 @@ %% bib file of all CTAN packages %% (C) Herbert Voß %% -%% created at 30-05-2023, 02:01:06 +%% created at 31-05-2023, 02:00:58 %% %% This file is provided under the terms of the LPPL v1.3 or @@ -15558,8 +15558,8 @@ title = {The \texttt{counterz} package}, subtitle = {Additional tools for counters}, author = {Christopher McClain}, - date = {2023-05-22}, - version = {1.0.0}, + date = {2023-05-30}, + version = {1.1.0}, license = {lppl1.3c}, mirror = {https://mirror.ctan.org/macros/latex/contrib/counterz}, url = {https://ctan.org/pkg/counterz}, @@ -41103,8 +41103,8 @@ title = {The \texttt{luacas} package}, subtitle = {A computer algebra system for users of LuaLaTeX}, author = {Timothy All and Evan Cochrane}, - date = {2023-01-28}, - version = {1.0.1}, + date = {2023-05-30}, + version = {1.0.2}, license = {lppl1.3c}, mirror = {https://mirror.ctan.org/macros/luatex/latex/luacas}, url = {https://ctan.org/pkg/luacas}, diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf Binary files differindex 40fbed892c..572851b1f0 100644 --- a/biblio/ctan-bibdata/ctan.pdf +++ b/biblio/ctan-bibdata/ctan.pdf diff --git a/macros/latex/contrib/counterz/README b/macros/latex/contrib/counterz/README.txt index b7376e3a0b..00daf51728 100644 --- a/macros/latex/contrib/counterz/README +++ b/macros/latex/contrib/counterz/README.txt @@ -1,7 +1,7 @@ ---------------------------------------------------------------------- -`counterz' --- 2023/05/19 Version 1.0.0 +`counterz' --- 2023/05/30 Version 1.1.0 Copyright (C) 2023 by Christopher McClain E-mail: christopher.mcclain@mail.wvu.edu diff --git a/macros/latex/contrib/counterz/counterz.dtx b/macros/latex/contrib/counterz/counterz.dtx index 82857faf4c..2efbfa056d 100644 --- a/macros/latex/contrib/counterz/counterz.dtx +++ b/macros/latex/contrib/counterz/counterz.dtx @@ -7,7 +7,7 @@ %<*readme> ---------------------------------------------------------------------- -`counterz' --- 2023/05/19 Version 1.0.0 +`counterz' --- 2023/05/30 Version 1.1.0 Copyright (C) 2023 by Christopher McClain E-mail: christopher.mcclain@mail.wvu.edu @@ -38,7 +38,7 @@ random counters and save such counter values for future typesetting. \preamble ---------------------------------------------------------------------- -`counterz' --- 2023/05/19 Version 1.0.0 Additional tools for counters +`counterz' --- 2023/05/30 Version 1.1.0 Additional tools for counters E-mail: christopher.mcclain@mail.wvu.edu Released under the LaTeX Project Public License v1.3c or later See https://www.latex-project.org/lppl.txt @@ -110,11 +110,12 @@ and the derived files counterz.ins, \newcounter,\newbool,\newwrite,\numexpr,\openout,\pdfuniformdeviate, \providecounter,\ProvidesPackage,\relax,\renewcommand, \RequirePackage,\Roman,\roman,\setcounter,\the,\unexpanded,\value, - \whileboolexpr,\write} + \whileboolexpr,\write,\@ifnextchar,\ifltxcounter,\InputIfFileExists, + \m@k@gobbleendoptarg,\MessageBreak,\PackageError,\protect,\space, + \typein,\@typein} \CodelineIndex \RecordChanges \begin{document} - \newenvironment{codeoutput}{\newline\newline}{\newline\newline} \DocInput{\jobname.dtx} \end{document} %</driver> @@ -136,6 +137,7 @@ and the derived files counterz.ins, %\maketitle % %\changes{v1.0.0}{2023/05/19}{First public release} +%\changes{v1.1.0}{2023/05/30}{New and revised commands and error reports} % % %\begin{abstract} @@ -188,11 +190,12 @@ and the derived files counterz.ins, % %\subsection{Installation} % -% This package may be installed by copying the file \textsf{counterz.sty} to -% your local texmf directory. The code and documentation may also be generated -% from \textsf{\jobname.dtx}. Typesetting the documentation requires -% the package \textsf{hypdoc} which is included in \TeX\ distributions and at -% \href{http://www.ctan.org}{The Comprehensive TeX Archive Network}. +% Run (pdf)\TeX{} on counterz.dtx to generate the file counterz.sty, and copy it +% to your local texmf directory. To generate both the package file counterz.sty +% and the documentation counterz.pdf, run (pdf)\LaTeX{} on counterz.dtx. +% Typesetting the documentation requires the package \textsf{hypdoc} which is +% included in \TeX\ distributions and at \href{http://www.ctan.org} +% {The Comprehensive TeX Archive Network}. % %\section{User Guide} % @@ -202,57 +205,69 @@ and the derived files counterz.ins, %\begin{verbatim} %\usepackage{counterz} %\end{verbatim} +% +% \noindent % The package \textsf{counterz} loads the packages \textsf{etoolbox} and % \textsf{makecmds}, both of which are included in \TeX\ distributions % and at \href{http://www.ctan.org}{The Comprehensive TeX Archive Network}. % %\subsection{Counter Prefixes} % -%\DescribeMacro{\setcounterprefix} -%\DescribeMacro{\clearcounterprefix} % Counter prefixes are stored in an internal macro whose default value is an -% empty string. The command \cs{setcounterprefix}\marg{prefix} is used to change -% this value. For example, to change the prefix to \textit{PurpleMonkey}, use +% empty string. +%\DescribeMacro{\setcounterprefix} +% The command \cs{setcounterprefix}\marg{prefix} is used to change this value. +% For example, to change the prefix to \textit{PurpleMonkey}, use +% %\begin{verbatim} %\setcounterprefix{PurpleMonkey} %\end{verbatim} +% +% \noindent % and to change it from \textit{PurpleMonkey} to \textit{Dishwasher}, use +% %\begin{verbatim} %\setcounterprefix{Dishwasher} %\end{verbatim} -% The command \cs{clearcounterprefix} returns the prefix to its empty default: -%\begin{verbatim} -%\clearcounterprefix -%\end{verbatim} +% +% \noindent +%\DescribeMacro{\clearcounterprefix} +% The command \cs{clearcounterprefix} returns the prefix to its empty default. % %\subsection{Manipulating Counters} % %\DescribeMacro{\xnewcounter} -%\DescribeMacro{\xprovidecounter} -%\DescribeMacro{\xsetcounter} -%\DescribeMacro{\xaddtocounter} -%\DescribeMacro{\xvalue} % The command \cs{xnewcounter}\marg{countername} creates a counter with a -% prefixed name. The command \cs{xsetcounter}\marg{countername}\marg{integer} -% assigns the specified value to the counter with the prefixed name. For -% example, suppose that the file \textsf{BoringFile1.tex} contains the -% following: +% prefixed name. +%\DescribeMacro{\xsetcounter} +% The command \cs{xsetcounter}\marg{countername}\marg{integer} assigns the +% specified value to the counter with the prefixed name. For example, suppose +% that the file \textsf{BoringFile1.tex} contains the following: +% %\begin{verbatim} %\xnewcounter{bestcounterever} %\xsetcounter{bestcounterever}{100} %\end{verbatim} +% +% \noindent % and suppose that the file \textsf{BoringFile2.tex} contains the following: +% %\begin{verbatim} %\xnewcounter{bestcounterever} %\xsetcounter{bestcounterever}{-29} %\end{verbatim} +% +% \noindent % and, finally, suppose that the file Main.tex contains (in part) the following: +% %\begin{verbatim} %\setcounterprefix{PurpleMonkey} %\input{BoringFile1} %\setcounterprefix{Dishwasher} %\input{BoringFile2} %\end{verbatim} +% +% \noindent % Then typesetting \textsf{Main.tex} will create a counter % \textit{PurpleMonkeybestcounterever} with the value 100 and a counter % \textit{Dishwasherbestcounterever} with the value $-29$. By using commands @@ -263,9 +278,12 @@ and the derived files counterz.ins, % in the file \textsf{Main.tex}. By changing prefixes, \textsf{Main.tex} can % even input the same file multiple times without conflict. % +%\DescribeMacro{\xprovidecounter} % The commands \cs{xprovidecounter}, \cs{xaddtocounter}, and \cs{xvalue} are % likewise prefix versions of commands \cs{providecounter}, \cs{addtocounter}, +%\DescribeMacro{\xaddtocounter} % and \cs{value}, respectively. When the prefix is empty, the commands expand +%\DescribeMacro{\xvalue} % like their standard counterparts. (Note: \cs{providecounter} defines a counter % if it has not already been defined. See the documentation for the package % \textsf{makecmds} for details.) @@ -273,15 +291,17 @@ and the derived files counterz.ins, %\subsection{Conditional Statements} % %\DescribeMacro{\ifctrequal} -%\DescribeMacro{\ifctrless} -%\DescribeMacro{\ifctrmore} % The command \cs{ifctrequal}\marg{counter1}\marg{counter2}\marg{foo}\marg{bar} % uses the command \cs{xvalue} to compare the values of the (prefixed) counters % and then executes \meta{foo} if the values are equal and otherwise executes -% \meta{bar}. The commands \cs{ifctrless} and \cs{ifctrmore} work analogously, -% based on whether the value of prefixed \meta{counter1} is less than that of -% of prefixed \meta{counter2} or more than that of prefixed \meta{counter2}, -% respectively. Consider the example code +% \meta{bar}. The commands +%\DescribeMacro{\ifctrless} +% \cs{ifctrless} and \cs{ifctrmore} work analogously, based on whether the value +% of prefixed \meta{counter1} is less than that of of prefixed \meta{counter2} +%\DescribeMacro{\ifctrmore} +% or more than that of prefixed \meta{counter2}, respectively. Consider the +% example code +% %\begin{verbatim} %\setcounterprefix{TigerTiger} %\xnewcounter{Small} @@ -292,8 +312,11 @@ and the derived files counterz.ins, %\ifctrless{Small}{Large}{March}{April} %\ifctrmore{Small}{Large}{May}{June} %\end{verbatim} +% +% \noindent % which produces the output -% \begin{codeoutput} +% +% \bigskip %\setcounterprefix{TigerTiger} %\xnewcounter{Small} %\xsetcounter{Small}{7} @@ -302,18 +325,21 @@ and the derived files counterz.ins, %\ifctrequal{Small}{Large}{January}{February} %\ifctrless{Small}{Large}{March}{April} %\ifctrmore{Small}{Large}{May}{June} -% \end{codeoutput} +% +% \bigskip +% \noindent % because the value of the counter \textit{TigerTigerSmall} is 7 which is less % than 11, the value of the counter \textit{TigerTigerLarge}. % %\DescribeMacro{\ifctrzero} -%\DescribeMacro{\ifctrneg} -%\DescribeMacro{\ifctrpos} % The command \cs{ifctrzero}\marg{counter}\marg{foo}\marg{bar} executes % \meta{foo} if the value of the (prefixed) counter is zero and otherwise -% executes \meta{bar}. The commands \cs{ifctrneg} and \cs{ifctrpos} work -% analogously based on whether the value is negative or positive, respectively. -% The example code +% executes \meta{bar}. The commands +%\DescribeMacro{\ifctrneg} +% \cs{ifctrneg} and \cs{ifctrpos} work analogously based on whether the value +%\DescribeMacro{\ifctrpos} +% is negative or positive, respectively. The example code +% %\begin{verbatim} %\setcounterprefix{TigerTiger} %\xprovidecounter{Small} @@ -322,54 +348,72 @@ and the derived files counterz.ins, %\ifctrneg{Small}{March}{April} %\ifctrpos{Small}{May}{June} %\end{verbatim} +% +% \noindent % produces the output -% \begin{codeoutput} +% +% \bigskip %\setcounterprefix{TigerTiger} %\xprovidecounter{Small} %\xsetcounter{Small}{7} %\ifctrzero{Small}{January}{February} %\ifctrneg{Small}{March}{April} %\ifctrpos{Small}{May}{June} -% \end{codeoutput} +% +% \bigskip +% \noindent % because the value of the counter \textit{TigerTigerSmall} is 7 which is % positive (and thus nonzero, as well). % %\subsection{Displaying Counters} % %\DescribeMacro{\xarabic} +% The command \cs{xarabic}\marg{counter} is simply a prefix version of the +% standard display command \cs{arabic}. %\DescribeMacro{\xroman} +% The commands \cs{xroman}, \cs{xRoman}, \cs{xalph}, \cs{xAlph}, and %\DescribeMacro{\xRoman} +% \cs{xfnsymbol} are likewise prefix versions of the standard display commands %\DescribeMacro{\xalph} +% \cs{roman}, \cs{Roman}, \cs{alph}, \cs{Alph}, and \cs{fnsymbol}, inheriting +% the restrictions of their %\DescribeMacro{\xAlph} +% parent commands. +% %\DescribeMacro{\xfnsymbol} -% The command \cs{xarabic}\marg{counter} is simply a prefix version of the -% standard display command \cs{arabic}. The commands \cs{xroman}, \cs{xRoman}, -% \cs{xalph}, \cs{xAlph}, and \cs{xfnsymbol} are likewise prefix versions of -% the standard display commands \cs{roman}, \cs{Roman}, \cs{alph}, \cs{Alph}, -% and \cs{fnsymbol}, inheriting the restrictions of their parent commands. % Note that the code +% %\begin{verbatim} %\setcounterprefix{Sneaky} %\xprovidecounter{Pete} %\xsetcounter{Pete}{42} %\arabic{Pete} %\end{verbatim} +% +% \noindent % produces an error because the counter \textit{Pete} is not defined, but the % code +% %\begin{verbatim} %\setcounterprefix{Sneaky} %\xprovidecounter{Pete} %\xsetcounter{Pete}{42} %\xarabic{Pete} %\end{verbatim} +% +% \noindent % produces the output -% \begin{codeoutput} +% +% \bigskip %\setcounterprefix{Sneaky} %\xprovidecounter{Pete} %\xsetcounter{Pete}{42} %\xarabic{Pete} -% \end{codeoutput} +% +% \bigskip +% \noindent % which is the value of the counter \textit{SneakyPete}. The code +% %\begin{verbatim} %\setcounterprefix{Sneaky} %\xprovidecounter{Pete} @@ -377,6 +421,8 @@ and the derived files counterz.ins, %\clearcounterprefix %\xarabic{Pete} %\end{verbatim} +% +% \noindent % also generates error because the final line is trying to use the % undefined counter \textit{Pete} after the prefix was returned to its % default value. @@ -385,6 +431,7 @@ and the derived files counterz.ins, % \textsf{counterz} defines some variants of \cs{xarabic} that are useful in % the display of mathematical expressions. For example, consider the following % code: +% %\begin{verbatim} %\xprovidecounter{a} %\xsetcounter{a}{5} @@ -394,8 +441,11 @@ and the derived files counterz.ins, %\xsetcounter{c}{-7} %$\xarabic{a}+\xarabic{b}+\xarabic{c}$ %\end{verbatim} +% +% \noindent % which produces -% \begin{codeoutput} +% +% \bigskip %\xprovidecounter{a} %\xsetcounter{a}{5} %\xprovidecounter{b} @@ -403,81 +453,109 @@ and the derived files counterz.ins, %\xprovidecounter{c} %\xsetcounter{c}{-7} %$\xarabic{a}+\xarabic{b}+\xarabic{c}$ -% \end{codeoutput} -% Using \cs{arabicx} causes the expression to -% contain the consecutive pair $+-$. The command +% +% \bigskip +% \noindent +% Using \cs{arabicx} causes the expression to contain the consecutive pair $+-$. +% The command \cs{xsigned}\marg{counter} is like \cs{xarabic} except that %\DescribeMacro{\xsigned} -% \cs{xsigned}\marg{counter} is like \cs{xarabic} except that nonnegative values -% are preceded by a plus sign ``+''. The code +% nonnegative values are preceded by a plus sign ``+''. The code +% %\begin{verbatim} %$\xarabic{a}\xsigned{b}\xsigned{c}$ %\end{verbatim} +% +% \noindent % produces -% \begin{codeoutput} +% +% \bigskip %$\xarabic{a}\xsigned{b}\xsigned{c}$ -% \end{codeoutput} +% +% \bigskip +% \noindent % If we wish to suppress the $0$, we can instead use the command %\DescribeMacro{\xsignednz} -%\DescribeMacro{\xarabicnz} % \cs{xsignednz}\marg{counter} which is a nonzero version of \cs{xsigned} and, % if desired or necessary, the command \cs{xarabicnz}\marg{counter} which is a -% nonzero version of \cs{xarabic}. -% The code +%\DescribeMacro{\xarabicnz} +% nonzero version of \cs{xarabic}. The code +% %\begin{verbatim} %$\xarabicnz{a}\xsignednz{b}\xsignednz{c}$ %\end{verbatim} +% +% \noindent % produces -% \begin{codeoutput} +% +% \bigskip %$\xarabicnz{a}\xsignednz{b}\xsignednz{c}$ -% \end{codeoutput} +% +% \bigskip +% \noindent %\DescribeMacro{\xnegof} +% The command \cs{xnegof}\marg{counter} displays the negative of \meta{counter}. +% The command \cs{xnegofnz} does the same except that it suppresses the number %\DescribeMacro{\xnegofnz} +% zero. The command \cs{xnegsigned} includes the appropriate signs of plus ``+'' %\DescribeMacro{\xnegsigned} +% and minus ``-'' (assigning a minus to zero in this case). %\DescribeMacro{\xnegsignednz} -% The package also contains variants of these commands for displaying the -% negatives of counters, as demonstrated by the following code: +% Finally, the command \cs{xnegsignednz} does the same except that it suppresses +% the number zero., as demonstrated by the following code: +% %\begin{verbatim} %\xprovidecounter{d} %\xsetcounter{d}{-2} -%$\xarabic{a}\xsigned{b}\xsigned{c}=\xarabic{d}$\\ -%$\xnegof{d}=\xnegof{a}\xnegsigned{b}\xnegsigned{c}$\\ +% +%$\xarabic{a}\xsigned{b}\xsigned{c}=\xarabic{d}$ +% +%$\xnegof{d}=\xnegof{a}\xnegsigned{b}\xnegsigned{c}$ +% %$\xnegofnz{d}=\xnegofnz{a}\xnegsignednz{b}\xnegsignednz{c}$ %\end{verbatim} +% +% \noindent % which produces -%\begin{codeoutput} +% +% \bigskip %\xprovidecounter{d} %\xsetcounter{d}{-2} -%$\xarabic{a}\xsigned{b}\xsigned{c}=\xarabic{d}$\\ -%$\xnegof{d}=\xnegof{a}\xnegsigned{b}\xnegsigned{c}$\\ +% +%$\xarabic{a}\xsigned{b}\xsigned{c}=\xarabic{d}$ +% +%$\xnegof{d}=\xnegof{a}\xnegsigned{b}\xnegsigned{c}$ +% %$\xnegofnz{d}=\xnegofnz{a}\xnegsignednz{b}\xnegsignednz{c}$ -%\end{codeoutput} +% +% \bigskip % The preceding commands for displaying values related to counters were created % by using some other commands that we make available in case they prove useful. %\DescribeMacro{\xabsof} -%\DescribeMacro{\xsignof} -%\DescribeMacro{\xnegsignof} % The command \cs{xabsof}\marg{counter} prints the absolute value of % \meta{counter}. The command \cs{xsignof}\marg{counter} prints a minus sign +%\DescribeMacro{\xsignof} % ``-'' if \meta{counter} is negative and otherwise prints a plus sign ``+''. % (Note that the latter case includes the value zero.) The command +%\DescribeMacro{\xnegsignof} % \cs{xnegsignof}\marg{counter} prints a plus sign ``+'' if \meta{counter} is -% negative and otherwise prints a minus sign ``-''. (Note that the former case +% negative and otherwise prints a minus sign ``-''. (Note that the latter case % includes the value zero.) % % Additional variants of these commands suppress certain output, as is % conventional when using integers as coefficients in algebraic expressions. -%\DescribeMacro{\xabsofcoef} -%\DescribeMacro{\xsignofcoef} -%\DescribeMacro{\xnegsignofcoef} % The command \cs{xabsofcoef}\marg{counter} prints the absolute value of +%\DescribeMacro{\xabsofcoef} % \meta{counter} except that it suppresses the values of 1 and 0. The command +%\DescribeMacro{\xsignofcoef} % \cs{xsignofcoef}\marg{counter} prints the sign of \meta{counter} if the value % of \meta{counter} is nonzero. The command \cs{xnegsignofcoef}\marg{counter} +%\DescribeMacro{\xnegsignofcoef} % prints the opposite sign of \meta{counter} if the value of \meta{counter} is % nonzero. These commands are used to build versions of \cs{xarabic} and % \cs{xsigned} specific to typesetting coefficients, as we now illustrate. % % Consider the following code +% %\begin{verbatim} %\xprovidecounter{a0} %\xsetcounter{a0}{-10} @@ -492,10 +570,13 @@ and the derived files counterz.ins, %\xprovidecounter{a5} %\xsetcounter{a5}{11} %$\xarabic{a5}x^5 + \xarabic{a4}x^4 + \xarabic{a3}x^3 + \xarabic{a2}x^2 -% + \xarabic{a1}x + \xarabic{a0} = 42$ +% + \xarabic{a1}x + \xarabic{a0} = 42$ %\end{verbatim} +% +% \noindent % and its output -%\begin{codeoutput} +% +% \bigskip %\xprovidecounter{a0} %\xsetcounter{a0}{-10} %\xprovidecounter{a1} @@ -509,57 +590,95 @@ and the derived files counterz.ins, %\xprovidecounter{a5} %\xsetcounter{a5}{11} %$\xarabic{a5}x^5 + \xarabic{a4}x^4 + \xarabic{a3}x^3 + \xarabic{a2}x^2 -% + \xarabic{a1}x + \xarabic{a0} = 42$ -%\end{codeoutput} -% We seek a better way to handle the coefficients, especially $1$ and $-1$. +% + \xarabic{a1}x + \xarabic{a0} = 42$ +% +% \bigskip +% \noindent +% We seek a better way to handle the coefficients, especially $1$ and $-1$. The +% command \cs{xcoef}\marg{counter} prints the value of \meta{counter} except %\DescribeMacro{\xcoef} -%\DescribeMacro{\xsignedcoef} -% The command \cs{xcoef}\marg{counter} prints the value of \meta{counter} except % that it suppresses the values of 1, 0, and -1, printing a minus sign ``-'' in % the latter case. The command \cs{xsignedcoef}\marg{counter} is like \cs{xcoef} +%\DescribeMacro{\xsignedcoef} % except that positive values are preceded by a plus sign ``+''. We use these to % write the code +% %\begin{verbatim} %$\xarabic{a5}x^5 + \xarabic{a4}x^4 + \xarabic{a3}x^3 + \xarabic{a2}x^2 -% + \xarabic{a1}x + \xarabic{a0} = 42$\\ -%$\xcoef{a5}\ifctrzero{a5}{}{x^5} \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} -% \xsignedcoef{a3}\ifctrzero{a3}{}{x^3} \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} -% \xsignedcoef{a1}\ifctrzero{a1}{}{x} \xsignednz{a0} = 42$ +% + \xarabic{a1}x + \xarabic{a0} = 42$ +% +%$\xcoef{a5}\ifctrzero{a5}{}{x^5} +% \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} +% \xsignedcoef{a3}\ifctrzero{a3}{}{x^3} +% \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} +% \xsignedcoef{a1}\ifctrzero{a1}{}{x} +% \xsignednz{a0} +% = 42$ %\end{verbatim} +% +% \noindent % whose output is -%\begin{codeoutput} +% +% \bigskip %$\xarabic{a5}x^5 + \xarabic{a4}x^4 + \xarabic{a3}x^3 + \xarabic{a2}x^2 -% + \xarabic{a1}x + \xarabic{a0} = 42$\\ -%$\xcoef{a5}\ifctrzero{a5}{}{x^5} \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} -% \xsignedcoef{a3}\ifctrzero{a3}{}{x^3} \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} -% \xsignedcoef{a1}\ifctrzero{a1}{}{x} \xsignednz{a0} = 42$ -%\end{codeoutput} +% + \xarabic{a1}x + \xarabic{a0} = 42$ +% +%$\xcoef{a5}\ifctrzero{a5}{}{x^5} +% \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} +% \xsignedcoef{a3}\ifctrzero{a3}{}{x^3} +% \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} +% \xsignedcoef{a1}\ifctrzero{a1}{}{x} +% \xsignednz{a0} +% = 42$ +% +% \bigskip %\DescribeMacro{\xnegcoef} -%\DescribeMacro{\xnegsignedcoef} % The command \cs{xnegcoef}\marg{counter} prints the negative of the value of % \meta{counter} except that it suppresses the values of 1, 0, and -1, printing % a ``-'' in the latter case. The command \cs{xnegsignedcoef}\marg{counter} is +%\DescribeMacro{\xnegsignedcoef} % like \cs{xnegcoef} except that positive values are preceded by a plus sign % ``+''. We use these to write the code +% %\begin{verbatim} -%$\xcoef{a5}\ifctrzero{a5}{}{x^5} \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} -% \xsignedcoef{a3}\ifctrzero{a3}{}{x^3} \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} -% \xsignedcoef{a1}\ifctrzero{a1}{}{x} \xsignednz{a0} = 42$\\ -%$\xcoef{a5}\ifctrzero{a5}{}{x^5} \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} -% \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} \xsignednz{a0} -% = \xnegcoef{a3}\ifctrzero{a3}{}{x^3} \xnegsignedcoef{a1}\ifctrzero{a1}{}{x} +%$\xcoef{a5}\ifctrzero{a5}{}{x^5} +% \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} +% \xsignedcoef{a3}\ifctrzero{a3}{}{x^3} +% \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} +% \xsignedcoef{a1}\ifctrzero{a1}{}{x} +% \xsignednz{a0} +% = 42$ +% +%$\xcoef{a5}\ifctrzero{a5}{}{x^5} +% \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} +% \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} +% \xsignednz{a0} +% = \xnegcoef{a3}\ifctrzero{a3}{}{x^3} +% \xnegsignedcoef{a1}\ifctrzero{a1}{}{x} % +42$ %\end{verbatim} +% +% \noindent % whose output is -%\begin{codeoutput} -%$\xcoef{a5}\ifctrzero{a5}{}{x^5} \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} -% \xsignedcoef{a3}\ifctrzero{a3}{}{x^3} \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} -% \xsignedcoef{a1}\ifctrzero{a1}{}{x} \xsignednz{a0} = 42$\\ -%$\xcoef{a5}\ifctrzero{a5}{}{x^5} \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} -% \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} \xsignednz{a0} -% = \xnegcoef{a3}\ifctrzero{a3}{}{x^3} \xnegsignedcoef{a1}\ifctrzero{a1}{}{x} +% +% \bigskip +%$\xcoef{a5}\ifctrzero{a5}{}{x^5} +% \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} +% \xsignedcoef{a3}\ifctrzero{a3}{}{x^3} +% \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} +% \xsignedcoef{a1}\ifctrzero{a1}{}{x} +% \xsignednz{a0} +% = 42$ +% +%$\xcoef{a5}\ifctrzero{a5}{}{x^5} +% \xsignedcoef{a4}\ifctrzero{a4}{}{x^4} +% \xsignedcoef{a2}\ifctrzero{a2}{}{x^2} +% \xsignednz{a0} +% = \xnegcoef{a3}\ifctrzero{a3}{}{x^3} +% \xnegsignedcoef{a1}\ifctrzero{a1}{}{x} % +42$ -%\end{codeoutput} +% +% \bigskip % As the reader has probably already observed in the code above, these display % commands appear to be less efficient than a manual adjustment of signs and % numbers. For fixed, known values of counters, this assessment is correct. The @@ -568,16 +687,21 @@ and the derived files counterz.ins, % %\subsection{Random Counters} % +% We first define random versions of \cs{setcounter} and \cs{addtocounter}. +% The command \cs{randsetcounter}\marg{counter}\marg{min}\marg{max} assigns +%\DescribeMacro{\randsetcounter} +% to \meta{counter} a random integer value between \meta{min} and \meta{max}. %\DescribeMacro{\xrandsetcounter} +% The command \cs{xrandsetcounter} is a prefix version of \cs{randsetcounter}. +% Analogously, we define the command +%\DescribeMacro{\randaddtocounter} +% \cs{randaddtocounter}\marg{counter}\marg{min}\marg{max} which adds to +% \meta{counter} a random integer value between \meta{min} and \meta{max}. %\DescribeMacro{\xrandaddtocounter} -% We first define random versions of \cs{xsetcounter} and \cs{xaddtocounter}. -% The command \cs{xrandsetcounter}\marg{counter}\marg{min}\marg{max} assigns -% to the prefixed \meta{counter} a random integer value between \meta{min} and -% \meta{max}. Analogously, the command -% \cs{xrandaddtocounter}\marg{counter}\marg{min}\marg{max} adds to the prefixed -% \meta{counter} a random integer value between \meta{min} and \meta{max}. The -% following code may be used to produce an expression in the form $ax+b$, where -% $a$ and $b$ are random integers between $-10$ and $10$: +% \cs{xrandaddtocounter} is a prefix version of \cs{randaddtocounter}. +% The following code may be used to produce an expression in the form +% $ax+b$, where $a$ and $b$ are random integers between $-10$ and $10$: +% %\begin{verbatim} %\xprovidecounter{a} %\xprovidecounter{b} @@ -585,9 +709,13 @@ and the derived files counterz.ins, %\xrandsetcounter{b}{-10}{10} %$\xcoef{a}\ifctrzero{a}{\xarabic{b}}{x \xsignednz{b}}$ %\end{verbatim} +% +% \noindent % Organized in the following table are sixty instances of output that are % randomly generated by the typesetting of this document: -%\begin{codeoutput} +% +% \bigskip +%\noindent %\xprovidecounter{a} %\xprovidecounter{b} %\begin{tabular}{rrrrrr} @@ -772,57 +900,130 @@ and the derived files counterz.ins, %\xrandsetcounter{b}{-10}{10} %$\xcoef{a}\ifctrzero{a}{\xarabic{b}}{x \xsignednz{b}}$ \\ %\end{tabular} -%\end{codeoutput} +% +% \bigskip +% In order to effectively manage the options of randomizing counter values or +%\DescribeMacro{\randomizectr} +% reusing counter values, the commands \cs{randomizectr} and \cs{norandomizectr} +% are used to toggle an internal boolean variable. The internal boolean +%\DescribeMacro{\norandomizectr} +% is initialized as TRUE when the \textsf{counterz} package is loaded. A +% conditional command \cs{ifrandomizectr}\marg{foo}\marg{bar} executes +%\DescribeMacro{\ifrandomizectr} +% \meta{foo} when the boolean is true and otherwise executes \meta{bar}. % % If our document contains randomly generated counters, but we wish to typeset % the document again without changing those values, then we need a way to save -% those values. The \textsf{counterz} package offers the following solution: a -% file \textsf{\meta{jobname}.counters.tex} may be created during the -% typesetting process to store the necessary information. For example, if the -% document is named \textsf{Yellowdog.tex}, then the previously generated -% counters and their assigned values will be stored the file -% \textsf{Yellowdog.counters.tex}. %\DescribeMacro{\opencountersfile} -% The command \cs{opencountersfile} creates and opens the write stream to this -% file. The author only has to include this command once, prior to any commands -% used to save the counter values. -% +% them. The command \cs{opencountersfile} creates and opens the write stream to +% the file \textsf{\meta{jobname}.counters.tex} to store the necessary +% information. For example, if the document is +% named \textsf{Yellowdog.tex}, then the previously generated counters and their +% assigned values will be stored the file \textsf{Yellowdog.counters.tex}. +% The author only has to include this command once, prior to any commands used +% to save the counter values. Additional instances of \cs{opencountersfile} will +% report an error, as will trying to use the command when the document is set to +% not randomize (e.g. \cs{norandomizectr}). These error reports are designed to +% prevent the accidental overwriting of \textsf{\meta{jobname}.counters.tex}. +% +% After opening the write stream to \textsf{\meta{jobname}.counters.tex}, the +% command \cs{savecounter}\marg{counter} may be used to ``save'' the value of +%\DescribeMacro{\savecounter} +% \textit{counter} by writing to the file the relevant \cs{providecounter} and +% \cs{setcounter} commands. The command \cs{xsavecounter} is a prefix version of %\DescribeMacro{\xsavecounter} -% The command \cs{xsavecounter}\marg{counter} ``saves'' the value of -% \textit{counter} by writing to the file \textsf{\meta{jobname}.counters.tex} -% the relevant \cs{providecounter} and \cs{setcounter} commands. The commands -% written to the file explicitly include the necessary counter prefixes, and -% consequently an author can, if necessary, manually find in the file the -% specific assignment for any counter. The counters file may then be inputted -% near the beginning of a subsequent typesetting to preassign all of the -% values. +% \cs{savecounter}. When using \cs{xsavecounter}, the commands that are written +% to the file include the necessary counter prefixes. Consequently, an author +% can, if necessary or desired, manually search the file for the value assigned +% to any randomly generated counter. +% +% Once we have generated a file for storing counters, we need a way to recover +% those values during a subsequent typesetting. The command +%\DescribeMacro{\inputcountersfile} +% \cs{inputcountersfile} will input the necessary file, if it exists, and report +% an error if it does not. Keep in mind that inputting the file will override +% any previous assignments of those counters, so it is probably best to invoke +% this command near the beginning of a document. For example, after including an +% instance of either \cs{randomizectr} or \cs{norandomizectr}, a document named +% \textsf{Yellowdog.tex} might include the code % -%\DescribeMacro{\randomizectr} -%\DescribeMacro{\norandomizectr} -%\DescribeMacro{\ifrandomizectr} -% In order to effectively manage the options of randomizing counter values or -% reusing counter values, the \textsf{counterz} package offers the commands -% \cs{randomizectr} and \cs{norandomizectr} that toggle an internal boolean -% variable, and a conditional \cs{ifrandomizectr}\marg{foo}\marg{bar} that -% executes \meta{foo} when the boolean is true and otherwise executes -% \meta{bar}. For example, a document named \textsf{Yellowdog.tex} might -% include the code %\begin{verbatim} -%\ifrandomizectr{}{input{Yellowdog.counters}} +%\ifrandomizectr{\opencountersfile}{\inputcountersfile} %\end{verbatim} -% to determine whether to preload previously stored counter values. % -%\DescribeMacro{\xrandprovidecounter} -%\DescribeMacro{\xrandprovidecounternz} -% The command \cs{xrandprovidecounter}\marg{counter}\marg{min}\marg{max} -% combines the four commands \cs{xprovidecounter}, \cs{ifrandomizectr}, -% \cs{xrandsetcounter}, and \cs{xsavecounter} to define a command that creates -% \meta{counter} if it has not already been defined and, if the document is +% \noindent +% to determine whether to preload previously stored counter values or open the +% write stream in anticipation of randomly generating new counter values. +% +%\DescribeMacro{\promptrandomizectr} +% The command \cs{promptrandomizectr}\oarg{macro}\marg{message}\marg{string} +% offers an alternative to manually switching between the commands +% \cs{randomizectr} and \cs{norandomizectr} for different typesettings. The +% contents of \meta{message} are displayed in the terminal, awaiting a response +% from the user at the prompt \meta{macro}. If the optional argument is not used +% then the default prompt is \cs{@typein}. If the optional argument is given, it +% must be a macro name that includes the backslash. The user's response is +% stored as a string in \meta{macro} and compared to \meta{string}. If they are +% equal, then the command \cs{randomizectr} is executed. If they are not equal +% then \cs{norandomizectr} is executed. +% +% Consider the following example code: +% +%\begin{verbatim} +%\promptrandomizectr[\EnterResponse]{% +% ^^J Enter 1 to randomize. +% ^^J Enter 2 to not randomize. +%}{% +% 1% +%}% +%\ifrandomizectr{% +% \opencountersfile +%}{% +% \inputcountersfile +%}% +%\end{verbatim} +% +% \noindent +% which displays the following in the terminal: +% +%\begin{verbatim} +% Enter 1 to randomize. +% Enter 2 to not randomize. +% +%\EnterResponse= +%\end{verbatim} +% +% \noindent +% Notice that the first (optional) argument \cs{EnterResponse} begins with a +% backslash and is displayed with an equals sign ``='' at the prompt. Also note +% that the second argument contains two instances of the text \texttt{\^{}\^{}J} +% which is used to produce a line break in the terminal output. Next, note that +% the third argument \texttt{1} is immediately followed by a percent symbol +% \texttt{\%} to prevent extra space being included in the string. (If the +% \texttt{1} was immediately followed by a closing brace instead of a line break +% in the code, the percent symbol would not be used.) Finally, note that if the +% user types a \texttt{1} in the terminal and presses Enter, then the commands +% \cs{randomizectr} and \cs{opencountersfile} will be executed. If the user +% enters \textit{any other text} or simply presses Enter with no text, then the +% commands \cs{norandomizectr} and \cs{inputcountersfile} will be executed, +% despite the instructions to enter a \texttt{2} to achieve this outcome. +% +%\DescribeMacro{\randprovidecounter} +% The command \cs{randprovidecounter}\marg{counter}\marg{min}\marg{max} +% combines the four commands \cs{providecounter}, \cs{ifrandomizectr}, +% \cs{randsetcounter}, and \cs{savecounter}. The command creates \meta{counter} +% if it has not already been defined and, if the document is % randomized, assigns to \meta{counter} a random integer value between % \meta{min} and \meta{max} and saves this value to the counters file. The -% command \cs{xrandprovidecounternz} is like \cs{xrandprovidecounter} except -% that the generated value is nonzero. Suppose that \textsf{Neverending.tex} +%\DescribeMacro{\randprovidecounternz} +% command \cs{randprovidecounternz} is like \cs{randprovidecounter} except +%\DescribeMacro{\xrandprovidecounter} +% that the generated value is nonzero. The commands \cs{xrandprovidecounter} and +%\DescribeMacro{\xrandprovidecounternz} +% \cs{xrandprovidecounternz} are prefix versions of \cs{randprovidecounter} and +% \cs{randprovidecounternz}, respectively. Suppose that \textsf{Neverending.tex} % contains the code +% %\begin{verbatim} %\randomizectr %\ifrandomizectr{\opencountersfile}{} @@ -830,21 +1031,27 @@ and the derived files counterz.ins, %\xrandprovidecounternz{Oracle}{-10}{10} %\xcoef{Oracle}x+42 %\end{verbatim} +% +% \noindent % After typesetting once, the resulting document might display an expression % such as $-9x+42$ and print to \textsf{Neverending.counters.tex} the line +% %\begin{verbatim} %\providecounter {SouthernOracle} \setcounter {SouthernOracle}{-9} %\end{verbatim} +% +% \noindent % After typesetting a second time, the resulting document might display $4x+42$ % and print to \textsf{Neverending.counters.tex} the line +% %\begin{verbatim} %\providecounter {SouthernOracle} \setcounter {SouthernOracle}{4} %\end{verbatim} +% +% \noindent % If, however, the command \cs{randomizectr} is replaced by \cs{norandomizectr}, % then a third typesetting will leave both the displayed text and the counters -% file unchanged. (Tip: Users who are concerned about accidental randomization -% might create a terminal prompt with the commands \cs{typeout} and \cs{typein} -% to input the randomization preference, as an added layer of security.) +% file unchanged. % %\StopEventually{^^A % \PrintChanges @@ -859,7 +1066,9 @@ and the derived files counterz.ins, % % \begin{macrocode} %<*package> -\ProvidesPackage{counterz}[2023/05/19 v1.0.0 Additional tools for counters] +\ProvidesPackage{counterz}[% + 2023/05/30 v1.1.0 Additional tools for counters +]% \RequirePackage{etoolbox,makecmds} % \end{macrocode} % @@ -874,8 +1083,12 @@ and the derived files counterz.ins, % % \begin{macrocode} \newcommand{\@counterz@counterprefix}{} -\newcommand{\setcounterprefix}[1]{\renewcommand{\@counterz@counterprefix}{#1}} -\newcommand{\clearcounterprefix}{\setcounterprefix{}} +\newcommand{\setcounterprefix}[1]{% + \renewcommand{\@counterz@counterprefix}{#1} +}% +\newcommand{\clearcounterprefix}{% + \setcounterprefix{} +}% % \end{macrocode} % %\end{macro} @@ -898,11 +1111,21 @@ and the derived files counterz.ins, % counterparts. % % \begin{macrocode} -\newcommand{\xnewcounter}[1]{\newcounter{\@counterz@counterprefix #1}} -\newcommand{\xprovidecounter}[1]{\providecounter{\@counterz@counterprefix #1}} -\newcommand{\xsetcounter}[2]{\setcounter{\@counterz@counterprefix #1}{#2}} -\newcommand{\xaddtocounter}[2]{\addtocounter{\@counterz@counterprefix #1}{#2}} -\newcommand{\xvalue}[1]{\value{\@counterz@counterprefix #1}} +\newcommand{\xnewcounter}[1]{% + \newcounter{\@counterz@counterprefix #1} +}% +\newcommand{\xprovidecounter}[1]{% + \providecounter{\@counterz@counterprefix #1} +}% +\newcommand{\xsetcounter}[2]{% + \setcounter{\@counterz@counterprefix #1}{#2} +}% +\newcommand{\xaddtocounter}[2]{% + \addtocounter{\@counterz@counterprefix #1}{#2} +}% +\newcommand{\xvalue}[1]{% + \value{\@counterz@counterprefix #1} +}% % \end{macrocode} % %\end{macro} @@ -926,7 +1149,9 @@ and the derived files counterz.ins, % \meta{counter2} and otherwise executes \meta{bar}. % % \begin{macrocode} -\newcommand{\ifctrequal}[4]{\ifnumequal{\xvalue{#1}}{\xvalue{#2}}{#3}{#4}} +\newcommand{\ifctrequal}[4]{% + \ifnumequal{\xvalue{#1}}{\xvalue{#2}}{#3}{#4} +}% % \end{macrocode} % %\end{macro} @@ -938,7 +1163,9 @@ and the derived files counterz.ins, % \meta{counter2} and otherwise executes \meta{bar}. % % \begin{macrocode} -\newcommand{\ifctrless}[4]{\ifnumless{\xvalue{#1}}{\xvalue{#2}}{#3}{#4}} +\newcommand{\ifctrless}[4]{% + \ifnumless{\xvalue{#1}}{\xvalue{#2}}{#3}{#4} +}% % \end{macrocode} % %\end{macro} @@ -950,7 +1177,9 @@ and the derived files counterz.ins, % \meta{counter2} and otherwise executes \meta{bar}. % % \begin{macrocode} -\newcommand{\ifctrmore}[4]{\ifnumless{\xvalue{#2}}{\xvalue{#1}}{#3}{#4}} +\newcommand{\ifctrmore}[4]{% + \ifnumless{\xvalue{#2}}{\xvalue{#1}}{#3}{#4} +}% % \end{macrocode} % %\end{macro} @@ -961,7 +1190,9 @@ and the derived files counterz.ins, % the value of \meta{counter} is zero and otherwise executes \meta{bar}. % % \begin{macrocode} -\newcommand{\ifctrzero}[3]{\ifnumequal{\xvalue{#1}}{0}{#2}{#3}} +\newcommand{\ifctrzero}[3]{% + \ifnumequal{\xvalue{#1}}{0}{#2}{#3} +}% % \end{macrocode} % %\end{macro} @@ -972,7 +1203,9 @@ and the derived files counterz.ins, % value of \meta{counter} is negative and otherwise executes \meta{bar}. % % \begin{macrocode} -\newcommand{\ifctrneg}[3]{\ifnumless{\xvalue{#1}}{0}{#2}{#3}} +\newcommand{\ifctrneg}[3]{% + \ifnumless{\xvalue{#1}}{0}{#2}{#3} +}% % \end{macrocode} % %\end{macro} @@ -983,7 +1216,9 @@ and the derived files counterz.ins, % value of \meta{counter} is positive and otherwise executes \meta{bar}. % % \begin{macrocode} -\newcommand{\ifctrpos}[3]{\ifnumless{\xvalue{#1}}{1}{#3}{#2}} +\newcommand{\ifctrpos}[3]{% + \ifnumless{\xvalue{#1}}{1}{#3}{#2} +}% % \end{macrocode} % %\end{macro} @@ -1042,7 +1277,9 @@ and the derived files counterz.ins, % includes the value zero. % % \begin{macrocode} -\newcommand{\xsignof}[1]{\ifctrneg{#1}{-}{+}} +\newcommand{\xsignof}[1]{% + \ifctrneg{#1}{-}{+} +}% % \end{macrocode} % %\end{macro} @@ -1054,7 +1291,9 @@ and the derived files counterz.ins, % includes the value zero. % % \begin{macrocode} -\newcommand{\xnegsignof}[1]{\ifctrneg{#1}{+}{-}} +\newcommand{\xnegsignof}[1]{% + \ifctrneg{#1}{+}{-} +}% % \end{macrocode} % %\end{macro} @@ -1066,7 +1305,9 @@ and the derived files counterz.ins, % \cs{xsignof}. % % \begin{macrocode} -\newcommand{\xsigned}[1]{\xsignof{#1} \xabsof{#1}} +\newcommand{\xsigned}[1]{% + \xsignof{#1} \xabsof{#1} +}% % \end{macrocode} % %\end{macro} @@ -1077,7 +1318,9 @@ and the derived files counterz.ins, % zero. % % \begin{macrocode} -\newcommand{\xsignednz}[1]{\ifctrzero{#1}{}{\xsigned{#1}}} +\newcommand{\xsignednz}[1]{% + \ifctrzero{#1}{}{\xsigned{#1}} +}% % \end{macrocode} % %\end{macro} @@ -1088,7 +1331,9 @@ and the derived files counterz.ins, % zero. % % \begin{macrocode} -\newcommand{\xarabicnz}[1]{\ifctrzero{#1}{}{\xarabic{#1}}} +\newcommand{\xarabicnz}[1]{% + \ifctrzero{#1}{}{\xarabic{#1}} +}% % \end{macrocode} % %\end{macro} @@ -1100,7 +1345,9 @@ and the derived files counterz.ins, % \cs{xnegsignof}. % % \begin{macrocode} -\newcommand{\xnegsigned}[1]{\xnegsignof{#1} \xabsof{#1}} +\newcommand{\xnegsigned}[1]{% + \xnegsignof{#1} \xabsof{#1} +}% % \end{macrocode} % %\end{macro} @@ -1111,7 +1358,9 @@ and the derived files counterz.ins, % number zero. % % \begin{macrocode} -\newcommand{\xnegsignednz}[1]{\ifctrzero{#1}{}{\xnegsigned{#1}}} +\newcommand{\xnegsignednz}[1]{% + \ifctrzero{#1}{}{\xnegsigned{#1}} +}% % \end{macrocode} % %\end{macro} @@ -1121,7 +1370,9 @@ and the derived files counterz.ins, % \cs{xnegof}\marg{counter} prints the negative of the value of \meta{counter}. % % \begin{macrocode} -\newcommand{\xnegof}[1]{\ifctrpos{#1}{-}{}\xabsof{#1}} +\newcommand{\xnegof}[1]{% + \ifctrpos{#1}{-}{}\xabsof{#1} +}% % \end{macrocode} % %\end{macro} @@ -1132,7 +1383,9 @@ and the derived files counterz.ins, % zero. % % \begin{macrocode} -\newcommand{\xnegofnz}[1]{\ifctrzero{#1}{}{\xnegof{#1}}} +\newcommand{\xnegofnz}[1]{% + \ifctrzero{#1}{}{\xnegof{#1}} +}% % \end{macrocode} % %\end{macro} @@ -1144,13 +1397,15 @@ and the derived files counterz.ins, % % \begin{macrocode} \newcommand{\xcoef}[1]{% - \ifboolexpr{test {\ifnumless{\xvalue{#1}}{-1}}% - or test {\ifnumgreater{\xvalue{#1}}{1}}}{% - \xarabic{#1}% + \ifboolexpr{% + test {\ifnumless{\xvalue{#1}}{-1}} + or test {\ifnumgreater{\xvalue{#1}}{1}} + }{% + \xarabic{#1} }{% }% - \ifnumequal{\xvalue{#1}}{-1}{-}{}% -} + \ifnumequal{\xvalue{#1}}{-1}{-}{} +}% % \end{macrocode} % %\end{macro} @@ -1162,13 +1417,15 @@ and the derived files counterz.ins, % % \begin{macrocode} \newcommand{\xnegcoef}[1]{% - \ifboolexpr{test {\ifnumless{\xvalue{#1}}{-1}}% - or test {\ifnumgreater{\xvalue{#1}}{1}}}{% - \xnegof{#1}% + \ifboolexpr{% + test {\ifnumless{\xvalue{#1}}{-1}} + or test {\ifnumgreater{\xvalue{#1}}{1}} + }{% + \xnegof{#1} }{% }% - \ifnumequal{\xvalue{#1}}{1}{-}{}% -} + \ifnumequal{\xvalue{#1}}{1}{-}{} +}% % \end{macrocode} % %\end{macro} @@ -1180,12 +1437,14 @@ and the derived files counterz.ins, % % \begin{macrocode} \newcommand{\xabsofcoef}[1]{% - \ifboolexpr{test {\ifnumless{\xvalue{#1}}{-1}}% - or test {\ifnumgreater{\xvalue{#1}}{1}}}{% - \xabsof{#1}% + \ifboolexpr{% + test {\ifnumless{\xvalue{#1}}{-1}} + or test {\ifnumgreater{\xvalue{#1}}{1}} }{% - } -} + \xabsof{#1} + }{% + }% +}% % \end{macrocode} % %\end{macro} @@ -1196,7 +1455,9 @@ and the derived files counterz.ins, % \meta{counter} is nonzero. % % \begin{macrocode} -\newcommand{\xsignofcoef}[1]{\ifctrzero{#1}{}{\xsignof{#1}}} +\newcommand{\xsignofcoef}[1]{% + \ifctrzero{#1}{}{\xsignof{#1}} +}% % \end{macrocode} % %\end{macro} @@ -1207,7 +1468,9 @@ and the derived files counterz.ins, % if \meta{counter} is nonzero. % % \begin{macrocode} -\newcommand{\xnegsignofcoef}[1]{\ifctrzero{#1}{}{\xnegsignof{#1}}} +\newcommand{\xnegsignofcoef}[1]{% + \ifctrzero{#1}{}{\xnegsignof{#1}} +}% % \end{macrocode} % %\end{macro} @@ -1218,7 +1481,9 @@ and the derived files counterz.ins, % are preceded by a plus sign ``+''. % % \begin{macrocode} -\newcommand{\xsignedcoef}[1]{\xsignofcoef{#1} \xabsofcoef{#1}} +\newcommand{\xsignedcoef}[1]{% + \xsignofcoef{#1} \xabsofcoef{#1} +}% % \end{macrocode} % %\end{macro} @@ -1229,68 +1494,190 @@ and the derived files counterz.ins, % opposite sign. % % \begin{macrocode} -\newcommand{\xnegsignedcoef}[1]{\xnegsignofcoef{#1} \xabsofcoef{#1}} +\newcommand{\xnegsignedcoef}[1]{% + \xnegsignofcoef{#1} \xabsofcoef{#1} +}% % \end{macrocode} % %\end{macro} % %\subsection{Random Counters} % -% The commands \cs{xrandsetcounter} and \cs{xrandaddtocounter} use the pdf\TeX\ +% The commands \cs{randsetcounter} and \cs{randaddtocounter} use the pdf\TeX\ % primitive \cs{pdfuniformdeviate} to provide random versions of -% \cs{xsetcounter} and \cs{xaddtocounter}. +% \cs{setcounter} and \cs{addtocounter}. The commands \cs{xrandsetcounter} and +% \cs{xrandaddtocounter} are prefix versions of \cs{randsetcounter} and +% \cs{randaddtocounter}, respectively. % +%\begin{macro}{\randsetcounter} +%\changes{v1.1.0}{2023/05/30}{new} %\begin{macro}{\xrandsetcounter} +%\changes{v1.1.0}{2023/05/30}{now based on a new \cs{randsetcounter}} % -% \cs{xrandsetcounter}\marg{counter}\marg{min}\marg{max} assigns to (the -% prefixed) \meta{counter} a random integer value between \meta{min} and -% \meta{max}. +% \cs{randsetcounter}\marg{counter}\marg{min}\marg{max} assigns to +% \meta{counter} a random integer value between \meta{min} and \meta{max}. % % \begin{macrocode} -\newcommand{\xrandsetcounter}[3]{% - \xsetcounter{#1}{% +\newcommand{\randsetcounter}[3]{% + \setcounter{#1}{% \the \numexpr #2+\pdfuniformdeviate \numexpr #3-#2+1 \relax - } -} + }% +}% +\newcommand{\xrandsetcounter}[3]{% + \randsetcounter{\@counterz@counterprefix#1}{#2}{#3} +}% % \end{macrocode} % %\end{macro} +%\end{macro} % +%\begin{macro}{\randaddtocounter} +%\changes{v1.1.0}{2023/05/30}{new} %\begin{macro}{\xrandaddtocounter} +%\changes{v1.1.0}{2023/05/30}{now based on a new \cs{randaddtocounter}} % -% \cs{xrandaddtocounter}\marg{counter}\marg{min}\marg{max} adds to (the -% prefixed) \meta{counter} a random integer value between \meta{min} and -% \meta{max}. +% \cs{randaddtocounter}\marg{counter}\marg{min}\marg{max} adds to \meta{counter} +% a random integer value between \meta{min} and \meta{max}. % % \begin{macrocode} -\newcommand{\xrandaddtocounter}[3]{% - \xaddtocounter{#1}{% +\newcommand{\randaddtocounter}[3]{% + \addtocounter{#1}{% \the \numexpr #2+\pdfuniformdeviate \numexpr #3-#2+1 \relax - } -} + }% +}% +\newcommand{\xrandaddtocounter}[3]{% + \randaddtocounter{\@counterz@counterprefix#1}{#2}{#3} +}% % \end{macrocode} % %\end{macro} +%\end{macro} % The following commands are designed to provide a means by which authors can % generate random values for counters but also preserve those values for future % typesettings. This is accomplished by storing counters and their values in an % external file and then inputting the file before a subsequent typesetting. % +%\begin{macro}{\randomizectr} +%\begin{macro}{\norandomizectr} +% +% In order to assign a random value to a counter during one typesetting and +% avoid overwriting this value with a random assignment during another +% typesetting, the boolean \textit{@counterz@random} is used to distinguish +% between the two typesetting options. The value of \textit{@counterz@random} may +% be changed by the commands \cs{randomizectr} and \cs{norandomizectr}. +% +% \begin{macrocode} +\newbool{@counterz@random} +\booltrue{@counterz@random} +\newcommand{\randomizectr}{\booltrue{@counterz@random}} +\newcommand{\norandomizectr}{\boolfalse{@counterz@random}} +% \end{macrocode} +% +%\end{macro} +%\end{macro} +% +%\begin{macro}{\ifrandomizectr} +% +% \cs{ifrandomizectr}\marg{foo}\marg{bar} executes \meta{foo} if the boolean +% \textit{@counterz@random} is true and otherwise executes \meta{bar}. +% +% \begin{macrocode} +\newcommand{\ifrandomizectr}[2]{% + \ifbool{@counterz@random}{#1}{#2} +}% +% \end{macrocode} +% +%\end{macro} +% +%\begin{macro}{\promptrandomizectr} +%\changes{v1.1.0}{2023/05/30}{new} +% +% \cs{promptrandomizectr}\oarg{command}\marg{message}\marg{string} writes +% \meta{message} to the terminal and awaits a response from the user at the +% prompt. The user's response is stored in \meta{command} and compared to the +% text of \meta{string}. If they are equal, then \cs{randomizectr} is executed. +% If they are not equal, then \cs{norandomizectr} is executed. +% +% \begin{macrocode} +\newcommand{\promptrandomizectr}[3][\@typein]{% + \typein[#1]{#2} + \ifdefstring{#1}{#3}{% + \randomizectr + }{% + \norandomizectr + }% +}% +% \end{macrocode} +% +%\end{macro} +% %\begin{macro}{\opencountersfile} +%\changes{v1.1.0}{2023/05/30}{new error reports} % % The command \cs{opencountersfile} creates and opens the write stream to the % file \textsf{\meta{jobname}.counters.tex}, referenced by the macro -% \cs{countersfile}. +% \cs{countersfile}. If the file already exists, it is overwritten. For this +% reason, % % \begin{macrocode} +\newbool{@counterz@fileISopen} +\boolfalse{@counterz@fileISopen} \newcommand{\opencountersfile}{% - \newwrite\countersfile - \immediate\openout\countersfile=\jobname.counters.tex + \ifbool{@counterz@fileISopen}{% + \PackageError{counterz}{% + The write stream is already open! + \MessageBreak Process interrupted to prevent overwriting + \MessageBreak \jobname.counters.tex + }{% + Be sure to include only one instance of + \protect\opencountersfile. + }% + }{% + \ifrandomizectr{% + \newwrite\countersfile + \immediate\openout\countersfile=\jobname.counters.tex + \booltrue{@counterz@fileISopen} + }{% + \PackageError{counterz}{% + \protect\opencountersfile\space requires + \protect\randomizectr + \MessageBreak Process interrupted to prevent overwriting + \MessageBreak \jobname.counters.tex + }{% + \protect\opencountersfile\space is designed to open a file + for saving newly randomized counters. See the Random + Counters section of the counterz package documentation for + details. + }% + }% + }% } % \end{macrocode} % %\end{macro} % +%\begin{macro}{\inputcountersfile} +%\changes{v1.1.0}{2023/05/30}{new} +% +% The command \cs{inputcountersfile} inputs \textsf{\meta{jobname}.counters.tex} +% if the file exists and reports a package error if the file does not exist. +% +% \begin{macrocode} +\newcommand{\inputcountersfile}{% + \InputIfFileExists{\jobname.counters}{% + }{% + \PackageError{counterz}{% + The file \jobname.counters.tex does not exist. + }{% + See the Random Counters section of the counterz package + documentation. + }% + }% +}% +% \end{macrocode} +% +%\end{macro} +% %\begin{macro}{\@counterz@openbrace} %\begin{macro}{\@counterz@closebrace} % @@ -1309,59 +1696,79 @@ and the derived files counterz.ins, %\end{macro} %\end{macro} % +%\begin{macro}{\savecounter} +%\changes{v1.1.0}{2023/05/30}{new} %\begin{macro}{\xsavecounter} +%\changes{v1.1.0}{2023/05/30}{now based on a new \cs{savecounter}} % -% \cs{xsavecounter}\marg{counter} writes \cs{providecounter} and \cs{setcounter} +% \cs{savecounter}\marg{counter} writes \cs{providecounter} and \cs{setcounter} % commands to the file \textsf{\meta{jobname}.counters.tex} so that they may be -% inputted as part of a future typesetting. +% inputted as part of a future typesetting. The command reports a package error +% if the write stream to \textsf{\meta{jobname}.counters.tex} is not open. The +% command \cs{xsavecounter} is a prefix version of \cs{savecounter}. +% % % \begin{macrocode} -\newcommand{\xsavecounter}[1]{% - \immediate\write\countersfile{% - \unexpanded{\providecounter}\@counterz@openbrace% - \@counterz@counterprefix #1\@counterz@closebrace% - \unexpanded{ \setcounter}\@counterz@openbrace% - \@counterz@counterprefix #1\@counterz@closebrace% - \@counterz@openbrace% - \arabic{\@counterz@counterprefix #1}\@counterz@closebrace% +\newcommand{\savecounter}[1]{% + \ifbool{@counterz@fileISopen}{% + \immediate\write\countersfile{% + \unexpanded{\providecounter} + \@counterz@openbrace#1\@counterz@closebrace + \unexpanded{\setcounter} + \@counterz@openbrace#1\@counterz@closebrace + \@counterz@openbrace\arabic{#1}\@counterz@closebrace + }% + }{% + \PackageError{counterz}{% + The write stream to the file \jobname.counters.tex must be + opened before \protect\savecounter\space can be executed. + }{% + See \protect\opencountersfile\space and + \protect\savecounter\space in the counterz package + documentation. + }% }% }% -% \end{macrocode} -% -%\end{macro} -% -%\begin{macro}{\randomizectr} -%\begin{macro}{\norandomizectr} -% -% In order to assign a random value to a counter during one typesetting and -% avoid overwriting this value with a random assignment during another -% typesetting, the boolean \textit{@counterz@random} is used to distinguish -% between the two typesettings. The value of \textit{@counterz@random} may -% be changed by the commands \cs{randomizectr} and \cs{norandomizectr}. -% -% \begin{macrocode} -\newbool{@counterz@random} -\newcommand{\randomizectr}{\booltrue{@counterz@random}} -\newcommand{\norandomizectr}{\boolfalse{@counterz@random}} + +\newcommand{\xsavecounter}[1]{% + \savecounter{\@counterz@counterprefix#1}% +}% % \end{macrocode} % %\end{macro} %\end{macro} % -%\begin{macro}{\ifrandomizectr} +%\begin{macro}{\randprovidecounter} +%\changes{v1.1.0}{2023/05/30}{new} % -% \cs{ifrandomizectr}\marg{foo}\marg{bar} executes \meta{foo} if the boolean -% \textit{@counterz@random} is true and otherwise executes \meta{bar}. +% \cs{randprovidecounter}\marg{counter}\marg{min}\marg{max} creates +% \meta{counter} if it does not already exist, and if the boolean +% \textit{@counterz@random} is true then \meta{counter} is assigned a +% random integer value between \meta{min} and \meta{max} and then saved. % % \begin{macrocode} -\newcommand{\ifrandomizectr}[2]{% - \ifbool{@counterz@random}{#1}{#2} +\newcommand{\randprovidecounter}[3]{% + \ifltxcounter{#1}{% + \@ifnextchar]{% + \m@k@gobbleendoptarg + }{% + }% + }{% + \newcounter{#1} + \ifrandomizectr{% + \randsetcounter{#1}{#2}{#3} + \savecounter{#1} + }{% + }% + }% }% % \end{macrocode} % %\end{macro} % %\begin{macro}{\xrandprovidecounter} +%\changes{v1.1.0}{2023/05/30}{no longer randomizes if already defined; +%now based on a new \cs{randprovidecounter}} % % \cs{xrandprovidecounter}\marg{counter}\marg{min}\marg{max} creates % \meta{counter} if it does not already exist, and if the boolean @@ -1370,18 +1777,45 @@ and the derived files counterz.ins, % % \begin{macrocode} \newcommand{\xrandprovidecounter}[3]{% - \xprovidecounter{#1} - \ifrandomizectr{% - \xrandsetcounter{#1}{#2}{#3} - \xsavecounter{#1} - }{% - } -} + \randprovidecounter{\@counterz@counterprefix#1}{#2}{#3} +}% % \end{macrocode} % %\end{macro} % +%\begin{macro}{\randprovidecounternz} +%\changes{v1.1.0}{2023/05/30}{new} +% +% \cs{randprovidecounternz}\marg{counter}\marg{min}\marg{max} does the same +% job as the command \cs{xrandprovidecounter} except that the value of +% \meta{counter} is randomized until it is nonzero. +% +% \begin{macrocode} +\newcommand{\randprovidecounternz}[3]{% + \ifltxcounter{#1}{% + \@ifnextchar]{% + \m@k@gobbleendoptarg + }{% + }% + }{% + \newcounter{#1} + \ifrandomizectr{% + \setcounter{#1}{0} + \whileboolexpr{test {\ifnumequal{\value{#1}}{0}}}{% + \randsetcounter{#1}{#2}{#3} + }% + \savecounter{#1} + }{% + }% + }% +}% +% \end{macrocode} +% +%\end{macro}% +% %\begin{macro}{\xrandprovidecounternz} +%\changes{v1.1.0}{2023/05/30}{no longer randomizes if already defined; +%now based on a new \cs{randprovidecounternz}} % % \cs{xrandprovidecounternz}\marg{counter}\marg{min}\marg{max} does the same % job as the command \cs{xrandprovidecounter} except that the value of @@ -1389,16 +1823,8 @@ and the derived files counterz.ins, % % \begin{macrocode} \newcommand{\xrandprovidecounternz}[3]{% - \xprovidecounter{#1} - \ifrandomizectr{% - \xsetcounter{#1}{0} - \whileboolexpr{ test {\ifnumequal{\xvalue{#1}}{0}}}{% - \xrandsetcounter{#1}{#2}{#3} - } - \xsavecounter{#1} - }{% - } -} + \randprovidecounternz{\@counterz@counterprefix#1}{#2}{#3} +}% % \end{macrocode} % %\end{macro}% diff --git a/macros/latex/contrib/counterz/counterz.ins b/macros/latex/contrib/counterz/counterz.ins index 7de3d88187..73c612db3d 100644 --- a/macros/latex/contrib/counterz/counterz.ins +++ b/macros/latex/contrib/counterz/counterz.ins @@ -6,7 +6,7 @@ %% %% counterz.dtx (with options: `install') %% ---------------------------------------------------------------------- -%% `counterz' --- 2023/05/19 Version 1.0.0 Additional tools for counters +%% `counterz' --- 2023/05/30 Version 1.1.0 Additional tools for counters %% E-mail: christopher.mcclain@mail.wvu.edu %% Released under the LaTeX Project Public License v1.3c or later %% See https://www.latex-project.org/lppl.txt @@ -22,7 +22,7 @@ \preamble ---------------------------------------------------------------------- -`counterz' --- 2023/05/19 Version 1.0.0 Additional tools for counters +`counterz' --- 2023/05/30 Version 1.1.0 Additional tools for counters E-mail: christopher.mcclain@mail.wvu.edu Released under the LaTeX Project Public License v1.3c or later See https://www.latex-project.org/lppl.txt diff --git a/macros/latex/contrib/counterz/counterz.pdf b/macros/latex/contrib/counterz/counterz.pdf Binary files differindex 4b358cbb48..66820f93e8 100644 --- a/macros/latex/contrib/counterz/counterz.pdf +++ b/macros/latex/contrib/counterz/counterz.pdf diff --git a/macros/luatex/latex/luacas/doc/appendix/luacas.dat b/macros/luatex/latex/luacas/doc/appendix/luacas.dat index 7f2efd0a10..c0011e71b2 100644 --- a/macros/luatex/latex/luacas/doc/appendix/luacas.dat +++ b/macros/luatex/latex/luacas/doc/appendix/luacas.dat @@ -1,4 +1,4 @@ -% Copyright (c) ??? +% Copyright (c) % % Permission is granted to copy, distribute and/or modify this % software under the terms of the LaTeX Project Public License @@ -11,7 +11,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{luacas} - [2022/11/15 v1.0.1 CAS written in Lua for LaTeX] + [2023/05/26 v1.0.2 CAS written in Lua for LaTeX] \RequirePackage{iftex} \ifluatex diff --git a/macros/luatex/latex/luacas/doc/appendix/versionhistory.tex b/macros/luatex/latex/luacas/doc/appendix/versionhistory.tex index 26754b3c7d..ad7e4f53fe 100644 --- a/macros/luatex/latex/luacas/doc/appendix/versionhistory.tex +++ b/macros/luatex/latex/luacas/doc/appendix/versionhistory.tex @@ -7,6 +7,15 @@ \section{Version History} +\subsection*{v1.0.2} + +\begin{itemize} + \item Fix Polynomial Rings displaying redundant ones in \LaTeX{} + \item Fix rational forced non-simplification not working + \item Added ability to load LuaCAS modules as local variables + \item Fix arithmetic with decimal expressions +\end{itemize} + \subsection*{v1.0.1} \begin{itemize} diff --git a/macros/luatex/latex/luacas/doc/luacas.pdf b/macros/luatex/latex/luacas/doc/luacas.pdf Binary files differindex 667791efb6..13f358c5e8 100644 --- a/macros/luatex/latex/luacas/doc/luacas.pdf +++ b/macros/luatex/latex/luacas/doc/luacas.pdf diff --git a/macros/luatex/latex/luacas/doc/luacas.tex b/macros/luatex/latex/luacas/doc/luacas.tex index 3d0c51a343..7c49b9eef5 100644 --- a/macros/luatex/latex/luacas/doc/luacas.tex +++ b/macros/luatex/latex/luacas/doc/luacas.tex @@ -160,7 +160,7 @@ style=numeric, \begin{document} \title{The {\ttfamily luacas} package} \author{Evan Cochrane\thanks{\href{mailto:cochraef@rose-hulman.edu}{\ttfamily cochraef@rose-hulman.edu}} , Timothy All\thanks{\href{mailto:timothy.all@rose-hulman.edu}{\ttfamily timothy.all@rose-hulman.edu}}} -\date{v1.0.1 \\ \today} +\date{v1.0.2\\ \today} \maketitle diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua index 2bf0b6a7ef..264730cbbe 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua @@ -2,7 +2,7 @@ --- The absolute value of an expression. --- @field expression Expression AbsExpression = {} -__AbsExpression = {} +local __AbsExpression = {} ---------------------------- -- Instance functionality -- diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-algebra_init.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-algebra_init.lua deleted file mode 100644 index ac37c56a5b..0000000000 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-algebra_init.lua +++ /dev/null @@ -1,24 +0,0 @@ --- Loads algebra files in the correct order. -require("_lib.luacas-table") - -require("core.luacas-core_init") - -require("algebra.luacas-ring") -require("algebra.luacas-euclideandomain") -require("algebra.luacas-field") -require("algebra.luacas-polynomialring") -require("algebra.luacas-integer") -require("algebra.luacas-rational") -require("algebra.luacas-integerquotientring") -require("algebra.luacas-sqrtexpression") - -require("algebra.luacas-absexpression") -require("algebra.luacas-equation") -require("algebra.luacas-factorialexpression") -require("algebra.luacas-logarithm") -require("algebra.luacas-rootexpression") -require("algebra.luacas-trigexpression") - -require("algebra.polynomialring.luacas-berlekampfactoring") -require("algebra.polynomialring.luacas-zassenhausfactoring") -require("algebra.polynomialring.luacas-decomposition")
\ No newline at end of file diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua index 4e81d5ca95..18d6a9c091 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua @@ -3,7 +3,7 @@ --- @field lhs Expression --- @field rhs Expression Equation = {} -__Equation = {} +local __Equation = {} -------------------------- -- Static functionality -- diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua index fab2c5c7c2..fec52d5d81 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua @@ -1,7 +1,7 @@ --- @class EuclideanDomain --- Interface for an element of a euclidean domain. EuclideanDomain = {} -__EuclideanDomain = {} +local __EuclideanDomain = {} ---------------------- -- Required methods -- diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua index 1c5b824ff7..5920d22733 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua @@ -2,7 +2,7 @@ --- The factorial of an expression. --- @field expression Expression FactorialExpression = {} -__FactorialExpression = {} +local __FactorialExpression = {} ---------------------------- -- Instance functionality -- diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-field.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-field.lua index c845e94c55..0846a90ec9 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-field.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-field.lua @@ -1,7 +1,7 @@ --- @class Field --- Interface for an element of a field. Field = {} -__Field = {} +local __Field = {} ---------------------- -- Required methods -- diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua index a3c54f498c..6a81be295b 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua @@ -3,7 +3,7 @@ --- @field self table<number, number> --- @field sign number Integer = {} -__Integer = {} +local __Integer = {} -------------------------- -- Static functionality -- @@ -90,6 +90,9 @@ end --- @return Integer function Integer.ceillog(a, base) base = base or Integer(10) + if a == Integer.one() then + return Integer.one() + end local k = Integer.zero() while (base ^ k) < a do @@ -138,9 +141,9 @@ end ---------------------------- -- So we don't have to copy the Euclidean operations each time we create an integer. -local __o = Copy(__EuclideanOperations) -__o.__index = Integer -__o.__tostring = function(a) -- Only works if the digit size is a power of 10 +__IntegerOperations = Copy(__EuclideanOperations) +__IntegerOperations.__index = Integer +__IntegerOperations.__tostring = function(a) -- Only works if the digit size is a power of 10 local out = "" for i, digit in ipairs(a) do local pre = tostring(math.floor(digit)) @@ -156,7 +159,7 @@ __o.__tostring = function(a) -- Only works if the digit size is a power of 10 end return out end -__o.__div = function(a, b) -- Constructor for a rational number disguised as division +__IntegerOperations.__div = function(a, b) -- Constructor for a rational number disguised as division if not b.getring then return BinaryOperation.DIVEXP({a, b}) end @@ -165,7 +168,7 @@ __o.__div = function(a, b) -- Constructor for a rational number disguised as d end return __FieldOperations.__div(a, b) end -__o.__concat = function(a, b) -- Like a decimal, but fancier. Used mainly for the parser with decimal numbers. +__IntegerOperations.__concat = function(a, b) -- Like a decimal, but fancier. Used mainly for the parser with decimal numbers. return a + b / (Integer(10) ^ Integer.ceillog(b)) end @@ -174,7 +177,7 @@ end --- @return Integer function Integer:new(n) local o = {} - o = setmetatable(o, __o) + o = setmetatable(o, __IntegerOperations) if not n then o[1] = 0 diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua index 4c2188c9e5..6fe0ce1cdf 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua @@ -4,7 +4,7 @@ --- @field modulus Integer IntegerModN = {} -__IntegerModN = {} +local __IntegerModN = {} -- Metatable for ring objects. local __obj = {__index = IntegerModN, __eq = function(a, b) @@ -37,11 +37,10 @@ end ---------------------------- -- So we don't have to copy the field operations each time -local __o -__o = Copy(__FieldOperations) +__IntegerModNOperations = Copy(__FieldOperations) -__o.__index = IntegerModN -__o.__tostring = function(a) +__IntegerModNOperations.__index = IntegerModN +__IntegerModNOperations.__tostring = function(a) return tostring(a.element) end @@ -56,7 +55,7 @@ function IntegerModN:new(i, n) error("Argument error: modulus must be an integer greater than 0.") end - o = setmetatable(o, __o) + o = setmetatable(o, __IntegerModNOperations) if i < Integer.zero() or i >= n then i = i % n diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua index 07a9db84d1..135a74f326 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua @@ -4,7 +4,7 @@ --- @field base Expression --- @field expression Expression Logarithm = {} -__Logarithm = {} +local __Logarithm = {} ---------------------------- -- Instance functionality -- diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua index 568c21c921..2a76bda265 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua @@ -4,7 +4,7 @@ --- @field symbol SymbolExpression --- @field ring RingIdentifier PolynomialRing = {} -__PolynomialRing = {} +local __PolynomialRing = {} -- Metatable for ring objects. local __obj = {__index = PolynomialRing, __eq = function(a, b) @@ -214,9 +214,9 @@ end ---------------------------- -- So we don't have to copy the Euclidean operations each time -local __o = Copy(__EuclideanOperations) -__o.__index = PolynomialRing -__o.__tostring = function(a) +__PolynomialOperations = Copy(__EuclideanOperations) +__PolynomialOperations.__index = PolynomialRing +__PolynomialOperations.__tostring = function(a) local out = "" local loc = a.degree:asnumber() while loc >= 0 do @@ -229,7 +229,7 @@ __o.__tostring = function(a) end return string.sub(out, 1, string.len(out) - 1) end -__o.__div = function(a, b) +__PolynomialOperations.__div = function(a, b) if not b.getring then return BinaryOperation.DIVEXP({a, b}) end @@ -258,13 +258,20 @@ function PolynomialRing:tolatex() end if self.ring == Rational.getring() or self.ring == Integer.getring() or self.ring == IntegerModN.getring() then if self.coefficients[loc] ~= Integer.one() then - out = out .. self.coefficients[loc]:tolatex() .. self.symbol + if self.coefficients[loc] == Integer(-1) then + out = out .. "-" .. self.symbol + elseif self.coefficients[loc] == Integer.zero() then + goto lead + else + out = out .. self.coefficients[loc]:tolatex() .. self.symbol + end else out = out .. self.symbol end if loc ~=1 then out = out .. "^{" .. loc .. "}" end + ::lead:: loc = loc -1 while loc >=0 do local coeff = self.coefficients[loc] @@ -330,7 +337,7 @@ end -- Creates a new polynomial ring given an array of coefficients and a symbol function PolynomialRing:new(coefficients, symbol, degree) local o = {} - o = setmetatable(o, __o) + o = setmetatable(o, __PolynomialOperations) if type(coefficients) ~= "table" then error("Sent parameter of wrong type: Coefficients must be in an array") diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua index 811909a948..0802eb5172 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua @@ -4,7 +4,7 @@ --- @field denominator Ring --- @field ring RingIdentifier Rational = {} -__Rational = {} +local __Rational = {} -------------------------- @@ -54,9 +54,9 @@ end ---------------------------- -- So we don't have to copy the field operations each time. -local __o = Copy(__FieldOperations) -__o.__index = Rational -__o.__tostring = function(a) +__RationalOperations = Copy(__FieldOperations) +__RationalOperations.__index = Rational +__RationalOperations.__tostring = function(a) if a.ring.symbol then return "(" .. tostring(a.numerator)..")/("..tostring(a.denominator) .. ")" end @@ -70,7 +70,7 @@ end --- @param keep boolean function Rational:new(n, d, keep) local o = {} - o = setmetatable(o, __o) + o = setmetatable(o, __RationalOperations) if n:getring() == PolynomialRing.getring() then o.symbol = n.symbol @@ -88,7 +88,15 @@ function Rational:new(n, d, keep) d = d or Integer.one() o.numerator = n o.denominator = d - o:reduce() + if not keep then + o:reduce() + end + + if o.numerator:getring() == Integer.getring() then + o.ring = Integer.getring() + elseif o.numerator:getring() == PolynomialRing.getring() then + o.ring = Ring.resultantring(o.numerator:getring(), o.denominator:getring()) + end if (not keep) and o.denominator == Integer.one() or (not keep) and o.numerator == Integer.zero() then return o.numerator @@ -107,7 +115,6 @@ function Rational:reduce() local gcd = Integer.gcd(self.numerator, self.denominator) self.numerator = self.numerator//gcd self.denominator = self.denominator//gcd - self.ring = Integer.getring() elseif self.numerator:getring() == PolynomialRing.getring() then local lc = self.denominator:lc() self.denominator = self.denominator/lc @@ -115,7 +122,6 @@ function Rational:reduce() local gcd = PolynomialRing.gcd(self.numerator, self.denominator) self.numerator = self.numerator//gcd self.denominator = self.denominator//gcd - self.ring = Ring.resultantring(self.numerator:getring(), self.denominator:getring()) end end diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua index 4903b9c912..81df15d18c 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua @@ -1,7 +1,7 @@ --- @class Ring --- Interface for an element of a ring with unity. Ring = {} -__Ring = {} +local __Ring = {} -------------------------- -- Static functionality -- diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua index a66182579a..6f9a492591 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua @@ -2,7 +2,7 @@ --- An expression that represents the solutions to expression = 0. --- @field expression Expression RootExpression = {} -__RootExpression = {} +local __RootExpression = {} ---------------------------- -- Instance functionality -- diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua index bc96f4e1d8..641198fd65 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua @@ -2,7 +2,7 @@ --- An expression that represents the positive real solution to x^n = a where n is a positive integer and a is constant. --- @field expression Expression SqrtExpression = {} -__SqrtExpression = {} +local __SqrtExpression = {} ---------------------------- -- Instance functionality -- diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua index 307bfe1737..6f09e39f57 100644 --- a/macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua +++ b/macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua @@ -3,7 +3,7 @@ --- @field name string --- @field expression Expression TrigExpression = {} -__TrigExpression = {} +local __TrigExpression = {} ---------------------------- -- Instance functionality -- diff --git a/macros/luatex/latex/luacas/tex/calculus/luacas-calculus_init.lua b/macros/luatex/latex/luacas/tex/calculus/luacas-calculus_init.lua deleted file mode 100644 index 89b38b650e..0000000000 --- a/macros/luatex/latex/luacas/tex/calculus/luacas-calculus_init.lua +++ /dev/null @@ -1,6 +0,0 @@ --- Loads calculus files in the correct order. -require("algebra.luacas-algebra_init") - -require("calculus.luacas-derivativeexpression") -require("calculus.luacas-integralexpression") -require("calculus.luacas-diffexpression") diff --git a/macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua b/macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua index b757759c4c..2ef4c43125 100644 --- a/macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua +++ b/macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua @@ -3,7 +3,7 @@ --- @field symbol SymbolExpression --- @field expression Expression DerivativeExpression = {} -__DerivativeExpression = {} +local __DerivativeExpression = {} ---------------------------- -- Instance functionality -- diff --git a/macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua b/macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua index df1dc90f33..bf15c56b6f 100644 --- a/macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua +++ b/macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua @@ -4,7 +4,7 @@ --- @field expression Expression DiffExpression = {} -__DiffExpression = {} +local __DiffExpression = {} ---------------------------- -- Instance functionality -- diff --git a/macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua b/macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua index 5267127264..bddc179fa4 100644 --- a/macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua +++ b/macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua @@ -10,7 +10,7 @@ --- @field recursive boolean IntegralExpression = {} -__IntegralExpression = {} +local __IntegralExpression = {} -------------------------- diff --git a/macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua index 6cc6e4f58e..4eed1592f4 100644 --- a/macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua +++ b/macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua @@ -1,7 +1,7 @@ --- @class AtomicExpression --- Interface for an atomic mathematical expression that has no sub-expressions. AtomicExpression = {} -__AtomicExpression = {} +local __AtomicExpression = {} ---------------------- diff --git a/macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua b/macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua index 708a6c1540..f2998436eb 100644 --- a/macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua +++ b/macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua @@ -5,7 +5,7 @@ --- @field operation function --- @field expressions table<number, Expression> BinaryOperation = {} -__BinaryOperation = {} +local __BinaryOperation = {} ---------------------------- -- Instance functionality -- @@ -621,6 +621,8 @@ function BinaryOperation:tolatex() for index, expression in ipairs(self.expressions) do if index == 1 then out = out .. expression:tolatex() + elseif expression:isconstant() and expression < Integer.zero() then + out = out .. "\\cdot (" .. expression:tolatex() .. ")" else out = out .. "\\cdot " .. expression:tolatex() end diff --git a/macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua index 792c36cfc2..cae82719ac 100644 --- a/macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua +++ b/macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua @@ -1,7 +1,7 @@ --- @class CompoundExpression --- Interface for an expression consisting of one or more subexpressions. CompoundExpression = {} -__CompoundExpression = {} +local __CompoundExpression = {} ---------------------- -- Instance methods -- diff --git a/macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua index 0f91a037a9..6d9f8e96d2 100644 --- a/macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua +++ b/macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua @@ -3,7 +3,7 @@ --- Interface for a mathematical expression without any symbols. --- ConstantExpressions are AtomicExpressions by default, but individual classes may overwrite that inheritance. ConstantExpression = {} -__ConstantExpression = {} +local __ConstantExpression = {} ---------------------- -- Instance methods -- diff --git a/macros/luatex/latex/luacas/tex/core/luacas-core_init.lua b/macros/luatex/latex/luacas/tex/core/luacas-core_init.lua deleted file mode 100644 index c9c3b89126..0000000000 --- a/macros/luatex/latex/luacas/tex/core/luacas-core_init.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Loads core files in the correct order. - -require("core.luacas-expression") -require("core.luacas-atomicexpression") -require("core.luacas-compoundexpression") -require("core.luacas-constantexpression") -require("core.luacas-symbolexpression") -require("core.luacas-binaryoperation") -require("core.luacas-functionexpression") - - -require("core.binaryoperation.luacas-power") -require("core.binaryoperation.luacas-product") -require("core.binaryoperation.luacas-sum") -require("core.binaryoperation.luacas-quotient") -require("core.binaryoperation.luacas-difference")
\ No newline at end of file diff --git a/macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua index dc94790b81..f6f3a99720 100644 --- a/macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua +++ b/macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua @@ -6,7 +6,7 @@ --- @field variables table<number,SymbolExpression> --- @alias Function FunctionExpression FunctionExpression = {} -__FunctionExpression = {} +local __FunctionExpression = {} ---------------------------- -- Instance functionality -- diff --git a/macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua index 0d9192c084..068ab71dcc 100644 --- a/macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua +++ b/macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua @@ -3,7 +3,7 @@ --- @field symbol string --- @alias Symbol SymbolExpression SymbolExpression = {} -__SymbolExpression = {} +local __SymbolExpression = {} ---------------------- -- Instance methods -- diff --git a/macros/luatex/latex/luacas/tex/luacas.sty b/macros/luatex/latex/luacas/tex/luacas.sty index d46ee847fc..939bd9d392 100644 --- a/macros/luatex/latex/luacas/tex/luacas.sty +++ b/macros/luatex/latex/luacas/tex/luacas.sty @@ -9,7 +9,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{luacas} - [2022/11/15 v1.0.1 CAS written in Lua for LaTeX] + [2023/05/26 v1.0.2 CAS written in Lua for LaTeX] \RequirePackage{iftex} \ifluatex diff --git a/macros/luatex/latex/luacas/tex/luacas_init.lua b/macros/luatex/latex/luacas/tex/luacas_init.lua new file mode 100644 index 0000000000..8d58e259e7 --- /dev/null +++ b/macros/luatex/latex/luacas/tex/luacas_init.lua @@ -0,0 +1,304 @@ +--- @class LuaCAS +--- @class Module +--- A table that initalizes and stores luacas modules. +--- @field moduleinfo table<string, table> +--- @field core Module +--- @field algebra Module +--- @field calculus Module +local luacas = {} + + +-- a table containing a list of module names, descriptions, class names, variables, required files, and dependent modules +luacas.moduleinfo = { + ["core"]= + { + "Classes needed for creating basic expressions such as symbols, binary operations, and functions.", + { + "Expression", + "AtomicExpression", + "CompoundExpression", + "ConstantExpression", + "SymbolExpression", + "BinaryOperation", + "FunctionExpression", + + "__ExpressionOperations" + }, + {"E", "I", "PI"}, + { + "_lib.luacas-table", + "core.luacas-expression", + "core.luacas-atomicexpression", + "core.luacas-compoundexpression", + "core.luacas-constantexpression", + "core.luacas-symbolexpression", + "core.luacas-binaryoperation", + "core.luacas-functionexpression", + "core.binaryoperation.luacas-power", + "core.binaryoperation.luacas-product", + "core.binaryoperation.luacas-sum", + "core.binaryoperation.luacas-quotient", + "core.binaryoperation.luacas-difference", + }, + {} + }, + + ["algebra"]= + { + "Classes for elements of rings (integers, rationals, polynomials, etc., and operations on those elements (polynomial factoring). Also includes some elementary functions like logs and trig functions.", + { + "Ring", + "EuclideanDomain", + "Field", + "PolynomialRing", + "Integer", + "Rational", + "IntegerModN", + "SqrtExpression", + "AbsExpression", + "Equation", + "FactorialExpression", + "Logarithm", + "RootExpression", + "TrigExpression", + + "__RingOperations", -- Not classes, but we need to set the environment for this + "__EuclideanOperations", + "__FieldOperations", + "__PolynomialOperations", + "__IntegerOperations", + "__IntegerModNOperations", + "__RationalOperations" + }, + {"ABS", "ARCCOS", "ARCCOT", "ARCCSC", "ARCSEC", "ARCSIN", "ARCTAN", "COS", "COT", "CSC", "FACT", "LN", "LOG", "SEC", "SIN", "TAN"}, + { + "algebra.luacas-ring", + "algebra.luacas-euclideandomain", + "algebra.luacas-field", + "algebra.luacas-polynomialring", + "algebra.luacas-integer", + "algebra.luacas-rational", + "algebra.luacas-integerquotientring", + "algebra.luacas-sqrtexpression", + "algebra.luacas-absexpression", + "algebra.luacas-equation", + "algebra.luacas-factorialexpression", + "algebra.luacas-logarithm", + "algebra.luacas-rootexpression", + "algebra.luacas-trigexpression", + "algebra.polynomialring.luacas-berlekampfactoring", + "algebra.polynomialring.luacas-zassenhausfactoring", + "algebra.polynomialring.luacas-decomposition" + }, + {"core"} + }, + + ["calculus"]= + { + "Classes for symbolic differentation and integration.", + { + "DerivativeExpression", + "IntegralExpression", + "DiffExpression" + }, + {"DD", "INT"}, + { + "calculus.luacas-derivativeexpression", + "calculus.luacas-integralexpression", + "calculus.luacas-diffexpression" + }, + {"algebra"} + } +} + +--- Retrieves a short description for a module. +--- @param mod string +--- @return string +function luacas:moduledesc(mod) + if self.moduleinfo[mod] then + return self.moduleinfo[mod][1] + end + return "Module not found." +end + +--- Retrieves a list of class names included in a module. +--- @param mod string +--- @return table<number,string> +function luacas:moduleclasses(mod) + if self.moduleinfo[mod] then + return self.moduleinfo[mod][2] + end + return {} +end + +--- Retrieves a list of fields included in a module. +--- @param mod string +--- @return table<number,string> +function luacas:modulefields(mod) + if self.moduleinfo[mod] then + return self.moduleinfo[mod][3] + end + return {} +end + +--- Retrieves a list of files included in a module. +--- @param mod string +--- @return table<number,string> +function luacas:modulefiles(mod) + if self.moduleinfo[mod] then + return self.moduleinfo[mod][4] + end + return {} +end + +--- Retrieves a list of a module's immediate dependencies. +--- @param mod string +--- @return table<number,string> +function luacas:moduledependencies(mod) + if self.moduleinfo[mod] then + return self.moduleinfo[mod][5] + end + return {} +end + +--- Initalizes a LuaCAS module and returns it. +--- Since this creates temporary global variables, it should be treated as atomic to avoid collisions. +--- @param mod string +--- @return Module|nil +function luacas:initmodule(mod) + if not self.moduleinfo[mod] then + return nil + end + + -- TODO: This is a special case, since the algebra module is dependent on the core module and vice versa, + -- but our initialization scheme does not allow for circular dependencies. + if mod == "core" then + self:initmodule("algebra") + end + + -- Since other modules require globals from their dependencies, we only remove global variables after all modules have been initalized + local G = self:saveglobalstate() + self:_initmodulerec(mod) + self:restoreglobalstate(G) + + return self[mod] +end + +--- Recursive part of initalizing modules. +--- @param mod string +function luacas:_initmodulerec(mod) + + for _, dep in ipairs(self:moduledependencies(mod)) do + self:_initmodulerec(dep) + end + + if self[mod] then + -- Since globals from a dependency might be needed to initialize a module, we create globals even if a module has already been initalized. + for class, _ in self[mod] do + _G[class] = self[mod][class] + end + else + -- Creates globals needed for modules dependent on this one. + self:initglobalmodule(mod) + + -- Adds classes to module table. + self[mod] = {} + for _, class in ipairs(self:moduleclasses(mod)) do + self[mod][class] = _G[class] + end + + -- Sets the environment for each method of each class to include all dependent classes of this class. + self:setmoduleenvironment(mod) + -- TODO: This is a special case, since the algebra module is dependent on the core module and vice versa, + -- but our initialization scheme does not allow for circular dependencies. + if mod == "algebra" then + self:setmoduleenvironment("core") + end + + -- Adds fields to module tables + for _, class in ipairs(self:modulefields(mod)) do + self[mod][class] = _G[class] + end + end +end + +--- Sets the environment for each method of each class in a module to the current global environment, so it can keep using global variables when reset. +--- @param mod string +function luacas:setmoduleenvironment(mod) + local realenv = self:saveglobalstate() + for _, class in pairs(self[mod]) do + -- print(_) + for _, func in pairs(class) do + -- print(" ", _) + if type(func) == "function" then + --- Functions only have an _ENV upvalue if they have a global variable, so this should work + local _envloc = debug.findupvalue(func, "_ENV") + if _envloc then + debug.upvaluejoin(func, debug.findupvalue(func, "_ENV"), function () return realenv end, 1) + end + end + end + + -- local meta = getmetatable(class) + -- if meta then + -- for _, func in pairs(meta) do + -- print(" ", _) + -- if type(func) == "function" then + -- --- Functions only have an _ENV upvalue if they have a global variable, so this should work + -- local _envloc = debug.findupvalue(func, "_ENV") + -- if _envloc then + -- debug.upvaluejoin(func, debug.findupvalue(func, "_ENV"), function () return realenv end, 1) + -- end + -- end + -- end + -- end + end +end + +--- Saves the current global state as a table and returns it. +--- @return table +function luacas:saveglobalstate() + local G = {} + for key, value in pairs(_G) do + G[key] = value + end + return G +end + +--- Saves the current global state as a table and returns it. +--- @param G table +function luacas:restoreglobalstate(G) + for key, _ in pairs(_G) do + if key ~= "_G" and key ~= "pairs" then + _G[key] = nil + end + end + for key, value in pairs(G) do + _G[key] = value + end +end + +--- Initalizes a LuaCAS module and creates global variables for all classes in that module. +--- DOES NOT HANDLE DEPENDENCIES, so dependent modules must be globally initalized first. +--- @param mod string +--- @return Module|nil +function luacas:initglobalmodule(mod) + for _, filename in ipairs(self:modulefiles(mod)) do + require(filename) + end +end + +--- Why is Lua like this? +function debug.findupvalue(fn, search_name) + local i = 1 + while true do + local name, val = debug.getupvalue(fn, i) + if not name then break end + if name == search_name then + return i, val + end + i = i + 1 + end +end + +return luacas
\ No newline at end of file diff --git a/macros/luatex/latex/luacas/tex/test/luacas-main.lua b/macros/luatex/latex/luacas/tex/test/luacas-main.lua index 95f77885e4..78b25aa587 100644 --- a/macros/luatex/latex/luacas/tex/test/luacas-main.lua +++ b/macros/luatex/latex/luacas/tex/test/luacas-main.lua @@ -1,8 +1,23 @@ ---@diagnostic disable: lowercase-global -- Runs test code from test files. -require("calculus.luacas-calculus_init") require("_lib.luacas-pepperfish") +require("_lib.luacas-table") + +local luacas = require("luacas_init") +luacas:initmodule("calculus") + +for name, class in pairs(luacas.core) do + _G[name] = class +end + +for name, class in pairs(luacas.algebra) do + _G[name] = class +end + +for name, class in pairs(luacas.calculus) do + _G[name] = class +end -- Stuff required for the basic parser. local constants = {e="E", pi = "PI", ln = "LN", log = "LOG", Integer = "Integer", DD = "DD", int = "INT", abs = "ABS", fact="FACT"} diff --git a/macros/luatex/latex/luacas/tex/test/luacas-parser.lua b/macros/luatex/latex/luacas/tex/test/luacas-parser.lua index 3380549620..47f0640c3f 100644 --- a/macros/luatex/latex/luacas/tex/test/luacas-parser.lua +++ b/macros/luatex/latex/luacas/tex/test/luacas-parser.lua @@ -1,8 +1,10 @@ -- Rudimentary parser for making the CAS easier to use. Essentially just wraps SymbolExpression() around symbols and Integer() around integers. - -require("calculus.luacas-calculus_init") +local luacas = require("luacas_init") +luacas:initglobalmodule("core") +luacas:initglobalmodule("algebra") +luacas:initglobalmodule("calculus") -- Splits a string on a seperator. function split(str, sep) @@ -284,8 +286,16 @@ end --- @param input string function CASparse(input) - -- First, we replace any occurance of a number with an integer or rational version of itself. - local str = string.gsub(input, ".?[0-9]+", function (s) + -- First, we replace any occurrence of a decimal with the appropriate fraction. + + local str = string.gsub(input,"%d+%.%d+", function(s) + local ints = split(s,"%.") + return "("..ints[1]..ints[2].." / 10^" .. tostring(string.len(ints[2])) .. ")" + end) + + -- Next, we replace any occurance of a number with an integer or rational version of itself. + + str = string.gsub(str, ".?[0-9]+", function (s) -- Here, we are part of an identifier, so we don't replace anything if string.match(string.sub(s, 1, 1), "[A-Z]") or string.match(string.sub(s, 1, 1), "[a-z]") or string.match(string.sub(s, 1, 1), "_") then return @@ -301,11 +311,11 @@ function CASparse(input) -------------------------- -- HERE COMES THE JANK. -- -------------------------- - + -- The JANK may not actually be doing anything now. But for the sake of posterity... -- Replaces each instance of a decimal with .., so we can use integer metatables to convert it into a rational properly. str = string.gsub(str, "Integer%('[0-9]+'%)%.Integer%('[0-9]+'%)", function (s) local ints = split(s, "%.") - return ints[1] .. ".." .. ints[2] + return "("..ints[1] .. ".." .. ints[2] .. ")" end) str = string.gsub(str, ".?%.Integer%('[0-9]+'%)", function (s) if string.sub(s, 1, 2) == ".." then @@ -320,4 +330,4 @@ function CASparse(input) else print(err) end -end
\ No newline at end of file +end diff --git a/macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua b/macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua index b9eb523c7a..6a53dacd17 100644 --- a/macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua +++ b/macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua @@ -120,9 +120,9 @@ testringconvert(a, fring, "12/1x^0", "QQ[x]") testringconvert(a, gring, "((12x^0)y^0)z^0", "ZZ[x][y][z]") testringconvert(a, hring, "((12/1z^0)y^0)x^0", "QQ[z][y][x]") testringconvert(a, iring, "(12x^0)/(1x^0)", "ZZ(x)") -testringconvert(a, jring, "(12x^0)/(1x^0)", "ZZ(x)") +testringconvert(a, jring, "(12/1x^0)/(1/1x^0)", "QQ(x)") testringconvert(a, kring, "2x^0", "Z/Z5[x]") -testringconvert(a, lring, "((12x^0)/(1x^0))y^0", "ZZ(x)[y]") +testringconvert(a, lring, "((12/1x^0)/(1/1x^0))y^0", "QQ(x)[y]") -- testringconvert(b, aring, "3/2", "ZZ") testringconvert(b, bring, "3/2", "QQ") @@ -133,9 +133,9 @@ testringconvert(b, fring, "3/2x^0", "QQ[x]") -- testringconvert(b, gring, "3/2", "ZZ[x][y][z]") testringconvert(b, hring, "((3/2z^0)y^0)x^0", "QQ[z][y][x]") -- testringconvert(b, iring, "3/2", "ZZ(x)") -testringconvert(b, jring, "(3/2x^0)/(1x^0)", "QQ(x)") +testringconvert(b, jring, "(3/2x^0)/(1/1x^0)", "QQ(x)") -- testringconvert(b, kring, "3/2", "Z/Z5[x]") -testringconvert(b, lring, "((3/2x^0)/(1x^0))y^0", "QQ(x)[y]") +testringconvert(b, lring, "((3/2x^0)/(1/1x^0))y^0", "QQ(x)[y]") testringconvert(c, aring, "4", "ZZ") -- testringconvert(c, bring, "4", "QQ") @@ -172,9 +172,9 @@ testringconvert(e, fring, "3/1x^2+0/1x^1+6/1x^0", "QQ[x]") testringconvert(e, gring, "((3x^2+0x^1+6x^0)y^0)z^0", "ZZ[x][y][z]") testringconvert(e, hring, "((3/1z^0)y^0)x^2+((0/1z^0)y^0)x^1+((6/1z^0)y^0)x^0", "QQ[z][y][x]") testringconvert(e, iring, "(3x^2+0x^1+6x^0)/(1x^0)", "ZZ(x)") -testringconvert(e, jring, "(3x^2+0x^1+6x^0)/(1x^0)", "ZZ(x)") +testringconvert(e, jring, "(3/1x^2+0/1x^1+6/1x^0)/(1/1x^0)", "QQ(x)") testringconvert(e, kring, "3x^2+0x^1+1x^0", "Z/Z5[x]") -testringconvert(e, lring, "((3x^2+0x^1+6x^0)/(1x^0))y^0", "ZZ(x)[y]") +testringconvert(e, lring, "((3/1x^2+0/1x^1+6/1x^0)/(1/1x^0))y^0", "QQ(x)[y]") -- testringconvert(f, aring, "12x^1+4/5x^0", "ZZ") -- testringconvert(f, bring, "12x^1+4/5x^0", "QQ") @@ -185,9 +185,9 @@ testringconvert(f, fring, "12x^1+4/5x^0", "QQ[x]") -- testringconvert(f, gring, "12x^1+4/5x^0", "ZZ[x][y][z]") testringconvert(f, hring, "((12/1z^0)y^0)x^1+((4/5z^0)y^0)x^0", "QQ[z][y][x]") -- testringconvert(f, iring, "12x^1+4/5x^0", "ZZ(x)") -testringconvert(f, jring, "(12x^1+4/5x^0)/(1x^0)", "QQ(x)") +testringconvert(f, jring, "(12x^1+4/5x^0)/(1/1x^0)", "QQ(x)") -- testringconvert(f, kring, "12x^1+4/5x^0", "Z/Z5[x]") -testringconvert(f, lring, "((12x^1+4/5x^0)/(1x^0))y^0", "QQ(x)[y]") +testringconvert(f, lring, "((12x^1+4/5x^0)/(1/1x^0))y^0", "QQ(x)[y]") -- testringconvert(g, aring, "", "ZZ") -- testringconvert(g, bring, "", "QQ") @@ -224,9 +224,9 @@ testringconvert(h, hring, "((1z^0)y^0)x^3+((1z^0)y^3+(1/9z^1+-16z^0)y^2+(1z^2+8z -- testringconvert(i, gring, "", "ZZ[x][y][z]") -- testringconvert(i, hring, "", "QQ[z][y][x]") testringconvert(i, iring, "(1x^1+-2x^0)/(1x^2+3x^1+3x^0)", "ZZ(x)") -testringconvert(i, jring, "(1x^1+-2x^0)/(1x^2+3x^1+3x^0)", "ZZ(x)") +testringconvert(i, jring, "(1/1x^1+-2/1x^0)/(1/1x^2+3/1x^1+3/1x^0)", "QQ(x)") -- testringconvert(i, kring, "", "Z/Z5[x]") -testringconvert(i, lring, "((1x^1+-2x^0)/(1x^2+3x^1+3x^0))y^0", "ZZ(x)[y]") +testringconvert(i, lring, "((1/1x^1+-2/1x^0)/(1/1x^2+3/1x^1+3/1x^0))y^0", "QQ(x)[y]") -- testringconvert(j, aring, "", "ZZ") -- testringconvert(j, bring, "", "QQ") diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl index 3ba14be8f8..d2123f7128 100644 --- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl @@ -46,6 +46,7 @@ $mirrors = { }, 'Korea' => { 'http://ftp.ktug.org/tex-archive/' => 1, + 'https://cran.asia/tex/' => 1, 'https://ftp.kaist.ac.kr/pub/tex-archive/' => 1, 'https://lab.uklee.pe.kr/tex-archive/' => 1, 'https://mirror.kakao.com/CTAN/' => 1, @@ -54,6 +55,9 @@ $mirrors = { 'Singapore' => { 'https://download.nus.edu.sg/mirror/ctan/' => 1, }, + 'Taiwan' => { + 'https://ctan.mirror.twds.com.tw/tex-archive/' => 1, + }, 'Thailand' => { 'https://mirror.kku.ac.th/CTAN/' => 1, }, @@ -121,6 +125,7 @@ $mirrors = { }, 'Netherlands' => { 'https://ftp.snt.utwente.nl/pub/software/tex/' => 1, + 'https://mirror.koddos.net/CTAN/' => 1, 'https://mirror.lyrahosting.com/CTAN/' => 1, 'https://mirrors.evoluso.com/CTAN/' => 1, }, diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb index ee9fb77411..263388dfa8 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb @@ -26,7 +26,7 @@ depend container_split_src_files/1 depend frozen/0 depend minrelease/2016 depend release/2023 -depend revision/67243 +depend revision/67247 name 00texlive.image category TLCore @@ -4748,7 +4748,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd name 00texlive.installer category TLCore -revision 67242 +revision 67245 shortdesc TeX Live standalone installer package longdesc This package defines the files to go into the installer longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the @@ -194376,7 +194376,7 @@ catalogue-version 0.5 name luacas category Package -revision 65042 +revision 67247 shortdesc A computer algebra system for users of LuaLaTeX relocated 1 longdesc This package provides a portable computer algebra system @@ -194389,10 +194389,10 @@ longdesc integration, and more. The target audience for this package are longdesc mathematics students, instructors, and professionals who would longdesc like some ability to perform basic symbolic computations within longdesc LaTeX without the need for laborious and technical setup. -containersize 62092 -containerchecksum 1d7a3ba1e7fa0085893569e8f4ee5c175376edb7c3575f6892d969a4b64bf566c50d3b86088df6bcc7e8bae9c8ae91889f19a28e3112cfa57cc7919fb85e95d2 -doccontainersize 656528 -doccontainerchecksum 82e2392a227366661a09fc54c5657efe12d0bb5d9bc8ed5209b013b7d2825f5c3516df4c77d864c9cb05574a2380612215d9ec2b70b4e0df7c44b307922657cf +containersize 63948 +containerchecksum 21a488b33ef09db0e0fc2c479564cb15f1f2afb4c790ed8e64baa9b10ec1ad3a36486261218959f8c7951bc06d234f0516bed5d31201adc8d573c7490658764b +doccontainersize 657044 +doccontainerchecksum 45f583d602c6afd13cd32d4049d4305d23ff8b47866a9d95b873e7533d3a46d2e357afda82819dedd450e95e3300aa34a4abfece9e0b90c22d6b2c3dc8cdc701 docfiles size=259 RELOC/doc/lualatex/luacas/README.md details="Readme" RELOC/doc/lualatex/luacas/appendix/latexcode.tex @@ -194419,12 +194419,11 @@ docfiles size=259 RELOC/doc/lualatex/luacas/tutorial/tut2/tut2.tex RELOC/doc/lualatex/luacas/tutorial/tut3/demotut3.dat RELOC/doc/lualatex/luacas/tutorial/tut3/tut3.tex -runfiles size=130 +runfiles size=131 RELOC/tex/lualatex/luacas/_lib/luacas-inspect.lua RELOC/tex/lualatex/luacas/_lib/luacas-pepperfish.lua RELOC/tex/lualatex/luacas/_lib/luacas-table.lua RELOC/tex/lualatex/luacas/algebra/luacas-absexpression.lua - RELOC/tex/lualatex/luacas/algebra/luacas-algebra_init.lua RELOC/tex/lualatex/luacas/algebra/luacas-equation.lua RELOC/tex/lualatex/luacas/algebra/luacas-euclideandomain.lua RELOC/tex/lualatex/luacas/algebra/luacas-factorialexpression.lua @@ -194441,7 +194440,6 @@ runfiles size=130 RELOC/tex/lualatex/luacas/algebra/polynomialring/luacas-berlekampfactoring.lua RELOC/tex/lualatex/luacas/algebra/polynomialring/luacas-decomposition.lua RELOC/tex/lualatex/luacas/algebra/polynomialring/luacas-zassenhausfactoring.lua - RELOC/tex/lualatex/luacas/calculus/luacas-calculus_init.lua RELOC/tex/lualatex/luacas/calculus/luacas-derivativeexpression.lua RELOC/tex/lualatex/luacas/calculus/luacas-diffexpression.lua RELOC/tex/lualatex/luacas/calculus/luacas-integralexpression.lua @@ -194454,11 +194452,11 @@ runfiles size=130 RELOC/tex/lualatex/luacas/core/luacas-binaryoperation.lua RELOC/tex/lualatex/luacas/core/luacas-compoundexpression.lua RELOC/tex/lualatex/luacas/core/luacas-constantexpression.lua - RELOC/tex/lualatex/luacas/core/luacas-core_init.lua RELOC/tex/lualatex/luacas/core/luacas-expression.lua RELOC/tex/lualatex/luacas/core/luacas-functionexpression.lua RELOC/tex/lualatex/luacas/core/luacas-symbolexpression.lua RELOC/tex/lualatex/luacas/luacas.sty + RELOC/tex/lualatex/luacas/luacas_init.lua RELOC/tex/lualatex/luacas/test/calculus/luacas-derivatives.lua RELOC/tex/lualatex/luacas/test/calculus/luacas-integrals.lua RELOC/tex/lualatex/luacas/test/expressions/luacas-autosimplify.lua @@ -194484,7 +194482,7 @@ catalogue-contact-repository https://github.com/cochraef/LuaLaTeX-CAS catalogue-ctan /macros/luatex/latex/luacas catalogue-license lppl1.3c catalogue-topics maths calculation luatex -catalogue-version 1.0.1 +catalogue-version 1.0.2 name luacensor category Package @@ -312837,7 +312835,7 @@ docfiles size=376 name texlive-scripts category TLCore -revision 67242 +revision 67245 shortdesc TeX Live infrastructure programs longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for longdesc tlmgr to run but still ours. Not included in tlcritical. @@ -312845,10 +312843,10 @@ depend texlive-scripts.ARCH depend texlive.infra execute addMap mathpple.map postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat -containersize 114048 -containerchecksum 502e91ce66c1d66937ee9b58cf754e69f78e78949e06c2a2b890e72923f0baddbea196e467af089af4d52151c2e5a91d16f5383aef8d323ea3538d99f9272e17 +containersize 114080 +containerchecksum b4c18ca964cbd32fa6cce54f0ddfaa888362edd7449909a37f572dbbaabf3e84f4915384e3855e979d9d4aa9a1adb37f147d8517629f9a8dd8f1e024d635a284 doccontainersize 427008 -doccontainerchecksum 35617c39d8cb017bad379a8ec2f379ab116a8a34fbcd6dbe41decd05fa9896e1bb4522b538c5d0242dedf4cd34a6d6be068c1cc76b1cbd168687d0c9374398e2 +doccontainerchecksum 9bc6cb2b6ace2ebe029fd0c2ef9e036cfe78d9a16b45c3396ed6dfa05809b526cb16d114fa3ecc64a6e95606a43ad3fb3af6e5b0a237113fdddbdc3e27cd2072 docfiles size=545 doc.html texmf-dist/doc/man/man1/fmtutil-sys.1 @@ -333182,7 +333180,7 @@ catalogue-version 1.1.0 name ufrgscca category Package -revision 67084 +revision 67246 shortdesc A bundle for undergraduate students final work/report (tcc) at UFRGS/EE relocated 1 longdesc This bundled is aimed at producing undergraduate students' @@ -333191,15 +333189,15 @@ longdesc Federal University of Rio Grande do Sul), closely following longdesc ABNT rules (Brazilian Association for Technical Norms). It is longdesc composed of a main class, ufrgscca, and a set of auxiliary longdesc packages, some of which can be used independently. -containersize 32376 -containerchecksum 7704e9da9c471ec952f387a706c3188da525bb33c087a7e9735e9fd35079828801f1d610cc823d22d061ebcd9ce085bcbe1037067b5266a856badbcdf2571f65 -doccontainersize 533316 -doccontainerchecksum 57766772e9f47a182930600b7a2b4cc224a048fbe69af6cce201c3d4aefe36a0c28344b755cf9ecbf393d7dc1c7cbef661243e3d92dc7a5a82a41ce8189142fc -docfiles size=168 +containersize 34160 +containerchecksum f5f27574ae5817c9b7ca957c1ecbab81a6cbe23ae327fdf15509236373583871013c5687c9ef3ac3857b92de9018b369e7ce308854e13a2d4c1ca5d8f5fee5f1 +doccontainersize 555900 +doccontainerchecksum 9eb75a79e9e352d2ae1324c9c6ea87e57fd9095155ea870299ee32ee69100ecd1baf3f778acafd3f4189f00a4ebbfcc06119fbff45e6ba1daa15b03a6688c02a +docfiles size=175 RELOC/doc/latex/ufrgscca/README.md details="Readme" RELOC/doc/latex/ufrgscca/ufrgscca.pdf details="Package documentation" RELOC/doc/latex/ufrgscca/ufrgscca.tex -runfiles size=60 +runfiles size=66 RELOC/tex/latex/ufrgscca/ufrgscca-abnt.sty RELOC/tex/latex/ufrgscca/ufrgscca-coord.sty RELOC/tex/latex/ufrgscca/ufrgscca-core.sty @@ -333212,6 +333210,8 @@ runfiles size=60 RELOC/tex/latex/ufrgscca/ufrgscca-en-core.def RELOC/tex/latex/ufrgscca/ufrgscca-en-forms.def RELOC/tex/latex/ufrgscca/ufrgscca-forms.sty + RELOC/tex/latex/ufrgscca/ufrgscca-formsTR.sty + RELOC/tex/latex/ufrgscca/ufrgscca-formsintern.sty RELOC/tex/latex/ufrgscca/ufrgscca-gen.sty RELOC/tex/latex/ufrgscca/ufrgscca-lists.sty RELOC/tex/latex/ufrgscca/ufrgscca-ppc.sty @@ -333225,7 +333225,7 @@ catalogue-contact-repository https://github.com/alceu-frigeri/ufrgscca catalogue-ctan /macros/latex/contrib/ufrgscca catalogue-license lppl1.3c gpl catalogue-topics dissertation portuguese-br -catalogue-version 1.10 +catalogue-version 1.11 name uhc category Package diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 index 7a8f2bc81b..9e1f52f9b8 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 @@ -1 +1 @@ -075bb8b93d2e9a0063bd0bec29a3b887 texlive.tlpdb +89e32436a55dea94e26d317fa12b79ce texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 index dade6942cd..ffd160cc81 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 @@ -1 +1 @@ -9e3f5f84f815f340e82014af897e6d3084714161c8d7f50a512bb4e3d619558e79a606deeadc7f3f41b38cc0e0dedf0e014226736f1fe29665b5ea9b39195816 texlive.tlpdb +d2f8cb71f77d50403334181daf1a9439989b89e045a49048a38f5773d62c96b86afea3d21a4c5aadda6e3048b14c4f341e0f7f58d23433ce5bdd08579afcff93 texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc index d0316c5755..63fa07af6c 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc @@ -1,11 +1,11 @@ -----BEGIN PGP SIGNATURE----- -iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmR1OPcACgkQTOGHfhlD -jHAi+wf9HYh24OmiFdHj/WD/m1wE1MIMq9YN3nqOvk4Qoa6aZwOEB7zdUdLh2t8u -i/OVtS/MkECoToCTLt+fvQ/VkxJwM4xjUda970Xr+6D33ZRCFnlki3AnNIpP00Rq -wogVaMhCItZGeqEqDH0iPgDyG7XYGIeJsuiMh4iwWe2H8ATmQR8Xdn6021oNk/3f -wUHS+onZmcJFmH3J1lpVidxAFPwBbaYm/EiJzYwQUqtHaEl95ygadfcUe+tif3Xg -TRiOdKsIAyAmOfWbgIvL8IuLYKmP1CZx3x2K8yjTGSXfVtiY1MZAKhYK+PowI4nt -hDp7F+QAzQoYUUCFQ7oGS5S/Dn9h4Q== -=d71K +iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmR2ioAACgkQTOGHfhlD +jHD33Qf8CI811lGiU70SRdJCqA66gEKfSWsqwh2MpL57gyIFICRVQrFvcAvXkOmQ +d2hJ2B9P682/bA8llZ9Hdw5Eg6G92grQh9Ua+MP9j4Ekra23m2G8RMQTjXW7TWlu +WGAwz6xqg3Wido7Z0koXkaCIdkJhzyCtTHecXY6/Zq8s8xk7rxLwiAzlVVShrjFJ +XLuxZqunaqHQbCLrehpJ241B/ACSyESGNG/2OX7c6IslREDRCUYiAQwbBmgt+PTg +JkDqn/Aw7A9FVG19eARCJJOR+7+/1AeXsNhIln5W6nVDhfQDs9JC42LqslxB+vtL +VbIrR4M2HplOK+m7MhWgZD8R1U2LEg== +=719o -----END PGP SIGNATURE----- diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz Binary files differindex da3c2bd5c7..3433afef3f 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz @@ -2,4 +2,4 @@ # The source CTAN of this site's material: dante.ctan.org # The year-month-day-hour-minute of this site's material: -2023-05-30-02-02 +2023-05-31-02-02 |