summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-05-19 03:00:53 +0000
committerNorbert Preining <norbert@preining.info>2022-05-19 03:00:53 +0000
commit049d8c10a2be69e330d26efa5116b5ec451b8eab (patch)
treedb15bcee04033ec46962d22ab2c2da105a2dd059
parent606c3150f6696596010034bfce56f3b565fd7c85 (diff)
CTAN sync 202205190300
-rw-r--r--FILES.byname2121
-rw-r--r--FILES.byname.gzbin2433977 -> 2434156 bytes
-rw-r--r--FILES.last07days757
-rw-r--r--dviware/dvisvgm/ChangeLog38
-rw-r--r--dviware/dvisvgm/NEWS6
-rwxr-xr-xdviware/dvisvgm/ar-lib17
-rwxr-xr-xdviware/dvisvgm/compile6
-rwxr-xr-xdviware/dvisvgm/config.guess120
-rwxr-xr-xdviware/dvisvgm/config.sub2427
-rwxr-xr-xdviware/dvisvgm/configure22
-rw-r--r--dviware/dvisvgm/configure.ac4
-rwxr-xr-xdviware/dvisvgm/depcomp2
-rw-r--r--dviware/dvisvgm/doc/dvisvgm.14
-rwxr-xr-xdviware/dvisvgm/install-sh13
-rw-r--r--dviware/dvisvgm/m4/ax_cxx_compile_stdcxx.m451
-rwxr-xr-xdviware/dvisvgm/missing2
-rw-r--r--dviware/dvisvgm/src/ImageToSVG.cpp1
-rw-r--r--dviware/dvisvgm/src/PSInterpreter.cpp6
-rwxr-xr-xdviware/dvisvgm/test-driver2
-rw-r--r--info/latex-via-exemplos/README.md4
-rw-r--r--info/latex-via-exemplos/changelog.txt4
-rw-r--r--info/latex-via-exemplos/latex-via-exemplos-oneside.pdfbin1099977 -> 1109432 bytes
-rw-r--r--info/latex-via-exemplos/latex-via-exemplos.pdfbin1099381 -> 1109756 bytes
-rw-r--r--info/latex-via-exemplos/latex-via-exemplos.tex222
-rw-r--r--info/tex-nutshell/tex-nutshell.pdfbin258588 -> 256523 bytes
-rw-r--r--info/tex-nutshell/tex-nutshell.tex103
-rw-r--r--macros/generic/markdown/README.md14
-rw-r--r--macros/generic/markdown/VERSION2
-rw-r--r--macros/generic/markdown/markdown.dtx71
-rw-r--r--macros/generic/markdown/markdown.html4
-rw-r--r--macros/generic/markdown/markdown.pdfbin799016 -> 796056 bytes
-rw-r--r--macros/generic/xint/CHANGES.html3279
-rw-r--r--macros/generic/xint/README.md8
-rw-r--r--macros/generic/xint/sourcexint.pdfbin1170067 -> 1175167 bytes
-rw-r--r--macros/generic/xint/xint.dtx3854
-rw-r--r--macros/generic/xint/xint.pdfbin1058034 -> 1058714 bytes
-rw-r--r--macros/latex/contrib/doclicense/Makefile14
-rw-r--r--macros/latex/contrib/doclicense/README.md2
-rw-r--r--macros/latex/contrib/doclicense/doclicense-ukrainian.ldf30
-rw-r--r--macros/latex/contrib/doclicense/doclicense.dtx4
-rw-r--r--macros/latex/contrib/doclicense/doclicense.pdfbin273455 -> 274374 bytes
-rw-r--r--macros/latex/contrib/doclicense/manifest.txt3
-rw-r--r--macros/latex/contrib/fancyhdr/README2
-rw-r--r--macros/latex/contrib/fancyhdr/fancyhdr.dtx30
-rw-r--r--macros/latex/contrib/fancyhdr/fancyhdr.pdfbin851692 -> 853305 bytes
-rw-r--r--macros/latex/contrib/media4svg/ChangeLog4
-rw-r--r--macros/latex/contrib/media4svg/README.md4
-rw-r--r--macros/latex/contrib/media4svg/example/beamer-example-1.svg119
-rw-r--r--macros/latex/contrib/media4svg/example/beamer-example-2.svg44
-rw-r--r--macros/latex/contrib/media4svg/example/beamer-example-3.svg39
-rw-r--r--macros/latex/contrib/media4svg/example/beamer-example-4.svg225
-rwxr-xr-xmacros/latex/contrib/media4svg/media4svg.lua2
-rw-r--r--macros/latex/contrib/media4svg/media4svg.sty16
-rw-r--r--macros/latex/contrib/verifiche/verifiche-example.pdfbin190102 -> 191888 bytes
-rw-r--r--macros/latex/contrib/verifiche/verifiche-example.tex73
-rw-r--r--macros/latex/contrib/verifiche/verifiche.dtx247
-rw-r--r--macros/latex/contrib/verifiche/verifiche.pdfbin551397 -> 555223 bytes
-rw-r--r--support/TeX4ht/source/ChangeLog6
-rw-r--r--support/TeX4ht/source/tex4ht-fonts-modern.tex66
-rw-r--r--support/TeX4ht/source/tex4ht-mathml.tex10
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl2
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb94
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2379132 -> 2378036 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini8
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini8
-rw-r--r--timestamp2
69 files changed, 8622 insertions, 5614 deletions
diff --git a/FILES.byname b/FILES.byname
index a7d159f7b8..ffd374e335 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -3673,644 +3673,644 @@
1990/10/02 | 159 | dviware/dvisun/makefile
1990/10/02 | 280 | dviware/dvisun/README
2019/06/09 | 55720 | dviware/dvisun.zip
-2022/02/27 | 56953 | dviware/dvisvgm/aclocal.m4
-2021/08/13 | 5875 | dviware/dvisvgm/ar-lib
-2021/08/13 | 576 | dviware/dvisvgm/AUTHORS
-2022/02/27 | 447313 | dviware/dvisvgm/ChangeLog
-2021/08/13 | 7400 | dviware/dvisvgm/compile
-2021/08/13 | 44155 | dviware/dvisvgm/config.guess
-2022/02/27 | 4369 | dviware/dvisvgm/config.h.in
-2021/08/13 | 31428 | dviware/dvisvgm/config.sub
-2022/02/27 | 689518 | dviware/dvisvgm/configure
-2022/02/27 | 8413 | dviware/dvisvgm/configure.ac
-2021/08/13 | 35147 | dviware/dvisvgm/COPYING
-2021/08/13 | 23568 | dviware/dvisvgm/depcomp
-2022/01/23 | 718 | dviware/dvisvgm/doc/conf-dblatex-man.xsl
-2022/01/23 | 2618 | dviware/dvisvgm/doc/conf-dblatex-pdf.xsl
-2022/02/27 | 69105 | dviware/dvisvgm/doc/dvisvgm.1
-2022/02/26 | 62519 | dviware/dvisvgm/doc/dvisvgm.txt.in
-2021/08/13 | 840 | dviware/dvisvgm/doc/generate-dvisvgm-sty.xsl
-2022/01/23 | 3692 | dviware/dvisvgm/doc/Makefile.am
-2022/02/27 | 21375 | dviware/dvisvgm/doc/Makefile.in
-2022/01/23 | 1041 | dviware/dvisvgm/doc/tweak-dblatex-pdf.xsl
-2021/08/13 | 717 | dviware/dvisvgm/doc/tweak-dblatex-tex.py
-2022/01/23 | 1698 | dviware/dvisvgm/doc/tweak-db-refentry.xsl
-2021/08/13 | 9236 | dviware/dvisvgm/INSTALL
-2021/08/13 | 15645 | dviware/dvisvgm/install-sh
-2021/08/13 | 623 | dviware/dvisvgm/libs/brotli/common/constants.c
-2021/08/13 | 8012 | dviware/dvisvgm/libs/brotli/common/constants.h
-2021/08/13 | 7967 | dviware/dvisvgm/libs/brotli/common/context.c
-2021/08/13 | 4666 | dviware/dvisvgm/libs/brotli/common/context.h
-2021/08/13 | 471957 | dviware/dvisvgm/libs/brotli/common/dictionary.c
-2021/08/13 | 1951 | dviware/dvisvgm/libs/brotli/common/dictionary.h
-2021/08/13 | 514 | dviware/dvisvgm/libs/brotli/common/platform.c
-2021/08/13 | 21522 | dviware/dvisvgm/libs/brotli/common/platform.h
-2021/08/13 | 10679 | dviware/dvisvgm/libs/brotli/common/transform.c
-2021/08/13 | 3209 | dviware/dvisvgm/libs/brotli/common/transform.h
-2021/08/13 | 871 | dviware/dvisvgm/libs/brotli/common/version.h
-2021/08/13 | 4001 | dviware/dvisvgm/libs/brotli/enc/backward_references.c
-2021/08/13 | 1306 | dviware/dvisvgm/libs/brotli/enc/backward_references.h
-2021/08/13 | 32486 | dviware/dvisvgm/libs/brotli/enc/backward_references_hq.c
-2021/08/13 | 3875 | dviware/dvisvgm/libs/brotli/enc/backward_references_hq.h
-2021/08/13 | 6914 | dviware/dvisvgm/libs/brotli/enc/backward_references_inc.h
-2021/08/13 | 824 | dviware/dvisvgm/libs/brotli/enc/bit_cost.c
-2021/08/13 | 1680 | dviware/dvisvgm/libs/brotli/enc/bit_cost.h
-2021/08/13 | 4109 | dviware/dvisvgm/libs/brotli/enc/bit_cost_inc.h
-2021/08/13 | 1137 | dviware/dvisvgm/libs/brotli/enc/block_encoder_inc.h
-2021/08/13 | 6260 | dviware/dvisvgm/libs/brotli/enc/block_splitter.c
-2021/08/13 | 1679 | dviware/dvisvgm/libs/brotli/enc/block_splitter.h
-2021/08/13 | 16811 | dviware/dvisvgm/libs/brotli/enc/block_splitter_inc.h
-2021/08/13 | 49657 | dviware/dvisvgm/libs/brotli/enc/brotli_bit_stream.c
-2021/08/13 | 3371 | dviware/dvisvgm/libs/brotli/enc/brotli_bit_stream.h
-2021/08/13 | 1500 | dviware/dvisvgm/libs/brotli/enc/cluster.c
-2021/08/13 | 1033 | dviware/dvisvgm/libs/brotli/enc/cluster.h
-2021/08/13 | 11560 | dviware/dvisvgm/libs/brotli/enc/cluster_inc.h
-2021/08/13 | 1021 | dviware/dvisvgm/libs/brotli/enc/command.c
-2021/08/13 | 6897 | dviware/dvisvgm/libs/brotli/enc/command.h
-2021/08/13 | 32374 | dviware/dvisvgm/libs/brotli/enc/compress_fragment.c
-2021/08/13 | 2825 | dviware/dvisvgm/libs/brotli/enc/compress_fragment.h
-2021/08/13 | 25772 | dviware/dvisvgm/libs/brotli/enc/compress_fragment_two_pass.c
-2021/08/13 | 2407 | dviware/dvisvgm/libs/brotli/enc/compress_fragment_two_pass.h
-2021/08/13 | 147104 | dviware/dvisvgm/libs/brotli/enc/dictionary_hash.c
-2021/08/13 | 646 | dviware/dvisvgm/libs/brotli/enc/dictionary_hash.h
-2022/01/23 | 73998 | dviware/dvisvgm/libs/brotli/enc/encode.c
-2021/08/13 | 949 | dviware/dvisvgm/libs/brotli/enc/encoder_dict.c
-2021/08/13 | 1155 | dviware/dvisvgm/libs/brotli/enc/encoder_dict.h
-2021/08/13 | 14585 | dviware/dvisvgm/libs/brotli/enc/entropy_encode.c
-2021/08/13 | 4056 | dviware/dvisvgm/libs/brotli/enc/entropy_encode.h
-2021/08/13 | 32900 | dviware/dvisvgm/libs/brotli/enc/entropy_encode_static.h
-2021/08/13 | 6026 | dviware/dvisvgm/libs/brotli/enc/fast_log.c
-2021/08/13 | 1649 | dviware/dvisvgm/libs/brotli/enc/fast_log.h
-2021/08/13 | 2533 | dviware/dvisvgm/libs/brotli/enc/find_match_length.h
-2021/08/13 | 4415 | dviware/dvisvgm/libs/brotli/enc/hash_composite_inc.h
-2021/08/13 | 10861 | dviware/dvisvgm/libs/brotli/enc/hash_forgetful_chain_inc.h
-2021/08/13 | 14944 | dviware/dvisvgm/libs/brotli/enc/hash.h
-2021/08/13 | 10481 | dviware/dvisvgm/libs/brotli/enc/hash_longest_match64_inc.h
-2021/08/13 | 10054 | dviware/dvisvgm/libs/brotli/enc/hash_longest_match_inc.h
-2021/08/13 | 9310 | dviware/dvisvgm/libs/brotli/enc/hash_longest_match_quickly_inc.h
-2021/08/13 | 7196 | dviware/dvisvgm/libs/brotli/enc/hash_rolling_inc.h
-2021/08/13 | 13035 | dviware/dvisvgm/libs/brotli/enc/hash_to_binary_tree_inc.h
-2021/08/13 | 3227 | dviware/dvisvgm/libs/brotli/enc/histogram.c
-2021/08/13 | 1884 | dviware/dvisvgm/libs/brotli/enc/histogram.h
-2021/08/13 | 1401 | dviware/dvisvgm/libs/brotli/enc/histogram_inc.h
-2021/08/13 | 5614 | dviware/dvisvgm/libs/brotli/enc/literal_cost.c
-2021/08/13 | 892 | dviware/dvisvgm/libs/brotli/enc/literal_cost.h
-2021/08/13 | 4887 | dviware/dvisvgm/libs/brotli/enc/memory.c
-2021/08/13 | 3595 | dviware/dvisvgm/libs/brotli/enc/memory.h
-2021/08/13 | 26199 | dviware/dvisvgm/libs/brotli/enc/metablock.c
-2021/08/13 | 3994 | dviware/dvisvgm/libs/brotli/enc/metablock.h
-2021/08/13 | 7557 | dviware/dvisvgm/libs/brotli/enc/metablock_inc.h
-2021/08/13 | 1138 | dviware/dvisvgm/libs/brotli/enc/params.h
-2021/08/13 | 1970 | dviware/dvisvgm/libs/brotli/enc/prefix.h
-2021/08/13 | 6165 | dviware/dvisvgm/libs/brotli/enc/quality.h
-2021/08/13 | 6012 | dviware/dvisvgm/libs/brotli/enc/ringbuffer.h
-2021/08/13 | 19012 | dviware/dvisvgm/libs/brotli/enc/static_dict.c
-2021/08/13 | 1276 | dviware/dvisvgm/libs/brotli/enc/static_dict.h
-2021/08/13 | 469658 | dviware/dvisvgm/libs/brotli/enc/static_dict_lut.h
-2021/08/13 | 2271 | dviware/dvisvgm/libs/brotli/enc/utf8_util.c
-2021/08/13 | 904 | dviware/dvisvgm/libs/brotli/enc/utf8_util.h
-2021/08/13 | 2861 | dviware/dvisvgm/libs/brotli/enc/write_bits.h
-2021/08/13 | 14323 | dviware/dvisvgm/libs/brotli/include/brotli/decode.h
-2021/08/13 | 17361 | dviware/dvisvgm/libs/brotli/include/brotli/encode.h
-2021/08/13 | 10712 | dviware/dvisvgm/libs/brotli/include/brotli/port.h
-2021/08/13 | 2615 | dviware/dvisvgm/libs/brotli/include/brotli/types.h
-2021/08/13 | 1084 | dviware/dvisvgm/libs/brotli/LICENSE
-2021/08/13 | 1997 | dviware/dvisvgm/libs/brotli/Makefile.am
-2022/02/27 | 33403 | dviware/dvisvgm/libs/brotli/Makefile.in
-2021/08/13 | 132235 | dviware/dvisvgm/libs/clipper/clipper.cpp
-2021/08/13 | 15879 | dviware/dvisvgm/libs/clipper/clipper.hpp
-2021/08/13 | 1374 | dviware/dvisvgm/libs/clipper/License.txt
-2021/08/13 | 202 | dviware/dvisvgm/libs/clipper/Makefile.am
-2022/02/27 | 20366 | dviware/dvisvgm/libs/clipper/Makefile.in
-2021/08/13 | 467 | dviware/dvisvgm/libs/defs.am
-2021/08/13 | 188824 | dviware/dvisvgm/libs/ff-woff/fontforge/alphabet.c
-2021/08/13 | 32761 | dviware/dvisvgm/libs/ff-woff/fontforge/asmfpst.c
-2021/08/13 | 81675 | dviware/dvisvgm/libs/ff-woff/fontforge/autohint.c
-2021/08/13 | 2340 | dviware/dvisvgm/libs/ff-woff/fontforge/char.c
-2021/08/13 | 1027567 | dviware/dvisvgm/libs/ff-woff/fontforge/cjk.c
-2021/08/13 | 4984 | dviware/dvisvgm/libs/ff-woff/fontforge/configure-fontforge.h
-2021/08/13 | 1827 | dviware/dvisvgm/libs/ff-woff/fontforge/cvundoes.c
-2021/08/13 | 4233 | dviware/dvisvgm/libs/ff-woff/fontforge/dumppfa.c
-2021/08/13 | 3150 | dviware/dvisvgm/libs/ff-woff/fontforge/edgelist2.h
-2021/08/13 | 5274 | dviware/dvisvgm/libs/ff-woff/fontforge/edgelist.h
-2021/08/13 | 29572 | dviware/dvisvgm/libs/ff-woff/fontforge/encoding.c
-2021/08/13 | 90 | dviware/dvisvgm/libs/ff-woff/fontforge/encoding.h
-2021/08/13 | 1200 | dviware/dvisvgm/libs/ff-woff/fontforge/fflocale.c
-2021/08/13 | 452 | dviware/dvisvgm/libs/ff-woff/fontforge/fflocale.h
-2021/08/13 | 486 | dviware/dvisvgm/libs/ff-woff/fontforge/fontforge-config.h
-2021/08/13 | 3001 | dviware/dvisvgm/libs/ff-woff/fontforge/fontforge.h
-2021/08/13 | 1512 | dviware/dvisvgm/libs/ff-woff/fontforge/fontforgevw.h
-2021/08/13 | 7522 | dviware/dvisvgm/libs/ff-woff/fontforge/fvfonts.c
-2021/08/13 | 23626 | dviware/dvisvgm/libs/ff-woff/fontforge/gwwiconv.c
-2021/08/13 | 428 | dviware/dvisvgm/libs/ff-woff/fontforge/libffstamp.h
-2021/08/13 | 21357 | dviware/dvisvgm/libs/ff-woff/fontforge/lookups.c
-2021/08/13 | 8506 | dviware/dvisvgm/libs/ff-woff/fontforge/macbinary.c
-2021/08/13 | 83604 | dviware/dvisvgm/libs/ff-woff/fontforge/macenc.c
-2021/08/13 | 5539 | dviware/dvisvgm/libs/ff-woff/fontforge/mathconstants.c
-2021/08/13 | 2052 | dviware/dvisvgm/libs/ff-woff/fontforge/memory.c
-2021/08/13 | 9924 | dviware/dvisvgm/libs/ff-woff/fontforge/mm.c
-2021/08/13 | 2029 | dviware/dvisvgm/libs/ff-woff/fontforge/namehash.h
-2021/08/13 | 296376 | dviware/dvisvgm/libs/ff-woff/fontforge/namelist.c
-2021/08/13 | 4520 | dviware/dvisvgm/libs/ff-woff/fontforge/nouiutil.c
-2021/08/13 | 178642 | dviware/dvisvgm/libs/ff-woff/fontforge/nowakowskittfinstr.c
-2021/08/13 | 13812 | dviware/dvisvgm/libs/ff-woff/fontforge/parsepfa.c
-2021/08/13 | 1819 | dviware/dvisvgm/libs/ff-woff/fontforge/parsettfatt.c
-2021/08/13 | 10402 | dviware/dvisvgm/libs/ff-woff/fontforge/parsettf.c
-2021/08/13 | 10001 | dviware/dvisvgm/libs/ff-woff/fontforge/PfEd.h
-2021/08/13 | 7808 | dviware/dvisvgm/libs/ff-woff/fontforge/psfont.h
-2021/08/13 | 2388 | dviware/dvisvgm/libs/ff-woff/fontforge/psread.c
-2021/08/13 | 133230 | dviware/dvisvgm/libs/ff-woff/fontforge/pua.c
-2021/08/13 | 4637 | dviware/dvisvgm/libs/ff-woff/fontforge/sd.h
-2021/08/13 | 5412 | dviware/dvisvgm/libs/ff-woff/fontforge/sfd1.c
-2021/08/13 | 3972 | dviware/dvisvgm/libs/ff-woff/fontforge/sfd1.h
-2021/08/13 | 141065 | dviware/dvisvgm/libs/ff-woff/fontforge/sfd.c
-2021/08/13 | 9675 | dviware/dvisvgm/libs/ff-woff/fontforge/splinechar.c
-2021/08/13 | 13672 | dviware/dvisvgm/libs/ff-woff/fontforge/splinefont.c
-2021/08/13 | 102583 | dviware/dvisvgm/libs/ff-woff/fontforge/splinefont.h
-2021/08/13 | 54147 | dviware/dvisvgm/libs/ff-woff/fontforge/splineorder2.c
-2021/08/13 | 15643 | dviware/dvisvgm/libs/ff-woff/fontforge/splineoverlap.c
-2021/08/13 | 4779 | dviware/dvisvgm/libs/ff-woff/fontforge/splinerefigure.c
-2021/08/13 | 9598 | dviware/dvisvgm/libs/ff-woff/fontforge/splinesaveafm.c
-2021/08/13 | 68453 | dviware/dvisvgm/libs/ff-woff/fontforge/splinesave.c
-2021/08/13 | 50805 | dviware/dvisvgm/libs/ff-woff/fontforge/splineutil2.c
-2021/08/13 | 113050 | dviware/dvisvgm/libs/ff-woff/fontforge/splineutil.c
-2021/08/13 | 1950 | dviware/dvisvgm/libs/ff-woff/fontforge/start.c
-2021/08/13 | 210538 | dviware/dvisvgm/libs/ff-woff/fontforge/stemdb.c
-2021/08/13 | 8655 | dviware/dvisvgm/libs/ff-woff/fontforge/stemdb.h
-2021/08/13 | 114 | dviware/dvisvgm/libs/ff-woff/fontforge/tables.h
-2022/01/23 | 2041 | dviware/dvisvgm/libs/ff-woff/fontforge/tmpfile2.cpp
-2021/08/13 | 83106 | dviware/dvisvgm/libs/ff-woff/fontforge/tottfaat.c
-2021/08/13 | 217496 | dviware/dvisvgm/libs/ff-woff/fontforge/tottf.c
-2021/08/13 | 149564 | dviware/dvisvgm/libs/ff-woff/fontforge/tottfgpos.c
-2021/08/13 | 24895 | dviware/dvisvgm/libs/ff-woff/fontforge/tottfvar.c
-2021/08/13 | 30896 | dviware/dvisvgm/libs/ff-woff/fontforge/ttf.h
-2021/08/13 | 11086 | dviware/dvisvgm/libs/ff-woff/fontforge/ttfinstrs.c
-2021/08/13 | 3416 | dviware/dvisvgm/libs/ff-woff/fontforge/ttfinstrs.h
-2021/08/13 | 62940 | dviware/dvisvgm/libs/ff-woff/fontforge/ttfspecial.c
-2021/08/13 | 7710 | dviware/dvisvgm/libs/ff-woff/fontforge/uiinterface.h
-2021/08/13 | 318474 | dviware/dvisvgm/libs/ff-woff/fontforge/unialt.c
-2021/08/13 | 6435 | dviware/dvisvgm/libs/ff-woff/fontforge/ustring.c
-2021/08/13 | 1924432 | dviware/dvisvgm/libs/ff-woff/fontforge/utype.c
-2021/08/13 | 9876 | dviware/dvisvgm/libs/ff-woff/fontforge/woff.c
-2021/08/13 | 3909 | dviware/dvisvgm/libs/ff-woff/inc/basics.h
-2021/08/13 | 3051 | dviware/dvisvgm/libs/ff-woff/inc/chardata.h
-2021/08/13 | 3336 | dviware/dvisvgm/libs/ff-woff/inc/charset.h
-2021/08/13 | 5956 | dviware/dvisvgm/libs/ff-woff/inc/dlist.h
-2021/08/13 | 1638 | dviware/dvisvgm/libs/ff-woff/inc/ffintl.h
-2021/08/13 | 8611 | dviware/dvisvgm/libs/ff-woff/inc/gimage.h
-2021/08/13 | 3413 | dviware/dvisvgm/libs/ff-woff/inc/gnetwork.h
-2021/08/13 | 2002 | dviware/dvisvgm/libs/ff-woff/inc/gwwiconv.h
-2021/08/13 | 9794 | dviware/dvisvgm/libs/ff-woff/inc/ustring.h
-2021/08/13 | 5185 | dviware/dvisvgm/libs/ff-woff/inc/utype.h
-2021/08/13 | 9905 | dviware/dvisvgm/libs/ff-woff/LICENSE
-2021/08/13 | 2027 | dviware/dvisvgm/libs/ff-woff/Makefile.am
-2022/02/27 | 40582 | dviware/dvisvgm/libs/ff-woff/Makefile.in
-2022/01/23 | 241 | dviware/dvisvgm/libs/Makefile.am
-2022/02/27 | 19964 | dviware/dvisvgm/libs/Makefile.in
-2021/08/13 | 171 | dviware/dvisvgm/libs/md5/Makefile.am
-2022/02/27 | 19573 | dviware/dvisvgm/libs/md5/Makefile.in
-2021/08/13 | 8743 | dviware/dvisvgm/libs/md5/md5.c
-2021/08/13 | 1426 | dviware/dvisvgm/libs/md5/md5.h
-2021/08/13 | 2146 | dviware/dvisvgm/libs/potrace/auxiliary.h
-2021/08/13 | 6450 | dviware/dvisvgm/libs/potrace/bitmap.h
-2021/08/13 | 90 | dviware/dvisvgm/libs/potrace/config.h
-2021/08/13 | 2693 | dviware/dvisvgm/libs/potrace/curve.c
-2021/08/13 | 2782 | dviware/dvisvgm/libs/potrace/curve.h
-2021/08/13 | 14605 | dviware/dvisvgm/libs/potrace/decompose.c
-2021/08/13 | 442 | dviware/dvisvgm/libs/potrace/decompose.h
-2021/08/13 | 11118 | dviware/dvisvgm/libs/potrace/lists.h
-2021/08/13 | 330 | dviware/dvisvgm/libs/potrace/Makefile.am
-2022/02/27 | 20832 | dviware/dvisvgm/libs/potrace/Makefile.in
-2021/08/13 | 3122 | dviware/dvisvgm/libs/potrace/potracelib.c
-2021/08/13 | 4573 | dviware/dvisvgm/libs/potrace/potracelib.h
-2021/08/13 | 2654 | dviware/dvisvgm/libs/potrace/progress.h
-2021/08/13 | 32392 | dviware/dvisvgm/libs/potrace/trace.c
-2021/08/13 | 397 | dviware/dvisvgm/libs/potrace/trace.h
-2021/08/13 | 102582 | dviware/dvisvgm/libs/variant/include/mpark/variant.hpp
-2021/08/13 | 1338 | dviware/dvisvgm/libs/variant/LICENSE.md
-2021/08/13 | 71 | dviware/dvisvgm/libs/variant/Makefile.am
-2022/02/27 | 15621 | dviware/dvisvgm/libs/variant/Makefile.in
-2021/08/13 | 1171 | dviware/dvisvgm/libs/woff2/include/woff2/decode.h
-2021/08/13 | 1434 | dviware/dvisvgm/libs/woff2/include/woff2/encode.h
-2021/08/13 | 2304 | dviware/dvisvgm/libs/woff2/include/woff2/output.h
-2021/08/13 | 131 | dviware/dvisvgm/libs/woff2/include/woff2/version.h
-2021/08/13 | 11358 | dviware/dvisvgm/libs/woff2/LICENSE
-2021/08/13 | 701 | dviware/dvisvgm/libs/woff2/Makefile.am
-2022/02/27 | 24709 | dviware/dvisvgm/libs/woff2/Makefile.in
-2021/08/13 | 4185 | dviware/dvisvgm/libs/woff2/src/buffer.h
-2021/08/13 | 12155 | dviware/dvisvgm/libs/woff2/src/font.cc
-2021/08/13 | 3509 | dviware/dvisvgm/libs/woff2/src/font.h
-2021/08/13 | 11277 | dviware/dvisvgm/libs/woff2/src/glyph.cc
-2021/08/13 | 1756 | dviware/dvisvgm/libs/woff2/src/glyph.h
-2021/08/13 | 9004 | dviware/dvisvgm/libs/woff2/src/normalize.cc
-2021/08/13 | 1301 | dviware/dvisvgm/libs/woff2/src/normalize.h
-2021/08/13 | 1674 | dviware/dvisvgm/libs/woff2/src/port.h
-2021/08/13 | 587 | dviware/dvisvgm/libs/woff2/src/round.h
-2021/08/13 | 1864 | dviware/dvisvgm/libs/woff2/src/store_bytes.h
-2021/08/13 | 2558 | dviware/dvisvgm/libs/woff2/src/table_tags.cc
-2021/08/13 | 807 | dviware/dvisvgm/libs/woff2/src/table_tags.h
-2021/08/13 | 13101 | dviware/dvisvgm/libs/woff2/src/transform.cc
-2021/08/13 | 768 | dviware/dvisvgm/libs/woff2/src/transform.h
-2021/08/13 | 3176 | dviware/dvisvgm/libs/woff2/src/variable_length.cc
-2021/08/13 | 811 | dviware/dvisvgm/libs/woff2/src/variable_length.h
-2021/08/13 | 1547 | dviware/dvisvgm/libs/woff2/src/woff2_common.cc
-2021/08/13 | 1439 | dviware/dvisvgm/libs/woff2/src/woff2_common.h
-2021/08/13 | 15423 | dviware/dvisvgm/libs/woff2/src/woff2_enc.cc
-2021/08/13 | 1564 | dviware/dvisvgm/libs/woff2/src/woff2_out.cc
-2021/08/13 | 200 | dviware/dvisvgm/libs/xxHash/Makefile.am
-2022/02/27 | 19678 | dviware/dvisvgm/libs/xxHash/Makefile.in
-2022/01/23 | 2394 | dviware/dvisvgm/libs/xxHash/xxh3.h
-2021/08/13 | 1855 | dviware/dvisvgm/libs/xxHash/xxhash.c
+2022/04/20 | 56953 | dviware/dvisvgm/aclocal.m4
+2019/03/09 | 5827 | dviware/dvisvgm/ar-lib
+2018/09/08 | 576 | dviware/dvisvgm/AUTHORS
+2022/04/20 | 448243 | dviware/dvisvgm/ChangeLog
+2019/03/09 | 7383 | dviware/dvisvgm/compile
+2019/03/09 | 44166 | dviware/dvisvgm/config.guess
+2022/04/20 | 4369 | dviware/dvisvgm/config.h.in
+2019/03/09 | 36408 | dviware/dvisvgm/config.sub
+2022/04/20 | 689515 | dviware/dvisvgm/configure
+2022/04/20 | 8410 | dviware/dvisvgm/configure.ac
+2016/09/03 | 35147 | dviware/dvisvgm/COPYING
+2019/03/09 | 23568 | dviware/dvisvgm/depcomp
+2022/01/18 | 718 | dviware/dvisvgm/doc/conf-dblatex-man.xsl
+2022/01/18 | 2618 | dviware/dvisvgm/doc/conf-dblatex-pdf.xsl
+2022/04/20 | 69105 | dviware/dvisvgm/doc/dvisvgm.1
+2022/03/14 | 62519 | dviware/dvisvgm/doc/dvisvgm.txt.in
+2020/03/21 | 840 | dviware/dvisvgm/doc/generate-dvisvgm-sty.xsl
+2022/01/18 | 3692 | dviware/dvisvgm/doc/Makefile.am
+2022/04/20 | 21375 | dviware/dvisvgm/doc/Makefile.in
+2022/01/18 | 1041 | dviware/dvisvgm/doc/tweak-dblatex-pdf.xsl
+2021/03/05 | 717 | dviware/dvisvgm/doc/tweak-dblatex-tex.py
+2022/01/18 | 1698 | dviware/dvisvgm/doc/tweak-db-refentry.xsl
+2016/09/03 | 9236 | dviware/dvisvgm/INSTALL
+2019/03/09 | 15368 | dviware/dvisvgm/install-sh
+2020/08/27 | 623 | dviware/dvisvgm/libs/brotli/common/constants.c
+2020/08/27 | 8012 | dviware/dvisvgm/libs/brotli/common/constants.h
+2020/08/27 | 7967 | dviware/dvisvgm/libs/brotli/common/context.c
+2020/08/27 | 4666 | dviware/dvisvgm/libs/brotli/common/context.h
+2020/08/27 | 471957 | dviware/dvisvgm/libs/brotli/common/dictionary.c
+2018/05/03 | 1951 | dviware/dvisvgm/libs/brotli/common/dictionary.h
+2020/08/27 | 514 | dviware/dvisvgm/libs/brotli/common/platform.c
+2020/08/27 | 21522 | dviware/dvisvgm/libs/brotli/common/platform.h
+2020/08/27 | 10679 | dviware/dvisvgm/libs/brotli/common/transform.c
+2020/08/27 | 3209 | dviware/dvisvgm/libs/brotli/common/transform.h
+2020/09/12 | 871 | dviware/dvisvgm/libs/brotli/common/version.h
+2020/08/27 | 4001 | dviware/dvisvgm/libs/brotli/enc/backward_references.c
+2020/08/27 | 1306 | dviware/dvisvgm/libs/brotli/enc/backward_references.h
+2020/08/27 | 32486 | dviware/dvisvgm/libs/brotli/enc/backward_references_hq.c
+2020/08/27 | 3875 | dviware/dvisvgm/libs/brotli/enc/backward_references_hq.h
+2020/08/27 | 6914 | dviware/dvisvgm/libs/brotli/enc/backward_references_inc.h
+2018/05/03 | 824 | dviware/dvisvgm/libs/brotli/enc/bit_cost.c
+2018/05/03 | 1680 | dviware/dvisvgm/libs/brotli/enc/bit_cost.h
+2017/12/28 | 4109 | dviware/dvisvgm/libs/brotli/enc/bit_cost_inc.h
+2018/05/03 | 1137 | dviware/dvisvgm/libs/brotli/enc/block_encoder_inc.h
+2020/08/27 | 6260 | dviware/dvisvgm/libs/brotli/enc/block_splitter.c
+2018/05/03 | 1679 | dviware/dvisvgm/libs/brotli/enc/block_splitter.h
+2020/08/27 | 16811 | dviware/dvisvgm/libs/brotli/enc/block_splitter_inc.h
+2020/08/27 | 49657 | dviware/dvisvgm/libs/brotli/enc/brotli_bit_stream.c
+2018/07/31 | 3371 | dviware/dvisvgm/libs/brotli/enc/brotli_bit_stream.h
+2018/05/03 | 1500 | dviware/dvisvgm/libs/brotli/enc/cluster.c
+2018/05/03 | 1033 | dviware/dvisvgm/libs/brotli/enc/cluster.h
+2020/08/27 | 11560 | dviware/dvisvgm/libs/brotli/enc/cluster_inc.h
+2020/08/27 | 1021 | dviware/dvisvgm/libs/brotli/enc/command.c
+2020/08/27 | 6897 | dviware/dvisvgm/libs/brotli/enc/command.h
+2018/07/31 | 32374 | dviware/dvisvgm/libs/brotli/enc/compress_fragment.c
+2018/05/03 | 2825 | dviware/dvisvgm/libs/brotli/enc/compress_fragment.h
+2020/08/27 | 25772 | dviware/dvisvgm/libs/brotli/enc/compress_fragment_two_pass.c
+2018/05/03 | 2407 | dviware/dvisvgm/libs/brotli/enc/compress_fragment_two_pass.h
+2020/08/27 | 147104 | dviware/dvisvgm/libs/brotli/enc/dictionary_hash.c
+2020/08/27 | 646 | dviware/dvisvgm/libs/brotli/enc/dictionary_hash.h
+2021/12/06 | 73998 | dviware/dvisvgm/libs/brotli/enc/encode.c
+2020/08/27 | 949 | dviware/dvisvgm/libs/brotli/enc/encoder_dict.c
+2020/08/27 | 1155 | dviware/dvisvgm/libs/brotli/enc/encoder_dict.h
+2020/08/27 | 14585 | dviware/dvisvgm/libs/brotli/enc/entropy_encode.c
+2020/08/27 | 4056 | dviware/dvisvgm/libs/brotli/enc/entropy_encode.h
+2018/05/03 | 32900 | dviware/dvisvgm/libs/brotli/enc/entropy_encode_static.h
+2020/08/27 | 6026 | dviware/dvisvgm/libs/brotli/enc/fast_log.c
+2020/08/27 | 1649 | dviware/dvisvgm/libs/brotli/enc/fast_log.h
+2020/08/27 | 2533 | dviware/dvisvgm/libs/brotli/enc/find_match_length.h
+2020/08/27 | 4415 | dviware/dvisvgm/libs/brotli/enc/hash_composite_inc.h
+2020/08/27 | 10861 | dviware/dvisvgm/libs/brotli/enc/hash_forgetful_chain_inc.h
+2020/08/27 | 14944 | dviware/dvisvgm/libs/brotli/enc/hash.h
+2020/08/27 | 10481 | dviware/dvisvgm/libs/brotli/enc/hash_longest_match64_inc.h
+2020/08/27 | 10054 | dviware/dvisvgm/libs/brotli/enc/hash_longest_match_inc.h
+2020/08/27 | 9310 | dviware/dvisvgm/libs/brotli/enc/hash_longest_match_quickly_inc.h
+2020/08/27 | 7196 | dviware/dvisvgm/libs/brotli/enc/hash_rolling_inc.h
+2020/08/27 | 13035 | dviware/dvisvgm/libs/brotli/enc/hash_to_binary_tree_inc.h
+2018/05/03 | 3227 | dviware/dvisvgm/libs/brotli/enc/histogram.c
+2018/05/03 | 1884 | dviware/dvisvgm/libs/brotli/enc/histogram.h
+2018/05/03 | 1401 | dviware/dvisvgm/libs/brotli/enc/histogram_inc.h
+2018/05/03 | 5614 | dviware/dvisvgm/libs/brotli/enc/literal_cost.c
+2018/05/03 | 892 | dviware/dvisvgm/libs/brotli/enc/literal_cost.h
+2018/05/03 | 4887 | dviware/dvisvgm/libs/brotli/enc/memory.c
+2020/08/27 | 3595 | dviware/dvisvgm/libs/brotli/enc/memory.h
+2020/08/27 | 26199 | dviware/dvisvgm/libs/brotli/enc/metablock.c
+2018/05/03 | 3994 | dviware/dvisvgm/libs/brotli/enc/metablock.h
+2020/08/27 | 7557 | dviware/dvisvgm/libs/brotli/enc/metablock_inc.h
+2020/08/27 | 1138 | dviware/dvisvgm/libs/brotli/enc/params.h
+2018/05/03 | 1970 | dviware/dvisvgm/libs/brotli/enc/prefix.h
+2018/07/31 | 6165 | dviware/dvisvgm/libs/brotli/enc/quality.h
+2020/08/27 | 6012 | dviware/dvisvgm/libs/brotli/enc/ringbuffer.h
+2018/07/31 | 19012 | dviware/dvisvgm/libs/brotli/enc/static_dict.c
+2018/05/03 | 1276 | dviware/dvisvgm/libs/brotli/enc/static_dict.h
+2018/05/03 | 469658 | dviware/dvisvgm/libs/brotli/enc/static_dict_lut.h
+2020/08/27 | 2271 | dviware/dvisvgm/libs/brotli/enc/utf8_util.c
+2018/05/03 | 904 | dviware/dvisvgm/libs/brotli/enc/utf8_util.h
+2020/08/27 | 2861 | dviware/dvisvgm/libs/brotli/enc/write_bits.h
+2018/05/03 | 14323 | dviware/dvisvgm/libs/brotli/include/brotli/decode.h
+2020/08/27 | 17361 | dviware/dvisvgm/libs/brotli/include/brotli/encode.h
+2020/08/27 | 10712 | dviware/dvisvgm/libs/brotli/include/brotli/port.h
+2018/07/31 | 2615 | dviware/dvisvgm/libs/brotli/include/brotli/types.h
+2017/12/28 | 1084 | dviware/dvisvgm/libs/brotli/LICENSE
+2020/08/27 | 1997 | dviware/dvisvgm/libs/brotli/Makefile.am
+2022/04/20 | 33403 | dviware/dvisvgm/libs/brotli/Makefile.in
+2018/09/08 | 132235 | dviware/dvisvgm/libs/clipper/clipper.cpp
+2016/09/03 | 15879 | dviware/dvisvgm/libs/clipper/clipper.hpp
+2017/04/14 | 1374 | dviware/dvisvgm/libs/clipper/License.txt
+2017/04/14 | 202 | dviware/dvisvgm/libs/clipper/Makefile.am
+2022/04/20 | 20366 | dviware/dvisvgm/libs/clipper/Makefile.in
+2019/03/09 | 467 | dviware/dvisvgm/libs/defs.am
+2017/04/14 | 188824 | dviware/dvisvgm/libs/ff-woff/fontforge/alphabet.c
+2017/04/14 | 32761 | dviware/dvisvgm/libs/ff-woff/fontforge/asmfpst.c
+2017/04/14 | 81675 | dviware/dvisvgm/libs/ff-woff/fontforge/autohint.c
+2017/04/14 | 2340 | dviware/dvisvgm/libs/ff-woff/fontforge/char.c
+2017/04/14 | 1027567 | dviware/dvisvgm/libs/ff-woff/fontforge/cjk.c
+2017/04/14 | 4984 | dviware/dvisvgm/libs/ff-woff/fontforge/configure-fontforge.h
+2017/04/14 | 1827 | dviware/dvisvgm/libs/ff-woff/fontforge/cvundoes.c
+2017/04/14 | 4233 | dviware/dvisvgm/libs/ff-woff/fontforge/dumppfa.c
+2017/04/14 | 3150 | dviware/dvisvgm/libs/ff-woff/fontforge/edgelist2.h
+2017/04/14 | 5274 | dviware/dvisvgm/libs/ff-woff/fontforge/edgelist.h
+2017/04/14 | 29572 | dviware/dvisvgm/libs/ff-woff/fontforge/encoding.c
+2017/04/14 | 90 | dviware/dvisvgm/libs/ff-woff/fontforge/encoding.h
+2017/04/14 | 1200 | dviware/dvisvgm/libs/ff-woff/fontforge/fflocale.c
+2017/04/14 | 452 | dviware/dvisvgm/libs/ff-woff/fontforge/fflocale.h
+2017/04/14 | 486 | dviware/dvisvgm/libs/ff-woff/fontforge/fontforge-config.h
+2017/04/14 | 3001 | dviware/dvisvgm/libs/ff-woff/fontforge/fontforge.h
+2017/04/14 | 1512 | dviware/dvisvgm/libs/ff-woff/fontforge/fontforgevw.h
+2017/04/14 | 7522 | dviware/dvisvgm/libs/ff-woff/fontforge/fvfonts.c
+2017/04/14 | 23626 | dviware/dvisvgm/libs/ff-woff/fontforge/gwwiconv.c
+2017/04/14 | 428 | dviware/dvisvgm/libs/ff-woff/fontforge/libffstamp.h
+2017/04/14 | 21357 | dviware/dvisvgm/libs/ff-woff/fontforge/lookups.c
+2017/10/30 | 8506 | dviware/dvisvgm/libs/ff-woff/fontforge/macbinary.c
+2017/04/14 | 83604 | dviware/dvisvgm/libs/ff-woff/fontforge/macenc.c
+2017/04/14 | 5539 | dviware/dvisvgm/libs/ff-woff/fontforge/mathconstants.c
+2017/04/14 | 2052 | dviware/dvisvgm/libs/ff-woff/fontforge/memory.c
+2017/04/14 | 9924 | dviware/dvisvgm/libs/ff-woff/fontforge/mm.c
+2017/04/14 | 2029 | dviware/dvisvgm/libs/ff-woff/fontforge/namehash.h
+2017/04/14 | 296376 | dviware/dvisvgm/libs/ff-woff/fontforge/namelist.c
+2017/04/14 | 4520 | dviware/dvisvgm/libs/ff-woff/fontforge/nouiutil.c
+2017/04/14 | 178642 | dviware/dvisvgm/libs/ff-woff/fontforge/nowakowskittfinstr.c
+2017/04/14 | 13812 | dviware/dvisvgm/libs/ff-woff/fontforge/parsepfa.c
+2017/04/14 | 1819 | dviware/dvisvgm/libs/ff-woff/fontforge/parsettfatt.c
+2017/04/14 | 10402 | dviware/dvisvgm/libs/ff-woff/fontforge/parsettf.c
+2017/04/14 | 10001 | dviware/dvisvgm/libs/ff-woff/fontforge/PfEd.h
+2017/04/14 | 7808 | dviware/dvisvgm/libs/ff-woff/fontforge/psfont.h
+2017/04/14 | 2388 | dviware/dvisvgm/libs/ff-woff/fontforge/psread.c
+2017/04/14 | 133230 | dviware/dvisvgm/libs/ff-woff/fontforge/pua.c
+2017/04/14 | 4637 | dviware/dvisvgm/libs/ff-woff/fontforge/sd.h
+2017/04/14 | 5412 | dviware/dvisvgm/libs/ff-woff/fontforge/sfd1.c
+2017/04/14 | 3972 | dviware/dvisvgm/libs/ff-woff/fontforge/sfd1.h
+2017/04/14 | 141065 | dviware/dvisvgm/libs/ff-woff/fontforge/sfd.c
+2017/04/14 | 9675 | dviware/dvisvgm/libs/ff-woff/fontforge/splinechar.c
+2017/04/14 | 13672 | dviware/dvisvgm/libs/ff-woff/fontforge/splinefont.c
+2017/04/14 | 102583 | dviware/dvisvgm/libs/ff-woff/fontforge/splinefont.h
+2017/04/14 | 54147 | dviware/dvisvgm/libs/ff-woff/fontforge/splineorder2.c
+2017/04/14 | 15643 | dviware/dvisvgm/libs/ff-woff/fontforge/splineoverlap.c
+2017/04/14 | 4779 | dviware/dvisvgm/libs/ff-woff/fontforge/splinerefigure.c
+2017/04/14 | 9598 | dviware/dvisvgm/libs/ff-woff/fontforge/splinesaveafm.c
+2017/04/14 | 68453 | dviware/dvisvgm/libs/ff-woff/fontforge/splinesave.c
+2017/04/14 | 50805 | dviware/dvisvgm/libs/ff-woff/fontforge/splineutil2.c
+2017/04/14 | 113050 | dviware/dvisvgm/libs/ff-woff/fontforge/splineutil.c
+2017/04/14 | 1950 | dviware/dvisvgm/libs/ff-woff/fontforge/start.c
+2017/04/14 | 210538 | dviware/dvisvgm/libs/ff-woff/fontforge/stemdb.c
+2017/04/14 | 8655 | dviware/dvisvgm/libs/ff-woff/fontforge/stemdb.h
+2017/04/14 | 114 | dviware/dvisvgm/libs/ff-woff/fontforge/tables.h
+2022/01/18 | 2041 | dviware/dvisvgm/libs/ff-woff/fontforge/tmpfile2.cpp
+2017/04/14 | 83106 | dviware/dvisvgm/libs/ff-woff/fontforge/tottfaat.c
+2017/04/14 | 217496 | dviware/dvisvgm/libs/ff-woff/fontforge/tottf.c
+2017/04/14 | 149564 | dviware/dvisvgm/libs/ff-woff/fontforge/tottfgpos.c
+2017/04/14 | 24895 | dviware/dvisvgm/libs/ff-woff/fontforge/tottfvar.c
+2017/04/14 | 30896 | dviware/dvisvgm/libs/ff-woff/fontforge/ttf.h
+2017/04/14 | 11086 | dviware/dvisvgm/libs/ff-woff/fontforge/ttfinstrs.c
+2017/04/14 | 3416 | dviware/dvisvgm/libs/ff-woff/fontforge/ttfinstrs.h
+2017/04/14 | 62940 | dviware/dvisvgm/libs/ff-woff/fontforge/ttfspecial.c
+2017/04/14 | 7710 | dviware/dvisvgm/libs/ff-woff/fontforge/uiinterface.h
+2017/04/14 | 318474 | dviware/dvisvgm/libs/ff-woff/fontforge/unialt.c
+2017/04/14 | 6435 | dviware/dvisvgm/libs/ff-woff/fontforge/ustring.c
+2017/04/14 | 1924432 | dviware/dvisvgm/libs/ff-woff/fontforge/utype.c
+2017/04/14 | 9876 | dviware/dvisvgm/libs/ff-woff/fontforge/woff.c
+2017/04/14 | 3909 | dviware/dvisvgm/libs/ff-woff/inc/basics.h
+2017/04/14 | 3051 | dviware/dvisvgm/libs/ff-woff/inc/chardata.h
+2017/04/14 | 3336 | dviware/dvisvgm/libs/ff-woff/inc/charset.h
+2017/04/14 | 5956 | dviware/dvisvgm/libs/ff-woff/inc/dlist.h
+2017/04/14 | 1638 | dviware/dvisvgm/libs/ff-woff/inc/ffintl.h
+2017/04/14 | 8611 | dviware/dvisvgm/libs/ff-woff/inc/gimage.h
+2017/04/14 | 3413 | dviware/dvisvgm/libs/ff-woff/inc/gnetwork.h
+2017/04/14 | 2002 | dviware/dvisvgm/libs/ff-woff/inc/gwwiconv.h
+2017/04/14 | 9794 | dviware/dvisvgm/libs/ff-woff/inc/ustring.h
+2017/04/14 | 5185 | dviware/dvisvgm/libs/ff-woff/inc/utype.h
+2017/04/14 | 9905 | dviware/dvisvgm/libs/ff-woff/LICENSE
+2019/04/12 | 2027 | dviware/dvisvgm/libs/ff-woff/Makefile.am
+2022/04/20 | 40582 | dviware/dvisvgm/libs/ff-woff/Makefile.in
+2022/01/18 | 241 | dviware/dvisvgm/libs/Makefile.am
+2022/04/20 | 19964 | dviware/dvisvgm/libs/Makefile.in
+2018/09/08 | 171 | dviware/dvisvgm/libs/md5/Makefile.am
+2022/04/20 | 19573 | dviware/dvisvgm/libs/md5/Makefile.in
+2018/09/08 | 8743 | dviware/dvisvgm/libs/md5/md5.c
+2018/09/08 | 1426 | dviware/dvisvgm/libs/md5/md5.h
+2019/10/25 | 2146 | dviware/dvisvgm/libs/potrace/auxiliary.h
+2019/10/25 | 6450 | dviware/dvisvgm/libs/potrace/bitmap.h
+2019/10/25 | 90 | dviware/dvisvgm/libs/potrace/config.h
+2019/10/25 | 2693 | dviware/dvisvgm/libs/potrace/curve.c
+2019/10/25 | 2782 | dviware/dvisvgm/libs/potrace/curve.h
+2019/10/25 | 14605 | dviware/dvisvgm/libs/potrace/decompose.c
+2019/10/25 | 442 | dviware/dvisvgm/libs/potrace/decompose.h
+2019/10/25 | 11118 | dviware/dvisvgm/libs/potrace/lists.h
+2019/03/09 | 330 | dviware/dvisvgm/libs/potrace/Makefile.am
+2022/04/20 | 20832 | dviware/dvisvgm/libs/potrace/Makefile.in
+2019/10/25 | 3122 | dviware/dvisvgm/libs/potrace/potracelib.c
+2019/10/25 | 4573 | dviware/dvisvgm/libs/potrace/potracelib.h
+2019/10/25 | 2654 | dviware/dvisvgm/libs/potrace/progress.h
+2019/10/25 | 32392 | dviware/dvisvgm/libs/potrace/trace.c
+2019/10/25 | 397 | dviware/dvisvgm/libs/potrace/trace.h
+2019/03/09 | 102582 | dviware/dvisvgm/libs/variant/include/mpark/variant.hpp
+2017/10/30 | 1338 | dviware/dvisvgm/libs/variant/LICENSE.md
+2019/03/09 | 71 | dviware/dvisvgm/libs/variant/Makefile.am
+2022/04/20 | 15621 | dviware/dvisvgm/libs/variant/Makefile.in
+2017/10/30 | 1171 | dviware/dvisvgm/libs/woff2/include/woff2/decode.h
+2017/10/30 | 1434 | dviware/dvisvgm/libs/woff2/include/woff2/encode.h
+2017/10/30 | 2304 | dviware/dvisvgm/libs/woff2/include/woff2/output.h
+2018/07/31 | 131 | dviware/dvisvgm/libs/woff2/include/woff2/version.h
+2016/09/03 | 11358 | dviware/dvisvgm/libs/woff2/LICENSE
+2019/03/09 | 701 | dviware/dvisvgm/libs/woff2/Makefile.am
+2022/04/20 | 24709 | dviware/dvisvgm/libs/woff2/Makefile.in
+2017/10/30 | 4185 | dviware/dvisvgm/libs/woff2/src/buffer.h
+2018/07/31 | 12155 | dviware/dvisvgm/libs/woff2/src/font.cc
+2017/10/30 | 3509 | dviware/dvisvgm/libs/woff2/src/font.h
+2019/10/25 | 11277 | dviware/dvisvgm/libs/woff2/src/glyph.cc
+2017/10/30 | 1756 | dviware/dvisvgm/libs/woff2/src/glyph.h
+2019/10/25 | 9004 | dviware/dvisvgm/libs/woff2/src/normalize.cc
+2017/10/30 | 1301 | dviware/dvisvgm/libs/woff2/src/normalize.h
+2017/10/30 | 1674 | dviware/dvisvgm/libs/woff2/src/port.h
+2017/10/30 | 587 | dviware/dvisvgm/libs/woff2/src/round.h
+2017/10/30 | 1864 | dviware/dvisvgm/libs/woff2/src/store_bytes.h
+2017/10/30 | 2558 | dviware/dvisvgm/libs/woff2/src/table_tags.cc
+2017/10/30 | 807 | dviware/dvisvgm/libs/woff2/src/table_tags.h
+2017/10/30 | 13101 | dviware/dvisvgm/libs/woff2/src/transform.cc
+2017/10/30 | 768 | dviware/dvisvgm/libs/woff2/src/transform.h
+2017/10/30 | 3176 | dviware/dvisvgm/libs/woff2/src/variable_length.cc
+2017/10/30 | 811 | dviware/dvisvgm/libs/woff2/src/variable_length.h
+2017/10/30 | 1547 | dviware/dvisvgm/libs/woff2/src/woff2_common.cc
+2017/10/30 | 1439 | dviware/dvisvgm/libs/woff2/src/woff2_common.h
+2018/07/31 | 15423 | dviware/dvisvgm/libs/woff2/src/woff2_enc.cc
+2017/10/30 | 1564 | dviware/dvisvgm/libs/woff2/src/woff2_out.cc
+2019/10/25 | 200 | dviware/dvisvgm/libs/xxHash/Makefile.am
+2022/04/20 | 19678 | dviware/dvisvgm/libs/xxHash/Makefile.in
+2021/12/02 | 2394 | dviware/dvisvgm/libs/xxHash/xxh3.h
+2020/07/04 | 1855 | dviware/dvisvgm/libs/xxHash/xxhash.c
2022/01/25 | 209623 | dviware/dvisvgm/libs/xxHash/xxhash.h
-2021/08/13 | 324151 | dviware/dvisvgm/ltmain.sh
-2021/08/13 | 2105 | dviware/dvisvgm/m4/ax_check_compile_flag.m4
-2021/08/13 | 11836 | dviware/dvisvgm/m4/ax_code_coverage.m4
-2021/08/13 | 19816 | dviware/dvisvgm/m4/ax_cxx_compile_stdcxx.m4
-2021/08/13 | 305862 | dviware/dvisvgm/m4/libtool.m4
-2021/08/13 | 6140 | dviware/dvisvgm/m4/lt~obsolete.m4
-2021/08/13 | 14514 | dviware/dvisvgm/m4/ltoptions.m4
-2021/08/13 | 4384 | dviware/dvisvgm/m4/ltsugar.m4
-2021/08/13 | 699 | dviware/dvisvgm/m4/ltversion.m4
-2021/08/13 | 95 | dviware/dvisvgm/m4/Makefile.am
-2022/02/27 | 13502 | dviware/dvisvgm/m4/Makefile.in
-2022/01/23 | 744 | dviware/dvisvgm/Makefile.am
-2022/02/27 | 27920 | dviware/dvisvgm/Makefile.in
-2021/08/13 | 6878 | dviware/dvisvgm/missing
-2022/02/27 | 39402 | dviware/dvisvgm/NEWS
-2022/01/23 | 6173 | dviware/dvisvgm/README
-2022/01/23 | 158418 | dviware/dvisvgm/src/AGLTable.hpp
-2022/01/23 | 15777 | dviware/dvisvgm/src/BasicDVIReader.cpp
-2022/01/23 | 5248 | dviware/dvisvgm/src/BasicDVIReader.hpp
-2022/01/23 | 9132 | dviware/dvisvgm/src/Bezier.cpp
-2022/01/23 | 2502 | dviware/dvisvgm/src/Bezier.hpp
-2022/01/23 | 3164 | dviware/dvisvgm/src/BgColorSpecialHandler.cpp
-2022/01/23 | 2228 | dviware/dvisvgm/src/BgColorSpecialHandler.hpp
-2022/01/23 | 4889 | dviware/dvisvgm/src/Bitmap.cpp
-2022/01/23 | 4166 | dviware/dvisvgm/src/Bitmap.hpp
-2022/02/26 | 8299 | dviware/dvisvgm/src/BoundingBox.cpp
-2022/02/26 | 3970 | dviware/dvisvgm/src/BoundingBox.hpp
-2022/01/23 | 6779 | dviware/dvisvgm/src/Calculator.cpp
-2022/01/23 | 2365 | dviware/dvisvgm/src/Calculator.hpp
-2022/01/23 | 2000 | dviware/dvisvgm/src/Character.hpp
-2022/01/23 | 2040 | dviware/dvisvgm/src/CharMapID.cpp
-2022/01/23 | 2541 | dviware/dvisvgm/src/CharMapID.hpp
-2022/01/23 | 8299 | dviware/dvisvgm/src/CLCommandLine.cpp
-2022/01/23 | 2891 | dviware/dvisvgm/src/CLCommandLine.hpp
-2022/01/23 | 6531 | dviware/dvisvgm/src/CLOption.hpp
-2022/01/23 | 3539 | dviware/dvisvgm/src/CMap.cpp
-2022/01/23 | 4475 | dviware/dvisvgm/src/CMap.hpp
-2022/01/23 | 5299 | dviware/dvisvgm/src/CMapManager.cpp
-2022/01/23 | 2221 | dviware/dvisvgm/src/CMapManager.hpp
-2022/01/23 | 8332 | dviware/dvisvgm/src/CMapReader.cpp
-2022/01/23 | 3080 | dviware/dvisvgm/src/CMapReader.hpp
-2022/01/23 | 19513 | dviware/dvisvgm/src/Color.cpp
-2022/01/23 | 4778 | dviware/dvisvgm/src/Color.hpp
-2022/01/23 | 4118 | dviware/dvisvgm/src/ColorSpecialHandler.cpp
-2022/01/23 | 2118 | dviware/dvisvgm/src/ColorSpecialHandler.hpp
-2022/02/26 | 7644 | dviware/dvisvgm/src/CommandLine.hpp
-2022/01/23 | 3410 | dviware/dvisvgm/src/Directory.cpp
-2022/01/23 | 2053 | dviware/dvisvgm/src/Directory.hpp
-2022/01/23 | 2290 | dviware/dvisvgm/src/DLLoader.cpp
-2022/01/23 | 2539 | dviware/dvisvgm/src/DLLoader.hpp
-2022/01/23 | 2334 | dviware/dvisvgm/src/DVIActions.hpp
-2022/01/23 | 24848 | dviware/dvisvgm/src/DVIReader.cpp
-2022/01/23 | 8202 | dviware/dvisvgm/src/DVIReader.hpp
-2022/01/23 | 18110 | dviware/dvisvgm/src/dvisvgm.cpp
-2022/02/26 | 19533 | dviware/dvisvgm/src/DvisvgmSpecialHandler.cpp
-2022/01/23 | 4603 | dviware/dvisvgm/src/DvisvgmSpecialHandler.hpp
-2022/01/23 | 12271 | dviware/dvisvgm/src/DVIToSVGActions.cpp
-2022/01/23 | 5087 | dviware/dvisvgm/src/DVIToSVGActions.hpp
-2022/01/23 | 21247 | dviware/dvisvgm/src/DVIToSVG.cpp
-2022/01/23 | 5630 | dviware/dvisvgm/src/DVIToSVG.hpp
-2022/01/23 | 10946 | dviware/dvisvgm/src/EllipticalArc.cpp
-2022/01/23 | 3100 | dviware/dvisvgm/src/EllipticalArc.hpp
-2022/01/23 | 9740 | dviware/dvisvgm/src/EmSpecialHandler.cpp
-2022/01/23 | 2930 | dviware/dvisvgm/src/EmSpecialHandler.hpp
-2022/01/23 | 3935 | dviware/dvisvgm/src/EncFile.cpp
-2022/01/23 | 2116 | dviware/dvisvgm/src/EncFile.hpp
-2022/01/23 | 3776 | dviware/dvisvgm/src/EPSFile.cpp
-2022/01/23 | 2051 | dviware/dvisvgm/src/EPSFile.hpp
-2022/01/23 | 2098 | dviware/dvisvgm/src/EPSToSVG.hpp
-2022/01/23 | 3098 | dviware/dvisvgm/src/ffwrapper.c
-2022/01/23 | 1657 | dviware/dvisvgm/src/ffwrapper.h
-2022/01/23 | 9824 | dviware/dvisvgm/src/FileFinder.cpp
-2022/01/23 | 2586 | dviware/dvisvgm/src/FileFinder.hpp
-2022/01/23 | 10407 | dviware/dvisvgm/src/FilePath.cpp
-2022/01/23 | 3434 | dviware/dvisvgm/src/FilePath.hpp
-2022/01/23 | 11115 | dviware/dvisvgm/src/FileSystem.cpp
-2022/01/23 | 3168 | dviware/dvisvgm/src/FileSystem.hpp
-2022/01/23 | 1821 | dviware/dvisvgm/src/FixWord.hpp
-2022/01/23 | 12504 | dviware/dvisvgm/src/FontCache.cpp
-2022/01/23 | 2857 | dviware/dvisvgm/src/FontCache.hpp
-2022/01/23 | 21792 | dviware/dvisvgm/src/Font.cpp
-2022/01/23 | 3488 | dviware/dvisvgm/src/FontEncoding.cpp
-2022/01/23 | 2795 | dviware/dvisvgm/src/FontEncoding.hpp
-2022/01/23 | 14146 | dviware/dvisvgm/src/FontEngine.cpp
-2022/01/23 | 3393 | dviware/dvisvgm/src/FontEngine.hpp
-2022/01/23 | 18771 | dviware/dvisvgm/src/Font.hpp
-2022/01/23 | 12225 | dviware/dvisvgm/src/FontManager.cpp
-2022/01/23 | 3939 | dviware/dvisvgm/src/FontManager.hpp
-2022/01/23 | 9307 | dviware/dvisvgm/src/FontMap.cpp
-2022/01/23 | 2909 | dviware/dvisvgm/src/FontMap.hpp
-2022/01/23 | 1984 | dviware/dvisvgm/src/FontMetrics.cpp
-2022/01/23 | 3441 | dviware/dvisvgm/src/FontMetrics.hpp
-2022/01/23 | 1805 | dviware/dvisvgm/src/FontStyle.hpp
-2022/01/23 | 10107 | dviware/dvisvgm/src/FontWriter.cpp
-2022/01/23 | 2742 | dviware/dvisvgm/src/FontWriter.hpp
-2022/01/23 | 2757 | dviware/dvisvgm/src/GFGlyphTracer.cpp
-2022/01/23 | 2583 | dviware/dvisvgm/src/GFGlyphTracer.hpp
-2022/01/23 | 10879 | dviware/dvisvgm/src/GFReader.cpp
-2022/01/23 | 3967 | dviware/dvisvgm/src/GFReader.hpp
-2022/01/23 | 3610 | dviware/dvisvgm/src/GFTracer.cpp
-2022/01/23 | 2107 | dviware/dvisvgm/src/GFTracer.hpp
-2022/01/23 | 12128 | dviware/dvisvgm/src/Ghostscript.cpp
-2022/01/23 | 4044 | dviware/dvisvgm/src/Ghostscript.hpp
-2022/01/23 | 1537 | dviware/dvisvgm/src/Glyph.hpp
-2022/01/23 | 2941 | dviware/dvisvgm/src/GlyphTracerMessages.hpp
-2022/01/23 | 27848 | dviware/dvisvgm/src/GraphicsPath.hpp
-2022/01/23 | 3609 | dviware/dvisvgm/src/HashFunction.cpp
-2022/01/23 | 2550 | dviware/dvisvgm/src/HashFunction.hpp
-2022/01/23 | 3623 | dviware/dvisvgm/src/HtmlSpecialHandler.cpp
-2022/01/23 | 2214 | dviware/dvisvgm/src/HtmlSpecialHandler.hpp
-2022/01/23 | 9665 | dviware/dvisvgm/src/HyperlinkManager.cpp
-2022/01/23 | 3986 | dviware/dvisvgm/src/HyperlinkManager.hpp
-2021/08/13 | 10028 | dviware/dvisvgm/src/iapi.h
-2021/08/13 | 4595 | dviware/dvisvgm/src/ierrors.h
-2022/01/23 | 6950 | dviware/dvisvgm/src/ImageToSVG.cpp
-2022/01/23 | 4602 | dviware/dvisvgm/src/ImageToSVG.hpp
-2022/01/23 | 3788 | dviware/dvisvgm/src/InputBuffer.cpp
-2022/01/23 | 5059 | dviware/dvisvgm/src/InputBuffer.hpp
-2022/01/23 | 12240 | dviware/dvisvgm/src/InputReader.cpp
-2022/01/23 | 4184 | dviware/dvisvgm/src/InputReader.hpp
-2022/01/23 | 4491 | dviware/dvisvgm/src/JFM.cpp
-2022/01/23 | 2166 | dviware/dvisvgm/src/JFM.hpp
-2022/01/23 | 4728 | dviware/dvisvgm/src/Length.cpp
-2022/01/23 | 4138 | dviware/dvisvgm/src/Length.hpp
-2022/01/23 | 2014 | dviware/dvisvgm/src/macros.hpp
-2022/01/23 | 7207 | dviware/dvisvgm/src/Makefile.am
-2022/02/27 | 60275 | dviware/dvisvgm/src/Makefile.in
-2022/01/23 | 8495 | dviware/dvisvgm/src/MapLine.cpp
-2022/01/23 | 3089 | dviware/dvisvgm/src/MapLine.hpp
-2022/01/23 | 16862 | dviware/dvisvgm/src/Matrix.cpp
-2022/01/23 | 4152 | dviware/dvisvgm/src/Matrix.hpp
-2022/01/23 | 2704 | dviware/dvisvgm/src/MD5HashFunction.hpp
-2022/01/23 | 7509 | dviware/dvisvgm/src/Message.cpp
-2022/01/23 | 1779 | dviware/dvisvgm/src/MessageException.hpp
-2022/01/23 | 3541 | dviware/dvisvgm/src/Message.hpp
-2022/01/23 | 5814 | dviware/dvisvgm/src/MetafontWrapper.cpp
-2022/01/23 | 1876 | dviware/dvisvgm/src/MetafontWrapper.hpp
-2022/01/23 | 3776 | dviware/dvisvgm/src/MiKTeXCom.cpp
-2022/01/23 | 1894 | dviware/dvisvgm/src/MiKTeXCom.hpp
-2022/01/23 | 2062 | dviware/dvisvgm/src/NoPsSpecialHandler.cpp
-2022/01/23 | 1999 | dviware/dvisvgm/src/NoPsSpecialHandler.hpp
-2022/01/23 | 3927 | dviware/dvisvgm/src/NumericRanges.hpp
-2022/01/23 | 2575 | dviware/dvisvgm/src/Opacity.cpp
-2022/01/23 | 3720 | dviware/dvisvgm/src/Opacity.hpp
-2022/01/23 | 8119 | dviware/dvisvgm/src/optimizer/AttributeExtractor.cpp
-2022/01/23 | 2709 | dviware/dvisvgm/src/optimizer/AttributeExtractor.hpp
-2022/02/26 | 3928 | dviware/dvisvgm/src/optimizer/ClipPathReassigner.cpp
-2022/02/26 | 1979 | dviware/dvisvgm/src/optimizer/ClipPathReassigner.hpp
-2022/01/23 | 4213 | dviware/dvisvgm/src/optimizer/DependencyGraph.hpp
-2022/01/23 | 6745 | dviware/dvisvgm/src/optimizer/GroupCollapser.cpp
-2022/01/23 | 2181 | dviware/dvisvgm/src/optimizer/GroupCollapser.hpp
-2022/02/27 | 634 | dviware/dvisvgm/src/optimizer/Makefile.am
-2022/02/27 | 23211 | dviware/dvisvgm/src/optimizer/Makefile.in
-2022/01/23 | 1642 | dviware/dvisvgm/src/optimizer/OptimizerModule.hpp
-2022/01/23 | 3192 | dviware/dvisvgm/src/optimizer/RedundantElementRemover.cpp
-2022/01/23 | 1644 | dviware/dvisvgm/src/optimizer/RedundantElementRemover.hpp
-2022/02/26 | 4738 | dviware/dvisvgm/src/optimizer/SVGOptimizer.cpp
-2022/01/23 | 2297 | dviware/dvisvgm/src/optimizer/SVGOptimizer.hpp
-2022/01/23 | 4179 | dviware/dvisvgm/src/optimizer/TextSimplifier.cpp
-2022/01/23 | 1699 | dviware/dvisvgm/src/optimizer/TextSimplifier.hpp
-2022/01/23 | 6846 | dviware/dvisvgm/src/optimizer/TransformSimplifier.cpp
-2022/01/23 | 1856 | dviware/dvisvgm/src/optimizer/TransformSimplifier.hpp
-2022/01/23 | 2013 | dviware/dvisvgm/src/optimizer/WSNodeRemover.cpp
-2022/01/23 | 1687 | dviware/dvisvgm/src/optimizer/WSNodeRemover.hpp
-2022/01/23 | 2067 | dviware/dvisvgm/src/options.dtd
-2022/01/23 | 8986 | dviware/dvisvgm/src/options.xml
-2022/01/23 | 2829 | dviware/dvisvgm/src/PageRanges.cpp
-2022/01/23 | 1676 | dviware/dvisvgm/src/PageRanges.hpp
-2022/01/23 | 5332 | dviware/dvisvgm/src/PageSize.cpp
-2022/01/23 | 2092 | dviware/dvisvgm/src/PageSize.hpp
-2022/01/23 | 4043 | dviware/dvisvgm/src/Pair.hpp
-2022/01/23 | 4042 | dviware/dvisvgm/src/PapersizeSpecialHandler.cpp
-2022/01/23 | 2514 | dviware/dvisvgm/src/PapersizeSpecialHandler.hpp
-2022/01/23 | 13145 | dviware/dvisvgm/src/PathClipper.cpp
-2022/01/23 | 2432 | dviware/dvisvgm/src/PathClipper.hpp
-2022/01/23 | 15422 | dviware/dvisvgm/src/PDFParser.cpp
-2022/01/23 | 5841 | dviware/dvisvgm/src/PDFParser.hpp
-2022/01/23 | 10418 | dviware/dvisvgm/src/PdfSpecialHandler.cpp
-2022/01/23 | 2836 | dviware/dvisvgm/src/PdfSpecialHandler.hpp
-2022/01/23 | 2548 | dviware/dvisvgm/src/PDFToSVG.hpp
-2022/01/23 | 1913 | dviware/dvisvgm/src/PreScanDVIReader.cpp
-2022/01/23 | 1886 | dviware/dvisvgm/src/PreScanDVIReader.hpp
-2022/01/23 | 10029 | dviware/dvisvgm/src/Process.cpp
-2022/01/23 | 1815 | dviware/dvisvgm/src/Process.hpp
-2022/01/23 | 12876 | dviware/dvisvgm/src/psdefs.cpp
-2022/01/23 | 1806 | dviware/dvisvgm/src/PSFilter.hpp
-2022/01/23 | 17287 | dviware/dvisvgm/src/PSInterpreter.cpp
-2022/01/23 | 7037 | dviware/dvisvgm/src/PSInterpreter.hpp
-2022/02/26 | 6500 | dviware/dvisvgm/src/PSPattern.cpp
-2022/01/23 | 4059 | dviware/dvisvgm/src/PSPattern.hpp
-2022/01/23 | 4494 | dviware/dvisvgm/src/PSPreviewFilter.cpp
-2022/01/23 | 2605 | dviware/dvisvgm/src/PSPreviewFilter.hpp
-2022/02/26 | 50001 | dviware/dvisvgm/src/PsSpecialHandler.cpp
-2022/02/26 | 10025 | dviware/dvisvgm/src/PsSpecialHandler.hpp
-2022/01/23 | 7053 | dviware/dvisvgm/src/RangeMap.cpp
-2022/01/23 | 5180 | dviware/dvisvgm/src/RangeMap.hpp
-2022/01/23 | 2871 | dviware/dvisvgm/src/ShadingPatch.cpp
-2022/01/23 | 3150 | dviware/dvisvgm/src/ShadingPatch.hpp
-2022/01/23 | 4203 | dviware/dvisvgm/src/SignalHandler.cpp
-2022/01/23 | 2180 | dviware/dvisvgm/src/SignalHandler.hpp
-2022/01/23 | 4623 | dviware/dvisvgm/src/SourceInput.cpp
-2022/01/23 | 2388 | dviware/dvisvgm/src/SourceInput.hpp
-2022/01/23 | 4494 | dviware/dvisvgm/src/SpecialActions.hpp
-2022/01/23 | 2512 | dviware/dvisvgm/src/SpecialHandler.hpp
-2022/01/23 | 6511 | dviware/dvisvgm/src/SpecialManager.cpp
-2022/01/23 | 2958 | dviware/dvisvgm/src/SpecialManager.hpp
-2022/01/23 | 5021 | dviware/dvisvgm/src/StreamReader.cpp
-2022/01/23 | 2975 | dviware/dvisvgm/src/StreamReader.hpp
-2022/01/23 | 3768 | dviware/dvisvgm/src/StreamWriter.cpp
-2022/01/23 | 2196 | dviware/dvisvgm/src/StreamWriter.hpp
-2022/01/23 | 9256 | dviware/dvisvgm/src/Subfont.cpp
-2022/01/23 | 3521 | dviware/dvisvgm/src/Subfont.hpp
-2022/01/23 | 3676 | dviware/dvisvgm/src/SVGCharHandler.cpp
-2022/01/23 | 2024 | dviware/dvisvgm/src/SVGCharHandlerFactory.cpp
-2022/01/23 | 1645 | dviware/dvisvgm/src/SVGCharHandlerFactory.hpp
-2022/01/23 | 4471 | dviware/dvisvgm/src/SVGCharHandler.hpp
-2022/01/23 | 5814 | dviware/dvisvgm/src/SVGCharPathHandler.cpp
-2022/01/23 | 2455 | dviware/dvisvgm/src/SVGCharPathHandler.hpp
-2022/01/23 | 3959 | dviware/dvisvgm/src/SVGCharTspanTextHandler.cpp
-2022/01/23 | 2041 | dviware/dvisvgm/src/SVGCharTspanTextHandler.hpp
-2022/01/23 | 4511 | dviware/dvisvgm/src/SVGElement.cpp
-2022/01/23 | 2803 | dviware/dvisvgm/src/SVGElement.hpp
-2022/01/23 | 6479 | dviware/dvisvgm/src/SVGOutput.cpp
-2022/01/23 | 3729 | dviware/dvisvgm/src/SVGOutput.hpp
-2022/01/23 | 2182 | dviware/dvisvgm/src/SVGSingleCharTextHandler.cpp
-2022/01/23 | 1784 | dviware/dvisvgm/src/SVGSingleCharTextHandler.hpp
-2022/02/26 | 12106 | dviware/dvisvgm/src/SVGTree.cpp
-2022/01/23 | 4721 | dviware/dvisvgm/src/SVGTree.hpp
-2022/01/23 | 2005 | dviware/dvisvgm/src/System.cpp
-2022/01/23 | 1511 | dviware/dvisvgm/src/System.hpp
-2022/01/23 | 21248 | dviware/dvisvgm/src/TensorProductPatch.cpp
-2022/01/23 | 5274 | dviware/dvisvgm/src/TensorProductPatch.hpp
-2022/01/23 | 6113 | dviware/dvisvgm/src/Terminal.cpp
-2022/01/23 | 2284 | dviware/dvisvgm/src/Terminal.hpp
-2022/01/23 | 7079 | dviware/dvisvgm/src/TFM.cpp
-2022/01/23 | 3519 | dviware/dvisvgm/src/TFM.hpp
-2022/01/23 | 4761 | dviware/dvisvgm/src/ToUnicodeMap.cpp
-2022/01/23 | 1844 | dviware/dvisvgm/src/ToUnicodeMap.hpp
-2022/01/23 | 12940 | dviware/dvisvgm/src/TpicSpecialHandler.cpp
-2022/01/23 | 2613 | dviware/dvisvgm/src/TpicSpecialHandler.hpp
-2022/01/23 | 8354 | dviware/dvisvgm/src/TriangularPatch.cpp
-2022/01/23 | 3049 | dviware/dvisvgm/src/TriangularPatch.hpp
-2022/01/23 | 7108 | dviware/dvisvgm/src/TrueTypeFont.cpp
-2022/01/23 | 3275 | dviware/dvisvgm/src/TrueTypeFont.hpp
-2022/01/23 | 4167 | dviware/dvisvgm/src/TTFAutohint.cpp
-2022/01/23 | 2090 | dviware/dvisvgm/src/TTFAutohint.hpp
-2022/01/23 | 8002 | dviware/dvisvgm/src/Unicode.cpp
-2022/01/23 | 1860 | dviware/dvisvgm/src/Unicode.hpp
-2022/01/23 | 7162 | dviware/dvisvgm/src/utility.cpp
-2022/01/23 | 5772 | dviware/dvisvgm/src/utility.hpp
-2022/01/23 | 3439 | dviware/dvisvgm/src/VectorIterator.hpp
-2022/01/23 | 2949 | dviware/dvisvgm/src/VectorStream.hpp
-2022/01/23 | 1577 | dviware/dvisvgm/src/version.hpp.in
-2022/01/23 | 1911 | dviware/dvisvgm/src/VFActions.hpp
-2022/01/23 | 6570 | dviware/dvisvgm/src/VFReader.cpp
-2022/01/23 | 2443 | dviware/dvisvgm/src/VFReader.hpp
-2022/01/23 | 1604 | dviware/dvisvgm/src/windows.hpp
-2022/01/23 | 2237 | dviware/dvisvgm/src/XMLDocument.cpp
-2022/01/23 | 2053 | dviware/dvisvgm/src/XMLDocument.hpp
-2022/01/23 | 15641 | dviware/dvisvgm/src/XMLNode.cpp
-2022/01/23 | 9963 | dviware/dvisvgm/src/XMLNode.hpp
-2022/01/23 | 3036 | dviware/dvisvgm/src/XMLString.cpp
-2022/01/23 | 1887 | dviware/dvisvgm/src/XMLString.hpp
-2022/01/23 | 4735 | dviware/dvisvgm/src/XXHashFunction.hpp
-2022/01/23 | 5940 | dviware/dvisvgm/src/ZLibOutputStream.hpp
-2021/08/13 | 4642 | dviware/dvisvgm/test-driver
-2022/01/23 | 6075 | dviware/dvisvgm/tests/BezierTest.cpp
-2022/01/23 | 2704 | dviware/dvisvgm/tests/BitmapTest.cpp
-2022/02/26 | 6078 | dviware/dvisvgm/tests/BoundingBoxTest.cpp
-2022/01/23 | 3688 | dviware/dvisvgm/tests/CalculatorTest.cpp
-2022/01/23 | 1216 | dviware/dvisvgm/tests/check-conv
-2022/01/23 | 2974 | dviware/dvisvgm/tests/CMapManagerTest.cpp
-2022/01/23 | 4223 | dviware/dvisvgm/tests/CMapReaderTest.cpp
-2022/01/23 | 4980 | dviware/dvisvgm/tests/CMapTest.cpp
-2022/01/23 | 4702 | dviware/dvisvgm/tests/ColorSpecialTest.cpp
-2022/01/23 | 6942 | dviware/dvisvgm/tests/ColorTest.cpp
-2022/01/23 | 8439 | dviware/dvisvgm/tests/CommandLineTest.cpp
-2021/08/13 | 2508 | dviware/dvisvgm/tests/data/cidjmgr0-h.tfm
-2021/08/13 | 24244 | dviware/dvisvgm/tests/data/cmr10.600gf
-2021/08/13 | 35752 | dviware/dvisvgm/tests/data/cmr10.pfb
-2021/08/13 | 1296 | dviware/dvisvgm/tests/data/cmr10.tfm
-2021/08/13 | 18351 | dviware/dvisvgm/tests/data/dvipdfm_test.map
-2021/08/13 | 15594 | dviware/dvisvgm/tests/data/dvips_test.map
-2021/08/13 | 2072 | dviware/dvisvgm/tests/data/frktest.dvi
-2021/08/13 | 337419 | dviware/dvisvgm/tests/data/frktest-nf-cmp.svg
-2021/08/13 | 163979 | dviware/dvisvgm/tests/data/frktest-wf-cmp.svg
-2021/08/13 | 63012 | dviware/dvisvgm/tests/data/lmmono12-regular.otf
-2022/01/23 | 452 | dviware/dvisvgm/tests/data/Makefile.am
-2022/02/27 | 13740 | dviware/dvisvgm/tests/data/Makefile.in
-2021/08/13 | 1207 | dviware/dvisvgm/tests/data/ot1.cmap
-2021/08/13 | 1320 | dviware/dvisvgm/tests/data/sample.dvi
-2021/08/13 | 60654 | dviware/dvisvgm/tests/data/sample-nf-cmp.svg
-2021/08/13 | 17637 | dviware/dvisvgm/tests/data/sample.sfd
-2021/08/13 | 1016 | dviware/dvisvgm/tests/data/sample_v2.dvi
-2021/08/13 | 256 | dviware/dvisvgm/tests/data/sample_v3.dvi
-2021/08/13 | 46985 | dviware/dvisvgm/tests/data/sample-wf-cmp.svg
-2022/01/23 | 2512 | dviware/dvisvgm/tests/DependencyGraphTest.cpp
-2022/01/23 | 2773 | dviware/dvisvgm/tests/DirectoryTest.cpp
-2022/01/23 | 33210 | dviware/dvisvgm/tests/DVIReaderTest.cpp
-2022/02/26 | 13291 | dviware/dvisvgm/tests/DvisvgmSpecialTest.cpp
-2022/01/23 | 5850 | dviware/dvisvgm/tests/EllipticalArcTest.cpp
-2022/02/26 | 7489 | dviware/dvisvgm/tests/EmSpecialTest.cpp
-2022/01/23 | 3124 | dviware/dvisvgm/tests/FileFinderTest.cpp
-2022/01/23 | 4004 | dviware/dvisvgm/tests/FilePathTest.cpp
-2022/01/23 | 3899 | dviware/dvisvgm/tests/FileSystemTest.cpp
-2022/01/23 | 5070 | dviware/dvisvgm/tests/FontCacheTest.cpp
-2022/01/23 | 3875 | dviware/dvisvgm/tests/FontManagerTest.cpp
-2022/01/23 | 2850 | dviware/dvisvgm/tests/FontMapTest.cpp
-2022/01/23 | 2026 | dviware/dvisvgm/tests/genhashcheck.py
-2022/01/23 | 4645 | dviware/dvisvgm/tests/GFGlyphTracerTest.cpp
-2022/01/23 | 12993 | dviware/dvisvgm/tests/GFReaderTest.cpp
-2022/01/23 | 2083 | dviware/dvisvgm/tests/GhostscriptTest.cpp
-2022/01/23 | 7230 | dviware/dvisvgm/tests/GraphicsPathTest.cpp
-2021/10/20 | 14647 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-death-test.h
-2021/10/20 | 94331 | dviware/dvisvgm/tests/gtest/include/gtest/gtest.h
-2021/10/20 | 33126 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-matchers.h
-2021/10/20 | 8045 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-message.h
-2021/10/20 | 22588 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-param-test.h
-2021/10/20 | 14865 | dviware/dvisvgm/tests/gtest/include/gtest/gtest_pred_impl.h
-2021/10/20 | 35935 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-printers.h
-2021/10/20 | 2534 | dviware/dvisvgm/tests/gtest/include/gtest/gtest_prod.h
-2021/10/20 | 10112 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-spi.h
-2021/10/20 | 6868 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-test-part.h
-2021/10/20 | 15881 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-typed-test.h
-2021/10/20 | 1858 | dviware/dvisvgm/tests/gtest/include/gtest/internal/custom/gtest.h
-2021/10/20 | 1873 | dviware/dvisvgm/tests/gtest/include/gtest/internal/custom/gtest-port.h
-2021/10/20 | 2094 | dviware/dvisvgm/tests/gtest/include/gtest/internal/custom/gtest-printers.h
-2021/10/20 | 13451 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-death-test-internal.h
-2021/10/20 | 9780 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-filepath.h
-2021/10/20 | 61622 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-internal.h
-2021/08/13 | 8401 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-linked_ptr.h
-2021/08/13 | 218498 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-param-util-generated.h
-2021/10/20 | 35140 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-param-util.h
-2021/10/20 | 4157 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-port-arch.h
-2021/10/20 | 85257 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-port.h
-2021/10/20 | 7228 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-string.h
-2021/08/13 | 28605 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-tuple.h
-2021/10/20 | 6174 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-type-util.h
-2021/08/13 | 1475 | dviware/dvisvgm/tests/gtest/LICENSE
-2021/08/13 | 2160 | dviware/dvisvgm/tests/gtest/src/gtest-all.cc
-2021/10/20 | 248773 | dviware/dvisvgm/tests/gtest/src/gtest.cc
-2021/10/20 | 62109 | dviware/dvisvgm/tests/gtest/src/gtest-death-test.cc
-2021/10/20 | 14081 | dviware/dvisvgm/tests/gtest/src/gtest-filepath.cc
-2021/10/20 | 47373 | dviware/dvisvgm/tests/gtest/src/gtest-internal-inl.h
-2021/10/20 | 1968 | dviware/dvisvgm/tests/gtest/src/gtest_main.cc
-2021/10/20 | 3723 | dviware/dvisvgm/tests/gtest/src/gtest-matchers.cc
-2021/10/20 | 48099 | dviware/dvisvgm/tests/gtest/src/gtest-port.cc
-2021/10/20 | 17269 | dviware/dvisvgm/tests/gtest/src/gtest-printers.cc
-2021/10/20 | 4126 | dviware/dvisvgm/tests/gtest/src/gtest-test-part.cc
-2021/10/20 | 3780 | dviware/dvisvgm/tests/gtest/src/gtest-typed-test.cc
-2022/01/23 | 5568 | dviware/dvisvgm/tests/HashFunctionTest.cpp
-2022/01/23 | 4034 | dviware/dvisvgm/tests/JFMReaderTest.cpp
-2022/01/23 | 7803 | dviware/dvisvgm/tests/LengthTest.cpp
-2022/01/23 | 15639 | dviware/dvisvgm/tests/Makefile.am
-2022/02/27 | 256038 | dviware/dvisvgm/tests/Makefile.in
-2022/01/23 | 5795 | dviware/dvisvgm/tests/MapLineTest.cpp
-2022/01/23 | 8332 | dviware/dvisvgm/tests/MatrixTest.cpp
-2022/01/23 | 2315 | dviware/dvisvgm/tests/MessageExceptionTest.cpp
-2022/01/23 | 4799 | dviware/dvisvgm/tests/normalize.xsl
-2022/01/23 | 4640 | dviware/dvisvgm/tests/PageRagesTest.cpp
-2022/01/23 | 2398 | dviware/dvisvgm/tests/PageSizeTest.cpp
-2022/01/23 | 4193 | dviware/dvisvgm/tests/PairTest.cpp
-2022/02/26 | 4926 | dviware/dvisvgm/tests/PapersizeSpecialTest.cpp
-2022/01/23 | 8452 | dviware/dvisvgm/tests/PDFParserTest.cpp
-2022/01/23 | 9574 | dviware/dvisvgm/tests/PSInterpreterTest.cpp
-2022/01/23 | 6392 | dviware/dvisvgm/tests/RangeMapTest.cpp
-2022/01/23 | 3629 | dviware/dvisvgm/tests/ShadingPatchTest.cpp
-2022/01/23 | 3801 | dviware/dvisvgm/tests/SpecialManagerTest.cpp
-2022/01/23 | 5392 | dviware/dvisvgm/tests/SplittedCharInputBufferTest.cpp
-2022/01/23 | 7499 | dviware/dvisvgm/tests/StreamInputBufferTest.cpp
-2022/01/23 | 4178 | dviware/dvisvgm/tests/StreamReaderTest.cpp
-2022/01/23 | 3420 | dviware/dvisvgm/tests/StreamWriterTest.cpp
-2022/01/23 | 4460 | dviware/dvisvgm/tests/StringMatcherTest.cpp
-2022/01/23 | 3363 | dviware/dvisvgm/tests/SubfontTest.cpp
-2022/01/23 | 6521 | dviware/dvisvgm/tests/SVGOutputTest.cpp
-2022/01/23 | 12810 | dviware/dvisvgm/tests/TensorProductPatchTest.cpp
-2022/01/23 | 1999 | dviware/dvisvgm/tests/testmain.cpp
-2021/10/20 | 198 | dviware/dvisvgm/tests/testutil.hpp
-2022/01/23 | 3348 | dviware/dvisvgm/tests/TFMReaderTest.cpp
-2022/01/23 | 2501 | dviware/dvisvgm/tests/ToUnicodeMapTest.cpp
-2022/01/23 | 13772 | dviware/dvisvgm/tests/TpicSpecialTest.cpp
-2022/01/23 | 7066 | dviware/dvisvgm/tests/TriangularPatchTest.cpp
-2022/01/23 | 6084 | dviware/dvisvgm/tests/UnicodeTest.cpp
-2022/01/23 | 5194 | dviware/dvisvgm/tests/UtilityTest.cpp
-2022/01/23 | 3785 | dviware/dvisvgm/tests/VectorIteratorTest.cpp
-2022/01/23 | 2276 | dviware/dvisvgm/tests/VectorStreamTest.cpp
-2022/01/23 | 15061 | dviware/dvisvgm/tests/XMLNodeTest.cpp
-2022/01/23 | 3034 | dviware/dvisvgm/tests/XMLStringTest.cpp
-2022/02/27 | 3571467 | dviware/dvisvgm.zip
+2019/03/09 | 324151 | dviware/dvisvgm/ltmain.sh
+2019/03/09 | 2105 | dviware/dvisvgm/m4/ax_check_compile_flag.m4
+2017/10/30 | 11836 | dviware/dvisvgm/m4/ax_code_coverage.m4
+2022/04/20 | 20749 | dviware/dvisvgm/m4/ax_cxx_compile_stdcxx.m4
+2019/03/09 | 305862 | dviware/dvisvgm/m4/libtool.m4
+2019/03/09 | 6140 | dviware/dvisvgm/m4/lt~obsolete.m4
+2019/03/09 | 14514 | dviware/dvisvgm/m4/ltoptions.m4
+2019/03/09 | 4384 | dviware/dvisvgm/m4/ltsugar.m4
+2019/03/09 | 699 | dviware/dvisvgm/m4/ltversion.m4
+2019/03/09 | 95 | dviware/dvisvgm/m4/Makefile.am
+2022/04/20 | 13502 | dviware/dvisvgm/m4/Makefile.in
+2022/01/18 | 744 | dviware/dvisvgm/Makefile.am
+2022/04/20 | 27920 | dviware/dvisvgm/Makefile.in
+2019/03/09 | 6878 | dviware/dvisvgm/missing
+2022/04/20 | 39657 | dviware/dvisvgm/NEWS
+2022/01/18 | 6173 | dviware/dvisvgm/README
+2022/01/18 | 158418 | dviware/dvisvgm/src/AGLTable.hpp
+2022/01/18 | 15777 | dviware/dvisvgm/src/BasicDVIReader.cpp
+2022/01/18 | 5248 | dviware/dvisvgm/src/BasicDVIReader.hpp
+2022/01/18 | 9132 | dviware/dvisvgm/src/Bezier.cpp
+2022/01/18 | 2502 | dviware/dvisvgm/src/Bezier.hpp
+2022/01/18 | 3164 | dviware/dvisvgm/src/BgColorSpecialHandler.cpp
+2022/01/18 | 2228 | dviware/dvisvgm/src/BgColorSpecialHandler.hpp
+2022/01/18 | 4889 | dviware/dvisvgm/src/Bitmap.cpp
+2022/01/18 | 4166 | dviware/dvisvgm/src/Bitmap.hpp
+2022/03/14 | 8299 | dviware/dvisvgm/src/BoundingBox.cpp
+2022/03/14 | 3970 | dviware/dvisvgm/src/BoundingBox.hpp
+2022/01/18 | 6779 | dviware/dvisvgm/src/Calculator.cpp
+2022/01/18 | 2365 | dviware/dvisvgm/src/Calculator.hpp
+2022/01/18 | 2000 | dviware/dvisvgm/src/Character.hpp
+2022/01/18 | 2040 | dviware/dvisvgm/src/CharMapID.cpp
+2022/01/18 | 2541 | dviware/dvisvgm/src/CharMapID.hpp
+2022/01/18 | 8299 | dviware/dvisvgm/src/CLCommandLine.cpp
+2022/01/18 | 2891 | dviware/dvisvgm/src/CLCommandLine.hpp
+2022/01/18 | 6531 | dviware/dvisvgm/src/CLOption.hpp
+2022/01/18 | 3539 | dviware/dvisvgm/src/CMap.cpp
+2022/01/18 | 4475 | dviware/dvisvgm/src/CMap.hpp
+2022/01/18 | 5299 | dviware/dvisvgm/src/CMapManager.cpp
+2022/01/18 | 2221 | dviware/dvisvgm/src/CMapManager.hpp
+2022/01/18 | 8332 | dviware/dvisvgm/src/CMapReader.cpp
+2022/01/18 | 3080 | dviware/dvisvgm/src/CMapReader.hpp
+2022/01/18 | 19513 | dviware/dvisvgm/src/Color.cpp
+2022/01/18 | 4778 | dviware/dvisvgm/src/Color.hpp
+2022/01/18 | 4118 | dviware/dvisvgm/src/ColorSpecialHandler.cpp
+2022/01/18 | 2118 | dviware/dvisvgm/src/ColorSpecialHandler.hpp
+2022/01/20 | 7644 | dviware/dvisvgm/src/CommandLine.hpp
+2022/01/18 | 3410 | dviware/dvisvgm/src/Directory.cpp
+2022/01/18 | 2053 | dviware/dvisvgm/src/Directory.hpp
+2022/01/18 | 2290 | dviware/dvisvgm/src/DLLoader.cpp
+2022/01/18 | 2539 | dviware/dvisvgm/src/DLLoader.hpp
+2022/01/18 | 2334 | dviware/dvisvgm/src/DVIActions.hpp
+2022/01/18 | 24848 | dviware/dvisvgm/src/DVIReader.cpp
+2022/01/18 | 8202 | dviware/dvisvgm/src/DVIReader.hpp
+2022/01/18 | 18110 | dviware/dvisvgm/src/dvisvgm.cpp
+2022/02/22 | 19533 | dviware/dvisvgm/src/DvisvgmSpecialHandler.cpp
+2022/01/18 | 4603 | dviware/dvisvgm/src/DvisvgmSpecialHandler.hpp
+2022/01/18 | 12271 | dviware/dvisvgm/src/DVIToSVGActions.cpp
+2022/01/18 | 5087 | dviware/dvisvgm/src/DVIToSVGActions.hpp
+2022/01/18 | 21247 | dviware/dvisvgm/src/DVIToSVG.cpp
+2022/01/18 | 5630 | dviware/dvisvgm/src/DVIToSVG.hpp
+2022/01/18 | 10946 | dviware/dvisvgm/src/EllipticalArc.cpp
+2022/01/18 | 3100 | dviware/dvisvgm/src/EllipticalArc.hpp
+2022/01/18 | 9740 | dviware/dvisvgm/src/EmSpecialHandler.cpp
+2022/01/18 | 2930 | dviware/dvisvgm/src/EmSpecialHandler.hpp
+2022/01/18 | 3935 | dviware/dvisvgm/src/EncFile.cpp
+2022/01/18 | 2116 | dviware/dvisvgm/src/EncFile.hpp
+2022/01/18 | 3776 | dviware/dvisvgm/src/EPSFile.cpp
+2022/01/18 | 2051 | dviware/dvisvgm/src/EPSFile.hpp
+2022/01/18 | 2098 | dviware/dvisvgm/src/EPSToSVG.hpp
+2022/01/18 | 3098 | dviware/dvisvgm/src/ffwrapper.c
+2022/01/18 | 1657 | dviware/dvisvgm/src/ffwrapper.h
+2022/01/18 | 9824 | dviware/dvisvgm/src/FileFinder.cpp
+2022/01/18 | 2586 | dviware/dvisvgm/src/FileFinder.hpp
+2022/01/18 | 10407 | dviware/dvisvgm/src/FilePath.cpp
+2022/01/18 | 3434 | dviware/dvisvgm/src/FilePath.hpp
+2022/01/18 | 11115 | dviware/dvisvgm/src/FileSystem.cpp
+2022/01/18 | 3168 | dviware/dvisvgm/src/FileSystem.hpp
+2022/01/18 | 1821 | dviware/dvisvgm/src/FixWord.hpp
+2022/01/18 | 12504 | dviware/dvisvgm/src/FontCache.cpp
+2022/01/18 | 2857 | dviware/dvisvgm/src/FontCache.hpp
+2022/01/18 | 21792 | dviware/dvisvgm/src/Font.cpp
+2022/01/18 | 3488 | dviware/dvisvgm/src/FontEncoding.cpp
+2022/01/18 | 2795 | dviware/dvisvgm/src/FontEncoding.hpp
+2022/01/18 | 14146 | dviware/dvisvgm/src/FontEngine.cpp
+2022/01/18 | 3393 | dviware/dvisvgm/src/FontEngine.hpp
+2022/01/18 | 18771 | dviware/dvisvgm/src/Font.hpp
+2022/01/18 | 12225 | dviware/dvisvgm/src/FontManager.cpp
+2022/01/18 | 3939 | dviware/dvisvgm/src/FontManager.hpp
+2022/01/18 | 9307 | dviware/dvisvgm/src/FontMap.cpp
+2022/01/18 | 2909 | dviware/dvisvgm/src/FontMap.hpp
+2022/01/18 | 1984 | dviware/dvisvgm/src/FontMetrics.cpp
+2022/01/18 | 3441 | dviware/dvisvgm/src/FontMetrics.hpp
+2022/01/18 | 1805 | dviware/dvisvgm/src/FontStyle.hpp
+2022/01/18 | 10107 | dviware/dvisvgm/src/FontWriter.cpp
+2022/01/18 | 2742 | dviware/dvisvgm/src/FontWriter.hpp
+2022/01/18 | 2757 | dviware/dvisvgm/src/GFGlyphTracer.cpp
+2022/01/18 | 2583 | dviware/dvisvgm/src/GFGlyphTracer.hpp
+2022/01/18 | 10879 | dviware/dvisvgm/src/GFReader.cpp
+2022/01/18 | 3967 | dviware/dvisvgm/src/GFReader.hpp
+2022/01/18 | 3610 | dviware/dvisvgm/src/GFTracer.cpp
+2022/01/18 | 2107 | dviware/dvisvgm/src/GFTracer.hpp
+2022/01/18 | 12128 | dviware/dvisvgm/src/Ghostscript.cpp
+2022/01/18 | 4044 | dviware/dvisvgm/src/Ghostscript.hpp
+2022/01/18 | 1537 | dviware/dvisvgm/src/Glyph.hpp
+2022/01/18 | 2941 | dviware/dvisvgm/src/GlyphTracerMessages.hpp
+2022/01/18 | 27848 | dviware/dvisvgm/src/GraphicsPath.hpp
+2022/01/18 | 3609 | dviware/dvisvgm/src/HashFunction.cpp
+2022/01/18 | 2550 | dviware/dvisvgm/src/HashFunction.hpp
+2022/01/18 | 3623 | dviware/dvisvgm/src/HtmlSpecialHandler.cpp
+2022/01/18 | 2214 | dviware/dvisvgm/src/HtmlSpecialHandler.hpp
+2022/01/18 | 9665 | dviware/dvisvgm/src/HyperlinkManager.cpp
+2022/01/18 | 3986 | dviware/dvisvgm/src/HyperlinkManager.hpp
+2016/09/03 | 10028 | dviware/dvisvgm/src/iapi.h
+2016/09/03 | 4595 | dviware/dvisvgm/src/ierrors.h
+2022/03/14 | 6971 | dviware/dvisvgm/src/ImageToSVG.cpp
+2022/01/18 | 4602 | dviware/dvisvgm/src/ImageToSVG.hpp
+2022/01/18 | 3788 | dviware/dvisvgm/src/InputBuffer.cpp
+2022/01/18 | 5059 | dviware/dvisvgm/src/InputBuffer.hpp
+2022/01/18 | 12240 | dviware/dvisvgm/src/InputReader.cpp
+2022/01/18 | 4184 | dviware/dvisvgm/src/InputReader.hpp
+2022/01/18 | 4491 | dviware/dvisvgm/src/JFM.cpp
+2022/01/18 | 2166 | dviware/dvisvgm/src/JFM.hpp
+2022/01/18 | 4728 | dviware/dvisvgm/src/Length.cpp
+2022/01/18 | 4138 | dviware/dvisvgm/src/Length.hpp
+2022/01/18 | 2014 | dviware/dvisvgm/src/macros.hpp
+2022/01/18 | 7207 | dviware/dvisvgm/src/Makefile.am
+2022/04/20 | 60275 | dviware/dvisvgm/src/Makefile.in
+2022/01/18 | 8495 | dviware/dvisvgm/src/MapLine.cpp
+2022/01/18 | 3089 | dviware/dvisvgm/src/MapLine.hpp
+2022/01/18 | 16862 | dviware/dvisvgm/src/Matrix.cpp
+2022/01/18 | 4152 | dviware/dvisvgm/src/Matrix.hpp
+2022/01/18 | 2704 | dviware/dvisvgm/src/MD5HashFunction.hpp
+2022/01/18 | 7509 | dviware/dvisvgm/src/Message.cpp
+2022/01/18 | 1779 | dviware/dvisvgm/src/MessageException.hpp
+2022/01/18 | 3541 | dviware/dvisvgm/src/Message.hpp
+2022/01/18 | 5814 | dviware/dvisvgm/src/MetafontWrapper.cpp
+2022/01/18 | 1876 | dviware/dvisvgm/src/MetafontWrapper.hpp
+2022/01/18 | 3776 | dviware/dvisvgm/src/MiKTeXCom.cpp
+2022/01/18 | 1894 | dviware/dvisvgm/src/MiKTeXCom.hpp
+2022/01/18 | 2062 | dviware/dvisvgm/src/NoPsSpecialHandler.cpp
+2022/01/18 | 1999 | dviware/dvisvgm/src/NoPsSpecialHandler.hpp
+2022/01/18 | 3927 | dviware/dvisvgm/src/NumericRanges.hpp
+2022/01/18 | 2575 | dviware/dvisvgm/src/Opacity.cpp
+2022/01/18 | 3720 | dviware/dvisvgm/src/Opacity.hpp
+2022/01/18 | 8119 | dviware/dvisvgm/src/optimizer/AttributeExtractor.cpp
+2022/01/18 | 2709 | dviware/dvisvgm/src/optimizer/AttributeExtractor.hpp
+2022/03/14 | 3928 | dviware/dvisvgm/src/optimizer/ClipPathReassigner.cpp
+2022/03/14 | 1979 | dviware/dvisvgm/src/optimizer/ClipPathReassigner.hpp
+2022/01/18 | 4213 | dviware/dvisvgm/src/optimizer/DependencyGraph.hpp
+2022/01/18 | 6745 | dviware/dvisvgm/src/optimizer/GroupCollapser.cpp
+2022/01/18 | 2181 | dviware/dvisvgm/src/optimizer/GroupCollapser.hpp
+2022/03/14 | 634 | dviware/dvisvgm/src/optimizer/Makefile.am
+2022/04/20 | 23211 | dviware/dvisvgm/src/optimizer/Makefile.in
+2022/01/18 | 1642 | dviware/dvisvgm/src/optimizer/OptimizerModule.hpp
+2022/01/18 | 3192 | dviware/dvisvgm/src/optimizer/RedundantElementRemover.cpp
+2022/01/18 | 1644 | dviware/dvisvgm/src/optimizer/RedundantElementRemover.hpp
+2022/03/14 | 4738 | dviware/dvisvgm/src/optimizer/SVGOptimizer.cpp
+2022/01/18 | 2297 | dviware/dvisvgm/src/optimizer/SVGOptimizer.hpp
+2022/01/18 | 4179 | dviware/dvisvgm/src/optimizer/TextSimplifier.cpp
+2022/01/18 | 1699 | dviware/dvisvgm/src/optimizer/TextSimplifier.hpp
+2022/01/18 | 6846 | dviware/dvisvgm/src/optimizer/TransformSimplifier.cpp
+2022/01/18 | 1856 | dviware/dvisvgm/src/optimizer/TransformSimplifier.hpp
+2022/01/18 | 2013 | dviware/dvisvgm/src/optimizer/WSNodeRemover.cpp
+2022/01/18 | 1687 | dviware/dvisvgm/src/optimizer/WSNodeRemover.hpp
+2022/01/18 | 2067 | dviware/dvisvgm/src/options.dtd
+2022/01/18 | 8986 | dviware/dvisvgm/src/options.xml
+2022/01/18 | 2829 | dviware/dvisvgm/src/PageRanges.cpp
+2022/01/18 | 1676 | dviware/dvisvgm/src/PageRanges.hpp
+2022/01/18 | 5332 | dviware/dvisvgm/src/PageSize.cpp
+2022/01/18 | 2092 | dviware/dvisvgm/src/PageSize.hpp
+2022/01/18 | 4043 | dviware/dvisvgm/src/Pair.hpp
+2022/01/18 | 4042 | dviware/dvisvgm/src/PapersizeSpecialHandler.cpp
+2022/01/18 | 2514 | dviware/dvisvgm/src/PapersizeSpecialHandler.hpp
+2022/01/18 | 13145 | dviware/dvisvgm/src/PathClipper.cpp
+2022/01/18 | 2432 | dviware/dvisvgm/src/PathClipper.hpp
+2022/01/18 | 15422 | dviware/dvisvgm/src/PDFParser.cpp
+2022/01/18 | 5841 | dviware/dvisvgm/src/PDFParser.hpp
+2022/01/18 | 10418 | dviware/dvisvgm/src/PdfSpecialHandler.cpp
+2022/01/18 | 2836 | dviware/dvisvgm/src/PdfSpecialHandler.hpp
+2022/01/18 | 2548 | dviware/dvisvgm/src/PDFToSVG.hpp
+2022/01/18 | 1913 | dviware/dvisvgm/src/PreScanDVIReader.cpp
+2022/01/18 | 1886 | dviware/dvisvgm/src/PreScanDVIReader.hpp
+2022/01/18 | 10029 | dviware/dvisvgm/src/Process.cpp
+2022/01/18 | 1815 | dviware/dvisvgm/src/Process.hpp
+2022/01/18 | 12876 | dviware/dvisvgm/src/psdefs.cpp
+2022/01/18 | 1806 | dviware/dvisvgm/src/PSFilter.hpp
+2022/04/20 | 17638 | dviware/dvisvgm/src/PSInterpreter.cpp
+2022/01/18 | 7037 | dviware/dvisvgm/src/PSInterpreter.hpp
+2022/02/22 | 6500 | dviware/dvisvgm/src/PSPattern.cpp
+2022/01/18 | 4059 | dviware/dvisvgm/src/PSPattern.hpp
+2022/01/18 | 4494 | dviware/dvisvgm/src/PSPreviewFilter.cpp
+2022/01/18 | 2605 | dviware/dvisvgm/src/PSPreviewFilter.hpp
+2022/03/14 | 50001 | dviware/dvisvgm/src/PsSpecialHandler.cpp
+2022/03/14 | 10025 | dviware/dvisvgm/src/PsSpecialHandler.hpp
+2022/01/18 | 7053 | dviware/dvisvgm/src/RangeMap.cpp
+2022/01/18 | 5180 | dviware/dvisvgm/src/RangeMap.hpp
+2022/01/18 | 2871 | dviware/dvisvgm/src/ShadingPatch.cpp
+2022/01/18 | 3150 | dviware/dvisvgm/src/ShadingPatch.hpp
+2022/01/18 | 4203 | dviware/dvisvgm/src/SignalHandler.cpp
+2022/01/18 | 2180 | dviware/dvisvgm/src/SignalHandler.hpp
+2022/01/18 | 4623 | dviware/dvisvgm/src/SourceInput.cpp
+2022/01/18 | 2388 | dviware/dvisvgm/src/SourceInput.hpp
+2022/01/18 | 4494 | dviware/dvisvgm/src/SpecialActions.hpp
+2022/01/18 | 2512 | dviware/dvisvgm/src/SpecialHandler.hpp
+2022/01/18 | 6511 | dviware/dvisvgm/src/SpecialManager.cpp
+2022/01/18 | 2958 | dviware/dvisvgm/src/SpecialManager.hpp
+2022/01/18 | 5021 | dviware/dvisvgm/src/StreamReader.cpp
+2022/01/18 | 2975 | dviware/dvisvgm/src/StreamReader.hpp
+2022/01/18 | 3768 | dviware/dvisvgm/src/StreamWriter.cpp
+2022/01/18 | 2196 | dviware/dvisvgm/src/StreamWriter.hpp
+2022/01/18 | 9256 | dviware/dvisvgm/src/Subfont.cpp
+2022/01/18 | 3521 | dviware/dvisvgm/src/Subfont.hpp
+2022/01/18 | 3676 | dviware/dvisvgm/src/SVGCharHandler.cpp
+2022/01/18 | 2024 | dviware/dvisvgm/src/SVGCharHandlerFactory.cpp
+2022/01/18 | 1645 | dviware/dvisvgm/src/SVGCharHandlerFactory.hpp
+2022/01/18 | 4471 | dviware/dvisvgm/src/SVGCharHandler.hpp
+2022/01/18 | 5814 | dviware/dvisvgm/src/SVGCharPathHandler.cpp
+2022/01/18 | 2455 | dviware/dvisvgm/src/SVGCharPathHandler.hpp
+2022/01/18 | 3959 | dviware/dvisvgm/src/SVGCharTspanTextHandler.cpp
+2022/01/18 | 2041 | dviware/dvisvgm/src/SVGCharTspanTextHandler.hpp
+2022/01/18 | 4511 | dviware/dvisvgm/src/SVGElement.cpp
+2022/01/18 | 2803 | dviware/dvisvgm/src/SVGElement.hpp
+2022/01/18 | 6479 | dviware/dvisvgm/src/SVGOutput.cpp
+2022/01/18 | 3729 | dviware/dvisvgm/src/SVGOutput.hpp
+2022/01/18 | 2182 | dviware/dvisvgm/src/SVGSingleCharTextHandler.cpp
+2022/01/18 | 1784 | dviware/dvisvgm/src/SVGSingleCharTextHandler.hpp
+2022/02/22 | 12106 | dviware/dvisvgm/src/SVGTree.cpp
+2022/01/18 | 4721 | dviware/dvisvgm/src/SVGTree.hpp
+2022/01/18 | 2005 | dviware/dvisvgm/src/System.cpp
+2022/01/18 | 1511 | dviware/dvisvgm/src/System.hpp
+2022/01/18 | 21248 | dviware/dvisvgm/src/TensorProductPatch.cpp
+2022/01/18 | 5274 | dviware/dvisvgm/src/TensorProductPatch.hpp
+2022/01/18 | 6113 | dviware/dvisvgm/src/Terminal.cpp
+2022/01/18 | 2284 | dviware/dvisvgm/src/Terminal.hpp
+2022/01/18 | 7079 | dviware/dvisvgm/src/TFM.cpp
+2022/01/18 | 3519 | dviware/dvisvgm/src/TFM.hpp
+2022/01/18 | 4761 | dviware/dvisvgm/src/ToUnicodeMap.cpp
+2022/01/18 | 1844 | dviware/dvisvgm/src/ToUnicodeMap.hpp
+2022/01/18 | 12940 | dviware/dvisvgm/src/TpicSpecialHandler.cpp
+2022/01/18 | 2613 | dviware/dvisvgm/src/TpicSpecialHandler.hpp
+2022/01/18 | 8354 | dviware/dvisvgm/src/TriangularPatch.cpp
+2022/01/18 | 3049 | dviware/dvisvgm/src/TriangularPatch.hpp
+2022/01/18 | 7108 | dviware/dvisvgm/src/TrueTypeFont.cpp
+2022/01/18 | 3275 | dviware/dvisvgm/src/TrueTypeFont.hpp
+2022/01/18 | 4167 | dviware/dvisvgm/src/TTFAutohint.cpp
+2022/01/18 | 2090 | dviware/dvisvgm/src/TTFAutohint.hpp
+2022/01/18 | 8002 | dviware/dvisvgm/src/Unicode.cpp
+2022/01/18 | 1860 | dviware/dvisvgm/src/Unicode.hpp
+2022/01/18 | 7162 | dviware/dvisvgm/src/utility.cpp
+2022/01/18 | 5772 | dviware/dvisvgm/src/utility.hpp
+2022/01/18 | 3439 | dviware/dvisvgm/src/VectorIterator.hpp
+2022/01/18 | 2949 | dviware/dvisvgm/src/VectorStream.hpp
+2022/01/18 | 1577 | dviware/dvisvgm/src/version.hpp.in
+2022/01/18 | 1911 | dviware/dvisvgm/src/VFActions.hpp
+2022/01/18 | 6570 | dviware/dvisvgm/src/VFReader.cpp
+2022/01/18 | 2443 | dviware/dvisvgm/src/VFReader.hpp
+2022/01/18 | 1604 | dviware/dvisvgm/src/windows.hpp
+2022/01/18 | 2237 | dviware/dvisvgm/src/XMLDocument.cpp
+2022/01/18 | 2053 | dviware/dvisvgm/src/XMLDocument.hpp
+2022/01/18 | 15641 | dviware/dvisvgm/src/XMLNode.cpp
+2022/01/18 | 9963 | dviware/dvisvgm/src/XMLNode.hpp
+2022/01/18 | 3036 | dviware/dvisvgm/src/XMLString.cpp
+2022/01/18 | 1887 | dviware/dvisvgm/src/XMLString.hpp
+2022/01/18 | 4735 | dviware/dvisvgm/src/XXHashFunction.hpp
+2022/01/18 | 5940 | dviware/dvisvgm/src/ZLibOutputStream.hpp
+2019/03/09 | 4642 | dviware/dvisvgm/test-driver
+2022/01/18 | 6075 | dviware/dvisvgm/tests/BezierTest.cpp
+2022/01/18 | 2704 | dviware/dvisvgm/tests/BitmapTest.cpp
+2022/02/22 | 6078 | dviware/dvisvgm/tests/BoundingBoxTest.cpp
+2022/01/18 | 3688 | dviware/dvisvgm/tests/CalculatorTest.cpp
+2022/01/18 | 1216 | dviware/dvisvgm/tests/check-conv
+2022/01/18 | 2974 | dviware/dvisvgm/tests/CMapManagerTest.cpp
+2022/01/18 | 4223 | dviware/dvisvgm/tests/CMapReaderTest.cpp
+2022/01/18 | 4980 | dviware/dvisvgm/tests/CMapTest.cpp
+2022/01/18 | 4702 | dviware/dvisvgm/tests/ColorSpecialTest.cpp
+2022/01/18 | 6942 | dviware/dvisvgm/tests/ColorTest.cpp
+2022/01/18 | 8439 | dviware/dvisvgm/tests/CommandLineTest.cpp
+2016/09/03 | 2508 | dviware/dvisvgm/tests/data/cidjmgr0-h.tfm
+2016/09/03 | 24244 | dviware/dvisvgm/tests/data/cmr10.600gf
+2017/11/23 | 35752 | dviware/dvisvgm/tests/data/cmr10.pfb
+2016/09/03 | 1296 | dviware/dvisvgm/tests/data/cmr10.tfm
+2016/09/03 | 18351 | dviware/dvisvgm/tests/data/dvipdfm_test.map
+2016/09/03 | 15594 | dviware/dvisvgm/tests/data/dvips_test.map
+2016/09/03 | 2072 | dviware/dvisvgm/tests/data/frktest.dvi
+2016/09/03 | 337419 | dviware/dvisvgm/tests/data/frktest-nf-cmp.svg
+2016/09/03 | 163979 | dviware/dvisvgm/tests/data/frktest-wf-cmp.svg
+2021/05/26 | 63012 | dviware/dvisvgm/tests/data/lmmono12-regular.otf
+2022/01/18 | 452 | dviware/dvisvgm/tests/data/Makefile.am
+2022/04/20 | 13740 | dviware/dvisvgm/tests/data/Makefile.in
+2016/09/03 | 1207 | dviware/dvisvgm/tests/data/ot1.cmap
+2016/09/03 | 1320 | dviware/dvisvgm/tests/data/sample.dvi
+2016/09/03 | 60654 | dviware/dvisvgm/tests/data/sample-nf-cmp.svg
+2016/09/03 | 17637 | dviware/dvisvgm/tests/data/sample.sfd
+2017/11/23 | 1016 | dviware/dvisvgm/tests/data/sample_v2.dvi
+2017/11/23 | 256 | dviware/dvisvgm/tests/data/sample_v3.dvi
+2016/09/03 | 46985 | dviware/dvisvgm/tests/data/sample-wf-cmp.svg
+2022/01/18 | 2512 | dviware/dvisvgm/tests/DependencyGraphTest.cpp
+2022/01/18 | 2773 | dviware/dvisvgm/tests/DirectoryTest.cpp
+2022/01/18 | 33210 | dviware/dvisvgm/tests/DVIReaderTest.cpp
+2022/02/22 | 13291 | dviware/dvisvgm/tests/DvisvgmSpecialTest.cpp
+2022/01/18 | 5850 | dviware/dvisvgm/tests/EllipticalArcTest.cpp
+2022/02/22 | 7489 | dviware/dvisvgm/tests/EmSpecialTest.cpp
+2022/01/18 | 3124 | dviware/dvisvgm/tests/FileFinderTest.cpp
+2022/01/18 | 4004 | dviware/dvisvgm/tests/FilePathTest.cpp
+2022/01/18 | 3899 | dviware/dvisvgm/tests/FileSystemTest.cpp
+2022/01/18 | 5070 | dviware/dvisvgm/tests/FontCacheTest.cpp
+2022/01/18 | 3875 | dviware/dvisvgm/tests/FontManagerTest.cpp
+2022/01/18 | 2850 | dviware/dvisvgm/tests/FontMapTest.cpp
+2022/01/18 | 2026 | dviware/dvisvgm/tests/genhashcheck.py
+2022/01/18 | 4645 | dviware/dvisvgm/tests/GFGlyphTracerTest.cpp
+2022/01/18 | 12993 | dviware/dvisvgm/tests/GFReaderTest.cpp
+2022/01/18 | 2083 | dviware/dvisvgm/tests/GhostscriptTest.cpp
+2022/01/18 | 7230 | dviware/dvisvgm/tests/GraphicsPathTest.cpp
+2021/12/02 | 14647 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-death-test.h
+2021/12/02 | 94331 | dviware/dvisvgm/tests/gtest/include/gtest/gtest.h
+2021/12/02 | 33126 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-matchers.h
+2021/12/02 | 8045 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-message.h
+2021/12/02 | 22588 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-param-test.h
+2021/12/02 | 14865 | dviware/dvisvgm/tests/gtest/include/gtest/gtest_pred_impl.h
+2021/12/02 | 35935 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-printers.h
+2021/12/02 | 2534 | dviware/dvisvgm/tests/gtest/include/gtest/gtest_prod.h
+2021/12/02 | 10112 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-spi.h
+2021/12/02 | 6868 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-test-part.h
+2021/12/02 | 15881 | dviware/dvisvgm/tests/gtest/include/gtest/gtest-typed-test.h
+2021/12/02 | 1858 | dviware/dvisvgm/tests/gtest/include/gtest/internal/custom/gtest.h
+2021/12/02 | 1873 | dviware/dvisvgm/tests/gtest/include/gtest/internal/custom/gtest-port.h
+2021/12/02 | 2094 | dviware/dvisvgm/tests/gtest/include/gtest/internal/custom/gtest-printers.h
+2021/12/02 | 13451 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-death-test-internal.h
+2021/12/02 | 9780 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-filepath.h
+2021/12/02 | 61622 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-internal.h
+2019/03/09 | 8401 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-linked_ptr.h
+2019/03/09 | 218498 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-param-util-generated.h
+2021/12/02 | 35140 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-param-util.h
+2021/12/02 | 4157 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-port-arch.h
+2021/12/02 | 85257 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-port.h
+2021/12/02 | 7228 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-string.h
+2019/03/09 | 28605 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-tuple.h
+2021/12/02 | 6174 | dviware/dvisvgm/tests/gtest/include/gtest/internal/gtest-type-util.h
+2017/04/14 | 1475 | dviware/dvisvgm/tests/gtest/LICENSE
+2019/10/25 | 2160 | dviware/dvisvgm/tests/gtest/src/gtest-all.cc
+2021/12/02 | 248773 | dviware/dvisvgm/tests/gtest/src/gtest.cc
+2021/12/02 | 62109 | dviware/dvisvgm/tests/gtest/src/gtest-death-test.cc
+2021/12/02 | 14081 | dviware/dvisvgm/tests/gtest/src/gtest-filepath.cc
+2021/12/02 | 47373 | dviware/dvisvgm/tests/gtest/src/gtest-internal-inl.h
+2021/12/02 | 1968 | dviware/dvisvgm/tests/gtest/src/gtest_main.cc
+2021/12/02 | 3723 | dviware/dvisvgm/tests/gtest/src/gtest-matchers.cc
+2021/12/02 | 48099 | dviware/dvisvgm/tests/gtest/src/gtest-port.cc
+2021/12/02 | 17269 | dviware/dvisvgm/tests/gtest/src/gtest-printers.cc
+2021/12/02 | 4126 | dviware/dvisvgm/tests/gtest/src/gtest-test-part.cc
+2021/12/02 | 3780 | dviware/dvisvgm/tests/gtest/src/gtest-typed-test.cc
+2022/01/18 | 5568 | dviware/dvisvgm/tests/HashFunctionTest.cpp
+2022/01/18 | 4034 | dviware/dvisvgm/tests/JFMReaderTest.cpp
+2022/01/18 | 7803 | dviware/dvisvgm/tests/LengthTest.cpp
+2022/01/18 | 15639 | dviware/dvisvgm/tests/Makefile.am
+2022/04/20 | 256038 | dviware/dvisvgm/tests/Makefile.in
+2022/01/18 | 5795 | dviware/dvisvgm/tests/MapLineTest.cpp
+2022/01/18 | 8332 | dviware/dvisvgm/tests/MatrixTest.cpp
+2022/01/18 | 2315 | dviware/dvisvgm/tests/MessageExceptionTest.cpp
+2022/01/18 | 4799 | dviware/dvisvgm/tests/normalize.xsl
+2022/01/18 | 4640 | dviware/dvisvgm/tests/PageRagesTest.cpp
+2022/01/18 | 2398 | dviware/dvisvgm/tests/PageSizeTest.cpp
+2022/01/18 | 4193 | dviware/dvisvgm/tests/PairTest.cpp
+2022/02/22 | 4926 | dviware/dvisvgm/tests/PapersizeSpecialTest.cpp
+2022/01/18 | 8452 | dviware/dvisvgm/tests/PDFParserTest.cpp
+2022/01/18 | 9574 | dviware/dvisvgm/tests/PSInterpreterTest.cpp
+2022/01/18 | 6392 | dviware/dvisvgm/tests/RangeMapTest.cpp
+2022/01/18 | 3629 | dviware/dvisvgm/tests/ShadingPatchTest.cpp
+2022/01/18 | 3801 | dviware/dvisvgm/tests/SpecialManagerTest.cpp
+2022/01/18 | 5392 | dviware/dvisvgm/tests/SplittedCharInputBufferTest.cpp
+2022/01/18 | 7499 | dviware/dvisvgm/tests/StreamInputBufferTest.cpp
+2022/01/18 | 4178 | dviware/dvisvgm/tests/StreamReaderTest.cpp
+2022/01/18 | 3420 | dviware/dvisvgm/tests/StreamWriterTest.cpp
+2022/01/18 | 4460 | dviware/dvisvgm/tests/StringMatcherTest.cpp
+2022/01/18 | 3363 | dviware/dvisvgm/tests/SubfontTest.cpp
+2022/01/18 | 6521 | dviware/dvisvgm/tests/SVGOutputTest.cpp
+2022/01/18 | 12810 | dviware/dvisvgm/tests/TensorProductPatchTest.cpp
+2022/01/18 | 1999 | dviware/dvisvgm/tests/testmain.cpp
+2021/12/02 | 198 | dviware/dvisvgm/tests/testutil.hpp
+2022/01/18 | 3348 | dviware/dvisvgm/tests/TFMReaderTest.cpp
+2022/01/18 | 2501 | dviware/dvisvgm/tests/ToUnicodeMapTest.cpp
+2022/01/18 | 13772 | dviware/dvisvgm/tests/TpicSpecialTest.cpp
+2022/01/18 | 7066 | dviware/dvisvgm/tests/TriangularPatchTest.cpp
+2022/01/18 | 6084 | dviware/dvisvgm/tests/UnicodeTest.cpp
+2022/01/18 | 5194 | dviware/dvisvgm/tests/UtilityTest.cpp
+2022/01/18 | 3785 | dviware/dvisvgm/tests/VectorIteratorTest.cpp
+2022/01/18 | 2276 | dviware/dvisvgm/tests/VectorStreamTest.cpp
+2022/01/18 | 15061 | dviware/dvisvgm/tests/XMLNodeTest.cpp
+2022/01/18 | 3034 | dviware/dvisvgm/tests/XMLStringTest.cpp
+2022/05/18 | 3572564 | dviware/dvisvgm.zip
1991/04/12 | 1728 | dviware/dvitops/aftopl.1
1991/04/12 | 12075 | dviware/dvitops/aftopl.c
1991/01/25 | 837 | dviware/dvitops/cms.h
@@ -5228,7 +5228,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
-2022/05/17 | 148197 | FILES.last07days
+2022/05/18 | 170747 | 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
@@ -186210,21 +186210,21 @@
2020/05/21 | 2571 | info/latex-veryshortguide/veryshortguide.ins
2020/05/21 | 134527 | info/latex-veryshortguide/veryshortguide.pdf
2020/05/21 | 548808 | info/latex-veryshortguide.zip
-2021/07/17 | 1118 | info/latex-via-exemplos/changelog.txt
-2019/12/19 | 3738 | info/latex-via-exemplos/latex-via-exemplos.bib
-2019/07/16 | 2713 | info/latex-via-exemplos/latex-via-exemplos-certificado.tex
-2020/12/07 | 589 | info/latex-via-exemplos/latex-via-exemplos-fig.tex
+2022/05/17 | 1265 | info/latex-via-exemplos/changelog.txt
+2019/12/18 | 3738 | info/latex-via-exemplos/latex-via-exemplos.bib
+2022/05/16 | 2713 | info/latex-via-exemplos/latex-via-exemplos-certificado.tex
+2022/05/16 | 589 | info/latex-via-exemplos/latex-via-exemplos-fig.tex
2019/08/15 | 162 | info/latex-via-exemplos/latex-via-exemplos-lista-nomes.csv
-2021/07/17 | 1099977 | info/latex-via-exemplos/latex-via-exemplos-oneside.pdf
-2021/07/16 | 120 | info/latex-via-exemplos/latex-via-exemplos-oneside.tex
-2021/07/17 | 1099381 | info/latex-via-exemplos/latex-via-exemplos.pdf
-2019/07/15 | 3250 | info/latex-via-exemplos/latex-via-exemplos-poster.tex
-2020/10/21 | 4451 | info/latex-via-exemplos/latex-via-exemplos-slides.tex
-2021/07/17 | 574520 | info/latex-via-exemplos/latex-via-exemplos.tex
+2022/05/17 | 1109432 | info/latex-via-exemplos/latex-via-exemplos-oneside.pdf
+2021/07/15 | 120 | info/latex-via-exemplos/latex-via-exemplos-oneside.tex
+2022/05/17 | 1109756 | info/latex-via-exemplos/latex-via-exemplos.pdf
+2022/05/16 | 3250 | info/latex-via-exemplos/latex-via-exemplos-poster.tex
+2022/05/16 | 4451 | info/latex-via-exemplos/latex-via-exemplos-slides.tex
+2022/05/17 | 581850 | info/latex-via-exemplos/latex-via-exemplos.tex
2019/08/15 | 462 | info/latex-via-exemplos/makeaux.sh
2019/12/26 | 1167 | info/latex-via-exemplos/makedoc.sh
-2019/06/15 | 1797 | info/latex-via-exemplos/README.md
-2021/07/17 | 2306461 | info/latex-via-exemplos.zip
+2022/05/16 | 1801 | info/latex-via-exemplos/README.md
+2022/05/18 | 2327776 | info/latex-via-exemplos.zip
1994/04/20 | 16115 | info/ling-mac.tex
2004/07/13 | 36781 | info/lmodern/lm10pt.png
2004/07/13 | 170 | info/lmodern/lm10pt.tex
@@ -187194,9 +187194,9 @@
1992/09/27 | 8502 | info/tex-for-pictures.txt
1999/05/31 | 135 | info/texlive/README
2020/04/01 | 458 | info/tex-nutshell/README
-2021/06/03 | 258588 | info/tex-nutshell/tex-nutshell.pdf
-2021/06/03 | 114700 | info/tex-nutshell/tex-nutshell.tex
-2021/06/03 | 287273 | info/tex-nutshell.zip
+2022/05/18 | 256523 | info/tex-nutshell/tex-nutshell.pdf
+2022/05/18 | 115713 | info/tex-nutshell/tex-nutshell.tex
+2022/05/18 | 285607 | info/tex-nutshell.zip
2019/04/18 | 360 | info/texonly/README.md
2019/04/18 | 70552 | info/texonly/texonly2.pdf
2019/04/18 | 10714 | info/texonly/texonly2.tex
@@ -188503,14 +188503,14 @@
2021/09/21 | 514924 | install/macros/generic/expkv.tds.zip
2022/02/04 | 232668 | install/macros/generic/iftex.tds.zip
2012/09/20 | 321508 | install/macros/generic/langcode.tds.zip
-2022/03/31 | 1161977 | install/macros/generic/markdown.tds.zip
+2022/05/18 | 1159396 | install/macros/generic/markdown.tds.zip
2014/06/11 | 428488 | install/macros/generic/mathdots.tds.zip
2014/01/02 | 496633 | install/macros/generic/minifp.tds.zip
2012/09/20 | 369585 | install/macros/generic/plainpkg.tds.zip
2018/08/26 | 1014893 | install/macros/generic/tex-locale.tds.zip
2020/06/30 | 1215011 | install/macros/generic/tracklang.tds.zip
2021/09/15 | 585368 | install/macros/generic/unicode-data.tds.zip
-2021/07/13 | 2802006 | install/macros/generic/xint.tds.zip
+2022/05/18 | 2819401 | install/macros/generic/xint.tds.zip
2016/05/15 | 295442 | install/macros/latex/contrib/abc.tds.zip
2018/11/24 | 6522794 | install/macros/latex/contrib/abntex2.tds.zip
2009/09/02 | 160216 | install/macros/latex/contrib/abstract.tds.zip
@@ -188690,7 +188690,7 @@
2022/02/07 | 1194169 | install/macros/latex/contrib/mathtools.tds.zip
2014/06/19 | 690439 | install/macros/latex/contrib/matlab-prettifier.tds.zip
2013/07/01 | 1898068 | install/macros/latex/contrib/mdframed.tds.zip
-2021/10/19 | 164716 | install/macros/latex/contrib/media4svg.tds.zip
+2022/05/18 | 164746 | install/macros/latex/contrib/media4svg.tds.zip
2022/03/18 | 7473523 | install/macros/latex/contrib/media9.tds.zip
2022/02/20 | 3655680 | install/macros/latex/contrib/memoir.tds.zip
2020/08/06 | 24409080 | install/macros/latex/contrib/mercatormap.tds.zip
@@ -202819,22 +202819,22 @@
2016/06/15 | 170646 | macros/generic/luatex85/luatex85.pdf
2016/06/15 | 316 | macros/generic/luatex85/README.md
2016/06/15 | 173375 | macros/generic/luatex85.zip
-2022/03/31 | 4485 | macros/generic/markdown/docstrip.cfg
-2022/03/31 | 1491 | macros/generic/markdown/examples/context-mkii.tex
-2022/03/31 | 1682 | macros/generic/markdown/examples/context-mkiv.tex
-2022/03/31 | 3129 | macros/generic/markdown/examples/example.md
-2022/03/31 | 1639 | macros/generic/markdown/examples/latex.tex
-2022/03/31 | 75 | macros/generic/markdown/examples/scientists.csv
-2022/03/31 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua
-2022/03/31 | 4530 | macros/generic/markdown/markdown.css
-2022/03/31 | 622636 | macros/generic/markdown/markdown.dtx
-2022/03/31 | 686766 | macros/generic/markdown/markdown.html
-2022/03/31 | 1333 | macros/generic/markdown/markdown.ins
-2022/03/31 | 799016 | macros/generic/markdown/markdown.pdf
-2022/03/31 | 140951 | macros/generic/markdown/markdown.png
-2022/03/31 | 16616 | macros/generic/markdown/README.md
-2022/03/31 | 31 | macros/generic/markdown/VERSION
-2022/03/31 | 1101441 | macros/generic/markdown.zip
+2022/05/17 | 4485 | macros/generic/markdown/docstrip.cfg
+2022/05/17 | 1491 | macros/generic/markdown/examples/context-mkii.tex
+2022/05/17 | 1682 | macros/generic/markdown/examples/context-mkiv.tex
+2022/05/17 | 3129 | macros/generic/markdown/examples/example.md
+2022/05/17 | 1639 | macros/generic/markdown/examples/latex.tex
+2022/05/17 | 75 | macros/generic/markdown/examples/scientists.csv
+2022/05/18 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua
+2022/05/18 | 4530 | macros/generic/markdown/markdown.css
+2022/05/17 | 623398 | macros/generic/markdown/markdown.dtx
+2022/05/18 | 686768 | macros/generic/markdown/markdown.html
+2022/05/17 | 1333 | macros/generic/markdown/markdown.ins
+2022/05/18 | 796056 | macros/generic/markdown/markdown.pdf
+2022/05/17 | 140951 | macros/generic/markdown/markdown.png
+2022/05/17 | 16788 | macros/generic/markdown/README.md
+2022/05/18 | 31 | macros/generic/markdown/VERSION
+2022/05/18 | 1098757 | macros/generic/markdown.zip
2014/06/11 | 20744 | macros/generic/mathdots/mathdots.dtx
2014/06/11 | 1203 | macros/generic/mathdots/mathdots.ins
2014/06/11 | 258547 | macros/generic/mathdots/mathdots.pdf
@@ -203414,13 +203414,13 @@
2010/05/14 | 253 | macros/generic/xcomment/xcomment.sty
2010/05/14 | 5315 | macros/generic/xcomment/xcomment.tex
2010/05/15 | 84896 | macros/generic/xcomment.zip
-2021/07/13 | 132102 | macros/generic/xint/CHANGES.html
+2022/05/18 | 142785 | macros/generic/xint/CHANGES.html
2021/06/13 | 466 | macros/generic/xint/Makefile
-2021/07/13 | 3809 | macros/generic/xint/README.md
-2021/07/13 | 1170067 | macros/generic/xint/sourcexint.pdf
-2021/07/13 | 1859142 | macros/generic/xint/xint.dtx
-2021/07/13 | 1058034 | macros/generic/xint/xint.pdf
-2021/07/13 | 2690216 | macros/generic/xint.zip
+2022/05/18 | 3809 | macros/generic/xint/README.md
+2022/05/18 | 1175167 | macros/generic/xint/sourcexint.pdf
+2022/05/18 | 1890317 | macros/generic/xint/xint.dtx
+2022/05/18 | 1058714 | macros/generic/xint/xint.pdf
+2022/05/18 | 2706904 | macros/generic/xint.zip
2020/11/11 | 3056 | macros/generic/xlop/doc/history.txt
2020/11/11 | 389668 | macros/generic/xlop/doc/xlop-doc-fr.pdf
2020/11/11 | 108183 | macros/generic/xlop/doc/xlop-doc-fr.tex
@@ -212838,144 +212838,145 @@
2021/06/12 | 514 | macros/latex/contrib/docassembly/examples/watermark-text.tex
2021/06/19 | 1740 | macros/latex/contrib/docassembly/README.md
2021/06/20 | 2191884 | macros/latex/contrib/docassembly.zip
-2022/04/27 | 307 | macros/latex/contrib/doclicense/doclicense-acadian.ldf
-2022/04/27 | 305 | macros/latex/contrib/doclicense/doclicense-american.ldf
-2022/04/27 | 307 | macros/latex/contrib/doclicense/doclicense-australian.ldf
-2022/04/27 | 1637 | macros/latex/contrib/doclicense/doclicense-brazilian.ldf
-2022/04/27 | 421 | macros/latex/contrib/doclicense/doclicense-british.ldf
-2022/04/27 | 2293 | macros/latex/contrib/doclicense/doclicense-bulgarian.ldf
-2022/04/27 | 305 | macros/latex/contrib/doclicense/doclicense-canadian.ldf
-2022/04/27 | 308 | macros/latex/contrib/doclicense/doclicense-canadien.ldf
-2022/04/27 | 1702 | macros/latex/contrib/doclicense/doclicense-catalan.ldf
-2022/04/27 | 1445 | macros/latex/contrib/doclicense/doclicense-chinese-gbk.ldf
-2022/04/27 | 1620 | macros/latex/contrib/doclicense/doclicense-chinese-tw.ldf
-2022/04/27 | 1597 | macros/latex/contrib/doclicense/doclicense-chinese-utf8.ldf
-2022/04/27 | 1669 | macros/latex/contrib/doclicense/doclicense-croatian.ldf
-2022/04/27 | 44119 | macros/latex/contrib/doclicense/doclicense.dtx
-2022/04/27 | 1613 | macros/latex/contrib/doclicense/doclicense-english.ldf
-2022/04/27 | 2391 | macros/latex/contrib/doclicense/doclicense-esperanto.ldf
-2022/04/27 | 2246 | macros/latex/contrib/doclicense/doclicense-french.ldf
-2022/04/27 | 1991 | macros/latex/contrib/doclicense/doclicense-galician.ldf
-2022/04/27 | 2057 | macros/latex/contrib/doclicense/doclicense-german.ldf
-2022/04/27 | 860 | macros/latex/contrib/doclicense/doclicense.ins
-2022/04/27 | 2004 | macros/latex/contrib/doclicense/doclicense-italian.ldf
-2022/04/27 | 1397 | macros/latex/contrib/doclicense/doclicense-japanese.ldf
-2022/04/27 | 3067 | macros/latex/contrib/doclicense/doclicense-marathi.ldf
-2022/04/27 | 307 | macros/latex/contrib/doclicense/doclicense-newzealand.ldf
-2022/04/27 | 303 | macros/latex/contrib/doclicense/doclicense-ngerman.ldf
-2022/04/27 | 273455 | macros/latex/contrib/doclicense/doclicense.pdf
-2022/04/27 | 2990 | macros/latex/contrib/doclicense/doclicense-polish.ldf
-2022/04/27 | 1665 | macros/latex/contrib/doclicense/doclicense-portuguese.ldf
-2022/04/27 | 2810 | macros/latex/contrib/doclicense/doclicense-russian.ldf
-2022/04/27 | 1634 | macros/latex/contrib/doclicense/doclicense-spanish.ldf
-2022/04/27 | 2432 | macros/latex/contrib/doclicense/doclicense-swedish.ldf
-2022/04/27 | 306 | macros/latex/contrib/doclicense/doclicense-UKenglish.ldf
-2022/04/27 | 306 | macros/latex/contrib/doclicense/doclicense-USenglish.ldf
-2022/04/27 | 5675 | macros/latex/contrib/doclicense/images/doclicense-CC-by-80x15.eps
-2022/04/27 | 2727 | macros/latex/contrib/doclicense/images/doclicense-CC-by-80x15.pdf
-2022/04/27 | 7819 | macros/latex/contrib/doclicense/images/doclicense-CC-by-88x31.eps
-2022/04/27 | 3052 | macros/latex/contrib/doclicense/images/doclicense-CC-by-88x31.pdf
-2022/04/27 | 6616 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-80x15.eps
-2022/04/27 | 3064 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-80x15.pdf
-2022/04/27 | 11261 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-88x31.eps
-2022/04/27 | 4312 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-88x31.pdf
-2022/04/27 | 11390 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-eu-88x31.eps
-2022/04/27 | 4365 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-eu-88x31.pdf
-2022/04/27 | 7473 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-80x15.eps
-2022/04/27 | 3357 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-80x15.pdf
-2022/04/27 | 13437 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-88x31.eps
-2022/04/27 | 5058 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-88x31.pdf
-2022/04/27 | 13562 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-eu-88x31.eps
-2022/04/27 | 5116 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-eu-88x31.pdf
-2022/04/27 | 20897 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-80x15.eps
-2022/04/27 | 8126 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-80x15.pdf
-2022/04/27 | 31754 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-88x31.eps
-2022/04/27 | 12246 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-88x31.pdf
-2022/04/27 | 7940 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-80x15.eps
-2022/04/27 | 3579 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-80x15.pdf
-2022/04/27 | 15146 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-88x31.eps
-2022/04/27 | 5728 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-88x31.pdf
-2022/04/27 | 15260 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-eu-88x31.eps
-2022/04/27 | 5775 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-eu-88x31.pdf
-2022/04/27 | 19124 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-80x15.eps
-2022/04/27 | 7499 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-80x15.pdf
-2022/04/27 | 30123 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-88x31.eps
-2022/04/27 | 11686 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-88x31.pdf
-2022/04/27 | 14115 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-80x15.eps
-2022/04/27 | 5640 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-80x15.pdf
-2022/04/27 | 23182 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-88x31.eps
-2022/04/27 | 9229 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-88x31.pdf
-2022/04/27 | 6526 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-80x15.eps
-2022/04/27 | 3022 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-80x15.pdf
-2022/04/27 | 10011 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-88x31.eps
-2022/04/27 | 3837 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-88x31.pdf
-2022/04/27 | 15356 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-80x15.eps
-2022/04/27 | 6129 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-80x15.pdf
-2022/04/27 | 18889 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-88x31.eps
-2022/04/27 | 6580 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-88x31.pdf
-2022/04/27 | 7002 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-80x15.eps
-2022/04/27 | 3253 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-80x15.pdf
-2022/04/27 | 11647 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-88x31.eps
-2022/04/27 | 4460 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-88x31.pdf
-2022/04/27 | 13505 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-80x15.eps
-2022/04/27 | 5472 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-80x15.pdf
-2022/04/27 | 17092 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-88x31.eps
-2022/04/27 | 5965 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-88x31.pdf
-2022/04/27 | 8473 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-80x15.eps
-2022/04/27 | 3638 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-80x15.pdf
-2022/04/27 | 10917 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-88x31.eps
-2022/04/27 | 3812 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-88x31.pdf
-2022/04/27 | 14916 | macros/latex/contrib/doclicense/images/doclicense-CC-cc-zero-unofficial-mr-80x15.eps
-2022/04/27 | 5530 | macros/latex/contrib/doclicense/images/doclicense-CC-cc-zero-unofficial-mr-80x15.pdf
-2022/04/27 | 9114 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-80x15.eps
-2022/04/27 | 3538 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-80x15.pdf
-2022/04/27 | 12331 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-88x31.eps
-2022/04/27 | 4697 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-88x31.pdf
-2022/04/27 | 16411 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-unofficial-mr-88x31.eps
-2022/04/27 | 5920 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-unofficial-mr-88x31.pdf
-2022/04/27 | 20781 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-3.0-latex.html
-2022/04/27 | 19416 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-3.0-latex.tex
-2022/04/27 | 19466 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-3.0-plaintext.tex
-2022/04/27 | 38132 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-4.0-latex.html
-2022/04/27 | 18374 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-4.0-latex.tex
-2022/04/27 | 18657 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-4.0-plaintext.tex
-2022/04/27 | 21724 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-3.0-latex.html
-2022/04/27 | 20356 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-3.0-latex.tex
-2022/04/27 | 20479 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-3.0-plaintext.tex
-2022/04/27 | 38979 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-4.0-latex.html
-2022/04/27 | 19004 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-4.0-latex.tex
-2022/04/27 | 19347 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-4.0-plaintext.tex
-2022/04/27 | 19976 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-3.0-latex.html
-2022/04/27 | 18609 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-3.0-latex.tex
-2022/04/27 | 18650 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-3.0-plaintext.tex
-2022/04/27 | 38937 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-4.0-latex.html
-2022/04/27 | 18797 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-4.0-latex.tex
-2022/04/27 | 19127 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-4.0-plaintext.tex
-2022/04/27 | 23486 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-3.0-latex.html
-2022/04/27 | 22108 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-3.0-latex.tex
-2022/04/27 | 22306 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-3.0-plaintext.tex
-2022/04/27 | 40787 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-4.0-latex.html
-2022/04/27 | 20426 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-4.0-latex.tex
-2022/04/27 | 20850 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-4.0-plaintext.tex
-2022/04/27 | 19048 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-3.0-latex.html
-2022/04/27 | 17684 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-3.0-latex.tex
-2022/04/27 | 17650 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-3.0-plaintext.tex
-2022/04/27 | 38078 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-4.0-latex.html
-2022/04/27 | 18164 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-4.0-latex.tex
-2022/04/27 | 18436 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-4.0-plaintext.tex
-2022/04/27 | 23457 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-3.0-latex.html
-2022/04/27 | 22078 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-3.0-latex.tex
-2022/04/27 | 22239 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-3.0-plaintext.tex
-2022/04/27 | 39915 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-4.0-latex.html
-2022/04/27 | 19772 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-4.0-latex.tex
-2022/04/27 | 20138 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-4.0-plaintext.tex
-2022/04/27 | 9934 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-zero-1.0-latex.html
-2022/04/27 | 7497 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-zero-1.0-latex.tex
-2022/04/27 | 7048 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-zero-1.0-plaintext.tex
-2022/04/27 | 1802 | macros/latex/contrib/doclicense/Makefile
-2022/04/27 | 7238 | macros/latex/contrib/doclicense/manifest.txt
-2022/04/27 | 2600 | macros/latex/contrib/doclicense/README.md
-2022/04/28 | 858350 | macros/latex/contrib/doclicense.zip
+2022/05/18 | 307 | macros/latex/contrib/doclicense/doclicense-acadian.ldf
+2022/05/18 | 305 | macros/latex/contrib/doclicense/doclicense-american.ldf
+2022/05/18 | 307 | macros/latex/contrib/doclicense/doclicense-australian.ldf
+2022/05/18 | 1637 | macros/latex/contrib/doclicense/doclicense-brazilian.ldf
+2022/05/18 | 421 | macros/latex/contrib/doclicense/doclicense-british.ldf
+2022/05/18 | 2293 | macros/latex/contrib/doclicense/doclicense-bulgarian.ldf
+2022/05/18 | 305 | macros/latex/contrib/doclicense/doclicense-canadian.ldf
+2022/05/18 | 308 | macros/latex/contrib/doclicense/doclicense-canadien.ldf
+2022/05/18 | 1702 | macros/latex/contrib/doclicense/doclicense-catalan.ldf
+2022/05/18 | 1445 | macros/latex/contrib/doclicense/doclicense-chinese-gbk.ldf
+2022/05/18 | 1620 | macros/latex/contrib/doclicense/doclicense-chinese-tw.ldf
+2022/05/18 | 1597 | macros/latex/contrib/doclicense/doclicense-chinese-utf8.ldf
+2022/05/18 | 1669 | macros/latex/contrib/doclicense/doclicense-croatian.ldf
+2022/05/18 | 44197 | macros/latex/contrib/doclicense/doclicense.dtx
+2022/05/18 | 1613 | macros/latex/contrib/doclicense/doclicense-english.ldf
+2022/05/18 | 2391 | macros/latex/contrib/doclicense/doclicense-esperanto.ldf
+2022/05/18 | 2246 | macros/latex/contrib/doclicense/doclicense-french.ldf
+2022/05/18 | 1991 | macros/latex/contrib/doclicense/doclicense-galician.ldf
+2022/05/18 | 2057 | macros/latex/contrib/doclicense/doclicense-german.ldf
+2022/05/18 | 860 | macros/latex/contrib/doclicense/doclicense.ins
+2022/05/18 | 2004 | macros/latex/contrib/doclicense/doclicense-italian.ldf
+2022/05/18 | 1397 | macros/latex/contrib/doclicense/doclicense-japanese.ldf
+2022/05/18 | 3067 | macros/latex/contrib/doclicense/doclicense-marathi.ldf
+2022/05/18 | 307 | macros/latex/contrib/doclicense/doclicense-newzealand.ldf
+2022/05/18 | 303 | macros/latex/contrib/doclicense/doclicense-ngerman.ldf
+2022/05/18 | 274374 | macros/latex/contrib/doclicense/doclicense.pdf
+2022/05/18 | 2990 | macros/latex/contrib/doclicense/doclicense-polish.ldf
+2022/05/18 | 1665 | macros/latex/contrib/doclicense/doclicense-portuguese.ldf
+2022/05/18 | 2810 | macros/latex/contrib/doclicense/doclicense-russian.ldf
+2022/05/18 | 1634 | macros/latex/contrib/doclicense/doclicense-spanish.ldf
+2022/05/18 | 2432 | macros/latex/contrib/doclicense/doclicense-swedish.ldf
+2022/05/18 | 306 | macros/latex/contrib/doclicense/doclicense-UKenglish.ldf
+2022/05/18 | 3273 | macros/latex/contrib/doclicense/doclicense-ukrainian.ldf
+2022/05/18 | 306 | macros/latex/contrib/doclicense/doclicense-USenglish.ldf
+2022/05/18 | 5675 | macros/latex/contrib/doclicense/images/doclicense-CC-by-80x15.eps
+2022/05/18 | 2727 | macros/latex/contrib/doclicense/images/doclicense-CC-by-80x15.pdf
+2022/05/18 | 7819 | macros/latex/contrib/doclicense/images/doclicense-CC-by-88x31.eps
+2022/05/18 | 3052 | macros/latex/contrib/doclicense/images/doclicense-CC-by-88x31.pdf
+2022/05/18 | 6616 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-80x15.eps
+2022/05/18 | 3064 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-80x15.pdf
+2022/05/18 | 11261 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-88x31.eps
+2022/05/18 | 4312 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-88x31.pdf
+2022/05/18 | 11390 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-eu-88x31.eps
+2022/05/18 | 4365 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-eu-88x31.pdf
+2022/05/18 | 7473 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-80x15.eps
+2022/05/18 | 3357 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-80x15.pdf
+2022/05/18 | 13437 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-88x31.eps
+2022/05/18 | 5058 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-88x31.pdf
+2022/05/18 | 13562 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-eu-88x31.eps
+2022/05/18 | 5116 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-eu-88x31.pdf
+2022/05/18 | 20897 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-80x15.eps
+2022/05/18 | 8126 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-80x15.pdf
+2022/05/18 | 31754 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-88x31.eps
+2022/05/18 | 12246 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-88x31.pdf
+2022/05/18 | 7940 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-80x15.eps
+2022/05/18 | 3579 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-80x15.pdf
+2022/05/18 | 15146 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-88x31.eps
+2022/05/18 | 5728 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-88x31.pdf
+2022/05/18 | 15260 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-eu-88x31.eps
+2022/05/18 | 5775 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-eu-88x31.pdf
+2022/05/18 | 19124 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-80x15.eps
+2022/05/18 | 7499 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-80x15.pdf
+2022/05/18 | 30123 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-88x31.eps
+2022/05/18 | 11686 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-88x31.pdf
+2022/05/18 | 14115 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-80x15.eps
+2022/05/18 | 5640 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-80x15.pdf
+2022/05/18 | 23182 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-88x31.eps
+2022/05/18 | 9229 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-88x31.pdf
+2022/05/18 | 6526 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-80x15.eps
+2022/05/18 | 3022 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-80x15.pdf
+2022/05/18 | 10011 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-88x31.eps
+2022/05/18 | 3837 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-88x31.pdf
+2022/05/18 | 15356 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-80x15.eps
+2022/05/18 | 6129 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-80x15.pdf
+2022/05/18 | 18889 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-88x31.eps
+2022/05/18 | 6580 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-88x31.pdf
+2022/05/18 | 7002 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-80x15.eps
+2022/05/18 | 3253 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-80x15.pdf
+2022/05/18 | 11647 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-88x31.eps
+2022/05/18 | 4460 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-88x31.pdf
+2022/05/18 | 13505 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-80x15.eps
+2022/05/18 | 5472 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-80x15.pdf
+2022/05/18 | 17092 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-88x31.eps
+2022/05/18 | 5965 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-88x31.pdf
+2022/05/18 | 8473 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-80x15.eps
+2022/05/18 | 3638 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-80x15.pdf
+2022/05/18 | 10917 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-88x31.eps
+2022/05/18 | 3812 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-88x31.pdf
+2022/05/18 | 14916 | macros/latex/contrib/doclicense/images/doclicense-CC-cc-zero-unofficial-mr-80x15.eps
+2022/05/18 | 5530 | macros/latex/contrib/doclicense/images/doclicense-CC-cc-zero-unofficial-mr-80x15.pdf
+2022/05/18 | 9114 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-80x15.eps
+2022/05/18 | 3538 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-80x15.pdf
+2022/05/18 | 12331 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-88x31.eps
+2022/05/18 | 4697 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-88x31.pdf
+2022/05/18 | 16411 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-unofficial-mr-88x31.eps
+2022/05/18 | 5920 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-unofficial-mr-88x31.pdf
+2022/05/18 | 20781 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-3.0-latex.html
+2022/05/18 | 19416 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-3.0-latex.tex
+2022/05/18 | 19466 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-3.0-plaintext.tex
+2022/05/18 | 38132 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-4.0-latex.html
+2022/05/18 | 18374 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-4.0-latex.tex
+2022/05/18 | 18657 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-4.0-plaintext.tex
+2022/05/18 | 21724 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-3.0-latex.html
+2022/05/18 | 20356 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-3.0-latex.tex
+2022/05/18 | 20479 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-3.0-plaintext.tex
+2022/05/18 | 38979 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-4.0-latex.html
+2022/05/18 | 19004 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-4.0-latex.tex
+2022/05/18 | 19347 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-4.0-plaintext.tex
+2022/05/18 | 19976 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-3.0-latex.html
+2022/05/18 | 18609 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-3.0-latex.tex
+2022/05/18 | 18650 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-3.0-plaintext.tex
+2022/05/18 | 38937 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-4.0-latex.html
+2022/05/18 | 18797 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-4.0-latex.tex
+2022/05/18 | 19127 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-4.0-plaintext.tex
+2022/05/18 | 23486 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-3.0-latex.html
+2022/05/18 | 22108 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-3.0-latex.tex
+2022/05/18 | 22306 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-3.0-plaintext.tex
+2022/05/18 | 40787 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-4.0-latex.html
+2022/05/18 | 20426 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-4.0-latex.tex
+2022/05/18 | 20850 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-4.0-plaintext.tex
+2022/05/18 | 19048 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-3.0-latex.html
+2022/05/18 | 17684 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-3.0-latex.tex
+2022/05/18 | 17650 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-3.0-plaintext.tex
+2022/05/18 | 38078 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-4.0-latex.html
+2022/05/18 | 18164 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-4.0-latex.tex
+2022/05/18 | 18436 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-4.0-plaintext.tex
+2022/05/18 | 23457 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-3.0-latex.html
+2022/05/18 | 22078 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-3.0-latex.tex
+2022/05/18 | 22239 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-3.0-plaintext.tex
+2022/05/18 | 39915 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-4.0-latex.html
+2022/05/18 | 19772 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-4.0-latex.tex
+2022/05/18 | 20138 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-4.0-plaintext.tex
+2022/05/18 | 9934 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-zero-1.0-latex.html
+2022/05/18 | 7497 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-zero-1.0-latex.tex
+2022/05/18 | 7048 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-zero-1.0-plaintext.tex
+2022/05/18 | 2057 | macros/latex/contrib/doclicense/Makefile
+2022/05/18 | 7344 | macros/latex/contrib/doclicense/manifest.txt
+2022/05/18 | 2605 | macros/latex/contrib/doclicense/README.md
+2022/05/18 | 859852 | macros/latex/contrib/doclicense.zip
2009/09/02 | 27246 | macros/latex/contrib/docmfp/docmfp.dtx
2009/09/02 | 2475 | macros/latex/contrib/docmfp/docmfp.ins
2009/09/02 | 175153 | macros/latex/contrib/docmfp/docmfp.pdf
@@ -214909,11 +214910,11 @@
2018/01/22 | 11599 | macros/latex/contrib/fancyhandout/fancyhandout-doc.tex
2018/01/22 | 1095 | macros/latex/contrib/fancyhandout/README.md
2018/01/22 | 74486 | macros/latex/contrib/fancyhandout.zip
-2022/05/10 | 195255 | macros/latex/contrib/fancyhdr/fancyhdr.dtx
-2022/05/10 | 2205 | macros/latex/contrib/fancyhdr/fancyhdr.ins
-2022/05/10 | 851692 | macros/latex/contrib/fancyhdr/fancyhdr.pdf
-2022/05/10 | 2033 | macros/latex/contrib/fancyhdr/README
-2022/05/10 | 877963 | macros/latex/contrib/fancyhdr.zip
+2022/05/18 | 196170 | macros/latex/contrib/fancyhdr/fancyhdr.dtx
+2022/05/18 | 2205 | macros/latex/contrib/fancyhdr/fancyhdr.ins
+2022/05/18 | 853305 | macros/latex/contrib/fancyhdr/fancyhdr.pdf
+2022/05/18 | 2033 | macros/latex/contrib/fancyhdr/README
+2022/05/18 | 879836 | macros/latex/contrib/fancyhdr.zip
2018/01/20 | 61719 | macros/latex/contrib/fancylabel/fancylabel.dtx
2018/01/20 | 1785 | macros/latex/contrib/fancylabel/fancylabel.ins
2017/12/30 | 230161 | macros/latex/contrib/fancylabel/fancylabel.pdf
@@ -221534,16 +221535,16 @@
2021/08/28 | 37506 | macros/latex/contrib/mecaso/mecaso.tex
2021/08/28 | 470 | macros/latex/contrib/mecaso/README.md
2021/08/28 | 225962 | macros/latex/contrib/mecaso.zip
-2021/10/19 | 480 | macros/latex/contrib/media4svg/ChangeLog
-2021/10/19 | 25723 | macros/latex/contrib/media4svg/example/beamer-example-1.svg
-2021/10/19 | 278224 | macros/latex/contrib/media4svg/example/beamer-example-2.svg
-2021/10/19 | 15201 | macros/latex/contrib/media4svg/example/beamer-example-3.svg
-2021/10/19 | 41919 | macros/latex/contrib/media4svg/example/beamer-example-4.svg
+2022/05/18 | 551 | macros/latex/contrib/media4svg/ChangeLog
+2022/05/18 | 25653 | macros/latex/contrib/media4svg/example/beamer-example-1.svg
+2022/05/18 | 278308 | macros/latex/contrib/media4svg/example/beamer-example-2.svg
+2022/05/18 | 15190 | macros/latex/contrib/media4svg/example/beamer-example-3.svg
+2022/05/18 | 41789 | macros/latex/contrib/media4svg/example/beamer-example-4.svg
2021/10/18 | 5367 | macros/latex/contrib/media4svg/example/beamer-example.tex
-2021/01/29 | 3292 | macros/latex/contrib/media4svg/media4svg.lua
-2021/10/19 | 25939 | macros/latex/contrib/media4svg/media4svg.sty
-2021/10/19 | 5536 | macros/latex/contrib/media4svg/README.md
-2021/10/19 | 163220 | macros/latex/contrib/media4svg.zip
+2022/05/18 | 3279 | macros/latex/contrib/media4svg/media4svg.lua
+2022/05/18 | 26124 | macros/latex/contrib/media4svg/media4svg.sty
+2022/05/18 | 5523 | macros/latex/contrib/media4svg/README.md
+2022/05/18 | 163250 | macros/latex/contrib/media4svg.zip
2022/03/18 | 15662 | macros/latex/contrib/media9/ChangeLog
2019/01/02 | 7152 | macros/latex/contrib/media9/doc/files/3dsystem.fig
2019/01/02 | 5989 | macros/latex/contrib/media9/doc/files/3dsystem.pdf
@@ -233653,12 +233654,12 @@
2020/10/10 | 651 | macros/latex/contrib/verifica/verifica-template.tex
2020/10/10 | 1252936 | macros/latex/contrib/verifica.zip
2022/02/10 | 952 | macros/latex/contrib/verifiche/README.md
-2022/03/10 | 60406 | macros/latex/contrib/verifiche/verifiche.dtx
-2022/03/10 | 190102 | macros/latex/contrib/verifiche/verifiche-example.pdf
-2022/03/10 | 5411 | macros/latex/contrib/verifiche/verifiche-example.tex
+2022/05/18 | 64042 | macros/latex/contrib/verifiche/verifiche.dtx
+2022/05/18 | 191888 | macros/latex/contrib/verifiche/verifiche-example.pdf
+2022/05/18 | 6457 | macros/latex/contrib/verifiche/verifiche-example.tex
2022/02/10 | 1442 | macros/latex/contrib/verifiche/verifiche.ins
-2022/03/10 | 551397 | macros/latex/contrib/verifiche/verifiche.pdf
-2022/03/10 | 739938 | macros/latex/contrib/verifiche.zip
+2022/05/18 | 555223 | macros/latex/contrib/verifiche/verifiche.pdf
+2022/05/18 | 746329 | macros/latex/contrib/verifiche.zip
2014/05/10 | 2728 | macros/latex/contrib/verse/README
2014/05/10 | 58344 | macros/latex/contrib/verse/verse.dtx
2014/05/10 | 2591 | macros/latex/contrib/verse/verse.ins
@@ -279476,9 +279477,9 @@
2019/02/28 | 344 | systems/texlive/tlnet/archive/adhocfilelist.x86_64-solaris.r28038.tar.xz
2019/02/28 | 482896 | systems/texlive/tlnet/archive/adigraph.doc.r49862.tar.xz
2019/02/28 | 5644 | systems/texlive/tlnet/archive/adigraph.r49862.tar.xz
-2022/04/19 | 312336 | systems/texlive/tlnet/archive/adjmulticol.doc.r63073.tar.xz
-2022/04/19 | 3072 | systems/texlive/tlnet/archive/adjmulticol.r63073.tar.xz
-2022/04/19 | 7392 | systems/texlive/tlnet/archive/adjmulticol.source.r63073.tar.xz
+2022/05/18 | 312532 | systems/texlive/tlnet/archive/adjmulticol.doc.r63320.tar.xz
+2022/05/18 | 3080 | systems/texlive/tlnet/archive/adjmulticol.r63320.tar.xz
+2022/05/18 | 7400 | systems/texlive/tlnet/archive/adjmulticol.source.r63320.tar.xz
2020/09/08 | 719424 | systems/texlive/tlnet/archive/adjustbox.doc.r56291.tar.xz
2020/09/08 | 13596 | systems/texlive/tlnet/archive/adjustbox.r56291.tar.xz
2020/09/08 | 49556 | systems/texlive/tlnet/archive/adjustbox.source.r56291.tar.xz
@@ -280314,12 +280315,12 @@
2019/02/28 | 5756 | systems/texlive/tlnet/archive/beamercolorthemeowl.source.r40105.tar.xz
2020/05/12 | 1885368 | systems/texlive/tlnet/archive/beamerdarkthemes.doc.r55117.tar.xz
2020/05/12 | 1828 | systems/texlive/tlnet/archive/beamerdarkthemes.r55117.tar.xz
-2022/02/10 | 2954020 | systems/texlive/tlnet/archive/beamer.doc.r61954.tar.xz
+2022/05/18 | 2954024 | systems/texlive/tlnet/archive/beamer.doc.r63321.tar.xz
2022/04/28 | 367212 | systems/texlive/tlnet/archive/beamer-fuberlin.doc.r63161.tar.xz
2022/04/28 | 3168 | systems/texlive/tlnet/archive/beamer-fuberlin.r63161.tar.xz
2020/03/24 | 77044 | systems/texlive/tlnet/archive/beamerposter.doc.r54512.tar.xz
2020/03/24 | 7456 | systems/texlive/tlnet/archive/beamerposter.r54512.tar.xz
-2022/02/10 | 166812 | systems/texlive/tlnet/archive/beamer.r61954.tar.xz
+2022/05/18 | 167032 | systems/texlive/tlnet/archive/beamer.r63321.tar.xz
2021/08/18 | 217368 | systems/texlive/tlnet/archive/beamer-rl.doc.r60262.tar.xz
2021/08/18 | 7552 | systems/texlive/tlnet/archive/beamer-rl.r60262.tar.xz
2019/02/28 | 375856 | systems/texlive/tlnet/archive/beamersubframe.doc.r23510.tar.xz
@@ -280528,8 +280529,8 @@
2022/03/07 | 29108 | systems/texlive/tlnet/archive/biblatex-ext.r62471.tar.xz
2019/02/28 | 595408 | systems/texlive/tlnet/archive/biblatex-fiwi.doc.r45876.tar.xz
2019/02/28 | 16768 | systems/texlive/tlnet/archive/biblatex-fiwi.r45876.tar.xz
-2022/04/17 | 1366428 | systems/texlive/tlnet/archive/biblatex-gb7714-2015.doc.r63041.tar.xz
-2022/04/17 | 46608 | systems/texlive/tlnet/archive/biblatex-gb7714-2015.r63041.tar.xz
+2022/05/18 | 1375664 | systems/texlive/tlnet/archive/biblatex-gb7714-2015.doc.r63322.tar.xz
+2022/05/18 | 47116 | systems/texlive/tlnet/archive/biblatex-gb7714-2015.r63322.tar.xz
2020/11/16 | 167748 | systems/texlive/tlnet/archive/biblatex-german-legal.doc.r56939.tar.xz
2020/11/16 | 5348 | systems/texlive/tlnet/archive/biblatex-german-legal.r56939.tar.xz
2021/05/09 | 999720 | systems/texlive/tlnet/archive/biblatex-gost.doc.r59135.tar.xz
@@ -283516,9 +283517,9 @@
2019/02/28 | 140404 | systems/texlive/tlnet/archive/expdlist.doc.r15878.tar.xz
2019/02/28 | 2264 | systems/texlive/tlnet/archive/expdlist.r15878.tar.xz
2019/02/28 | 9988 | systems/texlive/tlnet/archive/expdlist.source.r15878.tar.xz
-2022/04/29 | 176596 | systems/texlive/tlnet/archive/expex-acro.doc.r63165.tar.xz
-2022/04/29 | 4296 | systems/texlive/tlnet/archive/expex-acro.r63165.tar.xz
-2022/04/29 | 5368 | systems/texlive/tlnet/archive/expex-acro.source.r63165.tar.xz
+2022/05/18 | 84368 | systems/texlive/tlnet/archive/expex-acro.doc.r63319.tar.xz
+2022/05/18 | 4540 | systems/texlive/tlnet/archive/expex-acro.r63319.tar.xz
+2022/05/18 | 7176 | systems/texlive/tlnet/archive/expex-acro.source.r63319.tar.xz
2019/02/28 | 473776 | systems/texlive/tlnet/archive/expex.doc.r44499.tar.xz
2019/02/28 | 19332 | systems/texlive/tlnet/archive/expex.r44499.tar.xz
2022/02/14 | 457900 | systems/texlive/tlnet/archive/expkv-cs.doc.r62003.tar.xz
@@ -284818,9 +284819,9 @@
2019/02/28 | 186676 | systems/texlive/tlnet/archive/hypernat.doc.r17358.tar.xz
2019/02/28 | 1916 | systems/texlive/tlnet/archive/hypernat.r17358.tar.xz
2019/02/28 | 15680 | systems/texlive/tlnet/archive/hyper.r17357.tar.xz
-2022/05/17 | 3673160 | systems/texlive/tlnet/archive/hyperref.doc.r63313.tar.xz
-2022/05/17 | 90752 | systems/texlive/tlnet/archive/hyperref.r63313.tar.xz
-2022/05/17 | 414808 | systems/texlive/tlnet/archive/hyperref.source.r63313.tar.xz
+2022/05/18 | 3672520 | systems/texlive/tlnet/archive/hyperref.doc.r63323.tar.xz
+2022/05/18 | 90736 | systems/texlive/tlnet/archive/hyperref.r63323.tar.xz
+2022/05/18 | 414812 | systems/texlive/tlnet/archive/hyperref.source.r63323.tar.xz
2019/02/28 | 32960 | systems/texlive/tlnet/archive/hyper.source.r17357.tar.xz
2020/11/23 | 356 | systems/texlive/tlnet/archive/hyperxmp.aarch64-linux.r56984.tar.xz
2020/11/23 | 356 | systems/texlive/tlnet/archive/hyperxmp.amd64-freebsd.r56984.tar.xz
@@ -287878,13 +287879,13 @@
2021/07/04 | 340 | systems/texlive/tlnet/archive/optexcount.x86_64-linuxmusl.r59817.tar.xz
2021/07/04 | 336 | systems/texlive/tlnet/archive/optexcount.x86_64-linux.r59817.tar.xz
2021/07/04 | 336 | systems/texlive/tlnet/archive/optexcount.x86_64-solaris.r59817.tar.xz
-2022/03/13 | 1445036 | systems/texlive/tlnet/archive/optex.doc.r62666.tar.xz
+2022/05/18 | 1451236 | systems/texlive/tlnet/archive/optex.doc.r63325.tar.xz
2020/02/16 | 320 | systems/texlive/tlnet/archive/optex.i386-cygwin.r53804.tar.xz
2020/02/16 | 316 | systems/texlive/tlnet/archive/optex.i386-freebsd.r53804.tar.xz
2020/02/16 | 316 | systems/texlive/tlnet/archive/optex.i386-linux.r53804.tar.xz
2020/02/16 | 316 | systems/texlive/tlnet/archive/optex.i386-netbsd.r53804.tar.xz
2020/02/16 | 316 | systems/texlive/tlnet/archive/optex.i386-solaris.r53804.tar.xz
-2022/03/13 | 809592 | systems/texlive/tlnet/archive/optex.r62666.tar.xz
+2022/05/18 | 811156 | systems/texlive/tlnet/archive/optex.r63325.tar.xz
2021/02/25 | 320 | systems/texlive/tlnet/archive/optex.universal-darwin.r57908.tar.xz
2022/02/27 | 864 | systems/texlive/tlnet/archive/optex.win32.r62199.tar.xz
2020/02/16 | 324 | systems/texlive/tlnet/archive/optex.x86_64-cygwin.r53804.tar.xz
@@ -290863,7 +290864,7 @@
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r55172.tar.xz
-2022/05/17 | 406392 | systems/texlive/tlnet/archive/texlive-scripts.doc.r63311.tar.xz
+2022/05/18 | 406392 | systems/texlive/tlnet/archive/texlive-scripts.doc.r63316.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
@@ -290887,7 +290888,7 @@
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r55172.tar.xz
-2022/05/17 | 109732 | systems/texlive/tlnet/archive/texlive-scripts.r63311.tar.xz
+2022/05/18 | 109732 | systems/texlive/tlnet/archive/texlive-scripts.r63316.tar.xz
2021/02/25 | 572 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r57908.tar.xz
2022/04/19 | 36296 | systems/texlive/tlnet/archive/texlive-scripts.win32.r63068.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz
@@ -291189,9 +291190,9 @@
2019/02/28 | 33908 | systems/texlive/tlnet/archive/thumbs.source.r33134.tar.xz
2019/02/28 | 155976 | systems/texlive/tlnet/archive/thumby.doc.r16736.tar.xz
2019/02/28 | 3268 | systems/texlive/tlnet/archive/thumby.r16736.tar.xz
-2022/03/20 | 1411156 | systems/texlive/tlnet/archive/thuthesis.doc.r62809.tar.xz
-2022/03/20 | 42728 | systems/texlive/tlnet/archive/thuthesis.r62809.tar.xz
-2022/03/20 | 46952 | systems/texlive/tlnet/archive/thuthesis.source.r62809.tar.xz
+2022/05/18 | 1418592 | systems/texlive/tlnet/archive/thuthesis.doc.r63324.tar.xz
+2022/05/18 | 43468 | systems/texlive/tlnet/archive/thuthesis.r63324.tar.xz
+2022/05/18 | 47696 | systems/texlive/tlnet/archive/thuthesis.source.r63324.tar.xz
2019/02/28 | 488008 | systems/texlive/tlnet/archive/ticket.doc.r42280.tar.xz
2019/02/28 | 3996 | systems/texlive/tlnet/archive/ticket.r42280.tar.xz
2019/02/28 | 371572 | systems/texlive/tlnet/archive/ticollege.doc.r36306.tar.xz
@@ -292700,16 +292701,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
2022/04/18 | 108451 | systems/texlive/tlnet/install-tl
-2022/05/17 | 5800379 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/05/17 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/05/17 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/05/18 | 5799854 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/05/18 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/05/18 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat
-2022/05/17 | 20461385 | systems/texlive/tlnet/install-tl-windows.exe
-2022/05/17 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/05/17 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/05/17 | 25483932 | systems/texlive/tlnet/install-tl.zip
-2022/05/17 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/05/17 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/05/18 | 20464318 | systems/texlive/tlnet/install-tl-windows.exe
+2022/05/18 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/05/18 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/05/18 | 25483925 | systems/texlive/tlnet/install-tl.zip
+2022/05/18 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/05/18 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2022/04/03 | 1229 | systems/texlive/tlnet/README.md
2022/04/03 | 0 | systems/texlive/tlnet/TEXLIVE_2022
2022/02/28 | 7791 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -292719,7 +292720,7 @@
2022/02/28 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2022/05/10 | 49662 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2022/05/16 | 7365 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2022/05/17 | 7322 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/04/27 | 215352 | 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
@@ -292761,12 +292762,12 @@
2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2021/12/21 | 27582 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2022/05/17 | 17467522 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2022/05/17 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/05/18 | 17467504 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/05/18 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2022/04/18 | 86658 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2022/05/17 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/05/17 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/05/17 | 2379472 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/05/18 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/05/18 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/05/18 | 2379132 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2021/12/21 | 58848 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2022/04/18 | 42116 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2021/12/21 | 16130 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -297976,7 +297977,7 @@
2020/10/03 | 318630 | systems/win32/miktex/tm/packages/filehook.tar.lzma
2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma
2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma
-2022/05/17 | 651183 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/05/18 | 651183 | systems/win32/miktex/tm/packages/files.csv.lzma
2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma
2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma
2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma
@@ -299578,9 +299579,9 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2022/03/12 | 39680 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2022/03/29 | 43240 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/05/17 | 277852 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2022/05/17 | 1453236 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/05/17 | 1342247 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/05/18 | 277853 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/05/18 | 1454074 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/05/18 | 1340354 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2022/03/12 | 13516 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2022/03/29 | 14391 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma
@@ -299806,191 +299807,191 @@
2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma
2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma
2021/03/17 | 232249 | systems/win32/miktex/tm/packages/newverbs.tar.lzma
-2022/05/17 | 650885 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/05/17 | 51557 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2022/05/17 | 57331 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/05/17 | 1021845 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2022/05/17 | 1156464 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/05/17 | 28797 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2022/05/17 | 31519 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/05/17 | 30145 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2022/05/17 | 35241 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/05/17 | 56619 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2022/05/17 | 65055 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2022/05/17 | 86758 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
-2022/05/17 | 95283 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2022/05/17 | 68872 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2022/05/17 | 77067 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2022/05/17 | 27247 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2022/05/17 | 31342 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2022/05/17 | 332412 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2022/05/17 | 394370 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2022/05/17 | 32955 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2022/05/17 | 37081 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/05/17 | 51483 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2022/05/17 | 57269 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/05/17 | 244959 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2022/05/17 | 270299 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/05/17 | 179876 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2022/05/17 | 196115 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2022/05/17 | 92916 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2022/05/17 | 103092 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2022/05/17 | 21315 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2022/05/17 | 24120 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/05/17 | 481498 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2022/05/17 | 46066 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2022/05/17 | 52093 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2022/05/17 | 285713 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2022/05/17 | 326660 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/05/17 | 41304 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2022/05/17 | 45825 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/05/17 | 120617 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2022/05/17 | 135378 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/05/17 | 1302484 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2022/05/17 | 1454763 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/05/17 | 99817 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2022/05/17 | 113052 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/05/17 | 43645 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2022/05/17 | 48826 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2022/05/17 | 25106 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2022/05/17 | 28570 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/05/17 | 56992 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2022/05/17 | 63309 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/05/17 | 135948 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2022/05/17 | 155496 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2022/05/17 | 73478 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2022/05/17 | 78973 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2022/05/17 | 72013 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2022/05/17 | 81462 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2022/05/17 | 259256 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2022/05/17 | 296037 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2022/05/17 | 22147 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2022/05/17 | 25059 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2022/05/17 | 97199 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2022/05/17 | 112588 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2022/05/17 | 64541 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2022/05/17 | 73148 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2022/05/17 | 96632 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2022/05/17 | 115656 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/05/17 | 38426 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2022/05/17 | 43824 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/05/17 | 484369 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2022/05/17 | 565929 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2022/05/17 | 203837 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin.tar.lzma
-2022/05/17 | 247334 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
-2022/05/17 | 152029 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2022/05/17 | 168818 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2022/05/17 | 95432 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2022/05/17 | 109479 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/05/17 | 16502 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2022/05/17 | 18368 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/05/17 | 28422 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2022/05/17 | 30542 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/05/17 | 631280 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2022/05/17 | 681939 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/05/17 | 532452 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2022/05/17 | 598230 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2022/05/17 | 477846 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2022/05/17 | 528018 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/05/17 | 93957 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2022/05/17 | 103336 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/05/17 | 1752147 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2022/05/17 | 1982083 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/05/17 | 68009 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2022/05/17 | 74069 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/05/17 | 27590 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2022/05/17 | 32134 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2022/05/17 | 7752 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2022/05/17 | 8784 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2022/05/17 | 190504 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2022/05/17 | 208808 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2022/05/17 | 251129 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2022/05/17 | 286412 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/05/17 | 99256 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2022/05/17 | 104557 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/05/17 | 126532 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2022/05/17 | 139100 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2022/05/17 | 288198 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2022/05/17 | 325269 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2022/05/17 | 199829 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2022/05/17 | 181516 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2022/05/17 | 49769 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2022/05/17 | 55568 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2022/05/17 | 31412 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2022/05/17 | 35167 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2022/05/17 | 38559 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2022/05/17 | 43916 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/05/17 | 43360 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2022/05/17 | 47923 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/05/17 | 45742 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2022/05/17 | 52326 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2022/05/17 | 197034 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2022/05/17 | 213277 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/05/17 | 36049 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2022/05/17 | 41182 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2022/05/17 | 755742 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2022/05/17 | 824371 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2022/05/17 | 200396 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2022/05/17 | 202834 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2022/05/17 | 210274 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2022/05/17 | 245096 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2022/05/17 | 79024 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2022/05/17 | 88152 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/05/17 | 1181124 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2022/05/17 | 1322740 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2022/05/17 | 20183 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2022/05/17 | 23944 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2022/05/17 | 31588 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2022/05/17 | 37374 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2022/05/17 | 64708 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2022/05/17 | 72886 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2022/05/17 | 50798 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2022/05/17 | 58662 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/05/17 | 693067 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
-2022/05/17 | 758955 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
-2022/05/17 | 1357070 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2022/05/17 | 1501238 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/05/17 | 42817 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2022/05/17 | 52479 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/05/17 | 57618 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2022/05/17 | 63738 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2022/05/17 | 25552 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2022/05/17 | 27634 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/05/17 | 16560 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2022/05/17 | 18491 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/05/17 | 64489 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2022/05/17 | 71006 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2022/05/17 | 156963 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2022/05/17 | 173008 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2022/05/17 | 58665 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2022/05/17 | 67254 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2022/05/17 | 100486 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2022/05/17 | 107705 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2022/05/17 | 2694874 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2022/05/17 | 2820688 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2022/05/17 | 55287 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2022/05/17 | 62381 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2022/05/17 | 37116 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2022/05/17 | 41202 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/05/17 | 28689 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2022/05/17 | 34053 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2022/05/17 | 67704 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2022/05/17 | 73530 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/05/17 | 316242 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2022/05/17 | 351696 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/05/17 | 55758 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
-2022/05/17 | 57527 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/05/17 | 591569 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2022/05/17 | 629431 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2022/05/17 | 39727 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2022/05/17 | 43225 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/05/17 | 277869 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/05/17 | 1453027 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/05/17 | 1340788 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/05/17 | 13514 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2022/05/17 | 14411 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/05/18 | 650885 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/05/18 | 51557 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2022/05/18 | 57330 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/05/18 | 1021847 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2022/05/18 | 1156464 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/05/18 | 28799 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2022/05/18 | 31521 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/05/18 | 30144 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2022/05/18 | 35243 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/05/18 | 56619 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2022/05/18 | 65054 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/05/18 | 86759 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2022/05/18 | 95286 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/05/18 | 68872 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2022/05/18 | 77067 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/05/18 | 27249 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2022/05/18 | 31343 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/05/18 | 332415 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/05/18 | 394371 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/05/18 | 32955 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2022/05/18 | 37081 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/05/18 | 51486 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/05/18 | 57270 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/05/18 | 244960 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2022/05/18 | 270297 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/05/18 | 179878 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2022/05/18 | 196118 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/05/18 | 92918 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2022/05/18 | 103093 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/05/18 | 21315 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2022/05/18 | 24121 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/05/18 | 481497 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/05/18 | 46065 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2022/05/18 | 52094 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/05/18 | 285714 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2022/05/18 | 326661 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/05/18 | 41306 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2022/05/18 | 45825 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/05/18 | 120617 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2022/05/18 | 135376 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/05/18 | 1302483 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2022/05/18 | 1454765 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/05/18 | 99817 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2022/05/18 | 113052 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/05/18 | 43646 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2022/05/18 | 48826 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/05/18 | 25108 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2022/05/18 | 28568 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/05/18 | 56994 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2022/05/18 | 63310 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/05/18 | 135947 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2022/05/18 | 155497 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/05/18 | 73478 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2022/05/18 | 78974 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/05/18 | 72015 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2022/05/18 | 81462 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/05/18 | 259257 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2022/05/18 | 296038 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/05/18 | 22147 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2022/05/18 | 25060 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/05/18 | 97200 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2022/05/18 | 112589 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/05/18 | 64543 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2022/05/18 | 73147 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/05/18 | 96632 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/05/18 | 115657 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/05/18 | 38426 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2022/05/18 | 43824 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/05/18 | 484371 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2022/05/18 | 565929 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/05/18 | 203836 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin.tar.lzma
+2022/05/18 | 247334 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
+2022/05/18 | 152032 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2022/05/18 | 168819 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/05/18 | 95434 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2022/05/18 | 109480 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/05/18 | 16504 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2022/05/18 | 18367 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/05/18 | 28423 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2022/05/18 | 30542 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/05/18 | 631279 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2022/05/18 | 681940 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/05/18 | 532456 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2022/05/18 | 598230 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/05/18 | 477849 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2022/05/18 | 528018 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/05/18 | 93959 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2022/05/18 | 103335 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/05/18 | 1752147 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2022/05/18 | 1982085 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/05/18 | 68010 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2022/05/18 | 74070 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/05/18 | 27591 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2022/05/18 | 32133 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/05/18 | 7753 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2022/05/18 | 8783 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/05/18 | 190506 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2022/05/18 | 208808 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/05/18 | 251128 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2022/05/18 | 286412 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/05/18 | 99257 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2022/05/18 | 104555 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/05/18 | 126533 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/05/18 | 139100 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/05/18 | 288200 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2022/05/18 | 325268 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/05/18 | 199832 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2022/05/18 | 181515 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/05/18 | 49770 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2022/05/18 | 55568 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/05/18 | 31412 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2022/05/18 | 35169 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/05/18 | 38561 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2022/05/18 | 43916 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/05/18 | 43361 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2022/05/18 | 47923 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/05/18 | 45742 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2022/05/18 | 52327 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/05/18 | 197036 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2022/05/18 | 213279 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/05/18 | 36049 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2022/05/18 | 41182 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/05/18 | 755742 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2022/05/18 | 824370 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/05/18 | 200397 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2022/05/18 | 202836 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/05/18 | 210276 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2022/05/18 | 245097 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/05/18 | 79025 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2022/05/18 | 88152 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/05/18 | 1181127 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2022/05/18 | 1322742 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/05/18 | 20184 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2022/05/18 | 23944 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/05/18 | 31588 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2022/05/18 | 37375 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/05/18 | 64710 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2022/05/18 | 72886 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/05/18 | 50799 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2022/05/18 | 58664 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/05/18 | 693067 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
+2022/05/18 | 758951 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/05/18 | 1357072 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2022/05/18 | 1501239 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/05/18 | 42818 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2022/05/18 | 52479 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/05/18 | 57618 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2022/05/18 | 63740 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/05/18 | 25549 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2022/05/18 | 27637 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/05/18 | 16561 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2022/05/18 | 18492 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/05/18 | 64490 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2022/05/18 | 71007 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/05/18 | 156964 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2022/05/18 | 173007 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/05/18 | 58666 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2022/05/18 | 67254 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/05/18 | 100487 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2022/05/18 | 107705 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/05/18 | 2694877 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2022/05/18 | 2820687 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/05/18 | 55286 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2022/05/18 | 62382 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/05/18 | 37116 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2022/05/18 | 41203 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/05/18 | 28689 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2022/05/18 | 34053 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/05/18 | 67705 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2022/05/18 | 73529 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/05/18 | 316244 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2022/05/18 | 351697 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/05/18 | 55757 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2022/05/18 | 57526 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/05/18 | 591569 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2022/05/18 | 629433 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/05/18 | 39728 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2022/05/18 | 43226 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/05/18 | 277839 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/05/18 | 1453700 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/05/18 | 1341007 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/05/18 | 13513 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2022/05/18 | 14410 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma
-2022/05/17 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/05/18 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma
2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma
2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
@@ -300459,7 +300460,7 @@
2022/02/22 | 6917 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma
-2022/05/17 | 965 | systems/win32/miktex/tm/packages/pr.ini
+2022/05/18 | 965 | systems/win32/miktex/tm/packages/pr.ini
2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma
2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma
2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma
@@ -302310,7 +302311,7 @@
2004/06/04 | 404 | tds/tds.sed
2004/06/23 | 65418 | tds/tds.tex
2019/05/29 | 304264 | tds.zip
-2022/05/18 | 186 | timestamp
+2022/05/19 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2022/02/28 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 205d4b7ceb..50f80bd6c3 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 4e4a878945..260fd5031a 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,27 +1,415 @@
-2022/05/17 | 99817 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2022/05/17 | 99256 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2022/05/17 | 97199 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2022/05/17 | 96632 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2022/05/17 | 965 | systems/win32/miktex/tm/packages/pr.ini
+2022/05/18 | 99817 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2022/05/18 | 9934 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-zero-1.0-latex.html
+2022/05/18 | 99257 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2022/05/18 | 97200 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2022/05/18 | 96632 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/05/18 | 965 | systems/win32/miktex/tm/packages/pr.ini
+2022/05/18 | 95434 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2022/05/18 | 95286 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/05/18 | 93959 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2022/05/18 | 92918 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2022/05/18 | 9229 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-88x31.pdf
+2022/05/18 | 9114 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-80x15.eps
+2022/05/18 | 90736 | systems/texlive/tlnet/archive/hyperref.r63323.tar.xz
+2022/05/18 | 88152 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/05/18 | 879836 | macros/latex/contrib/fancyhdr.zip
+2022/05/18 | 8783 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/05/18 | 86759 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2022/05/18 | 860 | macros/latex/contrib/doclicense/doclicense.ins
+2022/05/18 | 859852 | macros/latex/contrib/doclicense.zip
+2022/05/18 | 853305 | macros/latex/contrib/fancyhdr/fancyhdr.pdf
+2022/05/18 | 8473 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-80x15.eps
+2022/05/18 | 84368 | systems/texlive/tlnet/archive/expex-acro.doc.r63319.tar.xz
+2022/05/18 | 824370 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/05/18 | 81462 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/05/18 | 8126 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-80x15.pdf
+2022/05/18 | 811156 | systems/texlive/tlnet/archive/optex.r63325.tar.xz
+2022/05/18 | 796056 | macros/generic/markdown/markdown.pdf
+2022/05/18 | 7940 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-80x15.eps
+2022/05/18 | 79025 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2022/05/18 | 78974 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/05/18 | 7819 | macros/latex/contrib/doclicense/images/doclicense-CC-by-88x31.eps
+2022/05/18 | 7753 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2022/05/18 | 77067 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/05/18 | 758951 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/05/18 | 755742 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2022/05/18 | 7499 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-80x15.pdf
+2022/05/18 | 7497 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-zero-1.0-latex.tex
+2022/05/18 | 7473 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-80x15.eps
+2022/05/18 | 746329 | macros/latex/contrib/verifiche.zip
+2022/05/18 | 74070 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/05/18 | 7400 | systems/texlive/tlnet/archive/adjmulticol.source.r63320.tar.xz
+2022/05/18 | 73529 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/05/18 | 73478 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2022/05/18 | 7344 | macros/latex/contrib/doclicense/manifest.txt
+2022/05/18 | 73147 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/05/18 | 72886 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/05/18 | 72015 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2022/05/18 | 7176 | systems/texlive/tlnet/archive/expex-acro.source.r63319.tar.xz
+2022/05/18 | 71007 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/05/18 | 7048 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-zero-1.0-plaintext.tex
+2022/05/18 | 7002 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-80x15.eps
+2022/05/18 | 693067 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
+2022/05/18 | 68872 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2022/05/18 | 686768 | macros/generic/markdown/markdown.html
+2022/05/18 | 681940 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/05/18 | 68010 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2022/05/18 | 67705 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2022/05/18 | 67254 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/05/18 | 6616 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-80x15.eps
+2022/05/18 | 6580 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-88x31.pdf
+2022/05/18 | 6526 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-80x15.eps
+2022/05/18 | 651183 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/05/18 | 650885 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/05/18 | 65054 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/05/18 | 64710 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2022/05/18 | 6457 | macros/latex/contrib/verifiche/verifiche-example.tex
+2022/05/18 | 64543 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2022/05/18 | 64490 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2022/05/18 | 64042 | macros/latex/contrib/verifiche/verifiche.dtx
+2022/05/18 | 63740 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/05/18 | 63310 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/05/18 | 631279 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2022/05/18 | 629433 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/05/18 | 62382 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/05/18 | 6129 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-80x15.pdf
+2022/05/18 | 598230 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/05/18 | 5965 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-88x31.pdf
+2022/05/18 | 5920 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-unofficial-mr-88x31.pdf
+2022/05/18 | 591569 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2022/05/18 | 58666 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2022/05/18 | 58664 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/05/18 | 5799854 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/05/18 | 5775 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-eu-88x31.pdf
+2022/05/18 | 57618 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2022/05/18 | 57526 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/05/18 | 57330 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/05/18 | 5728 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-88x31.pdf
+2022/05/18 | 57270 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/05/18 | 56994 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2022/05/18 | 5675 | macros/latex/contrib/doclicense/images/doclicense-CC-by-80x15.eps
+2022/05/18 | 56619 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2022/05/18 | 565929 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/05/18 | 5640 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-80x15.pdf
+2022/05/18 | 55757 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2022/05/18 | 55568 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/05/18 | 555223 | macros/latex/contrib/verifiche/verifiche.pdf
+2022/05/18 | 5530 | macros/latex/contrib/doclicense/images/doclicense-CC-cc-zero-unofficial-mr-80x15.pdf
+2022/05/18 | 55286 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2022/05/18 | 5523 | macros/latex/contrib/media4svg/README.md
+2022/05/18 | 551 | macros/latex/contrib/media4svg/ChangeLog
+2022/05/18 | 5472 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-80x15.pdf
+2022/05/18 | 532456 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2022/05/18 | 528018 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/05/18 | 52479 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/05/18 | 52327 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/05/18 | 52094 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/05/18 | 51557 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2022/05/18 | 51486 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/05/18 | 5116 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-eu-88x31.pdf
+2022/05/18 | 50799 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2022/05/18 | 5058 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-88x31.pdf
+2022/05/18 | 49770 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2022/05/18 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/05/18 | 48826 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/05/18 | 484371 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2022/05/18 | 481497 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/05/18 | 47923 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/05/18 | 477849 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2022/05/18 | 47696 | systems/texlive/tlnet/archive/thuthesis.source.r63324.tar.xz
+2022/05/18 | 47116 | systems/texlive/tlnet/archive/biblatex-gb7714-2015.r63322.tar.xz
+2022/05/18 | 4697 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-88x31.pdf
+2022/05/18 | 46065 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2022/05/18 | 45825 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/05/18 | 45742 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2022/05/18 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/05/18 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/05/18 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/05/18 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/05/18 | 4540 | systems/texlive/tlnet/archive/expex-acro.r63319.tar.xz
+2022/05/18 | 4530 | macros/generic/markdown/markdown.css
+2022/05/18 | 4460 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-88x31.pdf
+2022/05/18 | 44197 | macros/latex/contrib/doclicense/doclicense.dtx
+2022/05/18 | 43916 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/05/18 | 43824 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/05/18 | 4365 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-eu-88x31.pdf
+2022/05/18 | 43646 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2022/05/18 | 43468 | systems/texlive/tlnet/archive/thuthesis.r63324.tar.xz
+2022/05/18 | 43361 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2022/05/18 | 43226 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/05/18 | 4312 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-88x31.pdf
+2022/05/18 | 42818 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2022/05/18 | 421 | macros/latex/contrib/doclicense/doclicense-british.ldf
+2022/05/18 | 41789 | macros/latex/contrib/media4svg/example/beamer-example-4.svg
+2022/05/18 | 414812 | systems/texlive/tlnet/archive/hyperref.source.r63323.tar.xz
+2022/05/18 | 41306 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2022/05/18 | 41203 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/05/18 | 41182 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/05/18 | 40787 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-4.0-latex.html
+2022/05/18 | 406392 | systems/texlive/tlnet/archive/texlive-scripts.doc.r63316.tar.xz
+2022/05/18 | 39915 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-4.0-latex.html
+2022/05/18 | 39728 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2022/05/18 | 394371 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/05/18 | 38979 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-4.0-latex.html
+2022/05/18 | 38937 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-4.0-latex.html
+2022/05/18 | 38561 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2022/05/18 | 38426 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2022/05/18 | 3837 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-88x31.pdf
+2022/05/18 | 38132 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-4.0-latex.html
+2022/05/18 | 3812 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-88x31.pdf
+2022/05/18 | 3809 | macros/generic/xint/README.md
+2022/05/18 | 38078 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-4.0-latex.html
+2022/05/18 | 37375 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/05/18 | 37116 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2022/05/18 | 37081 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/05/18 | 3672520 | systems/texlive/tlnet/archive/hyperref.doc.r63323.tar.xz
+2022/05/18 | 3638 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-80x15.pdf
+2022/05/18 | 36049 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2022/05/18 | 3579 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-80x15.pdf
+2022/05/18 | 3572564 | dviware/dvisvgm.zip
+2022/05/18 | 3538 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-80x15.pdf
+2022/05/18 | 35243 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/05/18 | 35169 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/05/18 | 351697 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/05/18 | 34053 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/05/18 | 3357 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-80x15.pdf
+2022/05/18 | 332415 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/05/18 | 32955 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2022/05/18 | 3279 | macros/latex/contrib/media4svg/media4svg.lua
+2022/05/18 | 3273 | macros/latex/contrib/doclicense/doclicense-ukrainian.ldf
+2022/05/18 | 326661 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/05/18 | 3253 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-80x15.pdf
+2022/05/18 | 325268 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/05/18 | 32133 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/05/18 | 31 | macros/generic/markdown/VERSION
+2022/05/18 | 31754 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-88x31.eps
+2022/05/18 | 316244 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2022/05/18 | 31588 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2022/05/18 | 31521 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/05/18 | 31412 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2022/05/18 | 31343 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/05/18 | 312532 | systems/texlive/tlnet/archive/adjmulticol.doc.r63320.tar.xz
+2022/05/18 | 308 | macros/latex/contrib/doclicense/doclicense-canadien.ldf
+2022/05/18 | 3080 | systems/texlive/tlnet/archive/adjmulticol.r63320.tar.xz
+2022/05/18 | 307 | macros/latex/contrib/doclicense/doclicense-newzealand.ldf
+2022/05/18 | 307 | macros/latex/contrib/doclicense/doclicense-australian.ldf
+2022/05/18 | 307 | macros/latex/contrib/doclicense/doclicense-acadian.ldf
+2022/05/18 | 306 | macros/latex/contrib/doclicense/doclicense-USenglish.ldf
+2022/05/18 | 306 | macros/latex/contrib/doclicense/doclicense-UKenglish.ldf
+2022/05/18 | 3067 | macros/latex/contrib/doclicense/doclicense-marathi.ldf
+2022/05/18 | 3064 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-80x15.pdf
+2022/05/18 | 305 | macros/latex/contrib/doclicense/doclicense-canadian.ldf
+2022/05/18 | 305 | macros/latex/contrib/doclicense/doclicense-american.ldf
+2022/05/18 | 30542 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/05/18 | 3052 | macros/latex/contrib/doclicense/images/doclicense-CC-by-88x31.pdf
+2022/05/18 | 303 | macros/latex/contrib/doclicense/doclicense-ngerman.ldf
+2022/05/18 | 3022 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-80x15.pdf
+2022/05/18 | 30144 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2022/05/18 | 30123 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-88x31.eps
+2022/05/18 | 2990 | macros/latex/contrib/doclicense/doclicense-polish.ldf
+2022/05/18 | 296038 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/05/18 | 2954024 | systems/texlive/tlnet/archive/beamer.doc.r63321.tar.xz
+2022/05/18 | 288200 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2022/05/18 | 28799 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2022/05/18 | 28689 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2022/05/18 | 286412 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/05/18 | 285714 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2022/05/18 | 28568 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/05/18 | 285607 | info/tex-nutshell.zip
+2022/05/18 | 28423 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2022/05/18 | 2820687 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/05/18 | 2819401 | install/macros/generic/xint.tds.zip
+2022/05/18 | 2810 | macros/latex/contrib/doclicense/doclicense-russian.ldf
+2022/05/18 | 278308 | macros/latex/contrib/media4svg/example/beamer-example-2.svg
+2022/05/18 | 277853 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/05/18 | 277839 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/05/18 | 27637 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/05/18 | 27591 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2022/05/18 | 274374 | macros/latex/contrib/doclicense/doclicense.pdf
+2022/05/18 | 2727 | macros/latex/contrib/doclicense/images/doclicense-CC-by-80x15.pdf
+2022/05/18 | 27249 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2022/05/18 | 2706904 | macros/generic/xint.zip
+2022/05/18 | 270297 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/05/18 | 2694877 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2022/05/18 | 26124 | macros/latex/contrib/media4svg/media4svg.sty
+2022/05/18 | 2605 | macros/latex/contrib/doclicense/README.md
+2022/05/18 | 259257 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2022/05/18 | 25653 | macros/latex/contrib/media4svg/example/beamer-example-1.svg
+2022/05/18 | 256523 | info/tex-nutshell/tex-nutshell.pdf
+2022/05/18 | 25549 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2022/05/18 | 25483925 | systems/texlive/tlnet/install-tl.zip
+2022/05/18 | 251128 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2022/05/18 | 25108 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2022/05/18 | 25060 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/05/18 | 247334 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
+2022/05/18 | 245097 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/05/18 | 244960 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2022/05/18 | 2432 | macros/latex/contrib/doclicense/doclicense-swedish.ldf
+2022/05/18 | 24121 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/05/18 | 23944 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/05/18 | 2391 | macros/latex/contrib/doclicense/doclicense-esperanto.ldf
+2022/05/18 | 2379132 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/05/18 | 23486 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-3.0-latex.html
+2022/05/18 | 23457 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-3.0-latex.html
+2022/05/18 | 2327776 | info/latex-via-exemplos.zip
+2022/05/18 | 23182 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-88x31.eps
+2022/05/18 | 2293 | macros/latex/contrib/doclicense/doclicense-bulgarian.ldf
+2022/05/18 | 2246 | macros/latex/contrib/doclicense/doclicense-french.ldf
+2022/05/18 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua
+2022/05/18 | 22306 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-3.0-plaintext.tex
+2022/05/18 | 22239 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-3.0-plaintext.tex
+2022/05/18 | 22147 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2022/05/18 | 22108 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-3.0-latex.tex
+2022/05/18 | 22078 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-3.0-latex.tex
+2022/05/18 | 2205 | macros/latex/contrib/fancyhdr/fancyhdr.ins
+2022/05/18 | 21724 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-3.0-latex.html
+2022/05/18 | 213279 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/05/18 | 21315 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2022/05/18 | 210276 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2022/05/18 | 20897 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-80x15.eps
+2022/05/18 | 208808 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/05/18 | 20850 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-4.0-plaintext.tex
+2022/05/18 | 20781 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-3.0-latex.html
+2022/05/18 | 2057 | macros/latex/contrib/doclicense/Makefile
+2022/05/18 | 2057 | macros/latex/contrib/doclicense/doclicense-german.ldf
+2022/05/18 | 20479 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-3.0-plaintext.tex
+2022/05/18 | 20464318 | systems/texlive/tlnet/install-tl-windows.exe
+2022/05/18 | 20426 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-sa-4.0-latex.tex
+2022/05/18 | 203836 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin.tar.lzma
+2022/05/18 | 20356 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-3.0-latex.tex
+2022/05/18 | 2033 | macros/latex/contrib/fancyhdr/README
+2022/05/18 | 202836 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/05/18 | 20184 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2022/05/18 | 20138 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-4.0-plaintext.tex
+2022/05/18 | 2004 | macros/latex/contrib/doclicense/doclicense-italian.ldf
+2022/05/18 | 200397 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2022/05/18 | 199832 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2022/05/18 | 19976 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-3.0-latex.html
+2022/05/18 | 1991 | macros/latex/contrib/doclicense/doclicense-galician.ldf
+2022/05/18 | 1982085 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/05/18 | 19772 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-sa-4.0-latex.tex
+2022/05/18 | 197036 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2022/05/18 | 196170 | macros/latex/contrib/fancyhdr/fancyhdr.dtx
+2022/05/18 | 196118 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/05/18 | 19466 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-3.0-plaintext.tex
+2022/05/18 | 19416 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-3.0-latex.tex
+2022/05/18 | 19347 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-4.0-plaintext.tex
+2022/05/18 | 191888 | macros/latex/contrib/verifiche/verifiche-example.pdf
+2022/05/18 | 19127 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-4.0-plaintext.tex
+2022/05/18 | 19124 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-80x15.eps
+2022/05/18 | 190506 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2022/05/18 | 19048 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-3.0-latex.html
+2022/05/18 | 19004 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-4.0-latex.tex
+2022/05/18 | 1890317 | macros/generic/xint/xint.dtx
+2022/05/18 | 18889 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-88x31.eps
+2022/05/18 | 18797 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-4.0-latex.tex
+2022/05/18 | 18657 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-4.0-plaintext.tex
+2022/05/18 | 18650 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-3.0-plaintext.tex
+2022/05/18 | 18609 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nc-nd-3.0-latex.tex
+2022/05/18 | 18492 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/05/18 | 18436 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-4.0-plaintext.tex
+2022/05/18 | 18374 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-4.0-latex.tex
+2022/05/18 | 18367 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/05/18 | 18164 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-4.0-latex.tex
+2022/05/18 | 181515 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/05/18 | 179878 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2022/05/18 | 17684 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-3.0-latex.tex
+2022/05/18 | 17650 | macros/latex/contrib/doclicense/license-texts/doclicense-CC-by-nd-3.0-plaintext.tex
+2022/05/18 | 1752147 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2022/05/18 | 17467504 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/05/18 | 173007 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/05/18 | 17092 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-88x31.eps
+2022/05/18 | 1702 | macros/latex/contrib/doclicense/doclicense-catalan.ldf
+2022/05/18 | 168819 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/05/18 | 167032 | systems/texlive/tlnet/archive/beamer.r63321.tar.xz
+2022/05/18 | 1669 | macros/latex/contrib/doclicense/doclicense-croatian.ldf
+2022/05/18 | 1665 | macros/latex/contrib/doclicense/doclicense-portuguese.ldf
+2022/05/18 | 16561 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2022/05/18 | 16504 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2022/05/18 | 164746 | install/macros/latex/contrib/media4svg.tds.zip
+2022/05/18 | 16411 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-unofficial-mr-88x31.eps
+2022/05/18 | 1637 | macros/latex/contrib/doclicense/doclicense-brazilian.ldf
+2022/05/18 | 1634 | macros/latex/contrib/doclicense/doclicense-spanish.ldf
+2022/05/18 | 163250 | macros/latex/contrib/media4svg.zip
+2022/05/18 | 1620 | macros/latex/contrib/doclicense/doclicense-chinese-tw.ldf
+2022/05/18 | 1613 | macros/latex/contrib/doclicense/doclicense-english.ldf
+2022/05/18 | 1597 | macros/latex/contrib/doclicense/doclicense-chinese-utf8.ldf
+2022/05/18 | 156964 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2022/05/18 | 155497 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/05/18 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/05/18 | 15356 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-unofficial-mr-80x15.eps
+2022/05/18 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/05/18 | 15260 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-eu-88x31.eps
+2022/05/18 | 152032 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2022/05/18 | 15190 | macros/latex/contrib/media4svg/example/beamer-example-3.svg
+2022/05/18 | 15146 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-88x31.eps
+2022/05/18 | 1501239 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/05/18 | 14916 | macros/latex/contrib/doclicense/images/doclicense-CC-cc-zero-unofficial-mr-80x15.eps
+2022/05/18 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/05/18 | 1454765 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/05/18 | 1454074 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/05/18 | 1453700 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/05/18 | 1451236 | systems/texlive/tlnet/archive/optex.doc.r63325.tar.xz
+2022/05/18 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/05/18 | 1445 | macros/latex/contrib/doclicense/doclicense-chinese-gbk.ldf
+2022/05/18 | 14410 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/05/18 | 142785 | macros/generic/xint/CHANGES.html
+2022/05/18 | 1418592 | systems/texlive/tlnet/archive/thuthesis.doc.r63324.tar.xz
+2022/05/18 | 14115 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-unofficial-mr-80x15.eps
+2022/05/18 | 1397 | macros/latex/contrib/doclicense/doclicense-japanese.ldf
+2022/05/18 | 139100 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/05/18 | 1375664 | systems/texlive/tlnet/archive/biblatex-gb7714-2015.doc.r63322.tar.xz
+2022/05/18 | 135947 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2022/05/18 | 1357072 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2022/05/18 | 13562 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-eu-88x31.eps
+2022/05/18 | 135376 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/05/18 | 13513 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2022/05/18 | 13505 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-unofficial-mr-80x15.eps
+2022/05/18 | 13437 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-88x31.eps
+2022/05/18 | 1341007 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/05/18 | 1340354 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/05/18 | 1322742 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/05/18 | 1302483 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2022/05/18 | 126533 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/05/18 | 12331 | macros/latex/contrib/doclicense/images/doclicense-CC-zero-88x31.eps
+2022/05/18 | 12246 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-nd-unofficial-mr-88x31.pdf
+2022/05/18 | 120617 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2022/05/18 | 1181127 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2022/05/18 | 1175167 | macros/generic/xint/sourcexint.pdf
+2022/05/18 | 11686 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-sa-unofficial-mr-88x31.pdf
+2022/05/18 | 11647 | macros/latex/contrib/doclicense/images/doclicense-CC-by-sa-88x31.eps
+2022/05/18 | 1159396 | install/macros/generic/markdown.tds.zip
+2022/05/18 | 115713 | info/tex-nutshell/tex-nutshell.tex
+2022/05/18 | 115657 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/05/18 | 1156464 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/05/18 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/05/18 | 11390 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-eu-88x31.eps
+2022/05/18 | 113052 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/05/18 | 11261 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nc-88x31.eps
+2022/05/18 | 112589 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/05/18 | 1098757 | macros/generic/markdown.zip
+2022/05/18 | 109732 | systems/texlive/tlnet/archive/texlive-scripts.r63316.tar.xz
+2022/05/18 | 109480 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/05/18 | 10917 | macros/latex/contrib/doclicense/images/doclicense-CC-by-unofficial-mr-88x31.eps
+2022/05/18 | 107705 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/05/18 | 1058714 | macros/generic/xint/xint.pdf
+2022/05/18 | 104555 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/05/18 | 103335 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/05/18 | 103093 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/05/18 | 1021847 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2022/05/18 | 100487 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2022/05/18 | 10011 | macros/latex/contrib/doclicense/images/doclicense-CC-by-nd-88x31.eps
2022/05/17 | 959 | macros/latex/contrib/beamer/base/themes/theme/beamerthemePaloAlto.sty
2022/05/17 | 954 | macros/latex/contrib/beamer/doc/emulation-examples/beamerexample-foils.tex
-2022/05/17 | 95432 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2022/05/17 | 95283 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
2022/05/17 | 951 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeBerkeley.sty
2022/05/17 | 9407 | macros/latex/contrib/beamer/base/beamerbasedecode.sty
-2022/05/17 | 93957 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2022/05/17 | 92916 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
2022/05/17 | 9209 | macros/latex/contrib/beamer/base/beamerbaseframesize.sty
2022/05/17 | 91739 | macros/generic/expex-acro.zip
2022/05/17 | 9134 | macros/latex/contrib/beamer/doc/beamerug-graphics.tex
2022/05/17 | 908 | macros/latex/contrib/hyperref/doc/hyperref-doc2.html
-2022/05/17 | 90752 | systems/texlive/tlnet/archive/hyperref.r63313.tar.xz
2022/05/17 | 902 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeBoadilla.sty
-2022/05/17 | 88152 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
2022/05/17 | 87971 | macros/generic/expex-acro/expex-acro.pdf
-2022/05/17 | 8784 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
2022/05/17 | 877224 | macros/latex/contrib/hyperref/hyperref.dtx
-2022/05/17 | 86758 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
2022/05/17 | 863 | macros/latex/contrib/thuthesis/thuthesis-inline.cbx
2022/05/17 | 861 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic1.jpg
2022/05/17 | 858 | macros/latex/contrib/hyperref/doc/hyperref-doc5.html
@@ -32,138 +420,80 @@
2022/05/17 | 8317 | macros/latex/contrib/beamer/doc/beamerug-tricks.tex
2022/05/17 | 8313 | macros/latex/contrib/beamer/base/beamerbasemisc.sty
2022/05/17 | 8300 | macros/latex/contrib/beamer/doc/solutions/conference-talks/conference-ornate-20min.fr.tex
-2022/05/17 | 824371 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
2022/05/17 | 823 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemestructure.sty
-2022/05/17 | 81462 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
2022/05/17 | 7986 | macros/latex/contrib/beamer/doc/beamerug-twoscreens.tex
2022/05/17 | 790 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeHannover.sty
-2022/05/17 | 79024 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2022/05/17 | 78973 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
2022/05/17 | 7810 | macros/optex/README
2022/05/17 | 778 | macros/latex/contrib/thuthesis/thuthesis-bachelor.bbx
2022/05/17 | 7755 | macros/latex/contrib/beamer/base/beamerbasetoc.sty
-2022/05/17 | 7752 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
2022/05/17 | 771 | macros/latex/contrib/hyperref/doc/hyperref-doc3.html
-2022/05/17 | 77067 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
2022/05/17 | 768 | macros/latex/contrib/hyperref/doc/hyperref-doc8.html
2022/05/17 | 768 | macros/latex/contrib/hyperref/doc/hyperref-doc7.html
2022/05/17 | 768 | macros/latex/contrib/hyperref/doc/hyperref-doc6.html
2022/05/17 | 76557 | macros/latex/contrib/beamer/doc/beamerug-frames.tex
-2022/05/17 | 758955 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/05/17 | 75 | macros/generic/markdown/examples/scientists.csv
2022/05/17 | 7574 | macros/latex/contrib/beamer/base/beamerbasemodes.sty
2022/05/17 | 7558 | macros/latex/contrib/beamer/doc/solutions/conference-talks/conference-ornate-20min.de.tex
-2022/05/17 | 755742 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
2022/05/17 | 7543 | macros/latex/contrib/hyperref/hyperref-patches.dtx
2022/05/17 | 75212 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md
-2022/05/17 | 74069 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/05/17 | 73530 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/05/17 | 73478 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
2022/05/17 | 7344 | macros/latex/contrib/beamer/base/beamerbaseboxes.sty
-2022/05/17 | 73148 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/05/17 | 7322 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/05/17 | 7298 | macros/latex/contrib/thuthesis/README.md
-2022/05/17 | 72886 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
2022/05/17 | 720 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemesidebartab.sty
2022/05/17 | 7204 | macros/latex/contrib/beamer/CHANGELOG.md
-2022/05/17 | 72013 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
2022/05/17 | 716 | macros/latex/contrib/beamer/doc/beamerinnerthemeexample.tex
-2022/05/17 | 71006 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
2022/05/17 | 709 | macros/latex/contrib/beamer/base/themes/font/beamerfontthemestructuresmallcapsserif.sty
2022/05/17 | 7089 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemedefault.sty
2022/05/17 | 702 | macros/latex/contrib/beamer/base/themes/font/beamerfontthemestructureitalicserif.sty
2022/05/17 | 701 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemecompatibility.sty
2022/05/17 | 6946 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthemedefault.sty
-2022/05/17 | 693067 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
-2022/05/17 | 68872 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
2022/05/17 | 6858 | macros/latex/contrib/beamer/doc/solutions/conference-talks/conference-ornate-20min.en.tex
-2022/05/17 | 681939 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/05/17 | 68009 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2022/05/17 | 67704 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2022/05/17 | 67254 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
2022/05/17 | 671 | macros/latex/contrib/beamer/base/themes/font/beamerfontthemestructurebold.sty
2022/05/17 | 6578 | macros/latex/contrib/beamer/base/multimedia/xmpmulti.sty
-2022/05/17 | 651183 | systems/win32/miktex/tm/packages/files.csv.lzma
-2022/05/17 | 650885 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/05/17 | 65055 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2022/05/17 | 64708 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2022/05/17 | 64541 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2022/05/17 | 64489 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
2022/05/17 | 637 | macros/latex/contrib/beamer/base/beamerbasetranslator.sty
-2022/05/17 | 63738 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2022/05/17 | 63309 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
2022/05/17 | 6319 | macros/latex/contrib/beamer/doc/beamerug-installation.tex
-2022/05/17 | 631280 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
2022/05/17 | 63065 | macros/latex/contrib/beamer/doc/beamerug-localstructure.tex
-2022/05/17 | 629431 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2022/05/17 | 62381 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/05/17 | 623398 | macros/generic/markdown/markdown.dtx
2022/05/17 | 6217 | macros/latex/contrib/beamer/base/patch/beamerpatchparalist.sty
2022/05/17 | 613 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic4.jpg
2022/05/17 | 6039 | macros/latex/contrib/beamer/doc/solutions/generic-talks/generic-ornate-15min-45min.fr.tex
2022/05/17 | 602 | macros/latex/contrib/thuthesis/latexmkrc
-2022/05/17 | 598230 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
2022/05/17 | 5966 | macros/latex/contrib/beamer/base/emulation/beamerprosper.sty
2022/05/17 | 594 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeEastLansing.sty
-2022/05/17 | 591569 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2022/05/17 | 58665 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2022/05/17 | 58662 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
2022/05/17 | 582 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemelily.sty
+2022/05/17 | 581850 | info/latex-via-exemplos/latex-via-exemplos.tex
2022/05/17 | 580 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemetree.sty
-2022/05/17 | 5800379 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/05/17 | 57618 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
2022/05/17 | 5753 | macros/latex/contrib/beamer/base/beamerbasetemplates.sty
-2022/05/17 | 57527 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
2022/05/17 | 5736 | macros/latex/contrib/hyperref/xr-hyper.sty
-2022/05/17 | 57331 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/05/17 | 57269 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
2022/05/17 | 5712 | macros/latex/contrib/beamer/base/beamerbasenotes.sty
2022/05/17 | 569 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeRochester.sty
-2022/05/17 | 56992 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2022/05/17 | 56619 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2022/05/17 | 565929 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
2022/05/17 | 558 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemeshadow.sty
2022/05/17 | 5584 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/makeall.py
2022/05/17 | 557 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeMadrid.sty
-2022/05/17 | 55758 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
-2022/05/17 | 55568 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2022/05/17 | 55287 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
2022/05/17 | 5514 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-style.tex
2022/05/17 | 5492 | macros/latex/contrib/beamer/doc/solutions/generic-talks/generic-ornate-15min-45min.de.tex
2022/05/17 | 548 | macros/latex/contrib/thuthesis/data/acknowledgements.tex
2022/05/17 | 547609 | macros/latex/contrib/beamer/doc/beamerexample-lecture-beamer-version.pdf
2022/05/17 | 5438 | macros/latex/contrib/thuthesis/data/denotation.tex
2022/05/17 | 5356 | macros/latex/contrib/beamer/base/beamerbasetitle.sty
-2022/05/17 | 532452 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
2022/05/17 | 53027 | macros/latex/contrib/adjmulticol/sample.pdf
-2022/05/17 | 528018 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
2022/05/17 | 5252 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthemesidebar.sty
-2022/05/17 | 52479 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/05/17 | 52326 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2022/05/17 | 52093 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
2022/05/17 | 51776 | macros/latex/contrib/beamer/base/art/beamericononline.eps
-2022/05/17 | 51557 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2022/05/17 | 51483 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
2022/05/17 | 513879 | macros/latex/contrib/hyperref/doc/hyperref-doc.html
2022/05/17 | 5103 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthememiniframes.sty
2022/05/17 | 5086 | macros/latex/contrib/hyperref/hyperref.ins
-2022/05/17 | 50798 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
2022/05/17 | 5073 | macros/latex/contrib/beamer/doc/solutions/generic-talks/generic-ornate-15min-45min.en.tex
2022/05/17 | 504 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeBerlin.sty
2022/05/17 | 501 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeIlmenau.sty
2022/05/17 | 50187 | macros/latex/contrib/hyperref/hluatex.dtx
2022/05/17 | 49902 | macros/latex/contrib/thuthesis/thuthesis-author-year.bst
-2022/05/17 | 49769 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
2022/05/17 | 4960 | macros/latex/contrib/thuthesis/data/chap02.tex
2022/05/17 | 493 | macros/latex/contrib/adjmulticol/README
2022/05/17 | 490 | macros/latex/contrib/beamer/doc/beamerfontthemeexample.tex
-2022/05/17 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2022/05/17 | 48826 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2022/05/17 | 486 | macros/latex/contrib/beamer/doc/beamerthemeexample.tex
2022/05/17 | 485 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeAnnArbor.sty
-2022/05/17 | 484369 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
2022/05/17 | 482 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemeplain.sty
-2022/05/17 | 481498 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
2022/05/17 | 4796 | macros/latex/contrib/thuthesis/thusetup.tex
-2022/05/17 | 47923 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/05/17 | 477846 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
2022/05/17 | 471 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic3.jpg
2022/05/17 | 471 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeCambridgeUS.sty
2022/05/17 | 470 | macros/generic/expex-acro/README.md
@@ -173,61 +503,40 @@
2022/05/17 | 462 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeDresden.sty
2022/05/17 | 46116 | macros/latex/contrib/thuthesis/thuthesis-numeric.bst
2022/05/17 | 46113 | macros/latex/contrib/thuthesis/thuthesis-bachelor.bst
-2022/05/17 | 46066 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
2022/05/17 | 459 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeSzeged.sty
-2022/05/17 | 45825 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/05/17 | 45742 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2022/05/17 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/05/17 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2022/05/17 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/05/17 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2022/05/17 | 4548 | macros/latex/contrib/beamer/base/beamerbasetheorems.sty
+2022/05/17 | 4485 | macros/generic/markdown/docstrip.cfg
2022/05/17 | 4482 | macros/optex/doc/optex-doc.tex
2022/05/17 | 4479 | macros/latex/contrib/hyperref/README.md
2022/05/17 | 4468871 | install/macros/latex/contrib/hyperref.tds.zip
2022/05/17 | 441714 | macros/latex/contrib/beamer/doc/beamerexample-lecture-print-version.pdf
-2022/05/17 | 43916 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/05/17 | 43824 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
2022/05/17 | 4373 | macros/latex/contrib/beamer/doc/beamerug-transparencies.tex
2022/05/17 | 4371 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthemesmoothbars.sty
-2022/05/17 | 43645 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
2022/05/17 | 435 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic5.jpg
2022/05/17 | 433 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemebars.sty
-2022/05/17 | 43360 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2022/05/17 | 43225 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
2022/05/17 | 431 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemeclassic.sty
2022/05/17 | 4288435 | macros/latex/contrib/hyperref.zip
-2022/05/17 | 42817 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
2022/05/17 | 425 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeFrankfurt.sty
2022/05/17 | 4252 | macros/latex/contrib/beamer/base/themes/inner/beamerinnerthemeinmargin.sty
2022/05/17 | 4236 | macros/latex/contrib/beamer/base/themes/font/beamerfontthemedefault.sty
2022/05/17 | 420 | macros/latex/contrib/thuthesis/ref/appendix.bib
-2022/05/17 | 414808 | systems/texlive/tlnet/archive/hyperref.source.r63313.tar.xz
-2022/05/17 | 41304 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
2022/05/17 | 41261 | macros/latex/contrib/beamer/doc/beamerug-guidelines.tex
2022/05/17 | 4124 | macros/optex/base/optex.ini
-2022/05/17 | 41202 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/05/17 | 41182 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2022/05/17 | 407 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeJuanLesPins.sty
2022/05/17 | 407 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeDarmstadt.sty
2022/05/17 | 40720 | macros/latex/contrib/beamer/doc/beamerug-license.tex
-2022/05/17 | 406392 | systems/texlive/tlnet/archive/texlive-scripts.doc.r63311.tar.xz
2022/05/17 | 40585 | macros/latex/contrib/beamer/doc/beamerug-overlays.tex
2022/05/17 | 404492 | macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
2022/05/17 | 403 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeWarsaw.sty
2022/05/17 | 402 | macros/latex/contrib/beamer/base/themes/inner/beamerinnerthemecircles.sty
2022/05/17 | 4026 | macros/latex/contrib/beamer/base/beamerbaseverbatim.sty
2022/05/17 | 401 | macros/latex/contrib/beamer/base/themes/inner/beamerinnerthemerectangles.sty
-2022/05/17 | 39727 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
2022/05/17 | 39707 | macros/latex/contrib/beamer/doc/beamerug-globalstructure.tex
2022/05/17 | 396 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemesplit.sty
-2022/05/17 | 394370 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
2022/05/17 | 393 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeLuebeck.sty
2022/05/17 | 39313 | macros/latex/contrib/thuthesis/CHANGELOG.md
2022/05/17 | 391 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeAntibes.sty
2022/05/17 | 390 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeCopenhagen.sty
-2022/05/17 | 38559 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2022/05/17 | 38426 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
2022/05/17 | 384001 | macros/latex/contrib/hyperref/doc/slides.pdf
2022/05/17 | 3836 | macros/latex/contrib/thuthesis/data/chap03.tex
2022/05/17 | 380 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-print-version.tex
@@ -235,184 +544,114 @@
2022/05/17 | 378 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeBergen.sty
2022/05/17 | 378364 | systems/texlive/tlnet/archive/erewhon.doc.r63312.tar.xz
2022/05/17 | 377654 | macros/latex/contrib/thuthesis/thuthesis-example.pdf
-2022/05/17 | 37374 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2022/05/17 | 37116 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2022/05/17 | 37081 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/05/17 | 3673160 | systems/texlive/tlnet/archive/hyperref.doc.r63313.tar.xz
2022/05/17 | 366 | macros/latex/contrib/thuthesis/thuthesis-bachelor.cbx
2022/05/17 | 365 | macros/latex/contrib/thuthesis/thuthesis-numeric.cbx
2022/05/17 | 36330 | macros/generic/expex-acro/expex-acro.dtx
2022/05/17 | 36306 | macros/latex/contrib/beamer/doc/beamerug-color.tex
2022/05/17 | 3615 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeboxes.sty
-2022/05/17 | 36049 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
2022/05/17 | 35658 | macros/latex/contrib/beamer/doc/beamerug-animations.tex
2022/05/17 | 3560207 | macros/latex/contrib/beamer.zip
2022/05/17 | 355 | macros/latex/contrib/beamer/base/themes/theme/beamerthemedefault.sty
2022/05/17 | 3556821 | install/macros/latex/contrib/beamer.tds.zip
-2022/05/17 | 35241 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
2022/05/17 | 351 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeMontpellier.sty
2022/05/17 | 351 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeMalmoe.sty
-2022/05/17 | 351696 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/05/17 | 35167 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
2022/05/17 | 3464 | macros/latex/contrib/beamer/base/art/beamericonarticle.tex
2022/05/17 | 3444 | macros/latex/contrib/beamer/doc/licenses/manifest-code.txt
2022/05/17 | 343911 | macros/latex/contrib/beamer/doc/beamerexample-conference-talk.pdf
2022/05/17 | 342 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-beamer-version.tex
-2022/05/17 | 34053 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
2022/05/17 | 33808 | macros/latex/contrib/beamer/doc/beamerug-elements.tex
2022/05/17 | 333 | macros/latex/contrib/beamer/base/themes/font/beamerfontthemeprofessionalfonts.sty
2022/05/17 | 332 | macros/latex/contrib/beamer/base/themes/theme/beamerthemePittsburgh.sty
-2022/05/17 | 332412 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
2022/05/17 | 33143 | macros/latex/contrib/beamer/base/art/beamericononline.20.eps
-2022/05/17 | 32955 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
2022/05/17 | 3294 | macros/latex/contrib/beamer/base/beamerbasearticle.sty
2022/05/17 | 32823 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-logo.pdf
-2022/05/17 | 326660 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
2022/05/17 | 32653 | macros/latex/contrib/beamer/doc/beamerug-emulation.tex
-2022/05/17 | 325269 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2022/05/17 | 32134 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
2022/05/17 | 320228 | macros/latex/contrib/adjmulticol.zip
-2022/05/17 | 316242 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
2022/05/17 | 3161 | macros/latex/contrib/hyperref/bmhydoc.sty
-2022/05/17 | 31588 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2022/05/17 | 31519 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/05/17 | 31412 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
2022/05/17 | 313 | macros/latex/contrib/thuthesis/spine.tex
-2022/05/17 | 31342 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/05/17 | 3129 | macros/generic/markdown/examples/example.md
2022/05/17 | 312211 | macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
2022/05/17 | 3072 | macros/latex/contrib/beamer/doc/solutions/short-talks/speaker_introduction-ornate-2min.fr.tex
-2022/05/17 | 30542 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
2022/05/17 | 3049 | macros/latex/contrib/beamer/base/art/beamericonbook.tex
-2022/05/17 | 30145 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
2022/05/17 | 2961 | macros/latex/contrib/beamer/doc/solutions/short-talks/speaker_introduction-ornate-2min.de.tex
-2022/05/17 | 296037 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
2022/05/17 | 2958 | macros/latex/contrib/beamer/base/art/beamericonarticle.20.pdf
2022/05/17 | 2956 | macros/latex/contrib/thuthesis/data/chap04.tex
2022/05/17 | 2936 | macros/latex/contrib/beamer/base/art/beamericonarticle.pdf
2022/05/17 | 29020 | macros/latex/contrib/beamer/base/beamerbasenavigation.sty
-2022/05/17 | 288198 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2022/05/17 | 28797 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2022/05/17 | 28689 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2022/05/17 | 286412 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
2022/05/17 | 285 | macros/latex/contrib/thuthesis/data/comments.tex
-2022/05/17 | 285713 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2022/05/17 | 28570 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
2022/05/17 | 28508 | macros/latex/contrib/beamer/base/beamerbaseoverlay.sty
-2022/05/17 | 28422 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
2022/05/17 | 28408 | macros/latex/contrib/hyperref/backref.dtx
-2022/05/17 | 2820688 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
2022/05/17 | 279 | macros/latex/contrib/hyperref/ntheorem-hyper.sty
-2022/05/17 | 277869 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/05/17 | 277852 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
2022/05/17 | 2771 | macros/latex/contrib/beamer/doc/beamerug-solutions.tex
-2022/05/17 | 27634 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
2022/05/17 | 275 | macros/latex/contrib/hyperref/minitoc-hyper.sty
-2022/05/17 | 27590 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
2022/05/17 | 2754 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthemeshadow.sty
2022/05/17 | 2734 | macros/latex/contrib/beamer/base/art/beamericonbook.20.pdf
-2022/05/17 | 27247 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
2022/05/17 | 27164 | macros/latex/contrib/hyperref/nameref.dtx
-2022/05/17 | 270299 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/05/17 | 2694874 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
2022/05/17 | 2667 | macros/latex/contrib/beamer/base/art/beamericonbook.pdf
2022/05/17 | 266279 | macros/latex/contrib/adjmulticol/adjmulticol.pdf
2022/05/17 | 26603 | macros/latex/contrib/beamer/base/art/beamericonarticle.eps
2022/05/17 | 2627 | macros/latex/contrib/beamer/doc/solutions/short-talks/speaker_introduction-ornate-2min.en.tex
2022/05/17 | 26232 | macros/latex/contrib/beamer/base/beamerbasecompatibility.sty
2022/05/17 | 2596492 | systems/texlive/tlnet/archive/erewhon.r63312.tar.xz
-2022/05/17 | 259256 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
2022/05/17 | 2586 | macros/latex/contrib/thuthesis/thuthesis-example.tex
2022/05/17 | 25572 | macros/latex/contrib/beamer/base/beamerbaseframe.sty
-2022/05/17 | 25552 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2022/05/17 | 25483932 | systems/texlive/tlnet/install-tl.zip
2022/05/17 | 2529 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthemesplit.sty
-2022/05/17 | 251129 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2022/05/17 | 25106 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2022/05/17 | 25059 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2022/05/17 | 24762 | macros/latex/contrib/beamer/base/art/beamericonbook.20.eps
-2022/05/17 | 247334 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
2022/05/17 | 247116 | macros/latex/contrib/hyperref/paperslides99.zip
2022/05/17 | 24611 | macros/latex/contrib/beamer/base/art/beamericononline.pdf
-2022/05/17 | 245096 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2022/05/17 | 244959 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
2022/05/17 | 24451 | macros/latex/contrib/beamer/base/art/beamericononline.20.pdf
2022/05/17 | 24344 | macros/latex/contrib/beamer/base/beamerbaseauxtemplates.sty
2022/05/17 | 24312 | macros/latex/contrib/beamer/doc/beamerug-tutorial.tex
-2022/05/17 | 24120 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
2022/05/17 | 2395232 | macros/optex.zip
-2022/05/17 | 23944 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2022/05/17 | 2379472 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2022/05/17 | 2363000 | macros/latex/contrib/hyperref/doc/hyperref.pdf
2022/05/17 | 2322 | macros/latex/contrib/beamer/base/themes/color/beamercolorthememonarca.sty
2022/05/17 | 22964 | macros/latex/contrib/beamer/doc/licenses/fdl.txt
2022/05/17 | 2280 | macros/latex/contrib/thuthesis/data/abstract.tex
2022/05/17 | 2251679 | macros/latex/contrib/beamer/doc/beameruserguide.pdf
-2022/05/17 | 22147 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
2022/05/17 | 22108 | macros/latex/contrib/beamer/doc/beamerug-nonpresentation.tex
2022/05/17 | 2190 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthemeinfolines.sty
2022/05/17 | 2144 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemelined.sty
2022/05/17 | 2141 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemealbatross.sty
2022/05/17 | 21365 | macros/latex/contrib/beamer/doc/beamerug-fonts.tex
-2022/05/17 | 213277 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/05/17 | 21315 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
2022/05/17 | 21219 | macros/latex/contrib/beamer/base/art/beamericonbook.eps
-2022/05/17 | 210274 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
2022/05/17 | 209492 | macros/latex/contrib/thuthesis/thuthesis.dtx
2022/05/17 | 2089 | macros/latex/contrib/beamer/doc/beamerlogo.pdf
-2022/05/17 | 208808 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
2022/05/17 | 20751 | macros/latex/contrib/beamer/doc/examples/a-conference-talk/beamerexample-conference-talk.tex
2022/05/17 | 205468 | macros/latex/contrib/hyperref/doc/backref.pdf
-2022/05/17 | 20461385 | systems/texlive/tlnet/install-tl-windows.exe
2022/05/17 | 2045 | macros/latex/contrib/beamer/doc/licenses/manifest-documentation.txt
-2022/05/17 | 203837 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin.tar.lzma
-2022/05/17 | 202834 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
2022/05/17 | 2024 | macros/latex/contrib/thuthesis/Makefile
2022/05/17 | 2024 | macros/latex/contrib/beamer/base/themes/outer/beamerouterthemetree.sty
-2022/05/17 | 20183 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2022/05/17 | 200396 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2022/05/17 | 199829 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2022/05/17 | 1982083 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/05/17 | 197034 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2022/05/17 | 196115 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
2022/05/17 | 19455 | macros/latex/contrib/hyperref/hyperref-linktarget.dtx
2022/05/17 | 19301 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-body.tex
2022/05/17 | 1929 | macros/latex/contrib/hyperref/manifest.txt
2022/05/17 | 19106 | macros/latex/contrib/thuthesis/LICENSE
2022/05/17 | 19106 | macros/latex/contrib/beamer/doc/licenses/lppl-1-3c.txt
-2022/05/17 | 190504 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
2022/05/17 | 18834 | macros/latex/contrib/thuthesis/spine.pdf
2022/05/17 | 1881 | macros/latex/contrib/beamer/base/emulation/beamerseminar.sty
2022/05/17 | 18534 | macros/latex/contrib/beamer/doc/beamerug-themes.tex
-2022/05/17 | 18491 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
2022/05/17 | 1836 | macros/latex/contrib/thuthesis/data/appendix-translation.tex
-2022/05/17 | 18368 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/05/17 | 181516 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
2022/05/17 | 18092 | macros/latex/contrib/beamer/doc/licenses/gpl-2.0.txt
2022/05/17 | 1808 | macros/latex/contrib/beamer/base/beamerbasetwoscreens.sty
2022/05/17 | 180070 | macros/latex/contrib/hyperref/doc/nameref.pdf
2022/05/17 | 1798 | macros/latex/contrib/thuthesis/thuthesis-numeric.bbx
-2022/05/17 | 179876 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
2022/05/17 | 1797 | macros/latex/contrib/beamer/doc/emulation-examples/beamerexample-prosper.tex
2022/05/17 | 1794 | macros/generic/expex-acro/expex-acro.ins
2022/05/17 | 1770 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemeseagull.sty
2022/05/17 | 17683 | macros/latex/contrib/beamer/base/beamerbaselocalstructure.sty
2022/05/17 | 1753 | macros/latex/contrib/beamer/base/beamerbaseoptions.sty
-2022/05/17 | 1752147 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2022/05/17 | 17467522 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2022/05/17 | 1741 | macros/latex/contrib/beamer/base/emulation/beamerfoils.sty
-2022/05/17 | 173008 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
2022/05/17 | 1719 | macros/latex/contrib/thuthesis/data/appendix-survey.tex
2022/05/17 | 17080 | macros/latex/contrib/beamer/base/art/beamericonarticle.20.eps
2022/05/17 | 170462 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx
2022/05/17 | 1703244 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015.zip
2022/05/17 | 168949 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx
-2022/05/17 | 168818 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
2022/05/17 | 1685602 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf
+2022/05/17 | 1682 | macros/generic/markdown/examples/context-mkiv.tex
+2022/05/17 | 16788 | macros/generic/markdown/README.md
2022/05/17 | 1664 | macros/latex/contrib/thuthesis/data/committee.tex
-2022/05/17 | 16560 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
2022/05/17 | 1651 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemedove.sty
-2022/05/17 | 16502 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
2022/05/17 | 16465 | macros/latex/contrib/beamer/doc/beamerug-interaction.tex
+2022/05/17 | 1639 | macros/generic/markdown/examples/latex.tex
2022/05/17 | 163889 | macros/latex/contrib/hyperref/doc/hyperref-doc.tex
2022/05/17 | 1634 | macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic2.jpg
2022/05/17 | 1619 | macros/latex/contrib/beamer/base/beamerarticle.sty
@@ -420,53 +659,35 @@
2022/05/17 | 16062 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.cbx
2022/05/17 | 1593 | macros/latex/contrib/beamer/base/beamerbaserequires.sty
2022/05/17 | 1569 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemebeetle.sty
-2022/05/17 | 156963 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2022/05/17 | 155496 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
2022/05/17 | 1553031 | install/macros/latex/contrib/thuthesis.tds.zip
2022/05/17 | 1542 | macros/latex/contrib/beamer/doc/beamerthemeexamplebase.tex
2022/05/17 | 1540 | macros/latex/contrib/beamer/AUTHORS.md
-2022/05/17 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/05/17 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
2022/05/17 | 1526610 | macros/latex/contrib/thuthesis.zip
-2022/05/17 | 152029 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2022/05/17 | 1501238 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/05/17 | 1491 | macros/generic/markdown/examples/context-mkii.tex
2022/05/17 | 14834 | macros/latex/contrib/hyperref/doc/hyperref-doc.css
2022/05/17 | 1478 | macros/latex/contrib/thuthesis/data/appendix.tex
2022/05/17 | 1475 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemespruce.sty
-2022/05/17 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
2022/05/17 | 1455 | macros/latex/contrib/thuthesis/thuthesis-author-year.bbx
-2022/05/17 | 1454763 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/05/17 | 1453236 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/05/17 | 1453027 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
2022/05/17 | 1452 | macros/latex/contrib/thuthesis/data/resume.tex
2022/05/17 | 14512 | macros/latex/contrib/beamer/doc/beamerug-introduction.tex
-2022/05/17 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/05/17 | 14411 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2022/05/17 | 142565 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx
2022/05/17 | 14186 | macros/latex/contrib/thuthesis/tsinghua-name-bachelor.pdf
2022/05/17 | 1415023 | macros/optex/doc/optex-doc.pdf
-2022/05/17 | 139100 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/05/17 | 140951 | macros/generic/markdown/markdown.png
2022/05/17 | 1388 | macros/latex/contrib/beamer/base/multimedia/multimediasymbols.sty
2022/05/17 | 1387 | macros/latex/contrib/thuthesis/thuthesis.ins
2022/05/17 | 13733 | macros/latex/contrib/beamer/base/beamerbasesection.sty
2022/05/17 | 1368 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemefly.sty
2022/05/17 | 13642 | macros/latex/contrib/beamer/base/beamerbasefont.sty
-2022/05/17 | 135948 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2022/05/17 | 1357070 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
2022/05/17 | 1354 | macros/latex/contrib/beamer/doc/beamercolorthemeexample.tex
2022/05/17 | 1353 | macros/latex/contrib/beamer/LICENSE.md
-2022/05/17 | 135378 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/05/17 | 13514 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2022/05/17 | 1342247 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
-2022/05/17 | 1340788 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/05/17 | 1333 | macros/generic/markdown/markdown.ins
2022/05/17 | 132 | macros/latex/contrib/thuthesis/thuthesis-author-year.cbx
2022/05/17 | 132446 | macros/latex/contrib/hyperref/doc/paper.pdf
-2022/05/17 | 1322740 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
2022/05/17 | 1309 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemebeaver.sty
2022/05/17 | 13080 | macros/latex/contrib/beamer/base/themes/inner/beamerinnerthemedefault.sty
2022/05/17 | 1306 | macros/latex/contrib/beamer/base/themes/theme/compatibility/beamerthemesidebar.sty
-2022/05/17 | 1302484 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2022/05/17 | 126532 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/05/17 | 1265 | info/latex-via-exemplos/changelog.txt
2022/05/17 | 12589 | macros/latex/contrib/beamer/base/beamerbasecolor.sty
2022/05/17 | 12536 | macros/latex/contrib/beamer/doc/beamerug-compatibility.tex
2022/05/17 | 12480 | macros/latex/contrib/beamer/doc/emulation-examples/beamerexample-seminar.tex
@@ -480,34 +701,21 @@
2022/05/17 | 122105 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx
2022/05/17 | 12171 | macros/latex/contrib/beamer/base/beamerbaseframecomponents.sty
2022/05/17 | 121139 | macros/latex/contrib/hyperref/ChangeLog.txt
-2022/05/17 | 120617 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2022/05/17 | 1181124 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2022/05/17 | 115656 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/05/17 | 1156464 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/05/17 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
2022/05/17 | 1140 | macros/latex/contrib/beamer/base/beamerbasethemes.sty
-2022/05/17 | 113052 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/05/17 | 112588 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
2022/05/17 | 1111 | macros/latex/contrib/beamer/README.md
-2022/05/17 | 109732 | systems/texlive/tlnet/archive/texlive-scripts.r63311.tar.xz
+2022/05/17 | 1109756 | info/latex-via-exemplos/latex-via-exemplos.pdf
+2022/05/17 | 1109432 | info/latex-via-exemplos/latex-via-exemplos-oneside.pdf
2022/05/17 | 1094 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemeseahorse.sty
-2022/05/17 | 109479 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
2022/05/17 | 10910 | macros/latex/contrib/beamer/doc/beamerug-notes.tex
-2022/05/17 | 107705 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2022/05/17 | 1054 | macros/latex/contrib/beamer/base/themes/theme/beamerthemeGoettingen.sty
2022/05/17 | 10543 | macros/latex/contrib/beamer/base/multimedia/multimedia.sty
2022/05/17 | 1050 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemedolphin.sty
-2022/05/17 | 104557 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/05/17 | 103336 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/05/17 | 103092 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
2022/05/17 | 10230 | macros/latex/contrib/beamer/doc/emulation-examples/beamerexample-texpower.tex
-2022/05/17 | 1021845 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
2022/05/17 | 1017096 | macros/latex/contrib/thuthesis/thuthesis.pdf
2022/05/17 | 1013 | macros/latex/contrib/beamer/base/themes/color/beamercolorthemewhale.sty
2022/05/17 | 1012 | macros/latex/contrib/beamer/base/themes/inner/beamerinnerthemerounded.sty
2022/05/17 | 1008 | macros/latex/contrib/beamer/base/themes/font/beamerfontthemeserif.sty
2022/05/17 | 1006 | macros/latex/contrib/hyperref/doc/hyperref-doc4.html
-2022/05/17 | 100486 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
2022/05/17 | 10001 | macros/latex/contrib/thuthesis/ref/refs.bib
2022/05/16 | 9900 | fonts/erewhon/tfm/Erewhon-RegularSlanted-osf-t2b.tfm
2022/05/16 | 9900 | fonts/erewhon/tfm/Erewhon-RegularSlanted-lf-t2b.tfm
@@ -642,7 +850,6 @@
2022/05/16 | 7724 | fonts/erewhon/tfm/Erewhon-BoldSlanted-tosf-sc-t2c.tfm
2022/05/16 | 7724 | fonts/erewhon/tfm/Erewhon-BoldSlanted-tlf-sc-t2c.tfm
2022/05/16 | 764 | fonts/erewhon/tfm/Erewhon-Bold-tlf-ot2.tfm
-2022/05/16 | 7365 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/05/16 | 716 | fonts/erewhon/vf/Erewhon-Italic-tosf-ts1.vf
2022/05/16 | 716 | fonts/erewhon/vf/Erewhon-Italic-tlf-ts1.vf
2022/05/16 | 716 | fonts/erewhon/vf/Erewhon-Italic-osf-ts1.vf
@@ -718,6 +925,7 @@
2022/05/16 | 5912 | fonts/erewhon/tfm/Erewhon-Bold-lf-ly1.tfm
2022/05/16 | 5908 | fonts/erewhon/tfm/Erewhon-Bold-tosf-ly1.tfm
2022/05/16 | 5908 | fonts/erewhon/tfm/Erewhon-Bold-tlf-ly1.tfm
+2022/05/16 | 589 | info/latex-via-exemplos/latex-via-exemplos-fig.tex
2022/05/16 | 5800 | fonts/erewhon/tfm/Erewhon-RegularSlanted-osf-sc-t2c.tfm
2022/05/16 | 5800 | fonts/erewhon/tfm/Erewhon-RegularSlanted-lf-sc-t2c.tfm
2022/05/16 | 5792 | fonts/erewhon/tfm/Erewhon-BoldItalic-osf-sc-t2c.tfm
@@ -791,6 +999,7 @@
2022/05/16 | 4460 | fonts/erewhon/tfm/Erewhon-BoldSlanted-lf-sc-ot1.tfm
2022/05/16 | 4456 | fonts/erewhon/tfm/Erewhon-BoldSlanted-tosf-sc-ot1.tfm
2022/05/16 | 4456 | fonts/erewhon/tfm/Erewhon-BoldSlanted-tlf-sc-ot1.tfm
+2022/05/16 | 4451 | info/latex-via-exemplos/latex-via-exemplos-slides.tex
2022/05/16 | 434504 | systems/texlive/tlnet/archive/xduts.doc.r63307.tar.xz
2022/05/16 | 4328 | fonts/erewhon/tfm/Erewhon-Italic-lf-sc-t2c.tfm
2022/05/16 | 4320 | fonts/erewhon/tfm/Erewhon-Italic-osf-sc-t2c.tfm
@@ -968,6 +1177,7 @@
2022/05/16 | 3255 | fonts/erewhon/enc/zut1_s5ndkw.enc
2022/05/16 | 3254 | fonts/erewhon/enc/zut1_x6t4jr.enc
2022/05/16 | 3252 | fonts/erewhon/enc/zut1_mieo7u.enc
+2022/05/16 | 3250 | info/latex-via-exemplos/latex-via-exemplos-poster.tex
2022/05/16 | 3245 | fonts/erewhon/enc/zut1_dnhvn3.enc
2022/05/16 | 3241 | fonts/erewhon/enc/zut1_dru2ao.enc
2022/05/16 | 3236 | fonts/erewhon/enc/zut1_pux3en.enc
@@ -1028,6 +1238,7 @@
2022/05/16 | 277652 | fonts/erewhon/type1/Erewhon-Bold.pfb
2022/05/16 | 2736 | fonts/erewhon/tfm/Erewhon-BoldItalic-osf-sc-ot1.tfm
2022/05/16 | 2728 | fonts/erewhon/tfm/Erewhon-BoldItalic-lf-sc-ot1.tfm
+2022/05/16 | 2713 | info/latex-via-exemplos/latex-via-exemplos-certificado.tex
2022/05/16 | 2712 | fonts/erewhon/tfm/Erewhon-BoldItalic-tosf-sc-ot1.tfm
2022/05/16 | 2712 | fonts/erewhon/tfm/Erewhon-BoldItalic-tlf-sc-ot1.tfm
2022/05/16 | 2700 | fonts/erewhon/tfm/Erewhon-Italic-lf-sc-ot1.tfm
@@ -1298,6 +1509,7 @@
2022/05/16 | 1812 | fonts/erewhon/tfm/Erewhon-Bold-sup-ly1.tfm
2022/05/16 | 1808 | fonts/erewhon/tfm/Erewhon-Regular-sup-t1--base.tfm
2022/05/16 | 1804 | fonts/erewhon/tfm/Erewhon-Regular-sup-ly1.tfm
+2022/05/16 | 1801 | info/latex-via-exemplos/README.md
2022/05/16 | 1744 | fonts/erewhon/tfm/Erewhon-Regular-osf-sc-ly1--base.tfm
2022/05/16 | 1744 | fonts/erewhon/tfm/Erewhon-Regular-lf-sc-ly1--base.tfm
2022/05/16 | 1744 | fonts/erewhon/tfm/Erewhon-Bold-osf-t1--base.tfm
@@ -2070,130 +2282,3 @@
2022/05/12 | 1104 | support/arara/scripts/rules/arara-rule-authorindex.yaml
2022/05/12 | 1061 | support/arara/scripts/rules/arara-rule-etex.yaml
2022/05/12 | 1049 | support/arara/scripts/rules/arara-rule-tex.yaml
-2022/05/11 | 99317 | macros/latex/contrib/tagpdf/tagpdf.tex
-2022/05/11 | 953118 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
-2022/05/11 | 8652 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
-2022/05/11 | 827148 | systems/texlive/tlnet/archive/fancyhdr.doc.r63277.tar.xz
-2022/05/11 | 8113 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
-2022/05/11 | 8057 | macros/latex/contrib/univie-ling/README
-2022/05/11 | 801 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
-2022/05/11 | 7863 | macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
-2022/05/11 | 7854 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
-2022/05/11 | 777 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
-2022/05/11 | 7776072 | systems/texlive/tlnet/archive/chinesechess.doc.r63276.tar.xz
-2022/05/11 | 738718 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
-2022/05/11 | 72146 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
-2022/05/11 | 6958 | macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
-2022/05/11 | 6842 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
-2022/05/11 | 682110 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
-2022/05/11 | 67879 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
-2022/05/11 | 673287 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
-2022/05/11 | 672124 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
-2022/05/11 | 6626 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
-2022/05/11 | 6463 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
-2022/05/11 | 64084 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
-2022/05/11 | 5 | macros/latex/contrib/tagpdf/pac3.PNG
-2022/05/11 | 5 | macros/latex/contrib/tagpdf/global-ex.png
-2022/05/11 | 580 | macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
-2022/05/11 | 580444 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
-2022/05/11 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
-2022/05/11 | 577528 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
-2022/05/11 | 573044 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
-2022/05/11 | 563 | macros/latex/contrib/hvextern/Changes
-2022/05/11 | 5630 | macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
-2022/05/11 | 551839 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
-2022/05/11 | 546572 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
-2022/05/11 | 532810 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
-2022/05/11 | 529620 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
-2022/05/11 | 524996 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
-2022/05/11 | 517003 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
-2022/05/11 | 5151 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
-2022/05/11 | 5116 | systems/texlive/tlnet/archive/fancyhdr.r63277.tar.xz
-2022/05/11 | 505145 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
-2022/05/11 | 5043 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx
-2022/05/11 | 504246 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
-2022/05/11 | 488517 | macros/latex/contrib/tagpdf/tagpdf.pdf
-2022/05/11 | 4884 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins
-2022/05/11 | 4863 | macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
-2022/05/11 | 46920 | systems/texlive/tlnet/archive/fancyhdr.source.r63277.tar.xz
-2022/05/11 | 4618 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
-2022/05/11 | 456124 | macros/latex/contrib/univie-ling/doc/univie-ling-expose.pdf
-2022/05/11 | 455994 | macros/latex/contrib/univie-ling/doc/univie-ling-thesis.pdf
-2022/05/11 | 450599 | macros/latex/contrib/univie-ling/doc/univie-ling-paper.pdf
-2022/05/11 | 44763 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
-2022/05/11 | 445946 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
-2022/05/11 | 43534 | macros/latex/contrib/hvextern/doc/hvextern.tex
-2022/05/11 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
-2022/05/11 | 419517 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
-2022/05/11 | 416870 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
-2022/05/11 | 4153 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
-2022/05/11 | 4041 | macros/latex/contrib/pdfmanagement-testphase/l3ref-tmp.sty
-2022/05/11 | 40036 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
-2022/05/11 | 385112 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
-2022/05/11 | 3732144 | help/LaTeX-FAQ-francaise.zip
-2022/05/11 | 35428 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
-2022/05/11 | 340885 | macros/latex/contrib/univie-ling/doc/univie-ling-wlg.pdf
-2022/05/11 | 3178 | macros/latex/contrib/tagpdf/tagpdf.ins
-2022/05/11 | 30766 | macros/latex/contrib/univie-ling/doc/univie-ling-thesis.tex
-2022/05/11 | 30715 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
-2022/05/11 | 304 | macros/latex/contrib/univie-ling/tex/univie-ling-wlg.cfg
-2022/05/11 | 29872 | macros/latex/contrib/univie-ling/tex/univie-ling-wlg.cls
-2022/05/11 | 2960588 | macros/latex/contrib/univie-ling.zip
-2022/05/11 | 28676 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
-2022/05/11 | 28237 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
-2022/05/11 | 27977 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
-2022/05/11 | 2760 | macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
-2022/05/11 | 27384 | macros/latex/contrib/univie-ling/doc/univie-ling-paper.tex
-2022/05/11 | 26800 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
-2022/05/11 | 26591 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
-2022/05/11 | 26581 | macros/latex/contrib/univie-ling/tex/univie-ling-thesis.cls
-2022/05/11 | 26581 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
-2022/05/11 | 2637 | macros/latex/contrib/tagpdf/ex-patch-list.tex
-2022/05/11 | 25792 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
-2022/05/11 | 2528 | macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
-2022/05/11 | 25106 | macros/latex/contrib/univie-ling/doc/univie-ling-expose.tex
-2022/05/11 | 24737 | macros/latex/contrib/univie-ling/tex/univie-ling-paper.cls
-2022/05/11 | 22818 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
-2022/05/11 | 22763 | macros/latex/contrib/hvextern/latex/hvextern.sty
-2022/05/11 | 2262 | macros/latex/contrib/tagpdf/tagpdf-code.tex
-2022/05/11 | 22032 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
-2022/05/11 | 2150 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
-2022/05/11 | 21387 | macros/latex/contrib/univie-ling/tex/univie-ling-expose.cls
-2022/05/11 | 21067 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
-2022/05/11 | 20475 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
-2022/05/11 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
-2022/05/11 | 19689 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
-2022/05/11 | 19600 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
-2022/05/11 | 19363 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
-2022/05/11 | 1859055 | macros/latex/contrib/tagpdf.zip
-2022/05/11 | 18504 | macros/latex/contrib/tagpdf/tagpdf.dtx
-2022/05/11 | 18461 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
-2022/05/11 | 18375 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-CCNU.bbx
-2022/05/11 | 1822 | macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
-2022/05/11 | 18208 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
-2022/05/11 | 18048 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
-2022/05/11 | 17742 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
-2022/05/11 | 176836 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
-2022/05/11 | 17353 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
-2022/05/11 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
-2022/05/11 | 16888 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
-2022/05/11 | 15698 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
-2022/05/11 | 1537 | macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
-2022/05/11 | 15227 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
-2022/05/11 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
-2022/05/11 | 13439 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
-2022/05/11 | 13236 | systems/texlive/tlnet/archive/chinesechess.r63276.tar.xz
-2022/05/11 | 13207 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
-2022/05/11 | 12384 | macros/latex/contrib/univie-ling/doc/univie-ling-wlg.tex
-2022/05/11 | 1237 | macros/latex/contrib/tagpdf/ex-AF-file.tex
-2022/05/11 | 1206588 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
-2022/05/11 | 1203772 | macros/latex/contrib/hvextern/doc/hvextern.pdf
-2022/05/11 | 1200 | macros/latex/contrib/pdfmanagement-testphase/README.md
-2022/05/11 | 1176 | macros/latex/contrib/tagpdf/README.md
-2022/05/11 | 1158434 | macros/latex/contrib/hvextern.zip
-2022/05/11 | 114892563 | macros/context/latest/cont-tmf.zip
-2022/05/11 | 11169303 | macros/latex/contrib/pdfmanagement-testphase.zip
-2022/05/11 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
-2022/05/11 | 10736 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx
-2022/05/11 | 10258 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
-2022/05/11 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
diff --git a/dviware/dvisvgm/ChangeLog b/dviware/dvisvgm/ChangeLog
index d426c37756..f52eb86660 100644
--- a/dviware/dvisvgm/ChangeLog
+++ b/dviware/dvisvgm/ChangeLog
@@ -1,3 +1,41 @@
+2022-04-20 Martin Gieseking <martin.gieseking@uos.de>
+
+ * .appveyor.yml, configure.ac, doc/dvisvgm.1, src/Doxyfile,
+ src/version.hpp:
+ set version to 2.13.4
+
+ * NEWS:
+ updated NEWS
+
+2022-04-18 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/PSInterpreter.cpp:
+ updated URL to GS documentation of -dNEWPDF
+
+2022-04-01 Martin Gieseking <martin.gieseking@uos.de>
+
+ * m4/ax_cxx_compile_stdcxx.m4:
+ updated ax_cxx_compile_stdcxx.m4 to version 14
+
+2022-03-31 Martin Gieseking <martin.gieseking@uos.de>
+
+ * .appveyor.yml:
+ updated FreeType to version 2.12
+
+2022-03-30 Martin Gieseking <martin.gieseking@uos.de>
+
+ * .appveyor.yml:
+ updated zlib to version 1.2.12
+
+ * src/PSInterpreter.cpp:
+ disable new PDF interpreter when using GS >= 9.56.0
+
+2022-03-14 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/ImageToSVG.cpp:
+ reset bounding box before converting next PDF page
+closes #182
+
2022-02-27 Martin Gieseking <martin.gieseking@uos.de>
* .appveyor.yml, configure.ac, doc/dvisvgm.1, src/Doxyfile,
diff --git a/dviware/dvisvgm/NEWS b/dviware/dvisvgm/NEWS
index a0cc6867ab..76bb5fa089 100644
--- a/dviware/dvisvgm/NEWS
+++ b/dviware/dvisvgm/NEWS
@@ -1,3 +1,9 @@
+dvisvgm-2.13.4 (2022-04-20)
+- fixed the size of bounding boxes applied when converting multiple pages
+ (GH issue #182)
+- try to enable old PDF interpreter when using Ghostscript >= 9.56.0
+ (dvisvgm does not work with Ghostscript's new PDF interpreter)
+
dvisvgm-2.13.3 (2022-02-27)
- added SVG optimizer module 'reassign-clippaths' that searches for duplicate
clipPath elements, removes them, and updates the clip-path references
diff --git a/dviware/dvisvgm/ar-lib b/dviware/dvisvgm/ar-lib
index 1e9388e2ae..0baa4f6076 100755
--- a/dviware/dvisvgm/ar-lib
+++ b/dviware/dvisvgm/ar-lib
@@ -2,9 +2,9 @@
# Wrapper for Microsoft lib.exe
me=ar-lib
-scriptversion=2019-07-04.01; # UTC
+scriptversion=2012-03-01.08; # UTC
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Peter Rosin <peda@lysator.liu.se>.
#
# This program is free software; you can redistribute it and/or modify
@@ -53,7 +53,7 @@ func_file_conv ()
MINGW*)
file_conv=mingw
;;
- CYGWIN* | MSYS*)
+ CYGWIN*)
file_conv=cygwin
;;
*)
@@ -65,7 +65,7 @@ func_file_conv ()
mingw)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
- cygwin | msys)
+ cygwin)
file=`cygpath -m "$file" || echo "$file"`
;;
wine)
@@ -224,11 +224,10 @@ elif test -n "$extract"; then
esac
done
else
- $AR -NOLOGO -LIST "$archive" | tr -d '\r' | sed -e 's/\\/\\\\/g' \
- | while read member
- do
- $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
- done
+ $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
+ do
+ $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+ done
fi
elif test -n "$quick$replace"; then
diff --git a/dviware/dvisvgm/compile b/dviware/dvisvgm/compile
index 23fcba0113..99e50524b3 100755
--- a/dviware/dvisvgm/compile
+++ b/dviware/dvisvgm/compile
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@@ -53,7 +53,7 @@ func_file_conv ()
MINGW*)
file_conv=mingw
;;
- CYGWIN* | MSYS*)
+ CYGWIN*)
file_conv=cygwin
;;
*)
@@ -67,7 +67,7 @@ func_file_conv ()
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
- cygwin/* | msys/*)
+ cygwin/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
diff --git a/dviware/dvisvgm/config.guess b/dviware/dvisvgm/config.guess
index b33c9e890e..256083a70d 100755
--- a/dviware/dvisvgm/config.guess
+++ b/dviware/dvisvgm/config.guess
@@ -2,7 +2,7 @@
# Attempt to guess a canonical system name.
# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2018-08-29'
+timestamp='2018-03-08'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -84,6 +84,8 @@ if test $# != 0; then
exit 1
fi
+trap 'exit 1' 1 2 15
+
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
@@ -94,39 +96,34 @@ fi
# Portable tmp directory creation inspired by the Autoconf team.
-tmp=
-# shellcheck disable=SC2172
-trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15
-trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0
-
-set_cc_for_build() {
- : "${TMPDIR=/tmp}"
- # shellcheck disable=SC2039
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
- dummy=$tmp/dummy
- case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
- ,,) echo "int x;" > "$dummy.c"
- for driver in cc gcc c89 c99 ; do
- if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$driver"
- break
- fi
- done
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
- esac
-}
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > "$dummy.c" ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
-if test -f /.attbin/uname ; then
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
PATH=$PATH:/.attbin ; export PATH
fi
@@ -141,7 +138,7 @@ Linux|GNU|GNU/*)
# We could probably try harder.
LIBC=gnu
- set_cc_for_build
+ eval "$set_cc_for_build"
cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
@@ -202,7 +199,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
os=netbsdelf
;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- set_cc_for_build
+ eval "$set_cc_for_build"
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
@@ -240,7 +237,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "$machine-${os}${release}${abi-}"
+ echo "$machine-${os}${release}${abi}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -392,15 +389,20 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- case `isainfo -b` in
- 32)
- echo i386-pc-solaris2"$UNAME_REL"
- ;;
- 64)
- echo x86_64-pc-solaris2"$UNAME_REL"
- ;;
- esac
+ eval "$set_cc_for_build"
+ SUN_ARCH=i386
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH=x86_64
+ fi
+ fi
+ echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
@@ -480,7 +482,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo clipper-intergraph-clix"$UNAME_RELEASE"
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- set_cc_for_build
+ eval "$set_cc_for_build"
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
@@ -577,7 +579,7 @@ EOF
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- set_cc_for_build
+ eval "$set_cc_for_build"
sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
@@ -658,7 +660,7 @@ EOF
esac
fi
if [ "$HP_ARCH" = "" ]; then
- set_cc_for_build
+ eval "$set_cc_for_build"
sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
@@ -698,7 +700,7 @@ EOF
esac
if [ "$HP_ARCH" = hppa2.0w ]
then
- set_cc_for_build
+ eval "$set_cc_for_build"
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -724,7 +726,7 @@ EOF
echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
- set_cc_for_build
+ eval "$set_cc_for_build"
sed 's/^ //' << EOF > "$dummy.c"
#include <unistd.h>
int
@@ -838,17 +840,6 @@ EOF
*:BSD/OS:*:*)
echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
exit ;;
- arm:FreeBSD:*:*)
- UNAME_PROCESSOR=`uname -p`
- set_cc_for_build
- if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_PCS_VFP
- then
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
- else
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
- fi
- exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
case "$UNAME_PROCESSOR" in
@@ -903,8 +894,8 @@ EOF
# other systems with GNU libc and userland
echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
exit ;;
- *:Minix:*:*)
- echo "$UNAME_MACHINE"-unknown-minix
+ i*86:Minix:*:*)
+ echo "$UNAME_MACHINE"-pc-minix
exit ;;
aarch64:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -931,7 +922,7 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arm*:Linux:*:*)
- set_cc_for_build
+ eval "$set_cc_for_build"
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
@@ -980,7 +971,7 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
- set_cc_for_build
+ eval "$set_cc_for_build"
sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
#undef ${UNAME_MACHINE}
@@ -1294,7 +1285,7 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- set_cc_for_build
+ eval "$set_cc_for_build"
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
@@ -1367,7 +1358,6 @@ EOF
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- # shellcheck disable=SC2154
if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
diff --git a/dviware/dvisvgm/config.sub b/dviware/dvisvgm/config.sub
index b51fb8cdb6..20f7cf29a9 100755
--- a/dviware/dvisvgm/config.sub
+++ b/dviware/dvisvgm/config.sub
@@ -2,7 +2,7 @@
# Configuration validation subroutine script.
# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2018-08-29'
+timestamp='2018-05-05'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -110,20 +110,16 @@ case $# in
exit 1;;
esac
-# Split fields of configuration type
+# Spilt fields of configuration type
IFS="-" read -r field1 field2 field3 field4 <<EOF
$1
EOF
# Separate into logical components for further validation
case $1 in
- *-*-*-*-*)
- echo Invalid configuration \`"$1"\': more than four components >&2
- exit 1
- ;;
*-*-*-*)
basic_machine=$field1-$field2
- os=$field3-$field4
+ os=-$field3-$field4
;;
*-*-*)
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
@@ -136,1133 +132,1227 @@ case $1 in
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova*)
basic_machine=$field1
- os=$maybe_os
+ os=-$maybe_os
;;
android-linux)
basic_machine=$field1-unknown
- os=linux-android
+ os=-linux-android
;;
*)
basic_machine=$field1-$field2
- os=$field3
+ os=-$field3
;;
esac
;;
*-*)
- # A lone config we happen to match not fitting any patern
- case $field1-$field2 in
- decstation-3100)
- basic_machine=mips-dec
- os=
- ;;
- *-*)
- # Second component is usually, but not always the OS
- case $field2 in
- # Prevent following clause from handling this valid os
- sun*os*)
- basic_machine=$field1
- os=$field2
- ;;
- # Manufacturers
- dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
- | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
- | unicom* | ibm* | next | hp | isi* | apollo | altos* \
- | convergent* | ncr* | news | 32* | 3600* | 3100* \
- | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
- | ultra | tti* | harris | dolphin | highlevel | gould \
- | cbm | ns | masscomp | apple | axis | knuth | cray \
- | microblaze* | sim | cisco \
- | oki | wec | wrs | winbond)
- basic_machine=$field1-$field2
- os=
- ;;
- *)
- basic_machine=$field1
- os=$field2
- ;;
- esac
- ;;
- esac
+ basic_machine=$field1
+ os=-$field2
;;
*)
- # Convert single-component short-hands not valid as part of
- # multi-component configurations.
- case $field1 in
- 386bsd)
- basic_machine=i386-pc
- os=bsd
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=udi
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=scout
- ;;
- alliant)
- basic_machine=fx80-alliant
- os=
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- os=
- ;;
- am29k)
- basic_machine=a29k-none
- os=bsd
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=sysv
- ;;
- amiga)
- basic_machine=m68k-unknown
- os=
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=bsd
- ;;
- aros)
- basic_machine=i386-pc
- os=aros
- ;;
- aux)
- basic_machine=m68k-apple
- os=aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- os=linux
- ;;
- cegcc)
- basic_machine=arm-unknown
- os=cegcc
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=bsd
- ;;
- cray)
- basic_machine=j90-cray
- os=unicos
- ;;
- crds | unos)
- basic_machine=m68k-crds
- os=
- ;;
- da30)
- basic_machine=m68k-da30
- os=
- ;;
- decstation | pmax | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- os=
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- os=dicos
- ;;
- djgpp)
- basic_machine=i586-pc
- os=msdosdjgpp
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=ebmon
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=ose
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=go32
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=sysv3
- ;;
- hp300)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=hpux
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=proelf
- ;;
- i386mach)
- basic_machine=i386-mach
- os=mach
- ;;
- vsta)
- basic_machine=i386-pc
- os=vsta
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=sysv
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=linux
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=sysv
- ;;
- mingw64)
- basic_machine=x86_64-pc
- os=mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- os=mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=mingw32ce
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=morphos
- ;;
- moxiebox)
- basic_machine=moxie-unknown
- os=moxiebox
- ;;
- msdos)
- basic_machine=i386-pc
- os=msdos
- ;;
- msys)
- basic_machine=i686-pc
- os=msys
- ;;
- mvs)
- basic_machine=i370-ibm
- os=mvs
- ;;
- nacl)
- basic_machine=le32-unknown
- os=nacl
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=sysv4
- ;;
- netbsd386)
- basic_machine=i386-pc
- os=netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=sysv
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=nonstopux
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=os68k
- ;;
- paragon)
- basic_machine=i860-intel
- os=osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- os=linux
- ;;
- pw32)
- basic_machine=i586-unknown
- os=pw32
- ;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=rdos
- ;;
- rdos32)
- basic_machine=i386-pc
- os=rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=coff
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=udi
- ;;
- sei)
- basic_machine=mips-sei
- os=seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- os=
- ;;
- sps7)
- basic_machine=m68k-bull
- os=sysv2
- ;;
- st2000)
- basic_machine=m68k-tandem
- os=
- ;;
- stratus)
- basic_machine=i860-stratus
- os=sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- os=
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=sunos4
- ;;
- sun3)
- basic_machine=m68k-sun
- os=
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=sunos4
- ;;
- sun4)
- basic_machine=sparc-sun
- os=
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=solaris2
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- os=
- ;;
- sv1)
- basic_machine=sv1-cray
- os=unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=unicos
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=tops20
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=vms
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=vxworks
- ;;
- xbox)
- basic_machine=i686-pc
- os=mingw32
- ;;
- ymp)
- basic_machine=ymp-cray
- os=unicos
- ;;
- *)
- basic_machine=$1
- os=
- ;;
- esac
+ basic_machine=$1
+ os=
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray | -microblaze*)
+ os=
+ basic_machine=$1
+ ;;
+ -bluegene*)
+ os=-cnk
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
;;
esac
-# Decode 1-component or ad-hoc basic machines
+# Decode aliases for certain CPU-COMPANY combinations.
case $basic_machine in
- # Here we handle the default manufacturer of certain CPU types. It is in
- # some cases the only manufacturer, in others, it is the most popular.
- w89k)
- cpu=hppa1.1
- vendor=winbond
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m | armv[78][arm] \
+ | avr | avr32 \
+ | ba \
+ | be32 | be64 \
+ | bfin \
+ | c4x | c8051 | clipper | csky \
+ | d10v | d30v | dlx | dsp16xx \
+ | e2k | epiphany \
+ | fido | fr30 | frv | ft32 \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i860 | i960 | ia16 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nfp \
+ | nios | nios2 | nios2eb | nios2el \
+ | ns16k | ns32k \
+ | open8 | or1k | or1knd | or32 \
+ | pdp10 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
+ | pru \
+ | pyramid \
+ | riscv32 | riscv64 \
+ | rl78 | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ | visium \
+ | wasm32 \
+ | x86 | xc16x | xstormy16 | xtensa \
+ | z8k | z80)
+ basic_machine=$basic_machine-unknown
+ ;;
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
;;
- op50n)
- cpu=hppa1.1
- vendor=oki
+ leon|leon[3-9])
+ basic_machine=sparc-$basic_machine
;;
- op60c)
- cpu=hppa1.1
- vendor=oki
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+ basic_machine=$basic_machine-unknown
+ os=-none
;;
- ibm*)
- cpu=i370
- vendor=ibm
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
;;
- orion105)
- cpu=clipper
- vendor=highlevel
+ m9s12z | m68hcs12z | hcs12z | s12z)
+ basic_machine=s12z-unknown
+ os=-none
;;
- mac | mpw | mac-mpw)
- cpu=m68k
- vendor=apple
+ ms1)
+ basic_machine=mt-unknown
;;
- pmac | pmac-mpw)
- cpu=powerpc
- vendor=apple
+
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
;;
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | aarch64-* | aarch64_be-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | ba-* \
+ | be32-* | be64-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
+ | c8051-* | clipper-* | craynv-* | csky-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | e2k-* | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
+ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | k1om-* \
+ | le32-* | le64-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64octeon-* | mips64octeonel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa32r6-* | mipsisa32r6el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64r6-* | mipsisa64r6el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
+ | nfp-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
+ | or1k*-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+ | pru-* \
+ | pyramid-* \
+ | riscv32-* | riscv64-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
+ | tahoe-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile*-* \
+ | tron-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
+ | visium-* \
+ | wasm32-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-pc
+ os=-bsd
+ ;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- cpu=m68000
- vendor=att
+ basic_machine=m68000-att
;;
3b*)
- cpu=we32k
- vendor=att
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
+ asmjs)
+ basic_machine=asmjs-unknown
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ os=-linux
;;
bluegene*)
- cpu=powerpc
- vendor=ibm
- os=cnk
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16 | cr16-*)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
;;
decsystem10* | dec10*)
- cpu=pdp10
- vendor=dec
- os=tops10
+ basic_machine=pdp10-dec
+ os=-tops10
;;
decsystem20* | dec20*)
- cpu=pdp10
- vendor=dec
- os=tops20
+ basic_machine=pdp10-dec
+ os=-tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
- cpu=m68k
- vendor=motorola
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
;;
dpx2*)
- cpu=m68k
- vendor=bull
- os=sysv3
+ basic_machine=m68k-bull
+ os=-sysv3
;;
- encore | umax | mmax)
- cpu=ns32k
- vendor=encore
+ e500v[12])
+ basic_machine=powerpc-unknown
+ os=$os"spe"
+ ;;
+ e500v[12]-*)
+ basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ os=$os"spe"
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
;;
elxsi)
- cpu=elxsi
- vendor=elxsi
- os=${os:-bsd}
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
;;
fx2800)
- cpu=i860
- vendor=alliant
+ basic_machine=i860-alliant
;;
genix)
- cpu=ns32k
- vendor=ns
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
;;
h3050r* | hiux*)
- cpu=hppa1.1
- vendor=hitachi
- os=hiuxwe2
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
- cpu=hppa1.0
- vendor=hp
+ basic_machine=hppa1.0-hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
- cpu=m68000
- vendor=hp
+ basic_machine=m68000-hp
;;
hp9k3[2-9][0-9])
- cpu=m68k
- vendor=hp
+ basic_machine=m68k-hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
- cpu=hppa1.0
- vendor=hp
+ basic_machine=hppa1.0-hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
- cpu=hppa1.1
- vendor=hp
+ basic_machine=hppa1.1-hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
- cpu=hppa1.1
- vendor=hp
+ basic_machine=hppa1.1-hp
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
- cpu=hppa1.1
- vendor=hp
+ basic_machine=hppa1.1-hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
- cpu=hppa1.1
- vendor=hp
+ basic_machine=hppa1.1-hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
- cpu=hppa1.0
- vendor=hp
+ basic_machine=hppa1.0-hp
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
;;
i*86v32)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- os=sysv32
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
;;
i*86v4*)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- os=sysv4
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
;;
i*86v)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- os=sysv
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
+ os=-sysv
;;
i*86sol2)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- os=solaris2
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
;;
- j90 | j90-cray)
- cpu=j90
- vendor=cray
- os=${os:-unicos}
+ vsta)
+ basic_machine=i386-unknown
+ os=-vsta
;;
iris | iris4d)
- cpu=mips
- vendor=sgi
+ basic_machine=mips-sgi
case $os in
- irix*)
+ -irix*)
;;
*)
- os=irix4
+ os=-irix4
;;
esac
;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ leon-*|leon[3-9]-*)
+ basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ microblaze*)
+ basic_machine=microblaze-xilinx
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
miniframe)
- cpu=m68000
- vendor=convergent
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=-moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
+ ;;
+ msys)
+ basic_machine=i686-pc
+ os=-msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
;;
- *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
- cpu=m68k
- vendor=atari
- os=mint
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
;;
news-3600 | risc-news)
- cpu=mips
- vendor=sony
- os=newsos
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
;;
next | m*-next)
- cpu=m68k
- vendor=next
+ basic_machine=m68k-next
case $os in
- nextstep* )
+ -nextstep* )
;;
- ns2*)
- os=nextstep2
+ -ns2*)
+ os=-nextstep2
;;
*)
- os=nextstep3
+ os=-nextstep3
;;
esac
;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
np1)
- cpu=np1
- vendor=gould
+ basic_machine=np1-gould
+ ;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ nsv-tandem)
+ basic_machine=nsv-tandem
+ ;;
+ nsx-tandem)
+ basic_machine=nsx-tandem
;;
op50n-* | op60c-*)
- cpu=hppa1.1
- vendor=oki
- os=proelf
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
;;
pa-hitachi)
- cpu=hppa1.1
- vendor=hitachi
- os=hiuxwe2
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ os=-linux
;;
pbd)
- cpu=sparc
- vendor=tti
+ basic_machine=sparc-tti
;;
pbb)
- cpu=m68k
- vendor=tti
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
;;
- pc532)
- cpu=ns32k
- vendor=pc532
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pn)
- cpu=pn
- vendor=gould
+ basic_machine=pn-gould
;;
- power)
- cpu=power
- vendor=ibm
+ power) basic_machine=power-ibm
;;
- ps2)
- cpu=i386
- vendor=ibm
+ ppc | ppcbe) basic_machine=powerpc-unknown
;;
- rm[46]00)
- cpu=mips
- vendor=siemens
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
- rtpc | rtpc-*)
- cpu=romp
- vendor=ibm
+ ppcle | powerpclittle)
+ basic_machine=powerpcle-unknown
;;
- sde)
- cpu=mipsisa32
- vendor=sde
- os=${os:-elf}
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
- simso-wrs)
- cpu=sparclite
- vendor=wrs
- os=vxworks
+ ppc64) basic_machine=powerpc64-unknown
;;
- tower | tower-32)
- cpu=m68k
- vendor=ncr
+ ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
- vpp*|vx|vx-*)
- cpu=f301
- vendor=fujitsu
+ ppc64le | powerpc64little)
+ basic_machine=powerpc64le-unknown
;;
- w65)
- cpu=w65
- vendor=wdc
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
- w89k-*)
- cpu=hppa1.1
- vendor=winbond
- os=proelf
+ ps2)
+ basic_machine=i386-ibm
;;
- none)
- cpu=none
- vendor=none
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
;;
- leon|leon[3-9])
- cpu=sparc
- vendor=$basic_machine
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
;;
- leon-*|leon[3-9]-*)
- cpu=sparc
- vendor=`echo "$basic_machine" | sed 's/-.*//'`
+ rdos32)
+ basic_machine=i386-pc
+ os=-rdos
;;
-
- *-*)
- IFS="-" read -r cpu vendor <<EOF
-$basic_machine
-EOF
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
;;
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- cpu=$basic_machine
- vendor=pc
+ rm[46]00)
+ basic_machine=mips-siemens
;;
- # These rules are duplicated from below for sake of the special case above;
- # i.e. things that normalized to x86 arches should also default to "pc"
- pc98)
- cpu=i386
- vendor=pc
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
;;
- x64 | amd64)
- cpu=x86_64
- vendor=pc
+ s390 | s390-*)
+ basic_machine=s390-ibm
;;
- # Recognize the basic CPU types without company name.
- *)
- cpu=$basic_machine
- vendor=unknown
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
;;
-esac
-
-unset -v basic_machine
-
-# Decode basic machines in the full and proper CPU-Company form.
-case $cpu-$vendor in
- # Here we handle the default manufacturer of certain CPU types in cannonical form. It is in
- # some cases the only manufacturer, in others, it is the most popular.
- craynv-unknown)
- vendor=cray
- os=${os:-unicosmp}
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
;;
- c90-unknown | c90-cray)
- vendor=cray
- os=${os:-unicos}
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
;;
- fx80-unknown)
- vendor=alliant
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
;;
- romp-unknown)
- vendor=ibm
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
;;
- mmix-unknown)
- vendor=knuth
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
;;
- microblaze-unknown | microblazeel-unknown)
- vendor=xilinx
+ sequent)
+ basic_machine=i386-sequent
;;
- rs6000-unknown)
- vendor=ibm
+ sh5el)
+ basic_machine=sh5le-unknown
;;
- vax-unknown)
- vendor=dec
+ simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
;;
- pdp11-unknown)
- vendor=dec
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
;;
- we32k-unknown)
- vendor=att
+ spur)
+ basic_machine=spur-unknown
;;
- cydra-unknown)
- vendor=cydrome
+ st2000)
+ basic_machine=m68k-tandem
;;
- i370-ibm*)
- vendor=ibm
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
;;
- orion-unknown)
- vendor=highlevel
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
- xps-unknown | xps100-unknown)
- cpu=xps100
- vendor=honeywell
+ sun2)
+ basic_machine=m68000-sun
;;
-
- # Here we normalize CPU types with a missing or matching vendor
- dpx20-unknown | dpx20-bull)
- cpu=rs6000
- vendor=bull
- os=${os:-bosx}
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
;;
-
- # Here we normalize CPU types irrespective of the vendor
- amd64-*)
- cpu=x86_64
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
;;
- blackfin-*)
- cpu=bfin
- os=linux
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
;;
- c54x-*)
- cpu=tic54x
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
;;
- c55x-*)
- cpu=tic55x
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
;;
- c6x-*)
- cpu=tic6x
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
;;
- e500v[12]-*)
- cpu=powerpc
- os=$os"spe"
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
;;
- mips3*-*)
- cpu=mips64
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
;;
- ms1-*)
- cpu=mt
+ sun4)
+ basic_machine=sparc-sun
;;
- m68knommu-*)
- cpu=m68k
- os=linux
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
;;
- m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
- cpu=s12z
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
;;
- openrisc-*)
- cpu=or32
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
;;
- parisc-*)
- cpu=hppa
- os=linux
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- cpu=i586
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
;;
- pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
- cpu=i686
+ tile*)
+ basic_machine=$basic_machine-unknown
+ os=-linux-gnu
;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- cpu=i686
+ tx39)
+ basic_machine=mipstx39-unknown
;;
- pentium4-*)
- cpu=i786
+ tx39el)
+ basic_machine=mipstx39el-unknown
;;
- pc98-*)
- cpu=i386
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
;;
- ppc-* | ppcbe-*)
- cpu=powerpc
+ tower | tower-32)
+ basic_machine=m68k-ncr
;;
- ppcle-* | powerpclittle-*)
- cpu=powerpcle
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
;;
- ppc64-*)
- cpu=powerpc64
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
;;
- ppc64le-* | powerpc64little-*)
- cpu=powerpc64le
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
;;
- sb1-*)
- cpu=mipsisa64sb1
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
;;
- sb1el-*)
- cpu=mipsisa64sb1el
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
;;
- sh5e[lb]-*)
- cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+ vms)
+ basic_machine=vax-dec
+ os=-vms
;;
- spur-*)
- cpu=spur
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
;;
- strongarm-* | thumb-*)
- cpu=arm
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
;;
- tx39-*)
- cpu=mipstx39
+ x64)
+ basic_machine=x86_64-pc
;;
- tx39el-*)
- cpu=mipstx39el
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
;;
- x64-*)
- cpu=x86_64
+ xps | xps100)
+ basic_machine=xps100-honeywell
;;
xscale-* | xscalee[bl]-*)
- cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
+ basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
;;
- # Recognize the cannonical CPU Types that limit and/or modify the
- # company names they are paired with.
- cr16-*)
- os=${os:-elf}
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
;;
- crisv32-* | etraxfs*-*)
- cpu=crisv32
- vendor=axis
+ op60c)
+ basic_machine=hppa1.1-oki
;;
- cris-* | etrax*-*)
- cpu=cris
- vendor=axis
+ romp)
+ basic_machine=romp-ibm
;;
- crx-*)
- os=${os:-elf}
+ mmix)
+ basic_machine=mmix-knuth
;;
- neo-tandem)
- cpu=neo
- vendor=tandem
+ rs6000)
+ basic_machine=rs6000-ibm
;;
- nse-tandem)
- cpu=nse
- vendor=tandem
+ vax)
+ basic_machine=vax-dec
;;
- nsr-tandem)
- cpu=nsr
- vendor=tandem
+ pdp11)
+ basic_machine=pdp11-dec
;;
- nsv-tandem)
- cpu=nsv
- vendor=tandem
+ we32k)
+ basic_machine=we32k-att
;;
- nsx-tandem)
- cpu=nsx
- vendor=tandem
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
;;
- s390-*)
- cpu=s390
- vendor=ibm
+ orion)
+ basic_machine=orion-highlevel
;;
- s390x-*)
- cpu=s390x
- vendor=ibm
+ orion105)
+ basic_machine=clipper-highlevel
;;
- tile*-*)
- os=${os:-linux-gnu}
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
;;
-
*)
- # Recognize the cannonical CPU types that are allowed with any
- # company name.
- case $cpu in
- 1750a | 580 \
- | a29k \
- | aarch64 | aarch64_be \
- | abacus \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
- | alphapca5[67] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arceb \
- | arm | arm[lb]e | arme[lb] | armv* \
- | avr | avr32 \
- | asmjs \
- | ba \
- | be32 | be64 \
- | bfin | bs2000 \
- | c[123]* | c30 | [cjt]90 | c4x \
- | c8051 | clipper | craynv | csky | cydra \
- | d10v | d30v | dlx | dsp16xx \
- | e2k | elxsi | epiphany \
- | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
- | h8300 | h8500 \
- | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | hexagon \
- | i370 | i*86 | i860 | i960 | ia16 | ia64 \
- | ip2k | iq2000 \
- | k1om \
- | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle \
- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
- | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
- | m88110 | m88k | maxq | mb | mcore | mep | metag \
- | microblaze | microblazeel \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa32r6 | mipsisa32r6el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64r6 | mipsisa64r6el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
- | mmix \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nds32 | nds32le | nds32be \
- | nfp \
- | nios | nios2 | nios2eb | nios2el \
- | none | np1 | ns16k | ns32k \
- | open8 \
- | or1k* \
- | or32 \
- | orion \
- | pdp10 | pdp11 | pj | pjl | pn | power \
- | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
- | pru \
- | pyramid \
- | riscv | riscv32 | riscv64 \
- | rl78 | romp | rs6000 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
- | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
- | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
- | spu \
- | tahoe \
- | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
- | tron \
- | ubicom32 \
- | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
- | vax \
- | visium \
- | wasm32 \
- | we32k \
- | x86 | x86_64 | xc16x | xgate | xps100 \
- | xstormy16 | xtensa* \
- | ymp \
- | z8k | z80)
- ;;
-
- *)
- echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
- exit 1
- ;;
- esac
+ echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
+ exit 1
;;
esac
# Here we canonicalize certain aliases for manufacturers.
-case $vendor in
- digital*)
- vendor=dec
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
;;
- commodore*)
- vendor=cbm
+ *-commodore*)
+ basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
;;
*)
;;
@@ -1275,240 +1365,200 @@ then
case $os in
# First match some system type aliases that might get confused
# with valid system types.
- # solaris* is a basic system type, with this one exception.
- auroraux)
- os=auroraux
+ # -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
;;
- bluegene*)
- os=cnk
- ;;
- solaris1 | solaris1.*)
+ -solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
- solaris)
- os=solaris2
+ -solaris)
+ os=-solaris2
;;
- unixware*)
- os=sysv4.2uw
+ -unixware*)
+ os=-sysv4.2uw
;;
- gnu/linux*)
+ -gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
# es1800 is here to avoid being matched by es* (a different OS)
- es1800*)
- os=ose
- ;;
- # Some version numbers need modification
- chorusos*)
- os=chorusos
- ;;
- isc)
- os=isc2.2
- ;;
- sco6)
- os=sco5v6
- ;;
- sco5)
- os=sco3.2v5
- ;;
- sco4)
- os=sco3.2v4
- ;;
- sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- ;;
- sco3.2v[4-9]* | sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- ;;
- scout)
- # Don't match below
- ;;
- sco*)
- os=sco3.2v2
- ;;
- psos*)
- os=psos
+ -es1800*)
+ os=-ose
;;
# Now accept the basic system types.
# The portable systems comes first.
# Each alternative MUST end in a * to match a version number.
- # sysv* is not here because it comes later, after sysvr4.
- gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
- | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
- | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
- | sym* | kopensolaris* | plan9* \
- | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
- | aos* | aros* | cloudabi* | sortix* \
- | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
- | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
- | knetbsd* | mirbsd* | netbsd* \
- | bitrig* | openbsd* | solidbsd* | libertybsd* \
- | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
- | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
- | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
- | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
- | chorusrdb* | cegcc* | glidix* \
- | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
- | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
- | linux-newlib* | linux-musl* | linux-uclibc* \
- | uxpv* | beos* | mpeix* | udk* | moxiebox* \
- | interix* | uwin* | mks* | rhapsody* | darwin* \
- | openstep* | oskit* | conix* | pw32* | nonstopux* \
- | storm-chaos* | tops10* | tenex* | tops20* | its* \
- | os2* | vos* | palmos* | uclinux* | nucleus* \
- | morphos* | superux* | rtmk* | windiss* \
- | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
- | skyos* | haiku* | rdos* | toppers* | drops* | es* \
- | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
- | midnightbsd*)
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* | -plan9* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* | -aros* | -cloudabi* | -sortix* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* | -hcos* \
+ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
+ | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
+ | -midnightbsd*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
- qnx*)
- case $cpu in
- x86 | i*86)
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
;;
*)
- os=nto-$os
+ os=-nto$os
;;
esac
;;
- hiux*)
- os=hiuxwe2
+ -nto-qnx*)
;;
- nto-qnx*)
- ;;
- nto*)
+ -nto*)
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
- sim | xray | os68k* | v88r* \
- | windows* | osx | abug | netware* | os9* \
- | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
- ;;
- linux-dietlibc)
- os=linux-dietlibc
- ;;
- linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- lynx*178)
- os=lynxos178
- ;;
- lynx*5)
- os=lynxos5
- ;;
- lynx*)
- os=lynxos
+ -sim | -xray | -os68k* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
- mac*)
+ -mac*)
os=`echo "$os" | sed -e 's|mac|macos|'`
;;
- opened*)
- os=openedition
+ -linux-dietlibc)
+ os=-linux-dietlibc
;;
- os400*)
- os=os400
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
- sunos5*)
+ -sunos5*)
os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
- sunos6*)
+ -sunos6*)
os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
- wince*)
- os=wince
+ -opened*)
+ os=-openedition
;;
- utek*)
- os=bsd
+ -os400*)
+ os=-os400
;;
- dynix*)
- os=bsd
+ -wince*)
+ os=-wince
;;
- acis*)
- os=aos
+ -utek*)
+ os=-bsd
;;
- atheos*)
- os=atheos
+ -dynix*)
+ os=-bsd
;;
- syllable*)
- os=syllable
+ -acis*)
+ os=-aos
;;
- 386bsd)
- os=bsd
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
;;
- ctix* | uts*)
- os=sysv
+ -ctix* | -uts*)
+ os=-sysv
;;
- nova*)
- os=rtmk-nova
+ -nova*)
+ os=-rtmk-nova
;;
- ns2)
- os=nextstep2
+ -ns2)
+ os=-nextstep2
;;
- nsk*)
- os=nsk
+ -nsk*)
+ os=-nsk
;;
# Preserve the version number of sinix5.
- sinix5.*)
+ -sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
- sinix*)
- os=sysv4
+ -sinix*)
+ os=-sysv4
;;
- tpf*)
- os=tpf
+ -tpf*)
+ os=-tpf
;;
- triton*)
- os=sysv3
+ -triton*)
+ os=-sysv3
;;
- oss*)
- os=sysv3
+ -oss*)
+ os=-sysv3
;;
- svr4*)
- os=sysv4
+ -svr4*)
+ os=-sysv4
;;
- svr3)
- os=sysv3
+ -svr3)
+ os=-sysv3
;;
- sysvr4)
- os=sysv4
+ -sysvr4)
+ os=-sysv4
;;
- # This must come after sysvr4.
- sysv*)
+ # This must come after -sysvr4.
+ -sysv*)
;;
- ose*)
- os=ose
+ -ose*)
+ os=-ose
;;
- *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
- os=mint
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
;;
- zvmoe)
- os=zvmoe
+ -zvmoe)
+ os=-zvmoe
;;
- dicos*)
- os=dicos
+ -dicos*)
+ os=-dicos
;;
- pikeos*)
+ -pikeos*)
# Until real need of OS specific support for
# particular features comes up, bare metal
# configurations are quite functional.
- case $cpu in
+ case $basic_machine in
arm*)
- os=eabi
+ os=-eabi
;;
*)
- os=elf
+ os=-elf
;;
esac
;;
- nacl*)
+ -nacl*)
;;
- ios)
+ -ios)
;;
- none)
+ -none)
;;
- *-eabi)
+ -*-eabi)
+ case $basic_machine in
+ arm*)
+ ;;
+ esac
;;
*)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
exit 1
;;
@@ -1525,261 +1575,254 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
-case $cpu-$vendor in
+case $basic_machine in
score-*)
- os=elf
+ os=-elf
;;
spu-*)
- os=elf
+ os=-elf
;;
*-acorn)
- os=riscix1.2
+ os=-riscix1.2
;;
arm*-rebel)
- os=linux
+ os=-linux
;;
arm*-semi)
- os=aout
+ os=-aout
;;
c4x-* | tic4x-*)
- os=coff
+ os=-coff
;;
c8051-*)
- os=elf
- ;;
- clipper-intergraph)
- os=clix
+ os=-elf
;;
hexagon-*)
- os=elf
+ os=-elf
;;
tic54x-*)
- os=coff
+ os=-coff
;;
tic55x-*)
- os=coff
+ os=-coff
;;
tic6x-*)
- os=coff
+ os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
- os=tops20
+ os=-tops20
;;
pdp11-*)
- os=none
+ os=-none
;;
*-dec | vax-*)
- os=ultrix4.2
+ os=-ultrix4.2
;;
m68*-apollo)
- os=domain
+ os=-domain
;;
i386-sun)
- os=sunos4.0.2
+ os=-sunos4.0.2
;;
m68000-sun)
- os=sunos3
+ os=-sunos3
;;
m68*-cisco)
- os=aout
+ os=-aout
;;
mep-*)
- os=elf
+ os=-elf
;;
mips*-cisco)
- os=elf
+ os=-elf
;;
mips*-*)
- os=elf
+ os=-elf
;;
or32-*)
- os=coff
+ os=-coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
- os=sysv3
+ os=-sysv3
;;
sparc-* | *-sun)
- os=sunos4.1.1
+ os=-sunos4.1.1
;;
pru-*)
- os=elf
+ os=-elf
;;
*-be)
- os=beos
+ os=-beos
;;
*-ibm)
- os=aix
+ os=-aix
;;
*-knuth)
- os=mmixware
+ os=-mmixware
;;
*-wec)
- os=proelf
+ os=-proelf
;;
*-winbond)
- os=proelf
+ os=-proelf
;;
*-oki)
- os=proelf
+ os=-proelf
;;
*-hp)
- os=hpux
+ os=-hpux
;;
*-hitachi)
- os=hiux
+ os=-hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=sysv
+ os=-sysv
;;
*-cbm)
- os=amigaos
+ os=-amigaos
;;
*-dg)
- os=dgux
+ os=-dgux
;;
*-dolphin)
- os=sysv3
+ os=-sysv3
;;
m68k-ccur)
- os=rtu
+ os=-rtu
;;
m88k-omron*)
- os=luna
+ os=-luna
;;
*-next)
- os=nextstep
+ os=-nextstep
;;
*-sequent)
- os=ptx
+ os=-ptx
;;
*-crds)
- os=unos
+ os=-unos
;;
*-ns)
- os=genix
+ os=-genix
;;
i370-*)
- os=mvs
+ os=-mvs
;;
*-gould)
- os=sysv
+ os=-sysv
;;
*-highlevel)
- os=bsd
+ os=-bsd
;;
*-encore)
- os=bsd
+ os=-bsd
;;
*-sgi)
- os=irix
+ os=-irix
;;
*-siemens)
- os=sysv4
+ os=-sysv4
;;
*-masscomp)
- os=rtu
+ os=-rtu
;;
f30[01]-fujitsu | f700-fujitsu)
- os=uxpv
+ os=-uxpv
;;
*-rom68k)
- os=coff
+ os=-coff
;;
*-*bug)
- os=coff
+ os=-coff
;;
*-apple)
- os=macos
+ os=-macos
;;
*-atari*)
- os=mint
- ;;
- *-wrs)
- os=vxworks
+ os=-mint
;;
*)
- os=none
+ os=-none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
-case $vendor in
- unknown)
+vendor=unknown
+case $basic_machine in
+ *-unknown)
case $os in
- riscix*)
+ -riscix*)
vendor=acorn
;;
- sunos*)
+ -sunos*)
vendor=sun
;;
- cnk*|-aix*)
+ -cnk*|-aix*)
vendor=ibm
;;
- beos*)
+ -beos*)
vendor=be
;;
- hpux*)
+ -hpux*)
vendor=hp
;;
- mpeix*)
+ -mpeix*)
vendor=hp
;;
- hiux*)
+ -hiux*)
vendor=hitachi
;;
- unos*)
+ -unos*)
vendor=crds
;;
- dgux*)
+ -dgux*)
vendor=dg
;;
- luna*)
+ -luna*)
vendor=omron
;;
- genix*)
+ -genix*)
vendor=ns
;;
- clix*)
- vendor=intergraph
- ;;
- mvs* | opened*)
+ -mvs* | -opened*)
vendor=ibm
;;
- os400*)
+ -os400*)
vendor=ibm
;;
- ptx*)
+ -ptx*)
vendor=sequent
;;
- tpf*)
+ -tpf*)
vendor=ibm
;;
- vxsim* | vxworks* | windiss*)
+ -vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
- aux*)
+ -aux*)
vendor=apple
;;
- hms*)
+ -hms*)
vendor=hitachi
;;
- mpw* | macos*)
+ -mpw* | -macos*)
vendor=apple
;;
- *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
vendor=atari
;;
- vos*)
+ -vos*)
vendor=stratus
;;
esac
+ basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
;;
esac
-echo "$cpu-$vendor-$os"
+echo "$basic_machine$os"
exit
# Local variables:
diff --git a/dviware/dvisvgm/configure b/dviware/dvisvgm/configure
index 2bf214692f..e493dce4cd 100755
--- a/dviware/dvisvgm/configure
+++ b/dviware/dvisvgm/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for dvisvgm 2.13.3.
+# Generated by GNU Autoconf 2.69 for dvisvgm 2.13.4.
#
# Report bugs to <martin.gieseking@uos.de>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='dvisvgm'
PACKAGE_TARNAME='dvisvgm'
-PACKAGE_VERSION='2.13.3'
-PACKAGE_STRING='dvisvgm 2.13.3'
+PACKAGE_VERSION='2.13.4'
+PACKAGE_STRING='dvisvgm 2.13.4'
PACKAGE_BUGREPORT='martin.gieseking@uos.de'
PACKAGE_URL=''
@@ -1417,7 +1417,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures dvisvgm 2.13.3 to adapt to many kinds of systems.
+\`configure' configures dvisvgm 2.13.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1489,7 +1489,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of dvisvgm 2.13.3:";;
+ short | recursive ) echo "Configuration of dvisvgm 2.13.4:";;
esac
cat <<\_ACEOF
@@ -1637,7 +1637,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-dvisvgm configure 2.13.3
+dvisvgm configure 2.13.4
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2181,7 +2181,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by dvisvgm $as_me 2.13.3, which was
+It was created by dvisvgm $as_me 2.13.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2539,7 +2539,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-DATE="February 2022"
+DATE="April 2022"
ac_config_headers="$ac_config_headers config.h"
@@ -3169,7 +3169,7 @@ fi
# Define the identity of the package.
PACKAGE='dvisvgm'
- VERSION='2.13.3'
+ VERSION='2.13.4'
cat >>confdefs.h <<_ACEOF
@@ -20459,7 +20459,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by dvisvgm $as_me 2.13.3, which was
+This file was extended by dvisvgm $as_me 2.13.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -20525,7 +20525,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-dvisvgm config.status 2.13.3
+dvisvgm config.status 2.13.4
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/dviware/dvisvgm/configure.ac b/dviware/dvisvgm/configure.ac
index 5c25b9a425..d130c0863a 100644
--- a/dviware/dvisvgm/configure.ac
+++ b/dviware/dvisvgm/configure.ac
@@ -4,8 +4,8 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
-AC_INIT([dvisvgm],[2.13.3],[martin.gieseking@uos.de])
-DATE="February 2022"
+AC_INIT([dvisvgm],[2.13.4],[martin.gieseking@uos.de])
+DATE="April 2022"
AC_CONFIG_SRCDIR(src)
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
diff --git a/dviware/dvisvgm/depcomp b/dviware/dvisvgm/depcomp
index 6b391623c4..65cbf7093a 100755
--- a/dviware/dvisvgm/depcomp
+++ b/dviware/dvisvgm/depcomp
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/dviware/dvisvgm/doc/dvisvgm.1 b/dviware/dvisvgm/doc/dvisvgm.1
index 9356f2910e..16ba46c27f 100644
--- a/dviware/dvisvgm/doc/dvisvgm.1
+++ b/dviware/dvisvgm/doc/dvisvgm.1
@@ -4,10 +4,10 @@
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 2022-02-26
.\" Manual: dvisvgm Manual
-.\" Source: dvisvgm 2.13.3
+.\" Source: dvisvgm 2.13.4
.\" Language: English
.\"
-.TH "DVISVGM" "1" "2022\-02\-26" "dvisvgm 2\&.13\&.3" "dvisvgm Manual"
+.TH "DVISVGM" "1" "2022\-02\-26" "dvisvgm 2\&.13\&.4" "dvisvgm Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/dviware/dvisvgm/install-sh b/dviware/dvisvgm/install-sh
index 20d8b2eaea..8175c640fe 100755
--- a/dviware/dvisvgm/install-sh
+++ b/dviware/dvisvgm/install-sh
@@ -451,18 +451,7 @@ do
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
- (umask $cp_umask &&
- { test -z "$stripcmd" || {
- # Create $dsttmp read-write so that cp doesn't create it read-only,
- # which would cause strip to fail.
- if test -z "$doit"; then
- : >"$dsttmp" # No need to fork-exec 'touch'.
- else
- $doit touch "$dsttmp"
- fi
- }
- } &&
- $doit_exec $cpprog "$src" "$dsttmp") &&
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
diff --git a/dviware/dvisvgm/m4/ax_cxx_compile_stdcxx.m4 b/dviware/dvisvgm/m4/ax_cxx_compile_stdcxx.m4
index 9413da624d..51a35054d0 100644
--- a/dviware/dvisvgm/m4/ax_cxx_compile_stdcxx.m4
+++ b/dviware/dvisvgm/m4/ax_cxx_compile_stdcxx.m4
@@ -10,8 +10,8 @@
#
# Check for baseline language coverage in the compiler for the specified
# version of the C++ standard. If necessary, add switches to CXX and
-# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
-# or '14' (for the C++14 standard).
+# CXXCPP to enable support. VERSION may be '11', '14', '17', or '20' for
+# the respective C++ standard version.
#
# The second argument, if specified, indicates whether you insist on an
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
@@ -36,13 +36,14 @@
# Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
# Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
# Copyright (c) 2020 Jason Merrill <jason@redhat.com>
+# Copyright (c) 2021 Jörn Heusipp <osmanx@problemloesungsmaschine.de>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 12
+#serial 14
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
dnl (serial version number 13).
@@ -51,6 +52,7 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
[$1], [14], [ax_cxx_compile_alternatives="14 1y"],
[$1], [17], [ax_cxx_compile_alternatives="17 1z"],
+ [$1], [20], [ax_cxx_compile_alternatives="20"],
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
m4_if([$2], [], [],
[$2], [ext], [],
@@ -151,7 +153,6 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
)
-
dnl Test body for checking C++14 support
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
@@ -159,12 +160,24 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
)
+dnl Test body for checking C++17 support
+
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
_AX_CXX_COMPILE_STDCXX_testbody_new_in_17
)
+dnl Test body for checking C++20 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_20],
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_20
+)
+
+
dnl Tests for new features in C++11
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
@@ -960,3 +973,33 @@ namespace cxx17
#endif // __cplusplus < 201703L
]])
+
+
+dnl Tests for new features in C++20
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_20], [[
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 202002L
+
+#error "This is not a C++20 compiler"
+
+#else
+
+#include <version>
+
+namespace cxx20
+{
+
+// As C++20 supports feature test macros in the standard, there is no
+// immediate need to actually test for feature availability on the
+// Autoconf side.
+
+} // namespace cxx20
+
+#endif // __cplusplus < 202002L
+
+]])
diff --git a/dviware/dvisvgm/missing b/dviware/dvisvgm/missing
index 8d0eaad250..625aeb1189 100755
--- a/dviware/dvisvgm/missing
+++ b/dviware/dvisvgm/missing
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
diff --git a/dviware/dvisvgm/src/ImageToSVG.cpp b/dviware/dvisvgm/src/ImageToSVG.cpp
index e810f32e66..c38d3cc9b9 100644
--- a/dviware/dvisvgm/src/ImageToSVG.cpp
+++ b/dviware/dvisvgm/src/ImageToSVG.cpp
@@ -100,6 +100,7 @@ void ImageToSVG::convert (int pageno) {
" x " << XMLString(_bbox.height()*bp2mm) << "mm)\n";
Message::mstream(false, Message::MC_PAGE_WRITTEN) << "output written to " << svgfname << '\n';
}
+ _bbox.invalidate();
_svg.reset();
}
diff --git a/dviware/dvisvgm/src/PSInterpreter.cpp b/dviware/dvisvgm/src/PSInterpreter.cpp
index e796c760e3..cb74120309 100644
--- a/dviware/dvisvgm/src/PSInterpreter.cpp
+++ b/dviware/dvisvgm/src/PSInterpreter.cpp
@@ -63,6 +63,12 @@ void PSInterpreter::init () {
gsargs.emplace_back("-dDELAYSAFER");
gsargs.emplace_back("-dALLOWPSTRANSPARENCY");
}
+ // GS 9.55.0 introduced a new, C-based PDF interpreter which is enabled by default
+ // as of GS 9.56.0. Since dvisvgm relies on the old PS-based interpreter for its
+ // PDF support, we try to disable the new one.
+ // https://www.ghostscript.com/doc/9.56.0/Use.htm#PDF_switches
+ if (gsrev >= 9560)
+ gsargs.emplace_back("-dNEWPDF=false");
}
_gs.init(gsargs.size(), gsargs.data(), this);
_gs.set_stdio(input, output, error);
diff --git a/dviware/dvisvgm/test-driver b/dviware/dvisvgm/test-driver
index 89dba1e075..b8521a482e 100755
--- a/dviware/dvisvgm/test-driver
+++ b/dviware/dvisvgm/test-driver
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/info/latex-via-exemplos/README.md b/info/latex-via-exemplos/README.md
index b68f5c89ed..e8c6787493 100644
--- a/info/latex-via-exemplos/README.md
+++ b/info/latex-via-exemplos/README.md
@@ -1,5 +1,5 @@
-LaTeX Via Exemplos
-==================
+LaTeX2e Via Exemplos
+====================
This is the LaTeX2e course written in brazilian portuguese
language.
diff --git a/info/latex-via-exemplos/changelog.txt b/info/latex-via-exemplos/changelog.txt
index f6e938ecda..17df358342 100644
--- a/info/latex-via-exemplos/changelog.txt
+++ b/info/latex-via-exemplos/changelog.txt
@@ -1,3 +1,7 @@
+version (0.5.8) (2022-05-17)
+ - added example of package algorithmicx
+ - added example of package caption
+ - small change on example of ABNTEX2
version (0.5.7) (2021-07-17)
- Added example of packages "background".
- Added example to create class file
diff --git a/info/latex-via-exemplos/latex-via-exemplos-oneside.pdf b/info/latex-via-exemplos/latex-via-exemplos-oneside.pdf
index 46657dd732..cd01732dfa 100644
--- a/info/latex-via-exemplos/latex-via-exemplos-oneside.pdf
+++ b/info/latex-via-exemplos/latex-via-exemplos-oneside.pdf
Binary files differ
diff --git a/info/latex-via-exemplos/latex-via-exemplos.pdf b/info/latex-via-exemplos/latex-via-exemplos.pdf
index faf2ad9ea2..f43f354454 100644
--- a/info/latex-via-exemplos/latex-via-exemplos.pdf
+++ b/info/latex-via-exemplos/latex-via-exemplos.pdf
Binary files differ
diff --git a/info/latex-via-exemplos/latex-via-exemplos.tex b/info/latex-via-exemplos/latex-via-exemplos.tex
index b6e6b744a4..cc95c29b65 100644
--- a/info/latex-via-exemplos/latex-via-exemplos.tex
+++ b/info/latex-via-exemplos/latex-via-exemplos.tex
@@ -1,3 +1,4 @@
+
% Usar XeLaTeX ou LuaLaTeX
% acento nao sobrevive no arquivo temporario de showexpl
% Use diretamente do arquivo externo, ou use XeLaTeX/LuaLaTeX
@@ -33,6 +34,16 @@
% \renewcommand{\@iffont@firstfont}{MS Mincho}
%\makeatother
+%\ifXeTeX
+% \ifx \IfFontExistsTF\undefined
+% \let\IfFontExistsTF\iffontexists
+% \fi
+%\else\ifLuaTeX
+ \ifx \IfFontExistsTF\undefined
+ \PackageError{\jobname}{fontspec is old}{Install updated fontspec package}
+ \fi
+%\fi\fi
+
%\ifLuaTeX
% patch on iffont
@@ -90,16 +101,6 @@
% versao antiga (2016) do fontspec ainda nao tem \IfFontExistsTF
% precisa atualizar o fontspec
-%\ifXeTeX
-% \ifx \IfFontExistsTF\undefined
-% \let\IfFontExistsTF\iffontexists
-% \fi
-%\else\ifLuaTeX
- \ifx \IfFontExistsTF\undefined
- \PackageError{\jobname}{fontspec is old}{Install updated fontspec package}
- \fi
-%\fi\fi
-
\IfFontExistsTF{\jafont}{}{\PackageError{\jobname}{Fonte japonês Mincho (\jafont) não encontrada.}{Instale um dos seguintes: Noto Serif CJK JP, MS Mincho, TakaoMincho, IPAexMincho, IPAMincho, Hiragino Mincho Pro}}
\IfFontExistsTF{\jagothic}{}{\PackageError{\jobname}{Fonte japonês Gothic não encontrada.}{Instale um dos seguintes: Noto Sans CJK JP, MS Gothic, TakaoGothic, IPAexGothic, IPAGothic, Hiragino Maru Gothic Pro}}
@@ -184,6 +185,8 @@
\usepackage{keyval}
\usepackage{showexpl} % ele carrega listings
+% \usepackage{algorithmicx}
+\usepackage{algpseudocode} % arquivo de estilo de algorithmicx
%%% pacotes usados nos exemplos correspondentes
%
@@ -235,6 +238,11 @@
%% caixa colorida usada para exemplo de certificado.
% \usepacakge{tcolorbox}
+% Opção 'H' e criar float personalizado.
+%\usepackage{float}
+%\newfloat{algorithm}{tbp}{loa}[chapter]
+% \floatname{algorithm}{Algorítimo}
+
% bug no titlesec 2.10.1 remove enumeracao da secao (corrigido em 2.10.2 de 21/03/2016).
% O Usuario de ubuntu 16.04 devem atualizar o titlesec
% https://tex.stackexchange.com/questions/299969/titlesec-loss-of-section-numbering-with-the-new-update-2016-03-15/300259
@@ -331,6 +339,7 @@
@inbook,@incollectedbook,@incollection,@injournal,@inproceedings,%
@manual,@mastersthesis,@misc,@patent,@periodical,@phdthesis,@preamble,%
@proceedings,@standard,@string,@techreport,@unpublished%
+ % author, editor, publisher, year, url, urldate
},
comment=[l][\itshape]{@comment},
sensitive=false,
@@ -877,7 +886,7 @@
\providecommand{\square}{\openbox}
% lmusrrache/rmustache não tem no Latin Modern Math
-% unicode math redfine no comeco do documento.
+% unicode math redefine no comeco do documento.
% Portanto, deve redefinir no comeco do documento (não no preambulo)
% usando \AtBeginDocument
\DeclareSymbolFont{largesymbolsoriginal}{OMX}{cmex}{m}{n}
@@ -948,10 +957,12 @@
% Terceira atualização (0.5.3): junho de 2018.
% Quarta atualização (0.5.4): agosto de 2019
% Quinta atualização (0.5.6): dezembro de 2019
-\date{Versão 0.5.7, 17 de julho de 2021}
+% Sexta atualização (0.5.7): julho de 2021
+\date{Versão 0.5.8, 17 de maio de 2022}
+
%%%%%%%%%%%%%%%%%%%%%%%
-% Docuemt start here
+% Documet start here
\pagestyle{empty}
\begin{document}
@@ -959,7 +970,7 @@
\thispagestyle{empty}
-Copyright \textcopyright 2018--2021 por Sadao Massago.
+Copyright \textcopyright 2018--2022 por Sadao Massago.
Todos os direitos reservados.
Este documento é software livre; podendo ser redistribuído e/ou modificado de acordo com os termos da Licença Pública da GNU como publicado pela Free Software Foundation; versão 2 da Licença, ou (se for sua opção) qualquer versão posterior.
Veja \url{https://opensource.org/licenses/gpl-license}.
@@ -1047,8 +1058,8 @@ Apêndice~G descreve alguns aplicativos livres interessantes que auxilia os usu
% Sorocaba, junho de 2018.
% Sorocaba, agosto de 2019.
% Sorocaba, dezembro de 2019.
-Sorocaba, julho de 2021.
-
+% Sorocaba, julho de 2021.
+Sorocaba, maio de 2022.
\
@@ -4418,11 +4429,12 @@ Muitas vezes, um contador está vinculado no outro e quando outro for incrementa
Além disso, contadores vinculados aos outros imprimem dois valores (contador do outro mais dele).
Este vínculo pode ser criado pelo comando
-\verb+\numberwithin{<contador>}{<pai>}+\index{numberwithin@\verb+\numberwithin+}.
+\verb+\counterwithin{<contador>}{<pai>}+\index{counterwithin@\verb+\counterwithin+}.
Quando o \verb+<pai>+ for incrementado, o \verb+<contador>+ é reinicializado.
-Por exemplo, para que a enumeração da equação seja da forma \texttt{<no. do capítulo>.<no da equação>}, basta colocar \verb+\numberwithin{equation}{chapter}+ no \texttt{preamble} do documento.
+Por exemplo, para que a enumeração da equação seja da forma \texttt{<no. do capítulo>.<no da equação>}, basta colocar \verb+\counterwithin{equation}{chapter}+ no \texttt{preamble} do documento.
+Observando que, para \LaTeX{} versão anterior a 2018/04/01, requer o pacote \texttt{chngcntr}.
-Para eliminar um vínculo, usa-se o comando \verb+\@removefromreset+\index{arrobaremovefromreset@\arrobasymbforindex\verb+removefromreset+}. Por exemplo, pare remover o vínculo do contador da equação com o contador da seção, coloque o código
+Para eliminar um vínculo, usa-se o comando \verb+\@removefromreset+\index{arrobaremovefromreset@\arrobasymbforindex\verb+removefromreset+}. Por exemplo, para remover o vínculo do contador da equação com o contador da seção, coloque o código
\begin{singlespacing}
\begin{lstlisting}
@@ -6274,6 +6286,58 @@ Veja o Exemplo~\ref{ex15:pdflscape}.
%
%rotating (sideways,sidewaysfigure,sidewaystable) ou lscape/pdflscape? OK
+\section{Criando ambientes tipo figuras e tabelas}
+
+O pacote \texttt{float}\index{float} permite criar elemento flutuante do tipo figuras e tabelas.
+O novo elemento flutuante é crido pelo comando \verb+\newfloat+\index{newfloat@\verb+\newfloat+}.
+O código
+\begin{singlespacing}
+%\begin{lstlisting}[caption={ex11-06.tex, parte d},label=ex:11-06:d]
+\begin{lstlisting}
+\newfloat{algorithm}{tbp}{loa}%[section]
+\floatname{algorithm}{Algorítmo}
+\end{lstlisting}
+\end{singlespacing}
+cria o ambiente \texttt{algorithm} que auto posiciona e aceita \verb+\caption+ dentro dele para enumerar e colocar o título. Veja o exemplo~\ref{ex15:newfloat}.
+
+\begin{singlespacing}
+%\begin{lstlisting}[caption={ex11-06.tex, parte d},label=ex:11-06:d]
+\begin{lstlisting}[caption={ex15-newfloat.tex},label=ex15:newfloat]
+\begin{algorithm}
+\caption{Primeiro algorítimo}
+Algorítimo aqui.
+\end{algorithm}
+\end{lstlisting}
+\end{singlespacing}
+%
+\begin{ltxlistingout}
+\begin{center}Algorítmo 1: Primeiro algorítimo\end{center}
+Algorítimo aqui.
+\end{ltxlistingout}
+
+A lista do novo elemento flutuante é criado pelo comando \verb+\listof+. Para listar algorítmos criados acima, usa-se o comando \verb+\listof{algorithm}{Lista de algorítmos}+
+
+Note que o elemento flutuante não pode dividir em páginas, sendo recomendado para figuras ou elementos menores. No caso do exemplo, o algorítimo pode ser maior, sendo recomendado dividir em páginas, como ocorre com a tabela longa. Para criar o ambiente do estilo \texttt{longtable} (tabela longa) na qual pode quebrar entre páginas, mas ficam enumeradas como os elementos flutuantes, usa-se o pacote \texttt{caption}\index{caption} que permite controlar capítulos dos elementos flutuantes e similares.
+O código
+%
+\begin{singlespacing}
+%\begin{lstlisting}[caption={ex11-06.tex, parte d},label=ex:11-06:d]
+\begin{lstlisting}
+% definindo o tipo algorítimo
+\DeclareCaptionType{algorithmtype}[Algorítimo][Lista de algorítimos]
+% ambiente algorítmo configura o caption para tipo algorítimo
+\newenvironment{algorithm}{\captionsetup{type=algorithmtype}}{}
+%{\captionsetup{type=algorithmtype,justification=centering}}{}
+% atalho para lista de algoritmos
+\newcommand\listofalgorithms\listofalgorithmtypes
+% contador subordinado a capítulo
+\usepackage{chngcntr} % não e necessário a partir de 2018/04/01
+\counterwithin{algorithmtype}{chapter}
+\end{lstlisting}
+\end{singlespacing}
+%
+Cria o ambiente \texttt{algorithm} similar a \texttt{longtable}.
+
\section{Escrevendo medidas internacionais}
Para escrever medidas, requer alguns cuidados tais como usar letra romana reta (por ser abreviatura da palavra), ter pequeno espaço entre valor e medida, entre outros.
@@ -6390,7 +6454,7 @@ A configuração geral de formatação pode ser feito pela opção do pacote ou
%\end{LTXexample}
%\end{singlespacing}
-\section{Enfeites e código fontes}
+\section{Moldura, enumeração das linhas e marca d'água}
Para enfeitar o documento, como colocar moldura nos elementos, usamos os pacotes adicionais, exceto molduras simples fornecidos pelo \verb+\fbox+\index{fbox@\verb+\fbox+}.
O pacote \texttt{fancybox}\index{fancybox} oferece caixas com molduras extras tais como \verb+\shadowbox+\index{shadowbox@\verb+\shadowbox+} (com sombra), \verb+doublebox+\index{doublebox@\verb+\doublebox+} (moldura dupla) e \verb+\ovalbox+\index{ovalbox@\verb+\ovalbox+} (moldura com quinas arredondadas).
@@ -6628,9 +6692,92 @@ Para limpar o fundo, usa-se o \verb+\ClearShipoutPictureBG+\index{ClearShipoutPi
Os comandos do \texttt{eso-pic} tem a versão ``BG'' para atrás da página como marca d'agua e versão ``FG'' para colocar na frente da página. Por exemplo, \verb+\AddToShipoutPictureFG+\index{AddToShipoutPictureFG@\verb+\AddToShipoutPictureFG+} coloca na frente em vez de trás da página.
-Para colocar código fonte de um programa, costuma usar o pacote \texttt{listings}\index{listings} que implementa o ambiente \texttt{lstlisting}\index{lstlisting} na qual formata o código de acordo com a linguagem de programação escolhida.
+\section{Algorítmo e código fonte}
+
+Para algoritmos, poderá usar o pacote \texttt{algorithmicx}\index{algorithmicx} que destaca entre pacotes com mesma finalidade, por poder configurar a forma como será exibido. Para usar, carrege o pacote \texttt{algpseudocode}\index{algpseudocode} que carregará o pacote \texttt{algoritmicx} e define estilo para pseudo código.
+%
+%Para que algoritmos sejam tratados como elemento flutuante, poderá criar o ambiente usando o pacote \texttt{float}\index{float}, colocando o código similar a que segue, no preambulo.
+%
+%\begin{singlespacing}
+%\begin{lstlisting}
+%\usepackage{float}
+%% criando algoritmo flutuante
+%\newfloat{algorithm}{tbp}{loa}[section]
+%\floatname{algorithm}{Algorítmmo}
+%\end{lstlisting}
+%\end{singlespacing}
+%%
+%Assim, o ambiente criado \texttt{algorithmm} ficam auto posicionadas e enumeradas. Para listar os algorítmmos, use o comando \verb+\listof{algorithm}{Lista de algorítimos}+.
+%Nte que, colocar como elemento flutuante não é recomendável para código mais longo.
+%
+%Para código maais longo, use o pacote \texttt{caption}
+%para colocar titulo e enumeração com \textt{captionof}.
+%
+Veja o Exemplo~\ref{ex15:alg}
+%\begin{singlespacing}
+\begin{ltxlisting}[caption={ex15-alg.tex},label=ex15:alg]
+ \begin{algorithmic}[1] % iniciar enumeração das linhas
+ \Procedure{DotProd}{$u,v$} \Comment{Produto interno de u e v}
+ \State $p\gets 0$ \Comment{Inicializa como 0}
+ \For{$i\gets 1,\ldots, n$}
+ \State $p \gets p + u_i*v_i$
+ \EndFor
+ \State \textbf{return} $p$\Comment{retorna o valor}
+ \EndProcedure
+ \end{algorithmic}
+\end{ltxlisting}
+%\end{singlespacing}
+%
+%\begin{ltxlistingout}
+% \begin{center}Algorítmo 1.1: produto interno\end{center}
+% \begin{algorithmic}[1] % iniciar enumeração das linhas
+% \Procedure{DotProd}{$u,v$} \Comment{Produto interno de u e v}
+% \State $p\gets 0$ \Comment{Inicializa como 0}
+% \For{$i\gets 1,\ldots, n$}
+% \State $p \gets p + u_i*v_i$
+% \EndFor
+% \State \textbf{return} $p$\Comment{retorna o valor}
+% \EndProcedure
+% \end{algorithmic}
+%\end{ltxlistingout}
+%
+Como o pacote usa a palavra-chave em inglês, pode querer traduzir para português. Para isso, use o comando \verb+\algrenewcommand+\index{algrenewcommand@\verb+\algrenewcommand+} para redefinir palavra-chaves no preambulo do documento.
+
+Por exemplo, o código
+%
+\begin{singlespacing}
+\begin{lstlisting}
+\usepackage{algpseudocode}
+% traduzindo a palavras-chave
+\algrenewcommand\algorithmicprocedure{\textbf{procedimento}}
+\algrenewcommand\algorithmicfor{\textbf{para}}
+\algrenewcommand\algorithmicdo{\textbf{faça}}
+\algrenewcommand\algorithmicend{\textbf{fim}}
+\end{lstlisting}
+\end{singlespacing}
+%
+traduzirá a palavra-chaves do algoritmo anterior para português brasileiro. Ajustando o ``return'' para ``retorne'', terá a saída
+\begin{singlespacing}
+\algrenewcommand\algorithmicprocedure{\textbf{procedimento}}
+\algrenewcommand\algorithmicfor{\textbf{para}}
+\algrenewcommand\algorithmicdo{\textbf{faça}}
+\algrenewcommand\algorithmicend{\textbf{fim}}
+\begin{ltxlistingout}
+ \begin{algorithmic}[1] % iniciar enumeração das linhas
+ \Procedure{DotProd}{$u,v$} \Comment{Produto interno de u e v}
+ \State $p\gets 0$ \Comment{Inicializa como 0}
+ \For{$i\gets 1,\ldots, n$}
+ \State $p \gets p + u_i*v_i$
+ \EndFor
+ \State \textbf{retorne} $p$\Comment{retorna o valor}
+ \EndProcedure
+ \end{algorithmic}
+\end{ltxlistingout}
+\end{singlespacing}
+
+O Pacote \texttt{algorithmicx} vem com mais dois estilos que são para linguagem Pascal e C, mas para colocar código fonte de um programa, costuma usar o pacote \texttt{listings}\index{listings} que implementa o ambiente \texttt{lstlisting}\index{lstlisting} na qual formata o código de acordo com a linguagem de programação escolhida.
-Ele já vem com configurações para diversas idiomas, tais como \texttt{Ada}, \texttt{Algol}, \texttt{Assember}, \texttt{awk}, \texttt{bash}, \texttt{Basic}, \texttt{C\#}, \texttt{C++}, \texttt{C}, \texttt{Cobol}, \texttt{Delphi}, \texttt{Fortran}, \texttt{Gnuplot}, \texttt{HTML}, \texttt{Java}, \texttt{Lisp}, \texttt{Logo}, \texttt{Lua}, \texttt{Make}, \texttt{Mathematica}, \texttt{Matlab}, \texttt{Metapost}, \texttt{Modula-2}, \texttt{Objective C}, \texttt{Octave}, \texttt{Pascal}, \texttt{Perl}, \texttt{PHP}, \texttt{Prolog}, \texttt{Python}, \texttt{R}, \texttt{Ruby}, \texttt{SAS}, \texttt{Scilab}, \texttt{sh}, \texttt{SQL}, \texttt{TeX}, \texttt{XML}, entre vários outros.
+Ele já vem com configurações para diversas idiomas, tais como \texttt{Ada}, \texttt{Algol}, \texttt{Assember}, \texttt{awk}, \texttt{bash}, \texttt{Basic}, \texttt{C\#}, \texttt{C++}, \texttt{C}, \texttt{Cobol}, \texttt{Delphi}, \texttt{Fortran}, \texttt{Gnuplot}, \texttt{HTML}, \texttt{Java}, \texttt{Lisp}, \texttt{Logo}, \texttt{Lua}, \texttt{Make}, \texttt{Mathematica}, \texttt{Matlab}, \texttt{Metapost}, \texttt{Modula-2}, \texttt{Objective C}, \texttt{Octave}, \texttt{Pascal}, \texttt{Perl}, \texttt{PHP}, \texttt{Prolog}, \texttt{Python}, \texttt{GNU R}, \texttt{Ruby}, \texttt{SAS}, \texttt{Scilab}, \texttt{sh}, \texttt{SQL}, \texttt{TeX}, \texttt{XML}, entre vários outros.
Se a linguagem pretendida não estiver na lista, poderá definir novos idiomas.
Para o seu uso, costuma efetuar configurações iniciais no \texttt{preamble} com o comando \verb+\lstset+\index{lstset@\verb+\lstset+} e no ambiente de \texttt{lstlisting}, efetuar mais alguns ajustes se necessário.
@@ -7486,6 +7633,26 @@ Veja Exemplo~\ref{ex16:tikz:pintar}.
%\end{LTXexample}
%\end{singlespacing}
+Para traçar grades, existe o comando \texttt{grid}\index{grid}. O Exemplo~\ref{ex16:tikz:grid} ilustra o seu uso para produzir papel milimetrado, cuja saída será omitida.
+%
+\begin{singlespacing}
+\begin{lstlisting}[caption={ex16-tikz-grid.tex}, label=ex16:tikz:grid]
+\begin{center}
+\documentclass[a4paper]{article}
+% A4: 21cmx29.7cm
+\usepackage[a4paper,lmargin=0.5cm,textheight=28.05cm,textwidth=19.05cm]{geometry}
+\usepackage{tikz}
+\begin{document}
+\begin{tikzpicture}
+\draw [black!20, very thin, step=0.1cm] (0,0) grid (19,28);
+\draw [black!20, step=0.5cm] (0,0) grid (19,28);
+\draw [black!20, step=1.0cm, thick] (0,0) grid (19,28);
+\end{tikzpicture}
+\end{document}
+\end{center}
+\end{lstlisting}
+\end{singlespacing}
+%
Na matriz do \texttt{tikz}, podemos desenhar sobre ele.
Veja Exemplo~\ref{ex16:tikz:matriz}.
@@ -8307,7 +8474,7 @@ A sua saída será omitida aqui.
% Desabilitando ou redefinindo comandos que causa erros no bookmark do PDF
\pdfstringdefDisableCommands{%
\let\MakeUppercase\relax% desabilitando
- \def\\{ }%quebra de linha será substituído pelo espaço
+ % \\ e \and já é tratada adequadamente em ABNT2
}
\usepackage{pdfpages} % para incluir documento PDF (ex.: folha de aprovação)
\usepackage{indentfirst} % se quer que o primeiro parágrafo seja indentada
@@ -8414,9 +8581,8 @@ Resumo em língua estrangeira (obrigatório no ABNT).
% CONTEÚDO PRINCIPAL
\clearpage\thispagestyle{empty}\cleardoublepage
\mainmatter % ou \textual
-\phantomsection%\pdfbookmark[chapter]{Prefácio}{prefacio}
-\addcontentsline{toc}{chapter}{\MakeUppercase{Prefácio}}
-\chapter*{Prefácio} % % prefácio (ou apresentação) é opcional no ABNT
+% Como já é conteúdo textual, capítulos serão enumerados.
+\chapter{Prefácio} % % prefácio (ou apresentação) é opcional no ABNT
Prefácio aqui. Se preferir, pode incorporar na introdução.
\clearpage\thispagestyle{empty}\cleardoublepage
\chapter{Introdução}
@@ -11857,13 +12023,13 @@ Assim, não foi incluído detalhes sobre caixas e similares.
Para quem pretende criar comandos e ambientes complexos ou desenvolver pacotes, o conhecimento sobre caixas é importante.
Para este assunto, recomendo a leitura de outro material tais como \cite{book:oeticker:2018} e \cite{book:wikibook:latex}.
-Neste texto, foram apresentados pacotes e classes mais utilizados, mas vários pacotes e classes populares foram omitidos.
+Neste texto, foram apresentados alguns dos pacotes e classes mais utilizados, mas vários pacotes e classes populares foram omitidos.
Por exemplo, quem trabalha com fórmulas complexas, é recomendável que considere o uso do pacote \texttt{mathtools}\index{mathtools} que resolve algumas deficiências do pacote \texttt{amsmath}.
Para criar ficha catalográfica, é interessante colocar o número total de páginas usando o pacote \texttt{lastpage}\index{lastpage}.
Para inserir uma ou mais páginas diretamente no documento em vez de inserir como figuras, usa-se o pacote \texttt{pdfpages}.
Quem trabalha com tabelas, pode precisar do pacote \texttt{multirow}\index{multirow} para mesclar linhas, além de vários pacotes específicos para tabelas omitidos neste documento.
-%Para elaborar livros: koma script, memoir, tufte-latex, bookest, willowtreebook, octavo, ElegantBook (templates), ycbook, nostarch, simplivre
+%Para elaborar livros: koma script, memoir, tufte-latex, bookest, willowtreebook, octavo, ElegantBook (templates), ycbook, nostarch, simplivre (multilingue), beaulivre (multilingue, colorido)
Ainda existem pacotes específicos para xadrez, diagrama química, música, etc, além dos pacotes destinados para cada tipo de ajustes.
%A lista dos pacotes interessantes são longas.
diff --git a/info/tex-nutshell/tex-nutshell.pdf b/info/tex-nutshell/tex-nutshell.pdf
index 3e3c59b2f5..b8a8da3b93 100644
--- a/info/tex-nutshell/tex-nutshell.pdf
+++ b/info/tex-nutshell/tex-nutshell.pdf
Binary files differ
diff --git a/info/tex-nutshell/tex-nutshell.tex b/info/tex-nutshell/tex-nutshell.tex
index 412313ca2d..18077c7bf7 100644
--- a/info/tex-nutshell/tex-nutshell.tex
+++ b/info/tex-nutshell/tex-nutshell.tex
@@ -1,12 +1,25 @@
\useoptex % We are using OpTeX, no LaTeX
-\report
\fontfam[pagella]
+\report
\emergencystretch=2em
\hbadness=2100
\def\thed#1{\ifnum#1<10 0\fi\the#1}
+\let\isAleBsaved=\_isAleB
+\def\preprocessindex{% sort \_iilist with the rule: .word is before :word is before word
+ \def\_isAleB ##1##2{%
+ \edef\tmpb{\csstring ##1&\relax\csstring ##2&\relax}%
+ \_ea\testAleB \tmpb
+ }
+ \ifx\_iilist\empty \else \_dosorting\_iilist \fi
+ \let\_isAleB=\isAleBsaved
+}
+\def\testAleB #1#2#3\relax #4#5#6\relax{%
+ \ifnum `#2<`#5 \_AleBtrue \else \_AleBfalse \fi
+}
+
\catcode`<=13
\def<#1>{{\def\_dsp { }\iindex{:#1}\iis {:#1} {$\langle\hbox{\it#1}\rangle$}}%
$\def\,{\hskip1.5pt plus.3pt minus1.2pt}\,\langle\hbox{\it#1}\rangle\,$}
@@ -21,7 +34,11 @@
\adef|#1;{{\Red#1}}
\toksapp\everyintt{\catcode`\/=13 \catcode`\|=13}
\catcode`\/=12 \catcode`\|=12
-\def\comment#1\par{{\adef\%{\%}\Green\%#1}\par}
+\ifx\_partokenset\undefined
+ \def\comment#1\par{{\adef\%{\%}\Green\%#1}\par}
+\else
+ \def\comment#1\_par{{\adef\%{\%}\Green\%#1}\_par}
+\fi
\catcode`\%=14
\toksapp\everytt{\adef\%{\comment}}
@@ -134,8 +151,9 @@ There are four types of meanings of control sequences:
* the control sequence can be a \ii macro {\em macro}. When it is read, it is
replaced by its \ii replacement/text {\em replacement text} in the input queue. If there are more
macros in the replacement text, all macros are replaced. This is called the
- \ii expansion/process {\em expansion process} which ends on the level of text to be printed or
- primitive commands or registers or character constants or font selectors.
+ \ii expansion/process {\em expansion process} which ends when only printable text,
+ primitive commands (listed in section~\ref[main]),
+ registers (section~\ref[reg]), character constants, or font selectors remain.
\enditems
Example. When \TeX/ reads:
@@ -170,9 +188,10 @@ only \"private" control sequences (prefixed by `_`). So, a user can re-define
\sec Formats, engines
\TeX/ is able to start without any macros preloaded in the so-called \ii ini-TeX/state {\em ini-\TeX/
-state} (the `-ini` option on the command line must be used). It knows only Cca 300
-primitive registers and primitive commands at this state.\fnote
-{Roughly speaking, if you know all these 300 primitive objects and the syntax of all
+state} (the `-ini` option on the command line must be used). It already knows
+only primitive registers and primitive commands at this state.\fnote
+{Roughly speaking, if you know all these primitive objects (about 300 in
+classical \TeX/, 700 in Lua\TeX/) and the syntax of all these
primitive commands and all the built-in algorithms, then you know all about \TeX.
But starting to produce ordinary documents from this primitive level without
macro support is nearly impossible.}
@@ -200,7 +219,7 @@ format file with the same name which is used for running \TeX. For example
and reads the `document.tex`.
The `tex.fmt` is the format file dumped when \ii plain~TeX/macros {\em plain \TeX/ macros}\fnote
-{Plain \TeX/ macros were made by \iindex {Knuth,/Donald} Donald Knuth, the author of \TeX. It is a
+{Plain \TeX/ macros were made by \iindex {Knuth,/Donald}Donald Knuth, the author of \TeX. It is a
set of basic macros and settings which is used (more or less) as a subset of
all other macro packages.}
were read, and `latex.fmt` is the format file dumped when \ii LaTeX/macros {\em \LaTeX/ macros} were read.
@@ -318,20 +337,19 @@ If you need to print these special characters you can use
\ii -percent,-at,-dollar,-hash
`\%`, `\&`, `\$`, `\#` or `\_`. These five control sequences are declared as
\"print this character" in all typical \TeX/ formats.
-Another possibility is to use a verbatim environment (it depends on the used format)
+Another possibility is to use a verbatim environment (it depends on the used format).
Last alternative: you can use \i csstring {\let\,=\relax`\csstring\<character>`}
-in Lua\TeX/, because Lua\TeX/ disposes
-with the primitive command `\csstring` which converts `\<character>`
+in Lua\TeX/, because it has
+the primitive command `\csstring` which converts `\<character>`
to `<character>`\c{12}.
The \ii active/character \"active character\c{13}"
can be declared by \i catcode `\catcode`\code{`}`\<character>=13`.
-Such a `<character>` behaves like a `<control sequence>`. For example, you can
+Such a `<character>` behaves like a control sequence. For example, you can
define it by
-\i def `\def<character>{...}`.
-If a `<control sequence>` is
-listed in this document, the active character is meant too.
-{\emergencystretch=2em\par}
+\i def `\def<character>{...}` and use this `<character>` as a macro.
+If the term `<control sequence>` is used in syntactical rules in this document
+then it means a real control sequence or an active character.
Each control sequence is built by the tokenizer starting from `\`\c0. Its name is
a continuous sequence of letters\c{11} finalized by the first non-letter.
@@ -341,7 +359,7 @@ Note that \OpTeX/ sets
You can look to such files and you will see many such characters inside
private control sequence names declared by \LaTeX/ macros.
-If the first character after `\`\c0 is not letter\c{\ne11}, then the control sequence is
+If the first character after `\`\c0 is non-letter (i.e.\ `<something>`\c{\ne11}), then the control sequence is
finalized with only this character in its name. So called
\ii one~character/control~sequence {\em one-character control sequence} is created. Other control sequences
are \ii multiletter/control~sequence {\em multiletter control sequences}.
@@ -458,8 +476,9 @@ The following primitive commands used in vertical mode start
horizontal mode: the first character of a paragraph (most common
situation) or \i indent `\indent`, \i noindent `\noindent`, \i hskip `\hskip`
(and its alternatives),
-\i vrule `\vrule`\fnote {The list is not fully completed, but most important commands
-are mentioned here.} and the plain \TeX/ macro \i leavevmode `\leavevmode`.
+\i vrule `\vrule` and the plain \TeX/ macro
+\i leavevmode `\leavevmode`\fnote {The list is not exhaustive, but most important commands
+are mentioned.}.
When horizontal mode is opened, an indentation of \i parindent `\parindent` width
is included. The exception is only if horizontal mode is started by
\i noindent `\noindent`; then the paragraph has no indentation.
@@ -748,7 +767,7 @@ example:
Note that there are two possibilities of how to write real macro
parameters when a macro is in use. The parameter is one token by default but
if there is `{<something>}` then the parameter is `<something>`. The braces
-here are delimiters for the real parameter (the \TeX/ group is not open/close
+here are delimiters for the real parameter (no \TeX/ group is opened/closed
here).
The example above shows a declaration of \ii unseparated/parameter,@ {\em unseparated parameters}. The
@@ -806,8 +825,8 @@ then the number of `#` must be doubled for inner declaration. Example:
\def\defmacro#1#2{%
\def#1##1 ##2 {##1 says: #1 ##2.}%
}
-\defmacro \hello {hello} % expands to \def\hello#1 #2 {#1 says: hello #2.}
-\defmacro \goobye {good bye}
+\defmacro \hello {hello} % expands to \def\hello#1 #2 {#1 says: hello #2.}
+\defmacro \goodbye {good bye}
\hello Jane Eric % expands to: Jane says: hello Eric.
\goodbye Eric John % expands to: Eric says: good bye John.
\endtt
@@ -962,7 +981,7 @@ type of the register (i.e.\ `<number>`, `<dimen>`, `<skip>` and `<toks>`) follow
`01234567`\,;
* {\let\,=\relax \code{`}`<character>`} (the prefix is the reverse single quote \code{`}).
It returns the code of the `<character>`. Examples:
- \code{`}`A` or one-character control sequence \code{`\\A}).
+ \code{`}{`|A;`} or one-character control sequence \code{`}{`|\A;`}).
Both examples represent the number 65. The Unicode of the character
is taken here if Lua\TeX/ or \XeTeX/ is used;
* \i numexpr `\numexpr<num. expression>`.\fnote
@@ -1077,7 +1096,7 @@ value given by plain \TeX/ follows.
by \x`\baselineskip` by default. The appropriate real glue is inserted
between the lines.
But if this real glue (between boxes) is less than \x`\lineskiplimit`
- then only \x`\lineskip` is inserted between the boxes.
+ then \x`\lineskip` is inserted between the boxes instead.
* \y`\topskip=10pt` is the distance between the top of the page box and the baseline of
the first line.
@@ -1101,7 +1120,8 @@ value given by plain \TeX/ follows.
and \x`\widowpenalty` (inserted before the last line of a paragraph). Typographical rules
often demand us to set these registers to 10000 (no page break is allowed here).
-* \y`\looseness=0` allows us to create of a \"suboptimal" paragraph. The page-building
+* \y`\looseness=0` allows us to create of a \"suboptimal" paragraph. The
+ paragraph building
algorithm tries to build the paragraph with \x`\looseness` lines more than
the optimal solution. If the {\noda\x`\tolerance`} does not have a sufficiently large value
then this setting is simply ignored. It is reset to zero after each
@@ -1225,6 +1245,9 @@ detail).
\sec[expand] Expandable primitive commands
+These commands are processed like macros, i.e.\ they expand to
+another sequence of tokens.
+
Notes about notation are in this and the following sections.
If the documented command is from the $\varepsilon$\TeX{} extension
(i.e.\ implemented in pdf\TeX, \XeTeX/
@@ -1277,7 +1300,7 @@ If it is~a~Lua\TeX/ only command then three *** are prefixed.
Another example: a macro programmer should implement a key/value dictionary
using this primitive:
\begtt
-\def\keyval #1 #2 {\expandafter\def\csname dict:#1\endcsnme{#2}}
+\def\keyval #1 #2 {\expandafter\def\csname dict:#1\endcsname{#2}}
\def\value #1 {\csname dict:#1\endcsname}
\keyval Peter 21 % key=Peter, value=21, saved to the dictionary
% it does \def\dict:Peter{21}
@@ -1299,10 +1322,10 @@ If it is~a~Lua\TeX/ only command then three *** are prefixed.
We need not define `\csname` by `\def`; we want to define
a `\dict:key`. The \x`\expandafter` helps here.
- The \z`<token 2>` should be another \x`\expandafter`. We can see
+ The \z`<token 2>` can be another \x`\expandafter`. We can see
\x`\expandafter` chains in many macro files. For example
- `\expandafter A\expandafter B\expandafter CD` is processed as
- \z`ABC<expanded D>`.
+ `\expandafter\A\expandafter\B\expandafter\C\D` is processed as
+ \z`\A \B \C <expanded>\D`.
The `/<expandafters>.`\z`{|<text>};` syntax rule enables us to prepare \z`|<text>;` by
`\expandafter`(s). For example \i detokenize `\detokenize{\macro}` expands to
@@ -1377,6 +1400,10 @@ If it is~a~Lua\TeX/ only command then three *** are prefixed.
(or nothing if no `<else text>` is declared) when a branch with a given
`<number>` does not exist.
+* \*\i pdfstrcmp `\pdfstrcmp{<stringA>}{<stringB>}` returns $-1$ if
+ <stringA>$\string<$<stringB>, 0 if they are equal or 1 in other cases.
+ It is not implemented in \LuaTeX.
+
* \i noexpand `\noexpand|<token>;`.
The expand processor does not expand the `<token>` if it is expanding the
text in {\noda\x`\edef`, \x`\write`, \x`\message`} or similar lists.
@@ -1429,7 +1456,7 @@ If it is~a~Lua\TeX/ only command then three *** are prefixed.
{\bf Commands used for declaration of control sequences}
\par\nobreak\medskip\nobreak
\begitems
-* \x`\def` \x`\edef` \x`\gdef` \x`\xdef` were documented in section~\ref[def].
+* \x`\def`, \x`\edef`, \x`\gdef`, \x`\xdef` were documented in section~\ref[def].
* \x`\long` is a prefix; it can be used before `\def`, `\edef`, `\gdef`, `\xdef`.
The declared macro accepts the control sequence `\par` in its parameters.
@@ -1497,6 +1524,7 @@ If it is~a~Lua\TeX/ only command then three *** are prefixed.
processor. Typically \z`<token 1>` is a macro that needs to know the next token.
\enditems
+\goodbreak
\noindent {\bf Commands for box manipulation}
\begitems
@@ -1547,7 +1575,7 @@ If it is~a~Lua\TeX/ only command then three *** are prefixed.
\ii box/register {\em box registers} addressed by `<box number>` and
accessed via \i box `\box<box number>` or alternatives described below.
The `\setbox` command saves the given `<box>` to the register addressed by
- `<box-number>`.
+ `<box number>`.
Macro programmers use only 0 to 9 \z`<box numbers>` directly. Other
addresses to box registers should be allocated by
@@ -2238,13 +2266,13 @@ If it is~a~Lua\TeX/ only command then three *** are prefixed.
\nonum\sec[index] Index
-\iis LaTeX/macros {\LaTeX/ macros}
-\iis plain~TeX/macros {plain \TeX/ macros}
+\iis LaTeX/macros {\LaTeX{} macros}
+\iis plain~TeX/macros {plain \TeX{} macros}
\iis OpTeX {\OpTeX}
\iis pdfTeX {pdf\TeX}
\iis luaTeX {Lua\TeX}
\iis XeTeX {\XeTeX}
-\iis TeX/engines {\TeX/ engines}
+\iis TeX/engines {\TeX{} engines}
\iis -percent {{\code{\\\%}}}
\iis -at {{\code{\\\&}}}
\iis -dollar {{\code{\\\$}}}
@@ -2252,14 +2280,15 @@ If it is~a~Lua\TeX/ only command then three *** are prefixed.
\iis -space {{\code{\\}{\tt\char9251}}}
\iis -italiccorr {{\code{\\/}}}
\iis -hyphen {{\code{\\-}}}
-\iis TeXlive {\TeX/live}
+\iis TeXlive {\TeX{}live}
\iis baselineskiprule {\code{\\baselineskip} rule}
\iis -comma {{\code{\\,}}}
\iis -greater {{\code{\\>}}}
\iis -column {{\code{\\;}}}
\iis -exclam {{\code{\\!}}}
+\iis plain~TeX {plain \TeX}
-{\let\Blue=\relax \typosize[9/11] \begmulti 3 \makeindex \endmulti}
+{\let\Blue=\relax \typosize[9/11] \preprocessindex \begmulti 3 \makeindex \endmulti }
\normalbottom
@@ -2268,7 +2297,7 @@ If it is~a~Lua\TeX/ only command then three *** are prefixed.
\noindent
Petr Olšák {\tt petr@olsak.net}\nl
Czech Technical University in Prague\nl
-Version of the text: 0.7 (\the\year-\thed\month-\thed\day)
+Version of the text: 0.8 (\the\year-\thed\month-\thed\day)
\break
diff --git a/macros/generic/markdown/README.md b/macros/generic/markdown/README.md
index 8460bb5c89..2cc772807b 100644
--- a/macros/generic/markdown/README.md
+++ b/macros/generic/markdown/README.md
@@ -181,8 +181,9 @@ For further information, consult one of the following:
4. My journal articles published by [TUGboat][]:
- [Using Markdown inside TeX documents][tb119],
- [Markdown 2.7.0: Towards lightweight markup in TeX][tb124],
- - [Making Markdown into a Microwave Meal][tb129], and
- - [Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX][tb131].
+ - [Making Markdown into a Microwave Meal][tb129],
+ - [Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX][tb131], and
+ - [Markdown 2.15.0: What's New?][tb133].
5. Journal articles of me and my students published by [CSTUG][] (in Czech and Slovak):
- [Rendering Markdown inside TeX Documents][10.5300/2016-1-4/78],
- [Markdown 2.8.1: Boldly Unto the Throne of Lightweight Markup in TeX][10.5300/2020-1-2/48],
@@ -199,10 +200,11 @@ For further information, consult one of the following:
[overleaf-5]: https://www.overleaf.com/latex/examples/writing-posters-with-markdown/jtbgmmgqrqmh "Writing Posters with Markdown"
[overleaf-6]: https://www.overleaf.com/latex/examples/using-markdown-in-latex-documents/whdrnpcpnwrm "Using Markdown in LaTeX documents"
- [tb119]: https://www.tug.org/TUGboat/tb38-2/tb119novotny.pdf "Using Markdown inside TeX documents"
- [tb124]: https://www.tug.org/TUGboat/tb40-1/tb124novotny-markdown.pdf "Markdown 2.7.0: Towards lightweight markup in TeX"
- [tb129]: https://www.tug.org/TUGboat/tb41-3/tb129novotny-frozen.pdf "Making Markdown into a Microwave Meal"
- [tb131]: https://tug.org/TUGboat/tb42-2/tb131novotny-markdown.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
+ [tb119]: https://www.tug.org/TUGboat/tb38-2/tb119novotny.pdf "Using Markdown inside TeX documents"
+ [tb124]: https://www.tug.org/TUGboat/tb40-1/tb124novotny-markdown.pdf "Markdown 2.7.0: Towards lightweight markup in TeX"
+ [tb129]: https://www.tug.org/TUGboat/tb41-3/tb129novotny-frozen.pdf "Making Markdown into a Microwave Meal"
+ [tb131]: https://www.tug.org/TUGboat/tb42-2/tb131novotny-markdown.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
+ [tb133]: https://www.overleaf.com/read/pshkckczmmjn "Markdown 2.15.0: What's New?"
[tb131-slides]: https://tug.org/tug2021/assets/pdf/tug2021-novotny-slides.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
[tb131-video]: https://youtu.be/i2GJMnLCZls "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
diff --git a/macros/generic/markdown/VERSION b/macros/generic/markdown/VERSION
index 58060d5509..927859fc31 100644
--- a/macros/generic/markdown/VERSION
+++ b/macros/generic/markdown/VERSION
@@ -1 +1 @@
-2.15.0-0-g9296cf1 (2022/03/31)
+2.15.1-0-g4b33c77 (2022/05/17)
diff --git a/macros/generic/markdown/markdown.dtx b/macros/generic/markdown/markdown.dtx
index d43c7ab3cd..ef4641a5a7 100644
--- a/macros/generic/markdown/markdown.dtx
+++ b/macros/generic/markdown/markdown.dtx
@@ -99,12 +99,14 @@
\newunicodechar{☒}{\markdownRendererTickedBox}
\newunicodechar{⌛}{\markdownRendererHalfTickedBox}
\newunicodechar{☐}{\markdownRendererUntickedBox}
-\IfFileExists{emoji.sty}{
+\makeatletter
+\@ifpackagelater{emoji}{2020/03/16}{
\usepackage{emoji}
\newunicodechar{😉}{\emoji{winking-face}}
}{
\newunicodechar{😉}{;-)}
}
+\makeatother
% Set up the catcodes.
\catcode`\_=12 % We won't be typesetting much math and Lua contains lots of `_`.
@@ -9943,7 +9945,7 @@ that the \TeX{} engine has shell access.
%
% \begin{markdown}
-#### Content Block Rendere {#texcontentblockrenderers}
+#### Content Block Renderers {#texcontentblockrenderers}
The \mdef{markdownRendererContentBlock} macro represents an iA\,Writer content
block. It receives four arguments: the local file or online image filename
@@ -22467,6 +22469,7 @@ end
% \begin{macrocode}
\markdownIfOption{frozenCache}{}{^^A
\immediate\write18{^^A
+ mkdir -p "\markdownOptionCacheDir";
if printf '%s' "#3" | grep -q -E '^https?:';
then
% \end{macrocode}
@@ -23139,31 +23142,63 @@ end
\endgroup
% \end{macrocode}
% \begin{markdown}
-% If the URL begins with a hash sign, then we assume that it is a relative
-% reference. Otherwise, we assume that it is an absolute URL.
+% If the label and the fully-escaped URI are equivalent and the title is
+% empty, assume that the link is an autolink. Otherwise, assume that the
+% link is either direct or indirect.
% \end{markdown}
% \begin{macrocode}
- \tl_set:Nx
- \l_tmpa_tl
- { \str_range:nnn { ##3 } { 1 } { 1 } }
- \str_if_eq:NNTF
- \l_tmpa_tl
- \c_hash_str
+ \tl_set:Nn \l_tmpa_tl { ##1 }
+ \tl_set:Nn \l_tmpb_tl { ##2 }
+ \bool_set:Nn
+ \l_tmpa_bool
+ {
+ \tl_if_eq_p:NN
+ \l_tmpa_tl
+ \l_tmpb_tl
+ }
+ \tl_set:Nn \l_tmpa_tl { ##4 }
+ \bool_set:Nn
+ \l_tmpb_bool
+ {
+ \tl_if_empty_p:N
+ \l_tmpa_tl
+ }
+ \bool_if:nTF
{
- \exp_args:No
- \markdownLaTeXRendererRelativeLink
- { \str_range:nnn { ##3 } { 2 } { -1 } }
+ \l_tmpa_bool && \l_tmpb_bool
+ }
+ {
+ \markdownLaTeXRendererAutolink { ##2 } { ##3 }
}{
- \markdownLaTeXRendererAbsoluteLink { ##1 } { ##2 } { ##3 } { ##4 }
+ \markdownLaTeXRendererDirectOrIndirectLink { ##1 } { ##2 } { ##3 } { ##4 }
}
}
\next
}
+\def\markdownLaTeXRendererAutolink#1#2{%
+% \end{macrocode}
+% \begin{markdown}
+% If the URL begins with a hash sign, then we assume that it is a relative
+% reference. Otherwise, we assume that it is an absolute URL.
+% \end{markdown}
+% \begin{macrocode}
+ \tl_set:Nx
+ \l_tmpa_tl
+ { \str_range:nnn { #2 } { 1 } { 1 } }
+ \str_if_eq:NNTF
+ \l_tmpa_tl
+ \c_hash_str
+ {
+ \exp_args:No
+ \ref
+ { \str_range:nnn { #2 } { 2 } { -1 } }
+ }{
+ \url { #2 }
+ }
+}
\ExplSyntaxOff
-\def\markdownLaTeXRendererAbsoluteLink#1#2#3#4{%
- #1\footnote{\ifx\empty#4\empty\else#4: \fi\texttt<\url{#3}\texttt>}}
-\def\markdownLaTeXRendererRelativeLink#1{%
- \ref{#1}}
+\def\markdownLaTeXRendererDirectOrIndirectLink#1#2#3#4{%
+ #1\footnote{\ifx\empty#4\empty\else#4: \fi\url{#3}}}
% \end{macrocode}
% \par
% \begin{markdown}
diff --git a/macros/generic/markdown/markdown.html b/macros/generic/markdown/markdown.html
index 4ccaeb8bf1..1734c541b2 100644
--- a/macros/generic/markdown/markdown.html
+++ b/macros/generic/markdown/markdown.html
@@ -82,7 +82,7 @@
<header id="title-block-header">
<h1 class="title">Markdown Package User Manual</h1>
<p class="author">Vít Novotný</p>
-<p class="date">2.15.0-0-g9296cf1 (2022/03/31)</p>
+<p class="date">2.15.1-0-g4b33c77 (2022/05/17)</p>
</header>
<nav id="TOC" role="doc-toc">
<ul>
@@ -4831,7 +4831,7 @@ Thomas,Edison,1847</code></pre>
<blockquote>
<p><img src="https://tug.org/tugboat/noword.jpg" title="The Communications of the TeX Users Group" /></p>
</blockquote>
-<h4 data-number="2.3.1.11" id="texcontentblockrenderers"><span class="header-section-number">2.3.1.11</span> Content Block Rendere</h4>
+<h4 data-number="2.3.1.11" id="texcontentblockrenderers"><span class="header-section-number">2.3.1.11</span> Content Block Renderers</h4>
<p>The <code>\markdownRendererContentBlock</code> macro represents an iA Writer content block. It receives four arguments: the local file or online image filename extension cast to the lower case, the fully escaped <abbr>uri</abbr> that can be directly typeset, the raw <abbr>uri</abbr> that can be used outside typesetting, and the title of the content block.</p>
<p>The <code>\markdownRendererContentBlockOnlineImage</code> macro represents an iA Writer online image content block. The macro receives the same arguments as .</p>
<p>The <code>\markdownRendererContentBlockCode</code> macro represents an iA Writer content block that was recognized as a file in a known programming language by its filename extension <span class="math inline"><em>s</em></span>. If any <code>markdown-languages.json</code> file found by <strong><code>kpathsea</code></strong> contains a record <span class="math inline">(<em>k</em>, <em>v</em>)</span>, then a non-online-image content block with the filename extension <span class="math inline"><em>s</em>, <em>s</em></span><code>:lower()</code><span class="math inline"> = <em>k</em></span> is considered to be in a known programming language <span class="math inline"><em>v</em></span>. The macro receives five arguments: the local file name extension <span class="math inline"><em>s</em></span> cast to the lower case, the language <span class="math inline"><em>v</em></span>, the fully escaped <abbr>uri</abbr> that can be directly typeset, the raw <abbr>uri</abbr> that can be used outside typesetting, and the title of the content block.</p>
diff --git a/macros/generic/markdown/markdown.pdf b/macros/generic/markdown/markdown.pdf
index ecad79cd26..5dec5088c9 100644
--- a/macros/generic/markdown/markdown.pdf
+++ b/macros/generic/markdown/markdown.pdf
Binary files differ
diff --git a/macros/generic/xint/CHANGES.html b/macros/generic/xint/CHANGES.html
index eb355ab053..7055bf2e04 100644
--- a/macros/generic/xint/CHANGES.html
+++ b/macros/generic/xint/CHANGES.html
@@ -4,1099 +4,2904 @@
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
- <meta name="author" content="xint 1.4j" />
+ <meta name="author" content="xint 1.4k" />
<title>CHANGE LOG</title>
- <style type="text/css">
- code{white-space: pre-wrap;}
- span.smallcaps{font-variant: small-caps;}
- span.underline{text-decoration: underline;}
- div.column{display: inline-block; vertical-align: top; width: 50%;}
- </style>
- <style type="text/css">
- body{margin-left : 10%; margin-right : 15%; margin-top: 4ex; font-size: 12pt;}
- pre {white-space: pre-wrap;}
- code {white-space: pre-wrap;}
- #TOC {float: right; position: relative; top: 100px; margin-bottom: 100px;}
+ <style>
+ html {
+ line-height: 1.5;
+ font-family: Georgia, serif;
+ font-size: 20px;
+ color: #1a1a1a;
+ background-color: #fdfdfd;
+ }
+ body {
+ margin: 0 auto;
+ max-width: 36em;
+ padding-left: 50px;
+ padding-right: 50px;
+ padding-top: 50px;
+ padding-bottom: 50px;
+ hyphens: auto;
+ overflow-wrap: break-word;
+ text-rendering: optimizeLegibility;
+ font-kerning: normal;
+ }
+ @media (max-width: 600px) {
+ body {
+ font-size: 0.9em;
+ padding: 1em;
+ }
+ h1 {
+ font-size: 1.8em;
+ }
+ }
+ @media print {
+ body {
+ background-color: transparent;
+ color: black;
+ font-size: 12pt;
+ }
+ p, h2, h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2, h3, h4 {
+ page-break-after: avoid;
+ }
+ }
+ p {
+ margin: 1em 0;
+ }
+ a {
+ color: #1a1a1a;
+ }
+ a:visited {
+ color: #1a1a1a;
+ }
+ img {
+ max-width: 100%;
+ }
+ h1, h2, h3, h4, h5, h6 {
+ margin-top: 1.4em;
+ }
+ h5, h6 {
+ font-size: 1em;
+ font-style: italic;
+ }
+ h6 {
+ font-weight: normal;
+ }
+ ol, ul {
+ padding-left: 1.7em;
+ margin-top: 1em;
+ }
+ li > ol, li > ul {
+ margin-top: 0;
+ }
+ blockquote {
+ margin: 1em 0 1em 1.7em;
+ padding-left: 1em;
+ border-left: 2px solid #e6e6e6;
+ color: #606060;
+ }
+ code {
+ font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace;
+ font-size: 85%;
+ margin: 0;
+ }
+ pre {
+ margin: 1em 0;
+ overflow: auto;
+ }
+ pre code {
+ padding: 0;
+ overflow: visible;
+ overflow-wrap: normal;
+ }
+ .sourceCode {
+ background-color: transparent;
+ overflow: visible;
+ }
+ hr {
+ background-color: #1a1a1a;
+ border: none;
+ height: 1px;
+ margin: 1em 0;
+ }
+ table {
+ margin: 1em 0;
+ border-collapse: collapse;
+ width: 100%;
+ overflow-x: auto;
+ display: block;
+ font-variant-numeric: lining-nums tabular-nums;
+ }
+ table caption {
+ margin-bottom: 0.75em;
+ }
+ tbody {
+ margin-top: 0.5em;
+ border-top: 1px solid #1a1a1a;
+ border-bottom: 1px solid #1a1a1a;
+ }
+ th {
+ border-top: 1px solid #1a1a1a;
+ padding: 0.25em 0.5em 0.25em 0.5em;
+ }
+ td {
+ padding: 0.125em 0.5em 0.25em 0.5em;
+ }
+ header {
+ margin-bottom: 4em;
+ text-align: center;
+ }
+ #TOC li {
+ list-style: none;
+ }
+ #TOC ul {
+ padding-left: 1.3em;
+ }
+ #TOC > ul {
+ padding-left: 0;
+ }
+ #TOC a:not(:hover) {
+ text-decoration: none;
+ }
+ code{white-space: pre-wrap;}
+ span.smallcaps{font-variant: small-caps;}
+ span.underline{text-decoration: underline;}
+ div.column{display: inline-block; vertical-align: top; width: 50%;}
+ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
+ ul.task-list{list-style: none;}
+ body{margin: 0; margin-left : 10%; margin-right : 15%; margin-top: 4ex; font-size: 20px; font-family: serif; max-width: 100%; padding: 0; }
+ pre {white-space: pre-wrap;}
+ code {white-space: pre-wrap;}
+ a:link { color: blue; }
+ a:visited { color: green; }
+ a:hover { text-decoration: underline; color: hotpink }
+ a:active { color: brown; }
+ #TOC {float: right; position: relative; top: 100px; margin-bottom: 100px; margin-left: 20px;}
+ .display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
-<header>
+<header id="title-block-header">
<h1 class="title">CHANGE LOG</h1>
-<p class="author">xint 1.4j</p>
-<p class="date">2021/07/13</p>
+<p class="author">xint 1.4k</p>
+<p class="date">2022/05/18</p>
</header>
-<nav id="TOC">
+<nav id="TOC" role="doc-toc">
+<ul>
+<li><a href="#k-20220518"
+id="toc-k-20220518"><code>1.4k (2022/05/18)</code></a>
<ul>
-<li><a href="#j-20210713"><code>1.4j (2021/07/13)</code></a><ul>
-<li><a href="#bug-fixes">Bug fixes</a></li>
+<li><a href="#breaking-changes" id="toc-breaking-changes">Breaking
+changes</a></li>
+<li><a href="#bug-fixes" id="toc-bug-fixes">Bug fixes</a></li>
+<li><a href="#new-features" id="toc-new-features">New features</a></li>
</ul></li>
-<li><a href="#i-20210611"><code>1.4i (2021/06/11)</code></a><ul>
-<li><a href="#new-features">New features</a></li>
-<li><a href="#bug-fixes-1">Bug fixes</a></li>
+<li><a href="#j-20210713"
+id="toc-j-20210713"><code>1.4j (2021/07/13)</code></a>
+<ul>
+<li><a href="#bug-fixes-1" id="toc-bug-fixes-1">Bug fixes</a></li>
</ul></li>
-<li><a href="#h-20210527"><code>1.4h (2021/05/27)</code></a><ul>
-<li><a href="#bug-fixes-2">Bug fixes</a></li>
+<li><a href="#i-20210611"
+id="toc-i-20210611"><code>1.4i (2021/06/11)</code></a>
+<ul>
+<li><a href="#new-features-1" id="toc-new-features-1">New
+features</a></li>
+<li><a href="#bug-fixes-2" id="toc-bug-fixes-2">Bug fixes</a></li>
</ul></li>
-<li><a href="#g-20210525"><code>1.4g (2021/05/25)</code></a><ul>
-<li><a href="#breaking-changes">Breaking changes</a></li>
-<li><a href="#deprecated">Deprecated</a></li>
-<li><a href="#new-features-1">New features</a></li>
-<li><a href="#bug-fixes-3">Bug fixes</a></li>
+<li><a href="#h-20210527"
+id="toc-h-20210527"><code>1.4h (2021/05/27)</code></a>
+<ul>
+<li><a href="#bug-fixes-3" id="toc-bug-fixes-3">Bug fixes</a></li>
</ul></li>
-<li><a href="#f-20210510"><code>1.4f (2021/05/10)</code></a><ul>
-<li><a href="#breaking-changes-1">Breaking changes</a></li>
-<li><a href="#bug-fixes-4">Bug fixes</a></li>
+<li><a href="#g-20210525"
+id="toc-g-20210525"><code>1.4g (2021/05/25)</code></a>
+<ul>
+<li><a href="#breaking-changes-1" id="toc-breaking-changes-1">Breaking
+changes</a></li>
+<li><a href="#deprecated" id="toc-deprecated">Deprecated</a></li>
+<li><a href="#new-features-2" id="toc-new-features-2">New
+features</a></li>
+<li><a href="#bug-fixes-4" id="toc-bug-fixes-4">Bug fixes</a></li>
</ul></li>
-<li><a href="#e-20210505"><code>1.4e (2021/05/05)</code></a><ul>
-<li><a href="#breaking-changes-2">Breaking changes</a></li>
-<li><a href="#new-features-2">New features</a></li>
-<li><a href="#bug-fixes-5">Bug fixes</a></li>
+<li><a href="#f-20210510"
+id="toc-f-20210510"><code>1.4f (2021/05/10)</code></a>
+<ul>
+<li><a href="#breaking-changes-2" id="toc-breaking-changes-2">Breaking
+changes</a></li>
+<li><a href="#bug-fixes-5" id="toc-bug-fixes-5">Bug fixes</a></li>
</ul></li>
-<li><a href="#d-20210329"><code>1.4d (2021/03/29)</code></a><ul>
-<li><a href="#breaking-changes-3">Breaking changes</a></li>
-<li><a href="#bug-fixes-6">Bug fixes</a></li>
+<li><a href="#e-20210505"
+id="toc-e-20210505"><code>1.4e (2021/05/05)</code></a>
+<ul>
+<li><a href="#breaking-changes-3" id="toc-breaking-changes-3">Breaking
+changes</a></li>
+<li><a href="#new-features-3" id="toc-new-features-3">New
+features</a></li>
+<li><a href="#bug-fixes-6" id="toc-bug-fixes-6">Bug fixes</a></li>
</ul></li>
-<li><a href="#c-20210220"><code>1.4c (2021/02/20)</code></a><ul>
-<li><a href="#bug-fixes-7">Bug fixes</a></li>
+<li><a href="#d-20210329"
+id="toc-d-20210329"><code>1.4d (2021/03/29)</code></a>
+<ul>
+<li><a href="#breaking-changes-4" id="toc-breaking-changes-4">Breaking
+changes</a></li>
+<li><a href="#bug-fixes-7" id="toc-bug-fixes-7">Bug fixes</a></li>
</ul></li>
-<li><a href="#b-20200225"><code>1.4b (2020/02/25)</code></a><ul>
-<li><a href="#future">Future</a></li>
-<li><a href="#new-features-3">New features</a></li>
-<li><a href="#bug-fixes-8">Bug fixes</a></li>
+<li><a href="#c-20210220"
+id="toc-c-20210220"><code>1.4c (2021/02/20)</code></a>
+<ul>
+<li><a href="#bug-fixes-8" id="toc-bug-fixes-8">Bug fixes</a></li>
</ul></li>
-<li><a href="#a-20200219"><code>1.4a (2020/02/19)</code></a><ul>
-<li><a href="#breaking-changes-4">Breaking changes</a></li>
-<li><a href="#new-features-4">New features</a></li>
-<li><a href="#bug-fixes-9">Bug fixes</a></li>
+<li><a href="#b-20200225"
+id="toc-b-20200225"><code>1.4b (2020/02/25)</code></a>
+<ul>
+<li><a href="#future" id="toc-future">Future</a></li>
+<li><a href="#new-features-4" id="toc-new-features-4">New
+features</a></li>
+<li><a href="#bug-fixes-9" id="toc-bug-fixes-9">Bug fixes</a></li>
</ul></li>
-<li><a href="#section"><code>1.4 (2020/01/31)</code></a><ul>
-<li><a href="#breaking-changes-5">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features">Improvements and new features</a></li>
-<li><a href="#bug-fixes-10">Bug fixes</a></li>
-<li><a href="#todo">TODO</a></li>
+<li><a href="#a-20200219"
+id="toc-a-20200219"><code>1.4a (2020/02/19)</code></a>
+<ul>
+<li><a href="#breaking-changes-5" id="toc-breaking-changes-5">Breaking
+changes</a></li>
+<li><a href="#new-features-5" id="toc-new-features-5">New
+features</a></li>
+<li><a href="#bug-fixes-10" id="toc-bug-fixes-10">Bug fixes</a></li>
</ul></li>
-<li><a href="#f-20190910"><code>1.3f (2019/09/10)</code></a><ul>
-<li><a href="#improvements-and-new-features-1">Improvements and new features</a></li>
-<li><a href="#bug-fixes-11">Bug fixes</a></li>
+<li><a href="#section"
+id="toc-section"><code>1.4 (2020/01/31)</code></a>
+<ul>
+<li><a href="#breaking-changes-6" id="toc-breaking-changes-6">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features"
+id="toc-improvements-and-new-features">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-11" id="toc-bug-fixes-11">Bug fixes</a></li>
+<li><a href="#todo" id="toc-todo">TODO</a></li>
</ul></li>
-<li><a href="#e-20190405"><code>1.3e (2019/04/05)</code></a><ul>
-<li><a href="#breaking-changes-6">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features-2">Improvements and new features</a></li>
-<li><a href="#bug-fixes-12">Bug fixes</a></li>
+<li><a href="#f-20190910"
+id="toc-f-20190910"><code>1.3f (2019/09/10)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-1"
+id="toc-improvements-and-new-features-1">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-12" id="toc-bug-fixes-12">Bug fixes</a></li>
</ul></li>
-<li><a href="#d-20190106"><code>1.3d (2019/01/06)</code></a><ul>
-<li><a href="#breaking-changes-7">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features-3">Improvements and new features</a></li>
-<li><a href="#bug-fixes-13">Bug fixes</a></li>
+<li><a href="#e-20190405"
+id="toc-e-20190405"><code>1.3e (2019/04/05)</code></a>
+<ul>
+<li><a href="#breaking-changes-7" id="toc-breaking-changes-7">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features-2"
+id="toc-improvements-and-new-features-2">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-13" id="toc-bug-fixes-13">Bug fixes</a></li>
</ul></li>
-<li><a href="#c-20180617"><code>1.3c (2018/06/17)</code></a><ul>
-<li><a href="#improvements-and-new-features-4">Improvements and new features</a></li>
-<li><a href="#bug-fixes-14">Bug fixes</a></li>
+<li><a href="#d-20190106"
+id="toc-d-20190106"><code>1.3d (2019/01/06)</code></a>
+<ul>
+<li><a href="#breaking-changes-8" id="toc-breaking-changes-8">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features-3"
+id="toc-improvements-and-new-features-3">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-14" id="toc-bug-fixes-14">Bug fixes</a></li>
</ul></li>
-<li><a href="#b-20180518"><code>1.3b (2018/05/18)</code></a><ul>
-<li><a href="#improvements-and-new-features-5">Improvements and new features</a></li>
+<li><a href="#c-20180617"
+id="toc-c-20180617"><code>1.3c (2018/06/17)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-4"
+id="toc-improvements-and-new-features-4">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-15" id="toc-bug-fixes-15">Bug fixes</a></li>
</ul></li>
-<li><a href="#a-20180307"><code>1.3a (2018/03/07)</code></a><ul>
-<li><a href="#removed">Removed</a></li>
-<li><a href="#improvements-and-new-features-6">Improvements and new features</a></li>
-<li><a href="#bug-fixes-15">Bug fixes</a></li>
+<li><a href="#b-20180518"
+id="toc-b-20180518"><code>1.3b (2018/05/18)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-5"
+id="toc-improvements-and-new-features-5">Improvements and new
+features</a></li>
</ul></li>
-<li><a href="#section-1"><code>1.3 (2018/03/01)</code></a><ul>
-<li><a href="#breaking-changes-8">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features-7">Improvements and new features</a></li>
+<li><a href="#a-20180307"
+id="toc-a-20180307"><code>1.3a (2018/03/07)</code></a>
+<ul>
+<li><a href="#removed" id="toc-removed">Removed</a></li>
+<li><a href="#improvements-and-new-features-6"
+id="toc-improvements-and-new-features-6">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-16" id="toc-bug-fixes-16">Bug fixes</a></li>
</ul></li>
-<li><a href="#q-20180206"><code>1.2q (2018/02/06)</code></a><ul>
-<li><a href="#improvements-and-new-features-8">Improvements and new features</a></li>
-<li><a href="#bug-fixes-16">Bug fixes</a></li>
+<li><a href="#section-1"
+id="toc-section-1"><code>1.3 (2018/03/01)</code></a>
+<ul>
+<li><a href="#breaking-changes-9" id="toc-breaking-changes-9">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features-7"
+id="toc-improvements-and-new-features-7">Improvements and new
+features</a></li>
</ul></li>
-<li><a href="#p-20171205"><code>1.2p (2017/12/05)</code></a><ul>
-<li><a href="#breaking-changes-9">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features-9">Improvements and new features</a></li>
-<li><a href="#bug-fixes-17">Bug fixes</a></li>
+<li><a href="#q-20180206"
+id="toc-q-20180206"><code>1.2q (2018/02/06)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-8"
+id="toc-improvements-and-new-features-8">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-17" id="toc-bug-fixes-17">Bug fixes</a></li>
</ul></li>
-<li><a href="#o-20170829"><code>1.2o (2017/08/29)</code></a><ul>
-<li><a href="#breaking-changes-10">Breaking changes</a></li>
-<li><a href="#deprecated-1">Deprecated</a></li>
+<li><a href="#p-20171205"
+id="toc-p-20171205"><code>1.2p (2017/12/05)</code></a>
+<ul>
+<li><a href="#breaking-changes-10" id="toc-breaking-changes-10">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features-9"
+id="toc-improvements-and-new-features-9">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-18" id="toc-bug-fixes-18">Bug fixes</a></li>
</ul></li>
-<li><a href="#n-20170806"><code>1.2n (2017/08/06)</code></a><ul>
-<li><a href="#breaking-changes-11">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features-10">Improvements and new features</a></li>
+<li><a href="#o-20170829"
+id="toc-o-20170829"><code>1.2o (2017/08/29)</code></a>
+<ul>
+<li><a href="#breaking-changes-11" id="toc-breaking-changes-11">Breaking
+changes</a></li>
+<li><a href="#deprecated-1" id="toc-deprecated-1">Deprecated</a></li>
</ul></li>
-<li><a href="#m-20170731"><code>1.2m (2017/07/31)</code></a><ul>
-<li><a href="#breaking-changes-12">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features-11">Improvements and new features</a></li>
-<li><a href="#bug-fixes-18">Bug fixes</a></li>
+<li><a href="#n-20170806"
+id="toc-n-20170806"><code>1.2n (2017/08/06)</code></a>
+<ul>
+<li><a href="#breaking-changes-12" id="toc-breaking-changes-12">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features-10"
+id="toc-improvements-and-new-features-10">Improvements and new
+features</a></li>
</ul></li>
-<li><a href="#l-20170726"><code>1.2l (2017/07/26)</code></a><ul>
-<li><a href="#removed-1">Removed</a></li>
-<li><a href="#improvements-and-new-features-12">Improvements and new features</a></li>
-<li><a href="#bug-fixes-19">Bug fixes</a></li>
+<li><a href="#m-20170731"
+id="toc-m-20170731"><code>1.2m (2017/07/31)</code></a>
+<ul>
+<li><a href="#breaking-changes-13" id="toc-breaking-changes-13">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features-11"
+id="toc-improvements-and-new-features-11">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-19" id="toc-bug-fixes-19">Bug fixes</a></li>
</ul></li>
-<li><a href="#k-20170106"><code>1.2k (2017/01/06)</code></a><ul>
-<li><a href="#breaking-changes-13">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features-13">Improvements and new features</a></li>
-<li><a href="#bug-fixes-20">Bug fixes</a></li>
+<li><a href="#l-20170726"
+id="toc-l-20170726"><code>1.2l (2017/07/26)</code></a>
+<ul>
+<li><a href="#removed-1" id="toc-removed-1">Removed</a></li>
+<li><a href="#improvements-and-new-features-12"
+id="toc-improvements-and-new-features-12">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-20" id="toc-bug-fixes-20">Bug fixes</a></li>
</ul></li>
-<li><a href="#j-20161222"><code>1.2j (2016/12/22)</code></a><ul>
-<li><a href="#improvements-and-new-features-14">Improvements and new features</a></li>
-<li><a href="#bug-fixes-21">Bug fixes</a></li>
+<li><a href="#k-20170106"
+id="toc-k-20170106"><code>1.2k (2017/01/06)</code></a>
+<ul>
+<li><a href="#breaking-changes-14" id="toc-breaking-changes-14">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features-13"
+id="toc-improvements-and-new-features-13">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-21" id="toc-bug-fixes-21">Bug fixes</a></li>
+</ul></li>
+<li><a href="#j-20161222"
+id="toc-j-20161222"><code>1.2j (2016/12/22)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-14"
+id="toc-improvements-and-new-features-14">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-22" id="toc-bug-fixes-22">Bug fixes</a></li>
</ul></li>
-<li><a href="#i-20161213"><code>1.2i (2016/12/13)</code></a><ul>
-<li><a href="#breaking-changes-14">Breaking changes</a></li>
-<li><a href="#removed-2">Removed</a></li>
-<li><a href="#improvements-and-new-features-15">Improvements and new features</a></li>
-<li><a href="#bug-fixes-22">Bug fixes</a></li>
+<li><a href="#i-20161213"
+id="toc-i-20161213"><code>1.2i (2016/12/13)</code></a>
+<ul>
+<li><a href="#breaking-changes-15" id="toc-breaking-changes-15">Breaking
+changes</a></li>
+<li><a href="#removed-2" id="toc-removed-2">Removed</a></li>
+<li><a href="#improvements-and-new-features-15"
+id="toc-improvements-and-new-features-15">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-23" id="toc-bug-fixes-23">Bug fixes</a></li>
</ul></li>
-<li><a href="#h-20161120"><code>1.2h (2016/11/20)</code></a><ul>
-<li><a href="#improvements-and-new-features-16">Improvements and new features</a></li>
-<li><a href="#bug-fixes-23">Bug fixes</a></li>
+<li><a href="#h-20161120"
+id="toc-h-20161120"><code>1.2h (2016/11/20)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-16"
+id="toc-improvements-and-new-features-16">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-24" id="toc-bug-fixes-24">Bug fixes</a></li>
</ul></li>
-<li><a href="#g-20160319"><code>1.2g (2016/03/19)</code></a><ul>
-<li><a href="#breaking-changes-15">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features-17">Improvements and new features</a></li>
+<li><a href="#g-20160319"
+id="toc-g-20160319"><code>1.2g (2016/03/19)</code></a>
+<ul>
+<li><a href="#breaking-changes-16" id="toc-breaking-changes-16">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features-17"
+id="toc-improvements-and-new-features-17">Improvements and new
+features</a></li>
</ul></li>
-<li><a href="#f-20160312"><code>1.2f (2016/03/12)</code></a><ul>
-<li><a href="#breaking-changes-16">Breaking changes</a></li>
-<li><a href="#improvements-and-new-features-18">Improvements and new features</a></li>
-<li><a href="#bug-fixes-24">Bug fixes</a></li>
+<li><a href="#f-20160312"
+id="toc-f-20160312"><code>1.2f (2016/03/12)</code></a>
+<ul>
+<li><a href="#breaking-changes-17" id="toc-breaking-changes-17">Breaking
+changes</a></li>
+<li><a href="#improvements-and-new-features-18"
+id="toc-improvements-and-new-features-18">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-25" id="toc-bug-fixes-25">Bug fixes</a></li>
</ul></li>
-<li><a href="#e-20151122"><code>1.2e (2015/11/22)</code></a><ul>
-<li><a href="#improvements-and-new-features-19">Improvements and new features</a></li>
-<li><a href="#bug-fixes-25">Bug fixes</a></li>
+<li><a href="#e-20151122"
+id="toc-e-20151122"><code>1.2e (2015/11/22)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-19"
+id="toc-improvements-and-new-features-19">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-26" id="toc-bug-fixes-26">Bug fixes</a></li>
</ul></li>
-<li><a href="#d-20151118"><code>1.2d (2015/11/18)</code></a><ul>
-<li><a href="#improvements-and-new-features-20">Improvements and new features</a></li>
-<li><a href="#bug-fixes-26">Bug fixes</a></li>
+<li><a href="#d-20151118"
+id="toc-d-20151118"><code>1.2d (2015/11/18)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-20"
+id="toc-improvements-and-new-features-20">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-27" id="toc-bug-fixes-27">Bug fixes</a></li>
</ul></li>
-<li><a href="#c-20151116"><code>1.2c (2015/11/16)</code></a><ul>
-<li><a href="#improvements-and-new-features-21">Improvements and new features</a></li>
-<li><a href="#bug-fixes-27">Bug fixes</a></li>
+<li><a href="#c-20151116"
+id="toc-c-20151116"><code>1.2c (2015/11/16)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-21"
+id="toc-improvements-and-new-features-21">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-28" id="toc-bug-fixes-28">Bug fixes</a></li>
</ul></li>
-<li><a href="#b-20151029"><code>1.2b (2015/10/29)</code></a><ul>
-<li><a href="#bug-fixes-28">Bug fixes</a></li>
+<li><a href="#b-20151029"
+id="toc-b-20151029"><code>1.2b (2015/10/29)</code></a>
+<ul>
+<li><a href="#bug-fixes-29" id="toc-bug-fixes-29">Bug fixes</a></li>
</ul></li>
-<li><a href="#a-20151019"><code>1.2a (2015/10/19)</code></a><ul>
-<li><a href="#improvements-and-new-features-22">Improvements and new features</a></li>
-<li><a href="#bug-fixes-29">Bug fixes</a></li>
+<li><a href="#a-20151019"
+id="toc-a-20151019"><code>1.2a (2015/10/19)</code></a>
+<ul>
+<li><a href="#improvements-and-new-features-22"
+id="toc-improvements-and-new-features-22">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-30" id="toc-bug-fixes-30">Bug fixes</a></li>
</ul></li>
-<li><a href="#section-2"><code>1.2 (2015/10/10)</code></a><ul>
-<li><a href="#removed-3">Removed</a></li>
-<li><a href="#improvements-and-new-features-23">Improvements and new features</a></li>
+<li><a href="#section-2"
+id="toc-section-2"><code>1.2 (2015/10/10)</code></a>
+<ul>
+<li><a href="#removed-3" id="toc-removed-3">Removed</a></li>
+<li><a href="#improvements-and-new-features-23"
+id="toc-improvements-and-new-features-23">Improvements and new
+features</a></li>
</ul></li>
-<li><a href="#c-20150912"><code>1.1c (2015/09/12)</code></a></li>
-<li><a href="#b-20150831"><code>1.1b (2015/08/31)</code></a></li>
-<li><a href="#a-20141107"><code>1.1a (2014/11/07)</code></a></li>
-<li><a href="#section-3"><code>1.1 (2014/10/28)</code></a><ul>
-<li><a href="#breaking-changes-17">Breaking changes</a></li>
-<li><a href="#removed-4">Removed</a></li>
-<li><a href="#deprecated-2">Deprecated</a></li>
-<li><a href="#improvements-and-new-features-24">Improvements and new features</a></li>
-<li><a href="#bug-fixes-30">Bug fixes</a></li>
+<li><a href="#c-20150912"
+id="toc-c-20150912"><code>1.1c (2015/09/12)</code></a></li>
+<li><a href="#b-20150831"
+id="toc-b-20150831"><code>1.1b (2015/08/31)</code></a></li>
+<li><a href="#a-20141107"
+id="toc-a-20141107"><code>1.1a (2014/11/07)</code></a></li>
+<li><a href="#section-3"
+id="toc-section-3"><code>1.1 (2014/10/28)</code></a>
+<ul>
+<li><a href="#breaking-changes-18" id="toc-breaking-changes-18">Breaking
+changes</a></li>
+<li><a href="#removed-4" id="toc-removed-4">Removed</a></li>
+<li><a href="#deprecated-2" id="toc-deprecated-2">Deprecated</a></li>
+<li><a href="#improvements-and-new-features-24"
+id="toc-improvements-and-new-features-24">Improvements and new
+features</a></li>
+<li><a href="#bug-fixes-31" id="toc-bug-fixes-31">Bug fixes</a></li>
</ul></li>
-<li><a href="#n-20140401"><code>1.09n (2014/04/01)</code></a></li>
-<li><a href="#m-20140226"><code>1.09m (2014/02/26)</code></a></li>
-<li><a href="#kb-20140213"><code>1.09kb (2014/02/13)</code></a></li>
-<li><a href="#k-20140121"><code>1.09k (2014/01/21)</code></a></li>
-<li><a href="#j-20140109"><code>1.09j (2014/01/09)</code></a></li>
-<li><a href="#i-20131218"><code>1.09i (2013/12/18)</code></a></li>
-<li><a href="#h-20131128"><code>1.09h (2013/11/28)</code></a></li>
-<li><a href="#g-20131122"><code>1.09g (2013/11/22)</code></a></li>
-<li><a href="#f-20131104"><code>1.09f (2013/11/04)</code></a></li>
-<li><a href="#e-20131029"><code>1.09e (2013/10/29)</code></a></li>
-<li><a href="#d-20131022"><code>1.09d (2013/10/22)</code></a></li>
-<li><a href="#c-20131009"><code>1.09c (2013/10/09)</code></a></li>
-<li><a href="#b-20131003"><code>1.09b (2013/10/03)</code></a></li>
-<li><a href="#a-20130924"><code>1.09a (2013/09/24)</code></a></li>
-<li><a href="#b-20130614"><code>1.08b (2013/06/14)</code></a></li>
-<li><a href="#a-20130611"><code>1.08a (2013/06/11)</code></a></li>
-<li><a href="#section-4"><code>1.08 (2013/06/07)</code></a></li>
-<li><a href="#section-5"><code>1.07 (2013/05/25)</code></a></li>
-<li><a href="#b-20130514"><code>1.06b (2013/05/14)</code></a></li>
-<li><a href="#section-6"><code>1.06 (2013/05/07)</code></a></li>
-<li><a href="#section-7"><code>1.05 (2013/05/01)</code></a></li>
-<li><a href="#section-8"><code>1.04 (2013/04/25)</code></a></li>
-<li><a href="#section-9"><code>1.03 (2013/04/14)</code></a></li>
-<li><a href="#section-10"><code>1.0 (2013/03/28)</code></a></li>
+<li><a href="#n-20140401"
+id="toc-n-20140401"><code>1.09n (2014/04/01)</code></a></li>
+<li><a href="#m-20140226"
+id="toc-m-20140226"><code>1.09m (2014/02/26)</code></a></li>
+<li><a href="#kb-20140213"
+id="toc-kb-20140213"><code>1.09kb (2014/02/13)</code></a></li>
+<li><a href="#k-20140121"
+id="toc-k-20140121"><code>1.09k (2014/01/21)</code></a></li>
+<li><a href="#j-20140109"
+id="toc-j-20140109"><code>1.09j (2014/01/09)</code></a></li>
+<li><a href="#i-20131218"
+id="toc-i-20131218"><code>1.09i (2013/12/18)</code></a></li>
+<li><a href="#h-20131128"
+id="toc-h-20131128"><code>1.09h (2013/11/28)</code></a></li>
+<li><a href="#g-20131122"
+id="toc-g-20131122"><code>1.09g (2013/11/22)</code></a></li>
+<li><a href="#f-20131104"
+id="toc-f-20131104"><code>1.09f (2013/11/04)</code></a></li>
+<li><a href="#e-20131029"
+id="toc-e-20131029"><code>1.09e (2013/10/29)</code></a></li>
+<li><a href="#d-20131022"
+id="toc-d-20131022"><code>1.09d (2013/10/22)</code></a></li>
+<li><a href="#c-20131009"
+id="toc-c-20131009"><code>1.09c (2013/10/09)</code></a></li>
+<li><a href="#b-20131003"
+id="toc-b-20131003"><code>1.09b (2013/10/03)</code></a></li>
+<li><a href="#a-20130924"
+id="toc-a-20130924"><code>1.09a (2013/09/24)</code></a></li>
+<li><a href="#b-20130614"
+id="toc-b-20130614"><code>1.08b (2013/06/14)</code></a></li>
+<li><a href="#a-20130611"
+id="toc-a-20130611"><code>1.08a (2013/06/11)</code></a></li>
+<li><a href="#section-4"
+id="toc-section-4"><code>1.08 (2013/06/07)</code></a></li>
+<li><a href="#section-5"
+id="toc-section-5"><code>1.07 (2013/05/25)</code></a></li>
+<li><a href="#b-20130514"
+id="toc-b-20130514"><code>1.06b (2013/05/14)</code></a></li>
+<li><a href="#section-6"
+id="toc-section-6"><code>1.06 (2013/05/07)</code></a></li>
+<li><a href="#section-7"
+id="toc-section-7"><code>1.05 (2013/05/01)</code></a></li>
+<li><a href="#section-8"
+id="toc-section-8"><code>1.04 (2013/04/25)</code></a></li>
+<li><a href="#section-9"
+id="toc-section-9"><code>1.03 (2013/04/14)</code></a></li>
+<li><a href="#section-10"
+id="toc-section-10"><code>1.0 (2013/03/28)</code></a></li>
</ul>
</nav>
-<pre><code>Source: xint.dtx 1.4j 2021/07/13 (doc 2021/07/13)
+<pre><code>Source: xint.dtx 1.4k 2022/05/18 (doc 2022/05/18)
Author: Jean-Francois Burnol
Info: Expandable operations on big integers, decimals, fractions
License: LPPL 1.3c</code></pre>
-<h2 id="j-20210713"><code>1.4j (2021/07/13)</code></h2>
+<h2 id="k-20220518"><code>1.4k (2022/05/18)</code></h2>
+<h3 id="breaking-changes">Breaking changes</h3>
+<ul>
+<li><p><strong>xintfrac</strong>: the longstanding (but documented as
+undecided and unstable) way of <code>\xintFloat</code> to output the
+zero value was <code>0.e0</code> and it has now been modified into
+<code>0.0e0</code>. Customizable via
+<code>\xintFloatZero</code>.</p></li>
+<li><p><strong>xintfrac</strong>/<strong>xintexpr</strong>: the
+behaviour of <code>\xintPFloat</code> (hence of
+<code>\xintfloateval</code>) has again changed: when the output is an
+integer (not using scientific notation) it does not get postfixed by
+<code>.0</code>. This applies in particular for the zero value, now
+printed <code>0</code>. Similarly, in the case of scientific notation
+with a single-digit (trimmed) mantissa, no <code>.0</code> is used.</p>
+<p>Customizable via <code>\xintPFloatIntSuffix</code>,
+<code>\xintPFloatLengthOneSuffix</code>, and
+<code>\xintPFloatZero</code>.</p>
+<p>Also, <code>\xintPFloat</code> trims trailing zeros from the full
+significand only if there are at least <code>4</code> of them, see
+<code>\xintPFloatMinTrimmed</code>.</p></li>
+<li><p><strong>xintfrac</strong>/<strong>xintexpr</strong>: definition
+of <code>\xintFracToSci</code> migrated from the former to the
+latter.</p></li>
+<li><p><strong>xintexpr</strong>:
+<code>\xintexpr{Safe,Restore}Catcodes</code> pairs now behave like a
+“last in first out” stack. Check the <code>pdf</code> documentation for
+details.</p></li>
+</ul>
<h3 id="bug-fixes">Bug fixes</h3>
<ul>
-<li><strong>xinttools</strong>: a brace removal bug affected the venerable <code>\xintSeq</code> if producing a single number (e.g. <code>\xintSeq{10}{10}</code> expanded to <code>10</code> not <code>{10}</code>). Thanks to Christophe Poulain for report.</li>
+<li><p><strong>xintexpr</strong>: the
+<code>\xintexpr{Safe,Restore}Catcodes</code> were documented at user
+level, but also used by the package <code>\xintdefvar</code> or
+<code>\xintdeffunc</code>. This could result in some bad interaction due
+to the somewhat strange (but documented) behaviour of nested
+<code>\xintexpr{Safe,Restore}Catcodes</code> (which has now been
+modified).</p></li>
+<li><p><strong>xintexpr</strong>: ever since <code>1.4</code>,
+<code>\xintdefufunc</code> (but not <code>\xintdeffunc</code>) forgot to
+reset the catcodes to their status prior to the sanitization done by the
+macro at the start of its execution.</p></li>
</ul>
-<h2 id="i-20210611"><code>1.4i (2021/06/11)</code></h2>
<h3 id="new-features">New features</h3>
<ul>
-<li><p><strong>xintexpr</strong>: the concept of simultaneous assignments is extended: in case of more variables than values the extraneous variables do not cause an error message but are simply set to the <code>nil</code> value; in case of more values than variables, the last variable is defined to be the ople concatenating all the extra values.</p></li>
-<li><p><strong>xintexpr</strong>: built-in functions usable with arbitrarily many arguments such as <code>max()</code>, <code>gcd()</code>, or <code>len()</code> are now again usable with a single numeric argument: since <code>1.4</code> a lone argument had to be a <code>nutple</code> (which was automatically unpacked). It can now again be a number.</p></li>
+<li><p><strong>xintfrac</strong>: <code>\xintPFloatZero</code>,
+<code>\xintPFloatIntSuffix</code>,
+<code>\xintPFloatLengthOneSuffix</code>,
+<code>\xintPFloatNoSciEmax</code>, <code>\xintPFloatNoSciEmin</code> and
+<code>\xintPFloatMinTrimmed</code> customize the output of
+<code>\xintPFloat</code>, hence also of <code>\xintfloateval</code> (and
+of <code>\xinteval</code> when scientific notation was used in the
+expression). Also added <code>\xintFloatZero</code>.</p></li>
+<li><p><strong>xintfrac</strong>:
+<code>\xintFloatToDecimal</code>.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintFracToDecimal</code>, an
+alternative to <code>\xintFracToSci</code> for the configuration of
+<code>\xintexprPrintOne</code>.</p></li>
+<li><p><strong>xintexpr</strong>: long awaited syntax
+<code>\xintieval[D]{...}</code> and <code>\xintfloateval[Q]{...}</code>
+now implemented. The legacy syntax with <code>\xintieval{[D]...}</code>
+and <code>\xintfloateval{[Q]...}</code> is kept for backwards
+compatibility.</p></li>
</ul>
+<h2 id="j-20210713"><code>1.4j (2021/07/13)</code></h2>
<h3 id="bug-fixes-1">Bug fixes</h3>
<ul>
-<li><p><strong>xintexpr</strong>: simultaneous assignments via <code>\xintdefvar</code> to 10 or more variables was broken if the right hand side was an ople (of length at least 10, as it had prior to this release to match the number of variables).</p></li>
-<li><p><strong>xintexpr</strong>: the mechanism which allows to define variables with names already in use for pre-existing functions was broken for some built-in functions: those handling syntax with dummy variables (currently <code>subs()</code>, <code>subsm()</code>, <code>subsn()</code>, <code>seq()</code>, <code>add()</code>, <code>mul()</code>, <code>ndseq()</code>, <code>ndmap()</code>, <code>ndfillraw()</code>) and the so-called “pseudo” functions (currently <code>bool()</code>, <code>togl()</code>, <code>protect()</code>, <code>qint()</code>, <code>qfrac()</code>, <code>qfloat()</code>, <code>qraw()</code>, <code>random()</code>, <code>qrand()</code>, <code>rbit()</code>). For example the function <code>seq()</code> was broken if the user had defined a variable <code>seq</code>.</p></li>
+<li><strong>xinttools</strong>: a brace removal bug affected the
+venerable <code>\xintSeq</code> if producing a single number
+(e.g. <code>\xintSeq{10}{10}</code> expanded to <code>10</code> not
+<code>{10}</code>). Thanks to Christophe Poulain for report.</li>
+</ul>
+<h2 id="i-20210611"><code>1.4i (2021/06/11)</code></h2>
+<h3 id="new-features-1">New features</h3>
+<ul>
+<li><p><strong>xintexpr</strong>: the concept of simultaneous
+assignments is extended: in case of more variables than values the
+extraneous variables do not cause an error message but are simply set to
+the <code>nil</code> value; in case of more values than variables, the
+last variable is defined to be the ople concatenating all the extra
+values.</p></li>
+<li><p><strong>xintexpr</strong>: built-in functions usable with
+arbitrarily many arguments such as <code>max()</code>,
+<code>gcd()</code>, or <code>len()</code> are now again usable with a
+single numeric argument: since <code>1.4</code> a lone argument had to
+be a <code>nutple</code> (which was automatically unpacked). It can now
+again be a number.</p></li>
</ul>
-<h2 id="h-20210527"><code>1.4h (2021/05/27)</code></h2>
<h3 id="bug-fixes-2">Bug fixes</h3>
<ul>
-<li><p><strong>xintexpr</strong>: the recent <code>1.4g</code> introduced a bug breaking input of the type <code>&lt;operator&gt;&lt;space token&gt;&lt;macro&gt;</code>.</p></li>
-<li><p><strong>xintexpr</strong>: since <code>1.4</code> (<code>2020/01/31</code>) the <code>omit</code> and <code>abort</code> keywords were broken if used inside a substitution, itself nested in a <code>seq()</code> or similar construct.</p></li>
-<li><p><strong>xintexpr</strong>: since <code>1.4c</code> the <code>\xintthespaceseparated</code> (added at <code>1.4a</code>) inserted two, not one, spaces at one specific location near the end of its output. A bit cosmetic problem, fixed nevertheless.</p></li>
+<li><p><strong>xintexpr</strong>: simultaneous assignments via
+<code>\xintdefvar</code> to 10 or more variables was broken if the right
+hand side was an ople (of length at least 10, as it had prior to this
+release to match the number of variables).</p></li>
+<li><p><strong>xintexpr</strong>: the mechanism which allows to define
+variables with names already in use for pre-existing functions was
+broken for some built-in functions: those handling syntax with dummy
+variables (currently <code>subs()</code>, <code>subsm()</code>,
+<code>subsn()</code>, <code>seq()</code>, <code>add()</code>,
+<code>mul()</code>, <code>ndseq()</code>, <code>ndmap()</code>,
+<code>ndfillraw()</code>) and the so-called “pseudo” functions
+(currently <code>bool()</code>, <code>togl()</code>,
+<code>protect()</code>, <code>qint()</code>, <code>qfrac()</code>,
+<code>qfloat()</code>, <code>qraw()</code>, <code>random()</code>,
+<code>qrand()</code>, <code>rbit()</code>). For example the function
+<code>seq()</code> was broken if the user had defined a variable
+<code>seq</code>.</p></li>
+</ul>
+<h2 id="h-20210527"><code>1.4h (2021/05/27)</code></h2>
+<h3 id="bug-fixes-3">Bug fixes</h3>
+<ul>
+<li><p><strong>xintexpr</strong>: the recent <code>1.4g</code>
+introduced a bug breaking input of the type
+<code>&lt;operator&gt;&lt;space token&gt;&lt;macro&gt;</code>.</p></li>
+<li><p><strong>xintexpr</strong>: since <code>1.4</code>
+(<code>2020/01/31</code>) the <code>omit</code> and <code>abort</code>
+keywords were broken if used inside a substitution, itself nested in a
+<code>seq()</code> or similar construct.</p></li>
+<li><p><strong>xintexpr</strong>: since <code>1.4c</code> the
+<code>\xintthespaceseparated</code> (added at <code>1.4a</code>)
+inserted two, not one, spaces at one specific location near the end of
+its output. A bit cosmetic problem, fixed nevertheless.</p></li>
</ul>
<h2 id="g-20210525"><code>1.4g (2021/05/25)</code></h2>
-<h3 id="breaking-changes">Breaking changes</h3>
+<h3 id="breaking-changes-1">Breaking changes</h3>
<ul>
-<li><p><strong>xintexpr</strong>: the parsing of power operators <code>**</code> and <code>^</code> now proceeds in a right associative way: <code>2^3^4==2^(3^4)</code>.</p></li>
-<li><p><strong>xintexpr</strong>: single-character operators <code>&amp;</code>, <code>|</code>, and <code>=</code> (deprecated since <code>1.1</code>) have been removed. Use <code>&amp;&amp;</code>, <code>||</code> and <code>==</code> respectively.</p></li>
+<li><p><strong>xintexpr</strong>: the parsing of power operators
+<code>**</code> and <code>^</code> now proceeds in a right associative
+way: <code>2^3^4==2^(3^4)</code>.</p></li>
+<li><p><strong>xintexpr</strong>: single-character operators
+<code>&amp;</code>, <code>|</code>, and <code>=</code> (deprecated since
+<code>1.1</code>) have been removed. Use <code>&amp;&amp;</code>,
+<code>||</code> and <code>==</code> respectively.</p></li>
</ul>
<h3 id="deprecated">Deprecated</h3>
<ul>
-<li><strong>xintfrac</strong>: old typesetting macros dating back to <code>1.03</code> and <code>1.04</code> releases <code>\xintFrac</code>, <code>\xintSignedFrac</code>, <code>\xintFwOver</code>, <code>\xintSignedFwOver</code> are deprecated. Please use the new names <code>\xintTeXFrac</code>, <code>\xintTeXsignedFrac</code>, <code>\xintTeXOver</code>, <code>\xintTeXsignedOver</code>. The old names will emit warnings.</li>
+<li><strong>xintfrac</strong>: old typesetting macros dating back to
+<code>1.03</code> and <code>1.04</code> releases <code>\xintFrac</code>,
+<code>\xintSignedFrac</code>, <code>\xintFwOver</code>,
+<code>\xintSignedFwOver</code> are deprecated. Please use the new names
+<code>\xintTeXFrac</code>, <code>\xintTeXsignedFrac</code>,
+<code>\xintTeXOver</code>, <code>\xintTeXsignedOver</code>. The old
+names will emit warnings.</li>
</ul>
-<h3 id="new-features-1">New features</h3>
+<h3 id="new-features-2">New features</h3>
<ul>
-<li><p>Messages written to the terminal and log file during the handling of recovery from exceptions use a new mechanism; when in interactive mode, the user is prompted only once, not thrice, to enter <code>&lt;return&gt;</code> for recovery and continued processing.</p></li>
-<li><p><strong>xintfrac</strong>: <code>\xintTeXfromSci</code> (added about 7 or 8 years too late) to help typesetting values output by <code>\xintfloateval</code> in a more useful way than <code>\xintTeXFrac</code> (formerly <code>\xintFrac</code>).</p></li>
+<li><p>Messages written to the terminal and log file during the handling
+of recovery from exceptions use a new mechanism; when in interactive
+mode, the user is prompted only once, not thrice, to enter
+<code>&lt;return&gt;</code> for recovery and continued
+processing.</p></li>
+<li><p><strong>xintfrac</strong>: <code>\xintTeXfromSci</code> (added
+about 7 or 8 years too late) to help typesetting values output by
+<code>\xintfloateval</code> in a more useful way than
+<code>\xintTeXFrac</code> (formerly <code>\xintFrac</code>).</p></li>
</ul>
-<h3 id="bug-fixes-3">Bug fixes</h3>
-<ul>
-<li><p><strong>xintexpr</strong>: with <strong>xintbinhex</strong> loaded, <code>&quot;</code> is recognized as prefix for hexadecimal input; but a bug (present ever since this support for hexadecimal input was added) caused syntax such as <code>&quot;\macro</code> to break the parser. Also, leading zeros such as in <code>&quot;0000A</code> where not properly trimmed since <code>1.2m</code>.</p></li>
-<li><p><strong>xintexpr</strong>: authorize <code>x! == y</code> without parentheses. Formerly the parser mis-interpreted <code>!</code> as first character of the <code>!=</code> not-equal-to comparison operator, subsequently causing breakage when finding the second <code>=</code>.</p></li>
-<li><strong>xintexpr</strong>: various error situations were badly handled.
+<h3 id="bug-fixes-4">Bug fixes</h3>
<ul>
-<li><code>\xinteval{1/0}</code> did not recover gracefully due to longstanding bug in <strong>xintfrac</strong>.</li>
-<li><code>\xintfloateval{1/0}</code> did not recover gracefully either… due to some other reason.</li>
-<li>recovery from encountering an unknown variable name was broken since <code>1.4</code>; also, with an unknown function name if in <code>\xintfloatexpr</code>.</li>
-<li><code>\xinteval{_4}</code> caused an infinite loop (with underscore <code>_</code> having its normal catcode). This was unexpected, as the <code>_</code> is documented to be ignored if in-between digits (and is ignored if last after some digits). It will be now ignored also if encountered upfront. A similar problem existed with variable names starting with a <code>_</code> (of normal catcode), which however are clearly not legal. The (normal catcode) <code>_</code> will then be ignored as well if encountered in front of a variable or function name (but not inside of course).</li>
-<li><code>\xinteval{\catcode`@}</code> crashed (one had to use an added <code>\the</code> or <code>\number</code>).</li>
-<li>illegal <code>\xinteval{/3}</code> was not intercepted and ultimately caused low-level errors (same with <code>^</code>).</li>
-</ul>
-<p>Surely, further situations remain where bad input will crash parser.</p></li>
+<li><p><strong>xintexpr</strong>: with <strong>xintbinhex</strong>
+loaded, <code>"</code> is recognized as prefix for hexadecimal input;
+but a bug (present ever since this support for hexadecimal input was
+added) caused syntax such as <code>"\macro</code> to break the parser.
+Also, leading zeros such as in <code>"0000A</code> where not properly
+trimmed since <code>1.2m</code>.</p></li>
+<li><p><strong>xintexpr</strong>: authorize <code>x! == y</code> without
+parentheses. Formerly the parser mis-interpreted <code>!</code> as first
+character of the <code>!=</code> not-equal-to comparison operator,
+subsequently causing breakage when finding the second
+<code>=</code>.</p></li>
+<li><p><strong>xintexpr</strong>: various error situations were badly
+handled.</p>
+<ul>
+<li><code>\xinteval{1/0}</code> did not recover gracefully due to
+longstanding bug in <strong>xintfrac</strong>.</li>
+<li><code>\xintfloateval{1/0}</code> did not recover gracefully either…
+due to some other reason.</li>
+<li>recovery from encountering an unknown variable name was broken since
+<code>1.4</code>; also, with an unknown function name if in
+<code>\xintfloatexpr</code>.</li>
+<li><code>\xinteval{_4}</code> caused an infinite loop (with underscore
+<code>_</code> having its normal catcode). This was unexpected, as the
+<code>_</code> is documented to be ignored if in-between digits (and is
+ignored if last after some digits). It will be now ignored also if
+encountered upfront. A similar problem existed with variable names
+starting with a <code>_</code> (of normal catcode), which however are
+clearly not legal. The (normal catcode) <code>_</code> will then be
+ignored as well if encountered in front of a variable or function name
+(but not inside of course).</li>
+<li><code>\xinteval{\catcode`@}</code> crashed (one had to use an added
+<code>\the</code> or <code>\number</code>).</li>
+<li>illegal <code>\xinteval{/3}</code> was not intercepted and
+ultimately caused low-level errors (same with <code>^</code>).</li>
+</ul>
+<p>Surely, further situations remain where bad input will crash
+parser.</p></li>
</ul>
<h2 id="f-20210510"><code>1.4f (2021/05/10)</code></h2>
-<h3 id="breaking-changes-1">Breaking changes</h3>
+<h3 id="breaking-changes-2">Breaking changes</h3>
<ul>
-<li><p><strong>xintexpr</strong>: <code>\xintieval{[-D]...}</code>, which rounds to a multiple of <code>1eD</code> for <code>D</code> positive now <em>does not insert the trailing zeros</em> (as done at <code>1.4e</code>) <em>nor a scientific part</em> <code>eD</code> (as prior to <code>1.4e</code>). The use case envisioned is for the quantized value to be used with an appropriate unit, for example <code>k</code> for <code>D=3</code> or <code>M</code> for <code>D=6</code> etc… Sorry for the very long process which was needed to reach this final decision.</p></li>
-<li><p><strong>xintexpr</strong>: for Digits beyond the officially supported range for accurate math functions, i.e. for <code>D&gt;62</code>, computations were still done and printed with full number of digits, but the extra digits were meaningless; they now operate on and output mantissas limited to <code>min(D,64)</code> digits.</p></li>
-<li><p><strong>xintexpr</strong>: for powers <code>a^b</code> with Digits at most <code>8</code>, the number <code>a</code> is now float-rounded to Digits before computation, as is done for <code>Digits&gt;8</code>; previously <code>9</code> significant digits were kept.</p></li>
-<li><p><strong>xintexpr</strong>: further changes in the computation of powers, see the bug fixes below.</p></li>
-<li><p><strong>xintexpr</strong>: the <code>float_()</code> function got renamed into <code>float_dgt()</code>.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintieval{[-D]...}</code>,
+which rounds to a multiple of <code>1eD</code> for <code>D</code>
+positive now <em>does not insert the trailing zeros</em> (as done at
+<code>1.4e</code>) <em>nor a scientific part</em> <code>eD</code> (as
+prior to <code>1.4e</code>). The use case envisioned is for the
+quantized value to be used with an appropriate unit, for example
+<code>k</code> for <code>D=3</code> or <code>M</code> for
+<code>D=6</code> etc… Sorry for the very long process which was needed
+to reach this final decision.</p></li>
+<li><p><strong>xintexpr</strong>: for Digits beyond the officially
+supported range for accurate math functions, i.e. for
+<code>D&gt;62</code>, computations were still done and printed with full
+number of digits, but the extra digits were meaningless; they now
+operate on and output mantissas limited to <code>min(D,64)</code>
+digits.</p></li>
+<li><p><strong>xintexpr</strong>: for powers <code>a^b</code> with
+Digits at most <code>8</code>, the number <code>a</code> is now
+float-rounded to Digits before computation, as is done for
+<code>Digits&gt;8</code>; previously <code>9</code> significant digits
+were kept.</p></li>
+<li><p><strong>xintexpr</strong>: further changes in the computation of
+powers, see the bug fixes below.</p></li>
+<li><p><strong>xintexpr</strong>: the <code>float_()</code> function got
+renamed into <code>float_dgt()</code>.</p></li>
</ul>
-<h3 id="bug-fixes-4">Bug fixes</h3>
+<h3 id="bug-fixes-5">Bug fixes</h3>
<ul>
-<li><p><strong>xintexpr</strong>: the documentation said <code>float_()</code> function had been renamed <code>float_dgt()</code> but actually that was not yet the case.</p></li>
-<li><p><strong>xintexpr</strong>: powers <code>a^b</code> (with exponent <code>b</code> neither integer nor half-integer) stopped being accurate regarding the last digits for <code>|b|</code> about <code>1000</code> and beyond. Except for <code>0.8&lt;a&lt;1.25</code> for which accuracy was maintained up to about <code>|b|=10^7</code>. Fixed via keeping the same suitable number of extra digits for internal computations of logarithms, independently of whether <code>a</code> is close to <code>1</code> or not.</p></li>
-<li><p><strong>xintexpr</strong>: powers <code>a^b</code> in <code>\xinteval</code> with <code>|b|</code> an integer at least <code>10000</code> were paradoxically computed with less accuracy than in <code>\xintfloateval</code>… although they were documented to be handled exactly the same in the two parsers.</p></li>
-<li><p><strong>xintexpr</strong>: powers <code>a^b</code> for Digits at most <code>8</code> unconditionally used <code>log10()/pow10()</code> approach but due to the limited accuracy of the poorman logarithm (<code>9</code> fractional digits) this was inaccurate already for <code>b</code> about <code>100</code>. So, the handling is now as for Digits at least <code>9</code>, i.e. integer and half-integer exponents are handled via the legacy <code>\xintFloatPower/\xintFloatSqrt</code> allowing arbitrarily big exponents. It is advised to split big powers with non integer non half integer exponents into a product; this is not done internally to avoid costly overhead for possibly rare use cases.</p></li>
-<li><p><strong>xintexpr</strong>: the invalid input <code>(-1)^2.5</code> triggered an undefined control sequence error if Digits was at most <code>8</code>.</p></li>
+<li><p><strong>xintexpr</strong>: the documentation said
+<code>float_()</code> function had been renamed <code>float_dgt()</code>
+but actually that was not yet the case.</p></li>
+<li><p><strong>xintexpr</strong>: powers <code>a^b</code> (with exponent
+<code>b</code> neither integer nor half-integer) stopped being accurate
+regarding the last digits for <code>|b|</code> about <code>1000</code>
+and beyond. Except for <code>0.8&lt;a&lt;1.25</code> for which accuracy
+was maintained up to about <code>|b|=10^7</code>. Fixed via keeping the
+same suitable number of extra digits for internal computations of
+logarithms, independently of whether <code>a</code> is close to
+<code>1</code> or not.</p></li>
+<li><p><strong>xintexpr</strong>: powers <code>a^b</code> in
+<code>\xinteval</code> with <code>|b|</code> an integer at least
+<code>10000</code> were paradoxically computed with less accuracy than
+in <code>\xintfloateval</code>… although they were documented to be
+handled exactly the same in the two parsers.</p></li>
+<li><p><strong>xintexpr</strong>: powers <code>a^b</code> for Digits at
+most <code>8</code> unconditionally used <code>log10()/pow10()</code>
+approach but due to the limited accuracy of the poorman logarithm
+(<code>9</code> fractional digits) this was inaccurate already for
+<code>b</code> about <code>100</code>. So, the handling is now as for
+Digits at least <code>9</code>, i.e. integer and half-integer exponents
+are handled via the legacy <code>\xintFloatPower/\xintFloatSqrt</code>
+allowing arbitrarily big exponents. It is advised to split big powers
+with non integer non half integer exponents into a product; this is not
+done internally to avoid costly overhead for possibly rare use
+cases.</p></li>
+<li><p><strong>xintexpr</strong>: the invalid input
+<code>(-1)^2.5</code> triggered an undefined control sequence error if
+Digits was at most <code>8</code>.</p></li>
</ul>
<h2 id="e-20210505"><code>1.4e (2021/05/05)</code></h2>
-<h3 id="breaking-changes-2">Breaking changes</h3>
+<h3 id="breaking-changes-3">Breaking changes</h3>
<ul>
-<li><p><strong>xintlog</strong>: <code>\poormanloghack</code> now a no-op.</p></li>
-<li><p><strong>xinttrig</strong>: loading the package does not define left-over variables holding the values of the inverse factorials used in the sine and cosine series.</p></li>
-<li><p><strong>xintexpr</strong>: the output format of <code>\xinteval</code>, which uses <code>\xintFracToSci,</code> has changed. In particular, if the number has a power of ten part, it is not output with an integer mantissa, but with a scientific mantissa <code>d.d...</code> with always at least one digit after the decimal mark (possibly <code>0</code>) and trailing zeros are trimmed out. This is the same output format as used for <code>\xintfloateval</code>, apart of course from the fact that the mantissa lengths are not limited.</p></li>
-<li><p><strong>xintexpr</strong>: the output format of <code>\xintfloateval</code>, which uses <code>\xintPFloat</code>, changed. The <code>\xintfloatexprPrintOne</code> macro has changed its signature to <code>[#1]{#2}</code> i.e. its first argument will be within brackets not braces.</p></li>
-<li><p><strong>xintexpr</strong>: when using <code>\xintieval{[D]...}</code> optional <code>[D]</code> with a negative <code>D</code>, which triggers quantization to a positive power of ten, the output (if not the zero value) will be an integer with <code>N=abs(D)</code> explicit trailing zeros, not an integer mantissa followed by <code>eN</code>.</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xinteval</code> will not compute powers <code>a^N</code> exactly if <code>N</code> in absolute value is at least the (rounded) quotient of <code>10000</code> by the number of digits of <code>a</code>; it will then use the logarithm/exponential (in base 10) approach, according to the prevailing Digits setting (at <code>1.4f</code> this got modified again and integer exponents large enough to trigger floating point evaluation are handled exactly as in <code>\xintfloateval</code>, i.e. using the legacy <strong>xintfrac</strong> <code>\xintFloatPower</code>, not the logarithm/exponential approach which loses accuracy for exponents of the order of <code>100000000</code> and beyond).</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xintdeffloatvar</code> now always rounds the assigned value to the target precision. Formerly, inputs actually involving no float operations, such as for example a sub-expression <code>\xintexpr1/20!\relax</code> (in contrast to <code>1/20!</code>), or an explicit single number having more digits than the precision, got stored “as is” in the defined variable, without pre-rounding to the Digits precision.</p></li>
-<li><p><strong>xintfrac</strong>:<code>\xintPFloat</code> and <code>\xintFracToSci</code> have both been modified. The macro <code>\xintFracToSciE</code> does not exist anymore, as <code>\xintFracToSci</code> in the case of scientific exponents hands over the process to <code>\xintPFloat</code> (without the rounding to Digits, of course).</p></li>
+<li><p><strong>xintlog</strong>: <code>\poormanloghack</code> now a
+no-op.</p></li>
+<li><p><strong>xinttrig</strong>: loading the package does not define
+left-over variables holding the values of the inverse factorials used in
+the sine and cosine series.</p></li>
+<li><p><strong>xintexpr</strong>: the output format of
+<code>\xinteval</code>, which uses <code>\xintFracToSci,</code> has
+changed. In particular, if the number has a power of ten part, it is not
+output with an integer mantissa, but with a scientific mantissa
+<code>d.d...</code> with always at least one digit after the decimal
+mark (possibly <code>0</code>) and trailing zeros are trimmed out. This
+is the same output format as used for <code>\xintfloateval</code>, apart
+of course from the fact that the mantissa lengths are not
+limited.</p></li>
+<li><p><strong>xintexpr</strong>: the output format of
+<code>\xintfloateval</code>, which uses <code>\xintPFloat</code>,
+changed. The <code>\xintfloatexprPrintOne</code> macro has changed its
+signature to <code>[#1]{#2}</code> i.e. its first argument will be
+within brackets not braces.</p></li>
+<li><p><strong>xintexpr</strong>: when using
+<code>\xintieval{[D]...}</code> optional <code>[D]</code> with a
+negative <code>D</code>, which triggers quantization to a positive power
+of ten, the output (if not the zero value) will be an integer with
+<code>N=abs(D)</code> explicit trailing zeros, not an integer mantissa
+followed by <code>eN</code>.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xinteval</code> will not
+compute powers <code>a^N</code> exactly if <code>N</code> in absolute
+value is at least the (rounded) quotient of <code>10000</code> by the
+number of digits of <code>a</code>; it will then use the
+logarithm/exponential (in base 10) approach, according to the prevailing
+Digits setting (at <code>1.4f</code> this got modified again and integer
+exponents large enough to trigger floating point evaluation are handled
+exactly as in <code>\xintfloateval</code>, i.e. using the legacy
+<strong>xintfrac</strong> <code>\xintFloatPower</code>, not the
+logarithm/exponential approach which loses accuracy for exponents of the
+order of <code>100000000</code> and beyond).</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintdeffloatvar</code> now
+always rounds the assigned value to the target precision. Formerly,
+inputs actually involving no float operations, such as for example a
+sub-expression <code>\xintexpr1/20!\relax</code> (in contrast to
+<code>1/20!</code>), or an explicit single number having more digits
+than the precision, got stored “as is” in the defined variable, without
+pre-rounding to the Digits precision.</p></li>
+<li><p><strong>xintfrac</strong>:<code>\xintPFloat</code> and
+<code>\xintFracToSci</code> have both been modified. The macro
+<code>\xintFracToSciE</code> does not exist anymore, as
+<code>\xintFracToSci</code> in the case of scientific exponents hands
+over the process to <code>\xintPFloat</code> (without the rounding to
+Digits, of course).</p></li>
</ul>
-<h3 id="new-features-2">New features</h3>
+<h3 id="new-features-3">New features</h3>
<ul>
-<li><p><strong>xintlog</strong>: now working up to <code>62</code> digits. The legacy faster <code>poormanlog</code>-based macros are kept for computations with Digits up to <code>8</code>. Fractional powers are now available both in <code>xinteval</code> and <code>xintfloateval</code>, per default.</p></li>
-<li><p><strong>xinttrig</strong>: now working up to <code>62</code> digits and with increased accuracy. Special faster (or not as slow if you prefer) mode at <code>8</code> digits or less.</p></li>
-<li><p><strong>xintexpr</strong>: the constraints on the <code>\xintexprPrintOne</code> replacement macro, which defaults to <code>\xintFracToSci</code>, have been much simplified.</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xintiexprPrintOne</code> (defaults to <code>\xintDecToString</code>)</p></li>
-<li><p><strong>xintfrac</strong>: <code>\xintPFloatE</code> may be redefined as a macro which fetches the scientific exponent as a mandatory argument delimited with a dot, and outputs a suitable formatted result (f-expandably), also delimited with a dot which will be removed by internal processing. The default however simply expands to the letter <code>e</code>.</p></li>
-<li><p><strong>xintfrac</strong>: <code>\xintDecToStringREZ</code> is like <code>\xintDecToString</code> but starts by removing trailing zeroes.</p></li>
+<li><p><strong>xintlog</strong>: now working up to <code>62</code>
+digits. The legacy faster <code>poormanlog</code>-based macros are kept
+for computations with Digits up to <code>8</code>. Fractional powers are
+now available both in <code>xinteval</code> and
+<code>xintfloateval</code>, per default.</p></li>
+<li><p><strong>xinttrig</strong>: now working up to <code>62</code>
+digits and with increased accuracy. Special faster (or not as slow if
+you prefer) mode at <code>8</code> digits or less.</p></li>
+<li><p><strong>xintexpr</strong>: the constraints on the
+<code>\xintexprPrintOne</code> replacement macro, which defaults to
+<code>\xintFracToSci</code>, have been much simplified.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintiexprPrintOne</code>
+(defaults to <code>\xintDecToString</code>)</p></li>
+<li><p><strong>xintfrac</strong>: <code>\xintPFloatE</code> may be
+redefined as a macro which fetches the scientific exponent as a
+mandatory argument delimited with a dot, and outputs a suitable
+formatted result (f-expandably), also delimited with a dot which will be
+removed by internal processing. The default however simply expands to
+the letter <code>e</code>.</p></li>
+<li><p><strong>xintfrac</strong>: <code>\xintDecToStringREZ</code> is
+like <code>\xintDecToString</code> but starts by removing trailing
+zeroes.</p></li>
</ul>
-<h3 id="bug-fixes-5">Bug fixes</h3>
+<h3 id="bug-fixes-6">Bug fixes</h3>
<ul>
-<li><strong>xintfrac</strong>, <strong>xintexpr</strong>: it was not possible to use <code>\xinttheDigits</code> in the right hand side of an <code>\xintDigits</code> assignment. For example: <code>\xintDigits*:=\numexpr\xinttheDigits+4;</code>. This is now allowed, and the same applies to the macro interface, for example <code>\xintSetDigits*{\xinttheDigits+4}</code>.</li>
+<li><strong>xintfrac</strong>, <strong>xintexpr</strong>: it was not
+possible to use <code>\xinttheDigits</code> in the right hand side of an
+<code>\xintDigits</code> assignment. For example:
+<code>\xintDigits*:=\numexpr\xinttheDigits+4;</code>. This is now
+allowed, and the same applies to the macro interface, for example
+<code>\xintSetDigits*{\xinttheDigits+4}</code>.</li>
</ul>
<h2 id="d-20210329"><code>1.4d (2021/03/29)</code></h2>
-<h3 id="breaking-changes-3">Breaking changes</h3>
+<h3 id="breaking-changes-4">Breaking changes</h3>
<ul>
-<li><p><code>quo()</code> and <code>rem()</code> in <code>\xintiiexpr/\xintiieval</code> renamed to <code>iquo()</code> and <code>irem()</code>.</p></li>
-<li><p>The output of <code>gcd()</code> and <code>lcm()</code> as applied to fractions is now always in lowest terms.</p></li>
-<li><p>The log message to report a variable creation (if <code>\xintverbosetrue</code>) does not use (double) quotes anymore around the name. By the way, quotes were never used for function names.</p></li>
+<li><p><code>quo()</code> and <code>rem()</code> in
+<code>\xintiiexpr/\xintiieval</code> renamed to <code>iquo()</code> and
+<code>irem()</code>.</p></li>
+<li><p>The output of <code>gcd()</code> and <code>lcm()</code> as
+applied to fractions is now always in lowest terms.</p></li>
+<li><p>The log message to report a variable creation (if
+<code>\xintverbosetrue</code>) does not use (double) quotes anymore
+around the name. By the way, quotes were never used for function
+names.</p></li>
</ul>
-<h3 id="bug-fixes-6">Bug fixes</h3>
+<h3 id="bug-fixes-7">Bug fixes</h3>
<ul>
-<li><p>Ever since <code>1.3</code> the <code>quo()</code> and <code>rem()</code> functions in <code>\xintexpr</code> (not the ones in <code>\xintiiexpr</code>) were broken as their (officially deprecated) support macros had been removed! They had somewhat useless definitions anyway. They have now been officially removed from the syntax. Their siblings in <code>\xintiieval</code> were renamed to <code>iquo()</code> and <code>irem()</code>.</p></li>
-<li><p>Sadly, <code>gcd()</code> was broken in <code>\xintexpr</code> since <code>1.4</code>, if the first argument vanished. And <code>gcd()</code> was broken in <code>\xintiiexpr</code> since <code>1.3d</code> if <em>any</em> argument vanished. I did have a unit test! (which obviously was too limited …)</p>
-<p>Further, the <code>\xintGCDof</code> and <code>\xintLCMof</code> <strong>xintfrac</strong> macros were added at <code>1.4</code> but did not behave like other <strong>xintfrac</strong> macros with respect to parsing their arguments: e.g. <code>\xintGCDof{2}{03}</code> gave an unexpected non-numeric result.</p></li>
-<li><p>The <code>first()</code> and <code>last()</code> functions, if used as arguments to numerical functions such as <code>sqr()</code> inside an <code>\xintdeffunc</code> caused the defined function to be broken.</p></li>
+<li><p>Ever since <code>1.3</code> the <code>quo()</code> and
+<code>rem()</code> functions in <code>\xintexpr</code> (not the ones in
+<code>\xintiiexpr</code>) were broken as their (officially deprecated)
+support macros had been removed! They had somewhat useless definitions
+anyway. They have now been officially removed from the syntax. Their
+siblings in <code>\xintiieval</code> were renamed to <code>iquo()</code>
+and <code>irem()</code>.</p></li>
+<li><p>Sadly, <code>gcd()</code> was broken in <code>\xintexpr</code>
+since <code>1.4</code>, if the first argument vanished. And
+<code>gcd()</code> was broken in <code>\xintiiexpr</code> since
+<code>1.3d</code> if <em>any</em> argument vanished. I did have a unit
+test! (which obviously was too limited …)</p>
+<p>Further, the <code>\xintGCDof</code> and <code>\xintLCMof</code>
+<strong>xintfrac</strong> macros were added at <code>1.4</code> but did
+not behave like other <strong>xintfrac</strong> macros with respect to
+parsing their arguments: e.g. <code>\xintGCDof{2}{03}</code> gave an
+unexpected non-numeric result.</p></li>
+<li><p>The <code>first()</code> and <code>last()</code> functions, if
+used as arguments to numerical functions such as <code>sqr()</code>
+inside an <code>\xintdeffunc</code> caused the defined function to be
+broken.</p></li>
</ul>
<h2 id="c-20210220"><code>1.4c (2021/02/20)</code></h2>
-<h3 id="bug-fixes-7">Bug fixes</h3>
+<h3 id="bug-fixes-8">Bug fixes</h3>
<ul>
-<li>Fix <code>1.4</code> regression which broke syntax <code>varname(...)</code> which supposedly is allowed and inserts a tacit multiplication.</li>
+<li>Fix <code>1.4</code> regression which broke syntax
+<code>varname(...)</code> which supposedly is allowed and inserts a
+tacit multiplication.</li>
</ul>
<h2 id="b-20200225"><code>1.4b (2020/02/25)</code></h2>
<p>All changes regard the <strong>xintexpr</strong> module.</p>
<h3 id="future">Future</h3>
<ul>
-<li><p><code>&amp;</code>, <code>|</code>, (as Boolean operators) and <code>=</code> (as equality test) have long been deprecated in favour of <code>&amp;&amp;</code>, <code>||</code> and <code>==</code>. They will be removed at next major release.</p></li>
-<li><p>At next major release the power operators <code>**</code> and <code>^</code> will turn from left to right associative. I.e. <code>2**2**3</code> will give <code>256</code>, not <code>64</code>. This is to match with Python and l3fp.</p></li>
-<li><p><code>\thexintexpr</code> et al. (introduced at <code>1.2h</code> but not documented anymore for some time) will be removed at next major release. The original <code>\xinttheexpr</code> et al. have always been so much better names. Besides, since <code>1.4</code>, <code>\xintexpr</code> can be used directly in typesetting flow.</p></li>
+<li><p><code>&amp;</code>, <code>|</code>, (as Boolean operators) and
+<code>=</code> (as equality test) have long been deprecated in favour of
+<code>&amp;&amp;</code>, <code>||</code> and <code>==</code>. They will
+be removed at next major release.</p></li>
+<li><p>At next major release the power operators <code>**</code> and
+<code>^</code> will turn from left to right associative. I.e.
+<code>2**2**3</code> will give <code>256</code>, not <code>64</code>.
+This is to match with Python and l3fp.</p></li>
+<li><p><code>\thexintexpr</code> et al. (introduced at <code>1.2h</code>
+but not documented anymore for some time) will be removed at next major
+release. The original <code>\xinttheexpr</code> et al. have always been
+so much better names. Besides, since <code>1.4</code>,
+<code>\xintexpr</code> can be used directly in typesetting
+flow.</p></li>
</ul>
-<h3 id="new-features-3">New features</h3>
+<h3 id="new-features-4">New features</h3>
<ul>
-<li><p>Function <code>zip()</code> is modeled on Python’s function of the same name.</p></li>
-<li><p>Function <code>flat()</code> removes all nesting to produce a “one-dimensional” list having the exact same leaves (some possibly empty) as the original (in the same order).</p></li>
-<li><p>Chaining of comparison operators (e.g. <code>x&lt;y&lt;z</code>) as in Python (but all comparisons are done even if one is found false) and l3fp.</p></li>
-<li><p>It was possible since <code>1.4</code>’s <code>\xintFracToSciE</code> to configure the separator between mantissas and exponents in the output of <code>\xinteval</code> but strangely there was no way to customize the output of <code>\xintfloateval</code>. The added <code>\xintPFloatE</code> fixes this.</p></li>
+<li><p>Function <code>zip()</code> is modeled on Python’s function of
+the same name.</p></li>
+<li><p>Function <code>flat()</code> removes all nesting to produce a
+“one-dimensional” list having the exact same leaves (some possibly
+empty) as the original (in the same order).</p></li>
+<li><p>Chaining of comparison operators (e.g. <code>x&lt;y&lt;z</code>)
+as in Python (but all comparisons are done even if one is found false)
+and l3fp.</p></li>
+<li><p>It was possible since <code>1.4</code>’s
+<code>\xintFracToSciE</code> to configure the separator between
+mantissas and exponents in the output of <code>\xinteval</code> but
+strangely there was no way to customize the output of
+<code>\xintfloateval</code>. The added <code>\xintPFloatE</code> fixes
+this.</p></li>
</ul>
-<h3 id="bug-fixes-8">Bug fixes</h3>
+<h3 id="bug-fixes-9">Bug fixes</h3>
<ul>
-<li><code>\xintieval{[D]...}</code> with a negative <code>D</code> (a feature added at <code>1.4a</code>) used erroneously a catcode 12 <code>e</code> in output, which moreover remained immuned to the <code>\xintFracToSciE</code> setting.</li>
+<li><code>\xintieval{[D]...}</code> with a negative <code>D</code> (a
+feature added at <code>1.4a</code>) used erroneously a catcode 12
+<code>e</code> in output, which moreover remained immuned to the
+<code>\xintFracToSciE</code> setting.</li>
</ul>
<h2 id="a-20200219"><code>1.4a (2020/02/19)</code></h2>
<p>All changes regard the <strong>xintexpr</strong> module.</p>
-<h3 id="breaking-changes-4">Breaking changes</h3>
+<h3 id="breaking-changes-5">Breaking changes</h3>
<ul>
-<li>The macros implementing customization of <code>\xintthealign</code> have modified meanings and names.</li>
+<li>The macros implementing customization of <code>\xintthealign</code>
+have modified meanings and names.</li>
</ul>
-<h3 id="new-features-4">New features</h3>
+<h3 id="new-features-5">New features</h3>
<ul>
-<li><p><code>\xintthespaceseparated</code> (serves to provide suitable input to PS-Tricks <code>\listplot</code>).</p></li>
-<li><p>The optional argument <code>[D]</code> to <code>\xintieval/\xintiexpr</code> can be negative, with the same meaning as the non-negative case, i.e. rounding to an integer multiple of <code>10^(-D)</code>.</p>
-<p>The same applies to the functions <code>trunc()</code> and <code>round()</code>. And to the <code>\xintTrunc</code>, <code>\xintRound</code>, <code>\xintiTrunc</code>, and <code>\xintiRound</code> macros of <strong>xintfrac</strong>.</p></li>
+<li><p><code>\xintthespaceseparated</code> (serves to provide suitable
+input to PS-Tricks <code>\listplot</code>).</p></li>
+<li><p>The optional argument <code>[D]</code> to
+<code>\xintieval/\xintiexpr</code> can be negative, with the same
+meaning as the non-negative case, i.e. rounding to an integer multiple
+of <code>10^(-D)</code>.</p>
+<p>The same applies to the functions <code>trunc()</code> and
+<code>round()</code>. And to the <code>\xintTrunc</code>,
+<code>\xintRound</code>, <code>\xintiTrunc</code>, and
+<code>\xintiRound</code> macros of <strong>xintfrac</strong>.</p></li>
</ul>
-<h3 id="bug-fixes-9">Bug fixes</h3>
+<h3 id="bug-fixes-10">Bug fixes</h3>
<ul>
-<li><p>Usage of <code>round()</code> and <code>trunc()</code> within <code>\xintdeffunc</code> got broken at <code>1.4</code>.</p></li>
-<li><p><code>add()</code> and <code>mul()</code> were supposedly accepting the <code>omit</code>, <code>abort</code> and <code>break()</code> keywords since <code>1.4</code> but this was broken.</p></li>
+<li><p>Usage of <code>round()</code> and <code>trunc()</code> within
+<code>\xintdeffunc</code> got broken at <code>1.4</code>.</p></li>
+<li><p><code>add()</code> and <code>mul()</code> were supposedly
+accepting the <code>omit</code>, <code>abort</code> and
+<code>break()</code> keywords since <code>1.4</code> but this was
+broken.</p></li>
</ul>
<h2 id="section"><code>1.4 (2020/01/31)</code></h2>
-<h3 id="breaking-changes-5">Breaking changes</h3>
-<p>Please note that this list may still be incomplete. If not otherly specified all items regard the <strong>xintexpr</strong> module.</p>
-<ul>
-<li><p>The <code>\expanded</code> primitive (TeXLive 2019) is <strong>required</strong>. This does not affect the macro layer <strong>xintcore</strong>, <strong>xint</strong>, <strong>xintfrac</strong>, <strong>xinttools</strong> (yet).</p></li>
-<li><p>Formerly square brackets <code>[...]</code> were, on their own, not different from parentheses (and thus disappeared from the output), but they are now a genuine constructor of nested lists. For example <code>\xinteval{1, [2, [3, 4]], 5}</code> produces <code>1, [2, [3, 4]], 5</code> (recall this is free bloatware).</p></li>
-<li><p>The output of <code>\xinteval</code> has changed (besides containing brackets). It does not use anymore the so-called <em>raw</em> <strong>xintfrac</strong> format, i.e. things such as <code>A/B[N]</code> (which can still be used in input but are discouraged in <strong>xintexpr</strong> context), but scientific notation <code>AeN/B</code>. As formerly, the denominator is printed only if <code>B&gt;1</code> and the scientific part is dropped if the exponent vanishes. In this way the output of <code>\xinteval</code> can be pasted to alternative software.</p></li>
-<li><p>The output format of <code>\xinthe\xintboolexpr</code> also has changed. It uses <code>True</code> and <code>False</code> (which are accepted on input), and this can easily be configured otherwise (also <code>true</code> and <code>false</code> are accepted on input).</p></li>
-<li><p>The “broadcasting” (as it turned out, à la <code>NumPy</code>) of scalar operations on one-dimensional “lists”, e.g <code>3*[1,3,5,7]+10</code> acting itemwise is <strong>dropped</strong>. It is hoped to implement such operations again in stronger form in future releases. Pre-existing alternative syntax is available, also to produce the bracketed (cf. next item) <code>[13,19,25,31]</code> which will be the output in future.</p></li>
-<li><p>The <code>divmod()</code> function now produces on output such a bracketed pair, but simultaneous assignment such as <code>\xintdefvar xq, xr = divmod(a,b);</code> will work transparently.</p></li>
-<li><p>The syntax for using conditionals in function declarations has changed. Now, one <em>must</em> use the <code>?</code> and <code>??</code> short-circuit boolean branching operators whereas in the past it was explained that the syntax had to use the <code>if()</code> and <code>ifsgn()</code> functions.</p></li>
-<li><p>Macros <code>\xintGCD</code>, <code>\xintLCM</code>, <code>\xintGCDof</code> and <code>\xintLCMof</code> formerly provided by <strong>xintgcd</strong> got moved to <strong>xintfrac</strong> (which is not loaded by <strong>xintgcd</strong>). Moreover, they were extended to handle general fractions on input but this also means that their output is now obiding by the raw <strong>xintfrac</strong> format. The integer only <code>\xintiiGCD</code>, <code>\xintiiLCM</code> also got moved out of <strong>xintgcd</strong>, but to <strong>xint</strong> which is now loaded automatically by <strong>xintgcd</strong>. The few remaining macros of <strong>xintgcd</strong> at least do not need other imports as <strong>xintgcd</strong> now loads also automatically <strong>xinttools</strong> which is a dependency for two of them.</p></li>
-</ul>
-<h3 id="improvements-and-new-features">Improvements and new features</h3>
-<p>Please note that this list is currently incomplete. For more information look at the user manual and the documented source code <code>sourcexint.pdf</code>.</p>
-<p>Unless otherwise specified all changes commented upon here regard <strong>xintexpr</strong>. Important: all the new syntax is to be considered experimental. The author may change some names in future release, or even the interface (whether to use semi-colons or colons etc…).</p>
-<ul>
-<li><p>The <code>\csname</code> encapsulation technique used since <strong>xintexpr</strong> initial release (<code>1.07 2013/05/25</code>) to move around possibly large data during expansion-only operations is replaced with methods based on the <code>\expanded</code> engine primitive. The latter is available in all major engines since TeXLive 2019.</p>
-<p>Formerly, and with default memory settings, one would typically saturate the string pool memory after about of the order of 50,000 independent floating point evaluations of expressions of average complexity on 16-digits numbers.</p>
-<p>There is thus no string pool memory impact at all but one can now hit TeX’s main memory limit (which typically stands at 5,000,000 words) from defining large variables or generating on the fly large data. TeX distributions have a configuration file allowing to enlarge TeX memory parameters and regenerate the (eTeX based) formats.</p></li>
-<li><p>The package supports input and output of arbitrarily <em>nested lists</em>, a.k.a. <em>oples</em> or <em>nlists</em>, with <code>[...]</code> as the constructor of <em>bracketed lists</em>, a.k.a <em>nut-ples</em>. Operations on these objects (as briefly surveyed in later items) are inspired from syntax and functionalities of <code>NumPy</code>’s <em>ndarrays</em>. Our <em>oples</em> (hence also their packaged form <em>nut-ples</em>) may have <em>leaves</em> at varying depths rather than obeying an N-dimensional hyperrectangular shape. But the syntax does provide specific constructors for <em>ndlists</em> (i.e. hyperrectangular <em>oples</em> or <em>nut-ples</em>).</p>
-<p>In a (distant?) future, perhaps <strong>xintexpr</strong> itself or a third-party package will provide an interface, say <code>\xintstorearray</code>, <code>\xintgetarray</code>, to store (which can not be expandable) and retrieve (which can be expandable and thus be embedded inside expressions parsed by <code>\xintexpr</code>, <code>\xintiiexpr</code> or <code>\xintfloatexpr</code>) such <em>ndlists</em> from TeX memory. This is why the package does not use the word <em>ndarray</em> and reserves it for such memory stored objects.</p></li>
-<li><p>The <code>*</code> serves as <em>unpacking</em> operator on <em>nut-ples</em>, i.e. reversing the <code>[]</code> bracketing of an <em>ople</em>.</p></li>
-<li><p><em>oples</em> have no exact equivalent in <code>Python</code>. For example <strong>xintexpr</strong> allows <code>foo(Var1, x)</code> if <code>foo</code> is a function of 4 variables and <code>Var1</code> is a variable producing a length 3 <em>ople</em>, or <code>foo(Var2)</code> if <code>Var2</code> is a variable producing a length 4 <em>ople</em>. Python would require here to use explicitly the <code>*</code>-unpacking notation on some “packed” objects.</p>
-<p>Variable and function values may be <em>oples</em> (even <em>nil</em>), but in function declarations variables must stand for <em>one-ples</em>, i.e. either <em>numbers</em> or <em>nut-ples</em> (as there is no non-ambiguous way to split e.g. 5 arguments into two separate <em>oples</em>).</p></li>
-<li><p>Simultaneous assignment to at least two variables via <code>\xintdefvar</code> et al. automatically unpacks the assigned value if it is a <em>one-ple</em>. If this value was in fact a <em>number</em>, low-level errors will result shortly afterwards as no check is done if the unpacking was illicit. (update: this last remark does not apply since the <code>1.4i</code> extension to the concept of simultaneous assignments)</p></li>
-<li><p>The <code>NumPy</code> concept and syntax for nested slicing and item selection are implemented. Currently <em>stepping</em> and the <em>Ellipsis object</em> are not yet available. Only so-called basic slicing is currently supported. (The author has not yet read the section of <code>NumPy</code> documentation on so-called <em>advanced indexing</em>).</p></li>
-<li><p>The <em>broadcasting</em> of scalar operations, such as itemwise addition or multiplication of <em>nut-ples</em> of the same shape is <strong>not yet implemented</strong>.</p></li>
-<li><p>Slicing and indexing apply also at top level to the <em>oples</em> with behaviour conforming to intuitive expectations (see user manual); if it turns out the <em>ople</em> is in fact a <em>nut-ple</em>, the top-level slicing/indexing switches to the <code>Python/NumPy</code> conventions, i.e. it operates inside the brackets for slicing and removes brackets if indexing.</p></li>
-<li><p>The syntax <code>ndseq(expression in x, y, ..., x = values; y = values; ...)</code> constructs a (bracketed) <em>ndlist</em> by evaluation the expression on all possible Cartesian n-uples, where the first variable indexes the first axis, the second the next, etc…</p></li>
-<li><p>The <code>ndmap(foo, values1; values2; ...; valuesN)</code> syntax constructs a (bracketed) <em>ndlist</em> by evaluating the function <code>foo</code> on all elements of the cartesian product of the given (one-dimensional) value lists.</p></li>
-<li><p>The two concepts of <code>\xintdeffunc</code> (for recursive definitions) and <code>\xintdefefunc</code> (for functions which expand immediately in other function declarations) have been merged. The <code>\xintdefefunc</code> et al. are deprecated and kept as aliases for <code>\xintdeffunc</code> et al.</p></li>
-<li><p><code>\xintdefufunc</code> allows to define so-called <em>universal functions</em>, i.e. functions <code>foo</code> such that <code>foo(myople)</code> will apply itemwise at arbitrary depth in the nested structure. The function <code>foo</code> is allowed to produce from a scalar an <em>ople</em>…</p></li>
-<li><p>The variables in function declarations can now be multi-letter words.</p></li>
-<li><p>The last positional variable in a function declaration can be prefixed with a <code>*</code> meaning exactly as in Python (<em>variadic</em> function argument) that it stands for a one-dimensional <em>nut-ple</em> receiving all remaining arguments from the function call beyond the first positional ones. It is thus an optional argument, but syntax for named optional arguments with default values is not yet implemented.</p></li>
-<li><p>Dummy variables used in constructors can also be multi-letter words, if they have been declared as such.</p></li>
-<li><p>In variable and function declarations, if the expression contains inner semi-colons, it is not needed anymore to brace them to avoid mis-interpretation as the final semi-colon which is mandated by the syntax to serve as expression terminator.</p></li>
-<li><p><code>subsm(expression, var1 = value1; var2 = value2; ...)</code> provides a leaner syntax for multiple substitutions; they must be independent, though.</p></li>
-<li><p><code>subsn(expression, var1 = value1; var2 = value2; ...)</code> provides a leaner syntax for nested substitutions, i.e., each <code>valueJ</code> may be an expression using the dummy variables <code>varK</code> with <code>K&gt;J</code>. And finally of course the evaluated expression can refer to all variables.</p></li>
-<li><p><code>\xintthealign\xintexpr...\relax</code> (or with <code>\xintfloatexpr</code> or <code>\xintiiexpr</code> or <code>\xintboolexpr</code>…) will use a TeX alignment to display <em>oples</em>. The output (for regular N-dimensional lists) looks very similar to what <code>Python/NumPy</code> produces in interactive session. This is entirely configurable and can also be set-up to be used for writing into external files.</p>
-<p>Attention that <code>\xintthealign</code> only works if followed by <code>\xintexpr</code> et al., not by <code>\xinteval{}</code>.</p></li>
-<li><p>It is now possible to use <code>\xintexpr...\relax</code> directly for typesetting. The syntax <code>\xinteval{...}</code> or <code>\xintthe\xintexpr...\relax</code> is needed only if one wants the expansion to give the explicit digits, but <code>\xintexpr...\relax</code> by itself will typeset as would have the other ones. Further it can be used in so-called moving arguments, because when output to an external file it uses only characters with standard catcodes (and produces the same protected and re-tokenizable result it would in an <code>\edef</code>.)</p>
-<p>As formerly, <code>\xintexpr...\relax</code> is the preferred way to include an expression into another one. Using <code>\xinteval</code> is a waste because it forces the outer parser to re-digest all the digits (or now also the square brackets).</p></li>
-<li><p>The output format of <code>\xintfloateval</code> with scientific notation has not changed (apart from possible presence of bracketed lists), but the author hesitates because the <em>prettifying</em> it does by default is not really adapted to display of arrays (see <code>\xintthealign</code>). Anyway, this is configurable by the user. It is possible to specify whether to use <code>e</code> or <code>E</code>.</p></li>
-<li><p>Function declarations are able to parse a much wider part of the syntax, but some severe limitations remain. Refer to the user manual for related information.</p></li>
-<li><p>We have made an effort on some error messages, and when working interactively in a shell it may even be sometimes possible to insert for example a correct variable or function name in place of the not recognized one. But don’t expect miracles when trying to intervene in the midst of a purely expandable expansion…</p></li>
+<h3 id="breaking-changes-6">Breaking changes</h3>
+<p>Please note that this list may still be incomplete. If not otherly
+specified all items regard the <strong>xintexpr</strong> module.</p>
+<ul>
+<li><p>The <code>\expanded</code> primitive (TeXLive 2019) is
+<strong>required</strong>. This does not affect the macro layer
+<strong>xintcore</strong>, <strong>xint</strong>,
+<strong>xintfrac</strong>, <strong>xinttools</strong> (yet).</p></li>
+<li><p>Formerly square brackets <code>[...]</code> were, on their own,
+not different from parentheses (and thus disappeared from the output),
+but they are now a genuine constructor of nested lists. For example
+<code>\xinteval{1, [2, [3, 4]], 5}</code> produces
+<code>1, [2, [3, 4]], 5</code> (recall this is free bloatware).</p></li>
+<li><p>The output of <code>\xinteval</code> has changed (besides
+containing brackets). It does not use anymore the so-called <em>raw</em>
+<strong>xintfrac</strong> format, i.e. things such as
+<code>A/B[N]</code> (which can still be used in input but are
+discouraged in <strong>xintexpr</strong> context), but scientific
+notation <code>AeN/B</code>. As formerly, the denominator is printed
+only if <code>B&gt;1</code> and the scientific part is dropped if the
+exponent vanishes. In this way the output of <code>\xinteval</code> can
+be pasted to alternative software.</p></li>
+<li><p>The output format of <code>\xinthe\xintboolexpr</code> also has
+changed. It uses <code>True</code> and <code>False</code> (which are
+accepted on input), and this can easily be configured otherwise (also
+<code>true</code> and <code>false</code> are accepted on
+input).</p></li>
+<li><p>The “broadcasting” (as it turned out, à la <code>NumPy</code>) of
+scalar operations on one-dimensional “lists”, e.g
+<code>3*[1,3,5,7]+10</code> acting itemwise is <strong>dropped</strong>.
+It is hoped to implement such operations again in stronger form in
+future releases. Pre-existing alternative syntax is available, also to
+produce the bracketed (cf. next item) <code>[13,19,25,31]</code> which
+will be the output in future.</p></li>
+<li><p>The <code>divmod()</code> function now produces on output such a
+bracketed pair, but simultaneous assignment such as
+<code>\xintdefvar xq, xr = divmod(a,b);</code> will work
+transparently.</p></li>
+<li><p>The syntax for using conditionals in function declarations has
+changed. Now, one <em>must</em> use the <code>?</code> and
+<code>??</code> short-circuit boolean branching operators whereas in the
+past it was explained that the syntax had to use the <code>if()</code>
+and <code>ifsgn()</code> functions.</p></li>
+<li><p>Macros <code>\xintGCD</code>, <code>\xintLCM</code>,
+<code>\xintGCDof</code> and <code>\xintLCMof</code> formerly provided by
+<strong>xintgcd</strong> got moved to <strong>xintfrac</strong> (which
+is not loaded by <strong>xintgcd</strong>). Moreover, they were extended
+to handle general fractions on input but this also means that their
+output is now obiding by the raw <strong>xintfrac</strong> format. The
+integer only <code>\xintiiGCD</code>, <code>\xintiiLCM</code> also got
+moved out of <strong>xintgcd</strong>, but to <strong>xint</strong>
+which is now loaded automatically by <strong>xintgcd</strong>. The few
+remaining macros of <strong>xintgcd</strong> at least do not need other
+imports as <strong>xintgcd</strong> now loads also automatically
+<strong>xinttools</strong> which is a dependency for two of
+them.</p></li>
+</ul>
+<h3 id="improvements-and-new-features">Improvements and new
+features</h3>
+<p>Please note that this list is currently incomplete. For more
+information look at the user manual and the documented source code
+<code>sourcexint.pdf</code>.</p>
+<p>Unless otherwise specified all changes commented upon here regard
+<strong>xintexpr</strong>. Important: all the new syntax is to be
+considered experimental. The author may change some names in future
+release, or even the interface (whether to use semi-colons or colons
+etc…).</p>
+<ul>
+<li><p>The <code>\csname</code> encapsulation technique used since
+<strong>xintexpr</strong> initial release (<code>1.07 2013/05/25</code>)
+to move around possibly large data during expansion-only operations is
+replaced with methods based on the <code>\expanded</code> engine
+primitive. The latter is available in all major engines since TeXLive
+2019.</p>
+<p>Formerly, and with default memory settings, one would typically
+saturate the string pool memory after about of the order of 50,000
+independent floating point evaluations of expressions of average
+complexity on 16-digits numbers.</p>
+<p>There is thus no string pool memory impact at all but one can now hit
+TeX’s main memory limit (which typically stands at 5,000,000 words) from
+defining large variables or generating on the fly large data. TeX
+distributions have a configuration file allowing to enlarge TeX memory
+parameters and regenerate the (eTeX based) formats.</p></li>
+<li><p>The package supports input and output of arbitrarily <em>nested
+lists</em>, a.k.a. <em>oples</em> or <em>nlists</em>, with
+<code>[...]</code> as the constructor of <em>bracketed lists</em>, a.k.a
+<em>nut-ples</em>. Operations on these objects (as briefly surveyed in
+later items) are inspired from syntax and functionalities of
+<code>NumPy</code>’s <em>ndarrays</em>. Our <em>oples</em> (hence also
+their packaged form <em>nut-ples</em>) may have <em>leaves</em> at
+varying depths rather than obeying an N-dimensional hyperrectangular
+shape. But the syntax does provide specific constructors for
+<em>ndlists</em> (i.e. hyperrectangular <em>oples</em> or
+<em>nut-ples</em>).</p>
+<p>In a (distant?) future, perhaps <strong>xintexpr</strong> itself or a
+third-party package will provide an interface, say
+<code>\xintstorearray</code>, <code>\xintgetarray</code>, to store
+(which can not be expandable) and retrieve (which can be expandable and
+thus be embedded inside expressions parsed by <code>\xintexpr</code>,
+<code>\xintiiexpr</code> or <code>\xintfloatexpr</code>) such
+<em>ndlists</em> from TeX memory. This is why the package does not use
+the word <em>ndarray</em> and reserves it for such memory stored
+objects.</p></li>
+<li><p>The <code>*</code> serves as <em>unpacking</em> operator on
+<em>nut-ples</em>, i.e. reversing the <code>[]</code> bracketing of an
+<em>ople</em>.</p></li>
+<li><p><em>oples</em> have no exact equivalent in <code>Python</code>.
+For example <strong>xintexpr</strong> allows <code>foo(Var1, x)</code>
+if <code>foo</code> is a function of 4 variables and <code>Var1</code>
+is a variable producing a length 3 <em>ople</em>, or
+<code>foo(Var2)</code> if <code>Var2</code> is a variable producing a
+length 4 <em>ople</em>. Python would require here to use explicitly the
+<code>*</code>-unpacking notation on some “packed” objects.</p>
+<p>Variable and function values may be <em>oples</em> (even
+<em>nil</em>), but in function declarations variables must stand for
+<em>one-ples</em>, i.e. either <em>numbers</em> or <em>nut-ples</em> (as
+there is no non-ambiguous way to split e.g. 5 arguments into two
+separate <em>oples</em>).</p></li>
+<li><p>Simultaneous assignment to at least two variables via
+<code>\xintdefvar</code> et al. automatically unpacks the assigned value
+if it is a <em>one-ple</em>. If this value was in fact a
+<em>number</em>, low-level errors will result shortly afterwards as no
+check is done if the unpacking was illicit. (update: this last remark
+does not apply since the <code>1.4i</code> extension to the concept of
+simultaneous assignments)</p></li>
+<li><p>The <code>NumPy</code> concept and syntax for nested slicing and
+item selection are implemented. Currently <em>stepping</em> and the
+<em>Ellipsis object</em> are not yet available. Only so-called basic
+slicing is currently supported. (The author has not yet read the section
+of <code>NumPy</code> documentation on so-called <em>advanced
+indexing</em>).</p></li>
+<li><p>The <em>broadcasting</em> of scalar operations, such as itemwise
+addition or multiplication of <em>nut-ples</em> of the same shape is
+<strong>not yet implemented</strong>.</p></li>
+<li><p>Slicing and indexing apply also at top level to the
+<em>oples</em> with behaviour conforming to intuitive expectations (see
+user manual); if it turns out the <em>ople</em> is in fact a
+<em>nut-ple</em>, the top-level slicing/indexing switches to the
+<code>Python/NumPy</code> conventions, i.e. it operates inside the
+brackets for slicing and removes brackets if indexing.</p></li>
+<li><p>The syntax
+<code>ndseq(expression in x, y, ..., x = values; y = values; ...)</code>
+constructs a (bracketed) <em>ndlist</em> by evaluation the expression on
+all possible Cartesian n-uples, where the first variable indexes the
+first axis, the second the next, etc…</p></li>
+<li><p>The <code>ndmap(foo, values1; values2; ...; valuesN)</code>
+syntax constructs a (bracketed) <em>ndlist</em> by evaluating the
+function <code>foo</code> on all elements of the cartesian product of
+the given (one-dimensional) value lists.</p></li>
+<li><p>The two concepts of <code>\xintdeffunc</code> (for recursive
+definitions) and <code>\xintdefefunc</code> (for functions which expand
+immediately in other function declarations) have been merged. The
+<code>\xintdefefunc</code> et al. are deprecated and kept as aliases for
+<code>\xintdeffunc</code> et al.</p></li>
+<li><p><code>\xintdefufunc</code> allows to define so-called
+<em>universal functions</em>, i.e. functions <code>foo</code> such that
+<code>foo(myople)</code> will apply itemwise at arbitrary depth in the
+nested structure. The function <code>foo</code> is allowed to produce
+from a scalar an <em>ople</em>…</p></li>
+<li><p>The variables in function declarations can now be multi-letter
+words.</p></li>
+<li><p>The last positional variable in a function declaration can be
+prefixed with a <code>*</code> meaning exactly as in Python
+(<em>variadic</em> function argument) that it stands for a
+one-dimensional <em>nut-ple</em> receiving all remaining arguments from
+the function call beyond the first positional ones. It is thus an
+optional argument, but syntax for named optional arguments with default
+values is not yet implemented.</p></li>
+<li><p>Dummy variables used in constructors can also be multi-letter
+words, if they have been declared as such.</p></li>
+<li><p>In variable and function declarations, if the expression contains
+inner semi-colons, it is not needed anymore to brace them to avoid
+mis-interpretation as the final semi-colon which is mandated by the
+syntax to serve as expression terminator.</p></li>
+<li><p><code>subsm(expression, var1 = value1; var2 = value2; ...)</code>
+provides a leaner syntax for multiple substitutions; they must be
+independent, though.</p></li>
+<li><p><code>subsn(expression, var1 = value1; var2 = value2; ...)</code>
+provides a leaner syntax for nested substitutions, i.e., each
+<code>valueJ</code> may be an expression using the dummy variables
+<code>varK</code> with <code>K&gt;J</code>. And finally of course the
+evaluated expression can refer to all variables.</p></li>
+<li><p><code>\xintthealign\xintexpr...\relax</code> (or with
+<code>\xintfloatexpr</code> or <code>\xintiiexpr</code> or
+<code>\xintboolexpr</code>…) will use a TeX alignment to display
+<em>oples</em>. The output (for regular N-dimensional lists) looks very
+similar to what <code>Python/NumPy</code> produces in interactive
+session. This is entirely configurable and can also be set-up to be used
+for writing into external files.</p>
+<p>Attention that <code>\xintthealign</code> only works if followed by
+<code>\xintexpr</code> et al., not by <code>\xinteval{}</code>.</p></li>
+<li><p>It is now possible to use <code>\xintexpr...\relax</code>
+directly for typesetting. The syntax <code>\xinteval{...}</code> or
+<code>\xintthe\xintexpr...\relax</code> is needed only if one wants the
+expansion to give the explicit digits, but
+<code>\xintexpr...\relax</code> by itself will typeset as would have the
+other ones. Further it can be used in so-called moving arguments,
+because when output to an external file it uses only characters with
+standard catcodes (and produces the same protected and re-tokenizable
+result it would in an <code>\edef</code>.)</p>
+<p>As formerly, <code>\xintexpr...\relax</code> is the preferred way to
+include an expression into another one. Using <code>\xinteval</code> is
+a waste because it forces the outer parser to re-digest all the digits
+(or now also the square brackets).</p></li>
+<li><p>The output format of <code>\xintfloateval</code> with scientific
+notation has not changed (apart from possible presence of bracketed
+lists), but the author hesitates because the <em>prettifying</em> it
+does by default is not really adapted to display of arrays (see
+<code>\xintthealign</code>). Anyway, this is configurable by the user.
+It is possible to specify whether to use <code>e</code> or
+<code>E</code>.</p></li>
+<li><p>Function declarations are able to parse a much wider part of the
+syntax, but some severe limitations remain. Refer to the user manual for
+related information.</p></li>
+<li><p>We have made an effort on some error messages, and when working
+interactively in a shell it may even be sometimes possible to insert for
+example a correct variable or function name in place of the not
+recognized one. But don’t expect miracles when trying to intervene in
+the midst of a purely expandable expansion…</p></li>
</ul>
-<h3 id="bug-fixes-10">Bug fixes</h3>
-<p>Bugs? Those identified in <code>1.3f</code> were almost features. As per <code>1.4</code> the code base of <strong>xintexpr</strong> received multiple successive core refactorings and added numerous new features, and our test suite although significantly enlarged is not yet extensive enough. Please report bugs by mail.</p>
+<h3 id="bug-fixes-11">Bug fixes</h3>
+<p>Bugs? Those identified in <code>1.3f</code> were almost features. As
+per <code>1.4</code> the code base of <strong>xintexpr</strong> received
+multiple successive core refactorings and added numerous new features,
+and our test suite although significantly enlarged is not yet extensive
+enough. Please report bugs by mail.</p>
<h3 id="todo">TODO</h3>
<ul>
-<li><p>The long delayed overhaul of how floating point numbers are handled is delayed again. It has remained basically identical to its initial provisory version from <code>1.07 2013/05/25</code> (which was based upon what was originally only a set of expandable macros for computations with big integers), and suffers from the author lack of knowledge of the notion of “data type” in modern programming. Indeed, he never took a CS class, and disables JavaScript in his browser (or allows only select non-tracking scripts, a rare beast in modern days).</p></li>
-<li><p>Prior to integrating all of <code>NumPy</code>, it is envisioned to start with matrix algebra first.</p></li>
+<li><p>The long delayed overhaul of how floating point numbers are
+handled is delayed again. It has remained basically identical to its
+initial provisory version from <code>1.07 2013/05/25</code> (which was
+based upon what was originally only a set of expandable macros for
+computations with big integers), and suffers from the author lack of
+knowledge of the notion of “data type” in modern programming. Indeed, he
+never took a CS class, and disables JavaScript in his browser (or allows
+only select non-tracking scripts, a rare beast in modern days).</p></li>
+<li><p>Prior to integrating all of <code>NumPy</code>, it is envisioned
+to start with matrix algebra first.</p></li>
</ul>
<h2 id="f-20190910"><code>1.3f (2019/09/10)</code></h2>
-<h3 id="improvements-and-new-features-1">Improvements and new features</h3>
-<ul>
-<li><p><strong>xintfrac</strong>: <code>\xintDigits = P;</code> syntax (i.e. without a colon) is now accepted in addition to <code>\xintDigits := P;</code>.</p>
-<p>Document that the ending semi-colon can not be an active character and that it has always been allowed to use in its place a non-expanding token e.g. <code>\xintDigits := 32\relax</code>.</p>
+<h3 id="improvements-and-new-features-1">Improvements and new
+features</h3>
+<ul>
+<li><p><strong>xintfrac</strong>: <code>\xintDigits = P;</code> syntax
+(i.e. without a colon) is now accepted in addition to
+<code>\xintDigits := P;</code>.</p>
+<p>Document that the ending semi-colon can not be an active character
+and that it has always been allowed to use in its place a non-expanding
+token e.g. <code>\xintDigits := 32\relax</code>.</p>
<p>Add <code>\xintSetDigits</code>.</p></li>
-<li><p><strong>xintexpr</strong>: add starred variants <code>\xintDigits*</code> and <code>\xintSetDigits*</code> which execute <code>\xintreloadxinttrig</code>.</p>
-<p>Revert 1.3e ban on usage of <code>\xinteval</code> et al. inside expressions by <code>\xintdeffunc</code>. And make them usable also inside macro definitions via <code>\xintNewExpr</code>.</p></li>
+<li><p><strong>xintexpr</strong>: add starred variants
+<code>\xintDigits*</code> and <code>\xintSetDigits*</code> which execute
+<code>\xintreloadxinttrig</code>.</p>
+<p>Revert 1.3e ban on usage of <code>\xinteval</code> et al. inside
+expressions by <code>\xintdeffunc</code>. And make them usable also
+inside macro definitions via <code>\xintNewExpr</code>.</p></li>
</ul>
-<h3 id="bug-fixes-11">Bug fixes</h3>
+<h3 id="bug-fixes-12">Bug fixes</h3>
<ul>
-<li><p><strong>xintexpr</strong>: fix bug preventing usage of <code>\xintdefefunc</code> to define a function without variables.</p>
-<p>Fix some issue with <code>\xintfloatexpr[D]..\relax</code> if used inside an expression parsed by <code>\xintdeffunc</code> et al.</p></li>
+<li><p><strong>xintexpr</strong>: fix bug preventing usage of
+<code>\xintdefefunc</code> to define a function without variables.</p>
+<p>Fix some issue with <code>\xintfloatexpr[D]..\relax</code> if used
+inside an expression parsed by <code>\xintdeffunc</code> et al.</p></li>
</ul>
<h2 id="e-20190405"><code>1.3e (2019/04/05)</code></h2>
-<h3 id="breaking-changes-6">Breaking changes</h3>
-<ul>
-<li>(<em>reverted at 1.3f</em>) When defining functions, sub-expressions can only use the <code>\xint(float)expr...\relax</code> syntax. One can not use there the <code>\xint(float)eval</code> wrappers.</li>
-</ul>
-<h3 id="improvements-and-new-features-2">Improvements and new features</h3>
+<h3 id="breaking-changes-7">Breaking changes</h3>
<ul>
-<li><p>The <strong>xinttrig</strong> library is automatically loaded by <strong>xintexpr</strong>. It provides direct and inverse trigonometrical functions using either degrees or radians with a precision of up to (a bit less than) 60 digits. It is for the most part implemented using high level user interface, but will probably get some optimizations in future (and perhaps extension to more digits).</p></li>
-<li><p>The <strong>xintlog</strong> library is automatically loaded by <strong>xintexpr</strong>. It uses <a href="http://ctan.org/pkg/poormanlog">poormanlog</a> to provide logarithms and exponentials with almost 9 digits of precision. Extended precision is for a future release.</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xintdefefunc</code>, <code>\xintdeffloatefunc</code>, <code>\xintdefiiefunc</code> define functions which are not protected against expansion in the definition of other functions; refer to <code>xint.pdf</code> for the related explanations.</p>
-<p>Notice that whole area of <code>\xintdef(e)func</code>, <code>\xintNewExpr</code>, <code>\xintNewFunction</code> is complex and to be considered still as work in progress as it has a number of shortcomings.</p></li>
-<li><p><strong>xintexpr</strong>: <code>inv()</code>, <code>ilog10()</code>, <code>sfloat()</code>, behaviour of <code>qfloat()</code> slightly modified.</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xintensuredummy</code>, <code>\xintrestorelettervar</code>.</p></li>
-<li><p>The optional argument of <code>\xintfloatexpr</code> or <code>\xintfloateval</code> (it must be at start of braced argument) can be negative; it then means to trim (and round) from the output at float precision that many least significant digits.</p></li>
+<li>(<em>reverted at 1.3f</em>) When defining functions, sub-expressions
+can only use the <code>\xint(float)expr...\relax</code> syntax. One can
+not use there the <code>\xint(float)eval</code> wrappers.</li>
+</ul>
+<h3 id="improvements-and-new-features-2">Improvements and new
+features</h3>
+<ul>
+<li><p>The <strong>xinttrig</strong> library is automatically loaded by
+<strong>xintexpr</strong>. It provides direct and inverse
+trigonometrical functions using either degrees or radians with a
+precision of up to (a bit less than) 60 digits. It is for the most part
+implemented using high level user interface, but will probably get some
+optimizations in future (and perhaps extension to more digits).</p></li>
+<li><p>The <strong>xintlog</strong> library is automatically loaded by
+<strong>xintexpr</strong>. It uses <a
+href="http://ctan.org/pkg/poormanlog">poormanlog</a> to provide
+logarithms and exponentials with almost 9 digits of precision. Extended
+precision is for a future release.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintdefefunc</code>,
+<code>\xintdeffloatefunc</code>, <code>\xintdefiiefunc</code> define
+functions which are not protected against expansion in the definition of
+other functions; refer to <code>xint.pdf</code> for the related
+explanations.</p>
+<p>Notice that whole area of <code>\xintdef(e)func</code>,
+<code>\xintNewExpr</code>, <code>\xintNewFunction</code> is complex and
+to be considered still as work in progress as it has a number of
+shortcomings.</p></li>
+<li><p><strong>xintexpr</strong>: <code>inv()</code>,
+<code>ilog10()</code>, <code>sfloat()</code>, behaviour of
+<code>qfloat()</code> slightly modified.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintensuredummy</code>,
+<code>\xintrestorelettervar</code>.</p></li>
+<li><p>The optional argument of <code>\xintfloatexpr</code> or
+<code>\xintfloateval</code> (it must be at start of braced argument) can
+be negative; it then means to trim (and round) from the output at float
+precision that many least significant digits.</p></li>
</ul>
-<h3 id="bug-fixes-12">Bug fixes</h3>
+<h3 id="bug-fixes-13">Bug fixes</h3>
<ul>
-<li>Some bugfixes related to user functions with no variables at all; they were dysfunctional.</li>
+<li>Some bugfixes related to user functions with no variables at all;
+they were dysfunctional.</li>
</ul>
<h2 id="d-20190106"><code>1.3d (2019/01/06)</code></h2>
-<h3 id="breaking-changes-7">Breaking changes</h3>
-<ul>
-<li><p><strong>xintexpr</strong>: the <code>gcd()</code> and <code>lcm()</code> functions formerly converted their arguments to integers via <code>\xintNum</code>. They now handle general input with no such modification.</p></li>
-<li><p><strong>xintexpr</strong>: former <code>\xinteval</code>, <code>\xintieval</code>, <code>\xintiieval</code>, and <code>\xintfloateval</code> renamed to <code>\xintexpro</code>, <code>\xintiexpro</code>, <code>\xintiiexpro</code>, and <code>\xintfloatexpro</code>.</p></li>
-</ul>
-<h3 id="improvements-and-new-features-3">Improvements and new features</h3>
+<h3 id="breaking-changes-8">Breaking changes</h3>
<ul>
-<li><p><strong>xintexpr</strong>: the <code>gcd()</code> and <code>lcm()</code> multi-arguments functions have been refactored to handle general fractions. The dependency on <strong>xintgcd</strong> is removed.</p></li>
-<li><p><strong>xintexpr</strong>: three-way branching <code>\xintifsgnexpr</code>, <code>\xintifsgnfloatexpr</code>, <code>\xintifsgniiexpr</code> conditional macros.</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xintunassignexprfunc</code>, <code>\xintunassigniiexprfunc</code>, <code>\xintunassignfloatexprfunc</code> to “undefine” functions.</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xintunassignvar</code> really makes the (multi-letter) variable unknown (formerly, it only gave it value zero),</p></li>
-<li><p><strong>xintexpr</strong>: functions <code>isone()</code> and <code>isint()</code>.</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xinteval</code>, <code>\xintieval</code>, <code>\xintiieval</code>, and <code>\xintfloateval</code> as synonyms to <code>\xinttheexpr...\relax</code> etc…, but with the (comma-separated) expression as a usual braced macro argument.</p></li>
+<li><p><strong>xintexpr</strong>: the <code>gcd()</code> and
+<code>lcm()</code> functions formerly converted their arguments to
+integers via <code>\xintNum</code>. They now handle general input with
+no such modification.</p></li>
+<li><p><strong>xintexpr</strong>: former <code>\xinteval</code>,
+<code>\xintieval</code>, <code>\xintiieval</code>, and
+<code>\xintfloateval</code> renamed to <code>\xintexpro</code>,
+<code>\xintiexpro</code>, <code>\xintiiexpro</code>, and
+<code>\xintfloatexpro</code>.</p></li>
+</ul>
+<h3 id="improvements-and-new-features-3">Improvements and new
+features</h3>
+<ul>
+<li><p><strong>xintexpr</strong>: the <code>gcd()</code> and
+<code>lcm()</code> multi-arguments functions have been refactored to
+handle general fractions. The dependency on <strong>xintgcd</strong> is
+removed.</p></li>
+<li><p><strong>xintexpr</strong>: three-way branching
+<code>\xintifsgnexpr</code>, <code>\xintifsgnfloatexpr</code>,
+<code>\xintifsgniiexpr</code> conditional macros.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintunassignexprfunc</code>,
+<code>\xintunassigniiexprfunc</code>,
+<code>\xintunassignfloatexprfunc</code> to “undefine”
+functions.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintunassignvar</code> really
+makes the (multi-letter) variable unknown (formerly, it only gave it
+value zero),</p></li>
+<li><p><strong>xintexpr</strong>: functions <code>isone()</code> and
+<code>isint()</code>.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xinteval</code>,
+<code>\xintieval</code>, <code>\xintiieval</code>, and
+<code>\xintfloateval</code> as synonyms to
+<code>\xinttheexpr...\relax</code> etc…, but with the (comma-separated)
+expression as a usual braced macro argument.</p></li>
</ul>
-<h3 id="bug-fixes-13">Bug fixes</h3>
+<h3 id="bug-fixes-14">Bug fixes</h3>
<ul>
-<li><strong>xintcore</strong>, <strong>xintexpr</strong> : division in <code>\xintiiexpr</code> was broken for a zero dividend and a one-digit divisor (e.g. <code>0//7</code>) since <code>1.2p</code> due to a bug in <code>\xintiiDivMod</code> for such arguments. The bug was signaled (thanks to Kpym for report) and fixed shortly after <code>1.3c</code> release but I then completely forgot to upload a bugfix release to CTAN at that time, apologies for that.</li>
+<li><strong>xintcore</strong>, <strong>xintexpr</strong> : division in
+<code>\xintiiexpr</code> was broken for a zero dividend and a one-digit
+divisor (e.g. <code>0//7</code>) since <code>1.2p</code> due to a bug in
+<code>\xintiiDivMod</code> for such arguments. The bug was signaled
+(thanks to Kpym for report) and fixed shortly after <code>1.3c</code>
+release but I then completely forgot to upload a bugfix release to CTAN
+at that time, apologies for that.</li>
</ul>
<h2 id="c-20180617"><code>1.3c (2018/06/17)</code></h2>
-<h3 id="improvements-and-new-features-4">Improvements and new features</h3>
-<ul>
-<li><p><strong>xintexpr</strong>: with <code>\xintglobaldefstrue</code>, <code>\xintdefvar</code>, <code>\xintdeffunc</code>, <code>\xintNewExpr</code> et al. make definitions with global scope.</p></li>
-<li><p><strong>xintexpr</strong>: <code>qraw()</code> for fast input of (very many) comma separated numbers (in suitable raw format).</p></li>
-<li><p><strong>xintexpr</strong>: the colon in the <code>:=</code> part of the syntax for <code>\xintdefvar</code> and variants is now optional; and if present it may be an active character or have any (reasonable) catcode.</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>, <code>\xintdeffunc</code> and their variants try to set the catcode of the semi-colon which delimits their arguments; of course this will not work if that catcode is already frozen.</p></li>
-<li><p><code>\xintUniformDeviate</code> is better documented and <code>sourcexint.pdf</code> is better hyperlinked and includes indices for the macros defined by each package.</p></li>
+<h3 id="improvements-and-new-features-4">Improvements and new
+features</h3>
+<ul>
+<li><p><strong>xintexpr</strong>: with <code>\xintglobaldefstrue</code>,
+<code>\xintdefvar</code>, <code>\xintdeffunc</code>,
+<code>\xintNewExpr</code> et al. make definitions with global
+scope.</p></li>
+<li><p><strong>xintexpr</strong>: <code>qraw()</code> for fast input of
+(very many) comma separated numbers (in suitable raw format).</p></li>
+<li><p><strong>xintexpr</strong>: the colon in the <code>:=</code> part
+of the syntax for <code>\xintdefvar</code> and variants is now optional;
+and if present it may be an active character or have any (reasonable)
+catcode.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>,
+<code>\xintdeffunc</code> and their variants try to set the catcode of
+the semi-colon which delimits their arguments; of course this will not
+work if that catcode is already frozen.</p></li>
+<li><p><code>\xintUniformDeviate</code> is better documented and
+<code>sourcexint.pdf</code> is better hyperlinked and includes indices
+for the macros defined by each package.</p></li>
</ul>
-<h3 id="bug-fixes-14">Bug fixes</h3>
+<h3 id="bug-fixes-15">Bug fixes</h3>
<ul>
-<li><strong>xintfrac</strong>: since <code>1.3</code> release, it loaded <strong>xintgcd</strong> in contradiction to what the documentation says (hence also <strong>xintexpr</strong> loaded <strong>xintgcd</strong> automatically). There is no actual dependency so the loading is removed for now.</li>
+<li><strong>xintfrac</strong>: since <code>1.3</code> release, it loaded
+<strong>xintgcd</strong> in contradiction to what the documentation says
+(hence also <strong>xintexpr</strong> loaded <strong>xintgcd</strong>
+automatically). There is no actual dependency so the loading is removed
+for now.</li>
</ul>
<h2 id="b-20180518"><code>1.3b (2018/05/18)</code></h2>
-<h3 id="improvements-and-new-features-5">Improvements and new features</h3>
-<p>All additions related to randomness are marked as work-in-progress. They require an engine providing the <code>\(pdf)uniformdeviate</code> primitive.</p>
-<ul>
-<li><p><strong>xintkernel</strong>: <code>\xintUniformDeviate</code>.</p></li>
-<li><p><strong>xint</strong>: <code>\xintRandomDigits</code>, <code>\xintXRandomDigits</code>, <code>\xintiiRandRange</code>, <code>\xintiiRandRangeAtoB</code>.</p></li>
-<li><p><strong>xintfrac</strong>: support macros (not public, mainly because internal format for floats is surely not final) for <code>random()</code> and <code>qrand()</code>.</p></li>
-<li><p><strong>xintexpr</strong>: <code>random()</code>, <code>qrand()</code>, and <code>randrange(A[, B])</code>.</p></li>
-<li><p><strong>xintexpr</strong>: when a function <code>foo()</code> is declared via <code>\xintdeffunc</code> (et al.) to be parameter-less, it can be used as <code>foo()</code>; formerly <code>foo(nil)</code> syntax was required.</p></li>
+<h3 id="improvements-and-new-features-5">Improvements and new
+features</h3>
+<p>All additions related to randomness are marked as work-in-progress.
+They require an engine providing the <code>\(pdf)uniformdeviate</code>
+primitive.</p>
+<ul>
+<li><p><strong>xintkernel</strong>:
+<code>\xintUniformDeviate</code>.</p></li>
+<li><p><strong>xint</strong>: <code>\xintRandomDigits</code>,
+<code>\xintXRandomDigits</code>, <code>\xintiiRandRange</code>,
+<code>\xintiiRandRangeAtoB</code>.</p></li>
+<li><p><strong>xintfrac</strong>: support macros (not public, mainly
+because internal format for floats is surely not final) for
+<code>random()</code> and <code>qrand()</code>.</p></li>
+<li><p><strong>xintexpr</strong>: <code>random()</code>,
+<code>qrand()</code>, and <code>randrange(A[, B])</code>.</p></li>
+<li><p><strong>xintexpr</strong>: when a function <code>foo()</code> is
+declared via <code>\xintdeffunc</code> (et al.) to be parameter-less, it
+can be used as <code>foo()</code>; formerly <code>foo(nil)</code> syntax
+was required.</p></li>
<li><p>The usual provision of user manual “improvements”.</p></li>
</ul>
<h2 id="a-20180307"><code>1.3a (2018/03/07)</code></h2>
<h3 id="removed">Removed</h3>
<ul>
-<li><strong>xintcore</strong>, <strong>xint</strong>, <strong>xintfrac</strong>: removal of the internal macros which were used at <code>1.2o</code> to add a deprecation mechanism; all deprecated macros have been removed at <code>1.3</code> so there was no reason to keep the code used for deprecating them.</li>
+<li><strong>xintcore</strong>, <strong>xint</strong>,
+<strong>xintfrac</strong>: removal of the internal macros which were
+used at <code>1.2o</code> to add a deprecation mechanism; all deprecated
+macros have been removed at <code>1.3</code> so there was no reason to
+keep the code used for deprecating them.</li>
</ul>
-<h3 id="improvements-and-new-features-6">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-6">Improvements and new
+features</h3>
<ul>
-<li><p><strong>xintexpr</strong>: new conditionals <code>ifone()</code> and <code>ifint()</code>.</p></li>
-<li><p><strong>xintfrac</strong>: <code>\xintREZ</code> is faster on inputs having one hundred digits or more.</p></li>
-<li><p>Added to the user manual mention of macros such as <code>\xintDivFloor</code>, <code>\xintMod</code>, <code>\xintModTrunc</code>, which had been left out so far.</p></li>
+<li><p><strong>xintexpr</strong>: new conditionals <code>ifone()</code>
+and <code>ifint()</code>.</p></li>
+<li><p><strong>xintfrac</strong>: <code>\xintREZ</code> is faster on
+inputs having one hundred digits or more.</p></li>
+<li><p>Added to the user manual mention of macros such as
+<code>\xintDivFloor</code>, <code>\xintMod</code>,
+<code>\xintModTrunc</code>, which had been left out so far.</p></li>
</ul>
-<h3 id="bug-fixes-15">Bug fixes</h3>
+<h3 id="bug-fixes-16">Bug fixes</h3>
<ul>
-<li><strong>xintexpr</strong>: the mechanism for adjunction to the expression parsers of user defined functions was refactored and improved at previous release <code>1.3</code>: in particular recursive definitions became possible. But an oversight made these recursive functions quite inefficient (to remain polite.) This release fixes the problem.</li>
+<li><strong>xintexpr</strong>: the mechanism for adjunction to the
+expression parsers of user defined functions was refactored and improved
+at previous release <code>1.3</code>: in particular recursive
+definitions became possible. But an oversight made these recursive
+functions quite inefficient (to remain polite.) This release fixes the
+problem.</li>
</ul>
<h2 id="section-1"><code>1.3 (2018/03/01)</code></h2>
-<h3 id="breaking-changes-8">Breaking changes</h3>
-<ul>
-<li><p><strong>xintcore</strong>, <strong>xint</strong>, <strong>xintfrac</strong>: all macros deprecated at <code>1.2o</code> got removed.</p></li>
-<li><p><strong>xintfrac</strong>: addition and subtraction of <code>a/b</code> and <code>c/d</code> now use the l.c.m. of the denominators. Similarly the macro supporting the modulo operator <code>/:</code> uses a l.c.m. for the denominator of the result.</p></li>
-<li><p><strong>xintexpr</strong>: the addition, subtraction, modulo <code>/:</code>, and the <code>mod()</code> and <code>divmod()</code> functions produce generally smaller denominators (see previous item).</p></li>
-<li><p><strong>xintexpr</strong>: formerly, the internal macros which are internally associated to user-declared functions were using comma separated parameter texts. They now do not use such commas (their meanings, which may again change in future, are written for information to the log under <code>\xintverbosetrue</code>).</p></li>
-</ul>
-<h3 id="improvements-and-new-features-7">Improvements and new features</h3>
+<h3 id="breaking-changes-9">Breaking changes</h3>
<ul>
-<li><p><strong>xintexpr</strong>: user-defined functions may now be of a recursive nature. This was made possible by a refactoring of the <code>\xintNewExpr</code> mechanism. It became both leaner and more extensive than formerly.</p></li>
-<li><p><strong>xintfrac</strong>: new macros <code>\xintPIrr</code> and <code>\xintDecToString</code>. The latter is a backport of a <code>polexpr 0.4</code> utility, and it is to be considered unstable.</p></li>
-<li><p><strong>xintexpr</strong>: new function <code>preduce()</code> associated with <code>\xintPIrr</code>.</p></li>
+<li><p><strong>xintcore</strong>, <strong>xint</strong>,
+<strong>xintfrac</strong>: all macros deprecated at <code>1.2o</code>
+got removed.</p></li>
+<li><p><strong>xintfrac</strong>: addition and subtraction of
+<code>a/b</code> and <code>c/d</code> now use the l.c.m. of the
+denominators. Similarly the macro supporting the modulo operator
+<code>/:</code> uses a l.c.m. for the denominator of the
+result.</p></li>
+<li><p><strong>xintexpr</strong>: the addition, subtraction, modulo
+<code>/:</code>, and the <code>mod()</code> and <code>divmod()</code>
+functions produce generally smaller denominators (see previous
+item).</p></li>
+<li><p><strong>xintexpr</strong>: formerly, the internal macros which
+are internally associated to user-declared functions were using comma
+separated parameter texts. They now do not use such commas (their
+meanings, which may again change in future, are written for information
+to the log under <code>\xintverbosetrue</code>).</p></li>
+</ul>
+<h3 id="improvements-and-new-features-7">Improvements and new
+features</h3>
+<ul>
+<li><p><strong>xintexpr</strong>: user-defined functions may now be of a
+recursive nature. This was made possible by a refactoring of the
+<code>\xintNewExpr</code> mechanism. It became both leaner and more
+extensive than formerly.</p></li>
+<li><p><strong>xintfrac</strong>: new macros <code>\xintPIrr</code> and
+<code>\xintDecToString</code>. The latter is a backport of a
+<code>polexpr 0.4</code> utility, and it is to be considered
+unstable.</p></li>
+<li><p><strong>xintexpr</strong>: new function <code>preduce()</code>
+associated with <code>\xintPIrr</code>.</p></li>
</ul>
<h2 id="q-20180206"><code>1.2q (2018/02/06)</code></h2>
-<h3 id="improvements-and-new-features-8">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-8">Improvements and new
+features</h3>
<ul>
-<li><strong>xintexpr</strong>: tacit multiplication extended to cases such as <code>3!4!5!</code> or <code>(1+2)3</code>.</li>
+<li><strong>xintexpr</strong>: tacit multiplication extended to cases
+such as <code>3!4!5!</code> or <code>(1+2)3</code>.</li>
</ul>
-<h3 id="bug-fixes-16">Bug fixes</h3>
+<h3 id="bug-fixes-17">Bug fixes</h3>
<ul>
-<li><strong>xintcore</strong>: sadly, refactoring at <code>1.2l</code> of subtraction left an extra character in an inner macro causing breakage in some rare circumstances. This should not have escaped our test suite!</li>
+<li><strong>xintcore</strong>: sadly, refactoring at <code>1.2l</code>
+of subtraction left an extra character in an inner macro causing
+breakage in some rare circumstances. This should not have escaped our
+test suite!</li>
</ul>
<h2 id="p-20171205"><code>1.2p (2017/12/05)</code></h2>
-<h3 id="breaking-changes-9">Breaking changes</h3>
-<ul>
-<li><p><strong>xintgcd</strong>: <code>\xintBezout{a}{b}</code>’s output consists of <code>{u}{v}{d}</code> with <code>u*a+v*b==d</code>, with <code>d</code> the GCD. Formerly it was <code>{a}{b}{u}{v}{d}</code>, and with <code>u*a-v*b==d</code>.</p></li>
-<li><p><strong>xintgcd</strong>: <code>\xintBezout{0}{0}</code> expands to <code>{0}{0}{0}</code>. Formerly (since <code>1.2l</code>) it raised <code>InvalidOperation</code>.</p></li>
-<li><p><strong>xintcore</strong>: <code>\xintiiMod</code> is now associated with floored division. The former meaning (associated with truncated division) is available as <code>\xintiiModTrunc</code>.</p></li>
-<li><p><strong>xintfrac</strong>: <code>\xintMod</code> is now associated with floored division. The former meaning is available as <code>\xintModTrunc</code>.</p></li>
-<li><p><strong>xintexpr</strong>: the <code>//</code> operator and its associated modulo <code>'mod'</code> (or <code>/:</code>) now correspond to floored division, like the Python language <code>//</code>, <code>%</code>, and <code>divmod(x, y)</code>. Formerly they had been associated to truncated division. This is breaking change for operands of opposite signs.</p></li>
-</ul>
-<h3 id="improvements-and-new-features-9">Improvements and new features</h3>
+<h3 id="breaking-changes-10">Breaking changes</h3>
<ul>
-<li><p><strong>xinttools</strong>: <code>\xintListWithSep</code>, which had remained unchanged since its introduction at <code>1.04 (2013/04/25)</code>, was rewritten for increased speed.</p></li>
-<li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>’s syntax is extended to allow simultaneous assignments. Examples: <code>\xintdefvar x1, x2, x3 := 1, 3**10, 3**20;</code> or <code>\xintdefiivar A, B := B, A 'mod' B;</code> for already defined variables <code>A</code> and <code>B</code>.</p></li>
-<li><p><strong>xintexpr</strong>: added <code>divmod()</code> to the built-in functions. It is associated with floored division, like the Python language <code>divmod()</code>. Related support macros added to <strong>xintcore</strong>, and <strong>xintfrac</strong>.</p></li>
+<li><p><strong>xintgcd</strong>: <code>\xintBezout{a}{b}</code>’s output
+consists of <code>{u}{v}{d}</code> with <code>u*a+v*b==d</code>, with
+<code>d</code> the GCD. Formerly it was <code>{a}{b}{u}{v}{d}</code>,
+and with <code>u*a-v*b==d</code>.</p></li>
+<li><p><strong>xintgcd</strong>: <code>\xintBezout{0}{0}</code> expands
+to <code>{0}{0}{0}</code>. Formerly (since <code>1.2l</code>) it raised
+<code>InvalidOperation</code>.</p></li>
+<li><p><strong>xintcore</strong>: <code>\xintiiMod</code> is now
+associated with floored division. The former meaning (associated with
+truncated division) is available as
+<code>\xintiiModTrunc</code>.</p></li>
+<li><p><strong>xintfrac</strong>: <code>\xintMod</code> is now
+associated with floored division. The former meaning is available as
+<code>\xintModTrunc</code>.</p></li>
+<li><p><strong>xintexpr</strong>: the <code>//</code> operator and its
+associated modulo <code>'mod'</code> (or <code>/:</code>) now correspond
+to floored division, like the Python language <code>//</code>,
+<code>%</code>, and <code>divmod(x, y)</code>. Formerly they had been
+associated to truncated division. This is breaking change for operands
+of opposite signs.</p></li>
+</ul>
+<h3 id="improvements-and-new-features-9">Improvements and new
+features</h3>
+<ul>
+<li><p><strong>xinttools</strong>: <code>\xintListWithSep</code>, which
+had remained unchanged since its introduction at
+<code>1.04 (2013/04/25)</code>, was rewritten for increased
+speed.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>’s syntax is
+extended to allow simultaneous assignments. Examples:
+<code>\xintdefvar x1, x2, x3 := 1, 3**10, 3**20;</code> or
+<code>\xintdefiivar A, B := B, A 'mod' B;</code> for already defined
+variables <code>A</code> and <code>B</code>.</p></li>
+<li><p><strong>xintexpr</strong>: added <code>divmod()</code> to the
+built-in functions. It is associated with floored division, like the
+Python language <code>divmod()</code>. Related support macros added to
+<strong>xintcore</strong>, and <strong>xintfrac</strong>.</p></li>
</ul>
-<h3 id="bug-fixes-17">Bug fixes</h3>
+<h3 id="bug-fixes-18">Bug fixes</h3>
<ul>
-<li><p><strong>xintgcd</strong>: <code>\xintBezout{6}{3}</code> (for example) expanded to <code>{6}{3}{-0}{-1}{3}</code>, but the <code>-0</code> should have been <code>0</code>.</p></li>
-<li><p><strong>xintgcd</strong>: it still used macro <code>\xintiAbs</code> although the latter had been deprecated from <strong>xintcore</strong>.</p></li>
-<li><p><strong>xintexpr</strong>: in float expressions the <code>//</code> and <code>/:</code> (aka <code>'mod'</code>) operators did not round their operands to the float precision prior to computing with them, contrarily to other infix arithmetic operators and to the <code>mod(f,g)</code> function; thus, <code>mod(f,g)</code> and <code>f 'mod' g</code> were not completely equivalent.</p></li>
-<li><p>various documentation fixes; in particular, the partial dependency of <strong>xintcfrac</strong> on <strong>xinttools</strong> had not been mentioned.</p></li>
+<li><p><strong>xintgcd</strong>: <code>\xintBezout{6}{3}</code> (for
+example) expanded to <code>{6}{3}{-0}{-1}{3}</code>, but the
+<code>-0</code> should have been <code>0</code>.</p></li>
+<li><p><strong>xintgcd</strong>: it still used macro
+<code>\xintiAbs</code> although the latter had been deprecated from
+<strong>xintcore</strong>.</p></li>
+<li><p><strong>xintexpr</strong>: in float expressions the
+<code>//</code> and <code>/:</code> (aka <code>'mod'</code>) operators
+did not round their operands to the float precision prior to computing
+with them, contrarily to other infix arithmetic operators and to the
+<code>mod(f,g)</code> function; thus, <code>mod(f,g)</code> and
+<code>f 'mod' g</code> were not completely equivalent.</p></li>
+<li><p>various documentation fixes; in particular, the partial
+dependency of <strong>xintcfrac</strong> on <strong>xinttools</strong>
+had not been mentioned.</p></li>
</ul>
<h2 id="o-20170829"><code>1.2o (2017/08/29)</code></h2>
-<h3 id="breaking-changes-10">Breaking changes</h3>
+<h3 id="breaking-changes-11">Breaking changes</h3>
<ul>
-<li><strong>xint</strong>: <code>\xintAND</code>, <code>\xintOR</code>, … and similar Boolean logic macros do not apply anymore <code>\xintNum</code> (or <code>\xintRaw</code> if <strong>xintfrac</strong> is loaded), to their arguments (often, from internal usage of <code>\xintSgn</code>), but only f-expand them (using e.g. <code>\xintiiSgn</code>). This is kept un-modified even if loading <strong>xintfrac</strong>.</li>
+<li><strong>xint</strong>: <code>\xintAND</code>, <code>\xintOR</code>,
+… and similar Boolean logic macros do not apply anymore
+<code>\xintNum</code> (or <code>\xintRaw</code> if
+<strong>xintfrac</strong> is loaded), to their arguments (often, from
+internal usage of <code>\xintSgn</code>), but only f-expand them (using
+e.g. <code>\xintiiSgn</code>). This is kept un-modified even if loading
+<strong>xintfrac</strong>.</li>
</ul>
<h3 id="deprecated-1">Deprecated</h3>
-<p>Deprecated macros raise an error but, generally, then expand as in former releases. They will all get removed at some future release.</p>
-<ul>
-<li><p><strong>xintcore</strong>: <code>\xintiOpp</code>, <code>\xintiAbs</code>, <code>\xintiAdd</code>, <code>\xintiSub</code>, <code>\xintiMul</code>, <code>\xintiDivision</code>, <code>\xintiQuo</code>, <code>\xintiRem</code>, <code>\xintiDivRound</code>, <code>\xintiDivTrunc</code>, <code>\xintiMod</code>, <code>\xintiSqr</code>, <code>\xintiPow</code>, and <code>\xintiFac</code> are deprecated. Only the <code>ii</code>-named variants get defined.</p></li>
-<li><p><strong>xintcore</strong>: <code>\xintCmp</code> and <code>\xintSgn</code> are deprecated from <strong>xintcore</strong> (which only defines <code>\xintiiCmp</code> and <code>\xintiiSgn</code>) as they actually belong to <strong>xintfrac</strong>.</p></li>
-<li><p><strong>xintcore</strong>: <code>\xintiiFDg</code>, resp. <code>\xintiiLDg</code>, are renamed <code>\xintFDg</code>, resp. <code>\xintLDg</code>. Former denominations are deprecated.</p></li>
-<li><p><strong>xint</strong>: <code>\xintMON</code>, <code>\xintMMON</code>, <code>\xintiMax</code>, <code>\xintiMin</code>, <code>\xintiMaxof</code>, <code>\xintiMinof</code>, <code>\xintiSquareRoot</code>, <code>\xintiSqrt</code>, <code>\xintiSqrtR</code>, <code>\xintiBinomial</code>, and <code>\xintiPFactorial</code> are deprecated. Only <code>ii</code>-named variants get defined.</p></li>
-<li><p><strong>xint</strong>: <code>\xintEq</code>, <code>\xintGeq</code>, <code>\xintGt</code>, <code>\xintLt</code>, <code>\xintGtorEq</code>, <code>\xintLtorEq</code>, <code>\xintIsZero</code>, <code>\xintIsNotZero</code>, <code>\xintIsOne</code>, <code>\xintOdd</code>, <code>\xintEven</code>, <code>\xintifSgn</code>, <code>\xintifCmp</code>, <code>\xintifEq</code>, <code>\xintifGt</code>, <code>\xintifLt</code>, <code>\xintifZero</code>, <code>\xintifNotZero</code>, <code>\xintifOne</code>, <code>\xintifOdd</code>, are deprecated. These macros belong to <strong>xintfrac</strong>. Package <strong>xint</strong> defines only the <code>ii</code>-named variants.</p></li>
-<li><p><strong>xint</strong>: <code>\xintNeq</code> was renamed to <code>\xintNotEq</code> which however is only provided by <strong>xintfrac</strong>. Package <strong>xint</strong> defines <code>\xintiiNotEq</code>, and <code>\xintNeq</code> is deprecated.</p></li>
-<li><p><strong>xint</strong>: <code>\xintNot</code> was renamed to <code>\xintNOT</code>, former denomination is deprecated. See also item about Boolean logic macros in the <em>Incompatible Changes</em> section.</p></li>
+<p>Deprecated macros raise an error but, generally, then expand as in
+former releases. They will all get removed at some future release.</p>
+<ul>
+<li><p><strong>xintcore</strong>: <code>\xintiOpp</code>,
+<code>\xintiAbs</code>, <code>\xintiAdd</code>, <code>\xintiSub</code>,
+<code>\xintiMul</code>, <code>\xintiDivision</code>,
+<code>\xintiQuo</code>, <code>\xintiRem</code>,
+<code>\xintiDivRound</code>, <code>\xintiDivTrunc</code>,
+<code>\xintiMod</code>, <code>\xintiSqr</code>, <code>\xintiPow</code>,
+and <code>\xintiFac</code> are deprecated. Only the
+<code>ii</code>-named variants get defined.</p></li>
+<li><p><strong>xintcore</strong>: <code>\xintCmp</code> and
+<code>\xintSgn</code> are deprecated from <strong>xintcore</strong>
+(which only defines <code>\xintiiCmp</code> and <code>\xintiiSgn</code>)
+as they actually belong to <strong>xintfrac</strong>.</p></li>
+<li><p><strong>xintcore</strong>: <code>\xintiiFDg</code>, resp.
+<code>\xintiiLDg</code>, are renamed <code>\xintFDg</code>, resp.
+<code>\xintLDg</code>. Former denominations are deprecated.</p></li>
+<li><p><strong>xint</strong>: <code>\xintMON</code>,
+<code>\xintMMON</code>, <code>\xintiMax</code>, <code>\xintiMin</code>,
+<code>\xintiMaxof</code>, <code>\xintiMinof</code>,
+<code>\xintiSquareRoot</code>, <code>\xintiSqrt</code>,
+<code>\xintiSqrtR</code>, <code>\xintiBinomial</code>, and
+<code>\xintiPFactorial</code> are deprecated. Only <code>ii</code>-named
+variants get defined.</p></li>
+<li><p><strong>xint</strong>: <code>\xintEq</code>,
+<code>\xintGeq</code>, <code>\xintGt</code>, <code>\xintLt</code>,
+<code>\xintGtorEq</code>, <code>\xintLtorEq</code>,
+<code>\xintIsZero</code>, <code>\xintIsNotZero</code>,
+<code>\xintIsOne</code>, <code>\xintOdd</code>, <code>\xintEven</code>,
+<code>\xintifSgn</code>, <code>\xintifCmp</code>,
+<code>\xintifEq</code>, <code>\xintifGt</code>, <code>\xintifLt</code>,
+<code>\xintifZero</code>, <code>\xintifNotZero</code>,
+<code>\xintifOne</code>, <code>\xintifOdd</code>, are deprecated. These
+macros belong to <strong>xintfrac</strong>. Package
+<strong>xint</strong> defines only the <code>ii</code>-named
+variants.</p></li>
+<li><p><strong>xint</strong>: <code>\xintNeq</code> was renamed to
+<code>\xintNotEq</code> which however is only provided by
+<strong>xintfrac</strong>. Package <strong>xint</strong> defines
+<code>\xintiiNotEq</code>, and <code>\xintNeq</code> is
+deprecated.</p></li>
+<li><p><strong>xint</strong>: <code>\xintNot</code> was renamed to
+<code>\xintNOT</code>, former denomination is deprecated. See also item
+about Boolean logic macros in the <em>Incompatible Changes</em>
+section.</p></li>
</ul>
<h2 id="n-20170806"><code>1.2n (2017/08/06)</code></h2>
-<h3 id="breaking-changes-11">Breaking changes</h3>
+<h3 id="breaking-changes-12">Breaking changes</h3>
<ul>
-<li><strong>xintbinhex</strong> does not load package <strong>xintcore</strong> anymore, but only <strong>xintkernel</strong>.</li>
+<li><strong>xintbinhex</strong> does not load package
+<strong>xintcore</strong> anymore, but only
+<strong>xintkernel</strong>.</li>
</ul>
-<h3 id="improvements-and-new-features-10">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-10">Improvements and new
+features</h3>
<ul>
-<li><p><strong>xintbinhex</strong> has only <strong>xintkernel</strong> as dependency.</p></li>
-<li><p>Macros of <strong>xintbinhex</strong> have been improved for speed and increased maximal sizes of allowable inputs.</p></li>
+<li><p><strong>xintbinhex</strong> has only <strong>xintkernel</strong>
+as dependency.</p></li>
+<li><p>Macros of <strong>xintbinhex</strong> have been improved for
+speed and increased maximal sizes of allowable inputs.</p></li>
</ul>
<h2 id="m-20170731"><code>1.2m (2017/07/31)</code></h2>
-<h3 id="breaking-changes-12">Breaking changes</h3>
+<h3 id="breaking-changes-13">Breaking changes</h3>
<ul>
-<li><p><strong>xintbinhex</strong>: the length of the input is now limited. The maximum size depends on the macro and ranges from about <code>4000</code> to about <code>19900</code> digits.</p></li>
-<li><p><strong>xintbinhex</strong>: <code>\xintCHexToBin</code> is now the variant of <code>\xintHexToBin</code> which does not remove leading binary zeroes: <code>N</code> hex-digits give on output exactly <code>4N</code> binary digits.</p></li>
+<li><p><strong>xintbinhex</strong>: the length of the input is now
+limited. The maximum size depends on the macro and ranges from about
+<code>4000</code> to about <code>19900</code> digits.</p></li>
+<li><p><strong>xintbinhex</strong>: <code>\xintCHexToBin</code> is now
+the variant of <code>\xintHexToBin</code> which does not remove leading
+binary zeroes: <code>N</code> hex-digits give on output exactly
+<code>4N</code> binary digits.</p></li>
</ul>
-<h3 id="improvements-and-new-features-11">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-11">Improvements and new
+features</h3>
<ul>
-<li><strong>xintbinhex</strong>: all macros have been rewritten using techniques from the 1.2 release (they had remained unmodified since <code>1.08</code> of <code>2013/06/07</code>.) The new macros are faster but limited to a few thousand digits. The <code>1.08</code> routines could handle tens of thousands of digits, but not in a reasonable time.</li>
+<li><strong>xintbinhex</strong>: all macros have been rewritten using
+techniques from the 1.2 release (they had remained unmodified since
+<code>1.08</code> of <code>2013/06/07</code>.) The new macros are faster
+but limited to a few thousand digits. The <code>1.08</code> routines
+could handle tens of thousands of digits, but not in a reasonable
+time.</li>
</ul>
-<h3 id="bug-fixes-18">Bug fixes</h3>
+<h3 id="bug-fixes-19">Bug fixes</h3>
<ul>
-<li><p>user manual: the <code>Changes</code> section wrongly stated at <code>1.2l</code> that the macros of <strong>xintbinhex</strong> had been made robust against non terminated input such as <code>\number\mathcode`\-</code>. Unfortunately the author fell into the trap of believing his own documentation and he forgot to actually implement the change. Now done.</p></li>
+<li><p>user manual: the <code>Changes</code> section wrongly stated at
+<code>1.2l</code> that the macros of <strong>xintbinhex</strong> had
+been made robust against non terminated input such as
+<code>\number\mathcode`\-</code>. Unfortunately the author fell into the
+trap of believing his own documentation and he forgot to actually
+implement the change. Now done.</p></li>
<li><p>user manual: the PDF bookmarks were messed up.</p></li>
-<li><p><strong>xint</strong>, <strong>xintfrac</strong>: <code>\xintGeq</code>, <code>\xintMax</code>, <code>\xintMin</code>, suffered from some extra overhead. This was caused by use of some auxiliaries from the very early days which got redefined at some stage. This is fixed here with some additional efficiency improvements and pruning of old code.</p></li>
+<li><p><strong>xint</strong>, <strong>xintfrac</strong>:
+<code>\xintGeq</code>, <code>\xintMax</code>, <code>\xintMin</code>,
+suffered from some extra overhead. This was caused by use of some
+auxiliaries from the very early days which got redefined at some stage.
+This is fixed here with some additional efficiency improvements and
+pruning of old code.</p></li>
</ul>
<h2 id="l-20170726"><code>1.2l (2017/07/26)</code></h2>
<h3 id="removed-1">Removed</h3>
<ul>
-<li><p><code>\xintiiSumExpr</code>, <code>\xintiiPrdExpr</code> (<strong>xint</strong>) and <code>\xintSumExpr</code>, <code>\xintPrdExpr</code> (<strong>xintfrac</strong>). They had not been formally deprecated, but had been left un-documented since <code>1.09d (2013/10/22)</code>.</p></li>
-<li><p>internal macro <code>\xint_gob_til_xint_relax</code> removed.</p></li>
+<li><p><code>\xintiiSumExpr</code>, <code>\xintiiPrdExpr</code>
+(<strong>xint</strong>) and <code>\xintSumExpr</code>,
+<code>\xintPrdExpr</code> (<strong>xintfrac</strong>). They had not been
+formally deprecated, but had been left un-documented since
+<code>1.09d (2013/10/22)</code>.</p></li>
+<li><p>internal macro <code>\xint_gob_til_xint_relax</code>
+removed.</p></li>
+</ul>
+<h3 id="improvements-and-new-features-12">Improvements and new
+features</h3>
+<ul>
+<li><p>the underscore character <code>_</code> is accepted by the
+<strong>xintexpr</strong> parsers as a digit separator (the space
+character already could be used for improved readability of big
+numbers). It is not allowed as <em>first</em> character of a number, as
+it would then be mis-interpreted as the start of a possible variable
+name.</p></li>
+<li><p>some refactoring in <strong>xintcore</strong> auxiliary routines
+and in <code>\xintiiSub</code> and <code>\xintiiCmp</code> for some
+small efficiency gains.</p></li>
+<li><p>code comments in <strong>xintcore</strong> are better formatted,
+but remain sparse.</p></li>
+<li><p><strong>xintcore</strong>, <strong>xint</strong>,
+<strong>xintfrac</strong>, … : some macros were not robust against
+arguments whose expansion looks forward for some termination
+(e.g. <code>\number\mathcode`\-</code>), and particularly, most were
+fragile against inputs using non-terminated <code>\numexpr</code> (such
+as <code>\xintiiAdd{\the\numexpr1}{2}</code> or
+<code>\xintRaw{\numexpr1}</code>). This was not a bug per se, as the
+user manual did not claim such inputs were legal, but it was slightly
+inconvenient. Most macros (particularly those of
+<strong>xintfrac</strong>) have now been made robust against such
+inputs. Some macros from <strong>xintcore</strong> primarily destined to
+internal usage still accept only properly terminated arguments such as
+<code>\the\mathcode`\-&lt;space&gt;</code> or
+<code>\the\numexpr1\relax</code>.</p>
+<p>The situation with expressions is unchanged: syntax such as
+<code>\xintexpr \numexpr1+2\relax</code> is illegal as the ending
+<code>\relax</code> token will get swallowed by the
+<code>\numexpr</code>; but it is needed by the
+<code>xintexpr</code>-ession parser, hence the parser will expand
+forward and presumably end with in an “illegal token” error, or provoke
+some low-level TeX error (N.B.: a closing brace <code>}</code> for
+example can not terminate an <code>xintexpr</code>-ession, the parser
+must find a <code>\relax</code> token at some point). Thus there must be
+in this example a second <code>\relax</code>.</p></li>
+<li><p>experimental code for error conditions; there is no complete user
+interface yet, it is done in preparation for next major release and is
+completely unstable and undocumented.</p></li>
</ul>
-<h3 id="improvements-and-new-features-12">Improvements and new features</h3>
-<ul>
-<li><p>the underscore character <code>_</code> is accepted by the <strong>xintexpr</strong> parsers as a digit separator (the space character already could be used for improved readability of big numbers). It is not allowed as <em>first</em> character of a number, as it would then be mis-interpreted as the start of a possible variable name.</p></li>
-<li><p>some refactoring in <strong>xintcore</strong> auxiliary routines and in <code>\xintiiSub</code> and <code>\xintiiCmp</code> for some small efficiency gains.</p></li>
-<li><p>code comments in <strong>xintcore</strong> are better formatted, but remain sparse.</p></li>
-<li><p><strong>xintcore</strong>, <strong>xint</strong>, <strong>xintfrac</strong>, … : some macros were not robust against arguments whose expansion looks forward for some termination (e.g. <code>\number\mathcode`\-</code>), and particularly, most were fragile against inputs using non-terminated <code>\numexpr</code> (such as <code>\xintiiAdd{\the\numexpr1}{2}</code> or <code>\xintRaw{\numexpr1}</code>). This was not a bug per se, as the user manual did not claim such inputs were legal, but it was slightly inconvenient. Most macros (particularly those of <strong>xintfrac</strong>) have now been made robust against such inputs. Some macros from <strong>xintcore</strong> primarily destined to internal usage still accept only properly terminated arguments such as <code>\the\mathcode`\-&lt;space&gt;</code> or <code>\the\numexpr1\relax</code>.</p>
-<p>The situation with expressions is unchanged: syntax such as <code>\xintexpr \numexpr1+2\relax</code> is illegal as the ending <code>\relax</code> token will get swallowed by the <code>\numexpr</code>; but it is needed by the <code>xintexpr</code>-ession parser, hence the parser will expand forward and presumably end with in an “illegal token” error, or provoke some low-level TeX error (N.B.: a closing brace <code>}</code> for example can not terminate an <code>xintexpr</code>-ession, the parser must find a <code>\relax</code> token at some point). Thus there must be in this example a second <code>\relax</code>.</p></li>
-<li><p>experimental code for error conditions; there is no complete user interface yet, it is done in preparation for next major release and is completely unstable and undocumented.</p></li>
-</ul>
-<h3 id="bug-fixes-19">Bug fixes</h3>
+<h3 id="bug-fixes-20">Bug fixes</h3>
<ul>
-<li><p><strong>xintbinhex</strong>: since <code>1.2 (2015/10/10)</code>, <code>\xintHexToDec</code> was broken due to an undefined macro (it was in <code>xint.sty</code>, but the module by itself is supposedly dependent only upon <code>xintcore.sty</code>).</p></li>
-<li><p><strong>xintgcd</strong>: macro <code>\xintBezout</code> produced partially wrong output if one of its two arguments was zero.</p></li>
-<li><p><strong>xintfrac</strong>: the manual said one could use directly <code>\numexpr</code> compatible expressions in arithmetic macros (without even a <code>\numexpr</code> encapsulation) if they were expressed with up to 8 tokens. There was a bug if these 8 tokens evaluated to zero. The bug has been fixed, and up to 9 tokens are now accepted. But it is simpler to use <code>\the\numexpr</code> prefix and not to worry about the token count… The ending <code>\relax</code> is now un-needed.</p></li>
+<li><p><strong>xintbinhex</strong>: since <code>1.2 (2015/10/10)</code>,
+<code>\xintHexToDec</code> was broken due to an undefined macro (it was
+in <code>xint.sty</code>, but the module by itself is supposedly
+dependent only upon <code>xintcore.sty</code>).</p></li>
+<li><p><strong>xintgcd</strong>: macro <code>\xintBezout</code> produced
+partially wrong output if one of its two arguments was zero.</p></li>
+<li><p><strong>xintfrac</strong>: the manual said one could use directly
+<code>\numexpr</code> compatible expressions in arithmetic macros
+(without even a <code>\numexpr</code> encapsulation) if they were
+expressed with up to 8 tokens. There was a bug if these 8 tokens
+evaluated to zero. The bug has been fixed, and up to 9 tokens are now
+accepted. But it is simpler to use <code>\the\numexpr</code> prefix and
+not to worry about the token count… The ending <code>\relax</code> is
+now un-needed.</p></li>
</ul>
<h2 id="k-20170106"><code>1.2k (2017/01/06)</code></h2>
-<h3 id="breaking-changes-13">Breaking changes</h3>
-<ul>
-<li><p>macro <code>\xintFloat</code> which rounds its input to a floating point number does <em>not</em> print anymore <code>10.0...0eN</code> to signal an upwards rounding to the next power of ten. The mantissa has in all cases except the zero input exactly one digit before the decimal mark.</p></li>
-<li><p>some floating point computations may differ in the least significant digits, due to a change in the rounding algorithm applied to macro arguments expressed as fractions and to an improvement in precision regarding half-integer powers in expressions. See next.</p></li>
-</ul>
-<h3 id="improvements-and-new-features-13">Improvements and new features</h3>
+<h3 id="breaking-changes-14">Breaking changes</h3>
<ul>
-<li><p>the initial rounding to the target precision <code>P</code> which is applied by the floating point macros from <strong>xintfrac</strong> to their arguments achieves the <em>exact (aka correct) rounding</em> even for inputs which are fractions with more than <code>P+2</code> digits in their numerators and denominators (<code>&gt;1</code>.) Hence the computed values depend only on the arguments as rational numbers and not upon their representatives. This is not relevant to <em>expressions</em> (<strong>xintexpr</strong>), because the <code>\xintfloatexpr</code> parser sees there <code>/</code> as an operator and does not (apart from special constructs) get to manipulate fractions as such.</p></li>
-<li><p><code>\xintnewdummy</code> is public interface to a <code>1.2e</code> macro which serves to declare any given catcode 11 character as a dummy variable for expressions (<strong>xintexpr</strong>). This is useful for Unicode engines (the Latin letters being already all pre-declared as dummy variables.)</p></li>
-<li><p>added <code>\xintiSqrtR</code>, there was only <code>\xintiiSqrtR</code> alongside <code>\xintiSqrt</code> and <code>\xintiiSqrt</code> (<strong>xint</strong>).</p></li>
-<li><p>added non public <code>\xintLastItem:f:csv</code> to <strong>xinttools</strong> for faster <code>last()</code> function, and improved <code>\xintNewExpr</code> compatibility. Also <code>\xintFirstItem:f:csv</code>.</p></li>
+<li><p>macro <code>\xintFloat</code> which rounds its input to a
+floating point number does <em>not</em> print anymore
+<code>10.0...0eN</code> to signal an upwards rounding to the next power
+of ten. The mantissa has in all cases except the zero input exactly one
+digit before the decimal mark.</p></li>
+<li><p>some floating point computations may differ in the least
+significant digits, due to a change in the rounding algorithm applied to
+macro arguments expressed as fractions and to an improvement in
+precision regarding half-integer powers in expressions. See
+next.</p></li>
+</ul>
+<h3 id="improvements-and-new-features-13">Improvements and new
+features</h3>
+<ul>
+<li><p>the initial rounding to the target precision <code>P</code> which
+is applied by the floating point macros from <strong>xintfrac</strong>
+to their arguments achieves the <em>exact (aka correct) rounding</em>
+even for inputs which are fractions with more than <code>P+2</code>
+digits in their numerators and denominators (<code>&gt;1</code>.) Hence
+the computed values depend only on the arguments as rational numbers and
+not upon their representatives. This is not relevant to
+<em>expressions</em> (<strong>xintexpr</strong>), because the
+<code>\xintfloatexpr</code> parser sees there <code>/</code> as an
+operator and does not (apart from special constructs) get to manipulate
+fractions as such.</p></li>
+<li><p><code>\xintnewdummy</code> is public interface to a
+<code>1.2e</code> macro which serves to declare any given catcode 11
+character as a dummy variable for expressions
+(<strong>xintexpr</strong>). This is useful for Unicode engines (the
+Latin letters being already all pre-declared as dummy
+variables.)</p></li>
+<li><p>added <code>\xintiSqrtR</code>, there was only
+<code>\xintiiSqrtR</code> alongside <code>\xintiSqrt</code> and
+<code>\xintiiSqrt</code> (<strong>xint</strong>).</p></li>
+<li><p>added non public <code>\xintLastItem:f:csv</code> to
+<strong>xinttools</strong> for faster <code>last()</code> function, and
+improved <code>\xintNewExpr</code> compatibility. Also
+<code>\xintFirstItem:f:csv</code>.</p></li>
</ul>
-<h3 id="bug-fixes-20">Bug fixes</h3>
+<h3 id="bug-fixes-21">Bug fixes</h3>
<ul>
-<li><p>the <code>1.2f</code> half-integer powers computed within <code>\xintfloatexpr</code> had a silly rounding to the target precision just <em>before</em> the final square-root extraction, thus possibly losing some precision. The <code>1.2k</code> implementation keeps guard digits for this final square root extraction. As for integer exponents, it is guaranteed that the computed value differs from the exact one by less than <code>0.52 ulp</code> (for inputs having at most <code>\xinttheDigits</code> digits.)</p></li>
-<li><p>more regressions from <code>1.2i</code> were fixed: <code>\xintLen</code> (<strong>xint</strong>, <strong>xintfrac</strong>) and <code>\xintDouble</code> (<strong>xintcore</strong>) had forgotten that their argument was allowed to be negative. A regression test suite is now in place and is being slowly expanded to cover more macros.</p></li>
-<li><p><code>\xintiiSquareRoot{0}</code> now produces <code>{1}{1}</code>, which fits better the general documented behaviour of this macro than <code>11</code>.</p></li>
+<li><p>the <code>1.2f</code> half-integer powers computed within
+<code>\xintfloatexpr</code> had a silly rounding to the target precision
+just <em>before</em> the final square-root extraction, thus possibly
+losing some precision. The <code>1.2k</code> implementation keeps guard
+digits for this final square root extraction. As for integer exponents,
+it is guaranteed that the computed value differs from the exact one by
+less than <code>0.52 ulp</code> (for inputs having at most
+<code>\xinttheDigits</code> digits.)</p></li>
+<li><p>more regressions from <code>1.2i</code> were fixed:
+<code>\xintLen</code> (<strong>xint</strong>, <strong>xintfrac</strong>)
+and <code>\xintDouble</code> (<strong>xintcore</strong>) had forgotten
+that their argument was allowed to be negative. A regression test suite
+is now in place and is being slowly expanded to cover more
+macros.</p></li>
+<li><p><code>\xintiiSquareRoot{0}</code> now produces
+<code>{1}{1}</code>, which fits better the general documented behaviour
+of this macro than <code>11</code>.</p></li>
</ul>
<h2 id="j-20161222"><code>1.2j (2016/12/22)</code></h2>
-<h3 id="improvements-and-new-features-14">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-14">Improvements and new
+features</h3>
<ul>
<li><p><strong>xinttools</strong> and <strong>xintexpr</strong>:</p>
<ol type="1">
<li><p>slightly improves the speed of <code>\xintTrim</code>.</p></li>
-<li><p>speed gains for the handlers of comma separated lists implementing Python-like slicing and item extraction. Relevant non (user) documented macros better documented in <code>sourcexint.pdf</code>.</p></li>
+<li><p>speed gains for the handlers of comma separated lists
+implementing Python-like slicing and item extraction. Relevant non
+(user) documented macros better documented in
+<code>sourcexint.pdf</code>.</p></li>
</ol></li>
-<li><p>significant documentations tweaks (inclusive of suppressing things!), and among them two beautiful hyperlinked tables with both horizontal and vertical rules which bring the documentation of the <strong>xintexpr</strong> syntax to a kind of awe-inspiring perfection… except that implementation of some math functions is still lacking.</p></li>
+<li><p>significant documentations tweaks (inclusive of suppressing
+things!), and among them two beautiful hyperlinked tables with both
+horizontal and vertical rules which bring the documentation of the
+<strong>xintexpr</strong> syntax to a kind of awe-inspiring perfection…
+except that implementation of some math functions is still
+lacking.</p></li>
</ul>
-<h3 id="bug-fixes-21">Bug fixes</h3>
+<h3 id="bug-fixes-22">Bug fixes</h3>
<ul>
-<li>fix two <code>1.2i</code> regressions caused by undefined macros (<code>\xintNthElt</code> in certain branches and <code>[list][N]</code> item extraction in certain cases.) The test files existed but were not executed prior to release. Automation in progress.</li>
+<li>fix two <code>1.2i</code> regressions caused by undefined macros
+(<code>\xintNthElt</code> in certain branches and <code>[list][N]</code>
+item extraction in certain cases.) The test files existed but were not
+executed prior to release. Automation in progress.</li>
</ul>
<h2 id="i-20161213"><code>1.2i (2016/12/13)</code></h2>
-<h3 id="breaking-changes-14">Breaking changes</h3>
+<h3 id="breaking-changes-15">Breaking changes</h3>
<ul>
-<li><code>\xintDecSplit</code> second argument must have no sign (former code replaced it with its absolute value, a sign now may cause an error.)</li>
+<li><code>\xintDecSplit</code> second argument must have no sign (former
+code replaced it with its absolute value, a sign now may cause an
+error.)</li>
</ul>
<h3 id="removed-2">Removed</h3>
<ul>
-<li>deprecated macros <code>\xintifTrue</code>, <code>\xintifTrueFalse</code>, <code>\xintQuo</code>, <code>\xintRem</code>, <code>\xintquo</code>, <code>\xintrem</code>.</li>
+<li>deprecated macros <code>\xintifTrue</code>,
+<code>\xintifTrueFalse</code>, <code>\xintQuo</code>,
+<code>\xintRem</code>, <code>\xintquo</code>,
+<code>\xintrem</code>.</li>
</ul>
-<h3 id="improvements-and-new-features-15">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-15">Improvements and new
+features</h3>
<ul>
-<li><p><strong>xintkernel</strong>: <code>\xintLength</code> is faster. New macros:</p>
+<li><p><strong>xintkernel</strong>: <code>\xintLength</code> is faster.
+New macros:</p>
<ul>
-<li><p><code>\xintLastItem</code> to fetch the last item from its argument,</p></li>
-<li><p><code>\romannumeral\xintgobble</code> for gobbling many (up to 531440) upstream braced items or tokens.</p></li>
-<li><p><code>\romannumeral\xintreplicate</code> which is copied over from the expl3 <code>\prg_replicate:nn</code> with some minor changes.</p></li>
+<li><p><code>\xintLastItem</code> to fetch the last item from its
+argument,</p></li>
+<li><p><code>\romannumeral\xintgobble</code> for gobbling many (up to
+531440) upstream braced items or tokens.</p></li>
+<li><p><code>\romannumeral\xintreplicate</code> which is copied over
+from the expl3 <code>\prg_replicate:nn</code> with some minor
+changes.</p></li>
</ul></li>
-<li><p><strong>xinttools</strong>: general token list handling routines <code>\xintKeep</code>, <code>\xintTrim</code> and <code>\xintNthElt</code> are faster; but the novel <code>\xintTrim</code> can only remove up to a maximum of 531440 items.</p>
-<p>Also, <code>\xintFor</code> partially improves on some issues which are reported upon in the documentation.</p></li>
-<li><p>some old macros have been rewritten entirely or partially using techniques which <strong>xint</strong> started using in release <code>1.2</code>:</p>
-<ul>
-<li><p><strong>xintcore</strong>: <code>\xintDouble</code>, <code>\xintHalf</code>, <code>\xintInc</code>, <code>\xintDec</code>, <code>\xintiiLDg</code>, <code>\xintDSR</code> (originally from <strong>xint</strong>), a novel <code>\xintDSRr</code>.</p></li>
-<li><p><strong>xint</strong>: <code>\xintDSH</code>, <code>\xintDSx</code>, <code>\xintDecSplit</code>, <code>\xintiiE</code>.</p></li>
-<li><p><strong>xintfrac</strong>: as a result of the above <code>\xintTrunc</code>, <code>\xintRound</code> and <code>\xintXTrunc</code> got faster. But the main improvement for them is with decimal inputs which formerly had not been treated separately from the general fraction case. Also, <code>\xintXTrunc</code> does not anymore create a dependency of <strong>xintfrac</strong> on <strong>xinttools</strong>.</p></li>
+<li><p><strong>xinttools</strong>: general token list handling routines
+<code>\xintKeep</code>, <code>\xintTrim</code> and
+<code>\xintNthElt</code> are faster; but the novel
+<code>\xintTrim</code> can only remove up to a maximum of 531440
+items.</p>
+<p>Also, <code>\xintFor</code> partially improves on some issues which
+are reported upon in the documentation.</p></li>
+<li><p>some old macros have been rewritten entirely or partially using
+techniques which <strong>xint</strong> started using in release
+<code>1.2</code>:</p>
+<ul>
+<li><p><strong>xintcore</strong>: <code>\xintDouble</code>,
+<code>\xintHalf</code>, <code>\xintInc</code>, <code>\xintDec</code>,
+<code>\xintiiLDg</code>, <code>\xintDSR</code> (originally from
+<strong>xint</strong>), a novel <code>\xintDSRr</code>.</p></li>
+<li><p><strong>xint</strong>: <code>\xintDSH</code>,
+<code>\xintDSx</code>, <code>\xintDecSplit</code>,
+<code>\xintiiE</code>.</p></li>
+<li><p><strong>xintfrac</strong>: as a result of the above
+<code>\xintTrunc</code>, <code>\xintRound</code> and
+<code>\xintXTrunc</code> got faster. But the main improvement for them
+is with decimal inputs which formerly had not been treated separately
+from the general fraction case. Also, <code>\xintXTrunc</code> does not
+anymore create a dependency of <strong>xintfrac</strong> on
+<strong>xinttools</strong>.</p></li>
</ul></li>
-<li><p>the documentation has again been (slightly) re-organized; it has a new sub-section on the Miller-Rabin primality test, to illustrate some use of <code>\xintNewFunction</code> for recursive definitions.</p></li>
-<li><p>the documentation has dropped the LaTeX “command” terminology (which had been used initially in 2013 for some forgotten reasons and should have been removed long ago) and uses only the more apt “macro”, as after all, all of <strong>xint</strong> is about expansion of macros (plus the use of <code>\numexpr</code>).</p></li>
+<li><p>the documentation has again been (slightly) re-organized; it has
+a new sub-section on the Miller-Rabin primality test, to illustrate some
+use of <code>\xintNewFunction</code> for recursive definitions.</p></li>
+<li><p>the documentation has dropped the LaTeX “command” terminology
+(which had been used initially in 2013 for some forgotten reasons and
+should have been removed long ago) and uses only the more apt “macro”,
+as after all, all of <strong>xint</strong> is about expansion of macros
+(plus the use of <code>\numexpr</code>).</p></li>
</ul>
-<h3 id="bug-fixes-22">Bug fixes</h3>
+<h3 id="bug-fixes-23">Bug fixes</h3>
<ul>
-<li><code>\xintDecSplitL</code> and <code>\xintDecSplitR</code> from <strong>xint</strong> produced their output in a spurious brace pair (bug introduced in <code>1.2f</code>).</li>
+<li><code>\xintDecSplitL</code> and <code>\xintDecSplitR</code> from
+<strong>xint</strong> produced their output in a spurious brace pair
+(bug introduced in <code>1.2f</code>).</li>
</ul>
<h2 id="h-20161120"><code>1.2h (2016/11/20)</code></h2>
-<h3 id="improvements-and-new-features-16">Improvements and new features</h3>
-<ul>
-<li><p>new macro <code>\xintNewFunction</code> in <strong>xintexpr</strong> which allows to extend the parser syntax with functions in situations where <code>\xintdeffunc</code> is not usable (typically, because dummy variables are used over a not yet determined range of values because it depends on the variables).</p></li>
-<li><p>after three years of strict obedience to <code>xint</code> prefix, now <code>\thexintexpr</code>, <code>\thexintiexpr</code>, <code>\thexintfloatexpr</code>, and <code>\thexintiiexpr</code> are provided as synonyms to <code>\xinttheexpr</code>, etc…</p></li>
+<h3 id="improvements-and-new-features-16">Improvements and new
+features</h3>
+<ul>
+<li><p>new macro <code>\xintNewFunction</code> in
+<strong>xintexpr</strong> which allows to extend the parser syntax with
+functions in situations where <code>\xintdeffunc</code> is not usable
+(typically, because dummy variables are used over a not yet determined
+range of values because it depends on the variables).</p></li>
+<li><p>after three years of strict obedience to <code>xint</code>
+prefix, now <code>\thexintexpr</code>, <code>\thexintiexpr</code>,
+<code>\thexintfloatexpr</code>, and <code>\thexintiiexpr</code> are
+provided as synonyms to <code>\xinttheexpr</code>, etc…</p></li>
</ul>
-<h3 id="bug-fixes-23">Bug fixes</h3>
+<h3 id="bug-fixes-24">Bug fixes</h3>
<ul>
-<li><p>the <code>(cond)?{foo}{bar}</code> operator from <strong>xintexpr</strong> mis-behaved in certain circumstances (such as an empty <code>foo</code>).</p></li>
-<li><p>the <strong>xintexpr</strong> <code>1.2f</code> <code>binomial</code> function (which uses <code>\xintiiBinomial</code> from <strong>xint.sty</strong> or <code>\xintFloatBinomial</code> from <strong>xintfrac.sty</strong>) deliberately raised an error for <code>binomial(x,y)</code> with <code>y&lt;0</code> or <code>x&lt;y</code>. This was unfortunate, and it now simply evaluates to zero in such cases.</p></li>
-<li><p>similarly the <code>pfactorial</code> function was very strict and <code>pfactorial(x,y)</code> deliberately raised an out-of-range error if not used with non-negative integers with <code>x</code> less than <code>y</code>. It now avoids doing that and allows negative arguments.</p></li>
-<li><p>the <code>add</code> and <code>mul</code> from <strong>xintexpr</strong>, which work with dummy variables since <code>1.1</code>, raised an error since <code>1.2c 2015/11/16</code> when the dummy variable was given an empty range (or list) of values, rather than producing respectively <code>0</code> and <code>1</code> as formerly.</p></li>
+<li><p>the <code>(cond)?{foo}{bar}</code> operator from
+<strong>xintexpr</strong> mis-behaved in certain circumstances (such as
+an empty <code>foo</code>).</p></li>
+<li><p>the <strong>xintexpr</strong> <code>1.2f</code>
+<code>binomial</code> function (which uses <code>\xintiiBinomial</code>
+from <strong>xint.sty</strong> or <code>\xintFloatBinomial</code> from
+<strong>xintfrac.sty</strong>) deliberately raised an error for
+<code>binomial(x,y)</code> with <code>y&lt;0</code> or
+<code>x&lt;y</code>. This was unfortunate, and it now simply evaluates
+to zero in such cases.</p></li>
+<li><p>similarly the <code>pfactorial</code> function was very strict
+and <code>pfactorial(x,y)</code> deliberately raised an out-of-range
+error if not used with non-negative integers with <code>x</code> less
+than <code>y</code>. It now avoids doing that and allows negative
+arguments.</p></li>
+<li><p>the <code>add</code> and <code>mul</code> from
+<strong>xintexpr</strong>, which work with dummy variables since
+<code>1.1</code>, raised an error since <code>1.2c 2015/11/16</code>
+when the dummy variable was given an empty range (or list) of values,
+rather than producing respectively <code>0</code> and <code>1</code> as
+formerly.</p></li>
</ul>
<h2 id="g-20160319"><code>1.2g (2016/03/19)</code></h2>
-<h3 id="breaking-changes-15">Breaking changes</h3>
-<ul>
-<li><p>inside expressions, list item selector <code>[L][n]</code> counts starting at zero, not at one. This is more coherent with <code>[L][a:b]</code> which was already exactly like in Python since its introduction. A function len(L) replaces earlier <code>[L][0]</code>.</p></li>
-<li><p>former <code>iter</code> keyword now called <code>iterr</code>. Indeed it matched with <code>rrseq</code>, the new <code>iter</code> (which was somehow missing from <code>1.1</code>) is the one matching <code>rseq</code>. Allows to iterate more easily with a “list” variable.</p></li>
-</ul>
-<h3 id="improvements-and-new-features-17">Improvements and new features</h3>
-<ul>
-<li><p>in <strong>xintexpr.sty</strong>: list selectors <code>[L][n]</code> and <code>[L][a:b]</code> are more efficient: the earlier <code>1.1</code> routines did back and forth conversions from comma separated values to braced tokens, the <code>1.2g</code> routines use macros from <strong>xinttools.sty</strong> handling directly the encountered lists of comma separated values.</p></li>
-<li><p>in <strong>xinttools.sty</strong>: slight improvements in the efficiency of the <code>\xintNthElt</code>, <code>\xintKeep</code>, <code>\xintTrim</code> routines and new routines handling directly comma separated values. The latter are not included in the user manual (they are not <code>\long</code>, they don’t make efforts to preserve some braces, do not worry about spaces, all those worries being irrelevant to the use in expressions for list selectors).</p></li>
-<li><p>a slight speed improvement to <code>\xintFloatSqrt</code> in its quest of correct rounding.</p></li>
-<li><p>float multiplication and division handle more swiftly operands (non-fractional) with few digits, when the float precision is large.</p></li>
-<li><p>the syntax of expressions is described in a devoted chapter of the documentation; an example shows how to implement (expandably) the Brent-Salamin algorithm for computation of Pi using <code>iter</code> in a float expression.</p></li>
-</ul>
-<h2 id="f-20160312"><code>1.2f (2016/03/12)</code></h2>
<h3 id="breaking-changes-16">Breaking changes</h3>
<ul>
-<li>no more <code>\xintFac</code> macro but <code>\xintiFac/\xintiiFac/\xintFloatFac</code>.</li>
+<li><p>inside expressions, list item selector <code>[L][n]</code> counts
+starting at zero, not at one. This is more coherent with
+<code>[L][a:b]</code> which was already exactly like in Python since its
+introduction. A function len(L) replaces earlier
+<code>[L][0]</code>.</p></li>
+<li><p>former <code>iter</code> keyword now called <code>iterr</code>.
+Indeed it matched with <code>rrseq</code>, the new <code>iter</code>
+(which was somehow missing from <code>1.1</code>) is the one matching
+<code>rseq</code>. Allows to iterate more easily with a “list”
+variable.</p></li>
+</ul>
+<h3 id="improvements-and-new-features-17">Improvements and new
+features</h3>
+<ul>
+<li><p>in <strong>xintexpr.sty</strong>: list selectors
+<code>[L][n]</code> and <code>[L][a:b]</code> are more efficient: the
+earlier <code>1.1</code> routines did back and forth conversions from
+comma separated values to braced tokens, the <code>1.2g</code> routines
+use macros from <strong>xinttools.sty</strong> handling directly the
+encountered lists of comma separated values.</p></li>
+<li><p>in <strong>xinttools.sty</strong>: slight improvements in the
+efficiency of the <code>\xintNthElt</code>, <code>\xintKeep</code>,
+<code>\xintTrim</code> routines and new routines handling directly comma
+separated values. The latter are not included in the user manual (they
+are not <code>\long</code>, they don’t make efforts to preserve some
+braces, do not worry about spaces, all those worries being irrelevant to
+the use in expressions for list selectors).</p></li>
+<li><p>a slight speed improvement to <code>\xintFloatSqrt</code> in its
+quest of correct rounding.</p></li>
+<li><p>float multiplication and division handle more swiftly operands
+(non-fractional) with few digits, when the float precision is
+large.</p></li>
+<li><p>the syntax of expressions is described in a devoted chapter of
+the documentation; an example shows how to implement (expandably) the
+Brent-Salamin algorithm for computation of Pi using <code>iter</code> in
+a float expression.</p></li>
</ul>
-<h3 id="improvements-and-new-features-18">Improvements and new features</h3>
+<h2 id="f-20160312"><code>1.2f (2016/03/12)</code></h2>
+<h3 id="breaking-changes-17">Breaking changes</h3>
<ul>
-<li><p>functions <code>binomial</code>, <code>pfactorial</code> and <code>factorial</code> in both integer and float versions.</p></li>
-<li><p>macros <code>\xintiiBinomial</code>, <code>\xintiiPFactorial</code> (<strong>xint.sty</strong>) and <code>\xintFloatBinomial</code>, <code>\xintFloatPFactorial</code> (<strong>xintfrac.sty</strong>). Improvements to <code>\xintFloatFac</code>.</p></li>
-<li><p>faster implementation and increased accuracy of float power macros. Half-integer exponents are now accepted inside float expressions.</p></li>
-<li><p>faster implementation of both integral and float square root macros.</p></li>
-<li><p>the float square root achieves <em>correct</em> (aka <em>exact</em>) rounding in arbitrary precision.</p></li>
-<li><p>modified behaviour for the <code>\xintPFloat</code> macro, used by <code>\xintthefloatexpr</code> to prettify its output. It now opts for decimal notation if and only if scientific notation would use an exponent between <code>-5</code> and <code>5</code> inclusive. The zero value is printed <code>0.</code> with a dot.</p></li>
-<li><p>the float macros for addition, subtraction, multiplication, division now first round their two operands to P, not P+2, significant places before doing the actual computation (P being the target precision). The same applies to the power macros and to the square root macro.</p></li>
-<li><p>the documentation offers a more precise (and accurate) discussion of floating point issues.</p></li>
-<li><p>various under-the-hood code improvements; the floatexpr operations are chained in a faster way, from skipping some unneeded parsing on results of earlier computations. The absence of a real inner data structure for floats (incorporating their precisions, for one) is however still a bit hair raising: currently the lengths of the mantissas of the operands are computed again by each float macro or expression operation.</p></li>
-<li><p>(TeXperts only) the macros defined (internally) from <code>\xintdeffunc</code> et al. constructs do not incorporate an initial <code>\romannumeral</code> anymore.</p></li>
-<li><p>renewed desperate efforts at improving the documentation by random shuffling of sections and well thought additions; cuts were considered and even performed.</p></li>
+<li>no more <code>\xintFac</code> macro but
+<code>\xintiFac/\xintiiFac/\xintFloatFac</code>.</li>
+</ul>
+<h3 id="improvements-and-new-features-18">Improvements and new
+features</h3>
+<ul>
+<li><p>functions <code>binomial</code>, <code>pfactorial</code> and
+<code>factorial</code> in both integer and float versions.</p></li>
+<li><p>macros <code>\xintiiBinomial</code>,
+<code>\xintiiPFactorial</code> (<strong>xint.sty</strong>) and
+<code>\xintFloatBinomial</code>, <code>\xintFloatPFactorial</code>
+(<strong>xintfrac.sty</strong>). Improvements to
+<code>\xintFloatFac</code>.</p></li>
+<li><p>faster implementation and increased accuracy of float power
+macros. Half-integer exponents are now accepted inside float
+expressions.</p></li>
+<li><p>faster implementation of both integral and float square root
+macros.</p></li>
+<li><p>the float square root achieves <em>correct</em> (aka
+<em>exact</em>) rounding in arbitrary precision.</p></li>
+<li><p>modified behaviour for the <code>\xintPFloat</code> macro, used
+by <code>\xintthefloatexpr</code> to prettify its output. It now opts
+for decimal notation if and only if scientific notation would use an
+exponent between <code>-5</code> and <code>5</code> inclusive. The zero
+value is printed <code>0.</code> with a dot.</p></li>
+<li><p>the float macros for addition, subtraction, multiplication,
+division now first round their two operands to P, not P+2, significant
+places before doing the actual computation (P being the target
+precision). The same applies to the power macros and to the square root
+macro.</p></li>
+<li><p>the documentation offers a more precise (and accurate) discussion
+of floating point issues.</p></li>
+<li><p>various under-the-hood code improvements; the floatexpr
+operations are chained in a faster way, from skipping some unneeded
+parsing on results of earlier computations. The absence of a real inner
+data structure for floats (incorporating their precisions, for one) is
+however still a bit hair raising: currently the lengths of the mantissas
+of the operands are computed again by each float macro or expression
+operation.</p></li>
+<li><p>(TeXperts only) the macros defined (internally) from
+<code>\xintdeffunc</code> et al. constructs do not incorporate an
+initial <code>\romannumeral</code> anymore.</p></li>
+<li><p>renewed desperate efforts at improving the documentation by
+random shuffling of sections and well thought additions; cuts were
+considered and even performed.</p></li>
</ul>
-<h3 id="bug-fixes-24">Bug fixes</h3>
+<h3 id="bug-fixes-25">Bug fixes</h3>
<ul>
-<li><p>squaring macro <code>\xintSqr</code> from <strong>xintfrac.sty</strong> was broken due to a misspelled sub-macro name. Dates back to <code>1.1</code> release of <code>2014/10/28</code> <code>:-((</code>.</p></li>
-<li><p><code>1.2c</code>’s fix to the subtraction bug from <code>1.2</code> introduced another bug, which in some cases could create leading zeroes in the output, or even worse. This could invalidate other routines using subtractions, like <code>\xintiiSquareRoot</code>.</p></li>
-<li><p>the comparison operators were not recognized by <code>\xintNewIIExpr</code> and <code>\xintdefiifunc</code> constructs.</p></li>
+<li><p>squaring macro <code>\xintSqr</code> from
+<strong>xintfrac.sty</strong> was broken due to a misspelled sub-macro
+name. Dates back to <code>1.1</code> release of <code>2014/10/28</code>
+<code>:-((</code>.</p></li>
+<li><p><code>1.2c</code>’s fix to the subtraction bug from
+<code>1.2</code> introduced another bug, which in some cases could
+create leading zeroes in the output, or even worse. This could
+invalidate other routines using subtractions, like
+<code>\xintiiSquareRoot</code>.</p></li>
+<li><p>the comparison operators were not recognized by
+<code>\xintNewIIExpr</code> and <code>\xintdefiifunc</code>
+constructs.</p></li>
</ul>
<h2 id="e-20151122"><code>1.2e (2015/11/22)</code></h2>
-<h3 id="improvements-and-new-features-19">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-19">Improvements and new
+features</h3>
<ul>
<li><p>macro <code>\xintunassignvar</code>.</p></li>
-<li><p>slight modifications of the logged messages in case of <code>\xintverbosetrue</code>.</p></li>
-<li><p>a space in <code>\xintdeffunc f(x)&lt;space&gt;:= expression ;</code> is now accepted.</p></li>
-<li><p>documentation enhancements: the <em>Quick Sort</em> section with its included code samples has been entirely re-written; the <em>Commands of the xintexpr package</em> section has been extended and reviewed entirely.</p></li>
+<li><p>slight modifications of the logged messages in case of
+<code>\xintverbosetrue</code>.</p></li>
+<li><p>a space in
+<code>\xintdeffunc f(x)&lt;space&gt;:= expression ;</code> is now
+accepted.</p></li>
+<li><p>documentation enhancements: the <em>Quick Sort</em> section with
+its included code samples has been entirely re-written; the <em>Commands
+of the xintexpr package</em> section has been extended and reviewed
+entirely.</p></li>
</ul>
-<h3 id="bug-fixes-25">Bug fixes</h3>
+<h3 id="bug-fixes-26">Bug fixes</h3>
<ul>
-<li><p>in <strong>xintfrac</strong>: the <code>\xintFloatFac</code> from release <code>1.2</code> parsed its argument only through <code>\numexpr</code> but it should have used <code>\xintNum</code>.</p></li>
-<li><p>in <strong>xintexpr</strong>: release <code>1.2d</code> had broken the recognition of sub-expressions immediately after variable names (with tacit multiplication).</p></li>
-<li><p>in <strong>xintexpr</strong>: contrarily to what <code>1.2d</code> documentation said, tacit multiplication was not yet always done with enhanced precedence. Now yes.</p></li>
+<li><p>in <strong>xintfrac</strong>: the <code>\xintFloatFac</code> from
+release <code>1.2</code> parsed its argument only through
+<code>\numexpr</code> but it should have used
+<code>\xintNum</code>.</p></li>
+<li><p>in <strong>xintexpr</strong>: release <code>1.2d</code> had
+broken the recognition of sub-expressions immediately after variable
+names (with tacit multiplication).</p></li>
+<li><p>in <strong>xintexpr</strong>: contrarily to what
+<code>1.2d</code> documentation said, tacit multiplication was not yet
+always done with enhanced precedence. Now yes.</p></li>
</ul>
<h2 id="d-20151118"><code>1.2d (2015/11/18)</code></h2>
-<h3 id="improvements-and-new-features-20">Improvements and new features</h3>
-<ul>
-<li><p>the function definitions done by <code>\xintdeffunc</code> et al., as well as the macro declarations by <code>\xintNewExpr</code> et al. now have only local scope.</p></li>
-<li><p>tacit multiplication applies to more cases, for example (x+y)z, and always ties more than standard * infix operator, e.g. x/2y is like x/(2*y).</p></li>
-<li><p>some documentation enhancements, particularly in the chapter on xintexpr.sty, and also in the code source comments.</p></li>
+<h3 id="improvements-and-new-features-20">Improvements and new
+features</h3>
+<ul>
+<li><p>the function definitions done by <code>\xintdeffunc</code> et
+al., as well as the macro declarations by <code>\xintNewExpr</code> et
+al. now have only local scope.</p></li>
+<li><p>tacit multiplication applies to more cases, for example (x+y)z,
+and always ties more than standard * infix operator, e.g. x/2y is like
+x/(2*y).</p></li>
+<li><p>some documentation enhancements, particularly in the chapter on
+xintexpr.sty, and also in the code source comments.</p></li>
</ul>
-<h3 id="bug-fixes-26">Bug fixes</h3>
+<h3 id="bug-fixes-27">Bug fixes</h3>
<ul>
-<li>in <strong>xintcore</strong>: release <code>1.2c</code> had inadvertently broken the <code>\xintiiDivRound</code> macro.</li>
+<li>in <strong>xintcore</strong>: release <code>1.2c</code> had
+inadvertently broken the <code>\xintiiDivRound</code> macro.</li>
</ul>
<h2 id="c-20151116"><code>1.2c (2015/11/16)</code></h2>
-<h3 id="improvements-and-new-features-21">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-21">Improvements and new
+features</h3>
<ul>
-<li><p>macros <code>\xintdeffunc</code>, <code>\xintdefiifunc</code>, <code>\xintdeffloatfunc</code> and boolean <code>\ifxintverbose</code>.</p></li>
-<li><p>on-going code improvements and documentation enhancements, but stopped in order to issue this bugfix release.</p></li>
+<li><p>macros <code>\xintdeffunc</code>, <code>\xintdefiifunc</code>,
+<code>\xintdeffloatfunc</code> and boolean
+<code>\ifxintverbose</code>.</p></li>
+<li><p>on-going code improvements and documentation enhancements, but
+stopped in order to issue this bugfix release.</p></li>
</ul>
-<h3 id="bug-fixes-27">Bug fixes</h3>
+<h3 id="bug-fixes-28">Bug fixes</h3>
<ul>
-<li>in <strong>xintcore</strong>: recent release <code>1.2</code> introduced a bug in the subtraction (happened when 00000001 was found under certain circumstances at certain mod 8 locations).</li>
+<li>in <strong>xintcore</strong>: recent release <code>1.2</code>
+introduced a bug in the subtraction (happened when 00000001 was found
+under certain circumstances at certain mod 8 locations).</li>
</ul>
<h2 id="b-20151029"><code>1.2b (2015/10/29)</code></h2>
-<h3 id="bug-fixes-28">Bug fixes</h3>
+<h3 id="bug-fixes-29">Bug fixes</h3>
<ul>
-<li>in <strong>xintcore</strong>: recent release <code>1.2</code> introduced a bug in the division macros, causing a crash when the divisor started with 99999999 (it was attempted to use with 1+99999999 a subroutine expecting only 8-digits numbers).</li>
+<li>in <strong>xintcore</strong>: recent release <code>1.2</code>
+introduced a bug in the division macros, causing a crash when the
+divisor started with 99999999 (it was attempted to use with 1+99999999 a
+subroutine expecting only 8-digits numbers).</li>
</ul>
<h2 id="a-20151019"><code>1.2a (2015/10/19)</code></h2>
-<h3 id="improvements-and-new-features-22">Improvements and new features</h3>
-<ul>
-<li><p>added <code>\xintKeepUnbraced</code>, <code>\xintTrimUnbraced</code> (<strong>xinttools</strong>) and fixed documentation of <code>\xintKeep</code> and <code>\xintTrim</code> regarding brace stripping.</p></li>
-<li><p>added <code>\xintiiMaxof/\xintiiMinof</code> (<strong>xint</strong>).</p></li>
-<li><p>TeX hackers only: replaced all code uses of <code>\romannumeral-`0</code> by the quicker <code>\romannumeral`&amp;&amp;@</code> (<code>^</code> being used as letter, had to find another character usable with catcode 7).</p></li>
+<h3 id="improvements-and-new-features-22">Improvements and new
+features</h3>
+<ul>
+<li><p>added <code>\xintKeepUnbraced</code>,
+<code>\xintTrimUnbraced</code> (<strong>xinttools</strong>) and fixed
+documentation of <code>\xintKeep</code> and <code>\xintTrim</code>
+regarding brace stripping.</p></li>
+<li><p>added <code>\xintiiMaxof/\xintiiMinof</code>
+(<strong>xint</strong>).</p></li>
+<li><p>TeX hackers only: replaced all code uses of
+<code>\romannumeral-`0</code> by the quicker
+<code>\romannumeral`&amp;&amp;@</code> (<code>^</code> being used as
+letter, had to find another character usable with catcode 7).</p></li>
</ul>
-<h3 id="bug-fixes-29">Bug fixes</h3>
+<h3 id="bug-fixes-30">Bug fixes</h3>
<ul>
-<li>in <strong>xintexpr</strong>: recent release <code>1.2</code> introduced a bad bug in the parsing of decimal numbers and as a result <code>\xinttheexpr 0.01\relax</code> expanded to <code>0</code> ! (sigh…)</li>
+<li>in <strong>xintexpr</strong>: recent release <code>1.2</code>
+introduced a bad bug in the parsing of decimal numbers and as a result
+<code>\xinttheexpr 0.01\relax</code> expanded to <code>0</code> !
+(sigh…)</li>
</ul>
<h2 id="section-2"><code>1.2 (2015/10/10)</code></h2>
<h3 id="removed-3">Removed</h3>
<ul>
-<li>the macros <code>\xintAdd</code>, <code>\xintSub</code>, <code>\xintMul</code>, <code>\xintMax</code>, <code>\xintMin</code>, <code>\xintMaxof</code>, <code>\xintMinof</code> are removed from package <strong>xint</strong>, and only exist in the versions from <strong>xintfrac</strong>. With only <strong>xintcore</strong> or <strong>xint</strong> loaded, one <em>must</em> use <code>\xintiiAdd</code>, <code>\xintiiSub</code>, …, or <code>\xintiAdd</code>, <code>\xintiSub</code>, etc…</li>
-</ul>
-<h3 id="improvements-and-new-features-23">Improvements and new features</h3>
-<ul>
-<li><p>the basic arithmetic implemented in <strong>xintcore</strong> has been entirely rewritten. The mathematics remains the elementary school one, but the <code>TeX</code> implementation achieves higher speed (except, regarding addition/subtraction, for numbers up to about thirty digits), the gains becoming quite significant for numbers with hundreds of digits.</p></li>
-<li><p>the inputs must have less than 19959 digits. But computations with thousands of digits take time.</p></li>
-<li><p>a previously standing limitation of <code>\xintexpr</code>, <code>\xintiiexpr</code>, and of <code>\xintfloatexpr</code> to numbers of less than 5000 digits has been lifted.</p></li>
-<li><p>a <em>qint</em> function is provided to help the parser gather huge integers in one-go, as an exception to its normal mode of operation which expands token by token.</p></li>
-<li><p><code>\xintFloatFac</code> macro for computing the factorials of integers as floating point numbers to a given precision. The <code>!</code> postfix operator inside <code>\xintfloatexpr</code> maps to this new macro rather than to the exact factorial as used by <code>\xintexpr</code> and <code>\xintiiexpr</code>.</p></li>
-<li><p>there is more flexibility in the parsing done by the macros from <strong>xintfrac</strong> on fractional input: the decimal parts of both the numerator and the denominator may arise from a separate expansion via <code>\romannumeral-`0</code>. Also the strict <code>A/B[N]</code> format is a bit relaxed: <code>N</code> may be anything understood by <code>\numexpr</code> (it could even be empty but that possibility has been removed by later <code>1.2f</code> release.)</p></li>
-<li><p>on the other hand an isolated dot <code>.</code> is not legal syntax anymore inside the expression parsers: there must be digits either before or after. It remains legal input for the macros of <strong>xintfrac</strong>.</p></li>
-<li><p>added <code>\ht</code>, <code>\dp</code>, <code>\wd</code>, <code>\fontcharht</code>, etc… to the tokens recognized by the parsers and expanded by <code>\number</code>.</p></li>
-<li><p>an obscure bug in package <strong>xintkernel</strong> has been fixed, regarding the sanitization of catcodes: under certain circumstances (which could not occur in a normal <code>LaTeX</code> context), unusual catcodes could end up being propagated to the external world.</p></li>
-<li><p>an effort at randomly shuffling around various pieces of the documentation has been done.</p></li>
+<li>the macros <code>\xintAdd</code>, <code>\xintSub</code>,
+<code>\xintMul</code>, <code>\xintMax</code>, <code>\xintMin</code>,
+<code>\xintMaxof</code>, <code>\xintMinof</code> are removed from
+package <strong>xint</strong>, and only exist in the versions from
+<strong>xintfrac</strong>. With only <strong>xintcore</strong> or
+<strong>xint</strong> loaded, one <em>must</em> use
+<code>\xintiiAdd</code>, <code>\xintiiSub</code>, …, or
+<code>\xintiAdd</code>, <code>\xintiSub</code>, etc…</li>
+</ul>
+<h3 id="improvements-and-new-features-23">Improvements and new
+features</h3>
+<ul>
+<li><p>the basic arithmetic implemented in <strong>xintcore</strong> has
+been entirely rewritten. The mathematics remains the elementary school
+one, but the <code>TeX</code> implementation achieves higher speed
+(except, regarding addition/subtraction, for numbers up to about thirty
+digits), the gains becoming quite significant for numbers with hundreds
+of digits.</p></li>
+<li><p>the inputs must have less than 19959 digits. But computations
+with thousands of digits take time.</p></li>
+<li><p>a previously standing limitation of <code>\xintexpr</code>,
+<code>\xintiiexpr</code>, and of <code>\xintfloatexpr</code> to numbers
+of less than 5000 digits has been lifted.</p></li>
+<li><p>a <em>qint</em> function is provided to help the parser gather
+huge integers in one-go, as an exception to its normal mode of operation
+which expands token by token.</p></li>
+<li><p><code>\xintFloatFac</code> macro for computing the factorials of
+integers as floating point numbers to a given precision. The
+<code>!</code> postfix operator inside <code>\xintfloatexpr</code> maps
+to this new macro rather than to the exact factorial as used by
+<code>\xintexpr</code> and <code>\xintiiexpr</code>.</p></li>
+<li><p>there is more flexibility in the parsing done by the macros from
+<strong>xintfrac</strong> on fractional input: the decimal parts of both
+the numerator and the denominator may arise from a separate expansion
+via <code>\romannumeral-`0</code>. Also the strict <code>A/B[N]</code>
+format is a bit relaxed: <code>N</code> may be anything understood by
+<code>\numexpr</code> (it could even be empty but that possibility has
+been removed by later <code>1.2f</code> release.)</p></li>
+<li><p>on the other hand an isolated dot <code>.</code> is not legal
+syntax anymore inside the expression parsers: there must be digits
+either before or after. It remains legal input for the macros of
+<strong>xintfrac</strong>.</p></li>
+<li><p>added <code>\ht</code>, <code>\dp</code>, <code>\wd</code>,
+<code>\fontcharht</code>, etc… to the tokens recognized by the parsers
+and expanded by <code>\number</code>.</p></li>
+<li><p>an obscure bug in package <strong>xintkernel</strong> has been
+fixed, regarding the sanitization of catcodes: under certain
+circumstances (which could not occur in a normal <code>LaTeX</code>
+context), unusual catcodes could end up being propagated to the external
+world.</p></li>
+<li><p>an effort at randomly shuffling around various pieces of the
+documentation has been done.</p></li>
</ul>
<h2 id="c-20150912"><code>1.1c (2015/09/12)</code></h2>
<ul>
-<li><p>bugfix regarding macro <code>\xintAssign</code> from <strong>xinttools</strong> which did not behave correctly in some circumstances (if there was a space before <code>\to</code>, in particular).</p></li>
-<li><p>very minor code improvements, and correction of some issues regarding the source code formatting in <code>sourcexint.pdf</code>, and minor issues in <code>Makefile.mk</code>.</p></li>
+<li><p>bugfix regarding macro <code>\xintAssign</code> from
+<strong>xinttools</strong> which did not behave correctly in some
+circumstances (if there was a space before <code>\to</code>, in
+particular).</p></li>
+<li><p>very minor code improvements, and correction of some issues
+regarding the source code formatting in <code>sourcexint.pdf</code>, and
+minor issues in <code>Makefile.mk</code>.</p></li>
</ul>
<h2 id="b-20150831"><code>1.1b (2015/08/31)</code></h2>
<ul>
-<li><p>bugfix: some macros needed by the integer division routine from <strong>xintcore</strong> had been left in <strong>xint.sty</strong> since release <code>1.1</code>. This for example broke the <code>\xintGCD</code> from <strong>xintgcd</strong> if package <strong>xint</strong> was not loaded.</p></li>
-<li><p>Slight enhancements to the documentation, particularly in the <code>Read this first</code> section.</p></li>
+<li><p>bugfix: some macros needed by the integer division routine from
+<strong>xintcore</strong> had been left in <strong>xint.sty</strong>
+since release <code>1.1</code>. This for example broke the
+<code>\xintGCD</code> from <strong>xintgcd</strong> if package
+<strong>xint</strong> was not loaded.</p></li>
+<li><p>Slight enhancements to the documentation, particularly in the
+<code>Read this first</code> section.</p></li>
</ul>
<h2 id="a-20141107"><code>1.1a (2014/11/07)</code></h2>
<ul>
-<li><p>fixed a bug which prevented <code>\xintNewExpr</code> from producing correctly working macros from a comma separated replacement text.</p></li>
-<li><p><code>\xintiiSqrtR</code> for rounded integer square root; former <code>\xintiiSqrt</code> already produced truncated integer square root; corresponding function <code>sqrtr</code> added to <code>\xintiiexpr..\relax</code> syntax.</p></li>
-<li><p>use of straight quotes in the documentation for better legibility.</p></li>
-<li><p>added <code>\xintiiIsOne</code>, <code>\xintiiifOne</code>, <code>\xintiiifCmp</code>, <code>\xintiiifEq</code>, <code>\xintiiifGt</code>, <code>\xintiiifLt</code>, <code>\xintiiifOdd</code>, <code>\xintiiCmp</code>, <code>\xintiiEq</code>, <code>\xintiiGt</code>, <code>\xintiiLt</code>, <code>\xintiiLtorEq</code>, <code>\xintiiGtorEq</code>, <code>\xintiiNeq</code>, mainly for efficiency of <code>\xintiiexpr</code>.</p></li>
-<li><p>for the same reason, added <code>\xintiiGCD</code> and <code>\xintiiLCM</code>.</p></li>
-<li><p>added the previously mentioned <code>ii</code> macros, and some others from <code>1.1</code>, to the user manual. But their main usage is internal to <code>\xintiiexpr</code>, to skip unnecessary overheads.</p></li>
-<li><p>various typographical fixes throughout the documentation, and a bit of clean up of the code comments. Improved <code>\Factors</code> example of nested <code>subs</code>, <code>rseq</code>, <code>iter</code> in <code>\xintiiexpr</code>.</p></li>
+<li><p>fixed a bug which prevented <code>\xintNewExpr</code> from
+producing correctly working macros from a comma separated replacement
+text.</p></li>
+<li><p><code>\xintiiSqrtR</code> for rounded integer square root; former
+<code>\xintiiSqrt</code> already produced truncated integer square root;
+corresponding function <code>sqrtr</code> added to
+<code>\xintiiexpr..\relax</code> syntax.</p></li>
+<li><p>use of straight quotes in the documentation for better
+legibility.</p></li>
+<li><p>added <code>\xintiiIsOne</code>, <code>\xintiiifOne</code>,
+<code>\xintiiifCmp</code>, <code>\xintiiifEq</code>,
+<code>\xintiiifGt</code>, <code>\xintiiifLt</code>,
+<code>\xintiiifOdd</code>, <code>\xintiiCmp</code>,
+<code>\xintiiEq</code>, <code>\xintiiGt</code>, <code>\xintiiLt</code>,
+<code>\xintiiLtorEq</code>, <code>\xintiiGtorEq</code>,
+<code>\xintiiNeq</code>, mainly for efficiency of
+<code>\xintiiexpr</code>.</p></li>
+<li><p>for the same reason, added <code>\xintiiGCD</code> and
+<code>\xintiiLCM</code>.</p></li>
+<li><p>added the previously mentioned <code>ii</code> macros, and some
+others from <code>1.1</code>, to the user manual. But their main usage
+is internal to <code>\xintiiexpr</code>, to skip unnecessary
+overheads.</p></li>
+<li><p>various typographical fixes throughout the documentation, and a
+bit of clean up of the code comments. Improved <code>\Factors</code>
+example of nested <code>subs</code>, <code>rseq</code>,
+<code>iter</code> in <code>\xintiiexpr</code>.</p></li>
</ul>
<h2 id="section-3"><code>1.1 (2014/10/28)</code></h2>
-<h3 id="breaking-changes-17">Breaking changes</h3>
-<ul>
-<li><p>in <code>\xintiiexpr</code>, <code>/</code> does <em>rounded</em> division, rather than the Euclidean division (for positive arguments, this is truncated division). The <code>//</code> operator does truncated division,</p></li>
-<li><p>the <code>:</code> operator for three-way branching is gone, replaced with <code>??</code>,</p></li>
-<li><p><code>1e(3+5)</code> is now illegal. The number parser identifies <code>e</code> and <code>E</code> in the same way it does for the decimal mark, earlier versions treated <code>e</code> as <code>E</code> rather as infix operators of highest precedence,</p></li>
-<li><p>the <code>add</code> and <code>mul</code> have a new syntax, old syntax is with <code>`+`</code> and <code>`*`</code> (left quotes mandatory), <code>sum</code> and <code>prd</code> are gone,</p></li>
-<li><p>no more special treatment for encountered brace pairs <code>{..}</code> by the number scanner, <code>a/b[N]</code> notation can be used without use of braces (the <code>N</code> will end up as is in a <code>\numexpr</code>, it is not parsed by the <code>\xintexpr</code>-ession scanner),</p></li>
-<li><p>in earlier releases, place holders for <code>\xintNewExpr</code> could either be denoted <code>#1</code>, <code>#2</code>, … or also <code>$1</code>, <code>$2</code>, … Only the usual <code>#</code> form is now accepted and the special cases previously treated via the second form are now managed via a <code>protect(...)</code> function.</p></li>
-<li><p><strong>xintfrac</strong>: <code>\xintFloor</code> and <code>\xintCeil</code> add a trailing <code>/1[0]</code> to their (integer) output. New <code>\xintiFloor</code> and <code>\xintiCeil</code> do not.</p></li>
+<h3 id="breaking-changes-18">Breaking changes</h3>
+<ul>
+<li><p>in <code>\xintiiexpr</code>, <code>/</code> does <em>rounded</em>
+division, rather than the Euclidean division (for positive arguments,
+this is truncated division). The <code>//</code> operator does truncated
+division,</p></li>
+<li><p>the <code>:</code> operator for three-way branching is gone,
+replaced with <code>??</code>,</p></li>
+<li><p><code>1e(3+5)</code> is now illegal. The number parser identifies
+<code>e</code> and <code>E</code> in the same way it does for the
+decimal mark, earlier versions treated <code>e</code> as <code>E</code>
+rather as infix operators of highest precedence,</p></li>
+<li><p>the <code>add</code> and <code>mul</code> have a new syntax, old
+syntax is with <code>`+`</code> and <code>`*`</code> (left quotes
+mandatory), <code>sum</code> and <code>prd</code> are gone,</p></li>
+<li><p>no more special treatment for encountered brace pairs
+<code>{..}</code> by the number scanner, <code>a/b[N]</code> notation
+can be used without use of braces (the <code>N</code> will end up as is
+in a <code>\numexpr</code>, it is not parsed by the
+<code>\xintexpr</code>-ession scanner),</p></li>
+<li><p>in earlier releases, place holders for <code>\xintNewExpr</code>
+could either be denoted <code>#1</code>, <code>#2</code>, … or also
+<code>$1</code>, <code>$2</code>, … Only the usual <code>#</code> form
+is now accepted and the special cases previously treated via the second
+form are now managed via a <code>protect(...)</code> function.</p></li>
+<li><p><strong>xintfrac</strong>: <code>\xintFloor</code> and
+<code>\xintCeil</code> add a trailing <code>/1[0]</code> to their
+(integer) output. New <code>\xintiFloor</code> and
+<code>\xintiCeil</code> do not.</p></li>
</ul>
<h3 id="removed-4">Removed</h3>
<ul>
-<li><code>\xintnumexpr</code>, <code>\xintthenumexpr</code>, <code>\xintNewNumExpr</code>: use <code>\xintiexpr</code>, <code>\xinttheiexpr</code>, <code>\xintNewIExpr</code>.</li>
+<li><code>\xintnumexpr</code>, <code>\xintthenumexpr</code>,
+<code>\xintNewNumExpr</code>: use <code>\xintiexpr</code>,
+<code>\xinttheiexpr</code>, <code>\xintNewIExpr</code>.</li>
</ul>
<h3 id="deprecated-2">Deprecated</h3>
<ul>
-<li><p><code>\xintDivision</code>, <code>\xintQuo</code>, <code>\xintRem</code>: use <code>\xintiDivision</code>, <code>\xintiQuo</code>, <code>\xintiRem</code>.</p></li>
-<li><p><code>\xintMax</code>, <code>\xintMin</code>, <code>\xintAdd</code>, <code>\xintSub</code>, <code>\xintMul</code> (<strong>xint</strong>): their usage without <strong>xintfrac</strong> is deprecated; use <code>\xintiMax</code>, <code>\xintiMin</code>, <code>\xintiAdd</code>, <code>\xintiSub</code>, <code>\xintiMul</code>.</p></li>
-<li><p>the <code>&amp;</code> and <code>|</code> as Boolean operators in <code>xintexpr</code>-essions are deprecated in favour of <code>&amp;&amp;</code> and <code>||</code>. The single letter operators might be assigned some other meaning in some later release (bitwise operations, perhaps). Do not use them.</p></li>
-</ul>
-<h3 id="improvements-and-new-features-24">Improvements and new features</h3>
-<ul>
-<li><p>new package <strong>xintcore</strong> has been split off <strong>xint</strong>. It contains the core arithmetic macros (it is loaded by LaTeX package <strong>bnumexpr</strong>),</p></li>
-<li><p>neither <strong>xint</strong> nor <strong>xintfrac</strong> load <strong>xinttools</strong>. Only <strong>xintexpr</strong> does,</p></li>
-<li><p>whenever some portion of code has been revised, often use has been made of the <code>\xint_dothis</code> and <code>\xint_orthat</code> pair of macros for expandably branching,</p></li>
-<li><p>these tiny helpful macros, and a few others are in package <strong>xintkernel</strong> which contains also the catcode and loading order management code, initially inspired by code found in Heiko Oberdiek’s packages,</p></li>
-<li><p>the source code, which was suppressed from <code>xint.pdf</code> in release <code>1.09n</code>, is now compiled into a separate file <code>sourcexint.pdf</code>,</p></li>
-<li><p>faster handling by <code>\xintAdd</code>, <code>\xintSub</code>, <code>\xintMul</code>, … of the case where one of the arguments is zero,</p></li>
-<li><p>the <code>\xintAdd</code> and <code>\xintSub</code> macros from package <strong>xintfrac</strong> check if one of the denominators is a multiple of the other, and only if this is not the case do they multiply the denominators. But systematic reduction would be too costly,</p></li>
-<li><p>this naturally will be also the case for the <code>+</code> and <code>-</code> operations in <code>\xintexpr</code>,</p></li>
-<li><p><strong>xint</strong> added <code>\xintiiDivRound</code>, <code>\xintiiDivTrunc</code>, <code>\xintiiMod</code> for rounded and truncated division of big integers (next to <code>\xintiiQuo</code> and <code>\xintiiRem</code>),</p></li>
-<li><p>with <strong>xintfrac</strong> loaded, the <code>\xintNum</code> macro does <code>\xintTTrunc</code> (which is truncation to an integer, same as <code>\xintiTrunc {0}</code>),</p></li>
-<li><p>added <code>\xintMod</code> to <strong>xintfrac</strong> for modulo operation with fractional numbers,</p></li>
-<li><p>added <code>\xintiFloor</code> and <code>\xintiCeil</code> to <strong>xintfrac</strong>,</p></li>
-<li><p><code>\xintiexpr</code>, <code>\xinttheiexpr</code> admit an optional argument within brackets <code>[d]</code>, they round the computation result (or results, if comma separated) to <code>d</code> digits after decimal mark, (the whole computation is done exactly, as in <code>xintexpr</code>),</p></li>
-<li><p><code>\xintfloatexpr</code>, <code>\xintthefloatexpr</code> similarly admit an optional argument which serves to keep only <code>d</code> digits of precision, getting rid of cumulated uncertainties in the last digits (the whole computation is done according to the precision set via <code>\xintDigits</code>),</p></li>
-<li><p><code>\xinttheexpr</code> and <code>\xintthefloatexpr</code> <em>pretty-print</em> if possible, the former removing unit denominator or <code>[0]</code> brackets, the latter avoiding scientific notation if decimal notation is practical,</p></li>
-<li><p>the <code>//</code> does truncated division and <code>/:</code> is the associated modulo,</p></li>
-<li><p>multi-character operators <code>&amp;&amp;</code>, <code>||</code>, <code>==</code>, <code>&lt;=</code>, <code>&gt;=</code>, <code>!=</code>, <code>**</code>,</p></li>
-<li><p>multi-letter infix binary words <code>'and'</code>, <code>'or'</code>, <code>'xor'</code>, <code>'mod'</code> (straight quotes mandatory),</p></li>
+<li><p><code>\xintDivision</code>, <code>\xintQuo</code>,
+<code>\xintRem</code>: use <code>\xintiDivision</code>,
+<code>\xintiQuo</code>, <code>\xintiRem</code>.</p></li>
+<li><p><code>\xintMax</code>, <code>\xintMin</code>,
+<code>\xintAdd</code>, <code>\xintSub</code>, <code>\xintMul</code>
+(<strong>xint</strong>): their usage without <strong>xintfrac</strong>
+is deprecated; use <code>\xintiMax</code>, <code>\xintiMin</code>,
+<code>\xintiAdd</code>, <code>\xintiSub</code>,
+<code>\xintiMul</code>.</p></li>
+<li><p>the <code>&amp;</code> and <code>|</code> as Boolean operators in
+<code>xintexpr</code>-essions are deprecated in favour of
+<code>&amp;&amp;</code> and <code>||</code>. The single letter operators
+might be assigned some other meaning in some later release (bitwise
+operations, perhaps). Do not use them.</p></li>
+</ul>
+<h3 id="improvements-and-new-features-24">Improvements and new
+features</h3>
+<ul>
+<li><p>new package <strong>xintcore</strong> has been split off
+<strong>xint</strong>. It contains the core arithmetic macros (it is
+loaded by LaTeX package <strong>bnumexpr</strong>),</p></li>
+<li><p>neither <strong>xint</strong> nor <strong>xintfrac</strong> load
+<strong>xinttools</strong>. Only <strong>xintexpr</strong>
+does,</p></li>
+<li><p>whenever some portion of code has been revised, often use has
+been made of the <code>\xint_dothis</code> and <code>\xint_orthat</code>
+pair of macros for expandably branching,</p></li>
+<li><p>these tiny helpful macros, and a few others are in package
+<strong>xintkernel</strong> which contains also the catcode and loading
+order management code, initially inspired by code found in Heiko
+Oberdiek’s packages,</p></li>
+<li><p>the source code, which was suppressed from <code>xint.pdf</code>
+in release <code>1.09n</code>, is now compiled into a separate file
+<code>sourcexint.pdf</code>,</p></li>
+<li><p>faster handling by <code>\xintAdd</code>, <code>\xintSub</code>,
+<code>\xintMul</code>, … of the case where one of the arguments is
+zero,</p></li>
+<li><p>the <code>\xintAdd</code> and <code>\xintSub</code> macros from
+package <strong>xintfrac</strong> check if one of the denominators is a
+multiple of the other, and only if this is not the case do they multiply
+the denominators. But systematic reduction would be too costly,</p></li>
+<li><p>this naturally will be also the case for the <code>+</code> and
+<code>-</code> operations in <code>\xintexpr</code>,</p></li>
+<li><p><strong>xint</strong> added <code>\xintiiDivRound</code>,
+<code>\xintiiDivTrunc</code>, <code>\xintiiMod</code> for rounded and
+truncated division of big integers (next to <code>\xintiiQuo</code> and
+<code>\xintiiRem</code>),</p></li>
+<li><p>with <strong>xintfrac</strong> loaded, the <code>\xintNum</code>
+macro does <code>\xintTTrunc</code> (which is truncation to an integer,
+same as <code>\xintiTrunc {0}</code>),</p></li>
+<li><p>added <code>\xintMod</code> to <strong>xintfrac</strong> for
+modulo operation with fractional numbers,</p></li>
+<li><p>added <code>\xintiFloor</code> and <code>\xintiCeil</code> to
+<strong>xintfrac</strong>,</p></li>
+<li><p><code>\xintiexpr</code>, <code>\xinttheiexpr</code> admit an
+optional argument within brackets <code>[d]</code>, they round the
+computation result (or results, if comma separated) to <code>d</code>
+digits after decimal mark, (the whole computation is done exactly, as in
+<code>xintexpr</code>),</p></li>
+<li><p><code>\xintfloatexpr</code>, <code>\xintthefloatexpr</code>
+similarly admit an optional argument which serves to keep only
+<code>d</code> digits of precision, getting rid of cumulated
+uncertainties in the last digits (the whole computation is done
+according to the precision set via <code>\xintDigits</code>),</p></li>
+<li><p><code>\xinttheexpr</code> and <code>\xintthefloatexpr</code>
+<em>pretty-print</em> if possible, the former removing unit denominator
+or <code>[0]</code> brackets, the latter avoiding scientific notation if
+decimal notation is practical,</p></li>
+<li><p>the <code>//</code> does truncated division and <code>/:</code>
+is the associated modulo,</p></li>
+<li><p>multi-character operators <code>&amp;&amp;</code>,
+<code>||</code>, <code>==</code>, <code>&lt;=</code>,
+<code>&gt;=</code>, <code>!=</code>, <code>**</code>,</p></li>
+<li><p>multi-letter infix binary words <code>'and'</code>,
+<code>'or'</code>, <code>'xor'</code>, <code>'mod'</code> (straight
+quotes mandatory),</p></li>
<li><p>functions <code>even</code>, <code>odd</code>,</p></li>
-<li><p><code>\xintdefvar A3:=3.1415;</code> for variable definitions (non expandable, naturally), usable in subsequent expressions; variable names may contain letters, digits, underscores. They should not start with a digit, the <code>@</code> is reserved, and single lowercase and uppercase Latin letters are predefined to work as dummy variables (see next),</p></li>
-<li><p>generation of comma separated lists <code>a..b</code>, <code>a..[d]..b</code>,</p></li>
-<li><p>Python syntax-like list extractors <code>[list][n:]</code>, <code>[list][:n]</code>, <code>[list][a:b]</code> allowing negative indices, but no optional step argument, and <code>[list][n]</code> (<code>n=0</code> for the number of items in the list),</p></li>
-<li><p>functions <code>first</code>, <code>last</code>, <code>reversed</code>,</p></li>
-<li><p>itemwise operations on comma separated lists <code>a*[list]</code>, etc.., possible on both sides <code>a*[list]^b</code>, and obeying the same precedence rules as with numbers,</p></li>
-<li><p><code>add</code> and <code>mul</code> must use a dummy variable: <code>add(x(x+1)(x-1), x=-10..10)</code>,</p></li>
-<li><p>variable substitutions with <code>subs</code>: <code>subs(subs(add(x^2+y^2,x=1..y),y=t),t=20)</code>,</p></li>
-<li><p>sequence generation using <code>seq</code> with a dummy variable: <code>seq(x^3, x=-10..10)</code>,</p></li>
-<li><p>simple recursive lists with <code>rseq</code>, with <code>@</code> given the last value, <code>rseq(1;2@+1,i=1..10)</code>,</p></li>
-<li><p>higher recursion with <code>rrseq</code>, <code>@1</code>, <code>@2</code>, <code>@3</code>, <code>@4</code>, and <code>@@(n)</code> for earlier values, up to <code>n=K</code> where <code>K</code> is the number of terms of the initial stretch <code>rrseq(0,1;@1+@2,i=2..100)</code>,</p></li>
-<li><p>iteration with <code>iter</code> which is like <code>rrseq</code> but outputs only the last <code>K</code> terms, where <code>K</code> was the number of initial terms,</p></li>
-<li><p>inside <code>seq</code>, <code>rseq</code>, <code>rrseq</code>, <code>iter</code>, possibility to use <code>omit</code>, <code>abort</code> and <code>break</code> to control termination,</p></li>
-<li><p><code>n++</code> potentially infinite index generation for <code>seq</code>, <code>rseq</code>, <code>rrseq</code>, and <code>iter</code>, it is advised to use <code>abort</code> or <code>break(..)</code> at some point,</p></li>
-<li><p>the <code>add</code>, <code>mul</code>, <code>seq</code>, … are nestable,</p></li>
-<li><p><code>\xintthecoords</code> converts a comma separated list of an even number of items to the format expected by the <code>TikZ</code> <code>coordinates</code> syntax,</p></li>
-<li><p>completely new version <code>\xintNewExpr</code>, <code>protect</code> function to handle external macros. The dollar sign <code>$</code> for place holders is not accepted anymore, only the standard macro parameter <code>#</code>. Not all constructs are compatible with <code>\xintNewExpr</code>.</p></li>
-</ul>
-<h3 id="bug-fixes-30">Bug fixes</h3>
-<ul>
-<li><p><code>\xintZapFirstSpaces</code> hence also <code>\xintZapSpaces</code> from package <strong>xinttools</strong> were buggy when used with an argument either empty or containing only space tokens.</p></li>
-<li><p><code>\xintiiexpr</code> did not strip leading zeroes, hence <code>\xinttheiiexpr 001+1\relax</code> did not obtain the expected result …</p></li>
-<li><p><code>\xinttheexpr \xintiexpr 1.23\relax\relax</code> should have produced <code>1</code>, but it produced <code>1.23</code></p></li>
-<li><p>the catcode of <code>;</code> was not set at package launching time.</p></li>
-<li><p>the <code>\XINTinFloatPrd:csv</code> macro name had a typo, hence <code>prd</code> was non-functional in <code>\xintfloatexpr</code>.</p></li>
+<li><p><code>\xintdefvar A3:=3.1415;</code> for variable definitions
+(non expandable, naturally), usable in subsequent expressions; variable
+names may contain letters, digits, underscores. They should not start
+with a digit, the <code>@</code> is reserved, and single lowercase and
+uppercase Latin letters are predefined to work as dummy variables (see
+next),</p></li>
+<li><p>generation of comma separated lists <code>a..b</code>,
+<code>a..[d]..b</code>,</p></li>
+<li><p>Python syntax-like list extractors <code>[list][n:]</code>,
+<code>[list][:n]</code>, <code>[list][a:b]</code> allowing negative
+indices, but no optional step argument, and <code>[list][n]</code>
+(<code>n=0</code> for the number of items in the list),</p></li>
+<li><p>functions <code>first</code>, <code>last</code>,
+<code>reversed</code>,</p></li>
+<li><p>itemwise operations on comma separated lists
+<code>a*[list]</code>, etc.., possible on both sides
+<code>a*[list]^b</code>, and obeying the same precedence rules as with
+numbers,</p></li>
+<li><p><code>add</code> and <code>mul</code> must use a dummy variable:
+<code>add(x(x+1)(x-1), x=-10..10)</code>,</p></li>
+<li><p>variable substitutions with <code>subs</code>:
+<code>subs(subs(add(x^2+y^2,x=1..y),y=t),t=20)</code>,</p></li>
+<li><p>sequence generation using <code>seq</code> with a dummy variable:
+<code>seq(x^3, x=-10..10)</code>,</p></li>
+<li><p>simple recursive lists with <code>rseq</code>, with
+<code>@</code> given the last value,
+<code>rseq(1;2@+1,i=1..10)</code>,</p></li>
+<li><p>higher recursion with <code>rrseq</code>, <code>@1</code>,
+<code>@2</code>, <code>@3</code>, <code>@4</code>, and
+<code>@@(n)</code> for earlier values, up to <code>n=K</code> where
+<code>K</code> is the number of terms of the initial stretch
+<code>rrseq(0,1;@1+@2,i=2..100)</code>,</p></li>
+<li><p>iteration with <code>iter</code> which is like <code>rrseq</code>
+but outputs only the last <code>K</code> terms, where <code>K</code> was
+the number of initial terms,</p></li>
+<li><p>inside <code>seq</code>, <code>rseq</code>, <code>rrseq</code>,
+<code>iter</code>, possibility to use <code>omit</code>,
+<code>abort</code> and <code>break</code> to control
+termination,</p></li>
+<li><p><code>n++</code> potentially infinite index generation for
+<code>seq</code>, <code>rseq</code>, <code>rrseq</code>, and
+<code>iter</code>, it is advised to use <code>abort</code> or
+<code>break(..)</code> at some point,</p></li>
+<li><p>the <code>add</code>, <code>mul</code>, <code>seq</code>, … are
+nestable,</p></li>
+<li><p><code>\xintthecoords</code> converts a comma separated list of an
+even number of items to the format expected by the <code>TikZ</code>
+<code>coordinates</code> syntax,</p></li>
+<li><p>completely new version <code>\xintNewExpr</code>,
+<code>protect</code> function to handle external macros. The dollar sign
+<code>$</code> for place holders is not accepted anymore, only the
+standard macro parameter <code>#</code>. Not all constructs are
+compatible with <code>\xintNewExpr</code>.</p></li>
+</ul>
+<h3 id="bug-fixes-31">Bug fixes</h3>
+<ul>
+<li><p><code>\xintZapFirstSpaces</code> hence also
+<code>\xintZapSpaces</code> from package <strong>xinttools</strong> were
+buggy when used with an argument either empty or containing only space
+tokens.</p></li>
+<li><p><code>\xintiiexpr</code> did not strip leading zeroes, hence
+<code>\xinttheiiexpr 001+1\relax</code> did not obtain the expected
+result …</p></li>
+<li><p><code>\xinttheexpr \xintiexpr 1.23\relax\relax</code> should have
+produced <code>1</code>, but it produced <code>1.23</code></p></li>
+<li><p>the catcode of <code>;</code> was not set at package launching
+time.</p></li>
+<li><p>the <code>\XINTinFloatPrd:csv</code> macro name had a typo, hence
+<code>prd</code> was non-functional in
+<code>\xintfloatexpr</code>.</p></li>
</ul>
<h2 id="n-20140401"><code>1.09n (2014/04/01)</code></h2>
<ul>
-<li><p>the user manual does not include by default the source code anymore: the <code>\NoSourceCode</code> toggle in file <code>xint.tex</code> has to be set to 0 before compilation to get source code inclusion (later release <code>1.1</code> made source code available as <code>sourcexint.pdf</code>).</p></li>
-<li><p>bug fix (<strong>xinttools</strong>) in <code>\XINT_nthelt_finish</code> (this bug was introduced in <code>1.09i</code> of <code>2013/12/18</code> and showed up when the index <code>N</code> was larger than the number of elements of the list).</p></li>
+<li><p>the user manual does not include by default the source code
+anymore: the <code>\NoSourceCode</code> toggle in file
+<code>xint.tex</code> has to be set to 0 before compilation to get
+source code inclusion (later release <code>1.1</code> made source code
+available as <code>sourcexint.pdf</code>).</p></li>
+<li><p>bug fix (<strong>xinttools</strong>) in
+<code>\XINT_nthelt_finish</code> (this bug was introduced in
+<code>1.09i</code> of <code>2013/12/18</code> and showed up when the
+index <code>N</code> was larger than the number of elements of the
+list).</p></li>
</ul>
<h2 id="m-20140226"><code>1.09m (2014/02/26)</code></h2>
<ul>
-<li><p>new in <strong>xinttools</strong>: <code>\xintKeep</code> keeps the first <code>N</code> or last <code>N</code> elements of a list (sequence of braced items); <code>\xintTrim</code> cuts out either the first <code>N</code> or the last <code>N</code> elements from a list.</p></li>
-<li><p>new in <strong>xintcfrac</strong>: <code>\xintFGtoC</code> finds the initial partial quotients common to two numbers or fractions <code>f</code> and <code>g</code>; <code>\xintGGCFrac</code> is a clone of <code>\xintGCFrac</code> which however does not assume that the coefficients of the generalized continued fraction are numeric quantities. Some other minor changes.</p></li>
+<li><p>new in <strong>xinttools</strong>: <code>\xintKeep</code> keeps
+the first <code>N</code> or last <code>N</code> elements of a list
+(sequence of braced items); <code>\xintTrim</code> cuts out either the
+first <code>N</code> or the last <code>N</code> elements from a
+list.</p></li>
+<li><p>new in <strong>xintcfrac</strong>: <code>\xintFGtoC</code> finds
+the initial partial quotients common to two numbers or fractions
+<code>f</code> and <code>g</code>; <code>\xintGGCFrac</code> is a clone
+of <code>\xintGCFrac</code> which however does not assume that the
+coefficients of the generalized continued fraction are numeric
+quantities. Some other minor changes.</p></li>
</ul>
<h2 id="kb-20140213"><code>1.09kb (2014/02/13)</code></h2>
<ul>
-<li><p>bug fix (<strong>xintexpr</strong>): an aloof modification done by <code>1.09i</code> to <code>\xintNewExpr</code> had resulted in a spurious trailing space present in the outputs of all macros created by <code>\xintNewExpr</code>, making nesting of such macros impossible.</p></li>
-<li><p>bug fix (<strong>xinttools</strong>): <code>\xintBreakFor</code> and <code>\xintBreakForAndDo</code> were buggy when used in the last iteration of an <code>\xintFor</code> loop.</p></li>
-<li><p>bug fix (<strong>xinttools</strong>): <code>\xintSeq</code> from <code>1.09k</code> needed a <code>\chardef</code> which was missing from <code>xinttools.sty</code>, it was in <code>xint.sty</code>.</p></li>
+<li><p>bug fix (<strong>xintexpr</strong>): an aloof modification done
+by <code>1.09i</code> to <code>\xintNewExpr</code> had resulted in a
+spurious trailing space present in the outputs of all macros created by
+<code>\xintNewExpr</code>, making nesting of such macros
+impossible.</p></li>
+<li><p>bug fix (<strong>xinttools</strong>): <code>\xintBreakFor</code>
+and <code>\xintBreakForAndDo</code> were buggy when used in the last
+iteration of an <code>\xintFor</code> loop.</p></li>
+<li><p>bug fix (<strong>xinttools</strong>): <code>\xintSeq</code> from
+<code>1.09k</code> needed a <code>\chardef</code> which was missing from
+<code>xinttools.sty</code>, it was in <code>xint.sty</code>.</p></li>
</ul>
<h2 id="k-20140121"><code>1.09k (2014/01/21)</code></h2>
<ul>
-<li><p>inside <code>\xintexpr..\relax</code> (and its variants) tacit multiplication is implied when a number or operand is followed directly with an opening parenthesis,</p></li>
-<li><p>the <code>&quot;</code> for denoting (arbitrarily big) hexadecimal numbers is recognized by <code>\xintexpr</code> and its variants (package <strong>xintbinhex</strong> is required); a fractional hexadecimal part introduced by a dot <code>.</code> is allowed.</p></li>
-<li><p>re-organization of the first sections of the user manual.</p></li>
-<li><p>bug fix (<strong>xinttools</strong>, <strong>xint</strong>, …): forgotten catcode check of <code>&quot;</code> at loading time has been added.</p></li>
+<li><p>inside <code>\xintexpr..\relax</code> (and its variants) tacit
+multiplication is implied when a number or operand is followed directly
+with an opening parenthesis,</p></li>
+<li><p>the <code>"</code> for denoting (arbitrarily big) hexadecimal
+numbers is recognized by <code>\xintexpr</code> and its variants
+(package <strong>xintbinhex</strong> is required); a fractional
+hexadecimal part introduced by a dot <code>.</code> is allowed.</p></li>
+<li><p>re-organization of the first sections of the user
+manual.</p></li>
+<li><p>bug fix (<strong>xinttools</strong>, <strong>xint</strong>, …):
+forgotten catcode check of <code>"</code> at loading time has been
+added.</p></li>
</ul>
<h2 id="j-20140109"><code>1.09j (2014/01/09)</code></h2>
<ul>
-<li><p>(<strong>xint</strong>) the core division routines have been re-written for some (limited) efficiency gain, more pronounced for small divisors. As a result the <em>computation of one thousand digits of <span class="math inline"><em>π</em></span></em> is close to three times faster than with earlier releases.</p></li>
-<li><p>some various other small improvements, particularly in the power routines.</p></li>
-<li><p>(<strong>xintfrac</strong>) a macro <code>\xintXTrunc</code> is designed to produce thousands or even tens of thousands of digits of the decimal expansion of a fraction. Although completely expandable it has its use limited to inside an <code>\edef</code>, <code>\write</code>, <code>\message</code>, . It can thus not be nested as argument to another package macro.</p></li>
-<li><p>(<strong>xintexpr</strong>) the tacit multiplication done in <code>\xintexpr..\relax</code> on encountering a count register or variable, or a <code>\numexpr</code>, while scanning a (decimal) number, is extended to the case of a sub <code>\xintexpr</code>-ession.</p></li>
-<li><p><code>\xintexpr</code> can now be used in an <code>\edef</code> with no <code>\xintthe</code> prefix; it will execute completely the computation, and the error message about a missing <code>\xintthe</code> will be inhibited. Previously, in the absence of <code>\xintthe</code>, expansion could only be a full one (with <code>\romannumeral-`0</code>), not a complete one (with <code>\edef</code>). Note that this differs from the behavior of the non-expandable <code>\numexpr</code>: <code>\the</code> or <code>\number</code> (or <code>\romannumeral</code>) are needed not only to print but also to trigger the computation, whereas <code>\xintthe</code> is mandatory only for the printing step.</p></li>
-<li><p>the default behavior of <code>\xintAssign</code> is changed, it now does not do any further expansion beyond the initial full-expansion which provided the list of items to be assigned to macros.</p></li>
-<li><p>bug fix (<strong>xintfrac</strong>): <code>1.09i</code> did an unexplainable change to <code>\XINT_infloat_zero</code> which broke the floating point routines for vanishing operands =:(((</p></li>
-<li><p>bug fix: the <code>1.09i</code> <code>xint.ins</code> file produced a buggy <code>xint.tex</code> file.</p></li>
+<li><p>(<strong>xint</strong>) the core division routines have been
+re-written for some (limited) efficiency gain, more pronounced for small
+divisors. As a result the <em>computation of one thousand digits of
+<span class="math inline"><em>π</em></span></em> is close to three times
+faster than with earlier releases.</p></li>
+<li><p>some various other small improvements, particularly in the power
+routines.</p></li>
+<li><p>(<strong>xintfrac</strong>) a macro <code>\xintXTrunc</code> is
+designed to produce thousands or even tens of thousands of digits of the
+decimal expansion of a fraction. Although completely expandable it has
+its use limited to inside an <code>\edef</code>, <code>\write</code>,
+<code>\message</code>, . It can thus not be nested as argument to
+another package macro.</p></li>
+<li><p>(<strong>xintexpr</strong>) the tacit multiplication done in
+<code>\xintexpr..\relax</code> on encountering a count register or
+variable, or a <code>\numexpr</code>, while scanning a (decimal) number,
+is extended to the case of a sub <code>\xintexpr</code>-ession.</p></li>
+<li><p><code>\xintexpr</code> can now be used in an <code>\edef</code>
+with no <code>\xintthe</code> prefix; it will execute completely the
+computation, and the error message about a missing <code>\xintthe</code>
+will be inhibited. Previously, in the absence of <code>\xintthe</code>,
+expansion could only be a full one (with <code>\romannumeral-`0</code>),
+not a complete one (with <code>\edef</code>). Note that this differs
+from the behavior of the non-expandable <code>\numexpr</code>:
+<code>\the</code> or <code>\number</code> (or
+<code>\romannumeral</code>) are needed not only to print but also to
+trigger the computation, whereas <code>\xintthe</code> is mandatory only
+for the printing step.</p></li>
+<li><p>the default behavior of <code>\xintAssign</code> is changed, it
+now does not do any further expansion beyond the initial full-expansion
+which provided the list of items to be assigned to macros.</p></li>
+<li><p>bug fix (<strong>xintfrac</strong>): <code>1.09i</code> did an
+unexplainable change to <code>\XINT_infloat_zero</code> which broke the
+floating point routines for vanishing operands =:(((</p></li>
+<li><p>bug fix: the <code>1.09i</code> <code>xint.ins</code> file
+produced a buggy <code>xint.tex</code> file.</p></li>
</ul>
<h2 id="i-20131218"><code>1.09i (2013/12/18)</code></h2>
<ul>
-<li><p>(<strong>xintexpr</strong>) <code>\xintiiexpr</code> is a variant of <code>\xintexpr</code> which is optimized to deal only with (long) integers, <code>/</code> does a euclidean quotient.</p></li>
-<li><p><em>deprecated</em>: <code>\xintnumexpr</code>, <code>\xintthenumexpr</code>, <code>\xintNewNumExpr</code> are renamed, respectively, <code>\xintiexpr</code>, <code>\xinttheiexpr</code>, <code>\xintNewIExpr</code>. The earlier denominations are kept but are to be removed at some point.</p></li>
-<li><p>it is now possible within <code>\xintexpr...\relax</code> and its variants to use count, dimen, and skip registers or variables without explicit <code>\the/\number</code>: the parser inserts automatically <code>\number</code> and a tacit multiplication is implied when a register or variable immediately follows a number or fraction. Regarding dimensions and <code>\number</code>, see the further discussion in <em>Dimensions</em>.</p></li>
-<li><p>(<strong>xintfrac</strong>) conditional <code>\xintifOne</code>; <code>\xintifTrueFalse</code> renamed to <code>\xintifTrueAelseB</code>; macros <code>\xintTFrac</code> (<code>fractional part</code>, mapped to function <code>frac</code> in <code>\xintexpr</code>-essions), <code>\xintFloatE</code>.</p></li>
-<li><p>(<strong>xinttools</strong>) <code>\xintAssign</code> admits an optional argument to specify the expansion type to be used: <code>[]</code> (none, default), <code>[o]</code> (once), <code>[oo]</code> (twice), <code>[f]</code> (full), <code>[e]</code> (<code>\edef</code>),… to define the macros</p></li>
-<li><p><strong>xinttools</strong> defines <code>\odef</code>, <code>\oodef</code>, <code>\fdef</code> (if the names have already been assigned, it uses <code>\xintoodef</code> etc…). These tools are provided for the case one uses the package macros in a non-expandable context. <code>\oodef</code> expands twice the macro replacement text, and <code>\fdef</code> applies full expansion. They are useful in situations where one does not want a full <code>\edef</code>. <code>\fdef</code> appears to be faster than <code>\oodef</code> in almost all cases (with less than thousand digits in the result), and even faster than <code>\edef</code> for expanding the package macros when the result has a few dozens of digits. <code>\oodef</code> needs that expansion ends up in thousands of digits to become competitive with the other two.</p></li>
-<li><p>some across the board slight efficiency improvement as a result of modifications of various types to <em>fork macros</em> and <em>branching conditionals</em> which are used internally.</p></li>
-<li><p>bug fix (<strong>xint</strong>): <code>\xintAND</code> and <code>\xintOR</code> inserted a space token in some cases and did not expand as promised in two steps <code>:-((</code> (bug dating back to <code>1.09a</code> I think; this bug was without consequences when using <code>&amp;</code> and <code>|</code> in <code>\xintexpr-essions</code>, it affected only the macro form).</p></li>
-<li><p>bug fix (<strong>xintcfrac</strong>): <code>\xintFtoCCv</code> still ended fractions with the <code>[0]</code>’s which were supposed to have been removed since release <code>1.09b</code>.</p></li>
-<li><p><em>deprecated</em>: <code>\xintifTrueFalse</code>, <code>\xintifTrue</code>; use <code>\xintifTrueAelseB</code>.</p></li>
+<li><p>(<strong>xintexpr</strong>) <code>\xintiiexpr</code> is a variant
+of <code>\xintexpr</code> which is optimized to deal only with (long)
+integers, <code>/</code> does a euclidean quotient.</p></li>
+<li><p><em>deprecated</em>: <code>\xintnumexpr</code>,
+<code>\xintthenumexpr</code>, <code>\xintNewNumExpr</code> are renamed,
+respectively, <code>\xintiexpr</code>, <code>\xinttheiexpr</code>,
+<code>\xintNewIExpr</code>. The earlier denominations are kept but are
+to be removed at some point.</p></li>
+<li><p>it is now possible within <code>\xintexpr...\relax</code> and its
+variants to use count, dimen, and skip registers or variables without
+explicit <code>\the/\number</code>: the parser inserts automatically
+<code>\number</code> and a tacit multiplication is implied when a
+register or variable immediately follows a number or fraction. Regarding
+dimensions and <code>\number</code>, see the further discussion in
+<em>Dimensions</em>.</p></li>
+<li><p>(<strong>xintfrac</strong>) conditional <code>\xintifOne</code>;
+<code>\xintifTrueFalse</code> renamed to <code>\xintifTrueAelseB</code>;
+macros <code>\xintTFrac</code> (<code>fractional part</code>, mapped to
+function <code>frac</code> in <code>\xintexpr</code>-essions),
+<code>\xintFloatE</code>.</p></li>
+<li><p>(<strong>xinttools</strong>) <code>\xintAssign</code> admits an
+optional argument to specify the expansion type to be used:
+<code>[]</code> (none, default), <code>[o]</code> (once),
+<code>[oo]</code> (twice), <code>[f]</code> (full), <code>[e]</code>
+(<code>\edef</code>),… to define the macros</p></li>
+<li><p><strong>xinttools</strong> defines <code>\odef</code>,
+<code>\oodef</code>, <code>\fdef</code> (if the names have already been
+assigned, it uses <code>\xintoodef</code> etc…). These tools are
+provided for the case one uses the package macros in a non-expandable
+context. <code>\oodef</code> expands twice the macro replacement text,
+and <code>\fdef</code> applies full expansion. They are useful in
+situations where one does not want a full <code>\edef</code>.
+<code>\fdef</code> appears to be faster than <code>\oodef</code> in
+almost all cases (with less than thousand digits in the result), and
+even faster than <code>\edef</code> for expanding the package macros
+when the result has a few dozens of digits. <code>\oodef</code> needs
+that expansion ends up in thousands of digits to become competitive with
+the other two.</p></li>
+<li><p>some across the board slight efficiency improvement as a result
+of modifications of various types to <em>fork macros</em> and
+<em>branching conditionals</em> which are used internally.</p></li>
+<li><p>bug fix (<strong>xint</strong>): <code>\xintAND</code> and
+<code>\xintOR</code> inserted a space token in some cases and did not
+expand as promised in two steps <code>:-((</code> (bug dating back to
+<code>1.09a</code> I think; this bug was without consequences when using
+<code>&amp;</code> and <code>|</code> in <code>\xintexpr-essions</code>,
+it affected only the macro form).</p></li>
+<li><p>bug fix (<strong>xintcfrac</strong>): <code>\xintFtoCCv</code>
+still ended fractions with the <code>[0]</code>’s which were supposed to
+have been removed since release <code>1.09b</code>.</p></li>
+<li><p><em>deprecated</em>: <code>\xintifTrueFalse</code>,
+<code>\xintifTrue</code>; use <code>\xintifTrueAelseB</code>.</p></li>
</ul>
<h2 id="h-20131128"><code>1.09h (2013/11/28)</code></h2>
<ul>
-<li><p>parts of the documentation have been re-written or re-organized, particularly the discussion of expansion issues and of input and output formats.</p></li>
-<li><p>the expansion types of macro arguments are documented in the margin of the macro descriptions, with conventions mainly taken over from those in the <code>LaTeX3</code> documentation.</p></li>
-<li><p>a dependency of <strong>xinttools</strong> on <strong>xint</strong> (inside <code>\xintSeq</code>) has been removed.</p></li>
-<li><p>(<strong>xintgcd</strong>) <code>\xintTypesetEuclideAlgorithm</code> and <code>\xintTypesetBezoutAlgorithm</code> have been slightly modified (regarding indentation).</p></li>
-<li><p>(<strong>xint</strong>) macros <code>xintiSum</code> and <code>xintiPrd</code> are renamed to <code>\xintiiSum</code> and <code>\xintiiPrd</code>.</p></li>
-<li><p>(<strong>xinttools</strong>) a count register used in <code>1.09g</code> in the <code>\xintFor</code> loops for parsing purposes has been removed and replaced by use of a <code>\numexpr</code>.</p></li>
-<li><p>the few uses of <code>\loop</code> have been replaced by <code>\xintloop/\xintiloop</code>.</p></li>
-<li><p>all macros of <strong>xinttools</strong> for which it makes sense are now declared <code>\long</code>.</p></li>
+<li><p>parts of the documentation have been re-written or re-organized,
+particularly the discussion of expansion issues and of input and output
+formats.</p></li>
+<li><p>the expansion types of macro arguments are documented in the
+margin of the macro descriptions, with conventions mainly taken over
+from those in the <code>LaTeX3</code> documentation.</p></li>
+<li><p>a dependency of <strong>xinttools</strong> on
+<strong>xint</strong> (inside <code>\xintSeq</code>) has been
+removed.</p></li>
+<li><p>(<strong>xintgcd</strong>)
+<code>\xintTypesetEuclideAlgorithm</code> and
+<code>\xintTypesetBezoutAlgorithm</code> have been slightly modified
+(regarding indentation).</p></li>
+<li><p>(<strong>xint</strong>) macros <code>xintiSum</code> and
+<code>xintiPrd</code> are renamed to <code>\xintiiSum</code> and
+<code>\xintiiPrd</code>.</p></li>
+<li><p>(<strong>xinttools</strong>) a count register used in
+<code>1.09g</code> in the <code>\xintFor</code> loops for parsing
+purposes has been removed and replaced by use of a
+<code>\numexpr</code>.</p></li>
+<li><p>the few uses of <code>\loop</code> have been replaced by
+<code>\xintloop/\xintiloop</code>.</p></li>
+<li><p>all macros of <strong>xinttools</strong> for which it makes sense
+are now declared <code>\long</code>.</p></li>
</ul>
<h2 id="g-20131122"><code>1.09g (2013/11/22)</code></h2>
<ul>
-<li><p>a package <strong>xinttools</strong> is detached from <strong>xint</strong>, to make tools such as <code>\xintFor</code>, <code>\xintApplyUnbraced</code>, and <code>\xintiloop</code> available without the <strong>xint</strong> overhead.</p></li>
-<li><p>expandable nestable loops <code>\xintloop</code> and <code>\xintiloop</code>.</p></li>
-<li><p>bugfix: <code>\xintFor</code> and <code>\xintFor*</code> do not modify anymore the value of <code>\count 255</code>.</p></li>
+<li><p>a package <strong>xinttools</strong> is detached from
+<strong>xint</strong>, to make tools such as <code>\xintFor</code>,
+<code>\xintApplyUnbraced</code>, and <code>\xintiloop</code> available
+without the <strong>xint</strong> overhead.</p></li>
+<li><p>expandable nestable loops <code>\xintloop</code> and
+<code>\xintiloop</code>.</p></li>
+<li><p>bugfix: <code>\xintFor</code> and <code>\xintFor*</code> do not
+modify anymore the value of <code>\count 255</code>.</p></li>
</ul>
<h2 id="f-20131104"><code>1.09f (2013/11/04)</code></h2>
<ul>
-<li><p>(<strong>xint</strong>) <code>\xintZapFirstSpaces</code>, <code>\xintZapLastSpaces</code>, <code>\xintZapSpaces</code>, <code>\xintZapSpacesB</code>, for expandably stripping away leading and/or ending spaces.</p></li>
-<li><p><code>\xintCSVtoList</code> by default uses <code>\xintZapSpacesB</code> to strip away spaces around commas (or at the start and end of the comma separated list).</p></li>
-<li><p>also the <code>\xintFor</code> loop will strip out all spaces around commas and at the start and the end of its list argument; and similarly for <code>\xintForpair</code>, <code>\xintForthree</code>, <code>\xintForfour</code>.</p></li>
-<li><p><code>\xintFor</code> <em>et al.</em> accept all macro parameters from <code>#1</code> to <code>#9</code>.</p></li>
-<li><p>for reasons of inner coherence some macros previously with one extra <code>i</code> in their names (e.g. <code>\xintiMON</code>) now have a doubled <code>ii</code> (<code>\xintiiMON</code>) to indicate that they skip the overhead of parsing their inputs via <code>\xintNum</code>. Macros with a <em>single</em> <code>i</code> such as <code>\xintiAdd</code> are those which maintain the non-<strong>xintfrac</strong> output format for big integers, but do parse their inputs via <code>\xintNum</code> (since release <code>1.09a</code>). They too may have doubled-<code>i</code> variants for matters of programming optimization when working only with (big) integers and not fractions or decimal numbers.</p></li>
+<li><p>(<strong>xint</strong>) <code>\xintZapFirstSpaces</code>,
+<code>\xintZapLastSpaces</code>, <code>\xintZapSpaces</code>,
+<code>\xintZapSpacesB</code>, for expandably stripping away leading
+and/or ending spaces.</p></li>
+<li><p><code>\xintCSVtoList</code> by default uses
+<code>\xintZapSpacesB</code> to strip away spaces around commas (or at
+the start and end of the comma separated list).</p></li>
+<li><p>also the <code>\xintFor</code> loop will strip out all spaces
+around commas and at the start and the end of its list argument; and
+similarly for <code>\xintForpair</code>, <code>\xintForthree</code>,
+<code>\xintForfour</code>.</p></li>
+<li><p><code>\xintFor</code> <em>et al.</em> accept all macro parameters
+from <code>#1</code> to <code>#9</code>.</p></li>
+<li><p>for reasons of inner coherence some macros previously with one
+extra <code>i</code> in their names (e.g. <code>\xintiMON</code>) now
+have a doubled <code>ii</code> (<code>\xintiiMON</code>) to indicate
+that they skip the overhead of parsing their inputs via
+<code>\xintNum</code>. Macros with a <em>single</em> <code>i</code> such
+as <code>\xintiAdd</code> are those which maintain the
+non-<strong>xintfrac</strong> output format for big integers, but do
+parse their inputs via <code>\xintNum</code> (since release
+<code>1.09a</code>). They too may have doubled-<code>i</code> variants
+for matters of programming optimization when working only with (big)
+integers and not fractions or decimal numbers.</p></li>
</ul>
<h2 id="e-20131029"><code>1.09e (2013/10/29)</code></h2>
<ul>
-<li><p>(<strong>xint</strong>) <code>\xintintegers</code>, <code>\xintdimensions</code>, <code>\xintrationals</code> for infinite <code>\xintFor</code> loops, interrupted with <code>\xintBreakFor</code> and <code>\xintBreakForAndDo</code>.</p></li>
-<li><p><code>\xintifForFirst</code>, <code>\xintifForLast</code> for the <code>\xintFor</code> and <code>\xintFor*</code> loops,</p></li>
-<li><p>the <code>\xintFor</code> and <code>xintFor*</code> loops are now <code>\long</code>, the replacement text and the items may contain explicit <code>\par</code>’s.</p></li>
-<li><p>conditionals <code>\xintifCmp</code>, <code>\xintifInt</code>, <code>\xintifOdd</code>.</p></li>
-<li><p>bug fix (<strong>xint</strong>): the <code>\xintFor</code> loop (not <code>\xintFor*</code>) did not correctly detect an empty list.</p></li>
-<li><p>bug fix (<strong>xint</strong>): <code>\xintiSqrt {0}</code> crashed. <code>:-((</code></p></li>
-<li><p>the documentation has been enriched with various additional examples, such as the <em>the quick sort algorithm illustrated</em> or the various ways of <em>computing prime numbers</em>.</p></li>
-<li><p>the documentation explains with more details various expansion related issues, particularly in relation to conditionals.</p></li>
+<li><p>(<strong>xint</strong>) <code>\xintintegers</code>,
+<code>\xintdimensions</code>, <code>\xintrationals</code> for infinite
+<code>\xintFor</code> loops, interrupted with <code>\xintBreakFor</code>
+and <code>\xintBreakForAndDo</code>.</p></li>
+<li><p><code>\xintifForFirst</code>, <code>\xintifForLast</code> for the
+<code>\xintFor</code> and <code>\xintFor*</code> loops,</p></li>
+<li><p>the <code>\xintFor</code> and <code>xintFor*</code> loops are now
+<code>\long</code>, the replacement text and the items may contain
+explicit <code>\par</code>’s.</p></li>
+<li><p>conditionals <code>\xintifCmp</code>, <code>\xintifInt</code>,
+<code>\xintifOdd</code>.</p></li>
+<li><p>bug fix (<strong>xint</strong>): the <code>\xintFor</code> loop
+(not <code>\xintFor*</code>) did not correctly detect an empty
+list.</p></li>
+<li><p>bug fix (<strong>xint</strong>): <code>\xintiSqrt {0}</code>
+crashed. <code>:-((</code></p></li>
+<li><p>the documentation has been enriched with various additional
+examples, such as the <em>the quick sort algorithm illustrated</em> or
+the various ways of <em>computing prime numbers</em>.</p></li>
+<li><p>the documentation explains with more details various expansion
+related issues, particularly in relation to conditionals.</p></li>
</ul>
<h2 id="d-20131022"><code>1.09d (2013/10/22)</code></h2>
<ul>
-<li><p>bug fix (<strong>xint</strong>): <code>\xintFor*</code> is modified to gracefully handle a space token (or more than one) located at the very end of its list argument (as the space before <code>\do</code> in <code>\xintFor* #1 in {{a}{b}{c}&lt;space&gt;} \do {stuff}</code>; spaces at other locations were already harmless). Furthermore this new version <em>f-expands</em> the un-braced list items. After <code>\def\x{{1}{2}}</code> and <code>\def\y{{a}\x {b}{c}\x }</code>, <code>\y</code> will appear to <code>\xintFor*</code> exactly as if it had been defined as <code>\def\y{{a}{1}{2}{b}{c}{1}{2}}</code>.</p></li>
+<li><p>bug fix (<strong>xint</strong>): <code>\xintFor*</code> is
+modified to gracefully handle a space token (or more than one) located
+at the very end of its list argument (as the space before
+<code>\do</code> in
+<code>\xintFor* #1 in {{a}{b}{c}&lt;space&gt;} \do {stuff}</code>;
+spaces at other locations were already harmless). Furthermore this new
+version <em>f-expands</em> the un-braced list items. After
+<code>\def\x{{1}{2}}</code> and
+<code>\def\y{{a}\x {b}{c}\x }</code>, <code>\y</code> will appear to
+<code>\xintFor*</code> exactly as if it had been defined as
+<code>\def\y{{a}{1}{2}{b}{c}{1}{2}}</code>.</p></li>
<li><p>same bug fix for <code>\xintApplyInline</code>.</p></li>
</ul>
<h2 id="c-20131009"><code>1.09c (2013/10/09)</code></h2>
<ul>
-<li><p>(<strong>xintexpr</strong>) added <code>bool</code> and <code>togl</code> to the <code>\xintexpr</code> syntax; also added <code>\xintboolexpr</code> and <code>\xintifboolexpr</code>.</p></li>
+<li><p>(<strong>xintexpr</strong>) added <code>bool</code> and
+<code>togl</code> to the <code>\xintexpr</code> syntax; also added
+<code>\xintboolexpr</code> and <code>\xintifboolexpr</code>.</p></li>
<li><p>added <code>\xintNewNumExpr</code>.</p></li>
-<li><p>the factorial <code>!</code> and branching <code>?</code>, <code>:</code>, operators (in <code>\xintexpr...\relax</code>) have now less precedence than a function name located just before,</p></li>
-<li><p>(<strong>xint</strong>) <code>\xintFor</code> is a new type of loop, whose replacement text inserts the comma separated values or list items via macro parameters, rather than encapsulated in macros; the loops are nestable up to four levels (nine levels since <code>1.09f</code>) and their replacement texts are allowed to close groups as happens with the tabulation in alignments,</p></li>
-<li><p><code>\xintForpair</code>, <code>\xintForthree</code>, <code>\xintForfour</code> are experimental variants of <code>\xintFor</code>,</p></li>
-<li><p><code>\xintApplyInline</code> has been enhanced in order to be usable for generating rows (partially or completely) in an alignment,</p></li>
-<li><p>command <code>\xintSeq</code> to generate (expandably) arithmetic sequences of (short) integers,</p></li>
-<li><p>again various improvements and changes in the documentation.</p></li>
+<li><p>the factorial <code>!</code> and branching <code>?</code>,
+<code>:</code>, operators (in <code>\xintexpr...\relax</code>) have now
+less precedence than a function name located just before,</p></li>
+<li><p>(<strong>xint</strong>) <code>\xintFor</code> is a new type of
+loop, whose replacement text inserts the comma separated values or list
+items via macro parameters, rather than encapsulated in macros; the
+loops are nestable up to four levels (nine levels since
+<code>1.09f</code>) and their replacement texts are allowed to close
+groups as happens with the tabulation in alignments,</p></li>
+<li><p><code>\xintForpair</code>, <code>\xintForthree</code>,
+<code>\xintForfour</code> are experimental variants of
+<code>\xintFor</code>,</p></li>
+<li><p><code>\xintApplyInline</code> has been enhanced in order to be
+usable for generating rows (partially or completely) in an
+alignment,</p></li>
+<li><p>command <code>\xintSeq</code> to generate (expandably) arithmetic
+sequences of (short) integers,</p></li>
+<li><p>again various improvements and changes in the
+documentation.</p></li>
</ul>
<h2 id="b-20131003"><code>1.09b (2013/10/03)</code></h2>
<ul>
<li><p>various improvements in the documentation,</p></li>
-<li><p>more economical catcode management and re-loading handling,</p></li>
-<li><p>removal of all those <code>[0]</code>’s previously forcefully added at the end of fractions by various macros of <strong>xintcfrac</strong>,</p></li>
-<li><p><code>\xintNthElt</code> with a negative index returns from the tail of the list,</p></li>
-<li><p>macro <code>\xintPRaw</code> to have something like what <code>\xintFrac</code> does in math mode; i.e. a <code>\xintRaw</code> which does not print the denominator if it is one.</p></li>
+<li><p>more economical catcode management and re-loading
+handling,</p></li>
+<li><p>removal of all those <code>[0]</code>’s previously forcefully
+added at the end of fractions by various macros of
+<strong>xintcfrac</strong>,</p></li>
+<li><p><code>\xintNthElt</code> with a negative index returns from the
+tail of the list,</p></li>
+<li><p>macro <code>\xintPRaw</code> to have something like what
+<code>\xintFrac</code> does in math mode; i.e. a <code>\xintRaw</code>
+which does not print the denominator if it is one.</p></li>
</ul>
<h2 id="a-20130924"><code>1.09a (2013/09/24)</code></h2>
<ul>
-<li><p>(<strong>xintexpr</strong>) <code>\xintexpr..\relax</code> and <code>\xintfloatexpr..\relax</code> admit functions in their syntax, with comma separated values as arguments, among them <code>reduce, sqr, sqrt, abs, sgn, floor, ceil, quo, rem, round, trunc, float, gcd, lcm, max, min, sum, prd, add, mul, not, all, any, xor</code>.</p></li>
-<li><p>comparison (<code>&lt;</code>, <code>&gt;</code>, <code>=</code>) and logical (<code>|</code>, <code>&amp;</code>) operators.</p></li>
-<li><p>the command <code>\xintthe</code> which converts <code>\xintexpr</code>essions into printable format (like <code>\the</code> with <code>\numexpr</code>) is more efficient, for example one can do <code>\xintthe\x</code> if <code>\x</code> was defined to be an <code>\xintexpr..\relax</code>:</p>
+<li><p>(<strong>xintexpr</strong>) <code>\xintexpr..\relax</code> and
+<code>\xintfloatexpr..\relax</code> admit functions in their syntax,
+with comma separated values as arguments, among them
+<code>reduce, sqr, sqrt, abs, sgn, floor, ceil, quo, rem, round, trunc, float, gcd, lcm, max, min, sum, prd, add, mul, not, all, any, xor</code>.</p></li>
+<li><p>comparison (<code>&lt;</code>, <code>&gt;</code>, <code>=</code>)
+and logical (<code>|</code>, <code>&amp;</code>) operators.</p></li>
+<li><p>the command <code>\xintthe</code> which converts
+<code>\xintexpr</code>essions into printable format (like
+<code>\the</code> with <code>\numexpr</code>) is more efficient, for
+example one can do <code>\xintthe\x</code> if <code>\x</code> was
+defined to be an <code>\xintexpr..\relax</code>:</p>
<pre><code>\def\x{\xintexpr 3^57\relax}
\def\y{\xintexpr \x^(-2)\relax}
\def\z{\xintexpr \y-3^-114\relax}
\xintthe\z</code></pre></li>
-<li><p><code>\xintnumexpr .. \relax</code> (now renamed <code>\xintiexpr</code>) is <code>\xintexpr round( .. ) \relax</code>.</p></li>
-<li><p><code>\xintNewExpr</code> now works with the standard macro parameter character <code>#</code>.</p></li>
-<li><p>both regular <code>\xintexpr</code>-essions and commands defined by <code>\xintNewExpr</code> will work with comma separated lists of expressions,</p></li>
-<li><p>commands <code>\xintFloor</code>, <code>\xintCeil</code>, <code>\xintMaxof</code>, <code>\xintMinof</code> (package <strong>xintfrac</strong>), <code>\xintGCDof</code>, <code>\xintLCM</code>, <code>\xintLCMof</code> (package <strong>xintgcd</strong>), <code>\xintifLt</code>, <code>\xintifGt</code>, <code>\xintifSgn</code>, <code>\xintANDof</code>, …</p></li>
-<li><p>The arithmetic macros from package <strong>xint</strong> now filter their operands via <code>\xintNum</code> which means that they may use directly count registers and <code>\numexpr</code>-essions without having to prefix them by <code>\the</code>. This is thus similar to the situation holding previously already when <strong>xintfrac</strong> was loaded.</p></li>
-<li><p>a bug (<strong>xintfrac</strong>) introduced in <code>1.08b</code> made <code>\xintCmp</code> crash when one of its arguments was zero. <code>:-((</code></p></li>
+<li><p><code>\xintnumexpr .. \relax</code> (now renamed
+<code>\xintiexpr</code>) is
+<code>\xintexpr round( .. ) \relax</code>.</p></li>
+<li><p><code>\xintNewExpr</code> now works with the standard macro
+parameter character <code>#</code>.</p></li>
+<li><p>both regular <code>\xintexpr</code>-essions and commands defined
+by <code>\xintNewExpr</code> will work with comma separated lists of
+expressions,</p></li>
+<li><p>commands <code>\xintFloor</code>, <code>\xintCeil</code>,
+<code>\xintMaxof</code>, <code>\xintMinof</code> (package
+<strong>xintfrac</strong>), <code>\xintGCDof</code>,
+<code>\xintLCM</code>, <code>\xintLCMof</code> (package
+<strong>xintgcd</strong>), <code>\xintifLt</code>,
+<code>\xintifGt</code>, <code>\xintifSgn</code>,
+<code>\xintANDof</code>, …</p></li>
+<li><p>The arithmetic macros from package <strong>xint</strong> now
+filter their operands via <code>\xintNum</code> which means that they
+may use directly count registers and <code>\numexpr</code>-essions
+without having to prefix them by <code>\the</code>. This is thus similar
+to the situation holding previously already when
+<strong>xintfrac</strong> was loaded.</p></li>
+<li><p>a bug (<strong>xintfrac</strong>) introduced in
+<code>1.08b</code> made <code>\xintCmp</code> crash when one of its
+arguments was zero. <code>:-((</code></p></li>
</ul>
<h2 id="b-20130614"><code>1.08b (2013/06/14)</code></h2>
<ul>
-<li><p>(<strong>xintexpr</strong>) Correction of a problem with spaces inside <code>\xintexpr</code>-essions.</p></li>
-<li><p>(<strong>xintfrac</strong>) Additional improvements to the handling of floating point numbers.</p></li>
-<li><p>section <em>Use of count registers</em> documenting how count registers may be directly used in arguments to the macros of <strong>xintfrac</strong>.</p></li>
+<li><p>(<strong>xintexpr</strong>) Correction of a problem with spaces
+inside <code>\xintexpr</code>-essions.</p></li>
+<li><p>(<strong>xintfrac</strong>) Additional improvements to the
+handling of floating point numbers.</p></li>
+<li><p>section <em>Use of count registers</em> documenting how count
+registers may be directly used in arguments to the macros of
+<strong>xintfrac</strong>.</p></li>
</ul>
<h2 id="a-20130611"><code>1.08a (2013/06/11)</code></h2>
<ul>
-<li><p>(<strong>xintfrac</strong>) Improved efficiency of the basic conversion from exact fractions to floating point numbers, with ensuing speed gains especially for the power function macros <code>\xintFloatPow</code> and <code>\xintFloatPower</code>,</p></li>
-<li><p>Better management by <code>\xintCmp</code>, <code>\xintMax</code>, <code>\xintMin</code> and <code>\xintGeq</code> of inputs having big powers of ten in them.</p></li>
-<li><p>Macros for floating point numbers added to the <strong>xintseries</strong> package.</p></li>
+<li><p>(<strong>xintfrac</strong>) Improved efficiency of the basic
+conversion from exact fractions to floating point numbers, with ensuing
+speed gains especially for the power function macros
+<code>\xintFloatPow</code> and <code>\xintFloatPower</code>,</p></li>
+<li><p>Better management by <code>\xintCmp</code>,
+<code>\xintMax</code>, <code>\xintMin</code> and <code>\xintGeq</code>
+of inputs having big powers of ten in them.</p></li>
+<li><p>Macros for floating point numbers added to the
+<strong>xintseries</strong> package.</p></li>
</ul>
<h2 id="section-4"><code>1.08 (2013/06/07)</code></h2>
<ul>
-<li><p>(<strong>xint</strong> and <strong>xintfrac</strong>) Macros for extraction of square roots, for floating point numbers (<code>\xintFloatSqrt</code>), and integers (<code>\xintiSqrt</code>).</p></li>
-<li><p>new package <strong>xintbinhex</strong> providing <em>conversion routines</em> to and from binary and hexadecimal bases.</p></li>
+<li><p>(<strong>xint</strong> and <strong>xintfrac</strong>) Macros for
+extraction of square roots, for floating point numbers
+(<code>\xintFloatSqrt</code>), and integers
+(<code>\xintiSqrt</code>).</p></li>
+<li><p>new package <strong>xintbinhex</strong> providing <em>conversion
+routines</em> to and from binary and hexadecimal bases.</p></li>
</ul>
<h2 id="section-5"><code>1.07 (2013/05/25)</code></h2>
<ul>
-<li><p>The <strong>xintexpr</strong> package is a new core constituent (which loads automatically <strong>xintfrac</strong> and <strong>xint</strong>) and implements the expandable expanding parser</p>
+<li><p>The <strong>xintexpr</strong> package is a new core constituent
+(which loads automatically <strong>xintfrac</strong> and
+<strong>xint</strong>) and implements the expandable expanding
+parser</p>
<pre><code>\xintexpr . . . \relax,</code></pre>
<p>and its variant</p>
<pre><code>\xintfloatexpr . . . \relax</code></pre>
-<p>allowing on input formulas using the infix operators <code>+</code>, <code>-</code>, <code>*</code>, <code>/</code>, and <code>^</code>, and arbitrary levels of parenthesizing. Within a float expression the operations are executed according to the current value set by <code>\xintDigits</code>. Within an <code>\xintexpr</code>-ession the binary operators are computed exactly.</p>
-<p>To write the <code>\xintexpr</code> parser I benefited from the commented source of the <code>l3fp</code> parser; the <code>\xintexpr</code> parser has its own features and peculiarities. <em>See its documentation</em>.</p></li>
-<li><p>The floating point precision <code>D</code> is set (this is a local assignment to a <code>\mathchar</code> variable) with <code>\xintDigits := D;</code> and queried with <code>\xinttheDigits</code>. It may be set to anything up to <code>32767</code>.<a href="#fn1" class="footnote-ref" id="fnref1"><sup>1</sup></a> The macro incarnations of the binary operations admit an optional argument which will replace pointwise <code>D</code>; this argument may exceed the <code>32767</code> bound.</p></li>
-<li><p>The <strong>xintfrac</strong> macros now accept numbers written in scientific notation, the <code>\xintFloat</code> command serves to output its argument with a given number <code>D</code> of significant figures. The value of <code>D</code> is either given as optional argument to <code>\xintFloat</code> or set with <code>\xintDigits := D;</code>. The default value is <code>16</code>.</p></li>
+<p>allowing on input formulas using the infix operators <code>+</code>,
+<code>-</code>, <code>*</code>, <code>/</code>, and <code>^</code>, and
+arbitrary levels of parenthesizing. Within a float expression the
+operations are executed according to the current value set by
+<code>\xintDigits</code>. Within an <code>\xintexpr</code>-ession the
+binary operators are computed exactly.</p>
+<p>To write the <code>\xintexpr</code> parser I benefited from the
+commented source of the <code>l3fp</code> parser; the
+<code>\xintexpr</code> parser has its own features and peculiarities.
+<em>See its documentation</em>.</p></li>
+<li><p>The floating point precision <code>D</code> is set (this is a
+local assignment to a <code>\mathchar</code> variable) with
+<code>\xintDigits := D;</code> and queried with
+<code>\xinttheDigits</code>. It may be set to anything up to
+<code>32767</code>.<a href="#fn1" class="footnote-ref" id="fnref1"
+role="doc-noteref"><sup>1</sup></a> The macro incarnations of the binary
+operations admit an optional argument which will replace pointwise
+<code>D</code>; this argument may exceed the <code>32767</code>
+bound.</p></li>
+<li><p>The <strong>xintfrac</strong> macros now accept numbers written
+in scientific notation, the <code>\xintFloat</code> command serves to
+output its argument with a given number <code>D</code> of significant
+figures. The value of <code>D</code> is either given as optional
+argument to <code>\xintFloat</code> or set with
+<code>\xintDigits := D;</code>. The default value is
+<code>16</code>.</p></li>
</ul>
<h2 id="b-20130514"><code>1.06b (2013/05/14)</code></h2>
<ul>
-<li>Minor code and documentation improvements. Everywhere in the source code, a more modern underscore has replaced the @ sign.</li>
+<li>Minor code and documentation improvements. Everywhere in the source
+code, a more modern underscore has replaced the @ sign.</li>
</ul>
<h2 id="section-6"><code>1.06 (2013/05/07)</code></h2>
<ul>
-<li><p>Some code improvements, particularly for macros of <strong>xint</strong> doing loops.</p></li>
-<li><p>New utilities in <strong>xint</strong> for expandable manipulations of lists:</p>
+<li><p>Some code improvements, particularly for macros of
+<strong>xint</strong> doing loops.</p></li>
+<li><p>New utilities in <strong>xint</strong> for expandable
+manipulations of lists:</p>
<pre><code>\xintNthElt, \xintCSVtoList, \xintRevWithBraces</code></pre></li>
-<li><p>The macros did only a double expansion of their arguments. They now fully expand them (using <code>\romannumeral-`0</code>). Furthermore, in the case of arguments constrained to obey the TeX bounds they will be inserted inside a <code>\numexpr..\relax</code>, hence completely expanded, one may use count registers, even infix arithmetic operations, etc…</p></li>
+<li><p>The macros did only a double expansion of their arguments. They
+now fully expand them (using <code>\romannumeral-`0</code>).
+Furthermore, in the case of arguments constrained to obey the TeX bounds
+they will be inserted inside a <code>\numexpr..\relax</code>, hence
+completely expanded, one may use count registers, even infix arithmetic
+operations, etc…</p></li>
</ul>
<h2 id="section-7"><code>1.05 (2013/05/01)</code></h2>
-<p>Minor changes and additions to <strong>xintfrac</strong> and <strong>xintcfrac</strong>.</p>
+<p>Minor changes and additions to <strong>xintfrac</strong> and
+<strong>xintcfrac</strong>.</p>
<h2 id="section-8"><code>1.04 (2013/04/25)</code></h2>
<ul>
-<li><p>New component <strong>xintcfrac</strong> devoted to continued fractions.</p></li>
+<li><p>New component <strong>xintcfrac</strong> devoted to continued
+fractions.</p></li>
<li><p><strong>xint</strong>: faster division.</p></li>
-<li><p><strong>xint</strong>: added expandable macros <code>\xintListWithSep</code> and <code>\xintApply</code> to handle token lists.</p></li>
-<li><p><strong>xintfrac</strong>: added <code>\xintRound</code>.</p></li>
-<li><p><strong>xintseries</strong> has a new implementation of <code>\xintPowerSeries</code> based on a Horner scheme, and new macro <code>\xintRationalSeries</code>. Both to help deal with the <em>denominator buildup</em> plague.</p></li>
-<li><p><code>tex xint.dtx</code> extracts style files (no need for a <code>xint.ins</code>).</p></li>
-<li><p>Bug fix (<strong>xintfrac</strong>): <code>\xintIrr {0}</code> crashed.</p></li>
+<li><p><strong>xint</strong>: added expandable macros
+<code>\xintListWithSep</code> and <code>\xintApply</code> to handle
+token lists.</p></li>
+<li><p><strong>xintfrac</strong>: added
+<code>\xintRound</code>.</p></li>
+<li><p><strong>xintseries</strong> has a new implementation of
+<code>\xintPowerSeries</code> based on a Horner scheme, and new macro
+<code>\xintRationalSeries</code>. Both to help deal with the
+<em>denominator buildup</em> plague.</p></li>
+<li><p><code>tex xint.dtx</code> extracts style files (no need for a
+<code>xint.ins</code>).</p></li>
+<li><p>Bug fix (<strong>xintfrac</strong>): <code>\xintIrr {0}</code>
+crashed.</p></li>
</ul>
<h2 id="section-9"><code>1.03 (2013/04/14)</code></h2>
<ul>
-<li><p>New modules <strong>xintfrac</strong> (expandable operations on fractions) and <strong>xintseries</strong> (expandable partial sums with xint package).</p></li>
-<li><p>Slightly improved division and faster multiplication (the best ordering of the arguments is chosen automatically).</p></li>
-<li><p>Added illustration of Machin algorithm to the documentation.</p></li>
+<li><p>New modules <strong>xintfrac</strong> (expandable operations on
+fractions) and <strong>xintseries</strong> (expandable partial sums with
+xint package).</p></li>
+<li><p>Slightly improved division and faster multiplication (the best
+ordering of the arguments is chosen automatically).</p></li>
+<li><p>Added illustration of Machin algorithm to the
+documentation.</p></li>
</ul>
<h2 id="section-10"><code>1.0 (2013/03/28)</code></h2>
<p>Initial announcement:</p>
<blockquote>
-<p>The <strong>xint</strong> package implements with expandable TeX macros the basic arithmetic operations of addition, subtraction, multiplication and division, as applied to arbitrarily long numbers represented as chains of digits with an optional minus sign.</p>
+<p>The <strong>xint</strong> package implements with expandable TeX
+macros the basic arithmetic operations of addition, subtraction,
+multiplication and division, as applied to arbitrarily long numbers
+represented as chains of digits with an optional minus sign.</p>
</blockquote>
<blockquote>
-<p>The <strong>xintgcd</strong> package provides implementations of the Euclidean algorithm and of its typesetting.</p>
+<p>The <strong>xintgcd</strong> package provides implementations of the
+Euclidean algorithm and of its typesetting.</p>
</blockquote>
<blockquote>
<p>The packages may be used with Plain and with LaTeX.</p>
</blockquote>
-<section class="footnotes">
+<section class="footnotes footnotes-end-of-document"
+role="doc-endnotes">
<hr />
<ol>
-<li id="fn1"><p>but values higher than 100 or 200 will presumably give too slow evaluations.<a href="#fnref1" class="footnote-back">↩</a></p></li>
+<li id="fn1" role="doc-endnote"><p>but values higher than 100 or 200
+will presumably give too slow evaluations.<a href="#fnref1"
+class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
</section>
</body>
diff --git a/macros/generic/xint/README.md b/macros/generic/xint/README.md
index bd83ddc429..26efec3af4 100644
--- a/macros/generic/xint/README.md
+++ b/macros/generic/xint/README.md
@@ -1,8 +1,8 @@
% README
-% xint 1.4j
-% 2021/07/13
+% xint 1.4k
+% 2022/05/18
- Source: xint.dtx 1.4j 2021/07/13 (doc 2021/07/13)
+ Source: xint.dtx 1.4k 2022/05/18 (doc 2022/05/18)
Author: Jean-Francois Burnol
Info: Expandable operations on big integers, decimals, fractions
License: LPPL 1.3c
@@ -92,7 +92,7 @@ is a functionality of all major TeX engines since TeXLive 2019.
License
=======
-Copyright (C) 2013-2021 by Jean-Francois Burnol
+Copyright (C) 2013-2022 by Jean-Francois Burnol
This Work may be distributed and/or modified under the
conditions of the LaTeX Project Public License version 1.3c.
diff --git a/macros/generic/xint/sourcexint.pdf b/macros/generic/xint/sourcexint.pdf
index 41147e734d..559adccd36 100644
--- a/macros/generic/xint/sourcexint.pdf
+++ b/macros/generic/xint/sourcexint.pdf
Binary files differ
diff --git a/macros/generic/xint/xint.dtx b/macros/generic/xint/xint.dtx
index a1ad014bc2..213000e752 100644
--- a/macros/generic/xint/xint.dtx
+++ b/macros/generic/xint/xint.dtx
@@ -3,28 +3,28 @@
% Extract all files via "etex xint.dtx" and do "make help"
% or follow instructions from extracted README.md.
%<*dtx>
-\def\xintdtxtimestamp {Time-stamp: <13-07-2021 at 21:50:14 CEST>}
+\def\xintdtxtimestamp {Time-stamp: <18-05-2022 at 20:55:23 CEST>}
%</dtx>
%<*drv>
%% ---------------------------------------------------------------
-\def\xintdocdate {2021/07/13}
-\def\xintbndldate{2021/07/13}
-\def\xintbndlversion {1.4j}
+\def\xintdocdate {2022/05/18}
+\def\xintbndldate{2022/05/18}
+\def\xintbndlversion {1.4k}
%</drv>
%<readme>% README
%<changes>% CHANGE LOG
-%<readme|changes>% xint 1.4j
-%<readme|changes>% 2021/07/13
+%<readme|changes>% xint 1.4k
+%<readme|changes>% 2022/05/18
%<readme|changes>
-%<readme|changes> Source: xint.dtx 1.4j 2021/07/13 (doc 2021/07/13)
+%<readme|changes> Source: xint.dtx 1.4k 2022/05/18 (doc 2022/05/18)
%<readme|changes> Author: Jean-Francois Burnol
%<readme|changes> Info: Expandable operations on big integers, decimals, fractions
%<readme|changes> License: LPPL 1.3c
%<readme|changes>
%<*!readme&!changes&!dohtmlsh&!makefile>
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%<xintkernel>%% xintkernel: Paraphernalia for the xint packages
%<xinttools>%% xinttools: Expandable and non-expandable utilities
%<xintcore>%% xintcore: Expandable arithmetic on big integers
@@ -128,7 +128,7 @@ is a functionality of all major TeX engines since TeXLive 2019.
License
=======
-Copyright (C) 2013-2021 by Jean-Francois Burnol
+Copyright (C) 2013-2022 by Jean-Francois Burnol
This Work may be distributed and/or modified under the
conditions of the LaTeX Project Public License version 1.3c.
@@ -152,6 +152,69 @@ See `xint.pdf` for contact information.
%</readme>--------------------------------------------------------
%<*changes>-------------------------------------------------------
+`1.4k (2022/05/18)`
+----
+
+### Breaking changes
+
+ - **xintfrac**: the longstanding (but documented as undecided and
+ unstable) way of `\xintFloat` to output the zero value was `0.e0` and
+ it has now been modified into `0.0e0`. Customizable via
+ `\xintFloatZero`.
+
+ - **xintfrac**/**xintexpr**: the behaviour of `\xintPFloat` (hence of
+ `\xintfloateval`) has again changed: when the output is an integer
+ (not using scientific notation) it does not get postfixed by `.0`.
+ This applies in particular for the zero value, now printed `0`.
+ Similarly, in the case of scientific notation with a single-digit
+ (trimmed) mantissa, no `.0` is used.
+
+ Customizable via
+ `\xintPFloatIntSuffix`, `\xintPFloatLengthOneSuffix`, and
+ `\xintPFloatZero`.
+
+ Also, `\xintPFloat` trims trailing zeros from the
+ full significand only if there are at least `4` of them, see
+ `\xintPFloatMinTrimmed`.
+
+ - **xintfrac**/**xintexpr**: definition of `\xintFracToSci` migrated
+ from the former to the latter.
+
+ - **xintexpr**: `\xintexpr{Safe,Restore}Catcodes` pairs now behave like
+ a "last in first out" stack. Check the `pdf` documentation for
+ details.
+
+### Bug fixes
+
+ - **xintexpr**: the `\xintexpr{Safe,Restore}Catcodes` were documented
+ at user level, but also used by the package `\xintdefvar` or
+ `\xintdeffunc`. This could result in some bad interaction due to the
+ somewhat strange (but documented) behaviour of nested
+ `\xintexpr{Safe,Restore}Catcodes` (which has now been modified).
+
+ - **xintexpr**: ever since `1.4`, `\xintdefufunc` (but not
+ `\xintdeffunc`) forgot to reset the catcodes to their status prior to
+ the sanitization done by the macro at the start of its execution.
+
+### New features
+
+ - **xintfrac**: `\xintPFloatZero`, `\xintPFloatIntSuffix`,
+ `\xintPFloatLengthOneSuffix`, `\xintPFloatNoSciEmax`,
+ `\xintPFloatNoSciEmin` and `\xintPFloatMinTrimmed` customize the
+ output of `\xintPFloat`, hence also of `\xintfloateval` (and of
+ `\xinteval` when scientific notation was used in the expression).
+ Also added `\xintFloatZero`.
+
+ - **xintfrac**: `\xintFloatToDecimal`.
+
+ - **xintexpr**: `\xintFracToDecimal`, an alternative to
+ `\xintFracToSci` for the configuration of `\xintexprPrintOne`.
+
+ - **xintexpr**: long awaited syntax `\xintieval[D]{...}` and
+ `\xintfloateval[Q]{...}` now implemented. The legacy syntax with
+ `\xintieval{[D]...}` and `\xintfloateval{[Q]...}` is kept for
+ backwards compatibility.
+
`1.4j (2021/07/13)`
----
@@ -2724,16 +2787,21 @@ cleanall: clean
#! /bin/sh
# <s>README.html and</s> CHANGES.html from <s>README.md and </s>CHANGES.md
# tested with pandoc 1.13.1
+# updated 2022 for usage with pandoc 2.18 and its strange CSS obsessed by mobile devices
# pandoc -o README.html -s --toc -V highlighting-css=' body{margin-left : 10%; margin-right : 15%; margin-top: 4ex; font-size: 12pt;}
# pre {white-space: pre-wrap; }
# code {white-space: pre-wrap; }
# .mono {font-family: monospace;}' README.md
-pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin-left : 10%; margin-right : 15%; margin-top: 4ex; font-size: 12pt;}
+pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin: 0; margin-left : 10%; margin-right : 15%; margin-top: 4ex; font-size: 20px; font-family: serif; max-width: 100%; padding: 0; }
pre {white-space: pre-wrap;}
code {white-space: pre-wrap;}
- #TOC {float: right; position: relative; top: 100px; margin-bottom: 100px;}' CHANGES.md
+ a:link { color: blue; }
+ a:visited { color: green; }
+ a:hover { text-decoration: underline; color: hotpink }
+ a:active { color: brown; }
+ #TOC {float: right; position: relative; top: 100px; margin-bottom: 100px; margin-left: 20px;}' CHANGES.md
%</dohtmlsh>------------------------------------------------------
%<*drv>-----------------------------------------------------------
@@ -2993,17 +3061,64 @@ pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin-left : 10%;
\usepackage[autolanguage,np]{numprint}
\AtBeginDocument{\npthousandsep{,\hskip .5pt plus .1pt minus .1pt}}
-\usepackage[dvipsnames]{xcolor}
-\definecolor{joli}{RGB}{225,95,0}
-\definecolor{JOLI}{RGB}{225,95,0}
-\definecolor{BLUE}{RGB}{0,0,255}
-\definecolor{niceone}{RGB}{38,128,192}
-\definecolor{sedate}{RGB}{193,132,1}
-\definecolor{saddlebrown}{rgb}{.545,.27,.075}
-\definecolor{jfbrown}{RGB}{165,100,10}%
-
-
-
+\usepackage[dvipsnames,svgnames]{xcolor}
+\definecolor{xintnamecolor}{RGB}{228,57,0}
+\colorlet{XINTNAMECOLOR}{xintnamecolor}
+\colorlet{xintnameimpcolor}{blue}
+\colorlet{XINTNAMEIMPCOLOR}{xintnameimpcolor}
+\definecolor{xintmanualurlcolor}{RGB}{38,128,192}
+\colorlet{xintmanuallinkcolor}{blue}
+
+
+
+
+% Colors for \verb and everbatim/everbatim* environments
+% former legacy colors used in xint.pdf up to xint 1.4j (2021/07/13)
+% (I should retrieve since when)
+% \colorlet{verbcolor}{jfbrown}
+% \colorlet{verbsoftwrapiconcolor}{blue}
+% \colorlet{everbatimfgcolor}{Brown}
+% \colorlet{everbatimbgcolor}{yellow!5}
+% \colorlet{everbatimxfgcolor}{OrangeRed}
+
+% https://contrast-ratio.com/#rgb%28165%2C100%2C10%29-on-white
+% says the contrast ratio on white is 4.74 and I do see the contrast
+% is less strong than
+% for the DarkBlue/Beige and Maroon/White combinations seen below
+% \colorlet{verbcolor}{jfbrown}
+% I will simply use also Maroon
+\colorlet{verbcolor}{Maroon}
+\colorlet{verbimpcolor}{Purple}
+\colorlet{digitsttcolor}{Maroon}
+
+\colorlet{verbsoftwrapiconcolor}{DarkBlue}
+\colorlet{everbatimfgcolor}{DarkBlue}
+%
+% According to
+% https://contrast-ratio.com/#rgb%2811%2C35%2C139%29-on-rgb%28245%2C244%2C220%29
+% the DarkBlue on Beige
+% gives a contrast-ratio of 11.58 which confirmed my intuition it is not bad
+% "Passes AAA level for any size text and AA for user interface components and graphical objects"
+%
+% memo: with Apple ColorPicker it seems one needs to select "sRVB" (I guess
+% "sRGB" in English) for values matching xcolor RGB input or the above html
+% page rgb(R,G,B) input, also this did not work
+% 100%, most probably due to the window transparency by default on my mac?
+\colorlet{everbatimbgcolor}{Beige}
+
+% https://contrast-ratio.com/#rgb%28128%2C31%2C19%29-on-white
+% gives 9.89 contrast ratio which is a bit less but still AAA
+\colorlet{everbatimxfgcolor}{Maroon}
+
+
+% colors for margin notes
+\colorlet{marginnotecolor}{PineGreen}
+\colorlet{marginwarningcolor}{Red}
+
+% colors for toc
+\colorlet{tocsectioncolor}{cyan}
+\colorlet{tocsectionimpcolor}{RoyalPurple}
+\colorlet{tocbundlesectioncolor}{xintnamecolor}
\usepackage{eso-pic}% après xcolor sinon Option clash for package xcolor.
@@ -3042,8 +3157,8 @@ pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin-left : 10%;
linktoc=all,%
breaklinks=true,%
colorlinks=true,%
-urlcolor=niceone,%
-linkcolor=blue,%
+urlcolor=xintmanualurlcolor,%
+linkcolor=xintmanuallinkcolor,%
pdfauthor={Jean-Fran\c cois Burnol},%
pdftitle={The xintexpr and allied packages},%
pdfsubject={Arithmetic with TeX},%
@@ -3068,95 +3183,8 @@ pdfpagemode=UseNone,%
-\DeclareFontFamily{T1}{newtxttb}{\hyphenchar\font\m@ne}
-
-\DeclareFontShape{T1}{newtxttb}{m}{n}{
- <-> s*[\newtxtt@scale]newtxttbq
-}{}
-\DeclareFontShape{T1}{newtxttb}{b}{n}{
- <-> s*[\newtxtt@scale]newtxbttbq
-}{}
-\DeclareFontShape{T1}{newtxttb}{bx}{n}{
- <-> ssub * newtxttb/b/n
-}{}
-\DeclareFontShape{T1}{newtxttb}{m}{sl}{
- <-> s*[\newtxtt@scale]newtxttslbq
-}{}
-\DeclareFontShape{T1}{newtxttb}{m}{it}{
- <-> ssub * newtxttb/m/sl
-}{}
-
-% Ajouté le 9 mars 2016
-
-\DeclareFontShape{T1}{newtxttb}{m}{sc}{%cap & small cap
- <-> s*[\newtxtt@scale]newtxttscbq
-}{}
-\DeclareFontShape{T1}{newtxttb}{b}{sc}{%bold cap & small cap
- <-> s*[\newtxtt@scale]newtxbttscbq
-}{}
-\DeclareFontShape{T1}{newtxttb}{b}{sl}{%bold slanted
- <-> s*[\newtxtt@scale]newtxbttslbq
-}{}
-\DeclareFontShape{T1}{newtxttb}{b}{it}{%bold italic
- <-> ssub * newtxttb/b/sl%
-}{}
-\DeclareFontShape{T1}{newtxttb}{bx}{sc}{%bold extended cap & small cap
- <-> ssub * newtxttb/b/sc%
-}{}
-\DeclareFontShape{T1}{newtxttb}{bx}{sl}{%bold extended slanted
- <-> ssub * newtxttb/b/sl%
-}{}
-\DeclareFontShape{T1}{newtxttb}{bx}{it}{%bold extended italic
- <-> ssub * newtxttb/b/sl%
-}{}
-
-% Ajouté le 9 mars 2016
-\DeclareEncodingSubset{TS1}{newtxttb}{0}
-\DeclareFontFamily{TS1}{newtxttb}{\hyphenchar\font\m@ne}
-
-\DeclareFontShape{TS1}{newtxttb}{m}{n}{%medium
- <-> s*[\newtxtt@scale]tcxtt%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{m}{sc}{%cap & small cap
- <->ssub * newtxttb/m/n%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{m}{sl}{%slanted
- <-> s*[\newtxtt@scale]tcxttsl%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{m}{it}{%italic
- <->ssub * newtxttb/m/sl%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{b}{n}{%bold
- <-> s*[\newtxtt@scale]tcxbtt%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{b}{sc}{%bold cap & small cap
- <->ssub * newtxttb/b/n%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{b}{sl}{%bold slanted
- <-> s*[\newtxtt@scale]tcxbttsl%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{b}{it}{%bold italic
- <->ssub * newtxttb/b/sl%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{bx}{n}{%bold extended
- <->ssub * newtxttb/b/n%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{bx}{sc}{ %bold extended cap & small cap
- <->ssub * newtxttb/b/sc%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{bx}{sl}{%bold extended slanted
- <->ssub * newtxttb/b/sl%
-}{}
-\DeclareFontShape{TS1}{newtxttb}{bx}{it}{%bold extended italic
- <->ssub * newtxttb/b/it%
-}{}
-
-
\makeatother
-% This is with a slashed 0 like the original txtt.
-\newcommand\ttbfamily {\fontfamily{newtxttb}\selectfont }
-
\ifnum\dosourcexint=1
\else
\renewcommand\familydefault\ttdefault
@@ -3178,8 +3206,7 @@ pdfpagemode=UseNone,%
\ifnum\dosourcexint=0
\inmanualmaintoctrue
\fi
-\def\sectioncouleur{{cyan}}
-
+\def\sectioncouleur{{tocsectioncolor}}
\def\MARGEPAGENO {1.5em}% changera pour la partie implémentation
@@ -3262,13 +3289,9 @@ pdfpagemode=UseNone,%
% =====================
-\def\digitstt #1{\begingroup\color[named]{OrangeRed}#1\endgroup}
+\def\digitstt #1{\begingroup\color{digitsttcolor}#1\endgroup}
\let\dtt\digitstt
-% \ctexttt is a remnant of 1.09n manual, don't have time to get rid of it now.
-\newcommand\ctexttt [1]{\begingroup\color[named]{DarkOrchid}%\bfseries
- #1\endgroup}
-
% \fexpan 22 octobre 2013
\newcommand\fexpan {\hyperref[ssec:expansions]{\textit{f}-expan}}
% Septembre 2015
@@ -3299,7 +3322,7 @@ pdfpagemode=UseNone,%
\def\@MyMarginNote [#1]#2{\@bsphack
\vadjust{\vskip-\dp\strutbox
\hbox{\smash{\hbox to 0pt
- {\color[named]{PineGreen}\normalfont\small
+ {\color{marginnotecolor}\normalfont\small
\hsize 1.6cm\rightskip.5cm minus.5cm
\hss\vtop{#2}\ $\to$#1\ }}}%
\vskip\dp\strutbox
@@ -3307,7 +3330,7 @@ pdfpagemode=UseNone,%
\def\MyMarginNoteWithBrace #1#2{\@bsphack
\vadjust{\vskip-\dp\strutbox
\hbox{\smash{\hbox to 0pt
- {\color[named]{PineGreen}%\normalfont\small
+ {\color{marginnotecolor}%\normalfont\small
\hss #1\ $\bigg\{$#2}}}%
\vskip\dp\strutbox
}\strut\@esphack}
@@ -3318,18 +3341,18 @@ pdfpagemode=UseNone,%
{\kern\dimexpr\FrameSep+\FrameRule\relax\ }}
\def\etype #1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{PineGreen}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginnotecolor}%
\itshape \xintListWithSep{\,}{#1}\ $\star$\quad }}}%
\vskip\dp\strutbox
}\strut\@esphack}
\def\xtype #1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{PineGreen}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginnotecolor}%
\itshape \xintListWithSep{\,}{#1}\ \ding{73}\quad }}}%
\vskip\dp\strutbox }\strut\@esphack}
\def\ntype #1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{PineGreen}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginnotecolor}%
\itshape \xintListWithSep{\,}{#1}\quad }}}%
\vskip\dp\strutbox }\strut\@esphack}
%
@@ -3348,7 +3371,7 @@ pdfpagemode=UseNone,%
%
\def\NewWith #1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{PineGreen}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginnotecolor}%
\normalfont\small\bfseries
\hsize 1.5cm\rightskip.5cm minus.5cm
\vtop{\noindent New with #1}\ }}}%
@@ -3356,7 +3379,7 @@ pdfpagemode=UseNone,%
%
\def\CHANGED #1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{Red}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginwarningcolor}%
\normalfont\small\bfseries
\hsize 1.5cm\rightskip.5cm minus.5cm
\vtop{\noindent Changed at #1!}\ }}}%
@@ -3364,7 +3387,7 @@ pdfpagemode=UseNone,%
\def\DNU#1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{Red}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginwarningcolor}%
\normalfont\small\bfseries
\hsize 1.5cm\rightskip.5cm minus.5cm
\vtop{\noindent Do not use! #1}\ }}}%
@@ -3372,7 +3395,7 @@ pdfpagemode=UseNone,%
\def\UNSTABLE#1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{Red}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginwarningcolor}%
\normalfont\small\bfseries
\hsize 1.5cm\rightskip.5cm minus.5cm
\vtop{\noindent Unstable! #1}\ }}}%
@@ -3380,7 +3403,7 @@ pdfpagemode=UseNone,%
\def\unstable#1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{Red}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginwarningcolor}%
\normalfont\small\bfseries
\hsize 1.5cm\rightskip.5cm minus.5cm
\vtop{\noindent unstable? #1}\ }}}%
@@ -3388,7 +3411,7 @@ pdfpagemode=UseNone,%
\def\DEPRECATED #1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{PineGreen}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginnotecolor}%
\normalfont\small\bfseries
\hsize 2cm\rightskip.5cm minus.5cm
\vtop{\noindent Deprecated! (#1)}\ }}}%
@@ -3396,7 +3419,7 @@ pdfpagemode=UseNone,%
%
\def\CHANGEDf #1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{Red}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginwarningcolor}%
\normalfont\small\bfseries
\hsize 1.5cm\rightskip.5cm minus.5cm
\vtop{\noindent Changed at #1!}\
@@ -3405,7 +3428,7 @@ pdfpagemode=UseNone,%
%
\def\NewWithf #1{\@bsphack
\vadjust{\vskip-\dp\strutbox
- \hbox{\smash{\hbox to 0pt {\hss\color[named]{PineGreen}%
+ \hbox{\smash{\hbox to 0pt {\hss\color{marginnotecolor}%
\normalfont\small\bfseries
\hsize 1.5cm\rightskip.5cm minus.5cm
\vtop{\noindent New with #1}\
@@ -3476,29 +3499,6 @@ pdfpagemode=UseNone,%
-% \MacroFont and \MicroFont
-% =========================
-
-\def\restoreMicroFont {\def\MicroFont {\ttbfamily\makestarlowast
-% \ifinlefted\else\ifineverb\else\color[named]{verbatim}\fi\fi
-% \ifinlefted\else\color[named]{saddlebrown}\fi
-% \ifinlefted\else\color[named]{sedate}\fi
- \ifinlefted\else\color[named]{jfbrown}\fi
-}}
-\restoreMicroFont
-
-% Notice that \macrocode uses \macro@font which stores the \MacroFont meaning
-% in force at \begin{document}. But doc.sty's verbatim uses current \MacroFont
-% not the meaning at \begin{document}. Comprenne qui pourra...
-
-\def\restoreMacroFont {\def\MacroFont {\ttbfamily
-% \ifinlefted\else\ifineverb\else\color[named]{Blue}\fi\fi
-% \ifinlefted\else\color[named]{Blue}\fi
-% \ifinlefted\else\color[named]{sedate}\fi
- \ifinlefted\else\color[named]{Brown}\fi
-}}
-\restoreMacroFont
-
% \verb
% =====
@@ -3528,6 +3528,14 @@ pdfpagemode=UseNone,%
% with delimited argument. Here is what I do now, this is compatible
% with short verbs.
+\def\verbcolorcmd{\color{verbcolor}}
+\def\verbsoftwrapiconcolorcmd{\color{verbsoftwrapiconcolor}}
+
+\def\restoreMicroFont {\def\MicroFont {\ttfamily\makestarlowast
+ \ifinlefted\else\verbcolorcmd\fi
+}}
+\restoreMicroFont
+
\def\verb
{%
\relax \ifmmode\else\leavevmode\null\fi
@@ -3535,7 +3543,7 @@ pdfpagemode=UseNone,%
\let\do\@makeother \dospecials
\@ifstar{\@sverb}% \verb* is used in the index (obsolete: no indices at 1.3e),
% leave it using ambient font
- {\MicroFont % used to change font (ttbfamily=slashed 0), color,
+ {\MicroFont % used to change font (\ttfamily), color,
% will make * active via \makestarlowast
\catcode 32 10 \endlinechar 32 % allows to fetch across line breaks
\frenchspacing % done globally in document
@@ -3570,24 +3578,22 @@ pdfpagemode=UseNone,%
#1\expandafter\@@jfverb_b\fi
}
-% \SoftWrapIcon box for line-breaking using discretionaries
-% =========================================================
\DeclareFontFamily{U}{MdSymbolC}{}
\DeclareFontShape {U}{MdSymbolC}{m}{n}{<-> MdSymbolC-Regular}{}
-
\newbox\SoftWrapIcon
-\colorlet {softwrapicon}{blue}
-% Emacs/AUCTeX uses very strange comment-like highlighting for \usefont{U}...
\def\SetSoftWrapIcon{%
\setbox\SoftWrapIcon\hb@xt@\z@
- {\hb@xt@\fontdimen2\font
- {\hss{\color{softwrapicon}\usefont{U}{MdSymbolC}{m}{n}\char"97}\hss}%
+ {\kern.5ex%\hb@xt@\z@%\fontdimen2\font
+ %{
+ \smash{\lower3pt\hbox{%
+ \verbsoftwrapiconcolorcmd\usefont{U}{MdSymbolC}{m}{n}\char 151
+ }}%\hss}%
\hss}%
}
-\AtBeginDocument {\SetSoftWrapIcon }% ttzfamily déjà fait
+\AtBeginDocument {\SetSoftWrapIcon }% ok car ttzfamily déjà fait
\catcode`_ 8
\makeatother
@@ -3595,6 +3601,14 @@ pdfpagemode=UseNone,%
% everbatim environment
% =====================
+\def\restoreMacroFont {\def\MacroFont {\ttfamily
+ \ifinlefted\else\color{everbatimfgcolor}\fi
+}}
+\restoreMacroFont
+% Notice that \macrocode uses \macro@font which stores the \MacroFont meaning
+% in force at \begin{document}. But doc.sty's verbatim uses current \MacroFont
+% not the meaning at \begin{document}. Comprenne qui pourra...
+
% October 13-14, 2014
% Verbatim with an \everypar hook, mainly to have background color, followed by
% execution of the contents (not limited by a group-scope)
@@ -3602,44 +3616,10 @@ pdfpagemode=UseNone,%
\makeatletter
\catcode`_ 11
-% Je modifie Mardi 18 février 2020 \MacroFont
-% pour essayer couleur de foreground,
-% je supprime donc le \ifineverb de \MacroFont.
-% \newif\ifineverb
-\def\everbatimtop {\MacroFont \small}
-\let\everbatimbottom\relax
-\let\everbatimhook\relax
-
-\def\everbatim {\s@everbatim\@everbatim }
-\@namedef{everbatim*}{\s@everbatim\expandafter\@everbatimx\expandafter
- {\the\newlinechar}}
-
-\def\everbatimeverypar{\strut
- {\color{yellow!5}\vrule\@width\linewidth }%
- \kern-\linewidth
- \kern\everbatimindent }
-\def\everbatimindent {\z@}
-% voir plus loin atbegindocument
-
-\def\endeverbatim {\if@newlist \leavevmode\fi\endtrivlist }
-
-\@namedef{endeverbatim*}{\endeverbatim\aftergroup\everbatimundoparskip}
-\def\everbatimundoparskip{\vbox{}\kern-\baselineskip\kern-\parskip}
-% Note 24 juin 2021
-%
-% Si everbatim[*] suit immédiatement un premier everbatim* dont l'exécution
-% n'a fait que des définitions de macros sans créer de paragraphe (ou un
-% environnment de liste comme center) le \kern-\parskip émis après le rendu
-% verbatim (et qui vient de \everbatimundoparskip) ne sera pas compensé.
-% Plus précisément le everbatim* (ou everbatim) qui vient en
-% deuxième utilise \trivlist mais en ayant mis les paramètres d'espacements
-% verticaux à zéro. Donc il y aura chevauchement.
-%
-% Pour régler ce problème, on peut :
-% - soit fusionner les deux everbatim*,
-% - soit si cela est embêtant, par exemple si le second environnment est
-% un everbatim, pas un everbatim*, ajouter \kern-\parskip entre les deux.
+\def\everbatim {\s@everbatim\@everbatim}
+\@namedef{everbatim*}{\s@everbatim\@everbatimx}
+% Note: one can not use everbatim inside itself or everbatim* inside itself
\def\s@everbatim {%
% \ineverbtrue
\everbatimtop % put there size changes
@@ -3669,6 +3649,13 @@ pdfpagemode=UseNone,%
}%
\obeylines \@vobeyspaces
}
+\def\everbatimtop {\MacroFont \small}%
+\let\everbatimhook\empty
+\def\everbatimeverypar{\strut
+ {\color{everbatimbgcolor}\vrule\@width\linewidth }%
+ \kern-\linewidth
+ \kern\everbatimindent }
+\def\everbatimindent {\z@}% voir plus loin atbegindocument
\begingroup
\lccode`X 13
@@ -3682,38 +3669,79 @@ pdfpagemode=UseNone,%
|lowercase[|endgroup% both freezes catcodes and converts X to active ^^M
|def|@everbatim #1X#2\end{everbatim}%
[#2|end[everbatim]|everbatimbottom ]
-|def|@everbatimx #1#2X#3\end{everbatimY}]%
- {#3\end{everbatim*}%
- \everbatimbottom
+|def|@everbatimx #1X#2\end{everbatimY}]%
+ {#2\end{everbatim*}%
+% No group here: this allows executed code to make macro
+% definitions which may reused in later uses of everbatim.
+% refactored 2022/01/11, rather than passing \newlinechar value
+% as was done formerly via everbatim* (see above) and fetching it here as #1
+% it is thus assumed executed contents do not terminate a scope
+ \edef\everbatimrestorenewlinechar{\newlinechar\the\newlinechar\relax}%
\newlinechar 13
+% refactored 2022/01/11 to fix a \parskip issue
+% attention, \parskip thus set to zero for execution of contents
+% reason: avoid extra space if everbatim* is in an \item of a list
+% between verbatim and output of execution, if it starts a paragraph
+% a \vskip-\parskip approach (cf former \everbatimundoparskip)
+% would be no good in case contents create a display
+ \edef\everbatimrestoreparskip{\parskip\the\parskip\relax}%
+ \parskip\z@skip
+% execution of the contents (expected to be LaTeX code...)
\everbatimxprehook
- \scantokens {#3}%
- \newlinechar #1\relax
+ \scantokens {#2}%
+ \everbatimrestorenewlinechar
+ \everbatimrestoreparskip
\everbatimxposthook
+% input after \end{everbatim*} on same line in source is allowed
}%
-
-% L'espace venant du endofline final mis par \scantokens sera inhibé si #3 se
+% L'espace venant du endofline final mis par \scantokens sera inhibé si #2 se
% termine par un % ou un \x, etc...
-\def\everbatimxprehook {\colorlet{everbsavedcolor}{.}\color[named]{OrangeRed}}
-\def\everbatimxposthook {\color{everbsavedcolor}}
+\let\everbatimbottom\empty
+
+\def\endeverbatim{\if@newlist \leavevmode\fi\endtrivlist}
+\@namedef{endeverbatim*}{\endeverbatim}
+
+% There is an issue with how to inhibit the \parskip if execution
+% of contents generate a paragraph. Because the design is aimed at
+% keeping output close to verbatim input.
+% Even in a document with zero \parskip overall, the \parskip will possibly
+% be reset to some annoying high value e.g. if we are in an \item of a list
+% environment.
+% In this documentation, many usage of everbatim* are indeed inside such
+% \item's. The former (2020) approach was to do:
+% \@namedef{endeverbatim*}{\endeverbatim\aftergroup\everbatimundoparskip}
+% \def\everbatimundoparskip{\vbox{}\kern-\baselineskip\kern-\parskip\leavevmode}
+% but it had its problems if executed contents start a display, with
+% not enough vertical whitespace then
+% Also if source had two everbatim* environments one after the other,
+% the first one not producing any ouput, this caused overlap.
+% The new approach (Feb 2022) is much simpler and avoids these problems.
+
+
+% These definitions are provisory and get overwritten below in order
+% to avoid color stack overflow problems with latex + dvipdfmx, and xelatex
+\def\everbatimxprehook {\colorlet{everbsavedcolor}{.}%
+ \color{everbatimxfgcolor}}%
+\def\everbatimxposthook{\color{everbsavedcolor}}
+% actual definitions:
+{\sbox0{\color{everbatimxfgcolor}\xdef\@tempa{\current@color}}}
\ifpdf
- \def\everbatimxprehook
- {\pdfcolorstack\@pdfcolorstack push{0 1 0.5 0 k 0 1 0.5 0 K}\relax}
- \def\everbatimxposthook
- {\pdfcolorstack\@pdfcolorstack pop\relax}
+ \edef\everbatimxprehook
+ {\pdfcolorstack\noexpand\@pdfcolorstack push{\@tempa}\relax}
+ \def\everbatimxposthook{\pdfcolorstack\@pdfcolorstack pop\relax}
\else
% Le 24 juin 2021 je vérifie que ceci est encore nécessaire avex xelatex
% (sinon color leak de OrangeRed à partir de la page 97 dans la doc)
% et aussi pour dvipdfmx (sinon color stack overflow au moment de la page 98
% lors du passage par dvipdfmx)
\ifxetex
- \def\everbatimxprehook {\special{color push cmyk 0 1 0.5 0}}
- \def\everbatimxposthook {\special{color pop}}
+ \edef\everbatimxprehook{\special{color push \@tempa}}
+ \def\everbatimxposthook{\special{color pop}}
\else
\ifnum\Withdvipdfmx=1
- \def\everbatimxprehook {\special{pdf:bcolor OrangeRed}}
- \def\everbatimxposthook {\special{pdf:ecolor}}
+ \edef\everbatimxprehook{\special{color push \@tempa}}
+ \def\everbatimxposthook{\special{color pop}}
\fi\fi\fi
@@ -3877,20 +3905,20 @@ pdfpagemode=UseNone,%
\expandafter\def\csname #1name\endcsname
{\texorpdfstring
{\hyperref[sec:#2]%
- {\relax{\color{joli}\MakeNameUp{#1}}}}%
+ {\relax{\color{xintnamecolor}\MakeNameUp{#1}}}}%
{#1}%
\xspace }%
\expandafter\def\csname #1nameimp\endcsname
{\texorpdfstring
{\hyperref[sec:#2imp]%
- {\relax{\color{blue}\MakeNameUp{#1}}}}%
+ {\relax{\color{xintnameimpcolor}\MakeNameUp{#1}}}}%
{#1}%
\xspace }%
}%
\def\DOCxintfrontpage
{\texorpdfstring
- {\hyperref[frontpage]{\relax{\color{joli}TOC}}}%
+ {\hyperref[frontpage]{\relax{\color{xintnamecolor}TOC}}}%
{TOC}%
\xspace }%
@@ -3943,7 +3971,7 @@ pdfpagemode=UseNone,%
The \xintnameimp packages source code\par
\gdef\DOCxintfrontpage
{\texorpdfstring
- {\hyperref[frontpage]{\relax{\color{blue}TOC}}}%
+ {\hyperref[frontpage]{\relax{\color{xintnameimpcolor}TOC}}}%
{TOC}%
\xspace }%
\else
@@ -3967,19 +3995,19 @@ pdfpagemode=UseNone,%
\def\DOCxintexprintro
{\texorpdfstring
- {\hyperref[part:1]{\relax{\color{joli}\MakeNameUp{Start here}}}}%
+ {\hyperref[part:1]{\relax{\color{xintnamecolor}\MakeNameUp{Start here}}}}%
{Start here}%
\xspace }%
\def\DOCxintexprmacros
{\texorpdfstring
- {\hyperref[sec:oldxintexpr]{\relax{\color{joli}\MakeNameUp{xintexpr}}}}%
+ {\hyperref[sec:oldxintexpr]{\relax{\color{xintnamecolor}\MakeNameUp{xintexpr}}}}%
{xintexpr}%
\xspace }%
\def\DOCexamples
{\texorpdfstring
- {\hyperref[sec:examples]{\relax{\color{joli}\MakeNameUp{Examples}}}}%
+ {\hyperref[sec:examples]{\relax{\color{xintnamecolor}\MakeNameUp{Examples}}}}%
{Examples}%
\xspace }%
@@ -4254,7 +4282,7 @@ pdfpagemode=UseNone,%
\etocsetnexttocdepth{section}
\localtableofcontents
-\section {Usage}
+\section {Introduction and changes}
\begin{itemize}
\item To use with |etex|, |pdftex|, ..., i.e.\@ with \TeX{} engines activating
@@ -4346,38 +4374,28 @@ which got randomly shuffled to new places (at least I did delete large
sections, which was a hard decision to take, almost breaking the palimpsest
quality of the document). Reports welcome.%
%
-\footnote{Thanks to Jürgen Gilg for keeping the author motivated and
- helping proof-read the 1.4 documentation.}
+\footnote{Thanks to Jürgen Gilg for keeping the author motivated and helping
+ proof-read the 1.4 documentation. Sadly, Jürgen passed away unexpectedly in
+ 2022. His enthusiasm, kindness, and friendship will be profundly missed.}
-\subsection{Improved support for logarithm, exponential, sine, etc...\@ at
- the \texttt{1.4e} release of \texttt{2021/05/05}}
-
-They are now supported up to \dtt{62} digits and achieve «correct rounding»%
-%
-\footnote{This means that the produced value is the rounding to |Digits|
- significant digits of the theoretical exact mathematical value. The
- rounding mode is currently not customizable and is «rounding to nearest,
- ties go to infinity of same sign».}
-%
-at least
-in \dtt{99\%} of cases%
-%
-\footnote{It is even better than that, but depends a bit on how |Digits| is
- located relative to some thresholds governing Taylor series
- or other approximation means.}
-%
-for |Digits| being at least \dtt{9}.
+\subsection{Breaking changes since the \texttt{1.4} release}
-For Digits up to \dtt{8}, a special more approximate implementation is used,
-and the functions achieve the correct rounding (particularly at |Digits|
-equal to \dtt{8} or \dtt{7}) less often, but are significantly faster
-(especially logarithm, exponential, powers) than working with \dtt{9} digits
-or more. The achieved precision is largely enough for plots.
-
-See \xintlogname and \xinttrigname for some additional information.
+\subsubsection{Breaking changes at the \texttt{1.4k} release}
+\begin{enumerate}[noitemsep]
+ \item Changed behaviour for nested
+ \csbxint{exprSafeCatcodes}/\csbxint{exprRestoreCatcodes}.
+ \item The output format of \csbxint{floateval}, which by default is produced
+ by \csbxint{PFloat}, has changed once more (!): integers (without
+ scientific exponent) get now printed without a trailing "\dtt{.0}".
+ Furthermore trailing zeros in the significand are removed only if there are
+ at least \dtt{4} of them. This changed behaviour is reversible
+ via customizing macros.
+ \item \csbxint{Float} now outputs the zero value as
+ "\dtt{\xintFloat{0}}". Customizable via \csbxint{FloatZero}.
+\end{enumerate}
-\subsection{Breaking changes at the \texttt{1.4g} release}
+\subsubsection{Breaking changes at the \texttt{1.4g} release}
\begin{enumerate}[noitemsep]
\item Power operators |**| and |^| are now parsed
@@ -4394,7 +4412,7 @@ $$5^{4^{3^2}} = 5^{262144}\approx \xintTeXfromSci{\xintfloateval{5^4^3^2}}$$
respectively.
\end{enumerate}
-\subsection{Breaking changes at the \texttt{1.4f} release}
+\subsubsection{Breaking changes at the \texttt{1.4f} release}
\begin{enumerate}[noitemsep]
\item \csbxint{ieval}|{[-D]...}|\IMPORTANT{}
@@ -4414,7 +4432,7 @@ $$5^{4^{3^2}} = 5^{262144}\approx \xintTeXfromSci{\xintfloateval{5^4^3^2}}$$
of |Digits| and \dtt{64} digits.
\end{enumerate}
-\subsection{Breaking changes at the \texttt{1.4e} release}
+\subsubsection{Breaking changes at the \texttt{1.4e} release}
In principle, I try for breaking changes regarding output to happen only at
major releases. But it is not as if I had a gigantic user base, and sometimes
@@ -4429,13 +4447,16 @@ support is needed...
\begin{itemize}
\item \csbxint{floateval} output macro \csbxint{PFloat} has been modified. In
- particular mantissas are trimmed of trailing zeros. Integers are printed
- with a zero after the decimal mark.
+ particular mantissas are trimmed of trailing zeros.
+ {\setbox8\hbox{Integers are printed with a zero after the decimal mark.}%
+ \rule[0.5ex]{\wd8}{1pt}\kern-\wd8\box8}\CHANGED{1.4k again}
\item \csbxint{eval} output macro \csbxint{FracToSci} has been modified,
regarding the handling of numbers involving a decimal exponent; rather than
- printing out an integer mantissa, it now uses the same conventions as
- \csbxint{PFloat} (of course without pre-rounding to the |Digits| precision).
- The \csa{xintFracToSciE} was removed because \csbxint{PFloatE} is used.
+ printing out an integer mantissa, it uses scientific notation,
+ i.e.\@ more specifically it uses the same conventions as
+ \csbxint{PFloat}, but of course without pre-rounding to the |Digits| precision.
+ The \csa{xintFracToSciE} macro was removed because \csbxint{PFloatE}
+ is used in its place.
Notice though that fractions are still not automatically reduced to lowest
terms even on output. I hesitated about this, but when for example the
@@ -4443,7 +4464,7 @@ support is needed...
it would be a very costly operation to apply \csbxint{Irr} or \csbxint{PIrr}
to it.
\item \csbxint{ieval} was modified to use on output
- \csbxint{DecToString} and not anymore \csbxint{FracToSci}.
+ \csbxint{DecToString}, not \csbxint{FracToSci}.
This means than in case of usage of the |[D]| optional argument with a
negative |D| (i.e.\@ rounding the output to a multiple of a positive power
@@ -4483,7 +4504,50 @@ support is needed...
For bugfixes and possibly more details check |CHANGES.html|:
\centeredline{|texdoc --list xint|}
+
+
\begin{itemize}
+\item The most important has been the improved support for logarithm, exponential,
+sine, etc...\@ added at the \texttt{1.4e} release of \texttt{2021/05/05}:
+
+They\NewWith{1.4e !!} are now supported up to \dtt{62} digits and achieve «correct rounding»%
+%
+\footnote{This means that the produced value is the rounding to |Digits|
+ significant digits of the theoretical exact mathematical value. The
+ rounding mode is currently not customizable and is «rounding to nearest,
+ ties go to infinity of same sign».}
+%
+at least
+in \dtt{99\%} of cases%
+%
+\footnote{It is even better than that, but depends a bit on how |Digits| is
+ located relative to some thresholds governing Taylor series
+ or other approximation means.}
+%
+for |Digits| being at least \dtt{9}.
+
+For Digits up to \dtt{8}, a special more approximate implementation is used,
+and the functions achieve the correct rounding (particularly at |Digits|
+equal to \dtt{8} or \dtt{7}) less often, but are significantly faster
+(especially logarithm, exponential, powers) than working with \dtt{9} digits
+or more. The achieved precision is largely enough for plots.
+
+See \xintlogname and \xinttrigname for some additional information.
+
+\item The long awaited\NewWith{1.4k} syntax \csbxint{ieval}|[D]{...}| and
+ \csbxint{floateval}|[Q]{...}| has been implemented. The legacy
+ \csbxint{ieval}|{[D]...}| and \csbxint{floateval}|{[Q]...}| syntax is kept
+ for backwards compatibility.
+
+\item \csbxint{FloatToDecimal}, \csbxint{FracToDecimal}.\NewWith{1.4k}
+
+\item \csbxint{PFloat}\NewWith{1.4k} is customizable via \csbxint{PFloatZero},
+ \csbxint{PFloatIntSuffix}, \csbxint{PFloatLengthOneSuffix},
+ \csbxint{PFloatNoSciEmax}, \csbxint{PFloatNoSciEmin} and
+ \csbxint{PFloatMinTrimmed}.
+
+\item \csbxint{FloatZero}.\NewWith{1.4k}
+
\item The concept of simultaneous assignments is extended:\NewWith{1.4i} in
case of more variables than values the extraneous variables do not cause an
error message but are simply set to the |nil| value; in case of more values
@@ -4497,9 +4561,6 @@ For bugfixes and possibly more details check |CHANGES.html|:
\item \csbxint{TeXfromSci}\NewWith{1.4g}
- \item The most important feature is at |1.4e| the extended range and accuracy
- of the scientific functions, up to \dtt{62} digits.%\NewWith{1.4e}
-
\item The constraints for the replacement macro to be used for
\csbxint{exprPrintOne} have been much simplified. See the
documentation of \csbxint{FracToSci} which is the package default.
@@ -4590,7 +4651,7 @@ author a few decades to finish absorbing Python/NumPy.
\end{itemize}
\end{framed}
-\subsection{Known bugs/features (last updated at \texttt{1.4i})}
+\subsection{Known bugs/features (last updated at \texttt{1.4j})}
\begin{description}
\item[if(100>0,(100,125),(100,128)) breaks my code:]
@@ -4668,6 +4729,14 @@ author a few decades to finish absorbing Python/NumPy.
only at |1.4h|. The non-nested case |seq((i)?{i}{abort}+10, i=-2, -1, 0,
1)| works and the «must be last in expression if nested» limitation is
currently considered a feature.
+
+\item[{seq([i,i\string^2], i=1..10) crashes with Ooops, looks like we are missing a
+ ]. Aborting!}]
+%
+ The cause is that the square brackets do not hide the comma from |seq()|
+ parsing. This will probably remain ``wont-fix''. Work-arounds: either use
+ an extra pair of parentheses |seq(([i,i^2]), ...)| or hide the inner
+ comma within braces |seq([i{,}i^2], ...)|.
\end{description}
The list stops here, but there are certainly other pending bugs in my bug-log,
@@ -4734,405 +4803,48 @@ The rendering here uses extra decoration.
\localtableofcontents
-\subsection{Oples and nutples: terminology for the \text{1.4} \xintname generation}\label{oples}
-
-\emph{Skip this on first reading, else you will never start using the
- package.} \fbox{SKIP THIS!} (understood?)
-
-In this section I will describe a mathematical terminology which models
-how the parser handles the input syntax with numbers, commas, and brackets,
-and how it maps internally to \TeX\ specific concept, particularly braces and
-macro arguments.
-
-\etocsetnexttocdepth{subsubsection}
-\localtableofcontents
-
-\subsubsection{Base terminology}
-
-We start with a set $\mathcal{A}$ of \emph{atoms}, which represent numeric
-data. In \TeX{} syntax such \emph{atoms} are always braced, more precisely,
-currently they look like
-%
-\centeredline{\dtt{\{raw format within \TeX{} braces\}}}
-%
-The \TeX{} braces are not set-theoretical braces here, they are simply used
-for \TeX nical reasons (one could imagine using rather some terminator token,
-but ultimately support macros for built-in and user defined functions rely on
-\TeX\ macros with undelimited parameters, at least so far).
-
-Our category $\mathcal{C}$ of «oples» is the smallest collection of
-\emph{totally ordered finite sets} verifying these properties:
-\begin{enumerate}
-\item The empty set \dtt{$\emptyset$} is an \emph{ople}, i.e.\@ it belongs to
- $\mathcal{C}$.
-\item Each singleton set \dtt{$\{O\}$} whose element \dtt{$O$} is either an
- \emph{atom} $a\in\mathcal{A}$ or an \emph{ople} qualifies as an \emph{ople}.
-\item $\mathcal{C}$ is stable by concatenation.
-\end{enumerate}
-
-Notes:
-\begin{itemize}
-\item
-We refer to the empty set \dtt{$\emptyset$} via the variable \emph{nil}.%
-%
-\footnote{There is
-actually a built-in variable with this name. At |1.4|, |\xintexpr\relax| is
-legal and also generates the \emph{nil}.}
-
-\item It is convenient to accept the empty set as being also an
- \emph{atom}. If this is done, then we may refer to the original
- \emph{atoms} (elements of $\mathcal{A}$) as \emph{non empty numerical data}.
-
-\item
-Concatenation is represented in the syntax by the
-comma. Thus repeated commas are like only one and |nil| is a neutral element.
-
-\item A singleton \emph{ople} \dtt{$\{a\}$} whose single element is a
- (non-empty) \emph{atom} is called a \emph{number}.%
-%
- \footnote{This has to be taken in a general sense, for example with
- \ctanpackage{polexpr}, polynomials are represented by such «numbers».}
-%
-
-\item
-The operation of constructing \dtt{$\{O\}$} from the \emph{ople} \dtt{$O$} is
-called \emph{bracing} (set theory, \TeX), or \emph{bracketing} (\xintexprname
-input syntax, Python |lists|), or \emph{packing} (as a reverse to Python's
-unpacking of sequence type objects). In the expression input syntax it
-corresponds to enclosing \dtt{$O$} within square brackets: \dtt{$[O]$}.
-
-\item A braced \emph{ople} is called a \emph{nutple}. Among them \dtt{\{nil\}}
- (aka $\{\emptyset\}$) is a bit special. It is called the \emph{none-ple}.%
-%
- \footnote{Prior to version |1.4j| of this documentation it was called the
- \emph{not-ple}.}
-%
-It is not \dtt{nil}.%
-%
-\footnote{There is (experimental) a pre-defined «\dtt{None}» variable which
- stands for the \emph{none-ple}. It can also be input as |[]|.}
-\end{itemize}
-
-Each \emph{ople} has a \emph{length} which is its cardinality as set. The
-singleton |oples| are called \emph{one-ples}. There are thus two types of
-\emph{one-ples}:
-\begin{itemize}
-\item \emph{numbers} \dtt{$\{a\}$}, $a \in \mathcal{A}$,
-\item \emph{nutples} \dtt{$\{O\}$}, $O \in \mathcal{C}$.
-\end{itemize}
-
-If we consider the empty set |nil| on the same footing as |atoms|, the two
-types have only one common object which is the \emph{none-ple}. As a rule
-arithmetic operations will either break or silently convert the \emph{none-ple}
-to the zero value:
-\begin{everbatim*}
-\xinteval{3+[], 5^[], 10*[]}
-\end{everbatim*}.
-But attention that \csbxint{iieval} in contrast to \csbxint{eval} is broken by
-such inputs.
-
-\subsubsection{Items (and sub-items) versus elements}
+\subsection{The three parsers}
-In order to illustrate these concepts, let us consider how one should
-interpret notation such as |3,5,7,9| when it arises in an
-\csbxint{expr}|ession|:
-\begin{description}
-\item[tempting vocabulary:] Each of |3|, |5|, |7|, and |9| is an \emph{item}, or
- \emph{element} of the (comma separated) \emph{list}. In other terms we have
- here a list with 4 items.
-\item[rigorous vocabulary:] each one of |3|, |5|, |7|, |9| stands for an
- \emph{ople} (of the \emph{one-ple} type) and |3,5,7,9| stands for their \emph{concatenation}.
+\xintexprname provides three numerical expression parsers corresponding to
+these three respective tasks:
+\begin{description}[noitemsep]
+\item[\csh{xinteval}:] exact evaluations with fractions, decimal fixed point numbers, numbers
+ in scientific notation, with no size limitation,
+\item[\csh{xintiieval}:] evaluations allowing only integers with no size limitation,
+\item[\csh{xintfloateval}:] evaluations with floating points numbers according to the prevailing
+ precision (see \csbxint{Digits*}),
\end{description}
-It is important to understand that in an \csbxint{expr}|ession|, there is no
-difference between |3,5,7| and |3,,,,5,,,,,,,,,7|. So the view of the comma
-as separator is misleading. In other terms, the comma is NOT a separator but
-the (associative) operator of concatenation of totally ordered sets, and the
-number |3| for example represents a (singleton) set.
-
-If we want to refer to |3| or |5| or |7| or |9| as «the items of the
-(open) list |3,5,7,9|» (and probably this documentation already has such
-utterances, due to legacy reasons from the pre-|1.4| internal model), we
-\emph{must} realize that this clashes with using the word \emph{item} as
-synonymous to \emph{element} in the set-theoretical sense.
-
-To repeat, any ople \dtt{$O$} is a finite totally ordered set: if not the empty
-set, it has \emph{elements} \dtt{$a_1$}, \dots, \dtt{$a_k$}, and the above means that
-its \emph{items} are the singleton oples (aka one-ples) \dtt{$I_1=\{a_1\}$},
-\dots, \dtt{$I_k=\{a_k\}$}. Each \dtt{$a_j$} may be an |atom|, then
-\dtt{$I_j$} is a |number|, or \dtt{$a_j$} is an |ople| (possibly the empty set), then
-\dtt{$I_j$} is a |nutple| whose depth is one more than the one of the ople
-\dtt{$a_j$}.
-
-Thus we can refer to «items» but must then understand they are not «elements»:
-«items» are «singleton sub-sets». The cardinality (aka length) of an ople is
-also the number of its
-items. It would be tempting to use the terminology «sub-item» to keep in mind they are «sub-sets»
-but this would again create confusion: a |nutple| has only one item which is
-itself; and we need some terminology to refer to the individual numbers in the
-|nutple| given in input as |[1,2,3]| for example. It is natural to refer to
-|1|, |2|, |3| as «sub-items» of |[1,2,3]| as the latter may be an «item» (it
-is in particular an «item» of itself, the unique one at that).
-
-We distinguish the |oples| of length zero (there is only one, the empty set)
-or at least two as those which can never be an «item». Those of length one,
-the |one-ples|, are exactly those which can be «items». Among them some may
-have «sub-items», they are the |nutples| with the exception of the |none-ple|.
-And the others do not have «sub-items», they are the |numbers| and the |none-ple| (whose input syntax is
-either |[]| or the variable |None|).%
-%
-\footnote{%
-A note on the \csbxint{verbosetrue} regime: for a variable defined to be
-|3,5,7,9|, it will say that its value is |{3}{5}{7}{9}|, because it does not
-keep the external set-theoretical braces. The braces here are only \TeX{}
-braces, and |{3}| is an |atom|. The |number| would be |{{3}}| with the
-external braces being set-theoretical and also used internally as \TeX{}
-braces. From the four numbers |{{3}}|, ..., |{{9}}| concatenation gives
-|{{3}{5}{7}{9}}|, which is the |ople| |3,5,7,9|. But the log view drops
-deliberately the external braces. If the variable is defined to be the
-|nutple| |[3,5,7,9]|, then the log view will be |{{3}{5}{7}{9}}| (up to
-details on how exactly the numeric quantities are coded) and the actual
-internal \TeX{} entity will be |{{{3}{5}{7}{9}}}|, where the two external
-layers of braces are both set-theoretical and \TeX nical braces.}
-
-
-\subsubsection{Oples as trees}
-
-We say that the empty set |nil| and \emph{atoms} are \emph{leaves}.
-
-We associate with any \emph{ople} a tree. The root is the ople. In the case of
-the |nil| ople, there is nothing else than the root, which we then consider
-also a \emph{leaf}. Else the children at top level are the successive
-\emph{elements} (not «items»!) of the ople.%
-%
-\footnote{\label{fn:alttree}%
- We could also consider a tree for which the children of the root node would
- be its items and recursively; in that case the leaves would be |numbers| and
- possibly the |None|. The tree of the |nil| would be the empty tree, the tree
- of |None| would have a single node and no edges. Such a tree would match
- the input syntax (of course applying the rule that iterated commas are like
- only one). The tree which is described in this section matches more
- directly the internal syntax, hence is more useful to the author, who is
- also the sole reader who extracts some benefit from reading this
- documentation once in a while.}
-%
-Among the elements some are \emph{atoms} giving \emph{leaves} of the tree,
-others are \emph{nutples} which in turn have children. In the special case of
-the \emph{none-ple} we consider it has a child, which is the empty set and this
-is why we consider the empty set |nil| to be also a potential \emph{leaf}. We
-then proceed recursively. We thus obtain from the root \emph{ople} a tree
-whose vertices are either \emph{oples} or \emph{leaves}. Only the empty set
-|nil| is both a \emph{leaf} and an \emph{ople}.
-
-Considering the empty set |nil| as an \emph{atom} fits with the \xintexprname
-internal implementation based on \TeX: |nil| is an empty pair of braces |{}|,
-whereas an \emph{atom} is a braced representation of a numeric value using
-digits and other characters. We construct \emph{oples} by putting one after
-the other such constituents and bracing them, and then repeating the process
-recursively.
-
-It has also an impact on the definition of the \emph{depth} (a.k.a as
-\emph{maximal dimension}) of an \emph{ople}. For example the \emph{ople}
-$\{\emptyset A_1A_2\}$ with three elements, among them the empty set and two
-atoms is said to have depth $1$, or to have maximal dimension $1$. And
-$\{\{\emptyset\}A_1A_2\}$ is of depth $2$ because it has a leaf (the empty
-set) which is a child of a child of the \emph{ople}. NumPy \emph{ndarrays}
-have a more restricted structure for example
-$\{\{A_{00}A_{01}\}\{A_{10}A_{11}\}\}$ is a $2$-dimensional array, where all
-leaves are at the same depth. When slicing empties the array from its atoms,
-NumPy keeps the shape information but prints the array as $[]$. This will not
-be the case with \xintexprname, which has no other way to indicate the shape
-than display it.
-\begin{everbatim*}
-\xinteval{[[],[]]}
-\end{everbatim*}
-\begin{everbatim*}
-\xinteval{[[0,1],[10,11]][:,2:]}
-\end{everbatim*}
-
-\subsubsection{Ople slicing and indexing}
-\label{sssec:opleslicing}
-
-«Set-theoretical» slicing of an \emph{ople} means replacing it with one of its
-subsets. This applies also if it is a \emph{number}. Then it can be sliced
-only to itself or to the empty set (indeed it has only one element, which is
-an atom). Similarly the \emph{none-ple} can only be sliced to give itself or
-the empty set. And more generally a \emph{nutple} is a singleton so also can
-only be set-sliced to either the empty set or itself.
-
-\xintexprname extends «Python-like» slicing to act on \emph{oples}:
-\begin{itemize}[nosep]
-\item if they are not \emph{nutples} set-theoretical slicing applies,
-\item if they are \emph{nutples} (only case having a one-to-one
- correspondence in Python) then the slicing happens \emph{within brackets}:
- i.e.\@ the \emph{nutple} is unpacked then the set-theoretical slicing is
- applied, then the result is \emph{repacked} to produce a new \emph{nutple}.
-\end{itemize}
-With these conventions the \emph{none-ple} for example is invariant under
-slicing: unpacking it gives the empty set, which has only the empty set as
-subset and repacking gives back the \emph{none-ple}. Slicing a general
-\emph{nutple} returns a \emph{nutple} but now of course in general distinct
-from the first one.
-
-The input syntax for Python slicing is to postfix a variable or a
-parenthesized ople with |[a:b]|. See \autoref{ssec:lists} for more. There
-are never any out-of-range errors when slicing or indexing. All operations
-are licit and resolved by the |nil|, a.k.a. empty set.
-
-«Set-theoretical» item indexing of an \emph{ople} means reducing it to a
-subset which is a singleton. It is thus a special case of set-theoretical
-slicing (which is the general process of selecting a subset as replacement of
-a set).
-
-\xintexprname extends «Python-like» indexing to act on \emph{oples}:
-\begin{itemize}[nosep]
-\item if they are not \emph{nutples} set-theoretical item indexing applies,
-\item if they are \emph{nutples} (only case having a one-to-one
- correspondence in Python) then the meaning becomes \emph{extracting}: i.e.\@
- the \emph{nutple} is unpacked then the set-theoretical indexing is applied,
- but the result is \emph{not repacked}.
-\end{itemize}
-For example when applied to the \emph{none-ple} we always obtain
-the |nil|. Whereas as we saw slicing the \emph{none-ple} always gives back the
-\emph{none-ple}. Indexing is denoted in the syntax by postfixing by |[N]|. Thus
-for \emph{nutples} (which are analogous to Python objects), there is genuine
-difference between the |[N]| extractor and the |[N:N+1]| slicer. But for
-\emph{oples} which are either |nil|, a \emph{number}, or of length at least 2,
-there is no difference.
-
-\subsubsection{Nested slicing of oples}
-
-Nested slicing is a concept from NumPy, which is extended by \xintexprname to
-trees of varying depths. We have a chain of slicers and extractors. I will
-describe only the case of slicers and letting them act on a |nutple|. The
-first slicer gives back a new |nutple|. The second slicer will be applied to
-each of one of its remaining elements. However some of them may be
-\emph{atoms} or the empty set. In the NumPy context all leaves are at the
-same depth thus this can happen only when we have reached beyond the last
-dimension (axis). This is not permitted by NumPy and generates an error.
-\xintexprname does not generate an error. But any attempt to slice an
-\emph{atom} or the empty set (as element of its container) removes it. Recall
-we call them \emph{leaves}. We can not slice leaves. We can only slice
-non-leaf elements: such items are necessarily |nutples|. The procedure then
-applies recursively.
-
-If we handle an extractor rather than a slicer, the procedure is similar: we
-can not extract out of an \emph{atom} or the empty set. They are thus
-removed. Else we have a |nutple|. It is thus unpacked and replaced by the
-selected element. This element may be an atom or the empty set and any further
-slicer or extractor will remove them, or it is a |nutple| and the procedure
-applies with the next slicer/extractor.
-
-\xintexprname allows to apply such a |[a:b,c:d,N,e:f,...]| chain of
-slicing/extracting also to an \emph{ople}, which is not a \emph{nutple}. We
-simply apply the first step as has been described previously and successive
-steps will only get applied to either \emph{nutples} or \emph{leaves}, the
-latter getting silently removed by any attempted operation.
-
-\subsubsection{Function arguments versus variables}
-\label{sssec:funcargs}
-
-In a function declaration with \csbxint{deffunc}, the call signature is parsed
-as a comma separated list, so here it is not true that repeated commas are
-like only one: repeated commas are not allowed and will break the function
-declaration.
-
-When \xintexprname parses a function call, it first constructs the ople which
-is delimited by the opening and closing parentheses, then it applies the
-function body, after having mapped the successive items (not the elements) of
-the parsed ople to the variables appearing in the function call
-signature. Hence the arguments in the call signature stand for |one-ples|
-(i.e.\@ either |numbers| or |nutples|).
-
-Let me explain why we can not define a function |foo(A,B)| of two oples: the
-function call will evaluate as an ople what is enclosed within the
-parentheses. It is then impossible in general to split this uniquely into two
-oples |A| and |B|, except if for example we know a priori the length of |A|.
-We could imagine defining a declarative interface for a |foo(A,B)| with |A|
-preset to have \dtt{37} items or at least a pre-defined number of items but
-this is extraneous layer for a functionality no-one will use.
-
-The alternative would be to consider that declaring |foo(A,B)| means |A| will
-pick-up always the first item and |B| all the remaining ones, and thus will be
-an ople; here, there are some \TeX nical implementation reasons which have
-dissuaded the author to do this.
+and two secondary ones which act like the exact evaluator then round the
+output to a given number of fractional digits, or convert them to
+|False| or |True| according to whether they vanish or do not vanish.
-In its place, a special syntax |foo(A,*B)| for the declaration of the function
-is available. It means that |B| stands for the |nutple| which
-receives as items all arguments in the function call beyond the first one
-already assigned to |A|.
-
-More generally, the last positional argument in a function declaration can
-have the form |*|\meta{argname}. This then means that \meta{argname}
-represents a |nutple| which will receive as items all arguments in the
-function call remaining after the earlier positional arguments have been
-assigned. The declared function body is free to again use the syntax
-|*|\meta{argname} which will unpack it and thus produce the ople concatenating
-all such optional arguments.
-
-With \csbxint{defvar} one can define a variable with value an |ople| of
-arbitrary cardinality. Such a variable can be used in a function call, it
-will then occupy the place of as many arguments as its cardinality (which is
-its number of elements, hence of its associated items). For example if
-function |foo| was declared as a function of 5 arguments |f(a,b,c,d,e)| it is
-legitimate to use it as |f(A,B)| if |A| is an ople-valued variable of length
-three and |B| of length two. The actual arguments |a,b,c,d,e| will be made to
-match the three items of |A| and the two items of |B|.
-
-\subsubsection{Final words on leaves}
-
-In case things were too clear, let's try to add a bit of confusion with an
-extra word on \emph{leaves}. When we discuss informally (particularly to
-compare with NumPy) an input such as
-\begin{everbatim}
-[[1, 2], [3, 4]]
-\end{everbatim}
-we may well refer to |1|, |2|, |3|, and |4| as being «the leaves of the 2d
-array». But obviously we have here numbers and previously we explained that a
-number is not a \emph{leaf}, its \emph{atom} is. Well, the point here is that
-we must make a difference between the input form as above and the actual
-constructed \emph{ople} the parser will obtain out of it. In the input we do
-have numbers. The comma is a \emph{concatenator}, it is not a separator for
-enumeration! The \emph{ople} which corresponds to it has a \TeX{}
-representation like this:
-\begin{everbatim}
-{{{1}{2}}{{3}{4}}}
-\end{everbatim}
-where we don't have the \emph{numbers} anymore (which would look like |{{1}}|,
-|{{2}}|, ...) but numeric \emph{atoms} |{1}|, |{2}|, |{3}|, |{4}| where the
-braces are \TeX{} braces and \textbf{not} set-theoretical braces (the other
-braces are both). Hence we should see the above as the |ople|
-$\{\{A_{00}A_{01}\}\{A_{10}A_{11}\}\}$ with atoms $A_{00}=\{1\}$, ..., being the
-\emph{leaves} of the tree associated to (or which is) the \emph{ople}.
-
-Numbers may be called the \emph{leaves} of the \textbf{input}, but once
-parsed, the input becomes an \emph{ople} which is
-(morally) a tree whose leaves are \emph{atoms} (and the empty set).
-This discussion can also be revisited with footnote
-%%\footref{fn:alttree}
-\ref{fn:alttree} in mind.
-
-\subsubsection{Farewell, thanks for your visit!}
-
-I hope this is clear to everyone. If not, maybe time to say this section is
-not needed to understand almost all of the manual, but I needed to
-write it to be able to maintain in future my own software.
-
-\subsection{The three parsers}
-
-\xintexprname provides three numerical expression parsers and two subsidiary
-ones. They are designed to be compatible with expansion only context. All
-computations ultimately rely on (and reduce to) usage of the |\numexpr|
-primitive from \eTeX{}%
-%
-\footnote{It can handle only integers, and they must be at most
-$2^{31}-1={}$\dtt{\the\numexpr"7FFFFFFF\relax}. Thus some work has to be done
-to handle arbitrarily big integers or arbitrary float precision.}.
-%
-These \eTeX{} extensions date
-back to 1999 and are by default incorporated into the |pdftex|
-etc...\@ executables from major modern \TeX{} installations for more than
-fifteen years now.
+\begin{framed}
+ Please note the following:
+ \begin{itemize}[noitemsep]
+ \item Although \csbxint{eval} manipulates arbitrarily long integers or
+ fractions it also accepts scientific notation on input, as well as
+ all the mathematical functions (evaluated using the prevailing
+ digits precision), and (depending on customization) can thus produce
+ also scientific notation on output.
+ \item So far, individual operations and the printing routine of
+ \csbxint{eval} do not automatically reduce fractions to their lowest
+ terms.
+ \end{itemize}
+\end{framed}
+% They are designed to be compatible with expansion only context. All
+% computations ultimately rely on (and reduce to) usage of the |\numexpr|
+% primitive from \eTeX{}%
+% %
+% \footnote{It can handle only integers, and they must be at most
+% $2^{31}-1={}$\dtt{\the\numexpr"7FFFFFFF\relax}. Thus some work has to be done
+% to handle arbitrarily big integers or arbitrary float precision.}.
+% %
+% These \eTeX{} extensions date
+% back to 1999 and are by default incorporated into the |pdftex|
+% etc...\@ executables from major modern \TeX{} installations for more than
+% fifteen years now.
+The interface is:
\begin{itemize}
\item \csbxint{eval}\marg{expression} handles integers, decimal numbers,
numbers in scientific notation and fractions. The algebraic computations are
@@ -5142,43 +4854,66 @@ fifteen years now.
\xinteval{add(x/(x+1), x = 1000..1014)}\par
\end{everbatim*}
In this example, the fraction obtained by addition is already
-irreducible, but this is not always the case:
-\begin{snugframed}
- By default, basic operations on fractions do not automatically reduce to
- smallest terms the output: |A/B| multiplied by |C/D|
- returns |AC/BD|, and |A/B| added to |C/D| uses |lcm(B, D)| as denominator.
-\end{snugframed}
+irreducible, but this is not always the case, as pointed above
+
Arbitrarily long numbers are allowed in the input. The space character
(contrarily to the situation inside |\numexpr|) and also the underscore
character (as allowed in Python too) can serve to separate groups of digits
for better readability. But the package currently provides no macros to let
the output be formatted with such separators.
-
-Formatting of numeric output is apart from some minimal facilities such as
-\csbxint{TeXfromSci}\NewWith{1.4g},
-\csbxint{TeXFrac}, \csbxint{DecToString}, \csbxint{PRaw}, \csbxint{FracToSci} or \csbxint{PFloat} left
-to user macros or third-party packages%
\begin{everbatim*}
\xinteval{123_456_789_012^5}
\end{everbatim*}
-\item \csbxint{iieval}\marg{expression} does exact computations \emph{on (big)
- integers only.} It is (of course) slightly faster than \csbxint{eval} for
- equivalent operations. The forward slash \oper{/} does the \emph{rounded}
- integer division to match behaviour of |\numexpr|. The \oper{//} operator
- does floored division as in \csbxint{eval}. The \oper{/:} is the associated
+\item \csbxint{ieval}\oarg{D}\marg{expression} is the same parser as
+ \csbxint{eval}, i.e. accepts the same inputs and does all computations
+ exactly in the same manner, but it then rounds its final result to the
+ nearest integer, or, in case there is an optional argument |[D]|, to:
+ \begin{itemize}
+ \item if |D>0|: the nearest fixed point number with |D| digits after the
+ decimal mark,
+ \item if |D=0|: the nearest integer (as for \csbxint{ieval} with no optional argument),
+ \item if |D<0|: the rounded quotient by |10^(-D)|.\CHANGED{1.4f}
+ \end{itemize}
+
+ Prior to |1.4k| the optional argument \oarg{D} had to be located
+ \emph{within} the braces at the start of the expression. At long last, this
+ is not required anymore.\NewWith{1.4k} The legacy syntax is and will keep
+ being allowed.
+
+\item \csbxint{iieval}\marg{expression} executes computations \emph{on (big)
+ integers only.} It is (only slightly) faster than \csbxint{eval} for
+ the same expression.
+
+ Attention: the forward slash \oper{/} does the \emph{rounded} integer
+ division to match behaviour of |\numexpr|. The \oper{//} operator does
+ floored division as in \csbxint{eval}. The \oper{/:} is the associated
modulo operator (we could easily let the catcode 12 |%|
- character be an alias, but using such an unusual percent character would be
- a bit cumbersome in a \TeX{} workflow, if only for matters of
+ character be an alias, but using such an unusual percent character
+ would be a bit cumbersome in a \TeX{} workflow, if only for matters of
syntax highlighting in \TeX-aware text editors).
\begin{everbatim*}
\xintiieval{add((i/:7)?{omit}{i^5}, i=1000..1020)}% only add fifth powers of multiples of 7
\end{everbatim*}
-\item \csbxint{floateval}\marg{expression} does floating point computations
- with a given precision \dtt{P}, as specified via a prior assignment
- |\xintDigits:=P\relax |. The \oper{/} will compute the correct rounding of
- the exact fraction. Again \oper{//} is floored division and \oper{/:} its
+\item \csbxint{floateval}\oarg{Q}\marg{expression} does floating point
+ computations with a given precision |P|, as specified via a prior
+ assignment |\xintDigits:=P\relax | (the value |P| can be recovered
+ via \csbxint{theDigits}).
+
+ Its optional argument |[Q]|, if present, means to do a \emph{final} float
+ rounding to a mantissa of |Q| digits (this thus makes sense only if
+ |Q<P|).
+
+ A negative |Q| is allowed and means to round to |P+Q| digits only.
+
+ Prior to |1.4k| the optional argument \oarg{Q} had to be located
+ \emph{within} the braces at the start of the expression. At long
+ last, this is not required anymore.\NewWith{1.4k} The legacy syntax is
+ and will keep being allowed.
+
+ The infix operator \oper{/} will compute the correct rounding of the exact
+ fraction. The operator \oper{//} is floored division and \oper{/:} is its
associated modulo (see also \func{divmod}).
\begin{everbatim*}
\begingroup
@@ -5187,66 +4922,49 @@ to user macros or third-party packages%
\endgroup
\end{everbatim*}
- The default is with \dtt{P=16} digits. The four basic
- operations and the square root realize \emph{correct
+ The four basic operations and the square root achieve \emph{correct
rounding.}\footnote{when the inputs are already floating point numbers
with at most |P|-digits mantissas.}
- It can be used with an optional argument |[Q]| which means to do a final
- float rounding to mantissas of |Q| digits (this makes
- sense only if |Q<P|). ATTENTION: the optional argument |[Q]| is to be
- located \emph{within} the braces at the start of the expression.
-
- When |Q| is negative it means to round to |P+Q| digits only.
-
- On output, \csbxint{floateval} uses \csbxint{PFloat} for each number. This
- can be modified (cf.\@ \csbxint{floatexprPrintOne}).
+ On output, \csbxint{floateval} uses \csbxint{PFloat} for each numeric
+ leaf. This can be modified (cf.\@ \csbxint{floatexprPrintOne}).
\end{itemize}
-The user can define variables and functions. Definition of functions is either
-per parser (\csbxint{deffunc}, \csbxint{deffloatfunc}, ...), but there are
-some restrictions, or generic (\csbxint{NewFunction}) but the latter is only
-syntactic sugar for function-like disguise of a \TeX{} macro having not done
-any pre-parsing.
-
-Two derived parsers:
-\begin{itemize}
-\item \csbxint{ieval}\marg{expression} does all computations like \csbxint{eval}
- but rounds the result to the nearest integer. If there is an optional
- argument |[D]|, the rounding is to:
- \begin{itemize}
- \item if |D>0|: the nearest fixed point number with |D| digits after the
- decimal mark,
- \item if |D=0|: the nearest integer,
- \item if |D<0|: the rounded quotient by |10^(-D)|.\CHANGED{1.4f}
- \end{itemize}
- ATTENTION: the optional argument
- |[D]| is to be located \emph{within} the braces at the start of the expression.
-\item \csbxint{theboolexpr}\meta{expression}|\relax| does all computations like \csbxint{eval}
- then converts all (non-empty) leaves%
-%
-\footnote{Currently, empty leaves are output using \csbxint{exprEmptyItem},
- i.e.\@ default to \dtt{\xintexprEmptyItem}. This may change.}
-%
-to |True| or |False|
- (cf.\@ \csbxint{boolexprPrintOne}). There is no |\xintbooleval|.
-\end{itemize}
+% The user can define variables and functions. Definition of functions is either
+% per parser (\csbxint{deffunc}, \csbxint{deffloatfunc}, ...), but there are
+% some restrictions, or generic (\csbxint{NewFunction}) but the latter is only
+% syntactic sugar for function-like disguise of a \TeX{} macro having not done
+% any pre-parsing.
-These macros are wrappers for a more core syntax:
+There is a core syntax:
\begin{itemize}[nosep]
\item \csbxint{expr}\meta{expression}|\relax|,
+ \item \csbxint{iexpr}\meta{expression}|\relax|,
\item \csbxint{iiexpr}\meta{expression}|\relax|,
\item \csbxint{floatexpr}\meta{expression}|\relax|,
- \item \csbxint{iexpr}\meta{expression}|\relax|,
\item \csbxint{boolexpr}\meta{expression}|\relax|.
\end{itemize}
-This core syntax can be used directly in typesetting flow.\NewWith{1.4} In an
-|\edef| they expand to some braced nested data (all computations having been
-done) prefixed with some |\protected| «typesetter» macros. When using
-\csbxint{eval} (in contrast to \csbxint{expr}), the protection of the
-«typesetter» is by-passed and its action gives (expandably)
-explicit digits and other characters such as those of scientific notation or
-brackets.%
+\csbxint{boolexpr}\meta{expression}|\relax| does all computations like
+\csbxint{expr} then converts all (non-empty) leaves%
+%
+\footnote{Currently, empty leaves are output using \csbxint{exprEmptyItem},
+ i.e.\@ default to \dtt{\xintexprEmptyItem}. This may change.}
+%
+to |True| or |False| (cf.\@ \csbxint{boolexprPrintOne}). There is no
+|\xintbooleval|.
+
+Formerly this legacy syntax needed to be prefixed by |\xintthe| to appear in
+the typesetting token flow. It may now be omitted.\NewWith{1.4}
+
+In an |\edef| these constructs expand to some braced nested data, all
+computations having been completely done, which is prefixed with some
+|\protected| «typesetter» macros.
+
+In an |\edef|, \csbxint{eval} (in contrast to \csbxint{expr}), or
+\csbxint{floateval} (in contrast to \csbxint{floatexpr}) expand the
+«typesetting macros» and the final complete expansion consists of
+explicit digits and other characters such as those of scientific
+notation or square brackets.%
%
\footnote{\csbxint{eval} and \csbxint{expr} both expand completely in exactly
two steps. And \csbxint{expr} expands fully under \fexpan sion (of the
@@ -5254,95 +4972,170 @@ brackets.%
expand to nothing, then naturally \fexpan sion propagates to tokens
following up in the input stream.}
-It is possible to use the core syntax\NewWith{1.4}
+In \LaTeX\ it is possible to use the core syntax\NewWith{1.4}
\csbxint{expr}\meta{expression}|\relax| also in so-called moving arguments,
-because when written out to a file the final expansion result uses only
-standard catcodes and thus will get retokenized and the typesetter macro
-(which being |\protected| is there intact in external file) will expand
-as expected.
+because when written out to a file the final expansion outcome uses only
+standard catcodes and thus will get retokenized and expand as expected if
+it has been written to an external file which is then reloaded.
-One needs \csbxint{eval} et al.\@ only if one really wants the final digits (and
-other characters), for example in a context where \TeX{} expects a number or a
-dimension.
+One needs \csbxint{eval} et al.\@ only if one really wants the final digits
+(and other characters), for example in a context where \TeX{} expects a number
+or a dimension.
As alternative to \csbxint{eval}\marg{expression}, an equivalent is
\csbxint{the}\csbxint{expr}\meta{expression}|\relax|. Similarly \csbxint{the}
can prefix all other core parsers. And one can also use \csbxint{theexpr} as
shortcut for \csbxint{the}\csbxint{expr}.
-Throughout this documentation I will most of the time refer to \csbxint{eval}
-and \csbxint{expr}. But beware that doing exact computations with fractions
-leads very quickly to very big results (and furthermore one needs to use
-explicitly the |reduce()| function to convert the fractions into smallest
-terms). Thus most probably what you want is \csbxint{floateval} and
-\csbxint{floatexpr}.
-
-\subsection{Expansion}
+Doing exact computations with fractions leads very quickly to very big results
+(and furthermore one needs to use explicitly the |reduce()| function to
+convert the fractions into smallest terms). Thus most probably what you want
+is \csbxint{floateval} and \csbxint{floatexpr}.
-As mentioned already, the parsers are compatible with expansion-only
-context.
-Also, they expand the expression piece by piece: the normal mode of operation
-of the parsers is to unveil the parsed material token by token. Unveiling is
-a process combining space swallowing, brace removal (one level generally), and
-\fexpan sion.
+\subsection{Customization of the output from the three parsers}
+\label{xintexprEmptyItem}
+\label{xintexprPrintOne}
+\label{xintiexprPrintOne}
+\label{xintiiexprPrintOne}
+\label{xintfloatexprPrintOne}
+\label{xintboolexprPrintOne}
-For example a closing parenthesis after some function arguments does not have
-to be immediately visible, it and the arguments themselves may arise from
-\fexpan sion (applied before grabbing each successive token). Even the ending
-|\relax| may arise from expansion. Even though the \csbxint{eval} user
-interface means that the package has at some point the entire expression in
-its hands, it immediately re-inserts it into token stream with an additional
-postfixed |\relax| and from this point on has lost any ways (a simple-minded
-delimited macro won't do because the expression is allowed to contain
-sub-\csbxint{expr}essions, even nested) to manipulate formally again the whole
-thing; it can only re-discover it one token at a time.
+The package provides only minimal facilities for formatting the numeric
+output. A possibly not up-to-date list is (the first two use math
+mode mark-up): \csbxint{TeXfromSci}, \csbxint{TeXFrac}, \csbxint{DecToString},
+\csbxint{PRaw}, \csbxint{FracToSci}, \csbxint{FracToDecimal},
+\csbxint{PFloat} and
+\csbxint{FloatToDecimal}. More advanced formatting is left for the user to
+provide by own macros or possibly using third-party packages.
-This general behaviour (which allows much more freedom in assembling
-expressions than is usually the case with familiar programming languages such
-as Python, although admittedly that freedom will prove useful only to
-power-\TeX users and possibly does not have that many significant use cases)
-has significative exceptions. These exceptions are mostly related to
-«pseudo»-functions. A «pseudo»-function will grab some of its arguments via
-delimited macros. For example |subs(expr1,x=expr2)| needs to see the comma,
-equal sign and closing parenthesis. But it has mechanisms to allow |expr1| and
-|expr2| to possess their own commas and parentheses.
-
-Inner semi-colons on the other hand currently always can originate from expansion.
-Defining functions or variables requires a visible semi-colon acting as
-delimiter of the expression, but inner semi-colons do not need to be
-hidden within braces or macros\NewWith{1.4}.
+It is indeed possible to configure the parsers to use custom macros for output.
+Here are the default package definitions:
+\begin{everbatim}
+\def\xintexprEmptyItem{[]}
+\def\xintexprPrintOne{\xintFracToSci}
+\def\xintiexprPrintOne{\xintDecToString}
+\def\xintiiexprPrintOne #1{#1}
+\def\xintfloatexprPrintOne{\xintPFloat}
+\def\xintboolexprPrintOne#1{\xintiiifNotZero{#1}{True}{False}}
+\end{everbatim}
+The typesetter for \csa{xintiiexpr} simply prints ``as is'', but this
+may change in future, if some internal format is used requiring a
+conversion step. Users can copy the above (\LaTeX\ users may want to
+use |\renewcommand|) and modify the chosen macros.
-The expansion stops only when the ending |\relax| has been found
-(it is then removed from the token stream).
+Regarding the current behaviour of \csbxint{floateval}, here is the
+default configuration of \csbxint{PFloat}:
+\begin{everbatim}
+\def\xintPFloatE{e}
+\def\xintPFloatZero{0}
+\def\xintPFloatIntSuffix{}
+\def\xintPFloatLengthOneSuffix{}
+\def\xintPFloatNoSciEmax{5}
+\def\xintPFloatNoSciEmin{-4}
+\def\xintPFloatMinTrimmed{4}
+\end{everbatim}
+With the custom
+\begin{everbatim}
+\def\xintfloatexprPrintOne{\xintFloatToDecimal}
+\end{everbatim}
+the \csbxint{floateval} output wil use decimal fixed point notation,
+i.e.\@ no scientific exponents, and as many zeros as are needed (but no
+more, as trailing zeros will be removed from the significant digits).
+Here is an example with the
+default configuration and then when using \csbxint{FloatToDecimal}:
+\begingroup % DÉBUT DU GROUPE POUR DES EXEMPLES
+\begin{everbatim*}
+\xintfloateval{exp(-32.456)/2000}\newline
+\def\xintfloatexprPrintOne{\xintFloatToDecimal}%
+\xintfloateval{exp(-32.456)/2000}\par
+\end{everbatim*}
-For catcode related matters see \csbxint{exprSafeCatcodes}.
+Similarly, with
+\begin{everbatim}
+\def\xintexprPrintOne{\xintFracToDecimal}
+\end{everbatim}
+the \csbxint{eval} output will use decimal fixed point notation (for the
+numerators; the denominators are simply post-fixed with a |/|
+delimiter). See \csbxint{FracToDecimal}, which like \csbxint{FracToSci}
+however is not really a user level macro, it is restricted on its input
+format, it understands only what is needed for the internal structure
+currently used by \csbxint{eval}. Here is with the same input as above:
+\begin{everbatim*}
+\xinteval{exp(-32.456)/2000}\newline
+\def\xintexprPrintOne{\xintFracToDecimal}%
+\xinteval{exp(-32.456)/2000}\par
+\end{everbatim*}
+Notice that the |/2000| denominator remains ``as is'' in the
+output in both cases, in conformity with the documented behaviour of
+\csbxint{FracToSci} in the first example and of \csbxint{FracToDecimal}
+for the second example. This has not changed since |1.4| (the handling
+of the numerator part has changed at |1.4e| and again slightly at
+|1.4k|, the zero value being now always printed as \dtt{0} and not
+\dtt{0} or \dtt{0.0} depending on the input) but is to be considered
+unstable and undecided so far.
+
+A more costly typesetter could be for example:
+\begin{everbatim}
+\def\xintexprPrintOne#1{\xintDecToStringREZ{\xintIrr{#1}}}
+\end{everbatim}
+Then the fraction (inclusive of its power of ten part) will be reduced
+to lowest terms (see \csbxint{Irr}), next the trailing zeros will be
+moved as an exponent (positive or negative) to the numerator, and
+finally this numerator with a power of ten part will be printed in
+decimal fixed point notation, with as few zeros as are needed. With the
+use case above:
+\begin{everbatim*}
+\def\xintexprPrintOne#1{\xintDecToStringREZ{\xintIrr{#1}}}
+\xinteval{exp(-32.456)/2000}\par
+\end{everbatim*}
+This trailing |/2| is somewhat of a pain, but as documented and
+mentioned already \csbxint{DecToStringREZ} currently has not been
+educated to identify its presence and handle it. Slightly faster (see
+\csbxint{PIrr}) is
+\begin{everbatim}
+\def\xintexprPrintOne#1{\xintDecToStringREZ{\xintPIrr{#1}}}
+\end{everbatim}
+which with the used example produces the same output.
-A word of warning on the bracketed optional argument of respectively
-\csbxint{floatexpr} and \csbxint{iexpr}. When defining macros which will hand
-over some argument to one of these two parsers, the argument may potentially
-start with a left square bracket |[| (e.g. argument could be |[1, 2, 3]|) and
-this will break the parser. The fix is to use in the macro definition
-|\xintfloatexpr\empty|. This extra |\empty| token will prevent the parser
-thinking there is an optional argument and it will then disappear during
-expansion.
+\endgroup % FIN DU GROUPE POUR LES EXEMPLES
+
+\medskip
+Nested structures (for full internal details, see \autoref{oples})
+are rendered by default using left and right brackets,
+commas and spaces in a non-customizable way, except via
+\csa{xintexprEmptyItem}. For full customizability, use
+\csbxint{thealign}, which is described in the next section.
+
+% The \csbxint{PFloatE} is now allowed to a be macro with an argument delimited
+% by a dot, this argument will be the exponent.\NewWith{1.4e} The output must be produced
+% \fexpan dably and again be delimited by a dot. The default does not grab the
+% exponent and simply inserts the letter |e|.
+
+\paragraph{\TeX hackers note:}
+Attention! The macros used in place of \csbxint{FracToSci} and
+\csbxint{PFloat} must currently understand the raw \xintfracname format
+|A/B[N]|, with the |/B| and |[N]| parts being optional. These requirements
+may change at any release.
+
+Currently the interface for the macro used by
+\csbxint{floatexprPrintOne} % changed at |1.4e|.\CHANGED{1.4e}
+must be the same as
+\csbxint{PFloat}. %, i.e. the target precision is |[P]| not a
+%braced argument.
+But it will always be employed with the |[P|] present hence does not
+have to consider it to be optional.
+
+The replacement macros must be compatible with expansion-only context, but do not
+have to be \fexpan dable.
-\begin{footnotesize}
- If comparing to other languages able to handle floating point numbers or big
- integers, such as Python, one should take into account that what the \xintname
- packages manipulate are streams of ascii bytes, one per digit. At no time
- (due to expandability) is it possible to store intermediate results in an
- arithmetic CPU register; each elementary operation via |\the\numexpr| will
- output digit tokens (hence as many bytes), not things such as handles to
- memory locations where some numbers are stored as memory words. The process
- can never put aside things but can only possibly permute them with upcoming
- tokens, to use them later, or, via combinations of |\expanded| and
- |\unexpanded| or some other more antiquated means grab some tokens and shift
- the expansion to some distant locations to later come back. The process is a
- never-ending one-dimensional one...\par
-\end{footnotesize}
+% % pour mémoire
+% \footnote{The constraints on any replacement to \csbxint{FracToSci} are much
+% simplified at |1.4e|. Previously it had to be able to accept also input in
+% fixed point notation, and in scientific notation with a catcode 12 |e|.}
+% %
-\subsection{\csh{xintthealign} and its customization}
+\subsubsection{\csh{xintthealign} for multiple items outputs}
\label{xintthealign}
With \csbxint{thealign} one can get nested data use a \TeX{} alignment in the
@@ -5419,63 +5212,6 @@ l.c.m.=\xintthealign\xintiiexpr ndmap(lcm, 1..12; 1..10)\relax
\]
\end{everbatim*}
-\subsection{Customization of typesetting of individual items}
-\label{xintexprEmptyItem}
-\label{xintexprPrintOne}
-\label{xintiexprPrintOne}
-\label{xintiiexprPrintOne}
-\label{xintfloatexprPrintOne}
-\label{xintboolexprPrintOne}
-
-The way individual items are formatted (whether or not using
-\csa{xintthealign}) is also customizable. Here are the default package
-definitions:
-%\kern-2pt
-% the \kern is to fix some extra white line from first line being a bit overfull
-\begin{everbatim}
-\def\xintexprEmptyItem{[]}
-\let\xintexprPrintOne\xintFracToSci
-\let\xintiexprPrintOne\xintDecToString
-\def\xintiiexprPrintOne #1{#1}
-\let\xintfloatexprPrintOne\xintPFloat
-\def\xintPFloatE{e}
-\def\xintboolexprPrintOne#1{\xintiiifNotZero{#1}{True}{False}}
-\end{everbatim}
-Attention! The above macros convert from \xintexprname internal numeric data
-format to «printed» output; they are thus susceptible to require adjustments
-if the internal data format changes, which may happen at each release. Of course
-the default for |\xintexprPrintOne| etc...\@ will be adjusted accordingly, but
-user custom definitions may break.
-
-The interface for \csbxint{floatexprPrintOne} was changed.\CHANGED{1.4e}
-It must now be the same as \csbxint{PFloat}, i.e. the target precision is |[P]| not a
-braced argument. It will always be used with this |[P|] present so does not
-have to consider it to be optional. It still must be expandable.
-
-The \csbxint{PFloatE} is now allowed to a be macro with an argument delimited
-by a dot, this argument will be the exponent.\NewWith{1.4e} The output must be produced
-\fexpan dably and again be delimited by a dot. The default does not grab the
-exponent and simply inserts the letter |e|.
-
-Currently, this means that the macros used in place of \csbxint{FracToSci} and
-\csbxint{PFloat} should understand the raw \xintfracname format |A/B[N]|, with
-the |/B| and |[N]| parts being optional.%
-%
-\footnote{The constraints on any replacement to \csbxint{FracToSci} are much
- simplified at |1.4e|. Previously it had to be able to accept also input in
- fixed point notation, and in scientific notation with a catcode 12 |e|.}
-%
-The typesetter for
-\csa{xintiiexpr} simply prints ``as is'', but this may change in future.
-
-The used macros must be compatible with expansion-only context, but do not
-have to be \fexpan dable.
-
-Note: when not using \csbxint{thealign}, output of nested structures uses left
-and right brackets, and commas and spaces in a non-customizable way, except
-via \csa{xintexprEmptyItem}. Use the \csa{xintthealign} interface for full
-customizability.
-
\subsection{Built-in operators and their precedences}
@@ -6013,10 +5749,10 @@ Miscellaneous notes:
% labelwidth=-\fontdimen2\font, labelsep=\fontdimen2\font, labelindent=0pt,
% listparindent=\leftmarginiii]
- \funcdesc[]{random} returns a random float |x| verifying |0 <= x < 1|. It obeys
- the prevailing precision as set by \csbxint{Digits}: i.e.\@ with |P| being the
- precision the random float multiplied by |10^P| is an integer, uniformly
- distributed in the |0..10^P-1| range.
+ \funcdesc[]{random} returns a random float |x| verifying |0 <= x < 1|. It
+ obeys the prevailing precision as set by \csbxint{Digits}: i.e.\@ with |P|
+ being the precision the random float multiplied by |10^P| is an integer,
+ uniformly distributed in the |0..10^P-1| range.
This description implies that if |x| turns out to be |<0.1| then
its (normalized) mantissa has |P-1| digits and a trailing zero, if |x<0.01|
@@ -8243,6 +7979,454 @@ some example here...
% obtained via the expansion of the package macros during the \TeX{}
% run.%
+\subsection{Oples and nutples: the \texttt{1.4} terminology}
+\label{oples}
+
+\emph{Skip this on first reading, else you will never start using the
+ package.} \fbox{SKIP THIS!} (understood?)
+
+In this section I will describe a mathematical terminology which models
+how the parser handles the input syntax with numbers, commas, and brackets,
+and how it maps internally to \TeX\ specific concept, particularly braces and
+macro arguments.
+
+\etocsetnexttocdepth{subsubsection}
+\localtableofcontents
+
+\subsubsection{Base terminology}
+
+We start with a set $\mathcal{A}$ of \emph{atoms}, which represent numeric
+data. In \TeX{} syntax such \emph{atoms} are always braced, more precisely,
+currently they look like
+%
+\centeredline{\dtt{\{raw format within \TeX{} braces\}}}
+%
+The \TeX{} braces are not set-theoretical braces here, they are simply used
+for \TeX nical reasons (one could imagine using rather some terminator token,
+but ultimately support macros for built-in and user defined functions rely on
+\TeX\ macros with undelimited parameters, at least so far).
+
+Our category $\mathcal{C}$ of «oples» is the smallest collection of
+\emph{totally ordered finite sets} verifying these properties:
+\begin{enumerate}
+\item The empty set \dtt{$\emptyset$} is an \emph{ople}, i.e.\@ it belongs to
+ $\mathcal{C}$.
+\item Each singleton set \dtt{$\{O\}$} whose element \dtt{$O$} is either an
+ \emph{atom} $a\in\mathcal{A}$ or an \emph{ople} qualifies as an \emph{ople}.
+\item $\mathcal{C}$ is stable by concatenation.
+\end{enumerate}
+
+Notes:
+\begin{itemize}
+\item
+We refer to the empty set \dtt{$\emptyset$} via the variable \emph{nil}.%
+%
+\footnote{There is
+actually a built-in variable with this name. At |1.4|, |\xintexpr\relax| is
+legal and also generates the \emph{nil}.}
+
+\item It is convenient to accept the empty set as being also an
+ \emph{atom}. If this is done, then we may refer to the original
+ \emph{atoms} (elements of $\mathcal{A}$) as \emph{non empty numerical data}.
+
+\item
+Concatenation is represented in the syntax by the
+comma. Thus repeated commas are like only one and |nil| is a neutral element.
+
+\item A singleton \emph{ople} \dtt{$\{a\}$} whose single element is a
+ (non-empty) \emph{atom} is called a \emph{number}.%
+%
+ \footnote{This has to be taken in a general sense, for example with
+ \ctanpackage{polexpr}, polynomials are represented by such «numbers».}
+%
+
+\item
+The operation of constructing \dtt{$\{O\}$} from the \emph{ople} \dtt{$O$} is
+called \emph{bracing} (set theory, \TeX), or \emph{bracketing} (\xintexprname
+input syntax, Python |lists|), or \emph{packing} (as a reverse to Python's
+unpacking of sequence type objects). In the expression input syntax it
+corresponds to enclosing \dtt{$O$} within square brackets: \dtt{$[O]$}.
+
+\item A braced \emph{ople} is called a \emph{nutple}. Among them \dtt{\{nil\}}
+ (aka $\{\emptyset\}$) is a bit special. It is called the \emph{none-ple}.%
+%
+ \footnote{Prior to version |1.4j| of this documentation it was called the
+ \emph{not-ple}.}
+%
+It is not \dtt{nil}.%
+%
+\footnote{There is (experimental) a pre-defined «\dtt{None}» variable which
+ stands for the \emph{none-ple}. It can also be input as |[]|.}
+\end{itemize}
+
+Each \emph{ople} has a \emph{length} which is its cardinality as set. The
+singleton |oples| are called \emph{one-ples}. There are thus two types of
+\emph{one-ples}:
+\begin{itemize}
+\item \emph{numbers} \dtt{$\{a\}$}, $a \in \mathcal{A}$,
+\item \emph{nutples} \dtt{$\{O\}$}, $O \in \mathcal{C}$.
+\end{itemize}
+
+If we consider the empty set |nil| on the same footing as |atoms|, the two
+types have only one common object which is the \emph{none-ple}. As a rule
+arithmetic operations will either break or silently convert the \emph{none-ple}
+to the zero value:
+\begin{everbatim*}
+\xinteval{3+[], 5^[], 10*[]}
+\end{everbatim*}.
+But attention that \csbxint{iieval} in contrast to \csbxint{eval} is broken by
+such inputs.
+
+\subsubsection{Items (and sub-items) versus elements}
+
+In order to illustrate these concepts, let us consider how one should
+interpret notation such as |3,5,7,9| when it arises in an
+\csbxint{expr}|ession|:
+\begin{description}
+\item[tempting vocabulary:] Each of |3|, |5|, |7|, and |9| is an \emph{item}, or
+ \emph{element} of the (comma separated) \emph{list}. In other terms we have
+ here a list with 4 items.
+\item[rigorous vocabulary:] each one of |3|, |5|, |7|, |9| stands for an
+ \emph{ople} (of the \emph{one-ple} type) and |3,5,7,9| stands for their \emph{concatenation}.
+\end{description}
+It is important to understand that in an \csbxint{expr}|ession|, there is no
+difference between |3,5,7| and |3,,,,5,,,,,,,,,7|. So the view of the comma
+as separator is misleading. In other terms, the comma is NOT a separator but
+the (associative) operator of concatenation of totally ordered sets, and the
+number |3| for example represents a (singleton) set.
+
+If we want to refer to |3| or |5| or |7| or |9| as «the items of the
+(open) list |3,5,7,9|» (and probably this documentation already has such
+utterances, due to legacy reasons from the pre-|1.4| internal model), we
+\emph{must} realize that this clashes with using the word \emph{item} as
+synonymous to \emph{element} in the set-theoretical sense.
+
+To repeat, any ople \dtt{$O$} is a finite totally ordered set: if not the empty
+set, it has \emph{elements} \dtt{$a_1$}, \dots, \dtt{$a_k$}, and the above means that
+its \emph{items} are the singleton oples (aka one-ples) \dtt{$I_1=\{a_1\}$},
+\dots, \dtt{$I_k=\{a_k\}$}. Each \dtt{$a_j$} may be an |atom|, then
+\dtt{$I_j$} is a |number|, or \dtt{$a_j$} is an |ople| (possibly the empty set), then
+\dtt{$I_j$} is a |nutple| whose depth is one more than the one of the ople
+\dtt{$a_j$}.
+
+Thus we can refer to «items» but must then understand they are not «elements»:
+«items» are «singleton sub-sets». The cardinality (aka length) of an ople is
+also the number of its
+items. It would be tempting to use the terminology «sub-item» to keep in mind they are «sub-sets»
+but this would again create confusion: a |nutple| has only one item which is
+itself; and we need some terminology to refer to the individual numbers in the
+|nutple| given in input as |[1,2,3]| for example. It is natural to refer to
+|1|, |2|, |3| as «sub-items» of |[1,2,3]| as the latter may be an «item» (it
+is in particular an «item» of itself, the unique one at that).
+
+We distinguish the |oples| of length zero (there is only one, the empty set)
+or at least two as those which can never be an «item». Those of length one,
+the |one-ples|, are exactly those which can be «items». Among them some may
+have «sub-items», they are the |nutples| with the exception of the |none-ple|.
+And the others do not have «sub-items», they are the |numbers| and the |none-ple| (whose input syntax is
+either |[]| or the variable |None|).%
+%
+\footnote{%
+A note on the \csbxint{verbosetrue} regime: for a variable defined to be
+|3,5,7,9|, it will say that its value is |{3}{5}{7}{9}|, because it does not
+keep the external set-theoretical braces. The braces here are only \TeX{}
+braces, and |{3}| is an |atom|. The |number| would be |{{3}}| with the
+external braces being set-theoretical and also used internally as \TeX{}
+braces. From the four numbers |{{3}}|, ..., |{{9}}| concatenation gives
+|{{3}{5}{7}{9}}|, which is the |ople| |3,5,7,9|. But the log view drops
+deliberately the external braces. If the variable is defined to be the
+|nutple| |[3,5,7,9]|, then the log view will be |{{3}{5}{7}{9}}| (up to
+details on how exactly the numeric quantities are coded) and the actual
+internal \TeX{} entity will be |{{{3}{5}{7}{9}}}|, where the two external
+layers of braces are both set-theoretical and \TeX nical braces.}
+
+
+\subsubsection{Oples as trees}
+
+We say that the empty set |nil| and \emph{atoms} are \emph{leaves}.
+
+We associate with any \emph{ople} a tree. The root is the ople. In the case of
+the |nil| ople, there is nothing else than the root, which we then consider
+also a \emph{leaf}. Else the children at top level are the successive
+\emph{elements} (not «items»!) of the ople.%
+%
+\footnote{\label{fn:alttree}%
+ We could also consider a tree for which the children of the root node would
+ be its items and recursively; in that case the leaves would be |numbers| and
+ possibly the |None|. The tree of the |nil| would be the empty tree, the tree
+ of |None| would have a single node and no edges. Such a tree would match
+ the input syntax (of course applying the rule that iterated commas are like
+ only one). The tree which is described in this section matches more
+ directly the internal syntax, hence is more useful to the author, who is
+ also the sole reader who extracts some benefit from reading this
+ documentation once in a while.}
+%
+Among the elements some are \emph{atoms} giving \emph{leaves} of the tree,
+others are \emph{nutples} which in turn have children. In the special case of
+the \emph{none-ple} we consider it has a child, which is the empty set and this
+is why we consider the empty set |nil| to be also a potential \emph{leaf}. We
+then proceed recursively. We thus obtain from the root \emph{ople} a tree
+whose vertices are either \emph{oples} or \emph{leaves}. Only the empty set
+|nil| is both a \emph{leaf} and an \emph{ople}.
+
+Considering the empty set |nil| as an \emph{atom} fits with the \xintexprname
+internal implementation based on \TeX: |nil| is an empty pair of braces |{}|,
+whereas an \emph{atom} is a braced representation of a numeric value using
+digits and other characters. We construct \emph{oples} by putting one after
+the other such constituents and bracing them, and then repeating the process
+recursively.
+
+It has also an impact on the definition of the \emph{depth} (a.k.a as
+\emph{maximal dimension}) of an \emph{ople}. For example the \emph{ople}
+$\{\emptyset A_1A_2\}$ with three elements, among them the empty set and two
+atoms is said to have depth $1$, or to have maximal dimension $1$. And
+$\{\{\emptyset\}A_1A_2\}$ is of depth $2$ because it has a leaf (the empty
+set) which is a child of a child of the \emph{ople}. NumPy \emph{ndarrays}
+have a more restricted structure for example
+$\{\{A_{00}A_{01}\}\{A_{10}A_{11}\}\}$ is a $2$-dimensional array, where all
+leaves are at the same depth. When slicing empties the array from its atoms,
+NumPy keeps the shape information but prints the array as $[]$. This will not
+be the case with \xintexprname, which has no other way to indicate the shape
+than display it.
+\begin{everbatim*}
+\xinteval{[[],[]]}
+\end{everbatim*}
+\begin{everbatim*}
+\xinteval{[[0,1],[10,11]][:,2:]}
+\end{everbatim*}
+
+\subsubsection{Ople slicing and indexing}
+\label{sssec:opleslicing}
+
+«Set-theoretical» slicing of an \emph{ople} means replacing it with one of its
+subsets. This applies also if it is a \emph{number}. Then it can be sliced
+only to itself or to the empty set (indeed it has only one element, which is
+an atom). Similarly the \emph{none-ple} can only be sliced to give itself or
+the empty set. And more generally a \emph{nutple} is a singleton so also can
+only be set-sliced to either the empty set or itself.
+
+\xintexprname extends «Python-like» slicing to act on \emph{oples}:
+\begin{itemize}[nosep]
+\item if they are not \emph{nutples} set-theoretical slicing applies,
+\item if they are \emph{nutples} (only case having a one-to-one
+ correspondence in Python) then the slicing happens \emph{within brackets}:
+ i.e.\@ the \emph{nutple} is unpacked then the set-theoretical slicing is
+ applied, then the result is \emph{repacked} to produce a new \emph{nutple}.
+\end{itemize}
+With these conventions the \emph{none-ple} for example is invariant under
+slicing: unpacking it gives the empty set, which has only the empty set as
+subset and repacking gives back the \emph{none-ple}. Slicing a general
+\emph{nutple} returns a \emph{nutple} but now of course in general distinct
+from the first one.
+
+The input syntax for Python slicing is to postfix a variable or a
+parenthesized ople with |[a:b]|. See \autoref{ssec:lists} for more. There
+are never any out-of-range errors when slicing or indexing. All operations
+are licit and resolved by the |nil|, a.k.a. empty set.
+
+«Set-theoretical» item indexing of an \emph{ople} means reducing it to a
+subset which is a singleton. It is thus a special case of set-theoretical
+slicing (which is the general process of selecting a subset as replacement of
+a set).
+
+\xintexprname extends «Python-like» indexing to act on \emph{oples}:
+\begin{itemize}[nosep]
+\item if they are not \emph{nutples} set-theoretical item indexing applies,
+\item if they are \emph{nutples} (only case having a one-to-one
+ correspondence in Python) then the meaning becomes \emph{extracting}: i.e.\@
+ the \emph{nutple} is unpacked then the set-theoretical indexing is applied,
+ but the result is \emph{not repacked}.
+\end{itemize}
+For example when applied to the \emph{none-ple} we always obtain
+the |nil|. Whereas as we saw slicing the \emph{none-ple} always gives back the
+\emph{none-ple}. Indexing is denoted in the syntax by postfixing by |[N]|. Thus
+for \emph{nutples} (which are analogous to Python objects), there is genuine
+difference between the |[N]| extractor and the |[N:N+1]| slicer. But for
+\emph{oples} which are either |nil|, a \emph{number}, or of length at least 2,
+there is no difference.
+
+\subsubsection{Nested slicing of oples}
+
+Nested slicing is a concept from NumPy, which is extended by \xintexprname to
+trees of varying depths. We have a chain of slicers and extractors. I will
+describe only the case of slicers and letting them act on a |nutple|. The
+first slicer gives back a new |nutple|. The second slicer will be applied to
+each of one of its remaining elements. However some of them may be
+\emph{atoms} or the empty set. In the NumPy context all leaves are at the
+same depth thus this can happen only when we have reached beyond the last
+dimension (axis). This is not permitted by NumPy and generates an error.
+\xintexprname does not generate an error. But any attempt to slice an
+\emph{atom} or the empty set (as element of its container) removes it. Recall
+we call them \emph{leaves}. We can not slice leaves. We can only slice
+non-leaf elements: such items are necessarily |nutples|. The procedure then
+applies recursively.
+
+If we handle an extractor rather than a slicer, the procedure is similar: we
+can not extract out of an \emph{atom} or the empty set. They are thus
+removed. Else we have a |nutple|. It is thus unpacked and replaced by the
+selected element. This element may be an atom or the empty set and any further
+slicer or extractor will remove them, or it is a |nutple| and the procedure
+applies with the next slicer/extractor.
+
+\xintexprname allows to apply such a |[a:b,c:d,N,e:f,...]| chain of
+slicing/extracting also to an \emph{ople}, which is not a \emph{nutple}. We
+simply apply the first step as has been described previously and successive
+steps will only get applied to either \emph{nutples} or \emph{leaves}, the
+latter getting silently removed by any attempted operation.
+
+\subsubsection{Function arguments versus variables}
+\label{sssec:funcargs}
+
+In a function declaration with \csbxint{deffunc}, the call signature is parsed
+as a comma separated list, so here it is not true that repeated commas are
+like only one: repeated commas are not allowed and will break the function
+declaration.
+
+When \xintexprname parses a function call, it first constructs the ople which
+is delimited by the opening and closing parentheses, then it applies the
+function body, after having mapped the successive items (not the elements) of
+the parsed ople to the variables appearing in the function call
+signature. Hence the arguments in the call signature stand for |one-ples|
+(i.e.\@ either |numbers| or |nutples|).
+
+Let me explain why we can not define a function |foo(A,B)| of two oples: the
+function call will evaluate as an ople what is enclosed within the
+parentheses. It is then impossible in general to split this uniquely into two
+oples |A| and |B|, except if for example we know a priori the length of |A|.
+We could imagine defining a declarative interface for a |foo(A,B)| with |A|
+preset to have \dtt{37} items or at least a pre-defined number of items but
+this is extraneous layer for a functionality no-one will use.
+
+The alternative would be to consider that declaring |foo(A,B)| means |A| will
+pick-up always the first item and |B| all the remaining ones, and thus will be
+an ople; here, there are some \TeX nical implementation reasons which have
+dissuaded the author to do this.
+
+In its place, a special syntax |foo(A,*B)| for the declaration of the function
+is available. It means that |B| stands for the |nutple| which
+receives as items all arguments in the function call beyond the first one
+already assigned to |A|.
+
+More generally, the last positional argument in a function declaration can
+have the form |*|\meta{argname}. This then means that \meta{argname}
+represents a |nutple| which will receive as items all arguments in the
+function call remaining after the earlier positional arguments have been
+assigned. The declared function body is free to again use the syntax
+|*|\meta{argname} which will unpack it and thus produce the ople concatenating
+all such optional arguments.
+
+With \csbxint{defvar} one can define a variable with value an |ople| of
+arbitrary cardinality. Such a variable can be used in a function call, it
+will then occupy the place of as many arguments as its cardinality (which is
+its number of elements, hence of its associated items). For example if
+function |foo| was declared as a function of 5 arguments |f(a,b,c,d,e)| it is
+legitimate to use it as |f(A,B)| if |A| is an ople-valued variable of length
+three and |B| of length two. The actual arguments |a,b,c,d,e| will be made to
+match the three items of |A| and the two items of |B|.
+
+\subsubsection{Final words on leaves}
+
+In case things were too clear, let's try to add a bit of confusion with an
+extra word on \emph{leaves}. When we discuss informally (particularly to
+compare with NumPy) an input such as
+\begin{everbatim}
+[[1, 2], [3, 4]]
+\end{everbatim}
+we may well refer to |1|, |2|, |3|, and |4| as being «the leaves of the 2d
+array». But obviously we have here numbers and previously we explained that a
+number is not a \emph{leaf}, its \emph{atom} is. Well, the point here is that
+we must make a difference between the input form as above and the actual
+constructed \emph{ople} the parser will obtain out of it. In the input we do
+have numbers. The comma is a \emph{concatenator}, it is not a separator for
+enumeration! The \emph{ople} which corresponds to it has a \TeX{}
+representation like this:
+\begin{everbatim}
+{{{1}{2}}{{3}{4}}}
+\end{everbatim}
+where we don't have the \emph{numbers} anymore (which would look like |{{1}}|,
+|{{2}}|, ...) but numeric \emph{atoms} |{1}|, |{2}|, |{3}|, |{4}| where the
+braces are \TeX{} braces and \textbf{not} set-theoretical braces (the other
+braces are both). Hence we should see the above as the |ople|
+$\{\{A_{00}A_{01}\}\{A_{10}A_{11}\}\}$ with atoms $A_{00}=\{1\}$, ..., being the
+\emph{leaves} of the tree associated to (or which is) the \emph{ople}.
+
+Numbers may be called the \emph{leaves} of the \textbf{input}, but once
+parsed, the input becomes an \emph{ople} which is
+(morally) a tree whose leaves are \emph{atoms} (and the empty set).
+This discussion can also be revisited with footnote
+%%\footref{fn:alttree}
+\ref{fn:alttree} in mind.
+
+\subsubsection{Farewell, thanks for your visit!}
+
+I hope this is clear to everyone. If not, maybe time to say this section is
+not needed to understand almost all of the manual, but I needed to
+write it to be able to maintain in future my own software.
+
+\subsection{Expansion (for geeks only)}
+
+As mentioned already, the parsers are compatible with expansion-only
+context.
+
+Also, they expand the expression piece by piece: the normal mode of operation
+of the parsers is to unveil the parsed material token by token. Unveiling is
+a process combining space swallowing, brace removal (one level generally), and
+\fexpan sion.
+
+For example a closing parenthesis after some function arguments does not have
+to be immediately visible, it and the arguments themselves may arise from
+\fexpan sion (applied before grabbing each successive token). Even the ending
+|\relax| may arise from expansion. Even though the \csbxint{eval} user
+interface means that the package has at some point the entire expression in
+its hands, it immediately re-inserts it into token stream with an additional
+postfixed |\relax| and from this point on has lost any ways (a simple-minded
+delimited macro won't do because the expression is allowed to contain
+sub-\csbxint{expr}essions, even nested) to manipulate formally again the whole
+thing; it can only re-discover it one token at a time.
+
+This general behaviour (which allows much more freedom in assembling
+expressions than is usually the case with familiar programming languages such
+as Python, although admittedly that freedom will prove useful only to
+power-\TeX users and possibly does not have that many significant use cases)
+has significative exceptions. These exceptions are mostly related to
+«pseudo»-functions. A «pseudo»-function will grab some of its arguments via
+delimited macros. For example |subs(expr1,x=expr2)| needs to see the comma,
+equal sign and closing parenthesis. But it has mechanisms to allow |expr1| and
+|expr2| to possess their own commas and parentheses.
+
+Inner semi-colons on the other hand currently always can originate from expansion.
+Defining functions or variables requires a visible semi-colon acting as
+delimiter of the expression, but inner semi-colons do not need to be
+hidden within braces or macros\NewWith{1.4}.
+
+The expansion stops only when the ending |\relax| has been found
+(it is then removed from the token stream).
+
+For catcode related matters see \csbxint{exprSafeCatcodes}.
+
+A word of warning on the bracketed optional argument of respectively
+\csbxint{floatexpr} and \csbxint{iexpr}. When defining macros which will hand
+over some argument to one of these two parsers, the argument may potentially
+start with a left square bracket |[| (e.g. argument could be |[1, 2, 3]|) and
+this will break the parser. The fix is to use in the macro definition
+|\xintfloatexpr\empty|. This extra |\empty| token will prevent the parser
+from thinking there is an optional argument and it will then disappear during
+expansion.
+
+\begin{footnotesize}
+ If comparing to other languages able to handle floating point numbers or big
+ integers, such as Python, one should take into account that what the \xintname
+ packages manipulate are streams of ascii bytes, one per digit. At no time
+ (due to expandability) is it possible to store intermediate results in an
+ arithmetic CPU register; each elementary operation via |\the\numexpr| will
+ output digit tokens (hence as many bytes), not things such as handles to
+ memory locations where some numbers are stored as memory words. The process
+ can never put aside things but can only possibly permute them with upcoming
+ tokens, to use them later, or, via combinations of |\expanded| and
+ |\unexpanded| or some other more antiquated means grab some tokens and shift
+ the expansion to some distant locations to later come back. The process is a
+ never-ending one-dimensional one...\par
+\end{footnotesize}
\clearpage
\etocdepthtag.toc {part1B}
@@ -8279,6 +8463,10 @@ At \dtt{8} digits a special, faster, mode is used, which is less accurate. But f
under friendly pressure of Jürgen \textsc{Gilg} and Thomas \textsc{Söll}, let
them both be thanked here.
+Jürgen passed away in 2022. I will miss our friendship which was born and grew
+from numerous and regular exchanges on topics not limited to this package or
+even the \TeX\ world. Let's now continue to «take care and keep motivated» !
+
\subsection{\csh{xintreloadxinttrig}}\label{xintreloadxinttrig}
The library is loaded automatically by \xintexprname at start-up.
@@ -8717,7 +8905,7 @@ anecdotical evidence showing it is good.
\markboth{\makebox[0pt]{\xintRunningHeader}}{\makebox[0pt]{\xintRunningHeader}}
\etocdepthtag.toc {macros}
-\addtocontents{toc}{\gdef\string\sectioncouleur{{joli}}}
+\addtocontents{toc}{\gdef\string\sectioncouleur{{tocbundlesectioncolor}}}
\addtocontents{toc}{\gdef\string\SKIPSECTIONINTERSPACE{\kern\smallskipamount}}
\renewcommand{\etocaftertochook}{\addvspace{\bigskipamount}}
@@ -9328,18 +9516,14 @@ be expressed as such a fraction even if the inputs are both integers and the
mathematical result is an integer. The |B=1| is not removed.%
%
\footnote{refer to the documentation of \csbxint{PRaw} for an alternative.}
-\item macros with |Float| in their names produce on output scientific
-format with |P=|\nobreak\csbxint{theDigits} digits, a lowercase |e| and an
-exponent |N|. The first digit is not zero, it is preceded by an optional minus
-sign and is followed by a dot and |P-1| digits. Trailing zeroes are not
-trimmed. There is one exceptional case:
-\begin{itemize}[nosep]
-\item if the value is mathematically zero, it is output as |0.e0|,
- i.e.\@ zeros after the decimal mark are removed and the exponent is always |0|.
-\end{itemize}
-Future versions of the package may modify this.
-\end{itemize}
+\item macros from \xintfracname having |Float| in their names deliver a number
+ in the scientific notation as described in the documentation of
+ \csbxint{Float}.
+ The exceptions are \csbxint{PFloat} and its variant \csbxint{PFloatb} which
+ do some customizable pretty printing of the result. The former is also used
+ by default by \csbxint{floateval}.
+\end{itemize}
\subsection{Count registers and variables}\label{sec:useofcount}
@@ -10811,7 +10995,7 @@ positive, and |N = 10^x Q - R| if |Q| turns out to be negative,
which is exactly the case when |N| is at most |-10^x|.
|\xintDSx|\x\n\etype{\numx f} for |x| negative is exactly as
-|\xintDSH|\x\n, \emph{i.e.\@} multiplication by $10^{-|x|}$. For |x| zero or
+|\xintDSH|\x\n, \emph{i.e.\@} multiplication by $10^{-\text{|x|}}$. For |x| zero or
positive it returns the two numbers |{Q}{R}| described above, each one within
braces. So |Q| is |\xintDSH|\x\n, and |R| is |\xintDSHr|\x\n, but computed
simultaneously.
@@ -10994,9 +11178,10 @@ satisfy |d>0| and |M^2-d=N| with
\xintiiSub{\xintiiSqr\A}\B=\A\string^2-\B
\end{everbatim*}
-A rational approximation to $\sqrt{|N|}$ is $|M|-\frac{|d|}{|2M|}$ which is a
-majorant and the error is at most |1/2M| (if |N| is a perfect square |k^2|
-this gives |k+1/(2k+2)|, not |k|.)
+A rational approximation to $\sqrt{\text{|N|}}$ is
+$\text{|M|}-\frac{\text{|d|}}{\text{|2M|}}$ which is a majorant and the error
+is at most |1/2M| (if |N| is a perfect square |k^2| this gives |k+1/(2k+2)|,
+not |k|.)
Package \xintfracname has \csbxint{FloatSqrt} for square roots of floating
point numbers.
@@ -11530,7 +11715,7 @@ to proceed is via a redefinition of \csbxint{floatexprPrintOne} and/or
\csbxint{exprPrintOne}.
\begin{everbatim*}
\[\def\xintfloatexprPrintOne[#1]#2{\xintTeXfromSci{\xintPFloat[#1]{#2}}}
- \xintfloateval{[10] 2^100, 3^100, 13^100}\]
+ \xintfloateval[10]{2^100, 3^100, 13^100}\]
\end{everbatim*}
\par\vskip-\belowdisplayskip
\begin{everbatim*}
@@ -11777,70 +11962,35 @@ from removing the |[N]| part if |N=0| and removing the |B| if |B=1|.
\xintPRaw {123e10/321e10}, \xintPRaw {123e9/321e10}, \xintPRaw {\xintIrr{861/123}}
\end{everbatim*}
-\subsection{\csh{xintFracToSci}}\label{xintFracToSci}
-
-
-\csa{xintFracToSci}\NewWith{1.4} is for usage by \csbxint{eval} for formatting
-the output of numbers: the output routine of \csbxint{eval} uses
-\csbxint{exprPrintOne} whose current default definition is:
-\begin{everbatim}
-\let\xintexprPrintOne\xintFracToSci
-\end{everbatim}
-Any replacement should obey the following blueprint:
-\begin{itemize}[noitemsep]
-\item to\xtype{} be expandable, but not necessarily \fexpan dable,
-\item to accept on input |A|, |A/B|, |A[N]|, or |A/B[N]|, i.e. the ``raw''
- \xintfracname format, but with optional |/B| and |[N]| parts,
- which can be called the ``relaxed raw format''.
-\end{itemize}
-These constraints\CHANGED{1.4e} are much simplified at |1.4e| (and \csa{xintFracToSci} has
-been internally simplified to only have to obey the reduced constraints, which
-is a breaking change).
-
-At |1.4e| the handling\CHANGED{1.4e} by this macro of input with a scientific
-exponent part has changed. Rather than producing an integer mantissa it now
-does as \csbxint{PFloat} (apart from the float-rounding of course) in
-particular it trims out trailing zeros.
-
-Attention, \csa{xintFracToSci} does not behave as the other public macros from
-\xintfracname:
-\begin{itemize}[noitemsep]
-\item it is expandable, but not \fexpan dable, so it can't appear as argument
- to other \xintfracname macros without an explicit |\expanded{...}| wrapper
- (as they only \fexpan d their arguments).
-\item it expects input already (after \fexpan sion) in ``relaxed raw''
- \xintfracname format.\IMPORTANT{}
-\end{itemize}
-
-\noindent\csa{xintFracToSciE} has been removed at |1.4e|, see \csbxint{PFloatE}.
-
\subsection{\csh{xintDecToStringREZ}}\label{xintDecToStringREZ}
-\csa{xintDecToStringREZ}\etype{\Ff} uses fixed point notation
-for the output. The argument is first parsed in the same way as for any other
-\xintfracname macros,\NewWith{1.4e} which means that it is first transformed into an
-internal format having a numerator |A|, a denominator |B| and a power of ten
-exponent |N|. The following recipe applies:
+\csa{xintDecToStringREZ}\etype{\Ff} uses fixed point (decimal) notation
+for the output. The |REZ| means that it trims (REmoves) trailing Zeros. The name
+is a bit strange, because\NewWith{1.4e} it its not limited to
+\emph{decimal numbers} but accepts the same kind of inputs as most other
+\xintfracname macros. The parsing of this input transforms it first
+into an internal format having a numerator |A|, a denominator |B| and a
+power of ten exponent |N|, standing for the fraction |A/B| times
+\dtt{10} to the power |N|. Then the following recipe applies:
\begin{itemize}[noitemsep]
\item the zero value is printed as \dtt{\xintDecToStringREZ{0}} (no decimal point).
\item trailing zeros of |A| and |B| are removed and |N| is adjusted,
\item if the new |B| is not \dtt{1}, it will appear in the output as |/B|,
-\item fixed point notation is used for |AeN|:
+\item fixed point decimal notation is used for |AeN|:
\begin{itemize}[noitemsep]
\item if |N| is non-negative, the output is an integer with |N| trailing
- zeros,
+ zeros (and no decimal mark)
\item if |N| is negative a decimal point is used, and if |AeN| is less than
- one in absolute value, output will start with \dtt{0.} (with a decimal point).
+ one in absolute value, output will start with \dtt{0.} (i.e. a decimal mark).
\end{itemize}
\end{itemize}
-Please note the following:
+The following should be noted:
\begin{enumerate}[noitemsep]
\item the fraction |AeN/B| or even |A/B| is not pre-reduced into lowest terms,
\item the macro does not check if |B| contains only powers of \dtt{2} and
\dtt{5}, so |1/2| is printed as \dtt{\xintDecToString{1/2}}, not as \dtt{0.5}.
\end{enumerate}
-The definitive behaviour remains to be decided regarding these two points.
-
+The definitive behaviour remains to be decided regarding these last two points.
\begin{everbatim*}
\xintDecToStringREZ{0}, \xintDecToStringREZ{1/2}, \xintDecToStringREZ{0.5000}\newline
\xintDecToStringREZ{1.23456789e5}, \xintDecToStringREZ {1.23456789e-3}\newline
@@ -11850,15 +12000,22 @@ The definitive behaviour remains to be decided regarding these two points.
\xintDecToStringREZ{70/14} % is not reduced to lowest terms
\end{everbatim*}
+See \csbxint{FloatToDecimal} for a variant which first rounds the input
+to some given number of significant digits.
+
\subsection{\csh{xintDecToString}}\label{xintDecToString}
-\csa{xintDecToString}\etype{\Ff} uses fixed point notation for the output. It
-was introduced at |1.3| as experimental backport from a
-\href{http://ctan.org/pkg/polexpr}{polexpr} macro, and its behaviour remains
-somewhat undecided in particular regarding whether it should identify inputs
-which correspond to decimal numbers, \emph{after reduction to lowest terms}.
+\csa{xintDecToString}\etype{\Ff} uses fixed point notation for the output.
+Is behaviour remains
+somewhat undecided in so far as whether it should identify inputs
+which correspond to decimal numbers (i.e. fractions with only powers of
+two and five in their denominator, once reduced to lowest terms).
+
+As with \csbxint{DecToStringREZ}, the name is a bit strange as inputs are in no
+way limited to decimal numbers but are of the most general type accepted by
+the \xintfracname macros.
-It follows the same rules as \csbxint{DecToStringREZ} except that it does not
+It is the same macro as \csbxint{DecToStringREZ} except that it does not
remove trailing zeros, in fact \csbxint{DecToStringREZ}|{f}| is defined as
\csbxint{DecToString}|{|\csbxint{REZ}|{f}}|.
@@ -11872,13 +12029,16 @@ remove trailing zeros, in fact \csbxint{DecToStringREZ}|{f}| is defined as
\end{everbatim*}
Since |1.4e|\CHANGED{1.4e}, \csbxint{DecToString} is the default for
-\csbxint{iexprPrintOne}, which governs the \csbxint{ieval} output format (in
-this use case there is never a |/B| fractional part).
+\csbxint{iexprPrintOne}, which governs the \csbxint{ieval} output format: in
+this use case there is never a |/B| fractional part and the output is always
+either an integer (if \csbxint{ieval} was used without optional argument) or a
+decimal string
\begin{everbatim}
-\let\xintiexprPrintOne\xintDecToString
+\def\xintiexprPrintOne{\xintDecToString}
\end{everbatim}
-Any replacement of \csbxint{iexprPrintOne} should obey the following blueprint:
+Any replacement of \csbxint{DecToString} as the expansion of
+\csbxint{iexprPrintOne} should obey the following blueprint:
\begin{itemize}[noitemsep]
\item to\xtype{} be expandable, but not necessarily \fexpan dable,
\item to accept on input |A| or |A[N]|.
@@ -12717,7 +12877,9 @@ expression will be fed to |\numexpr|. It is a shortcut for doing
See also the \xintexprname-added variant \csbxint{SetDigits*}.
\end{framed}
-\subsection{\csh{xintFloat}}\label{xintFloat}
+\subsection{\csh{xintFloat}}
+\label{xintFloat}
+\label{xintFloatZero}
The macro |\xintFloat [P]{f}|\etype{{\upshape[\numx]}\Ff} has an optional
@@ -12729,8 +12891,13 @@ prefixed by a minus sign and is followed by a dot and |P-1| digits, then a
lower case |e| and an exponent |N|. The trailing zeroes are not trimmed.
\begin{framed}
- There is currently one exceptional case: the zero value, which gets output
- as \dtt{\xintFloat{0}}. It is yet to be decided what the final policy will be.
+ There is one exception to the general description: the zero value, which
+ gets output as \dtt{\xintFloat{0}}.\CHANGEDf{1.4k} This was changed at
+ |1.4k|, until then it was using \dtt{0.e0} as output. Customize via
+ \csh{xintFloatZero} whose default definition is:
+\begin{everbatim}
+\def\xintFloatZero{0.0e0}
+\end{everbatim}
\end{framed}
Starting with |1.2k|, when the input is a fraction |AeN/BeM|
@@ -12776,81 +12943,282 @@ transitive in the number of kept digits.
+\subsection{\csh{xintFloatToDecimal}}
+\label{xintFloatToDecimal}
+
+|\xintFloatToDecimal [P]{f}|\etype{{\upshape[\numx]}\Ff} does float rounding
+on input like \csbxint{Float} then outputs the number using decimal notation,
+i.e. with as many zeros as are needed (and no more) and no scientific
+exponent.\NewWith{1.4k}
+
+In other terms it behaves (and is essentially defined) as:
+\begin{everbatim}
+\xintDecToStringREZ{\xintFloat[optional P]{<input>}}
+\end{everbatim}
+Examples:
+\begin{everbatim*}
+\xintFloatToDecimal{6.02e23}\newline
+\xintFloatToDecimal{6.02000000000000e23}\newline
+\xintFloatToDecimal[20]{1/7e10}\newline
+\xintFloatToDecimal[30]{1/7e10}
+\end{everbatim*}
+
+See \csbxint{DecToString}.
+
\subsection{\csh{xintPFloat}}
\label{xintPFloat}
-\label{xintPFloatE}
|\xintPFloat [P]{f}|\etype{{\upshape[\numx]}\Ff} is like \csbxint{Float} but
``pretty-prints'' the output.
-This macro was added at |1.1| as a (very primitive) "prettifying printer" for
-floating point number, and was basically influenced by Maple.
+This macro was initially added at |1.1| as a (very primitive) "prettifying
+printer" for floating point number, and was then somewhat influenced by Maple,
+for example the zero value was printed as "\dtt{0.}". Then at |1.4e| there was
+breaking change and the rules became somewhat similar to observed Python
+behaviour: mantissas trimmed of trailing zeros (whether or not scientific
+notation was used in the output) and integers printed with a trailing
+"\dtt{.0}", in particular the zero value was printed as "\dtt{0.0}".
-The old rules were:
-\begin{enumerate}[nosep]
-\item The input is float-rounded to either |Digits| or the optional argument,
-\item zero is printed as \dtt{0.},
-\item \dtt{x.yz...eN} is printed ``as is'' if the exponent |N| is at least
- \dtt{6} or at most \dtt{-6},
-\item else fixed point decimal notation is used,
-\item and there is no trimming of trailing zeroes.
-\end{enumerate}
+|1.4k|\CHANGED{1.4k} brings some breaking changes, which are reversible
+via customizing macros:
+\begin{itemize}
+\item Integers (when scientific notation is dropped) without a "\dtt{.0}"
+ suffix.
+\item Same for the zero value, now "\dtt{\xintPFloat{0}}".
+\item Significands are trimmed of trailing zeros only if that removes at least
+ \dtt{4} zeros. The rationale is that automatic removal of trailing zeros
+ (which was influenced at |1.4e| from practice with Python in interactive
+ mode) proves annoying visually with aligned values in tables, as this
+ creates voids, so we want to do this only when really the
+ presence of trailing zeros is not some kind of numerical fluke.
+\end{itemize}
+These changes impact the \csbxint{floateval} output as
+\csbxint{floatexprPrintOne} defaults to using \csbxint{PFloat}.
-At |1.4e|, there is breaking change\CHANGED{1.4e}. The new rules are:
+The default rules are thus now:
\begin{enumerate}[nolistsep]
-\item The input is float-rounded to either |Digits| or the optional argument,
-\item zero is printed as \dtt{0.0},
-\item \dtt{x.yz...eN} is printed in decimal fixed point if |-4<=N<=+5|
- else it is printed in scientific notation,
-\item Trailing zeros of the mantissa are trimmed always,
-\item In case of decimal fixed point output format, and the value is an integer, there
- is a trailing |.0|,
-\item In case of scientific notation with a one-digit trimmed mantissa
- there is an added |.0| too.
+\item The input is float-rounded to either |Digits| or the optional argument.
+\item zero is printed as \dtt{\xintPFloat{0}}.\CHANGED{1.4k}
+\item \dtt{x.yz...eN} is printed in decimal fixed point if
+ $-4\leq\text{|N|}\leq+5$ else it is printed in scientific notation.
+\item Trailing zeros of the mantissa are trimmed if, and only if there are at least \dtt{4}
+ of them.\CHANGED{1.4k}
+\item In case of fixed point output format, and the value is an integer, the
+ integer is printed with no decimal mark.\CHANGED{1.4k}
+\item In case of scientific notation output format, and the mantissa has only
+ one digit, no decimal mark is used.
\end{enumerate}
+Please note that ``trailing zeros'' refers to the ``trailing zeros of the full width
+significand after float-rounding'', and not only to trailing zeros used in the input.
+
+% The old rules were:
+% \begin{enumerate}[nosep]
+% \item The input is float-rounded to either |Digits| or the optional argument,
+% \item zero is printed as \dtt{0.},
+% \item \dtt{x.yz...eN} is printed ``as is'' if the exponent |N| is at least
+% \dtt{6} or at most \dtt{-6},
+% \item else fixed point decimal notation is used,
+% \item and there is no trimming of trailing zeroes.
+% \end{enumerate}
-The |1.4e| changes will affect all usages of \csbxint{floateval} as the latter
-applies per default (cf.\@ \csbxint{floatexprPrintOne}) \csbxint{PFloat} to
-each numerical leaf of the computed expression.
+% At |1.4e|, there is breaking change\CHANGED{1.4e}. The new rules are:
-\csa{xintPFloatE}\NewWith{1.4b} was added to allow customizing the
-symbol used on output for separating the significand from the exponent, if
-output uses scientific notation. The separator defaults to |e|, according to
-this definition:
+\begingroup\color{everbatimxfgcolor}
+\begin{multicols}2
+\def\test #1{\item #1${}\to{}$\xintPFloat{#1}}%
+\string\xintDigits\ at \xinttheDigits
+\begin{itemize}[nosep,font=\normalcolor]
+\test {0}
+\test {1.2340000e-7}\test {1.2340000e-6}\test {1.2340000e-5}\test {1.2340000e-4}
+\test {1.2340000e-3}\test {1.2340000e-2}\test {1.2340000e-1}
+\test {1.2340000e0}\test {1.2340000e1}\test {1.2340000e2}\test {1.2340000e3}
+\test {1.2340000e4}\test {1.2340000e5}\test {1.2340000e6}\test {1.2340000e7}
+\test {1e-7/7}\test {1e-6/7}\test {1e-5/7}\test {1e-4/7}
+\test {1e-3/7}\test {1e-2/7}\test {1e-1/7}
+\test {1e0/7}\test {1e1/7}\test {1e2/7}\test {1e3/7}
+\test {1e4/7}\test {1e5/7}\test {1e6/7}\test {1e7/7}
+\end{itemize}
+\end{multicols}
+\endgroup
+
+\subsubsection{Customizing macros of \csh{xintPFloat}}
+\label{xintPFloatE}
+\label{xintPFloatZero}
+\label{xintPFloatIntSuffix}
+\label{xintPFloatLengthOneSuffix}
+\label{xintPFloatNoSciEmin}
+\label{xintPFloatNoSciEmax}
+\label{xintPFloatMinTrimmed}
+
+A number of macros allow to customize the behaviour of \csbxint{PFloat}:
+\begin{itemize}
+\item \csa{xintPFloatE}\NewWith{1.4b} allows to modify the separator of the
+ scientific notation. Here is its default:
+%
+ \footnote{For \TeX perts: it is allowed to define
+ \csa{xintPFloatE} as a macro which grabs the exponent as an argument
+ delimited by a dot, and produces \fexpan dably an output also delimited by
+ a dot (it will removed via further internal processing).\NewWith{1.4e}}
+%
\begin{everbatim}
\def\xintPFloatE{e}
\end{everbatim}
-It is now possible\NewWith{1.4e} to let it grab the exponent as an argument (delimited by a
-dot) and format it (output must be delimited by a dot, which will be removed
-later on).
+\item \csa{xintPFloatZero}\NewWith{1.4k} says how to print the zero value.
+ The default:
+\begin{everbatim}
+\def\xintPFloatZero{0}
+\end{everbatim}
+
+\item \csa{xintPFloatIntSuffix}\NewWith{1.4k} is postfixed to integer values
+ (when scientific notation is not used). Its default at |1.4k| is to add
+ nothing. It replaces the formerly hard-coded "\dtt{.0}" from |1.4e| (prior
+ to that trailing zeros from the full significand of |P| or
+ \csbxint{theDigits} digits were not trimmed).
+\begin{everbatim}
+\def\xintPFloatIntSuffix{}
+\end{everbatim}
+
+\item \csa{xintPFloatLengthOneSuffix}\NewWith{1.4k} is postfixed to trimmed
+ mantissas having only one digit, when scientific notation is used. Its
+ default at |1.4k| is to add nothing. It replaces formerly hard-coded
+ "\dtt{.0}".
+\begin{everbatim}
+\def\xintPFloatLengthOneSuffix{}
+\end{everbatim}
+
+\item \csa{xintPFloatNoSciEmax}\NewWith{1.4k} is the maximal scientific exponent
+ which will trigger use of decimal fixed point notation and
+ \csa{xintPFloatNoSciEmin} is the minimal one. Their defaults at |1.4k| are the
+ same as the formerly hard-coded behaviour from |1.4e|:
+\begin{everbatim}
+\def\xintPFloatNoSciEmax{5}
+\def\xintPFloatNoSciEmin{-4}
+\end{everbatim}
+ For example (with the package default width of \dtt{16} digits for mantissas
+ of floating point numbers):
\begin{everbatim*}
-\begin{multicols}2
-\def\test #1{#1${}\to{}$\xintPFloat{#1}}\string\xintDigits\ at \xinttheDigits
-\begin{itemize}[nosep]
-\item \test {0}
-\item \test {1.2340000e-7}
-\item \test {1.2340000e-6}
-\item \test {1.2340000e-5}
-\item \test {1.2340000e-4}
-\item \test {1.2340000e-3}
-\item \test {1.2340000e-2}
-\item \test {1.2340000e-1}
-\end{itemize}
-Change of scientific separator to |E|.\def\xintPFloatE{E}%
-\begin{itemize}[nosep]
-\item \test {1.2340000e0}
-\item \test {1.2340000e1}
-\item \test {1.2340000e2}
-\item \test {1.2340000e3}
-\item \test {1.2340000e4}
-\item \test {1.2340000e5}
-\item \test {1.2340000e6}
-\item \test {1.2340000e7}
-\end{itemize}
-\end{multicols}
+\begingroup
+\def\xintPFloatNoSciEmin{-20}
+\xintPFloat{1e-19/7}\newline
+\xintPFloat{1e-20/7}\par
+\def\xintPFloatNoSciEmax{19}
+\xintPFloat{1e20/7}\newline
+\xintPFloat{1e21/7}\par
+\endgroup
\end{everbatim*}
+\item \csa{xintPFloatMinTrimmed}\NewWith{1.4k} is the minimal number
+of trailing zeros which have to be present to activate actual trimming.
+The default definition is:
+\begin{everbatim}
+\def\xintPFloatMinTrimmed{4}
+\end{everbatim}
+Defining it to expand to \dtt{-1} or \dtt{0} will enable the trimming of
+trailing zeros always, and setting it to a high value will prevent it
+altogther.
+
+\end{itemize}
+
+To mimick approximately the Python behaviour in interactive sessions,
+one can use the following configuration:
+\begin{everbatim}
+\def\xintPFloatZero{0.0}%
+\def\xintPFloatIntSuffix{.0}%
+\def\xintPFloatLengthOneSuffix{.0}%
+\def\xintPFloatNoSciEmax{15}%
+\def\xintPFloatNoSciEmin{-4}%
+\def\xintPFloatMinTrimmed{-1}%
+\end{everbatim}
+\begingroup\color{everbatimxfgcolor}
+\def\xintPFloatZero{0.0}%
+\def\xintPFloatIntSuffix{.0}%
+\def\xintPFloatLengthOneSuffix{.0}%
+\def\xintPFloatNoSciEmax{15}%
+\def\xintPFloatNoSciEmin{-4}%
+\def\xintPFloatMinTrimmed{-1}%
+\def\test#1{#1${}\to{}$\xintPFloat{#1}\newline}%
+\test{0.}
+\test{1234.}
+\test{6e100}
+\test{1234567812345678.12345678}
+\test{12345678123456781.2345678}
+\test{12345678.12340}
+\test{12345678.123400}
+\test{0.1234567812345678}
+\test{0.00012345678123456785}
+\test{0.000012345678123456785}\par
+\endgroup
+%
+The above using the default \csbxint{Digits} setting of \dtt{16} digits.
+This can not naturally match exactly CPython which uses internally radix
+|2| not |10|, and has (by default) mantissas with \dtt{53=1+52} bits.
+
+Same, but playing with \ctanpackage{xintsession} in its |&fp| mode:
+\begin{everbatim}
+>>> &fp
+fp mode (16 digits)
+>>> \\def\xintPFloatZero{0.0}
+(executing \\def\xintPFloatZero {0.0} in background)
+)
+Runaway argument?
+def\xintPFloatZero {0.0}\message {
+}\xs_fetch_aa \endinput
+! File ended while scanning use of \\.
+<inserted text>
+ \par
+<*> xintsession^^M
+
+? S
+OK, entering \scrollmode...
+
+*\xintsession
+
+ You are back to the xintexpr interactive session!
+ (current mode: fp (Digits=16), with Digits=16)
+
+ ">>> " means central computing is waiting for input
+ "... " means that multi-line input continues. Use `;' to terminate it.
+
+ Say `&bye' at any time to terminate the session and the TeX run.
+>>> \def\xintPFloatZero{0.0}
+(executing \def \xintPFloatZero {0.0} in background)
+
+>>> \def\xintPFloatIntSuffix{.0}\def\xintPFloatLengthOneSuffix{.0}
+
+(executing \def \xintPFloatIntSuffix {.0}\def \xintPFloatLengthOneSuffix {.0} i
+n background)
+
+>>> \def\xintPFloatNoSciEmax{15}\def\xintPFloatNoSciEmin{-4}
+
+(executing \def \xintPFloatNoSciEmax {15}\def \xintPFloatNoSciEmin {-4} in back
+ground)
+
+>>> \def\xintPFloatMinTrimmed{-1}
+(executing \def \xintPFloatMinTrimmed {-1} in background)
+
+>>> 0., 1234., 6e100;
+@_1 0.0, 1234.0, 6.0e100
+>>> 1234567812345678.12345678;
+@_2 1234567812345678.0
+>>> 12345678123456781.2345678;
+@_3 1.234567812345678e16
+>>> 12345678.12340;
+@_4 12345678.1234
+>>> 12345678.123400;
+@_5 12345678.1234
+>>> 0.1234567812345678;
+@_6 0.1234567812345678
+>>> 0.00012345678123456785;
+@_7 0.0001234567812345679
+>>> 0.000012345678123456785;
+@_8 1.234567812345679e-5
+>>> &bye
+\end{everbatim}
+This is with version |0.4alpha (2021-11-01)| of
+\ctanpackage{xintsession}. Probably some ``magic'' shortcuts will be
+added in future to its interface for this kind of tasks, in place of
+the |\def|.
% \subsection{\csh{xintFloatE}}\label{xintFloatE}
% %! {\small New with |1.097|.}
@@ -13035,7 +13403,7 @@ handled exactly. And as said above its absolute value may exceed the \TeX\ bound
\subsection{\csh{xintFloatSqrt}}\label{xintFloatSqrt}
\csa{xintFloatSqrt}|[P]{f}|\etype{{\upshape[\numx]}\Ff} computes a floating
-point approximation of $\sqrt{|f|}$, either using the optional precision |P| or
+point approximation of $\sqrt{\text{|f|}}$, either using the optional precision |P| or
the value of |\xinttheDigits|.
More precisely since |1.2f| the macro achieves so-called \emph{correct
@@ -13838,7 +14206,7 @@ needs a general calculus of special functions. This is why the package
\csa{xintPowerSeries}|{A}{B}{\coeff}{f}|\etype{\numx\numx\Ff\Ff}
evaluates the sum
-$\sum_{\text{|n=A|}}^{\text{|n=B|}}$|\coeff{n}|${}\cdot |f|^{\text{|n|}}$. The
+$\sum_{\text{|n=A|}}^{\text{|n=B|}}$|\coeff{n}|${}\cdot \text{|f|}^{\text{|n|}}$. The
initial and final indices are given to a |\numexpr| expression. The |\coeff|
macro (which, as argument to \csa{xintPowerSeries} is expanded only at the time
|\coeff{n}| is needed) should be defined as a one-parameter expandable macro,
@@ -13942,7 +14310,7 @@ an expanding only context, doing |\edef\g{\f}| is no option, then
\csa{xintFxPtPowerSeries}|{A}{B}{\coeff}{f}{D}|\etype{\numx\numx}
computes
-$\sum_{\text{|n=A|}}^{\text{|n=B|}}$|\coeff{n}|${}\cdot |f|^{\,\text{|n|}}$ with each
+$\sum_{\text{|n=A|}}^{\text{|n=B|}}$|\coeff{n}|${}\cdot \text{|f|}^{\,\text{|n|}}$ with each
term of the series truncated to |D| digits\etype{\Ff\Ff\numx}
after the decimal point. As
usual, |A| and |B| are completely expanded through their inclusion in a
@@ -14011,7 +14379,7 @@ of \csa{xintPowerSeries}, the nineteenth partial sum, and to then give
estimate a priori how many ending digits are not reliable: if there are
|N| terms and |N| has |k| digits, then digits up to but excluding the
last |k| may usually be trusted. If we are optimistic and the series is
-alternating we may even replace |N| with $\sqrt{|N|}$ to get the number |k|
+alternating we may even replace |N| with $\sqrt{\text{|N|}}$ to get the number |k|
of digits possibly of dubious significance.
\subsection{\csh{xintFxPtPowerSeriesX}}\label{xintFxPtPowerSeriesX}
@@ -14033,7 +14401,7 @@ Let us illustrate this on the numerical exploration of the identity
%
Let |L(h)=log(1+h)|, and |D(h)=L(h)+L(-h/(1+h))|. Theoretically thus,
|D(h)=0| but we shall evaluate |L(h)| and |-h/(1+h)| keeping only 10
-terms of their respective series. We will assume $|h|<0.5$. With only
+terms of their respective series. We will assume $\text{|h|}<0.5$. With only
ten terms kept in the power series we do not have quite 3 digits
precision as $2^{10}=1024$. So it wouldn't make sense to evaluate things
more precisely than, say circa 5 digits after the decimal points.
@@ -14094,7 +14462,7 @@ release.
\noindent\csa{xintFloatPowerSeries}|[P]{A}{B}{\coeff}{f}|%
\ntype{{\upshape[\numx]}\numx\numx}
computes
-$\sum_{\text{|n=A|}}^{\text{|n=B|}}$|\coeff{n}|${}\cdot |f|^{\,\text{|n|}}$
+$\sum_{\text{|n=A|}}^{\text{|n=B|}}$|\coeff{n}|${}\cdot \text{|f|}^{\,\text{|n|}}$
with a floating point
precision given by the optional parameter |P| or by the current setting of
|\xintDigits|.\etype{\Ff\Ff}
@@ -16926,61 +17294,65 @@ before a problematic (but reasonable) character catcode, or even to use
\subsubsection{\csh{xintexprSafeCatcodes}}
\label{xintexprSafeCatcodes}
-For an even more radical way, there is \csbxint{exprSafeCatcodes} which sets
-the catcodes of many characters to safe values. This is a non-expandable step
-as it changes catcodes.
+Some problems with active characters can be resolved on the fly by prefixing
+them by |\string| but some aspects of the parsing done by \csbxint{expr}
+involves delimited macros which need the comma, equality sign and closing
+parenthesis to have their standard catcodes.
+
+So \csbxint{exprSafeCatcodes} is provided as a utility to set in one go
+catcodes of many characters to \csbxint{expr}-safely compatible values. This
+is a non-expandable step as it changes catcodes.
% This is used
% internally by \csbxint{NewExpr} (restoring the catcodes on exit), hence it
% does not have to be protected against active characters when used at
% top-level.
-\csbxint{defvar}, \csbxint{deffunc}, et al., execute it before fetching their
-semi-colon delimited arguments, so they can be used (also in the document
-body) for example with Babel+French (which makes the semi-colon active in the
-(\LaTeX) document body). This applies also to \csbxint{NewExpr}.
+\csbxint{defvar}, \csbxint{deffunc}, et al., use it, and then they restore
+catcodes to the prior state via \csbxint{exprRestoreCatcodes}.
% As \csbxint{NewExpr} and \csbxint{deffunc} and variants use internally some
% |\scantokens|, they will (reasonably) succeed in sanitizing catcodes in the
% expressions, even if all is from the replacement text of some macro whose
% definition was done under some special catcode regime.
-But, if used in the body of macro definitions problems may arise from the
-catcode regime at that location. This applies in particular to the
-semi-colon as used by \csbxint{deffunc}, \csbxint{defvar} and variants as
-delimiter. Thus make sure the semi-colon has its normal catcode when issueing
-\csbxint{deffunc} inside some macro definition.
+% \csbxint{deffunc} is more lenient than \csbxint{defvar} regarding catcodes of
+% characters in expression bodies as it does some |\scantokens| which will reset
+% compatible catcodes.
-\csbxint{deffunc} is more lenient than \csbxint{defvar} regarding catcodes of
-characters in expression bodies as it does some |\scantokens| which will reset
-compatible catcodes. And also, characters inside the
-expression may usually be prefixed with |\string|; but some aspects of the parsing
-use delimited macros which need the comma, equality sign and closing
-parenthesis to have standard catcodes.
+% Even if used in a context where catcodes are already set, \csbxint{deffunc},
+% \csbxint{defvar} and variants ignore completely the colon in |:=| so it can
+% have any (reasonable) catcode. Moreover it is optional.
-Even if used in a context where catcodes are already set, \csbxint{deffunc},
-\csbxint{defvar} and variants ignore completely the colon in |:=| so it can
-have any (reasonable) catcode. Moreover it is optional.
-
-The semi-colon in the syntax of \csbxint{Digits} is no real problem either
-(cf. \csbxint{Digits} documentation).
-
-\begin{framed}
- It is important to ALWAYS shortly let \csbxint{exprSafeCatcodes} be followed
- by \csbxint{exprRestoreCatcodes}.\IMPORTANTf{} If one uses twice
- \csbxint{exprSafeCatcodes} then the next \csbxint{exprRestoreCatcodes} will
- restore the ancient catcode regime at time of the first one.
-\end{framed}
+% The semi-colon in the syntax of \csbxint{Digits} is no real problem either
+% (cf. \csbxint{Digits} documentation).
\subsubsection{\csh{xintexprRestoreCatcodes}}
\label{xintexprRestoreCatcodes}
-Restores the catcodes to the earlier state. More precisely,
-\csbxint{exprSafeCatcodes} sets a toggle (with local scope). If the toggle is
-set already it does not restore the current catcodes. The next
-\csa{xintexprRestoreCatcodes} unsets the toggle.
-So, in case of nesting, the
-catcodes are restored to what they were when the \emph{first} un-paired
-\csbxint{exprSafeCatcodes} got executed.
+Restores the catcodes to the state prevailing at the time of the last executed
+\csbxint{exprSafeCatcodes} (if located at the same \LaTeX\ environment or
+\TeX\ grouping level).
+
+Prior to |1.4k|, in a situation like the following:
+\begin{everbatim}
+\xintexprSafeCatcodes
+....stuff possibly changing catcodes
+\xintexprSafeCatcodes
+....stuff possibly changing catcodes
+\xintexprSafeCatcodes
+....stuff possibly changing catcodes
+\xintexprRestoreCatcodes
+\end{everbatim}
+On exit, the catcodes recovered their status as prior to the \emph{first}
+\csbxint{exprSafeCatcodes}. Since |1.4k|, they are set to what they were
+prior to the \emph{last} \csbxint{exprSafeCatcodes}, i.e. the mechanism is now
+similar to a ``last in, first out'' stack.
+
+Note that no global assignments are made so the behaviour can be modified
+by usage of \TeX\ groups or \LaTeX\ environments: e.g. if an
+\csbxint{exprSafeCatcodes} is issued inside a \LaTeX\ environment it does not
+have to be paired by \csbxint{exprRestoreCatcodes} explicitly, the catcode
+scope is limited by the environment.
\bigskip
@@ -16988,30 +17360,26 @@ Spaces inside an |\xinttheexpr...\relax| should mostly be
innocuous (except inside macro arguments).
|\xintexpr| and |\xinttheexpr| are for the most part agnostic regarding
-catcodes: (unbraced) digits, binary operators, minus and plus signs as
-prefixes, dot as decimal mark, parentheses, may be indifferently of catcode
-letter or other or subscript or superscript, ..., it doesn't matter.%
-%
-\footnote{Furthermore, although \csbxint{expr} uses \csa{string}, it is
- escape-char agnostic. It should work with any \csa{escapechar} setting
- including -1.}
-
-The characters |+|, |-|, |*|, |/|, |^|, |!|, |&|, \verb+|+, |?|, |:|, |<|, |>|,
-|=|, |(|, |)|, |"|, |[|, |]|, |;|, the dot and the comma should not be active if
-in the expression, as everything is expanded along the way. If one of them is
-active, it should be prefixed with |\string|.
+catcodes, % (unbraced) digits, binary operators, minus and plus signs as
+% prefixes, dot as decimal mark, parentheses, may be indifferently of catcode
+% letter or other or subscript or superscript, ..., except that they
+% should not be \emph{active}, as for example are |!?;:| with |babel-french|.%
+% %
+% \footnote{Furthermore, although \csbxint{expr} uses \csa{string}, it is
+% escape-char agnostic. It should work with any \csa{escapechar} setting
+% including -1.}
+but the characters
+% |+|, |-|, |*|, |/|, |^|, |!|, |&|, \verb+|+, |?|, |:|, |<|, |>|,
+%|=|, |(|, |)|, |"|, |[|, |]|, |;|,
+in the expression should not be «active» (except on purpose) as everything is
+expanded along the way, and |\xintexpr| will choke on typesetting related
+commands. One can use |\string| to prefix a problematic character.
-The exclamation mark |!| should have its standard catcode: with catcode letter
-it is used internally and hence will confuse the parsers if it comes from the
-expression.
Digits, slash, square brackets, minus sign, in the output from an
|\xinttheexpr| are all of catcode 12. For |\xintthefloatexpr| the `e' in the
output has its standard catcode ``letter''.
-A macro with arguments will expand and grab its arguments before the
-parser may get a chance to see them, so the situation with catcodes and spaces
-is not the same within such macro arguments.
@@ -17258,37 +17626,41 @@ arguments having at most |P| significant places already.
\label{xinteval}\label{xintieval}\label{xintiieval}\label{xintfloateval}
\csbxint{eval}\etype{x} is an \fexpan dable macro which is basically defined
-like this (DON'T BELIEVE THIS; it has been entirely revamped at |1.4|):
+like this (this is obsolete since |1.4|):
\begin{everbatim}
-\def\xinteval#1{\romannumeral-`0\xinttheexpr#1\relax}% OLD DEFINITION < 1.4
+\def\xinteval#1{\romannumeral-`0\xinttheexpr#1\relax}% THIS IS OLD DEFINITION
\end{everbatim}
-thus expands in two steps (its exact definition differs from the one given
-above in order to achieve a slight optimization).
+thus expands in two steps.
\begin{everbatim*}
\xinteval{add(x^2, x = 100..110), add(x^3, x = 100..110)}
\end{everbatim*}
-\csbxint{ieval}\etype{x} is similarly related to \csbxint{theiexpr}. Its optional
-argument must be located inside the braces:
+\csbxint{ieval}\etype{x} is similarly related to \csbxint{theiexpr}. Its
+optional argument may be located in the expected location for \LaTeX\ users
+since |1.4k|, but was long constrained to be inside the braces.
\begin{everbatim*}
-\xintieval{[7] 355/113}
+\xintieval[7]{355/113} = \xintieval{[7]355/113}
\end{everbatim*}
+If one defines a macro which will do something such as |\xintieval{#1}| it is
+recommended to code it as |\xintieval{\empty#1}| in case the |#1| will start
+with some |[|, which will end up confusing |\xintieval|.
+
\csbxint{iieval}\etype{x} is similarly related to \csbxint{theiiexpr}.
\begin{everbatim*}
\xintiieval{add(x^2, x = 100..110), add(x^3, x = 100..110)}
\end{everbatim*}
-\csbxint{floateval}\etype{x} is similarly related to \csbxint{thefloatexpr}. Its optional
-argument must be located inside the braces:
+\csbxint{floateval}\etype{x} is similarly related to
+\csbxint{thefloatexpr}. The same remarks as for |\xintieval| apply.
\begin{everbatim*}
-\xintfloateval{[7] 355/113}
+\xintfloateval [7]{355/113} = \xintfloateval{[7] 355/113}
\end{everbatim*}
-When negative it tells how many digits to remove from the prevailing precision
-(\csbxint{theDigits}):
+When negative, the optional argument tells how many digits to remove from the
+prevailing precision (\csbxint{theDigits}):
\begin{everbatim*}
-\xintfloateval{[-2] 355/113} has \xinttheDigits\ minus 2 digits.
+\xintfloateval[-2]{355/113}=\xintfloateval{[-2]355/113} has \xinttheDigits\ minus 2 digits.
\end{everbatim*}
These macros are useful when one uses some extra wrapper doing some parsing of
@@ -17327,6 +17699,111 @@ from \csbxint{expr} and \csbxint{floatexpr} can not be used directly in
\end{everbatim*}
+\subsection{\csh{xintFracToSci}}\label{xintFracToSci}
+
+% je ne dois pas mettre \Ff car la macro n'utilise pas \XINT_infrac
+
+\csa{xintFracToSci}\NewWith{1.4} is for usage by \csbxint{eval} for
+formatting the output of numbers. It is not meant for direct use at
+user level as it currently expects input formatted in the so-called
+``relaxed raw format'' from \xintfracname, i.e. |A/B[N]|, with |/B| and
+|[N]| being optional parts, and |A|, |B|, |N| being integers, |B| always
+positive if present, and |A| having at most one leading minus sign (and
+no sign if it is zero, and no leading zeros).
+
+Here is what it does:\CHANGED{1.4e}
+\begin{itemize}[noitemsep,nosep]
+\item with input respectively: |A|, |A/B|, |A[N]|, |A/B[N]|
+\item it produces this output: |A|, |A/B| (if |B| is not |1|), |A| if
+ |N=0|, |A/B| if |N=0| (no |B| if |1|), and if
+ |N| is not zero, the output will be |AeN| written in scientific notation
+ exactly like it would by \csbxint{PFloat} but without of course prior
+ rounding to a given number of digits; in particular trailing zeros in the
+ significand will be removed. Then this value in scientific notation
+ (or decimal fixed point notation if the scientific exponent is in the
+ range deciding so by \csbxint{PFloat}) will be attached to a trailing
+ denominator part |/B| (if not equal to |1|).
+\end{itemize}
+Please note:
+\begin{itemize}
+\item there is no reduction of the fraction |A/B| to lowest terms,
+\item trailing zeros in |B| are not moved and incorporated
+into the final scientific exponent,
+\item no attempt is made to check is |B| is only products of |2|'s and
+ |5|'s and thus could be integrated into some pure decimal notation for
+ the numerator or at least its significand.
+\end{itemize}
+This has not changed since |1.4| but is to be considered
+\emph{unstable}. Actually even the description above was until |1.4k|
+only to be found in the commented source code... So everything is
+susceptible to change at some later release.
+
+Changes\CHANGED{1.4k} of \csbxint{PFloat} at |1.4k| have an impact here.
+In particular the zero value will give \dtt{0} whether the input was
+some |0|, |0e-5|, |0/3|, |0.00|, etc\dots, whereas at |1.4e| it would
+have been
+\dtt{0.0} for cases triggering some \csbxint{PFloat} subroutine. See
+\csbxint{PFloatZero} for reenacting the |1.4e| behaviour.
+
+\medskip
+
+The output routine of \csbxint{eval} uses
+\csbxint{exprPrintOne} whose current default definition is:
+\begin{everbatim}
+\def\xintexprPrintOne{\xintFracToSci}
+\end{everbatim}
+Any replacement should obey the following blueprint:
+\begin{itemize}[noitemsep]
+\item to\xtype{} be expandable, but not necessarily \fexpan dable,
+\item to accept on input |A|, |A/B|, |A[N]|, or |A/B[N]|, i.e. the
+ ``relaxed raw''
+ \xintfracname format.
+\end{itemize}
+% These constraints\CHANGED{1.4e} are much simplified at |1.4e| (and
+% \csa{xintFracToSci} has been internally simplified to only have to obey
+% the reduced constraints, which is a breaking change).
+
+% At |1.4e| the handling\CHANGED{1.4e} by this macro of input with a scientific
+% exponent part has changed. Rather than producing an integer mantissa it now
+% does as \csbxint{PFloat}, apart of course from its initial step of
+% float-rounding. It trims out trailing zeros of the input always.
+
+Attention, \csa{xintFracToSci} does not behave as do the public macros from
+\xintfracname:
+\begin{itemize}[noitemsep]
+\item it is expandable, but not \fexpan dable, so it can't appear as argument
+ to \xintfracname macros without an explicit |\expanded{...}| wrapper
+ (as they only \fexpan d their arguments).
+\item it expects input which after \fexpan sion will be in ``relaxed raw''
+ \xintfracname format.\IMPORTANT{}
+\end{itemize}
+
+%\noindent\csa{xintFracToSciE} has been removed at |1.4e|, see \csbxint{PFloatE}.
+
+\subsection{\csh{xintFracToDecimal}}
+\label{xintFracToDecimal}
+
+% je ne dois pas mettre \Ff car la macro n'utilise pas \XINT_infrac
+% mais je pourrais utiliser \xtype
+It is a variant of \csbxint{FracToSci}\NewWith{1.4k}
+which differs from it in so far as it outputs a numerator using decimal
+notation, i.e. with as many zeros as are needed (and no more) and no
+scientific exponent. The denominator goes through ``as is'' except if
+it is |1|, then it is omitted.
+
+In other terms its behaviour is currently intermediate between
+\csbxint{DecToString} and \csbxint{DecToStringREZ}, as it does not
+remove trailing zeros of the denominator.
+
+It is not meant to be used directly as it shares the same limitations
+of \csbxint{FracToSci} for user level usage, but solely as a way to
+customize \csbxint{exprPrintOne}:
+\begin{everbatim}
+\def\xintexprPrintOne{\xintFracToDecimal}
+\end{everbatim}
+Consider its behaviour as \emph{unstable} and \emph{barely documented}.
+
+
\subsection{The \csh{xintthecoords} macro}
\label{xintthecoords}
@@ -19157,7 +19634,7 @@ currently this is implemented by using either |\xintifForFirst| or
\etocsettocdepth{subsubsection}% 2015/09/15
\etocdepthtag.toc {implementation}
-\addtocontents{toc}{\gdef\string\sectioncouleur{[named]{RoyalPurple}}}
+\addtocontents{toc}{\gdef\string\sectioncouleur{{tocsectionimpcolor}}}
\def\storedlinecounts {}
\def\StoreCodelineNo #1{\edef\storedlinecounts{%
@@ -19182,7 +19659,8 @@ currently this is implemented by using either |\xintifForFirst| or
\makestarlowast
\xmacro@code }
-\def\macro@font {\ttbfamily }% slashed 0
+% finally 2022/05/17 removes slashed 0 dedicated ttbfamily usage
+\def\macro@font {\ttfamily }%
% \lverb
% ======
@@ -19253,7 +19731,7 @@ currently this is implemented by using either |\xintifForFirst| or
% there is a group to handle restore
\def\MicroFont {%\ttzfamily
- \color[named]{Purple}\makestarlowast }
+ \color{verbimpcolor}\makestarlowast }
% privatecodecomments
% ===================
@@ -19278,6 +19756,16 @@ currently this is implemented by using either |\xintifForFirst| or
\hangindent\parindent
}
+% \added
+% ======
+
+% new 2022/05/16
+\newcommand\added[2][]{%
+ \par\smallskip\noindent
+ \textbf{Added at #2\space(\xintreleasedate{#2})\if\relax\detokenize{#1}\relax
+ \else\space[on #1]\fi.}%
+}
+
% \xintreleasedate
% ================
@@ -19674,7 +20162,7 @@ math shift catcode.
\fi
\XINT_providespackage
\ProvidesPackage {xintkernel}%
- [2021/07/13 v1.4j Paraphernalia for the xint packages (JFB)]%
+ [2022/05/18 v1.4k Paraphernalia for the xint packages (JFB)]%
% \end{macrocode}
% \subsection{Constants}
% \begin{macrocode}
@@ -20634,7 +21122,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xinttools}%
- [2021/07/13 v1.4j Expandable and non-expandable utilities (JFB)]%
+ [2022/05/18 v1.4k Expandable and non-expandable utilities (JFB)]%
% \end{macrocode}
% \lverb|\XINT_toks is used in macros such as \xintFor. It is not used
% elsewhere in the xint bundle.|
@@ -22995,7 +23483,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintcore}%
- [2021/07/13 v1.4j Expandable arithmetic on big integers (JFB)]%
+ [2022/05/18 v1.4k Expandable arithmetic on big integers (JFB)]%
% \end{macrocode}
% \subsection{(WIP!) Error conditions and exceptions}
% \lverb|As per the Mike Cowlishaw/IBM's General Decimal Arithmetic Specification
@@ -26349,7 +26837,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xint}%
- [2021/07/13 v1.4j Expandable operations on big integers (JFB)]%
+ [2022/05/18 v1.4k Expandable operations on big integers (JFB)]%
% \end{macrocode}
% \subsection{More token management}
% \begin{macrocode}
@@ -28928,7 +29416,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintbinhex}%
- [2021/07/13 v1.4j Expandable binary and hexadecimal conversions (JFB)]%
+ [2022/05/18 v1.4k Expandable binary and hexadecimal conversions (JFB)]%
% \end{macrocode}
% \subsection{Constants, etc...}
% \lverb|1.2n switches to \csname-governed expansion at various places.|
@@ -29600,7 +30088,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintgcd}%
- [2021/07/13 v1.4j Euclide algorithm with xint package (JFB)]%
+ [2022/05/18 v1.4k Euclide algorithm with xint package (JFB)]%
% \end{macrocode}
% \subsection{\csh{xintBezout}}
% \lverb|&
@@ -30134,7 +30622,7 @@ mode) and will go ahead hoping repair\endcsname
%\let<*xintfrac>\gardesinactifs
%</xintgcd>^^A----------------------------------------------------
%<*xintfrac>^^A---------------------------------------------------
-%^^A -*- coding: utf-8; mode: doctex; fill-column: 78; sentence-end-double-space: t; -*-
+%^^A -*- coding: utf-8; mode: doctex; fill-column: 72; sentence-end-double-space: t; -*-
% \clearpage\csname xintfracnameUp\endcsname
% \section{Package \xintfracnameimp implementation}
% \RaisedLabel{sec:fracimp}
@@ -30200,7 +30688,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintfrac}%
- [2021/07/13 v1.4j Expandable operations on fractions (JFB)]%
+ [2022/05/18 v1.4k Expandable operations on fractions (JFB)]%
% \end{macrocode}
% \subsection{\csh{XINT_cntSgnFork}}
% \lverb|1.09i. Used internally, #1 must expand to \m@ne, \z@, or \@ne or
@@ -30229,8 +30717,6 @@ mode) and will go ahead hoping repair\endcsname
{%
\expandafter#1%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\the\numexpr \XINT_abs##1+%
\XINT_len_fork ##2##3\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:
@@ -30240,7 +30726,13 @@ mode) and will go ahead hoping repair\endcsname
}}\XINT_flen{ }%
% \end{macrocode}
% \subsection{\csh{XINT_outfrac}}
+% \changed{1.06b}
% \lverb|&
+% 1.06b version now outputs 0/1[0] and not 0[0] in case of zero. More generally
+% all macros have been checked in xintfrac, xintseries, xintcfrac, to make sure
+% the output format for fractions was always A/B[n]. (except \xintIrr,
+% \xintJrr, \xintRawWithZeros).
+%
% Months later (2014/10/22): perhaps I should document what this macro does
% before I forget? from {e}{N}{D} it outputs N/D[e], checking in passing if
% D=0 or if N=0. It also makes sure D is not < 0. I am not sure but I don't
@@ -30278,17 +30770,22 @@ mode) and will go ahead hoping repair\endcsname
}%
% \end{macrocode}
% \subsection{\csh{XINT_inFrac}}\label{src-XINT_infrac}
+% \added{1.03}
% \lverb|&
% Parses fraction, scientific notation, etc... and produces {n}{A}{B}
% corresponding to A/B times 10^n. No reduction to smallest terms.
-%
+% |
+% \changed{1.07}
+% \lverb|&
% Extended in 1.07 to accept scientific notation on input. With lowercase
% e only. The \xintexpr parser does accept uppercase E also. Ah, by the way,
% perhaps I should at least say what this macro does? (belated addition
% 2014/10/22...), before I forget! It prepares the fraction in the internal
% format {exponent}{Numerator}{Denominator} where Denominator is at least 1.
-%
-% 2015/10/09: this venerable macro from the very early days (1.03, 2013/04/14)
+% |
+% \changed[2015/10/09]{1.2}
+% \lverb|&
+% This venerable macro from the very early days
% has gotten a lifting for release 1.2. There were two kinds of issues:
%
% 1) use of \W, \Z, \T delimiters was very poor choice as this could clash with
@@ -30339,7 +30836,9 @@ mode) and will go ahead hoping repair\endcsname
% numerator and denominator will be parsed for the more general format
% allowing decimal digits and scientific part and possibly multiple leading
% signs.
-%
+% |
+% \changed{1.2l}
+% \lverb|&
% 1.2l fixes frailty of \XINT_infrac (hence basically of all xintfrac macros)
% respective to non terminated \numexpr input: \xintRaw{\the\numexpr1} for
% example. The issue was that \numexpr sees the / and expands what's next.
@@ -30380,8 +30879,7 @@ mode) and will go ahead hoping repair\endcsname
}%
% \end{macrocode}
% \lverb|An empty [] is not allowed. (this was authorized in 1.2, removed in
-% 1.2f). As nobody reads xint documentation, no one will have noticed the
-% fleeting possibility.|
+% 1.2f).|
% \begin{macrocode}
\def\XINT_infrac_res_ca #1[#2]\xint:/\XINT_W[\XINT_W\XINT_T
{\expandafter{\the\numexpr #2}{#1}{1}}%
@@ -30391,14 +30889,19 @@ mode) and will go ahead hoping repair\endcsname
{\expandafter{\the\numexpr #3}{#2}{#1}}%
% \end{macrocode}
% \subsection{\csh{XINT_frac_gen}}
-% \lverb|Extended in 1.07 to recognize and accept scientific notation both at
+% \changed{1.07}
+% \lverb|Extended at to recognize and accept scientific notation both at
% the numerator and (possible) denominator. Only a lowercase e will do here,
% but uppercase E is possible within an \xintexpr..\relax
-%
-% Completely rewritten for 1.2 2015/10/10. The parsing handles inputs such as
+% |
+% \changed{1.2}
+% \lverb|&
+% Completely rewritten. The parsing handles inputs such as
% \A.\Be\C/\D.\Ee\F where each of \A, \B, \D, and \E may need f-expansion and
% \C and \F will end up in \numexpr.
-%
+% |
+% \changed{1.2f}
+% \lverb|&
% 1.2f corrects an issue to allow \C and \F to be \count variable (or
% expressions with \numexpr): 1.2 did a bad \numexpr0#1 which allowed only
% explicit digits for expanded #1.|
@@ -30467,16 +30970,12 @@ mode) and will go ahead hoping repair\endcsname
{%
\expandafter\XINT_frac_gen_F\the\numexpr #5-#2-%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\numexpr\XINT_length_loop
#1\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:
\xint_c_viii\xint_c_vii\xint_c_vi\xint_c_v
\xint_c_iv\xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\relax\expandafter~%
\romannumeral0\expandafter\XINT_num_cleanup\the\numexpr\XINT_num_loop
@@ -30518,8 +31017,9 @@ mode) and will go ahead hoping repair\endcsname
% \lverb|This is the core macro for \xintREZ. To be used as
% \romannumeral0\XINT_factortens{...}. Output is A.N. (formerly {A}{N}) where
% A is the integer stripped from trailing zeroes and N is the number of
-% removed zeroes. Only for positive strict integers!
-%
+% removed zeroes. Only for positive strict integers!|
+% \changed{1.3a}
+% \lverb|&
% Completely rewritten at 1.3a to replace a double \xintReverseOrder by a
% direct \numexpr governed expansion to the end and back, à la 1.2. I should
% comment more... and perhaps improve again in future.
@@ -30681,6 +31181,7 @@ mode) and will go ahead hoping repair\endcsname
}%
% \end{macrocode}
% \subsection{\csh{xintRaw}}
+% \added{1.07}
% \lverb|&
% 1.07: this macro simply prints in a user readable form the fraction after its
% initial scanning. Useful when put inside braces in an \xintexpr, when the
@@ -30694,8 +31195,10 @@ mode) and will go ahead hoping repair\endcsname
\def\XINT_raw #1#2#3{ #2/#3[#1]}%
% \end{macrocode}
% \subsection{\csh{xintiLogTen}}
+% \added{1.3e}
% \lverb|&
-% New at 1.3e. The exponent a, such that 10^a<= abs(x) < 10^(a+1).
+% The exponent a, such that 10^a<= abs(x) < 10^(a+1). No rounding done on x,
+% handled as an exact fraction.
% |
% \begin{macrocode}
\def\xintiLogTen {\the\numexpr\xintilogten}%
@@ -30735,7 +31238,7 @@ mode) and will go ahead hoping repair\endcsname
}%
% \end{macrocode}
% \subsection{\csh{xintPRaw}}
-% \lverb|1.09b|
+% \added{1.09b}
% \begin{macrocode}
\def\xintPRaw {\romannumeral0\xintpraw }%
\def\xintpraw
@@ -30774,94 +31277,6 @@ mode) and will go ahead hoping repair\endcsname
\def\XINT_spraw_a\W\XINT_spraw_p #1[\W]{ #1}%
\def\XINT_spraw_p #1[\W]{\xintpraw {#1}}%
% \end{macrocode}
-% \subsection{\csh{xintFracToSci}}
-% \lverb|1.4, refactored and much simplified at 1.4e.
-%
-% It only needs to be x-expandable, and indeed the implementation here is only
-% x-expandable.
-%
-% (2021/04/13) the user documentation was really deplorable, I have
-% tried to improve it and in the process tried to remember what this macro was
-% supposed to do, and improved comments here, also lamentable.
-%
-% At 1.4e-dev this became provisorily basically like defunct \xintSPRaw, but
-% doing less parsing at it does not go to \xintPRaw with its \XINT_infrac
-% induced overhead. Previous 1.4b \xintFracToSci was much complicated from
-% having to allow fixed point notation on input and scientific notation with a
-% catcode 12 "e". Refactoring of \xintiexpr has removed these constraints.
-% Now:
-%
-%( Input: A, A/B, A[N], A/B[N]
-%: Output: AeN/B with special cases:
-%: 0 if input gives a zero value
-%: /B is skipped in output if B=1 in input
-%: eN is skipped in output if N=0 in input
-%)
-%
-% 0[N] when N not zero is possible as input, but 0/B currently not I think,
-% and -0 for example never arises as one is guaranteed that A is in strict
-% integer format.
-%
-% (2021/05/05) Finally for 1.4e release I modify. This is breaking
-% change for all \xinteval output in case of scientific notation: it will not
-% be with an integer mantissa, but in regular scientific notation, using the
-% same rules as \xintPFloat.
-%
-% Of course there will be no float rounding applied! Also, as [0] will always
-% or almost always be present from an \xinteval, we want then to use integer
-% not scientific notation. But expression contained decimal fixed point input,
-% or uses scientific functions, then probably the N will not be zero and this
-% will trigger usage of scientific notation in output.
-%
-% Implementing these changes sort of ruin our previous efforts to minimize
-% grabbing the argument, but well. So the rules now are
-%
-%( Input: A, A/B, A[N], A/B[N]
-%: Output: A, A/B, A if N=0, A/B if N=0
-%: If N is not zero, scientific notation like \xintPFloat,&
-% i.e. behaviour like \xintfloateval apart from the rounding&
-% to Digits. In particular trailing zeros are trimmed.
-%: The zero gives 0, except in A[N] and A/B[N] cases, it may give&
-% 0.0
-%)
-%
-% As a result of these last minute 1.4e changes, the \xintFracToSciE is
-% removed.
-% |
-%
-% \begin{macrocode}
-\def\xintFracToSci #1{\expandafter\XINT_FracToSci\romannumeral`&&@#1/\W[\R}%
-\def\XINT_FracToSci #1/#2#3[#4%
-{%
- \xint_gob_til_W #2\XINT_FracToSci_noslash\W
- \xint_gob_til_R #4\XINT_FracToSci_slash_noN\R
- \XINT_FracToSci_slash_N #1/#2#3[#4%
-}%
-\def\XINT_FracToSci_noslash#1\XINT_FracToSci_slash_N #2[#3%
-{%
- \xint_gob_til_R #3\XINT_FracToSci_noslash_noN\R
- \XINT_FracToSci_noslash_N #2[#3%
-}%
-\def\XINT_FracToSci_noslash_noN\R\XINT_FracToSci_noslash_N #1/\W[\R{#1}%
-\def\XINT_FracToSci_noslash_N #1[#2]/\W[\R%
-{%
- \ifnum#2=\xint_c_ #1\else
- \romannumeral0\expandafter\XINT_pfloat_fork\romannumeral0\xintrez{#1[#2]}%
- \fi
-}%
-\def\XINT_FracToSci_slash_noN\R\XINT_FracToSci_slash_N #1#2/#3/\W[\R%
-{%
- #1\xint_gob_til_zero#1\expandafter\iffalse\xint_gobble_ii0\iftrue
- #2\if\XINT_isOne{#3}1\else/#3\fi\fi
-}%
-\def\XINT_FracToSci_slash_N #1#2/#3[#4]/\W[\R%
-{%
- \ifnum#4=\xint_c_ #1#2\else
- \romannumeral0\expandafter\XINT_pfloat_fork\romannumeral0\xintrez{#1#2[#4]}%
- \fi
- \if\XINT_isOne{#3}1\else\if#10\else/#3\fi\fi
-}%
-% \end{macrocode}
% \subsection{\csh{xintRawWithZeros}}
% \lverb|&
% This was called \xintRaw in versions earlier than 1.07|
@@ -30890,7 +31305,8 @@ mode) and will go ahead hoping repair\endcsname
\def\XINT_rawz_Bb #1#2{ #2/#1}%
% \end{macrocode}
% \subsection{\csh{xintDecToString}}
-% \lverb|1.3. This is a backport from polexpr 0.4. It is definitely not in
+% \added{1.3}
+% \lverb|This is a backport from polexpr 0.4. It is definitely not in
% final form, consider it to be an unstable macro.|
% \begin{macrocode}
\def\xintDecToString{\romannumeral0\xintdectostring}%
@@ -30913,13 +31329,15 @@ mode) and will go ahead hoping repair\endcsname
}%
% \end{macrocode}
% \subsection{\csh{xintDecToStringREZ}}
-% \lverb|1.4e. And I took this opportunity to improve documentation in manual.|
+% \added{1.4e}
+% \lverb|And I took this opportunity to improve documentation in manual.|
% \begin{macrocode}
\def\xintDecToStringREZ{\romannumeral0\xintdectostringrez}%
\def\xintdectostringrez#1{\expandafter\XINT_dectostr\romannumeral0\xintrez{#1}}%
% \end{macrocode}
% \subsection{\csh{xintFloor}, \csh{xintiFloor}}
-% \lverb|1.09a, 1.1 for \xintiFloor/\xintFloor. Not efficient if big negative
+% \added{1.09a}
+% \lverb|1.1 for \xintiFloor/\xintFloor. Not efficient if big negative
% decimal exponent. Also sub-efficient if big positive decimal exponent.|
% \begin{macrocode}
\def\xintFloor {\romannumeral0\xintfloor }%
@@ -30931,7 +31349,7 @@ mode) and will go ahead hoping repair\endcsname
\def\XINT_ifloor #1/#2.{\xintiiquo {#1}{#2}}%
% \end{macrocode}
% \subsection{\csh{xintCeil}, \csh{xintiCeil}}
-% \lverb|1.09a|
+% \added{1.09a}
% \begin{macrocode}
\def\xintCeil {\romannumeral0\xintceil }%
\def\xintceil #1{\xintiiopp {\xintFloor {\xintOpp{#1}}}}%
@@ -30969,8 +31387,6 @@ mode) and will go ahead hoping repair\endcsname
\def\XINT_denom_fork #1%
{%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\ifnum#1<\xint_c_
\expandafter\XINT_denom_B
@@ -30983,10 +31399,10 @@ mode) and will go ahead hoping repair\endcsname
\def\XINT_denom_B -#1.#2#3{\XINT_dsx_addzeros{#1}#3;}%
% \end{macrocode}
% \subsection{\csh{xintTeXFrac}}
-% \lverb|1.03 (2013/04/14). Useless typesetting macro.
-%
-% Renamed (2021/05/24) from \xintFrac at 1.4g. Old name deprecated but
-% still usable.|
+% \added{1.03}
+% \lverb|Useless typesetting macro.|
+% \changed[2021/05/24]{1.4g}
+% \lverb|Renamed from \xintFrac. Old name deprecated but still usable.|
% \begin{macrocode}
\ifdefined\documentclass
\def\xintfracTeXDeprecation#1#2{%
@@ -31030,8 +31446,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_fracfrac_E \fi\space\frac #1#2{\fi \space #1\cdot }%
% \end{macrocode}
% \subsection{\csh{xintTeXsignedFrac}}
-% \lverb|&
-% Renamed (2021/05/24) from \xintSignedFrac at 1.4g. Old name deprecated but
+% \changed[2021/05/24]{1.4g}
+% \lverb|Renamed from \xintSignedFrac. Old name deprecated but
% still usable.|
% \begin{macrocode}
\def\xintSignedFrac {\xintfracTeXDeprecation\xintSignedFrac\xintTeXsignedFrac}%
@@ -31061,7 +31477,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintTeXfromSci}}
-% \lverb|1.4g. The main problem is how to name this and related macros.
+% \added{1.4g}
+% \lverb|The main problem is how to name this and related macros.
%
% I use \expanded here, as \xintFracToSci is not f-expandable. But why do I
% bother with the external \expanded?
@@ -31096,8 +31513,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\fi
% \end{macrocode}
% \subsection{\csh{xintTeXOver}}
-% \lverb|&
-% Renamed (2021/05/24) from \xintFwOver at 1.4g. Old name deprecated but
+% \changed[2021/05/24]{1.4g}
+% \lverb|Renamed from \xintFwOver. Old name deprecated but
% still usable.|
% \begin{macrocode}
\def\xintFwOver {\xintfracTeXDeprecation\xintFwOver\xintTeXOver}%
@@ -31127,8 +31544,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintTeXsignedOver}}
-% \lverb|&
-% Renamed (2021/05/24) from \xintSignedFwOver at 1.4g. Old name deprecated but
+% \changed[2021/05/24]{1.4g}
+% \lverb|Renamed from \xintSignedFwOver. Old name deprecated but
% still usable.|
% \begin{macrocode}
\def\xintSignedFwOver {\xintfracTeXDeprecation\xintSignedFwOver\xintTeXsignedOver}%
@@ -31197,9 +31614,11 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_rez_E #1.#2.#3.{ #3/#2[#1]}%
% \end{macrocode}
% \subsection{\csh{xintE}}
-% \lverb|1.07: The fraction is the first argument contrarily to \xintTrunc and
-% \xintRound.
-%
+% \added{1.07}
+% \lverb|The fraction is the first argument contrarily to \xintTrunc and
+% \xintRound.|
+% \changed{1.1}
+% \lverb|&
% 1.1 modifies and moves \xintiiE to xint.sty.|
% \begin{macrocode}
\def\xintE {\romannumeral0\xinte }%
@@ -31214,7 +31633,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_e_end #1.#2#3{ #2/#3[#1]}%
% \end{macrocode}
% \subsection{\csh{xintIrr}, \csh{xintPIrr}}
-% \lverb|\xintPIrr (partial Irr, which ignores the decimal part) added at 1.3.|
+% \changed{1.04}\lverb|fixes a buggy \xintIrr {0}.|
+% \changed{1.05}\lverb|modifies the initial parsing and post-processing to use \xintrawwithzeros
+% and to more quickly deal with an input denominator equal to 1.|
+% \changed{1.08}\lverb|this version does not remove a /1 denominator.|
+% \changed{1.3}
+% \lverb|added \xintPIrr (partial Irr, which ignores the decimal part).|
% \begin{macrocode}
\def\xintIrr {\romannumeral0\xintirr }%
\def\xintPIrr{\romannumeral0\xintpirr }%
@@ -31390,7 +31814,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintTFrac}}
-% \lverb|1.09i, for frac in \xintexpr. And \xintFrac is already assigned. T for
+% \added{1.09i}
+% \lverb|For frac in \xintexpr. And \xintFrac is already assigned. T for
% truncation. However, potentially not very efficient with numbers in scientific
% notations, with big exponents. Will have to think it again some day. I
% hesitated how to call the macro. Same convention as in maple, but some people
@@ -31415,8 +31840,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \subsection{\csh{xintTrunc}, \csh{xintiTrunc}}
% \lverb|&
%
-% This of course has a long history. Only showing here some comments.
-%
+% This of course has a long history. Only showing here some comments.|
+% \changed{1.2i}
+% \lverb|&
% 1.2i release notes: ever since its inception this macro was stupid for a
% decimal input: it did not handle it separately from the general fraction
% case A/B[N] with B>1, hence ended up doing divisions by powers of ten. But
@@ -31428,9 +31854,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% is quite longer and making it f-expandable would not shorten it... I decided
% for the time being to not complicate things here.
% |
+% \changed[2020/02/18]{1.4a}
% \lverb|&
%
-% 1.4a (2020/02/18) adds handling of a negative first argument.
+% Adds handling of a negative first argument.
%
% Zero input still gives single digit 0 output as I did not want to complicate
% the code. But if quantization gives 0, the exponent [D] will be there. Well
@@ -31492,8 +31919,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
\def\XINT_trunc_CE #1.#2{\XINT_trunc_E #2.{#1}}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_trunc_sp_C -#1.#2#3{\XINT_trunc_sp_Ca #2.#1.}%
\def\XINT_trunc_sp_Ca #1%
@@ -31580,9 +32005,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintTTrunc}}
-% \lverb|1.1. Modified in 1.2i, it does simply \xintiTrunc0 with no
-% shortcut (the latter having been modified)
-%|
+% \added{1.1}
% \begin{macrocode}
\def\xintTTrunc {\romannumeral0\xintttrunc }%
\def\xintttrunc {\xintitrunc\xint_c_}%
@@ -31625,8 +32048,11 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
{\XINT_dsrr #1\xint_bye\xint_Bye3456789\xint_bye/\xint_c_x\relax.}%
% \end{macrocode}
% \subsection{\csh{xintXTrunc}}
-% \lverb@1.09j [2014/01/06] This is completely expandable but not f-expandable.
-% Rewritten for 1.2i (2016/12/04):
+% \added[2014/01/06]{1.09j}
+% \lverb@This is completely expandable but not f-expandable.@
+% \changed[2016/12/04]{1.2i}
+% \lverb|&
+% Rewritten:
%
% - no more use of \xintiloop from xinttools.sty
% (replaced by \xintreplicate... from xintkernel.sty),
@@ -31635,9 +32061,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \csname...\endcsname
%
% - handles better the case of an input already a decimal number
-%
-% Need to transfer code comments into public dtx.
-% @
+% |
% \begin{macrocode}
\def\xintXTrunc #1%#2%
{%
@@ -31667,8 +32091,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%[
\def\XINT_xtrunc_zero #1#2]{0.\romannumeral\xintreplicate{#1}0}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_d #1#2#3/#4[#5]%
{%
@@ -31694,8 +32116,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\fi\XINT_xtrunc_BisSmall {#2}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_BisOne\XINT_xtrunc_BisSmall #1#2#3#4%
{\XINT_xtrunc_sp_e {#2}{#4}{#3}}%
@@ -31731,8 +32151,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
.\the\numexpr \xint_c_x^viii+#1!}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_small_a #1.#2!#3%
{%
@@ -31742,8 +32160,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
#3\XINT_sepbyviii_Z_end 2345678\relax
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_prepare_b
{\expandafter\XINT_xtrunc_prepare_c\romannumeral0\XINT_zeroes_forviii }%
@@ -31775,13 +32191,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\X
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_prepare_g #1;{\XINT_xtrunc_e {#1}}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_e #1#2%
{%
@@ -31792,24 +32204,18 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\fi #2\xint:{#1}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_I -#1\xint:#2#3#4%
{%
\expandafter\XINT_xtrunc_I_a\romannumeral0#2{#4}{#2}{#1}{#3}%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_I_a #1#2#3#4#5%
{%
\expandafter\XINT_xtrunc_I_b\the\numexpr #4-#5\xint:#4\xint:{#5}{#2}{#3}{#1}%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_I_b #1%
{%
@@ -31819,8 +32225,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\krof #1%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_IA_c -#1\xint:#2\xint:#3#4#5#6%
{%
@@ -31830,8 +32234,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\the\numexpr (#1+\xint_c_ii^v)/\xint_c_ii^vi-\xint_c_i\xint:#1\xint:{#5}{#4}%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_IA_d #1%
{%
@@ -31841,8 +32243,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\krof #1%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_IAA_e -#1\xint:#2%
{%
@@ -31850,32 +32250,24 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
#1.#2\xint_gobble_i\xint_bye2345678\xint_bye..%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_IAB_e #1\xint:#2%
{%
0.\romannumeral\XINT_rep#1\endcsname0#2%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_IA_xd #1\xint:#2\xint:%
{%
\expandafter\XINT_xtrunc_IA_xe\the\numexpr #2-\xint_c_ii^vi*#1\xint:#1\xint:%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_IA_xe #1\xint:#2\xint:#3#4%
{%
\XINT_xtrunc_loop {#2}{#4}{#3}{#1}%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_IB_c #1\xint:#2\xint:#3#4#5#6%
{%
@@ -31883,16 +32275,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\romannumeral0\XINT_split_xfork #1.#6\xint_bye2345678\xint_bye..{#3}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_IB_d #1.#2.#3%
{%
\expandafter\XINT_xtrunc_IA_d\the\numexpr#3-\xintLength {#1}\xint:{#1}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_II #1\xint:%
{%
@@ -31909,16 +32297,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\expandafter\XINT_xtrunc_II_c\the\numexpr #2-\xint_c_ii^vi*#1\xint:#1\xint:%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_II_c #1\xint:#2\xint:#3#4#5%
{%
#3.\XINT_xtrunc_loop {#2}{#4}{#5}{#1}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_loop #1%
{%
@@ -31937,8 +32321,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\XINT_xtrunc_loop {#3}{#2}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_transition
\expandafter\XINT_xtrunc_loop_a\the\numexpr #1\xint:#2#3#4%
@@ -31956,8 +32338,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\romannumeral\xintreplicate{#3-\xintLength{#1}}0#1%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_sp_e #1%
{%
@@ -31968,16 +32348,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\fi #1\xint:%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_sp_I -#1\xint:#2#3%
{%
\expandafter\XINT_xtrunc_sp_I_a\the\numexpr #1-#3\xint:#1\xint:{#3}{#2}%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_sp_I_a #1%
{%
@@ -31987,8 +32363,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\krof #1%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_sp_IA_b -#1\xint:#2\xint:#3#4%
{%
@@ -31996,8 +32370,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\the\numexpr#2-\xintLength{#4}\xint:{#4}\romannumeral\XINT_rep#1\endcsname0%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_sp_IA_c #1%
{%
@@ -32007,8 +32379,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\krof #1%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_sp_IAA -#1\xint:#2%
{%
@@ -32016,16 +32386,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
#1.#2\xint_gobble_i\xint_bye2345678\xint_bye..%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_sp_IAB #1\xint:#2%
{%
0.\romannumeral\XINT_rep#1\endcsname0#2%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_sp_IB_b #1\xint:#2\xint:#3#4%
{%
@@ -32033,16 +32399,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\romannumeral0\XINT_split_xfork #1.#4\xint_bye2345678\xint_bye..{#3}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_xtrunc_sp_IB_c #1.#2.#3%
{%
\expandafter\XINT_xtrunc_sp_IA_c\the\numexpr#3-\xintLength {#1}\xint:{#1}%
}%
% \end{macrocode}
-% \lverb@&
-% @
% \begin{macrocode}
\def\XINT_xtrunc_sp_II #1\xint:#2#3%
{%
@@ -32050,6 +32412,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintAdd}}
+% \changed{1.3}
% \lverb|Big change at 1.3: a/b+c/d uses lcm(b,d) as denominator.|
% \begin{macrocode}
\def\xintAdd {\romannumeral0\xintadd }%
@@ -32126,6 +32489,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}\XINT_fadd_G{ }%
% \end{macrocode}
% \subsection{\csh{xintSub}}
+% \changed{1.3}
% \lverb|Since 1.3 will use least common multiple of denominators.|
% \begin{macrocode}
\def\xintSub {\romannumeral0\xintsub }%
@@ -32148,8 +32512,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% may be empty.
%
% Refactored slightly at 1.4. \XINT_Sum used in xintexpr code.
-%
-%
% |
% \begin{macrocode}
\def\xintSum {\romannumeral0\xintsum }%
@@ -32192,9 +32554,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_fmul_zero #1.#2{ 0/1[0]}%
% \end{macrocode}
% \subsection{\csh{xintSqr}}
-% \lverb|1.1 modifs comme xintMul.
-%
-% |
% \begin{macrocode}
\def\xintSqr {\romannumeral0\xintsqr }%
\def\xintsqr #1{\expandafter\XINT_fsqr\romannumeral0\xintraw {#1}}%
@@ -32271,9 +32630,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\xintfac #1{\expandafter\XINT_fac_fork\the\numexpr\xintNum{#1}.[0]}%
% \end{macrocode}
% \subsection{\csh{xintBinomial}}
-% \lverb|1.2f. Binomial coefficients. \xintiBinomial deprecated at 1.2o and
-% removed at 1.3;
-% \xintBinomial needed by xintexpr.sty.|
+% \added{1.2f}
% \begin{macrocode}
\def\xintBinomial {\romannumeral0\xintbinomial}%
\def\xintbinomial #1#2%
@@ -32283,7 +32640,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintPFactorial}}
-% \lverb|1.2f. Partial factorial. For needs of xintexpr.sty.|
+% \added{1.2f}
+% \lverb|Partial factorial. For needs of xintexpr.sty.|
% \begin{macrocode}
\def\xintipfactorial #1#2%
{%
@@ -32346,18 +32704,16 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_fdiv_C #1#2{\XINT_outfrac {#2}{#1}}%
% \end{macrocode}
% \subsection{\csh{xintDivFloor}}
-% \lverb|1.1. Changed at 1.2p to not append /1[0] ending but rather output a
+% \added{1.1}
+% \lverb|Changed at 1.2p to not append /1[0] ending but rather output a
% big integer in strict format, like \xintDivTrunc and \xintDivRound.
-%
-%
-%
% |
% \begin{macrocode}
\def\xintDivFloor {\romannumeral0\xintdivfloor }%
\def\xintdivfloor #1#2{\xintifloor{\xintDiv {#1}{#2}}}%
% \end{macrocode}
% \subsection{\csh{xintDivTrunc}}
-% \lverb|1.1. \xintttrunc rather than \xintitrunc0 in 1.1a|
+% \added{1.1}
% \begin{macrocode}
\def\xintDivTrunc {\romannumeral0\xintdivtrunc }%
\def\xintdivtrunc #1#2{\xintttrunc {\xintDiv {#1}{#2}}}%
@@ -32369,11 +32725,13 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\xintdivround #1#2{\xintiround 0{\xintDiv {#1}{#2}}}%
% \end{macrocode}
% \subsection{\csh{xintModTrunc}}
-% \lverb|1.1. \xintModTrunc {q1}{q2} computes q1 - q2*t(q1/q2) with t(q1/q2)
+% \added{1.1}
+% \lverb|\xintModTrunc {q1}{q2} computes q1 - q2*t(q1/q2) with t(q1/q2)
% equal to the truncated division of two fractions q1 and q2.
%
-% Its former name, prior to 1.2p, was \xintMod.
-%
+% Its former name, prior to 1.2p, was \xintMod.|
+% \changed{1.3}
+% \lverb|&
% At 1.3, uses least common multiple denominator, like \xintMod (next).|
% \begin{macrocode}
\def\xintModTrunc {\romannumeral0\xintmodtrunc }%
@@ -32422,9 +32780,11 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_modtrunc_pos_a #1.#2#3#4{\xintiirem {#3}{#4}/#2[#1]}%
% \end{macrocode}
% \subsection{\csh{xintDivMod}}
-% \lverb|1.2p. \xintDivMod{q1}{q2} outputs {floor(q1/q2)}{q1 - q2*floor(q1/q2)}.
-% Attention that it relies on \xintiiE{x}{e} returning x if e < 0.
-%
+% \added{1.2p}
+% \lverb|\xintDivMod{q1}{q2} outputs {floor(q1/q2)}{q1 - q2*floor(q1/q2)}.
+% Attention that it relies on \xintiiE{x}{e} returning x if e < 0.|
+% \changed{1.3}
+% \lverb|&
% Modified (like \xintAdd and \xintSub) at 1.3 to use a l.c.m for final
% denominator of the "mod" part.|
% \begin{macrocode}
@@ -32474,11 +32834,14 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_divmod_bpos_finish #1#2#3{{#1}{#2#3}}%
% \end{macrocode}
% \subsection{\csh{xintMod}}
-% \lverb|1.2p. \xintMod{q1}{q2} computes q1 - q2*floor(q1/q2). Attention that
+% \added{1.2p}
+% \lverb|\xintMod{q1}{q2} computes q1 - q2*floor(q1/q2). Attention that
% it relies on \xintiiE{x}{e} returning x if e < 0.
%
% Prior to 1.2p, that macro had the meaning now attributed to \xintModTrunc.
-%
+% |
+% \changed{1.3}
+% \lverb|&
% Modified (like \xintAdd and \xintSub) at 1.3 to use a l.c.m for final
% denominator.|
% \begin{macrocode}
@@ -32541,7 +32904,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_mod_bpos_a #1.#2#3#4{\xintiirem {#3}{#4}/#2[#1]}%
% \end{macrocode}
% \subsection{\csh{xintIsOne}}
-% \lverb|New with 1.09a. Could be more efficient. For fractions with big
+% \added{1.09a}
+% \lverb|Could be more efficient. For fractions with big
% powers of tens, it is better to use \xintCmp{f}{1}. Restyled in 1.09i.|
% \begin{macrocode}
\def\xintIsOne {\romannumeral0\xintisone }%
@@ -32595,8 +32959,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\krof
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_fgeq_Fd #1\Z #2#3%
{%
@@ -32802,8 +33164,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\krof
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_fcmp_Fd #1\Z #2#3%
{%
@@ -33218,8 +33578,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% |
%
% \subsection{\csh{xintDigits}, \csh{xintSetDigits}}
+% \changed{1.3}
% \lverb|&
-%
% 1.3f allows \xintDigits= in place of \xintDigits:= syntax.
% It defines \xintDigits*[:]= which reloads xinttrig.sty. Perhaps this should
% be default, well.
@@ -33249,7 +33609,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
%
-% \subsection{\csh{xintFloat}}
+% \subsection{\csh{xintFloat}, \csh{xintFloatZero}}
% \lverb|&
% 1.2f and 1.2g brought some refactoring which resulted in faster treatment of
% decimal inputs. 1.2i dropped use of some old routines dating back to pre 1.2
@@ -33299,6 +33659,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% the macro used internally by the float macros for parsing their inputs, we
% simply make now \xintFloat a wrapper of \XINTinFloat.|
% \begin{macrocode}
+\def\xintFloatZero{0.0e0}% 1.4k breaking change. Replaces hard-coded 0.e0
\def\xintFloat {\romannumeral0\xintfloat }%
\def\xintfloat #1{\XINT_float_chkopt #1\xint:}%
\def\XINT_float_chkopt #1%
@@ -33329,7 +33690,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
0-\XINT_float_pos
\krof #1%
}%[
-\def\XINT_float_zero #1]#2.{ 0.e0}%
+\def\XINT_float_zero #1]#2.{\expanded{ \xintFloatZero}}%
\def\XINT_float_neg-{\expandafter-\romannumeral0\XINT_float_pos}%
\def\XINT_float_pos #1#2[#3]#4.%
{%
@@ -33337,7 +33698,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
\def\XINT_float_pos_done #1.#2;{ #2e#1}%
% \end{macrocode}
-% \subsection{\csh{XINTinFloat}, \csh{XINTinFloatS}, \csh{XINTiLogTen}}
+% \subsection{\csh{XINTinFloat}, \csh{XINTinFloatS}}
% \lverb|&
% This routine is like \xintFloat but produces an output of the shape A[N]
% which is then parsed faster as input to other float macros.
@@ -33368,8 +33729,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% Since 1.2k, \XINTinFloat always correctly rounds its argument, even if it
% is a fraction with very big numerator and denominator. See the discussion of
% \xintFloat.
-%
-% 1.3e adds \XINTFloatiLogTen.
% |
% \begin{macrocode}
\def\XINTinFloat {\romannumeral0\XINTinfloat }%
@@ -33383,8 +33742,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
{\if #1!\xint_dothis\XINT_infloat_clean_a\fi\xint_orthat{ }#1}%
% \end{macrocode}
% \lverb|Ici on ajoute les zeros pour faire exactement avec P chiffres.
-% Car le #1 = P - L avec L la longueur de #2, (ou de abs(#2), ici le #2 peut
-% avoir un signe) qui est < P|
+% Car le #1 = P - L avec L la longueur de #2, (ou plutôt de abs(#2),
+% car ici le #2 peut avoir un signe) et L < P|
% \begin{macrocode}
\def\XINT_infloat_clean_a !#1.#2[#3]%
{%
@@ -33403,23 +33762,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
{\if #1!\xint_dothis\XINT_infloatS_clean_a\fi\xint_orthat{ }#1}%
\def\XINT_infloatS_clean_a !#1.{ }%
% \end{macrocode}
-% \lverb|1.3e ajoute \XINTFloatiLogTen. Le comportement pour un input nul est non
-% encore finalisé. Il changera lorsque NaN, +Inf, -Inf existeront.
-% |
-% \begin{macrocode}
-\def\XINTFloatiLogTen {\the\numexpr\XINTfloatilogten}%
-\def\XINTfloatilogten [#1]#2%
- {\expandafter\XINT_floatilogten\romannumeral0\XINT_infloat[#1]{#2}#1.}%
-\def\XINTFloatiLogTendigits{\the\numexpr\XINTfloatilogten[\XINTdigits]}%
-\def\XINT_floatilogten #1{%
- \if #10\xint_dothis\XINT_floatilogten_z\fi
- \if #1!\xint_dothis\XINT_floatilogten_a\fi
- \xint_orthat\XINT_floatilogten_b #1%
-}%
-\def\XINT_floatilogten_z 0[0]#1.{-"7FFF8000\relax}%
-\def\XINT_floatilogten_a !#1.#2[#3]#4.{#3-#1+#4-1\relax}%
-\def\XINT_floatilogten_b #1[#2]#3.{#2+#3-1\relax}%
-% \end{macrocode}
% \lverb|début de la routine proprement dite,
% l'argument optionnel est obligatoire.|
% \begin{macrocode}
@@ -33731,7 +34073,99 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
\def\XINT_infloat_ZZ #1.#2.{ 1#2[#1]}%
% \end{macrocode}
-% \subsection{\csh{xintPFloat}, \csh{xintPFloatE}}
+% \subsection{\csh{XINTFloatiLogTen}}
+% \added{1.3e}
+% \lverb|Le comportement pour un input nul est non
+% encore finalisé. Il changera lorsque NaN, +Inf, -Inf existeront.
+% |
+% \begin{macrocode}
+\def\XINTFloatiLogTen {\the\numexpr\XINTfloatilogten}%
+\def\XINTfloatilogten [#1]#2%
+ {\expandafter\XINT_floatilogten\romannumeral0\XINT_infloat[#1]{#2}#1.}%
+\def\XINTFloatiLogTendigits{\the\numexpr\XINTfloatilogten[\XINTdigits]}%
+\def\XINT_floatilogten #1{%
+ \if #10\xint_dothis\XINT_floatilogten_z\fi
+ \if #1!\xint_dothis\XINT_floatilogten_a\fi
+ \xint_orthat\XINT_floatilogten_b #1%
+}%
+\def\XINT_floatilogten_z 0[0]#1.{-"7FFF8000\relax}%
+\def\XINT_floatilogten_a !#1.#2[#3]#4.{#3-#1+#4-1\relax}%
+\def\XINT_floatilogten_b #1[#2]#3.{#2+#3-1\relax}%
+% \end{macrocode}
+% \subsection{\csh{xintFloatSciExp}}
+% \added[2022/05/16]{1.4k}
+% \lverb|Hesitation about whether keeping the general \romannumeral0
+% trigger which is documented as general rule.|
+% \begin{macrocode}
+\def\xintFloatSciExp {\the\numexpr\xintfloatsciexp }%
+\def\xintpfloatsciexp #1{\XINT_floatsciexp_chkopt #1\xint:}%
+\def\XINT_floatsciexp_chkopt #1%
+{%
+ \ifx [#1\expandafter\XINT_floatsciexp_opt
+ \else\expandafter\XINT_floatsciexp_noopt
+ \fi #1%
+}%
+\def\XINT_floatsciexp_noopt #1\xint:%
+{%
+ \expandafter\XINT_floatsciexp\romannumeral0\XINT_infloat[\XINTdigits]{#1}%
+ \XINTdigits.%
+}%
+\def\XINT_floatsciexp_opt [\xint:#1]#2%
+{%
+ \expandafter\XINT_floatsciexp\romannumeral0\XINT_infloat[#1]{#2}#1.%
+}%
+\def\XINT_floatsciexp #1{%
+ \if #10\xint_dothis\XINT_floatsciexp_z\fi
+ \if #1!\xint_dothis\XINT_floatsciexp_a\fi
+ \xint_orthat\XINT_floatsciexp_b #1%
+}%
+\def\XINT_floatsciexp_z 0[0]#1.{0\relax}%
+\def\XINT_floatsciexp_a !#1.#2[#3]#4.{#3-#1+#4-1\relax}%
+\def\XINT_floatsciexp_b #1[#2]#3.{#2+#3-1\relax}%
+% \end{macrocode}
+% \subsection{\csh{xintFloatSignificand}}
+% \added[2022/05/16]{1.4k}
+% \lverb|Hesitation about whether returning abcd... or a.bcd...
+% with a separator
+% and slight hesitation about handling of zero.|
+% \begin{macrocode}
+\def\xintFloatSignificand {\romannumeral0\xintfloatsignificand}%
+\def\xintfloatsignificand #1{\XINT_floatsgf_chkopt #1\xint:}%
+\def\XINT_floatsgf_chkopt #1%
+{%
+ \ifx [#1\expandafter\XINT_floatsgf_opt
+ \else\expandafter\XINT_floatsgf_noopt
+ \fi #1%
+}%
+\def\XINT_floatsgf_noopt #1\xint:%
+{%
+ \expandafter\XINT_floatsgf_post
+ \romannumeral0\XINTinfloat[\XINTdigits]{#1}\XINTdigits.%
+}%
+\def\XINT_floatsgf_opt [\xint:#1]%
+{%
+ \expandafter\XINT_floatsgf_opt_a\the\numexpr #1.%
+}%
+\def\XINT_floatsgf_opt_a #1.#2%
+{%
+ \expandafter\XINT_floatsgf_post
+ \romannumeral0\XINTinfloat[#1]{#2}#1.%
+}%
+\def\XINT_floatsgf_post #1%
+{%
+ \xint_UDzerominusfork
+ #1-\XINT_floatsgf_zero
+ 0#1\XINT_floatsgf_neg
+ 0-\XINT_floatsgf_pos
+ \krof #1%
+}%[
+\def\XINT_floatsgf_zero #1]#2.{\XINT_dsx_addzeros{#2};}%
+\def\XINT_floatsgf_neg-{\XINT_floatsgf_pos}%
+\def\XINT_floatsgf_pos #1[#2]#3.{ #1}%
+% \end{macrocode}
+% \subsection{\csh{xintPFloat}}
+% \added{1.1}
+% \changed{1.4e}
% \lverb|&
%
% xint has not yet incorporated a general formatter as it was
@@ -33756,8 +34190,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
%
% 1.4b added \xintPFloatE to customize whether to use
% e or E.
-%
-%
+% |
+% \lverb|&
% 1.4e, with some hesitation, decided to make a breaking change and to modify
% the behaviour.
%
@@ -33774,19 +34208,69 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% there is an added ".0" too
%)
%
-% Further, \xintPFloatE can now grab the scientific exponent K which is
-% presented to it as explicit tokens (digit tokens, at least one, and an
-% optional minus sign) delimited by a dot. It is thus now possible to
-% customize at will for example adding a + sign in case of positive scientific
-% exponent. The macro must be f-expandable.
+% Further, \xintPFloatE can now also be redefined as a macro with a parameter
+% delimited by a full stop, with the full stop also in its ouput as
+% terminator. It would then grab the scientific exponent K as explicit digit
+% possibly prefixed by a minus sign. The macro must be f-expandable.
%
+% The macro \xintPFloat_wopt is only there for a micro gain as the package
+% does
+%
+% \let\xintfloatexprPrintOne\xintPFloat_wopt
+%
+% as it knows it will
+% be used always with a [P] argument in the xintexpr.sty context.
+% |
+% \changed[2022/05/18]{1.4k}
+% \lverb|&
+% Addition of customization via \xintPFloatZero, \xintPFloatLengthOneSuffix,
+% \xintPFloatNoSciEmax, \xintPFloatNoSciEmin which replace formerly
+% hard-coded behaviour.
+%
+% Breaking change to not add ".0" suffix to integers (when scientific
+% notation dropped) or to one-digit mantissas.
+%
+% In my own practice I started being annoyed by the automatic trimming of
+% zeros added at 1.4e.
+%
+% This change had been influenced by using Python in interactive mode
+% which since 3.1 prints floats (in decimal conversion) choosing the
+% shortest string. In particular it trims trailing zeros, and it drops
+% the scientific notation in favor of decimal notation for something
+% like -4<= K <= 15, with K the scientific exponent.
+%
+% At 1.4e I was still influenced by my experience with Maple and
+% did for -4 <= K <= 5. Not very well thought anyhow (one may wish
+% to use decimal notation when sending things to PostScript, so perhaps
+% I should have kept with -5).
+%
+% But, the main problem is with trimming trailing zeros: although in
+% interactive sessions, this has its logic, as soon as one does tables
+% with numbers, dropping a trailing zero upsets alignments or creates
+% visual holes compared to other lines and this is in the end very
+% annoying.
+%
+% After much hesitation, I decided to slightly modifify only the former
+% behaviour: trimming only if that removes at least 4 zeros. I had also
+% experimented with another condition: trimmed mantissas should be at
+% most 6 digits (for example) wide, else use no trimming.
+%
+% Threshold customizable via \xintPFloatMinTrimmed.
% |
% \begin{macrocode}
+\def\xintPFloatE{e}%
+\def\xintPFloatNoSciEmax{\xint_c_v}% 1e6 uses sci.not.
+\def\xintPFloatNoSciEmin{-\xint_c_iv}% 1e-5 uses sci.not.
+\def\xintPFloatIntSuffix{}%
+\def\xintPFloatLengthOneSuffix{}%
+\def\xintPFloatZero{0}%
+\def\xintPFloatMinTrimmed{\xint_c_iv}%
\def\xintPFloat {\romannumeral0\xintpfloat }%
\def\xintpfloat #1{\XINT_pfloat_chkopt #1\xint:}%
-\def\xintPFloat_wopt
+\def\xintPFloat_wopt[#1]#2%
{%
- \romannumeral0\expandafter\XINT_pfloat\romannumeral0\XINTinfloatS
+ \romannumeral0\expandafter\XINT_pfloat
+ \romannumeral0\XINTinfloatS[#1]{#2}#1.%
}%
\def\XINT_pfloat_chkopt #1%
{%
@@ -33797,10 +34281,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_pfloat_noopt #1\xint:%
{%
\expandafter\XINT_pfloat\romannumeral0\XINTinfloatS[\XINTdigits]{#1}%
+ \XINTdigits.%
}%
-\def\XINT_pfloat_opt [\xint:#1]%
+\def\XINT_pfloat_opt [\xint:#1]#2%
{%
- \expandafter\XINT_pfloat\romannumeral0\XINTinfloatS[#1]%
+ \expandafter\XINT_pfloat\romannumeral0\XINTinfloatS[#1]{#2}%
+ #1.%
}%
\def\XINT_pfloat#1]%
{%
@@ -33814,22 +34300,92 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
0-\XINT_pfloat_pos
\krof #1%
}%
-\def\XINT_pfloat_zero#1]{ 0.0}%
+\def\XINT_pfloat_zero#1]#2.{\expanded{ \xintPFloatZero}}%
\def\XINT_pfloat_neg-{\expandafter-\romannumeral0\XINT_pfloat_pos}%
-\def\XINT_pfloat_pos#1/1[#2]%
+\def\XINT_pfloat_pos#1/1[#2]#3.%
+{%
+ \expandafter\XINT_pfloat_aa\the\numexpr\xintLength{#1}.%
+ #3.#2.#1.%
+}%
+% \end{macrocode}
+%\lverb|Needed for \xintFracToSci, which uses old pre 1.4k interface.|
+% \begin{macrocode}
+\def\XINT_pfloat_keeptrimmed_fork#1%
+{%
+ \xint_UDzerominusfork
+ #1-\XINT_pfloat_keeptrimmed_zero
+ 0#1\XINT_pfloat_keeptrimmed_neg
+ 0-\XINT_pfloat_keeptrimmed_pos
+ \krof #1%
+}%
+\def\XINT_pfloat_keeptrimmed_zero#1]{\expanded{ \xintPFloatZero}}%
+\def\XINT_pfloat_keeptrimmed_neg-{\expandafter-\romannumeral0\XINT_pfloat_keeptrimmed_pos}%
+\def\XINT_pfloat_keeptrimmed_pos#1/1[#2]%
+{%
+ \expandafter\XINT_pfloat_a\the\numexpr\xintLength{#1}.#2.#1.%
+}%
+% \end{macrocode}
+%\lverb|&
+%( #1 est la longueur de la mantisse trimmée
+%: #2 est Digits ou P
+%: Si #2-#1 < MinTrimmed, on remet les trailing zeros
+%)
+%|
+% \begin{macrocode}
+\def\XINT_pfloat_aa #1.#2.%
+{%
+ \unless\ifnum\xintPFloatMinTrimmed>\numexpr#2-#1\relax
+ \xint_dothis\XINT_pfloat_a\fi
+ \ifnum#2>#1 \xint_dothis{\XINT_pfloat_i #2.}\fi
+ \xint_orthat\XINT_pfloat_a #1.%
+}%
+% \end{macrocode}
+%\lverb|&
+%( #2 est la longueur de la mantisse trimmée
+%: #1 est P mais peut être encore sous la forme \XINTdigits
+%: #3 est l'exposant non normalisé
+%: #4 est la mantisse
+%)
+%|
+% \begin{macrocode}
+\def\XINT_pfloat_i #1.#2.#3.#4.%
{%
- \expandafter\XINT_pfloat_a\the\numexpr\xintLength{#1}.%
- #2.#1.%
+ \expandafter\XINT_pfloat_j
+ \the\numexpr#3+#2-#1\expandafter.%
+ \romannumeral0\XINT_dsx_addzerosnofuss{#1-#2}#4;.#1.%
}%
+% \end{macrocode}
+%\lverb|&
+%( #1 est le nouvel exposant non normalisé
+%: #2 est la nouvelle mantisse à P chiffres
+%: #3 est P (peut être sous forme \XINTdigits)
+%)
+%|
+% \begin{macrocode}
+\def\XINT_pfloat_j #1.#2.#3.{\XINT_pfloat_a#3.#1.#2.}%
\def\XINT_pfloat_a #1.#2#3.%
{%
\expandafter\XINT_pfloat_b\the\numexpr#1+#2#3-\xint_c_i.%
#2#1.%
}%
+% \end{macrocode}
+% \lverb|&
+%( #1 est l'exposant scientifique K
+%: #2 est le signe ou premier chiffre de l'exposant N pour mantisse trimmée
+%: Il est suivi par la longueur de la mantisse trimmée
+%)
+% On va vers \XINT_float_P lorsque l'on n'utilise pas la notation
+% scientifique, mais qu'on a besoin de chiffres non nuls fractionnaires,
+% et vers \XINT_float_Ps si on n'en a pas besoin.
+%
+% On va vers \XINT_pfloat_N lorsque l'on n'utilise pas la notation
+% scientifique et que l'exposant scientifique était strictement négatif.
+%|
+% \begin{macrocode}
\def\XINT_pfloat_b #1.#2%
{%
- \ifnum #1>\xint_c_v \xint_dothis\XINT_pfloat_sci\fi
- \ifnum #1<-\xint_c_iv \xint_dothis\XINT_pfloat_sci\fi
+ \ifnum \xintPFloatNoSciEmax<#1 \xint_dothis\XINT_pfloat_sci\fi
+ \ifnum \xintPFloatNoSciEmin>#1 \xint_dothis\XINT_pfloat_sci\fi
\ifnum #1<\xint_c_ \xint_dothis\XINT_pfloat_N\fi
\if-#2\xint_dothis\XINT_pfloat_P\fi
\xint_orthat\XINT_pfloat_Ps
@@ -33837,10 +34393,11 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \lverb|&
-% #1 is the scientific exponent, #2 is the length of trimmed mantissa.
+% #1 is the scientific exponent, #2 is the length of the trimmed mantissa.
+% (may be the \XINTdigits token)
%
% \xintPFloatE can be replaced by any f-expandable macro with a dot-delimited
-% argument.
+% argument which produces a dot-delimited output.
% |
% \begin{macrocode}
\def\XINT_pfloat_sci #1.#2.%
@@ -33853,56 +34410,103 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \lverb|&
% #1#2=\fi\XINT_pfloat_sci_a
%
-% 1-digit mantissa, hesitation between d.0eK or deK|
+% 1-digit mantissa, hesitation between d.0eK or deK
+% Finally at 1.4k, \xintPFloatLengthOneSuffix for customization.
+% |
+% \begin{macrocode}
+\def\XINT_pfloat_sci_i #1#2#3.#4.{\expanded{#1 #4\xintPFloatLengthOneSuffix}#3}%
+% \end{macrocode}
+% \lverb|&
+% #1=sci.exp. K, #2=mant. wd L, #3=mantissa
+%
+% For _N, #1 is at most -1, for _P, #1 is at least 0. For _P there
+% will be fractional digits, and #1+1 digits before the mark.
+% |
% \begin{macrocode}
-\edef\XINT_pfloat_sci_i #1#2#3.#4.{#1\space#4.0#3}%
-\def\xintPFloatE{e}%
\def\XINT_pfloat_N#1.#2.#3.%
{%
- \csname XINT_pfloat_N_\romannumeral-#1\endcsname #3%
+ \expandafter\XINT_pfloat_N_e\romannumeral\xintreplicate{-#1}{0}#3%
}%
-\def\XINT_pfloat_N_i { 0.}%
-\def\XINT_pfloat_N_ii { 0.0}%
-\def\XINT_pfloat_N_iii{ 0.00}%
-\def\XINT_pfloat_N_iv { 0.000}%
+\def\XINT_pfloat_N_e 0{ 0.}%
+% \end{macrocode}
+% \lverb|&
+% Abusive usage of internal \XINT_split_fromleft_a.
+% It means using x = -1 - #1 in \xintDecSplit from xint.sty.
+% We benefit also with the way \xintDecSplit is built upon
+% \XINT_split_fromleft with a final clean-up which here
+% we can shortcut (non \xint_bye. not \xint_bye..).
+% |
+% \begin{macrocode}
\def\XINT_pfloat_P #1.#2.#3.%
{%
- \csname XINT_pfloat_P_\romannumeral#1\endcsname #3%
+ \expandafter\XINT_split_fromleft_a
+ \the\numexpr\xint_c_vii-#1.#3\xint_bye2345678\xint_bye.%
}%
-\def\XINT_pfloat_P_ #1{ #1.}%
-\def\XINT_pfloat_P_i #1#2{ #1#2.}%
-\def\XINT_pfloat_P_ii #1#2#3{ #1#2#3.}%
-\def\XINT_pfloat_P_iii#1#2#3#4{ #1#2#3#4.}%
-\def\XINT_pfloat_P_iv #1#2#3#4#5{ #1#2#3#4#5.}%
-\def\XINT_pfloat_P_v #1#2#3#4#5#6{ #1#2#3#4#5#6.}%
+% \end{macrocode}
+% \lverb|&
+% Here we have an integer so we only need to postfix mantissa #3
+% with #1+1-#2 zeros (#1=sci exp., #2=mantissa width). Less cumbersome
+% to do that with \expanded.
+% |
+% \begin{macrocode}
\def\XINT_pfloat_Ps #1.#2.#3.%
{%
- \csname XINT_pfloat_Ps_\romannumeral#1\endcsname #300000.%
+ \expanded{ #3%
+ \romannumeral\xintreplicate{#1+\xint_c_i-#2}{0}\xintPFloatIntSuffix}%
+}%
+% \end{macrocode}
+% \subsection{\csh{xintFloatToDecimal}}
+% \added{1.4k}
+% \begin{macrocode}
+\def\xintFloatToDecimal {\romannumeral0\xintfloattodecimal }%
+\def\xintfloattodecimal #1{\XINT_floattodec_chkopt #1\xint:}%
+\def\XINT_floattodec_chkopt #1%
+{%
+ \ifx [#1\expandafter\XINT_floattodec_opt
+ \else\expandafter\XINT_floattodec_noopt
+ \fi #1%
+}%
+\def\XINT_floattodec_noopt #1\xint:%
+{%
+ \expandafter\XINT_floattodec\romannumeral0\XINTinfloatS[\XINTdigits]{#1}%
+}%
+\def\XINT_floattodec_opt [\xint:#1]%
+{%
+ \expandafter\XINT_floattodec\romannumeral0\XINTinfloatS[#1]%
+}%
+% \end{macrocode}
+% \lverb|Tentation to try to use direct access to lower entry points
+% from \xintREZ, but it dates back from very early days and uses old \Z
+% delimiters (same remarks for the code jumping from \xintFracToSci
+% to \xintrez)|
+% \begin{macrocode}
+\def\XINT_floattodec#1]%
+{%
+ \expandafter\XINT_dectostr\romannumeral0\xintrez{#1]}%
}%
-\def\XINT_pfloat_Ps_ #1#2.{ #1.0}%
-\def\XINT_pfloat_Ps_i #1#2#3.{ #1#2.0}%
-\def\XINT_pfloat_Ps_ii #1#2#3#4.{ #1#2#3.0}%
-\def\XINT_pfloat_Ps_iii#1#2#3#4#5.{ #1#2#3#4.0}%
-\def\XINT_pfloat_Ps_iv #1#2#3#4#5#6.{ #1#2#3#4#5.0}%
-\def\XINT_pfloat_Ps_v #1#2#3#4#5#6#7.{ #1#2#3#4#5#6.0}%
% \end{macrocode}
+%
% \subsection{\csh{XINTinFloatFrac}}
-% \lverb|1.09i, for frac function in \xintfloatexpr. This version computes
+% \added{1.09i}
+%
+% \lverb|For frac function in \xintfloatexpr. This version computes
% exactly from the input the fractional part and then only converts it
% into a float with the asked-for number of digits. I will have to think
-% it again some day, certainly.
+% it again some day, certainly.|
%
+% \changed{1.1}
+% \lverb|&
% 1.1 removes optional argument for which there was anyhow no interface, for
-% technical reasons having to do with \xintNewExpr.
+% technical reasons having to do with \xintNewExpr.|
%
+% \changed{1.1a}
+% \lverb|&
% 1.1a renames the macro as \XINTinFloatFracdigits (from \XINTinFloatFrac) to
% be synchronous with the \XINTinFloatSqrt and \XINTinFloat habits related to
-% \xintNewExpr context and issues with macro names.
-%
-% Note to myself: I still have to rethink the whole thing about what is the best
-% to do, the initial way of going through \xinttfrac was just a first
-% implementation.
+% \xintNewExpr context and issues with macro names.|
%
+% \changed{1.4e}
+% \lverb|&
% 1.4e renames it back to \XINTinFloatFrac because of all such similarly named
% macros also using \XINTdigits forcedly.
% |
@@ -33960,8 +34564,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\xint_gob_til_zero #1\XINT_FL_add_zero 0\XINT_FL_add_b #1%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_FL_add_zero #1.#2{#2}%[[
\def\XINT_FL_add_b #1]#2.#3%
@@ -33969,16 +34571,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\expandafter\XINT_FL_add_c\romannumeral0\XINTinfloat[#2]{#3}#2.#1]%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_FL_add_c #1%
{%
\xint_gob_til_zero #1\XINT_FL_add_zero 0\XINT_FL_add_d #1%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_FL_add_d #1[#2]#3.#4[#5]%
{%
@@ -33988,8 +34586,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintFloatSub}, \csh{XINTinFloatSub}}
-% \lverb|First done 1.07.
-%
+% \added{1.07}
+% \changed{1.2f}
+% \lverb|&
% Starting with 1.2f the arguments undergo an intial rounding to the target
% precision P not P+2.|
%
@@ -34022,18 +34621,16 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintFloatMul}, \csh{XINTinFloatMul}}
-% \lverb|1.07.
-%
+% \added{1.07}
+% \changed{1.2d}
+% \lverb|&
% Starting with 1.2f the arguments are rounded to the target precision P not
-% P+2.
-%
+% P+2.|
+% \changed{1.2g}
+% \lverb|&
% 1.2g handles the inputs via \XINTinFloatS which will be more efficient when
% the precision is large and the input is for example a small constant like 2.
-%
-% 1.2k does a micro improvement to the way the macro passes over control
-% to its output routine (former version used a higher level \xintE causing
-% some extra un-needed processing with two calls to \XINT_infrac where
-% one was amply enough).|
+% |
% \begin{macrocode}
\def\xintFloatMul {\romannumeral0\xintfloatmul}%
\def\xintfloatmul #1{\XINT_flmul_chkopt \xintfloat #1\xint:}%
@@ -34072,7 +34669,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_FL_mul_b #1[#2]#3[#4]{\xintiiMul{#3}{#1}/1[#4+#2]}%
% \end{macrocode}
% \subsection{\csh{xintFloatSqr}, \csh{XINTinFloatSqr}}
-% \lverb|Added only at 1.4e, strangely \xintFloatSqr had never been defined so far.
+% \added{1.4e}
+% \lverb|Strangely \xintFloatSqr had never been defined so far.
%
% An \XINTinFloatSqr{#1} was defined in xintexpr.sty directly as
% \XINTinFloatMul[\XINTdigits]{#1}{#1}, to support the sqr() function. The
@@ -34111,6 +34709,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINTinFloatSqr_wopt[#1]#2{\XINTinFloatS[#1]{\expandafter\XINT_FL_sqr_a\romannumeral0\XINTinfloatS[#1]{#2}}}%
% \end{macrocode}
% \subsection{\csh{XINTinFloatInv}}
+% \added{1.3e}
% \lverb|Added belatedly at 1.3e, to support inv() function. We use Short
% output, for rare inv(\xintexpr 1/3\relax) case. I need to think the whole
% thing out at some later date.|
@@ -34119,17 +34718,20 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINTinFloatInv_wopt[#1]#2{\XINTinFloatS[#1]{\xintInv{#2}}}%
% \end{macrocode}
% \subsection{\csh{xintFloatDiv}, \csh{XINTinFloatDiv}}
-% \lverb|1.07.
-%
-% Starting with 1.2f the arguments are rounded to the target precision P not
-% P+2.
-%
+% \added{1.07}
+% \changed{1.2f}
+% \lverb|Starting with 1.2f the arguments are rounded to the target precision P not
+% P+2.|
+% \changed{1.2g}
+% \lverb|&
% 1.2g handles the inputs via \XINTinFloatS which will be more efficient when
% the precision is large and the input is for example a small constant like 2.
%
% The actual rounding of the quotient is handled via \xintfloat (or
% \XINTinfloatS).
-%
+% |
+% \changed{1.2k}
+% \lverb|&
% 1.2k does the same kind of improvement in \XINT_FL_div_b as for
% multiplication: earlier code was unnecessarily high level.
% |
@@ -34187,13 +34789,13 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\expandafter\XINT_FL_div_b\romannumeral0\XINTinfloatS[#3]{#4}/#1e#2%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_FL_div_b #1[#2]{#1e#2}%
% \end{macrocode}
% \subsection{\csh{xintFloatPow}, \csh{XINTinFloatPow}}
-% \lverb|1.07: initial version. 1.09j has re-organized the core loop.
+% \added{1.07}
+%
+% \lverb|1.09j has re-organized the core loop.
%
% 2015/12/07. I have hesitated to map ^ in expressions to \xintFloatPow rather
% than \xintFloatPower. But for 1.234567890123456 to the power 2145678912 with
@@ -34201,11 +34803,13 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% gain.
%
% This routine requires the exponent x to be compatible with \numexpr parsing.
+% |
%
+% \changed{1.2f}
+% \lverb|&
% 1.2f has rewritten the code for better efficiency. Also, now the argument A
% for A^x is first rounded to P digits before switching to the increased
% working precision (which depends upon x).
-%
% |
% \begin{macrocode}
\def\xintFloatPow {\romannumeral0\xintfloatpow}%
@@ -34243,8 +34847,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
\def\XINT_flpow_BisZero .#1.#2#3{#3{1[0]}}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_checkB_b #1#2.#3.%
{%
@@ -34269,8 +34871,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\romannumeral0\XINTinfloat [#3]{#6}{#2}{#1}{#4}{#5}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_aa #1[#2]#3%
{%
@@ -34278,13 +34878,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\romannumeral\XINT_rep #3\endcsname0.#1.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_ab #1.#2.#3.{\XINT_flpow_a #3#2[#1]}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_a #1%
{%
@@ -34302,16 +34898,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_b #1#2[#3]#4#5%
{%
\XINT_flpow_loopI #5.#3.#2.#4.{#1\ifodd #5 \xint_c_i\fi\fi}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_truncate #1.#2.#3.%
{%
@@ -34320,8 +34912,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
#3.#2\xint_bye2345678\xint_bye..#1.#3.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_truncate_a #1.#2.#3.{#3+\xintLength{#2}.#1.}%
\def\XINT_flpow_loopI #1.%
@@ -34335,16 +34925,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
#1.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_ItoIII\ifodd #1\fi #2.#3.#4.#5.#6%
{%
\expandafter\XINT_flpow_III\the\numexpr #6+\xint_c_.#3.#4.#5.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_loopI_even #1.#2.#3.%#4.%
{%
@@ -34393,8 +34979,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
#1.#2.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_IItoIII\ifodd #1\fi #2.#3.#4.#5.#6.#7.#8%
{%
@@ -34435,17 +35019,18 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\krof #1%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpow_IIIend #1#2#3%
{#3{\if#21\xint_afterfi{\expandafter-\romannumeral`&&@}\fi#1}}%
% \end{macrocode}
% \subsection{\csh{xintFloatPower}, \csh{XINTinFloatPower}}
-% \lverb|1.07. The core loop has been re-organized in 1.09j for some slight
+% \added{1.07}
+% \lverb|The core loop has been re-organized in 1.09j for some slight
% efficiency gain. The exponent B is given to \xintNum. The ^ in expressions
% is mapped to this routine.
-%
+% |
+% \changed{1.2f}
+% \lverb|&
% Same modifications as in \xintFloatPow for 1.2f.
%
% 1.2f \XINTinFloatPowerH (now moved to $xintlognameimp, and renamed). It
@@ -34454,7 +35039,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% rounded to Digits before, not after the square root extraction, 1.2k kept 3
% guard digits for this last step. And the initial step was
% changed to a rounding rather than truncating.
-%
+% |
+% \changed{1.4e}
+% \lverb|&
% Until 1.4e this \XINTinFloatPowerH was the macro for a^b in expressions,
% but of course it behaved strangely for b not an integer or an half-integer!
% At 1.4e, the non-integer, non-half-integer exponents will be handled via
@@ -34505,16 +35092,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\the\numexpr\xintLength{#2}+\xint_c_iii.#3.#2.{#1}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpower_checkB_c #1.#2.%
{%
\expandafter\XINT_flpower_checkB_d\the\numexpr#1+#2.#1.#2.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpower_checkB_d #1.#2.#3.#4.#5#6%
{%
@@ -34522,8 +35105,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\romannumeral0\XINTinfloat [#3]{#6}{#2}{#1}{#4}{#5}%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flpower_aa #1[#2]#3%
{%
@@ -34550,8 +35131,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\xint_dothis{\expandafter\XINT_flpower_loopI_odd}\fi
\xint_orthat{\expandafter\XINT_flpower_loopI_even}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\romannumeral0\XINT_half
#1\xint_bye\xint_Bye345678\xint_bye
@@ -34583,8 +35162,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\xint_dothis{\expandafter\XINT_flpower_loopII_odd}\fi
\xint_orthat{\expandafter\XINT_flpower_loopII_even}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\romannumeral0\XINT_half#1\xint_bye\xint_Bye345678\xint_bye
*\xint_c_v+\xint_c_v)/\xint_c_x-\xint_c_i\relax.%
@@ -34617,16 +35194,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintFloatFac}, \csh{XINTFloatFac}}
-% \lverb|&1.2.
-%
-% Done at 1.2.
-%
-% At 1.3e \XINTinFloatFac uses \XINTinFloatS for output.
-%
-% 1.4e adds some overhead for individual evaluations in float context as it
-% obeys the guard digits for the default target precision. It is a waste for
-% individual evaluation of one factorial...
-% |
+% \added{1.2}
% \begin{macrocode}
\def\xintFloatFac {\romannumeral0\xintfloatfac}%
\def\xintfloatfac #1{\XINT_flfac_chkopt \xintfloat #1\xint:}%
@@ -34710,7 +35278,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% than the earlier 5=13-8. Whatever happens, the value computed in
% \XINT_FL_fac_increaseP is at least 8. There will always be an extra block.
%
-% Note: with Digits:=32; Maple gives for 200!:$bgroup$obeylines$obeyspaces$ttbfamily
+% Note: with Digits:=32; Maple gives for 200!:$bgroup$obeylines$obeyspaces$ttfamily
% > factorial(200.);
% $indent 375
% $indent 0.78865786736479050355236321393218 10
@@ -34911,12 +35479,14 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintFloatPFactorial}, \csh{XINTinFloatPFactorial}}
-% \lverb|2015/11/29 for 1.2f. Partial factorial pfactorial(a,b)=(a+1)...b,
-% only for non-negative integers with a<=b<10^8.
-%
-% 1.2h (2016/11/20) now avoids raising \xintError:OutOfRangePFac if the
-% condition 0<=a<=b<10^8 is violated. Same as for \xintiiPFactorial.
-%
+% \added[2015/11/29]{1.2f}
+% \lverb|Partial factorial pfactorial(a,b)=(a+1)...b,
+% only for non-negative integers with a<=b<10^8.|
+% \changed[2016/11/20]{1.2h}
+% \lverb|Now avoids raising \xintError:OutOfRangePFac if the
+% condition 0<=a<=b<10^8 is violated. Same as for \xintiiPFactorial.|
+% \changed{1.4e}
+% \lverb|&
% 1.4e extends the precision in floating point context adding some overhead
% but well.|
% \begin{macrocode}
@@ -35115,22 +35685,22 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintFloatBinomial}, \csh{XINTinFloatBinomial}}
-% \lverb|1.2f. We compute binomial(x,y) as pfac(x-y,x)/y!, where the numerator
+% \added[2015/12/01]{1.2f}
+% \lverb|We compute binomial(x,y) as pfac(x-y,x)/y!, where the numerator
% and denominator are computed with a relative error at most 4.10^{-P-2}, then
% rounded (once I have a float truncation, I will use truncation rather) to
% P+3 digits, and finally the quotient is correctly rounded to P digits. This
% will guarantee that the exact value X differs from the computed one Y by at
-% most 0.6 ulp(Y). (2015/12/01).
-%
-% 2016/11/19 for 1.2h. As for \xintiiBinomial, hard to understand why last
+% most 0.6 ulp(Y).|
+% \changed[2016/11/19]{1.2h}
+% \lverb|As for \xintiiBinomial, hard to understand why last
% year I coded this to raise an error if y<0 or y>x ! The question of the
% Gamma function is for another occasion, here x and y must be (small)
% integers.
%
% 1.4e: same remarks as for factorial and partial factorial about added
% overhead due to extra guard digits.
-%
-%|
+% |
% \begin{macrocode}
\def\xintFloatBinomial {\romannumeral0\xintfloatbinomial}%
\def\xintfloatbinomial #1{\XINT_flbinom_chkopt \xintfloat #1\xint:}%
@@ -35199,7 +35769,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintFloatSqrt}, \csh{XINTinFloatSqrt}}
-% \lverb|First done for 1.08.
+% \added{1.08}
+% \changed{1.2f}
+% \lverb|&
%
% The float version was developed at the same time as the integer one and even
% a bit earlier. As a result the integer variant had some sub-optimal parts.
@@ -35219,22 +35791,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% macros.
%
% Final note: with 1.2f the input is always first rounded to P significant
-% places.
-%
-% 1.4e (2021/04/15) great hesitation about what to do regarding guard digits.
-% This will spoil the guaranteed "correct-rounding" property for individual
-% calculations... but is interesting for precision as soon as the square root
-% is embedded into some larger calculation. Annoying. But there is \xintexpr
-% which I can left configured to use strictly \xintDigits in contrast to
-% \xintfloatexpr. Ah ok and there will always be sqrt(x,\xinttheDigits) syntax
-% if one wants. And finally I keep sqrt() acting the same in expr and floatexpr.
-%
-% Attention that at 1.4e \XINTinFloatSqrt is defined to be used ONLY with
-% optional argument.
-%
-%
-%
-% |
+% places.|
% \begin{macrocode}
\def\xintFloatSqrt {\romannumeral0\xintfloatsqrt}%
\def\xintfloatsqrt #1{\XINT_flsqrt_chkopt \xintfloat #1\xint:}%
@@ -35275,8 +35832,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
{Square root of negative: -#1].}{}{ 0[0]}}%
}%
% \end{macrocode}
-%\lverb|&
-% |
+% \begin{privatecodecomments}
+% \end{privatecodecomments}
% \begin{macrocode}
\def\XINT_FL_sqrt_pos #1[#2]#3.%
{%
@@ -35285,8 +35842,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\xint_orthat {+\xint_c_ii.#2.{}}#100.#3.%
}%
% \end{macrocode}
-% \lverb|&
-% |
+% \begin{privatecodecomments}
+% \end{privatecodecomments}
% \begin{macrocode}
\def\XINT_flsqrt #1.#2.%
{%
@@ -35294,8 +35851,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\the\numexpr #2/\xint_c_ii-(#1-\xint_c_i)/\xint_c_ii.#1.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flsqrt_a #1.#2.#3#4.#5.%
{%
@@ -35304,8 +35859,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\romannumeral0\XINT_sqrt_start #2.#4#3.#5.#2.#4#3.#5.#1.%
}%
% \end{macrocode}
-% \lverb|&
-% |
+%
% \begin{macrocode}
\def\XINT_flsqrt_b #1.#2#3%
{%
@@ -35316,8 +35870,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
{\XINT_dbl#2\xint_bye2345678\xint_bye*\xint_c_ii\relax}}.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flsqrt_c #1.#2.%
{%
@@ -35325,8 +35877,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\romannumeral0\XINT_split_fromleft#2.#1\xint_bye2345678\xint_bye..%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flsqrt_d #1.#2#3.%
{%
@@ -35335,13 +35885,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
#2#3.#1.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flsqrt_finish #1#2.#3.#4.#5.#6.#7.#8{#8[#6]{#3#1[#7]}}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flsqrt_f 5#1.%
{\expandafter\XINT_flsqrt_g\romannumeral0\xintinum{#1}\relax.}%
@@ -35350,16 +35896,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_flsqrt_h #1{\ifnum #1<\xint_c_iii\xint_dothis{\XINT_flsqrt_again}\fi
\xint_orthat{\XINT_flsqrt_finish 5.}}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flsqrt_again #1.#2.%
{%
\expandafter\XINT_flsqrt_again_a\the\numexpr #2+\xint_c_viii.%
}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_flsqrt_again_a #1.#2.#3.%
{%
@@ -35370,12 +35912,11 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintFloatE}, \csh{XINTinFloatE}}
-% \lverb|1.07: The fraction is the first argument contrarily to \xintTrunc and
-% \xintRound.
-%
-% 1.2k had to rewrite this since there is no more a \XINT_float_a macro.
-%
-% Attention about \XINTinFloatE: it is for use by xintexpr.sty.
+% \added{1.07}
+% \lverb|The fraction is the first argument contrarily to \xintTrunc and
+% \xintRound.|
+% \lverb|&
+% Attention to \XINTinFloatE: it is for use by xintexpr.sty.
% With input 0 it produces on output an 0[N], not 0[0].
% |
% \begin{macrocode}
@@ -35412,8 +35953,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_floate_zero #1]#2.#3{ 0.e0}%
\def\XINT_floate_neg-{\expandafter-\romannumeral0\XINT_floate_pos}%
% \end{macrocode}
-% \lverb|&
-% |
% \begin{macrocode}
\def\XINT_floate_pos #1#2[#3]#4.#5%
{%
@@ -35427,7 +35966,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_infloate_end #1.#2{ #2[#1]}%
% \end{macrocode}
% \subsection{\csh{XINTinFloatMod}}
-% \lverb|1.1. Pour emploi dans xintexpr. Code shortened at 1.2p.|
+% \added{1.1}
+% \lverb|Pour emploi dans xintexpr. Code shortened at 1.2p.|
% \begin{macrocode}
\def\XINTinFloatMod {\romannumeral0\XINTinfloatmod [\XINTdigits]}%
\def\XINTinfloatmod [#1]#2#3%
@@ -35438,7 +35978,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{XINTinFloatDivFloor}}
-% \lverb|1.2p. Formerly // and /: in \xintfloatexpr used \xintDivFloor and
+% \added{1.2p}
+% \lverb|Formerly // and /: in \xintfloatexpr used \xintDivFloor and
% \xintMod, hence did not round their operands to float precision beforehand.|
% \begin{macrocode}
\def\XINTinFloatDivFloor {\romannumeral0\XINTinfloatdivfloor [\XINTdigits]}%
@@ -35450,7 +35991,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{XINTinFloatDivMod}}
-% \lverb|1.2p. Pour emploi dans xintexpr, donc je ne prends pas la peine de
+% \added{1.2p}
+% \lverb|Pour emploi dans xintexpr, donc je ne prends pas la peine de
% faire l'expansion du modulo, qui se produira dans le \csname.
%
% Hésitation sur le quotient, faut-il l'arrondir immédiatement ?
@@ -35475,7 +36017,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_infloatdivmod #1#2#3{\expanded{{#1}{\XINTinFloat[#3]{#2}}}}%
% \end{macrocode}
% \subsection{\csh{xintifFloatInt}}
-% \lverb|1.3a for ifint() function in \xintfloatexpr.|
+% \added{1.3a}
+% \lverb|For ifint() function in \xintfloatexpr.|
% \begin{macrocode}
\def\xintifFloatInt {\romannumeral0\xintiffloatint}%
\def\xintiffloatint #1{\expandafter\XINT_iffloatint
@@ -35488,14 +36031,16 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{xintFloatIsInt}}
-% \lverb|1.3d for isint() function in \xintfloatexpr.|
+% \added{1.3d}
+% \lverb|For isint() function in \xintfloatexpr.|
% \begin{macrocode}
\def\xintFloatIsInt {\romannumeral0\xintfloatisint}%
\def\xintfloatisint #1{\expandafter\XINT_iffloatint
\romannumeral0\xintrez{\XINTinFloatS[\XINTdigits]{#1}}10}%
% \end{macrocode}
% \subsection{\csh{xintFloatIntType}}
-% \lverb|1.4e for fractional powers. Expands to \xint_c_mone if argument is not an
+% \added{1.4e}
+% \lverb|For fractional powers. Expands to \xint_c_mone if argument is not an
% integer, to \xint_c_ if it is an even integer and to \xint_c_i if it is an
% odd integer.|
% \begin{macrocode}
@@ -35515,15 +36060,13 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
% \end{macrocode}
% \subsection{\csh{XINTinFloatdigits}, \csh{XINTinFloatSdigits}}
-% \lverb|For \xintNewExpr/\xintdeffloatfunc matters, mainly.
-%
-% |
% \begin{macrocode}
\def\XINTinFloatdigits {\XINTinFloat [\XINTdigits]}%
\def\XINTinFloatSdigits{\XINTinFloatS[\XINTdigits]}%
% \end{macrocode}
% \subsection{(WIP) \csh{XINTinRandomFloatS}, \csh{XINTinRandomFloatSdigits}}
-% \lverb|1.3b. Support for random() function.
+% \added{1.3b}
+% \lverb|Support for random() function.
%
% Thus as it is a priori only for xintexpr usage, it expands inside \csname
% context, but as we need to get rid of initial zeros we use \xintRandomDigits
@@ -35547,8 +36090,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% ends up with trailing zeros. That did not feel right but I checked random()
% in Python (which of course uses radix 2), and indeed this is what happens
% there.
-%
-%
% |
% \begin{macrocode}
\def\XINTinRandomFloatS{\romannumeral0\XINTinrandomfloatS}%
@@ -35581,7 +36122,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_inrandomfloatS_zero#1]{ 0[0]}%
% \end{macrocode}
% \subsection{(WIP) \csh{XINTinRandomFloatSixteen}}
-% \lverb|1.3b. Support for qrand() function.|
+% \added{1.3b}
+% \lverb|Support for qrand() function.|
% \begin{macrocode}
\def\XINTinRandomFloatSixteen%
{%
@@ -35668,7 +36210,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintseries}%
- [2021/07/13 v1.4j Expandable partial sums with xint package (JFB)]%
+ [2022/05/18 v1.4k Expandable partial sums with xint package (JFB)]%
% \end{macrocode}
% \subsection{\csh{xintSeries}}
% \begin{macrocode}
@@ -36176,7 +36718,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintcfrac}%
- [2021/07/13 v1.4j Expandable continued fractions with xint package (JFB)]%
+ [2022/05/18 v1.4k Expandable continued fractions with xint package (JFB)]%
% \end{macrocode}
% \subsection{\csh{xintCFrac}}
% \begin{macrocode}
@@ -37569,7 +38111,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintexpr}%
- [2021/07/13 v1.4j Expandable expression parser (JFB)]%
+ [2022/05/18 v1.4k Expandable expression parser (JFB)]%
\catcode`! 11
\let\XINT_Cmp \xintiiCmp
\def\XINTfstop{\noexpand\XINTfstop}%
@@ -37940,11 +38482,14 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% which now requires \xintfloatexprPrintOne[D]{x} usage, with first argument
% in brackets.
%
-% |
+%
+% 1.4k has moved definition of \xintFracToSci to this macro file, so must
+% delay \let\xintexprPrintOne\xintFracToSci to after it has been defined.
+% |
% \begin{macrocode}
\protected\def\XINTexprprint.%
{\XINT:NEhook:x:toblist\XINT:expr:toblistwith\xintexprPrintOne}%
-\let\xintexprPrintOne\xintFracToSci
+% \let\xintexprPrintOne\xintFracToSci
\protected\def\XINTiexprprint.%
{\XINT:NEhook:x:toblist\XINT:expr:toblistwith\xintiexprPrintOne}%
\let\xintiexprPrintOne\xintDecToString
@@ -38057,13 +38602,39 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% (and attention that \xintexpr\relax is now legal, and an empty ople can be
% produced in output also from \xintexpr [17][1]\relax for example)
% |
+% \changed[2022/05/16]{1.4k}
+% \lverb|The \xintieval and \xintfloateval optional bracketed argument can now
+% be located outside the braces... took me years to finally make the step toward LaTeX
+% users expectations for a decent interface.|
% \begin{macrocode}
+\let\xint_relax\relax
\def\xinteval #1%
{\expanded\expandafter\XINTexprprint\expandafter.\romannumeral0\xintbareeval#1\relax}%
-\def\xintieval #1%
- {\expanded\expandafter\xint_gobble_i\romannumeral`&&@\xintiexpr#1\relax}%
-\def\xintfloateval #1%
- {\expanded\expandafter\xint_gobble_i\romannumeral`&&@\xintfloatexpr#1\relax}%
+\def\xintieval
+ {\expanded\expandafter\xint_ieval_chkopt\string}%
+\def\xint_ieval_chkopt #1%
+{%
+ \ifx [#1\expandafter\xint_ieval_opt
+ \else\expandafter\xint_ieval_noopt
+ \fi #1%
+}%
+\def\xint_ieval_opt [#1]#2%
+ {\expandafter\xint_gobble_i\romannumeral`&&@\xintiexpr[#1]#2\relax}%
+\def\xint_ieval_noopt #1{\expandafter\xint_ieval\expandafter{\iffalse}\fi}%
+\def\xint_ieval#1%
+ {\expandafter\xint_gobble_i\romannumeral`&&@\xintiexpr#1\relax}%
+\def\xintfloateval {\expanded\expandafter\xint_floateval_chkopt\string}%
+\def\xint_floateval_chkopt #1%
+{%
+ \ifx [#1\expandafter\xint_floateval_opt
+ \else\expandafter\xint_floateval_noopt
+ \fi #1%
+}%
+\def\xint_floateval_opt [#1]#2%
+ {\expandafter\xint_gobble_i\romannumeral`&&@\xintfloatexpr[#1]#2\relax}%
+\def\xint_floateval_noopt #1{\expandafter\xint_floateval\expandafter{\iffalse}\fi}%
+\def\xint_floateval#1%
+ {\expandafter\xint_gobble_i\romannumeral`&&@\xintfloatexpr#1\relax}%
\def\xintiieval #1%
{\expanded\expandafter\XINTiiexprprint\expandafter.\romannumeral0\xintbareiieval#1\relax}%
% \end{macrocode}
@@ -38100,6 +38671,113 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\xintifsgnfloatexpr #1{\romannumeral0\xintiiifsgn {\xintthefloatexpr #1\relax}}%
\def\xintifsgniiexpr #1{\romannumeral0\xintiiifsgn {\xinttheiiexpr #1\relax}}%
% \end{macrocode}
+% \subsubsection{\csh{xintFracToSci}}
+% \added{1.4}
+% \changed{1.4e}
+% \lverb|Refactored and much simplified
+%
+% It only needs to be x-expandable, and indeed the implementation here is only
+% x-expandable.
+% |
+% \lverb|&
+%
+% Finally for 1.4e release I modify. This is breaking change for all
+% \xinteval output in case of scientific notation: it will not be with an
+% integer mantissa, but with regular scientific notation, using the same rules
+% as \xintPFloat.
+%
+% Of course no float rounding! Also, as [0] will always or almost always be
+% present from an \xinteval, we want then to use integer not scientific
+% notation. But expression contained decimal fixed point input, or uses
+% scientific functions, then probably the N will not be zero and this will
+% trigger usage of scientific notation in output.
+%
+% Implementing these changes sort of ruin our previous efforts to minimize
+% grabbing the argument, but well. So the rules now are
+%
+%( Input: A, A/B, A[N], A/B[N]
+%: Output: A, A/B, A if N=0, A/B if N=0
+%: If N is not zero, scientific notation like \xintPFloat,&
+% i.e. behaviour like \xintfloateval apart from the rounding&
+% to significands of width Digits.&
+% At 1.4k, trimming of zeros is always done, i.e.&
+% the \xintPFloatMinTrimmed is ignored to keep behaviour.&
+% unchanged.
+%: The zero gives 0, except in A[N] and A/B[N] cases, it may give&
+% 0.0
+%)
+% |
+% \changed{1.4k}
+% Moved from \xintfracnameimp to \xintexprnameimp.
+% \begin{macrocode}
+\def\xintFracToSci #1{\expandafter\XINT_FracToSci\romannumeral`&&@#1/\W[\R}%
+\def\XINT_FracToSci #1/#2#3[#4%
+{%
+ \xint_gob_til_W #2\XINT_FracToSci_noslash\W
+ \xint_gob_til_R #4\XINT_FracToSci_slash_noN\R
+ \XINT_FracToSci_slash_N #1/#2#3[#4%
+}%
+\def\XINT_FracToSci_noslash#1\XINT_FracToSci_slash_N #2[#3%
+{%
+ \xint_gob_til_R #3\XINT_FracToSci_noslash_noN\R
+ \XINT_FracToSci_noslash_N #2[#3%
+}%
+\def\XINT_FracToSci_noslash_noN\R\XINT_FracToSci_noslash_N #1/\W[\R{#1}%
+\def\XINT_FracToSci_noslash_N #1[#2]/\W[\R%
+{%
+ \ifnum#2=\xint_c_ #1\else
+ \romannumeral0\expandafter\XINT_pfloat_keeptrimmed_fork\romannumeral0\xintrez{#1[#2]}%
+ \fi
+}%
+\def\XINT_FracToSci_slash_noN\R\XINT_FracToSci_slash_N #1#2/#3/\W[\R%
+{%
+ #1\xint_gob_til_zero#1\expandafter\iffalse\xint_gobble_ii0\iftrue
+ #2\if\XINT_isOne{#3}1\else/#3\fi\fi
+}%
+\def\XINT_FracToSci_slash_N #1#2/#3[#4]/\W[\R%
+{%
+ \ifnum#4=\xint_c_ #1#2\else
+ \romannumeral0\expandafter\XINT_pfloat_keeptrimmed_fork\romannumeral0\xintrez{#1#2[#4]}%
+ \fi
+ \if\XINT_isOne{#3}1\else\if#10\else/#3\fi\fi
+}%
+\let\xintexprPrintOne\xintFracToSci
+% \end{macrocode}
+% \subsubsection{\csh{xintFracToDecimal}}
+% \added{1.4k}
+% \begin{macrocode}
+\def\xintFracToDecimal #1{\expandafter\XINT_FracToDecimal\romannumeral`&&@#1/\W[\R}%
+\def\XINT_FracToDecimal #1/#2#3[#4%
+{%
+ \xint_gob_til_W #2\XINT_FracToDecimal_noslash\W
+ \xint_gob_til_R #4\XINT_FracToDecimal_slash_noN\R
+ \XINT_FracToDecimal_slash_N #1/#2#3[#4%
+}%
+\def\XINT_FracToDecimal_noslash#1\XINT_FracToDecimal_slash_N #2[#3%
+{%
+ \xint_gob_til_R #3\XINT_FracToDecimal_noslash_noN\R
+ \XINT_FracToDecimal_noslash_N #2[#3%
+}%
+\def\XINT_FracToDecimal_noslash_noN\R\XINT_FracToDecimal_noslash_N #1/\W[\R{#1}%
+\def\XINT_FracToDecimal_noslash_N #1[#2]/\W[\R%
+{%
+ \ifnum#2=\xint_c_ #1\else
+ \romannumeral0\expandafter\XINT_dectostr\romannumeral0\xintrez{#1[#2]}%
+ \fi
+}%
+\def\XINT_FracToDecimal_slash_noN\R\XINT_FracToDecimal_slash_N #1#2/#3/\W[\R%
+{%
+ #1\xint_gob_til_zero#1\expandafter\iffalse\xint_gobble_ii0\iftrue
+ #2\if\XINT_isOne{#3}1\else/#3\fi\fi
+}%
+\def\XINT_FracToDecimal_slash_N #1#2/#3[#4]/\W[\R%
+{%
+ \ifnum#4=\xint_c_ #1#2\else
+ \romannumeral0\expandafter\XINT_dectostr\romannumeral0\xintrez{#1#2[#4]}%
+ \fi
+ \if\XINT_isOne{#3}1\else\if#10\else/#3\fi\fi
+}%
+% \end{macrocode}
% \subsubsection{Small bits we have to put somewhere}
% \lverb|&
% Some renaming and modifications here with release 1.2 to switch from
@@ -41144,7 +41822,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% contains correctly nested parentheses}
%
% \lverb|Expands to \xint_c_mone in case a closing ) had no opening ( matching
-% it, to \@ne if opening ) had no closing ) matching it, to \z@ if expression
+% it, to \@ne if opening ( had no closing ) matching it, to \z@ if expression
% was balanced. Call it as:
%
% \XINT_isbalanced_a \relax #1(\xint_bye)\xint_bye
@@ -43376,8 +44054,19 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \subsubsection{\csh{xintdefufunc}, \csh{xintdefiiufunc},
% \csh{xintdeffloatufunc}}
%
-% \lverb|1.4|
-%
+% \lverb|Added at 1.4|
+% \changed[2022/05/15]{1.4k}
+% \lverb+The \xintexprSafeCatcodes was not paired correctly with
+% \xintexprRestoreCatcodes which was in only one branch of \xint_defufunc_b,
+% and as a result sanitization of catcodes was never reverted. That the
+% bug remained unseen and in particular did not break compilation of
+% user manual (where the | must be active), was a sort of unhappy miracle
+% due to the | ending up recovering its active catcode from some ulterior
+% \xintdefiifunc whose Safe/Restore behaved as described in the user manual,
+% i.e. it did a restore to the state before the first unpaired Safe, and this
+% miraculous recovery happened before breakage had happened, by sheer luck,
+% or rather lack of luck, else I would have seen and solved
+% the problem two years ago...+
% \begin{macrocode}
\def\XINT_tmpa #1#2#3#4#5#6%
{%
@@ -43393,11 +44082,11 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\ifnum\xintLength:f:csv{\XINT_defufunc_tmpd}=\xint_c_i
\expandafter#6%
\else
- \xintMessage {xintexpr}{ERROR}
+ \xintMessage {xintexpr}{ERROR}
{Universal functions must be functions of one argument only,
but the declaration of \XINT_defufunc_tmpa\space
- has \xintLength:f:csv{\XINT_defufunc_tmpd} of them. Cancelled.}%
- \xintexprRestoreCatcodes
+ has \xintLength:f:csv{\XINT_defufunc_tmpd} of them. Canceled.}%
+ \xintexprRestoreCatcodes
\fi
}% end of \xint_defufunc_b
\def #6{%
@@ -43416,6 +44105,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
with \ifxintglobaldefs global \fi meaning \expandafter\meaning
\csname XINT_#2_userufunc_\XINT_defufunc_tmpa\endcsname}%
\fi
+ \xintexprRestoreCatcodes
}% end of \xint_defufunc_c
}%
\def\xintdefufunc {\xintexprSafeCatcodes\xintdefufunc_a}%
@@ -44278,8 +44968,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% Up to and including 1.2c the definition was global. Starting with 1.2d it is
% done locally.
%
-% Modified at 1.3c so that \XINT_NewFunc et al. do not execute the
-% \xintexprSafeCatcodes, as it is now already done earlier by \xintdeffunc.
+% The \xintexprSafeCatcodes inserted here by \xintNewExpr
+% is not paired with an \xintexprRestoreCatcodes,
+% but this happens within a scope limiting group so does not matter.
+% At 1.3c, \XINT_NewFunc et al. do not even execute the
+% \xintexprSafeCatcodes, as it gets already done by \xintdeffunc prior
+% to arriving here.
%
% |
% \begin{macrocode}
@@ -44375,15 +45069,25 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\catcode`% 14
\XINTsetcatcodes % clean up to avoid surprises if something changes
% \end{macrocode}
-% \subsubsection{\csh{ifxintexprsafecatcodes}, \csh{xintexprSafeCatcodes}, \csh{xintexprRestoreCatcodes}}
+% \subsubsection{\csh{xintexprSafeCatcodes}, \csh{xintexprRestoreCatcodes}}
% \changed[2018/06/17]{1.3c}
% \lverb|Added \ifxintexprsafecatcodes to allow nesting|
-% \begin{macrocode}
-\newif\ifxintexprsafecatcodes
-\let\xintexprRestoreCatcodes\empty
+% \changed[2022/05/15]{1.4k}
+% \lverb|The "allow nesting" from the 2018 comment was strange, because
+% the behaviour, as correctly documented in user manual, was that
+% in case of a series of \xintexprSafeCatcodes, the \xintexprRestoreCatcodes
+% would set catcodes to what they were before the *first* sanitization.
+% But as \xintdefvar and \xintdeffunc used such a pair this meant
+% that they would incomprehensibly for user reset catcodes to what
+% they were before a possible user \xintexprSafeCatcodes located before...
+% very lame situation. Anyway. I finally
+% fix at 1.4k that by removing the silly \ifxintexprsafecatcodes thing
+% and replace it by some stack-like method, avoiding extra macros
+% thanks to the help of \unexpanded.|
+% \begin{macrocode}
+\def\xintexprRestoreCatcodes{}%
\def\xintexprSafeCatcodes
{%
- \unless\ifxintexprsafecatcodes
\edef\xintexprRestoreCatcodes {%
\endlinechar=\the\endlinechar
\catcode59=\the\catcode59 % ;
@@ -44409,11 +45113,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\catcode44=\the\catcode44 % ,
\catcode61=\the\catcode61 % =
\catcode96=\the\catcode96 % `
- \catcode32=\the\catcode32\relax % space
- \noexpand\xintexprsafecatcodesfalse
+ \catcode32=\the\catcode32 % space
+ \def\noexpand\xintexprRestoreCatcodes{\unexpanded\expandafter{\xintexprRestoreCatcodes}}%
}%
- \fi
- \xintexprsafecatcodestrue
\endlinechar=13 %
\catcode59=12 % ;
\catcode34=12 % "
@@ -44587,10 +45289,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\expandafter\xint_secondoftwo
\fi
{\immediate\write-1{Reloading xinttrig library using Digits=\xinttheDigits.}}%
-{\expandafter\gdef\csname xintlibver@trig\endcsname{2021/07/13 v1.4j}%
+{\expandafter\gdef\csname xintlibver@trig\endcsname{2022/05/18 v1.4k}%
\XINT_providespackage
\ProvidesPackage{xinttrig}%
-[2021/07/13 v1.4j Trigonometrical functions for xintexpr (JFB)]%
+[2022/05/18 v1.4k Trigonometrical functions for xintexpr (JFB)]%
}%
% \end{macrocode}
% \subsection{Ensure used letters are dummy letters}
@@ -45907,10 +46609,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\expandafter\xint_secondoftwo
\fi
{\immediate\write-1{Reloading xintlog library using Digits=\xinttheDigits.}}%
-{\expandafter\gdef\csname xintlibver@log\endcsname{2021/07/13 v1.4j}%
+{\expandafter\gdef\csname xintlibver@log\endcsname{2022/05/18 v1.4k}%
\XINT_providespackage
\ProvidesPackage{xintlog}%
-[2021/07/13 v1.4j Logarithms and exponentials for xintexpr (JFB)]%
+[2022/05/18 v1.4k Logarithms and exponentials for xintexpr (JFB)]%
}%
% \end{macrocode}
% \subsection{\csh{xintreloadxintlog}}
@@ -46491,11 +47193,11 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% function, those with D+10 digits are used to compute log10() function. This
% is done with
% an elevated precision for two reasons:
-% (- handling of inputs near 1,
-% :- in order for a^b = pow10(b*log10(a)) to keep accuracy&
+%( - handling of inputs near 1,
+%: - in order for a^b = pow10(b*log10(a)) to keep accuracy&
% even with large exponents, say in absolute value up to 1e7,&
% degradation beginning to show-up at 1e8.
-% )
+%)
% |
% \begin{macrocode}
\def\XINT_tmpa{1[0]}%
@@ -47946,8 +48648,8 @@ xint.sty:205
xintbinhex.sty:53
xintcfrac.sty:183
xintcore.sty:272
-xintexpr.sty:453
-xintfrac.sty:511
+xintexpr.sty:465
+xintfrac.sty:522
xintgcd.sty:41
xintkernel.sty:17
xintlog.sty:150
@@ -47956,15 +48658,15 @@ xinttools.sty:157
xinttrig.sty:65
\fi
% grep -o "^{%" xint*sty | wc -l
-\def\totala{ 2155}
+\def\totala{ 2178}
\iffalse
% grep -c -e "^}%" xint*sty
xint.sty:204
xintbinhex.sty:52
xintcfrac.sty:183
xintcore.sty:269
-xintexpr.sty:436
-xintfrac.sty:515
+xintexpr.sty:448
+xintfrac.sty:527
xintgcd.sty:43
xintkernel.sty:17
xintlog.sty:151
@@ -47973,7 +48675,7 @@ xinttools.sty:156
xinttrig.sty:64
\fi
% grep -o "^}%" xint*sty | wc -l
-\def\totalb{ 2138}
+\def\totalb{ 2162}
\cleardoublepage
\section{Cumulative line count}
@@ -47997,8 +48699,8 @@ xinttrig.sty:64
\TeX\strut. Version {\xintbndlversion} of {\xintbndldate}.\par
}
-\CheckSum {38590}% 1.4j
-% 38591 pour 1.4i, 38427 pour 1.4h
+\CheckSum {38925}% 1.4j
+% 38590 pour 1.4j, 38591 pour 1.4i, 38427 pour 1.4h
% 38423 pour 1.4g, 38212 pour 1.4f, 38813 pour 1.4e, 35184 pour 1.4d
% 35109 pour 1.4c, 35103 pour 1.4b, 34648 pour 1.4a, 34575 pour 1.4
% 33497 pour 1.3f, 33274 pour 1.3e, 31601 pour 1.3d, 31122 pour 1.3c
diff --git a/macros/generic/xint/xint.pdf b/macros/generic/xint/xint.pdf
index f9d5b3bb03..52f8052d93 100644
--- a/macros/generic/xint/xint.pdf
+++ b/macros/generic/xint/xint.pdf
Binary files differ
diff --git a/macros/latex/contrib/doclicense/Makefile b/macros/latex/contrib/doclicense/Makefile
index bfa65debc3..9f00b5930d 100644
--- a/macros/latex/contrib/doclicense/Makefile
+++ b/macros/latex/contrib/doclicense/Makefile
@@ -22,10 +22,18 @@ install:
mkdir --parents "$(TEXMFHOME)/tex/latex/"
test -L "$(TEXMFHOME)/tex/latex/doclicense" || ln --no-target-directory --symbolic "$$PWD" "$(TEXMFHOME)/tex/latex/doclicense"
-# Run before release.
.PHONY: check
-check: run_tests doclicense.sty lint
- ./"$<"
+check: check-copyright-date manifest.txt doclicense.sty lint
+
+# Run before release.
+.PHONY: check-full
+check-full: check run_tests
+ ./run_tests
+
+# CTAN people want this when uploading a release.
+.PHONY: check-copyright-date
+check-copyright-date: README.md
+ grep --quiet 'SPDX-FileCopyrightText:.*$(shell date +%Y)\s' "$<"
.PHONY: lint
lint: doclicense.dtx
diff --git a/macros/latex/contrib/doclicense/README.md b/macros/latex/contrib/doclicense/README.md
index 34361a1192..28f2a97336 100644
--- a/macros/latex/contrib/doclicense/README.md
+++ b/macros/latex/contrib/doclicense/README.md
@@ -1,5 +1,5 @@
<!--
-SPDX-FileCopyrightText: 2015,2021 Robin Schneider <ypid@riseup.net>
+SPDX-FileCopyrightText: 2015,2017-2022 Robin Schneider <ypid@riseup.net>
SPDX-License-Identifier: LPPL-1.3c
diff --git a/macros/latex/contrib/doclicense/doclicense-ukrainian.ldf b/macros/latex/contrib/doclicense/doclicense-ukrainian.ldf
new file mode 100644
index 0000000000..a1936b0acc
--- /dev/null
+++ b/macros/latex/contrib/doclicense/doclicense-ukrainian.ldf
@@ -0,0 +1,30 @@
+% SPDX-FileCopyrightText: 2022 Boris Veytsman <borisv@lk.net>
+%
+% SPDX-License-Identifier: LPPL-1.3c
+%
+% This work consists of all files listed in manifest.txt.
+% For more details about the licensing, refer to the README.md file.
+
+\ProvidesFile{doclicense-ukrainian.ldf}
+
+\@namedef{doclicense@lang@thisDoc}{Цей матеріал доступний на умовах ліцензії}%
+\@namedef{doclicense@lang@word@license}{}%
+
+\@namedef{doclicense@lang@lic@CC@code}{uk}%
+% Using: https://en.wikipedia.org/wiki/ISO_639-1
+
+\@namedef{doclicense@lang@lic@CC@zero@1.0}{CC0 1.0 Універсальна}%
+
+\@namedef{doclicense@lang@lic@CC@by@3.0}{Attribution (Із Зазначенням Авторства) 3.0 Непортована Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-sa@3.0}{Attribution-ShareAlike (Із Зазначенням Авторства---Поширення На Тих Самих Умовах) 3.0 Непортована Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-nd@3.0}{Attribution-NoDerivs (Із Зазначенням Авторства---Без Похідних) 3.0 Непортована Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-nc@3.0}{Attribution-NonCommercial (Із Зазначенням Авторства---Некомерційна) 3.0 Непортована Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-nc-sa@3.0}{Attribution-NonCommercial-ShareAlike (Із Зазначенням Авторства---Некомерційна---Поширення На Тих Самих Умовах) 3.0 Непортована Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-nc-nd@3.0}{Attribution-NonCommercial-NoDerivs (Із Зазначенням Авторства---Некомерційна---Без Похідних) 3.0 Непортована Публічна Ліцензія}%
+
+\@namedef{doclicense@lang@lic@CC@by@4.0}{Attribution (Із Зазначенням Авторства) 4.0 Міжнародна Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-sa@4.0}{Attribution-ShareAlike (Із Зазначенням Авторства---Поширення На Тих Самих Умовах) 4.0 Міжнародна Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-nd@4.0}{Attribution-NoDerivs (Із Зазначенням Авторства---Без Похідних) 4.0 Міжнародна Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-nc@4.0}{Attribution-NonCommercial (Із Зазначенням Авторства---Некомерційна) 4.0 Міжнародна Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-nc-sa@4.0}{Attribution-NonCommercial-ShareAlike (Із Зазначенням Авторства---Некомерційна---Поширення На Тих Самих Умовах) 4.0 Міжнародна Публічна Ліцензія}%
+\@namedef{doclicense@lang@lic@CC@by-nc-nd@4.0}{Attribution-NonCommercial-NoDerivs (Із Зазначенням Авторства---Некомерційна---Без Похідних) 4.0 Міжнародна Публічна Ліцензія}%
diff --git a/macros/latex/contrib/doclicense/doclicense.dtx b/macros/latex/contrib/doclicense/doclicense.dtx
index f858db9c8d..e0dddf762a 100644
--- a/macros/latex/contrib/doclicense/doclicense.dtx
+++ b/macros/latex/contrib/doclicense/doclicense.dtx
@@ -24,7 +24,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1998/12/01]
%<package>\ProvidesPackage{doclicense}
%<*package>
- [2022/04/27 v3.1.0 Support for putting documents under a license]
+ [2022/05/18 v3.2.0 Support for putting documents under a license]
%</package>
%
%<*driver>
@@ -138,6 +138,7 @@ corresponds to \PackageName\nobreakspace\fileversion, dated \printdateTeX{\filed
% \changes{2.3.0}{2021/03/13}{Add option to disable the use of hyperxmp and add compatibility for pdfx. Use \url{https://reuse.software/} for the doclicense source code itself.}
% \changes{3.0.0}{2021/07/11}{Breaking change: Hard require package options "type", "modifier" and "version" now after one year in soft require migration period. Add Croatian translation. Add sections to docs about choosing a license and the REUSE specification. Update Spanish translation to match Creative Commons website. Add note to README that CC license texts and images are licensed themselves under CC0-1.0. Load csquotes after hyperref to avoid hyperref warning. Do not load the hyperxmp package if the silence package is loaded to avoid an endless loop. Improve warning messages generated by the package. Add "Dependency packages and load order" section to docs.}
% \changes{3.1.0}{2022/04/27}{Add macro \cmd{\doclicenseLongTextForHyperref} and use it inside \cmd{\hypersetup} to replace the fagile code that was previously used. Add Traditional Chinese (Taiwan), Swedish and Esperanto translations.}
+% \changes{3.2.0}{2022/05/18}{Add Ukrainian translation.}
%
%
%
@@ -288,6 +289,7 @@ corresponds to \PackageName\nobreakspace\fileversion, dated \printdateTeX{\filed
% \item Russian
% \item Spanish
% \item Swedish
+% \item Ukrainian
% \end{itemize}
%
% Image position for \cmd{\doclicenseThis}: right (default) or left.
diff --git a/macros/latex/contrib/doclicense/doclicense.pdf b/macros/latex/contrib/doclicense/doclicense.pdf
index 07310c4324..7caa7b0c80 100644
--- a/macros/latex/contrib/doclicense/doclicense.pdf
+++ b/macros/latex/contrib/doclicense/doclicense.pdf
Binary files differ
diff --git a/macros/latex/contrib/doclicense/manifest.txt b/macros/latex/contrib/doclicense/manifest.txt
index 247db4fe0d..b634e01997 100644
--- a/macros/latex/contrib/doclicense/manifest.txt
+++ b/macros/latex/contrib/doclicense/manifest.txt
@@ -21,6 +21,7 @@ doclicense/doclicense-chinese-utf8.ldf
doclicense/doclicense-croatian.ldf
doclicense/doclicense.dtx
doclicense/doclicense-english.ldf
+doclicense/doclicense-esperanto.ldf
doclicense/doclicense-french.ldf
doclicense/doclicense-galician.ldf
doclicense/doclicense-german.ldf
@@ -34,7 +35,9 @@ doclicense/doclicense-polish.ldf
doclicense/doclicense-portuguese.ldf
doclicense/doclicense-russian.ldf
doclicense/doclicense-spanish.ldf
+doclicense/doclicense-swedish.ldf
doclicense/doclicense-UKenglish.ldf
+doclicense/doclicense-ukrainian.ldf
doclicense/doclicense-USenglish.ldf
doclicense/images/doclicense-CC-by-80x15.eps
doclicense/images/doclicense-CC-by-80x15.pdf
diff --git a/macros/latex/contrib/fancyhdr/README b/macros/latex/contrib/fancyhdr/README
index e44d05f032..87b7370185 100644
--- a/macros/latex/contrib/fancyhdr/README
+++ b/macros/latex/contrib/fancyhdr/README
@@ -25,7 +25,7 @@ In order to latex the documentation you need to have a copy of
boxedminipage.sty (CTAN:/macros/latex/contrib/boxedminipage) and
refcount.sty (CTAN:/macros/latex/contrib/oberdiek/) installed.
-This is version 4.0.2 of fancyhdr.sty and extramarks.sty. They are
+This is version 4.0.3 of fancyhdr.sty and extramarks.sty. They are
described in the forthcoming third edition of The LaTeX Companion.
Extramarks.sty has not been changed, except for the version and
copyright information.
diff --git a/macros/latex/contrib/fancyhdr/fancyhdr.dtx b/macros/latex/contrib/fancyhdr/fancyhdr.dtx
index 41e7ebb598..9c7a90992e 100644
--- a/macros/latex/contrib/fancyhdr/fancyhdr.dtx
+++ b/macros/latex/contrib/fancyhdr/fancyhdr.dtx
@@ -26,7 +26,7 @@
%<fancyhdr>\ProvidesPackage{fancyhdr}%
%<fancyheadings>\ProvidesPackage{fancyheadings}
%<extramarks>\ProvidesPackage{extramarks}
-%<fancyhdr|fancyheadings|extramarks> [2022/05/10 v4.0.2
+%<fancyhdr|fancyheadings|extramarks> [2022/05/18 v4.0.3
%<fancyhdr> Extensive control of page headers and footers]%
%<fancyheadings> Legacy package to call fancyhdr]
%<extramarks> Extra marks for LaTeX]
@@ -2993,6 +2993,11 @@
% \item Miscellaneous small documentation changes.
% \item Make \cs{fancyhead} etc. \cs{long}.
% \end{itemize}
+% \item Version 4.0.3, May 18, 2022
+% \begin{itemize}
+% \item Initialize \cs{@mkboth} in \texttt{extramarks.sty} so that
+% it will pick up changes to \cs{markboth}.
+% \end{itemize}
% \end{itemize}
%
%
@@ -3490,6 +3495,10 @@
% The redefinition of the \texttt{headings} style also differs for
% book-like and article-like classes. It also differs for
% one-side and two-side modes.
+% \changes{fancyhdr v4.0.3}{2022/05/18}{Changed definition of
+% \cs{@mkboth} from \cs{let}\cs{@mkboth}\cs{markboth} to
+% \cs{def}\Cmd{@mkboth\{\cs{protect}\cs{markboth}\}} so that it will pick up changes
+% to \cs{markboth}}
% \begin{macrocode}
\DeclareOption{headings}{%
\f@nch@ifundefined{chapter}{%
@@ -3497,7 +3506,7 @@
% \end{macrocode}
% An article in two-side mode:
% \begin{macrocode}
- \def\ps@headings{\ps@f@nch@fancyproto \let\@mkboth\markboth
+ \def\ps@headings{\ps@f@nch@fancyproto \def\@mkboth{\protect\markboth}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}%
\fancyhead[RE]{\slshape\leftmark}%
@@ -3513,7 +3522,7 @@
% \end{macrocode}
% An article in one-side mode:
% \begin{macrocode}
- \def\ps@headings{\ps@f@nch@fancyproto \let\@mkboth\markboth
+ \def\ps@headings{\ps@f@nch@fancyproto \def\@mkboth{\protect\markboth}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}%
\fancyhead[RE]{\slshape\leftmark}%
@@ -3528,7 +3537,7 @@
% \end{macrocode}
% A book in two-side mode:
% \begin{macrocode}
- \def\ps@headings{\ps@f@nch@fancyproto \let\@mkboth\markboth
+ \def\ps@headings{\ps@f@nch@fancyproto \def\@mkboth{\protect\markboth}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}%
\fancyhead[RE]{\slshape\leftmark}%
@@ -3545,7 +3554,7 @@
% \end{macrocode}
% A book in one-side mode:
% \begin{macrocode}
- \def\ps@headings{\ps@f@nch@fancyproto \let\@mkboth\markboth
+ \def\ps@headings{\ps@f@nch@fancyproto \def\@mkboth{\protect\markboth}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}%
\fancyhead[RE]{\slshape\leftmark}%
@@ -4606,6 +4615,17 @@
\if@nobreak\ifvmode\nobreak\fi\fi}
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\@mkboth}
+% Initialization of \cs{@mkboth}, so that it will pick up changes to
+% \cs{markboth}
+% \changes{extramarks v4.0.3}{2022/05/18}{Initialize definition of
+% \cs{@mkboth} to \cs{def}\Cmd{@mkboth\{\cs{protect}\cs{markboth}\}}
+% if it wasn't equal to \cs{@gobbletwo} so that it will pick up
+% changes to \cs{markboth}}
+% \begin{macrocode}
+\ifx\@mkboth\@gobbletwo\else\def\@mkboth{\protect\markboth}\fi
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\markright}
% We use the standard definition of \cs{markright}. No use to duplicate here.
% \end{macro}
diff --git a/macros/latex/contrib/fancyhdr/fancyhdr.pdf b/macros/latex/contrib/fancyhdr/fancyhdr.pdf
index 2138e986d7..174d358eff 100644
--- a/macros/latex/contrib/fancyhdr/fancyhdr.pdf
+++ b/macros/latex/contrib/fancyhdr/fancyhdr.pdf
Binary files differ
diff --git a/macros/latex/contrib/media4svg/ChangeLog b/macros/latex/contrib/media4svg/ChangeLog
index d07906419e..9f427a00d5 100644
--- a/macros/latex/contrib/media4svg/ChangeLog
+++ b/macros/latex/contrib/media4svg/ChangeLog
@@ -1,3 +1,7 @@
+2022-05-18
+ * v0.7
+ * fix: let PgUp/PgDown events propagate to parent
+
2021-10-19
* v0.6
* fix: non-conforming SVG id attribute values
diff --git a/macros/latex/contrib/media4svg/README.md b/macros/latex/contrib/media4svg/README.md
index 3bbbcc9183..cf5686653d 100644
--- a/macros/latex/contrib/media4svg/README.md
+++ b/macros/latex/contrib/media4svg/README.md
@@ -1,6 +1,6 @@
# The `media4svg` LaTeX Package
-Version 0.6, 2021/10/19
+Version 0.7, 2022/05/18
© 2020--today, Alexander Grahn
@@ -169,5 +169,5 @@ Scales the media display by `<factor>`.
## License
-This material is subject to the [LaTeX Project Public License](http://mirrors.ctan.org/macros/latex/base/lppl.txt).
+This material is subject to the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt).
diff --git a/macros/latex/contrib/media4svg/example/beamer-example-1.svg b/macros/latex/contrib/media4svg/example/beamer-example-1.svg
index 954b178bf9..bf5f1909ce 100644
--- a/macros/latex/contrib/media4svg/example/beamer-example-1.svg
+++ b/macros/latex/contrib/media4svg/example/beamer-example-1.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 2.11.1 -->
+<!-- This file was generated by dvisvgm 2.13.3 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='-72 -72 453.543293 255.118107'>
<defs>
<script type='text/javascript'>
@@ -9,13 +9,13 @@ function $(id) {return document.getElementById("msvg_"+id.toString().trim());};
</script>
</defs>
<style type='text/css'>
-<![CDATA[@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKUAA0AAAAABcAAAAJAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCEQdDG58EAC4KY2NlvHeub+wv1e4QNIngebv/qnO7+w2g/j8aPo0Ri06lBcNRtEK+jjYdZUtESrCw0f4fgB8M22B66walCYrLwE25oisY53ov/oPRJ8wk3Xugm8BEZqgzd4SSZNQ2O1Tx+vr+JQR8/e6TF+Dx7fWd2v7IdsV1Beli+hiX3b/jxDONSCRFOwC6AmD+1rmb+dVr1/+zMms15jwByJBhoABTZAID5UrkcsGvwa/osgCiQgAiIQEAQntvSzqB+J8ECtAeFczDYkCOqgSSlOeDI9Ydik750vyJ9puef82lXS49bFx4MJ2XPf+60567eJtvn2fLnUs/fdftV1nS+eK9OH9/uyy+/QpTTc225y+4FXrplJaX2r30TfnJ8k/+u3hcefz900bPBz2ncamh0n39h4+HfnXy1GOPBeuryHfoGyDc40P8wx6UmcEo0NSQ8x6CN0Jtypttcj8136gUj1Q4S5QJzMCCAtiV+KdA8cuBYPL3Xy5f12XKX207ZN/u5XP9/2W2K2tFWwkEWStZVoYEJHIAcl71lsTyr0CgMEQCCSEwQxXQ1lYBkja6CpAprRSg0MEtASoyd2UibyfpjE5kZuhLFHo79VhFxesW2mKbI3bb4CB/G5syzz57HZZfPWibLUpNVXWlSUp7bfVNw0SjCKgDzbapwaeSFN88uG1L2azWy0nl3q2+05g4qlEfdZtustQWBx2yw3LLUkNVnZeaolGtW0o2wRrS8dxdIKRIkbXfcPDgvmPXk9ZBZZ9T) format('woff2');}
-@font-face{font-family:ec-lmtt9;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:ec-lmr9;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:ec-lmss8;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAATMAA0AAAAACOwAAAR2AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwoIBBEICodQhhkLHAABNgIkAzIEIAWCKQc8GzEHIB6FcbPzoNLEd6YsOhz5T+9Vf24F053qLJkeIQM7GWlB8BN+BM/zf8P73+8kYR5RoGmAJUWBLBzoCAYygvEm8vsfQLrr/52quW+hBI9iY1nEErIAjY61bQ1qariISsunQAtS8AnUV6YaVrdhCK/+oAvqTAng/PC9ABAAj46+XQ4AbxbXqHM3JY/mQwL2ZKcAzCp1+vJHaYBlK5gidwbytuQGAP7612b/eynLUdxxiwh3pIMRTQ5S/RKIugNaaUIg85ckRZ5itbropq/+TYDejTvvnKMO2mazTdZYHWEF9QAxQgHA6BBtASOSkDLKgRoWgJXil3A2fDl7RgCgJgYAVADQDuAMNAG0AwAAEaBjAIARz6JIFk0qNCbrUWhEnNY1ozakUAtyIA+yUaM22ZhU4pIqGhMrKimHb398OQjPMpkC9ZrwVLGJ6qxnZIx/rCgSn/UEw4qxwAU1QJfP2sK5V4ELvIECQqNfVZhenPmU5OATPKEKznhmUfGz+gPgMQcBDZvg6/iw4+S8SxNM1N8Je/08aNCIITDUAtumZ/Un9kFGT7U46dCO3o3xPtSc9YwmKNY2TWh9gqt5vdUEsR5cNP6+GT+kCY+GH6D08XjmUzp72aplxzifBbVOUGYWkcI4TXjGZ53YswJsqJ/wdBBi9MFexmZ6niS6tJ8/z/6yrHynXS25ql+NndK11av8jsb4WIOC/pkS24CLRYvO3JnW4WiHaWeuzq3FlEVLeq6LW9dr4dqpCDhSHh7qEh6XEPfzLLm/fBY9/wXzhvdqdLRLx/11C4YXl8fW5RmLtEVFDblxGPq7bd6p6t6QmlLfUHm3y+3e6xb27bNyYW8c1jK7VGeauZ5SWnZgoUtKsHseG9WqJMJbj86P6hvn61pkzNGdm/l51nWIeWL1x7GXPc9NyrF7lI+eUVM7ZUZdWY6vlJIeVBJfUklJabfE3zPCPTzTAu6C3TzRyOnY5G1IWl1NQpjnRT+v8fEuceHTcy5Pzwmf87IyMqjJuNeB+C6/baFivFvgiargGlfPQH9hqKp750qPif2aO4vWyd9trWvmxOGB+9qFlTGZ6XmXzJ/DA81g58dSSFO7if/frmJGWreMcL+iseaPH/LzBk2tM9PKq6Jdj7btfPlwQlRBdQIA4ADBdz7oIOJrwAFZeq2RAjMREEAy8bxM/wygpwYBCNj1x5DqxlG/Wrjw/ln5ITq1wFzKUQAWDAAQsPf/gcryfwDYB+GDbKUX7ADQArARFfm/utSgNtsgEi8c5T+Eluec4NvpFBcUKkYAVQoZADAAIUAcHQAAFl0RAGAkNgQABC6qEACQcKtBAEBmcRIC6qxgFFBZQYZmrKSVyefKmtiO3voYZJAw6H0OGhQGpOinr8F0v4G66UITQOdHE0HTRT2fpR6A9hduCcgPBbQD+MPvumZdPbBbFy1A99MitC71Pnksbcw/3Mffz+e1rgAYV2egQXokL2n8E0bwdT3bX/dD4ijCLQEwvE4FEKYFNx4C108nSZMhXyEAAA==) format('woff2');}
-@font-face{font-family:ec-lmr10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:ec-lmss9;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAJMAA0AAAAABVgAAAH3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkoIBBEICoE8gTMLDAABNgIkAxQEIAWCKQcsG10EERWbZyC+PKDHbjUSGQ97GhVe1JV+cYX+ZjNlyBPJSN6Ph3/Wvt33ZuavSsI1qUjmkM2jlsL+Bo0QJVoTi9sEdbpcZ94hHW2/7ntHGYIqrL6HCVj1lMa1senj258ylLbxf+yMuyhLJKNQfix+BjYc4keUzp9X5+kmMsY5N716ghFMXPkUETQJAR//+hy+dLItxiOnxjMVeT/f4SEeF99YJKkqAAQA7Dy/7izmW190/z8czjoIQIECowRYqxAYpTQNNaWQ5lv/H1z//yEBEDUCEIkUgBN4hX8uoeTxeQPxX4IKNKOGiZgBKDFHgpRl2Rat0VK1lftbqua2aK6aPzV7uCWbtV2P1rKlKLl7X8v4l40vv49z0JyXO9+3euVNnR9h466uf18/uWjBqgWDE/7GHvAmzF060FD6p1r1mZEihQIFVEIPtRjqOL4cCCbtGPhEx9LBxpbixy4sYTw5PutolCDIOg7nNsjxAgBQxRXjIbaRWfyGEwKVdgkSIbDSHECj8wKkSqsAhcmOC1Bp8VqAmkZvFaJskpqhrLBZN6v0u7W1Ruj0u9xKCbh6rSqA9V6PL72wLYlcp2igNImpVqAmZIIUee0MvjqKlt8r6V05mFN8JGtYiKlciTlgv7SV07wiM3R4mbRbVxh7LDcASKOqOMCpVwMA) format('woff2');}
-@font-face{font-family:ec-lmr12;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+<![CDATA[@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKcAA0AAAAABbwAAAJHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCDgdDG5wEUVQNdiB+HsbGtKZLiGI0ib7c/s9usvua4gkRT+KB//1w970vE5PTB3RNq4hZYw28inoy63iizhoqyeCBv+b7YQdyGL1OGmBbRIJu/T8AP7jAwgbOOd4oUmA810yMtrBZEc9kGvUC/QUuckP97iKUlq7HzDY+V0peQoDXdwePwOC1vkJZFsmasEdG3BYfY4f5d5wwLB8kUVYEQCUATFzeW8BX35r/MzvpVtpCACRI0EqA0ZSAVlonpFKBr+ErKs4LQMgJgBARAQBBeW9X/EL4TwQZKEaOXpgKkKKHBFFM01J78GVJVpZOD58oXnL4VP2g4n89hK3XistnHD5d3zm0rXZxYEvd8uD2hu6aAyfr+uW/K2y5WlIx9cCJujanWh/eWr+SPNvqOlZ07I31ZOaTzO9sIB94PzSq9lptB2l5im9qXx+IXq1bPxAMYO9VlGJ9b+Tgmof4wxqOK4gYgTCncew6uBGMaN0sSH0q3MizfgpOIscBEzDj+H4e/kQo/HJAIPs0YdmCitavwpLk7VQ+qsf/l8mapBsKRRBIupNn4gpQYQtAT7Ntg4i+AgGZDhJEBAHjZQAKLSdAVKCSAIkOIwJkSuwRQC5xQSKkRaJySCYxlslk6n0ey+VOmGxp7elg6obPxobQ6+zkUX31Zm3JUpCRY2mwnKxsM68mrYzoglxYwDtJYPK2XlqFTM5qWKcV1Plaupw+SudguqWbu62zUzdC9zYXGi2vaDOMjvoYiEtzPkMQQwxJ8aK1t/P7aLIMStyjAAA=) format('woff2');}
+@font-face{font-family:ec-lmtt9;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:ec-lmr10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:ec-lmss9;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAJEAA0AAAAABVQAAAHvAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkoIBBEICoE8gTMLDAABNgIkAxQEIAWCJgcsG1oEIB4H1e0dxldMkX/YYqLi4fl1z//aZ2buI5LmPuHq0W5KUER3E9oPEVENiq8pjWtj89/XZ/G0nFKxAjUqyt25/MCm+Iiq83N1Xt1Exjht1/5Xl1g79iEpkxDw09vf7sNvz8+0cjzS0LinIF1Pn3ATj4vfNSORFBmAAICV++ftRdP8rPv3kTanVyAAGTL0EWCuTKCP3DBU5ELSNP87cP37jxYAUSEAkZAk4ARe5p9zcLmaLiG+k0AB2qOCgRgByFGTQJLyvFN0jA5Fp3x9h6J9p2hftP+5vZtLUnudLkTHvENWcve6DtWHbR/+Udqo9vTL+3vNnnmtFfu/XW6d8uj8H17tnDRh1oTPA/6LNeBFqE992Sb3f6tK8QsjWRIKZFAIvajEl8Dx5UBQvVt7vqPL1M9tO2R/7kIXqqRqeoW2EgjSK2xOyyBVBQCgiCOqEMtIqfgNOwQKnSWQEAIz1QBt7RcgKXQUIDPIVgEKHTwQoKKtdzKRt5O0h7LMQt1ZobcrWyu6euSoY844YxJHj505M4n5Tjju7PDCaQfsU2qpaShNVtpnj9GmegJtmhiN62hLo2rx0RHZTx/YV7ZqjXJyuW/PaBfJmubE0eNGX4g21tvntDMOOdelplvmWdLerDW45lYbQNLqgtNb9TQcAA==) format('woff2');}
+@font-face{font-family:ec-lmss8;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAATIAA0AAAAACOgAAAR0AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwoIBBEICodQhhkLHAABNgIkAzIEIAWCJgc8Gy4HIB6HsWP6gWRcq0JHhiV4nv827dw3MySZgaqSpKJE3CFm1IyueKgYa6I10b8VsRDFrrlNNeOowEs0APsXqf8BpLv+/anBf89CuW+fYmNZxFKyAo016NfWoKaGiyi0vAt73hJOoF6ZaljzRhmp18u07dYmeP/8XoAAnFl//UmA62/7oqe/qEp5EAPUWrUFCBQ/uSGqFCgMDWBOuDNUjrxuIMqiNqB3qsas55hbXlvyo4xoxVeBAKPozAJD9KNhI0qufJXqdPCaaYFFT0Dvxu20w3ofe8OrXvGcZxNYJzYQghEFKAII5hq8jgFrgwvCSDAQgskvsbDD1wvNbYD0SgHgAGAEGAcZAzITANABFwWAQr86OjYxRO2+ElLbfcQipwEyTEwZJEEyWezSpy33FYdYhkN3T2I6xDz8zbN7Y7lQokwcPv950647AhfE3XPWNA0rcI5byti2NEeAkRV4zbK82pZmNTBB6y5sptI7686LnDmHlx2aM1lXW3eBnoKznAGa9WC5exI3kvW4+D10nez3/eJoxh1D5nZU21+5QM+F+ty9OmizwyDtXXqmUy9wQfymdSD+oZssteUa4hdpXG3PSTM5Lf4zs6do2GfXnaezn3jmiQ2WFcCh+c11tWIqS/wXrMCm955CWV3+8wPphVNnWVg3ZbPInvP8eaE3+OnPnfvr97v2Z6ycMeRK1Wh3T4ZbYv9dmdHN7tpHth1bPWr9qNXb9t/fwcpHHpvzQuYLcx9+fhXRM//0J96kzOzMXwK2RbbtzPmrH7h1bp/13tEfdj50a11TRmel+xHnI7XdFZnc/B31HGud1V2Q39Xdctx7dN4LDy+Y//TD8/jUWeJtK/FUTDEKy2JqxufHTapUdwypT57mSqtKXZAZMaHWfZ9r3IDIKZ2j0s+FRLHh8pwdy8tDJzfduba9Y+XazsbyCCO/KLY+q75FcguP6H8UJ02eUhh9HOW3ctzlo/tdjy/sbM9OnLI7cmpP1vjMpDXle9eUJ913uSUltt89V2Nwv8g3EvSsiTGbWuPaJ0yJiRJmWmeNbZm8rN/yWD1kxQ/2oe33ZXJq0vMPt6SXFFXu8fySFOOJG3fWiO8f6qH3+prXFs4sToqsvdvz05dVlb5VnZ7Cpta0CeuHj937aXZqdVs2AB8JEf3jIJ3voj+yGVc1VlMhBDQwQnjLJv8OkKdGAAH55OYxbX1Tfwu2tC+elR9izIvJnqwHglEACKj1vTEa0xug9hD4ILvMJRQgZaAG0pzeOtNOR95ARJcs9T8JdVE4fPkxGU+NOgI4yGcDQAGCAJlcACCYGQQaNrDbAGiM00zVY2DxFP42gtmAhughKEwoejQKDSAYDOE/10Y/rzHPfD4+iZi3fL5EyLfQAkvF+y0xk5dTNJdITsmcvLpM3xoHcJTEdNyCo0V2ovGzLmO/ZKbXGe2KdCY7vV3Ts4S1QVTi9LjpL3VtcN/DJXxmZw7HysiW59N6fZQrkqwFou0ACnZyAIJikIkmi9m/mqtQsSo1) format('woff2');}
+@font-face{font-family:ec-lmr12;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:ec-lmr9;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
text.f4 {font-family:ec-lmtt9;font-size:8.966376px}
text.f5 {font-family:ec-lmss8;font-size:7.471995px}
text.f6 {font-family:ec-lmss9;font-size:8.966376px}
@@ -33,27 +33,9 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</script>
</defs>
<rect x='-71.999989' y='-71.999989' height='255.118106' width='453.543292' fill='#fff'/>
-<text class='f8' x='20.991396' y='-35.844009'>
-<tspan fill='#3333b3'>Presen</tspan>
-<tspan fill='#3333b3' x='61.452587'>tation</tspan>
-<tspan fill='#3333b3' x='102.814193'>example</tspan>
-<tspan fill='#3333b3' x='157.83318'>with</tspan>
-<tspan fill='#3333b3' x='189.829895'>em</tspan>
-<tspan fill='#3333b3' x='207.389171'>b</tspan>
-<tspan fill='#3333b3' x='215.583696'>edded</tspan>
-<tspan fill='#3333b3' x='256.164999'>video</tspan>
-</text>
-<text class='f10' x='73.348038' y='-18.783033'>
-<tspan fill='#3333b3'>Use</tspan>
-<tspan fill='#3333b3' x='94.317851'>a</tspan>
-<tspan fill='#3333b3' x='103.408752'>W</tspan>
-<tspan fill='#3333b3' x='113.712012'>eb</tspan>
-<tspan fill='#3333b3' x='128.257457'>bro</tspan>
-<tspan fill='#3333b3' x='143.742227'>wser</tspan>
-<tspan fill='#3333b3' x='168.681506'>and</tspan>
-<tspan fill='#3333b3' x='189.893486'>press</tspan>
-</text>
-<g stroke-miterlimit='10' transform='translate(226.756681,-22.364391)scale(0.996264,-0.996264)'>
+<text class='f8' x='20.991396' y='-36.786748'><tspan fill='#3333b3'>Presen</tspan><tspan fill='#3333b3' x='61.452587'>tation</tspan><tspan fill='#3333b3' x='102.814193'>example</tspan><tspan fill='#3333b3' x='157.83318'>with</tspan><tspan fill='#3333b3' x='189.829895'>em</tspan><tspan fill='#3333b3' x='207.389171'>b</tspan><tspan fill='#3333b3' x='215.583696'>edded</tspan><tspan fill='#3333b3' x='256.164999'>video</tspan></text>
+<text class='f10' x='73.348038' y='-19.725772'><tspan fill='#3333b3'>Use</tspan><tspan fill='#3333b3' x='94.317851'>a</tspan><tspan fill='#3333b3' x='103.408752'>W</tspan><tspan fill='#3333b3' x='113.712012'>eb</tspan><tspan fill='#3333b3' x='128.257457'>bro</tspan><tspan fill='#3333b3' x='143.742227'>wser</tspan><tspan fill='#3333b3' x='168.681506'>and</tspan><tspan fill='#3333b3' x='189.893486'>press</tspan></text>
+<g stroke-miterlimit='10' transform='translate(226.756681,-23.30713)scale(0.996264,-0.996264)'>
<g fill='#3333b3' stroke='#3333b3'>
<g stroke-width='0.4'>
<g stroke='#4c4c4c'>
@@ -64,11 +46,11 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
<g transform='translate(-7.27423,-2.6519)'>
-<g stroke='none' transform='scale(-1.00375,1.00375)translate(226.756681,-22.364391)scale(-1,-1)'>
+<g stroke='none' transform='scale(-1.00375,1.00375)translate(226.756681,-23.30713)scale(-1,-1)'>
<g fill='#000'>
<g stroke='none'>
<g fill='black'>
-<text class='f6' x='226.756681' y='-22.364391'>F11</text>
+<text class='f6' x='226.756681' y='-23.30713'>F11</text>
</g>
</g>
</g>
@@ -79,16 +61,10 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='139.582264' y='19.125226'>AlexG<tspan x='110.362401' y='60.513188'>19th</tspan>
-<tspan x='135.210939'>Octob</tspan>
-<tspan x='164.60524'>er</tspan>
-<tspan x='177.362879'>2021</tspan>
-</text>
-<rect x='-43.653545' y='86.37709' height='.3985' width='119.056331'/>
-<text class='f7' x='-43.653545' y='101.595001'>Na<tspan x='-32.391712'>vigate</tspan>
-<tspan x='-4.998105'>with</tspan>
-</text>
-<g stroke-miterlimit='10' transform='translate(31.040003,98.651389)scale(0.996264,-0.996264)'>
+<text class='f10' x='139.582264' y='18.182487'>AlexG<tspan x='119.165328' y='59.570449'>18th</tspan><tspan x='144.013865'>Ma</tspan><tspan x='159.165727'>y</tspan><tspan x='168.559897'>2022</tspan></text>
+<rect x='-43.653545' y='87.08414' height='.3985' width='119.056331'/>
+<text class='f7' x='-43.653545' y='102.302052'>Na<tspan x='-32.391712'>vigate</tspan><tspan x='-4.998105'>with</tspan></text>
+<g stroke-miterlimit='10' transform='translate(31.040003,99.358439)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
<g stroke='#4c4c4c'>
@@ -99,12 +75,11 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
<g transform='translate(-12.90393,-2.17967)'>
-<g stroke='none' transform='scale(-1.00375,1.00375)translate(31.040003,98.651389)scale(-1,-1)'>
+<g stroke='none' transform='scale(-1.00375,1.00375)translate(31.040003,99.358439)scale(-1,-1)'>
<g fill='#000'>
<g stroke='none'>
<g fill='black'>
-<text class='f5' x='31.040003' y='98.651389'>P<tspan x='35.891707'>ageUp</tspan>
-</text>
+<text class='f5' x='31.040003' y='99.358439'>P<tspan x='35.891707'>ageUp</tspan></text>
</g>
</g>
</g>
@@ -115,8 +90,8 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f7' x='49.159296' y='101.595001'>&amp;</text>
-<g stroke-miterlimit='10' transform='translate(74.588879,98.651389)scale(0.996264,-0.996264)'>
+<text class='f7' x='49.159296' y='102.302052'>&amp;</text>
+<g stroke-miterlimit='10' transform='translate(74.588879,99.358439)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
<g stroke='#4c4c4c'>
@@ -127,12 +102,11 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
<g transform='translate(-13.04713,-2.17967)'>
-<g stroke='none' transform='scale(-1.00375,1.00375)translate(74.588879,98.651389)scale(-1,-1)'>
+<g stroke='none' transform='scale(-1.00375,1.00375)translate(74.588879,99.358439)scale(-1,-1)'>
<g fill='#000'>
<g stroke='none'>
<g fill='black'>
-<text class='f5' x='74.588879' y='98.651389'>P<tspan x='79.440584'>ageDn</tspan>
-</text>
+<text class='f5' x='74.588879' y='99.358439'>P<tspan x='79.440584'>ageDn</tspan></text>
</g>
</g>
</g>
@@ -143,12 +117,8 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f7' x='89.779047' y='101.595001'>,<tspan x='95.410746'>toggle</tspan>
-<tspan x='122.548311'>F</tspan>
-<tspan x='127.795308'>ull-Screen</tspan>
-<tspan x='170.31652'>with</tspan>
-</text>
-<g stroke-miterlimit='10' transform='translate(199.738462,98.651389)scale(0.996264,-0.996264)'>
+<text class='f7' x='89.779047' y='102.302052'>,<tspan x='95.410746'>toggle</tspan><tspan x='122.548311'>F</tspan><tspan x='127.795308'>ull-Screen</tspan><tspan x='170.31652'>with</tspan></text>
+<g stroke-miterlimit='10' transform='translate(199.738462,99.358439)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
<g stroke='#4c4c4c'>
@@ -159,11 +129,11 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
<g transform='translate(-6.26295,-2.17967)'>
-<g stroke='none' transform='scale(-1.00375,1.00375)translate(199.738462,98.651389)scale(-1,-1)'>
+<g stroke='none' transform='scale(-1.00375,1.00375)translate(199.738462,99.358439)scale(-1,-1)'>
<g fill='#000'>
<g stroke='none'>
<g fill='black'>
-<text class='f5' x='199.738462' y='98.651389'>F11</text>
+<text class='f5' x='199.738462' y='99.358439'>F11</text>
</g>
</g>
</g>
@@ -174,37 +144,12 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f7' x='208.169796' y='101.595001'>.<tspan x='-43.653545' y='120.274921'>T</tspan>
-<tspan x='-37.765957'>o</tspan>
-<tspan x='-30.086438'>build</tspan>
-<tspan x='-6.535404'>this</tspan>
-<tspan x='11.434699'>presen</tspan>
-<tspan x='36.856103'>tation</tspan>
-<tspan x='63.990187'>from</tspan>
-<tspan x='85.769155'>the</tspan>
-<tspan x='101.643449'>source,</tspan>
-<tspan x='132.436952'>run:</tspan>
-</text>
-<text class='f4' x='-43.653545' y='132.479186'>dvilualatex<tspan x='12.834672'>beamer-example</tspan>
-<tspan x='-43.653545' y='143.43809'>dvilualatex</tspan>
-<tspan x='12.834672'>beamer-example</tspan>
-<tspan x='-43.653545' y='154.396994'>dvisvgm</tspan>
-<tspan x='-5.994738'>--bbox=papersize</tspan>
-<tspan x='74.030241'>--font-format=woff2</tspan>
-<tspan x='168.177279'>--zoom=-1</tspan>
-<tspan x='215.25079'>--page=-</tspan>
-<tspan x='257.616949'>--output=%f-%0p.svg</tspan>
-<tspan x='351.763986'>\</tspan>
-<tspan x='281.1528' y='165.355898'>beamer-example</tspan>
-</text>
-<text class='f9' x='357.755493' y='-60.858816'>
-<tspan fill='#bfbfbf'></tspan>
-</text>
+<text class='f7' x='208.169796' y='102.302052'>.<tspan x='-43.653545' y='120.981971'>T</tspan><tspan x='-37.765957'>o</tspan><tspan x='-30.086438'>build</tspan><tspan x='-6.535404'>this</tspan><tspan x='11.434699'>presen</tspan><tspan x='36.856103'>tation</tspan><tspan x='63.990187'>from</tspan><tspan x='85.769155'>the</tspan><tspan x='101.643449'>source,</tspan><tspan x='132.436952'>run:</tspan></text>
+<text class='f4' x='-43.653545' y='133.186236'>dvilualatex<tspan x='12.834672'>beamer-example</tspan><tspan x='-43.653545' y='144.14514'>dvilualatex</tspan><tspan x='12.834672'>beamer-example</tspan><tspan x='-43.653545' y='155.104044'>dvisvgm</tspan><tspan x='-5.994738'>--bbox=papersize</tspan><tspan x='74.030241'>--font-format=woff2</tspan><tspan x='168.177279'>--zoom=-1</tspan><tspan x='215.25079'>--page=-</tspan><tspan x='257.616949'>--output=%f-%0p.svg</tspan><tspan x='351.763986'>\</tspan><tspan x='281.1528' y='166.062948'>beamer-example</tspan></text>
+<text class='f9' x='357.755493' y='-60.858816'><tspan fill='#bfbfbf'></tspan></text>
<a xlink:href='beamer-example-2.svg' xlink:title='beamer-example-2.svg'>
-<rect fill='none' stroke='#adade0' stroke-width='.5' x='369.149393' y='-70.904267' width='10.545452' height='11.909088'/>
-<text class='f9' x='369.649393' y='-60.858816'>
-<tspan fill='#adade0'></tspan>
-</text>
+<rect fill='none' stroke='#adade0' stroke-width='.5' x='369.149393' y='-70.15154' width='10.545452' height='10.403634'/>
+<text class='f9' x='369.649393' y='-60.858816'><tspan fill='#adade0'></tspan></text>
</a>
</g>
</svg> \ No newline at end of file
diff --git a/macros/latex/contrib/media4svg/example/beamer-example-2.svg b/macros/latex/contrib/media4svg/example/beamer-example-2.svg
index d346676b36..6f57ce4f4a 100644
--- a/macros/latex/contrib/media4svg/example/beamer-example-2.svg
+++ b/macros/latex/contrib/media4svg/example/beamer-example-2.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 2.11.1 -->
+<!-- This file was generated by dvisvgm 2.13.3 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='-72 -72 453.543293 255.118107'>
<defs>
<script type='text/javascript'>
@@ -9,11 +9,11 @@ function $(id) {return document.getElementById("msvg_"+id.toString().trim());};
</script>
</defs>
<style type='text/css'>
-<![CDATA[@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKUAA0AAAAABcAAAAJAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCEQdDG58EAC4KY2NlvHeub+wv1e4QNIngebv/qnO7+w2g/j8aPo0Ri06lBcNRtEK+jjYdZUtESrCw0f4fgB8M22B66walCYrLwE25oisY53ov/oPRJ8wk3Xugm8BEZqgzd4SSZNQ2O1Tx+vr+JQR8/e6TF+Dx7fWd2v7IdsV1Beli+hiX3b/jxDONSCRFOwC6AmD+1rmb+dVr1/+zMms15jwByJBhoABTZAID5UrkcsGvwa/osgCiQgAiIQEAQntvSzqB+J8ECtAeFczDYkCOqgSSlOeDI9Ydik750vyJ9puef82lXS49bFx4MJ2XPf+60567eJtvn2fLnUs/fdftV1nS+eK9OH9/uyy+/QpTTc225y+4FXrplJaX2r30TfnJ8k/+u3hcefz900bPBz2ncamh0n39h4+HfnXy1GOPBeuryHfoGyDc40P8wx6UmcEo0NSQ8x6CN0Jtypttcj8136gUj1Q4S5QJzMCCAtiV+KdA8cuBYPL3Xy5f12XKX207ZN/u5XP9/2W2K2tFWwkEWStZVoYEJHIAcl71lsTyr0CgMEQCCSEwQxXQ1lYBkja6CpAprRSg0MEtASoyd2UibyfpjE5kZuhLFHo79VhFxesW2mKbI3bb4CB/G5syzz57HZZfPWibLUpNVXWlSUp7bfVNw0SjCKgDzbapwaeSFN88uG1L2azWy0nl3q2+05g4qlEfdZtustQWBx2yw3LLUkNVnZeaolGtW0o2wRrS8dxdIKRIkbXfcPDgvmPXk9ZBZZ9T) format('woff2');}
-@font-face{font-family:ec-lmtt10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:ec-lmri10;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAQAAA0AAAAAB4gAAAOpAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAglIIBBEICoVQhHALDgABNgIkAxgEIAWCMgcuGzEGUZQuShTiZ0Lmpodm5VAucSgRESXbSimHbNSi/uHZePh+7fXc+/ZvEBSBhPGoCFR0UgKjgcYDCldhq+tqSVZ1qoD3+PeySeuXGtkKWdTiQdlKPOlPdPzXHuD8X07/oLst8ukEN9iRzsYaulXaGmjhphuWZVqMofYCpvx5vWa5dNCU8JyM7X9fCHi38bEL8KHttMc8HXkrmnCTd/IQcC8N4xNmVCTrhRqDz+NLTokALiop8o2h8OyBMyxXam6sE+6XQ/HHZRlo1y5xUZaSxrF451lnA9w8akL2SCQ1P2ALvvIRWtL3ms4yIBoJatCNTnwFiBEAKiziAJWUVTUfohET3oG3eqqTLu6LUMKODkRJHL66hqijA9iOEJztMXmot7cT23EZUVfhNZx94woWXDu3tXZ6DKHBG4cOTeLsI2AHotokriIK22FwA9txHlGBAy04GojRNSQjUYuzO6VHV3E2lAltg+04Wz6kc7C3LH+D5RSKgX0EjkQ7tLjYixXsWEDUFJSchlcVriJqAduhHDKK7XikENgFqTUz0FOTgwKOTrbm5roA1lsNXP2HmW2zHbrP4eyQ1RsYrYev5zlxNvQseSWFq5eHi+IPZkyIKpn2yuqJ2GmGFYWiFxWIWy2WDB3sqXB1T3Y0TzHkRDr/ZZPHqxxzhSWPaDrYDIvxKorJgeFQIxLmd9RVqzSVUpSUtBy2MruvG24R4r2lFWTm7XCbpreW94lhg4SRs83rN1JyWtIZ7rpa3OiBkFy35qDcQbmrI9YZ3qS9zH5bzsgjTczGf0mp1KvKnT9oXcUJWyWKhpKib0UFzs+xFGhlTzQirVTfqyke0578zTs9iOJO0yc1yqJMTxWZbyOqyMK0Y0lCfZYmd3/Gm5+BhPkDdYgqSylFaWl7scx9RlZKZHHM4RHdIDInXn9TCwCvA5ZWVni5fGEt83C/9yhODiujgriteJMn/grG3hlD8LDD/GeMsOU3Prx8Pkp+yXTzrbhnD9AuQZCPmm/CCws0n4o7DABQx3U0QByAeCu/sARklwAYaqe4QCIENpAAtLsEA6nWK0CxIIFIS5dX52sd3gCnqDqkblxS7JMkLaOou2uDFmTKki8NEwPcuJmfxjSlm3JkK3x9vhRJCCwkBoI5QpIE+rO9LDKZ2QZkQNaYhQk+XLXK8fyUJIJFMghzIilBH8p2m0wzfTOtf8M5BHAiSb4CafgdAhMzBw/NRUySAdgFWHEFgKT5+j/R8TZf4QAAAA==) format('woff2');}
-@font-face{font-family:ec-lmr10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:ec-lmr12;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAARcAA0AAAAACFwAAAQHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgmoIBBEICoZ0hVgLFgABNgIkAygEIAWCKQc2G8AGIB6FcbNzhIhKE9+ZQtStRZAs09m94tI6tXEpDT0zs4wcwE2jABoeHBoYmMDgdFwqqj78e/rntk42p3O2dHLaiXiQiqfkAfSfUAX/8385/v9fyxLooougLR7Qv0HNDdRZY4IkvAjGGpitARRGvQStN1sOy8ggBJ1XryiolRDwas+TecDrWS2WZ/+IOzENFflQchA8grR4iw8JsKwqgDy2ADtc3WZ2ADR+h5T7H6suj9GAQCwFWsYnwY0paDOZI9CpWao1dNRVD71/x/8AsAPyqf+bL7v4wvOpEJASNQRDIkHSR1Aq/D9lBWqaaAbatTjeTA4FxP9I0Ar6wTBEHxC7ACixSAJSuRpza1zKvIkD0RB3QhN72NSSJBNabimrouXUYFIh+GL3etwzNU0OBpqsovDlxNXrnRtnzxbnOjYvXHiQtibCBiKvgLgenlPCLYy5LVajujHG6RglrDmw5Q4xpG+8SouXnefDRwMlMNtuUcKeK3cIsRTnEsOdtEq0ePeovopaeffg3vDc24udaSKsIdLS7fN+FYUntBjZZNhACevGrLdcG0kIkgtKl097QXbpS6rGBN8SqrYYwk6KqZvRNdIEZhZFEcNdCocIKMVmJd8CWrXlYOPz6eaH9tEuUC14w52pORN6YTJbTwoNLPfZTtV44NMpZRGbz/bt2tKX9V7R0v6+c3wnprLxSU7r3Y/ekE7ojT6tAqXd4uOnxTWjjc1NQ41rdBmZk9STBmhuH822MM9561gS3WSnnunlX31qG3MFc3owtCrWqZD3Y5bKPSoT7TW2HazKavpUVQ4wN7WONlUGpGsTuUTTF18+xVHaysfZPqNGgW9seKF7n/EUG27wseEm6dnthZm20fUOF+w1h/wPMg6b7PGD1U/ielyQySKqfXHJdry43TJyfE3tyAlHRo2pxukMTfmq1iW+aTN8Uo6c+VQndPncAdLc/fUZorTibWwG9s2sz4qKfRESyMy2tpmt8U+PjuHrPdLz9P2L2KIcbkREZSYpKWex1oezmxwL8JRgaW2HUoZPuu0K+SNLIpVgD5RCOfb7FeTPgcgvEwTXv+rcZuuEr8209O2trF/v/495MY+BZkkSnsKO96jLJ0C+RMhurdEdWiDOgXzDLjl4xU5Mhg20+2wfuCcHFwSttsigBYx+toQCaHYL+FRpNxUpLGgiK20e9681e4ZClGqkVoCKwgk7ZGWQeddat3W401M/PB3cPejH64ADvfUyQP1+P511xNEJFY4Th9NRu5BUziHlxdIKCAe6iA4P39Biqt2vc0dOFxrOxXEd20P60FYUHxvCh4c8awWABvP99Ne1OV2ObWjBK29hPjQcja0oVwaQxNr6u2r1ZdlyFChW5hgA) format('woff2');}
+<![CDATA[@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKcAA0AAAAABbwAAAJHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCDgdDG5wEUVQNdiB+HsbGtKZLiGI0ib7c/s9usvua4gkRT+KB//1w970vE5PTB3RNq4hZYw28inoy63iizhoqyeCBv+b7YQdyGL1OGmBbRIJu/T8AP7jAwgbOOd4oUmA810yMtrBZEc9kGvUC/QUuckP97iKUlq7HzDY+V0peQoDXdwePwOC1vkJZFsmasEdG3BYfY4f5d5wwLB8kUVYEQCUATFzeW8BX35r/MzvpVtpCACRI0EqA0ZSAVlonpFKBr+ErKs4LQMgJgBARAQBBeW9X/EL4TwQZKEaOXpgKkKKHBFFM01J78GVJVpZOD58oXnL4VP2g4n89hK3XistnHD5d3zm0rXZxYEvd8uD2hu6aAyfr+uW/K2y5WlIx9cCJujanWh/eWr+SPNvqOlZ07I31ZOaTzO9sIB94PzSq9lptB2l5im9qXx+IXq1bPxAMYO9VlGJ9b+Tgmof4wxqOK4gYgTCncew6uBGMaN0sSH0q3MizfgpOIscBEzDj+H4e/kQo/HJAIPs0YdmCitavwpLk7VQ+qsf/l8mapBsKRRBIupNn4gpQYQtAT7Ntg4i+AgGZDhJEBAHjZQAKLSdAVKCSAIkOIwJkSuwRQC5xQSKkRaJySCYxlslk6n0ey+VOmGxp7elg6obPxobQ6+zkUX31Zm3JUpCRY2mwnKxsM68mrYzoglxYwDtJYPK2XlqFTM5qWKcV1Plaupw+SudguqWbu62zUzdC9zYXGi2vaDOMjvoYiEtzPkMQQwxJ8aK1t/P7aLIMStyjAAA=) format('woff2');}
+@font-face{font-family:ec-lmtt10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:ec-lmr10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:ec-lmri10;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAP8AA0AAAAAB4QAAAOlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAglIIBBEICoVQhHALDgABNgIkAxgEIAWCLwcuGy4GII7Ctm0TQyxniCdTDEHj4fv9/rf2Pvfdr5I+LlFUsnnoZiGJhUoTC4VGtUhiSDSG83/f6d9pPVtjU2GDWkq++k5SQY/8kzH9vfu4aEyBR//8n2+wTzp2e+tW6QIJtHDTGmCRFmOoXcCUucuUl2JxhvMSxU4I+Lrn3gAAP5bKWGkxynuoAwTJB3wHATxynfgJTCtHlgrVhx0PnfdIB3BOVVGt5mJzCAi6JUtOTjXC+24SmCJgJdCtW+KcAlW1AlNFY7W/tkFG0RJwikQS4wOqYBofocN9r1lZA0StkKAF/ejFH4CYAKDBcnygkbJp5oV0JEVgEJ2B5kSfYO+ZG32YK3foyg7mHhlDnCiC5zd/cHi4H3EuYe4VYF8leNcvo8jrK/t2Ts1g/PL6wYPzBO8w1N3A3B65K5iLOGbXEecc5oaPlfCRvRgDE0pybILXrzi9TfCArRTdA+xegqca1T/emlO9HqTUMuEjAh8+7uD6+jAqu7GGuQvAll8E9hW1K5i7hjiaUdNoxV218AFgS3VpbCiH4xE+0t+3sjIAtO5s8JV/mM1+ntvgWYIXtX0d0Z6IDD0jz0SfoS5nCQwLCTwUjVw5J61hPaxsIuWiH1MRjZ/XYcG5J6no8aE6b99Md9ssc368+L9y5myDe7Gk/Ed9N6dJGWH1URUwf9WOJXu2LdGpt1ZQl5e3n3SwuWccaxcVuM8gwibQ7RbNZKfkI8MJS/bu2PjqtYKKgWKer7GBIP4pofJYf1zlgMqVKce8QMpVaZczv+WRVjazPxW0WrVVzh1wbOCHN1Xq5vLSb6TFzq2w1Gg1j/XiHbTf6agfNZz/JTz86dRvWj9u0pRm+mspfZ3Sxnar+jbkdJdpKveWAhv48VDPscVkg72CuqKiK7PZwkGDqkw6NGUcQRWlmu41AMBrBCvWbQkL+M3aFBL8hnB+PtOj/Kigaa8Ixb+IoXdGCF49UmtPkrT/K0KUX1vJL6HVr8U3hwB0SxDkk/9fxRYWqD+LLwQAaOMKGiD2g/gCpYUlLAcgDELrJAGQCIFNKAC6nYdAag0KUMyTIqCjz8vlrR6fgV80PVI/EBR7yIOOSc1bt0YtQ74CpXIwMcDVa6U5zKpwhyKFyl9fKksGEguFgWSLlCGN6WjXxDNZRxYFz8KoscCzVWh+aVYGyaIYpC2ZkWZKZMEe09rUwvR8MwvghAylyuSQ10lMwiTcMscxKQYQp2HCCQCSptpPor1dgsUCAAAA) format('woff2');}
+@font-face{font-family:ec-lmr12;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAARgAA0AAAAACFgAAAQMAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgmoIBBEICoZ0hVgLFgABNgIkAygEIAWCJgc2G70GIB4FbuwMO1HJ+WaCragoeJ5nU//cB6T00TrJNB2ZeHyimmYmQuewfTFV4j9utP9VgcQBBhY0E6cBZoGnMQd+RxCU/x0F839NvzUOPJJkLT6gH0fLBrp5g0y4CKLKZhXaONqboG3Q3SBc5YkAAbx823tnALx31Yacay71Wp2ABXWru4EQRMlfthQontUAAlmABSYcQxcChbcM7/+epucBUSAIJgObmleGFjIIm800AlSwKREFiyyz0pq3/gdALKT51P/XusC5znZmNgLLSA9CFwmgaEPIGf4fswMiKIENqFdqc4lsA+RDAGgALmgMGUBWAMAEKQqAYlK94qVbs7XEJCp14kgtmLVc+otjlZsFx9JbZErQlluvZK9bnB3zHblE46sLL72yyaxTTw1PbzTn7LPvdioluEqsKYRXwkM6eIW9r4b11O97Gz+gg8vuuu418Qdf/bwTPtvkTPjY14F7wys6uO2510TKw9PFf21YLid8/f58QV/8+t23d0989dwmjgSXiTF1dXVdorncCbvO9q/SwRV7ryw5rpYuNIthOtosmBCTplLY2/mVoHCdn344HHgtlTAqcE/RWvzXWTAZMBUeFf4KaE4g7p/sLL7uNomz7LM+8x4rPpZ66lh8hoz14963Nfasu755pGRcfHR83bK56+KtL5q74MslvRe7U2e9N2Le61+3xhjzDW3mBTp3jO++P764p2HO7G0Nl+WGDD1aenRj9NX7h5ftP+3zRhO6z64pPblV+/pHbnCf47SVrmP3bDw2284932oxtW9ttHphxaTi2sLUjftnz9uzb2qHwYm+Xt9937VVXdzvVLRpUjukGOHHM2Pr1h7ScFm/TZV3NB+/cezQ6u4zYk/VRu9pf7cbu6aWP84f9VZuyFDWq/r4CTfy1Ktzdx0qTtt1+L7de+tz/fmzR9vzzms76KQ2A+577JvpwdJvF2KMXd3arSUV2aqqTeuGzhjWredHyY7uqZVVp0bbD+7eIzujxeBR+Q3j4uNGeDu7zIwGhY04N9HGq6nsCoAbhfR8U4nJt7kbI9Y7JY6hQAthEBZo90bkH02TXxYgWDeF78yp7POr7RifH8qa1Xxf5+k8AGwKg0AVaHiP6XkPoB4iLKZrBQmAbKB+auLRqm6mrqpIyNv5Sl08mhKgDWACUEAIGCAFAGyLCQDFUkYAGFqbSQBYHGciACJst2OQthRFo8g3jFDDt8T4i0ZUuZSVVlkvK4eV5/psDoZZY7WN2e+vt8QinpyUDE8vnkUWSA4lG7hZPcS7SsrJ+HP4ghYkhdcvWeTlUhmvl7doQXIVWKKyPZJdk1daPigYar0Nlq2M5sKrmbjfTZ1NZVjVzGxZgBLM+l/V/D0NN8IY403yAA==) format('woff2');}
text.f2 {font-family:ec-lmtt10;font-size:10.909088px}
text.f3 {font-family:ec-lmri10;font-size:10.909088px}
text.f8 {font-family:ec-lmr12;font-size:14.346196px}
@@ -29,28 +29,16 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</script>
</defs>
<rect x='-71.999989' y='-71.999989' height='255.118106' width='453.543292' fill='#fff'/>
-<text class='f8' x='-63.495975' y='-50.743793'>
-<tspan fill='#3333b3'>Video</tspan>
-<tspan fill='#3333b3' x='-23.310372'>file</tspan>
-</text>
-<text class='f10' x='-43.653545' y='-25.961954'>Em<tspan x='-27.441878'>b</tspan>
-<tspan x='-21.078306'>edded</tspan>
-<tspan x='10.436767'>lo</tspan>
-<tspan x='19.224624'>cal</tspan>
-<tspan x='36.194354'>video</tspan>
-<tspan x='64.982436'>file</tspan>
-<tspan x='82.558161'>from</tspan>
-<tspan x='108.345603'>pac</tspan>
-<tspan x='124.406187'>kage</tspan>
-</text>
+<text class='f8' x='-63.495975' y='-50.743793'><tspan fill='#3333b3'>Video</tspan><tspan fill='#3333b3' x='-23.310372'>file</tspan></text>
+<text class='f10' x='-43.653545' y='-25.961954'>Em<tspan x='-27.441878'>b</tspan><tspan x='-21.078306'>edded</tspan><tspan x='10.436767'>lo</tspan><tspan x='19.224624'>cal</tspan><tspan x='36.194354'>video</tspan><tspan x='64.982436'>file</tspan><tspan x='82.558161'>from</tspan><tspan x='108.345603'>pac</tspan><tspan x='124.406187'>kage</tspan></text>
<text class='f3' x='149.557993' y='-25.961954'>mwe</text>
<text class='f2' x='-43.653545' y='-3.446381'>\includemedia[width=24em,height=13.5em]{}{example-movie.mp4}</text>
<g transform='translate(23.862603,156.213196) scale(-1,-1) translate(23.862603,156.213196) scale(-1)'>
</g>
-<svg height='0' id='msvg_kbdCtrl_0' onfocus='' onkeydown='event.preventDefault();event.stopPropagation();switch(event.key){case" ":if($("0").paused){$("0").play();}else{$("0").pause();}break;case"ArrowUp":if(event.ctrlKey){$("0").muted=false;}else{try{$("0").volume+=0.02;}catch(e){}}break;case"ArrowDown":if(event.ctrlKey){$("0").muted=true;}else{try{$("0").volume-=0.02;}catch(e){}}break;case"ArrowLeft":if(event.ctrlKey){$("0").currentTime-=$("0").duration/10;}else{$("0").currentTime-=$("0").duration/100;}break;case"ArrowRight":if(event.ctrlKey){$("0").currentTime+=$("0").duration/10;}else{$("0").currentTime+=$("0").duration/100;}break;case"Home":$("0").currentTime=0;break;case"End":$("0").currentTime=$("0").duration;break;case"F11":if($("0").requestFullscreen){$("0").requestFullscreen();}break;case"Tab":event.target.blur();break;}' width='0'/>
+<svg height='0' id='msvg_kbdCtrl_0' onfocus='' onkeydown='event.preventDefault();if(!(event.key==="PageDown"||event.key==="PageUp")){event.stopPropagation();}switch(event.key){case" ":if($("0").paused){$("0").play();}else{$("0").pause();}break;case"ArrowUp":if(event.ctrlKey){$("0").muted=false;}else{try{$("0").volume+=0.02;}catch(e){}}break;case"ArrowDown":if(event.ctrlKey){$("0").muted=true;}else{try{$("0").volume-=0.02;}catch(e){}}break;case"ArrowLeft":if(event.ctrlKey){$("0").currentTime-=$("0").duration/10;}else{$("0").currentTime-=$("0").duration/100;}break;case"ArrowRight":if(event.ctrlKey){$("0").currentTime+=$("0").duration/10;}else{$("0").currentTime+=$("0").duration/100;}break;case"Home":$("0").currentTime=0;break;case"End":$("0").currentTime=$("0").duration;break;case"F11":if($("0").requestFullscreen){$("0").requestFullscreen();}break;case"Tab":event.target.blur();break;}' width='0'/>
<foreignObject height='147.27267' ontouchstart='event.preventDefault();event.stopPropagation();if($("0").paused){$("0").play();}else{$("0").pause();}return;' style='cursor: pointer;' transform='translate(23.862603,8.940526)' width='261.81812'>
-<video height='100%' id='msvg_0' onclick='event.stopPropagation();' oncontextmenu='event.stopPropagation();' onkeydown='event.preventDefault();event.stopPropagation();switch(event.key){case" ":if(event.target.paused){event.target.play();}else{event.target.pause();}break;case"ArrowUp":if(event.ctrlKey){event.target.muted=false;}else{try{event.target.volume+=0.02;}catch(e){}}break;case"ArrowDown":if(event.ctrlKey){event.target.muted=true;}else{try{event.target.volume-=0.02;}catch(e){}}break;case"ArrowLeft":if(event.ctrlKey){event.target.currentTime-=event.target.duration/10;}else{event.target.currentTime-=event.target.duration/100;}break;case"ArrowRight":if(event.ctrlKey){event.target.currentTime+=event.target.duration/10;}else{event.target.currentTime+=event.target.duration/100;}break;case"Home":event.target.currentTime=0;break;case"End":event.target.currentTime=event.target.duration;break;case"F11":if(event.target.requestFullscreen){event.target.requestFullscreen();}break;case"Tab":event.target.blur();break;}' onmousedown='event.preventDefault();event.stopPropagation();if(event.button==0)event.target.pause();' onmouseup='event.preventDefault();event.stopPropagation();if(event.button==0)event.target.play();' onplaying='$("kbdCtrl_0").focus();event.target.focus();' width='100%' x='0' xmlns='http://www.w3.org/1999/xhtml' y='0'>
+<video height='100%' id='msvg_0' onclick='event.stopPropagation();' oncontextmenu='event.stopPropagation();' onkeydown='event.preventDefault();if(!(event.key==="PageDown"||event.key==="PageUp")){event.stopPropagation();}switch(event.key){case" ":if(event.target.paused){event.target.play();}else{event.target.pause();}break;case"ArrowUp":if(event.ctrlKey){event.target.muted=false;}else{try{event.target.volume+=0.02;}catch(e){}}break;case"ArrowDown":if(event.ctrlKey){event.target.muted=true;}else{try{event.target.volume-=0.02;}catch(e){}}break;case"ArrowLeft":if(event.ctrlKey){event.target.currentTime-=event.target.duration/10;}else{event.target.currentTime-=event.target.duration/100;}break;case"ArrowRight":if(event.ctrlKey){event.target.currentTime+=event.target.duration/10;}else{event.target.currentTime+=event.target.duration/100;}break;case"Home":event.target.currentTime=0;break;case"End":event.target.currentTime=event.target.duration;break;case"F11":if(event.target.requestFullscreen){event.target.requestFullscreen();}break;case"Tab":event.target.blur();break;}' onmousedown='event.preventDefault();event.stopPropagation();if(event.button==0)event.target.pause();' onmouseup='event.preventDefault();event.stopPropagation();if(event.button==0)event.target.play();' onplaying='$("kbdCtrl_0").focus();event.target.focus();' width='100%' x='0' xmlns='http://www.w3.org/1999/xhtml' y='0'>
<source src='data:audio/mpeg;base64,
AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQACn0NtZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu
73gyNjQgLSBjb3JlIDE0OCByMjc5NSBhYWE5YWE4IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMt
@@ -2759,16 +2747,12 @@ AG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTcuNzEu
</video>
</foreignObject>
<a xlink:href='beamer-example-1.svg' xlink:title='beamer-example-1.svg'>
-<rect fill='none' stroke='#adade0' stroke-width='.5' x='357.255493' y='-70.904267' width='10.545452' height='11.909088'/>
-<text class='f9' x='357.755493' y='-60.858816'>
-<tspan fill='#adade0'></tspan>
-</text>
+<rect fill='none' stroke='#adade0' stroke-width='.5' x='357.255493' y='-70.15154' width='10.545452' height='10.403634'/>
+<text class='f9' x='357.755493' y='-60.858816'><tspan fill='#adade0'></tspan></text>
</a>
<a xlink:href='beamer-example-3.svg' xlink:title='beamer-example-3.svg'>
-<rect fill='none' stroke='#adade0' stroke-width='.5' x='369.149393' y='-70.904267' width='10.545452' height='11.909088'/>
-<text class='f9' x='369.649393' y='-60.858816'>
-<tspan fill='#adade0'></tspan>
-</text>
+<rect fill='none' stroke='#adade0' stroke-width='.5' x='369.149393' y='-70.15154' width='10.545452' height='10.403634'/>
+<text class='f9' x='369.649393' y='-60.858816'><tspan fill='#adade0'></tspan></text>
</a>
</g>
</svg> \ No newline at end of file
diff --git a/macros/latex/contrib/media4svg/example/beamer-example-3.svg b/macros/latex/contrib/media4svg/example/beamer-example-3.svg
index 9417dd11fb..3798755a18 100644
--- a/macros/latex/contrib/media4svg/example/beamer-example-3.svg
+++ b/macros/latex/contrib/media4svg/example/beamer-example-3.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 2.11.1 -->
+<!-- This file was generated by dvisvgm 2.13.3 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='-72 -72 453.543293 255.118107'>
<defs>
<script type='text/javascript'>
@@ -9,10 +9,10 @@ function $(id) {return document.getElementById("msvg_"+id.toString().trim());};
</script>
</defs>
<style type='text/css'>
-<![CDATA[@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKUAA0AAAAABcAAAAJAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCEQdDG58EAC4KY2NlvHeub+wv1e4QNIngebv/qnO7+w2g/j8aPo0Ri06lBcNRtEK+jjYdZUtESrCw0f4fgB8M22B66walCYrLwE25oisY53ov/oPRJ8wk3Xugm8BEZqgzd4SSZNQ2O1Tx+vr+JQR8/e6TF+Dx7fWd2v7IdsV1Beli+hiX3b/jxDONSCRFOwC6AmD+1rmb+dVr1/+zMms15jwByJBhoABTZAID5UrkcsGvwa/osgCiQgAiIQEAQntvSzqB+J8ECtAeFczDYkCOqgSSlOeDI9Ydik750vyJ9puef82lXS49bFx4MJ2XPf+60567eJtvn2fLnUs/fdftV1nS+eK9OH9/uyy+/QpTTc225y+4FXrplJaX2r30TfnJ8k/+u3hcefz900bPBz2ncamh0n39h4+HfnXy1GOPBeuryHfoGyDc40P8wx6UmcEo0NSQ8x6CN0Jtypttcj8136gUj1Q4S5QJzMCCAtiV+KdA8cuBYPL3Xy5f12XKX207ZN/u5XP9/2W2K2tFWwkEWStZVoYEJHIAcl71lsTyr0CgMEQCCSEwQxXQ1lYBkja6CpAprRSg0MEtASoyd2UibyfpjE5kZuhLFHo79VhFxesW2mKbI3bb4CB/G5syzz57HZZfPWibLUpNVXWlSUp7bfVNw0SjCKgDzbapwaeSFN88uG1L2azWy0nl3q2+05g4qlEfdZtustQWBx2yw3LLUkNVnZeaolGtW0o2wRrS8dxdIKRIkbXfcPDgvmPXk9ZBZZ9T) format('woff2');}
-@font-face{font-family:ec-lmtt10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:ec-lmr10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:ec-lmr12;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAUgAA0AAAAACXwAAATKAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgnIIBBEICokIhzYLGAABNgIkAywEIAWCKQc4G6wHUZQvTg7i52EM7tFKiBK0WNROjtui3WyUv8c/3sfz3+/Hb+1z3/siAl4h0TSpZpLYdEIUm04pJp3OkPBIItLs6F3zZ8F3wQOeI5hHaohZ7hD3pPWk7vLXPtX8jwUo4fH5v+bpv6OzfwLfTuTs2jhqjRU+m+1NdEBFFJFWQM3DUQLSBmB704mVgy1SmOrmriiouRD4ePr7Wvi28qL51Tk1kkd66na9w11I5gfOCyl/I+x46KlLSXUAzhhozP8wJXXafJi3sXfNCG64Q5SBU5EpVlu7M+o1a9epz8B/yKi7v221yXrrrLKyEFoGCJjCU+QO3uavoesxgEFDMGyE7H9zDQP5rwKjYAFYA7kF8gLQYQc91WjuKk2r6/bGKvaxiyYkswCOfrXxrMU7pB/vjioSQ9wpY2UltfEiVo57iOvXH7a/nPzmDZJfYzMg6j4wkPZiDHuI6o2wsh/pEzVq3yaQtvmvukfUK1tQiYSxvrxmjcMaop56de4YWCJlPzIsBHUfAKy8BOmVqgWtKDlexcru84dfIznhwBOiPnJaB1DGCnX0JVZOP36NkLm6Jrc+TOHMN1cEEe94c+FMeParTU4EKbuR/tQRPWnnqpJTK+T9Be6V9oUOIOsQ5Xgikrc7X8bKS9fXWLl7cS2F0aCwN1LY8abmCmB11y5E3zeGRCnopSIelkNvqHGHoBZhkK5iBekThBF++TIRiJ507Nyp6DEa0U4swq59q0By1JWsRzKxHYq6y6l41SqiupSuWXPgDHFfb7L+K3NbdzvkoWhJjH1MwiOc3ZZXmabHlBp+LqrIsK7VzUhb1dIaSFNCl8ZW0yVQdHVnVzVtFvrixJENYfE3fv50x8fzyX7rF1vWHOsysnBRlkm8R3e8ZdnHQNCnhZne1Qru/bZPX3J0kzMrK4Zn7uYTkxaaLuyze3UlxWz26m8OudMrbExXePppbx6lHsPqNoqYhDlmcb7UFkO3oihbO+s6i3xdl1jUN7uienJWkX+CexQTNesXHzrjCrHwdrJN1BnB7zSbpemah2lW9rZiFgr0sawk6+ml9vdt7S76XaDsD9qCE+0mR1mczar/2yxrelLk39Y13R5Nxv9npHHeIj+zJTM2hV6WX7CMFhYy59NzRCGz60dzA7j/qmp8nq54fP7lCUmL1ypXZJhUb/aJX+4de/n2TyVK0891kDQaZj99apkmscNxEb3orD1kR3f+ThXZ+w6OKvbBfGYY/L6Mvhach2imOsfEtKoedTrl6jnPoOWcSkQHHJi7uD6iwcSsR07OXDxD4Jo9AJ7Ezt3HBzu/+Af6rxrZSvHgDe8Vf3AgfxqRV0YI782TP1VaRv4eGm0/b9iDzvz/sTnVaQwpEOrleRsljQW0ZYgc/GiucwfkOKgPAorhmRM2xIp7YzH5gSbjbMrQDIRRpxiAQgT7hQAw5BIESm+MStdsVwH1Rj3uPmDIW026YWUEQM0RNqi3YPa6A6bsdUO7Hhwe3LjZw/EAB3Tq0Nd9fI9G9Ri8ECxGOEa9WsFDDQfkhKkdwAJeoTAHvhbGyvc01jN8CMuEM/W1wXlULY0LC+bY4KfKEMCFmurRqzm5Op2e0Asv9/m5EBYS+wBLACjiG/0xt9UuKVJlypVPqxgAAA==) format('woff2');}
+<![CDATA[@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKcAA0AAAAABbwAAAJHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCDgdDG5wEUVQNdiB+HsbGtKZLiGI0ib7c/s9usvua4gkRT+KB//1w970vE5PTB3RNq4hZYw28inoy63iizhoqyeCBv+b7YQdyGL1OGmBbRIJu/T8AP7jAwgbOOd4oUmA810yMtrBZEc9kGvUC/QUuckP97iKUlq7HzDY+V0peQoDXdwePwOC1vkJZFsmasEdG3BYfY4f5d5wwLB8kUVYEQCUATFzeW8BX35r/MzvpVtpCACRI0EqA0ZSAVlonpFKBr+ErKs4LQMgJgBARAQBBeW9X/EL4TwQZKEaOXpgKkKKHBFFM01J78GVJVpZOD58oXnL4VP2g4n89hK3XistnHD5d3zm0rXZxYEvd8uD2hu6aAyfr+uW/K2y5WlIx9cCJujanWh/eWr+SPNvqOlZ07I31ZOaTzO9sIB94PzSq9lptB2l5im9qXx+IXq1bPxAMYO9VlGJ9b+Tgmof4wxqOK4gYgTCncew6uBGMaN0sSH0q3MizfgpOIscBEzDj+H4e/kQo/HJAIPs0YdmCitavwpLk7VQ+qsf/l8mapBsKRRBIupNn4gpQYQtAT7Ntg4i+AgGZDhJEBAHjZQAKLSdAVKCSAIkOIwJkSuwRQC5xQSKkRaJySCYxlslk6n0ey+VOmGxp7elg6obPxobQ6+zkUX31Zm3JUpCRY2mwnKxsM68mrYzoglxYwDtJYPK2XlqFTM5qWKcV1Plaupw+SudguqWbu62zUzdC9zYXGi2vaDOMjvoYiEtzPkMQQwxJ8aK1t/P7aLIMStyjAAA=) format('woff2');}
+@font-face{font-family:ec-lmtt10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:ec-lmr10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:ec-lmr12;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAUgAA0AAAAACXgAAATMAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgnIIBBEICokIhzYLGAABNgIkAywEIAWCJgc4G6kHUZQvTgHiZ0KmMthjsVwilKjV7JxjxCuUf5+Ph3/2w933vkxM85bWNKmGOPx0QhSrlGhSEoeERxKRNjn6TfvZxJdIJU2VlJpHKqo0FXe4czh3+XsuCRD7X8LjE9fk/6e3f4EokbdvggfqRWEFb0C7iQ6oiCoo0gqoefi0AqQNwDbobhCu8kII+HrmyzoAfh8YMLrRKJvjOTH5ID8Dj0A+/jC0ImS0EPjhoQfnKY0AjgwX1HWE8jzDplu48OHRSuBuMBgqcpDqZIGHHWnSpkuPQcPXI06j+/e2N7/h9a9+FSSwoiZoiURSO4gW/hrKCjUaNEKTZuHwUzkGxPUEoAX0A6Mg7oN4C0CJOYKirYPJ+2ZZLodFaMMmdM9FBLIGQNZXUyIn5IEIsVJEE2Lcw2JulWbTJcydcKU3bDiivZL69i1i32AFEPx+EDH7MIa9BO+BMHcACQk+Zv9mYLb7rL5P8Fe3onIGYyG7dq3tWoI//fr8cVAj7gASFwO/HwDmXgHzmi+FUpqxu4a5PReOvEFs0sGnBP/Yfj1AFnOaY68wd+bJG4SU/Nq1rWG6L3171UTjnW8vnu1e/nqzPYG4PUg4dUrA7NpVPqSaPcCRfcz+xEFk2UWnT0TsDocrmHvl9AZz9y6t02A0KOmBOO97qyoFqA02bMQiW0M04/+Ko4+wQTf5hMPQgDAw1zCHhATCCL96lQyEgDl+/nTvCVrQLkzD7v2rgbEzl29ALFF3LPxu+7LVqwnesWLt2oNnCZcNsg3fUHfMdwIf0WpC6imLjHJwXlErz4yrEH8pqc6ybDCHZ6xu7/AjNaZenbWu16Qh63p669h2YTCBHt8YkXjz5893Pd2eHrB8uXXt8V6JypFbzhhd+xLVlZ/8QEiaZnnUcTj32z5/zTPPzKqpHpu1x5icski+aNDm9dU0xZw139rmh1VbyVe6eZfeOqZ5Ams6NYQswi7H4KXZKnYuibG2sWxUFZp76ZLBOdV1M7NLfJJcYqiY2b94kllXCZWHvXWyWQK/k/ocXe98TOpZDwtqkYk8npNiGVahfWBtc8n7okZ7yBrsSWc2RnUup+lvRU5YSvTflvV9rq3S/7NQy/xNfmY1NRlMLi8sWk6aFlEXMvNoU3bvj9U94MHr2qn55rKpBVemmVJ0q2x1lqxui2fiCo/4K3d+Kudaf26ElIkIbVhIpS65224xuficFnJje37XlGi9RiY4bYAxOwJ+X05eDyhAJFWXJ5PXNqEe+3yBQzjJ5tUg0vfgvCVNUc0yRT+bmr0k3EmrDgAvkfnFE9LSP2OS6mcJFqbeAgpBsd4er+NCQyiJSO7+LeVRZ406+r+MKP4esEdZXf8otM8zQKNkkDv57vpHKC/0gGIIEo6+Je5wAcQuyC98k+IWJ+nCgkuhR8UPdDHFKsW6IbQ4IAKJEFgVCECjcwikSqsiW2FWJazS4sX4WqP3IBRlk9QMwAobrLBKP3bTWqfd0KlLPwMjuHuv32AEWNOj22D28f1aNKEYBdKjRKI0aRAw1G5ADcKpIQIY6ZNG8K2wnjTvb2mijIF6KpJqaghYxSgVDOEBIQHXlAmAM1PsN6Bt5RTFsFoY7uyrGwL1sGoEZmsAIIVIy1+5gxakSZctX6FSZQ==) format('woff2');}
text.f2 {font-family:ec-lmtt10;font-size:10.909088px}
text.f8 {font-family:ec-lmr12;font-size:14.346196px}
text.f9 {font-family:nf0;font-size:10.909088px}
@@ -27,36 +27,25 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</script>
</defs>
<rect x='-71.999989' y='-71.999989' height='255.118106' width='453.543292' fill='#fff'/>
-<text class='f8' x='-63.495975' y='-50.743793'>
-<tspan fill='#3333b3'>Remote</tspan>
-<tspan fill='#3333b3' x='-11.797129'>video</tspan>
-</text>
-<text class='f10' x='-43.653545' y='-31.381632'>Video<tspan x='-12.441459'>streamed</tspan>
-<tspan x='34.315995'>from</tspan>
-<tspan x='60.103437'>URL</tspan>
-</text>
-<text class='f2' x='-43.653545' y='-8.86606'>\includemedia[width=24em,height=13.5em,url]{}{%<tspan x='-43.653545' y='4.683137'>https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm}</tspan>
-</text>
+<text class='f8' x='-63.495975' y='-50.743793'><tspan fill='#3333b3'>Remote</tspan><tspan fill='#3333b3' x='-11.797129'>video</tspan></text>
+<text class='f10' x='-43.653545' y='-31.381632'>Video<tspan x='-12.441459'>streamed</tspan><tspan x='34.315995'>from</tspan><tspan x='60.103437'>URL</tspan></text>
+<text class='f2' x='-43.653545' y='-8.86606'>\includemedia[width=24em,height=13.5em,url]{}{%<tspan x='-43.653545' y='4.683137'>https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm}</tspan></text>
<g transform='translate(23.862603,164.342714) scale(-1,-1) translate(23.862603,164.342714) scale(-1)'>
</g>
-<svg height='0' id='msvg_kbdCtrl_1' onfocus='' onkeydown='event.preventDefault();event.stopPropagation();switch(event.key){case" ":if($("1").paused){$("1").play();}else{$("1").pause();}break;case"ArrowUp":if(event.ctrlKey){$("1").muted=false;}else{try{$("1").volume+=0.02;}catch(e){}}break;case"ArrowDown":if(event.ctrlKey){$("1").muted=true;}else{try{$("1").volume-=0.02;}catch(e){}}break;case"ArrowLeft":if(event.ctrlKey){$("1").currentTime-=$("1").duration/10;}else{$("1").currentTime-=$("1").duration/100;}break;case"ArrowRight":if(event.ctrlKey){$("1").currentTime+=$("1").duration/10;}else{$("1").currentTime+=$("1").duration/100;}break;case"Home":$("1").currentTime=0;break;case"End":$("1").currentTime=$("1").duration;break;case"F11":if($("1").requestFullscreen){$("1").requestFullscreen();}break;case"Tab":event.target.blur();break;}' width='0'/>
+<svg height='0' id='msvg_kbdCtrl_1' onfocus='' onkeydown='event.preventDefault();if(!(event.key==="PageDown"||event.key==="PageUp")){event.stopPropagation();}switch(event.key){case" ":if($("1").paused){$("1").play();}else{$("1").pause();}break;case"ArrowUp":if(event.ctrlKey){$("1").muted=false;}else{try{$("1").volume+=0.02;}catch(e){}}break;case"ArrowDown":if(event.ctrlKey){$("1").muted=true;}else{try{$("1").volume-=0.02;}catch(e){}}break;case"ArrowLeft":if(event.ctrlKey){$("1").currentTime-=$("1").duration/10;}else{$("1").currentTime-=$("1").duration/100;}break;case"ArrowRight":if(event.ctrlKey){$("1").currentTime+=$("1").duration/10;}else{$("1").currentTime+=$("1").duration/100;}break;case"Home":$("1").currentTime=0;break;case"End":$("1").currentTime=$("1").duration;break;case"F11":if($("1").requestFullscreen){$("1").requestFullscreen();}break;case"Tab":event.target.blur();break;}' width='0'/>
<foreignObject height='147.27267' ontouchstart='event.preventDefault();event.stopPropagation();if($("1").paused){$("1").play();}else{$("1").pause();}return;' style='cursor: pointer;' transform='translate(23.862603,17.070044)' width='261.81812'>
-<video height='100%' id='msvg_1' onclick='event.stopPropagation();' oncontextmenu='event.stopPropagation();' onkeydown='event.preventDefault();event.stopPropagation();switch(event.key){case" ":if(event.target.paused){event.target.play();}else{event.target.pause();}break;case"ArrowUp":if(event.ctrlKey){event.target.muted=false;}else{try{event.target.volume+=0.02;}catch(e){}}break;case"ArrowDown":if(event.ctrlKey){event.target.muted=true;}else{try{event.target.volume-=0.02;}catch(e){}}break;case"ArrowLeft":if(event.ctrlKey){event.target.currentTime-=event.target.duration/10;}else{event.target.currentTime-=event.target.duration/100;}break;case"ArrowRight":if(event.ctrlKey){event.target.currentTime+=event.target.duration/10;}else{event.target.currentTime+=event.target.duration/100;}break;case"Home":event.target.currentTime=0;break;case"End":event.target.currentTime=event.target.duration;break;case"F11":if(event.target.requestFullscreen){event.target.requestFullscreen();}break;case"Tab":event.target.blur();break;}' onmousedown='event.preventDefault();event.stopPropagation();if(event.button==0)event.target.pause();' onmouseup='event.preventDefault();event.stopPropagation();if(event.button==0)event.target.play();' onplaying='$("kbdCtrl_1").focus();event.target.focus();' width='100%' x='0' xmlns='http://www.w3.org/1999/xhtml' y='0'>
+<video height='100%' id='msvg_1' onclick='event.stopPropagation();' oncontextmenu='event.stopPropagation();' onkeydown='event.preventDefault();if(!(event.key==="PageDown"||event.key==="PageUp")){event.stopPropagation();}switch(event.key){case" ":if(event.target.paused){event.target.play();}else{event.target.pause();}break;case"ArrowUp":if(event.ctrlKey){event.target.muted=false;}else{try{event.target.volume+=0.02;}catch(e){}}break;case"ArrowDown":if(event.ctrlKey){event.target.muted=true;}else{try{event.target.volume-=0.02;}catch(e){}}break;case"ArrowLeft":if(event.ctrlKey){event.target.currentTime-=event.target.duration/10;}else{event.target.currentTime-=event.target.duration/100;}break;case"ArrowRight":if(event.ctrlKey){event.target.currentTime+=event.target.duration/10;}else{event.target.currentTime+=event.target.duration/100;}break;case"Home":event.target.currentTime=0;break;case"End":event.target.currentTime=event.target.duration;break;case"F11":if(event.target.requestFullscreen){event.target.requestFullscreen();}break;case"Tab":event.target.blur();break;}' onmousedown='event.preventDefault();event.stopPropagation();if(event.button==0)event.target.pause();' onmouseup='event.preventDefault();event.stopPropagation();if(event.button==0)event.target.play();' onplaying='$("kbdCtrl_1").focus();event.target.focus();' width='100%' x='0' xmlns='http://www.w3.org/1999/xhtml' y='0'>
<source src='https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm' type='audio/mpeg'/>
</video>
</foreignObject>
<a xlink:href='beamer-example-2.svg' xlink:title='beamer-example-2.svg'>
-<rect fill='none' stroke='#adade0' stroke-width='.5' x='357.255493' y='-70.904267' width='10.545452' height='11.909088'/>
-<text class='f9' x='357.755493' y='-60.858816'>
-<tspan fill='#adade0'></tspan>
-</text>
+<rect fill='none' stroke='#adade0' stroke-width='.5' x='357.255493' y='-70.15154' width='10.545452' height='10.403634'/>
+<text class='f9' x='357.755493' y='-60.858816'><tspan fill='#adade0'></tspan></text>
</a>
<a xlink:href='beamer-example-4.svg' xlink:title='beamer-example-4.svg'>
-<rect fill='none' stroke='#adade0' stroke-width='.5' x='369.149393' y='-70.904267' width='10.545452' height='11.909088'/>
-<text class='f9' x='369.649393' y='-60.858816'>
-<tspan fill='#adade0'></tspan>
-</text>
+<rect fill='none' stroke='#adade0' stroke-width='.5' x='369.149393' y='-70.15154' width='10.545452' height='10.403634'/>
+<text class='f9' x='369.649393' y='-60.858816'><tspan fill='#adade0'></tspan></text>
</a>
</g>
</svg> \ No newline at end of file
diff --git a/macros/latex/contrib/media4svg/example/beamer-example-4.svg b/macros/latex/contrib/media4svg/example/beamer-example-4.svg
index f8b5473420..9ca065a1ab 100644
--- a/macros/latex/contrib/media4svg/example/beamer-example-4.svg
+++ b/macros/latex/contrib/media4svg/example/beamer-example-4.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 2.11.1 -->
+<!-- This file was generated by dvisvgm 2.13.3 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='-72 -72 453.543293 255.118107'>
<defs>
<script type='text/javascript'>
@@ -9,13 +9,13 @@ function $(id) {return document.getElementById("msvg_"+id.toString().trim());};
</script>
</defs>
<style type='text/css'>
-<![CDATA[@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKUAA0AAAAABcAAAAJAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCEQdDG58EAC4KY2NlvHeub+wv1e4QNIngebv/qnO7+w2g/j8aPo0Ri06lBcNRtEK+jjYdZUtESrCw0f4fgB8M22B66walCYrLwE25oisY53ov/oPRJ8wk3Xugm8BEZqgzd4SSZNQ2O1Tx+vr+JQR8/e6TF+Dx7fWd2v7IdsV1Beli+hiX3b/jxDONSCRFOwC6AmD+1rmb+dVr1/+zMms15jwByJBhoABTZAID5UrkcsGvwa/osgCiQgAiIQEAQntvSzqB+J8ECtAeFczDYkCOqgSSlOeDI9Ydik750vyJ9puef82lXS49bFx4MJ2XPf+60567eJtvn2fLnUs/fdftV1nS+eK9OH9/uyy+/QpTTc225y+4FXrplJaX2r30TfnJ8k/+u3hcefz900bPBz2ncamh0n39h4+HfnXy1GOPBeuryHfoGyDc40P8wx6UmcEo0NSQ8x6CN0Jtypttcj8136gUj1Q4S5QJzMCCAtiV+KdA8cuBYPL3Xy5f12XKX207ZN/u5XP9/2W2K2tFWwkEWStZVoYEJHIAcl71lsTyr0CgMEQCCSEwQxXQ1lYBkja6CpAprRSg0MEtASoyd2UibyfpjE5kZuhLFHo79VhFxesW2mKbI3bb4CB/G5syzz57HZZfPWibLUpNVXWlSUp7bfVNw0SjCKgDzbapwaeSFN88uG1L2azWy0nl3q2+05g4qlEfdZtustQWBx2yw3LLUkNVnZeaolGtW0o2wRrS8dxdIKRIkbXfcPDgvmPXk9ZBZZ9T) format('woff2');}
-@font-face{font-family:cmr10;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKwAA0AAAAABdQAAAJZAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoJQgkMLCgABNgIkAxAEIAWCHQcqG9MEAB6HsXukhFiJSVm9j5sIILu+r+6e9QlIhRREzGjTo0IyRfwulzP7/zX4/eZhniyaP0PMJqp4/KvLpLRIWstQctr6+5vamBbwAvDHHyhMi/Iu8TDQ0jFtbYwLOKE0ijjmdqeY1bIkm7VdkpJNCHD7Z4fhqYtMvT6k0WG3HHFrvIHt6VLhBR4iUa4EIADApBXNO0B3vvihljcnfpABAZCQ0I4MDKMQ0I5SJ5DJBHSv1fC1tWdkQMgTACEiAkCcjzIc2jluAqFWE0EGiihjEdgCIMMAclDMsh6hcTXXC5Vc/WwGpZQ3HArVg+Wtze4AN2OTcYd0t7LtfqgOIW2i9Wmtww6kt1x793vq3KV71fuXz58G33dJd8rLyTGzes/JGZ2Plo6+7FR3VEcu1G3JF68XSzfHX6xetgZlb/5wcnB0+J1P92Z7xXo3NNwW+G97wfDRl35/ejGjmJ0YWn/8AtOEoeus1HvEw2BUug9t9i55SNem92cpt70AXA0GDvsrZN5zNZ97IvIpQiYSkQMDNR/+NTLcWYbA5GNvLi+0DPterKRX26Fv59qtVIwfQFEEgfiBf8ZJGg2kogAAyNJoLiCNhjRahgyZWbQgIggYhQAoWkEGooJGZCDp4oIM5FQcEUBezlVJyEqiBshKMo5DyWnhZ1le2UlT3Hs09+baBL4rswITfPowm++ZeHTPSSAYpxynW+8muE7ksmLAPGEIHN5bApZMHu+dgjBnznn7PuFF4NkYih3KRcAM9yamnoPanTiCwd3IzQlDwOBYun7CGRD3OkvPECxREQAAAA==) format('woff2');}
-@font-face{font-family:ec-lmtt10;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAARkAA0AAAAACFwAAAQPAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgloIBBEICocIhX8LFgABNgIkAxwEIAWCMgc2G9QGIB6FcSys06msN99DBhHRllUPcrDAuRsRMy55g5i+iBsU6l0etKY1rk2AV/r/8385vUHXWEDbN3iW6f+/MQeNKZpAFFgYjbUwsPPA7wUaW+bGiIlZEFjfrdvcBJB/+JsAAXjl9vdPArx3dNrW14uyyUEMoM5S9wAumJMPyGEFoCJmbn2B0e5rmAfYretvtx+jnY3RzK273OEv8X6ntNP1FAMNEwqF3TIrrfuhClZY04P7wiefeCxoXYwg0oUCFLfBBa6OuB5D+RceJjMyKqbNgLiTkBrur+sLSQcZwvWiTCqIOl16uEivT5BgyRKzaJImdXvRYrDpB7uSZndozqP+N/Z5XRyXPPKGxcVF1X+NELZX+wvses3ieuOBC8TuOH5c03SOszXNyS6LRSG/zcWBhuzt3Tatx3nMYqy2N3DmOnhb+MTxunPksmtocNerYYtvuF5j4em7+vYt3C8hwseO7RB7bSMFTl2VW97uGBz0tL2g+mOOWRRcV5yQFJSC79acr9557cl9r7vrqdsKLrvsrqvY9azmHDx+XHNeehRazBX13KPwxj03nDMh2+UEdjS2695LYfn2s88WSRjNAQHoYskZJUuzNyTmbNPZn0c/Pvx45kvLwuM83+i4p6l6fLw+8EWP+riscjNpczKg5VjFRFpeY3Bz/NiOuYnslojUH828HOH5/UPWuf+CPww5PyUqMnnuKwc6qiU5EndEVEr6lwfnOuu9rNt/9WqhEhkF6WK7wAIeA26q72zITHwy65Ok6k855dX08pa7N81d+ZmbmNy0EzW/V29s6JpdJeKGuu7hFcfU8fkG86z/3gh7Y3ds8IchK5Ij46d6CnownQwpkVEpK7d3TK4akM2+Pmf48fS2xRcG11mmralBL9VMDmlpf3t62yJsDSmRwf23VmU3+SxevcQWeqbHy6cXXPL5h1v8Iv+otocPVz3ra4jN3BlyW0FnRoOPa88Bbx7cbg23eXv9m2EJV396h0U+G1tcl8b2Xdrr4f8v2ivQOzTB+4Z/reuq3jLRUAnATULW3uyh57vcm4yGdzVKpwBD6AgD4GNG+VelRH01Agjckxry9JRX+W8mi+6LFe4HWN1CnQ2YUAAIqLPdfxvNBqBWDqle2YiBED0+rUUpKyWiNQshgEY9PQAKEASolgkATCwgACiMeCIA6EhkJwAYsHAxAoARMw+jQ/RmFFZQFTraBSgMBHK+wYiv61lmuXXWyZGNZW/dupxsaLTSCusK82ssNF+0XJmyRSsVbT67DG8LJchRAgGejeeWc+XgP7WgjV+zcH50bmZ2dGn0fHtGKKjGckoyoCPjy9coGDTfGmstjg/HM8Z08xu4U05mNrG9jNgOqHUc1+xiOLxRlx69BgwaAgA=) format('woff2');}
-@font-face{font-family:ec-lmss8;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAJAAA0AAAAABSwAAAHrAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoEcgSALCgABNgIkAxAEIAWCKQcqGzwEIC4GnDJupahcikhjGk3dix5N/3zX4uH/9/u2z7n3vVFJhibtj48kTSQRC30mMhPaX5RC1VJMGyQWiTZi1Zz7SVxchCrhPRRI1xhA8h1PIFQ1Nkmscb/G/AdZWQjigzd5G80mMgB/faBAPmYXLKFIpz07lyShQBOJPON0m14+QkSOFfMoImgUAt79f4If5xtjrTlKF3sN+SxfYd0uFb/I0EjNEIAAgLP3sg3APsFibV8u+x6AABQULGCgRxdYYNgBqiqwbzt/4u3PGBAtAYhEAkr5HIr+KjtzC2I7CSoYRMUi2Amg4iANZK2zYTZj9dxIM/xvdXi0rK7J0bWVkbFcWY8ydnjnc7D/e12ITni8LnJ5x4GeOIAX4VDvPVD9VbbNd4RLMgYW2DDebWMjUNyZIei93fm4PtH7zyx/ttpf7tyWW/nEoARB9re5VDogtwQAoJaOHSgdlE4GQzVHA4kQOI4ADLqHgdQYFaDYq4SBxojnArQGvVREHZKGgbQ4w6KNebu1rUkvTwzNzSXhydP5PAmcMDaySE/MtDXZKESwSbNpqgtbqhNESvEECKBiRcJfRubqWbtpUyRsaVuzHtbhKCFTYSnCd54KOKdpZq4rXraRiICnR70kAWEPd2+Ha66aZyoNFTHRGQcA) format('woff2');}
-@font-face{font-family:ec-lmr10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:ec-lmss9;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAW0AA0AAAAACtwAAAVfAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwoIBBEICosEiFoLKgABNgIkA1AEIAWCKQdKG54IIB6FcbMTh4gqivjOlG204YiHh2P/nnt/ZFC0RxXYpwLLRYFOpHEim0aBjt/Pv5v+uZFKQprOnJphVehGnYoTax0qIlOYufCmpn97y39pgOHvZ7pIjMQM0SIb0PurLNp4grNIoTVtnBd8ZilwIHjMB4C31O7E8tQrX4QAfLU9XQj4PtfErJ5GyaKZUALyFXYIeKOOx0/qwAASWQSDYnjXg4u4EgDTWoq6Fvzk5GUn0RxF1tG9E/7UhgKBUPFoK2c4O2oxDBJwzEo1aNJSEBA6jlys5ruxE447Zp+NNlhlpRWFSSJKAYImkQCSmqCyiHwxshTsKZUTq0BVyeCPoqaWdW6ArrpRP3UgOwFEQQnQDDAETIB4C7IRgGJgAgaQ3kYsbMSmKfQXEwxyCRbJbMQnemnQdzshBnULe0Qgj+gBXM8iCtGoe9AkQ4iVTjGIErhdCVOSsTdhbsTLQXupyeJdZJXu0VOC92mliyE2avJtsAh36Cmh/6WziDIhBskQLdBIRjDtKkDj+0RZksJkOLUWo+utdw2i7Say3qOtCdJB211O66I2XdnnIey7A5bbu8IifwdcuYcY3Oo9vICbuQHwLUGQXgnoM8vCje4bgRuuIuu1e+doKD4js93lybyglQ5e1CFnGZLCBJgog92Po1ajoPghGmwDr+NRERkjtcasuSPQJEXQLG7db+WPIYcojCZcsW/TskWwOYzBrUihYiv70j0kWo7QcweAOhIYYb0xwvjs5Gh0KiTL4zavfyakYs1+ajJCNKIQBRQ6LfQUyWWxw+K38rNZZxX79JayHtGRY/TpZf8segFyxsjEcclTIs1xfCzf0RnLxfHm4GFVz1gpZv2G0MknbsydY6o0VUyO3JxwCobslPRB/3NR3DvPXyEaru95CvJLw8k9Jm1oVOifwc+Ig/bPpoCsAJPNlJCVYAL4klZe/6+k16KDPgEZcVHmlEhWhPpN1u/C2p6uK0l+k/SO656rjfQLykyObC/JZMW62BElo0eKsN4lyWxO4lL9SENcIO8jU4+MwRZGD/bXGcMrolSeGcYpTs4Vjj8V3sYBvWcJNM4G2exOGhI1UkRqfkKMoSxJsadSFnf+ZlDZ8BlHR04yZaUr4ZgtwzMqREwun3CydEKiEKMP4oxTe2wr1oVmcpyUk6kN587A5oeVI9RJBVLHJHOxZVKBlKIiYxODOL1QiGL1B/+eiI1ReMVrZNGw2pZhy4CnPsun5ekz+2eW5mmT41NPcr91aimo/wy3lYhx3fbACfSBiL8EvHxUPGZaYf7YqSVF48bmFYwdZzY6Grmc8CHG3EyjwGnDeT4TvjwtyJ5kMCXpVBkjue/701Prx5UYIf7c1JF6vy1Gm1FggPTbhAYUlZ+bdDLjTkppngHgtMNphSZI+jpTP3NU0qgsvQCTxLREdwC8Q6Cc2W1PwBfNLjvy8RYexwAEgSNIAA/bob8ViT4zAgL8+3N1QCE7+H85jb+72JzqVtDn07wMlMMAEdgFAAw5RaqR8oeT8i3NUQ0ugNgFyIScnAVLWQmFmbqA31sfThFfhcQF7tlNQav9bv4wFqlk7gImgsHA1QgXhfq1zdANApr5IgASCAhYoDjFk8qgRiLJNrlFPBRwS9CWni/l4CAUQcWOgKGA4uKSdOWSehr7qB1nG+FSrWbNtODyqrlZC7CmXp2W1fdvUq6UnIaCipyOXKliAaR6AEFNC1bgKrimqqEGf0ODsLupvFSuUajkOnlpcYAcaKtLrQ1QqwLumiMAZ6XWpFmlcIidTqADXl6MVitUINgJZgqANHU2AwFbvdeTNx9+QsQyiJcgXYZMRhyBBAA=) format('woff2');}
-@font-face{font-family:ec-lmr12;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAWgAA0AAAAACiQAAAVMAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwIIBBEICooQiCwLHAABNgIkAzQEIAWCKQc8Gz4Io6KMTkYh/rmQzYm1TmEYYQhtdDGETTUswlIEF76jH94XQbKkze6Vb63ZqkoFhW5dOIQhSBxBKNxbEBYUtkkUDtn+f9z072v9pfWgp6Gh5oGaOaUiNrJ5MhOm4sg3kf4HqJ9dAZoTx/Iz7R/o2/6eIAkeKKosKg2KqHsbjUcD2w0oEgznY9siuytiTLwIAV/OfdfCt7W32+rlEZ9jpYp8lR/x2lTFD0yYkDOrApSA/+bDtJb8ySYKWpTqPOcTmaGoDaNA5EtdxGQzt3+2lwNTpZuaqKh16zNo2MR/QeB637fZbZedNttEa4M1hZYtaoIokUjCDVwKyt+qwP8BDRqbaNYCrcygqZwA4r/SotuWDAPjIN4Tv7WlJdaZjPpK2SiTnZLBzMyFo2B2yIcMgZwpjcYWUO0iAmFua1aePyL8M2vANkDwB8FMcwBj2E/wnghzhxAi+AqDRnvigA5jU3YDQfD6gycpFcKg4RBitx3ze4Y5HWgO8ocRizc/JvEA6GDZeoI3um69Gm6w//BxVK7RYe4ZYk9fvnx/vwhULObWkjsahMFjvH6ZzyHhxPgNmNPx5zy+fnwz+pjWQp4I5nPPkiCy5TeQyBVUXVeW493Gy+fHBj7Vb5UQiNuHzEthLvR7gsYeLI4GI3aX9BrmHlzRkhjR4EykbJyINRI8gEk1Ea9kROWaAB1XfowNvs0nHYU29hrmSqUoF5S8iAr2gOZgbDuMFtBeNzCHTAmEEdbpUhEmmpMXz4o1tyHegeVwFjRkaTUrZQlINb9XUqXdotWubR+M1GFun1DIbziM2EPcAdA8JfiKGiMhb7XpM2fpe5X3gpr3rZ/foyqiSGW/zFnWrySpgb7+AftH++lg1cLTtc4+UpP/kyRBvIP0Xbo+KEnyvYkM3qyMFEYm5aYed5PHJ1HZcSVpjGDEo9XJV/nvu3KfxKR4Hx4tbkwKa1BEBacwn7ofo3HbSZHLLmVydqKvZ4GH68DVtVW7PlDBulFrbJEq+Smd8Y8ob2mPkZZd2iWQJ0v/YnydWj1GBExlUnzF5MJrk3PLPS84tY2bwfpukrCKEucx3uR2c9eyOGeBY4tdcWV/ednw/PqmOfPKfFPkcXTcvO+8qJzrhJ2nxDm10gL+oJRL6W4OU8q5njb0UiV1sqDwJFhTrmyc3YU89a82eW7tln/moLZFVPX29HQotaq4ZBVn26XsgnJlbv/X4CnwSN84s6iyambxtVlNxdBPsfU5Vk3bvJJXeyZeu/dNNdf+bQs0zoqbXMvcelHfApnZJ8uamygytP41tubH9UTgkCkJOc/OYdgZ0qaihBFhtbLUXvEyatkFIeTH9/1Ilgm9x6Y4YaAiNwp+XEXdDCpE1Etf63r13732UCqNoFblNSLKf/OGtT3zPx7p9/E0QV4pCrvFpSlmp90cHEtkzaQswDsvsO/IQWlKcg0ArsPG7qmG0i/FdV19HSMWKcagClQlxrvr+FOg4y0jBG/+nPq0wT72jUTx87SxrPt/aKryHBolTGKQGPE8qnMT5D1Iez9t8YwcEJcg31qOr7jFaTNx2ng4JE86uozJYoZLQ3JK8wUQ2hwwA3WoWOlQEACNHkIEwUqrUVZhTj2r0uLd6lqjDwpRNknNGFbhjBOr0m/+XWudDniuxyCGAjx/McgoAI706TU8+PKD2qjRFIKEoEWjqakEssoRJEaUZAAZglTEFRjw7bI4HjzYpqYVQSF0NK1WBeqRjOUxUYFMSOA1rgfgVp4YNKRDuY/GKDTAo4bOTFAIKDaCuD4AUmts+014nx2p0mUqUKRYmQq1) format('woff2');}
+<![CDATA[@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKcAA0AAAAABbwAAAJHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCDgdDG5wEUVQNdiB+HsbGtKZLiGI0ib7c/s9usvua4gkRT+KB//1w970vE5PTB3RNq4hZYw28inoy63iizhoqyeCBv+b7YQdyGL1OGmBbRIJu/T8AP7jAwgbOOd4oUmA810yMtrBZEc9kGvUC/QUuckP97iKUlq7HzDY+V0peQoDXdwePwOC1vkJZFsmasEdG3BYfY4f5d5wwLB8kUVYEQCUATFzeW8BX35r/MzvpVtpCACRI0EqA0ZSAVlonpFKBr+ErKs4LQMgJgBARAQBBeW9X/EL4TwQZKEaOXpgKkKKHBFFM01J78GVJVpZOD58oXnL4VP2g4n89hK3XistnHD5d3zm0rXZxYEvd8uD2hu6aAyfr+uW/K2y5WlIx9cCJujanWh/eWr+SPNvqOlZ07I31ZOaTzO9sIB94PzSq9lptB2l5im9qXx+IXq1bPxAMYO9VlGJ9b+Tgmof4wxqOK4gYgTCncew6uBGMaN0sSH0q3MizfgpOIscBEzDj+H4e/kQo/HJAIPs0YdmCitavwpLk7VQ+qsf/l8mapBsKRRBIupNn4gpQYQtAT7Ntg4i+AgGZDhJEBAHjZQAKLSdAVKCSAIkOIwJkSuwRQC5xQSKkRaJySCYxlslk6n0ey+VOmGxp7elg6obPxobQ6+zkUX31Zm3JUpCRY2mwnKxsM68mrYzoglxYwDtJYPK2XlqFTM5qWKcV1Plaupw+SudguqWbu62zUzdC9zYXGi2vaDOMjvoYiEtzPkMQQwxJ8aK1t/P7aLIMStyjAAA=) format('woff2');}
+@font-face{font-family:cmr10;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAALAAA0AAAAABdAAAAJqAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoJQgkMLCgABNgIkAxAEIAWCGgcqG9AEUZQMxhCAnwe2OzQYjSvh4ORcIdw8HYrS1PNvehEP3+9HO/e+9/+qJJO4G4o4WUQaicRsouKJ6Uy3TmlUjXijrYAAc9vvjUq8RvOIlCJil0oNDKyziU0ZrALSEpSguFUkIYpPtAtlqN++fv0ERP4fuGl4PiYQgKfXz9Wi4kjCQEvPtXeH4w14QtPRiMe8vUWZFVPOrdleSaSbEPDp8esAvq4fxnVYKFvxSkM+yY94Fl4qvosiSU0XgACAk/enB7DIzX/Hrcv5TwkBKCiYIIBVksAE2QxUVWDx+PS1x18JQLQEIBIJAH5+lO6hs/kI4ngJKuhEN27CPkDFMhF01roUQ9HbGz1NFg8LUgWm3AfXepg64YRk8NV74tzTuMo5brNdxGRHBnaryZlofb7eXx5f320WmPjMqTtGoVDtYuQZlBF69DsDhAF/C+wjOt9Q6A9DpJJ221V0WSgXDIeyMpG14FfoLByHhwv6njSRih+9///7CaLqlIc3RPAneB0YmqOM253KGOe1tRRTvQ3YCkKzi5wCPoSV1X9H9Zf7oW0+s1RJFuACN6yC3MZBRuKdBQTda9dH68Hq/86e8mM7LDWPK535DzolCPJf+TNmZQuUTgEAqGWLCcoWypaSgOoiHSRCYJMP0Ok+AaQOgwRQzFoQQKPHawFajbeKqF1SPzxTbBsyjXG/c61ub5x2dNZ72GrwXVkQTnh76eb3NM6ODDFfyFAz7D01Ipk/UvJkIx0L1RivLYGO5nw0Yj80amP/bCJwo9LLvCO5Dc47arSuHjVD5EXiYhSN/BBv6bnzoIlCyI1OcCpCk+8EAAA=) format('woff2');}
+@font-face{font-family:ec-lmss8;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAI8AA0AAAAABSgAAAHnAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoEcgSALCgABNgIkAxAEIAWCJgcqGzkEIC4KbGPq0EUgPFHGsiy3gQvWn7eMh//fr98+5973vkr64E37/MEkkrSaJBLtE8UqUxpJSzRtkFgk2ogPf673d+cFtMq/Kj6RqACZ6HljNkmscb/G/AdZmQif4oM3faPhBAbgvwcUyAe7YAlF2LRn55IkFGgikWecbtPLR4iwsWIeRQSNQsC7/0/w83XHa82kdOKZhryfb/HQLhW/4EaSmgkAAQCnrzTGgF2Msji6ZvZcAwEoKFhDQFdJYE3ZVlBVgV2j/IlHnxEgWgIQiQSU8jkU/VW25V0QoySoYBwVm8A2ABV7MSBrXY6pZqaemWom/xWT0+XeAzn9YGNqJjceRplZ33YZ7/1e56JPkRWRikoeKEcAXoR93fdY9dezbb4jVJIyoICG8m4b/YBxZ4JgfdCRXqX731T5s9X+khvJYfYwLkGQvREXSgfIIQIAqKWDA0oHSkeOoFrBgEQIHEIBjLuCgNSYFqDYqY2AxpTnArTGvVREnZAmgaQ4pU4aq4q1rXlXt2ycnCRw6/bplAAn7GydhyeOZiZYHsrByrAmRixLFYFdSX3I4nF4PPjJSJP+OJuwHnXYjJ2MLBWGYjexQuvG0wFnTBydLJSLLBflwLuj2qUOVD1cvmgVXDYPVBIqYqIzCwA=) format('woff2');}
+@font-face{font-family:ec-lmss9;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAW8AA0AAAAACtgAAAVoAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwoIBBEICosEiFoLKgABNgIkA1AEIAWCJgdKG5sIII7EOIbyD1NsKNnz36Y/5y4b2YWQmscUi0Ja4kScRRKHxOsKNRcq7k9E/ir5Lw0w/P1sGI2RmCFaZAN6f5VhG09wFkkDXNMfb9d8ZgkIx3wAeOZsphVFqAwyLsPXQLwJAAHAU88XqwHgi70jdCI8MSUtBg+wOewsgHl0mb6ElhjAwHPY1QkfWtqc3QhAi5Fc+8/RqGT3cMXNzTF3TyNqupMWsgytT+0Mf3DwghaZMCEXEpxowlAMx8jPAoTLpjVg4E9jl11y0Qm77bLFZpsinHLkBRD0IQaAQQdBKwdVGXgveEPDBzK+EEQ5/igUfkr/dmiPDiBWIBsHKfosBnJHACYCgAqg9QBrD3LKzNsZAIANp4w5Zd2qDMtkCgokJcmneCR1aYAd9yMFdSBvklEodQJ3K0kgkTqSyCtktsESFCSIPRMwr4C9i2KI7V78cWGu7QW57S/FeQkn9PY7iR5h7jO4rM/FeUknS5QkOEhBchKtIsllijEUFjmbtJIXmJwTdjJxiPuFyeZ5Qu6XsU2r/YznRaZd6Xvunwi1nngO1zNTzGZ5DtdfkoJzz36L1Tf/GHi2QsigHaLNtXp3yG5wzwNyP3x5U0SDLcz5Iifntt5+5o7RuaDgBVbAGhnpeMm1kY4GdwbsxGzMUbcpzMK2vuO5VeQFmajk3HaH5RqKJDAxcMOJPRvWQB2n4NxO0QZ3+upLsrmu0P8coDEEKXM8PpCWwtwMurpkWuhZrn8m7A26U8JcIpEEEiBAZC5xnj1wrc/aHwJulN9QnTC6mjtlpE0zljR/chmtqIzh82YUzEtzZluyLGPHZUnZFmfChP5fKu2ZO3clzb38ePkyR5ujdW7a3tyr6FfY2I0+SunSj2H/ks306NgXCBhounLMoU9KT/o/6DeSMMbjiC2PdXgcueW5DuBCccuQT41d1pyJjC3NTncWpiltGJKnjG52jykxNBZ8n/+j1LFKnxYdX1aQNqaxTGkbnDWpcepkG3YG5jud+VJRNG/KjrNEyrVR09jqjL4xBnNKa7omrNQ8z8/f1/cfVYS5V9clVpFTxmNvCG/K09lTi2pyM03N+apjbfLsW0/imycuujB5jqO8RI2LntKw9ERbQcusK02z8qyZxnjJPL/TgQZDUpkk2SvL9CnSdex90zZJm19rHzvH2eCaU2sv1PBZefGS0VpHWcYzHy5nZarCc3TyDGz1lHpK8UXkxgXVxrKeZU3V+oKcoivSfwatPb7nouDNpAjS/bjsPtLxl8A3bxumLairmT6/sX7G9Ora6TOcZl+zVJnSz1xVZrZK+hSLpQy/f1FbMcfkyDdoSidLf50qKRoyo9GMHLtjbNGr0Zn60loTSibnDqX0mqr8K6XPC5uqTYC1m98mXbz9j8XGxVPyp5QbrZhjK84LAQAcIaj7HvWW4XfdES/+nUbiGEDQHJoHeMyLPgwMfWUCQMA3CXl36pR9//cRuR8fNnAdPhvZF+weAB8wIAiYAMBGJaeZCPYFbsoP6UgDEAgAVAQwhkq2BBmsDXWsiKFe7k6Biv5AIt1GCOtAkDgcjP8zcxqUmUCPM/QW4xLVtbeOQAcQgI6IggwAwAAQCEAaVLd4ajOozcBDrgo4hKBawEPEmute8MFJcCCZLxgEgAQcctFewKMz3E/1gj92YCAGYQRGQA8MHDRihB4wYQgGY6T48cPRgiYEQAcVNAiAAQFoQgNiQ00AWYtkewIj66BJ6IB/oRHHh7c0BehUmgBDQFNDbBVIa2iTYxNi35njgG1rDscItFWGchmrufHlYrJWpUFVD7LNATCc/R0BEJj42DBEIBLRSEQWTMhBLkpQijKYIcEKOw==) format('woff2');}
+@font-face{font-family:ec-lmtt10;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAARkAA0AAAAACFgAAAQQAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgloIBBEICocIhX8LFgABNgIkAxwEIAWCLwc2G9EGUVQwYgA+FuNYCu9QED4Ez/N0+/+1z1S3Zq7tHuye/AGj0v+fuFz4vTUW2KYtmGX6a7cHjSmaQBRYGI21ALM88C7Q2HqA58jACxcBAvDK7e+fBnj/6uXZ23JRbnIYM6i96h7AUWTkA7LYalAhGwdn4aOds+pmAHZWqL+dPgyrs1jkeG3nQ6niXla6w00UAjpWFAo7C1jMCmfA1YtY1oHzwqefesJrVSwgZRsKUBxcLig0oibM1b9wsdoonxWl1gLijAJAB8AX8AZJBRkAAExAOgoA1XImeJbJFCeBkiE20SVFavq8YXYz9W8Oun2rvu+4741dXpetlzzyhuHgosZ7jXCoV7cH2PKa4XjjgQvEvvXkSV3Xtp7V9X1sMQwFeu/cHEyfrivQnUKNJwUAA22oN5DUdUDOfbL19X2mi46B/i2v+s2/4XiN2bPn6tvbYK/4CJ440cOI282U78xVwWXtW/v7VakXcG/UCZGc44pTEoND4N36vlfvvPb0jtfd9dRteZdddtdVbHlW39d/8qS+79LjdBFHxHPn3Bv33HBORtTlHOB4ZMu9l8LF28+eFYkYSQKBYB0iaCTaF3tDos5az34e+fjg4+kvLQiNcX+j7Z6GytHRWv8XXWpjMkptpPic9ms6UTaWklMf2Bg7smnbWGZTWPKPNl4Oc//+Iddt/wV+GHR+UkR44ravtoJ7NSWG4wyLSEr98vC29loP142/ejTxYml5qSV1gQg89Liptr0uPf7JjE8SGm/SGbW6l9fdvWbblafM2PiazWD9e7WWuo7pJaW2rqZzcNE+NXy+yjbtuz/MXt8ZHfhh0KLE8AASXXldyCuZk8IjkhZvbBtf0idrvb12+/D0hrkXBtYYk67JAS9VjQ/oKX+7e7qFudUlhQf23lqR2eA1d+k8t+A9Li/vyrvk8w/X+YT/UWkPHax41lsSmLoy6La89rQ6L4f5jkOePLjRNdTN0+PfNCNU/ekZEv5sdMVd6txzabeK979INV/3QIbXDf5a01G5bqyuHICbhIzSm11MfJd9k8X8LirRFMQCNdAMCUQs8i8uEfXVCCDwuOWfmRMepb9ZDe2Lh7gf4OqkUGcBKwoAAXXW+TfDyg1APXToTcqNKBhGzu/WRDGuFBFJI0EIoFOLCQAFCAJUkg4AWJmFAKCw4I4AoBHHFAKAGYMLEAAs2HgADTHZULgCbtJoxs9kxp/dO1vw5hoWsJAVrCCLTFiwcMWKrMq8nsUsYsXnlzGbmUSSTTqZRFJMJDOxk6ZO8DRZFNJ5Z002mbFs+EmtaPiy2TMjs9MzI4sjZ9rTPMF4MaswLS/ttVcU+pfiMpYz1ztiDfXI8w64VVZ6Jp7dWGwG1KO4oP+BtX89HXTRTR/9DAA=) format('woff2');}
+@font-face{font-family:ec-lmr10;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:ec-lmr12;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAWwAA0AAAAACiAAAAVbAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwIIBBEICooQiCwLHAABNgIkAzQEIAWCJgc8GzsIIxE2c3IaAeKPxdgNtK1oWYAi3jDRiStZhdPqWdsBKWEHK3LkENsOIDo5wPAxWncsHUEOAHyAGHgCaID/2bYTl2tO64Gity6CSRDQN8a2uax9nnhEY0yKo8C6gMYEwzy2luHVyfniSgAIAF6fe68LAN47PNHY9Cd6SqugAdhSdhmA4gbQ+zAQAxg0KqBjEgBvdVtBS3EypqvE/1PQn53DEzadqtH5IfGzNJQAagz9rBYuUEGNagxDM1oxCmMxAZMw/f+AQBlz37097W5XW9pcVxtbi9CxkA1AEIYYAAbBEjioIP+tCvkPsIWdPcCBBwAHuFp6Nh0A/R/miY61fQHoADoM0C8pAKj9MWAAPWqwgTydiKnVfuRKseREYaQjntzJ5FSOiGw/SiJe46g2F0fE/Sz1cg7glUNQWw5yHA7wSjBx8mEiXmnstXSdPNjNcSppI88rPYesQjNxsMhE0vbjEc84uRuWQ8oRkrgtj1lcQDdO2QNs3Oe/7SqvHDhygsyWbk5+RtLpy5fvH/BCs8TJ67Q7W1yvq+/6ZTmbj6zG28vJ3fIZj6+f2EIf85q0JyPjuWepnxyVjSxSA1nXTWZuT9/l81DNpz3bfHiS95OmHnOh3RupnNFQXJuk3b7XOPnBlS4tRzwUJhZjJ6mPVwBD80RcqY/Mlqhu2Xxcir2t5BxDu3SNk+u1yBeUtAx77IXlUGI5QgtoqhucTCqeOOK6u/PxzGK9eFatsZ1ka5pxFhZtfX/JV+Ix2co+n35dW7u61nUH03Zz8n5PT2XjEZIOywdhecorjQP6eP1mu82fVVa813QvZvj+DQtGN9cIWtM4nbtunEkrjB87brz/0X461G/R6YHuYb7s/xyfGMXF911xcEyOz/dMhzebkj2Tc8rzTwToM3OE0oy6AoPH5KA2t3DTv+/qw7JzMsMUWjI0J2GIMSU2z/Bp4HGRa7d6+e025ZZmhwdXBfmPv7qu3+4PmrF+ij1nk+/zU6EhMsnc0pHm23Bpt4c+1/cvQ7hbW9BkD0NTTmbjjEXXZswzB19wa5+mxoZRWt4uxbvCEKrdofFvyHD3cG1xqm0aZ26YtGDwsLnzG8Lz9BlixvzvQoSy67xTsI97fpMN/hBMy8RRMieY5gU7iMtMgrWq2gp7wV/KcLpQ0fqrQ0VAh+2fZdS+mCvfWZwVL6yurVstWXaptMpsKh/3NboNHvUMnb24qd/sJdfmWBrHPiUNLrMbtj0kd01w9rV73/SXO75twdA53sP8GwLG0NiFOtOtDcOHCdr45mtsq8wYncTFzfTRzndymeSOgpkpnkkJA3X5Y7yXC8sveKIyc+yP2gbP0KkzZc9oY3kKflwt3IypJuFluP3g1r/HOKPeN0lYXTGUhMgtG9eNXvDx5HFhwYxC8oxOS+rz1KcDXFzrdMO1uqjQiuixRw/55uXyAQCshNj0U7ZqfGu02mjegegqBlEIKoIGojtt6J+SSLdMAAg4kJA8bYhz+q92vOrz00Y/t//jWTM7B8AODBCCUBDhPOjPNgMAawah248jjYQeAKgCYJsRQV8hgE4jkE5DRy7QMxFiBYGu2fAbMNyYZiYQAEdkQQ0AYAAI7c9GDBqPHdoqMYNfAweAoApBGAhqwGPTYBvY4TxUILU9GDjAgSoUww3UwBPSrjZwwT4MGWW0CQyMMGoTDEag0FhjTBq9/ATtWomMYsQRpRK1ahYtKiUABsmqhAFgFOc2wpfLsNoT2ltFY0ycmCq2NkdbEUFRQ3J0QvQVrgswV7EJJuq07BEZrOnwnEFpkK4Mq3poqwJgOr3jP8LTmOQrVKxKjVoNGg0EAA==) format('woff2');}
text.f0 {font-family:ec-lmss8;font-size:7.970112px}
text.f1 {font-family:cmr10;font-size:10.909088px}
text.f2 {font-family:ec-lmtt10;font-size:10.909088px}
@@ -33,151 +33,14 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</script>
</defs>
<rect x='-71.999989' y='-71.999989' height='255.118106' width='453.543292' fill='#fff'/>
-<text class='f8' x='-63.495975' y='-50.743793'>
-<tspan fill='#3333b3'>Pla</tspan>
-<tspan fill='#3333b3' x='-43.402798'>y</tspan>
-<tspan fill='#3333b3' x='-36.37901'>er</tspan>
-<tspan fill='#3333b3' x='-19.990946'>con</tspan>
-<tspan fill='#3333b3' x='.689801'>trol</tspan>
-</text>
-<text class='f10' x='-43.653545' y='-32.685079'>The<tspan x='-21.229552'>standard</tspan>
-<tspan x='24.315891'>pla</tspan>
-<tspan x='38.558207'>y</tspan>
-<tspan x='44.012972'>er</tspan>
-<tspan x='56.770611'>con</tspan>
-<tspan x='72.831195'>trols</tspan>
-<tspan x='97.770755'>(option</tspan>
-<tspan x='135.952665'>‘</tspan>
-</text>
+<text class='f8' x='-63.495975' y='-50.743793'><tspan fill='#3333b3'>Pla</tspan><tspan fill='#3333b3' x='-43.402798'>y</tspan><tspan fill='#3333b3' x='-36.37901'>er</tspan><tspan fill='#3333b3' x='-19.990946'>con</tspan><tspan fill='#3333b3' x='.689801'>trol</tspan></text>
+<text class='f10' x='-43.653545' y='-32.685079'>The<tspan x='-21.229552'>standard</tspan><tspan x='24.315891'>pla</tspan><tspan x='38.558207'>y</tspan><tspan x='44.012972'>er</tspan><tspan x='56.770611'>con</tspan><tspan x='72.831195'>trols</tspan><tspan x='97.770755'>(option</tspan><tspan x='135.952665'>‘</tspan></text>
<text class='f2' x='138.982945' y='-32.685079'>controls</text>
-<text class='f10' x='184.801081' y='-32.685079'>’)<tspan x='195.710271'>tak</tspan>
-<tspan x='210.862133'>e</tspan>
-<tspan x='219.347038'>a</tspan>
-<tspan x='228.43794'>lot</tspan>
-<tspan x='244.801674'>of</tspan>
-<tspan x='257.225843'>space</tspan>
-<tspan x='286.377473'>of</tspan>
-<tspan x='298.801642'>the</tspan>
-<tspan x='317.58964'>media</tspan>
-<tspan x='-43.653545' y='-19.135882'>displa</tspan>
-<tspan x='-16.017317'>y</tspan>
-<tspan x='-11.168602'>.</tspan>
-<tspan x='-3.28985'>Therefore,</tspan>
-<tspan x='49.194799'>it</tspan>
-<tspan x='60.103989'>is</tspan>
-<tspan x='71.073719'>not</tspan>
-<tspan x='90.467713'>recommended</tspan>
-<tspan x='159.588238'>to</tspan>
-<tspan x='172.921692'>enable</tspan>
-<tspan x='206.861049'>them.</tspan>
-<tspan x='238.98198'>Nev</tspan>
-<tspan x='257.467109'>ertheless,</tspan>
-<tspan x='-43.653545' y='-5.586685'>in</tspan>
-<tspan x='-34.865772'>teractivit</tspan>
-<tspan x='8.801585'>y</tspan>
-<tspan x='18.054651'>is</tspan>
-<tspan x='28.883278'>still</tspan>
-<tspan x='50.015018'>pro</tspan>
-<tspan x='65.499787'>vided</tspan>
-<tspan x='94.752762'>through</tspan>
-<tspan x='135.85401'>touc</tspan>
-<tspan x='156.157146'>h</tspan>
-<tspan x='165.712941'>or</tspan>
-<tspan x='178.935473'>left</tspan>
-<tspan x='197.885376'>mouse</tspan>
-<tspan x='231.137893'>button</tspan>
-<tspan x='266.754416'>clic</tspan>
-<tspan x='282.209025'>k,</tspan>
-<tspan x='294.520587'>and</tspan>
-<tspan x='315.591465'>through</tspan>
-<tspan x='-43.653545' y='7.962511'>the</tspan>
-<tspan x='-24.865547'>k</tspan>
-<tspan x='-19.410782'>eyb</tspan>
-<tspan x='-2.44085'>oard</tspan>
-<tspan x='22.437869'>as</tspan>
-<tspan x='35.831863'>summarized</tspan>
-<tspan x='96.528123'>in</tspan>
-<tspan x='109.255301'>the</tspan>
-<tspan x='128.043299'>table.</tspan>
-<tspan x='-43.653545' y='21.511708'>Clic</tspan>
-<tspan x='-25.168936'>k</tspan>
-<tspan x='-15.774766'>on</tspan>
-<tspan x='-.623325'>the</tspan>
-<tspan x='18.164673'>media</tspan>
-<tspan x='50.285481'>displa</tspan>
-<tspan x='77.921709'>y</tspan>
-<tspan x='87.315879'>to</tspan>
-<tspan x='100.649333'>start</tspan>
-<tspan x='126.801165'>pla</tspan>
-<tspan x='141.043481'>ybac</tspan>
-<tspan x='162.861878'>k.</tspan>
-<tspan x='176.498442'>T</tspan>
-<tspan x='183.467893'>o</tspan>
-<tspan x='192.558794'>pause</tspan>
-<tspan x='222.922415'>pla</tspan>
-<tspan x='237.164731'>ybac</tspan>
-<tspan x='258.983128'>k,</tspan>
-<tspan x='271.407578'>press</tspan>
-<tspan x='298.831941'>the</tspan>
-<tspan x='317.619938'>left</tspan>
-<tspan x='-43.653545' y='35.060904'>mouse</tspan>
-<tspan x='-10.259925'>button</tspan>
-<tspan x='25.497701'>on</tspan>
-<tspan x='40.649142'>the</tspan>
-<tspan x='59.43714'>media</tspan>
-<tspan x='91.557948'>displa</tspan>
-<tspan x='119.194176'>y</tspan>
-<tspan x='124.042892'>.</tspan>
-<tspan x='131.921644'>Release</tspan>
-<tspan x='170.921733'>it</tspan>
-<tspan x='181.830923'>to</tspan>
-<tspan x='195.164377'>resume</tspan>
-<tspan x='232.224735'>pla</tspan>
-<tspan x='246.467052'>ybac</tspan>
-<tspan x='268.285448'>k.</tspan>
-<tspan x='281.922012'>T</tspan>
-<tspan x='288.891463'>o</tspan>
-<tspan x='297.982364'>pause</tspan>
-<tspan x='-43.653545' y='48.610101'>pla</tspan>
-<tspan x='-29.411228'>ybac</tspan>
-<tspan x='-7.592832'>k</tspan>
-<tspan x='1.801338'>p</tspan>
-<tspan x='8.16491'>ermanen</tspan>
-<tspan x='48.497855'>tly</tspan>
-<tspan x='60.619403'>,</tspan>
-<tspan x='67.286041'>press</tspan>
-<tspan x='94.710403'>the</tspan>
-<tspan x='113.498401'>left</tspan>
-<tspan x='132.589407'>mouse</tspan>
-<tspan x='165.983027'>button</tspan>
-<tspan x='201.740653'>on</tspan>
-<tspan x='216.892094'>the</tspan>
-<tspan x='235.680092'>media</tspan>
-<tspan x='267.800901'>displa</tspan>
-<tspan x='295.437128'>y</tspan>
-<tspan x='304.831298'>and</tspan>
-<tspan x='326.043279'>mo</tspan>
-<tspan x='340.285314'>v</tspan>
-<tspan x='345.740079'>e</tspan>
-<tspan x='-43.653545' y='62.159298'>the</tspan>
-<tspan x='-24.865547'>mouse</tspan>
-<tspan x='8.528073'>out</tspan>
-<tspan x='27.922067'>while</tspan>
-<tspan x='56.40662'>k</tspan>
-<tspan x='61.861385'>eeping</tspan>
-<tspan x='95.800743'>the</tspan>
-<tspan x='114.588741'>button</tspan>
-<tspan x='150.346366'>pressed.</tspan>
-</text>
+<text class='f10' x='184.801081' y='-32.685079'>’)<tspan x='195.710271'>tak</tspan><tspan x='210.862133'>e</tspan><tspan x='219.347038'>a</tspan><tspan x='228.43794'>lot</tspan><tspan x='244.801674'>of</tspan><tspan x='257.225843'>space</tspan><tspan x='286.377473'>of</tspan><tspan x='298.801642'>the</tspan><tspan x='317.58964'>media</tspan><tspan x='-43.653545' y='-19.135882'>displa</tspan><tspan x='-16.017317'>y</tspan><tspan x='-11.168602'>.</tspan><tspan x='-3.28985'>Therefore,</tspan><tspan x='49.194799'>it</tspan><tspan x='60.103989'>is</tspan><tspan x='71.073719'>not</tspan><tspan x='90.467713'>recommended</tspan><tspan x='159.588238'>to</tspan><tspan x='172.921692'>enable</tspan><tspan x='206.861049'>them.</tspan><tspan x='238.98198'>Nev</tspan><tspan x='257.467109'>ertheless,</tspan><tspan x='-43.653545' y='-5.586685'>in</tspan><tspan x='-34.865772'>teractivit</tspan><tspan x='8.801585'>y</tspan><tspan x='18.054651'>is</tspan><tspan x='28.883278'>still</tspan><tspan x='50.015018'>pro</tspan><tspan x='65.499787'>vided</tspan><tspan x='94.752762'>through</tspan><tspan x='135.85401'>touc</tspan><tspan x='156.157146'>h</tspan><tspan x='165.712941'>or</tspan><tspan x='178.935473'>left</tspan><tspan x='197.885376'>mouse</tspan><tspan x='231.137893'>button</tspan><tspan x='266.754416'>clic</tspan><tspan x='282.209025'>k,</tspan><tspan x='294.520587'>and</tspan><tspan x='315.591465'>through</tspan><tspan x='-43.653545' y='7.962511'>the</tspan><tspan x='-24.865547'>k</tspan><tspan x='-19.410782'>eyb</tspan><tspan x='-2.44085'>oard</tspan><tspan x='22.437869'>as</tspan><tspan x='35.831863'>summarized</tspan><tspan x='96.528123'>in</tspan><tspan x='109.255301'>the</tspan><tspan x='128.043299'>table.</tspan><tspan x='-43.653545' y='21.511708'>Clic</tspan><tspan x='-25.168936'>k</tspan><tspan x='-15.774766'>on</tspan><tspan x='-.623325'>the</tspan><tspan x='18.164673'>media</tspan><tspan x='50.285481'>displa</tspan><tspan x='77.921709'>y</tspan><tspan x='87.315879'>to</tspan><tspan x='100.649333'>start</tspan><tspan x='126.801165'>pla</tspan><tspan x='141.043481'>ybac</tspan><tspan x='162.861878'>k.</tspan><tspan x='176.498442'>T</tspan><tspan x='183.467893'>o</tspan><tspan x='192.558794'>pause</tspan><tspan x='222.922415'>pla</tspan><tspan x='237.164731'>ybac</tspan><tspan x='258.983128'>k,</tspan><tspan x='271.407578'>press</tspan><tspan x='298.831941'>the</tspan><tspan x='317.619938'>left</tspan><tspan x='-43.653545' y='35.060904'>mouse</tspan><tspan x='-10.259925'>button</tspan><tspan x='25.497701'>on</tspan><tspan x='40.649142'>the</tspan><tspan x='59.43714'>media</tspan><tspan x='91.557948'>displa</tspan><tspan x='119.194176'>y</tspan><tspan x='124.042892'>.</tspan><tspan x='131.921644'>Release</tspan><tspan x='170.921733'>it</tspan><tspan x='181.830923'>to</tspan><tspan x='195.164377'>resume</tspan><tspan x='232.224735'>pla</tspan><tspan x='246.467052'>ybac</tspan><tspan x='268.285448'>k.</tspan><tspan x='281.922012'>T</tspan><tspan x='288.891463'>o</tspan><tspan x='297.982364'>pause</tspan><tspan x='-43.653545' y='48.610101'>pla</tspan><tspan x='-29.411228'>ybac</tspan><tspan x='-7.592832'>k</tspan><tspan x='1.801338'>p</tspan><tspan x='8.16491'>ermanen</tspan><tspan x='48.497855'>tly</tspan><tspan x='60.619403'>,</tspan><tspan x='67.286041'>press</tspan><tspan x='94.710403'>the</tspan><tspan x='113.498401'>left</tspan><tspan x='132.589407'>mouse</tspan><tspan x='165.983027'>button</tspan><tspan x='201.740653'>on</tspan><tspan x='216.892094'>the</tspan><tspan x='235.680092'>media</tspan><tspan x='267.800901'>displa</tspan><tspan x='295.437128'>y</tspan><tspan x='304.831298'>and</tspan><tspan x='326.043279'>mo</tspan><tspan x='340.285314'>v</tspan><tspan x='345.740079'>e</tspan><tspan x='-43.653545' y='62.159298'>the</tspan><tspan x='-24.865547'>mouse</tspan><tspan x='8.528073'>out</tspan><tspan x='27.922067'>while</tspan><tspan x='56.40662'>k</tspan><tspan x='61.861385'>eeping</tspan><tspan x='95.800743'>the</tspan><tspan x='114.588741'>button</tspan><tspan x='150.346366'>pressed.</tspan></text>
<rect x='-43.653545' y='76.704758' height='.3985' width='177.108381'/>
-<text class='f10' x='-37.675945' y='86.58765'>Command<tspan x='63.733564' y='86.58765'>Shortcut</tspan>
-</text>
+<text class='f10' x='-37.675945' y='86.58765'>Command<tspan x='63.733564' y='86.58765'>Shortcut</tspan></text>
<rect x='-43.653545' y='90.652439' height='.3985' width='177.108381'/>
-<text class='f10' x='-37.675945' y='102.323456'>T<tspan x='-30.706495'>oggle</tspan>
-<tspan x='-2.827677'>Pla</tspan>
-<tspan x='12.778275'>y/P</tspan>
-<tspan x='31.111759'>ause</tspan>
-</text>
+<text class='f10' x='-37.675945' y='102.323456'>T<tspan x='-30.706495'>oggle</tspan><tspan x='-2.827677'>Pla</tspan><tspan x='12.778275'>y/P</tspan><tspan x='31.111759'>ause</tspan></text>
<g stroke-miterlimit='10' transform='translate(95.605408,98.742098)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
@@ -204,9 +67,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='-37.675945' y='116.098657'>Increase<tspan x='4.536229'>v</tspan>
-<tspan x='9.990994'>olume</tspan>
-</text>
+<text class='f10' x='-37.675945' y='116.098657'>Increase<tspan x='4.536229'>v</tspan><tspan x='9.990994'>olume</tspan></text>
<g stroke-miterlimit='10' transform='translate(72.114626,112.5173)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
@@ -254,9 +115,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='-37.675945' y='129.873859'>Decrease<tspan x='7.718435'>v</tspan>
-<tspan x='13.1732'>olume</tspan>
-</text>
+<text class='f10' x='-37.675945' y='129.873859'>Decrease<tspan x='7.718435'>v</tspan><tspan x='13.1732'>olume</tspan></text>
<g stroke-miterlimit='10' transform='translate(72.114626,126.292501)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
@@ -304,9 +163,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='-37.675945' y='143.64906'>Unm<tspan x='-14.646098'>ute</tspan>
-<tspan x='4.141899'>audio</tspan>
-</text>
+<text class='f10' x='-37.675945' y='143.64906'>Unm<tspan x='-14.646098'>ute</tspan><tspan x='4.141899'>audio</tspan></text>
<g stroke-miterlimit='10' transform='translate(73.207147,140.067703)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
@@ -381,8 +238,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='-37.675945' y='157.424262'>Mute<tspan x='-8.887583'>audio</tspan>
-</text>
+<text class='f10' x='-37.675945' y='157.424262'>Mute<tspan x='-8.887583'>audio</tspan></text>
<g stroke-miterlimit='10' transform='translate(73.207147,153.842904)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
@@ -457,10 +313,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='-37.675945' y='171.199463'>T<tspan x='-30.706495'>oggle</tspan>
-<tspan x='-2.827677'>F</tspan>
-<tspan x='3.384674'>ull-Screen</tspan>
-</text>
+<text class='f10' x='-37.675945' y='171.199463'>T<tspan x='-30.706495'>oggle</tspan><tspan x='-2.827677'>F</tspan><tspan x='3.384674'>ull-Screen</tspan></text>
<g stroke-miterlimit='10' transform='translate(73.172396,167.618106)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
@@ -488,13 +341,9 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
<rect x='154.771657' y='76.704758' height='.3985' width='174.684548'/>
-<text class='f10' x='160.749256' y='86.58765'>Command<tspan x='259.734933' y='86.58765'>Shortcut</tspan>
-</text>
+<text class='f10' x='160.749256' y='86.58765'>Command<tspan x='259.734933' y='86.58765'>Shortcut</tspan></text>
<rect x='154.771657' y='90.652439' height='.3985' width='174.684548'/>
-<text class='f10' x='160.749256' y='102.323456'>Seek<tspan x='185.901062'>bac</tspan>
-<tspan x='201.961647'>k</tspan>
-<tspan x='211.355816'>1</tspan>
-</text>
+<text class='f10' x='160.749256' y='102.323456'>Seek<tspan x='185.901062'>bac</tspan><tspan x='201.961647'>k</tspan><tspan x='211.355816'>1</tspan></text>
<text class='f1' x='218.628919' y='102.323456'>%</text>
<g stroke-miterlimit='10' transform='translate(268.115994,98.742098)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
@@ -543,10 +392,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='160.749256' y='116.098657'>Seek<tspan x='185.901062'>forw</tspan>
-<tspan x='206.537108'>ard</tspan>
-<tspan x='225.961282'>1</tspan>
-</text>
+<text class='f10' x='160.749256' y='116.098657'>Seek<tspan x='185.901062'>forw</tspan><tspan x='206.537108'>ard</tspan><tspan x='225.961282'>1</tspan></text>
<text class='f1' x='233.234385' y='116.098657'>%</text>
<g stroke-miterlimit='10' transform='translate(268.115994,112.5173)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
@@ -595,10 +441,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='160.749256' y='129.873859'>Seek<tspan x='185.901062'>bac</tspan>
-<tspan x='201.961647'>k</tspan>
-<tspan x='211.355816'>10</tspan>
-</text>
+<text class='f10' x='160.749256' y='129.873859'>Seek<tspan x='185.901062'>bac</tspan><tspan x='201.961647'>k</tspan><tspan x='211.355816'>10</tspan></text>
<text class='f1' x='224.083463' y='129.873859'>%</text>
<g stroke-miterlimit='10' transform='translate(269.208516,126.292501)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
@@ -674,10 +517,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='160.749256' y='143.64906'>Seek<tspan x='185.901062'>forw</tspan>
-<tspan x='206.537108'>ard</tspan>
-<tspan x='225.961282'>10</tspan>
-</text>
+<text class='f10' x='160.749256' y='143.64906'>Seek<tspan x='185.901062'>forw</tspan><tspan x='206.537108'>ard</tspan><tspan x='225.961282'>10</tspan></text>
<text class='f1' x='238.688929' y='143.64906'>%</text>
<g stroke-miterlimit='10' transform='translate(269.208516,140.067703)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
@@ -753,10 +593,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='160.749256' y='157.424262'>Seek<tspan x='185.901062'>to</tspan>
-<tspan x='199.234516'>b</tspan>
-<tspan x='205.598088'>eginning</tspan>
-</text>
+<text class='f10' x='160.749256' y='157.424262'>Seek<tspan x='185.901062'>to</tspan><tspan x='199.234516'>b</tspan><tspan x='205.598088'>eginning</tspan></text>
<g stroke-miterlimit='10' transform='translate(273.196673,153.842904)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
@@ -783,9 +620,7 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f10' x='160.749256' y='171.199463'>Seek<tspan x='185.901062'>to</tspan>
-<tspan x='199.234516'>end</tspan>
-</text>
+<text class='f10' x='160.749256' y='171.199463'>Seek<tspan x='185.901062'>to</tspan><tspan x='199.234516'>end</tspan></text>
<g stroke-miterlimit='10' transform='translate(269.453873,167.618106)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
@@ -813,13 +648,9 @@ text.f10 {font-family:ec-lmr10;font-size:10.909088px}
</g>
</g>
<a xlink:href='beamer-example-3.svg' xlink:title='beamer-example-3.svg'>
-<rect fill='none' stroke='#adade0' stroke-width='.5' x='357.255493' y='-70.904267' width='10.545452' height='11.909088'/>
-<text class='f9' x='357.755493' y='-60.858816'>
-<tspan fill='#adade0'></tspan>
-</text>
+<rect fill='none' stroke='#adade0' stroke-width='.5' x='357.255493' y='-70.15154' width='10.545452' height='10.403634'/>
+<text class='f9' x='357.755493' y='-60.858816'><tspan fill='#adade0'></tspan></text>
</a>
-<text class='f9' x='369.649393' y='-60.858816'>
-<tspan fill='#bfbfbf'></tspan>
-</text>
+<text class='f9' x='369.649393' y='-60.858816'><tspan fill='#bfbfbf'></tspan></text>
</g>
</svg> \ No newline at end of file
diff --git a/macros/latex/contrib/media4svg/media4svg.lua b/macros/latex/contrib/media4svg/media4svg.lua
index 5714ffb241..ae291a368e 100755
--- a/macros/latex/contrib/media4svg/media4svg.lua
+++ b/macros/latex/contrib/media4svg/media4svg.lua
@@ -32,7 +32,7 @@
-- conditions of the LaTeX Project Public License.
--
-- The latest version of this license is in
--- http://mirrors.ctan.org/macros/latex/base/lppl.txt
+-- http://www.latex-project.org/lppl.txt
--
-- This work has the LPPL maintenance status `maintained'.
--
diff --git a/macros/latex/contrib/media4svg/media4svg.sty b/macros/latex/contrib/media4svg/media4svg.sty
index 8d20eafca5..58508dc662 100644
--- a/macros/latex/contrib/media4svg/media4svg.sty
+++ b/macros/latex/contrib/media4svg/media4svg.sty
@@ -17,7 +17,7 @@
% conditions of the LaTeX Project Public License.
%
% The latest version of this license is in
-% http://mirrors.ctan.org/macros/latex/base/lppl.txt
+% http://www.latex-project.org/lppl.txt
%
% This work has the LPPL maintenance status `maintained'.
%
@@ -25,8 +25,8 @@
\RequirePackage{l3keys2e}
-\def\g@msvg@date@tl{2021/10/19}
-\def\g@msvg@version@tl{0.6}
+\def\g@msvg@date@tl{2022/05/18}
+\def\g@msvg@version@tl{0.7}
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesExplPackage{media4svg}{\g@msvg@date@tl}{\g@msvg@version@tl}
@@ -205,7 +205,10 @@
height='0'~
onfocus=''~
onkeydown='
- event.preventDefault();event.stopPropagation();
+ event.preventDefault();
+ if(!(event.key==="PageDown"||event.key==="PageUp")){
+ event.stopPropagation();
+ }
switch(event.key){
case "~":
if($("\g_msvg_id_tl").paused){
@@ -282,7 +285,10 @@
event.target.focus(); % Firefox
'~
onkeydown='
- event.preventDefault();event.stopPropagation();
+ event.preventDefault();
+ if(!(event.key==="PageDown"||event.key==="PageUp")){
+ event.stopPropagation();
+ }
switch(event.key){
case "~":
if(event.target.paused){
diff --git a/macros/latex/contrib/verifiche/verifiche-example.pdf b/macros/latex/contrib/verifiche/verifiche-example.pdf
index 72d381a5b3..191c055935 100644
--- a/macros/latex/contrib/verifiche/verifiche-example.pdf
+++ b/macros/latex/contrib/verifiche/verifiche-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/verifiche/verifiche-example.tex b/macros/latex/contrib/verifiche/verifiche-example.tex
index 95a86ed779..ec32c5f405 100644
--- a/macros/latex/contrib/verifiche/verifiche-example.tex
+++ b/macros/latex/contrib/verifiche/verifiche-example.tex
@@ -6,9 +6,9 @@
\usepackage[margin=3cm]{geometry}
\usepackage{lipsum}
+
\begin{document}
%\renewcommand{\institutefont}{\huge}
-\renewcommand{\closedquestionitem}{$\bigcirc$}
\institute{Scuola superiore di Paperopoli}
\asyear[Anno accademico]{2019/2020}
@@ -85,7 +85,7 @@ Calcolare
\ptprefix{.../}
\ptdelimiters{[]}
\ptlabel{punti}
-\begin{esercizio}[pt=2]
+\begin{esercizio}[pt=2]\label{es:derivata}
Calcolare la seguente derivata:
\[
\frac{d e^x}{dx} =
@@ -114,6 +114,11 @@ Risolvere i seguenti quesiti:
Questa è la soluzione dell'esercizio \ref{es:ferropiuma} a pagina \pageref{es:ferropiuma}.
\end{soluzione}
+\begin{soluzione}[label={Soluzione dell'esercizio \ref{es:ferropiuma}}]
+Soluzione dell'esercizio a pagina \pageref{es:ferropiuma}.
+\end{soluzione}
+
+
\begin{esercizio}
La branca della fisica che si occupa dello studio di \emph{come} si muovono i corpi è detta: \inlinesol{cinematica.}
@@ -134,7 +139,7 @@ Io sono vera & \truefalse{V}
\end{esercizio}
\begin{esercizio}
-Quali delle seguenti equazioni descrive il moto rettilineo uniforme?\par
+Quali delle seguenti equazioni descrive il moto rettilineo uniforme?
\begin{closedquestion}
\item $a=\SI{5}{\m\per\s\squared}$
\item[\checked] $x(t) = v t + x_0$
@@ -143,6 +148,18 @@ Quali delle seguenti equazioni descrive il moto rettilineo uniforme?\par
\end{closedquestion}
\end{esercizio}
+\renewcommand{\closedquestionitem}{$\bigcirc$}
+\renewcommand{\checkmarker}{$\times$\,}
+\begin{esercizio}
+Quali delle seguenti equazioni descrive il moto rettilineo uniforme?\par
+\begin{closedquestion*}
+\item $a=\SI{5}{\m\per\s\squared}$
+\item[\checked] $x(t) = v t + x_0$
+\item $x(t) = t^3$
+\item $t = a^2$
+\end{closedquestion*}
+\end{esercizio}
+
\begin{esercizio}
\lipsum[2]\\[1em]
\openquestion[height=5cm]{\lipsum[1]}
@@ -176,17 +193,49 @@ A differenza dei numeri assoluti, la differenza tra due \finderror{numeri razio
}
\end{esercizio}
+\begin{esercizio}[pt=3]\label{es:ultimo}
+\makecolumn{.5\textwidth}{%
+ Dato il seguente grafico indicare sul grafico i punti di massimo globale.
+}
+\makecolumn{.4\textwidth}{
+\hspace*{\fill}
+\fbox{
+ \begin{tikzpicture}[baseline=(current bounding box.north)]
+ \draw[latex-latex] (3,0) node[right] {$x$} -- (0,0) -- (0,3) node[above]{$y$};
+ \draw plot[domain=0:3, samples=100] (\x, {2.5*exp(-\x^2)});
+ \inlinesol{\draw[fill, red] (0,2.5) circle (2pt);}
+ \end{tikzpicture}}
+\hspace*{\fill}
+\\[1em]
+\lipsum[2]
+}
+\end{esercizio}
+
-\begin{center}
-%\begin{tabular}{| l | c | c | c |}
-\begin{tabular}{ | l | >{\centering}p{2cm} | >{\centering}p{2cm} | >{\centering\arraybackslash}p{2cm} | }
+\vfill
+\centering
+\begin{tabular}{|c|c|c|c|c|c|c|}
+\hline
+Esercizio & Quesito \ref{es:ferropiuma}
+ & Quesito \ref{es:grav}
+ & Quesito \ref{es:meccanica}
+ & Quesito \ref{es:derivata}
+ & Quesito \ref{es:ultimo}
+ & Totale
+ \\
+ & \ref{ptes@2} pt
+ & \ref{ptes@4} pt
+ & \ref{ptes@7} pt
+ & \ref{ptes@9} pt
+ & \ref{ptes@20} pt
+ &
+ \\
\hline
-Esercizio & \ref{es:ferropiuma} & \ref{es:grav} & \ref{es:meccanica} \\\hline
-Punteggio totale & \ref{ptes@2} & \ref{ptes@4} & \ref{ptes@7}\\\hline
-Punteggio & & & \\\hline
+Punteggio &&&&&&\\[1em]
+\hline
+\multicolumn{4}{c}{}&&Voto&\\[1em]
+\cline{6-7}
\end{tabular}
-\end{center}
-
-\end{document}
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/verifiche/verifiche.dtx b/macros/latex/contrib/verifiche/verifiche.dtx
index 4172a0771f..90f9978a64 100644
--- a/macros/latex/contrib/verifiche/verifiche.dtx
+++ b/macros/latex/contrib/verifiche/verifiche.dtx
@@ -16,7 +16,7 @@
%
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{verifiche} [2022/03/10 v4.4 .dtx verifiche file]
+%<package>\ProvidesPackage{verifiche} [2022/03/10 v5.0 .dtx verifiche file]
%<*driver>
\documentclass{ltxdoc}
\usepackage[utf8]{inputenc}
@@ -28,7 +28,10 @@
morekeywords={\setlength, \institute, \asyear, \testtype, \instruction, \duration, \printheading,
\institutefont, \asyearfont, \testtypefont, \instructiondelimiter, \headerfont, \instrunctionfont,
\durationfont, \exerciselabel, \solutionfont, \solutionlabel, \diffsymb, \closedquestionitem,
- \inlinesol, \completetext, \truefalse, \openquestion, \linedopenquestion, \squaredopenquestion, \headercandidatenamelabel, \checked, \finderror, \textandimage, \partialpt, \ptprefix, \ptlabel, \partialptlabel, \partialptdelimiters, \ptdelimiters, \partialptprefix},
+ \inlinesol, \completetext, \truefalse, \openquestion, \linedopenquestion, \squaredopenquestion,
+ \headercandidatenamelabel, \checked, \finderror, \textandimage, \partialpt, \ptprefix, \ptlabel,
+ \partialptlabel, \partialptdelimiters, \ptdelimiters, \partialptprefix, \checkmaker, \ref, \tikz, \makecolumn,
+ \columnseparation},
keywordstyle=\color{blue},
escapeinside={*@}{@*},
inputencoding=utf8,
@@ -60,13 +63,14 @@
\EnableCrossrefs
\CodelineIndex
\RecordChanges
+\parindent0pt
\begin{document}
\DocInput{verifiche.dtx}
\end{document}
%</driver>
% \fi
%
-% \CheckSum{820}
+% \CheckSum{863}
% \changes{v1.0}{2020/06/14}{Initial version.}
% \changes{v2.0}{2020/06/26}{Better performance in exercise environment.}
% \changes{v2.1}{2020/06/30}{Introduced closedquestionitem to control |item| symbol.}
@@ -77,6 +81,7 @@
% \changes{v4.2}{2021/08/18}{Solved truefalse issue in solutionsmode. Add noexercisept global option to hide the score of each exercise.}
% \changes{v4.3}{2022/02/10}{Move |parindent{0pt}| inside the environment.}
% \changes{v4.4}{2022/03/10}{Minor update. Fixed labels issues.}
+% \changes{v5.0}{2022/05/18}{Major update. Remove some unnecessary packages. Remove spurious space in closedquestion environment. Add a starred version of closedquestion environment. Add the possibility to add local label to soluzione environment. Add a new command: makecolumn.}
% \GetFileInfo{verifiche.sty}
% \DoNotIndex{\newcommand,\newenvironment,\def,\begin,\end,\par}
% \DoNotIndex{\DeclareOption,\ExecuteOptions,\ProcessOptions,\RequirePackage}
@@ -110,7 +115,7 @@
% \DoNotIndex{\or, \overset, \PackageError, \PackageWarning, \parindent, \pgfmathparse, \pgfmathresult}
% \DoNotIndex{\ProcessOptionsX, \protected@write, \ref, \refstepcounter, \reversemarginpar, \rule}
% \DoNotIndex{\scshape, setkeys, \sffamily, \sisetup, \spacedim, \string, \tikz, \underline, \usetikzlibrary}
-% \DoNotIndex{\val, \xout, \y, \usebox, \romannumeral, \@ifundefined, \ltx@zero, \rc@default, \rc@extract@, \chardef}
+% \DoNotIndex{\val, \xout, \y, \usebox, \romannumeral, \@ifundefined, \ltx@zero, \rc@default, \rc@extract@, \chardef, \llap}
%
%
% \title{Il pacchetto \textsf{verifiche}
@@ -545,13 +550,13 @@ che voglio somministrare
%
%
%\vspace{1em}
-%\DescribeEnv{soluzione}\label{sec:solutions}L'ambiente |soluzione| racchiude al suo interno tutto il materiale utile ad essere visualizzato solo in presenza dell'\emph{opzione} |solutions| del pacchetto \textsf{verifiche}. Quando il pacchetto è in modalità "test" il contenuto dell'ambiente |soluzione| viene ignorato.
+%\DescribeEnv{soluzione}\label{sec:solutions}L'ambiente |soluzione| racchiude al suo interno tutto il materiale utile ad essere visualizzato solo in presenza dell'\emph{opzione} |solutions| del pacchetto \textsf{verifiche}. Quando il pacchetto è in modalità "test" il contenuto dell'ambiente |soluzione| viene ignorato. L'etichetta che introduce l'ambiente può essere modificata localmente tramite l'opzione |label|.
%
% \iffalse
%<*example>
% \fi
\begin{lstlisting}
-\begin{soluzione}
+\begin{soluzione}[label=*@\meta{label}@*]
...
\end{soluzione}
\end{lstlisting}
@@ -631,7 +636,16 @@ dell'esercizio somministrato
% \iffalse
%</example>
% \fi
-%Il comando produce due riquadri quadrati allineati con le lettere \texttt V e \texttt F; l'argomento obbligatorio richiede di indicare la lettera |V| o |F| al fine di poter realizzare un segno di spunta ($\checkmark$) sulla casella giusta nella modalità |solutions| del pacchetto.
+%Il comando produce due riquadri quadrati allineati con le lettere \texttt V e \texttt F; l'argomento obbligatorio richiede di indicare la lettera |V| o |F| al fine di poter realizzare un segno di spunta ($\checkmark$) sulla casella giusta nella modalità |solutions| del pacchetto. Tale simbolo può essere modificato ridefinendo il comando \DescribeMacro{\checkmaker}|\checkmaker|. Il pacchetto ammette degli argomenti opzionali che possono essere tutti quelli descritti nel pacchetto |enumitem|.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\renewcommand{\checkmaker}*@\marg{...}@*
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \iffalse
%<*example>
% \fi
@@ -643,7 +657,28 @@ dell'esercizio somministrato
% \fi
%
%
-%\DescribeEnv{closedquestion}Le domande a scelta multipla possono essere realizzate tramite l'ambiente |closedquestion|. Ogni opzione deve essere anticipata dal comando \DescribeMacro{\item}|\item| che realizza un quadrato davanti ad ogni voce. Queste poi vengono spaziate orizzontalmente in modo da riempire tutto lo spazio disponibile. Eventuali elenchi verticali possono essere realizzati introducendo a mano una nuova linea (|\\|). La soluzione (o le soluzioni) possono essere segnate tramite il comando \DescribeMacro{\checked}|\checked| posto come argomento opzionale del comando |\item| e che, nella modalità |solutions|, produce un segno di spunta ($\checkmark$) sulla casella selezionata.
+%\DescribeEnv{closedquestion}Le domande a scelta multipla possono essere realizzate tramite l'ambiente |closedquestion|. Questo comando genera un elenco verticale di elementi ciascuno introdotto dal comando \DescribeMacro{\item}|\item| che realizza un quadrato davanti ad ogni voce.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{closedquestion}[...]
+\item ...
+\end{closedquestion}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%La soluzione (o le soluzioni) possono essere segnate tramite il comando \DescribeMacro{\checked}|\checked| posto come argomento opzionale del comando |\item| e che, nella modalità |solutions|, produce un segno di spunta ($\checkmark$) sulla casella selezionata. Anche in questo caso tale simbolo può essere modificato ridefinendo il comando |\checkmaker|. Il pacchetto ammette degli argomenti opzionali che possono essere tutti quelli descritti nel pacchetto |enumitem|.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\renewcommand{\checkmaker}*@\marg{...}@*
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
%
% \iffalse
%<*example>
@@ -651,14 +686,14 @@ dell'esercizio somministrato
\example
{\begin{closedquestion}
\item Primo
-\item[\checked] Secondo\\
+\item[\checked] Secondo
\item Terzo
\item Quarto
\end{closedquestion}}
{\begin{closedquestion}
\item Primo
\item[\checked] Secondo
-\end{closedquestion}\\
+\end{closedquestion}
\begin{closedquestion}
\item Terzo
\item Quarto
@@ -668,6 +703,20 @@ dell'esercizio somministrato
% \fi
%
%
+% L'ambiente \DescribeMacro{closeduestion}|closeduestion*| è analogo al precedente, fatto salvo che è adibito a produrre elenchi in linea; gli elementi vengono spaziati orizzontalmente in modo da riempire tutto lo spazio disponibile. Anche in questo caso i comandi del pacchetto |enumitem| possono essere usati tra le opzioni dell'ambiente.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{closedquestion*}[...]
+\item ...
+\end{closedquestion*}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
%\DescribeMacro{\openquestion}Il comando produce una base di supporto per la scrittura, ovvero delle linee o dei quadretti. La sintassi del comando è la seguente:
% \iffalse
%<*example>
@@ -766,6 +815,39 @@ dell'esercizio somministrato
%</example>
% \fi
%
+%
+%\vspace{1em}
+%\DescribeMacro{\makecolumn} Il pacchetto |verifiche| definisce anche un proprio comando per produrre del testo in colonna tramite il comando |\makecolumn| che ha la seguente sintassi:
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\makecolumn*@\marg{width}\marg{text}@*
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% La larghezza è controllata tramite l'argomento opzionale \meta{width}, mentre il testo da mettere in colonne può risiedere, anche con paragrafi, entro il campo \meta{text}. La spaziatura tra le colonne può essere modificata ridefinendo la lunghezza |\columnseparation| (di default viene inizializzata col valore |\hfill|).
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\setlength{\columnseparation}*@\marg{dim}@*
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \iffalse
+%<*example>
+% \fi
+\example
+{\makecolumn{.3\textwidth}{Colonna 1}
+\makecolumn{.3\textwidth}{Colonna 2}}
+{\makecolumn{2.5cm}{Colonna 1} \makecolumn{2.5cm}{Colonna 2}}% \iffalse
+%</example>
+% \fi
+%
+%
%\section{Personalizzazione}
%Il pacchetto prevede un certo numero di comandi definiti al fine di gestire l'aspetto del documento finale.
%\subsection*{Font}
@@ -979,7 +1061,6 @@ dell'esercizio somministrato
\RequirePackage{tikz}
\RequirePackage{booktabs}
\RequirePackage[normalem]{ulem}
-\RequirePackage{xstring}
% \end{macrocode}
%
%
@@ -1061,10 +1142,12 @@ dell'esercizio somministrato
\newlength{\classrulerlength}
\newlength{\daterulerlength}
\newlength{\ptrulerlength}
+\newlength{\columnseparation}
\setlength{\candidatenamerulerlength}{.35\textwidth}
\setlength{\classrulerlength}{.1\textwidth}
\setlength{\daterulerlength}{.15\textwidth}
\setlength{\ptrulerlength}{1cm}
+\setlength{\columnseparation}{\fill}
% \end{macrocode}
%
%\subsection{Labels}
@@ -1074,34 +1157,34 @@ dell'esercizio somministrato
%Some labels are define as a variable in order to leave the user the possibility of customization the predefine texts.
%If the package \textsf{babel} or \textsf{polyglossia} is loaded with the italian language specify, than the predefine labels are redefine:
% \begin{macrocode}
-\@ifpackageloaded{babel}{%
- \addto\captionsitalian{%
- \def\@verifiche@durationlabeldefault{Tempo della prova:}%
- \def\@verifiche@asyearlabeldefault{Anno scolastico}%
- \def\@verifiche@headercandidatenamelabel{Nome e Cognome}%
- \def\@verifiche@headerclasslabel{Classe}%
- \def\@verifichhe@headerdatelabel{Data}%
- \def\@verifiche@exerciselabel{Quesito}%
- \def\@verifiche@solutionlabel{Soluzione}%
- }}{%
-\@ifpackageloaded{polyglossia}{%
- \addto\captionsitalian{%
- \def\@verifiche@durationlabeldefault{Tempo della prova:}%
- \def\@verifiche@asyearlabeldefault{Anno scolastico}%
- \def\@verifiche@headercandidatenamelabel{Nome e Cognome}%
- \def\@verifiche@headerclasslabel{Classe}%
- \def\@verifichhe@headerdatelabel{Data}%
- \def\@verifiche@exerciselabel{Quesito}%
- \def\@verifiche@solutionlabel{Soluzione}%
- }}{
- \def\@verifiche@durationlabeldefault{Time:}%
- \def\@verifiche@asyearlabeldefault{School year}%
- \def\@verifiche@headercandidatenamelabel{Name and Surname}%
- \def\@verifiche@headerclasslabel{Class}%
- \def\@verifichhe@headerdatelabel{Date}%
- \def\@verifiche@exerciselabel{Exercise}%
- \def\@verifiche@solutionlabel{Solution}%
- }}%
+\newcommand{\@verifiche@durationlabeldefault}{Time:}%
+\newcommand{\@verifiche@asyearlabeldefault}{School year}%
+\newcommand{\@verifiche@headercandidatenamelabel}{Name and Surname}%
+\newcommand{\@verifiche@headerclasslabel}{Class}%
+\newcommand{\@verifichhe@headerdatelabel}{Date}%
+\newcommand{\@verifiche@exerciselabel}{Exercise}%
+\newcommand{\@verifiche@solutionlabel}{Solution}%
+\newcommand{\@verifiche@Tletter}{T}%
+\newcommand{\@verifiche@Fletter}{F}%
+%
+\newcommand{\italiandictiornary}{%
+ \renewcommand{\@verifiche@durationlabeldefault}{Tempo della prova:}%
+ \renewcommand{\@verifiche@asyearlabeldefault}{Anno scolastico}%
+ \renewcommand{\@verifiche@headercandidatenamelabel}{Nome e Cognome}%
+ \renewcommand{\@verifiche@headerclasslabel}{Classe}%
+ \renewcommand{\@verifichhe@headerdatelabel}{Data}%
+ \renewcommand{\@verifiche@exerciselabel}{Quesito}%
+ \renewcommand{\@verifiche@solutionlabel}{Soluzione}%
+ \renewcommand{\@verifiche@Tletter}{V}%
+ \renewcommand{\@verifiche@Fletter}{F}%
+}%
+\@ifpackageloaded{babel}{% if babel is loaded
+ \addto\captionsitalian{\italiandictiornary}%
+}{%else if polyglossia is loaded
+ \@ifpackageloaded{polyglossia}{%
+ \addto\captionsitalian{\italiandictiornary}%
+ }{}%
+}%
% \end{macrocode}
% \begin{macrocode}
\newcommand{\@durationlabeldefault}{\@verifiche@durationlabeldefault}%
@@ -1259,6 +1342,13 @@ dell'esercizio somministrato
\@defineptdelimiter#1}
% \end{macrocode}
%\iffalse
+%% checkmaker
+%\fi
+% \begin{macrocode}
+\newcommand{\checkmarker}{$\checkmark$}%
+\newcommand{\verifiche@checkmarker}{\bgroup\ifsolutionscolor\color{\solutionscolor}\fi\checkmarker\egroup}%
+% \end{macfrocode}
+%\iffalse
%% convert ref to num
%\fi
% \begin{macrocode}
@@ -1436,13 +1526,23 @@ dell'esercizio somministrato
%\begin{environment}{soluzione}
%The main element for the "solutions" mode is the |soluzione| environment.
% \begin{macrocode}
-\NewDocumentEnvironment{soluzione}{+b}{%
+\define@key{soluzione}{label}[\solutionlabel]{%
+ \def\verifiche@tempsoluzionelabel{#1}%
+}
+\newcommand{\verifiche@solutionlabel}{%
+ \ifdefined\verifiche@tempsoluzionelabel\verifiche@tempsoluzionelabel%
+ \else\solutionlabel\fi%
+}%
+\NewDocumentEnvironment{soluzione}{o +b}{%
+ \IfValueT{#1}{\setkeys{soluzione}{#1}}%
\ifsol%
\par\addvspace{\baselineskip}%
- {\noindent\bfseries \solutionlabel}%
+ {\noindent\bfseries%
+ \ifsolutionscolor\color{\solutionscolor}\fi%
+ \verifiche@solutionlabel}%
\par\nobreak\noindent\ignorespaces%
\setlength\parindent{0pt}%no parindent
- \solutionfont #1%
+ \solutionfont #2%
\fi%
}{%
\ifsol%
@@ -1485,16 +1585,21 @@ dell'esercizio somministrato
%The |\truefalse| is generated via |\tikz| macro.
% \begin{macrocode}
\newcommand{\truefalse}[1]{%
- \tikz[baseline=-.8ex]{%
- %true part
- \node[draw, rectangle, minimum size=1.5em] {V};%
- \ifsol\IfSubStr{#1}{V}{\node[inner sep=0pt, shift={(1pt,1pt)}]{%
- $\Large\ifsolutionscolor\color{\solutionscolor}\fi\checkmark$}}{};\fi%
- %false part
- \node[xshift=1cm, draw, rectangle, minimum size=1.5em]{F};%
- \ifsol\IfSubStr{#1}{F}{\node[inner sep=0pt, xshift=1cm, shift={(1pt,1pt)}]{%
- $\Large\ifsolutionscolor\color{\solutionscolor}\fi\checkmark$}}{};\fi%
- }%
+ %True
+ \fbox{\@verifiche@Tletter}%
+ \ifsol\llap{%
+ \if#1\@verifiche@Tletter%
+ \Large\verifiche@checkmarker%
+ \fi}%
+ \fi%
+ \quad%
+ %False
+ \fbox{\@verifiche@Fletter}%
+ \ifsol\llap{%
+ \if#1\@verifiche@Fletter%
+ \Large\verifiche@checkmarker%
+ \fi}%
+ \fi%%
}
% \end{macrocode}
%\end{macro}
@@ -1517,20 +1622,26 @@ dell'esercizio somministrato
%\begin{environment}{closedquestion}
%The |closedquestion| environment define a new list whose item elements are preceded by square symbol, and every item is |\hfill| spaced. The |\checked| symbol is controlled and generated (in the "solutions mode") via |\tikz|.
% \begin{macrocode}
-\newlist{crocette}{itemize*}{1}%
-\setlist[crocette]{label=\closedquestionitem, itemjoin={\hfill}}%
+\newlist{crocette}{itemize}{1}%
+\newlist{crocette*}{itemize*}{1}%
+\setlist[crocette]{label=\closedquestionitem, leftmargin=*, parsep=0pt }%
+\setlist[crocette*]{label=\closedquestionitem, itemjoin={\hfill}}%
\newcommand{\checked}{%
\ifsol%
- \closedquestionitem\tikz[remember picture, overlay, baseline=-1ex, xshift=-.7ex]
- {\node{\ifsolutionscolor\color{\solutionscolor}\fi$\checkmark$};}
- \else
- \closedquestionitem
+ \closedquestionitem\llap{\verifiche@checkmarker\hspace{-1pt}}%
+ \else%
+ \closedquestionitem%
\fi}
-\NewDocumentEnvironment{closedquestion}{+b}{%
- \begin{crocette}#1%
+\NewDocumentEnvironment{closedquestion}{O{}+b}{%
+ \begin{crocette}[#1]#2%
}{%
- \end{crocette}
-}
+ \end{crocette}%
+}%
+\NewDocumentEnvironment{closedquestion*}{O{} +b}{%
+ \begin{crocette*}[#1]#2%
+}{%
+ \end{crocette*}%
+}%
% \end{macrocode}
%\end{environment}
@@ -1602,5 +1713,17 @@ dell'esercizio somministrato
}
% \end{macrocode}
%\end{macro}
+%
+%
+%\begin{macro}{\makecolumn}
+%The |\makecolumn| give the possibility to create multiple column in the document.
+% \begin{macrocode}
+\NewDocumentCommand{\makecolumn}{O{t} m +m}{%
+ \parbox[#1]{#2}{#3}%
+ \@ifnextchar\makecolumn{\hspace*{\columnseparation}}{}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
% \Finale
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/verifiche/verifiche.pdf b/macros/latex/contrib/verifiche/verifiche.pdf
index 584d9276ed..63cb42a4d1 100644
--- a/macros/latex/contrib/verifiche/verifiche.pdf
+++ b/macros/latex/contrib/verifiche/verifiche.pdf
Binary files differ
diff --git a/support/TeX4ht/source/ChangeLog b/support/TeX4ht/source/ChangeLog
index ea07fe881e..4de6c1d8dc 100644
--- a/support/TeX4ht/source/ChangeLog
+++ b/support/TeX4ht/source/ChangeLog
@@ -1,3 +1,9 @@
+2022-05-18 Michal Hoftich <michal.h21@gmail.com>
+
+ * tex4ht-mathml.tex (mathml.4ht): fixed support for \overrightarrow
+ and \overleftarrow.
+ https://github.com/michal-h21/make4ht/issues/76
+
2022-05-13 Michal Hoftich <michal.h21@gmail.com>
* tex4ht-html4.tex (html4.4ht): added option "cut-fullname", to
diff --git a/support/TeX4ht/source/tex4ht-fonts-modern.tex b/support/TeX4ht/source/tex4ht-fonts-modern.tex
index b0ff2041f8..bbffa7db8f 100644
--- a/support/TeX4ht/source/tex4ht-fonts-modern.tex
+++ b/support/TeX4ht/source/tex4ht-fonts-modern.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-fonts-modern.tex 769 2020-07-10 14:16:58Z michal_h21 $
+% $Id: tex4ht-fonts-modern.tex 1132 2022-05-09 08:32:38Z michal_h21 $
% Included from tex4ht-fonts-noncjk.tex, not run on its own.
%
% Copyright 2009-2020 TeX Users Group
@@ -2114,6 +2114,70 @@ htfcss: lmmib font_weight:bold;
\AddFont{lmsy}{alias/lm/lmsy}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\SubSection{ML Modern}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\<rm-mlm\><<<
+.lm-ec
+htfcss: rm-mlmbo font-style: oblique;
+htfcss: rm-mlmbx font-weight: bold;
+htfcss: rm-mlmbxi font-style:italic; font-weight: bold;
+htfcss: rm-mlmbxo font-style: oblique; font-weight: bold;
+htfcss: rm-mlmri font-style:italic;
+htfcss: rm-mlmro font-style: oblique;
+htfcss: rm-mlmss font-family: sans-serif;
+htfcss: rm-mlmssbo font-family: sans-serif; font-style: oblique; font-weight: bold;
+htfcss: rm-mlmssbx font-family: sans-serif; font-weight: bold;
+htfcss: rm-mlmssdc font-family: sans-serif;
+htfcss: rm-mlmssdo font-family: sans-serif; font-style: oblique;
+htfcss: rm-mlmsso font-family: sans-serif; font-style: oblique;
+htfcss: rm-mlmssq font-family: sans-serif;
+htfcss: rm-mlmssqbo font-family: sans-serif; font-style: oblique; font-weight: bold;
+htfcss: rm-mlmssqbx font-family: sans-serif; font-weight: bold;
+htfcss: rm-mlmssqo font-family: sans-serif; font-style: oblique;
+htfcss: rm-mlmcsc font-variant: small-caps;
+>>>
+\AddFont{rm-mlm}{alias/mlm/rm-mlm}
+
+\<rm-mlmvt\><<<
+.lm-ec
+htfcss: rm-mlmvtk font-family: monospace,monospace;
+htfcss: rm-mlmvtko font-style: oblique; font-family: monospace,monospace;
+htfcss: rm-mlmvtl font-weight: light; font-family: monospace,monospace;
+htfcss: rm-mlmvtlo font-weight: light; font-style: oblique; font-family: monospace,monospace;
+htfcss: rm-mlmvtt font-family: monospace,monospace;
+htfcss: rm-mlmvtto font-style: oblique; font-family: monospace,monospace;
+>>>
+\AddFont{rm-mlmvt}{alias/mlm/rm-mlmvt}
+
+
+\<mlmbsy\><<<
+.plbsy
+htfcss: mlmbsy font-weight:bold;
+>>>
+
+\AddFont{mlmbsy}{alias/mlm/mlmbsy}
+
+\<mlmex\><<<
+.cmex
+>>>
+
+
+\AddFont{mlmex}{alias/mlm/mlmex}
+
+\<mlmmi\><<<
+.cmmi
+htfcss: mlmmib font_weight:bold;
+>>>
+
+\AddFont{mlmmi}{alias/mlm/mlmmi}
+
+\<mlmsy\><<<
+.plbsy
+>>>
+
+\AddFont{mlmsy}{alias/mlm/mlmsy}
%%%%%%%%%%%%%
\SubSection{EC}
diff --git a/support/TeX4ht/source/tex4ht-mathml.tex b/support/TeX4ht/source/tex4ht-mathml.tex
index 14c4006b1e..607a9d5625 100644
--- a/support/TeX4ht/source/tex4ht-mathml.tex
+++ b/support/TeX4ht/source/tex4ht-mathml.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-mathml.tex 1129 2022-05-05 10:45:51Z michal_h21 $$
+% $Id: tex4ht-mathml.tex 1134 2022-05-18 13:57:59Z michal_h21 $$
% compile 3 times: latex tex4ht-mathltx
% or xhlatex tex4ht-mathltx "html,3,sections+"
%
@@ -2248,14 +2248,14 @@ reduced.)
\<mathml plain,fontmath\><<<
\Configure{overrightarrow}
- {\leavevmode\hbox\bgroup$\Tg<\a:mathml mover class="overrightarrow">%
+ {\leavevmode\hbox\bgroup$\Tg<\a:mathml mover accent="true" class="overrightarrow">%
\Tg<\a:mathml mrow\Hnewline>\:gobble}
- {\Tg</\a:mathml mrow>\mathop{\HCode{&\#x20D7;}}%
+ {\Tg</\a:mathml mrow>\HCode{<\a:mathml mo>&\#x2192;</\a:mathml mo>}%
\Tg</\a:mathml mover>$\egroup}
\Configure{overleftarrow}
- {\leavevmode\hbox\bgroup$\Tg<\a:mathml mover class="overleftarrow">%
+ {\leavevmode\hbox\bgroup$\Tg<\a:mathml mover accent="true" class="overleftarrow">%
\Tg<\a:mathml mrow\Hnewline>\:gobble}
- {\Tg</\a:mathml mrow>\mathop{\HCode{&\#x20D6;}}%
+ {\Tg</\a:mathml mrow>\HCode{<\a:mathml mo>&\#x2190;</\a:mathml mo>}%
\Tg</\a:mathml mover>$\egroup}
>>>
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 4a3dcf395a..6719b18895 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -49,7 +49,6 @@ $mirrors = {
'Korea' => {
'http://ftp.ktug.org/tex-archive/' => 1,
'https://cran.asia/tex/' => 1,
- 'https://ftp.harukasan.org/CTAN/' => 1,
'https://ftp.kaist.ac.kr/pub/tex-archive/' => 1,
'https://mirror.kakao.com/CTAN/' => 1,
'https://mirror.navercorp.com/CTAN/' => 1,
@@ -181,6 +180,7 @@ $mirrors = {
'https://ctan.mirror.rafal.ca/' => 1,
'https://mirror.csclub.uwaterloo.ca/CTAN/' => 1,
'https://mirror.its.dal.ca/ctan/' => 1,
+ 'https://muug.ca/mirror/ctan/' => 1,
},
'Costa Rica' => {
'https://mirrors.ucr.ac.cr/CTAN/' => 1,
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 58ffca9ea6..71188bec84 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/2022
-depend revision/63325
+depend revision/63332
name 00texlive.image
category TLCore
@@ -4568,7 +4568,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 63316
+revision 63327
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
@@ -114906,22 +114906,22 @@ catalogue-topics class presentation
name fancyhdr
category Package
-revision 63277
+revision 63329
shortdesc Extensive control of page headers and footers in LaTeX2e
relocated 1
longdesc The package provides extensive facilities, both for
longdesc constructing headers and footers, and for controlling their use
longdesc (for example, at times when LaTeX would automatically change
longdesc the heading style in use).
-containersize 5116
-containerchecksum 12fc439f594ce021a8c46fefa2e815343a314b4a488c496c17d062d6b20c11fdd058d68fbc343ba9765f9a64225aeaed2df5541dc40574a2bd3dc339998e9025
-doccontainersize 827148
-doccontainerchecksum 76cec9c059fd8a4bc47ea4ae1a7d765b3e4273413e0ec2a280eba271edfdc94c6ce2db7afb4c8b3a2fca3428c385ad27e0fcc817c16dd8bc9556434385cfa482
-docfiles size=209
+containersize 5140
+containerchecksum dc40ba397e7fe2975712984282e67c8b04253e6a9b70d8104af3540518bfebac859d761b21ba242bd04f02c04543515a3646c33f0a0215d96d1833c290859d98
+doccontainersize 828876
+doccontainerchecksum cc7927f1ebc0c3f689ea550718f065b4fdcbb8ecf6085887e49e72c3dbc69af8ce0078d7a121d1e626a88e47fe33624093b8f0eab4155e67080c1234f5f95c67
+docfiles size=210
RELOC/doc/latex/fancyhdr/README details="Readme"
RELOC/doc/latex/fancyhdr/fancyhdr.pdf details="Users' manual (English)"
-srccontainersize 46920
-srccontainerchecksum ab121b771454de831c629c348fd964255fc69f0139532df6b0eb67bd4eb1cc7b5e9a7631a2270503e34cfa473fae574c184c5540199ef17e065e03eaeabde86a
+srccontainersize 47076
+srccontainerchecksum 47bb2e1f7c80603be94233e3806b63f463c9f962229925c1f9b0f68253307d263ab942e55946ede197cf456bbf7071ce6e1ca74dc305a5f294ff7b029d7e9474
srcfiles size=49
RELOC/source/latex/fancyhdr/fancyhdr.dtx
RELOC/source/latex/fancyhdr/fancyhdr.ins
@@ -114935,7 +114935,7 @@ catalogue-contact-repository https://github.com/pietvo/fancyhdr
catalogue-ctan /macros/latex/contrib/fancyhdr
catalogue-license lppl1.3
catalogue-topics page-hf
-catalogue-version 4.0.2
+catalogue-version 4.0.3
name fancyhdr-it
category Package
@@ -194310,7 +194310,7 @@ catalogue-version 1.4b
name markdown
category Package
-revision 62928
+revision 63328
shortdesc A package for converting and rendering markdown documents inside TeX
relocated 1
longdesc The package provides facilities for the conversion of markdown
@@ -194323,11 +194323,11 @@ longdesc down and rewritten for the needs of the package. Lunamark
longdesc provides speedy markdown parsing for the rest of the package.
longdesc On top of Lunamark sits code for the plain TeX, LaTeX, and
longdesc ConTeXt formats by Vit Novotny.
-containersize 42740
-containerchecksum 2e15f2b4be09cb52002472f8bd2983de31d919b243dae13451a0f1e2e8a408befbe6bb548ee8d0fe2907ec58b6cff0519e83e5c5dde8bade1bfbfd450a78882c
-doccontainersize 949952
-doccontainerchecksum cc174614536cd043d516ef39d4f11b170190e752216087d60caa7e1e7bf62bb25e85f52b636039ad0b1d9481890907c99fd98da1e312041205e12a7f2d213f8a
-docfiles size=414
+containersize 42892
+containerchecksum 81c1e0e7fee8066961a6a00557bf973453592bccc60d13db0b55d0b931ddc90172913b3a5dd249b5368bbe658f8eee88c67bc4cffa95d024a251c9ccc46ccbc0
+doccontainersize 947064
+doccontainerchecksum 3aafd3b55184bad0dd7c43b66a871d96ae4efc45beecc35cfd6ec6a36981c37aed0ff42d2d939811b593a0b3aced75448d2f6641e3ccd5ee57854251ab062f9a
+docfiles size=413
RELOC/doc/context/third/markdown/examples/context-mkii.tex
RELOC/doc/context/third/markdown/examples/context-mkiv.tex
RELOC/doc/context/third/markdown/examples/example.md
@@ -194341,8 +194341,8 @@ docfiles size=414
RELOC/doc/latex/markdown/examples/example.md
RELOC/doc/latex/markdown/examples/latex.tex
RELOC/doc/latex/markdown/examples/scientists.csv
-srccontainersize 89692
-srccontainerchecksum 0f7ef0e64bdbe98b1aafcf2a53b7e09827465fa43a31f06b7dab0a16f5804a0d07582313b0bfa430cecbe4db52c65274cd8166b0a66d8923c86cf8aa7e1c2c4c
+srccontainersize 89812
+srccontainerchecksum 46e68416b95ad525c36aaef21113765dee8167ef274aee6d20a18517137cc83bd0079aa83719921d8d9ae715b4587117906efef011174ecb4cc818ea7490bb9e
srcfiles size=156
RELOC/source/generic/markdown/docstrip.cfg
RELOC/source/generic/markdown/markdown.dtx
@@ -194364,7 +194364,7 @@ catalogue-contact-repository https://github.com/Witiko/markdown
catalogue-ctan /macros/generic/markdown
catalogue-license lppl1.3
catalogue-topics markup
-catalogue-version 2.15.0-0-g9296cf1
+catalogue-version 2.15.1-0-g4b33c77
name marvosym
category Package
@@ -197707,7 +197707,7 @@ catalogue-version 1.0
name media4svg
category Package
-revision 60815
+revision 63330
shortdesc Multimedia inclusion for the dvisvgm backend
relocated 1
longdesc This package implements an interface for embedding video and
@@ -197719,10 +197719,10 @@ longdesc engines can be used. The dvisvgm utility, which is part of all
longdesc major TeX distributions, converts the intermediate DVI to SVG.
longdesc By default, media files are embedded into the SVG output to
longdesc make self-sufficient SVG files.
-containersize 7688
-containerchecksum 1da1c45ca3de316998dcbdaec279cf6d3e97320fca8ecdb0e859255908a6b09ad6a88adc7d30c81e4ce21aee2e60119b8f9b8d6f934030e729e4e0cd4d303808
-doccontainersize 126508
-doccontainerchecksum c5c2113c55e0ff1c296f422faa46efd81866d6990e109956cbc229eb4c7f97599b6d2e26c50b46a9f7ee4c5b8ddc1d82b14dd6b175dbba97992d427870cdc7de
+containersize 7716
+containerchecksum 1cce7560625771a7df261c1872e2236d43af3db562c8178d3225c5b0b35b9cfd35fc5c01ce9b97091e34e646107ba2d07d0fad465ea39d4c08009c357c8cb97d
+doccontainersize 126436
+doccontainerchecksum e5f2bc7040cc61d4dc404195257f9125a750b78ab5f1b3c34ce9817ae986bfa0ec5c60eb625b93b5496eca33484aa143ad6f70792f7d599117a1bc1851d7f6c2
docfiles size=95
RELOC/doc/latex/media4svg/ChangeLog
RELOC/doc/latex/media4svg/README.txt
@@ -197738,7 +197738,7 @@ catalogue-contact-repository https://gitlab.com/agrahn/media4svg
catalogue-ctan /macros/latex/contrib/media4svg
catalogue-license lppl
catalogue-topics multimedia expl3
-catalogue-version 0.6
+catalogue-version 0.7
name media9
category Package
@@ -293789,7 +293789,7 @@ binfiles arch=x86_64-solaris size=1
name tex4ht
category Package
-revision 63292
+revision 63332
shortdesc Convert (La)TeX to HTML/XML
longdesc A converter from TeX and LaTeX to SGML-based formats such as
longdesc (X)HTML, MathML, OpenDocument, and Docbook, providing a
@@ -293810,10 +293810,10 @@ longdesc files from them is nontrivial, and generally done with the
longdesc Makefile in development, from which the TeX4ht package in TeX
longdesc Live is updated.
depend tex4ht.ARCH
-containersize 939448
-containerchecksum bde63bc785903a0e12b258c404e6f0fa8fa1420a2e9c2ae8b8640170984f34e3868d4442f45e0854e5333935d2d66aff35b1f043ab7cb9a3d04c2860d1f04a47
+containersize 939392
+containerchecksum 910108db00a5082f7928120667a09d8f1b3b3c92904b8d1f29433f3903e4364c9d2be522d6651a86b7c67058936d61376b74e93df21be2bbbae8d155ab0d18f6
doccontainersize 136384
-doccontainerchecksum bbb67932bbf083028c6d555821cfa5061c082174bdcf3ba53b6a968fb985e4dfc1aadc84b5ff43ad762830bed4745972dc78e0ed8daf78efd33a848d8916dff1
+doccontainerchecksum 6ba59a8149434061b8ddcd2636f21f16762552557550a3e885ddc6a21d39fb7607c50a7368ca40749e6b0a8da39764e256fb5ab0afac52d4ed872aecb3e24cc0
docfiles size=260
texmf-dist/doc/generic/tex4ht/Makefile
texmf-dist/doc/generic/tex4ht/README details="Readme"
@@ -293885,8 +293885,8 @@ docfiles size=260
texmf-dist/doc/generic/tex4ht/mn56.html
texmf-dist/doc/generic/tex4ht/mn5x.png
texmf-dist/doc/generic/tex4ht/mn6x.png
-srccontainersize 1251744
-srccontainerchecksum 80df831b2967b8bfe664700894532a5282ec64435ba65ef1ebc87909143b035e922d56a888d2299915d6c1dd18a74831ab41b711006867aab6e7f6d95a39b10b
+srccontainersize 1256632
+srccontainerchecksum 8f23d635a6245bf344156a8e7aeeb4f203856f8253f683638f6bb0f5243effc46fbfb9cca8e71cda9a3df23848dde3d9b09ae03fcf870a1d0259468d8e011579
srcfiles size=3812
texmf-dist/source/generic/tex4ht/ChangeLog
texmf-dist/source/generic/tex4ht/Makefile
@@ -304240,7 +304240,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 63316
+revision 63327
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.
@@ -304248,10 +304248,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 109732
-containerchecksum 75a52771ea0f81acda5bdbe70f01ee221c3c3e2cc1af7322e6272f0f1a92b140ba5b8d7075ffcc5f32687096e21eb14aaa9c537d236b7054818e4f2be2cd45b7
+containersize 109724
+containerchecksum f6f8b2e5c46eab80cc40ffa01a90435b488932ef41238977c655561d9e049a805b05c15916a5e7d93594035180d79b95fd2dc394bddb10225da8596beee2679e
doccontainersize 406392
-doccontainerchecksum 850eb0bc0adfa0e063e430e15ed5ae3c01e80723fa20a94b057c65f8baa944b5b4224c07d082681e9b9374aedd3fd01126dfbe65a84e9d43e924ab8345376d39
+doccontainerchecksum 277c26dbda05f5586b6ddfd1046345262b8f5fe1936b635d674362a6a05da92f37b9a3485b2edcece88761fccfc874443078bf48d68ca165ca3da35c9ef6185e
docfiles size=505
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
@@ -333479,7 +333479,7 @@ catalogue-version 1.3
name verifiche
category Package
-revision 62634
+revision 63331
shortdesc A LaTeX package to typeset (Italian) high school tests
relocated 1
longdesc The purpose of this package is to manage the exercises for a
@@ -333487,26 +333487,26 @@ longdesc test, their points, levels of difficulty, and solutions. Some
longdesc typical formats of exercises are already implemented: Plain
longdesc exercise "Complete the Text" "True or false" Closed questions
longdesc Open questions "Find the error"
-containersize 4588
-containerchecksum bbd31210615e436906657d7fb61178d8df94aa4b3eefe165a520811e58b7db3ee75645cdda5324bd7a6394c7b43eb278d96c6b1cb2cc6c18dc634d90abf87b0d
-doccontainersize 721596
-doccontainerchecksum 3bf4730d1f9ff95f415a593318c1a08d2d07207b88ef9d505c2aa8c842c13d07a05d2284ce022f0ab23cd2e04dc9240d4aded2aa689e2687c17dd093591b9672
-docfiles size=185
+containersize 4724
+containerchecksum 758f83af450f0d69cda8b92bb311f5859345405ceb249ccf2535855a21aa29e49f50bb9d0501dacea00b58a882a160bb8a6cbdf55af235c5503e5a5d9201358c
+doccontainersize 719836
+doccontainerchecksum b8c3afeafe11d7b4f45ac2af35019d0d73b169a325bf79d1169be4ccad6f78fcc373f5d4c1d1642de3665d21e35c83539421c12dc995e59d135730b454371579
+docfiles size=186
RELOC/doc/latex/verifiche/README.md details="Readme"
RELOC/doc/latex/verifiche/verifiche-example.pdf details="Example of use" language="it"
RELOC/doc/latex/verifiche/verifiche-example.tex
RELOC/doc/latex/verifiche/verifiche.pdf details="Package documentation" language="it"
-srccontainersize 15624
-srccontainerchecksum 671c2b3269da87cc6d35b106d0fb64f782208dd88b9f9b982a3236a62714ac832a7eca9b482d13843f992f093600cf181d91e1b65e5972dc824401623c8f54ec
-srcfiles size=16
+srccontainersize 16252
+srccontainerchecksum c894dc842c0065d4f21aa107810ba0f41fd82463f12ba5a4e4fe0e0dc57e235826614e8d2f73763289d6b86ebdf3ed1747ea174e0e95a7180e4947117c59828a
+srcfiles size=17
RELOC/source/latex/verifiche/verifiche.dtx
RELOC/source/latex/verifiche/verifiche.ins
-runfiles size=4
+runfiles size=5
RELOC/tex/latex/verifiche/verifiche.sty
catalogue-ctan /macros/latex/contrib/verifiche
catalogue-license lppl1.3
catalogue-topics exam exercise
-catalogue-version 4.4
+catalogue-version 5.0
name verse
category Package
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 041ca4ce65..c3c46a039f 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-d8481b5f50356ec747a7494af528785a texlive.tlpdb
+8b1649cd8cfda58eb4e4a46ad39e498a texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index adbf7fa21b..1a296c1827 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-f7a3189f74857364271cd41168dfd1607a521b33f828ca0911c8a86ee69f6badb6e79e1f2a7ca75653f8a6a49433e4342c06e71a371539ff68ac63303e5d8d27 texlive.tlpdb
+ec171a34ffc0847860eaf3616176e87177b49b09332225b8251f1c9c5dd30d6759deae3a9b5dee03baad3207d9e2eaa0a7dcb1ef2bec2fcf5b53a9a7561fa8c7 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 8c88d5a85a..8b91917779 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,10 +1,10 @@
-----BEGIN PGP SIGNATURE-----
-iQEcBAEBCgAGBQJihDUuAAoJEEzhh34ZQ4xwfpcH/RbPHzpWKOKhSWQcBbGHwpsC
-GOLrlwYeZ/cifL7GhUwSrh/DTbPlefTgVKqER4kTRSN77mc3+Qa9U3/YsimHRH7s
-oPnokUt08ipNOya5fI1j5mt95reQ3HJP6B9T2M/+ER/+LDa4Tu5902LhLbTMFNFd
-G1Mgg634yDPzyoDVwy0ZyczsAxhAGOeEFL1IIyRS87aS+E/FblCl/wgAcBgVIRDq
-enZWCX31WasJQND/IkWAvBC+0xp8dpgPPH6BW80M1kgO1wuWH2x1/UACrOIg/mvK
-rKtkjYrh1axy9u3oStG2mEb3S8Er5/KKmLZ0JYAUl3H1C3QuW0aX9Mjd4dSGPLs=
-=Jl91
+iQEcBAEBCgAGBQJihYb7AAoJEEzhh34ZQ4xwUgUIAJM22qyJoU7vwnQ5lYWsR+XN
+iv+TDR5OUA86IlkIDWA2TXsgm6b1otIPts4MLlgW+GX4p4tLfyMP+9yF8rFYK67e
+uoyzM51fCU1noaTNdb9L+NOyj+F+8gsrXgjJznLtGPBHFacfejA3jG7Vm+gVAPVC
+ZnWUAahsUcl047/KbrG4JogcHUensNuYd1aTlgFZZqrP+t0mkrd9tN8iGSZthZjP
+GQVX54SxGuZ37g4G+uG5TmCHiApbEZAKaV2fyDhFlvg/tAoMgILu4/oud58occKX
+xiHtlxAgim2DC+rw54c0EOLte+M9MWtMUM7fUFmy9wLATNOBCvr1iMdfzcx0lnM=
+=Uy6e
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 837b8d8213..d55252bde4 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index 3d834cd479..e222649473 100644
--- a/systems/win32/miktex/tm/packages/next/pr.ini
+++ b/systems/win32/miktex/tm/packages/next/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1652818746
+date=1652905149
lastupd=miktex-arctrl-bin-2.9 miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-2.9 miktex-chktex-bin-x64-2.9
-lstdigest=245618cb9514d2902f6b244dc0ac037a
+lstdigest=da042058ddeeb226453f6583157cbba1
numpkg=5608
relstate=next
-version=8172
+version=8173
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: VqrURhAVG7fSPMZPAPcOH6Of2V5Iy8ClHpjL12ZvR81HtVMi7/Ks6FdZF0j1IFmRKS5625q1NKKcCcYAX4NrS32+ymniN7kPQZKFhrEzW9v5evH1DFdPWd2R3P8BomsBgoy4V3TAA9hymkMLyf7tKDEH4cqFd2qMOZ9XBTC1tKFk0oY815GJlurx6JxsK8z+wg+Xk6DO35p//vlpHPM5YWqumHtcKxJoWqHLPDc0PLoIFk4S5I6N+jpnNIu4s201EdnIeAkD7h5jCwB2n+jOhFfcNKnmvGLqinAptl3hDT8hre+acGbVtruPZ8Rrb6KVm8ZSFCyJx8G/WIJFW8iDgw==
+;;;; signature/miktex: UynGbFgY+Dqa/vtMf51bJ0gFBoAcyGoNx8TPQHzJTItQI5A/4Bvmn3DP9Nm+/AtWXlxz+3ZyMM+xTgY1GbbF4bC7RPdmo7nSza+DFVSDfITSWBxdBdIuht+rAd4+GUsTAUV/8Y/zJAWlAoovuYTa3+MsWcPzR9qshinQ04ooFGLzhv7U7rWCP++uO1TaYC79VT5NWcE1WQK0R0m4CfKlNY2nCDi0B7e992yOtUTXBW8ZShKC8dkrdtgbsuZ/nTYvmXV+I6gtUR6mDRrV4xcF/CEVm/PeLl8TeGdgEUgbfkPlJt2X25K4w/4MSxzZLRUWCEGDeWDTN3qhCdtr366D+w==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index a2790545ce..b34c34c3e3 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1652818321
+date=1652904714
lastupd=arara arara__doc arara__source beamertheme-trigon beamertheme-trigon__doc beamertheme-trigon__source begingreek begingreek__doc begingreek__source bithesis bithesis__doc bithesis__source bxtexlogo bxtexlogo__doc bxtexlogo__source changebar changebar__doc changebar__source chinesechess chinesechess__doc
-lstdigest=e6bbc6cee0b6fd48dd737451375df0cb
+lstdigest=a047de1415df5ed445cee63f668e83b5
numpkg=5608
relstate=stable
-version=8172
+version=8173
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: qVTw5t+I+4LCX8FEJf2dR0qbR/WNhoBlHTGoMhhjsc6uR1urOHTEEWZ/xxTm/0cCp9daHUZY9NfQ42HvtalQXEkz3bjrT63Q52dw1oAye9VR2/NkkXnNIt7JOwYUmFkyqq/lOglK/TuhUsrxcFLcLWZu46qGNj/d2SgtdceC0Vz9+mOlYTm+6VdL1mLNrQ1a3qciMHukdyQm2qCH0UGfgfXbfMsclxLbmXydYeivwNcLhn0h0V8FH7EVy5NHamrsyz5B4deeXBtzrFY4sHiEokjXfP6wQMsIOTMOvutF2NF+gZdf8Xk9EB0AK0FPlsw7x07I2RAb6XakKLn5A9BEvQ==
+;;;; signature/miktex: kXiuZgbuXxkaZ8twNmLkR+xeMchzTyVh5/O9RHI5sk8n4dh2r9QiTJJPlz/MTJZuwT3vZUkiulMg0v5ppNREAsX2EMt1HUhjJZaPZM0ekFFz9SE+YonnUXm4EA4scRCN6GaD6g3SWEG1G1hr/F/DOxhmHH5fE2i5CLzhp4CisAKdvcdPtDHFtq5lodrNRoysH9oIV7uBSy+0TZTfKp22aUfz8+zl5RIrh8vplUnQB4DiiyxIFpMJk+Og5xIvLfUlmCdQyharBXae0JqfrdfRz7hJE511ZY5yIurBjhPp1U9WU7xNFoJlPQ0Rbu1Dm6r/k1nAAzI3GNoOf3IIxmpVTg==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/timestamp b/timestamp
index 4e64c3d1e1..6cd754e8a2 100644
--- a/timestamp
+++ b/timestamp
@@ -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:
-2022-05-18-02-02
+2022-05-19-02-02