From 974640d66e61e81cb197ad96fdff7b08343e4c5a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 6 Mar 2021 21:58:15 +0000 Subject: context git-svn-id: svn://tug.org/texlive/trunk@58167 c570f23f-e606-0410-a88d-b1316a301751 --- .../documents/general/leaflets/leaflet-mixing.pdf | Bin 65347 -> 65629 bytes .../documents/general/magazines/mag-1105-mkiv.pdf | Bin 0 -> 57255 bytes .../context/documents/general/manuals/cld-mkiv.pdf | Bin 798293 -> 804291 bytes .../context/documents/general/manuals/evenmore.pdf | Bin 1538298 -> 1624341 bytes .../documents/general/manuals/lowlevel-boxes.pdf | Bin 75834 -> 78543 bytes .../general/manuals/lowlevel-characters.pdf | Bin 0 -> 52979 bytes .../general/manuals/lowlevel-conditionals.pdf | Bin 95412 -> 104674 bytes .../general/manuals/lowlevel-grouping.pdf | Bin 0 -> 30762 bytes .../documents/general/manuals/lowlevel-macros.pdf | Bin 0 -> 87655 bytes .../general/manuals/lowlevel-paragraphs.pdf | Bin 0 -> 208745 bytes .../documents/general/manuals/lowlevel-scope.pdf | Bin 0 -> 46060 bytes .../general/manuals/lowlevel-security.pdf | Bin 0 -> 41760 bytes .../documents/general/manuals/luametafun.pdf | Bin 1697432 -> 5553137 bytes .../documents/general/manuals/luametatex.pdf | Bin 1189457 -> 1385220 bytes .../context/documents/general/manuals/luatex.pdf | Bin 1542992 -> 1544345 bytes .../documents/general/manuals/primitives.pdf | Bin 0 -> 143288 bytes .../documents/general/manuals/units-mkiv.pdf | Bin 164604 -> 113203 bytes .../context/documents/general/qrcs/setup-cs.pdf | Bin 932229 -> 950852 bytes .../context/documents/general/qrcs/setup-de.pdf | Bin 932682 -> 952439 bytes .../context/documents/general/qrcs/setup-en.pdf | Bin 930546 -> 963860 bytes .../context/documents/general/qrcs/setup-fr.pdf | Bin 930422 -> 961163 bytes .../context/documents/general/qrcs/setup-it.pdf | Bin 934059 -> 958941 bytes .../documents/general/qrcs/setup-mapping-cs.pdf | Bin 352043 -> 354602 bytes .../documents/general/qrcs/setup-mapping-de.pdf | Bin 351418 -> 354810 bytes .../documents/general/qrcs/setup-mapping-en.pdf | Bin 349070 -> 354208 bytes .../documents/general/qrcs/setup-mapping-fr.pdf | Bin 351319 -> 357723 bytes .../documents/general/qrcs/setup-mapping-it.pdf | Bin 350931 -> 355763 bytes .../documents/general/qrcs/setup-mapping-nl.pdf | Bin 349696 -> 353260 bytes .../documents/general/qrcs/setup-mapping-ro.pdf | Bin 552014 -> 564601 bytes .../context/documents/general/qrcs/setup-nl.pdf | Bin 926927 -> 947389 bytes .../context/documents/general/qrcs/setup-ro.pdf | Bin 930145 -> 949594 bytes .../context/2020/context-2020-concepts.pdf | Bin 0 -> 156486 bytes .../context/2020/context-2020-concepts.tex | 694 ++++++ .../context/2020/context-2020-datatypes.pdf | Bin 0 -> 42978 bytes .../context/2020/context-2020-datatypes.tex | 454 ++++ .../context/2020/context-2020-ecmascript.pdf | Bin 0 -> 39008 bytes .../context/2020/context-2020-ecmascript.tex | 272 +++ .../context/2020/context-2020-gpdemo.gp | 8 + .../context/2020/context-2020-gpdemo.svg | 157 ++ .../context/2020/context-2020-implementers.pdf | Bin 0 -> 39686 bytes .../context/2020/context-2020-implementers.tex | 380 ++++ .../context/2020/context-2020-luametatex.pdf | Bin 0 -> 40944 bytes .../context/2020/context-2020-luametatex.tex | 529 +++++ .../context/2020/context-2020-mkii-mkiv-mkxl.pdf | Bin 0 -> 27908 bytes .../context/2020/context-2020-mkii-mkiv-mkxl.tex | 208 ++ .../presentations/context/2020/context-2020-mp.pdf | Bin 0 -> 55930 bytes .../presentations/context/2020/context-2020-mp.tex | 342 +++ .../context/2020/context-2020-sin.svg | 163 ++ .../context/2020/context-2020-svg.pdf | Bin 0 -> 33787 bytes .../context/2020/context-2020-svg.tex | 123 + .../context/2020/context-2020-tokens.pdf | Bin 0 -> 45873 bytes .../context/2020/context-2020-tokens.tex | 287 +++ .../doc/context/scripts/mkii/ctxtools.man | 2 +- .../doc/context/scripts/mkii/imgtopdf.man | 2 +- .../doc/context/scripts/mkii/pdftools.man | 2 +- .../doc/context/scripts/mkii/pstopdf.man | 2 +- .../doc/context/scripts/mkii/rlxtools.man | 2 +- .../doc/context/scripts/mkii/texexec.man | 2 +- .../doc/context/scripts/mkii/texmfstart.man | 2 +- .../doc/context/scripts/mkii/textools.man | 2 +- .../doc/context/scripts/mkii/texutil.man | 2 +- .../doc/context/scripts/mkii/tmftools.man | 2 +- .../doc/context/scripts/mkii/xmltools.man | 2 +- .../doc/context/scripts/mkiv/context.html | 8 +- .../doc/context/scripts/mkiv/context.man | 11 +- .../doc/context/scripts/mkiv/context.xml | 13 +- .../doc/context/scripts/mkiv/luatools.man | 2 +- .../doc/context/scripts/mkiv/mtx-babel.man | 2 +- .../doc/context/scripts/mkiv/mtx-base.man | 2 +- .../doc/context/scripts/mkiv/mtx-bibtex.man | 2 +- .../doc/context/scripts/mkiv/mtx-cache.man | 2 +- .../doc/context/scripts/mkiv/mtx-chars.man | 2 +- .../doc/context/scripts/mkiv/mtx-check.man | 2 +- .../doc/context/scripts/mkiv/mtx-colors.man | 2 +- .../doc/context/scripts/mkiv/mtx-context.html | 8 +- .../doc/context/scripts/mkiv/mtx-context.man | 11 +- .../doc/context/scripts/mkiv/mtx-context.xml | 13 +- .../doc/context/scripts/mkiv/mtx-dvi.man | 2 +- .../doc/context/scripts/mkiv/mtx-epub.man | 2 +- .../doc/context/scripts/mkiv/mtx-evohome.man | 2 +- .../doc/context/scripts/mkiv/mtx-fcd.man | 2 +- .../doc/context/scripts/mkiv/mtx-flac.man | 2 +- .../doc/context/scripts/mkiv/mtx-fonts.man | 2 +- .../doc/context/scripts/mkiv/mtx-grep.man | 2 +- .../doc/context/scripts/mkiv/mtx-interface.html | 1 + .../doc/context/scripts/mkiv/mtx-interface.man | 5 +- .../doc/context/scripts/mkiv/mtx-interface.xml | 1 + .../doc/context/scripts/mkiv/mtx-metapost.man | 2 +- .../doc/context/scripts/mkiv/mtx-modules.man | 2 +- .../doc/context/scripts/mkiv/mtx-package.man | 2 +- .../doc/context/scripts/mkiv/mtx-patterns.man | 2 +- .../doc/context/scripts/mkiv/mtx-pdf.man | 2 +- .../doc/context/scripts/mkiv/mtx-plain.man | 2 +- .../doc/context/scripts/mkiv/mtx-profile.man | 2 +- .../doc/context/scripts/mkiv/mtx-rsync.man | 2 +- .../doc/context/scripts/mkiv/mtx-scite.man | 2 +- .../doc/context/scripts/mkiv/mtx-server.man | 2 +- .../doc/context/scripts/mkiv/mtx-texworks.man | 2 +- .../doc/context/scripts/mkiv/mtx-timing.man | 2 +- .../doc/context/scripts/mkiv/mtx-tools.man | 2 +- .../doc/context/scripts/mkiv/mtx-unicode.man | 2 +- .../doc/context/scripts/mkiv/mtx-unzip.man | 2 +- .../doc/context/scripts/mkiv/mtx-update.man | 2 +- .../doc/context/scripts/mkiv/mtx-vscode.man | 2 +- .../doc/context/scripts/mkiv/mtx-watch.man | 2 +- .../doc/context/scripts/mkiv/mtx-youless.man | 2 +- .../texmf-dist/doc/context/scripts/mkiv/mtxrun.man | 2 +- .../sources/general/leaflets/leaflet-mixing.tex | 2 +- .../sources/general/magazines/mag-1105-mkiv.tex | 194 ++ .../general/manuals/about/about-titlepage.tex | 6 +- .../general/manuals/cld/cld-introduction.tex | 61 + .../general/manuals/cld/cld-luafunctions.tex | 22 +- .../sources/general/manuals/cld/cld-macros.tex | 6 +- .../sources/general/manuals/cld/cld-mkiv.tex | 8 +- .../sources/general/manuals/cld/cld-scanners.tex | 1048 +++++++++ .../general/manuals/cld/cld-specialcommands.tex | 4 +- .../sources/general/manuals/cld/cld-variables.tex | 340 +++ .../general/manuals/evenmore/evenmore-keywords.tex | 395 ++++ .../manuals/evenmore/evenmore-normalization.tex | 272 ++- .../general/manuals/evenmore/evenmore-numbers.tex | 365 +++ .../manuals/evenmore/evenmore-parameters.tex | 449 ++++ .../general/manuals/evenmore/evenmore-parsing.tex | 425 ++++ .../general/manuals/evenmore/evenmore-tokens.tex | 456 ++++ .../sources/general/manuals/evenmore/evenmore.tex | 18 + .../followingup/followingup-compilation.tex | 71 +- .../manuals/followingup/followingup-fonts.tex | 711 ++++++ .../manuals/followingup/followingup-style.tex | 2 + .../general/manuals/followingup/followingup.tex | 1 + .../general/manuals/libraries/ecmascript-mkiv.tex | 4 +- .../general/manuals/libraries/libraries-mkiv.tex | 25 +- .../general/manuals/lowlevel/lowlevel-boxes.tex | 18 +- .../manuals/lowlevel/lowlevel-characters.tex | 256 +++ .../manuals/lowlevel/lowlevel-conditionals.tex | 182 +- .../manuals/lowlevel/lowlevel-expansion.tex | 40 +- .../general/manuals/lowlevel/lowlevel-grouping.tex | 170 ++ .../general/manuals/lowlevel/lowlevel-macros.tex | 904 ++++++++ .../manuals/lowlevel/lowlevel-paragraphs.tex | 948 ++++++++ .../general/manuals/lowlevel/lowlevel-scope.tex | 341 +++ .../general/manuals/lowlevel/lowlevel-security.tex | 254 +++ .../sources/general/manuals/lua/lua-mkiv.tex | 8 +- .../manuals/luametafun/luametafun-arrow.tex | 6 +- .../manuals/luametafun/luametafun-color.tex | 138 ++ .../manuals/luametafun/luametafun-introduction.tex | 2 +- .../manuals/luametafun/luametafun-poisson.tex | 159 ++ .../manuals/luametafun/luametafun-technology.tex | 89 + .../general/manuals/luametafun/luametafun.tex | 6 + .../manuals/luametatex/luametatex-callbacks.tex | 189 +- .../manuals/luametatex/luametatex-codes.tex | 22 + .../manuals/luametatex/luametatex-differences.tex | 172 +- .../manuals/luametatex/luametatex-enhancements.tex | 1025 ++++++--- .../manuals/luametatex/luametatex-fonts.tex | 166 +- .../manuals/luametatex/luametatex-introduction.tex | 140 +- .../manuals/luametatex/luametatex-languages.tex | 386 +--- .../general/manuals/luametatex/luametatex-lua.tex | 53 +- .../general/manuals/luametatex/luametatex-math.tex | 279 ++- .../manuals/luametatex/luametatex-metapost.tex | 124 +- .../luametatex/luametatex-modifications.tex | 172 +- .../manuals/luametatex/luametatex-nodes.tex | 227 +- .../general/manuals/luametatex/luametatex-pdf.tex | 10 + .../manuals/luametatex/luametatex-preamble.tex | 79 +- .../manuals/luametatex/luametatex-primitives.tex | 396 +--- .../manuals/luametatex/luametatex-style.tex | 144 +- .../general/manuals/luametatex/luametatex-tex.tex | 706 +++--- .../general/manuals/luametatex/luametatex.tex | 132 ++ .../general/manuals/luatex/luatex-enhancements.tex | 23 + .../general/manuals/luatex/luatex-fonts.tex | 21 + .../sources/general/manuals/luatex/luatex-lua.tex | 4 + .../sources/general/manuals/luatex/luatex-math.tex | 30 +- .../manuals/luatex/luatex-modifications.tex | 2 + .../general/manuals/luatex/luatex-nodes.tex | 4 +- .../sources/general/manuals/luatex/luatex.tex | 9 +- .../sources/general/manuals/mathml/envexamp.tex | 2 +- .../context/sources/general/manuals/mcommon.tex | 8 +- .../sources/general/manuals/metafun/gracht.mp | 1284 +++++++++++ .../general/manuals/metafun/metafun-basics.tex | 309 ++- .../general/manuals/metafun/metafun-debugging.tex | 237 +- .../general/manuals/metafun/metafun-effects.tex | 265 ++- .../manuals/metafun/metafun-environment-layout.tex | 4 +- .../manuals/metafun/metafun-environment.tex | 46 +- .../general/manuals/metafun/metafun-examples.tex | 253 +++ .../general/manuals/metafun/metafun-gadgets.tex | 2 + .../manuals/metafun/metafun-introduction.tex | 9 + .../general/manuals/metafun/metafun-layout.tex | 2 + .../general/manuals/metafun/metafun-lua.tex | 995 +++++--- .../general/manuals/metafun/metafun-macros.tex | 13 +- .../general/manuals/metafun/metafun-reference.tex | 29 +- .../general/manuals/metafun/metafun-sneaky.tex | 149 +- .../general/manuals/metafun/metafun-styles.tex | 4 +- .../general/manuals/metafun/metafun-text-lmtx.tex | 1519 +++++++++++++ .../general/manuals/metafun/metafun-text.tex | 125 +- .../general/manuals/metafun/metafun-welcome.tex | 64 + .../sources/general/manuals/metafun/metafun.tex | 18 +- .../sources/general/manuals/mk/mk-environment.tex | 2 + .../sources/general/manuals/mk/mk-memory.tex | 8 +- .../context/sources/general/manuals/mk/mk-punk.tex | 3 + .../sources/general/manuals/mk/mk-tokenspeak.tex | 2 +- .../general/manuals/musings/musings-style.tex | 15 +- .../general/manuals/primitives/primitives.tex | 2378 ++++++++++++++++++++ .../publications/publications-titlepage.tex | 6 +- .../manuals/spreadsheets/spreadsheets-mkiv.tex | 4 +- .../sources/general/manuals/sql/sql-mkiv.tex | 4 +- .../general/manuals/swiglib/swiglib-mkiv.tex | 4 +- .../general/manuals/templates/templates-mkiv.tex | 4 +- .../sources/general/manuals/tools/tools-mkiv.tex | 6 +- .../sources/general/manuals/units/units-mkiv.tex | 40 +- .../general/manuals/workflows/workflows-mkiv.tex | 1 + .../manuals/workflows/workflows-parallel.tex | 123 + .../general/manuals/xml/xml-mkiv-commands.tex | 4 + .../general/manuals/xml/xml-mkiv-expressions.tex | 1 + .../general/manuals/xtables/xtables-mkiv.tex | 4 +- Master/texmf-dist/doc/man/man1/context.1 | 11 +- Master/texmf-dist/doc/man/man1/context.man1.pdf | Bin 23027 -> 23824 bytes Master/texmf-dist/doc/man/man1/luatools.1 | 2 +- Master/texmf-dist/doc/man/man1/luatools.man1.pdf | Bin 18206 -> 18212 bytes Master/texmf-dist/doc/man/man1/mtx-babel.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-babel.man1.pdf | Bin 15940 -> 15951 bytes Master/texmf-dist/doc/man/man1/mtx-base.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-base.man1.pdf | Bin 18226 -> 18231 bytes Master/texmf-dist/doc/man/man1/mtx-bibtex.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-bibtex.man1.pdf | Bin 14670 -> 14676 bytes Master/texmf-dist/doc/man/man1/mtx-cache.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-cache.man1.pdf | Bin 15474 -> 15482 bytes Master/texmf-dist/doc/man/man1/mtx-chars.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-chars.man1.pdf | Bin 15649 -> 15657 bytes Master/texmf-dist/doc/man/man1/mtx-check.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-check.man1.pdf | Bin 15839 -> 15848 bytes Master/texmf-dist/doc/man/man1/mtx-colors.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-colors.man1.pdf | Bin 14643 -> 14651 bytes Master/texmf-dist/doc/man/man1/mtx-context.1 | 11 +- .../texmf-dist/doc/man/man1/mtx-context.man1.pdf | Bin 23027 -> 23824 bytes Master/texmf-dist/doc/man/man1/mtx-dvi.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-dvi.man1.pdf | Bin 15261 -> 15271 bytes Master/texmf-dist/doc/man/man1/mtx-epub.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-epub.man1.pdf | Bin 16363 -> 16370 bytes Master/texmf-dist/doc/man/man1/mtx-evohome.1 | 2 +- .../texmf-dist/doc/man/man1/mtx-evohome.man1.pdf | Bin 15972 -> 15981 bytes Master/texmf-dist/doc/man/man1/mtx-fcd.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-fcd.man1.pdf | Bin 16594 -> 16610 bytes Master/texmf-dist/doc/man/man1/mtx-flac.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-flac.man1.pdf | Bin 15616 -> 15627 bytes Master/texmf-dist/doc/man/man1/mtx-fonts.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-fonts.man1.pdf | Bin 17190 -> 17198 bytes Master/texmf-dist/doc/man/man1/mtx-grep.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-grep.man1.pdf | Bin 16304 -> 16311 bytes Master/texmf-dist/doc/man/man1/mtx-interface.1 | 5 +- .../texmf-dist/doc/man/man1/mtx-interface.man1.pdf | Bin 17293 -> 17356 bytes Master/texmf-dist/doc/man/man1/mtx-metapost.1 | 2 +- .../texmf-dist/doc/man/man1/mtx-metapost.man1.pdf | Bin 15595 -> 15602 bytes Master/texmf-dist/doc/man/man1/mtx-modules.1 | 2 +- .../texmf-dist/doc/man/man1/mtx-modules.man1.pdf | Bin 15990 -> 15992 bytes Master/texmf-dist/doc/man/man1/mtx-package.1 | 2 +- .../texmf-dist/doc/man/man1/mtx-package.man1.pdf | Bin 15604 -> 15610 bytes Master/texmf-dist/doc/man/man1/mtx-patterns.1 | 2 +- .../texmf-dist/doc/man/man1/mtx-patterns.man1.pdf | Bin 16712 -> 16727 bytes Master/texmf-dist/doc/man/man1/mtx-pdf.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-pdf.man1.pdf | Bin 15907 -> 15915 bytes Master/texmf-dist/doc/man/man1/mtx-plain.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-plain.man1.pdf | Bin 15643 -> 15652 bytes Master/texmf-dist/doc/man/man1/mtx-profile.1 | 2 +- .../texmf-dist/doc/man/man1/mtx-profile.man1.pdf | Bin 16228 -> 16240 bytes Master/texmf-dist/doc/man/man1/mtx-rsync.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-rsync.man1.pdf | Bin 15652 -> 15663 bytes Master/texmf-dist/doc/man/man1/mtx-scite.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-scite.man1.pdf | Bin 15743 -> 15754 bytes Master/texmf-dist/doc/man/man1/mtx-server.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-server.man1.pdf | Bin 15872 -> 15880 bytes Master/texmf-dist/doc/man/man1/mtx-texworks.1 | 2 +- .../texmf-dist/doc/man/man1/mtx-texworks.man1.pdf | Bin 15156 -> 15163 bytes Master/texmf-dist/doc/man/man1/mtx-timing.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-timing.man1.pdf | Bin 15337 -> 15347 bytes Master/texmf-dist/doc/man/man1/mtx-tools.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-tools.man1.pdf | Bin 17623 -> 17636 bytes Master/texmf-dist/doc/man/man1/mtx-unicode.1 | 2 +- .../texmf-dist/doc/man/man1/mtx-unicode.man1.pdf | Bin 15068 -> 15074 bytes Master/texmf-dist/doc/man/man1/mtx-unzip.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-unzip.man1.pdf | Bin 15237 -> 15240 bytes Master/texmf-dist/doc/man/man1/mtx-update.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-update.man1.pdf | Bin 17667 -> 17670 bytes Master/texmf-dist/doc/man/man1/mtx-vscode.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-vscode.man1.pdf | Bin 14853 -> 14862 bytes Master/texmf-dist/doc/man/man1/mtx-watch.1 | 2 +- Master/texmf-dist/doc/man/man1/mtx-watch.man1.pdf | Bin 16445 -> 16452 bytes Master/texmf-dist/doc/man/man1/mtx-youless.1 | 2 +- .../texmf-dist/doc/man/man1/mtx-youless.man1.pdf | Bin 15992 -> 16004 bytes Master/texmf-dist/doc/man/man1/mtxrun.1 | 2 +- Master/texmf-dist/doc/man/man1/mtxrun.man1.pdf | Bin 20277 -> 20286 bytes Master/texmf-dist/doc/man/man1/texexec.1 | 2 +- Master/texmf-dist/doc/man/man1/texexec.man1.pdf | Bin 17103 -> 17108 bytes Master/texmf-dist/doc/man/man1/texmfstart.1 | 2 +- Master/texmf-dist/doc/man/man1/texmfstart.man1.pdf | Bin 20277 -> 20286 bytes 290 files changed, 22039 insertions(+), 2709 deletions(-) create mode 100644 Master/texmf-dist/doc/context/documents/general/magazines/mag-1105-mkiv.pdf create mode 100644 Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-characters.pdf create mode 100644 Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-grouping.pdf create mode 100644 Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-macros.pdf create mode 100644 Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-paragraphs.pdf create mode 100644 Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-scope.pdf create mode 100644 Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-security.pdf create mode 100644 Master/texmf-dist/doc/context/documents/general/manuals/primitives.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-concepts.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-concepts.tex create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-datatypes.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-datatypes.tex create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-ecmascript.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-ecmascript.tex create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-gpdemo.gp create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-gpdemo.svg create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-implementers.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-implementers.tex create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-luametatex.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-luametatex.tex create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mkii-mkiv-mkxl.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mkii-mkiv-mkxl.tex create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mp.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mp.tex create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-sin.svg create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-svg.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-svg.tex create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-tokens.pdf create mode 100644 Master/texmf-dist/doc/context/presentations/context/2020/context-2020-tokens.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/magazines/mag-1105-mkiv.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/cld/cld-scanners.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/cld/cld-variables.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/evenmore/evenmore-keywords.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/evenmore/evenmore-numbers.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/evenmore/evenmore-parameters.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/evenmore/evenmore-parsing.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/evenmore/evenmore-tokens.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/followingup/followingup-fonts.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/lowlevel/lowlevel-characters.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/lowlevel/lowlevel-grouping.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/lowlevel/lowlevel-security.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/luametafun/luametafun-color.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/luametafun/luametafun-poisson.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/luametafun/luametafun-technology.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/luametatex/luametatex-codes.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/luametatex/luametatex.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/metafun/gracht.mp create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/metafun/metafun-text-lmtx.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/primitives/primitives.tex create mode 100644 Master/texmf-dist/doc/context/sources/general/manuals/workflows/workflows-parallel.tex (limited to 'Master/texmf-dist/doc') diff --git a/Master/texmf-dist/doc/context/documents/general/leaflets/leaflet-mixing.pdf b/Master/texmf-dist/doc/context/documents/general/leaflets/leaflet-mixing.pdf index a023f9e881e..f61de6d3f03 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/leaflets/leaflet-mixing.pdf and b/Master/texmf-dist/doc/context/documents/general/leaflets/leaflet-mixing.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/magazines/mag-1105-mkiv.pdf b/Master/texmf-dist/doc/context/documents/general/magazines/mag-1105-mkiv.pdf new file mode 100644 index 00000000000..71abf84ec2d Binary files /dev/null and b/Master/texmf-dist/doc/context/documents/general/magazines/mag-1105-mkiv.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/cld-mkiv.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/cld-mkiv.pdf index bac02979fe8..f0825379372 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/manuals/cld-mkiv.pdf and b/Master/texmf-dist/doc/context/documents/general/manuals/cld-mkiv.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/evenmore.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/evenmore.pdf index 5c40721927c..73fe8115521 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/manuals/evenmore.pdf and b/Master/texmf-dist/doc/context/documents/general/manuals/evenmore.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-boxes.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-boxes.pdf index 305e6bebab0..0ee0f66a16e 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-boxes.pdf and b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-boxes.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-characters.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-characters.pdf new file mode 100644 index 00000000000..e3e13063056 Binary files /dev/null and b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-characters.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-conditionals.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-conditionals.pdf index 5e3d82ceef7..6de0090b3d3 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-conditionals.pdf and b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-conditionals.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-grouping.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-grouping.pdf new file mode 100644 index 00000000000..a8d103236c8 Binary files /dev/null and b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-grouping.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-macros.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-macros.pdf new file mode 100644 index 00000000000..63689f1c82f Binary files /dev/null and b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-macros.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-paragraphs.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-paragraphs.pdf new file mode 100644 index 00000000000..bde7fda146e Binary files /dev/null and b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-paragraphs.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-scope.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-scope.pdf new file mode 100644 index 00000000000..0a17a314c1b Binary files /dev/null and b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-scope.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-security.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-security.pdf new file mode 100644 index 00000000000..b92f00ce3c0 Binary files /dev/null and b/Master/texmf-dist/doc/context/documents/general/manuals/lowlevel-security.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/luametafun.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/luametafun.pdf index fa15b985d87..25c37bdcb30 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/manuals/luametafun.pdf and b/Master/texmf-dist/doc/context/documents/general/manuals/luametafun.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/luametatex.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/luametatex.pdf index fd83dfb5aa4..5c2e3aea1f2 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/manuals/luametatex.pdf and b/Master/texmf-dist/doc/context/documents/general/manuals/luametatex.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/luatex.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/luatex.pdf index 553b1613dfc..eed48236a58 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/manuals/luatex.pdf and b/Master/texmf-dist/doc/context/documents/general/manuals/luatex.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/primitives.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/primitives.pdf new file mode 100644 index 00000000000..9d6fe7670d3 Binary files /dev/null and b/Master/texmf-dist/doc/context/documents/general/manuals/primitives.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/manuals/units-mkiv.pdf b/Master/texmf-dist/doc/context/documents/general/manuals/units-mkiv.pdf index 5631be78e72..d4099121114 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/manuals/units-mkiv.pdf and b/Master/texmf-dist/doc/context/documents/general/manuals/units-mkiv.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-cs.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-cs.pdf index 7c2f664f6ba..d209e6bfd09 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-cs.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-cs.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-de.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-de.pdf index 09a121ef8a1..4d97df581d4 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-de.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-de.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-en.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-en.pdf index a877fa0eafc..552b8f5eb86 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-en.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-en.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-fr.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-fr.pdf index c5dfbf669cf..9812f4e2cee 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-fr.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-fr.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-it.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-it.pdf index dcafda14a27..b9aafe70eb9 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-it.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-it.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-cs.pdf index 8e2ac2e8415..a2f4fa91ea3 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-cs.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-cs.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-de.pdf index f37ea8a163e..fafb7c17527 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-de.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-de.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-en.pdf index 780de383410..505b8fcd26b 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-en.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-en.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-fr.pdf index 2cb28142152..b04e5f50f04 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-fr.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-fr.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-it.pdf index 75f5974833b..d383904838f 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-it.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-it.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-nl.pdf index 039c02bd357..c8a6554476b 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-nl.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-nl.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-ro.pdf index 4f49185b54f..0d21e5aa297 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-ro.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-ro.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-nl.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-nl.pdf index e103267502f..336a7e35858 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-nl.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-nl.pdf differ diff --git a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-ro.pdf b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-ro.pdf index 36f50680a19..bb09d153e7b 100644 Binary files a/Master/texmf-dist/doc/context/documents/general/qrcs/setup-ro.pdf and b/Master/texmf-dist/doc/context/documents/general/qrcs/setup-ro.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-concepts.pdf b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-concepts.pdf new file mode 100644 index 00000000000..913db5ef32b Binary files /dev/null and b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-concepts.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-concepts.tex b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-concepts.tex new file mode 100644 index 00000000000..a472a33f462 --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-concepts.tex @@ -0,0 +1,694 @@ +% language=us + +\usemodule[present-boring,abbreviations-logos] + +\startdocument + [title={CONCEPTS}, + banner={experiments turned features}, + location={context\enspace {\bf 2020}\enspace meeting}] + +% see datatypes, hyphenation etc + +\starttitle[title=Experiments] + +There have been quite some experiments. Some results were rejected, some kept. +Here are a few (that come to mind). This talk is a mix of summary, discussion and +some demos. + +\stoptitle + +\starttitle[title=Math] + +There are a couple of additional features in the math engine. Most concern a bit +more control over hard coded behavior, but some are sort of new: + +\startbuffer +test $a = b \discretionary class 3 {$<$}{$>$}{$\neq$} c$ test +\stopbuffer + +\typebuffer + +When there is enough room this will give + +\getbuffer + +When \type {\hsize} is limited we get: + +{\hsize 4mm \getbuffer} + +\page + +\enabletrackers[math.toysymbol] + +\definemathtoysymbol[Plus] [bin][+] +\definemathtoysymbol[Minus][bin][-] +\definemathtoysymbol[Equal][rel][=] + +\start + +\let\darkblue\darkyellow %\showmakeup[glue] + +$\dorecurse{199} { + x_{#1} \ifodd#1\relax\Plus\else\Minus\fi +} x_{200} \Equal n$ + +\dorecurse{10} { + test \discretionary + {\darkred hel $\sqrt{y}$ lo} + {\darkgreen good $\sqrt{z}$ bye} + {\darkblue wel $\sqrt{x}$ come} test +} + +\dorecurse{10} {test #1 + $x + 2x \discretionary class 2 + {$+ \, \cdots $} + {$ \cdots \, +$} + {$+ \, \cdots \, +$} nx$ test +} + +\stop + +\stoptitle + +\starttitle[title=More math] + +In traditional \TEX\ the last setting wins: + +\startbuffer +\def\whatevera + {\Umathordrelspacing \textstyle=50mu + \Umathopenbinspacing\textstyle=50mu} + +\def\whateverb + {\Umathordrelspacing \textstyle=25mu + \Umathopenbinspacing\textstyle=25mu} + +$\whatevera a = (-2)$ \par +$\whateverb a = (-2)$ \par +$\whatevera a = (-2) \quad \whateverb a = (-2)$ \par +\stopbuffer + +\typebuffer \startpacked \getbuffer \stoppacked + +\page + +In \LUAMETATEX\ we can freeze settings on the spot: + +\startbuffer +\def\whatevera + {\frozen\Umathordrelspacing \textstyle=50mu + \frozen\Umathopenbinspacing\textstyle=50mu} + +\def\whateverb + {\frozen\Umathordrelspacing \textstyle=25mu + \frozen\Umathopenbinspacing\textstyle=25mu} + +$\whatevera a = (-2)$ \par +$\whateverb a = (-2)$ \par +$\whatevera a = (-2) \quad \whateverb a = (-2)$ \par +\stopbuffer + +\typebuffer \startpacked \getbuffer \stoppacked + +\stoptitle + +\starttitle[title=Macros] + +Not storing arguments: + +\starttyping +\def\foo#1#0#3{....} + +\foo{11}{22}{33} + +\foo #1#0#3->.... +#1<-11 +#2<- +#3<-33 +\stoptyping + +Ignoring arguments: + +\starttyping +\def\foo#1#-#2{#1#2} + +\foo{1}{2}{3} + +13 +\stoptyping + +\page + +Normal behaviour: + +\starttyping +\def\foo#1#2#3{#1#2#3} + +\foo{1}{{2}}{3} + +\foo #1#2#3->#1#2#3 +#1<-1 +#2<-{2} +#3<-3 +\stoptyping + +Special behaviour: + +\starttyping +\def\foo#1#+#3{#1#2#3} + +\foo #1#2#3->#1#2#3 +#1<-1 +#2<-{{2}} +#3<-3 +\stoptyping + +\page + +Optional tokens (we also show some \TEX-expansion-horror here): + +\starttyping +\edef\a!space{\expandtoken \ignorecatcode \spaceasciicode} + +\normalexpanded { + + \protected \def \noexpand \doifelseinset#1#2% + {\noexpand\ifhasxtoks{,\a!space#1,}{,#2,}% + \noexpand\expandafter\noexpand\firstoftwoarguments + \noexpand\else + \noexpand\expandafter\noexpand\secondoftwoarguments + \noexpand\fi} + +} +\stoptyping + +or as tokens (\type{\showluatokens\doifelseinset}) on the next page: + +\page + +\starttyping +591504 13 1 argument +643771 13 2 argument +595596 14 0 end match +633535 120 48 if test ifhasxtoks +643789 1 123 left brace +643793 12 44 other char +643741 9 32 ignore +185919 5 1 parameter +633495 12 44 other char + 57752 2 125 right brace +167619 1 123 left brace +643686 12 44 other char +228803 5 2 parameter +643434 12 44 other char +643792 2 125 right brace +643788 114 0 expand after expandafter +643775 125 0 call firstoftwoarguments +590609 120 3 if test else +643628 114 0 expand after expandafter +643754 125 0 call secondoftwoarguments +643763 120 2 if test fi +\stoptyping + +\page + +Cheating with arguments: + +\startbuffer +\def\foo#1=#2,{(#1/#2)} + +\foo 1=2,\ignorearguments +\foo 1=2\ignorearguments +\foo 1\ignorearguments +\foo \ignorearguments +\stopbuffer + +\typebuffer + +\getbuffer + +As in: + +\startbuffer +\def\foo#1=#2,{\ifarguments\or(#1)\or(#1/#2)\fi} + +\foo 1=2,\ignorearguments +\foo 1=2\ignorearguments +\foo 1\ignorearguments +\foo \ignorearguments +\stopbuffer + +\typebuffer + +\getbuffer + +\stoptitle + +\starttitle[title=Hyphenation] + +Hyphenation at work: + +\startlinecorrection[line] +\startcombination[distance=3cm,nx=6] + {\vtop{\hsize 2mm \strut NEDERLANDS\vskip.5\lineheight}} {\type{NEDERLANDS}} + {\vtop{\hsize 2mm \strut Nederlands\vskip.5\lineheight}} {\type{Nederlands}} + {\vtop{\hsize 2mm \strut nederlands\vskip.5\lineheight}} {\type{nederlands}} + {\vtop{\hsize 2mm \strut \CONTEXT \vskip.5\lineheight}} {\type{\CONTEXT }} + {\vtop{\hsize 2mm \strut text\-test\vskip.5\lineheight}} {\type{text\-test}} + {\vtop{\hsize 2mm \strut test-test \vskip.5\lineheight}} {\type{test-test }} +\stopcombination +\stoplinecorrection + +Controlling hyphenation: + +\startbuffer[1] +\nohyphens NEDERLANDS {\dohyphens Nederlands} nederlands +\stopbuffer + +\startbuffer[2] +NEDERLANDS {\nohyphens Nederlands} nederlands +\stopbuffer + +\typebuffer[1] and \typebuffer[2] + +\startlinecorrection[line] +\startcombination[distance=4cm,nx=2] + {\small \small \vtop{\hsize 2mm \strut \nl \getbuffer[1]}} {} + {\small \small \vtop{\hsize 2mm \strut \nl \getbuffer[2]}} {} +\stopcombination +\stoplinecorrection + +\page + +There are several ways to implement this: + +\startitemize +\startitem choose a language with no patterns: + \startitemize[packed] + \startitem it's quite efficient \stopitem + \startitem we loose language specifics \stopitem + \stopitemize +\stopitem +\startitem set the left and right hyphen min values high: + \startitemize[packed] + \startitem it works okay \stopitem + \startitem it is a hack \stopitem + \startitem we still enter the routine \stopitem + \stopitemize +\stopitem +\startitem block the mechanism: + \startitemize[packed] + \startitem it provides detailed control \stopitem + \startitem it is conceptually clean \stopitem + \stopitemize +\stopitem +\stopitemize + +The last method is what we use in \LMTX: + +\type {\dohyphens} : {\tttf \meaning\dohyphens} + +\type {\nohyphens} : {\tttf \meaning\nohyphens} + +\page + +For the moment we have this (it might evolve): + +\starttyping[style=\tt\small\small] +\chardef \completehyphenationmodecode \numexpr + \normalhyphenationmodecode % \discretionary + + \automatichyphenationmodecode % - + + \explicithyphenationmodecode % \- + + \syllablehyphenationmodecode % pattern driven + + \uppercasehyphenationmodecode % replaces \uchyph + + \compoundhyphenationmodecode % replaces \compoundhyphenmode + % \strictstarthyphenationmodecode % replaces \hyphenationbounds (strict = original tex) + % \strictendhyphenationmodecode % replaces \hyphenationbounds (strict = original tex) + + \automaticpenaltyhyphenationmodecode % replaces \hyphenpenaltymode (otherwise use \exhyphenpenalty) + + \explicitpenaltyhyphenationmodecode % replaces \hyphenpenaltymode (otherwise use \exhyphenpenalty) + + \permitgluehyphenationmodecode % turn glue into kern in \discretionary + + \permitallhyphenationmodecode % okay, let's be even more tolerant + + \permitmathreplacehyphenationmodecode % and again we're more permissive +\relax +\stoptyping + +This replaces some \LUATEX\ mode variables and adds some more which is why we now use +a bitset instead of multiple parameters. + +\page + +In addition we have more detailed discretionary control: + +\startbuffer +nederlands\discretionary {!}{!}{!}nederlands +nederlands\discretionary options 1 {!}{!}{!}nederlands +nederlands\discretionary options 2 {!}{!}{!}nederlands +nederlands\discretionary options 3 {!}{!}{!}nederlands +\stopbuffer + +\typebuffer + +\startlinecorrection[line] +\startcombination[distance=4cm,nx=4] + {\vtop{\hsize 1mm \strut \nl nederlands\discretionary {!}{!}{!}nederlands}} {} + {\vtop{\hsize 1mm \strut \nl nederlands\discretionary options 1 {!}{!}{!}nederlands}} {} + {\vtop{\hsize 1mm \strut \nl nederlands\discretionary options 2 {!}{!}{!}nederlands}} {} + {\vtop{\hsize 1mm \strut \nl nederlands\discretionary options 3 {!}{!}{!}nederlands}} {} +\stopcombination +\stoplinecorrection + +At some point it will become \quote {frozen} functionality and that's when it gets +documented (first we need to integrate and play a bit more with it in \CONTEXT). + +\stoptitle + +\starttitle[title=Local control] + +In \LUATEX\ we have experimental (kind of ugly) immediate assignments that can be +used in expansions without blocking (resulting in tokens that is). + +But now we now have local control: + +\startbuffer +\newcount\foocounter + +\def\foo + {\advance\foocounter\plusone + \the\foocounter} + +\edef\oof{(\foo)(\foo)(\foo)(\foo)} + +\meaning\oof +\stopbuffer + +\typebuffer + +{\tttf \nohyphens \veryraggedright \getbuffer} + +\page + +Immediate expansion: + +\startbuffer +\def\foo + {\beginlocalcontrol + \advance\foocounter\plusone + \endlocalcontrol + \the\foocounter} + +\edef\oof{(\foo)(\foo)(\foo)(\foo)} + +\meaning\oof +\stopbuffer + +\typebuffer + +{\tttf \getbuffer} + +Hidden assignments: + +\startbuffer +\scratchcounterone \beginlocalcontrol + \scratchcountertwo 100 + \multiply \scratchcountertwo by 4 +\endlocalcontrol \scratchcountertwo +\the\scratchcounterone +\stopbuffer + +\typebuffer + +{\tttf \getbuffer} + +% \the \beginlocalcontrol +% \scratchcountertwo 100 +% \multiply \scratchcountertwo by 4 +% \endlocalcontrol \scratchcountertwo + +\page + +Fancy expansion: + +\startbuffer +\protected\def\foo + {\beginlocalcontrol + \advance\foocounter\plusone + \endlocalcontrol + \the\foocounter} + +\edef\oof{(\foo)(\foo)(\foo)(\foo)} +\edef\ofo{(\expand\foo)(\expand\foo)(\expand\foo)(\expand\foo)} + +\meaning\oof \par \meaning\ofo +\stopbuffer + +\typebuffer + +{\tttf \getbuffer} + +And a teaser: + +\starttyping +\protected\def\widthofcontent#1{\beginlocalcontrol + \setbox\scratchbox\hbox{#1}\endlocalcontrol \wd\scratchbox} +\stoptyping + +\stoptitle + +\starttitle[title=Conditionals] + +We can get nicer code that this: + +\starttyping +\ifdim\scratchdimen=10pt + \expandafter\one +\else\ifnum\scratchcounter=20 + \expandafter\expandafter\expandafter\two +\else + \expandafter\expandafter\expandafter\three +\fi\fi +\stoptyping + +This becomes: + +\starttyping +\ifdim\scratchdimen=10pt + \expandafter\one +\orelse\ifnum\scratchcounter=20 + \expandafter\two +\else + \expandafter\three +\fi +\stoptyping + +\page + +There is a bunch of extra conditions like the generic: + +\startnarrower \type {\ifcondition} \stopnarrower + +some token testers like: + +\startnarrower \type {\iftok} and \type {\ifhas(x)tok(s)} \stopnarrower + +some specific for math: + +\startnarrower \type {\ifmathstyle} and \type {\ifmathparameter} \stopnarrower + +macro helpers: + +\startnarrower \type {\ifarguments}, \type {\ifboolean} and \type {\ifempty} \stopnarrower + +robust number and dimension interception: + +\startnarrower \type {\ifchknum}, \type {\ifchkdim}, \type {\ifcmpnum}, \type {\ifcmpdim)}, \type {\ifnumval} and \type {\ifdimval} \stopnarrower + +bonus checks: + +\startnarrower \type {\iffrozen}, \type {\ifprotected} and \type {\ifusercmd} \stopnarrower + +and the mentioned: + +\startnarrower \type {\orelse} and \type {\orunless} \stopnarrower + +\stoptitle + +\starttitle[title=Migration] + +\startbuffer +h: \setbox0\hbox{box \footnote{h: box}}\setbox2\hbox{\box 0}\box2\par +h: \setbox0\hbox{copy \footnote{h: copy}}\setbox2\hbox{\copy 0}\box2\par +h: \setbox0\hbox{unbox \footnote{h: unhbox}}\setbox2\hbox{\unhbox 0}\box2\par +h: \setbox0\hbox{uncopy \footnote{h: unhcopy}}\setbox2\hbox{\unhcopy0}\box2\par + +v: \setbox0\hbox{box \footnote{v: box}}\setbox2\vbox{\box 0}\box2\par +v: \setbox0\hbox{copy \footnote{v: copy}}\setbox2\vbox{\copy 0}\box2\par +v: \setbox0\hbox{unbox \footnote{v: unhbox}}\setbox2\vbox{\unhbox 0}\box2\par +v: \setbox0\hbox{uncopy \footnote{v: unhcopy}}\setbox2\vbox{\unhcopy0}\box2\par + +\starttabulate[||] +\NC tabulate \footnote{tabulate} \NC \NR +\stoptabulate +\stopbuffer + +\typebuffer[style={\tt\small}] + +\page + +\startpacked \getbuffer \stoppacked + +% \setbox0\hbox{test \footnote{test}} (\prelistbox0) (\postlistbox0) +% \setprelistbox0\hbox{BEFORE} \setpostlistbox0\hbox{AFTER} +% \box0 + +% \setbox0\hbox{test \footnote{test}} (\prelistcopy0) (\postlistcopy0) +% \setprelistbox0\hbox{BEFORE} \setpostlistbox0\hbox{AFTER} +% \box0 + +\stoptitle + +\starttitle[title=Normalizing lines] + +We can have predictable lines: + +\startbuffer + \hangindent3cm \hangafter 2 \leftskip1cm \rightskip1cm \input ward \par +\stopbuffer + +\typebuffer + +Standard (but already with left skips): + +\start + \bitwiseflip \normalizelinemode -\indentskipmodecode + \bitwiseflip \normalizelinemode -\normalizelinemodecode + \showmakeup \relax \getbuffer +\stop + +Normalized (enhanced, no shifts, indent skip): + +\start + \bitwiseflip \normalizelinemode \indentskipmodecode + \bitwiseflip \normalizelinemode \normalizelinemodecode + \showmakeup \relax \getbuffer +\stop + +\page + +\startbuffer + \parshape 2 1cm 10cm 2cm 15cm \leftskip1cm \rightskip1cm \input ward \par +\stopbuffer + +\typebuffer + +Standard: + +\start + \bitwiseflip \normalizelinemode -\indentskipmodecode + \bitwiseflip \normalizelinemode -\normalizelinemodecode + \showmakeup \relax \getbuffer +\stop + +Normalized: + +\start + \bitwiseflip \normalizelinemode \indentskipmodecode + \bitwiseflip \normalizelinemode \normalizelinemodecode + \showmakeup \relax \getbuffer +\stop + +% {\showmakeup \getbuffer} + +\stoptitle + +\starttitle[title=Freezing paragraph properties] + +\startbuffer +\forgetparagraphfreezing \placefigure[left]{}{} {\bf Andrew Cuomo:} \input cuomo +\stopbuffer + +\typebuffer[style=\tt\small] \start \switchtobodyfont[8pt] \getbuffer \par \stop + +\startbuffer +\setparagraphfreezing \placefigure[left]{}{} {\bf Andrew Cuomo:} \input cuomo +\stopbuffer + +\typebuffer[style=\tt\small] \start \switchtobodyfont[8pt] \getbuffer \par \stop + +\stoptitle + +\starttitle[title=Wrapping up paragraphs] + +\setparagraphfreezing + +We have \type {\wrapuppar} as new hook. An experimental mechanism has been build +around it so that Wolfgang and I can freak out on this. + +\startbuffer +\def\TestA{\registerparwrapper + {A} + {[\ignorespaces} + {\removeunwantedspaces]\showparwrapperstate{A}}} + +\def\TestB#1{\registerparwrapper + {B#1} + {(\ignorespaces} + {\removeunwantedspaces)\showparwrapperstate{B#1}}} + +\def\TestC{\registerparwrapper + {C} + {<\ignorespaces} + {\removeunwantedspaces>\showparwrapperstate{C}\forgetparwrapper}} + +\def\TestR{\registerparwrapperreverse + {R} + {<\ignorespaces} + {\removeunwantedspaces>\showparwrapperstate{R}}} +\stopbuffer + +\typebuffer[style=\tt\small] \getbuffer + +\page + +Example 1: + +\startbuffer +\TestA +\dorecurse{3} + {1.#1 before \ruledvbox{\hsize2em\raggedcenter\TestB1 !\par} after\par} +\dorecurse{3} + {2.#1 before \ruledvbox{\hsize3em\raggedcenter !\par} after\par} +\dorecurse{3} + {3.#1 before \ruledvbox{\hsize4em\raggedcenter\TestB2 !} after\par} +\forgetparwrapper +\dorecurse{3} + {4.#1 before \ruledvbox{\hsize5em\raggedcenter\TestB3 !} after\par} +\TestC +\dorecurse{3} + {5.#1 before \ruledvbox{\hsize2em\raggedcenter\TestA !} after\par} +\stopbuffer + +\typebuffer[style=\tt\small] + +\startcolumns \startpacked \getbuffer \stoppacked \stopcolumns + +\page + +Example 2: + +\startbuffer +\TestA +\dorecurse{3}{6.#1 before after\par} \blank +\TestB4 +\dorecurse{3}{7.#1 before after\par} \blank +\TestB5 +\TestR +\dorecurse{3}{8.#1 before after\par} \blank +\stopbuffer + +\typebuffer[style=\tt\small] + +\startcolumns \startpacked \getbuffer \stoppacked \stopcolumns + +\stoptitle + +\stopdocument diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-datatypes.pdf b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-datatypes.pdf new file mode 100644 index 00000000000..906b1fe04d2 Binary files /dev/null and b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-datatypes.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-datatypes.tex b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-datatypes.tex new file mode 100644 index 00000000000..590cdbf93e8 --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-datatypes.tex @@ -0,0 +1,454 @@ +\usemodule[present-boring,abbreviations-logos] + +\startdocument + [title={DATATYPES}, + banner={additional datatypes in lmtx}, + location={context\enspace {\bf 2020}\enspace meeting}] + +\starttitle[title=Native \TEX\ datatypes: simple registers] + +\startbuffer +integer: \count 123 = 456 \the\count123 +\stopbuffer + +\typebuffer {\getbuffer} + +\startbuffer +dimension: \dimen123 = 456pt \the\dimen123 +\stopbuffer + +\typebuffer {\getbuffer} + +\startbuffer +glue: \skip123 = 6pt plus 5pt minus 4pt\relax \the\skip123 +\stopbuffer + +\typebuffer {\getbuffer} + +\startbuffer +muglue: \muskip123 = 6mu plus 5mu minus 4mu\relax \the\muskip123 +\stopbuffer + +\typebuffer {\getbuffer} + +\startbuffer +attribute: \attribute123 = 456 \the\attribute123 +\stopbuffer + +\typebuffer {\getbuffer} + +\blank[2*line] + +\starttyping +\global \the \countdef \dimendef \skipdef \muskipdef \attributedef +\advance \multiply \divide \numexpr \dimexpr \glueexpr \muexpr +\stoptyping + +\stoptitle + +\starttitle[title=Native \TEX\ datatypes: tokens] + +\startbuffer +toks: \toks123 = {456} \the\toks123 +\stopbuffer + +\typebuffer {\getbuffer} + +\blank[2*line] + +\starttyping +\global \the \toksdef +\toksapp \etoksapp \xtoksapp \gtoksapp +\tokspre \etokspre \xtokspre \gtokspre +\stoptyping + +\blank[2*line] + +(in retrospect: eetex) + +\stoptitle + +\starttitle[title=Native \TEX\ datatypes: boxes] + +\startbuffer +box: \box123 = \hbox {456} (\the\wd123,\the\ht123,\the\dp123) \box123 +\stopbuffer + +\typebuffer {\getbuffer} + +\blank[2*line] + +\starttyping +\global \box \copy \unhbox \unvbox +\hbox \vbox \vtop \hpack \vpack \tpack +\wd \ht \dp \boxtotal +\boxdirection \boxattr +\boxorientation \boxxoffset \boxyoffset \boxxmove \boxymove +\stoptyping + +\stoptitle + +\starttitle[title=Native \TEX\ datatypes: macros] + +\startbuffer +\def\onetwothree{346} \onetwothree +\stopbuffer + +\typebuffer {\getbuffer} + +\blank[2*line] + +\starttyping +\global \protected \frozen +\def \edef \edef \xdef +\meaning +\stoptyping + +\stoptitle + +\starttitle[title=Native \LUA\ datatypes: numbers] + +\startbuffer +\ctxlua{local n = 123 context(n)}\quad +\ctxlua{local n = 123.456 context(n)}\quad +\ctxlua{local n = 123.4E56 context(n)}\quad +\ctxlua{local n = 0x123 context(n)}\quad +\ctxlua{local n = 0x1.37fe4cd4b70b2p-1 context(n)} +\stopbuffer + +\typebuffer {\getbuffer} + +\blank[2*line] + +\starttyping ++ - * / // % ^ | ~ & << >> == ~= < > <= >= ( ) +\stoptyping + +\stoptitle + +\starttitle[title=Native \LUA\ datatypes: strings] + +\startbuffer +\ctxlua{local s = "abc" context(s)}\quad +\ctxlua{local s = 'abc' context(s)}\quad +\ctxlua{local s = [[abc]] context(s)}\quad +\ctxlua{local s = [==[abc]==] context(s)}\quad +\stopbuffer + +\typebuffer {\getbuffer} + +\blank[2*line] + +\starttyping +.. # == ~= < > <= >= +\stoptyping + +\stoptitle + +\starttitle[title=Native \LUA\ datatypes: booleans and nil] + +\startbuffer +\ctxlua{local b = true context(b)}\quad +\ctxlua{local b = false context(b)}\quad +\ctxlua{local n = nil context(n)}\quad +\stopbuffer + +\typebuffer {\getbuffer} + +\blank[2*line] + +\starttyping +== ~= and or not +\stoptyping + +\stoptitle + +\starttitle[title=Native \LUA\ datatypes: some more] + +\starttyping +functions +userdata (lpeg is userdata) +coroutine +\stoptyping + +\LUAMETATEX\ provides tokens and nodes as userdata and some libraries also +use them (complex, decimal, pdf, etc). + +\stoptitle + +\starttitle[title=Both worlds combined] + +\startitemize[packed] +\startitem There are only 64K registers (although we can extend that if needed). \stopitem +\startitem Accessing registers at the \LUA\ end is not that efficient. \stopitem +\startitem So we have now datatypes at the \LUA\ end with access at the \TEX\ end. \stopitem +\startitem Their values can go beyond what \TEX\ registers provide. \stopitem +\stopitemize + +\startbuffer +\luacardinal bar 123 +\luainteger bar -456 +\luafloat bar 123.456E-3 +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\the\luacardinal bar \quad +\the\luainteger bar \quad +\the\luafloat bar +\stopbuffer + +\typebuffer \getbuffer + +\page + +The usual \LUA\ semantics apply: + +\startbuffer +\luacardinal bar 0x123 +\luainteger bar -0x456 +\luafloat bar 0x123.456p-3 +\stopbuffer + +\typebuffer \getbuffer + +So, now we get: + +\startbuffer +\the\luacardinal bar \quad +\the\luainteger bar \quad +\the\luafloat bar +\stopbuffer + +\getbuffer + +Equal signs are optional: + +\startbuffer +\luainteger gnu= 123456 \luafloat gnu= 123.456e12 +\luainteger gnu = 123456 \luafloat gnu = 123.456e12 +\luainteger gnu =123456 \luafloat gnu =123.456e12 +\stopbuffer + +\typebuffer + +These commands can be uses for assignments as well as serialization. They use the +\LUAMETATEX\ value function feature. + +\page + +Dimensions are serialized differently so that they can be used like this: + +\startbuffer +\luadimen test 100pt \scratchdimen = .25 \luadimen test: \the\scratchdimen +\stopbuffer + +\typebuffer + +\getbuffer + +\page + +Assume that we have this: + +\startbuffer +\luacardinal x = -123 \luafloat x = 123.123 +\luacardinal y = 456 \luafloat y = -456.456 +\stopbuffer + +\typebuffer \getbuffer + +We can then use the macro \type {\luaexpression} that takes an optional keyword: + +\startbuffer +- : \luaexpression {n.x + 2*n.y} +f : \luaexpression float {n.x + 2*n.y} +i : \luaexpression integer {n.x + 2*n.y} +c : \luaexpression cardinal {n.x + 2*n.y} +b : \luaexpression boolean {n.x + 2*n.y} +l : \luaexpression lua {n.x + 2*n.y} +\stopbuffer + +\typebuffer + +The serialization can be different for these cases: + +\startlines +\tt \getbuffer +\stoplines + +Variables have their own namespace but get resolved across namespaces (f, i, c). + +\page + +Special tricks: + +\startbuffer +\scratchdimen 123.456pt [\the\scratchdimen] [\the\nodimen\scratchdimen] +\stopbuffer + +\typebuffer \getbuffer + +Does nothing, nor does: + +\startbuffer +\nodimen\scratchdimen = 654.321pt +\stopbuffer + +\typebuffer \getbuffer + +But: + +\starttabulate[|T|T|] +\NC \type {\the\nodimen bp \scratchdimen} \NC \the\nodimen bp \scratchdimen \NC \NR +\NC \type {\the\nodimen cc \scratchdimen} \NC \the\nodimen cc \scratchdimen \NC \NR +\NC \type {\the\nodimen cm \scratchdimen} \NC \the\nodimen cm \scratchdimen \NC \NR +\NC \type {\the\nodimen dd \scratchdimen} \NC \the\nodimen dd \scratchdimen \NC \NR +\NC \type {\the\nodimen in \scratchdimen} \NC \the\nodimen in \scratchdimen \NC \NR +\NC \type {\the\nodimen mm \scratchdimen} \NC \the\nodimen mm \scratchdimen \NC \NR +\NC \type {\the\nodimen pt \scratchdimen} \NC \the\nodimen pt \scratchdimen \NC \NR +\NC \type {\the\nodimen sp \scratchdimen} \NC \the\nodimen sp \scratchdimen \NC \NR +\stoptabulate + +gives different units! In the coffee break it was decided to drop the \type {nc} +and \type {nd} units in \LUAMETATEX\ when Arthur indicated that they never became +a standard. Dropping the \type {true} variants also makes sense but we postponed +dropping the \type {in} (inch). + +\stoptitle + +\starttitle[title=Arrays] + +Two dimensional arrays have names and a type: + +\startbuffer +\newarray name integers type integer nx 2 ny 2 +\newarray name booleans type boolean nx 2 ny 2 +\newarray name floats type float nx 2 ny 2 +\newarray name dimensions type dimension nx 4 +\stopbuffer + +\typebuffer \getbuffer + +And a special accessor. Here we set values: + +\startbuffer +\arrayvalue integers 1 2 4 \arrayvalue integers 2 1 8 +\arrayvalue booleans 1 2 true \arrayvalue booleans 2 1 true +\arrayvalue floats 1 2 12.34 \arrayvalue floats 2 1 34.12 +\arrayvalue dimensions 1 12.34pt \arrayvalue dimensions 3 34.12pt +\stopbuffer + +\typebuffer \getbuffer + +\page + +Here we get values: + +\startbuffer +[\the\arrayvalue integers 1 2] +[\the\arrayvalue booleans 1 2] +[\the\arrayvalue floats 1 2] +[\the\arrayvalue dimensions 1 ]\crlf +[\the\arrayvalue integers 2 1] +[\the\arrayvalue booleans 2 1] +[\the\arrayvalue floats 2 1] +[\the\arrayvalue dimensions 3] +\stopbuffer + +\typebuffer + +\getbuffer + +When a value is expected the integer is serialized: + +\startbuffer +\scratchcounter\arrayvalue integers 1 2\relax \the\scratchcounter +\stopbuffer + +\typebuffer + +\getbuffer + +You can view an array on the console with: + +\starttyping +\showarray integers +\stoptyping + +\page + +Another expression example: + +\startbuffer +\dostepwiserecurse {1} {4} {1} { + [\the\arrayvalue dimensions #1 : + \luaexpression dimen {math.sind(30) * a.dimensions[#1]}] +} +\stopbuffer + +\typebuffer + +\getbuffer + +\page + +We can combine it all with if tests: + +\startbuffer +slot 1 is \ifboolean\arrayequals dimensions 1 0pt zero \else not zero \fi\quad +slot 2 is \ifboolean\arrayequals dimensions 2 0pt zero \else not zero \fi +\stopbuffer + +\typebuffer + +\getbuffer + +\startbuffer +slot 1: \ifcase\arraycompare dimensions 1 3pt lt \or eq \else gt \fi zero\quad +slot 2: \ifcase\arraycompare dimensions 2 3pt lt \or eq \else gt \fi zero\quad +slot 3: \ifcase\arraycompare dimensions 3 3pt lt \or eq \else gt \fi zero\quad +slot 4: \ifcase\arraycompare dimensions 4 3pt lt \or eq \else gt \fi zero + +slot 1: \ifcmpdim\arrayvalue dimensions 1 3pt lt \or eq \else gt \fi zero\quad +slot 2: \ifcmpdim\arrayvalue dimensions 2 3pt lt \or eq \else gt \fi zero\quad +slot 3: \ifcmpdim\arrayvalue dimensions 3 3pt lt \or eq \else gt \fi zero\quad +slot 4: \ifcmpdim\arrayvalue dimensions 4 3pt lt \or eq \else gt \fi zero +\stopbuffer + +\typebuffer + +\getbuffer + +\stoptitle + +\starttitle[title=Complex numbers] + +\startbuffer +\startluacode +local c1 = xcomplex.new(1,3) +local c2 = xcomplex.new(2,4) +context(c1) context.quad() context(c2) context.quad(c1 + c2) +\stopluacode +\stopbuffer + +\typebuffer \getbuffer + +\stoptitle + +\starttitle[title=Decimal numbers] + +\startbuffer +\startluacode +local c1 = xdecimal.new("123456789012345678901234567890") +local c2 = xdecimal.new(1234567890) +context(c1) context.crlf() context(c2) context.crlf(c1 * c2) +\stopluacode +\stopbuffer + +\typebuffer \getbuffer + +\stoptitle + +\stopdocument diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-ecmascript.pdf b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-ecmascript.pdf new file mode 100644 index 00000000000..35764258c7b Binary files /dev/null and b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-ecmascript.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-ecmascript.tex b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-ecmascript.tex new file mode 100644 index 00000000000..20877d63376 --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-ecmascript.tex @@ -0,0 +1,272 @@ +% language=us + +\usemodule[present-boring,abbreviations-logos] + +\startdocument + [title={ECMASCRIPT}, + banner={just because it can be done}, + location={context\enspace {\bf 2020}\enspace meeting}] + +\starttitle[title=Why oh why] + +\startitemize + +\startitem + We use a \type {mupdf} based \PDF\ viewer: \type {SumatraPDF}. +\stopitem +\startitem + And occasionally we use the tools that come with \type {mupdf}. +\stopitem +\startitem + So when checking if that viewer supports \JAVASCRIPT\ in widgets I noticed + the stand alone interpreter. \footnote {The official name is \ECMASCRIPT\ + which is the standardized core language.} +\stopitem +\startitem + Which made me wonder how easy it would be to interface to it. +\stopitem + +\blank + +\startitem + It uses the lightweight library subsystem: like \FFI\ the library interface + is setup dynamically. +\stopitem +\startitem + Support is {\em not} integrated in \LUAMETATEX, so there is no overhead and + there are no dependencies. +\stopitem +\startitem + We assume that the library is on the system, and when not, then there is also + also no support. +\stopitem +\startitem + We stick to the absolute minimum of interfacing needed and delegate + everything else to \LUA. +\stopitem +\startitem + We assume a stable \API, and if not, well \unknown\ sorry. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=The components] + +\startitemize + +\startitem + The optional, delayed loading, interface, adds only a few KB to \LUAMETATEX. +\stopitem + +\startitem + The \LUA\ library interface that is part of the \CONTEXT\ distribution which means + that it's officially supported. +\stopitem + +\startitem + There is a \TEX\ module that loads the lot and provides the user interface. +\stopitem + +\startitem + And of course, somewhere on the system, there should be the \type {mujs} + library. \footnote {Taco compiled the library for his system during the talk + and confirmed that it also works out of the box on \OSX.} +\stopitem + +\startitem + A module like this should conform to the \CONTEXT\ \LMTX\ standards (a + minimalistic not bloated \API, interfacing in \LUA\ and \TEX, etc.). +\stopitem + +\stopitemize + +\blank[2*line] + +In \CONTEXT\ libraries go into the platform tree, like: + +\starttyping +/tex/texmf-win64/bin/lib/luametatex/mujs/libmujs.dll +/tex/texmf-linux-64/bin/lib/luametatex/mujs/libmujs.so +/tex/texmf-osx-64/bin/lib/luametatex/mujs/libmujs.so +\stoptyping + +\stoptitle + +\starttitle[title=An example] + +\startbuffer +\usemodule[ecmascript] + +\ecmacode { + console(""); + console("When you see this, the loading has succeeded!"); + console(""); +} + +\ecmacode {texprint("Just a {\\bf short} sentence.")} + +\startecmacode + texprint("And this is \\inframed{\\bs a bit longer} sentence.") +\stopecmacode +\stopbuffer + +\typebuffer + +\getbuffer + +\stoptitle + +\starttitle[title=Catcodes] + +As with the \LUA\ interface, catcode regimes are supported: + +\startbuffer +\ecmacode {texprint(catcodes.vrb,"Just a {\\bf short} sentence.")} +\stopbuffer + +\typebuffer + +\getbuffer + +Possible values are: + +\starttabulate +\NC \type {tex} \NC regular \TEX\ catcode regime \NC \NR +\NC \type {ctx} \NC standard \CONTEXT\ catcode regime \NC \NR +\NC \type {vrb} \NC verbatim catcode regime \NC \NR +\NC \type {prt} \NC protected \CONTEXT\ catcode regime \NC \NR +\stoptabulate + +\stoptitle + +\starttitle[title=Print whatever you want] + +\startbuffer +\startecmacode + console("We're doing some MetaPost!"); + texsprint( + "\\startMPcode " + + 'fill fullsquare xyscaled (6cm,1cm) withcolor "darkgray";' + + 'fill fullsquare xyscaled (4cm,1cm) withcolor "middlegray";' + + 'fill fullsquare xyscaled (2cm,1cm) withcolor "lightgray";' + + "\\stopMPcode " + ); +\stopecmacode +\stopbuffer + +\typebuffer + +\startlinecorrection +\getbuffer +\stoplinecorrection + +Of course the code doesn't look pretty but it can serve as a step|-|up to the real +deal: coding in \CONTEXT\ speak (or \LUA). + +\stoptitle + +\starttitle[title=Files] + +Because the interpreter is pretty bare, interfacing to the file system has to be +provided but we can just use what we already have (controlled by \LUA). + +\startbuffer +\startecmacode + var f = File("\jobname","r"); + var l = f.read("*a"); + f.close(); + texprint( + "This file has " + + l.length // or: l.length.toString() + + " bytes!" + ) +\stopecmacode +\stopbuffer + +\typebuffer + +\getbuffer + +We support the usual arguments, like \type {*a}, \type {*l}, a number indicating +the bytes to read etc. There is no support for writing files (let's use the +security excuse). + +\page + +A file with some script: + +\startluacode +io.savedata("context-2020-ecmascript.js",[[ +function filesize(name) { + var f = File(name,"r"); + if (f != undefined) { + var l = f.seek("end"); + f.close(); + return l; + } else { + return 0; + } +} +]]) +\stopluacode + +\typefile{context-2020-ecmascript.js} + +Loading that file: + +\startbuffer +\ecmafile{context-2020-ecmascript.js} +\stopbuffer + +\typebuffer \getbuffer + +Using that function: + +\startbuffer +\ecmacode{texsprint("This file has " + filesize("\jobname.tex") + " bytes!")} +\stopbuffer + +\typebuffer \getbuffer + +\stoptitle + +\starttitle[title=Ecmascript from \LUA] + +\startbuffer +\startluacode + optional.loaded.mujs.execute [[ + var MyMax = 10; // an example of persistence + ]] + + optional.loaded.mujs.execute [[ + texsprint("\\startpacked"); + for (var i = 1; i <= MyMax; i++) { + texprint( + "Here is some rather dumb math test: " + + Math.sqrt(i/MyMax) + + "!\\par" + ); + } + texsprint("\\stoppacked"); + ]] +\stopluacode +\stopbuffer + +\typebuffer \page The result: \getbuffer + +\stoptitle + +\starttitle[title=So what good is it] + +\startitemize +\startitem Not that much value is added compared to what we already have. \stopitem +\startitem But at least we can say that we can do \ECMASCRIPT\ (aka \JAVASCRIPT). \stopitem +\startitem And it might convince (new) users to use the \LUA\ interfaces instead. \stopitem +\startitem So we pay a low price and have no overhead anyway. \stopitem +\stopitemize + +\stoptitle + +\stopdocument diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-gpdemo.gp b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-gpdemo.gp new file mode 100644 index 00000000000..1f21ca57cf4 --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-gpdemo.gp @@ -0,0 +1,8 @@ +set format xy "$%g$" + +set title 'This is a plot of $y=\sin(x)$' +set xlabel 'This is the $x$ axis' +set ylabel 'This is the $y$ axis' + +plot [0:6.28] [0:1] sin(x) + diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-gpdemo.svg b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-gpdemo.svg new file mode 100644 index 00000000000..eb7d6de3c3a --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-gpdemo.svg @@ -0,0 +1,157 @@ + + + +Gnuplot +Produced by GNUPLOT 5.5 patchlevel 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $0$ + + + + + $0.2$ + + + + + $0.4$ + + + + + $0.6$ + + + + + $0.8$ + + + + + $1$ + + + + + $0$ + + + + + $1$ + + + + + $2$ + + + + + $3$ + + + + + $4$ + + + + + $5$ + + + + + $6$ + + + + + + + + + This is the $y$ axis + + + + + This is the $x$ axis + + + + + This is a plot of $y=sin(x)$ + + + + + sin(x) + + + sin(x) + + + + + + + + + + + + + + + + + + diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-implementers.pdf b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-implementers.pdf new file mode 100644 index 00000000000..94c51513802 Binary files /dev/null and b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-implementers.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-implementers.tex b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-implementers.tex new file mode 100644 index 00000000000..e1104dabf53 --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-implementers.tex @@ -0,0 +1,380 @@ +% language=us + +% \enabletrackers[context*] + +\usemodule[present-boring,abbreviations-logos] + +\startdocument + [title={IMPLEMENTERS}, + banner={an old feature still evolving}, + location={context\enspace {\bf 2020}\enspace meeting}] + +\starttitle[title=Interfacing with \LUA] + +\startitemize + +\startitem + Quite some activity is delegated to \LUA. +\stopitem +\startitem + Normally the initiative is at the \TEX\ end. +\stopitem +\startitem + We can set variables or call functions etc. +\stopitem +\startitem + We can parameters to function calls. +\stopitem +\startitem + From the \LUA\ end we can use scanners to pick up data. +\stopitem +\startitem + We provide some consistent interfaces for doing all that. +\stopitem +\startitem + From \TEX\ to \LUA\ we use \type {\ctxlua{...}} and friends. +\stopitem +\startitem + From \LUA\ to \TEX\ we use \type {context(...)} and alike. +\stopitem +\startitem + For adding functionality we use so called implementers. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Calling \LUA] + +\startbuffer +\ctxlua{context("ok")} +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\ctxlua{context(2 * tokens.scanners.integer())} 10 +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\startluacode +function document.MyThing() context(2 * tokens.scanners.integer()) end +\stopluacode +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\ctxlua{document.MyThing()} 20 \quad +\ctxlua{document.MyThing()} 30 \quad +\ctxlua{document.MyThing()} 40 +\stopbuffer + +\typebuffer \getbuffer + +\stoptitle + +\starttitle[title=Streamlining \LUA] + +\startbuffer +\startluacode +interfaces.implement { + name = "MyThing", + public = true, + arguments = "integer", + actions = function(i) context(i * 2) end, + -- actions = { function(i) return i * 2 end, context }, +} +\stopluacode +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\MyThing 20 \quad \MyThing 30 \quad \MyThing 40 +\stopbuffer + +\typebuffer \getbuffer + +\stoptitle + +\starttitle[title=Making commands] + +\startbuffer +\startluacode +interfaces.implement { + name = "MyRoot", + public = true, + actions = function() + local a = tokens.scanners.integer() + if not tokens.scanners.keyword("of") then + -- tex.error("the keyword 'of' expected") + end + local b = tokens.scanners.integer() + context("%0.6N",math.sqrt(b,a)) + end, +} +\stopluacode +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\MyRoot 2 of 40 \quad \MyRoot 3 60 +\stopbuffer + +\typebuffer \getbuffer + +\stoptitle + +\starttitle[title=Scanners] + +There are lots of scanners: \blank + +\startalign[flushleft,broad] \tttf + \cldcontext { table.concat ( table.sortedkeys (tokens.scanners), " " ) } +\stopalign + +\stoptitle + +\starttitle[title=A more complex example] + +Let's implement a matcher: \blank + +\startbuffer +\doloopovermatch {(.)} {luametatex} { [#1] } +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\doloopovermatch {([\letterpercent w]+)} {\cldloadfile{tufte.tex}} { [#1] } +\stopbuffer + +\typebuffer \getbuffer + +\stoptitle + +\starttitle[title=A more complex example (\TEX)] + +Here is the macro definition of this loop: \blank + +\starttyping +\protected\def\doloopovermatch#1#2#3% + {\pushmacro\matchloopcommand + \def\matchloopcommand##1##2##3##4##5##6##7##8##9{#3}% + \ctxluamatch\matchloopcommand{#1}{#2}% + \popmacro\matchloopcommand} +\stoptyping + +\startitemize + +\startitem The pushing and popping makes it possible to nest this macro. \stopitem +\startitem The definition of the internal match macro permits argument references. \stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=A more complex example (\LUA)] + +At the \LUA\ end we use an implementer: \blank + +\starttyping[style=\small\tt] +local escape = function(s) return "\\" .. string.byte(s) end + +interfaces.implement { + name = "ctxluamatch", + public = true, + usage = "value", + actions = function() + local command = context[tokens.scanners.csname()] + local pattern = string.gsub(tokens.scanners.string(),"\\.",escape) + local input = string.gsub(tokens.scanners.string(),"\\.",escape) + for a, b, c, d, e, f, g, h, i in string.gmatch(input,pattern) do + command(a, b or "", c or "", d or "", e or "", f or "", g or "", + h or "", i or "") + end + return tokens.values.none + end, +} +\stoptyping + +So what does the \type {usage} key tells the implementer? + +\stoptitle + +\starttitle[title=Value functions] + +Normally we pipe back verbose strings that are interpreted as if they were +files. Value functions are different; + +\startitemize + +\startitem + The return value indicates what gets fed back in the input. +\stopitem +\startitem + This can be: \cldcontext { table.concat(token.getfunctionvalues(), ", ", 0) }. +\stopitem +\startitem + When possible an efficient token is injected. +\stopitem +\startitem + Value function can check if they are supposed to feed back a value. +\stopitem +\startitem + So, they can be used as setters and getters. +\stopitem +\startitem + A variant is a function that is seen as conditional. +\stopitem +\startitem + In (simple) tracing they are presented as primitives. +\stopitem +\startitem + They are protected against user overload (aka: frozen). +\stopitem +\startitem + All this is experimental and might evolve. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=So, let's step up a level] + +Say that we want an expandable command: + +\startbuffer +\edef\foo{\doloopovermatched{.}{123}{(#1)}} \meaning\foo +\stopbuffer + +\typebuffer \blank \getbuffer \blank + +Or nested: + +\startbuffer +\edef\foo {% + \doloopovermatched {(..)} {123456} {% + \doloopovermatched {(.)(.)} {#1} {% + [##1][##2]% + }% + }% +} \meaning\foo +\stopbuffer + +\typebuffer \blank \getbuffer \blank + +\stoptitle + +\starttitle[title=So, let's step up a level] + +Compare: + +\starttyping[style=\small\tt] +\protected\def\doloopovermatch#1#2#3% + {\pushmacro\matchloopcommand + \def\matchloopcommand##1##2##3##4##5##6##7##8##9{#3}% + \ctxluamatch\matchloopcommand{#1}{#2}% + \popmacro\matchloopcommand} +\stoptyping + +With: + +\starttyping[style=\small\tt] +\def\doloopovermatched#1#2#3% + {\beginlocalcontrol + \pushmacro\matchloopcommand + \def\matchloopcommand##1##2##3##4##5##6##7##8##9{#3}% + \endlocalcontrol + \the\ctxluamatch\matchloopcommand{#1}{#2}% + \beginlocalcontrol + \popmacro\matchloopcommand + \endlocalcontrol} +\stoptyping + +Local control hides the assignments (it basically nests the mail loop). + +\stoptitle + +\starttitle[title=A few teasers (\TEX)] + +\starttyping[style=\small\tt] +\doloopovermatch {(\letterpercent d+)} {this 1 is 22 a 333 test} { [#1] } + +\doloopovermatch {(\letterpercent w+) *(\letterpercent w*)} {aa bb cc dd} { + [ + \doloopovermatch{(\letterpercent w)(\letterpercent w)} {#1} {(##1 ##2)} + \doloopovermatch{(\letterpercent w)(\letterpercent w)} {#2} {(##1 ##2)} + ] +} + +\doloopovermatch + {(.-)\letterpercent{\bf (.-)\letterpercent}(.*)} + {this is {\bf a} test} + {#1{\it not #2}#3} +\stoptyping + +\stoptitle + +\starttitle[title=A few teasers (\LUA)] + +\starttyping[style=\small\tt] +interfaces.implement { + name = "bitwisexor", public = true, usage = "value", actions = + function(what) + local a = tokens.scanners.cardinal() + scankeyword("with") + local b = tokens.scanners.cardinal() + if what == "value" then + return tokens.values.cardinal, a ~ b + else + logs.texerrormessage("you can't use \\bitwiseor this way") + end + end +} +interfaces.implement { + name = "ifbitwiseand", public = true, usage = "condition", actions = + function(what) + local a = tokens.scanners.cardinal() + local b = tokens.scanners.cardinal() + return tokens.values.boolean, (a & b) ~= 0 + end +} +\stoptyping + +\stoptitle + +\starttitle[title=Questions and more examples] + +More examples will be given in the editor. + +\stoptitle + +\stopdocument + +% \doloopovermatch {(\letterpercent w+) *(\letterpercent w*)} {aa bb cc dd} { +% [ +% \doloopovermatch{(\letterpercent w)(\letterpercent w)} {#1} {(##1 ##2)} +% \doloopovermatch{(\letterpercent w)(\letterpercent w)} {#2} {(##1 ##2)} +% ] +% } + +% \doloopovermatch {(\letterpercent d+)} {this 1 is 22 a 333 test} { [#1] } + +% \testfeatureonce{10000}{\doloopovermatch {(\letterpercent d+)} {this 1 is 22 a 333 test} {}} \elapsedtime + +% \doloopovermatch +% {(.-)\letterpercent{\bf (.-)\letterpercent}(.*)} +% {this is {\bf a} test} +% {#1{\it not #2}#3} + +% \doloopovermatch {([\letterpercent w]+)} {\cldloadfile{tufte.tex}} { [#1] } + +% \testfeatureonce{100}{\doloopovermatch {([\letterpercent w]+)}{\cldloadfile{tufte.tex}} {}} \elapsedtime + diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-luametatex.pdf b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-luametatex.pdf new file mode 100644 index 00000000000..fcb906f8b82 Binary files /dev/null and b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-luametatex.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-luametatex.tex b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-luametatex.tex new file mode 100644 index 00000000000..10b57660ea9 --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-luametatex.tex @@ -0,0 +1,529 @@ +% language=us + +\usemodule[present-boring,abbreviations-logos] + +\startdocument + [title={LUAMETATEX}, + banner={where do we stand}, + location={context\enspace {\bf 2020}\enspace meeting}] + +\starttitle[title=When it started] + +\startitemize + +\startitem + About three years ago the idea came up to go this route. +\stopitem +\startitem + At the 2018 meeting it was first mentioned and those present were okay with + it. +\stopitem +\startitem + Early 2019 the first beta release took place. +\stopitem +\startitem + At the 2019 meeting the first more official version was presented. +\stopitem +\startitem + Around the 2020 meeting we have more or less arrived at what I had in mind. +\stopitem +\startitem + At the 2021 meeting I expect the code to be stable and repositories to be set + up. +\stopitem +\startitem + At the 2022 meeting we can make the official transition from \MKIV\ to \LMTX. +\stopitem +\startitem + Some new options are only enabled in my local \type {cont-exp.tex} file. +\stopitem +\startitem + Knowing that Wolfgang keeps an eye on all those changes makes me more daring. +\stopitem +\startitem + We aim to get less (but more efficient) macro code that on the average looks + better. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Why it started] + +\startitemize + +\startitem + There was an increasing pressure for a stable \LUATEX. +\stopitem +\startitem + There should be no more changes to the interfaces, no more extensions. +\stopitem +\startitem + One can run into interesting comments on the web (as usual), like + \startitemize[packed] + \startitem The \LUATEX\ program has \quote {many bugs}. \stopitem + \startitem The \LUATEX\ manual is bad. \stopitem + \startitem The \LUATEX\ program is too slow to be useful. \stopitem + \startitem The \LUATEX\ program will never end up in distributions. \stopitem + \startitem The \LUATEX\ project is funded and developed in a commercial setting. \stopitem + \stopitemize +\stopitem +\startitem + I won't comment on how I read these (demotivating) comments because \unknown +\stopitem +\startitem + \unknown\ it anyway often says more about the writer (attitudes) than about + \LUATEX. +\stopitem +\startitem + I also looks like (non \CONTEXT) users are charmed by \LUATEX, and the more + they code, the more we need to freeze. +\stopitem +\startitem + So, hopefully, the \LUAMETATEX\ development does not interfere badly with + developments outside the \CONTEXT\ community. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=The development] + +The summary on the next pages is partial. More can be found in articles and +documents that come with the distribution. + +\startitemize + +\startitem + \LUATEX\ started out as \CWEB\ code \unknown\ that eventually became just + \CCODE\ \unknown\ which in \LUAMETATEX\ has been detached from the (complex) + infrastructure. +\stopitem +\startitem + The basic idea is to only keep the core of \TEX, but for instance font + loading, file handling and the backend are gone. +\stopitem +\startitem + As a consequence the code has been reorganized (shuffled around). +\stopitem +\startitem + I experimented a lot without bothering about usage elsewhere and I like the + result so far. +\stopitem +\startitem + The \CONTEXT\ distribution will at some point ship with the source. +\stopitem + +\stopitemize + +\starttitle[title=File handling] + +\startitemize + +\startitem + All file handling goes via \LUA, also read and write related primitives. +\stopitem +\startitem + The same is true for terminal (console) handling. +\stopitem +\startitem + Part of that (the writing) was actually kind of extension code in \TEX\ and + partly a system dependency. +\stopitem +\startitem + The \ETEX\ pseudo file \type {\scantokens} primitive uses the same mechanism + as \LUA\ does. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=The macro machinery] + +\startitemize + +\startitem + There are extensions to the way macro arguments are handled (less clumsy + macros). +\stopitem +\startitem + There are extra if tests (makes for nicer macros). +\stopitem +\startitem + Else branches in conditions can be collapsed using \type {\orelse} and \type + {\orunless} which gives cleaner low level code. +\stopitem +\startitem + Tracing gives more detail about node properties and also shows attributes. +\stopitem +\startitem + Some new data carriers have been added that can be played with from \LUA . +\stopitem +\startitem + Macros can efficiently be frozen (new) and protected (redone) and the + concepts \quote {long} and \type {outer} are gone. \footnote {In \CONTEXT\ + macros were always \type {\long} and never \type {\outer}. Most commands were + unexpandable (also in \MKII, pre \ETEX). So, users won't notice this.} +\stopitem +\startitem + Saving and restoring is somewhat more efficient (partly a side effect of + wider memory). +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Language] + +\startitemize + +\startitem + Language control settings now use less parameters but bit sets instead. +\stopitem +\startitem + Only basic parameters are stored in the format file now. +\stopitem +\startitem + There are all kind of small improvements. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Typesetting] + +\startitemize + +\startitem + Attributes (the lists and states) are implemented more efficiently. +\stopitem +\startitem + The paragraph state is stored with the paragraph. +\stopitem +\startitem + Paragraphs can be normalized and options are now set with bit sets. +\stopitem +\startitem + Boxes carry orientation related information (offsets, rotation, etc). +\stopitem +\startitem + Some nodes carry more information. +\stopitem +\startitem + Directions are mostly gone (it's up to the backend). +\stopitem +\startitem + Migrated content is optionally kept with boxes. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Math] + +\startitemize + +\startitem + Some math concepts have been extended (like prescripts and some more + control over styles). +\stopitem +\startitem + There are plenty of new control details. +\stopitem +\startitem + The math parameter settings obey grouping in a math list. +\stopitem +\startitem + We can have math in discretionaries in text and more advanced discretionaries + in math as well. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Fonts] + +\startitemize + +\startitem + Font specification information no longer uses the string pool (which saves a + lot). +\stopitem +\startitem + Of course we still have the basic font handler. +\stopitem +\startitem + We only store what is needed for traditional \TEX\ font handling. +\stopitem +\startitem + Virtual fonts are even more virtual (also a backend thing) so we can have + more features. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=The code] + +\startitemize + +\startitem + Artifacts from \PASCAL\ and \CWEB\ have been removed. +\stopitem +\startitem + Languages, fonts, marks etc are no longer \quote {register} based. +\stopitem +\startitem + The token interface is more abstract and no longer presents strange numbers. +\stopitem +\startitem + Some internals have been reconstructed because of cleaner \LUA\ interfacing. +\stopitem +\startitem + A side effect of this is better abstraction of the equivalent ranges. +\stopitem +\startitem + The code has been made more abstract (and looks easier in e.g. Visual Studio). +\stopitem +\startitem + The compile farm is used to check if compilation works out of the box. +\stopitem +\startitem + Compilation is fast and easy, otherwise this project was not possible. +\stopitem +\startitem + Readability of the code is constantly improved (the usual: has to look okay + in my editor). +\stopitem +\startitem + The code has been made mostly independent of specific operating system needs. +\stopitem +\startitem + Wide characters are dealt with in Windows interfaces. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Libraries] + +\startitemize + +\startitem + We really want to stay lean and mean: the engine is also a \LUA\ engine. +\stopitem +\startitem + All code is included, a few libraries are used, but these are small, old and + stable. +\stopitem +\startitem + In addition some helper libraries are made (including pplib by Pawel). +\stopitem +\startitem + What we ship is what you get: \CONTEXT\ will not depend on more than that. +\stopitem +\startitem + If something is updated (at all) the differences are checked first. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=The \LUA\ engine] + +\startitemize + +\startitem + We use the latest (even alpha) \LUA\ (5.4) because \LUAMETATEX\ is a good + test. +\stopitem +\startitem + There is no support for \LUAJIT\ and the \FFI\ interface is gone. +\stopitem +\startitem + There is a limited set of libraries that we support but no code is (and will + be) included. +\stopitem +\startitem + There are less callbacks (because we only have a frontend). +\stopitem +\startitem + There are more token scanners and some options have been added. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Efficiency] + +\startitemize + +\startitem + We benefit some more from the wider memory words (some constructs could go). +\stopitem +\startitem + The format file is smaller and not longer compressed. +\stopitem +\startitem + Memory management is now mostly dynamic and usage is much lower. +\stopitem +\startitem + There are more statistics (also as side effect of memory management). +\stopitem +\startitem + Dumping the format has been made a bit more robust and is faster. +\stopitem +\startitem + The core engine performs a bit better (machines don't get that much faster). +\stopitem +\startitem + We want to be prepared for future architectures. +\stopitem +\startitem + We manage to keep the binary way below 3 MB. +\stopitem +\startitem + The lot runs quite well on e.g.\ a Raspberry Pi 4. +\stopitem + +\stopitemize + +\starttitle[title=Upgraded \METAPOST] + +\startitemize + +\startitem + All (eight bit) font stuff has been stripped from the \METAPOST\ library. +\stopitem +\startitem + The library no longer has a \POSTSCRIPT\ backend. +\stopitem +\startitem + The library provides scanners that make extensions possible. +\stopitem +\startitem + All file \IO\ goes via \LUA. +\stopitem +\startitem + There are a few additions like pre|/|postscripts for clip and bounding boxes. +\stopitem +\stopitemize + +\stoptitle + +\starttitle[title=Praise for the users] + +\startitemize + +\startitem + Much has been done and I probably forget to mention a lot. +\stopitem +\startitem + The number of bugs is relative small compared to what gets changed and added. +\stopitem +\startitem + The test suite gets ran very often, also to check if performance is okay. +\stopitem +\startitem + I could only do this because the \CONTEXT\ users are so tolerant. +\stopitem +\startitem + Some seem to constantly check for updates so they help with fast testing. +\stopitem +\startitem + The \CONTEXT\ code base gets stepwise adapted (split files) which again + forces users to test. +\stopitem +\startitem + It takes a lot of time because we take small steps in order not to mess up. +\stopitem +\startitem + I would not do it without the positive attribute of the \CONTEXT\ users. +\stopitem +\startitem + It's all about motivation and I thank the \CONTEXT\ users for providing this + friendly and non|-|competitive bubble! +\stopitem + +\stopitemize + +\starttitle[title=Todo] + +\startitemize + +\startitem + Maybe add some more sanity checks in order to catch errors intruded by + callbacks. Maybe add some more tracing too. +\stopitem +\startitem + Explore variants, like having registers in dedicated eqtb tables so that we + can allocate them dynamically (mostly for the fun of doing it). +\stopitem +\startitem + Add some more documentation (read: addition cq.\ remarks about where the + original documentation no longer applies, but we have years for doing that). +\stopitem +\startitem + Update the manual (which is done occasionally in batch based on print|-|outs; + there is no real need to hurry because we still experiment). +\stopitem +\startitem + Apply some of the new stuff in \LMTX. Take up some challenges. +\stopitem +\startitem + Wrap up new functionality (once it's stable) in articles and other documents. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=And \LUATEX ?] + +\startitemize + +\startitem + Of course \LUATEX\ will be maintained! After all, \MKIV\ needs it and it + serves as reference for the front|-|end rendering and back|-|end generation + when we're messing with \LUAMETATEX. +\stopitem +\startitem + It is used by \LATEX\ and there are now also plain inspired packages. Because + there are spin|-|offs (\LATEX\ has settled on a version with built|-|in font + processing) we cannot change much. +\stopitem +\startitem + And \LUATEX\ being nicely integrated into \TEXLIVE\ is another argument for + not touching it too much. +\stopitem +\startitem + I have no clue of \LUATEX\ usage but that fact alone already makes an + argument for being even more careful. It's bad advertisement for \TEX\ when + users who use the low level interfaces get confronted with conceptual + changes. +\stopitem +\startitem + So in the end not much will be back ported to \LUATEX: at some point the code + base became too different and it's the price paid for the stability demand. + That way we cannot introduce new bugs either. It also doesn't pay of. +\stopitem +\startitem + But, a few non|-|intrusive things might actually trickle into it in due time, + also out of self interest: it might help to share code between \MKIV\ and + \LMTX. +\stopitem + +\stopitemize + +\stopdocument diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mkii-mkiv-mkxl.pdf b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mkii-mkiv-mkxl.pdf new file mode 100644 index 00000000000..1932da3940a Binary files /dev/null and b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mkii-mkiv-mkxl.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mkii-mkiv-mkxl.tex b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mkii-mkiv-mkxl.tex new file mode 100644 index 00000000000..a0e119e755d --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mkii-mkiv-mkxl.tex @@ -0,0 +1,208 @@ +% language=us + +\usemodule[present-boring,abbreviations-logos] + +\startdocument + [title={MKII MKIV LMTX}, + banner={where does it end}, + location={context\enspace {\bf 2020}\enspace meeting}] + +\starttitle[title=Welcome] + +This meeting was kind of special because of the Covid situations. It forces us to +adapt and think about how to deal with this kind of situations. But, we had a +very nice meeting as usual. The first talk was a summary of where we started and +where we are now. The other talks are more specialized. + +All presentations use the same simple style. No interaction, no fancy \PDF\ +features, also because we had to stream them. + +\stoptitle + +\starttitle[title=MKII] + +\startitemize +\startitem + In the 80's I bought the \TEX book but it all stayed pretty abstract. +\stopitem +\startitem + In the beginning of the 90's we had to get some math on paper we bought (!) a + copy of \LATEX. +\stopitem +\startitem + Right from the start we had to make in look a bit better than out of the box. +\stopitem +\startitem + So a shell around if evolved but soon we started from scratch. +\stopitem +\startitem + We did so first on top \LAMSTEX, then we switched to \INRSTEX. +\stopitem +\startitem + Soon we only used a few components of that: we learned from trial and error. +\stopitem +\startitem + We joined the \NTG, met Taco and friends, and slowly got some presence. +\stopitem +\startitem + And it all went on till we had what we later called \MKII. +\stopitem +\startitem + But, we always had ideas about what more we wanted. +\stopitem +\startitem + We went from \TEX\ to \ETEX\ to \PDFTEX\ to \PDFETEX. +\stopitem +\startitem + We played with the idea of \type {eetex}, different backends etc.\ (show old + \MAPS\ article). +\stopitem +\stopitemize + +\stoptitle + +\starttitle[title=MK{\thinspace\periods[2]}] + +\startitemize +\startitem + \CONTEXT\ has been keyword driven and class based from the start. +\stopitem +\startitem + This came with a performance hit so the reputation was that it was slow: + inheritance, flexibility, user control \unknown\ it all comes at a price. +\stopitem +\startitem + \CONTEXT\ always had an abstract driver model (\DVIPS, \DVIPSONE, \DVIWINDO, + \ACROBAT, \PDFTEX, etc). +\stopitem +\startitem + It also had an adaptive the front end so we could support successive engines: + \TEX, \ETEX, \PDFTEX, \ALEPH, \XETEX. +\stopitem +\startitem + There had to be color and graphics support from the beginning. +\stopitem +\startitem + The interfaces permitted extension without breaking compatibility. The user + interface was multilingual: we started with Dutch and German (users). +\stopitem +\startitem + It came with management tools (like \TEXEXEC, \TEXUTIL, \TEXFONT, \TEXMFSTART) etc.\ + for job control, dealing with (user) fonts, image manipulations etc. +\stopitem +\startitem + And of course \METAPOST, \XML, combining font setups, mixing encodings, \UTF\ + patterns evolved with the system. +\stopitem +\startitem + Educational usage was often the reason for new features. +\stopitem +\stopitemize + +\stoptitle + +\starttitle[title=MKIV] + +\startitemize +\startitem + At some point we started playing with \LUA\ (in \SCITE). +\stopitem +\startitem + And then with Hartmut started adding some basic \LUA\ support to a clone of + \PDFTEX\ that soon became \LUATEX. +\stopitem +\startitem + Next the Oriental \TEX\ project provided means for Taco to transition to + \CCODE . +\stopitem +\startitem + And for years we slowly built up the system. A \LUAJITTEX\ version showed up + and Luigi took over integration in \TEXLIVE\ (like compilation within the + infrastructure and updating libraries). +\stopitem +\startitem + In parallel we tested features and explored what we needed with \CONTEXT: + \MKIV\ evolved. +\stopitem +\startitem + And \unknown\ soon, all further development happened in \MKIV\ only: \MKII\ + became frozen. +\stopitem +\startitem + The interface subsystem was upgraded and Wolfgang checked and completed all + setups while we did. Obsolete (font, language, input) mechanisms were + removed. +\stopitem +\startitem + A lot happened: some more \TEX, lots of \LUA, better \METAPOST\ integration, + more advanced \XML. +\stopitem +\startitem + To some extend a project like that became to late because the glory days of + \TEX\ were already past (publishing changed) but just as with \PDFTEX\ a + conceptual upgrade like was felt needed. +\stopitem +\stopitemize + +\stoptitle + +\starttitle[title=MKXL (aka LMTX)] + +\startitemize +\startitem + When \LUATEX\ had to be frozen a follow up took place in \LUAMETATEX. The name + reflects the importance of each core component. +\stopitem +\startitem + The idea is to have an lean and mean engine, one that will become very stable + and does not depend on the issues of the day. +\stopitem +\startitem + It's for all those dedicated users who like quality and playing around but + also want guarantees that the tools keeps working years from now: it's about + independence. +\stopitem +\startitem + Of course we tested and explored with \CONTEXT\ and this time \LMTX\ evolves. + Here the \type {X} reflects that we consider \XML\ to be part of the picture. +\stopitem +\startitem + Although there will be (and already is) new functionality the change is less + dramatic because this we don't have the change in fonts, encoding and regime + subsystems (which made some \MKII\ commands go away). +\stopitem +\startitem + Hopefully some of the more tricky (hard to do in good old \TEX) mechanisms + can be improved now. +\stopitem +\startitem + And at some point we will freeze \MKIV\ and development will happen in \LMTX\ + only. +\stopitem +\stopitemize + +\stoptitle + +\starttitle[title=This meeting] + +\startitemize +\startitem + My talks in this meeting are mostly about \LUAMETATEX\ and the \CONTEXT\ + version \LMTX\ that targets it: how it is done, which concepts show up, where + we want to go. +\stopitem +\startitem + Unless you kept a close eye on last years development, you will encounter of + plenty of new features that relate to \LUAMETATEX. So, there is more to tell, + but most of that is already known from previous meetings. +\stopitem +\startitem + And, as usual, a \CONTEXT\ meeting is not only a deadline, but also a + starting point. It's you who keep it all going. And, even more than that, + it is about us meeting. +\stopitem +\stopitemize + +\stoptitle + +\stopdocument diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mp.pdf b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mp.pdf new file mode 100644 index 00000000000..a86dc2d71fa Binary files /dev/null and b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mp.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mp.tex b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mp.tex new file mode 100644 index 00000000000..6d2f640fb03 --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-mp.tex @@ -0,0 +1,342 @@ +% language=us + +\usemodule[present-boring,abbreviations-logos] + +\startdocument + [title={METAFUN}, + banner={simple fonts}, + location={context\enspace {\bf 2020}\enspace meeting}] + +\starttitle[title=Metafonts] + +\startitemize + +\startitem + Because \METAPOST\ is based on \METAFONT\ it make sense to use of for making fonts. +\stopitem + +\startitem + Making a font is an art in itself, something that is actually proven by many bad + looking fonts, but we have plenty of choice nowadays. +\stopitem + +\startitem + We tend to use free fonts and often being made by volunteers we can hardly have any + demands. +\stopitem + +\startitem + So, instead of complaining (which is not nice anyway) we can try to (at least temporary) + come up with a solution ourselves. +\stopitem + +\startitem + We're actually talking about missing glyphs here and \METAPOST\ can be of help. +\stopitem + +\startitem + Also keep in mind that we always had this option or variants of it in \CONTEXT, it's + just that we can make nicer interfaces now. +\stopitem + +\startitem + So, don't expect something spectacular. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=What is is not] + +Years ago mechanisms were added to \MKIV\ to come up with more fancy shapes in +for instance math. Actually Alan needed it and I wanted a root symbol to look +like school times. + +\startbuffer +\useMPlibrary[mat] + +\setupmathradical[color=darkgray,alternative=mp] + +% \definemathradical [sqrt] [mp=minifun::math:radical:default] +\stopbuffer + +\typebuffer \getbuffer + +So: + +\startbuffer +\scale[height=2cm]{$ \sqrt {a+b+c+d} $} +\stopbuffer + +\typebuffer + +Gives: + +\startlinecorrection +\getbuffer +\stoplinecorrection + +\page + +And with: + +\startbuffer +\startuniqueMPgraphic{minifun::math:radical:default} +draw + math_radical_simple(OverlayWidth,OverlayHeight,OverlayDepth,OverlayOffset) + withpen pencircle + xscaled (2OverlayLineWidth) + yscaled (1OverlayLineWidth/4) + rotated 30 + dashed evenly + withcolor OverlayLineColor ; +\stopuniqueMPgraphic +\stopbuffer + +\typebuffer + +We get + +\startlinecorrection +\getbuffer +\scale[height=2cm]{$ \sqrt {a+b+c+d} $} +\stoplinecorrection + +\page + +Also think of stackers: + +\startbuffer +\setupmathstackers [both] [color=darkgray,alternative=mp] +\setupmathstackers [top] [color=darkgray,alternative=mp] +\setupmathstackers [bottom] [color=darkgray,alternative=mp] +\stopbuffer + +\typebuffer \getbuffer + +\blank[2*line] + +\startbuffer +$ + \overbracket {a+b+c+d} \quad + \underbracket {a+b+c+d} \quad + \doublebracket {a+b+c+d} +$ +\blank +$ + \overparent {a+b+c+d} \quad + \underparent {a+b+c+d} \quad + \doubleparent {a+b+c+d} +$ +\blank +$ + \overbrace {a+b+c+d} \quad + \underbrace {a+b+c+d} \quad + \doublebrace {a+b+c+d} +$ +\blank +$ + \overbar {a+b+c+d} \quad + \underbar {a+b+c+d} \quad + \doublebar {a+b+c+d} +$ +\blank +$ + \overleftarrow {a+b+c+d} \quad + \overrightarrow {a+b+c+d} +$ +\blank +$ + \underleftarrow {a+b+c+d} \quad + \underrightarrow {a+b+c+d} +$ +\stopbuffer + +\getbuffer + +\blank[2*line] + +But, these are just overlays and nothing special: we simply don't use the normal +font route not fancy \LUA\ tricks either (in principle \MKII\ could do this). I +might upgrade it some day (no real demand so far, just fun stuff). + +\stoptitle + +\starttitle[title=Real fonts] + +\startitemize + +\startitem For text we need an efficient way to define extra shapes. \stopitem +\startitem We don't really want inline graphics every time we use a glyph. \stopitem +\startitem We also want to cut and paste properly. \stopitem +\startitem Basically the fact that we drop in shapes should be hidden. \stopitem + +\blank[2*line] + +\startitem + We use the same (generic) subsystem that is also used for color fonts, bitmap + emoji, \SVG\ fonts, etc. +\stopitem +\startitem + Shapes end up as \TYPETHREE\ fonts. These have some specific properties and + limitations, but we can actually make \UNICODE\ fonts. +\stopitem +\startitem + The system is not burdened by much overhead and most happens at embedding time. +\stopitem + +\stopitemize + +\page + +\startbuffer[font] +\definefont[DemoFontA][Serif*default @ 10pt] +\definefont[DemoFontB][Serif*default @ 12pt] +\definefont[DemoFontC][Serif*default @ 14pt] +\definefont[DemoFontD][SerifBold*default @ 14pt] +\stopbuffer + +\typebuffer[font] \getbuffer[font] + +\startbuffer[demo] +\startlines +\DemoFontA first\endash second\emdash third\char"2015\relax fourth +\DemoFontB first\endash second\emdash third\char"2015\relax fourth +\DemoFontC first\endash second\emdash third\char"2015\relax fourth +\DemoFontD first\endash second\emdash third\char"2015\relax fourth +\stoplines +\stopbuffer + +\typebuffer[demo] \getbuffer[demo] + +\page + +\startbuffer[mpone] +\startMPcalculation{simplefun} + + vardef QuotationDashOne = + draw image ( + interim linecap := squared ; + save l ; l := 0.2 ; + draw (l/2,3) -- (10-l/2,3) withpen pencircle scaled l ; + ) + enddef ; + + lmt_registerglyphs [ + name = "symbolsone", + units = 10, + usecolor = true, + width = 10, + height = 3.1, + depth = 0, + ] ; + + lmt_registerglyph [ + category = "symbolsone", + unicode = "0x2015", + code = "QuotationDashOne ;" + ] ; + +\stopMPcalculation +\stopbuffer + +\getbuffer[mpone] + +\startbuffer[font] +\definefontfeature[exampleone][metapost=symbolsone] + +\definefont[DemoFontA][Serif*default,exampleone @ 10pt] +\definefont[DemoFontB][Serif*default,exampleone @ 12pt] +\definefont[DemoFontC][Serif*default,exampleone @ 14pt] +\definefont[DemoFontD][SerifBold*default,exampleone @ 14pt] +\stopbuffer + +\typebuffer[font] \getbuffer[font] + +\getbuffer[demo] + +\page + +\typebuffer[mpone][style=\tt\small\small] + +\page + +\startbuffer[mptwo] +\startMPcalculation{simplefun} + + vardef QuotationDashTwo = + draw image ( + interim linecap := squared ; + save l ; l := 0.4 ; + string weight ; weight := getparameter "mpsfont" "parentdata" "shared" "rawdata" "metadata" "weight" ; + if weight = "semibold" : l := l * 2; + elseif weight = "bold" : l := l * 3; fi + draw (l/2,3) -- (10-l/2,3) withpen pencircle scaled l + withcolor yellow ; + ) + enddef ; + + lmt_registerglyphs [ + name = "symbolstwo", + units = 10, + usecolor = false, + width = 10, + height = 3.1, + depth = 0, + ] ; + + lmt_registerglyph [ + category = "symbolstwo", + unicode = "0x2015", + code = "QuotationDashTwo ;" + ] ; + +\stopMPcalculation +\stopbuffer + +\getbuffer[mptwo] + +\startbuffer[font] +\definefontfeature[exampletwo][metapost=symbolstwo] + +\definefont[DemoFontA][Serif*default,exampletwo @ 10pt] +\definefont[DemoFontB][Serif*default,exampletwo @ 12pt] +\definefont[DemoFontC][Serif*default,exampletwo @ 14pt] +\definefont[DemoFontD][SerifBold*default,exampletwo @ 14pt] +\stopbuffer + +\typebuffer[font] \getbuffer[font] + +\getbuffer[demo] + +\page + +\typebuffer[mptwo][style=\tt\small\small] + +\stoptitle + +\starttitle[title=More examples] + +We give some examples (these are also in the modules). Overloading math +symbols: + +\starttyping +meta-imp-kindergarten.mkxl +\stoptyping + +Extending fonts with Don Knuths dices and tiles (symbols, ligatures, proper +\UNICODE): + +\starttyping +meta-imp-gamesymbols.mkxl +\stoptyping + +An implementation of Don Knuths ThirtySix font in various variants (color, +random, shapes): + +\starttyping +meta-imp-threesix.mkxl +\stoptyping + +\stopdocument diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-sin.svg b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-sin.svg new file mode 100644 index 00000000000..2d1f844386f --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-sin.svg @@ -0,0 +1,163 @@ + + + +Gnuplot +Produced by GNUPLOT 5.2 patchlevel 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -1 + + + + + -0.8 + + + + + -0.6 + + + + + -0.4 + + + + + -0.2 + + + + + 0 + + + + + 0.2 + + + + + 0.4 + + + + + 0.6 + + + + + 0.8 + + + + + 1 + + + + + -10 + + + + + -5 + + + + + 0 + + + + + 5 + + + + + 10 + + + + + + + + + sin(x) + + + sin(x) + + + + + + + + + + + + + + + + + + diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-svg.pdf b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-svg.pdf new file mode 100644 index 00000000000..39b0e00cb98 Binary files /dev/null and b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-svg.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-svg.tex b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-svg.tex new file mode 100644 index 00000000000..3860438e8a6 --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-svg.tex @@ -0,0 +1,123 @@ +% language=us + +\usemodule[present-boring,abbreviations-logos] + +\startdocument + [title={SVG GRAPHICS}, + banner={some demos and discussion}, + location={context\enspace {\bf 2020}\enspace meeting}] + +\starttitle[title=Wrapup] + +\startitemize + +\startitem + It expands to for Scalable Vector Graphics. +\stopitem +\startitem + It is an example of application \XML\ turned standard. +\stopitem +\startitem + It started out simple, kind of expanded \POSTSCRIPT\ in \XML\ format. +\stopitem +\startitem + It took a while to be picked up as output format. +\stopitem + +\blank[2*line] + +\startitem + In practice you get the same messy build-up as in other vector formats. +\stopitem + +\startitem + This is a side effect of often unstructured editing. \footnote {Afterwards + Hraban gave a demonstration of editing in InkScape and there was some + discussion about this aspect}. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Properties] + +\startitemize + +\startitem + Properties can be set as attributes to an element (key/values). +\stopitem +\startitem + Properties can be set in the \type {style} attribute (semicolon separated key/values). +\stopitem +\startitem + Properties can be set via one or more \type {class} assignments. +\stopitem +\startitem + Properties can be bound to a specific element +\stopitem +\startitem + Properties can be inherited from an ancestor (somewhat vague). +\stopitem +\startitem + Properties can be redundant (nested), overloaded (parent, style), editors can + add their own. etc.\ \unknown\ it's kind of a mess. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Side effects] + +\startbuffer +\usemodule[gnuplot] + +\externalfigure + [context-2020-gpdemo.gp] + [conversion=svg,width=4cm, + background=color,backgroundcolor=white] + +\externalfigure + [context-2020-gpdemo.gp] + [conversion=svg,width=6cm, + background=color,backgroundcolor=white] + +\scale + [height=4cm] + {\framed + [background=color,backgroundcolor=white] + {\includegnuplotsvgfile[context-2020-sin.svg]}} + +\stopbuffer + +\typebuffer + +\getbuffer + +\stoptitle + +\starttitle[title=Simple examples] + +Some examples were shown (they can be found in manuals): + +\starttyping +svg-lmtx-context.lua +svg-lmtx-microsoft.lua +svg-lmtx-mozilla.lua +svg-lmtx-xahlee.lua +\stoptyping + +Also some examples were shown from the Math4All project. + +\stoptitle + +% \starttitle[title=Complex examples] +% +% \starttyping +% temporary/svg/test* +% \stoptyping +% +% \stoptitle + +\stopdocument diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-tokens.pdf b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-tokens.pdf new file mode 100644 index 00000000000..c508d25ac24 Binary files /dev/null and b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-tokens.pdf differ diff --git a/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-tokens.tex b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-tokens.tex new file mode 100644 index 00000000000..b987e2d107a --- /dev/null +++ b/Master/texmf-dist/doc/context/presentations/context/2020/context-2020-tokens.tex @@ -0,0 +1,287 @@ +% language=us + +\usemodule[present-boring,abbreviations-logos,system-tokens] + +\startdocument + [title={TOKENS}, + banner={tokens as I see them}, + location={context\enspace {\bf 2020}\enspace meeting}] + +\starttitle[title=About tokens] + +\startitemize + +\startitem Like nodes, it's a common term used in programming. \stopitem +\startitem In \TEX\ The Program tokens and nodes are therefore omni|-|present. \stopitem +\startitem For most users they are irrelevant concepts. \stopitem +\startitem But we will explain them anyway. \stopitem +\startitem Let's try to avoid the snobbish token|-|speak sometimes heard in the community. \stopitem +\startitem So \unknown\ I won't correct you as long as you don't correct me. \stopitem +\startitem Let's now enter the world of tokens in the na\"ive way. \stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=What are tokens] + +\startitemize + +\startitem It is an internal data structure, effectively a (32 bit) integer. \stopitem +\startitem This integer encodes a command (opcode) and an char code (operand). \stopitem +\startitem But often it's not a character but more a sub command. \stopitem +\startitem Input is converted into tokens. \stopitem +\startitem Tokens are either expanded (interpreted) or stored. \stopitem +\startitem When they are stored they are part of a larger data structure, a memory word. \stopitem +\startitem Token memory is an array of such memory words. \stopitem +\startitem The token memory \quote {word} has two integers: a token value and an index into token memory. \stopitem +\startitem That way \TEX\ can have forward linked lists of tokens. \stopitem +\startitem A hash table maps control sequences onto indices into token memory. \stopitem + +\stopitemize + +\starttitle[title=Some implementation details] + +\startitemize + +\startitem Sometimes there is special head token at the start. \stopitem +\startitem A head token makes for easier appending of extra tokens. \stopitem +\startitem Shared lists use the head node for a reference count. \stopitem +\startitem Original \TEX\ uses global temporary lists. \stopitem +\startitem This is needed when we expand (nested) and need to report issues. \stopitem +\startitem This is not needed when we just serialize (which we do a lot in \LUATEX). \stopitem +\startitem So, this is all optimized for performance and memory consumption. \stopitem +\startitem Freed tokens are collected in a cache so tokens can get scattered. \stopitem +\startitem In \LUAMETATEX\ we stay as close to original \TEX\ as possible. \stopitem +\startitem But the \LUA\ interfaces force us to occasionally divert. \stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=A schematic view of tokens] + +A token value: + +\startlinecorrection[blank] + \setupTABLE[each][align=middle] + \setupTABLE[c][1][width=22mm] + \setupTABLE[c][2][width=42mm] + \bTABLE + \bTR \bTD cmd \eTD \bTD chr \eTD \eTR + \eTABLE +\stoplinecorrection + +Token memory: + +\startlinecorrection[blank] + \setupTABLE[each][align=middle] + \setupTABLE[c][1][width=8mm] + \setupTABLE[c][2][width=64mm] + \setupTABLE[c][3][width=64mm] + \bTABLE + \bTR \bTD 1 \eTD \bTD info \eTD \bTD link \eTD \eTR + \bTR \bTD 2 \eTD \bTD info \eTD \bTD link \eTD \eTR + \bTR \bTD 3 \eTD \bTD info \eTD \bTD link \eTD \eTR + \bTR \bTD n \eTD \bTD info \eTD \bTD link \eTD \eTR + \eTABLE +\stoplinecorrection + +\stoptitle + +\starttitle[title=Looking up control sequences] + +\startitemize + +\startitem A very visible to-be-token is a \type {\controlsequence}. \stopitem +\startitem When read, the name will be looked up in the hash table. \stopitem +\startitem When found its value will point to the table of equivalents. \stopitem +\startitem That table keeps track of: + \startitemize + \startitem the type (cmd) \stopitem + \startitem the current level (grouping) \stopitem + \startitem the current meaning (token list) \stopitem + \stopitemize +\stopitem +\stopitemize + +\stoptitle + +\starttitle[title=The (big) table of equivalents (simplified)] + +\startlinecorrection[blank] + \bTABLE + \bTR \bTD[ny=4] main hash \eTD \bTD null control sequence \eTD \eTR + \bTR \bTD 128K hash entries \eTD \eTR + \bTR \bTD frozen control sequences \eTD \eTR + \bTR \bTD special sequences (undefined) \eTD \eTR + \bTR \bTD[ny=7] registers \eTD \bTD 17 internal & 64K user glues \eTD \eTR + \bTR \bTD 4 internal & 64K user mu glues \eTD \eTR + \bTR \bTD 12 internal & 64K user tokens \eTD \eTR + \bTR \bTD 2 internal & 64K user boxes \eTD \eTR + \bTR \bTD 116 internal & 64K user integers \eTD \eTR + \bTR \bTD 0 internal & 64K user attribute \eTD \eTR + \bTR \bTD 22 internal & 64K user dimensions \eTD \eTR + \bTR \bTD specifications \eTD \bTD 5 internal & 0 user \eTD \eTR + \bTR \bTD extra hash \eTD \bTD additional entries (grows dynamic) \eTD \eTR + \eTABLE +\stoplinecorrection + +\stoptable + +\starttitle[title=The hash table (simplified)] + +The hash table runs parallel to the main hash. On the todo list is is to move the +registers to its own tables and make them dynamic. + +\startlinecorrection[blank] + \setupTABLE[each][align=middle] + \setupTABLE[c][1][width=16mm] + \setupTABLE[c][2][width=64mm] + \setupTABLE[c][3][width=64mm] + \bTABLE + \bTR \bTD 1 \eTD \bTD string index \eTD \bTD equivalents or (next > n) index \eTD \eTR + \bTR \bTD 2 \eTD \bTD string index \eTD \bTD equivalents or (next > n) index \eTD \eTR + \bTR \bTD n \eTD \bTD string index \eTD \bTD equivalents or (next > n) index \eTD \eTR + \bTR \bTD n + 1 \eTD \bTD string index \eTD \bTD equivalents or (next > n) index \eTD \eTR + \bTR \bTD n + 2 \eTD \bTD string index \eTD \bTD equivalents or (next > n) index \eTD \eTR + \bTR \bTD n + m \eTD \bTD string index \eTD \bTD equivalents or (next > n) index \eTD \eTR + \eTABLE +\stoplinecorrection + +Equivalents (registers direct, macros indirect i.e.\ token lists): + +\startlinecorrection[blank] + \setupTABLE[each][align=middle] + \setupTABLE[c][1][width=8mm] + \setupTABLE[c][2][width=32mm] + \setupTABLE[c][3][width=32mm] + \setupTABLE[c][4][width=64mm] + \bTABLE + \bTR \bTD 1 \eTD \bTD level \eTD \bTD type \eTD \bTD value \eTD \eTR + \bTR \bTD 2 \eTD \bTD level \eTD \bTD type \eTD \bTD value \eTD \eTR + \bTR \bTD 3 \eTD \bTD level \eTD \bTD type \eTD \bTD value \eTD \eTR + \bTR \bTD n \eTD \bTD level \eTD \bTD type \eTD \bTD value \eTD \eTR + \eTABLE +\stoplinecorrection + +\stoptitle + +\starttitle[title=Other data management] + +\startitemize +\startitem Grouping is handles by a nesting stack. \stopitem +\startitem Nested conditionals (\type {\if...}) have their own stack. \stopitem +\startitem The values before assignments are saved ion the save stack. \stopitem +\startitem Also other local changes (housekeeping) ends up in the save stack. \stopitem +\startitem Token lists and macro aliases have references pointers (reuse). \stopitem +\startitem Attributes, being linked node lists, have their own management. \stopitem +\stopitemize + +\stoptitle + +\starttitle[title=Example 1: in the input] + +\startbuffer +\luatokentable{1 \bf{2} 3\what {!}} +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \getbuffer} + +\stoptitle + +\starttitle[title=Example 1: in the input] + +\startbuffer +\luatokentable{a \the\scratchcounter b \the\parindent \hbox to 10pt{x}} +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \getbuffer} + +\stoptitle + +\starttitle[title=Example 2: user registers] + +\startbuffer +\scratchtoks{foo \framed{\red 123}456} + +\luatokentable\scratchtoks +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \getbuffer} + +\stoptitle + +\starttitle[title=Example 3: internal variables] + +\startbuffer +\luatokentable\everypar +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \getbuffer} + +\stoptitle + +\starttitle[title=Example 4: macro definitions] + +\startbuffer +\protected\def\whatever#1[#2](#3)\relax{oeps #1 and #2 & #3 done ## error} + +\luatokentable\whatever +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \startcolumns \getbuffer \stopcolumns} + +\stoptitle + +\starttitle[title=Example 5: commands] + +\startbuffer +\luatokentable\startitemize +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \getbuffer} + +\stoptitle + +\starttitle[title=Example 6: commands] + +\startbuffer +\luatokentable\doifelse +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \getbuffer } + +\stoptitle + +\starttitle[title=Example 7: nothing] + +\startbuffer +\luatokentable\relax +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \getbuffer } + +\stoptitle + +\starttitle[title=Example 8: Hashes] + +\startbuffer +\edef\foo#1#2{(#1)(\letterhash)(#2)} \luatokentable\foo +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \getbuffer } + +\stoptitle + +\starttitle[title=Example 9: Nesting] + +\startbuffer +\def\foo#1{\def\foo##1{(#1)(##1)}} \luatokentable\foo +\stopbuffer + +\typebuffer \blank[line] {\switchtobodyfont[8pt] \getbuffer } + +\stoptitle + +\stopdocument diff --git a/Master/texmf-dist/doc/context/scripts/mkii/ctxtools.man b/Master/texmf-dist/doc/context/scripts/mkii/ctxtools.man index b024daf6686..3bb84f99026 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/ctxtools.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/ctxtools.man @@ -1,4 +1,4 @@ -.TH "ctxtools" "1" "01-01-2020" "version 1.3.5" "CtxTools" +.TH "ctxtools" "1" "01-01-2021" "version 1.3.5" "CtxTools" .SH NAME ctxtools - CtxTools .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/imgtopdf.man b/Master/texmf-dist/doc/context/scripts/mkii/imgtopdf.man index 9166bf1146c..8a78ea5aaca 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/imgtopdf.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/imgtopdf.man @@ -1,4 +1,4 @@ -.TH "imgtopdf" "1" "01-01-2020" "version 1.1.2" "ImgToPdf" +.TH "imgtopdf" "1" "01-01-2021" "version 1.1.2" "ImgToPdf" .SH NAME imgtopdf - ImgToPdf .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/pdftools.man b/Master/texmf-dist/doc/context/scripts/mkii/pdftools.man index 2258f7fd6f9..477403320de 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/pdftools.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/pdftools.man @@ -1,4 +1,4 @@ -.TH "pdftools" "1" "01-01-2020" "version 1.2.1" "PDFTools" +.TH "pdftools" "1" "01-01-2021" "version 1.2.1" "PDFTools" .SH NAME pdftools - PDFTools .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/pstopdf.man b/Master/texmf-dist/doc/context/scripts/mkii/pstopdf.man index 2439d48a5b8..4e83555e5b8 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/pstopdf.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/pstopdf.man @@ -1,4 +1,4 @@ -.TH "pstopdf" "1" "01-01-2020" "version 2.0.1" "PStoPDF" +.TH "pstopdf" "1" "01-01-2021" "version 2.0.1" "PStoPDF" .SH NAME pstopdf - PStoPDF .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/rlxtools.man b/Master/texmf-dist/doc/context/scripts/mkii/rlxtools.man index 4c5a5c172a6..ccbfe325c37 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/rlxtools.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/rlxtools.man @@ -1,4 +1,4 @@ -.TH "rlxtools" "1" "01-01-2020" "version 1.0.1" "RlxTools" +.TH "rlxtools" "1" "01-01-2021" "version 1.0.1" "RlxTools" .SH NAME rlxtools - RlxTools .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/texexec.man b/Master/texmf-dist/doc/context/scripts/mkii/texexec.man index e783e8d6e47..e2935cc1778 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/texexec.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/texexec.man @@ -1,4 +1,4 @@ -.TH "texexec" "1" "01-01-2020" "version 6.2.1" "TeXExec" +.TH "texexec" "1" "01-01-2021" "version 6.2.1" "TeXExec" .SH NAME texexec - TeXExec .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/texmfstart.man b/Master/texmf-dist/doc/context/scripts/mkii/texmfstart.man index 8118c9c7f7d..6ed2acf8a17 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/texmfstart.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/texmfstart.man @@ -1,4 +1,4 @@ -.TH "mtxrun" "1" "01-01-2020" "version 1.33" "ConTeXt TDS Runner Tool" +.TH "mtxrun" "1" "01-01-2021" "version 1.33" "ConTeXt TDS Runner Tool" .SH NAME mtxrun - ConTeXt TDS Runner Tool .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/textools.man b/Master/texmf-dist/doc/context/scripts/mkii/textools.man index 4d5df1fa93c..832dfb21ff9 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/textools.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/textools.man @@ -1,4 +1,4 @@ -.TH "textools" "1" "01-01-2020" "version 1.3.1" "TeXTools" +.TH "textools" "1" "01-01-2021" "version 1.3.1" "TeXTools" .SH NAME textools - TeXTools .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/texutil.man b/Master/texmf-dist/doc/context/scripts/mkii/texutil.man index d30913ad51c..d2f2adb41ab 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/texutil.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/texutil.man @@ -1,4 +1,4 @@ -.TH "texutil" "1" "01-01-2020" "version 9.1.0" "TeXUtil" +.TH "texutil" "1" "01-01-2021" "version 9.1.0" "TeXUtil" .SH NAME texutil - TeXUtil .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/tmftools.man b/Master/texmf-dist/doc/context/scripts/mkii/tmftools.man index 731d6ed34ef..d51933e7353 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/tmftools.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/tmftools.man @@ -1,4 +1,4 @@ -.TH "tmftools" "1" "01-01-2020" "version 1.1.0" "TMFTools" +.TH "tmftools" "1" "01-01-2021" "version 1.1.0" "TMFTools" .SH NAME tmftools - TMFTools .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkii/xmltools.man b/Master/texmf-dist/doc/context/scripts/mkii/xmltools.man index efea6a69bb8..fd6143769a3 100644 --- a/Master/texmf-dist/doc/context/scripts/mkii/xmltools.man +++ b/Master/texmf-dist/doc/context/scripts/mkii/xmltools.man @@ -1,4 +1,4 @@ -.TH "xmltools" "1" "01-01-2020" "version 1.2.2" "XMLTools" +.TH "xmltools" "1" "01-01-2021" "version 1.2.2" "XMLTools" .SH NAME xmltools - XMLTools .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/context/scripts/mkiv/context.html b/Master/texmf-dist/doc/context/scripts/mkiv/context.html index 3262b91d1aa..682b8621fa6 100644 --- a/Master/texmf-dist/doc/context/scripts/mkiv/context.html +++ b/Master/texmf-dist/doc/context/scripts/mkiv/context.html @@ -14,7 +14,7 @@ - ConTeXt Process Management 1.03 + ConTeXt Process Management 1.04